diff --git a/.buildkite/ftr_oblt_stateful_configs.yml b/.buildkite/ftr_oblt_stateful_configs.yml index eed4654725038..1a2797795828e 100644 --- a/.buildkite/ftr_oblt_stateful_configs.yml +++ b/.buildkite/ftr_oblt_stateful_configs.yml @@ -12,14 +12,14 @@ disabled: - x-pack/plugins/observability_solution/profiling/e2e/ftr_config.ts #FTR configs - - x-pack/plugins/observability_solution/uptime/e2e/config.ts + - x-pack/solutions/observability/plugins/uptime/e2e/config.ts # Elastic Synthetics configs - - x-pack/plugins/observability_solution/uptime/e2e/uptime/synthetics_run.ts - - x-pack/plugins/observability_solution/synthetics/e2e/config.ts - - x-pack/plugins/observability_solution/synthetics/e2e/synthetics/synthetics_run.ts - - x-pack/plugins/observability_solution/exploratory_view/e2e/synthetics_run.ts - - x-pack/plugins/observability_solution/ux/e2e/synthetics_run.ts + - x-pack/solutions/observability/plugins/uptime/e2e/uptime/synthetics_run.ts + - x-pack/solutions/observability/plugins/synthetics/e2e/config.ts + - x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/synthetics_run.ts + - x-pack/solutions/observability/plugins/exploratory_view/e2e/synthetics_run.ts + - x-pack/solutions/observability/plugins/ux/e2e/synthetics_run.ts - x-pack/plugins/observability_solution/slo/e2e/synthetics_run.ts defaultQueue: 'n2-4-spot' diff --git a/.buildkite/ftr_platform_stateful_configs.yml b/.buildkite/ftr_platform_stateful_configs.yml index af04aef1e0911..bcf82ed057c45 100644 --- a/.buildkite/ftr_platform_stateful_configs.yml +++ b/.buildkite/ftr_platform_stateful_configs.yml @@ -131,6 +131,7 @@ enabled: - x-pack/test/alerting_api_integration/security_and_spaces/group2/config.ts - x-pack/test/alerting_api_integration/security_and_spaces/group3/config.ts - x-pack/test/alerting_api_integration/security_and_spaces/group4/config.ts + - x-pack/test/alerting_api_integration/security_and_spaces/group5/config.ts - x-pack/test/alerting_api_integration/security_and_spaces/group3/config_with_schedule_circuit_breaker.ts - x-pack/test/alerting_api_integration/security_and_spaces/group2/config_non_dedicated_task_runner.ts - x-pack/test/alerting_api_integration/security_and_spaces/group4/config_non_dedicated_task_runner.ts @@ -264,7 +265,6 @@ enabled: - x-pack/test/functional/apps/security/config.ts - x-pack/test/functional/apps/snapshot_restore/config.ts - x-pack/test/functional/apps/spaces/config.ts - - x-pack/test/functional/apps/spaces/solution_view_flag_enabled/config.ts - x-pack/test/functional/apps/status_page/config.ts - x-pack/test/functional/apps/transform/creation/index_pattern/config.ts - x-pack/test/functional/apps/transform/creation/runtime_mappings_saved_search/config.ts diff --git a/.buildkite/ftr_security_serverless_configs.yml b/.buildkite/ftr_security_serverless_configs.yml index 5ea5647d1d908..34280160fb7aa 100644 --- a/.buildkite/ftr_security_serverless_configs.yml +++ b/.buildkite/ftr_security_serverless_configs.yml @@ -89,6 +89,7 @@ enabled: - x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_read/trial_license_complete_tier/configs/serverless.config.ts - x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_read/basic_license_essentials_tier/configs/serverless.config.ts - x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry/trial_license_complete_tier/configs/serverless.config.ts + - x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/serverless.config.ts - x-pack/test/security_solution_api_integration/test_suites/detections_response/user_roles/trial_license_complete_tier/configs/serverless.config.ts - x-pack/test/security_solution_api_integration/test_suites/genai/nlp_cleanup_task/trial_license_complete_tier/configs/serverless.config.ts - x-pack/test/security_solution_api_integration/test_suites/genai/nlp_cleanup_task/basic_license_essentials_tier/configs/serverless.config.ts diff --git a/.buildkite/ftr_security_stateful_configs.yml b/.buildkite/ftr_security_stateful_configs.yml index bd8bc9e922f0d..a67bd2b299be8 100644 --- a/.buildkite/ftr_security_stateful_configs.yml +++ b/.buildkite/ftr_security_stateful_configs.yml @@ -70,6 +70,7 @@ enabled: - x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_read/trial_license_complete_tier/configs/ess.config.ts - x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_read/basic_license_essentials_tier/configs/ess.config.ts - x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry/trial_license_complete_tier/configs/ess.config.ts + - x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/ess.config.ts - x-pack/test/security_solution_api_integration/test_suites/detections_response/user_roles/trial_license_complete_tier/configs/ess.config.ts - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/ess.config.ts - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/configs/ess.config.ts @@ -101,4 +102,5 @@ enabled: - x-pack/test/cloud_security_posture_functional/config.ts - x-pack/test/cloud_security_posture_functional/config.agentless.ts - x-pack/test/cloud_security_posture_functional/data_views/config.ts - - x-pack/test/automatic_import_api_integration/security/config_basic.ts + - x-pack/test/automatic_import_api_integration/apis/config_basic.ts + - x-pack/test/automatic_import_api_integration/apis/config_graphs.ts diff --git a/.buildkite/pipeline-resource-definitions/kibana-es-forward-testing-9-dot-0.yml b/.buildkite/pipeline-resource-definitions/kibana-es-forward-testing-9-dot-0.yml new file mode 100644 index 0000000000000..f4d01a939b40d --- /dev/null +++ b/.buildkite/pipeline-resource-definitions/kibana-es-forward-testing-9-dot-0.yml @@ -0,0 +1,43 @@ +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: bk-kibana-es-forward-compatibility-testing-9-dot-0 + description: Forward compatibility testing between Kibana 8.18 and ES 9+ + links: + - url: 'https://buildkite.com/elastic/kibana-es-forward-compatibility-testing-9-dot-0' + title: Pipeline link +spec: + type: buildkite-pipeline + system: buildkite + owner: 'group:kibana-operations' + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: kibana / ES Forward Compatibility Testing 9.0 + description: Forward compatibility testing between Kibana 8.18 and ES 9+ + spec: + env: + SLACK_NOTIFICATIONS_CHANNEL: '#kibana-operations-alerts' + ELASTIC_SLACK_NOTIFICATIONS_ENABLED: 'true' + REPORT_FAILED_TESTS_TO_GITHUB: 'true' + allow_rebuilds: false + branch_configuration: main + default_branch: main + repository: elastic/kibana + pipeline_file: .buildkite/pipelines/es_forward_9_dot_0.yml # Note: this file exists in 8.x only and should be moved into 8.18 once the branch is cut + provider_settings: + prefix_pull_request_fork_branch_names: false + trigger_mode: none + teams: + kibana-operations: + access_level: MANAGE_BUILD_AND_READ + appex-qa: + access_level: MANAGE_BUILD_AND_READ + kibana-tech-leads: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: BUILD_AND_READ + tags: + - kibana diff --git a/.buildkite/pipeline-resource-definitions/locations.yml b/.buildkite/pipeline-resource-definitions/locations.yml index 11c0195902eec..dc4e044ce63cb 100644 --- a/.buildkite/pipeline-resource-definitions/locations.yml +++ b/.buildkite/pipeline-resource-definitions/locations.yml @@ -18,6 +18,7 @@ spec: - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-console-definitions-sync.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-coverage-daily.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-deploy-project.yml + - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-es-forward-testing-9-dot-0.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-es-forward-testing.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-es-serverless-snapshots.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-es-snapshots.yml @@ -25,6 +26,7 @@ spec: - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-fips-daily.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-flaky.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-fleet-packages-daily.yml + - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-gen-ai-daily.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-migration-staging.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-on-merge-unsupported-ftrs.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-on-merge.yml @@ -50,4 +52,3 @@ spec: - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-investigations.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-rule-management.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/trigger-version-dependent-jobs.yml - - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-gen-ai-daily.yml diff --git a/.buildkite/pipeline-resource-definitions/trigger-version-dependent-jobs.yml b/.buildkite/pipeline-resource-definitions/trigger-version-dependent-jobs.yml index 8dd486c3176ce..22567675a5139 100644 --- a/.buildkite/pipeline-resource-definitions/trigger-version-dependent-jobs.yml +++ b/.buildkite/pipeline-resource-definitions/trigger-version-dependent-jobs.yml @@ -51,6 +51,11 @@ spec: message: Trigger ES forward compatibility tests env: TRIGGER_PIPELINE_SET: es-forward + Trigger ES forward compatibility tests 9.0: + cronline: 0 5 * * * + message: Trigger ES forward compatibility tests 9.0 + env: + TRIGGER_PIPELINE_SET: es-forward-9-dot-0 Trigger artifact staging builds: cronline: 0 7 * * * America/New_York message: Trigger artifact staging builds diff --git a/.buildkite/pipelines/on_merge_unsupported_ftrs.yml b/.buildkite/pipelines/on_merge_unsupported_ftrs.yml index a7800fcc92dce..8903254ff4e8f 100644 --- a/.buildkite/pipelines/on_merge_unsupported_ftrs.yml +++ b/.buildkite/pipelines/on_merge_unsupported_ftrs.yml @@ -73,7 +73,7 @@ steps: depends_on: build timeout_in_minutes: 120 artifact_paths: - - 'x-pack/plugins/observability_solution/synthetics/e2e/.journeys/**/*' + - 'x-pack/solutions/observability/plugins/synthetics/e2e/.journeys/**/*' retry: automatic: - exit_status: '-1' diff --git a/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml b/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml index 05fc218080cd4..cf0cbd7e2012f 100644 --- a/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml +++ b/.buildkite/pipelines/pull_request/exploratory_view_plugin.yml @@ -14,7 +14,7 @@ steps: - check_oas_snapshot timeout_in_minutes: 60 artifact_paths: - - 'x-pack/plugins/observability_solution/exploratory_view/e2e/.journeys/**/*' + - 'x-pack/solutions/observability/plugins/exploratory_view/e2e/.journeys/**/*' retry: automatic: - exit_status: '-1' diff --git a/.buildkite/pipelines/pull_request/scout_ui_tests.yml b/.buildkite/pipelines/pull_request/scout_ui_tests.yml new file mode 100644 index 0000000000000..37ea1567c4f42 --- /dev/null +++ b/.buildkite/pipelines/pull_request/scout_ui_tests.yml @@ -0,0 +1,18 @@ +steps: + - command: .buildkite/scripts/steps/functional/scout_ui_tests.sh + label: 'Scout UI Tests' + agents: + machineType: n2-standard-4 + preemptible: true + depends_on: + - build + - quick_checks + - checks + - linting + - linting_with_types + - check_types + timeout_in_minutes: 30 + retry: + automatic: + - exit_status: '-1' + limit: 2 diff --git a/.buildkite/pipelines/pull_request/synthetics_plugin.yml b/.buildkite/pipelines/pull_request/synthetics_plugin.yml index b4079b9fac307..5018dad0e58f7 100644 --- a/.buildkite/pipelines/pull_request/synthetics_plugin.yml +++ b/.buildkite/pipelines/pull_request/synthetics_plugin.yml @@ -14,7 +14,7 @@ steps: - check_oas_snapshot timeout_in_minutes: 60 artifact_paths: - - 'x-pack/plugins/observability_solution/synthetics/e2e/.journeys/**/*' + - 'x-pack/solutions/observability/plugins/synthetics/e2e/.journeys/**/*' retry: automatic: - exit_status: '-1' diff --git a/.buildkite/pipelines/pull_request/uptime_plugin.yml b/.buildkite/pipelines/pull_request/uptime_plugin.yml index 4c1e05d7476fd..f38a59969b45a 100644 --- a/.buildkite/pipelines/pull_request/uptime_plugin.yml +++ b/.buildkite/pipelines/pull_request/uptime_plugin.yml @@ -14,7 +14,7 @@ steps: - check_oas_snapshot timeout_in_minutes: 60 artifact_paths: - - 'x-pack/plugins/observability_solution/synthetics/e2e/.journeys/**/*' + - 'x-pack/solutions/observability/plugins/synthetics/e2e/.journeys/**/*' retry: automatic: - exit_status: '-1' diff --git a/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml b/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml index 4bade14464f35..b6f51351c62b8 100644 --- a/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml +++ b/.buildkite/pipelines/pull_request/ux_plugin_e2e.yml @@ -14,7 +14,7 @@ steps: - check_oas_snapshot timeout_in_minutes: 60 artifact_paths: - - 'x-pack/plugins/observability_solution/ux/e2e/.journeys/**/*' + - 'x-pack/solutions/observability/plugins/ux/e2e/.journeys/**/*' retry: automatic: - exit_status: '-1' diff --git a/.buildkite/scripts/pipelines/pull_request/pipeline.ts b/.buildkite/scripts/pipelines/pull_request/pipeline.ts index 3c404083174b1..0f015a98c76e7 100644 --- a/.buildkite/scripts/pipelines/pull_request/pipeline.ts +++ b/.buildkite/scripts/pipelines/pull_request/pipeline.ts @@ -89,7 +89,7 @@ const getPipeline = (filename: string, removeSteps = true) => { if ( (await doAnyChangesMatch([ - /^x-pack\/plugins\/observability_solution\/observability_onboarding/, + /^x-pack\/solutions\/observability\/plugins\/observability_onboarding/, /^x-pack\/plugins\/fleet/, ])) || GITHUB_PR_LABELS.includes('ci:all-cypress-suites') @@ -114,7 +114,7 @@ const getPipeline = (filename: string, removeSteps = true) => { } if ( - (await doAnyChangesMatch([/^x-pack\/plugins\/observability_solution\/exploratory_view/])) || + (await doAnyChangesMatch([/^x-pack\/solutions\/observability\/plugins\/exploratory_view/])) || GITHUB_PR_LABELS.includes('ci:synthetics-runner-suites') ) { pipeline.push(getPipeline('.buildkite/pipelines/pull_request/exploratory_view_plugin.yml')); @@ -122,8 +122,8 @@ const getPipeline = (filename: string, removeSteps = true) => { if ( (await doAnyChangesMatch([ - /^x-pack\/plugins\/observability_solution\/synthetics/, - /^x-pack\/plugins\/observability_solution\/exploratory_view/, + /^x-pack\/solutions\/observability\/plugins\/synthetics/, + /^x-pack\/solutions\/observability\/plugins\/exploratory_view/, ])) || GITHUB_PR_LABELS.includes('ci:synthetics-runner-suites') ) { @@ -133,8 +133,8 @@ const getPipeline = (filename: string, removeSteps = true) => { if ( (await doAnyChangesMatch([ - /^x-pack\/plugins\/observability_solution\/ux/, - /^x-pack\/plugins\/observability_solution\/exploratory_view/, + /^x-pack\/solutions\/observability\/plugins\/ux/, + /^x-pack\/solutions\/observability\/plugins\/exploratory_view/, ])) || GITHUB_PR_LABELS.includes('ci:synthetics-runner-suites') ) { @@ -248,16 +248,16 @@ const getPipeline = (filename: string, removeSteps = true) => { /^x-pack\/plugins\/security_solution_ess/, /^x-pack\/plugins\/security_solution_serverless/, /^x-pack\/plugins\/task_manager/, - /^x-pack\/plugins\/timelines/, + /^x-pack\/solutions\/security\/plugins\/timelines/, /^x-pack\/plugins\/triggers_actions_ui\/public\/application\/sections\/action_connector_form/, /^x-pack\/plugins\/triggers_actions_ui\/public\/application\/context\/actions_connectors_context\.tsx/, /^x-pack\/plugins\/triggers_actions_ui\/server\/connector_types\/openai/, /^x-pack\/plugins\/triggers_actions_ui\/server\/connector_types\/bedrock/, /^x-pack\/plugins\/usage_collection\/public/, - /^x-pack\/plugins\/elastic_assistant/, + /^x-pack\/solutions\/security\/plugins\/elastic_assistant/, /^x-pack\/packages\/security-solution/, - /^x-pack\/packages\/kbn-elastic-assistant/, - /^x-pack\/packages\/kbn-elastic-assistant-common/, + /^x-pack\/platform\/packages\/shared\/kbn-elastic-assistant/, + /^x-pack\/platform\/packages\/shared\/kbn-elastic-assistant-common/, /^x-pack\/test\/functional\/es_archives\/security_solution/, /^x-pack\/test\/security_solution_cypress/, ])) || @@ -290,7 +290,7 @@ const getPipeline = (filename: string, removeSteps = true) => { /^packages\/kbn-es-query/, /^packages\/kbn-i18n/, /^packages\/kbn-i18n-react/, - /^packages\/kbn-expandable-flyout/, + /^x-pack\/solutions\/security\/packages\/expandable-flyout/, /^packages\/kbn-grouping/, /^packages\/kbn-resizable-layout/, /^packages\/kbn-rison/, @@ -298,7 +298,7 @@ const getPipeline = (filename: string, removeSteps = true) => { /^packages\/kbn-safer-lodash-set/, /^packages\/kbn-search-types/, /^packages\/kbn-securitysolution-.*/, - /^packages\/kbn-securitysolution-ecs/, + /^src\/platform\/packages\/shared\/kbn-securitysolution-ecs/, /^packages\/kbn-securitysolution-io-ts-alerting-types/, /^packages\/kbn-securitysolution-io-ts-list-types/, /^packages\/kbn-securitysolution-list-hooks/, @@ -321,21 +321,21 @@ const getPipeline = (filename: string, removeSteps = true) => { /^src\/plugins\/ui_actions/, /^src\/plugins\/unified_histogram/, /^src\/plugins\/unified_search/, - /^x-pack\/packages\/kbn-elastic-assistant/, - /^x-pack\/packages\/kbn-elastic-assistant-common/, + /^x-pack\/platform\/packages\/shared\/kbn-elastic-assistant/, + /^x-pack\/platform\/packages\/shared\/kbn-elastic-assistant-common/, /^x-pack\/packages\/security-solution/, /^x-pack\/plugins\/alerting/, /^x-pack\/plugins\/cases/, /^x-pack\/plugins\/data_views\/common/, - /^x-pack\/plugins\/elastic_assistant/, + /^x-pack\/solutions\/security\/plugins\/elastic_assistant/, /^x-pack\/plugins\/lists/, /^x-pack\/plugins\/rule_registry\/common/, /^x-pack\/plugins\/security_solution/, /^x-pack\/plugins\/security_solution_ess/, /^x-pack\/plugins\/security_solution_serverless/, /^x-pack\/plugins\/task_manager/, - /^x-pack\/plugins\/threat_intelligence/, - /^x-pack\/plugins\/timelines/, + /^x-pack\/solutions\/security\/plugins\/threat_intelligence/, + /^x-pack\/solutions\/security\/plugins\/timelines/, /^x-pack\/plugins\/triggers_actions_ui/, /^x-pack\/plugins\/usage_collection\/public/, /^x-pack\/test\/functional\/es_archives\/security_solution/, @@ -350,7 +350,7 @@ const getPipeline = (filename: string, removeSteps = true) => { if ( ((await doAnyChangesMatch([ - /^x-pack\/plugins\/osquery/, + /^x-pack\/platform\/plugins\/shared\/osquery/, /^x-pack\/test\/osquery_cypress/, /^x-pack\/plugins\/security_solution/, ])) || @@ -378,6 +378,16 @@ const getPipeline = (filename: string, removeSteps = true) => { ); } + if ( + (await doAnyChangesMatch([ + /^x-pack\/plugins\/discover_enhanced\/ui_tests/, + /^packages\/kbn-scout/, + ])) || + GITHUB_PR_LABELS.includes('ci:scout-ui-tests') + ) { + pipeline.push(getPipeline('.buildkite/pipelines/pull_request/scout_ui_tests.yml')); + } + pipeline.push(getPipeline('.buildkite/pipelines/pull_request/post_build.yml')); // remove duplicated steps diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows_osquery.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows_osquery.sh index 5dd9ef114b48d..c68f04ce20ab3 100755 --- a/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows_osquery.sh +++ b/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows_osquery.sh @@ -18,7 +18,7 @@ buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" "true source .buildkite/scripts/pipelines/security_solution_quality_gate/prepare_vault_entries.sh -cd x-pack/plugins/osquery +cd x-pack/platform/plugins/shared/osquery set +e export BK_ANALYTICS_API_KEY=$(vault_get security-solution-quality-gate serverless-cypress-defend-workflows) diff --git a/.buildkite/scripts/pipelines/trigger_version_dependent_jobs/pipeline.ts b/.buildkite/scripts/pipelines/trigger_version_dependent_jobs/pipeline.ts index eace1bcdd55c8..34ad833e41954 100755 --- a/.buildkite/scripts/pipelines/trigger_version_dependent_jobs/pipeline.ts +++ b/.buildkite/scripts/pipelines/trigger_version_dependent_jobs/pipeline.ts @@ -12,6 +12,7 @@ import { getVersionsFile, BuildkiteTriggerStep } from '#pipeline-utils'; const pipelineSets = { 'es-forward': 'kibana-es-forward-compatibility-testing', + 'es-forward-9-dot-0': 'kibana-es-forward-compatibility-testing-9-dot-0', 'artifacts-snapshot': 'kibana-artifacts-snapshot', 'artifacts-staging': 'kibana-artifacts-staging', 'artifacts-trigger': 'kibana-artifacts-trigger', @@ -40,6 +41,10 @@ async function main() { pipelineSteps.push(...getESForwardPipelineTriggers()); break; } + case 'es-forward-9-dot-0': { + pipelineSteps.push(...getESForward9Dot0PipelineTriggers()); + break; + } case 'artifacts-snapshot': { pipelineSteps.push(...getArtifactSnapshotPipelineTriggers()); break; @@ -90,6 +95,40 @@ export function getESForwardPipelineTriggers(): BuildkiteTriggerStep[] { }); } +/** + * This pipeline is testing the forward compatibility of Kibana with different versions of Elasticsearch for 9.0. + * Should be triggered for combinations of (Kibana@8.18 + ES@9.x {current open branches on the same major}) + */ +export function getESForward9Dot0PipelineTriggers(): BuildkiteTriggerStep[] { + const versions = getVersionsFile(); + const KIBANA_8_X = versions.versions.find((v) => v.branch === '8.x'); + if (!KIBANA_8_X) { + throw new Error( + 'Update ES forward compatibility 9.0 pipeline to remove 8.x and add version 8.18' + ); + } + const targetESVersions = versions.versions.filter( + (v) => v.branch.startsWith('9.') || (v.branch.includes('main') && v.version.startsWith('9.0.0')) + ); + + return targetESVersions.map(({ version }) => { + return { + trigger: pipelineSets['es-forward-9-dot-0'], + async: true, + label: `Triggering Kibana ${KIBANA_8_X.version} + ES ${version} forward compatibility`, + build: { + message: process.env.MESSAGE || `ES forward-compatibility test for ES ${version}`, + branch: KIBANA_8_X.branch, + commit: 'HEAD', + env: { + ES_SNAPSHOT_MANIFEST: `https://storage.googleapis.com/kibana-ci-es-snapshots-daily/${version}/manifest-latest-verified.json`, + DRY_RUN: process.env.DRY_RUN, + }, + }, + } as BuildkiteTriggerStep; + }); +} + /** * This pipeline creates Kibana artifact snapshots for all open branches. * Should be triggered for all open branches in the versions.json diff --git a/.buildkite/scripts/steps/code_generation/elastic_assistant_codegen.sh b/.buildkite/scripts/steps/code_generation/elastic_assistant_codegen.sh index 475c545a283c0..a1c595159d5cc 100755 --- a/.buildkite/scripts/steps/code_generation/elastic_assistant_codegen.sh +++ b/.buildkite/scripts/steps/code_generation/elastic_assistant_codegen.sh @@ -6,5 +6,5 @@ source .buildkite/scripts/common/util.sh echo --- Elastic Assistant OpenAPI Code Generation -(cd x-pack/packages/kbn-elastic-assistant-common && yarn openapi:generate) +(cd x-pack/platform/packages/shared/kbn-elastic-assistant-common && yarn openapi:generate) check_for_changed_files "yarn openapi:generate" true diff --git a/.buildkite/scripts/steps/code_generation/osquery_codegen.sh b/.buildkite/scripts/steps/code_generation/osquery_codegen.sh index 7c04f4aecd442..8efbb96d0d623 100755 --- a/.buildkite/scripts/steps/code_generation/osquery_codegen.sh +++ b/.buildkite/scripts/steps/code_generation/osquery_codegen.sh @@ -6,5 +6,5 @@ source .buildkite/scripts/common/util.sh echo --- Osquery OpenAPI Code Generation -(cd x-pack/plugins/osquery && yarn openapi:generate) +(cd x-pack/platform/plugins/shared/osquery && yarn openapi:generate) check_for_changed_files "yarn openapi:generate" true diff --git a/.buildkite/scripts/steps/console_definitions_sync.sh b/.buildkite/scripts/steps/console_definitions_sync.sh index 7dc565e0b9642..71d70138f8a1b 100755 --- a/.buildkite/scripts/steps/console_definitions_sync.sh +++ b/.buildkite/scripts/steps/console_definitions_sync.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -euo pipefail -GIT_SCOPE="src/plugins/console/server/lib/spec_definitions" +GIT_SCOPE="src/platform/plugins/shared/console/server/lib/spec_definitions" report_main_step () { echo "--- $1" diff --git a/.buildkite/scripts/steps/functional/exploratory_view_plugin.sh b/.buildkite/scripts/steps/functional/exploratory_view_plugin.sh index adee8986bc746..e685f84ed2304 100755 --- a/.buildkite/scripts/steps/functional/exploratory_view_plugin.sh +++ b/.buildkite/scripts/steps/functional/exploratory_view_plugin.sh @@ -14,4 +14,4 @@ echo "--- Exploratory View plugin @elastic/synthetics Tests" cd "$XPACK_DIR" -node plugins/observability_solution/exploratory_view/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} +node solutions/observability/plugins/exploratory_view/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} diff --git a/.buildkite/scripts/steps/functional/osquery_cypress.sh b/.buildkite/scripts/steps/functional/osquery_cypress.sh index 0ae47edd8c8e7..dd49619148189 100755 --- a/.buildkite/scripts/steps/functional/osquery_cypress.sh +++ b/.buildkite/scripts/steps/functional/osquery_cypress.sh @@ -10,7 +10,7 @@ export JOB=kibana-osquery-cypress echo "--- Osquery Cypress tests" -cd x-pack/plugins/osquery +cd x-pack/platform/plugins/shared/osquery set +e yarn cypress:run; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh b/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh index bebd391d95254..ea6cf46b3d01d 100755 --- a/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh +++ b/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh @@ -12,4 +12,4 @@ buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" 'fals echo "--- Osquery Cypress tests, burning changed specs (Chrome)" -yarn --cwd x-pack/plugins/osquery cypress:changed-specs-only +yarn --cwd x-pack/platform/plugins/shared/osquery cypress:changed-specs-only diff --git a/.buildkite/scripts/steps/functional/scout_ui_tests.sh b/.buildkite/scripts/steps/functional/scout_ui_tests.sh new file mode 100755 index 0000000000000..bee4ec4020882 --- /dev/null +++ b/.buildkite/scripts/steps/functional/scout_ui_tests.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +set -euo pipefail + +source .buildkite/scripts/steps/functional/common.sh + +export JOB=kibana-scout-ui-tests + +TEST_CONFIG="x-pack/plugins/discover_enhanced/ui_tests/playwright.config.ts" +KIBANA_DIR="$KIBANA_BUILD_LOCATION" + +declare -A TESTS=( + ["Stateful"]="--stateful" + ["Serverless Elasticsearch"]="--serverless=es" + ["Serverless Observability"]="--serverless=oblt" + ["Serverless Security"]="--serverless=security" +) + +ORDER=("Stateful" "Serverless Elasticsearch" "Serverless Observability" "Serverless Security") + +EXIT_CODE=0 + +for TEST_NAME in "${ORDER[@]}"; do + RUN_MODE="${TESTS[$TEST_NAME]}" + echo "--- $TEST_NAME: 'discover_enhanced' plugin UI Tests" + if ! node scripts/scout run-tests "$RUN_MODE" --config "$TEST_CONFIG" --kibana-install-dir "$KIBANA_DIR"; then + echo "$TEST_NAME: failed" + EXIT_CODE=1 + else + echo "$TEST_NAME: passed" + fi +done + +exit $EXIT_CODE diff --git a/.buildkite/scripts/steps/functional/security_serverless_osquery.sh b/.buildkite/scripts/steps/functional/security_serverless_osquery.sh index 9844222e7f869..3621f26850e7f 100755 --- a/.buildkite/scripts/steps/functional/security_serverless_osquery.sh +++ b/.buildkite/scripts/steps/functional/security_serverless_osquery.sh @@ -10,7 +10,7 @@ export JOB=kibana-osquery-cypress-serverless echo "--- Security Osquery Serverless Cypress" -cd x-pack/plugins/osquery +cd x-pack/platform/plugins/shared/osquery set +e yarn cypress:serverless:run; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/synthetics.sh b/.buildkite/scripts/steps/functional/synthetics.sh index aa388096fc404..261b1d5bf28bb 100644 --- a/.buildkite/scripts/steps/functional/synthetics.sh +++ b/.buildkite/scripts/steps/functional/synthetics.sh @@ -14,4 +14,4 @@ echo "--- synthetics @elastic/synthetics Tests" cd "$XPACK_DIR" -node plugins/observability_solution/synthetics/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" --grep "MonitorManagement-monitor*" +node solutions/observability/plugins/synthetics/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" --grep "MonitorManagement-monitor*" diff --git a/.buildkite/scripts/steps/functional/synthetics_plugin.sh b/.buildkite/scripts/steps/functional/synthetics_plugin.sh index 3e31b92011ad2..34be251cbfc26 100755 --- a/.buildkite/scripts/steps/functional/synthetics_plugin.sh +++ b/.buildkite/scripts/steps/functional/synthetics_plugin.sh @@ -14,4 +14,4 @@ echo "--- Synthetics plugin @elastic/synthetics Tests" cd "$XPACK_DIR" -node plugins/observability_solution/synthetics/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} +node solutions/observability/plugins/synthetics/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} diff --git a/.buildkite/scripts/steps/functional/uptime_plugin.sh b/.buildkite/scripts/steps/functional/uptime_plugin.sh index b4cdd0fb5738a..50cf33149b854 100755 --- a/.buildkite/scripts/steps/functional/uptime_plugin.sh +++ b/.buildkite/scripts/steps/functional/uptime_plugin.sh @@ -14,4 +14,4 @@ echo "--- Uptime plugin @elastic/synthetics Tests" cd "$XPACK_DIR" -node plugins/observability_solution/uptime/scripts/uptime_e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} +node solutions/observability/plugins/uptime/scripts/uptime_e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} diff --git a/.buildkite/scripts/steps/functional/ux_synthetics_e2e.sh b/.buildkite/scripts/steps/functional/ux_synthetics_e2e.sh index bcc5b71149607..2c165d7274e3a 100755 --- a/.buildkite/scripts/steps/functional/ux_synthetics_e2e.sh +++ b/.buildkite/scripts/steps/functional/ux_synthetics_e2e.sh @@ -14,4 +14,4 @@ echo "--- User Experience @elastic/synthetics Tests" cd "$XPACK_DIR" -node plugins/observability_solution/ux/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} +node solutions/observability/plugins/ux/scripts/e2e.js --kibana-install-dir "$KIBANA_BUILD_LOCATION" ${GREP:+--grep \"${GREP}\"} diff --git a/.buildkite/scripts/steps/openapi_bundling/security_solution_openapi_bundling.sh b/.buildkite/scripts/steps/openapi_bundling/security_solution_openapi_bundling.sh index 2c23d9850afa4..50a1de855d035 100755 --- a/.buildkite/scripts/steps/openapi_bundling/security_solution_openapi_bundling.sh +++ b/.buildkite/scripts/steps/openapi_bundling/security_solution_openapi_bundling.sh @@ -28,9 +28,9 @@ echo -e "\n[Security Solution OpenAPI Bundling] Endpoint Management API\n" (cd x-pack/plugins/security_solution && yarn openapi:bundle:endpoint-management) echo -e "\n[Security Solution OpenAPI Bundling] Elastic Assistant API\n" -(cd x-pack/packages/kbn-elastic-assistant-common && yarn openapi:bundle) +(cd x-pack/platform/packages/shared/kbn-elastic-assistant-common && yarn openapi:bundle) echo -e "\n[Security Solution OpenAPI Bundling] Osquery API\n" -(cd x-pack/plugins/osquery && yarn openapi:bundle) +(cd x-pack/platform/plugins/shared/osquery && yarn openapi:bundle) check_for_changed_files "yarn openapi:bundle" true diff --git a/.buildkite/scripts/steps/storybooks/build_and_upload.ts b/.buildkite/scripts/steps/storybooks/build_and_upload.ts index 52aaa7e087a09..f8c52b2ded8cc 100644 --- a/.buildkite/scripts/steps/storybooks/build_and_upload.ts +++ b/.buildkite/scripts/steps/storybooks/build_and_upload.ts @@ -14,6 +14,7 @@ import { getKibanaDir } from '#pipeline-utils'; // TODO - how to generate this dynamically? const STORYBOOKS = [ + 'ai_assistant', 'apm', 'canvas', 'cases', diff --git a/.eslintrc.js b/.eslintrc.js index 0fe79513a9948..dd397193cf425 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -302,7 +302,7 @@ module.exports = { }, }, { - files: ['x-pack/plugins/cross_cluster_replication/**/*.{js,mjs,ts,tsx}'], + files: ['x-pack/platform/plugins/private/cross_cluster_replication/**/*.{js,mjs,ts,tsx}'], rules: { 'jsx-a11y/click-events-have-key-events': 'off', }, @@ -915,10 +915,11 @@ module.exports = { { files: [ 'x-pack/plugins/observability_solution/apm/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/observability_solution/observability/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/observability_solution/exploratory_view/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/observability_solution/ux/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/observability/plugins/observability/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/observability/plugins/exploratory_view/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/observability/plugins/ux/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/observability_solution/slo/**/*.{js,mjs,ts,tsx}', + 'x-pack/packages/observability/**/*.{js,mjs,ts,tsx}', ], rules: { 'no-console': ['warn', { allow: ['error'] }], @@ -935,9 +936,10 @@ module.exports = { { files: [ 'x-pack/plugins/observability_solution/apm/**/*.stories.*', - 'x-pack/plugins/observability_solution/observability/**/*.stories.*', - 'x-pack/plugins/observability_solution/exploratory_view/**/*.stories.*', + 'x-pack/solutions/observability/plugins/observability/**/*.stories.*', + 'x-pack/solutions/observability/plugins/exploratory_view/**/*.stories.*', 'x-pack/plugins/observability_solution/slo/**/*.stories.*', + 'x-pack/packages/observability/**/*.{js,mjs,ts,tsx}', ], rules: { 'react/function-component-definition': [ @@ -1011,7 +1013,7 @@ module.exports = { { // disable imports from legacy uptime plugin files: [ - 'x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/**/*.{js,mjs,ts,tsx}', ], rules: { 'no-restricted-imports': [ @@ -1049,8 +1051,8 @@ module.exports = { { // front end and common typescript and javascript files only files: [ - 'x-pack/plugins/integration_assistant/public/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/integration_assistant/common/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/plugins/shared/integration_assistant/public/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/plugins/shared/integration_assistant/common/**/*.{js,mjs,ts,tsx}', ], rules: { 'import/no-nodejs-modules': 'error', @@ -1096,22 +1098,22 @@ module.exports = { { // front end and common typescript and javascript files only files: [ - 'x-pack/plugins/ecs_data_quality_dashboard/common/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/elastic_assistant/common/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant-common/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/security-solution/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/ecs_data_quality_dashboard/common/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/elastic_assistant/common/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant-common/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/packages/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/security_solution/public/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/security_solution_ess/public/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/security_solution_serverless/public/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/security_solution/common/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/security_solution_ess/common/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/security_solution_serverless/common/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/timelines/public/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/timelines/common/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/timelines/public/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/timelines/common/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/cases/public/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/cases/common/**/*.{js,mjs,ts,tsx}', - 'packages/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', + 'src/platform/packages/shared/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', ], rules: { 'import/no-nodejs-modules': 'error', @@ -1132,34 +1134,34 @@ module.exports = { // We use this section to add rules in which we do not want to apply to test files. // This should be a very small set as most linter rules are useful for tests as well. files: [ - 'x-pack/plugins/ecs_data_quality_dashboard/**/*.{ts,tsx}', - 'x-pack/plugins/elastic_assistant/**/*.{ts,tsx}', - 'x-pack/plugins/integration_assistant/**/*.{ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant/**/*.{ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant-common/**/*.{ts,tsx}', - 'x-pack/packages/kbn-langchain/**/*.{ts,tsx}', - 'x-pack/packages/security-solution/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/ecs_data_quality_dashboard/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/elastic_assistant/**/*.{ts,tsx}', + 'x-pack/platform/plugins/shared/integration_assistant/**/*.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant/**/*.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant-common/**/*.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-langchain/**/*.{ts,tsx}', + 'x-pack/solutions/security/packages/**/*.{ts,tsx}', 'x-pack/plugins/security_solution/**/*.{ts,tsx}', 'x-pack/plugins/security_solution_ess/**/*.{ts,tsx}', 'x-pack/plugins/security_solution_serverless/**/*.{ts,tsx}', - 'x-pack/plugins/timelines/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/timelines/**/*.{ts,tsx}', 'x-pack/plugins/cases/**/*.{ts,tsx}', - 'packages/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', + 'src/platform/packages/shared/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', ], excludedFiles: [ - 'x-pack/plugins/ecs_data_quality_dashboard/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/plugins/elastic_assistant/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/plugins/integration_assistant/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant-common/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/packages/kbn-langchain/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/packages/security-solution/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/solutions/security/plugins/ecs_data_quality_dashboard/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/solutions/security/plugins/elastic_assistant/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/platform/plugins/shared/integration_assistant/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant-common/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-langchain/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/solutions/security/packages/**/*.{test,mock,test_helper}.{ts,tsx}', 'x-pack/plugins/security_solution/**/*.{test,mock,test_helper}.{ts,tsx}', 'x-pack/plugins/security_solution_ess/**/*.{test,mock,test_helper}.{ts,tsx}', 'x-pack/plugins/security_solution_serverless/**/*.{test,mock,test_helper}.{ts,tsx}', - 'x-pack/plugins/timelines/**/*.{test,mock,test_helper}.{ts,tsx}', + 'x-pack/solutions/security/plugins/timelines/**/*.{test,mock,test_helper}.{ts,tsx}', 'x-pack/plugins/cases/**/*.{test,mock,test_helper}.{ts,tsx}', - 'packages/kbn-cell-actions/**/*.{test,mock,test_helper}.{ts,tsx}', + 'src/platform/packages/shared/kbn-cell-actions/**/*.{test,mock,test_helper}.{ts,tsx}', ], rules: { '@typescript-eslint/no-non-null-assertion': 'error', @@ -1168,19 +1170,19 @@ module.exports = { { // typescript only for front and back end files: [ - 'x-pack/plugins/ecs_data_quality_dashboard/**/*.{ts,tsx}', - 'x-pack/plugins/elastic_assistant/**/*.{ts,tsx}', - 'x-pack/plugins/integration_assistant/**/*.{ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant/**/*.{ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant-common/**/*.{ts,tsx}', - 'x-pack/packages/kbn-langchain/**/*.{ts,tsx}', - 'x-pack/packages/security-solution/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/ecs_data_quality_dashboard/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/elastic_assistant/**/*.{ts,tsx}', + 'x-pack/platform/plugins/shared/integration_assistant/**/*.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant/**/*.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant-common/**/*.{ts,tsx}', + 'x-pack/platform/packages/shared/kbn-langchain/**/*.{ts,tsx}', + 'x-pack/solutions/security/packages/**/*.{ts,tsx}', 'x-pack/plugins/security_solution/**/*.{ts,tsx}', 'x-pack/plugins/security_solution_ess/**/*.{ts,tsx}', 'x-pack/plugins/security_solution_serverless/**/*.{ts,tsx}', - 'x-pack/plugins/timelines/**/*.{ts,tsx}', + 'x-pack/solutions/security/plugins/timelines/**/*.{ts,tsx}', 'x-pack/plugins/cases/**/*.{ts,tsx}', - 'packages/kbn-cell-actions/**/*.{ts,tsx}', + 'src/platform/packages/shared/kbn-cell-actions/**/*.{ts,tsx}', ], rules: { '@typescript-eslint/no-this-alias': 'error', @@ -1202,20 +1204,20 @@ module.exports = { { // typescript and javascript for front and back end files: [ - 'x-pack/plugins/ecs_data_quality_dashboard/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/elastic_assistant/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/integration_assistant/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/kbn-elastic-assistant-common/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/kbn-langchain/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/security-solution/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/ecs_data_quality_dashboard/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/elastic_assistant/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/plugins/shared/integration_assistant/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/packages/shared/kbn-elastic-assistant-common/**/*.{js,mjs,ts,tsx}', + 'x-pack/platform/packages/shared/kbn-langchain/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/packages/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/security_solution/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/security_solution_ess/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/security_solution_serverless/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/timelines/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/timelines/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/cases/**/*.{js,mjs,ts,tsx}', - 'packages/kbn-data-stream-adapter/**/*.{js,mjs,ts,tsx}', - 'packages/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/packages/data-stream-adapter/**/*.{js,mjs,ts,tsx}', + 'src/platform/packages/shared/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', ], plugins: ['eslint-plugin-node', 'react'], env: { @@ -1307,15 +1309,15 @@ module.exports = { overrides: [ { files: [ - 'x-pack/packages/security-solution/features/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/security-solution/navigation/**/*.{js,mjs,ts,tsx}', + 'x-pack/plugins/cases/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/plugins/ecs_data_quality_dashboard/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/security_solution/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/security_solution_ess/**/*.{js,mjs,ts,tsx}', 'x-pack/plugins/security_solution_serverless/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/cases/**/*.{js,mjs,ts,tsx}', - 'x-pack/plugins/ecs_data_quality_dashboard/**/*.{js,mjs,ts,tsx}', - 'x-pack/packages/kbn-data-stream-adapter/**/*.{js,mjs,ts,tsx}', - 'packages/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/packages/data-stream-adapter/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/packages/features/**/*.{js,mjs,ts,tsx}', + 'x-pack/solutions/security/packages/navigation/**/*.{js,mjs,ts,tsx}', + 'src/platform/packages/shared/kbn-cell-actions/**/*.{js,mjs,ts,tsx}', ], rules: { '@typescript-eslint/consistent-type-imports': 'error', @@ -1784,7 +1786,7 @@ module.exports = { 'plugin:@typescript-eslint/recommended', ], plugins: ['react', '@typescript-eslint'], - files: ['x-pack/plugins/osquery/**/*.{js,mjs,ts,tsx}'], + files: ['x-pack/platform/plugins/shared/osquery/**/*.{js,mjs,ts,tsx}'], rules: { 'padding-line-between-statements': [ 'error', @@ -1810,7 +1812,7 @@ module.exports = { }, { // typescript and javascript for front end react performance - files: ['x-pack/plugins/osquery/public/**/!(*.test).{js,mjs,ts,tsx}'], + files: ['x-pack/platform/plugins/shared/osquery/public/**/!(*.test).{js,mjs,ts,tsx}'], plugins: ['react', 'react-perf'], rules: { 'react-perf/jsx-no-new-object-as-prop': 'error', @@ -2005,7 +2007,7 @@ module.exports = { 'src/dev/build/tasks/install_chromium.ts', // is importing "@kbn/screenshotting-plugin" (platform/private) // @kbn/osquery-plugin could be categorised as Security, but @kbn/infra-plugin (observability) depends on it! - 'x-pack/plugins/osquery/**', + 'x-pack/platform/plugins/shared/osquery/**', // For now, we keep the exception to let tests depend on anythying. // Ideally, we need to classify the solution specific ones to reduce CI times diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 901fbc18cbbc0..1813401ee5b40 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -262,16 +262,11 @@ packages/core/user-settings/core-user-settings-server @elastic/kibana-security packages/core/user-settings/core-user-settings-server-internal @elastic/kibana-security packages/core/user-settings/core-user-settings-server-mocks @elastic/kibana-security packages/deeplinks/analytics @elastic/kibana-data-discovery @elastic/kibana-presentation @elastic/kibana-visualizations -packages/deeplinks/devtools @elastic/kibana-management packages/deeplinks/fleet @elastic/fleet -packages/deeplinks/management @elastic/kibana-management -packages/deeplinks/observability @elastic/obs-ux-management-team packages/deeplinks/search @elastic/search-kibana packages/deeplinks/security @elastic/security-solution packages/deeplinks/shared @elastic/appex-sharedux packages/default-nav/analytics @elastic/kibana-data-discovery @elastic/kibana-presentation @elastic/kibana-visualizations -packages/default-nav/devtools @elastic/kibana-management -packages/default-nav/management @elastic/kibana-management packages/home/sample_data_card @elastic/appex-sharedux packages/home/sample_data_tab @elastic/appex-sharedux packages/home/sample_data_types @elastic/appex-sharedux @@ -291,7 +286,6 @@ packages/kbn-apm-synthtrace @elastic/obs-ux-infra_services-team @elastic/obs-ux- packages/kbn-apm-synthtrace-client @elastic/obs-ux-infra_services-team @elastic/obs-ux-logs-team packages/kbn-apm-types @elastic/obs-ux-infra_services-team packages/kbn-apm-utils @elastic/obs-ux-infra_services-team -packages/kbn-avc-banner @elastic/security-defend-workflows packages/kbn-axe-config @elastic/kibana-qa packages/kbn-babel-preset @elastic/kibana-operations packages/kbn-babel-register @elastic/kibana-operations @@ -303,7 +297,6 @@ packages/kbn-calculate-width-from-char-count @elastic/kibana-visualizations packages/kbn-capture-oas-snapshot-cli @elastic/kibana-core packages/kbn-cases-components @elastic/response-ops packages/kbn-cbor @elastic/kibana-operations -packages/kbn-cell-actions @elastic/security-threat-hunting-explore packages/kbn-chart-icons @elastic/kibana-visualizations packages/kbn-check-mappings-update-cli @elastic/kibana-core packages/kbn-check-prod-native-modules-cli @elastic/kibana-operations @@ -324,7 +317,6 @@ packages/kbn-custom-icons @elastic/obs-ux-logs-team packages/kbn-custom-integrations @elastic/obs-ux-logs-team packages/kbn-cypress-config @elastic/kibana-operations packages/kbn-data-service @elastic/kibana-visualizations @elastic/kibana-data-discovery -packages/kbn-data-stream-adapter @elastic/security-threat-hunting packages/kbn-data-view-utils @elastic/kibana-data-discovery packages/kbn-datemath @elastic/kibana-data-discovery packages/kbn-dependency-ownership @elastic/kibana-security @@ -352,7 +344,6 @@ packages/kbn-eslint-plugin-imports @elastic/kibana-operations packages/kbn-eslint-plugin-telemetry @elastic/obs-knowledge-team packages/kbn-event-annotation-common @elastic/kibana-visualizations packages/kbn-event-annotation-components @elastic/kibana-visualizations -packages/kbn-expandable-flyout @elastic/security-threat-hunting-investigations packages/kbn-expect @elastic/kibana-operations @elastic/appex-qa packages/kbn-failed-test-reporter-cli @elastic/kibana-operations @elastic/appex-qa packages/kbn-field-types @elastic/kibana-data-discovery @@ -378,10 +369,7 @@ packages/kbn-i18n @elastic/kibana-core packages/kbn-i18n-react @elastic/kibana-core packages/kbn-import-locator @elastic/kibana-operations packages/kbn-import-resolver @elastic/kibana-operations -packages/kbn-index-adapter @elastic/security-threat-hunting packages/kbn-interpreter @elastic/kibana-visualizations -packages/kbn-investigation-shared @elastic/obs-ux-management-team -packages/kbn-io-ts-utils @elastic/obs-knowledge-team packages/kbn-ipynb @elastic/search-kibana packages/kbn-item-buffer @elastic/appex-sharedux packages/kbn-jest-serializers @elastic/kibana-operations @@ -397,17 +385,8 @@ packages/kbn-logging-mocks @elastic/kibana-core packages/kbn-managed-content-badge @elastic/kibana-visualizations packages/kbn-managed-vscode-config @elastic/kibana-operations packages/kbn-managed-vscode-config-cli @elastic/kibana-operations -packages/kbn-management/cards_navigation @elastic/kibana-management -packages/kbn-management/settings/application @elastic/kibana-management -packages/kbn-management/settings/components/field_category @elastic/kibana-management -packages/kbn-management/settings/components/field_input @elastic/kibana-management -packages/kbn-management/settings/components/field_row @elastic/kibana-management -packages/kbn-management/settings/components/form @elastic/kibana-management -packages/kbn-management/settings/field_definition @elastic/kibana-management packages/kbn-management/settings/section_registry @elastic/appex-sharedux @elastic/kibana-management packages/kbn-management/settings/setting_ids @elastic/appex-sharedux @elastic/kibana-management -packages/kbn-management/settings/types @elastic/kibana-management -packages/kbn-management/settings/utilities @elastic/kibana-management packages/kbn-management/storybook/config @elastic/kibana-management packages/kbn-manifest @elastic/kibana-core packages/kbn-mapbox-gl @elastic/kibana-presentation @@ -421,6 +400,7 @@ packages/kbn-openapi-common @elastic/security-detection-rule-management packages/kbn-openapi-generator @elastic/security-detection-rule-management packages/kbn-optimizer @elastic/kibana-operations packages/kbn-optimizer-webpack-helpers @elastic/kibana-operations +packages/kbn-palettes @elastic/kibana-visualizations packages/kbn-panel-loader @elastic/kibana-presentation packages/kbn-peggy @elastic/kibana-operations packages/kbn-peggy-loader @elastic/kibana-operations @@ -434,6 +414,7 @@ packages/kbn-react-field @elastic/kibana-data-discovery packages/kbn-react-hooks @elastic/obs-ux-logs-team packages/kbn-react-mute-legacy-root-warning @elastic/appex-sharedux packages/kbn-recently-accessed @elastic/appex-sharedux +packages/kbn-relocate @elastic/kibana-core packages/kbn-repo-file-maps @elastic/kibana-operations packages/kbn-repo-info @elastic/kibana-operations packages/kbn-repo-linter @elastic/kibana-operations @@ -475,7 +456,6 @@ packages/kbn-search-response-warnings @elastic/kibana-data-discovery packages/kbn-search-types @elastic/kibana-data-discovery packages/kbn-security-hardening @elastic/kibana-security packages/kbn-securitysolution-autocomplete @elastic/security-detection-engine -packages/kbn-securitysolution-ecs @elastic/security-threat-hunting-explore packages/kbn-securitysolution-endpoint-exceptions-common @elastic/security-detection-engine packages/kbn-securitysolution-es-utils @elastic/security-detection-engine packages/kbn-securitysolution-exception-list-components @elastic/security-detection-engine @@ -494,18 +474,12 @@ packages/kbn-securitysolution-rules @elastic/security-detection-engine packages/kbn-securitysolution-t-grid @elastic/security-detection-engine packages/kbn-securitysolution-utils @elastic/security-detection-engine packages/kbn-server-http-tools @elastic/kibana-core -packages/kbn-server-route-repository @elastic/obs-knowledge-team -packages/kbn-server-route-repository-client @elastic/obs-knowledge-team -packages/kbn-server-route-repository-utils @elastic/obs-knowledge-team packages/kbn-set-map @elastic/kibana-operations packages/kbn-shared-svg @elastic/obs-ux-infra_services-team packages/kbn-shared-ux-utility @elastic/appex-sharedux packages/kbn-some-dev-log @elastic/kibana-operations packages/kbn-sort-package-json @elastic/kibana-operations packages/kbn-sort-predicates @elastic/kibana-visualizations -packages/kbn-sse-utils @elastic/obs-knowledge-team -packages/kbn-sse-utils-client @elastic/obs-knowledge-team -packages/kbn-sse-utils-server @elastic/obs-knowledge-team packages/kbn-std @elastic/kibana-core packages/kbn-stdio-dev-helpers @elastic/kibana-operations packages/kbn-storybook @elastic/kibana-operations @@ -523,7 +497,6 @@ packages/kbn-triggers-actions-ui-types @elastic/response-ops packages/kbn-try-in-console @elastic/search-kibana packages/kbn-ts-projects @elastic/kibana-operations packages/kbn-ts-type-check-cli @elastic/kibana-operations -packages/kbn-typed-react-router-config @elastic/obs-knowledge-team @elastic/obs-ux-infra_services-team packages/kbn-ui-actions-browser @elastic/appex-sharedux packages/kbn-ui-shared-deps-npm @elastic/kibana-operations packages/kbn-ui-shared-deps-src @elastic/kibana-operations @@ -532,7 +505,6 @@ packages/kbn-unified-data-table @elastic/kibana-data-discovery @elastic/security packages/kbn-unified-doc-viewer @elastic/kibana-data-discovery packages/kbn-unified-field-list @elastic/kibana-data-discovery packages/kbn-unsaved-changes-badge @elastic/kibana-data-discovery -packages/kbn-unsaved-changes-prompt @elastic/kibana-management packages/kbn-use-tracked-promise @elastic/obs-ux-logs-team packages/kbn-user-profile-components @elastic/kibana-security packages/kbn-utility-types @elastic/kibana-core @@ -617,19 +589,49 @@ packages/shared-ux/storybook/config @elastic/appex-sharedux packages/shared-ux/storybook/mock @elastic/appex-sharedux packages/shared-ux/table_persist @elastic/appex-sharedux src/core @elastic/kibana-core +src/platform/packages/private/default-nav/devtools @elastic/kibana-management +src/platform/packages/private/default-nav/management @elastic/kibana-management src/platform/packages/private/default-nav/ml @elastic/ml-ui src/platform/packages/private/kbn-esql-editor @elastic/kibana-esql src/platform/packages/private/kbn-language-documentation @elastic/kibana-esql +src/platform/packages/private/kbn-management/settings/application @elastic/kibana-management +src/platform/packages/private/kbn-management/settings/components/field_category @elastic/kibana-management +src/platform/packages/private/kbn-management/settings/components/form @elastic/kibana-management +src/platform/packages/shared/deeplinks/devtools @elastic/kibana-management +src/platform/packages/shared/deeplinks/management @elastic/kibana-management src/platform/packages/shared/deeplinks/ml @elastic/ml-ui +src/platform/packages/shared/deeplinks/observability @elastic/obs-ux-management-team +src/platform/packages/shared/kbn-avc-banner @elastic/security-defend-workflows +src/platform/packages/shared/kbn-cell-actions @elastic/security-threat-hunting-explore src/platform/packages/shared/kbn-doc-links @elastic/docs src/platform/packages/shared/kbn-esql-ast @elastic/kibana-esql src/platform/packages/shared/kbn-esql-utils @elastic/kibana-esql src/platform/packages/shared/kbn-esql-validation-autocomplete @elastic/kibana-esql +src/platform/packages/shared/kbn-io-ts-utils @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-management/cards_navigation @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/components/field_input @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/components/field_row @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/field_definition @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/types @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/utilities @elastic/kibana-management src/platform/packages/shared/kbn-osquery-io-ts-types @elastic/security-asset-management +src/platform/packages/shared/kbn-securitysolution-ecs @elastic/security-threat-hunting-explore +src/platform/packages/shared/kbn-server-route-repository @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-server-route-repository-client @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-server-route-repository-utils @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-sse-utils @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-sse-utils-client @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-sse-utils-server @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-typed-react-router-config @elastic/obs-knowledge-team @elastic/obs-ux-infra_services-team +src/platform/packages/shared/kbn-unsaved-changes-prompt @elastic/kibana-management +src/platform/plugins/shared/ai_assistant_management/selection @elastic/obs-ai-assistant +src/platform/plugins/shared/console @elastic/kibana-management +src/platform/plugins/shared/dev_tools @elastic/kibana-management +src/platform/plugins/shared/es_ui_shared @elastic/kibana-management src/platform/plugins/shared/esql @elastic/kibana-esql src/platform/plugins/shared/esql_datagrid @elastic/kibana-esql +src/platform/plugins/shared/management @elastic/kibana-management src/plugins/advanced_settings @elastic/appex-sharedux @elastic/kibana-management -src/plugins/ai_assistant_management/selection @elastic/obs-ai-assistant src/plugins/bfetch @elastic/appex-sharedux src/plugins/chart_expressions/common @elastic/kibana-visualizations src/plugins/chart_expressions/expression_gauge @elastic/kibana-visualizations @@ -640,7 +642,6 @@ src/plugins/chart_expressions/expression_partition_vis @elastic/kibana-visualiza src/plugins/chart_expressions/expression_tagcloud @elastic/kibana-visualizations src/plugins/chart_expressions/expression_xy @elastic/kibana-visualizations src/plugins/charts @elastic/kibana-visualizations -src/plugins/console @elastic/kibana-management src/plugins/content_management @elastic/appex-sharedux src/plugins/controls @elastic/kibana-presentation src/plugins/custom_integrations @elastic/fleet @@ -650,11 +651,9 @@ src/plugins/data_view_editor @elastic/kibana-data-discovery src/plugins/data_view_field_editor @elastic/kibana-data-discovery src/plugins/data_view_management @elastic/kibana-data-discovery src/plugins/data_views @elastic/kibana-data-discovery -src/plugins/dev_tools @elastic/kibana-management src/plugins/discover @elastic/kibana-data-discovery src/plugins/discover_shared @elastic/kibana-data-discovery @elastic/obs-ux-logs-team src/plugins/embeddable @elastic/kibana-presentation -src/plugins/es_ui_shared @elastic/kibana-management src/plugins/event_annotation @elastic/kibana-visualizations src/plugins/event_annotation_listing @elastic/kibana-visualizations src/plugins/expression_error @elastic/kibana-presentation @@ -679,7 +678,6 @@ src/plugins/kibana_react @elastic/appex-sharedux src/plugins/kibana_usage_collection @elastic/kibana-core src/plugins/kibana_utils @elastic/appex-sharedux src/plugins/links @elastic/kibana-presentation -src/plugins/management @elastic/kibana-management src/plugins/maps_ems @elastic/kibana-presentation src/plugins/navigation @elastic/appex-sharedux src/plugins/newsfeed @elastic/kibana-core @@ -777,43 +775,20 @@ x-pack/examples/third_party_vis_lens_example @elastic/kibana-visualizations x-pack/examples/triggers_actions_ui_example @elastic/response-ops x-pack/examples/ui_actions_enhanced_examples @elastic/appex-sharedux x-pack/packages/ai-infra/product-doc-artifact-builder @elastic/appex-ai-infra -x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared @elastic/kibana-management -x-pack/packages/index-management/index_management_shared_types @elastic/kibana-management x-pack/packages/kbn-ai-assistant @elastic/search-kibana -x-pack/packages/kbn-ai-assistant-common @elastic/search-kibana x-pack/packages/kbn-alerting-comparators @elastic/response-ops x-pack/packages/kbn-alerting-state-types @elastic/response-ops x-pack/packages/kbn-cloud-security-posture/common @elastic/kibana-cloud-security-posture x-pack/packages/kbn-cloud-security-posture/graph @elastic/kibana-cloud-security-posture x-pack/packages/kbn-cloud-security-posture/public @elastic/kibana-cloud-security-posture -x-pack/packages/kbn-data-forge @elastic/obs-ux-management-team -x-pack/packages/kbn-elastic-assistant @elastic/security-generative-ai -x-pack/packages/kbn-elastic-assistant-common @elastic/security-generative-ai -x-pack/packages/kbn-infra-forge @elastic/obs-ux-management-team -x-pack/packages/kbn-langchain @elastic/security-generative-ai x-pack/packages/kbn-random-sampling @elastic/kibana-visualizations -x-pack/packages/kbn-slo-schema @elastic/obs-ux-management-team x-pack/packages/kbn-synthetics-private-location @elastic/obs-ux-management-team x-pack/packages/maps/vector_tile_utils @elastic/kibana-presentation -x-pack/packages/observability/alert_details @elastic/obs-ux-management-team -x-pack/packages/observability/alerting_rule_utils @elastic/obs-ux-management-team -x-pack/packages/observability/alerting_test_data @elastic/obs-ux-management-team -x-pack/packages/observability/get_padded_alert_time_range_util @elastic/obs-ux-management-team x-pack/packages/observability/logs_overview @elastic/obs-ux-logs-team x-pack/packages/observability/observability_utils/observability_utils_browser @elastic/observability-ui x-pack/packages/observability/observability_utils/observability_utils_common @elastic/observability-ui x-pack/packages/observability/observability_utils/observability_utils_server @elastic/observability-ui -x-pack/packages/observability/synthetics_test_data @elastic/obs-ux-management-team -x-pack/packages/rollup @elastic/kibana-management x-pack/packages/search/shared_ui @elastic/search-kibana -x-pack/packages/security-solution/data_table @elastic/security-threat-hunting-investigations -x-pack/packages/security-solution/distribution_bar @elastic/kibana-cloud-security-posture -x-pack/packages/security-solution/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore -x-pack/packages/security-solution/features @elastic/security-threat-hunting-explore -x-pack/packages/security-solution/navigation @elastic/security-threat-hunting-explore -x-pack/packages/security-solution/side_nav @elastic/security-threat-hunting-explore -x-pack/packages/security-solution/storybook/config @elastic/security-threat-hunting-explore -x-pack/packages/security-solution/upselling @elastic/security-threat-hunting-explore x-pack/packages/security/api_key_management @elastic/kibana-security x-pack/packages/security/authorization_core @elastic/kibana-security x-pack/packages/security/authorization_core_common @elastic/kibana-security @@ -824,6 +799,7 @@ x-pack/packages/security/plugin_types_server @elastic/kibana-security x-pack/packages/security/role_management_model @elastic/kibana-security x-pack/packages/security/ui_components @elastic/kibana-security x-pack/performance @elastic/appex-qa +x-pack/platform/packages/private/kbn-infra-forge @elastic/obs-ux-management-team x-pack/platform/packages/private/ml/agg_utils @elastic/ml-ui x-pack/platform/packages/private/ml/aiops_change_point_detection @elastic/ml-ui x-pack/platform/packages/private/ml/aiops_components @elastic/ml-ui @@ -854,9 +830,19 @@ x-pack/platform/packages/private/ml/time_buckets @elastic/ml-ui x-pack/platform/packages/private/ml/ui_actions @elastic/ml-ui x-pack/platform/packages/private/ml/url_state @elastic/ml-ui x-pack/platform/packages/private/ml/validators @elastic/ml-ui +x-pack/platform/packages/private/rollup @elastic/kibana-management +x-pack/platform/packages/shared/ai-assistant/common @elastic/search-kibana +x-pack/platform/packages/shared/ai-assistant/icon @elastic/appex-sharedux x-pack/platform/packages/shared/ai-infra/inference-common @elastic/appex-ai-infra x-pack/platform/packages/shared/ai-infra/product-doc-common @elastic/appex-ai-infra +x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared @elastic/kibana-management +x-pack/platform/packages/shared/index-management/index_management_shared_types @elastic/kibana-management +x-pack/platform/packages/shared/kbn-data-forge @elastic/obs-ux-management-team +x-pack/platform/packages/shared/kbn-elastic-assistant @elastic/security-generative-ai +x-pack/platform/packages/shared/kbn-elastic-assistant-common @elastic/security-generative-ai x-pack/platform/packages/shared/kbn-entities-schema @elastic/obs-entities +x-pack/platform/packages/shared/kbn-langchain @elastic/security-generative-ai +x-pack/platform/packages/shared/kbn-slo-schema @elastic/obs-ux-management-team x-pack/platform/packages/shared/ml/aiops_common @elastic/ml-ui x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis @elastic/ml-ui x-pack/platform/packages/shared/ml/aiops_log_rate_analysis @elastic/ml-ui @@ -867,15 +853,33 @@ x-pack/platform/packages/shared/ml/random_sampler_utils @elastic/ml-ui x-pack/platform/packages/shared/ml/response_stream @elastic/ml-ui x-pack/platform/packages/shared/ml/runtime_field_utils @elastic/ml-ui x-pack/platform/packages/shared/ml/trained_models_utils @elastic/ml-ui +x-pack/platform/packages/shared/observability/alerting_rule_utils @elastic/obs-ux-management-team +x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration @elastic/kibana-management +x-pack/platform/plugins/private/cross_cluster_replication @elastic/kibana-management +x-pack/platform/plugins/private/data_usage @elastic/obs-ai-assistant @elastic/security-solution x-pack/platform/plugins/private/data_visualizer @elastic/ml-ui +x-pack/platform/plugins/private/grokdebugger @elastic/kibana-management +x-pack/platform/plugins/private/index_lifecycle_management @elastic/kibana-management +x-pack/platform/plugins/private/license_api_guard @elastic/kibana-management +x-pack/platform/plugins/private/painless_lab @elastic/kibana-management +x-pack/platform/plugins/private/remote_clusters @elastic/kibana-management +x-pack/platform/plugins/private/rollup @elastic/kibana-management +x-pack/platform/plugins/private/runtime_fields @elastic/kibana-management +x-pack/platform/plugins/private/snapshot_restore @elastic/kibana-management x-pack/platform/plugins/private/transform @elastic/ml-ui x-pack/platform/plugins/private/translations @elastic/kibana-localization +x-pack/platform/plugins/private/watcher @elastic/kibana-management x-pack/platform/plugins/shared/ai_infra/llm_tasks @elastic/appex-ai-infra x-pack/platform/plugins/shared/ai_infra/product_doc_base @elastic/appex-ai-infra x-pack/platform/plugins/shared/aiops @elastic/ml-ui x-pack/platform/plugins/shared/entity_manager @elastic/obs-entities x-pack/platform/plugins/shared/inference @elastic/appex-ai-infra +x-pack/platform/plugins/shared/integration_assistant @elastic/security-scalability +x-pack/platform/plugins/shared/license_management @elastic/kibana-management x-pack/platform/plugins/shared/ml @elastic/ml-ui +x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant @elastic/obs-ai-assistant +x-pack/platform/plugins/shared/osquery @elastic/security-defend-workflows +x-pack/platform/plugins/shared/searchprofiler @elastic/kibana-management x-pack/plugins/actions @elastic/response-ops x-pack/plugins/alerting @elastic/response-ops x-pack/plugins/asset_inventory @elastic/kibana-cloud-security-posture @@ -885,20 +889,15 @@ x-pack/plugins/cases @elastic/response-ops x-pack/plugins/cloud @elastic/kibana-core x-pack/plugins/cloud_defend @elastic/kibana-cloud-security-posture x-pack/plugins/cloud_integrations/cloud_chat @elastic/kibana-core -x-pack/plugins/cloud_integrations/cloud_data_migration @elastic/kibana-management x-pack/plugins/cloud_integrations/cloud_experiments @elastic/kibana-core x-pack/plugins/cloud_integrations/cloud_full_story @elastic/kibana-core x-pack/plugins/cloud_integrations/cloud_links @elastic/kibana-core x-pack/plugins/cloud_security_posture @elastic/kibana-cloud-security-posture -x-pack/plugins/cross_cluster_replication @elastic/kibana-management x-pack/plugins/custom_branding @elastic/appex-sharedux x-pack/plugins/dashboard_enhanced @elastic/kibana-presentation x-pack/plugins/data_quality @elastic/obs-ux-logs-team -x-pack/plugins/data_usage @elastic/obs-ai-assistant @elastic/security-solution x-pack/plugins/discover_enhanced @elastic/kibana-data-discovery x-pack/plugins/drilldowns/url_drilldown @elastic/appex-sharedux -x-pack/plugins/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore -x-pack/plugins/elastic_assistant @elastic/security-generative-ai x-pack/plugins/embeddable_enhanced @elastic/kibana-presentation x-pack/plugins/encrypted_saved_objects @elastic/kibana-security x-pack/plugins/enterprise_search @elastic/search-kibana @@ -911,15 +910,10 @@ x-pack/plugins/global_search @elastic/appex-sharedux x-pack/plugins/global_search_bar @elastic/appex-sharedux x-pack/plugins/global_search_providers @elastic/appex-sharedux x-pack/plugins/graph @elastic/kibana-visualizations -x-pack/plugins/grokdebugger @elastic/kibana-management -x-pack/plugins/index_lifecycle_management @elastic/kibana-management x-pack/plugins/index_management @elastic/kibana-management x-pack/plugins/ingest_pipelines @elastic/kibana-management -x-pack/plugins/integration_assistant @elastic/security-scalability x-pack/plugins/kubernetes_security @elastic/kibana-cloud-security-posture x-pack/plugins/lens @elastic/kibana-visualizations -x-pack/plugins/license_api_guard @elastic/kibana-management -x-pack/plugins/license_management @elastic/kibana-management x-pack/plugins/licensing @elastic/kibana-core x-pack/plugins/lists @elastic/security-detection-engine x-pack/plugins/logstash @elastic/logstash @@ -931,38 +925,22 @@ x-pack/plugins/observability_solution/apm @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/apm_data_access @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/apm/ftr_e2e @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/dataset_quality @elastic/obs-ux-logs-team -x-pack/plugins/observability_solution/exploratory_view @elastic/obs-ux-management-team x-pack/plugins/observability_solution/infra @elastic/obs-ux-logs-team @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/inventory @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/inventory/e2e @elastic/obs-ux-infra_services-team -x-pack/plugins/observability_solution/investigate @elastic/obs-ux-management-team -x-pack/plugins/observability_solution/investigate_app @elastic/obs-ux-management-team x-pack/plugins/observability_solution/logs_data_access @elastic/obs-ux-logs-team x-pack/plugins/observability_solution/logs_explorer @elastic/obs-ux-logs-team x-pack/plugins/observability_solution/logs_shared @elastic/obs-ux-logs-team x-pack/plugins/observability_solution/metrics_data_access @elastic/obs-ux-infra_services-team -x-pack/plugins/observability_solution/observability @elastic/obs-ux-management-team -x-pack/plugins/observability_solution/observability_ai_assistant @elastic/obs-ai-assistant -x-pack/plugins/observability_solution/observability_ai_assistant_app @elastic/obs-ai-assistant -x-pack/plugins/observability_solution/observability_ai_assistant_management @elastic/obs-ai-assistant x-pack/plugins/observability_solution/observability_logs_explorer @elastic/obs-ux-logs-team -x-pack/plugins/observability_solution/observability_onboarding @elastic/obs-ux-logs-team @elastic/obs-ux-onboarding-team -x-pack/plugins/observability_solution/observability_onboarding/e2e @elastic/obs-ux-logs-team @elastic/obs-ux-onboarding-team +x-pack/plugins/observability_solution/observability_onboarding @elastic/obs-ux-logs-team +x-pack/plugins/observability_solution/observability_onboarding/e2e @elastic/obs-ux-logs-team x-pack/plugins/observability_solution/observability_shared @elastic/observability-ui x-pack/plugins/observability_solution/profiling @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/profiling_data_access @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/slo @elastic/obs-ux-management-team -x-pack/plugins/observability_solution/synthetics @elastic/obs-ux-management-team -x-pack/plugins/observability_solution/synthetics/e2e @elastic/obs-ux-management-team -x-pack/plugins/observability_solution/uptime @elastic/obs-ux-management-team -x-pack/plugins/observability_solution/ux @elastic/obs-ux-infra_services-team -x-pack/plugins/osquery @elastic/security-defend-workflows -x-pack/plugins/painless_lab @elastic/kibana-management -x-pack/plugins/remote_clusters @elastic/kibana-management x-pack/plugins/reporting @elastic/appex-sharedux -x-pack/plugins/rollup @elastic/kibana-management x-pack/plugins/rule_registry @elastic/response-ops @elastic/obs-ux-management-team -x-pack/plugins/runtime_fields @elastic/kibana-management x-pack/plugins/saved_objects_tagging @elastic/appex-sharedux x-pack/plugins/screenshotting @elastic/kibana-reporting-services x-pack/plugins/search_assistant @elastic/search-kibana @@ -973,30 +951,57 @@ x-pack/plugins/search_inference_endpoints @elastic/search-kibana x-pack/plugins/search_notebooks @elastic/search-kibana x-pack/plugins/search_playground @elastic/search-kibana x-pack/plugins/search_solution/search_navigation @elastic/search-kibana -x-pack/plugins/searchprofiler @elastic/kibana-management x-pack/plugins/security @elastic/kibana-security x-pack/plugins/security_solution @elastic/security-solution x-pack/plugins/security_solution_ess @elastic/security-solution x-pack/plugins/security_solution_serverless @elastic/security-solution x-pack/plugins/serverless @elastic/appex-sharedux -x-pack/plugins/serverless_observability @elastic/obs-ux-management-team x-pack/plugins/serverless_search @elastic/search-kibana x-pack/plugins/session_view @elastic/kibana-cloud-security-posture -x-pack/plugins/snapshot_restore @elastic/kibana-management x-pack/plugins/spaces @elastic/kibana-security x-pack/plugins/stack_alerts @elastic/response-ops x-pack/plugins/stack_connectors @elastic/response-ops x-pack/plugins/task_manager @elastic/response-ops x-pack/plugins/telemetry_collection_xpack @elastic/kibana-core -x-pack/plugins/threat_intelligence @elastic/security-threat-hunting-investigations -x-pack/plugins/timelines @elastic/security-threat-hunting-investigations x-pack/plugins/triggers_actions_ui @elastic/response-ops x-pack/plugins/upgrade_assistant @elastic/kibana-management -x-pack/plugins/watcher @elastic/kibana-management +x-pack/solutions/observability/packages/alert_details @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/alerting_test_data @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/get_padded_alert_time_range_util @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/kbn-investigation-shared @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/observability_ai/observability_ai_common @elastic/obs-ai-assistant +x-pack/solutions/observability/packages/observability_ai/observability_ai_server @elastic/obs-ai-assistant +x-pack/solutions/observability/packages/synthetics_test_data @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/exploratory_view @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/investigate @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/investigate_app @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/observability @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/observability_ai_assistant_app @elastic/obs-ai-assistant +x-pack/solutions/observability/plugins/observability_ai_assistant_management @elastic/obs-ai-assistant x-pack/solutions/observability/plugins/observability_solution/entities_data_access @elastic/obs-entities x-pack/solutions/observability/plugins/observability_solution/entity_manager_app @elastic/obs-entities +x-pack/solutions/observability/plugins/serverless_observability @elastic/obs-ux-management-team x-pack/solutions/observability/plugins/streams @elastic/streams-program-team x-pack/solutions/observability/plugins/streams_app @elastic/streams-program-team +x-pack/solutions/observability/plugins/synthetics @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/synthetics/e2e @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/uptime @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/ux @elastic/obs-ux-management-team +x-pack/solutions/security/packages/data_table @elastic/security-threat-hunting-investigations +x-pack/solutions/security/packages/data-stream-adapter @elastic/security-threat-hunting +x-pack/solutions/security/packages/distribution_bar @elastic/kibana-cloud-security-posture +x-pack/solutions/security/packages/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/expandable-flyout @elastic/security-threat-hunting-investigations +x-pack/solutions/security/packages/features @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/index-adapter @elastic/security-threat-hunting +x-pack/solutions/security/packages/navigation @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/side_nav @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/storybook/config @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/upselling @elastic/security-threat-hunting-explore +x-pack/solutions/security/plugins/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore +x-pack/solutions/security/plugins/elastic_assistant @elastic/security-generative-ai +x-pack/solutions/security/plugins/threat_intelligence @elastic/security-threat-hunting-investigations +x-pack/solutions/security/plugins/timelines @elastic/security-threat-hunting-investigations x-pack/test x-pack/test_serverless x-pack/test/alerting_api_integration/common/plugins/aad @elastic/response-ops @@ -1142,6 +1147,8 @@ x-pack/test_serverless/api_integration/test_suites/common/platform_security @ela /x-pack/test_serverless/functional/test_suites/common/examples/unified_field_list_examples @elastic/kibana-data-discovery /x-pack/test_serverless/functional/test_suites/common/management/data_views @elastic/kibana-data-discovery src/plugins/discover/public/context_awareness/profile_providers/security @elastic/kibana-data-discovery @elastic/security-threat-hunting-investigations +# TODO: this deprecation_logs folder should be owned by kibana management team after 9.0 +src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs @elastic/kibana-data-discovery @elastic/kibana-core src/plugins/discover/public/context_awareness/profile_providers/observability @elastic/kibana-data-discovery @elastic/obs-ux-logs-team # Platform Docs @@ -1352,6 +1359,9 @@ packages/kbn-monaco/src/esql @elastic/kibana-esql /x-pack/test/api_integration/deployment_agnostic/apis/observability/slo/ @elastic/obs-ux-management-team /x-pack/test/api_integration/deployment_agnostic/services/alerting_api @elastic/obs-ux-management-team /x-pack/test/api_integration/deployment_agnostic/services/slo_api @elastic/obs-ux-management-team +/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/ @elastic/obs-ux-management-team +/x-pack/test/api_integration/deployment_agnostic/services/synthetics_monitors @elastic/obs-ux-management-team +/x-pack/test/api_integration/deployment_agnostic/services/synthetics_private_location @elastic/obs-ux-management-team # Elastic Stack Monitoring /x-pack/test/monitoring_api_integration @elastic/stack-monitoring @@ -2013,7 +2023,7 @@ x-pack/test/api_integration/apis/management/index_management/inference_endpoints /x-pack/test/stack_functional_integration/apps/ccs @elastic/kibana-management /x-pack/test/functional/services/data_stream.ts @elastic/kibana-management /x-pack/test/functional/page_objects/watcher_page.ts @elastic/kibana-management -/x-pack/test/functional/page_objects/upgrade_assistant_page.ts @elastic/kibana-management +/x-pack/test/functional/page_objects/upgrade_assistant_page.ts @elastic/kibana-core /x-pack/test/functional/page_objects/snapshot_restore_page.ts @elastic/kibana-management /x-pack/test/functional/page_objects/rollup_page.ts @elastic/kibana-management /x-pack/test/functional/page_objects/ingest_pipelines_page.ts @elastic/kibana-management @@ -2036,7 +2046,7 @@ x-pack/test/api_integration/apis/management/index_management/inference_endpoints /x-pack/test/functional/apps/upgrade_assistant @elastic/kibana-core /x-pack/test/functional/apps/dev_tools @elastic/kibana-management /test/plugin_functional/test_suites/management @elastic/kibana-management -/x-pack/test/upgrade_assistant_integration @elastic/kibana-management +/x-pack/test/upgrade_assistant_integration @elastic/kibana-core /test/plugin_functional/plugins/management_test_plugin @elastic/kibana-management /test/functional/page_objects/management/*.ts @elastic/kibana-management /test/functional/page_objects/embedded_console.ts @elastic/kibana-management @@ -2122,6 +2132,7 @@ x-pack/test_serverless/functional/test_suites/security/index.mki_only.ts @elasti /x-pack/test/functional/es_archives/auditbeat/default @elastic/security-solution /x-pack/test/functional/es_archives/auditbeat/hosts @elastic/security-solution /x-pack/test_serverless/functional/page_objects/svl_management_page.ts @elastic/security-solution +/x-pack/test_serverless/functional/page_objects/svl_data_usage.ts @elastic/security-solution @elastic/obs-ai-assistant /x-pack/test_serverless/api_integration/test_suites/security @elastic/security-solution /x-pack/test_serverless/functional/test_suites/security/index.feature_flags.ts @elastic/security-solution @@ -2444,7 +2455,7 @@ x-pack/plugins/security_solution/server/assistant/tools/defend_insights @elastic /x-pack/plugins/security_solution_serverless/public/upselling/sections/endpoint_management @elastic/security-defend-workflows /x-pack/plugins/security_solution_serverless/public/upselling/pages/endpoint_management @elastic/security-defend-workflows /x-pack/plugins/security_solution_serverless/server/endpoint @elastic/security-defend-workflows -x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights @elastic/security-defend-workflows +x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights @elastic/security-defend-workflows x-pack/plugins/elastic_assistant/server/__mocks__/defend_insights_schema.mock.ts @elastic/security-defend-workflows x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights @elastic/security-defend-workflows x-pack/plugins/elastic_assistant/server/routes/defend_insights @elastic/security-defend-workflows @@ -2484,7 +2495,7 @@ x-pack/test/automatic_import_api_integration @elastic/security-scalability ## Packages x-pack/packages/kbn-cloud-security-posture @elastic/kibana-cloud-security-posture -x-pack/packages/security-solution/distribution_bar @elastic/kibana-cloud-security-posture +x-pack/solutions/security/packages/distribution_bar @elastic/kibana-cloud-security-posture ## Plugins x-pack/plugins/cloud_defend @elastic/kibana-cloud-security-posture x-pack/plugins/cloud_security_posture @elastic/kibana-cloud-security-posture @@ -2647,6 +2658,735 @@ x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics /.github/workflows/oblt-github-commands @elastic/observablt-robots @elastic/kibana-operations /.github/workflows/undeploy-my-kibana.yml @elastic/observablt-robots @elastic/kibana-operations +# Sustainable kibana - Temporary placeholder for new folders +# To be removed as folders are moved into their new home. +# see https://github.com/elastic/kibana/pull/203682 + +src/core/packages/analytics/browser @elastic/kibana-core +src/core/packages/analytics/browser-internal @elastic/kibana-core +src/core/packages/analytics/server @elastic/kibana-core +src/core/packages/analytics/server-internal @elastic/kibana-core +src/core/packages/application/browser @elastic/kibana-core +src/core/packages/application/browser-internal @elastic/kibana-core +src/core/packages/application/common @elastic/kibana-core +src/core/packages/apps/browser-internal @elastic/kibana-core +src/core/packages/apps/server-internal @elastic/kibana-core +src/core/packages/base/browser-internal @elastic/kibana-core +src/core/packages/base/common @elastic/kibana-core +src/core/packages/base/common-internal @elastic/kibana-core +src/core/packages/base/server-internal @elastic/kibana-core +src/core/packages/capabilities/browser-internal @elastic/kibana-core +src/core/packages/capabilities/common @elastic/kibana-core +src/core/packages/capabilities/server @elastic/kibana-core +src/core/packages/capabilities/server-internal @elastic/kibana-core +src/core/packages/chrome/browser @elastic/appex-sharedux +src/core/packages/chrome/browser-internal @elastic/appex-sharedux +src/core/packages/config/server-internal @elastic/kibana-core +src/core/packages/custom-branding/browser @elastic/appex-sharedux +src/core/packages/custom-branding/browser-internal @elastic/appex-sharedux +src/core/packages/custom-branding/browser-mocks @elastic/appex-sharedux +src/core/packages/custom-branding/common @elastic/appex-sharedux +src/core/packages/custom-branding/server @elastic/appex-sharedux +src/core/packages/custom-branding/server-internal @elastic/appex-sharedux +src/core/packages/custom-branding/server-mocks @elastic/appex-sharedux +src/core/packages/deprecations/browser @elastic/kibana-core +src/core/packages/deprecations/browser-internal @elastic/kibana-core +src/core/packages/deprecations/common @elastic/kibana-core +src/core/packages/deprecations/server @elastic/kibana-core +src/core/packages/deprecations/server-internal @elastic/kibana-core +src/core/packages/doc-links/browser @elastic/kibana-core +src/core/packages/doc-links/browser-internal @elastic/kibana-core +src/core/packages/doc-links/server @elastic/kibana-core +src/core/packages/doc-links/server-internal @elastic/kibana-core +src/core/packages/elasticsearch/client-server-internal @elastic/kibana-core +src/core/packages/elasticsearch/server @elastic/kibana-core +src/core/packages/elasticsearch/server-internal @elastic/kibana-core +src/core/packages/environment/server-internal @elastic/kibana-core +src/core/packages/execution-context/browser @elastic/kibana-core +src/core/packages/execution-context/browser-internal @elastic/kibana-core +src/core/packages/execution-context/common @elastic/kibana-core +src/core/packages/execution-context/server @elastic/kibana-core +src/core/packages/execution-context/server-internal @elastic/kibana-core +src/core/packages/fatal-errors/browser @elastic/kibana-core +src/core/packages/fatal-errors/browser-internal @elastic/kibana-core +src/core/packages/feature-flags/browser @elastic/kibana-core +src/core/packages/feature-flags/browser-internal @elastic/kibana-core +src/core/packages/feature-flags/browser-mocks @elastic/kibana-core +src/core/packages/feature-flags/server @elastic/kibana-core +src/core/packages/feature-flags/server-internal @elastic/kibana-core +src/core/packages/feature-flags/server-mocks @elastic/kibana-core +src/core/packages/http/browser @elastic/kibana-core +src/core/packages/http/browser-internal @elastic/kibana-core +src/core/packages/http/common @elastic/kibana-core +src/core/packages/http/context-server-internal @elastic/kibana-core +src/core/packages/http/request-handler-context-server @elastic/kibana-core +src/core/packages/http/request-handler-context-server-internal @elastic/kibana-core +src/core/packages/http/resources-server @elastic/kibana-core +src/core/packages/http/resources-server-internal @elastic/kibana-core +src/core/packages/http/router-server-internal @elastic/kibana-core +src/core/packages/http/server @elastic/kibana-core +src/core/packages/http/server-internal @elastic/kibana-core +src/core/packages/http/server-utils @elastic/kibana-core +src/core/packages/i18n/browser @elastic/kibana-core +src/core/packages/i18n/browser-internal @elastic/kibana-core +src/core/packages/i18n/server @elastic/kibana-core +src/core/packages/i18n/server-internal @elastic/kibana-core +src/core/packages/injected-metadata/browser-internal @elastic/kibana-core +src/core/packages/injected-metadata/common-internal @elastic/kibana-core +src/core/packages/integrations/browser-internal @elastic/kibana-core +src/core/packages/lifecycle/browser @elastic/kibana-core +src/core/packages/lifecycle/browser-internal @elastic/kibana-core +src/core/packages/lifecycle/server @elastic/kibana-core +src/core/packages/lifecycle/server-internal @elastic/kibana-core +src/core/packages/logging/browser-internal @elastic/kibana-core +src/core/packages/logging/common-internal @elastic/kibana-core +src/core/packages/logging/server @elastic/kibana-core +src/core/packages/logging/server-internal @elastic/kibana-core +src/core/packages/metrics/collectors-server-internal @elastic/kibana-core +src/core/packages/metrics/server @elastic/kibana-core +src/core/packages/metrics/server-internal @elastic/kibana-core +src/core/packages/mount-utils/browser @elastic/kibana-core +src/core/packages/mount-utils/browser-internal @elastic/kibana-core +src/core/packages/node/server @elastic/kibana-core +src/core/packages/node/server-internal @elastic/kibana-core +src/core/packages/notifications/browser @elastic/kibana-core +src/core/packages/notifications/browser-internal @elastic/kibana-core +src/core/packages/overlays/browser @elastic/kibana-core +src/core/packages/overlays/browser-internal @elastic/kibana-core +src/core/packages/plugins/base-server-internal @elastic/kibana-core +src/core/packages/plugins/browser @elastic/kibana-core +src/core/packages/plugins/browser-internal @elastic/kibana-core +src/core/packages/plugins/contracts-browser @elastic/kibana-core +src/core/packages/plugins/contracts-server @elastic/kibana-core +src/core/packages/plugins/server @elastic/kibana-core +src/core/packages/plugins/server-internal @elastic/kibana-core +src/core/packages/preboot/server @elastic/kibana-core +src/core/packages/preboot/server-internal @elastic/kibana-core +src/core/packages/rendering/browser @elastic/kibana-core +src/core/packages/rendering/browser-internal @elastic/kibana-core +src/core/packages/rendering/server-internal @elastic/kibana-core +src/core/packages/root/browser-internal @elastic/kibana-core +src/core/packages/root/server-internal @elastic/kibana-core +src/core/packages/saved-objects/api-browser @elastic/kibana-core +src/core/packages/saved-objects/api-server @elastic/kibana-core +src/core/packages/saved-objects/api-server-internal @elastic/kibana-core +src/core/packages/saved-objects/base-server-internal @elastic/kibana-core +src/core/packages/saved-objects/browser @elastic/kibana-core +src/core/packages/saved-objects/browser-internal @elastic/kibana-core +src/core/packages/saved-objects/common @elastic/kibana-core +src/core/packages/saved-objects/import-export-server-internal @elastic/kibana-core +src/core/packages/saved-objects/migration-server-internal @elastic/kibana-core +src/core/packages/saved-objects/server @elastic/kibana-core +src/core/packages/saved-objects/server-internal @elastic/kibana-core +src/core/packages/saved-objects/utils-server @elastic/kibana-core +src/core/packages/security/browser @elastic/kibana-core +src/core/packages/security/browser-internal @elastic/kibana-core +src/core/packages/security/browser-mocks @elastic/kibana-core +src/core/packages/security/common @elastic/kibana-core @elastic/kibana-security +src/core/packages/security/server @elastic/kibana-core +src/core/packages/security/server-internal @elastic/kibana-core +src/core/packages/security/server-mocks @elastic/kibana-core +src/core/packages/status/common @elastic/kibana-core +src/core/packages/status/server @elastic/kibana-core +src/core/packages/status/server-internal @elastic/kibana-core +src/core/packages/test-helpers/deprecations-getters @elastic/kibana-core +src/core/packages/test-helpers/http-setup-browser @elastic/kibana-core +src/core/packages/test-helpers/so-type-serializer @elastic/kibana-core +src/core/packages/test-helpers/test-utils @elastic/kibana-core +src/core/packages/theme/browser @elastic/kibana-core +src/core/packages/theme/browser-internal @elastic/kibana-core +src/core/packages/ui-settings/browser @elastic/appex-sharedux +src/core/packages/ui-settings/browser-internal @elastic/appex-sharedux +src/core/packages/ui-settings/common @elastic/appex-sharedux +src/core/packages/ui-settings/server @elastic/appex-sharedux +src/core/packages/ui-settings/server-internal @elastic/appex-sharedux +src/core/packages/usage-data/base-server-internal @elastic/kibana-core +src/core/packages/usage-data/server @elastic/kibana-core +src/core/packages/usage-data/server-internal @elastic/kibana-core +src/core/packages/user-profile/browser @elastic/kibana-core +src/core/packages/user-profile/browser-internal @elastic/kibana-core +src/core/packages/user-profile/browser-mocks @elastic/kibana-core +src/core/packages/user-profile/common @elastic/kibana-core +src/core/packages/user-profile/server @elastic/kibana-core +src/core/packages/user-profile/server-internal @elastic/kibana-core +src/core/packages/user-profile/server-mocks @elastic/kibana-core +src/core/packages/user-settings/server @elastic/kibana-security +src/core/packages/user-settings/server-internal @elastic/kibana-security +src/core/packages/user-settings/server-mocks @elastic/kibana-security +src/platform/packages/private/analytics/utils/analytics_collection_utils @elastic/kibana-core +src/platform/packages/private/content-management/favorites/favorites_common @elastic/appex-sharedux +src/platform/packages/private/content-management/tabbed_table_list_view @elastic/appex-sharedux +src/platform/packages/private/default-nav/analytics @elastic/kibana-data-discovery @elastic/kibana-presentation @elastic/kibana-visualizations +src/platform/packages/private/default-nav/devtools @elastic/kibana-management +src/platform/packages/private/default-nav/management @elastic/kibana-management +src/platform/packages/private/default-nav/ml @elastic/ml-ui +src/platform/packages/private/kbn-apm-config-loader @elastic/kibana-core @vigneshshanmugam +src/platform/packages/private/kbn-config-mocks @elastic/kibana-core +src/platform/packages/private/kbn-esql-editor @elastic/kibana-esql +src/platform/packages/private/kbn-generate-csv @elastic/appex-sharedux +src/platform/packages/private/kbn-handlebars @elastic/kibana-security +src/platform/packages/private/kbn-hapi-mocks @elastic/kibana-core +src/platform/packages/private/kbn-health-gateway-server @elastic/kibana-core +src/platform/packages/private/kbn-item-buffer @elastic/appex-sharedux +src/platform/packages/private/kbn-language-documentation @elastic/kibana-esql +src/platform/packages/private/kbn-lens-formula-docs @elastic/kibana-visualizations +src/platform/packages/private/kbn-managed-content-badge @elastic/kibana-visualizations +src/platform/packages/private/kbn-management/settings/application @elastic/kibana-management +src/platform/packages/private/kbn-management/settings/components/field_category @elastic/kibana-management +src/platform/packages/private/kbn-management/settings/components/form @elastic/kibana-management +src/platform/packages/private/kbn-mapbox-gl @elastic/kibana-presentation +src/platform/packages/private/kbn-panel-loader @elastic/kibana-presentation +src/platform/packages/private/kbn-repo-packages @elastic/kibana-operations +src/platform/packages/private/kbn-reporting/common @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/export_types/csv @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/export_types/csv_common @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/export_types/pdf @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/export_types/pdf_common @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/export_types/png @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/export_types/png_common @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/get_csv_panel_actions @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/mocks_server @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/public @elastic/appex-sharedux +src/platform/packages/private/kbn-reporting/server @elastic/appex-sharedux +src/platform/packages/private/kbn-saved-objects-settings @elastic/appex-sharedux +src/platform/packages/private/kbn-screenshotting-server @elastic/appex-sharedux +src/platform/packages/private/kbn-sse-utils-server @elastic/obs-knowledge-team +src/platform/packages/private/kbn-timelion-grammar @elastic/kibana-visualizations +src/platform/packages/private/kbn-tinymath @elastic/kibana-visualizations +src/platform/packages/private/kbn-transpose-utils @elastic/kibana-visualizations +src/platform/packages/private/kbn-ui-shared-deps-npm @elastic/kibana-operations +src/platform/packages/private/kbn-ui-shared-deps-src @elastic/kibana-operations +src/platform/packages/private/kbn-unsaved-changes-badge @elastic/kibana-data-discovery +src/platform/packages/private/react/kibana_context/root @elastic/appex-sharedux +src/platform/packages/private/response-ops/rule_params @elastic/response-ops +src/platform/packages/private/serverless/project_switcher @elastic/appex-sharedux +src/platform/packages/private/serverless/settings/common @elastic/appex-sharedux @elastic/kibana-management +src/platform/packages/private/serverless/types @elastic/appex-sharedux +src/platform/packages/private/shared-ux/button/exit_full_screen @elastic/appex-sharedux +src/platform/packages/private/shared-ux/modal/tabbed @elastic/appex-sharedux +src/platform/packages/private/shared-ux/page/analytics_no_data/impl @elastic/appex-sharedux +src/platform/packages/private/shared-ux/page/analytics_no_data/mocks @elastic/appex-sharedux +src/platform/packages/private/shared-ux/page/analytics_no_data/types @elastic/appex-sharedux +src/platform/packages/private/shared-ux/page/kibana_no_data/impl @elastic/appex-sharedux +src/platform/packages/private/shared-ux/page/kibana_no_data/mocks @elastic/appex-sharedux +src/platform/packages/private/shared-ux/page/kibana_no_data/types @elastic/appex-sharedux +src/platform/packages/private/shared-ux/prompt/no_data_views/impl @elastic/appex-sharedux +src/platform/packages/private/shared-ux/prompt/no_data_views/mocks @elastic/appex-sharedux +src/platform/packages/private/shared-ux/table_persist @elastic/appex-sharedux +src/platform/packages/shared/cloud @elastic/kibana-core +src/platform/packages/shared/content-management/content_editor @elastic/appex-sharedux +src/platform/packages/shared/content-management/content_insights/content_insights_public @elastic/appex-sharedux +src/platform/packages/shared/content-management/content_insights/content_insights_server @elastic/appex-sharedux +src/platform/packages/shared/content-management/favorites/favorites_public @elastic/appex-sharedux +src/platform/packages/shared/content-management/favorites/favorites_server @elastic/appex-sharedux +src/platform/packages/shared/content-management/table_list_view @elastic/appex-sharedux +src/platform/packages/shared/content-management/table_list_view_common @elastic/appex-sharedux +src/platform/packages/shared/content-management/table_list_view_table @elastic/appex-sharedux +src/platform/packages/shared/content-management/user_profiles @elastic/appex-sharedux +src/platform/packages/shared/deeplinks/analytics @elastic/kibana-data-discovery @elastic/kibana-presentation @elastic/kibana-visualizations +src/platform/packages/shared/deeplinks/devtools @elastic/kibana-management +src/platform/packages/shared/deeplinks/fleet @elastic/fleet +src/platform/packages/shared/deeplinks/management @elastic/kibana-management +src/platform/packages/shared/deeplinks/ml @elastic/ml-ui +src/platform/packages/shared/deeplinks/observability @elastic/obs-ux-management-team +src/platform/packages/shared/deeplinks/search @elastic/search-kibana +src/platform/packages/shared/deeplinks/security @elastic/security-solution +src/platform/packages/shared/deeplinks/shared @elastic/appex-sharedux +src/platform/packages/shared/home/sample_data_card @elastic/appex-sharedux +src/platform/packages/shared/home/sample_data_tab @elastic/appex-sharedux +src/platform/packages/shared/home/sample_data_types @elastic/appex-sharedux +src/platform/packages/shared/kbn-actions-types @elastic/response-ops +src/platform/packages/shared/kbn-alerting-types @elastic/response-ops +src/platform/packages/shared/kbn-alerts-as-data-utils @elastic/response-ops +src/platform/packages/shared/kbn-alerts-ui-shared @elastic/response-ops +src/platform/packages/shared/kbn-analytics @elastic/kibana-core +src/platform/packages/shared/kbn-apm-data-view @elastic/obs-ux-infra_services-team +src/platform/packages/shared/kbn-apm-utils @elastic/obs-ux-infra_services-team +src/platform/packages/shared/kbn-avc-banner @elastic/security-defend-workflows +src/platform/packages/shared/kbn-bfetch-error @elastic/appex-sharedux +src/platform/packages/shared/kbn-calculate-width-from-char-count @elastic/kibana-visualizations +src/platform/packages/shared/kbn-cases-components @elastic/response-ops +src/platform/packages/shared/kbn-cbor @elastic/kibana-operations +src/platform/packages/shared/kbn-cell-actions @elastic/security-threat-hunting-explore +src/platform/packages/shared/kbn-chart-icons @elastic/kibana-visualizations +src/platform/packages/shared/kbn-coloring @elastic/kibana-visualizations +src/platform/packages/shared/kbn-config @elastic/kibana-core +src/platform/packages/shared/kbn-config-schema @elastic/kibana-core +src/platform/packages/shared/kbn-content-management-utils @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-crypto @elastic/kibana-security +src/platform/packages/shared/kbn-crypto-browser @elastic/kibana-core +src/platform/packages/shared/kbn-custom-icons @elastic/obs-ux-logs-team +src/platform/packages/shared/kbn-data-service @elastic/kibana-visualizations @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-data-view-utils @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-datemath @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-discover-contextual-components @elastic/obs-ux-logs-team @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-discover-utils @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-doc-links @elastic/docs +src/platform/packages/shared/kbn-dom-drag-drop @elastic/kibana-visualizations @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-ebt-tools @elastic/kibana-core +src/platform/packages/shared/kbn-elastic-agent-utils @elastic/obs-ux-logs-team +src/platform/packages/shared/kbn-es-errors @elastic/kibana-core +src/platform/packages/shared/kbn-es-query @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-es-types @elastic/kibana-core @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-esql-ast @elastic/kibana-esql +src/platform/packages/shared/kbn-esql-utils @elastic/kibana-esql +src/platform/packages/shared/kbn-esql-validation-autocomplete @elastic/kibana-esql +src/platform/packages/shared/kbn-event-annotation-common @elastic/kibana-visualizations +src/platform/packages/shared/kbn-event-annotation-components @elastic/kibana-visualizations +src/platform/packages/shared/kbn-field-types @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-field-utils @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-flot-charts @elastic/kibana-presentation @elastic/stack-monitoring +src/platform/packages/shared/kbn-grouping @elastic/response-ops +src/platform/packages/shared/kbn-guided-onboarding @elastic/appex-sharedux +src/platform/packages/shared/kbn-i18n @elastic/kibana-core +src/platform/packages/shared/kbn-i18n-react @elastic/kibana-core +src/platform/packages/shared/kbn-interpreter @elastic/kibana-visualizations +src/platform/packages/shared/kbn-io-ts-utils @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-lens-embeddable-utils @elastic/obs-ux-infra_services-team @elastic/kibana-visualizations +src/platform/packages/shared/kbn-logging @elastic/kibana-core +src/platform/packages/shared/kbn-logging-mocks @elastic/kibana-core +src/platform/packages/shared/kbn-management/cards_navigation @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/components/field_input @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/components/field_row @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/field_definition @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/section_registry @elastic/appex-sharedux @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/setting_ids @elastic/appex-sharedux @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/types @elastic/kibana-management +src/platform/packages/shared/kbn-management/settings/utilities @elastic/kibana-management +src/platform/packages/shared/kbn-monaco @elastic/appex-sharedux +src/platform/packages/shared/kbn-object-versioning @elastic/appex-sharedux +src/platform/packages/shared/kbn-object-versioning-utils @elastic/appex-sharedux +src/platform/packages/shared/kbn-openapi-common @elastic/security-detection-rule-management +src/platform/packages/shared/kbn-osquery-io-ts-types @elastic/security-asset-management +src/platform/packages/shared/kbn-profiling-utils @elastic/obs-ux-infra_services-team +src/platform/packages/shared/kbn-react-field @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-react-hooks @elastic/obs-ux-logs-team +src/platform/packages/shared/kbn-recently-accessed @elastic/appex-sharedux +src/platform/packages/shared/kbn-repo-info @elastic/kibana-operations +src/platform/packages/shared/kbn-resizable-layout @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-rison @elastic/kibana-operations +src/platform/packages/shared/kbn-router-to-openapispec @elastic/kibana-core +src/platform/packages/shared/kbn-router-utils @elastic/obs-ux-logs-team +src/platform/packages/shared/kbn-rrule @elastic/response-ops +src/platform/packages/shared/kbn-rule-data-utils @elastic/security-detections-response @elastic/response-ops @elastic/obs-ux-management-team +src/platform/packages/shared/kbn-safer-lodash-set @elastic/kibana-security +src/platform/packages/shared/kbn-search-api-panels @elastic/search-kibana +src/platform/packages/shared/kbn-search-connectors @elastic/search-kibana +src/platform/packages/shared/kbn-search-errors @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-search-response-warnings @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-search-types @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-security-hardening @elastic/kibana-security +src/platform/packages/shared/kbn-securitysolution-ecs @elastic/security-threat-hunting-explore +src/platform/packages/shared/kbn-securitysolution-es-utils @elastic/security-detection-engine +src/platform/packages/shared/kbn-securitysolution-io-ts-types @elastic/security-detection-engine +src/platform/packages/shared/kbn-securitysolution-io-ts-utils @elastic/security-detection-engine +src/platform/packages/shared/kbn-securitysolution-rules @elastic/security-detection-engine +src/platform/packages/shared/kbn-server-http-tools @elastic/kibana-core +src/platform/packages/shared/kbn-server-route-repository @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-server-route-repository-client @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-server-route-repository-utils @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-shared-svg @elastic/obs-ux-infra_services-team +src/platform/packages/shared/kbn-shared-ux-utility @elastic/appex-sharedux +src/platform/packages/shared/kbn-sort-predicates @elastic/kibana-visualizations +src/platform/packages/shared/kbn-sse-utils @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-sse-utils-client @elastic/obs-knowledge-team +src/platform/packages/shared/kbn-std @elastic/kibana-core +src/platform/packages/shared/kbn-triggers-actions-ui-types @elastic/response-ops +src/platform/packages/shared/kbn-try-in-console @elastic/search-kibana +src/platform/packages/shared/kbn-typed-react-router-config @elastic/obs-knowledge-team @elastic/obs-ux-infra_services-team +src/platform/packages/shared/kbn-ui-actions-browser @elastic/appex-sharedux +src/platform/packages/shared/kbn-ui-theme @elastic/kibana-operations +src/platform/packages/shared/kbn-unified-data-table @elastic/kibana-data-discovery @elastic/security-threat-hunting-investigations +src/platform/packages/shared/kbn-unified-doc-viewer @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-unified-field-list @elastic/kibana-data-discovery +src/platform/packages/shared/kbn-unsaved-changes-prompt @elastic/kibana-management +src/platform/packages/shared/kbn-user-profile-components @elastic/kibana-security +src/platform/packages/shared/kbn-utility-types @elastic/kibana-core +src/platform/packages/shared/kbn-utility-types-jest @elastic/kibana-operations +src/platform/packages/shared/kbn-utils @elastic/kibana-operations +src/platform/packages/shared/kbn-visualization-ui-components @elastic/kibana-visualizations +src/platform/packages/shared/kbn-visualization-utils @elastic/kibana-visualizations +src/platform/packages/shared/kbn-zod @elastic/kibana-core +src/platform/packages/shared/kbn-zod-helpers @elastic/security-detection-rule-management +src/platform/packages/shared/presentation/presentation_containers @elastic/kibana-presentation +src/platform/packages/shared/presentation/presentation_publishing @elastic/kibana-presentation +src/platform/packages/shared/react/kibana_context/common @elastic/appex-sharedux +src/platform/packages/shared/react/kibana_context/render @elastic/appex-sharedux +src/platform/packages/shared/react/kibana_context/styled @elastic/appex-sharedux +src/platform/packages/shared/react/kibana_context/theme @elastic/appex-sharedux +src/platform/packages/shared/react/kibana_mount @elastic/appex-sharedux +src/platform/packages/shared/serverless/settings/observability_project @elastic/appex-sharedux @elastic/kibana-management @elastic/obs-ux-management-team +src/platform/packages/shared/serverless/settings/search_project @elastic/search-kibana @elastic/kibana-management +src/platform/packages/shared/serverless/settings/security_project @elastic/security-solution @elastic/kibana-management +src/platform/packages/shared/shared-ux/avatar/solution @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/button_toolbar @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/card/no_data/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/card/no_data/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/card/no_data/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/chrome/navigation @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/code_editor/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/code_editor/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/error_boundary @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/context @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/file_picker/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/file_upload/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/image/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/image/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/file/util @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/link/redirect_app/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/link/redirect_app/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/link/redirect_app/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/markdown/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/markdown/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/markdown/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/kibana_template/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/kibana_template/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/kibana_template/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/no_data_config/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/no_data_config/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/no_data_config/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/no_data/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/no_data/mocks @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/no_data/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/page/solution_nav @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/prompt/no_data_views/types @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/prompt/not_found @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/router/impl @elastic/appex-sharedux +src/platform/packages/shared/shared-ux/storybook/mock @elastic/appex-sharedux +src/platform/packages/shared/Users/gsoldevila/Work/kibana-secondary/Users/gsoldevila/Work/kibana-secondary/src/core @elastic/kibana-core +src/platform/packages/shared/Users/gsoldevila/Work/kibana-secondary/Users/gsoldevila/Work/kibana-secondary/src/plugins/chart_expressions/common @elastic/kibana-visualizations +src/platform/plugins/private/advanced_settings @elastic/appex-sharedux @elastic/kibana-management +src/platform/plugins/private/event_annotation @elastic/kibana-visualizations +src/platform/plugins/private/event_annotation_listing @elastic/kibana-visualizations +src/platform/plugins/private/files_management @elastic/appex-sharedux +src/platform/plugins/private/ftr_apis @elastic/kibana-core +src/platform/plugins/private/image_embeddable @elastic/appex-sharedux +src/platform/plugins/private/input_control_vis @elastic/kibana-presentation +src/platform/plugins/private/interactive_setup @elastic/kibana-security +src/platform/plugins/private/kibana_overview @elastic/appex-sharedux +src/platform/plugins/private/kibana_usage_collection @elastic/kibana-core +src/platform/plugins/private/links @elastic/kibana-presentation +src/platform/plugins/private/maps_ems @elastic/kibana-presentation +src/platform/plugins/private/no_data_page @elastic/appex-sharedux +src/platform/plugins/private/presentation_panel @elastic/kibana-presentation +src/platform/plugins/private/url_forwarding @elastic/kibana-visualizations +src/platform/plugins/private/vis_default_editor @elastic/kibana-visualizations +src/platform/plugins/private/vis_type_markdown @elastic/kibana-presentation +src/platform/plugins/private/vis_types/gauge @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/heatmap @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/metric @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/pie @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/table @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/tagcloud @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/timelion @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/vega @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/vislib @elastic/kibana-visualizations +src/platform/plugins/private/vis_types/xy @elastic/kibana-visualizations +src/platform/plugins/shared/ai_assistant_management/selection @elastic/obs-ai-assistant +src/platform/plugins/shared/bfetch @elastic/appex-sharedux +src/platform/plugins/shared/chart_expressions/expression_gauge @elastic/kibana-visualizations +src/platform/plugins/shared/chart_expressions/expression_heatmap @elastic/kibana-visualizations +src/platform/plugins/shared/chart_expressions/expression_legacy_metric @elastic/kibana-visualizations +src/platform/plugins/shared/chart_expressions/expression_metric @elastic/kibana-visualizations +src/platform/plugins/shared/chart_expressions/expression_partition_vis @elastic/kibana-visualizations +src/platform/plugins/shared/chart_expressions/expression_tagcloud @elastic/kibana-visualizations +src/platform/plugins/shared/chart_expressions/expression_xy @elastic/kibana-visualizations +src/platform/plugins/shared/charts @elastic/kibana-visualizations +src/platform/plugins/shared/console @elastic/kibana-management +src/platform/plugins/shared/content_management @elastic/appex-sharedux +src/platform/plugins/shared/controls @elastic/kibana-presentation +src/platform/plugins/shared/custom_integrations @elastic/fleet +src/platform/plugins/shared/dashboard @elastic/kibana-presentation +src/platform/plugins/shared/data @elastic/kibana-visualizations @elastic/kibana-data-discovery +src/platform/plugins/shared/data_view_editor @elastic/kibana-data-discovery +src/platform/plugins/shared/data_view_field_editor @elastic/kibana-data-discovery +src/platform/plugins/shared/data_view_management @elastic/kibana-data-discovery +src/platform/plugins/shared/data_views @elastic/kibana-data-discovery +src/platform/plugins/shared/dev_tools @elastic/kibana-management +src/platform/plugins/shared/discover @elastic/kibana-data-discovery +src/platform/plugins/shared/discover_shared @elastic/kibana-data-discovery @elastic/obs-ux-logs-team +src/platform/plugins/shared/embeddable @elastic/kibana-presentation +src/platform/plugins/shared/es_ui_shared @elastic/kibana-management +src/platform/plugins/shared/esql @elastic/kibana-esql +src/platform/plugins/shared/esql_datagrid @elastic/kibana-esql +src/platform/plugins/shared/expression_error @elastic/kibana-presentation +src/platform/plugins/shared/expression_image @elastic/kibana-presentation +src/platform/plugins/shared/expression_metric @elastic/kibana-presentation +src/platform/plugins/shared/expression_repeat_image @elastic/kibana-presentation +src/platform/plugins/shared/expression_reveal_image @elastic/kibana-presentation +src/platform/plugins/shared/expression_shape @elastic/kibana-presentation +src/platform/plugins/shared/expressions @elastic/kibana-visualizations +src/platform/plugins/shared/field_formats @elastic/kibana-data-discovery +src/platform/plugins/shared/files @elastic/appex-sharedux +src/platform/plugins/shared/guided_onboarding @elastic/appex-sharedux +src/platform/plugins/shared/home @elastic/appex-sharedux +src/platform/plugins/shared/inspector @elastic/kibana-presentation +src/platform/plugins/shared/kibana_react @elastic/appex-sharedux +src/platform/plugins/shared/kibana_utils @elastic/appex-sharedux +src/platform/plugins/shared/management @elastic/kibana-management +src/platform/plugins/shared/navigation @elastic/appex-sharedux +src/platform/plugins/shared/newsfeed @elastic/kibana-core +src/platform/plugins/shared/presentation_util @elastic/kibana-presentation +src/platform/plugins/shared/saved_objects @elastic/appex-sharedux +src/platform/plugins/shared/saved_objects_finder @elastic/kibana-data-discovery +src/platform/plugins/shared/saved_objects_management @elastic/kibana-core +src/platform/plugins/shared/saved_objects_tagging_oss @elastic/appex-sharedux +src/platform/plugins/shared/saved_search @elastic/kibana-data-discovery +src/platform/plugins/shared/screenshot_mode @elastic/appex-sharedux +src/platform/plugins/shared/share @elastic/appex-sharedux +src/platform/plugins/shared/telemetry @elastic/kibana-core +src/platform/plugins/shared/telemetry_collection_manager @elastic/kibana-core +src/platform/plugins/shared/telemetry_management_section @elastic/kibana-core +src/platform/plugins/shared/ui_actions @elastic/appex-sharedux +src/platform/plugins/shared/ui_actions_enhanced @elastic/appex-sharedux +src/platform/plugins/shared/unified_doc_viewer @elastic/kibana-data-discovery +src/platform/plugins/shared/unified_histogram @elastic/kibana-data-discovery +src/platform/plugins/shared/unified_search @elastic/kibana-visualizations +src/platform/plugins/shared/usage_collection @elastic/kibana-core +src/platform/plugins/shared/vis_types/timeseries @elastic/kibana-visualizations +src/platform/plugins/shared/visualizations @elastic/kibana-visualizations +x-pack/platform/packages/private/kbn-alerting-state-types @elastic/response-ops +x-pack/platform/packages/private/kbn-infra-forge @elastic/obs-ux-management-team +x-pack/platform/packages/private/kbn-random-sampling @elastic/kibana-visualizations +x-pack/platform/packages/private/maps/vector_tile_utils @elastic/kibana-presentation +x-pack/platform/packages/private/ml/agg_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/aiops_change_point_detection @elastic/ml-ui +x-pack/platform/packages/private/ml/aiops_components @elastic/ml-ui +x-pack/platform/packages/private/ml/aiops_test_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/cancellable_search @elastic/ml-ui +x-pack/platform/packages/private/ml/category_validator @elastic/ml-ui +x-pack/platform/packages/private/ml/creation_wizard_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/data_frame_analytics_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/data_grid @elastic/ml-ui +x-pack/platform/packages/private/ml/data_view_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/date_picker @elastic/ml-ui +x-pack/platform/packages/private/ml/date_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/field_stats_flyout @elastic/ml-ui +x-pack/platform/packages/private/ml/in_memory_table @elastic/ml-ui +x-pack/platform/packages/private/ml/inference_integration_flyout @elastic/ml-ui +x-pack/platform/packages/private/ml/is_defined @elastic/ml-ui +x-pack/platform/packages/private/ml/is_populated_object @elastic/ml-ui +x-pack/platform/packages/private/ml/json_schemas @elastic/ml-ui +x-pack/platform/packages/private/ml/kibana_theme @elastic/ml-ui +x-pack/platform/packages/private/ml/local_storage @elastic/ml-ui +x-pack/platform/packages/private/ml/nested_property @elastic/ml-ui +x-pack/platform/packages/private/ml/number_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/parse_interval @elastic/ml-ui +x-pack/platform/packages/private/ml/query_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/route_utils @elastic/ml-ui +x-pack/platform/packages/private/ml/string_hash @elastic/ml-ui +x-pack/platform/packages/private/ml/time_buckets @elastic/ml-ui +x-pack/platform/packages/private/ml/ui_actions @elastic/ml-ui +x-pack/platform/packages/private/ml/url_state @elastic/ml-ui +x-pack/platform/packages/private/ml/validators @elastic/ml-ui +x-pack/platform/packages/private/rollup @elastic/kibana-management +x-pack/platform/packages/private/security/authorization_core @elastic/kibana-security +x-pack/platform/packages/private/security/authorization_core_common @elastic/kibana-security +x-pack/platform/packages/private/security/role_management_model @elastic/kibana-security +x-pack/platform/packages/private/security/ui_components @elastic/kibana-security +x-pack/platform/packages/shared/ai-infra/inference-common @elastic/appex-ai-infra +x-pack/platform/packages/shared/ai-infra/product-doc-common @elastic/appex-ai-infra +x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared @elastic/kibana-management +x-pack/platform/packages/shared/index-management/index_management_shared_types @elastic/kibana-management +x-pack/platform/packages/shared/kbn-ai-assistant @elastic/search-kibana +x-pack/platform/packages/shared/kbn-ai-assistant-common @elastic/search-kibana +x-pack/platform/packages/shared/kbn-alerting-comparators @elastic/response-ops +x-pack/platform/packages/shared/kbn-cloud-security-posture/common @elastic/kibana-cloud-security-posture +x-pack/platform/packages/shared/kbn-data-forge @elastic/obs-ux-management-team +x-pack/platform/packages/shared/kbn-elastic-assistant @elastic/security-generative-ai +x-pack/platform/packages/shared/kbn-elastic-assistant-common @elastic/security-generative-ai +x-pack/platform/packages/shared/kbn-entities-schema @elastic/obs-entities +x-pack/platform/packages/shared/kbn-langchain @elastic/security-generative-ai +x-pack/platform/packages/shared/kbn-slo-schema @elastic/obs-ux-management-team +x-pack/platform/packages/shared/ml/aiops_common @elastic/ml-ui +x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis @elastic/ml-ui +x-pack/platform/packages/shared/ml/aiops_log_rate_analysis @elastic/ml-ui +x-pack/platform/packages/shared/ml/anomaly_utils @elastic/ml-ui +x-pack/platform/packages/shared/ml/chi2test @elastic/ml-ui +x-pack/platform/packages/shared/ml/error_utils @elastic/ml-ui +x-pack/platform/packages/shared/ml/random_sampler_utils @elastic/ml-ui +x-pack/platform/packages/shared/ml/response_stream @elastic/ml-ui +x-pack/platform/packages/shared/ml/runtime_field_utils @elastic/ml-ui +x-pack/platform/packages/shared/ml/trained_models_utils @elastic/ml-ui +x-pack/platform/packages/shared/observability/alerting_rule_utils @elastic/obs-ux-management-team +x-pack/platform/packages/shared/security/api_key_management @elastic/kibana-security +x-pack/platform/packages/shared/security/form_components @elastic/kibana-security +x-pack/platform/packages/shared/security/plugin_types_common @elastic/kibana-security +x-pack/platform/packages/shared/security/plugin_types_public @elastic/kibana-security +x-pack/platform/packages/shared/security/plugin_types_server @elastic/kibana-security +x-pack/platform/plugins/private/banners @elastic/appex-sharedux +x-pack/platform/plugins/private/canvas @elastic/kibana-presentation +x-pack/platform/plugins/private/cloud_integrations/cloud_chat @elastic/kibana-core +x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration @elastic/kibana-management +x-pack/platform/plugins/private/cloud_integrations/cloud_full_story @elastic/kibana-core +x-pack/platform/plugins/private/cloud_integrations/cloud_links @elastic/kibana-core +x-pack/platform/plugins/private/cross_cluster_replication @elastic/kibana-management +x-pack/platform/plugins/private/custom_branding @elastic/appex-sharedux +x-pack/platform/plugins/private/data_usage @elastic/obs-ai-assistant @elastic/security-solution +x-pack/platform/plugins/private/data_visualizer @elastic/ml-ui +x-pack/platform/plugins/private/discover_enhanced @elastic/kibana-data-discovery +x-pack/platform/plugins/private/drilldowns/url_drilldown @elastic/appex-sharedux +x-pack/platform/plugins/private/file_upload @elastic/kibana-presentation @elastic/ml-ui +x-pack/platform/plugins/private/global_search_bar @elastic/appex-sharedux +x-pack/platform/plugins/private/global_search_providers @elastic/appex-sharedux +x-pack/platform/plugins/private/graph @elastic/kibana-visualizations +x-pack/platform/plugins/private/grokdebugger @elastic/kibana-management +x-pack/platform/plugins/private/index_lifecycle_management @elastic/kibana-management +x-pack/platform/plugins/private/license_api_guard @elastic/kibana-management +x-pack/platform/plugins/private/logstash @elastic/logstash +x-pack/platform/plugins/private/monitoring @elastic/stack-monitoring +x-pack/platform/plugins/private/monitoring_collection @elastic/stack-monitoring +x-pack/platform/plugins/private/painless_lab @elastic/kibana-management +x-pack/platform/plugins/private/remote_clusters @elastic/kibana-management +x-pack/platform/plugins/private/reporting @elastic/appex-sharedux +x-pack/platform/plugins/private/rollup @elastic/kibana-management +x-pack/platform/plugins/private/runtime_fields @elastic/kibana-management +x-pack/platform/plugins/private/saved_objects_tagging @elastic/appex-sharedux +x-pack/platform/plugins/private/snapshot_restore @elastic/kibana-management +x-pack/platform/plugins/private/telemetry_collection_xpack @elastic/kibana-core +x-pack/platform/plugins/private/transform @elastic/ml-ui +x-pack/platform/plugins/private/upgrade_assistant @elastic/kibana-core +x-pack/platform/plugins/private/watcher @elastic/kibana-management +x-pack/platform/plugins/shared/actions @elastic/response-ops +x-pack/platform/plugins/shared/ai_infra/llm_tasks @elastic/appex-ai-infra +x-pack/platform/plugins/shared/ai_infra/product_doc_base @elastic/appex-ai-infra +x-pack/platform/plugins/shared/aiops @elastic/ml-ui +x-pack/platform/plugins/shared/alerting @elastic/response-ops +x-pack/platform/plugins/shared/cases @elastic/response-ops +x-pack/platform/plugins/shared/cloud @elastic/kibana-core +x-pack/platform/plugins/shared/cloud_integrations/cloud_experiments @elastic/kibana-core +x-pack/platform/plugins/shared/dashboard_enhanced @elastic/kibana-presentation +x-pack/platform/plugins/shared/embeddable_enhanced @elastic/kibana-presentation +x-pack/platform/plugins/shared/encrypted_saved_objects @elastic/kibana-security +x-pack/platform/plugins/shared/entity_manager @elastic/obs-entities +x-pack/platform/plugins/shared/event_log @elastic/response-ops +x-pack/platform/plugins/shared/features @elastic/kibana-core +x-pack/platform/plugins/shared/fields_metadata @elastic/obs-ux-logs-team +x-pack/platform/plugins/shared/fleet @elastic/fleet +x-pack/platform/plugins/shared/global_search @elastic/appex-sharedux +x-pack/platform/plugins/shared/index_management @elastic/kibana-management +x-pack/platform/plugins/shared/inference @elastic/appex-ai-infra +x-pack/platform/plugins/shared/ingest_pipelines @elastic/kibana-management +x-pack/platform/plugins/shared/integration_assistant @elastic/security-scalability +x-pack/platform/plugins/shared/lens @elastic/kibana-visualizations +x-pack/platform/plugins/shared/license_management @elastic/kibana-management +x-pack/platform/plugins/shared/licensing @elastic/kibana-core +x-pack/platform/plugins/shared/maps @elastic/kibana-presentation +x-pack/platform/plugins/shared/ml @elastic/ml-ui +x-pack/platform/plugins/shared/notifications @elastic/appex-sharedux +x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant @elastic/obs-ai-assistant +x-pack/platform/plugins/shared/osquery @elastic/security-defend-workflows +x-pack/platform/plugins/shared/rule_registry @elastic/response-ops @elastic/obs-ux-management-team +x-pack/platform/plugins/shared/screenshotting @elastic/kibana-reporting-services +x-pack/platform/plugins/shared/searchprofiler @elastic/kibana-management +x-pack/platform/plugins/shared/security @elastic/kibana-security +x-pack/platform/plugins/shared/serverless @elastic/appex-sharedux +x-pack/platform/plugins/shared/spaces @elastic/kibana-security +x-pack/platform/plugins/shared/stack_alerts @elastic/response-ops +x-pack/platform/plugins/shared/stack_connectors @elastic/response-ops +x-pack/platform/plugins/shared/task_manager @elastic/response-ops +x-pack/platform/plugins/shared/triggers_actions_ui @elastic/response-ops +x-pack/solutions/observability/packages/alert_details @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/alerting_test_data @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/get_padded_alert_time_range_util @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/kbn-alerts-grouping @elastic/response-ops +x-pack/solutions/observability/packages/kbn-apm-types @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/packages/kbn-custom-integrations @elastic/obs-ux-logs-team +x-pack/solutions/observability/packages/kbn-investigation-shared @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/kbn-timerange @elastic/obs-ux-logs-team +x-pack/solutions/observability/packages/kbn-xstate-utils @elastic/obs-ux-logs-team +x-pack/solutions/observability/packages/logs_overview @elastic/obs-ux-logs-team +x-pack/solutions/observability/packages/observability_ai/observability_ai_common @elastic/obs-ai-assistant +x-pack/solutions/observability/packages/observability_ai/observability_ai_server @elastic/obs-ai-assistant +x-pack/solutions/observability/packages/observability_utils/observability_utils_browser @elastic/observability-ui +x-pack/solutions/observability/packages/observability_utils/observability_utils_common @elastic/observability-ui +x-pack/solutions/observability/packages/observability_utils/observability_utils_server @elastic/observability-ui +x-pack/solutions/observability/packages/synthetics_test_data @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/apm @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/plugins/apm_data_access @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/plugins/data_quality @elastic/obs-ux-logs-team +x-pack/solutions/observability/plugins/dataset_quality @elastic/obs-ux-logs-team +x-pack/solutions/observability/plugins/entities_data_access @elastic/obs-entities +x-pack/solutions/observability/plugins/entity_manager_app @elastic/obs-entities +x-pack/solutions/observability/plugins/exploratory_view @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/infra @elastic/obs-ux-logs-team @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/plugins/inventory @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/plugins/investigate @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/investigate_app @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/logs_explorer @elastic/obs-ux-logs-team +x-pack/solutions/observability/plugins/metrics_data_access @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/plugins/observability @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/observability_ai_assistant_app @elastic/obs-ai-assistant +x-pack/solutions/observability/plugins/observability_ai_assistant_management @elastic/obs-ai-assistant +x-pack/solutions/observability/plugins/observability_logs_explorer @elastic/obs-ux-logs-team +x-pack/solutions/observability/plugins/observability_onboarding @elastic/obs-ux-logs-team @elastic/obs-ux-onboarding-team +x-pack/solutions/observability/plugins/observability_shared @elastic/observability-ui +x-pack/solutions/observability/plugins/profiling @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/plugins/profiling_data_access @elastic/obs-ux-infra_services-team +x-pack/solutions/observability/plugins/serverless_observability @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/slo @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/streams @elastic/streams-program-team +x-pack/solutions/observability/plugins/streams_app @elastic/streams-program-team +x-pack/solutions/observability/plugins/synthetics @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/uptime @elastic/obs-ux-management-team +x-pack/solutions/observability/plugins/ux @elastic/obs-ux-infra_services-team +x-pack/solutions/search/packages/kbn-ipynb @elastic/search-kibana +x-pack/solutions/search/packages/kbn-search-api-keys-components @elastic/search-kibana +x-pack/solutions/search/packages/kbn-search-api-keys-server @elastic/search-kibana +x-pack/solutions/search/packages/kbn-search-index-documents @elastic/search-kibana +x-pack/solutions/search/packages/search/shared_ui @elastic/search-kibana +x-pack/solutions/search/plugins/enterprise_search @elastic/search-kibana +x-pack/solutions/search/plugins/search_assistant @elastic/search-kibana +x-pack/solutions/search/plugins/search_connectors @elastic/search-kibana +x-pack/solutions/search/plugins/search_homepage @elastic/search-kibana +x-pack/solutions/search/plugins/search_indices @elastic/search-kibana +x-pack/solutions/search/plugins/search_inference_endpoints @elastic/search-kibana +x-pack/solutions/search/plugins/search_notebooks @elastic/search-kibana +x-pack/solutions/search/plugins/search_playground @elastic/search-kibana +x-pack/solutions/search/plugins/search_solution/search_navigation @elastic/search-kibana +x-pack/solutions/search/plugins/serverless_search @elastic/search-kibana +x-pack/solutions/security/packages/data_table @elastic/security-threat-hunting-investigations +x-pack/solutions/security/packages/distribution_bar @elastic/kibana-cloud-security-posture +x-pack/solutions/security/packages/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/features @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/kbn-cloud-security-posture/graph @elastic/kibana-cloud-security-posture +x-pack/solutions/security/packages/kbn-cloud-security-posture/public @elastic/kibana-cloud-security-posture +x-pack/solutions/security/packages/data-stream-adapter @elastic/security-threat-hunting +x-pack/solutions/security/packages/expandable-flyout @elastic/security-threat-hunting-investigations +x-pack/solutions/security/packages/index-adapter @elastic/security-threat-hunting +x-pack/solutions/security/packages/kbn-securitysolution-autocomplete @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-endpoint-exceptions-common @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-exception-list-components @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-exceptions-common @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-hook-utils @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-io-ts-alerting-types @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-io-ts-list-types @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-list-api @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-list-constants @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-list-hooks @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-list-utils @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-lists-common @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-t-grid @elastic/security-detection-engine +x-pack/solutions/security/packages/kbn-securitysolution-utils @elastic/security-detection-engine +x-pack/solutions/security/packages/navigation @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/side_nav @elastic/security-threat-hunting-explore +x-pack/solutions/security/packages/upselling @elastic/security-threat-hunting-explore +x-pack/solutions/security/plugins/asset_inventory @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/cloud_defend @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/cloud_security_posture @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore +x-pack/solutions/security/plugins/elastic_assistant @elastic/security-generative-ai +x-pack/solutions/security/plugins/kubernetes_security @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/lists @elastic/security-detection-engine +x-pack/solutions/security/plugins/security_solution @elastic/security-solution +x-pack/solutions/security/plugins/security_solution_ess @elastic/security-solution +x-pack/solutions/security/plugins/security_solution_serverless @elastic/security-solution +x-pack/solutions/security/plugins/session_view @elastic/kibana-cloud-security-posture +x-pack/solutions/security/plugins/threat_intelligence @elastic/security-threat-hunting-investigations +x-pack/solutions/security/plugins/timelines @elastic/security-threat-hunting-investigations + #### ## These rules are always last so they take ultimate priority over everything else #### diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml index e7120dc82fd7d..b8fcb71c67a06 100644 --- a/.github/codeql/codeql-config.yml +++ b/.github/codeql/codeql-config.yml @@ -75,15 +75,15 @@ paths-ignore: - test - x-pack/plugins/canvas/scripts - x-pack/plugins/cloud_security_posture/common/scripts - - x-pack/plugins/elastic_assistant/scripts + - x-pack/solutions/security/plugins/elastic_assistant/scripts - x-pack/plugins/event_log/scripts - x-pack/plugins/fleet/scripts - x-pack/plugins/lists/scripts - x-pack/plugins/lists/server/scripts - x-pack/plugins/observability_solution/*/scripts - - x-pack/plugins/osquery/scripts + - x-pack/platform/plugins/shared/osquery/scripts - x-pack/plugins/rule_registry/scripts - x-pack/plugins/security_solution/scripts - - x-pack/plugins/threat_intelligence/scripts + - x-pack/solutions/security/plugins/threat_intelligence/scripts - x-pack/scripts - x-pack/test diff --git a/.github/paths-labeller.yml b/.github/paths-labeller.yml index dbbefda24c9ac..43e9445b5767b 100644 --- a/.github/paths-labeller.yml +++ b/.github/paths-labeller.yml @@ -14,23 +14,23 @@ - 'packages/kbn-apm-synthtrace/**/*.*' - 'packages/kbn-apm-synthtrace-client/**/*.*' - 'packages/kbn-apm-utils/**/*.*' - - 'x-pack/plugins/observability_solution/ux/**/*.*' + - 'x-pack/solutions/observability/plugins/ux/**/*.*' - 'Team:Fleet': - 'x-pack/plugins/fleet/**/*.*' - 'x-pack/test/fleet_api_integration/**/*.*' - 'Team:obs-ux-management': - - 'x-pack/plugins/observability_solution/observability/**/*.*' + - 'x-pack/solutions/observability/plugins/observability/**/*.*' - 'x-pack/plugins/observability_solution/slo/**/*.*' - - 'x-pack/plugins/observability_solution/synthetics/**/*.*' - - 'x-pack/plugins/observability_solution/exploratory_view/**/*.*' + - 'x-pack/solutions/observability/plugins/synthetics/**/*.*' + - 'x-pack/solutions/observability/plugins/exploratory_view/**/*.*' - 'Team:Obs AI Assistant': - - 'x-pack/plugins/observability_solution/observability_ai_assistant/**/*.*' + - 'x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/**/*.*' - 'x-pack/plugins/observability_solution/observability_ai_assistant_*/**/*.*' - 'x-pack/test/observability_ai_assistant_api_integration/**/*.*' - 'x-pack/test/observability_ai_assistant_functional/**/*.*' - 'ci:project-deploy-observability': - 'packages/kbn-apm-*/**/*.*' - 'x-pack/plugins/observability_solution/**/*.*' - - 'x-pack/plugins/serverless_observability/**/*.*' + - 'x-pack/solutions/observability/plugins/serverless_observability/**/*.*' - 'x-pack/test/apm_api_integration/**/*.*' - 'x-pack/test/observability_*/**/*.*' diff --git a/.gitignore b/.gitignore index be8d495f95f1d..fa77bd6f44919 100644 --- a/.gitignore +++ b/.gitignore @@ -98,8 +98,8 @@ npm-debug.log* # transpiled cypress config x-pack/plugins/fleet/cypress.config.d.ts x-pack/plugins/fleet/cypress.config.js -x-pack/plugins/osquery/cypress.config.d.ts -x-pack/plugins/osquery/cypress.config.js +x-pack/platform/plugins/shared/osquery/cypress.config.d.ts +x-pack/platform/plugins/shared/osquery/cypress.config.js x-pack/plugins/enterprise_search/cypress.config.d.ts x-pack/plugins/enterprise_search/cypress.config.js x-pack/plugins/security_solution/public/management/cypress.config.d.ts diff --git a/.i18nrc.json b/.i18nrc.json index c11b622291838..1ef582708b2cd 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -1,19 +1,19 @@ { "paths": { "advancedSettings": "src/plugins/advanced_settings", - "aiAssistantManagementSelection": "src/plugins/ai_assistant_management/selection", + "aiAssistantManagementSelection": "src/platform/plugins/shared/ai_assistant_management/selection", "alerts": "packages/kbn-alerts/src", "alertsUIShared": "packages/kbn-alerts-ui-shared/src", "alertingTypes": "packages/kbn-alerting-types", "apmOss": "src/plugins/apm_oss", "autocomplete": "packages/kbn-securitysolution-autocomplete/src", - "avcBanner": "packages/kbn-avc-banner/src", + "avcBanner": "src/platform/packages/shared/kbn-avc-banner/src", "bfetch": "src/plugins/bfetch", "bfetchError": "packages/kbn-bfetch-error", "cases": ["packages/kbn-cases-components"], - "cellActions": "packages/kbn-cell-actions", + "cellActions": "src/platform/packages/shared/kbn-cell-actions", "charts": "src/plugins/charts", - "console": "src/plugins/console", + "console": "src/platform/plugins/shared/console", "contentManagement": "packages/content-management", "core": ["src/core", "packages/core"], "customIntegrations": "src/plugins/custom_integrations", @@ -23,13 +23,13 @@ "domDragDrop": "packages/kbn-dom-drag-drop", "controls": "src/plugins/controls", "data": "src/plugins/data", - "observabilityAlertDetails": "x-pack/packages/observability/alert_details", + "observabilityAlertDetails": "x-pack/solutions/observability/packages/alert_details", "dataViews": "src/plugins/data_views", "defaultNavigation": [ "packages/default-nav", "src/platform/packages/private/default-nav" ], - "devTools": "src/plugins/dev_tools", + "devTools": "src/platform/plugins/shared/dev_tools", "discover": ["src/plugins/discover", "packages/kbn-discover-utils", "packages/kbn-discover-contextual-components"], "savedSearch": "src/plugins/saved_search", "embeddableApi": "src/plugins/embeddable", @@ -37,7 +37,7 @@ "embeddableExamples": "examples/embeddable_examples", "esQuery": "packages/kbn-es-query/src", "kbnGridLayout": "packages/kbn-grid-layout", - "esUi": "src/plugins/es_ui_shared", + "esUi": "src/platform/plugins/shared/es_ui_shared", "expandableFlyout": "packages/kbn-expandable-flyout", "expressionError": "src/plugins/expression_error", "expressionGauge": "src/plugins/chart_expressions/expression_gauge", @@ -90,8 +90,9 @@ "lists": "packages/kbn-securitysolution-list-utils/src", "exceptionList-components": "packages/kbn-securitysolution-exception-list-components/src", "management": [ - "src/legacy/core_plugins/management", - "src/plugins/management", + "src/platform/plugins/shared/management", + "src/platform/packages/private/kbn-management", + "src/platform/packages/shared/kbn-management", "packages/kbn-management" ], "monaco": "packages/kbn-monaco/src", @@ -118,9 +119,9 @@ "searchIndexDocuments": "packages/kbn-search-index-documents", "searchResponseWarnings": "packages/kbn-search-response-warnings", "searchTypes": "packages/kbn-search-types", - "securitySolutionPackages": "x-pack/packages/security-solution", + "securitySolutionPackages": "x-pack/solutions/security/packages", "serverlessPackages": "packages/serverless", - "sse": ["packages/kbn-sse-utils"], + "sse": ["src/platform/packages/shared/kbn-sse-utils"], "coloring": "packages/kbn-coloring/src", "languageDocumentation": "src/platform/packages/private/kbn-language-documentation/src", "esql": "src/platform/plugins/shared/esql", @@ -156,7 +157,7 @@ "unifiedHistogram": "src/plugins/unified_histogram", "unifiedDataTable": "packages/kbn-unified-data-table", "unsavedChangesBadge": "packages/kbn-unsaved-changes-badge", - "unsavedChangesPrompt": "packages/kbn-unsaved-changes-prompt", + "unsavedChangesPrompt": "src/platform/packages/shared/kbn-unsaved-changes-prompt", "managedContentBadge": "packages/kbn-managed-content-badge", "responseOpsRuleForm": "packages/response-ops/rule_form" }, diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index e6073f0076059..bf3aefa5e69a9 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 997ee6a63ef41..d0f06638421ec 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.devdocs.json b/api_docs/ai_assistant_management_selection.devdocs.json index c7233a2b94ecd..5740a2b25fb0e 100644 --- a/api_docs/ai_assistant_management_selection.devdocs.json +++ b/api_docs/ai_assistant_management_selection.devdocs.json @@ -12,7 +12,7 @@ "tags": [], "label": "AIAssistantType", "description": [], - "path": "src/plugins/ai_assistant_management/selection/common/ai_assistant_type.ts", + "path": "src/platform/plugins/shared/ai_assistant_management/selection/common/ai_assistant_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -27,7 +27,7 @@ "tags": [], "label": "AIAssistantManagementSelectionPluginPublicSetup", "description": [], - "path": "src/plugins/ai_assistant_management/selection/public/plugin.ts", + "path": "src/platform/plugins/shared/ai_assistant_management/selection/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -41,7 +41,7 @@ "tags": [], "label": "AIAssistantManagementSelectionPluginPublicStart", "description": [], - "path": "src/plugins/ai_assistant_management/selection/public/plugin.ts", + "path": "src/platform/plugins/shared/ai_assistant_management/selection/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -58,7 +58,7 @@ "AIAssistantType", ">" ], - "path": "src/plugins/ai_assistant_management/selection/public/plugin.ts", + "path": "src/platform/plugins/shared/ai_assistant_management/selection/public/plugin.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index c4ad90deeffb8..339980cafe2f3 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index e6b8e7795ce88..134a9c9527a9e 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index ef112becf2f55..6b71d5c7a96cb 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index e503010b398a5..a769902f870a0 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 14883b4493db7..89bbbac1ef288 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_inventory.mdx b/api_docs/asset_inventory.mdx index 819e37b1619c6..c390a2672f546 100644 --- a/api_docs/asset_inventory.mdx +++ b/api_docs/asset_inventory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetInventory title: "assetInventory" image: https://source.unsplash.com/400x175/?github description: API docs for the assetInventory plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetInventory'] --- import assetInventoryObj from './asset_inventory.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 5c291cd78b05b..a212de487e774 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index ac5e1f981534b..a268b9ae5783f 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 91afdb4e2bb2d..01f3b91fc30d6 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 8499d2f7a715f..e0a7fd7613a50 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.devdocs.json b/api_docs/charts.devdocs.json index 4fdf943a868f4..0e9adb3e303c7 100644 --- a/api_docs/charts.devdocs.json +++ b/api_docs/charts.devdocs.json @@ -153,6 +153,71 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "charts", + "id": "def-public.decreaseOpacity", + "type": "Function", + "tags": [], + "label": "decreaseOpacity", + "description": [ + "\nReduces color opacity, by mixing color with background color.\n\nThis is used when the resulting color needs to be opaque (i.e. alpha of 1)." + ], + "signature": [ + "(baseColor: string, step: number, totalSteps: number) => string" + ], + "path": "src/plugins/charts/public/services/palettes/decrease_opacity.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "charts", + "id": "def-public.decreaseOpacity.$1", + "type": "string", + "tags": [], + "label": "baseColor", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/charts/public/services/palettes/decrease_opacity.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "charts", + "id": "def-public.decreaseOpacity.$2", + "type": "number", + "tags": [], + "label": "step", + "description": [], + "signature": [ + "number" + ], + "path": "src/plugins/charts/public/services/palettes/decrease_opacity.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "charts", + "id": "def-public.decreaseOpacity.$3", + "type": "number", + "tags": [], + "label": "totalSteps", + "description": [], + "signature": [ + "number" + ], + "path": "src/plugins/charts/public/services/palettes/decrease_opacity.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "charts", "id": "def-public.EmptyPlaceholder", diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index edee4b592c729..17b7317258f9c 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 267 | 2 | 252 | 9 | +| 271 | 2 | 255 | 9 | ## Client diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 7ed607fc34070..fd5ca29ce0b21 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.devdocs.json b/api_docs/cloud_data_migration.devdocs.json index 752512ce7b863..c487bbdb05b6a 100644 --- a/api_docs/cloud_data_migration.devdocs.json +++ b/api_docs/cloud_data_migration.devdocs.json @@ -11,7 +11,7 @@ "tags": [], "label": "CloudDataMigrationPluginSetup", "description": [], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -31,7 +31,7 @@ "text": "CloudSetup" } ], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -51,7 +51,7 @@ "text": "ManagementSetup" } ], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -65,7 +65,7 @@ "signature": [ "BreadcrumbService" ], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -79,7 +79,7 @@ "tags": [], "label": "CloudDataMigrationPluginStart", "description": [], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -100,7 +100,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -136,7 +136,7 @@ "signature": [ "\"migrate_data\"" ], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/common/index.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -148,7 +148,7 @@ "tags": [], "label": "PLUGIN_NAME", "description": [], - "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/common/index.ts", + "path": "x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index ee698cda129af..20fc96a85d161 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index f34a611a7c225..e5d709a3c4fb3 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 63a2c567ea784..76d2585a73606 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.devdocs.json b/api_docs/console.devdocs.json index f4330cd610315..f5b206f036206 100644 --- a/api_docs/console.devdocs.json +++ b/api_docs/console.devdocs.json @@ -51,7 +51,7 @@ }, ", object>" ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -65,7 +65,7 @@ "signature": [ "any" ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -86,7 +86,7 @@ }, "" ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -127,7 +127,7 @@ "text": "ConsolePluginSetup" } ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -148,7 +148,7 @@ }, "" ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -169,7 +169,7 @@ "text": "AppSetupUIPluginDependencies" } ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -210,7 +210,7 @@ "text": "ConsolePluginStart" } ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -230,7 +230,7 @@ "text": "CoreStart" } ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -251,7 +251,7 @@ "text": "AppStartUIPluginDependencies" } ], - "path": "src/plugins/console/public/plugin.ts", + "path": "src/platform/plugins/shared/console/public/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -272,7 +272,7 @@ "tags": [], "label": "AppSetupUIPluginDependencies", "description": [], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -293,7 +293,7 @@ }, " | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false }, @@ -313,7 +313,7 @@ "text": "DevToolsSetup" } ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false }, @@ -361,7 +361,7 @@ }, ") => void; }" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false }, @@ -382,7 +382,7 @@ }, " | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false } @@ -396,7 +396,7 @@ "tags": [], "label": "AppStartUIPluginDependencies", "description": [], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -417,7 +417,7 @@ }, " | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false }, @@ -457,7 +457,7 @@ }, ">): void; }" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false }, @@ -478,7 +478,7 @@ }, " | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false } @@ -509,7 +509,7 @@ "text": "SerializableRecord" } ], - "path": "src/plugins/console/public/types/locator.ts", + "path": "src/platform/plugins/shared/console/public/types/locator.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -523,7 +523,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/console/public/types/locator.ts", + "path": "src/platform/plugins/shared/console/public/types/locator.ts", "deprecated": false, "trackAdoption": false } @@ -537,7 +537,7 @@ "tags": [], "label": "EmbeddedConsoleView", "description": [], - "path": "src/plugins/console/public/types/embeddable_console.ts", + "path": "src/platform/plugins/shared/console/public/types/embeddable_console.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -567,7 +567,7 @@ }, ">" ], - "path": "src/plugins/console/public/types/embeddable_console.ts", + "path": "src/platform/plugins/shared/console/public/types/embeddable_console.ts", "deprecated": false, "trackAdoption": false }, @@ -581,7 +581,7 @@ "signature": [ "React.ComponentClass<{}, any> | React.FunctionComponent<{}>" ], - "path": "src/plugins/console/public/types/embeddable_console.ts", + "path": "src/platform/plugins/shared/console/public/types/embeddable_console.ts", "deprecated": false, "trackAdoption": false } @@ -595,7 +595,7 @@ "tags": [], "label": "EmbeddedConsoleViewButtonProps", "description": [], - "path": "src/plugins/console/public/types/embeddable_console.ts", + "path": "src/platform/plugins/shared/console/public/types/embeddable_console.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -606,7 +606,7 @@ "tags": [], "label": "activeView", "description": [], - "path": "src/plugins/console/public/types/embeddable_console.ts", + "path": "src/platform/plugins/shared/console/public/types/embeddable_console.ts", "deprecated": false, "trackAdoption": false }, @@ -620,7 +620,7 @@ "signature": [ "(event: React.MouseEvent) => void" ], - "path": "src/plugins/console/public/types/embeddable_console.ts", + "path": "src/platform/plugins/shared/console/public/types/embeddable_console.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -657,7 +657,7 @@ "description": [ "\nConsole plugin's setup service object" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -688,7 +688,7 @@ }, "> | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false } @@ -705,7 +705,7 @@ "description": [ "\nConsole plugin's start service object" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -721,7 +721,7 @@ "signature": [ "(() => boolean) | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -739,7 +739,7 @@ "signature": [ "((content?: string | undefined) => void) | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -753,7 +753,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -773,7 +773,7 @@ "signature": [ "(() => void) | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -791,7 +791,7 @@ "signature": [ "React.FC<{}> | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false }, @@ -815,7 +815,7 @@ }, " | null) => void) | undefined" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -836,7 +836,7 @@ }, " | null" ], - "path": "src/plugins/console/public/types/plugin_dependencies.ts", + "path": "src/platform/plugins/shared/console/public/types/plugin_dependencies.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -866,7 +866,7 @@ "signature": [ "void" ], - "path": "src/plugins/console/server/types.ts", + "path": "src/platform/plugins/shared/console/server/types.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "start", diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 72d4a88a1e654..cfa08285f9085 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index 8029dbb584f45..183d10c258306 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.devdocs.json b/api_docs/controls.devdocs.json index 5a0a3ae38133d..87e8b0489a1b2 100644 --- a/api_docs/controls.devdocs.json +++ b/api_docs/controls.devdocs.json @@ -1272,7 +1272,13 @@ "text": "HasSaveNotification" }, " & ", - "PublishesReload", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishesReload", + "text": "PublishesReload" + }, "> & { allowExpensiveQueries$: ", { "pluginId": "@kbn/presentation-publishing", @@ -1524,7 +1530,13 @@ "text": "HasSaveNotification" }, " & ", - "PublishesReload", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishesReload", + "text": "PublishesReload" + }, "> & { allowExpensiveQueries$: ", { "pluginId": "@kbn/presentation-publishing", @@ -1867,6 +1879,22 @@ "text": "HasUniqueId" }, " & ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "public", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-public.HasSerializableState", + "text": "HasSerializableState" + }, + "<", + { + "pluginId": "controls", + "scope": "common", + "docId": "kibControlsPluginApi", + "section": "def-common.DefaultControlState", + "text": "DefaultControlState" + }, + "> & ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -1906,23 +1934,7 @@ "section": "def-common.ControlWidth", "text": "ControlWidth" }, - " | undefined>; serializeState: () => ", - { - "pluginId": "@kbn/presentation-containers", - "scope": "public", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-public.SerializedPanelState", - "text": "SerializedPanelState" - }, - "<", - { - "pluginId": "controls", - "scope": "common", - "docId": "kibControlsPluginApi", - "section": "def-common.DefaultControlState", - "text": "DefaultControlState" - }, - ">; } & Omit<", + " | undefined>; } & Omit<", { "pluginId": "@kbn/presentation-publishing", "scope": "public", diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 37e528ee2882a..cf4d6e6c6c126 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index abf8aae7443f3..3164dcdea2a6b 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.devdocs.json b/api_docs/dashboard.devdocs.json index 79542dae85297..932fe862f8717 100644 --- a/api_docs/dashboard.devdocs.json +++ b/api_docs/dashboard.devdocs.json @@ -393,7 +393,7 @@ "description": [], "signature": [ "(() => Partial<", - "SavedDashboardInput", + "DashboardState", ">) | undefined" ], "path": "src/plugins/dashboard/public/dashboard_api/types.ts", @@ -857,6 +857,14 @@ "text": "HasAppContext" }, " & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.HasExecutionContext", + "text": "HasExecutionContext" + }, + " & ", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -865,6 +873,14 @@ "text": "HasRuntimeChildState" }, " & ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "public", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-public.HasSaveNotification", + "text": "HasSaveNotification" + }, + " & ", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -881,6 +897,14 @@ "text": "HasType" }, "<\"dashboard\"> & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.HasUniqueId", + "text": "HasUniqueId" + }, + " & ", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -889,6 +913,14 @@ "text": "PresentationContainer" }, " & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishesDataLoading", + "text": "PublishesDataLoading" + }, + " & ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -913,6 +945,14 @@ "text": "PublishesPanelTitle" }, ", \"panelTitle\"> & ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishesReload", + "text": "PublishesReload" + }, + " & ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -921,6 +961,16 @@ "text": "PublishesSavedObjectId" }, " & ", + "PublishesSearchSession", + " & ", + { + "pluginId": "@kbn/presentation-containers", + "scope": "public", + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-public.PublishesSettings", + "text": "PublishesSettings" + }, + " & ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -968,23 +1018,31 @@ "section": "def-public.PublishesViewMode", "text": "PublishesViewMode" }, - " & ", + " & { setViewMode: (viewMode: ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.ViewMode", + "text": "ViewMode" + }, + ") => void; } & ", { "pluginId": "@kbn/presentation-containers", "scope": "public", "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-public.TracksOverlays", - "text": "TracksOverlays" + "section": "def-public.TrackContentfulRender", + "text": "TrackContentfulRender" }, - " & { addFromLibrary: () => void; animatePanelTransforms$: ", + " & ", { - "pluginId": "@kbn/presentation-publishing", + "pluginId": "@kbn/presentation-containers", "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishingSubject", - "text": "PublishingSubject" + "docId": "kibKbnPresentationContainersPluginApi", + "section": "def-public.TracksOverlays", + "text": "TracksOverlays" }, - "; asyncResetToLastSavedState: () => Promise; controlGroupApi$: ", + " & { asyncResetToLastSavedState: () => Promise; controlGroupApi$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -1016,27 +1074,9 @@ "section": "def-public.PublishingSubject", "text": "PublishingSubject" }, - "; forceRefresh: () => void; getRuntimeStateForControlGroup: () => ", - "UnsavedPanelState", - " | undefined; getSerializedStateForControlGroup: () => ", - { - "pluginId": "@kbn/presentation-containers", - "scope": "public", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-public.SerializedPanelState", - "text": "SerializedPanelState" - }, - "<", - { - "pluginId": "controls", - "scope": "common", - "docId": "kibControlsPluginApi", - "section": "def-common.ControlGroupSerializedState", - "text": "ControlGroupSerializedState" - }, - ">; getSettings: () => ", + "; forceRefresh: () => void; getSettings: () => ", "DashboardStateFromSettingsFlyout", - "; getDashboardPanelFromId: (id: string) => Promise<", + "; getDashboardPanelFromId: (id: string) => ", { "pluginId": "dashboard", "scope": "common", @@ -1052,15 +1092,7 @@ "section": "def-common.SavedObjectEmbeddableInput", "text": "SavedObjectEmbeddableInput" }, - ">>; hasOverlays$: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishingSubject", - "text": "PublishingSubject" - }, - "; hasRunMigrations$: ", + ">; hasOverlays$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -1084,15 +1116,23 @@ "section": "def-public.PublishingSubject", "text": "PublishingSubject" }, - "; isEmbeddedExternally: boolean; managed$: ", + "; isEmbeddedExternally: boolean; isManaged: boolean; locator?: Pick<", { - "pluginId": "@kbn/presentation-publishing", + "pluginId": "share", + "scope": "common", + "docId": "kibSharePluginApi", + "section": "def-common.LocatorPublic", + "text": "LocatorPublic" + }, + "<", + { + "pluginId": "dashboard", "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishingSubject", - "text": "PublishingSubject" + "docId": "kibDashboardPluginApi", + "section": "def-public.DashboardLocatorParams", + "text": "DashboardLocatorParams" }, - "; panels$: ", + ">, \"navigate\" | \"getRedirectUrl\"> | undefined; panels$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -1108,23 +1148,7 @@ "section": "def-common.DashboardPanelMap", "text": "DashboardPanelMap" }, - ">; registerChildApi: (api: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.DefaultEmbeddableApi", - "text": "DefaultEmbeddableApi" - }, - ") => void; runInteractiveSave: (interactionMode: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.ViewMode", - "text": "ViewMode" - }, - ") => Promise<", + ">; runInteractiveSave: () => Promise<", "SaveDashboardReturn", " | undefined>; runQuickSave: () => Promise; scrollToPanel: (panelRef: HTMLDivElement) => void; scrollToPanelId$: ", { @@ -1134,17 +1158,7 @@ "section": "def-public.PublishingSubject", "text": "PublishingSubject" }, - "; scrollToTop: () => void; setControlGroupApi: (controlGroupApi: ", - { - "pluginId": "controls", - "scope": "public", - "docId": "kibControlsPluginApi", - "section": "def-public.ControlGroupApi", - "text": "ControlGroupApi" - }, - ") => void; setSettings: (settings: ", - "DashboardStateFromSettingsFlyout", - ") => void; setFilters: (filters?: ", + "; scrollToTop: () => void; setFilters: (filters?: ", { "pluginId": "@kbn/es-query", "scope": "common", @@ -1152,7 +1166,7 @@ "section": "def-common.Filter", "text": "Filter" }, - "[] | undefined) => void; setFullScreenMode: (fullScreenMode: boolean) => void; setPanels: (panels: ", + "[] | undefined) => void; setFullScreenMode: (fullScreenMode: boolean) => void; setHighlightPanelId: (id: string | undefined) => void; setPanels: (panels: ", { "pluginId": "dashboard", "scope": "common", @@ -1168,7 +1182,9 @@ "section": "def-common.Query", "text": "Query" }, - " | undefined) => void; setTags: (tags: string[]) => void; setTimeRange: (timeRange?: ", + " | undefined) => void; setScrollToPanelId: (id: string | undefined) => void; setSettings: (settings: ", + "DashboardStateFromSettingsFlyout", + ") => void; setTags: (tags: string[]) => void; setTimeRange: (timeRange?: ", { "pluginId": "@kbn/es-query", "scope": "common", @@ -1176,15 +1192,7 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined) => void; setViewMode: (viewMode: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.ViewMode", - "text": "ViewMode" - }, - ") => void; useMargins$: ", + " | undefined) => void; unifiedSearchFilters$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -1192,15 +1200,15 @@ "section": "def-public.PublishingSubject", "text": "PublishingSubject" }, - "; uuid$: ", + "<", { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishingSubject", - "text": "PublishingSubject" + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.Filter", + "text": "Filter" }, - "; untilEmbeddableLoaded: (id: string) => Promise<", + "[] | undefined>; untilEmbeddableLoaded: (id: string) => Promise<", { "pluginId": "embeddable", "scope": "public", diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index bca62b080c884..39bf5d62e4240 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 114 | 0 | 111 | 14 | +| 114 | 0 | 111 | 13 | ## Client diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index dcae3865b0eff..a0c86024cbcda 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.devdocs.json b/api_docs/data.devdocs.json index cfb349a3c4ce3..fdb5f4a97c49f 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -8073,6 +8073,10 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core-saved-objects-api-server-internal", "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/utils/internal_utils.ts" @@ -8085,10 +8089,6 @@ "plugin": "@kbn/core-saved-objects-server-internal", "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts" }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts" @@ -8119,7 +8119,7 @@ }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts" }, { "plugin": "securitySolution", @@ -12660,14 +12660,14 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.ts" }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" - }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" @@ -19195,14 +19195,14 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.ts" }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" - }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" @@ -24610,6 +24610,10 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core-saved-objects-api-server-internal", "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/utils/internal_utils.ts" @@ -24622,10 +24626,6 @@ "plugin": "@kbn/core-saved-objects-server-internal", "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts" }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts" @@ -24656,7 +24656,7 @@ }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts" }, { "plugin": "securitySolution", diff --git a/api_docs/data.mdx b/api_docs/data.mdx index cdf2c82320ff0..8e6fab9f9f9da 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_quality.mdx b/api_docs/data_quality.mdx index ba1938c7b69d7..dd10ed912e88e 100644 --- a/api_docs/data_quality.mdx +++ b/api_docs/data_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataQuality title: "dataQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the dataQuality plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataQuality'] --- import dataQualityObj from './data_quality.devdocs.json'; diff --git a/api_docs/data_query.devdocs.json b/api_docs/data_query.devdocs.json index eec375eb64279..fede5071491b0 100644 --- a/api_docs/data_query.devdocs.json +++ b/api_docs/data_query.devdocs.json @@ -4534,7 +4534,7 @@ "\nConverts QueryState to expression AST" ], "signature": [ - "({\n filters,\n query,\n inputQuery,\n time,\n dataView,\n titleForInspector,\n descriptionForInspector,\n}: Args) => Promise<", + "({\n filters,\n query,\n inputQuery,\n time,\n timeFieldName,\n titleForInspector,\n descriptionForInspector,\n}: Args) => Promise<", { "pluginId": "expressions", "scope": "common", @@ -4553,7 +4553,7 @@ "id": "def-common.textBasedQueryStateToAstWithValidation.$1", "type": "Object", "tags": [], - "label": "{\n filters,\n query,\n inputQuery,\n time,\n dataView,\n titleForInspector,\n descriptionForInspector,\n}", + "label": "{\n filters,\n query,\n inputQuery,\n time,\n timeFieldName,\n titleForInspector,\n descriptionForInspector,\n}", "description": [], "signature": [ "Args" diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 0f4e5dde32689..590efac903bea 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 5eb53062eff14..6c1faefdb88b6 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_usage.devdocs.json b/api_docs/data_usage.devdocs.json index fa0dd73eb8c27..1be50a2555354 100644 --- a/api_docs/data_usage.devdocs.json +++ b/api_docs/data_usage.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "DataUsagePublicSetup", "description": [], - "path": "x-pack/plugins/data_usage/public/types.ts", + "path": "x-pack/platform/plugins/private/data_usage/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "DataUsagePublicStart", "description": [], - "path": "x-pack/plugins/data_usage/public/types.ts", + "path": "x-pack/platform/plugins/private/data_usage/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -50,7 +50,7 @@ "tags": [], "label": "DataUsageServerSetup", "description": [], - "path": "x-pack/plugins/data_usage/server/types/types.ts", + "path": "x-pack/platform/plugins/private/data_usage/server/types/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -64,7 +64,7 @@ "tags": [], "label": "DataUsageServerStart", "description": [], - "path": "x-pack/plugins/data_usage/server/types/types.ts", + "path": "x-pack/platform/plugins/private/data_usage/server/types/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -88,7 +88,7 @@ "signature": [ "\"/api/data_usage/\"" ], - "path": "x-pack/plugins/data_usage/common/constants.ts", + "path": "x-pack/platform/plugins/private/data_usage/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -100,7 +100,7 @@ "tags": [], "label": "DATA_USAGE_DATA_STREAMS_API_ROUTE", "description": [], - "path": "x-pack/plugins/data_usage/common/constants.ts", + "path": "x-pack/platform/plugins/private/data_usage/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -112,7 +112,7 @@ "tags": [], "label": "DATA_USAGE_METRICS_API_ROUTE", "description": [], - "path": "x-pack/plugins/data_usage/common/constants.ts", + "path": "x-pack/platform/plugins/private/data_usage/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -127,7 +127,7 @@ "signature": [ "50" ], - "path": "x-pack/plugins/data_usage/common/constants.ts", + "path": "x-pack/platform/plugins/private/data_usage/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -142,7 +142,7 @@ "signature": [ "\"data_usage\"" ], - "path": "x-pack/plugins/data_usage/common/constants.ts", + "path": "x-pack/platform/plugins/private/data_usage/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/data_usage.mdx b/api_docs/data_usage.mdx index 6701cddffed8d..6e3d4afc03ed6 100644 --- a/api_docs/data_usage.mdx +++ b/api_docs/data_usage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataUsage title: "dataUsage" image: https://source.unsplash.com/400x175/?github description: API docs for the dataUsage plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataUsage'] --- import dataUsageObj from './data_usage.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index cadeae6860044..9ed369e7f3ca8 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index d11847beba423..00f48feb98dfb 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 7857c22209fa2..be9967ed2e67b 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.devdocs.json b/api_docs/data_views.devdocs.json index 44f3daa2ba276..98259db97e551 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -427,14 +427,14 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.ts" }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" - }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" @@ -8301,14 +8301,14 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.ts" }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" - }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" @@ -14130,14 +14130,6 @@ "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/public/application/data_frame_analytics/pages/analytics_management/components/source_selection/source_selection.tsx" }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/models/job_service/new_job_caps/rollup.ts" - }, - { - "plugin": "@kbn/ml-data-view-utils", - "path": "x-pack/platform/packages/private/ml/data_view_utils/actions/data_view_handler.ts" - }, { "plugin": "enterpriseSearch", "path": "x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.ts" @@ -14146,6 +14138,14 @@ "plugin": "enterpriseSearch", "path": "x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_explore_table_formulas.ts" }, + { + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/models/job_service/new_job_caps/rollup.ts" + }, + { + "plugin": "@kbn/ml-data-view-utils", + "path": "x-pack/platform/packages/private/ml/data_view_utils/actions/data_view_handler.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/datasource.sagas.ts" @@ -14159,32 +14159,20 @@ "path": "x-pack/plugins/graph/public/state_management/persistence.ts" }, { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/common/index_patterns_utils.ts" - }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/common/index_patterns_utils.ts" - }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/lib/get_fields.ts" - }, - { - "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/observability_data_views.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts" }, { - "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts" }, { - "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts" }, { - "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx" + "plugin": "timelines", + "path": "x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/index.ts" }, { "plugin": "stackAlerts", @@ -14199,40 +14187,40 @@ "path": "x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts" + "plugin": "graph", + "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/sourcerer/containers/create_sourcerer_data_view.ts" + "plugin": "exploratoryView", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts" }, { - "plugin": "timelines", - "path": "x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts" + "plugin": "exploratoryView", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx" + "plugin": "exploratoryView", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts" }, { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" + "plugin": "exploratoryView", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx" }, { - "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx" + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/common/index_patterns_utils.ts" }, { - "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx" + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/common/index_patterns_utils.ts" }, { - "plugin": "ux", - "path": "x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts" + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/lib/get_fields.ts" }, { "plugin": "maps", @@ -14243,52 +14231,64 @@ "path": "x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.test.ts" }, { - "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts" + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx" }, { - "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts" + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/public/app/hooks/use_data_view_exists.ts" }, { - "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/public/application/services/new_job_capabilities/remove_nested_field_children.test.ts" }, { - "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts" + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/public/app/sections/create_transform/components/step_define/common/common.test.ts" + }, + { + "plugin": "uptime", + "path": "x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx" + }, + { + "plugin": "ux", + "path": "x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_cwv.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx" + "plugin": "exploratoryView", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/public/app/hooks/use_data_view_exists.ts" + "plugin": "exploratoryView", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts" }, { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/public/application/services/new_job_capabilities/remove_nested_field_children.test.ts" + "plugin": "exploratoryView", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/public/app/sections/create_transform/components/step_define/common/common.test.ts" + "plugin": "exploratoryView", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_cwv.ts" }, { "plugin": "dataViewManagement", @@ -16824,14 +16824,14 @@ "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.ts" }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" - }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" @@ -26028,6 +26028,10 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core-saved-objects-api-server-internal", "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/utils/internal_utils.ts" @@ -26040,10 +26044,6 @@ "plugin": "@kbn/core-saved-objects-server-internal", "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts" }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts" @@ -26074,7 +26074,7 @@ }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts" }, { "plugin": "securitySolution", diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 6515a5af9a5fe..7cdcb4825b67f 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index d25f0a7edcdda..00df393e65a96 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index 2ad67db089ee3..1705869ae614b 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 9a20272c7302b..2b341319bd44d 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -17,12 +17,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Referencing plugin(s) | Remove By | | ---------------|-----------|-----------| | | ml, stackAlerts | - | -| | data, @kbn/search-errors, savedObjectsManagement, unifiedSearch, @kbn/unified-field-list, controls, lens, @kbn/lens-embeddable-utils, triggersActionsUi, dataVisualizer, canvas, fleet, ml, @kbn/ml-data-view-utils, enterpriseSearch, graph, visTypeTimeseries, exploratoryView, stackAlerts, securitySolution, timelines, upgradeAssistant, uptime, ux, maps, transform, dataViewManagement, eventAnnotationListing, inputControlVis, visDefaultEditor, visTypeTimelion, visTypeVega | - | +| | data, @kbn/search-errors, savedObjectsManagement, unifiedSearch, @kbn/unified-field-list, controls, lens, @kbn/lens-embeddable-utils, triggersActionsUi, dataVisualizer, canvas, fleet, ml, enterpriseSearch, @kbn/ml-data-view-utils, graph, securitySolution, timelines, stackAlerts, upgradeAssistant, exploratoryView, visTypeTimeseries, maps, transform, uptime, ux, dataViewManagement, eventAnnotationListing, inputControlVis, visDefaultEditor, visTypeTimelion, visTypeVega | - | | | ml, securitySolution | - | | | actions, savedObjectsTagging, ml, enterpriseSearch | - | -| | @kbn/core-saved-objects-browser-internal, @kbn/core, visualizations, aiops, dataVisualizer, ml, dashboardEnhanced, graph, lens, securitySolution, eventAnnotation, @kbn/core-saved-objects-browser-mocks | - | +| | @kbn/core-http-router-server-internal, @kbn/core-http-server-internal, @kbn/core-metrics-server-internal, @kbn/core-status-server-internal, @kbn/core-i18n-server-internal, @kbn/core-rendering-server-internal, @kbn/core-capabilities-server-internal, @kbn/core-apps-server-internal, usageCollection, taskManager, security, monitoringCollection, files, banners, telemetry, securitySolution, cloudFullStory, customBranding, enterpriseSearch, @kbn/test-suites-xpack, interactiveSetup, mockIdpPlugin, spaces, ml | - | +| | @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core, visualizations, aiops, dataVisualizer, dashboardEnhanced, ml, graph, lens, securitySolution, eventAnnotation | - | | | @kbn/core, embeddable, savedObjects, visualizations, canvas, graph, ml | - | -| | @kbn/core-saved-objects-base-server-internal, @kbn/core-saved-objects-migration-server-internal, @kbn/core-saved-objects-server-internal, @kbn/core-ui-settings-server-internal, @kbn/core-usage-data-server-internal, taskManager, dataViews, spaces, share, actions, data, alerting, dashboard, @kbn/core-saved-objects-migration-server-mocks, savedSearch, canvas, lens, cases, fleet, cloudSecurityPosture, ml, graph, lists, maps, visualizations, apmDataAccess, infra, securitySolution, apm, slo, synthetics, uptime, eventAnnotation, links, savedObjectsManagement, @kbn/core-test-helpers-so-type-serializer, @kbn/core-saved-objects-api-server-internal | - | +| | @kbn/core-saved-objects-base-server-internal, @kbn/core-saved-objects-migration-server-internal, @kbn/core-saved-objects-server-internal, @kbn/core-ui-settings-server-internal, @kbn/core-usage-data-server-internal, taskManager, dataViews, spaces, share, actions, data, alerting, dashboard, @kbn/core-saved-objects-migration-server-mocks, savedSearch, canvas, lens, cases, fleet, cloudSecurityPosture, ml, graph, lists, maps, securitySolution, apmDataAccess, apm, visualizations, infra, slo, synthetics, uptime, eventAnnotation, links, savedObjectsManagement, @kbn/core-test-helpers-so-type-serializer, @kbn/core-saved-objects-api-server-internal | - | | | stackAlerts, alerting, securitySolution, inputControlVis | - | | | graph, stackAlerts, inputControlVis, securitySolution | - | | | dataVisualizer, stackAlerts, expressionPartitionVis | - | @@ -33,8 +34,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | ruleRegistry, securitySolution, slo | - | | | security, actions, alerting, ruleRegistry, files, cases, fleet, securitySolution | - | | | alerting, securitySolution | - | -| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-server-internal, @kbn/core-saved-objects-browser-mocks, fleet, graph, lists, osquery, securitySolution, alerting | - | -| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-server-internal, @kbn/core-saved-objects-browser-mocks, fleet, graph, lists, osquery, securitySolution, alerting | - | +| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-server-internal, fleet, graph, lists, osquery, securitySolution, alerting | - | +| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-server-internal, fleet, graph, lists, osquery, securitySolution, alerting | - | | | alerting, securitySolution | - | | | securitySolution | - | | | cloudDefend, securitySolution, synthetics | - | @@ -46,10 +47,11 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | @kbn/securitysolution-data-table, securitySolution | - | | | securitySolution | - | | | securitySolution | - | -| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-server-internal, @kbn/core-saved-objects-browser-mocks, fleet, graph, lists, osquery, securitySolution, alerting | - | +| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-server-internal, fleet, graph, lists, osquery, securitySolution, alerting | - | | | @kbn/core-saved-objects-common, @kbn/core-saved-objects-server, @kbn/core, @kbn/alerting-types, alerting, actions, savedSearch, canvas, enterpriseSearch, securitySolution, taskManager, @kbn/core-saved-objects-server-internal, @kbn/core-saved-objects-api-server | - | -| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-api-server, @kbn/core, savedObjectsTagging, home, canvas, savedObjectsTaggingOss, lists, securitySolution, upgradeAssistant, savedObjectsManagement, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core-ui-settings-server-internal | - | -| | @kbn/core-saved-objects-migration-server-internal, dataViews, actions, data, alerting, dashboard, savedSearch, canvas, lens, cases, savedObjectsTagging, graph, lists, maps, visualizations, securitySolution, @kbn/core-test-helpers-so-type-serializer | - | +| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-api-server, @kbn/core-saved-objects-browser-mocks, @kbn/core, savedObjectsTagging, home, canvas, savedObjectsTaggingOss, lists, securitySolution, upgradeAssistant, savedObjectsManagement, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-ui-settings-server-internal | - | +| | @kbn/core-saved-objects-migration-server-internal, dataViews, actions, data, alerting, dashboard, savedSearch, canvas, lens, cases, savedObjectsTagging, graph, lists, maps, securitySolution, visualizations, @kbn/core-test-helpers-so-type-serializer | - | +| | integrationAssistant, securitySolution, @kbn/ecs-data-quality-dashboard, @kbn/ai-assistant, searchAssistant, observabilityAIAssistantApp | - | | | security, securitySolution, cloudLinks, cases | - | | | security, cases, searchPlayground, securitySolution | - | | | lists, securitySolution, @kbn/securitysolution-io-ts-list-types | - | @@ -66,13 +68,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | securitySolution | - | | | @kbn/monaco, securitySolution | - | | | cloudSecurityPosture, securitySolution | - | -| | alerting, observabilityAIAssistant, fleet, cloudSecurityPosture, entityManager, apm, serverlessSearch, upgradeAssistant, synthetics, transform, security | - | +| | alerting, observabilityAIAssistant, fleet, cloudSecurityPosture, serverlessSearch, upgradeAssistant, apm, entityManager, transform, synthetics, security | - | | | actions, alerting | - | | | monitoring | - | +| | observabilityShared, monitoring | - | | | @kbn/core-saved-objects-api-browser, @kbn/core, savedObjectsManagement, savedObjects, visualizations, savedObjectsTagging, eventAnnotation, lens, maps, graph, dashboard, kibanaUtils, expressions, data, savedObjectsTaggingOss, embeddable, uiActionsEnhanced, controls, canvas, dashboardEnhanced, globalSearchProviders | - | -| | @kbn/core-saved-objects-browser, @kbn/core-saved-objects-browser-internal, @kbn/core, home, visualizations, lens, visTypeTimeseries, @kbn/core-saved-objects-browser-mocks | - | +| | @kbn/core-saved-objects-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core, home, visualizations, lens, visTypeTimeseries | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks | - | -| | home, @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-browser-internal | - | +| | @kbn/core-saved-objects-browser-mocks, home, @kbn/core-saved-objects-browser-internal | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, visualizations | - | | | @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-browser-internal | - | | | @kbn/core-saved-objects-browser-mocks, dashboardEnhanced, @kbn/core-saved-objects-browser-internal | - | @@ -97,20 +100,20 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | @kbn/core-saved-objects-browser-internal, @kbn/core | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core | - | | | @kbn/core-saved-objects-browser-internal | - | -| | @kbn/core-lifecycle-browser, @kbn/core-saved-objects-browser-internal, @kbn/core, visualizations, exploratoryView, transform, @kbn/core-saved-objects-browser-mocks | - | +| | @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core-lifecycle-browser, @kbn/core, visualizations, exploratoryView, transform | - | +| | @kbn/core-saved-objects-browser-mocks, @kbn/core-root-browser-internal | - | | | @kbn/core-saved-objects-api-server-internal | - | | | @kbn/core-saved-objects-api-server-internal | - | | | @kbn/core-saved-objects-api-server-internal, canvas | - | | | @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-migration-server-internal, spaces, data, dashboard, savedSearch, cloudSecurityPosture, visualizations, @kbn/core-test-helpers-so-type-serializer | - | -| | @kbn/core-root-browser-internal, @kbn/core-saved-objects-browser-mocks | - | -| | fleet, exploratoryView, osquery, synthetics | - | +| | fleet, osquery, exploratoryView, synthetics | - | | | @kbn/security-plugin-types-server, telemetry, fleet, profiling, @kbn/security-authorization-core, security | - | -| | @kbn/core-application-browser-internal, management, @kbn/core-application-browser-mocks, assetInventory, fleet, security, kibanaOverview, @kbn/core | - | +| | @kbn/core-application-browser-internal, @kbn/core-application-browser-mocks, management, assetInventory, fleet, security, kibanaOverview, @kbn/core | - | | | graph, visTypeTimeseries, dataViewManagement, dataViews | - | | | graph, visTypeTimeseries, dataViewManagement, dataViews | - | | | graph, visTypeTimeseries, dataViewManagement | - | | | visualizations, graph | - | -| | kubernetesSecurity, osquery, threatIntelligence | - | +| | kubernetesSecurity, threatIntelligence, osquery | - | | | @kbn/core-plugins-browser-internal, @kbn/core-root-browser-internal, home, unifiedSearch, visualizations, fileUpload, dashboardEnhanced, transform, discover, dataVisualizer | - | | | dataViews, maps | - | | | dataViews, dataViewManagement | - | @@ -123,12 +126,11 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | lens, dashboard, maps | - | | | dataViewManagement | - | | | dataViewManagement | - | -| | data, discover, imageEmbeddable, embeddable | - | +| | data, discover, imageEmbeddable | - | | | spaces, savedObjectsManagement | - | | | unifiedSearch | - | | | unifiedSearch | - | | | @kbn/core, lens | - | -| | dashboard, canvas | - | | | canvas | - | | | canvas | - | | | canvas | - | @@ -142,21 +144,17 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | canvas | - | | | enterpriseSearch | - | | | @kbn/core-elasticsearch-server-internal, @kbn/core-plugins-server-internal, enterpriseSearch, observabilityOnboarding, console | - | -| | dashboard, investigateApp | - | -| | dashboard | - | -| | embeddable, dashboard | - | -| | embeddableEnhanced | - | -| | embeddableEnhanced | - | | | uiActionsEnhanced | - | | | visTypeGauge | - | | | visTypePie | - | | | visTypePie | - | | | @kbn/core-logging-server-internal, security | - | | | security | - | -| | observabilityShared | - | | | aiAssistantManagementSelection, observabilityAiAssistantManagement | - | | | @kbn/react-kibana-context-styled, kibanaReact | - | | | indexLifecycleManagement | - | +| | dashboard | - | +| | embeddable, dashboard | - | | | @kbn/reporting-public, discover | - | | | discover, @kbn/management-settings-field-definition | - | | | @kbn/content-management-table-list-view, filesManagement | - | @@ -172,12 +170,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | reporting | - | | | reporting | - | | | @kbn/reporting-export-types-pdf | - | -| | security, aiops, licenseManagement, ml, crossClusterReplication, logstash, painlessLab, searchprofiler, watcher, slo | 8.8.0 | -| | spaces, security, actions, alerting, remoteClusters, ml, graph, indexLifecycleManagement, osquery, securitySolution, painlessLab, rollup, searchprofiler, snapshotRestore, upgradeAssistant, transform, aiops | 8.8.0 | +| | security, aiops, licenseManagement, ml, logstash, slo, crossClusterReplication, painlessLab, watcher, searchprofiler | 8.8.0 | +| | spaces, security, actions, alerting, ml, graph, osquery, securitySolution, upgradeAssistant, remoteClusters, indexLifecycleManagement, painlessLab, rollup, snapshotRestore, transform, aiops, searchprofiler | 8.8.0 | | | fleet, apm, security, securitySolution | 8.8.0 | | | fleet, apm, security, securitySolution | 8.8.0 | | | spaces, @kbn/security-authorization-core, security, alerting, cases, @kbn/security-role-management-model | 8.8.0 | -| | embeddable, presentationUtil, lens, dashboard, discover, graph, links | 8.8.0 | +| | presentationUtil, visualizations, lens, dashboard, discover, graph, links | 8.8.0 | | | security, @kbn/security-role-management-model | 8.8.0 | | | security | 8.8.0 @@ -205,8 +203,10 @@ Safe to remove. | | data | | | data | | | data | -| | embeddableEnhanced | +| | embeddable | +| | embeddable | | | embeddable | +| | embeddable | | | expressionGauge | | | expressionGauge | | | expressions | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 3f8958aabf462..9c7393e7fc5b5 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,11 +7,19 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- +## @kbn/ai-assistant + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [chat_header.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/kbn-ai-assistant/src/chat/chat_header.tsx#:~:text=AssistantAvatar), [chat_header.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/kbn-ai-assistant/src/chat/chat_header.tsx#:~:text=AssistantAvatar), [chat_item_avatar.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/kbn-ai-assistant/src/chat/chat_item_avatar.tsx#:~:text=AssistantAvatar), [chat_item_avatar.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/kbn-ai-assistant/src/chat/chat_item_avatar.tsx#:~:text=AssistantAvatar) | - | + + + ## @kbn/alerting-types | Deprecated API | Reference location(s) | Remove By | @@ -75,6 +83,22 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/core-apps-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [bundles_route.ts](https://github.com/elastic/kibana/tree/main/packages/core/apps/core-apps-server-internal/src/bundle_routes/bundles_route.ts#:~:text=authRequired), [core_app.ts](https://github.com/elastic/kibana/tree/main/packages/core/apps/core-apps-server-internal/src/core_app.ts#:~:text=authRequired), [core_app.ts](https://github.com/elastic/kibana/tree/main/packages/core/apps/core-apps-server-internal/src/core_app.ts#:~:text=authRequired) | - | + + + +## @kbn/core-capabilities-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [resolve_capabilities.ts](https://github.com/elastic/kibana/tree/main/packages/core/capabilities/core-capabilities-server-internal/src/routes/resolve_capabilities.ts#:~:text=authRequired) | - | + + + ## @kbn/core-elasticsearch-server-internal | Deprecated API | Reference location(s) | Remove By | @@ -83,6 +107,30 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/core-http-router-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [security_route_config_validator.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.ts#:~:text=authRequired), [security_route_config_validator.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.test.ts#:~:text=authRequired), [core_versioned_route.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.test.ts#:~:text=authRequired), [request.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/request.test.ts#:~:text=authRequired), [request.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/request.test.ts#:~:text=authRequired), [request.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/request.test.ts#:~:text=authRequired), [request.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/request.test.ts#:~:text=authRequired), [request.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/request.test.ts#:~:text=authRequired), [request.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/request.test.ts#:~:text=authRequired), [request.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-router-server-internal/src/request.test.ts#:~:text=authRequired)+ 3 more | - | + + + +## @kbn/core-http-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [http_server.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-server-internal/src/http_server.ts#:~:text=authRequired), [http_server.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-server-internal/src/http_server.ts#:~:text=authRequired), [auth.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-server-internal/src/lifecycle/auth.ts#:~:text=authRequired), [auth.ts](https://github.com/elastic/kibana/tree/main/packages/core/http/core-http-server-internal/src/lifecycle/auth.ts#:~:text=authRequired) | - | + + + +## @kbn/core-i18n-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [translations.ts](https://github.com/elastic/kibana/tree/main/packages/core/i18n/core-i18n-server-internal/src/routes/translations.ts#:~:text=authRequired) | - | + + + ## @kbn/core-lifecycle-browser | Deprecated API | Reference location(s) | Remove By | @@ -107,6 +155,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/core-metrics-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [elu_history.ts](https://github.com/elastic/kibana/tree/main/packages/core/metrics/core-metrics-server-internal/src/routes/elu_history.ts#:~:text=authRequired) | - | + + + ## @kbn/core-plugins-browser-internal | Deprecated API | Reference location(s) | Remove By | @@ -125,6 +181,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/core-rendering-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [register_bootstrap_route.ts](https://github.com/elastic/kibana/tree/main/packages/core/rendering/core-rendering-server-internal/src/bootstrap/register_bootstrap_route.ts#:~:text=authRequired) | - | + + + ## @kbn/core-root-browser-internal | Deprecated API | Reference location(s) | Remove By | @@ -310,6 +374,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/core-status-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [status.ts](https://github.com/elastic/kibana/tree/main/packages/core/status/core-status-server-internal/src/routes/status.ts#:~:text=authRequired), [status_preboot.ts](https://github.com/elastic/kibana/tree/main/packages/core/status/core-status-server-internal/src/routes/status_preboot.ts#:~:text=authRequired) | - | + + + ## @kbn/core-test-helpers-so-type-serializer | Deprecated API | Reference location(s) | Remove By | @@ -337,6 +409,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/ecs-data-quality-dashboard + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx#:~:text=AssistantAvatar) | - | + + + ## @kbn/esql-utils | Deprecated API | Reference location(s) | Remove By | @@ -365,7 +445,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [get_definition.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-management/settings/field_definition/get_definition.ts#:~:text=metric) | - | +| | [get_definition.ts](https://github.com/elastic/kibana/tree/main/src/platform/packages/shared/kbn-management/settings/field_definition/get_definition.ts#:~:text=metric) | - | @@ -456,9 +536,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/index.tsx#:~:text=DeprecatedCellValueElementProps), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/index.tsx#:~:text=DeprecatedCellValueElementProps) | - | -| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/index.tsx#:~:text=DeprecatedRowRenderer), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/index.tsx#:~:text=DeprecatedRowRenderer) | - | -| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/common/types/header_actions/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/common/types/header_actions/index.ts#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/index.tsx#:~:text=BrowserFields), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/index.tsx#:~:text=BrowserFields), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/components/data_table/index.tsx#:~:text=BrowserFields), [mock_source.ts](https://github.com/elastic/kibana/tree/main/x-pack/packages/security-solution/data_table/mock/mock_source.ts#:~:text=BrowserFields)+ 1 more | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx#:~:text=DeprecatedCellValueElementProps), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx#:~:text=DeprecatedCellValueElementProps) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx#:~:text=DeprecatedRowRenderer), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx#:~:text=DeprecatedRowRenderer) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/common/types/header_actions/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/common/types/header_actions/index.ts#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [helpers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx#:~:text=BrowserFields), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx#:~:text=BrowserFields), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx#:~:text=BrowserFields), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx#:~:text=BrowserFields), [mock_source.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/data_table/mock/mock_source.ts#:~:text=BrowserFields)+ 1 more | - | @@ -472,6 +552,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/test-suites-xpack + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [pagerduty_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/pagerduty_simulation.ts#:~:text=authRequired), [servicenow_oauth_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/servicenow_oauth_simulation.ts#:~:text=authRequired), [jira_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts#:~:text=authRequired), [jira_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts#:~:text=authRequired), [jira_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts#:~:text=authRequired), [jira_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts#:~:text=authRequired), [jira_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts#:~:text=authRequired), [resilient_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts#:~:text=authRequired), [resilient_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts#:~:text=authRequired), [resilient_simulation.ts](https://github.com/elastic/kibana/tree/main/x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts#:~:text=authRequired)+ 8 more | - | + + + ## @kbn/unified-field-list | Deprecated API | Reference location(s) | Remove By | @@ -498,7 +586,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [mount_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/ai_assistant_management/selection/public/management_section/mount_section.tsx#:~:text=wrapWithTheme), [mount_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/ai_assistant_management/selection/public/management_section/mount_section.tsx#:~:text=wrapWithTheme) | - | +| | [mount_section.tsx](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/ai_assistant_management/selection/public/management_section/mount_section.tsx#:~:text=wrapWithTheme), [mount_section.tsx](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/ai_assistant_management/selection/public/management_section/mount_section.tsx#:~:text=wrapWithTheme) | - | @@ -561,13 +649,20 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## banners + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [info.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/banners/server/routes/info.ts#:~:text=authRequired) | - | + + + ## canvas | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [datasource_component.js](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/components/datasource/datasource_component.js#:~:text=title) | - | -| | [embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx#:~:text=EmbeddablePanel), [embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx#:~:text=EmbeddablePanel) | - | -| | [embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx#:~:text=getEmbeddableFactories), [editor_menu.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/components/workpad_header/editor_menu/editor_menu.tsx#:~:text=getEmbeddableFactories) | - | +| | [editor_menu.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/components/workpad_header/editor_menu/editor_menu.tsx#:~:text=getEmbeddableFactories) | - | | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts#:~:text=context), [embeddable.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts#:~:text=context), [escount.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/escount.ts#:~:text=context), [esdocs.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/esdocs.ts#:~:text=context), [filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/common/functions/filters.ts#:~:text=context), [neq.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts#:~:text=context), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts#:~:text=context) | - | | | [setup_expressions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/setup_expressions.ts#:~:text=getFunction) | - | | | [functions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/functions/functions.ts#:~:text=getFunctions), [functions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/functions/functions.ts#:~:text=getFunctions), [functions.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/functions/functions.test.ts#:~:text=getFunctions) | - | @@ -613,6 +708,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## cloudFullStory + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [fullstory.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_integrations/cloud_full_story/server/routes/fullstory.ts#:~:text=authRequired) | - | + + + ## cloudLinks | Deprecated API | Reference location(s) | Remove By | @@ -636,7 +739,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/console/server/plugin.ts#:~:text=legacy) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/console/server/plugin.ts#:~:text=legacy) | - | @@ -653,7 +756,15 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cross_cluster_replication/public/plugin.ts#:~:text=license%24) | 8.8.0 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/cross_cluster_replication/public/plugin.ts#:~:text=license%24) | 8.8.0 | + + + +## customBranding + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [info.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/custom_branding/server/routes/info.ts#:~:text=authRequired) | - | @@ -661,8 +772,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [dashboard_grid_item.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid_item.tsx#:~:text=EmbeddablePanel), [dashboard_grid_item.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid_item.tsx#:~:text=EmbeddablePanel) | - | -| | [migrate_dashboard_input.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.ts#:~:text=getEmbeddableFactory), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx#:~:text=getEmbeddableFactory), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx#:~:text=getEmbeddableFactory), [create_dashboard.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts#:~:text=getEmbeddableFactory), [create_dashboard.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts#:~:text=getEmbeddableFactory), [create_dashboard.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts#:~:text=getEmbeddableFactory), [migrate_dashboard_input.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts#:~:text=getEmbeddableFactory), [migrate_dashboard_input.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts#:~:text=getEmbeddableFactory), [migrate_dashboard_input.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts#:~:text=getEmbeddableFactory), [migrate_dashboard_input.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts#:~:text=getEmbeddableFactory)+ 1 more | - | | | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | | [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/common/bwc/types.ts#:~:text=SavedObjectReference), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/common/bwc/types.ts#:~:text=SavedObjectReference) | - | | | [dashboard_saved_object.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/server/dashboard_saved_object/dashboard_saved_object.ts#:~:text=migrations) | - | @@ -761,23 +870,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | -| | [helpers.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/helpers.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [explicit_input.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/explicit_input.test.ts#:~:text=executeTriggerActions) | - | | | [default_embeddable_factory_provider.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts#:~:text=SavedObjectAttributes), [default_embeddable_factory_provider.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/types.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/types.ts#:~:text=SavedObjectAttributes) | - | | | [migrate_base_input.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/migrate_base_input.ts#:~:text=SavedObjectReference), [migrate_base_input.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/migrate_base_input.ts#:~:text=SavedObjectReference), [migrate_base_input.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/migrate_base_input.ts#:~:text=SavedObjectReference), [inject.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/inject.ts#:~:text=SavedObjectReference), [inject.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/inject.ts#:~:text=SavedObjectReference) | - | | | [i_embeddable.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts#:~:text=HasLegacyLibraryTransforms), [i_embeddable.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts#:~:text=HasLegacyLibraryTransforms) | - | -## embeddableEnhanced - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/embeddable_enhanced/public/plugin.ts#:~:text=EmbeddableContext), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/embeddable_enhanced/public/plugin.ts#:~:text=EmbeddableContext), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/embeddable_enhanced/public/plugin.ts#:~:text=EmbeddableContext) | - | -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/embeddable_enhanced/public/plugin.ts#:~:text=setCustomEmbeddableFactoryProvider) | - | - - - ## encryptedSavedObjects | Deprecated API | Reference location(s) | Remove By | @@ -794,6 +892,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [account_settings.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/account_settings/account_settings.tsx#:~:text=uiApi), [account_settings.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/account_settings/account_settings.tsx#:~:text=uiApi), [account_settings.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/account_settings/account_settings.tsx#:~:text=uiApi), [account_settings.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/account_settings/account_settings.tsx#:~:text=uiApi) | - | | | [check_access.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/lib/check_access.ts#:~:text=authz), [check_access.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/lib/check_access.ts#:~:text=authz), [check_access.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/lib/check_access.ts#:~:text=authz) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/plugin.ts#:~:text=legacy) | - | +| | [route_config_helpers.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/lib/route_config_helpers.test.ts#:~:text=authRequired) | - | | | [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes) | - | @@ -828,9 +927,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [observability_data_views.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/observability_data_views.ts#:~:text=title), [report_definition_field.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx#:~:text=title), [use_filter_values.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts#:~:text=title), [filter_value_btn.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx#:~:text=title), [sample_attribute.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts#:~:text=title), [sample_attribute_kpi.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts#:~:text=title), [sample_attribute_with_reference_lines.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts#:~:text=title), [test_formula_metric_attribute.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts#:~:text=title), [single_metric_attributes.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts#:~:text=title), [single_metric_attributes.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts#:~:text=title)+ 2 more | - | -| | [use_discover_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx#:~:text=indexPatternId) | - | -| | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/application/types.ts#:~:text=SavedObjectsStart), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/exploratory_view/public/application/types.ts#:~:text=SavedObjectsStart) | - | +| | [observability_data_views.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts#:~:text=title), [report_definition_field.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx#:~:text=title), [use_filter_values.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts#:~:text=title), [filter_value_btn.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx#:~:text=title), [sample_attribute.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts#:~:text=title), [sample_attribute_kpi.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts#:~:text=title), [sample_attribute_with_reference_lines.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts#:~:text=title), [test_formula_metric_attribute.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts#:~:text=title), [single_metric_attributes.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts#:~:text=title), [single_metric_attributes.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts#:~:text=title)+ 2 more | - | +| | [use_discover_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx#:~:text=indexPatternId) | - | +| | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/application/types.ts#:~:text=SavedObjectsStart), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/exploratory_view/public/application/types.ts#:~:text=SavedObjectsStart) | - | @@ -862,6 +961,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [download.ts](https://github.com/elastic/kibana/tree/main/src/plugins/files/server/routes/public_facing/download.ts#:~:text=authRequired) | - | | | [file_service_factory.ts](https://github.com/elastic/kibana/tree/main/src/plugins/files/server/file_service/file_service_factory.ts#:~:text=audit), [file_service_factory.ts](https://github.com/elastic/kibana/tree/main/src/plugins/files/server/file_service/file_service_factory.ts#:~:text=audit) | - | @@ -949,8 +1049,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/server/services/license.ts#:~:text=license%24) | 8.8.0 | -| | [mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/__jest__/mocks.ts#:~:text=max_size), [deserializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts#:~:text=max_size), [deserializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts#:~:text=max_size), [deserializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [rollover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx#:~:text=max_size), [rollover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx#:~:text=max_size)+ 7 more | - | +| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/server/services/license.ts#:~:text=license%24) | 8.8.0 | +| | [mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/mocks.ts#:~:text=max_size), [deserializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts#:~:text=max_size), [deserializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts#:~:text=max_size), [deserializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [serializer.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts#:~:text=max_size), [rollover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx#:~:text=max_size), [rollover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx#:~:text=max_size)+ 7 more | - | @@ -973,11 +1073,19 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] -## investigateApp +## integrationAssistant | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [register_embeddable_item.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/investigate_app/public/items/embeddable_item/register_embeddable_item.tsx#:~:text=getEmbeddableFactory) | - | +| | [integration_assistant_card.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx#:~:text=AssistantAvatar), [integration_assistant_card.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx#:~:text=AssistantAvatar), [header.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx#:~:text=AssistantAvatar), [header.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx#:~:text=AssistantAvatar) | - | + + + +## interactiveSetup + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [configure.ts](https://github.com/elastic/kibana/tree/main/src/plugins/interactive_setup/server/routes/configure.ts#:~:text=authRequired), [enroll.ts](https://github.com/elastic/kibana/tree/main/src/plugins/interactive_setup/server/routes/enroll.ts#:~:text=authRequired), [ping.ts](https://github.com/elastic/kibana/tree/main/src/plugins/interactive_setup/server/routes/ping.ts#:~:text=authRequired), [status.ts](https://github.com/elastic/kibana/tree/main/src/plugins/interactive_setup/server/routes/status.ts#:~:text=authRequired), [verify.ts](https://github.com/elastic/kibana/tree/main/src/plugins/interactive_setup/server/routes/verify.ts#:~:text=authRequired) | - | @@ -1034,7 +1142,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/license_management/public/plugin.ts#:~:text=license%24) | 8.8.0 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/license_management/public/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -1076,7 +1184,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/management/public/application.tsx#:~:text=appBasePath) | - | +| | [application.tsx](https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/management/public/application.tsx#:~:text=appBasePath) | - | @@ -1107,17 +1215,35 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/plugin.ts#:~:text=license%24) | 8.8.0 | | | [annotations.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/routes/annotations.ts#:~:text=authc) | - | | | [initialization.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/saved_objects/initialization/initialization.ts#:~:text=authz), [sync_task.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/saved_objects/sync_task.ts#:~:text=authz), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/plugin.ts#:~:text=authz), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/plugin.ts#:~:text=authz) | - | +| | [capabilities_switcher.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/lib/capabilities/capabilities_switcher.ts#:~:text=authRequired) | - | | | [kibana.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/common/types/kibana.ts#:~:text=SimpleSavedObject), [kibana.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/common/types/kibana.ts#:~:text=SimpleSavedObject) | - | | | [modules.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/common/types/modules.ts#:~:text=SavedObjectAttributes), [modules.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/common/types/modules.ts#:~:text=SavedObjectAttributes) | - | | | [saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/saved_objects/saved_objects.ts#:~:text=migrations), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/saved_objects/saved_objects.ts#:~:text=migrations), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/ml/server/saved_objects/saved_objects.ts#:~:text=migrations) | - | +## mockIdpPlugin + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-mock-idp-plugin/server/plugin.ts#:~:text=authRequired), [plugin.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-mock-idp-plugin/server/plugin.ts#:~:text=authRequired), [plugin.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-mock-idp-plugin/server/plugin.ts#:~:text=authRequired), [plugin.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-mock-idp-plugin/server/plugin.ts#:~:text=authRequired) | - | + + + ## monitoring | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [url_state.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/url_state.ts#:~:text=syncQueryStateWithUrl), [url_state.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/url_state.ts#:~:text=syncQueryStateWithUrl) | - | +| | [header_menu_portal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/components/header_menu/header_menu_portal.tsx#:~:text=toMountPoint), [header_menu_portal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/components/header_menu/header_menu_portal.tsx#:~:text=toMountPoint) | - | + + + +## monitoringCollection + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [get_metrics_by_type.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring_collection/server/routes/api/v1/dynamic_route/get_metrics_by_type.ts#:~:text=authRequired), [get_metrics.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring_collection/server/routes/api/v1/prometheus/get_metrics.ts#:~:text=authRequired) | - | @@ -1125,7 +1251,15 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/index.ts#:~:text=authc), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/index.ts#:~:text=authc) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/index.ts#:~:text=authc), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/index.ts#:~:text=authc) | - | + + + +## observabilityAIAssistantApp + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.tsx#:~:text=AssistantAvatar), [ai_assistant.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/ai_assistant.tsx#:~:text=AssistantAvatar), [ai_assistant.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/ai_assistant.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/index.tsx#:~:text=AssistantAvatar) | - | @@ -1133,7 +1267,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/app.tsx#:~:text=wrapWithTheme), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/app.tsx#:~:text=wrapWithTheme) | - | +| | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/app.tsx#:~:text=wrapWithTheme), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/app.tsx#:~:text=wrapWithTheme) | - | @@ -1157,12 +1291,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion) | - | -| | [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion), [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion) | - | -| | [pack_queries_status_table.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/packs/pack_queries_status_table.tsx#:~:text=indexPatternId), [view_results_in_discover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/discover/view_results_in_discover.tsx#:~:text=indexPatternId), [use_discover_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/common/hooks/use_discover_link.tsx#:~:text=indexPatternId) | - | -| | [create_action_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/handlers/action/create_action_service.ts#:~:text=license%24) | 8.8.0 | -| | [add_to_timeline_button.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/timelines/add_to_timeline_button.tsx#:~:text=getHoverActions) | - | -| | [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion), [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion) | - | +| | [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion) | - | +| | [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion), [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion) | - | +| | [pack_queries_status_table.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx#:~:text=indexPatternId), [view_results_in_discover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/public/discover/view_results_in_discover.tsx#:~:text=indexPatternId), [use_discover_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/public/common/hooks/use_discover_link.tsx#:~:text=indexPatternId) | - | +| | [create_action_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/server/handlers/action/create_action_service.ts#:~:text=license%24) | 8.8.0 | +| | [add_to_timeline_button.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/public/timelines/add_to_timeline_button.tsx#:~:text=getHoverActions) | - | +| | [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion), [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion) | - | @@ -1170,8 +1304,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24) | 8.8.0 | -| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/server/services/license.ts#:~:text=license%24) | 8.8.0 | +| | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/painless_lab/public/plugin.tsx#:~:text=license%24) | 8.8.0 | +| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/painless_lab/server/services/license.ts#:~:text=license%24) | 8.8.0 | @@ -1195,7 +1329,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/remote_clusters/server/plugin.ts#:~:text=license%24) | 8.8.0 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/remote_clusters/server/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -1212,7 +1346,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/server/services/license.ts#:~:text=license%24) | 8.8.0 | +| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/rollup/server/services/license.ts#:~:text=license%24) | 8.8.0 | @@ -1278,6 +1412,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## searchAssistant + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/search_assistant/public/components/nav_control/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/search_assistant/public/components/nav_control/index.tsx#:~:text=AssistantAvatar) | - | + + + ## searchPlayground | Deprecated API | Reference location(s) | Remove By | @@ -1290,8 +1432,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24) | 8.8.0 | -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/server/plugin.ts#:~:text=license%24) | 8.8.0 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts#:~:text=license%24) | 8.8.0 | +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/searchprofiler/server/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -1314,6 +1456,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | 8.8.0 | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/plugin.ts#:~:text=license%24) | 8.8.0 | | | [logout_app.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/logout/logout_app.test.ts#:~:text=appBasePath) | - | +| | [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/common.ts#:~:text=authRequired), [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/common.ts#:~:text=authRequired), [oidc.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/oidc.ts#:~:text=authRequired), [oidc.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/oidc.ts#:~:text=authRequired), [oidc.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/oidc.ts#:~:text=authRequired), [oidc.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/oidc.ts#:~:text=authRequired), [oidc.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/oidc.ts#:~:text=authRequired), [saml.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authentication/saml.ts#:~:text=authRequired), [reset_session_page.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/authorization/reset_session_page.ts#:~:text=authRequired), [capture_url.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/routes/views/capture_url.ts#:~:text=authRequired)+ 12 more | - | | | [config.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/config.ts#:~:text=max) | - | | | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/plugin.tsx#:~:text=authc) | - | | | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/plugin.tsx#:~:text=authc) | - | @@ -1352,25 +1495,27 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/types/timeline/cells/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/types/timeline/cells/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/types/header_actions/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/types/header_actions/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kuery/index.ts#:~:text=BrowserFields)+ 70 more | - | | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyRequest), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyRequest), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyRequest) | - | | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts#:~:text=IndexFieldsStrategyResponse), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyResponse), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=IndexFieldsStrategyResponse) | - | +| | [agent_status_handler.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/routes/agent/agent_status_handler.ts#:~:text=authRequired), [resolver.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts#:~:text=authRequired), [resolver.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts#:~:text=authRequired), [resolver.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts#:~:text=authRequired), [update_insight.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/update_insight.ts#:~:text=authRequired), [get_insights.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts#:~:text=authRequired), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/routes/metadata/index.ts#:~:text=authRequired), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/routes/metadata/index.ts#:~:text=authRequired), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/routes/metadata/index.ts#:~:text=authRequired), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/routes/policy/index.ts#:~:text=authRequired)+ 19 more | - | | | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/hooks/types.ts#:~:text=SimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/hooks/types.ts#:~:text=SimpleSavedObject) | - | | | [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=migrationVersion)+ 34 more | - | | | [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes) | - | | | [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=SavedObject), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=SavedObject), [user_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts#:~:text=SavedObject), [user_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts#:~:text=SavedObject) | - | | | [timelines.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts#:~:text=migrations), [notes.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts#:~:text=migrations), [pinned_events.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts#:~:text=migrations), [legacy_saved_object_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts#:~:text=migrations), [saved_object_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts#:~:text=migrations) | - | | | [timelines.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts#:~:text=convertToMultiNamespaceTypeVersion), [notes.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts#:~:text=convertToMultiNamespaceTypeVersion), [pinned_events.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts#:~:text=convertToMultiNamespaceTypeVersion), [legacy_saved_object_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | +| | [workflow_insights_scan.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx#:~:text=AssistantAvatar), [workflow_insights_scan.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx#:~:text=AssistantAvatar), [header_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/assistant/header_link.tsx#:~:text=AssistantAvatar), [header_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/assistant/header_link.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.tsx#:~:text=AssistantAvatar), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/title/index.tsx#:~:text=AssistantAvatar)+ 17 more | - | | | [links.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/links.ts#:~:text=authc), [hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/lib/kibana/hooks.ts#:~:text=authc) | - | | | [use_bulk_get_user_profiles.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/user_profiles/use_bulk_get_user_profiles.tsx#:~:text=userProfiles), [use_get_current_user_profile.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/user_profiles/use_get_current_user_profile.tsx#:~:text=userProfiles) | - | | | [request_context_factory.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/request_context_factory.ts#:~:text=audit), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/plugin.ts#:~:text=audit), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/plugin.ts#:~:text=audit) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [trusted_apps_http_mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [trusted_apps_http_mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [trusted_apps_http_mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [mappers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/mappers.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID)+ 18 more | - | +| | [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [trusted_apps_http_mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [trusted_apps_http_mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [trusted_apps_http_mocks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/mocks/trusted_apps_http_mocks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [mappers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/mappers.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID)+ 18 more | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME) | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_DESCRIPTION) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [service_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID)+ 19 more | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exception_generator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exception_generator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID)+ 3 more | - | +| | [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [event_filter_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [event_filter_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_ID)+ 19 more | - | +| | [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_NAME) | - | +| | [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [create_event_filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/event_filters/index.ts#:~:text=ENDPOINT_EVENT_FILTERS_LIST_DESCRIPTION) | - | +| | [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exceptions_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exception_generator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [host_isolation_exception_generator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/endpoint/data_generators/host_isolation_exception_generator.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_ID)+ 3 more | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_NAME) | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/host_isolation_exceptions/index.ts#:~:text=ENDPOINT_HOST_ISOLATION_EXCEPTIONS_LIST_DESCRIPTION) | - | -| | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID)+ 1 more | - | +| | [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID), [lists.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.test.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_ID)+ 1 more | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_NAME) | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/blocklists/index.ts#:~:text=ENDPOINT_BLOCKLISTS_LIST_DESCRIPTION) | - | | | [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode), [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode), [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode), [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode), [use_colors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/resolver/view/use_colors.ts#:~:text=darkMode) | - | @@ -1408,7 +1553,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/server/services/license.ts#:~:text=license%24) | 8.8.0 | +| | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/snapshot_restore/server/services/license.ts#:~:text=license%24) | 8.8.0 | @@ -1418,6 +1563,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | ---------------|-----------|-----------| | | [on_post_auth_interceptor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts#:~:text=getKibanaFeatures), [spaces_usage_collector.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.ts#:~:text=getKibanaFeatures), [on_post_auth_interceptor.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts#:~:text=getKibanaFeatures) | 8.8.0 | | | [spaces_usage_collector.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/plugin.ts#:~:text=license%24), [spaces_usage_collector.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.test.ts#:~:text=license%24) | 8.8.0 | +| | [capabilities_switcher.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts#:~:text=authRequired) | - | | | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/legacy_urls/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/legacy_urls/types.ts#:~:text=ResolvedSimpleSavedObject) | - | | | [copy_to_space_flyout_internal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx#:~:text=createNewCopy) | - | | | [saved_objects_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/saved_objects/saved_objects_service.ts#:~:text=migrations), [saved_objects_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/saved_objects/saved_objects_service.ts#:~:text=migrations) | - | @@ -1442,11 +1588,11 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [stderr_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx#:~:text=indexPatternId) | - | -| | [synthetics_private_location.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts#:~:text=policy_id) | - | -| | [synthetics_private_location.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts#:~:text=policy_id) | - | -| | [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [enablement.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts#:~:text=authc), [enablement.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc)+ 6 more | - | -| | [synthetics_monitor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor.ts#:~:text=migrations) | - | +| | [stderr_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx#:~:text=indexPatternId) | - | +| | [synthetics_private_location.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts#:~:text=policy_id) | - | +| | [synthetics_private_location.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts#:~:text=policy_id) | - | +| | [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [enablement.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts#:~:text=authc), [enablement.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc), [get_api_key.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts#:~:text=authc)+ 6 more | - | +| | [synthetics_monitor.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor.ts#:~:text=migrations) | - | @@ -1454,6 +1600,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [background_task_utilization.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/routes/background_task_utilization.ts#:~:text=authRequired), [background_task_utilization.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts#:~:text=authRequired), [background_task_utilization.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts#:~:text=authRequired), [background_task_utilization.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts#:~:text=authRequired), [background_task_utilization.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts#:~:text=authRequired) | - | | | [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes) | - | | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/saved_objects/index.ts#:~:text=migrations) | - | @@ -1464,6 +1611,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [telemetry_usage_stats.ts](https://github.com/elastic/kibana/tree/main/src/plugins/telemetry/server/routes/telemetry_usage_stats.ts#:~:text=get), [telemetry_usage_stats.ts](https://github.com/elastic/kibana/tree/main/src/plugins/telemetry/server/routes/telemetry_usage_stats.ts#:~:text=get) | - | +| | [telemetry_config.ts](https://github.com/elastic/kibana/tree/main/src/plugins/telemetry/server/routes/telemetry_config.ts#:~:text=authRequired) | - | @@ -1471,7 +1619,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions), [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions), [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions), [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions) | - | +| | [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions), [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions), [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions), [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx#:~:text=getHoverActions) | - | @@ -1479,7 +1627,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts#:~:text=title) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/index.ts#:~:text=title) | - | @@ -1541,8 +1689,16 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title) | - | -| | [uptime_settings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts#:~:text=migrations) | - | +| | [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title) | - | +| | [uptime_settings.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts#:~:text=migrations) | - | + + + +## usageCollection + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [stats.ts](https://github.com/elastic/kibana/tree/main/src/plugins/usage_collection/server/routes/stats/stats.ts#:~:text=authRequired) | - | @@ -1550,7 +1706,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [use_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts#:~:text=title) | - | +| | [use_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts#:~:text=title) | - | @@ -1612,6 +1768,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [search_selection.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/wizard/search_selection/search_selection.tsx#:~:text=includeFields), [visualize_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx#:~:text=includeFields) | - | +| | [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/plugin.ts#:~:text=savedObjects), [visualize_listing.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx#:~:text=savedObjects) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/plugin.ts#:~:text=SavedObjectsClientContract), [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/plugin.ts#:~:text=SavedObjectsClientContract) | - | | | [visualize_listing.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx#:~:text=delete) | - | @@ -1632,4 +1789,4 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24) | 8.8.0 | \ No newline at end of file +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/watcher/public/plugin.ts#:~:text=license%24) | 8.8.0 | \ No newline at end of file diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 9d0be81c71e9a..4c2d320868d77 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -33,8 +33,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| upgradeAssistant | | [reindex_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/server/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/remote_clusters/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/server/services/license.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/server/services/license.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/server/services/license.ts#:~:text=license%24) | 8.8.0 | -| licenseManagement | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/license_management/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cross_cluster_replication/public/plugin.ts#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24) | 8.8.0 | +| upgradeAssistant | | [reindex_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/painless_lab/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/searchprofiler/server/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/remote_clusters/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/index_lifecycle_management/server/services/license.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/rollup/server/services/license.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/snapshot_restore/server/services/license.ts#:~:text=license%24) | 8.8.0 | +| licenseManagement | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/license_management/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/cross_cluster_replication/public/plugin.ts#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/private/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -42,7 +42,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| dashboard | | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal), [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal), [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal), [save_to_library.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/links/public/content_management/save_to_library.tsx#:~:text=SavedObjectSaveModal), [save_to_library.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/links/public/content_management/save_to_library.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | +| presentationUtil | | [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal), [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal), [save_to_library.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/links/public/content_management/save_to_library.tsx#:~:text=SavedObjectSaveModal), [save_to_library.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/links/public/content_management/save_to_library.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | @@ -72,7 +72,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| | graph | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/server/plugin.ts#:~:text=license%24) | 8.8.0 | -| graph | | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx#:~:text=SavedObjectSaveModal), [save_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | +| graph | | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx#:~:text=SavedObjectSaveModal), [save_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | @@ -123,7 +123,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| osquery | | [create_action_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/handlers/action/create_action_service.ts#:~:text=license%24) | 8.8.0 | +| osquery | | [create_action_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/platform/plugins/shared/osquery/server/handlers/action/create_action_service.ts#:~:text=license%24) | 8.8.0 | diff --git a/api_docs/dev_tools.devdocs.json b/api_docs/dev_tools.devdocs.json index 31f7b09093884..7bb0f9caff8eb 100644 --- a/api_docs/dev_tools.devdocs.json +++ b/api_docs/dev_tools.devdocs.json @@ -35,7 +35,7 @@ }, ", void, object, object>" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -49,7 +49,7 @@ "signature": [ "any" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -77,7 +77,7 @@ "DevToolApp", "; }" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -98,7 +98,7 @@ }, "" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -110,7 +110,7 @@ "tags": [], "label": "{ urlForwarding }", "description": [], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -124,7 +124,7 @@ "signature": [ "{ forwardApp: (legacyAppId: string, newAppId: string, rewritePath?: ((legacyPath: string) => string) | undefined) => void; }" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -143,7 +143,7 @@ "signature": [ "() => void" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -159,7 +159,7 @@ "signature": [ "() => void" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -185,7 +185,7 @@ "signature": [ "\"devTools\"" ], - "path": "src/plugins/dev_tools/common/constants.ts", + "path": "src/platform/plugins/shared/dev_tools/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -202,7 +202,7 @@ "signature": [ "\"devTools:enablePersistentConsole\"" ], - "path": "src/plugins/dev_tools/common/constants.ts", + "path": "src/platform/plugins/shared/dev_tools/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -216,7 +216,7 @@ "tags": [], "label": "DevToolsSetup", "description": [], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -235,7 +235,7 @@ ") => ", "DevToolApp" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -251,7 +251,7 @@ "signature": [ "CreateDevToolArgs" ], - "path": "src/plugins/dev_tools/public/plugin.ts", + "path": "src/platform/plugins/shared/dev_tools/public/plugin.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -290,7 +290,7 @@ "signature": [ "\"devTools\"" ], - "path": "src/plugins/dev_tools/common/constants.ts", + "path": "src/platform/plugins/shared/dev_tools/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -307,7 +307,7 @@ "signature": [ "\"devTools:enablePersistentConsole\"" ], - "path": "src/plugins/dev_tools/common/constants.ts", + "path": "src/platform/plugins/shared/dev_tools/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 120607e83301d..d7f4b9ff91b57 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.devdocs.json b/api_docs/discover.devdocs.json index 8536402e375e1..20681bf23e2e7 100644 --- a/api_docs/discover.devdocs.json +++ b/api_docs/discover.devdocs.json @@ -1171,6 +1171,26 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "discover", + "id": "def-public.DiscoverServices.userProfile", + "type": "Object", + "tags": [], + "label": "userProfile", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-user-profile-browser", + "scope": "public", + "docId": "kibKbnCoreUserProfileBrowserPluginApi", + "section": "def-public.UserProfileService", + "text": "UserProfileService" + } + ], + "path": "src/plugins/discover/public/build_services.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "discover", "id": "def-public.DiscoverServices.filterManager", @@ -3699,7 +3719,11 @@ "section": "def-public.SerializedTimeRange", "text": "SerializedTimeRange" }, - " & { savedObjectTitle?: string | undefined; savedObjectId?: string | undefined; savedObjectDescription?: string | undefined; nonPersistedDisplayOptions?: ", + " & { rawSavedObjectAttributes?: Partial> | undefined; savedObjectTitle?: string | undefined; savedObjectId?: string | undefined; savedObjectDescription?: string | undefined; nonPersistedDisplayOptions?: ", { "pluginId": "discover", "scope": "public", @@ -4711,24 +4735,24 @@ "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/hooks/use_get_logs_discover_link.tsx" }, { - "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/public/packs/pack_queries_status_table.tsx" + "path": "x-pack/platform/plugins/shared/osquery/public/discover/view_results_in_discover.tsx" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/public/discover/view_results_in_discover.tsx" + "path": "x-pack/platform/plugins/shared/osquery/public/common/hooks/use_discover_link.tsx" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/public/common/hooks/use_discover_link.tsx" + "plugin": "exploratoryView", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx" + "path": "x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx" } ] }, diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 65ee06b1e48b5..ca51f86ab12c4 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 214 | 0 | 166 | 30 | +| 215 | 0 | 167 | 30 | ## Client diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index db1b8f1e5cc3d..28bb96bc24e88 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/discover_shared.mdx b/api_docs/discover_shared.mdx index 174c8d5113416..a23733beb4f68 100644 --- a/api_docs/discover_shared.mdx +++ b/api_docs/discover_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverShared title: "discoverShared" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverShared plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverShared'] --- import discoverSharedObj from './discover_shared.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.devdocs.json b/api_docs/ecs_data_quality_dashboard.devdocs.json index bff702356c0e2..ddb5d4f105f49 100644 --- a/api_docs/ecs_data_quality_dashboard.devdocs.json +++ b/api_docs/ecs_data_quality_dashboard.devdocs.json @@ -24,7 +24,7 @@ "description": [ "The plugin setup interface" ], - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/types.ts", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -40,7 +40,7 @@ "description": [ "The plugin start interface" ], - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/types.ts", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index b6eeb24fdb051..1c37c03fa4cb4 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.devdocs.json b/api_docs/elastic_assistant.devdocs.json index 6292df433806a..32dc636af1e75 100644 --- a/api_docs/elastic_assistant.devdocs.json +++ b/api_docs/elastic_assistant.devdocs.json @@ -21,7 +21,7 @@ "description": [ "\nInterfaces for registering tools to be used by the elastic assistant" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -32,7 +32,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -43,7 +43,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -54,7 +54,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -65,7 +65,7 @@ "tags": [], "label": "sourceRegister", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -87,7 +87,7 @@ }, ") => boolean" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -107,7 +107,7 @@ "text": "AssistantToolParams" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -139,7 +139,7 @@ "ZodObjectAny", "> | null" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -159,7 +159,7 @@ "text": "AssistantToolParams" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -177,7 +177,7 @@ "tags": [], "label": "AssistantToolParams", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -191,7 +191,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -205,7 +205,7 @@ "signature": [ "{ id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[] | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -226,7 +226,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -237,7 +237,7 @@ "tags": [], "label": "isEnabledKnowledgeBase", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -251,7 +251,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1519,7 +1519,7 @@ "default", "; }" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1534,7 +1534,7 @@ "AIAssistantKnowledgeBaseDataClient", " | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1548,7 +1548,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1565,7 +1565,7 @@ "AssistantToolLlm", " | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1586,7 +1586,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1600,7 +1600,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1620,7 +1620,7 @@ "text": "Logger" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1634,7 +1634,7 @@ "signature": [ "((newReplacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\">) => void) | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1648,7 +1648,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\">" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1666,7 +1666,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1687,7 +1687,7 @@ }, " | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; } | { subAction: \"invokeAI\" | \"invokeStream\"; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; model?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, any>" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1701,7 +1701,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1722,7 +1722,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false } @@ -1736,7 +1736,7 @@ "tags": [], "label": "ElasticAssistantPluginSetupDependencies", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1756,7 +1756,7 @@ "text": "PluginSetupContract" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1804,7 +1804,7 @@ "; } | undefined>; }; } & ", "TrainedModelsProvider" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1824,7 +1824,7 @@ "text": "TaskManagerSetupContract" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1845,7 +1845,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false } @@ -1859,7 +1859,7 @@ "tags": [], "label": "ElasticAssistantPluginStartDependencies", "description": [], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1879,7 +1879,7 @@ "text": "PluginStartContract" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1899,7 +1899,7 @@ "text": "LlmTasksPluginStart" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1919,7 +1919,7 @@ "text": "InferenceServerStart" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1940,27 +1940,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "elasticAssistant", - "id": "def-server.ElasticAssistantPluginStartDependencies.security", - "type": "Object", - "tags": [], - "label": "security", - "description": [], - "signature": [ - { - "pluginId": "@kbn/core-security-server", - "scope": "server", - "docId": "kibKbnCoreSecurityServerPluginApi", - "section": "def-server.SecurityServiceStart", - "text": "SecurityServiceStart" - } - ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1980,7 +1960,7 @@ "text": "LicensingPluginStart" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2000,7 +1980,7 @@ "text": "ProductDocBaseStartContract" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false } @@ -2020,7 +2000,7 @@ "description": [ "The plugin setup interface" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2040,7 +2020,7 @@ "text": "PluginSetupContract" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false } @@ -2057,7 +2037,7 @@ "description": [ "The plugin start interface" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2079,7 +2059,7 @@ "text": "PluginStartContract" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2101,7 +2081,7 @@ "text": "InferenceServerStart" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2125,7 +2105,7 @@ }, ">) => void" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2141,7 +2121,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2166,7 +2146,7 @@ }, ">" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2193,7 +2173,7 @@ "text": "AssistantFeatures" } ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -2207,7 +2187,7 @@ "description": [ "Name of the plugin to get the features for" ], - "path": "x-pack/plugins/elastic_assistant/server/services/app_context.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/services/app_context.ts", "deprecated": false, "trackAdoption": false } @@ -2233,7 +2213,7 @@ }, "[]) => void" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2249,7 +2229,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2273,7 +2253,7 @@ }, "[]" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2301,7 +2281,7 @@ }, "[]" ], - "path": "x-pack/plugins/elastic_assistant/server/types.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -2315,7 +2295,7 @@ "description": [ "Name of the plugin to get the tools for" ], - "path": "x-pack/plugins/elastic_assistant/server/services/app_context.ts", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/services/app_context.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 6b43f2332caf1..bb5d907af814d 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 56 | 0 | 41 | 2 | +| 55 | 0 | 40 | 2 | ## Server diff --git a/api_docs/embeddable.devdocs.json b/api_docs/embeddable.devdocs.json index 23bb84e398ae2..4e5cef1a2d21b 100644 --- a/api_docs/embeddable.devdocs.json +++ b/api_docs/embeddable.devdocs.json @@ -2,377 +2,6 @@ "id": "embeddable", "client": { "classes": [ - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService", - "type": "Class", - "tags": [], - "label": "AttributeService", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.AttributeService", - "text": "AttributeService" - }, - "" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.Unnamed.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.Unnamed.$2", - "type": "Object", - "tags": [], - "label": "toasts", - "description": [], - "signature": [ - { - "pluginId": "@kbn/core-notifications-browser", - "scope": "public", - "docId": "kibKbnCoreNotificationsBrowserPluginApi", - "section": "def-public.IToasts", - "text": "IToasts" - } - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.Unnamed.$3", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "AttributeServiceOptions", - "" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.Unnamed.$4", - "type": "Function", - "tags": [], - "label": "getEmbeddableFactory", - "description": [], - "signature": [ - "((embeddableFactoryId: string) => ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableFactory", - "text": "EmbeddableFactory" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", any>, ", - { - "pluginId": "savedObjectsFinder", - "scope": "common", - "docId": "kibSavedObjectsFinderPluginApi", - "section": "def-common.FinderAttributes", - "text": "FinderAttributes" - }, - ">) | undefined" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.unwrapAttributes", - "type": "Function", - "tags": [], - "label": "unwrapAttributes", - "description": [], - "signature": [ - "(input: ValType | RefType) => Promise<", - "AttributeServiceUnwrapResult", - ">" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.unwrapAttributes.$1", - "type": "CompoundType", - "tags": [], - "label": "input", - "description": [], - "signature": [ - "ValType | RefType" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.wrapAttributes", - "type": "Function", - "tags": [], - "label": "wrapAttributes", - "description": [], - "signature": [ - "(newAttributes: SavedObjectAttributes, useRefType: boolean, input?: ValType | RefType | undefined) => Promise>" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.wrapAttributes.$1", - "type": "Uncategorized", - "tags": [], - "label": "newAttributes", - "description": [], - "signature": [ - "SavedObjectAttributes" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.wrapAttributes.$2", - "type": "boolean", - "tags": [], - "label": "useRefType", - "description": [], - "signature": [ - "boolean" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.wrapAttributes.$3", - "type": "CompoundType", - "tags": [], - "label": "input", - "description": [], - "signature": [ - "ValType | RefType | undefined" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.inputIsRefType", - "type": "Function", - "tags": [], - "label": "inputIsRefType", - "description": [], - "signature": [ - "(input: ValType | RefType) => input is RefType" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.inputIsRefType.$1", - "type": "CompoundType", - "tags": [], - "label": "input", - "description": [], - "signature": [ - "ValType | RefType" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.getInputAsValueType", - "type": "Function", - "tags": [], - "label": "getInputAsValueType", - "description": [], - "signature": [ - "(input: ValType | RefType) => Promise" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.getInputAsValueType.$1", - "type": "CompoundType", - "tags": [], - "label": "input", - "description": [], - "signature": [ - "ValType | RefType" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.getInputAsRefType", - "type": "Function", - "tags": [], - "label": "getInputAsRefType", - "description": [], - "signature": [ - "(input: ValType | RefType, saveOptions?: { showSaveModal: boolean; saveModalTitle?: string | undefined; } | { title: string; } | undefined) => Promise" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.getInputAsRefType.$1", - "type": "CompoundType", - "tags": [], - "label": "input", - "description": [], - "signature": [ - "ValType | RefType" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.AttributeService.getInputAsRefType.$2", - "type": "CompoundType", - "tags": [], - "label": "saveOptions", - "description": [], - "signature": [ - "{ showSaveModal: boolean; saveModalTitle?: string | undefined; } | { title: string; } | undefined" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.Container", @@ -8176,142 +7805,32 @@ "parentPluginId": "embeddable", "id": "def-public.EmbeddablePanel", "type": "Function", - "tags": [ - "deprecated" - ], - "label": "EmbeddablePanel", - "description": [], - "signature": [ - "(props: ", - "EmbeddablePanelProps", - ") => React.JSX.Element" - ], - "path": "src/plugins/embeddable/public/embeddable_panel/embeddable_panel.tsx", - "deprecated": true, - "trackAdoption": false, - "references": [ - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid_item.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid_item.tsx" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx" - } - ], - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddablePanel.$1", - "type": "CompoundType", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "EmbeddablePanelProps" - ], - "path": "src/plugins/embeddable/public/embeddable_panel/embeddable_panel.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableRenderer", - "type": "Function", - "tags": [], - "label": "EmbeddableRenderer", - "description": [ - "\nHelper react component to render an embeddable\nCan be used if you have an embeddable object or an embeddable factory\nSupports updating input by passing `input` prop\n" - ], - "signature": [ - "(props: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableRendererProps", - "text": "EmbeddableRendererProps" - }, - ") => React.JSX.Element" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableRenderer.$1", - "type": "CompoundType", - "tags": [], - "label": "props", - "description": [ - "- {@link EmbeddableRendererProps }" - ], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableRendererProps", - "text": "EmbeddableRendererProps" - }, - "" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableRoot", - "type": "Function", - "tags": [], - "label": "EmbeddableRoot", + "tags": [ + "deprecated" + ], + "label": "EmbeddablePanel", "description": [], "signature": [ - "({ embeddable, loading, error, input }: Props) => React.JSX.Element" + "(props: ", + "EmbeddablePanelProps", + ") => React.JSX.Element" ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_root.tsx", - "deprecated": false, + "path": "src/plugins/embeddable/public/embeddable_panel/embeddable_panel.tsx", + "deprecated": true, "trackAdoption": false, + "references": [], "children": [ { "parentPluginId": "embeddable", - "id": "def-public.EmbeddableRoot.$1", - "type": "Object", + "id": "def-public.EmbeddablePanel.$1", + "type": "CompoundType", "tags": [], - "label": "{ embeddable, loading, error, input }", + "label": "props", "description": [], "signature": [ - "Props" + "EmbeddablePanelProps" ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_root.tsx", + "path": "src/plugins/embeddable/public/embeddable_panel/embeddable_panel.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9163,7 +8682,7 @@ "section": "def-public.PresentationPanelProps", "text": "PresentationPanelProps" }, - ", \"showShadow\" | \"showBorder\" | \"showBadges\" | \"showNotifications\" | \"hideLoader\" | \"hideHeader\" | \"hideInspector\" | \"getActions\"> | undefined; hidePanelChrome?: boolean | undefined; onAnyStateChange?: ((state: ", + ", \"showShadow\" | \"showBorder\" | \"showBadges\" | \"showNotifications\" | \"hideLoader\" | \"hideHeader\" | \"hideInspector\" | \"getActions\" | \"setDragHandles\"> | undefined; hidePanelChrome?: boolean | undefined; onAnyStateChange?: ((state: ", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -9277,7 +8796,7 @@ "section": "def-public.PresentationPanelProps", "text": "PresentationPanelProps" }, - ", \"showShadow\" | \"showBorder\" | \"showBadges\" | \"showNotifications\" | \"hideLoader\" | \"hideHeader\" | \"hideInspector\" | \"getActions\"> | undefined" + ", \"showShadow\" | \"showBorder\" | \"showBadges\" | \"showNotifications\" | \"hideLoader\" | \"hideHeader\" | \"hideInspector\" | \"getActions\" | \"setDragHandles\"> | undefined" ], "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx", "deprecated": false, @@ -9565,63 +9084,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "embeddable", - "id": "def-public.useEmbeddableFactory", - "type": "Function", - "tags": [], - "label": "useEmbeddableFactory", - "description": [], - "signature": [ - "({\n input,\n factory,\n onInputUpdated,\n}: EmbeddableRendererWithFactory) => readonly [", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ErrorEmbeddable", - "text": "ErrorEmbeddable" - }, - " | ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - " | undefined, boolean, string | undefined]" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.useEmbeddableFactory.$1", - "type": "Object", - "tags": [], - "label": "{\n input,\n factory,\n onInputUpdated,\n}", - "description": [], - "signature": [ - "EmbeddableRendererWithFactory" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.withEmbeddableSubscription", @@ -10011,20 +9473,7 @@ "path": "src/plugins/embeddable/public/lib/triggers/triggers.ts", "deprecated": true, "trackAdoption": false, - "references": [ - { - "plugin": "embeddableEnhanced", - "path": "x-pack/plugins/embeddable_enhanced/public/plugin.ts" - }, - { - "plugin": "embeddableEnhanced", - "path": "x-pack/plugins/embeddable_enhanced/public/plugin.ts" - }, - { - "plugin": "embeddableEnhanced", - "path": "x-pack/plugins/embeddable_enhanced/public/plugin.ts" - } - ], + "references": [], "children": [ { "parentPluginId": "embeddable", @@ -13455,23 +12904,6 @@ } ], "misc": [ - { - "parentPluginId": "embeddable", - "id": "def-public.ATTRIBUTE_SERVICE_KEY", - "type": "string", - "tags": [], - "label": "ATTRIBUTE_SERVICE_KEY", - "description": [ - "\nThe attribute service is a shared, generic service that embeddables can use to provide the functionality\nrequired to fulfill the requirements of the ReferenceOrValueEmbeddable interface. The attribute_service\ncan also be used as a higher level wrapper to transform an embeddable input shape that references a saved object\ninto an embeddable input shape that contains that saved object's attributes by value." - ], - "signature": [ - "\"attributes\"" - ], - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.CELL_VALUE_TRIGGER", @@ -13648,23 +13080,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableRendererProps", - "type": "Type", - "tags": [], - "label": "EmbeddableRendererProps", - "description": [ - "\nThis type is a publicly exposed props of {@link EmbeddableRenderer}\nUnion is used to validate that or factory or embeddable is passed in, but it can't be both simultaneously\nIn case when embeddable is passed in, input is optional, because there is already an input inside of embeddable object\nIn case when factory is used, then input is required, because it will be used as initial input to create an embeddable object" - ], - "signature": [ - "EmbeddableRendererPropsWithEmbeddable | EmbeddableRendererWithFactory" - ], - "path": "src/plugins/embeddable/public/lib/embeddables/embeddable_renderer.tsx", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.MULTI_VALUE_CLICK_TRIGGER", @@ -14747,48 +14162,6 @@ } ], "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableSetup.setCustomEmbeddableFactoryProvider", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "setCustomEmbeddableFactoryProvider", - "description": [], - "signature": [ - "(customProvider: ", - "EmbeddableFactoryProvider", - ") => void" - ], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": true, - "trackAdoption": false, - "references": [ - { - "plugin": "embeddableEnhanced", - "path": "x-pack/plugins/embeddable_enhanced/public/plugin.ts" - } - ], - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableSetup.setCustomEmbeddableFactoryProvider.$1", - "type": "Function", - "tags": [], - "label": "customProvider", - "description": [], - "signature": [ - "EmbeddableFactoryProvider" - ], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] } ], "lifecycle": "setup", @@ -14831,40 +14204,6 @@ "deprecated": false, "trackAdoption": false, "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStart.reactEmbeddableRegistryHasKey", - "type": "Function", - "tags": [], - "label": "reactEmbeddableRegistryHasKey", - "description": [ - "\nChecks if a {@link ReactEmbeddableFactory} has been registered using {@link registerReactEmbeddableFactory}" - ], - "signature": [ - "(type: string) => boolean" - ], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStart.reactEmbeddableRegistryHasKey.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, { "parentPluginId": "embeddable", "id": "def-public.EmbeddableStart.getEmbeddableFactory", @@ -14944,56 +14283,7 @@ "path": "src/plugins/embeddable/public/plugin.tsx", "deprecated": true, "trackAdoption": false, - "references": [ - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" - }, - { - "plugin": "investigateApp", - "path": "x-pack/plugins/observability_solution/investigate_app/public/items/embeddable_item/register_embeddable_item.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/create/create_dashboard.test.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/services/dashboard_content_management_service/lib/migrate_dashboard_input.test.ts" - } - ], + "references": [], "children": [ { "parentPluginId": "embeddable", @@ -15085,10 +14375,6 @@ "deprecated": true, "trackAdoption": false, "references": [ - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/public/components/workpad_header/editor_menu/editor_menu.tsx" @@ -15150,96 +14436,6 @@ } ], "returnComment": [] - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStart.getAttributeService", - "type": "Function", - "tags": [], - "label": "getAttributeService", - "description": [], - "signature": [ - "(type: string, options: ", - "AttributeServiceOptions", - ") => ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.AttributeService", - "text": "AttributeService" - }, - "" - ], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStart.getAttributeService.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "embeddable", - "id": "def-public.EmbeddableStart.getAttributeService.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "signature": [ - "AttributeServiceOptions", - "" - ], - "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] } ], "lifecycle": "start", diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 322a77db05fd8..f86e73b52e757 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 571 | 1 | 462 | 9 | +| 537 | 1 | 433 | 6 | ## Client diff --git a/api_docs/embeddable_enhanced.devdocs.json b/api_docs/embeddable_enhanced.devdocs.json index a9e2fd9be15e6..c8578b855fb38 100644 --- a/api_docs/embeddable_enhanced.devdocs.json +++ b/api_docs/embeddable_enhanced.devdocs.json @@ -70,92 +70,6 @@ } ], "interfaces": [ - { - "parentPluginId": "embeddableEnhanced", - "id": "def-public.EnhancedEmbeddableContext", - "type": "Interface", - "tags": [ - "deprecated" - ], - "label": "EnhancedEmbeddableContext", - "description": [], - "path": "x-pack/plugins/embeddable_enhanced/public/types.ts", - "deprecated": true, - "trackAdoption": false, - "references": [], - "children": [ - { - "parentPluginId": "embeddableEnhanced", - "id": "def-public.EnhancedEmbeddableContext.embeddable", - "type": "CompoundType", - "tags": [], - "label": "embeddable", - "description": [], - "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.IEmbeddable", - "text": "IEmbeddable" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", any> & Partial<{ enhancements: { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "public", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-public.DynamicActionManager", - "text": "DynamicActionManager" - }, - "; }; setDynamicActions: (newState: { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined) => void; dynamicActionsState$: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishingSubject", - "text": "PublishingSubject" - }, - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined>; }>" - ], - "path": "x-pack/plugins/embeddable_enhanced/public/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "embeddableEnhanced", "id": "def-public.SetupDependencies", @@ -267,75 +181,6 @@ ], "enums": [], "misc": [ - { - "parentPluginId": "embeddableEnhanced", - "id": "def-public.drilldownGrouping", - "type": "Array", - "tags": [], - "label": "drilldownGrouping", - "description": [], - "signature": [ - { - "pluginId": "@kbn/ui-actions-browser", - "scope": "common", - "docId": "kibKbnUiActionsBrowserPluginApi", - "section": "def-common.PresentableGroup", - "text": "PresentableGroup" - }, - "[]" - ], - "path": "x-pack/plugins/embeddable_enhanced/public/actions/drilldown_grouping.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "embeddableEnhanced", - "id": "def-public.EnhancedEmbeddable", - "type": "Type", - "tags": [], - "label": "EnhancedEmbeddable", - "description": [], - "signature": [ - "E & Partial<{ enhancements: { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "public", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-public.DynamicActionManager", - "text": "DynamicActionManager" - }, - "; }; setDynamicActions: (newState: { dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined) => void; dynamicActionsState$: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "public", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-public.PublishingSubject", - "text": "PublishingSubject" - }, - "<{ dynamicActions: ", - { - "pluginId": "uiActionsEnhanced", - "scope": "common", - "docId": "kibUiActionsEnhancedPluginApi", - "section": "def-common.DynamicActionsState", - "text": "DynamicActionsState" - }, - "; } | undefined>; }>" - ], - "path": "x-pack/plugins/embeddable_enhanced/public/types.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "embeddableEnhanced", "id": "def-public.HasDynamicActions", diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 27b652f7f4eae..497008854511d 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 19 | 0 | 19 | 2 | +| 15 | 0 | 15 | 2 | ## Client diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index 82b512914871e..a8ab44b19c956 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index f5e294b712406..ed5840fa99418 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/entities_data_access.mdx b/api_docs/entities_data_access.mdx index 4fc0397643c0a..e9adca574a60d 100644 --- a/api_docs/entities_data_access.mdx +++ b/api_docs/entities_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entitiesDataAccess title: "entitiesDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the entitiesDataAccess plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entitiesDataAccess'] --- import entitiesDataAccessObj from './entities_data_access.devdocs.json'; diff --git a/api_docs/entity_manager.devdocs.json b/api_docs/entity_manager.devdocs.json index 9359e3ca7c1d7..aef2003a03b64 100644 --- a/api_docs/entity_manager.devdocs.json +++ b/api_docs/entity_manager.devdocs.json @@ -21,7 +21,7 @@ "label": "repositoryClient", "description": [], "signature": [ - "(endpoint: TEndpoint, ...args: MaybeOptionalArgs<", + "(endpoint: TEndpoint, ...args: MaybeOptionalArgs<", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -29,7 +29,25 @@ "section": "def-common.ClientRequestParamsOf", "text": "ClientRequestParamsOf" }, - "<{ \"GET /internal/entities/v2/definitions/sources\": { endpoint: \"GET /internal/entities/v2/definitions/sources\"; handler: ServerRouteHandler<", + "<{ \"POST /internal/entities/v2/_count\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/entities/v2/_count\", Zod.ZodObject<{ body: Zod.ZodObject<{ types: Zod.ZodOptional>; filters: Zod.ZodOptional>; start: Zod.ZodEffects>, string, string | undefined>; end: Zod.ZodEffects>, string, string | undefined>; }, \"strip\", Zod.ZodTypeAny, { start: string; end: string; filters?: string[] | undefined; types?: string[] | undefined; }, { start?: string | undefined; end?: string | undefined; filters?: string[] | undefined; types?: string[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { body: { start: string; end: string; filters?: string[] | undefined; types?: string[] | undefined; }; }, { body: { start?: string | undefined; end?: string | undefined; filters?: string[] | undefined; types?: string[] | undefined; }; }>, ", + "EntityManagerRouteHandlerResources", + ", ", + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.IKibanaResponse", + "text": "IKibanaResponse" + }, + "<{ total: number; types: Record; errors: string[]; }>, undefined>; \"GET /internal/entities/v2/definitions/sources\": { endpoint: \"GET /internal/entities/v2/definitions/sources\"; handler: ServerRouteHandler<", "EntityManagerRouteHandlerResources", ", undefined, ", { @@ -65,7 +83,7 @@ "section": "def-server.IKibanaResponse", "text": "IKibanaResponse" }, - "<{ source: { id: string; filters: string[]; metadata_fields: string[]; type_id: string; index_patterns: string[]; identity_fields: string[]; timestamp_field?: string | undefined; display_name?: string | undefined; }; }>, undefined>; \"GET /internal/entities/v2/definitions/types\": { endpoint: \"GET /internal/entities/v2/definitions/types\"; handler: ServerRouteHandler<", + ", undefined>; \"GET /internal/entities/v2/definitions/types\": { endpoint: \"GET /internal/entities/v2/definitions/types\"; handler: ServerRouteHandler<", "EntityManagerRouteHandlerResources", ", undefined, ", { @@ -75,7 +93,7 @@ "section": "def-server.IKibanaResponse", "text": "IKibanaResponse" }, - "<{ types: { id: string; }[]; }>>; security?: ", + "<{ types: { id: string; display_name: string; }[]; }>>; security?: ", { "pluginId": "@kbn/core-http-server", "scope": "server", @@ -91,7 +109,7 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"POST /internal/entities/v2/definitions/types\", Zod.ZodObject<{ body: Zod.ZodObject<{ type: Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>; }, \"strip\", Zod.ZodTypeAny, { type: { id: string; }; }, { type: { id: string; }; }>; }, \"strip\", Zod.ZodTypeAny, { body: { type: { id: string; }; }; }, { body: { type: { id: string; }; }; }>, ", + "<\"POST /internal/entities/v2/definitions/types\", Zod.ZodObject<{ body: Zod.ZodObject<{ type: Zod.ZodObject<{ id: Zod.ZodString; display_name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; display_name: string; }, { id: string; display_name: string; }>; }, \"strip\", Zod.ZodTypeAny, { type: { id: string; display_name: string; }; }, { type: { id: string; display_name: string; }; }>; }, \"strip\", Zod.ZodTypeAny, { body: { type: { id: string; display_name: string; }; }; }, { body: { type: { id: string; display_name: string; }; }; }>, ", "EntityManagerRouteHandlerResources", ", ", { @@ -127,7 +145,7 @@ "section": "def-common.EntityV2", "text": "EntityV2" }, - "[]; }>, undefined>; \"POST /internal/entities/v2/_search\": ", + "[]; errors: string[]; }>, undefined>; \"POST /internal/entities/v2/_search\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -449,7 +467,25 @@ "section": "def-common.ReturnOf", "text": "ReturnOf" }, - "<{ \"GET /internal/entities/v2/definitions/sources\": { endpoint: \"GET /internal/entities/v2/definitions/sources\"; handler: ServerRouteHandler<", + "<{ \"POST /internal/entities/v2/_count\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/entities/v2/_count\", Zod.ZodObject<{ body: Zod.ZodObject<{ types: Zod.ZodOptional>; filters: Zod.ZodOptional>; start: Zod.ZodEffects>, string, string | undefined>; end: Zod.ZodEffects>, string, string | undefined>; }, \"strip\", Zod.ZodTypeAny, { start: string; end: string; filters?: string[] | undefined; types?: string[] | undefined; }, { start?: string | undefined; end?: string | undefined; filters?: string[] | undefined; types?: string[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { body: { start: string; end: string; filters?: string[] | undefined; types?: string[] | undefined; }; }, { body: { start?: string | undefined; end?: string | undefined; filters?: string[] | undefined; types?: string[] | undefined; }; }>, ", + "EntityManagerRouteHandlerResources", + ", ", + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.IKibanaResponse", + "text": "IKibanaResponse" + }, + "<{ total: number; types: Record; errors: string[]; }>, undefined>; \"GET /internal/entities/v2/definitions/sources\": { endpoint: \"GET /internal/entities/v2/definitions/sources\"; handler: ServerRouteHandler<", "EntityManagerRouteHandlerResources", ", undefined, ", { @@ -485,7 +521,7 @@ "section": "def-server.IKibanaResponse", "text": "IKibanaResponse" }, - "<{ source: { id: string; filters: string[]; metadata_fields: string[]; type_id: string; index_patterns: string[]; identity_fields: string[]; timestamp_field?: string | undefined; display_name?: string | undefined; }; }>, undefined>; \"GET /internal/entities/v2/definitions/types\": { endpoint: \"GET /internal/entities/v2/definitions/types\"; handler: ServerRouteHandler<", + ", undefined>; \"GET /internal/entities/v2/definitions/types\": { endpoint: \"GET /internal/entities/v2/definitions/types\"; handler: ServerRouteHandler<", "EntityManagerRouteHandlerResources", ", undefined, ", { @@ -495,7 +531,7 @@ "section": "def-server.IKibanaResponse", "text": "IKibanaResponse" }, - "<{ types: { id: string; }[]; }>>; security?: ", + "<{ types: { id: string; display_name: string; }[]; }>>; security?: ", { "pluginId": "@kbn/core-http-server", "scope": "server", @@ -511,7 +547,7 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"POST /internal/entities/v2/definitions/types\", Zod.ZodObject<{ body: Zod.ZodObject<{ type: Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>; }, \"strip\", Zod.ZodTypeAny, { type: { id: string; }; }, { type: { id: string; }; }>; }, \"strip\", Zod.ZodTypeAny, { body: { type: { id: string; }; }; }, { body: { type: { id: string; }; }; }>, ", + "<\"POST /internal/entities/v2/definitions/types\", Zod.ZodObject<{ body: Zod.ZodObject<{ type: Zod.ZodObject<{ id: Zod.ZodString; display_name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; display_name: string; }, { id: string; display_name: string; }>; }, \"strip\", Zod.ZodTypeAny, { type: { id: string; display_name: string; }; }, { type: { id: string; display_name: string; }; }>; }, \"strip\", Zod.ZodTypeAny, { body: { type: { id: string; display_name: string; }; }; }, { body: { type: { id: string; display_name: string; }; }; }>, ", "EntityManagerRouteHandlerResources", ", ", { @@ -547,7 +583,7 @@ "section": "def-common.EntityV2", "text": "EntityV2" }, - "[]; }>, undefined>; \"POST /internal/entities/v2/_search\": ", + "[]; errors: string[]; }>, undefined>; \"POST /internal/entities/v2/_search\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -870,7 +906,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false }, @@ -933,7 +969,7 @@ }, "]" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false } @@ -1458,7 +1494,25 @@ "label": "EntityManagerRouteRepository", "description": [], "signature": [ - "{ \"GET /internal/entities/v2/definitions/sources\": { endpoint: \"GET /internal/entities/v2/definitions/sources\"; handler: ServerRouteHandler<", + "{ \"POST /internal/entities/v2/_count\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/entities/v2/_count\", Zod.ZodObject<{ body: Zod.ZodObject<{ types: Zod.ZodOptional>; filters: Zod.ZodOptional>; start: Zod.ZodEffects>, string, string | undefined>; end: Zod.ZodEffects>, string, string | undefined>; }, \"strip\", Zod.ZodTypeAny, { start: string; end: string; filters?: string[] | undefined; types?: string[] | undefined; }, { start?: string | undefined; end?: string | undefined; filters?: string[] | undefined; types?: string[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { body: { start: string; end: string; filters?: string[] | undefined; types?: string[] | undefined; }; }, { body: { start?: string | undefined; end?: string | undefined; filters?: string[] | undefined; types?: string[] | undefined; }; }>, ", + "EntityManagerRouteHandlerResources", + ", ", + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.IKibanaResponse", + "text": "IKibanaResponse" + }, + "<{ total: number; types: Record; errors: string[]; }>, undefined>; \"GET /internal/entities/v2/definitions/sources\": { endpoint: \"GET /internal/entities/v2/definitions/sources\"; handler: ServerRouteHandler<", "EntityManagerRouteHandlerResources", ", undefined, ", { @@ -1494,7 +1548,7 @@ "section": "def-server.IKibanaResponse", "text": "IKibanaResponse" }, - "<{ source: { id: string; filters: string[]; metadata_fields: string[]; type_id: string; index_patterns: string[]; identity_fields: string[]; timestamp_field?: string | undefined; display_name?: string | undefined; }; }>, undefined>; \"GET /internal/entities/v2/definitions/types\": { endpoint: \"GET /internal/entities/v2/definitions/types\"; handler: ServerRouteHandler<", + ", undefined>; \"GET /internal/entities/v2/definitions/types\": { endpoint: \"GET /internal/entities/v2/definitions/types\"; handler: ServerRouteHandler<", "EntityManagerRouteHandlerResources", ", undefined, ", { @@ -1504,7 +1558,7 @@ "section": "def-server.IKibanaResponse", "text": "IKibanaResponse" }, - "<{ types: { id: string; }[]; }>>; security?: ", + "<{ types: { id: string; display_name: string; }[]; }>>; security?: ", { "pluginId": "@kbn/core-http-server", "scope": "server", @@ -1520,7 +1574,7 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"POST /internal/entities/v2/definitions/types\", Zod.ZodObject<{ body: Zod.ZodObject<{ type: Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>; }, \"strip\", Zod.ZodTypeAny, { type: { id: string; }; }, { type: { id: string; }; }>; }, \"strip\", Zod.ZodTypeAny, { body: { type: { id: string; }; }; }, { body: { type: { id: string; }; }; }>, ", + "<\"POST /internal/entities/v2/definitions/types\", Zod.ZodObject<{ body: Zod.ZodObject<{ type: Zod.ZodObject<{ id: Zod.ZodString; display_name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; display_name: string; }, { id: string; display_name: string; }>; }, \"strip\", Zod.ZodTypeAny, { type: { id: string; display_name: string; }; }, { type: { id: string; display_name: string; }; }>; }, \"strip\", Zod.ZodTypeAny, { body: { type: { id: string; display_name: string; }; }; }, { body: { type: { id: string; display_name: string; }; }; }>, ", "EntityManagerRouteHandlerResources", ", ", { @@ -1556,7 +1610,7 @@ "section": "def-common.EntityV2", "text": "EntityV2" }, - "[]; }>, undefined>; \"POST /internal/entities/v2/_search\": ", + "[]; errors: string[]; }>, undefined>; \"POST /internal/entities/v2/_search\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", diff --git a/api_docs/entity_manager.mdx b/api_docs/entity_manager.mdx index ae6ffb373ccbb..2b266c53d250d 100644 --- a/api_docs/entity_manager.mdx +++ b/api_docs/entity_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entityManager title: "entityManager" image: https://source.unsplash.com/400x175/?github description: API docs for the entityManager plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entityManager'] --- import entityManagerObj from './entity_manager.devdocs.json'; diff --git a/api_docs/es_ui_shared.devdocs.json b/api_docs/es_ui_shared.devdocs.json index 9c63dfd307e9d..256f6645f5cac 100644 --- a/api_docs/es_ui_shared.devdocs.json +++ b/api_docs/es_ui_shared.devdocs.json @@ -21,7 +21,7 @@ "FieldToValueMap", ", any>" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -36,7 +36,7 @@ "(props: Props) => ", "FieldToValueMap" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -50,7 +50,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -68,7 +68,7 @@ "signature": [ "any" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -82,7 +82,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -108,7 +108,7 @@ }, ") => void" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -128,7 +128,7 @@ "text": "Frequency" } ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -148,7 +148,7 @@ "FieldToValueMap", ") => void" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -162,7 +162,7 @@ "signature": [ "FieldToValueMap" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -180,7 +180,7 @@ "signature": [ "() => React.JSX.Element | undefined" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -196,7 +196,7 @@ "signature": [ "() => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -217,7 +217,7 @@ "signature": [ "(value?: string | undefined) => string | undefined" ], - "path": "src/plugins/es_ui_shared/public/url/attempt_to_uri_decode.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/url/attempt_to_uri_decode.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -231,7 +231,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/es_ui_shared/public/url/attempt_to_uri_decode.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/url/attempt_to_uri_decode.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -250,7 +250,7 @@ "signature": [ "({ privilegesEndpoint, httpClient, children }: Props) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -264,7 +264,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -285,7 +285,7 @@ "ParsedQuery", "" ], - "path": "src/plugins/es_ui_shared/public/url/extract_query_params.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/url/extract_query_params.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -299,7 +299,7 @@ "signature": [ "string" ], - "path": "src/plugins/es_ui_shared/public/url/extract_query_params.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/url/extract_query_params.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -318,7 +318,7 @@ "signature": [ "({ label, helpText, onUpdate, value, defaultValue, codeEditorProps, error: propsError, ...rest }: Props) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/json_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/json_editor.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -333,7 +333,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/json_editor.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/json_editor.tsx", "deprecated": false, "trackAdoption": false } @@ -350,7 +350,7 @@ "signature": [ "({ title, message, dataTestSubj }: Props) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -364,7 +364,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -383,7 +383,7 @@ "signature": [ "({ title, error, actions, isCentered, ...rest }: Props) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -397,7 +397,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -416,7 +416,7 @@ "signature": [ "({ children }: { children?: React.ReactNode; }) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/public/components/page_loading/page_loading.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/page_loading/page_loading.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -430,7 +430,7 @@ "signature": [ "{ children?: React.ReactNode; }" ], - "path": "src/plugins/es_ui_shared/public/components/page_loading/page_loading.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/page_loading/page_loading.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -449,7 +449,7 @@ "signature": [ "({ title, error, actions, ...rest }: Props) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -463,7 +463,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -482,7 +482,7 @@ "signature": [ "({ inline, \"data-test-subj\": dataTestSubj, children, ...rest }: Props) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/public/components/section_loading/section_loading.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/section_loading/section_loading.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -496,7 +496,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/public/components/section_loading/section_loading.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/section_loading/section_loading.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -539,7 +539,7 @@ }, ">" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -559,7 +559,7 @@ "text": "HttpSetup" } ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -580,7 +580,7 @@ "text": "SendRequestConfig" } ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -600,7 +600,7 @@ "() => ", "Authorization" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -641,7 +641,7 @@ }, "" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -661,7 +661,7 @@ "text": "HttpSetup" } ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -682,7 +682,7 @@ "text": "UseRequestConfig" } ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -701,7 +701,7 @@ "signature": [ "(props: ViewApiRequestFlyoutProps) => React.JSX.Element" ], - "path": "src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -715,7 +715,7 @@ "signature": [ "ViewApiRequestFlyoutProps" ], - "path": "src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -734,7 +734,7 @@ "signature": [ "({ privileges: requiredPrivileges, children }: Props) => JSX.Element | null" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -748,7 +748,7 @@ "signature": [ "Props" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -766,7 +766,7 @@ "tags": [], "label": "Authorization", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -777,7 +777,7 @@ "tags": [], "label": "isLoading", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false }, @@ -792,7 +792,7 @@ "Error", " | null" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false }, @@ -812,7 +812,7 @@ "text": "Privileges" } ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false } @@ -826,7 +826,7 @@ "tags": [], "label": "Error", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -837,7 +837,7 @@ "tags": [], "label": "error", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false }, @@ -851,7 +851,7 @@ "signature": [ "string[] | undefined" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false }, @@ -865,7 +865,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false } @@ -889,7 +889,7 @@ }, "" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/use_json.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -903,7 +903,7 @@ "signature": [ "{ raw: string; format(): T; }" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/use_json.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts", "deprecated": false, "trackAdoption": false }, @@ -917,7 +917,7 @@ "signature": [ "() => boolean" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/use_json.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -933,7 +933,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/use_json.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts", "deprecated": false, "trackAdoption": false } @@ -947,7 +947,7 @@ "tags": [], "label": "MissingPrivileges", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -961,7 +961,7 @@ "signature": [ "[key: string]: string[] | undefined" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false } @@ -975,7 +975,7 @@ "tags": [], "label": "Privileges", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -986,7 +986,7 @@ "tags": [], "label": "hasAllPrivileges", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1006,7 +1006,7 @@ "text": "MissingPrivileges" } ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false } @@ -1020,7 +1020,7 @@ "tags": [], "label": "SendRequestConfig", "description": [], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1031,7 +1031,7 @@ "tags": [], "label": "path", "description": [], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1045,7 +1045,7 @@ "signature": [ "\"get\" | \"delete\" | \"head\" | \"post\" | \"put\" | \"patch\"" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1066,7 +1066,7 @@ }, " | undefined" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1080,7 +1080,7 @@ "signature": [ "any" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1096,7 +1096,7 @@ "signature": [ "boolean | undefined" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1110,7 +1110,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false } @@ -1134,7 +1134,7 @@ }, "" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1148,7 +1148,7 @@ "signature": [ "D | null" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1162,7 +1162,7 @@ "signature": [ "E | null" ], - "path": "src/plugins/es_ui_shared/public/request/send_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts", "deprecated": false, "trackAdoption": false } @@ -1193,7 +1193,7 @@ "text": "SendRequestConfig" } ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1207,7 +1207,7 @@ "signature": [ "number | undefined" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1221,7 +1221,7 @@ "signature": [ "any" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1235,7 +1235,7 @@ "signature": [ "((data: any) => any) | undefined" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1249,7 +1249,7 @@ "signature": [ "any" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1277,7 +1277,7 @@ }, "" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1288,7 +1288,7 @@ "tags": [], "label": "isInitialRequest", "description": [], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1299,7 +1299,7 @@ "tags": [], "label": "isLoading", "description": [], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1313,7 +1313,7 @@ "signature": [ "E | null" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1327,7 +1327,7 @@ "signature": [ "D | null | undefined" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false }, @@ -1341,7 +1341,7 @@ "signature": [ "() => void" ], - "path": "src/plugins/es_ui_shared/public/request/use_request.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1363,7 +1363,7 @@ "signature": [ "\"MINUTE\" | \"HOUR\" | \"DAY\" | \"WEEK\" | \"MONTH\" | \"YEAR\"" ], - "path": "src/plugins/es_ui_shared/public/components/cron_editor/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1386,7 +1386,7 @@ }, ") => void" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/use_json.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1408,7 +1408,7 @@ }, "" ], - "path": "src/plugins/es_ui_shared/public/components/json_editor/use_json.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts", "deprecated": false, "trackAdoption": false } @@ -1429,7 +1429,7 @@ "Authorization", ">" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1441,7 +1441,7 @@ "tags": [], "label": "indices", "description": [], - "path": "src/plugins/es_ui_shared/public/indices/index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1455,7 +1455,7 @@ "signature": [ "string[]" ], - "path": "src/plugins/es_ui_shared/public/indices/index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1469,7 +1469,7 @@ "signature": [ "(indexName?: string | undefined) => boolean" ], - "path": "src/plugins/es_ui_shared/public/indices/index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1484,7 +1484,7 @@ "signature": [ "string | undefined" ], - "path": "src/plugins/es_ui_shared/public/indices/validate/validate_index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/validate/validate_index.ts", "deprecated": false, "trackAdoption": false } @@ -1500,7 +1500,7 @@ "signature": [ "(indexName: string) => string[]" ], - "path": "src/plugins/es_ui_shared/public/indices/index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1512,7 +1512,7 @@ "tags": [], "label": "indexName", "description": [], - "path": "src/plugins/es_ui_shared/public/indices/validate/validate_index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/validate/validate_index.ts", "deprecated": false, "trackAdoption": false } @@ -1528,7 +1528,7 @@ "signature": [ "(indexName: string) => boolean" ], - "path": "src/plugins/es_ui_shared/public/indices/index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1540,7 +1540,7 @@ "tags": [], "label": "indexName", "description": [], - "path": "src/plugins/es_ui_shared/public/indices/validate/validate_index.ts", + "path": "src/platform/plugins/shared/es_ui_shared/public/indices/validate/validate_index.ts", "deprecated": false, "trackAdoption": false } @@ -1576,7 +1576,7 @@ }, "" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1590,7 +1590,7 @@ "signature": [ "EsErrorHandlerParams" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1609,7 +1609,7 @@ "signature": [ "(err: string) => ParsedError" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1623,7 +1623,7 @@ "signature": [ "string" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1649,7 +1649,7 @@ "tags": [], "label": "MissingPrivileges", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1663,7 +1663,7 @@ "signature": [ "[key: string]: string[] | undefined" ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false } @@ -1677,7 +1677,7 @@ "tags": [], "label": "Privileges", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1688,7 +1688,7 @@ "tags": [], "label": "hasAllPrivileges", "description": [], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1708,7 +1708,7 @@ "text": "MissingPrivileges" } ], - "path": "src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index c829036ad0276..719345261ea6c 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/esql.mdx b/api_docs/esql.mdx index b4ff3ce93c735..6300fe3c36b7d 100644 --- a/api_docs/esql.mdx +++ b/api_docs/esql.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esql title: "esql" image: https://source.unsplash.com/400x175/?github description: API docs for the esql plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esql'] --- import esqlObj from './esql.devdocs.json'; diff --git a/api_docs/esql_data_grid.mdx b/api_docs/esql_data_grid.mdx index b5060fdb05182..3906705bfa6d8 100644 --- a/api_docs/esql_data_grid.mdx +++ b/api_docs/esql_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esqlDataGrid title: "esqlDataGrid" image: https://source.unsplash.com/400x175/?github description: API docs for the esqlDataGrid plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esqlDataGrid'] --- import esqlDataGridObj from './esql_data_grid.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 11a33d66f096f..76d0893d86c29 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 02d5d22af7bc7..fd9eac0654ebb 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 9aa079d38af36..be1ffbb4409e8 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.devdocs.json b/api_docs/exploratory_view.devdocs.json index 1e5af66252fb0..3aed42a57a9a9 100644 --- a/api_docs/exploratory_view.devdocs.json +++ b/api_docs/exploratory_view.devdocs.json @@ -23,7 +23,7 @@ }, "; }, baseHref: string) => string" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -34,7 +34,7 @@ "tags": [], "label": "{ reportType, allSeries }", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -48,7 +48,7 @@ "signature": [ "\"heatmap\" | \"data-distribution\" | \"kpi-over-time\" | \"core-web-vitals\" | \"device-data-distribution\" | \"single-metric\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", "deprecated": false, "trackAdoption": false }, @@ -69,7 +69,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", "deprecated": false, "trackAdoption": false } @@ -85,7 +85,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -106,7 +106,7 @@ "ExploratoryViewPageProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -120,7 +120,7 @@ "signature": [ "ExploratoryViewPageProps" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -141,7 +141,7 @@ "FilterValueLabelProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -155,7 +155,7 @@ "signature": [ "FilterValueLabelProps" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -174,7 +174,7 @@ "signature": [ "(query: Record) => string" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -188,7 +188,7 @@ "signature": [ "Record" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -209,7 +209,7 @@ "SelectableUrlListProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -223,7 +223,7 @@ "signature": [ "SelectableUrlListProps" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -244,7 +244,7 @@ "ParsedQuery", "" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -258,7 +258,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -276,7 +276,7 @@ "tags": [], "label": "ConfigProps", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -297,7 +297,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -318,7 +318,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -332,7 +332,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false } @@ -346,7 +346,7 @@ "tags": [], "label": "ExploratoryEmbeddableProps", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -360,7 +360,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -374,7 +374,7 @@ "signature": [ "JSX.Element | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -395,7 +395,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -416,7 +416,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -437,7 +437,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -451,7 +451,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -465,7 +465,7 @@ "signature": [ "{ from: string; to: string; } | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -481,7 +481,7 @@ "AppDataType", ", string>> | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -495,7 +495,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -509,7 +509,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -524,7 +524,7 @@ "Position", " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -538,7 +538,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -552,7 +552,7 @@ "signature": [ "((param: { range: number[]; }) => void) | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -563,7 +563,7 @@ "tags": [], "label": "param", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -577,7 +577,7 @@ "signature": [ "number[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false } @@ -596,7 +596,7 @@ "signature": [ "((loading: boolean) => void) | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -610,7 +610,7 @@ "signature": [ "boolean" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -628,7 +628,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -643,7 +643,7 @@ "ReportConfigMap", " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -657,7 +657,7 @@ "signature": [ "\"heatmap\" | \"data-distribution\" | \"kpi-over-time\" | \"core-web-vitals\" | \"device-data-distribution\" | \"single-metric\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -671,7 +671,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -685,7 +685,7 @@ "signature": [ "string | JSX.Element | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -701,7 +701,7 @@ "ActionTypes", "[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -715,7 +715,7 @@ "signature": [ "\"right\" | \"center\" | \"left\" | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -729,7 +729,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -743,7 +743,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -757,7 +757,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -771,7 +771,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -785,7 +785,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -799,7 +799,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false }, @@ -814,7 +814,7 @@ "QueryDslQueryContainer", "[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx", "deprecated": false, "trackAdoption": false } @@ -828,7 +828,7 @@ "tags": [], "label": "ExploratoryViewPublicPluginsSetup", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -848,7 +848,7 @@ "text": "DataPublicPluginSetup" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -896,7 +896,7 @@ }, ") => void; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -916,7 +916,7 @@ "text": "TriggersAndActionsUIPublicPluginSetup" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -936,7 +936,7 @@ "text": "UsageCollectionSetup" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -957,7 +957,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -971,7 +971,7 @@ "tags": [], "label": "ExploratoryViewPublicPluginsStart", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -991,7 +991,7 @@ "text": "CasesPublicStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1014,7 +1014,7 @@ "ActiveCursor", "; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1034,7 +1034,7 @@ "text": "DataPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1054,7 +1054,7 @@ "text": "DataViewsServicePublic" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1074,7 +1074,7 @@ "text": "DiscoverStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1094,7 +1094,7 @@ "text": "EmbeddableStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1114,7 +1114,7 @@ "text": "LensPublicStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1134,7 +1134,7 @@ "text": "LicensingPluginStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1178,7 +1178,7 @@ }, ">; }) => void; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1198,7 +1198,7 @@ "text": "SecurityPluginStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1238,7 +1238,7 @@ }, ">): void; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1259,7 +1259,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1279,7 +1279,7 @@ "text": "TriggersAndActionsUIPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1299,7 +1299,7 @@ "text": "UsageCollectionSetup" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1319,7 +1319,7 @@ "text": "UnifiedSearchPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1340,7 +1340,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -1361,7 +1361,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -1375,7 +1375,7 @@ "tags": [], "label": "SeriesConfig", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1386,7 +1386,7 @@ "tags": [], "label": "reportType", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1416,7 +1416,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1438,7 +1438,7 @@ }, ">[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1452,7 +1452,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1466,7 +1466,7 @@ "signature": [ "\"area\" | \"line\" | \"bar\" | \"bar_stacked\" | \"area_stacked\" | \"bar_horizontal\" | \"bar_percentage_stacked\" | \"bar_horizontal_stacked\" | \"area_percentage_stacked\" | \"bar_horizontal_percentage_stacked\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1480,7 +1480,7 @@ "signature": [ "(string | { field: string; nested?: string | undefined; isNegated?: boolean | undefined; })[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1501,7 +1501,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1539,7 +1539,7 @@ }, ")[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1577,7 +1577,7 @@ }, ")[] | undefined; })[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1591,7 +1591,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1609,7 +1609,7 @@ "MetricOption", "[]; columnType?: string | undefined; })[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1623,7 +1623,7 @@ "signature": [ "{ [x: string]: string; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1634,7 +1634,7 @@ "tags": [], "label": "hasOperationType", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1655,7 +1655,7 @@ }, "<{ [key: string]: unknown; }> | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1669,7 +1669,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1690,7 +1690,7 @@ }, "[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1704,7 +1704,7 @@ "signature": [ "{ query: string; language: \"kuery\"; } | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false } @@ -1718,7 +1718,7 @@ "tags": [], "label": "SeriesUrl", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1729,7 +1729,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1743,7 +1743,7 @@ "signature": [ "{ to: string; from: string; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1757,7 +1757,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1778,7 +1778,7 @@ }, "[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1799,7 +1799,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1813,7 +1813,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1827,7 +1827,7 @@ "signature": [ "\"uptime\" | \"alerts\" | \"apm\" | \"synthetics\" | \"ux\" | \"infra_logs\" | \"infra_metrics\" | \"mobile\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1842,7 +1842,7 @@ "URLReportDefinition", " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1857,7 +1857,7 @@ "URLTextReportDefinition", " | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1871,7 +1871,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1885,7 +1885,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1899,7 +1899,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1913,7 +1913,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false } @@ -1927,7 +1927,7 @@ "tags": [], "label": "UrlFilter", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1938,7 +1938,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1952,7 +1952,7 @@ "signature": [ "(string | number)[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1966,7 +1966,7 @@ "signature": [ "(string | number)[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1980,7 +1980,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1994,7 +1994,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts", "deprecated": false, "trackAdoption": false } @@ -2010,7 +2010,7 @@ "tags": [], "label": "ReportTypes", "description": [], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2027,7 +2027,7 @@ "signature": [ "\"ALL_VALUES\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/url_constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/url_constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2049,7 +2049,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.tsx", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2064,7 +2064,7 @@ "signature": [ "\"/app/exploratory-view\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2079,7 +2079,7 @@ "signature": [ "\"ENVIRONMENT_ALL\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2094,7 +2094,7 @@ "signature": [ "\"FILTER_RECORDS\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2109,7 +2109,7 @@ "signature": [ "\"operation\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2124,7 +2124,7 @@ "signature": [ "\"___records___\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2139,7 +2139,7 @@ "signature": [ "\"RecordsPercentage\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2154,7 +2154,7 @@ "signature": [ "\"REPORT_METRIC_FIELD\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2169,7 +2169,7 @@ "signature": [ "\"TERMS_COLUMN\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2184,7 +2184,7 @@ "signature": [ "\"USE_BREAK_DOWN_COLUMN\"" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2205,7 +2205,7 @@ "DataHandler", ") => void; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "setup", @@ -2249,7 +2249,7 @@ }, ") => React.JSX.Element | null; }" ], - "path": "x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "start", diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 0747f3abccb98..dd51d773bf8d8 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.devdocs.json b/api_docs/expression_error.devdocs.json index 62ffbcbfcbc9b..dba511e558d27 100644 --- a/api_docs/expression_error.devdocs.json +++ b/api_docs/expression_error.devdocs.json @@ -16,10 +16,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -45,10 +45,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx", "deprecated": false, @@ -72,10 +71,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -103,10 +102,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_error/public/expression_renderers/error_renderer.tsx", "deprecated": false, @@ -125,17 +123,15 @@ "label": "getDebugRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -154,19 +150,16 @@ "id": "def-public.getDebugRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx", "deprecated": false, @@ -185,17 +178,15 @@ "label": "getErrorRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -216,19 +207,16 @@ "id": "def-public.getErrorRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_error/public/expression_renderers/error_renderer.tsx", "deprecated": false, diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index c73e5e84b358b..c1c34eb66c968 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.devdocs.json b/api_docs/expression_gauge.devdocs.json index 6ba87ba4bcf94..f6c764238b10a 100644 --- a/api_docs/expression_gauge.devdocs.json +++ b/api_docs/expression_gauge.devdocs.json @@ -708,7 +708,7 @@ "label": "labelMajorMode", "description": [], "signature": [ - "\"none\" | \"custom\" | \"auto\"" + "\"none\" | \"auto\" | \"custom\"" ], "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_functions.ts", "deprecated": false, @@ -1143,7 +1143,7 @@ "label": "GaugeLabelMajorMode", "description": [], "signature": [ - "\"none\" | \"custom\" | \"auto\"" + "\"none\" | \"auto\" | \"custom\"" ], "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_functions.ts", "deprecated": false, diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index c635b5fe388e0..ed97e14dc9114 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index b093aa04f77e4..37a28e93b2816 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.devdocs.json b/api_docs/expression_image.devdocs.json index 538b4756896a0..3fc201e165956 100644 --- a/api_docs/expression_image.devdocs.json +++ b/api_docs/expression_image.devdocs.json @@ -11,17 +11,15 @@ "label": "getImageRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -48,19 +46,16 @@ "id": "def-public.getImageRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_image/public/expression_renderers/image_renderer.tsx", "deprecated": false, @@ -84,10 +79,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -121,10 +116,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_image/public/expression_renderers/image_renderer.tsx", "deprecated": false, diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 89335338a43bc..8e529d608008d 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index 2e322f6395838..74b9136c9ad9f 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.devdocs.json b/api_docs/expression_metric.devdocs.json index 22138d1d9d741..a5d21f7749884 100644 --- a/api_docs/expression_metric.devdocs.json +++ b/api_docs/expression_metric.devdocs.json @@ -11,17 +11,15 @@ "label": "getMetricRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -48,19 +46,16 @@ "id": "def-public.getMetricRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx", "deprecated": false, @@ -84,10 +79,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -121,10 +116,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx", "deprecated": false, diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index d7280c0b2816e..6ed167f0e709f 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.devdocs.json b/api_docs/expression_metric_vis.devdocs.json index 8383126e6833c..943695ad45e68 100644 --- a/api_docs/expression_metric_vis.devdocs.json +++ b/api_docs/expression_metric_vis.devdocs.json @@ -773,6 +773,14 @@ "label": "palette", "description": [], "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteOutput", + "text": "PaletteOutput" + }, + "<", { "pluginId": "charts", "scope": "common", @@ -780,7 +788,7 @@ "section": "def-common.CustomPaletteState", "text": "CustomPaletteState" }, - " | undefined" + "> | undefined" ], "path": "src/plugins/chart_expressions/expression_metric/common/types/expression_renderers.ts", "deprecated": false, diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 9977283084d0b..df3179e6a7e49 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 312c988229f07..bc09bde273363 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.devdocs.json b/api_docs/expression_repeat_image.devdocs.json index 10a6801189d81..65a50ddeb3880 100644 --- a/api_docs/expression_repeat_image.devdocs.json +++ b/api_docs/expression_repeat_image.devdocs.json @@ -11,17 +11,15 @@ "label": "getRepeatImageRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -48,19 +46,16 @@ "id": "def-public.getRepeatImageRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx", "deprecated": false, @@ -84,10 +79,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -121,10 +116,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx", "deprecated": false, diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 4535d413fc816..6e00669a9fdc9 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.devdocs.json b/api_docs/expression_reveal_image.devdocs.json index bc0a3212309f8..cdda11e92d9f2 100644 --- a/api_docs/expression_reveal_image.devdocs.json +++ b/api_docs/expression_reveal_image.devdocs.json @@ -11,17 +11,15 @@ "label": "getRevealImageRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -42,19 +40,16 @@ "id": "def-public.getRevealImageRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx", "deprecated": false, @@ -78,10 +73,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -109,10 +104,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx", "deprecated": false, diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 7d1ab6f4a9a33..36e1bad0f5aa5 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.devdocs.json b/api_docs/expression_shape.devdocs.json index 2c47953861b51..f1790eef4a61b 100644 --- a/api_docs/expression_shape.devdocs.json +++ b/api_docs/expression_shape.devdocs.json @@ -35,17 +35,15 @@ "label": "getProgressRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -72,19 +70,16 @@ "id": "def-public.getProgressRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx", "deprecated": false, @@ -103,17 +98,15 @@ "label": "getShapeRenderer", "description": [], "signature": [ - "(theme$: ", - "Observable", - "<", + "(core: ", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ">) => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -140,19 +133,16 @@ "id": "def-public.getShapeRenderer.$1", "type": "Object", "tags": [], - "label": "theme$", + "label": "core", "description": [], "signature": [ - "Observable", - "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-public.CoreTheme", - "text": "CoreTheme" - }, - ">" + "docId": "kibKbnCoreLifecycleBrowserPluginApi", + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx", "deprecated": false, @@ -224,10 +214,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -261,10 +251,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx", "deprecated": false, @@ -336,10 +325,10 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" + "section": "def-public.CoreStart", + "text": "CoreStart" }, - ") => () => ", + ") => () => ", { "pluginId": "expressions", "scope": "common", @@ -373,10 +362,9 @@ "pluginId": "@kbn/core-lifecycle-browser", "scope": "public", "docId": "kibKbnCoreLifecycleBrowserPluginApi", - "section": "def-public.CoreSetup", - "text": "CoreSetup" - }, - "" + "section": "def-public.CoreStart", + "text": "CoreStart" + } ], "path": "src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx", "deprecated": false, diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index eff56c07d1a14..9b5a664c0d5f5 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index 734153b77ee31..c0bf90804dada 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.devdocs.json b/api_docs/expression_x_y.devdocs.json index 5e2c8408e14de..b938183e821f1 100644 --- a/api_docs/expression_x_y.devdocs.json +++ b/api_docs/expression_x_y.devdocs.json @@ -432,7 +432,7 @@ "label": "mode", "description": [], "signature": [ - "\"custom\" | \"full\" | \"dataBounds\"" + "\"full\" | \"custom\" | \"dataBounds\"" ], "path": "src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts", "deprecated": false, @@ -2378,7 +2378,7 @@ "label": "AxisExtentMode", "description": [], "signature": [ - "\"custom\" | \"full\" | \"dataBounds\"" + "\"full\" | \"custom\" | \"dataBounds\"" ], "path": "src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts", "deprecated": false, diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index fdf09df0f53f1..9e4e63f01b8f8 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 8228e88521717..df73114019e3b 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index c561174f5ce55..46c3e24e3dc0a 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.devdocs.json b/api_docs/field_formats.devdocs.json index b4cab8626387a..f12fc9280b47e 100644 --- a/api_docs/field_formats.devdocs.json +++ b/api_docs/field_formats.devdocs.json @@ -1210,7 +1210,7 @@ "label": "getParamDefaults", "description": [], "signature": [ - "() => { fieldType: null; colors: { range: string; regex: string; text: string; background: string; }[]; }" + "() => { fieldType: null; colors: { range: string; regex: string; text: string; background: string; boolean: string; }[]; }" ], "path": "src/plugins/field_formats/common/converters/color.tsx", "deprecated": false, @@ -1226,7 +1226,7 @@ "label": "findColorRuleForVal", "description": [], "signature": [ - "(val: string | number) => any" + "(val: string | number | boolean) => any" ], "path": "src/plugins/field_formats/common/converters/color.tsx", "deprecated": false, @@ -1240,7 +1240,7 @@ "label": "val", "description": [], "signature": [ - "string | number" + "string | number | boolean" ], "path": "src/plugins/field_formats/common/converters/color.tsx", "deprecated": false, @@ -6577,6 +6577,17 @@ "path": "src/plugins/field_formats/common/constants/color_default.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "fieldFormats", + "id": "def-common.DEFAULT_CONVERTER_COLOR.boolean", + "type": "string", + "tags": [], + "label": "boolean", + "description": [], + "path": "src/plugins/field_formats/common/constants/color_default.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 768d75caea360..61cbd7c7d40b4 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 292 | 5 | 253 | 3 | +| 293 | 5 | 254 | 3 | ## Client diff --git a/api_docs/fields_metadata.mdx b/api_docs/fields_metadata.mdx index 55d0837d9cf5a..3ad2b174625b6 100644 --- a/api_docs/fields_metadata.mdx +++ b/api_docs/fields_metadata.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldsMetadata title: "fieldsMetadata" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldsMetadata plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldsMetadata'] --- import fieldsMetadataObj from './fields_metadata.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 612626066ad89..da982baa469fc 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 7f4e32c22ca35..d765c6bc958ea 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index 0018dee49f984..c7f8fe390a59a 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index fdd4aea83eeb4..58e86a05e7d91 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -1688,14 +1688,6 @@ "plugin": "cloudDefend", "path": "x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/installation_stats_collector.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" - }, { "plugin": "cloudDefend", "path": "x-pack/plugins/cloud_defend/public/test/mocks.ts" @@ -1705,8 +1697,12 @@ "path": "x-pack/plugins/cloud_defend/public/test/mocks.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" }, { "plugin": "securitySolution", @@ -1716,6 +1712,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.test.ts" }, + { + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts" @@ -24576,14 +24576,6 @@ "plugin": "cloudDefend", "path": "x-pack/plugins/cloud_defend/server/lib/telemetry/collectors/installation_stats_collector.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" - }, { "plugin": "cloudDefend", "path": "x-pack/plugins/cloud_defend/public/test/mocks.ts" @@ -24593,8 +24585,12 @@ "path": "x-pack/plugins/cloud_defend/public/test/mocks.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts" }, { "plugin": "securitySolution", @@ -24604,6 +24600,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/metadata/support/endpoint_package_policies.test.ts" }, + { + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts" @@ -28710,7 +28710,7 @@ "label": "PackageSpecCategory", "description": [], "signature": [ - "\"connector\" | \"monitoring\" | \"security\" | \"observability\" | \"custom\" | \"infrastructure\" | \"kubernetes\" | \"cloud\" | \"advanced_analytics_ueba\" | \"analytics_engine\" | \"application_observability\" | \"auditd\" | \"authentication\" | \"aws\" | \"azure\" | \"big_data\" | \"cdn_security\" | \"config_management\" | \"connector_client\" | \"containers\" | \"crawler\" | \"credential_management\" | \"crm\" | \"custom_logs\" | \"database_security\" | \"datastore\" | \"dns_security\" | \"edr_xdr\" | \"cloudsecurity_cdr\" | \"elasticsearch_sdk\" | \"elastic_stack\" | \"email_security\" | \"firewall_security\" | \"google_cloud\" | \"iam\" | \"ids_ips\" | \"java_observability\" | \"language_client\" | \"languages\" | \"load_balancer\" | \"message_queue\" | \"native_search\" | \"network\" | \"network_security\" | \"notification\" | \"os_system\" | \"process_manager\" | \"productivity\" | \"productivity_security\" | \"proxy_security\" | \"sdk_search\" | \"stream_processing\" | \"support\" | \"threat_intel\" | \"ticketing\" | \"version_control\" | \"virtualization\" | \"vpn_security\" | \"vulnerability_management\" | \"web\" | \"web_application_firewall\" | \"websphere\" | \"workplace_search_content_source\" | \"app_search\" | \"enterprise_search\" | \"workplace_search\"" + "\"connector\" | \"monitoring\" | \"security\" | \"observability\" | \"infrastructure\" | \"kubernetes\" | \"cloud\" | \"custom\" | \"advanced_analytics_ueba\" | \"analytics_engine\" | \"application_observability\" | \"auditd\" | \"authentication\" | \"aws\" | \"azure\" | \"big_data\" | \"cdn_security\" | \"config_management\" | \"connector_client\" | \"containers\" | \"crawler\" | \"credential_management\" | \"crm\" | \"custom_logs\" | \"database_security\" | \"datastore\" | \"dns_security\" | \"edr_xdr\" | \"cloudsecurity_cdr\" | \"elasticsearch_sdk\" | \"elastic_stack\" | \"email_security\" | \"firewall_security\" | \"google_cloud\" | \"iam\" | \"ids_ips\" | \"java_observability\" | \"language_client\" | \"languages\" | \"load_balancer\" | \"message_queue\" | \"native_search\" | \"network\" | \"network_security\" | \"notification\" | \"os_system\" | \"process_manager\" | \"productivity\" | \"productivity_security\" | \"proxy_security\" | \"sdk_search\" | \"stream_processing\" | \"support\" | \"threat_intel\" | \"ticketing\" | \"version_control\" | \"virtualization\" | \"vpn_security\" | \"vulnerability_management\" | \"web\" | \"web_application_firewall\" | \"websphere\" | \"workplace_search_content_source\" | \"app_search\" | \"enterprise_search\" | \"workplace_search\"" ], "path": "x-pack/plugins/fleet/common/types/models/package_spec.ts", "deprecated": false, diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 1c16c88a74b2d..56c227202e452 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 63bfa4db9f189..ee2cfcd02d152 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index d0591ff26bd29..ade8bb782f02b 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index a873a6e0b36a4..61652419b43e8 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index b013fcc8c6007..760f3e778f9d7 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.devdocs.json b/api_docs/index_lifecycle_management.devdocs.json index d7ec7a91677c2..63d1165a96833 100644 --- a/api_docs/index_lifecycle_management.devdocs.json +++ b/api_docs/index_lifecycle_management.devdocs.json @@ -28,7 +28,7 @@ "text": "SerializableRecord" } ], - "path": "x-pack/plugins/index_lifecycle_management/public/locator.ts", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/locator.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -42,7 +42,7 @@ "signature": [ "\"policies_list\" | \"policy_edit\" | \"policy_create\"" ], - "path": "x-pack/plugins/index_lifecycle_management/public/locator.ts", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/locator.ts", "deprecated": false, "trackAdoption": false }, @@ -56,7 +56,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/index_lifecycle_management/public/locator.ts", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/locator.ts", "deprecated": false, "trackAdoption": false } @@ -76,7 +76,7 @@ "signature": [ "\"ILM_LOCATOR_ID\"" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 23b176f4d0756..469d7686d5606 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.devdocs.json b/api_docs/index_management.devdocs.json index ca65364f8319b..8229c1e6dd94c 100644 --- a/api_docs/index_management.devdocs.json +++ b/api_docs/index_management.devdocs.json @@ -108,7 +108,7 @@ "tags": [], "label": "Index", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -119,7 +119,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -133,7 +133,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -147,7 +147,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -158,7 +158,7 @@ "tags": [], "label": "isFrozen", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -169,7 +169,7 @@ "tags": [], "label": "hidden", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -183,7 +183,7 @@ "signature": [ "string | string[]" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -197,7 +197,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -211,7 +211,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -226,7 +226,7 @@ "IlmExplainLifecycleLifecycleExplain", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -240,7 +240,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -255,7 +255,7 @@ "HealthStatus", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -270,7 +270,7 @@ "IndicesStatsIndexMetadataState", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -284,7 +284,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -298,7 +298,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -312,7 +312,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -326,7 +326,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -340,7 +340,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -354,7 +354,7 @@ "tags": [], "label": "IndexMappingProps", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -375,7 +375,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -389,7 +389,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -403,7 +403,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -445,7 +445,7 @@ }, " & ({ page: \"data_streams_details\"; dataStreamName?: string | undefined; } | { page: \"index_template\"; indexTemplate: string; } | { page: \"component_template\"; componentTemplate: string; })" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -459,7 +459,7 @@ "tags": [], "label": "IndexManagementPluginSetup", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -479,7 +479,7 @@ "text": "PublicApiServiceSetup" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -499,7 +499,7 @@ "text": "ExtensionsSetup" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -520,7 +520,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -535,7 +535,7 @@ "tags": [], "label": "IndexManagementPluginStart", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -555,7 +555,7 @@ "text": "ExtensionsSetup" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -585,7 +585,7 @@ }, ">" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -596,7 +596,7 @@ "tags": [], "label": "deps", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -617,7 +617,7 @@ }, "" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -652,7 +652,7 @@ }, ">" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -663,7 +663,7 @@ "tags": [], "label": "deps", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -684,7 +684,7 @@ }, "" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -783,7 +783,7 @@ "tags": [], "label": "Index", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -794,7 +794,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -808,7 +808,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -822,7 +822,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -833,7 +833,7 @@ "tags": [], "label": "isFrozen", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -844,7 +844,7 @@ "tags": [], "label": "hidden", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -858,7 +858,7 @@ "signature": [ "string | string[]" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -872,7 +872,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -886,7 +886,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -901,7 +901,7 @@ "IlmExplainLifecycleLifecycleExplain", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -915,7 +915,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -930,7 +930,7 @@ "HealthStatus", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -945,7 +945,7 @@ "IndicesStatsIndexMetadataState", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -959,7 +959,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -973,7 +973,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -987,7 +987,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1001,7 +1001,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1015,7 +1015,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -2148,6 +2148,9 @@ "tags": [], "label": "managedBy", "description": [], + "signature": [ + "string | undefined" + ], "path": "x-pack/plugins/index_management/common/types/data_streams.ts", "deprecated": false, "trackAdoption": false @@ -2418,7 +2421,7 @@ "tags": [], "label": "Index", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2429,7 +2432,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2443,7 +2446,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2457,7 +2460,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2468,7 +2471,7 @@ "tags": [], "label": "isFrozen", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2479,7 +2482,7 @@ "tags": [], "label": "hidden", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2493,7 +2496,7 @@ "signature": [ "string | string[]" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2507,7 +2510,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2521,7 +2524,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2536,7 +2539,7 @@ "IlmExplainLifecycleLifecycleExplain", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2550,7 +2553,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2565,7 +2568,7 @@ "HealthStatus", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2580,7 +2583,7 @@ "IndicesStatsIndexMetadataState", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2594,7 +2597,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2608,7 +2611,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2622,7 +2625,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2636,7 +2639,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2650,7 +2653,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -3163,7 +3166,14 @@ "label": "indexMode", "description": [], "signature": [ - "\"standard\" | \"time_series\" | \"logsdb\"" + { + "pluginId": "indexManagement", + "scope": "common", + "docId": "kibIndexManagementPluginApi", + "section": "def-common.IndexMode", + "text": "IndexMode" + }, + " | undefined" ], "path": "x-pack/plugins/index_management/common/types/templates.ts", "deprecated": false, diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 8b38c273afb1a..a9dc16b0c4014 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/inference.devdocs.json b/api_docs/inference.devdocs.json index 4cf16dcfec9bf..1ece7676f9681 100644 --- a/api_docs/inference.devdocs.json +++ b/api_docs/inference.devdocs.json @@ -17,7 +17,7 @@ "StreamedHttpResponse", ", T>" ], - "path": "x-pack/plugins/inference/public/util/http_response_into_observable.ts", + "path": "x-pack/platform/plugins/shared/inference/public/util/http_response_into_observable.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -36,7 +36,7 @@ "tags": [], "label": "InferencePublicSetup", "description": [], - "path": "x-pack/plugins/inference/public/types.ts", + "path": "x-pack/platform/plugins/shared/inference/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -50,7 +50,7 @@ "tags": [], "label": "InferencePublicStart", "description": [], - "path": "x-pack/plugins/inference/public/types.ts", + "path": "x-pack/platform/plugins/shared/inference/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -96,7 +96,7 @@ }, "" ], - "path": "x-pack/plugins/inference/public/types.ts", + "path": "x-pack/platform/plugins/shared/inference/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -127,7 +127,7 @@ }, " | undefined; } & TToolOptions" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false } @@ -163,7 +163,7 @@ }, "" ], - "path": "x-pack/plugins/inference/public/types.ts", + "path": "x-pack/platform/plugins/shared/inference/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -185,7 +185,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false } @@ -203,7 +203,7 @@ "InferenceConnector", "[]>" ], - "path": "x-pack/plugins/inference/public/types.ts", + "path": "x-pack/platform/plugins/shared/inference/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -225,7 +225,7 @@ "label": "naturalLanguageToEsql", "description": [], "signature": [ - "({\n client,\n connectorId,\n tools,\n toolChoice,\n logger,\n functionCalling,\n ...rest\n}: ", + "({\n client,\n connectorId,\n tools,\n toolChoice,\n logger,\n functionCalling,\n system,\n ...rest\n}: ", "NlToEsqlTaskParams", ") => ", "Observable", @@ -233,7 +233,7 @@ "NlToEsqlTaskEvent", ">" ], - "path": "x-pack/plugins/inference/server/tasks/nl_to_esql/task.ts", + "path": "x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/task.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -242,13 +242,13 @@ "id": "def-server.naturalLanguageToEsql.$1", "type": "CompoundType", "tags": [], - "label": "{\n client,\n connectorId,\n tools,\n toolChoice,\n logger,\n functionCalling,\n ...rest\n}", + "label": "{\n client,\n connectorId,\n tools,\n toolChoice,\n logger,\n functionCalling,\n system,\n ...rest\n}", "description": [], "signature": [ "NlToEsqlTaskParams", "" ], - "path": "x-pack/plugins/inference/server/tasks/nl_to_esql/task.ts", + "path": "x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/task.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -268,7 +268,7 @@ "description": [ "\nA version of the {@link InferenceClient} that is pre-bound to a set of parameters." ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -316,7 +316,7 @@ }, "" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -339,7 +339,7 @@ }, "[P]; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/bound_api.ts", "deprecated": false, "trackAdoption": false } @@ -377,7 +377,7 @@ }, "" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -390,7 +390,7 @@ "label": "options", "description": [], "signature": [ - "{ id: TId; input: string; schema?: TOutputSchema | undefined; system?: string | undefined; stream?: TStream | undefined; previousMessages?: ", + "{ id: TId; input: string; schema?: TOutputSchema | undefined; retry?: { onValidationError?: number | boolean | undefined; } | undefined; system?: string | undefined; stream?: TStream | undefined; previousMessages?: ", { "pluginId": "@kbn/inference-common", "scope": "common", @@ -400,7 +400,7 @@ }, "[] | undefined; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/bound_api.ts", "deprecated": false, "trackAdoption": false } @@ -420,7 +420,7 @@ "InferenceConnector", ">" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -434,7 +434,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -454,7 +454,7 @@ "description": [ "\nAn inference client, scoped to a request, that can be used to interact with LLMs." ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -502,7 +502,7 @@ }, "" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -533,7 +533,7 @@ }, " | undefined; } & TToolOptions" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false } @@ -571,7 +571,7 @@ }, "" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -593,7 +593,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false } @@ -613,7 +613,7 @@ "InferenceConnector", ">" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -627,7 +627,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/inference/server/inference_client/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/inference_client/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -651,7 +651,7 @@ "description": [ "\nSetup contract of the inference plugin." ], - "path": "x-pack/plugins/inference/server/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -667,7 +667,7 @@ "description": [ "\nStart contract of the inference plugin, exposing APIs to interact with LLMs." ], - "path": "x-pack/plugins/inference/server/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -702,7 +702,7 @@ "text": "InferenceClient" } ], - "path": "x-pack/plugins/inference/server/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -716,7 +716,7 @@ "signature": [ "T" ], - "path": "x-pack/plugins/inference/server/types.ts", + "path": "x-pack/platform/plugins/shared/inference/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -744,7 +744,7 @@ "signature": [ "(query: string) => { input: string; output: string; isCorrection: boolean; }" ], - "path": "x-pack/plugins/inference/common/tasks/nl_to_esql/correct_esql_query.ts", + "path": "x-pack/platform/plugins/shared/inference/common/tasks/nl_to_esql/correct_esql_query.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -758,7 +758,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/inference/common/tasks/nl_to_esql/correct_esql_query.ts", + "path": "x-pack/platform/plugins/shared/inference/common/tasks/nl_to_esql/correct_esql_query.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -792,7 +792,7 @@ "text": "OutputAPI" } ], - "path": "x-pack/plugins/inference/common/output/create_output_api.ts", + "path": "x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -812,7 +812,7 @@ "text": "ChatCompleteAPI" } ], - "path": "x-pack/plugins/inference/common/output/create_output_api.ts", + "path": "x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -837,45 +837,31 @@ "section": "def-common.ChatCompleteAPI", "text": "ChatCompleteAPI" }, - ") => ({ id, connectorId, input, schema, system, previousMessages, functionCalling, stream, }: ", + ") => ({ id, connectorId, input, schema, system, previousMessages, functionCalling, stream, retry, }: DefaultOutputOptions) => Promise<", { "pluginId": "@kbn/inference-common", "scope": "common", "docId": "kibKbnInferenceCommonPluginApi", - "section": "def-common.OutputOptions", - "text": "OutputOptions" + "section": "def-common.OutputResponse", + "text": "OutputResponse" }, ") => ", - "Observable", - "<{ type: ", - { - "pluginId": "@kbn/inference-common", - "scope": "common", - "docId": "kibKbnInferenceCommonPluginApi", - "section": "def-common.OutputEventType", - "text": "OutputEventType" - }, - "; id: string; content: string; output?: undefined; } | { id: string; output: ", "AugmentedRequired", "<{ [x: string]: string | number | boolean | ", "AugmentedRequired", - " | FromToolSchemaArray | undefined; }, never> | undefined; content: string; type: ", + " | FromToolSchemaArray | undefined; }, never> | undefined>> | ", { "pluginId": "@kbn/inference-common", "scope": "common", "docId": "kibKbnInferenceCommonPluginApi", - "section": "def-common.OutputEventType", - "text": "OutputEventType" + "section": "def-common.OutputStreamResponse", + "text": "OutputStreamResponse" }, - "; }> | Promise<{ id: string; content: string; output: ", - "AugmentedRequired", - "<{ [x: string]: string | number | boolean | ", - "AugmentedRequired", - " | FromToolSchemaArray | undefined; }, never> | undefined; }>" + "" ], - "path": "x-pack/plugins/inference/common/output/create_output_api.ts", + "path": "x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -895,7 +881,7 @@ "text": "ChatCompleteAPI" } ], - "path": "x-pack/plugins/inference/common/output/create_output_api.ts", + "path": "x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -914,7 +900,7 @@ "signature": [ "() => string" ], - "path": "x-pack/plugins/inference/common/utils/generate_fake_tool_call_id.ts", + "path": "x-pack/platform/plugins/shared/inference/common/utils/generate_fake_tool_call_id.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -931,7 +917,7 @@ "signature": [ "(query: string) => { name: string | undefined; command: string; }[]" ], - "path": "x-pack/plugins/inference/common/tasks/nl_to_esql/non_ast/correct_common_esql_mistakes.ts", + "path": "x-pack/platform/plugins/shared/inference/common/tasks/nl_to_esql/non_ast/correct_common_esql_mistakes.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -945,7 +931,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/inference/common/tasks/nl_to_esql/non_ast/correct_common_esql_mistakes.ts", + "path": "x-pack/platform/plugins/shared/inference/common/tasks/nl_to_esql/non_ast/correct_common_esql_mistakes.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -963,7 +949,7 @@ "tags": [], "label": "GetConnectorsResponseBody", "description": [], - "path": "x-pack/plugins/inference/common/http_apis.ts", + "path": "x-pack/platform/plugins/shared/inference/common/http_apis.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -978,7 +964,7 @@ "InferenceConnector", "[]" ], - "path": "x-pack/plugins/inference/common/http_apis.ts", + "path": "x-pack/platform/plugins/shared/inference/common/http_apis.ts", "deprecated": false, "trackAdoption": false } @@ -1022,7 +1008,7 @@ }, "" ], - "path": "x-pack/plugins/inference/common/http_apis.ts", + "path": "x-pack/platform/plugins/shared/inference/common/http_apis.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/inference.mdx b/api_docs/inference.mdx index 1bdc62e7c2b57..1d805f74724bb 100644 --- a/api_docs/inference.mdx +++ b/api_docs/inference.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inference title: "inference" image: https://source.unsplash.com/400x175/?github description: API docs for the inference plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inference'] --- import inferenceObj from './inference.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 6651f313b1ad9..f0aea893bb4c8 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx index fc223c19a423c..47e4890836a40 100644 --- a/api_docs/ingest_pipelines.mdx +++ b/api_docs/ingest_pipelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ingestPipelines title: "ingestPipelines" image: https://source.unsplash.com/400x175/?github description: API docs for the ingestPipelines plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines'] --- import ingestPipelinesObj from './ingest_pipelines.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index a1cd3a60b30b5..a225e0626b882 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/integration_assistant.devdocs.json b/api_docs/integration_assistant.devdocs.json index 31bb0f5b3f00b..7fba9a63693b1 100644 --- a/api_docs/integration_assistant.devdocs.json +++ b/api_docs/integration_assistant.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "IntegrationAssistantPluginSetup", "description": [], - "path": "x-pack/plugins/integration_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "IntegrationAssistantPluginStart", "description": [], - "path": "x-pack/plugins/integration_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -46,7 +46,7 @@ "CreateIntegrationCardButtonComponent", "; }" ], - "path": "x-pack/plugins/integration_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -62,7 +62,7 @@ "signature": [ "(upselling: React.ReactNode) => void" ], - "path": "x-pack/plugins/integration_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -76,7 +76,7 @@ "signature": [ "React.ReactNode" ], - "path": "x-pack/plugins/integration_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -103,7 +103,7 @@ "tags": [], "label": "IntegrationAssistantPluginSetup", "description": [], - "path": "x-pack/plugins/integration_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -117,7 +117,7 @@ "signature": [ "(isAvailable: boolean) => void" ], - "path": "x-pack/plugins/integration_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -131,7 +131,7 @@ "signature": [ "boolean" ], - "path": "x-pack/plugins/integration_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -150,7 +150,7 @@ "tags": [], "label": "IntegrationAssistantPluginStart", "description": [], - "path": "x-pack/plugins/integration_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -173,7 +173,7 @@ "signature": [ "(arr: T[], start: number, end: number, seed: string) => void" ], - "path": "x-pack/plugins/integration_assistant/common/utils.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -189,7 +189,7 @@ "signature": [ "T[]" ], - "path": "x-pack/plugins/integration_assistant/common/utils.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -206,7 +206,7 @@ "signature": [ "number" ], - "path": "x-pack/plugins/integration_assistant/common/utils.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -223,7 +223,7 @@ "signature": [ "number" ], - "path": "x-pack/plugins/integration_assistant/common/utils.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -238,7 +238,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/integration_assistant/common/utils.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -258,7 +258,7 @@ "description": [ "\nProcessor item for the Elasticsearch processor." ], - "path": "x-pack/plugins/integration_assistant/common/api/model/processor_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/processor_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -273,7 +273,7 @@ "[key: string]: ", "ESProcessorOptions" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/processor_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/processor_attributes.gen.ts", "deprecated": false, "trackAdoption": false } @@ -290,7 +290,7 @@ "tags": [], "label": "ANALYZE_LOGS_PATH", "description": [], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -305,7 +305,7 @@ "signature": [ "{ connectorId: string; packageName: string; dataStreamName: string; packageTitle: string; dataStreamTitle: string; logSamples: string[]; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -328,7 +328,7 @@ }, "[] | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -359,7 +359,7 @@ }, "[] | undefined; }; docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; samplesFormat: { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }; celInput?: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; } | undefined; }[]; logo?: string | undefined; }; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/build_integration/build_integration.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/build_integration/build_integration.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -371,7 +371,7 @@ "tags": [], "label": "CATEGORIZATION_GRAPH_PATH", "description": [], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -402,7 +402,7 @@ }, "[] | undefined; }; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -433,7 +433,7 @@ }, "[] | undefined; }; docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; }; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -445,7 +445,7 @@ "tags": [], "label": "CEL_INPUT_GRAPH_PATH", "description": [], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -462,7 +462,7 @@ "signature": [ "{ program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/cel_input_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/cel_input_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -477,7 +477,7 @@ "signature": [ "{ connectorId: string; dataStreamName: string; apiDefinition: string; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -492,7 +492,7 @@ "signature": [ "{ results: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -504,7 +504,7 @@ "tags": [], "label": "CHECK_PIPELINE_PATH", "description": [], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -535,7 +535,7 @@ }, "[] | undefined; }; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -550,7 +550,7 @@ "signature": [ "{ results: { docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; }; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -583,7 +583,7 @@ }, "[] | undefined; }; docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; samplesFormat: { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }; celInput?: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; } | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -600,7 +600,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -612,7 +612,7 @@ "tags": [], "label": "ECS_GRAPH_PATH", "description": [], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -635,7 +635,7 @@ }, "[] | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -666,7 +666,7 @@ }, "[] | undefined; }; mapping: {} & { [k: string]: unknown; }; }; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -683,7 +683,7 @@ "signature": [ "\"kafka\" | \"aws-cloudwatch\" | \"aws-s3\" | \"azure-blob-storage\" | \"azure-eventhub\" | \"cel\" | \"cloudfoundry\" | \"filestream\" | \"gcp-pubsub\" | \"gcs\" | \"http_endpoint\" | \"journald\" | \"tcp\" | \"udp\"" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -716,7 +716,7 @@ }, "[] | undefined; }; docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; samplesFormat: { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }; celInput?: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; } | undefined; }[]; logo?: string | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -731,7 +731,7 @@ "signature": [ "\"/app/integration_assistant\"" ], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -744,9 +744,9 @@ "label": "INTEGRATION_ASSISTANT_BASE_PATH", "description": [], "signature": [ - "\"/api/integration_assistant\"" + "\"/internal/automatic_import\"" ], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -758,7 +758,7 @@ "tags": [], "label": "INTEGRATION_BUILDER_PATH", "description": [], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -775,7 +775,7 @@ "signature": [ "{ apiKey: string; projectName: string; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -808,7 +808,7 @@ }, "[] | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -823,7 +823,7 @@ "signature": [ "\"integrationAssistant\"" ], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -835,7 +835,7 @@ "tags": [], "label": "RELATED_GRAPH_PATH", "description": [], - "path": "x-pack/plugins/integration_assistant/common/constants.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -866,7 +866,7 @@ }, "[] | undefined; }; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/related/related_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -897,7 +897,7 @@ }, "[] | undefined; }; docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; }; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/related/related_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -914,7 +914,7 @@ "signature": [ "{ name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -931,7 +931,7 @@ "signature": [ "\"ndjson\" | \"json\" | \"csv\" | \"structured\" | \"unstructured\" | \"unsupported\" | \"cef\" | \"leef\" | \"fix\"" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -948,7 +948,7 @@ "signature": [ "Zod.ZodObject<{ packageName: Zod.ZodString; dataStreamName: Zod.ZodString; packageTitle: Zod.ZodString; dataStreamTitle: Zod.ZodString; logSamples: Zod.ZodArray; connectorId: Zod.ZodString; langSmithOptions: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; packageName: string; dataStreamName: string; packageTitle: string; dataStreamTitle: string; logSamples: string[]; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }, { connectorId: string; packageName: string; dataStreamName: string; packageTitle: string; dataStreamTitle: string; logSamples: string[]; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -983,7 +983,7 @@ "ESProcessorItemInput", "[] | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1098,7 +1098,7 @@ "ESProcessorItemInput", "[] | undefined; }; docs: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">[]; samplesFormat: { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }; celInput?: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; } | undefined; }[]; logo?: string | undefined; }; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/build_integration/build_integration.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/build_integration/build_integration.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1173,7 +1173,7 @@ "ESProcessorItemInput", "[] | undefined; }; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1268,7 +1268,7 @@ "ESProcessorItemInput", "[] | undefined; }; docs: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">[]; }; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1283,7 +1283,7 @@ "signature": [ "Zod.ZodObject<{ program: Zod.ZodString; stateSettings: Zod.ZodObject<{}, \"strip\", Zod.ZodUnknown, Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>; redactVars: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }, { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/cel_input_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/cel_input_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1298,7 +1298,7 @@ "signature": [ "Zod.ZodObject<{ dataStreamName: Zod.ZodString; apiDefinition: Zod.ZodString; connectorId: Zod.ZodString; langSmithOptions: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; dataStreamName: string; apiDefinition: string; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }, { connectorId: string; dataStreamName: string; apiDefinition: string; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1313,7 +1313,7 @@ "signature": [ "Zod.ZodObject<{ results: Zod.ZodObject<{ program: Zod.ZodString; stateSettings: Zod.ZodObject<{}, \"strip\", Zod.ZodUnknown, Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>; redactVars: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }, { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }>; }, \"strip\", Zod.ZodTypeAny, { results: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }; }, { results: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; }; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1388,7 +1388,7 @@ "ESProcessorItemInput", "[] | undefined; }; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1403,7 +1403,7 @@ "signature": [ "Zod.ZodObject<{ results: Zod.ZodObject<{ docs: Zod.ZodArray, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; }, { docs: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">[]; }>; }, \"strip\", Zod.ZodTypeAny, { results: { docs: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">[]; }; }, { results: { docs: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">[]; }; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1478,7 +1478,7 @@ "ESProcessorItemInput", "[] | undefined; }; docs: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">[]; samplesFormat: { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }; celInput?: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; } | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1493,7 +1493,7 @@ "signature": [ "Zod.ZodArray, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>, \"many\">" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1528,7 +1528,7 @@ "ESProcessorItemInput", "[] | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1623,7 +1623,7 @@ "ESProcessorItemInput", "[] | undefined; }; mapping: {} & { [k: string]: unknown; }; }; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1648,7 +1648,7 @@ "ESProcessorItemInput", ">" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/processor_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/processor_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1663,7 +1663,7 @@ "signature": [ "Zod.ZodEnum<[\"aws-cloudwatch\", \"aws-s3\", \"azure-blob-storage\", \"azure-eventhub\", \"cel\", \"cloudfoundry\", \"filestream\", \"gcp-pubsub\", \"gcs\", \"http_endpoint\", \"journald\", \"kafka\", \"tcp\", \"udp\"]>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1758,7 +1758,7 @@ "ESProcessorItemInput", "[] | undefined; }; docs: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">[]; samplesFormat: { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }; celInput?: { program: string; stateSettings: {} & { [k: string]: unknown; }; redactVars: string[]; } | undefined; }[]; logo?: string | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1773,7 +1773,7 @@ "signature": [ "Zod.ZodObject<{ projectName: Zod.ZodString; apiKey: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { apiKey: string; projectName: string; }, { apiKey: string; projectName: string; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1828,7 +1828,7 @@ "ESProcessorItemInput", "[] | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1903,7 +1903,7 @@ "ESProcessorItemInput", "[] | undefined; }; langSmithOptions?: { apiKey: string; projectName: string; } | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/related/related_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1998,7 +1998,7 @@ "ESProcessorItemInput", "[] | undefined; }; docs: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">[]; }; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/related/related_route.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2013,7 +2013,7 @@ "signature": [ "Zod.ZodObject<{ name: Zod.ZodEnum<[\"ndjson\", \"json\", \"csv\", \"structured\", \"unstructured\", \"unsupported\", \"cef\", \"leef\", \"fix\"]>; multiline: Zod.ZodOptional; header: Zod.ZodOptional; columns: Zod.ZodOptional>; json_path: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }, { name: \"unsupported\" | \"json\" | \"ndjson\" | \"csv\" | \"structured\" | \"unstructured\" | \"cef\" | \"leef\" | \"fix\"; columns?: string[] | undefined; header?: boolean | undefined; multiline?: boolean | undefined; json_path?: string[] | undefined; }>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2028,7 +2028,7 @@ "signature": [ "Zod.ZodEnum<[\"ndjson\", \"json\", \"csv\", \"structured\", \"unstructured\", \"unsupported\", \"cef\", \"leef\", \"fix\"]>" ], - "path": "x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts", + "path": "x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/integration_assistant.mdx b/api_docs/integration_assistant.mdx index 3f2edb2b3be01..c78b747ee10b7 100644 --- a/api_docs/integration_assistant.mdx +++ b/api_docs/integration_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/integrationAssistant title: "integrationAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the integrationAssistant plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'integrationAssistant'] --- import integrationAssistantObj from './integration_assistant.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 973d5a52acacf..7ad58d1d4e639 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/inventory.mdx b/api_docs/inventory.mdx index e13143d804bad..f2ccfe9318174 100644 --- a/api_docs/inventory.mdx +++ b/api_docs/inventory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inventory title: "inventory" image: https://source.unsplash.com/400x175/?github description: API docs for the inventory plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inventory'] --- import inventoryObj from './inventory.devdocs.json'; diff --git a/api_docs/investigate.devdocs.json b/api_docs/investigate.devdocs.json index 6027d5241e210..dd3feacebf9dd 100644 --- a/api_docs/investigate.devdocs.json +++ b/api_docs/investigate.devdocs.json @@ -23,7 +23,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/investigate/public/util/get_es_filters_from_global_parameters.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/util/get_es_filters_from_global_parameters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -39,7 +39,7 @@ "GlobalWidgetParameters", ">" ], - "path": "x-pack/plugins/observability_solution/investigate/public/util/get_es_filters_from_global_parameters.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/util/get_es_filters_from_global_parameters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -58,7 +58,7 @@ "signature": [ "(t1: T1) => T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -72,7 +72,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -91,7 +91,7 @@ "signature": [ "(t1: T1, t2: T2) => [T2] extends Mergable[] ? DeepOverwrite : T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -105,7 +105,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -120,7 +120,7 @@ "signature": [ "T2" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -139,7 +139,7 @@ "signature": [ "(t1: T1, t2: T2, t3: T3) => [T2, T3] extends Mergable[] ? DeepOverwrite | DeepOverwrite : T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -153,7 +153,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -168,7 +168,7 @@ "signature": [ "T2" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -183,7 +183,7 @@ "signature": [ "T3" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -202,7 +202,7 @@ "signature": [ "(t1: T1, t2: T2, t3: T4) => [T2, T3, T4] extends Mergable[] ? DeepOverwrite | DeepOverwrite | DeepOverwrite : T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -216,7 +216,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -231,7 +231,7 @@ "signature": [ "T2" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -246,7 +246,7 @@ "signature": [ "T4" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -265,7 +265,7 @@ "signature": [ "(sources: Record[]) => any" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -279,7 +279,7 @@ "signature": [ "Record[]" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -297,7 +297,7 @@ "tags": [], "label": "GlobalWidgetParameters", "description": [], - "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -311,7 +311,7 @@ "signature": [ "{ from: string; to: string; }" ], - "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -329,7 +329,7 @@ "tags": [], "label": "InvestigatePublicSetup", "description": [], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -349,7 +349,7 @@ "ItemDefinition", ") => void" ], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -364,7 +364,7 @@ "ItemDefinition", "" ], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -383,7 +383,7 @@ "tags": [], "label": "InvestigatePublicStart", "description": [], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -399,7 +399,7 @@ "ItemDefinition", "<{}, {}>[]" ], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -417,7 +417,7 @@ "ItemDefinition", "<{}, {}> | undefined" ], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -431,7 +431,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -458,7 +458,7 @@ "tags": [], "label": "InvestigateServerSetup", "description": [], - "path": "x-pack/plugins/observability_solution/investigate/server/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -472,7 +472,7 @@ "tags": [], "label": "InvestigateServerStart", "description": [], - "path": "x-pack/plugins/observability_solution/investigate/server/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -493,7 +493,7 @@ "signature": [ "(t1: T1) => T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -507,7 +507,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -526,7 +526,7 @@ "signature": [ "(t1: T1, t2: T2) => [T2] extends Mergable[] ? DeepOverwrite : T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -540,7 +540,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -555,7 +555,7 @@ "signature": [ "T2" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -574,7 +574,7 @@ "signature": [ "(t1: T1, t2: T2, t3: T3) => [T2, T3] extends Mergable[] ? DeepOverwrite | DeepOverwrite : T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -588,7 +588,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -603,7 +603,7 @@ "signature": [ "T2" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -618,7 +618,7 @@ "signature": [ "T3" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -637,7 +637,7 @@ "signature": [ "(t1: T1, t2: T2, t3: T4) => [T2, T3, T4] extends Mergable[] ? DeepOverwrite | DeepOverwrite | DeepOverwrite : T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -651,7 +651,7 @@ "signature": [ "T1" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -666,7 +666,7 @@ "signature": [ "T2" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -681,7 +681,7 @@ "signature": [ "T4" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -700,7 +700,7 @@ "signature": [ "(sources: Record[]) => any" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -714,7 +714,7 @@ "signature": [ "Record[]" ], - "path": "x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts", + "path": "x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts", "deprecated": false, "trackAdoption": false, "isRequired": true diff --git a/api_docs/investigate.mdx b/api_docs/investigate.mdx index 1722696878b63..b74f7d26e8101 100644 --- a/api_docs/investigate.mdx +++ b/api_docs/investigate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigate title: "investigate" image: https://source.unsplash.com/400x175/?github description: API docs for the investigate plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigate'] --- import investigateObj from './investigate.devdocs.json'; diff --git a/api_docs/investigate_app.devdocs.json b/api_docs/investigate_app.devdocs.json index c33e115dd7cc8..20716508f598a 100644 --- a/api_docs/investigate_app.devdocs.json +++ b/api_docs/investigate_app.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "InvestigateAppPublicSetup", "description": [], - "path": "x-pack/plugins/observability_solution/investigate_app/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate_app/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "InvestigateAppPublicStart", "description": [], - "path": "x-pack/plugins/observability_solution/investigate_app/public/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate_app/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -50,7 +50,23 @@ "label": "InvestigateAppServerRouteRepository", "description": [], "signature": [ - "{ \"GET /api/observability/investigations/_tags 2023-10-31\": ", + "{ \"POST /internal/observability/investigation/root_cause_analysis\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/observability/investigation/root_cause_analysis\", Zod.ZodObject<{ body: Zod.ZodObject<{ investigationId: Zod.ZodString; rangeFrom: Zod.ZodString; rangeTo: Zod.ZodString; serviceName: Zod.ZodString; context: Zod.ZodString; connectorId: Zod.ZodString; completeInBackground: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { context: string; connectorId: string; serviceName: string; rangeFrom: string; rangeTo: string; investigationId: string; completeInBackground?: boolean | undefined; }, { context: string; connectorId: string; serviceName: string; rangeFrom: string; rangeTo: string; investigationId: string; completeInBackground?: boolean | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { body: { context: string; connectorId: string; serviceName: string; rangeFrom: string; rangeTo: string; investigationId: string; completeInBackground?: boolean | undefined; }; }, { body: { context: string; connectorId: string; serviceName: string; rangeFrom: string; rangeTo: string; investigationId: string; completeInBackground?: boolean | undefined; }; }>, ", + "InvestigateAppRouteHandlerResources", + ", ", + "Observable", + "<{ event: ", + "RootCauseAnalysisEvent", + "; } & { type: \"event\"; }>, ", + "InvestigateAppRouteCreateOptions", + ">; \"GET /api/observability/investigations/_tags 2023-10-31\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -94,9 +110,9 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"GET /api/observability/events 2023-10-31\", Zod.ZodObject<{ query: Zod.ZodOptional; rangeTo: Zod.ZodOptional; filter: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; }, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; } | undefined; }, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; } | undefined; }>, ", + "<\"GET /api/observability/events 2023-10-31\", Zod.ZodObject<{ query: Zod.ZodOptional; rangeTo: Zod.ZodOptional; filter: Zod.ZodOptional; eventTypes: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: (\"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\")[] | undefined; }, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: (\"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\")[] | undefined; } | undefined; }, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: string | undefined; } | undefined; }>, ", "InvestigateAppRouteHandlerResources", - ", ({ id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; } & ({ eventType: \"annotation\"; annotationType?: string | undefined; } | { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }))[], ", + ", ({ id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; } | { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; })[], ", "InvestigateAppRouteCreateOptions", ">; \"GET /api/observability/investigations/{investigationId}/items 2023-10-31\": ", { @@ -214,9 +230,9 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"PUT /api/observability/investigations/{investigationId} 2023-10-31\", Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; body: Zod.ZodObject<{ title: Zod.ZodOptional; status: Zod.ZodOptional, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>>; params: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>>; tags: Zod.ZodOptional>; externalIncidentUrl: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }; }, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }; }>, ", + "<\"PUT /api/observability/investigations/{investigationId} 2023-10-31\", Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; body: Zod.ZodObject<{ title: Zod.ZodOptional; status: Zod.ZodOptional, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>>; params: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>>; tags: Zod.ZodOptional>; externalIncidentUrl: Zod.ZodOptional>; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }; }, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }; }>, ", "InvestigateAppRouteHandlerResources", - ", { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, ", + ", { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, ", "InvestigateAppRouteCreateOptions", ">; \"GET /api/observability/investigations/{investigationId} 2023-10-31\": ", { @@ -228,7 +244,7 @@ }, "<\"GET /api/observability/investigations/{investigationId} 2023-10-31\", Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; }, { path: { investigationId: string; }; }>, ", "InvestigateAppRouteHandlerResources", - ", { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, ", + ", { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, ", "InvestigateAppRouteCreateOptions", ">; \"GET /api/observability/investigations 2023-10-31\": ", { @@ -240,7 +256,7 @@ }, "<\"GET /api/observability/investigations 2023-10-31\", Zod.ZodObject<{ query: Zod.ZodOptional; search: Zod.ZodOptional; filter: Zod.ZodOptional; page: Zod.ZodOptional; perPage: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; }, { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { query?: { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; } | undefined; }, { query?: { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; } | undefined; }>, ", "InvestigateAppRouteHandlerResources", - ", { page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }[]; perPage: number; total: number; }, ", + ", { page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }[]; perPage: number; total: number; }, ", "InvestigateAppRouteCreateOptions", ">; \"POST /api/observability/investigations 2023-10-31\": ", { @@ -252,11 +268,11 @@ }, "<\"POST /api/observability/investigations 2023-10-31\", Zod.ZodObject<{ body: Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; tags: Zod.ZodArray; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }>; }, \"strip\", Zod.ZodTypeAny, { body: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }; }, { body: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }; }>, ", "InvestigateAppRouteHandlerResources", - ", { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, ", + ", { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, ", "InvestigateAppRouteCreateOptions", ">; }" ], - "path": "x-pack/plugins/observability_solution/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts", + "path": "x-pack/solutions/observability/plugins/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -270,7 +286,7 @@ "tags": [], "label": "InvestigateAppServerSetup", "description": [], - "path": "x-pack/plugins/observability_solution/investigate_app/server/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate_app/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -284,7 +300,7 @@ "tags": [], "label": "InvestigateAppServerStart", "description": [], - "path": "x-pack/plugins/observability_solution/investigate_app/server/types.ts", + "path": "x-pack/solutions/observability/plugins/investigate_app/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], diff --git a/api_docs/investigate_app.mdx b/api_docs/investigate_app.mdx index 1a4ba180f6235..1c07a12076c97 100644 --- a/api_docs/investigate_app.mdx +++ b/api_docs/investigate_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigateApp title: "investigateApp" image: https://source.unsplash.com/400x175/?github description: API docs for the investigateApp plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigateApp'] --- import investigateAppObj from './investigate_app.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index 09a37e7f227dc..607a356760b79 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant.devdocs.json b/api_docs/kbn_ai_assistant.devdocs.json index 962d4a3f0e304..7829e5cee9097 100644 --- a/api_docs/kbn_ai_assistant.devdocs.json +++ b/api_docs/kbn_ai_assistant.devdocs.json @@ -1102,7 +1102,7 @@ "State<{ errorMessage?: string | undefined; ready: boolean; enabled: boolean; endpoint?: Partial<", "InferenceInferenceEndpointInfo", "> | undefined; model_stats?: { deployment_state: ", - "MlDeploymentState", + "MlDeploymentAssignmentState", " | undefined; allocation_state: ", "MlDeploymentAllocationState", " | undefined; } | undefined; }> & { refresh: () => void; }" diff --git a/api_docs/kbn_ai_assistant.mdx b/api_docs/kbn_ai_assistant.mdx index f4e7011843e6d..80bb5181ee58e 100644 --- a/api_docs/kbn_ai_assistant.mdx +++ b/api_docs/kbn_ai_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant title: "@kbn/ai-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant'] --- import kbnAiAssistantObj from './kbn_ai_assistant.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_common.devdocs.json b/api_docs/kbn_ai_assistant_common.devdocs.json index f0e6b1400242e..bcfb26faf0568 100644 --- a/api_docs/kbn_ai_assistant_common.devdocs.json +++ b/api_docs/kbn_ai_assistant_common.devdocs.json @@ -37,7 +37,7 @@ }, "[] | undefined) => (value: T) => boolean" ], - "path": "x-pack/packages/kbn-ai-assistant-common/src/utils/filter_scopes.ts", + "path": "x-pack/platform/packages/shared/ai-assistant/common/src/utils/filter_scopes.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -58,7 +58,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/kbn-ai-assistant-common/src/utils/filter_scopes.ts", + "path": "x-pack/platform/packages/shared/ai-assistant/common/src/utils/filter_scopes.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -81,7 +81,7 @@ "signature": [ "\"search\" | \"observability\" | \"all\"" ], - "path": "x-pack/packages/kbn-ai-assistant-common/src/types/index.ts", + "path": "x-pack/platform/packages/shared/ai-assistant/common/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_ai_assistant_common.mdx b/api_docs/kbn_ai_assistant_common.mdx index ba42d7599a535..0adec146338a0 100644 --- a/api_docs/kbn_ai_assistant_common.mdx +++ b/api_docs/kbn_ai_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant-common title: "@kbn/ai-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-common'] --- import kbnAiAssistantCommonObj from './kbn_ai_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_icon.devdocs.json b/api_docs/kbn_ai_assistant_icon.devdocs.json new file mode 100644 index 0000000000000..dfc8bb5465120 --- /dev/null +++ b/api_docs/kbn_ai_assistant_icon.devdocs.json @@ -0,0 +1,286 @@ +{ + "id": "@kbn/ai-assistant-icon", + "client": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantAvatar", + "type": "Function", + "tags": [], + "label": "AssistantAvatar", + "description": [ + "\nA `EuiAvatar` component customized for the AI Assistant." + ], + "signature": [ + "({ css, color, size, ...props }: ", + { + "pluginId": "@kbn/ai-assistant-icon", + "scope": "public", + "docId": "kibKbnAiAssistantIconPluginApi", + "section": "def-public.AssistantAvatarProps", + "text": "AssistantAvatarProps" + }, + ") => React.JSX.Element" + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/avatar.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantAvatar.$1", + "type": "Object", + "tags": [], + "label": "{\n css,\n color = 'plain',\n size = 'm',\n ...props\n}", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ai-assistant-icon", + "scope": "public", + "docId": "kibKbnAiAssistantIconPluginApi", + "section": "def-public.AssistantAvatarProps", + "text": "AssistantAvatarProps" + } + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/avatar.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantBeacon", + "type": "Function", + "tags": [], + "label": "AssistantBeacon", + "description": [ + "\nAn AI Assistant icon with a pulsing ring around it, used in \"hero\" areas promoting functionality or prompting interaction." + ], + "signature": [ + "({ backgroundColor, size }: ", + { + "pluginId": "@kbn/ai-assistant-icon", + "scope": "public", + "docId": "kibKbnAiAssistantIconPluginApi", + "section": "def-public.AssistantBeaconProps", + "text": "AssistantBeaconProps" + }, + ") => React.JSX.Element" + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantBeacon.$1", + "type": "Object", + "tags": [], + "label": "{ backgroundColor, size = 'xxl' }", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ai-assistant-icon", + "scope": "public", + "docId": "kibKbnAiAssistantIconPluginApi", + "section": "def-public.AssistantBeaconProps", + "text": "AssistantBeaconProps" + } + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantIcon", + "type": "Function", + "tags": [], + "label": "AssistantIcon", + "description": [ + "\nDefault Elastic AI Assistant icon." + ], + "signature": [ + "({ size, ...rest }: ", + { + "pluginId": "@kbn/ai-assistant-icon", + "scope": "public", + "docId": "kibKbnAiAssistantIconPluginApi", + "section": "def-public.AssistantIconProps", + "text": "AssistantIconProps" + }, + ") => React.JSX.Element" + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/icon.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantIcon.$1", + "type": "Object", + "tags": [], + "label": "{ size = 'm', ...rest }", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ai-assistant-icon", + "scope": "public", + "docId": "kibKbnAiAssistantIconPluginApi", + "section": "def-public.AssistantIconProps", + "text": "AssistantIconProps" + } + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/icon.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantBeaconProps", + "type": "Interface", + "tags": [], + "label": "AssistantBeaconProps", + "description": [ + "\nParameters for the styles for the AI Assistant beacon." + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantBeaconProps.backgroundColor", + "type": "CompoundType", + "tags": [], + "label": "backgroundColor", + "description": [ + "\nBackground color for the beacon." + ], + "signature": [ + "EuiThemeColorModeStandard", + " | keyof ", + "_EuiThemeBrandColors", + " | keyof ", + "_EuiThemeBrandTextColors", + " | keyof ", + "_EuiThemeShadeColors", + " | keyof ", + "_EuiThemeSpecialColors", + " | keyof ", + "_EuiThemeTextColors", + " | keyof ", + "_EuiThemeBackgroundColors", + " | keyof ", + "_EuiThemeTransparentBackgroundColors", + " | keyof ", + "_EuiThemeBorderColors", + " | keyof ", + "_EuiThemeConstantColors", + " | undefined" + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantBeaconProps.size", + "type": "CompoundType", + "tags": [], + "label": "size", + "description": [ + "\nSize of the beacon." + ], + "signature": [ + "\"m\" | \"s\" | \"l\" | \"xl\" | \"xxl\" | undefined" + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantAvatarProps", + "type": "Type", + "tags": [], + "label": "AssistantAvatarProps", + "description": [ + "\nAvatar component for the AI Assistant." + ], + "signature": [ + "{ id?: string | undefined; prefix?: string | undefined; type?: \"space\" | \"user\" | undefined; onError?: React.ReactEventHandler | undefined; defaultValue?: string | number | readonly string[] | undefined; name: string; security?: string | undefined; className?: string | undefined; \"aria-label\"?: string | undefined; 'data-test-subj'?: string | undefined; css?: ", + "Interpolation", + "<", + "Theme", + ">; defaultChecked?: boolean | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; autoFocus?: boolean | undefined; contentEditable?: Booleanish | \"inherit\" | \"plaintext-only\" | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: Booleanish | undefined; hidden?: boolean | undefined; lang?: string | undefined; nonce?: string | undefined; slot?: string | undefined; spellCheck?: Booleanish | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; title?: string | undefined; translate?: \"yes\" | \"no\" | undefined; radioGroup?: string | undefined; role?: React.AriaRole | undefined; about?: string | undefined; content?: string | undefined; datatype?: string | undefined; inlist?: any; property?: string | undefined; rel?: string | undefined; resource?: string | undefined; rev?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; color?: string | null | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"search\" | \"none\" | \"text\" | \"tel\" | \"url\" | \"email\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; \"aria-activedescendant\"?: string | undefined; \"aria-atomic\"?: Booleanish | undefined; \"aria-autocomplete\"?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; \"aria-braillelabel\"?: string | undefined; \"aria-brailleroledescription\"?: string | undefined; \"aria-busy\"?: Booleanish | undefined; \"aria-checked\"?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; \"aria-colcount\"?: number | undefined; \"aria-colindex\"?: number | undefined; \"aria-colindextext\"?: string | undefined; \"aria-colspan\"?: number | undefined; \"aria-controls\"?: string | undefined; \"aria-current\"?: boolean | \"page\" | \"date\" | \"location\" | \"true\" | \"false\" | \"time\" | \"step\" | undefined; \"aria-describedby\"?: string | undefined; \"aria-description\"?: string | undefined; \"aria-details\"?: string | undefined; \"aria-disabled\"?: Booleanish | undefined; \"aria-dropeffect\"?: \"execute\" | \"link\" | \"none\" | \"copy\" | \"move\" | \"popup\" | undefined; \"aria-errormessage\"?: string | undefined; \"aria-expanded\"?: Booleanish | undefined; \"aria-flowto\"?: string | undefined; \"aria-grabbed\"?: Booleanish | undefined; \"aria-haspopup\"?: boolean | \"grid\" | \"true\" | \"false\" | \"dialog\" | \"menu\" | \"listbox\" | \"tree\" | undefined; \"aria-hidden\"?: Booleanish | undefined; \"aria-invalid\"?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; \"aria-keyshortcuts\"?: string | undefined; \"aria-labelledby\"?: string | undefined; \"aria-level\"?: number | undefined; \"aria-live\"?: \"off\" | \"assertive\" | \"polite\" | undefined; \"aria-modal\"?: Booleanish | undefined; \"aria-multiline\"?: Booleanish | undefined; \"aria-multiselectable\"?: Booleanish | undefined; \"aria-orientation\"?: \"horizontal\" | \"vertical\" | undefined; \"aria-owns\"?: string | undefined; \"aria-placeholder\"?: string | undefined; \"aria-posinset\"?: number | undefined; \"aria-pressed\"?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; \"aria-readonly\"?: Booleanish | undefined; \"aria-relevant\"?: \"text\" | \"all\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; \"aria-required\"?: Booleanish | undefined; \"aria-roledescription\"?: string | undefined; \"aria-rowcount\"?: number | undefined; \"aria-rowindex\"?: number | undefined; \"aria-rowindextext\"?: string | undefined; \"aria-rowspan\"?: number | undefined; \"aria-selected\"?: Booleanish | undefined; \"aria-setsize\"?: number | undefined; \"aria-sort\"?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined; \"aria-valuemax\"?: number | undefined; \"aria-valuemin\"?: number | undefined; \"aria-valuenow\"?: number | undefined; \"aria-valuetext\"?: string | undefined; children?: React.ReactNode; dangerouslySetInnerHTML?: { __html: string | TrustedHTML; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChange?: React.FormEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onResize?: React.ReactEventHandler | undefined; onResizeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; size?: \"m\" | \"s\" | \"l\" | \"xl\" | undefined; iconColor?: string | null | undefined; isDisabled?: boolean | undefined; iconSize?: \"m\" | \"s\" | \"l\" | \"original\" | \"xl\" | \"xxl\" | undefined; casing?: \"none\" | \"lowercase\" | \"capitalize\" | \"uppercase\" | undefined; }" + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/avatar.tsx", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ai-assistant-icon", + "id": "def-public.AssistantIconProps", + "type": "Type", + "tags": [], + "label": "AssistantIconProps", + "description": [ + "\nProps for the AI Assistant icon." + ], + "signature": [ + "{ string?: string | number | undefined; id?: string | undefined; onError?: React.ReactEventHandler | undefined; min?: string | number | undefined; end?: string | number | undefined; filter?: string | undefined; max?: string | number | undefined; in?: string | undefined; mode?: string | number | undefined; order?: string | number | undefined; version?: string | undefined; format?: string | number | undefined; fill?: string | undefined; values?: string | undefined; name?: string | undefined; transform?: string | undefined; className?: string | undefined; \"aria-label\"?: string | undefined; 'data-test-subj'?: string | undefined; css?: ", + "Interpolation", + "<", + "Theme", + ">; suppressHydrationWarning?: boolean | undefined; lang?: string | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; title?: string | undefined; role?: React.AriaRole | undefined; color?: string | undefined; \"aria-activedescendant\"?: string | undefined; \"aria-atomic\"?: Booleanish | undefined; \"aria-autocomplete\"?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; \"aria-braillelabel\"?: string | undefined; \"aria-brailleroledescription\"?: string | undefined; \"aria-busy\"?: Booleanish | undefined; \"aria-checked\"?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; \"aria-colcount\"?: number | undefined; \"aria-colindex\"?: number | undefined; \"aria-colindextext\"?: string | undefined; \"aria-colspan\"?: number | undefined; \"aria-controls\"?: string | undefined; \"aria-current\"?: boolean | \"page\" | \"date\" | \"location\" | \"true\" | \"false\" | \"time\" | \"step\" | undefined; \"aria-describedby\"?: string | undefined; \"aria-description\"?: string | undefined; \"aria-details\"?: string | undefined; \"aria-disabled\"?: Booleanish | undefined; \"aria-dropeffect\"?: \"execute\" | \"link\" | \"none\" | \"copy\" | \"move\" | \"popup\" | undefined; \"aria-errormessage\"?: string | undefined; \"aria-expanded\"?: Booleanish | undefined; \"aria-flowto\"?: string | undefined; \"aria-grabbed\"?: Booleanish | undefined; \"aria-haspopup\"?: boolean | \"grid\" | \"true\" | \"false\" | \"dialog\" | \"menu\" | \"listbox\" | \"tree\" | undefined; \"aria-hidden\"?: Booleanish | undefined; \"aria-invalid\"?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; \"aria-keyshortcuts\"?: string | undefined; \"aria-labelledby\"?: string | undefined; \"aria-level\"?: number | undefined; \"aria-live\"?: \"off\" | \"assertive\" | \"polite\" | undefined; \"aria-modal\"?: Booleanish | undefined; \"aria-multiline\"?: Booleanish | undefined; \"aria-multiselectable\"?: Booleanish | undefined; \"aria-orientation\"?: \"horizontal\" | \"vertical\" | undefined; \"aria-owns\"?: string | undefined; \"aria-placeholder\"?: string | undefined; \"aria-posinset\"?: number | undefined; \"aria-pressed\"?: boolean | \"true\" | \"false\" | \"mixed\" | undefined; \"aria-readonly\"?: Booleanish | undefined; \"aria-relevant\"?: \"text\" | \"all\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; \"aria-required\"?: Booleanish | undefined; \"aria-roledescription\"?: string | undefined; \"aria-rowcount\"?: number | undefined; \"aria-rowindex\"?: number | undefined; \"aria-rowindextext\"?: string | undefined; \"aria-rowspan\"?: number | undefined; \"aria-selected\"?: Booleanish | undefined; \"aria-setsize\"?: number | undefined; \"aria-sort\"?: \"none\" | \"ascending\" | \"descending\" | \"other\" | undefined; \"aria-valuemax\"?: number | undefined; \"aria-valuemin\"?: number | undefined; \"aria-valuenow\"?: number | undefined; \"aria-valuetext\"?: string | undefined; children?: React.ReactNode; dangerouslySetInnerHTML?: { __html: string | TrustedHTML; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChange?: React.FormEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onResize?: React.ReactEventHandler | undefined; onResizeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; size?: \"m\" | \"s\" | \"l\" | \"original\" | \"xl\" | \"xxl\" | undefined; path?: string | undefined; from?: string | number | undefined; to?: string | number | undefined; clipPath?: string | undefined; mask?: string | undefined; offset?: string | number | undefined; href?: string | undefined; media?: string | undefined; target?: string | undefined; direction?: string | number | undefined; width?: string | number | undefined; textDecoration?: string | number | undefined; operator?: string | number | undefined; result?: string | undefined; origin?: string | number | undefined; method?: string | undefined; by?: string | number | undefined; scale?: string | number | undefined; y?: string | number | undefined; d?: string | undefined; fontSize?: string | number | undefined; fontFamily?: string | undefined; fontStyle?: string | number | undefined; stroke?: string | undefined; strokeWidth?: string | number | undefined; x?: string | number | undefined; stdDeviation?: string | number | undefined; display?: string | number | undefined; cursor?: string | number | undefined; height?: string | number | undefined; overflow?: string | number | undefined; preserveAspectRatio?: string | undefined; vectorEffect?: string | number | undefined; strokeMiterlimit?: string | number | undefined; textAnchor?: string | undefined; dominantBaseline?: string | number | undefined; dx?: string | number | undefined; dy?: string | number | undefined; r?: string | number | undefined; cx?: string | number | undefined; cy?: string | number | undefined; strokeLinecap?: \"square\" | \"inherit\" | \"butt\" | \"round\" | undefined; points?: string | undefined; strokeLinejoin?: \"inherit\" | \"round\" | \"miter\" | \"bevel\" | undefined; opacity?: string | number | undefined; crossOrigin?: CrossOrigin; accentHeight?: string | number | undefined; accumulate?: \"sum\" | \"none\" | undefined; additive?: \"sum\" | \"replace\" | undefined; alignmentBaseline?: \"inherit\" | \"auto\" | \"middle\" | \"alphabetic\" | \"hanging\" | \"ideographic\" | \"mathematical\" | \"baseline\" | \"before-edge\" | \"text-before-edge\" | \"central\" | \"after-edge\" | \"text-after-edge\" | undefined; allowReorder?: \"yes\" | \"no\" | undefined; alphabetic?: string | number | undefined; amplitude?: string | number | undefined; arabicForm?: \"initial\" | \"medial\" | \"terminal\" | \"isolated\" | undefined; ascent?: string | number | undefined; attributeName?: string | undefined; attributeType?: string | undefined; autoReverse?: Booleanish | undefined; azimuth?: string | number | undefined; baseFrequency?: string | number | undefined; baselineShift?: string | number | undefined; baseProfile?: string | number | undefined; bbox?: string | number | undefined; begin?: string | number | undefined; bias?: string | number | undefined; calcMode?: string | number | undefined; capHeight?: string | number | undefined; clip?: string | number | undefined; clipPathUnits?: string | number | undefined; clipRule?: string | number | undefined; colorInterpolation?: string | number | undefined; colorInterpolationFilters?: \"inherit\" | \"auto\" | \"sRGB\" | \"linearRGB\" | undefined; colorProfile?: string | number | undefined; colorRendering?: string | number | undefined; contentScriptType?: string | number | undefined; contentStyleType?: string | number | undefined; decelerate?: string | number | undefined; descent?: string | number | undefined; diffuseConstant?: string | number | undefined; divisor?: string | number | undefined; dur?: string | number | undefined; edgeMode?: string | number | undefined; elevation?: string | number | undefined; enableBackground?: string | number | undefined; exponent?: string | number | undefined; externalResourcesRequired?: Booleanish | undefined; fillOpacity?: string | number | undefined; fillRule?: \"inherit\" | \"nonzero\" | \"evenodd\" | undefined; filterRes?: string | number | undefined; filterUnits?: string | number | undefined; floodColor?: string | number | undefined; floodOpacity?: string | number | undefined; focusable?: Booleanish | \"auto\" | undefined; fontSizeAdjust?: string | number | undefined; fontStretch?: string | number | undefined; fontVariant?: string | number | undefined; fontWeight?: string | number | undefined; fr?: string | number | undefined; fx?: string | number | undefined; fy?: string | number | undefined; g1?: string | number | undefined; g2?: string | number | undefined; glyphName?: string | number | undefined; glyphOrientationHorizontal?: string | number | undefined; glyphOrientationVertical?: string | number | undefined; glyphRef?: string | number | undefined; gradientTransform?: string | undefined; gradientUnits?: string | undefined; hanging?: string | number | undefined; horizAdvX?: string | number | undefined; horizOriginX?: string | number | undefined; ideographic?: string | number | undefined; imageRendering?: string | number | undefined; in2?: string | number | undefined; intercept?: string | number | undefined; k1?: string | number | undefined; k2?: string | number | undefined; k3?: string | number | undefined; k4?: string | number | undefined; k?: string | number | undefined; kernelMatrix?: string | number | undefined; kernelUnitLength?: string | number | undefined; kerning?: string | number | undefined; keyPoints?: string | number | undefined; keySplines?: string | number | undefined; keyTimes?: string | number | undefined; lengthAdjust?: string | number | undefined; letterSpacing?: string | number | undefined; lightingColor?: string | number | undefined; limitingConeAngle?: string | number | undefined; local?: string | number | undefined; markerEnd?: string | undefined; markerHeight?: string | number | undefined; markerMid?: string | undefined; markerStart?: string | undefined; markerUnits?: string | number | undefined; markerWidth?: string | number | undefined; maskContentUnits?: string | number | undefined; maskUnits?: string | number | undefined; mathematical?: string | number | undefined; numOctaves?: string | number | undefined; orient?: string | number | undefined; orientation?: string | number | undefined; overlinePosition?: string | number | undefined; overlineThickness?: string | number | undefined; paintOrder?: string | number | undefined; panose1?: string | number | undefined; pathLength?: string | number | undefined; patternContentUnits?: string | undefined; patternTransform?: string | number | undefined; patternUnits?: string | undefined; pointerEvents?: string | number | undefined; pointsAtX?: string | number | undefined; pointsAtY?: string | number | undefined; pointsAtZ?: string | number | undefined; preserveAlpha?: Booleanish | undefined; primitiveUnits?: string | number | undefined; radius?: string | number | undefined; refX?: string | number | undefined; refY?: string | number | undefined; renderingIntent?: string | number | undefined; repeatCount?: string | number | undefined; repeatDur?: string | number | undefined; requiredExtensions?: string | number | undefined; requiredFeatures?: string | number | undefined; restart?: string | number | undefined; rotate?: string | number | undefined; rx?: string | number | undefined; ry?: string | number | undefined; seed?: string | number | undefined; shapeRendering?: string | number | undefined; slope?: string | number | undefined; spacing?: string | number | undefined; specularConstant?: string | number | undefined; specularExponent?: string | number | undefined; speed?: string | number | undefined; spreadMethod?: string | undefined; startOffset?: string | number | undefined; stemh?: string | number | undefined; stemv?: string | number | undefined; stitchTiles?: string | number | undefined; stopColor?: string | undefined; stopOpacity?: string | number | undefined; strikethroughPosition?: string | number | undefined; strikethroughThickness?: string | number | undefined; strokeDasharray?: string | number | undefined; strokeDashoffset?: string | number | undefined; strokeOpacity?: string | number | undefined; surfaceScale?: string | number | undefined; systemLanguage?: string | number | undefined; tableValues?: string | number | undefined; targetX?: string | number | undefined; targetY?: string | number | undefined; textLength?: string | number | undefined; textRendering?: string | number | undefined; u1?: string | number | undefined; u2?: string | number | undefined; underlinePosition?: string | number | undefined; underlineThickness?: string | number | undefined; unicode?: string | number | undefined; unicodeBidi?: string | number | undefined; unicodeRange?: string | number | undefined; unitsPerEm?: string | number | undefined; vAlphabetic?: string | number | undefined; vertAdvY?: string | number | undefined; vertOriginX?: string | number | undefined; vertOriginY?: string | number | undefined; vHanging?: string | number | undefined; vIdeographic?: string | number | undefined; viewBox?: string | undefined; viewTarget?: string | number | undefined; visibility?: string | number | undefined; vMathematical?: string | number | undefined; widths?: string | number | undefined; wordSpacing?: string | number | undefined; writingMode?: string | number | undefined; x1?: string | number | undefined; x2?: string | number | undefined; xChannelSelector?: string | undefined; xHeight?: string | number | undefined; xlinkActuate?: string | undefined; xlinkArcrole?: string | undefined; xlinkHref?: string | undefined; xlinkRole?: string | undefined; xlinkShow?: string | undefined; xlinkTitle?: string | undefined; xlinkType?: string | undefined; xmlBase?: string | undefined; xmlLang?: string | undefined; xmlns?: string | undefined; xmlnsXlink?: string | undefined; xmlSpace?: string | undefined; y1?: string | number | undefined; y2?: string | number | undefined; yChannelSelector?: string | undefined; z?: string | number | undefined; zoomAndPan?: string | undefined; titleId?: string | undefined; onIconLoad?: (() => void) | undefined; }" + ], + "path": "x-pack/platform/packages/shared/ai-assistant/icon/icon.tsx", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_ai_assistant_icon.mdx b/api_docs/kbn_ai_assistant_icon.mdx new file mode 100644 index 0000000000000..eb9ca9f6bf023 --- /dev/null +++ b/api_docs/kbn_ai_assistant_icon.mdx @@ -0,0 +1,36 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnAiAssistantIconPluginApi +slug: /kibana-dev-docs/api/kbn-ai-assistant-icon +title: "@kbn/ai-assistant-icon" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/ai-assistant-icon plugin +date: 2024-12-14 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-icon'] +--- +import kbnAiAssistantIconObj from './kbn_ai_assistant_icon.devdocs.json'; + + + +Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 11 | 0 | 3 | 0 | + +## Client + +### Functions + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index e4559025356e7..4dc2a800ac0d6 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_pattern_analysis.mdx b/api_docs/kbn_aiops_log_pattern_analysis.mdx index f3a4465f2a03c..e295db804ee08 100644 --- a/api_docs/kbn_aiops_log_pattern_analysis.mdx +++ b/api_docs/kbn_aiops_log_pattern_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-pattern-analysis title: "@kbn/aiops-log-pattern-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-pattern-analysis plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-pattern-analysis'] --- import kbnAiopsLogPatternAnalysisObj from './kbn_aiops_log_pattern_analysis.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_rate_analysis.mdx b/api_docs/kbn_aiops_log_rate_analysis.mdx index 7a17dac1060bc..0ee5be9e833d1 100644 --- a/api_docs/kbn_aiops_log_rate_analysis.mdx +++ b/api_docs/kbn_aiops_log_rate_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-rate-analysis title: "@kbn/aiops-log-rate-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-rate-analysis plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-rate-analysis'] --- import kbnAiopsLogRateAnalysisObj from './kbn_aiops_log_rate_analysis.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 0f3fbae34a79b..5e7f689580a75 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_comparators.mdx b/api_docs/kbn_alerting_comparators.mdx index a186f4a576fae..2f1b290b265e5 100644 --- a/api_docs/kbn_alerting_comparators.mdx +++ b/api_docs/kbn_alerting_comparators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-comparators title: "@kbn/alerting-comparators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-comparators plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-comparators'] --- import kbnAlertingComparatorsObj from './kbn_alerting_comparators.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index cb3b8816f8a49..ae54139b1728a 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index 92ecf2e3507c0..5618d4ae25e65 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 84733e8b9c25f..752ff43cb971f 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_grouping.mdx b/api_docs/kbn_alerts_grouping.mdx index c97880560776c..1647aefd7db4b 100644 --- a/api_docs/kbn_alerts_grouping.mdx +++ b/api_docs/kbn_alerts_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-grouping title: "@kbn/alerts-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-grouping plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-grouping'] --- import kbnAlertsGroupingObj from './kbn_alerts_grouping.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.devdocs.json b/api_docs/kbn_alerts_ui_shared.devdocs.json index 50b0cf5a6edd9..7a503c08980f5 100644 --- a/api_docs/kbn_alerts_ui_shared.devdocs.json +++ b/api_docs/kbn_alerts_ui_shared.devdocs.json @@ -5537,7 +5537,13 @@ "text": "HasSaveNotification" }, " & ", - "PublishesReload", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishesReload", + "text": "PublishesReload" + }, "> & { allowExpensiveQueries$: ", { "pluginId": "@kbn/presentation-publishing", diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 736438c8c985b..6b233e3f5879a 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index f303e5da39e0a..2a3ba8bdc65bc 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index c60e928a8b72a..7cac9df09c9f1 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 5263e6c4b593c..19f81499147d7 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_data_view.mdx b/api_docs/kbn_apm_data_view.mdx index 30dcd84e6b1be..cd2b684273252 100644 --- a/api_docs/kbn_apm_data_view.mdx +++ b/api_docs/kbn_apm_data_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-data-view title: "@kbn/apm-data-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-data-view plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-data-view'] --- import kbnApmDataViewObj from './kbn_apm_data_view.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.devdocs.json b/api_docs/kbn_apm_synthtrace.devdocs.json index de2e9080a6e6c..02cea754e3cb7 100644 --- a/api_docs/kbn_apm_synthtrace.devdocs.json +++ b/api_docs/kbn_apm_synthtrace.devdocs.json @@ -650,6 +650,53 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.InfraSynthtraceEsClient.getDefaultPipeline", + "type": "Function", + "tags": [], + "label": "getDefaultPipeline", + "description": [], + "signature": [ + "({ includeSerialization, }?: { includeSerialization?: boolean | undefined; }) => (base: ", + "Readable", + ") => ", + "Transform" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.InfraSynthtraceEsClient.getDefaultPipeline.$1", + "type": "Object", + "tags": [], + "label": "{\n includeSerialization,\n }", + "description": [], + "path": "packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace", + "id": "def-server.InfraSynthtraceEsClient.getDefaultPipeline.$1.includeSerialization", + "type": "CompoundType", + "tags": [], + "label": "includeSerialization", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] } ], "initialIsOpen": false diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 8459cbb3a487d..90f615d9a5d56 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/te | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 87 | 0 | 87 | 11 | +| 90 | 0 | 90 | 11 | ## Server diff --git a/api_docs/kbn_apm_synthtrace_client.devdocs.json b/api_docs/kbn_apm_synthtrace_client.devdocs.json index 0c4dcd3b9beb7..9b1507d45eaf4 100644 --- a/api_docs/kbn_apm_synthtrace_client.devdocs.json +++ b/api_docs/kbn_apm_synthtrace_client.devdocs.json @@ -3133,7 +3133,7 @@ "label": "LogDocument", "description": [], "signature": [ - "{ '@timestamp'?: number | undefined; } & Partial<{ _index?: string | undefined; 'input.type': string; 'log.file.path'?: string | undefined; 'service.name'?: string | undefined; 'service.environment'?: string | undefined; 'data_stream.namespace': string; 'data_stream.type': string; 'data_stream.dataset': string; message?: string | undefined; 'error.message'?: string | undefined; 'event.original'?: string | undefined; 'event.dataset': string; 'log.level'?: string | undefined; 'host.name'?: string | undefined; 'container.id'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.id'?: string | undefined; 'agent.id'?: string | undefined; 'agent.name'?: string | undefined; 'orchestrator.cluster.name'?: string | undefined; 'orchestrator.cluster.id'?: string | undefined; 'orchestrator.resource.id'?: string | undefined; 'kubernetes.pod.uid'?: string | undefined; 'aws.s3.bucket.name'?: string | undefined; 'aws.kinesis.name'?: string | undefined; 'orchestrator.namespace'?: string | undefined; 'container.name'?: string | undefined; 'cloud.provider'?: string | undefined; 'cloud.region'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.project.id'?: string | undefined; 'cloud.instance.id'?: string | undefined; 'error.stack_trace'?: string | undefined; 'error.exception.stacktrace'?: string | undefined; 'error.log.stacktrace'?: string | undefined; 'log.custom': Record; 'host.geo.location': number[]; 'host.ip': string; 'network.bytes': number; 'tls.established': boolean; 'event.duration': number; 'event.start': Date; 'event.end': Date; labels?: Record | undefined; test_field: string | string[]; date: Date; severity: string; msg: string; svc: string; hostname: string; 'http.status_code'?: number | undefined; 'http.request.method'?: string | undefined; 'url.path'?: string | undefined; 'process.name'?: string | undefined; 'kubernetes.namespace'?: string | undefined; 'kubernetes.pod.name'?: string | undefined; 'kubernetes.container.name'?: string | undefined; 'orchestrator.resource.name'?: string | undefined; thisisaverylongfieldnamethatevendoesnotcontainanyspaceswhyitcouldpotentiallybreakouruiinseveralplaces: string; }>" + "{ '@timestamp'?: number | undefined; } & Partial<{ _index?: string | undefined; 'input.type': string; 'log.file.path'?: string | undefined; 'service.name'?: string | undefined; 'service.environment'?: string | undefined; 'data_stream.namespace': string; 'data_stream.type': string; 'data_stream.dataset': string; message?: string | undefined; 'error.message'?: string | undefined; 'event.original'?: string | undefined; 'event.dataset': string; 'log.level'?: string | undefined; 'host.name'?: string | undefined; 'container.id'?: string | undefined; 'trace.id'?: string | undefined; 'transaction.id'?: string | undefined; 'agent.id'?: string | undefined; 'agent.name'?: string | undefined; 'orchestrator.cluster.name'?: string | undefined; 'orchestrator.cluster.id'?: string | undefined; 'orchestrator.resource.id'?: string | undefined; 'kubernetes.pod.uid'?: string | undefined; 'aws.s3.bucket.name'?: string | undefined; 'aws.kinesis.name'?: string | undefined; 'orchestrator.namespace'?: string | undefined; 'container.name'?: string | undefined; 'cloud.provider'?: string | undefined; 'cloud.region'?: string | undefined; 'cloud.availability_zone'?: string | undefined; 'cloud.project.id'?: string | undefined; 'cloud.instance.id'?: string | undefined; 'error.stack_trace'?: string | undefined; 'error.exception.stacktrace'?: string | undefined; 'error.log.stacktrace'?: string | undefined; 'log.custom': Record; 'host.geo.location': number[]; 'host.ip': string; 'network.bytes': number; 'tls.established': boolean; 'event.duration': number; 'event.start': Date; 'event.end': Date; labels?: Record | undefined; test_field: string | string[]; date: Date; severity: string; msg: string; svc: string; hostname: string; 'http.status_code'?: number | undefined; 'http.request.method'?: string | undefined; 'url.path'?: string | undefined; 'process.name'?: string | undefined; 'kubernetes.namespace'?: string | undefined; 'kubernetes.pod.name'?: string | undefined; 'kubernetes.container.name'?: string | undefined; 'orchestrator.resource.name'?: string | undefined; tags?: string | string[] | undefined; thisisaverylongfieldnamethatevendoesnotcontainanyspaceswhyitcouldpotentiallybreakouruiinseveralplaces: string; }>" ], "path": "packages/kbn-apm-synthtrace-client/src/lib/logs/index.ts", "deprecated": false, diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index f8ea0e05eec1b..edc635ac6ab16 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_types.mdx b/api_docs/kbn_apm_types.mdx index 361888d87985c..ae5746d0caab5 100644 --- a/api_docs/kbn_apm_types.mdx +++ b/api_docs/kbn_apm_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-types title: "@kbn/apm-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-types'] --- import kbnApmTypesObj from './kbn_apm_types.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index c24f24b655be2..0f17dadc741ff 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_avc_banner.devdocs.json b/api_docs/kbn_avc_banner.devdocs.json index 4e98d1ddaa1b1..757b32f34d292 100644 --- a/api_docs/kbn_avc_banner.devdocs.json +++ b/api_docs/kbn_avc_banner.devdocs.json @@ -13,7 +13,7 @@ "signature": [ "({ onDismiss }: { onDismiss: () => void; }) => React.JSX.Element" ], - "path": "packages/kbn-avc-banner/src/index.tsx", + "path": "src/platform/packages/shared/kbn-avc-banner/src/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -27,7 +27,7 @@ "signature": [ "{ onDismiss: () => void; }" ], - "path": "packages/kbn-avc-banner/src/index.tsx", + "path": "src/platform/packages/shared/kbn-avc-banner/src/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -46,7 +46,7 @@ "signature": [ "() => boolean" ], - "path": "packages/kbn-avc-banner/src/index.tsx", + "path": "src/platform/packages/shared/kbn-avc-banner/src/index.tsx", "deprecated": false, "trackAdoption": false, "children": [], diff --git a/api_docs/kbn_avc_banner.mdx b/api_docs/kbn_avc_banner.mdx index 3a4e80771680f..f58c3253cd519 100644 --- a/api_docs/kbn_avc_banner.mdx +++ b/api_docs/kbn_avc_banner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-avc-banner title: "@kbn/avc-banner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/avc-banner plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/avc-banner'] --- import kbnAvcBannerObj from './kbn_avc_banner.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index de53c7e0ab5ac..1ba71e5f03321 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index bfb2cb98b9771..a7511d081746f 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index 5d60df594b8f6..df6dc38cdf8ab 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index aaea3f4b78ac1..8b6ce4eec98f1 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 9d3b9443409d6..9adde64eb19d1 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cbor.mdx b/api_docs/kbn_cbor.mdx index 4cb2f4c237720..3ef8824d1c169 100644 --- a/api_docs/kbn_cbor.mdx +++ b/api_docs/kbn_cbor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cbor title: "@kbn/cbor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cbor plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cbor'] --- import kbnCborObj from './kbn_cbor.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.devdocs.json b/api_docs/kbn_cell_actions.devdocs.json index e7ad74ad1b42d..1fa4a7142dbd4 100644 --- a/api_docs/kbn_cell_actions.devdocs.json +++ b/api_docs/kbn_cell_actions.devdocs.json @@ -37,7 +37,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-cell-actions/src/components/cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/components/cell_actions.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -57,7 +57,7 @@ "text": "CellActionsProps" } ], - "path": "packages/kbn-cell-actions/src/components/cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/components/cell_actions.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -84,7 +84,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-cell-actions/src/context/cell_actions_context.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/context/cell_actions_context.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -104,7 +104,7 @@ "text": "CellActionsProviderProps" } ], - "path": "packages/kbn-cell-actions/src/context/cell_actions_context.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/context/cell_actions_context.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -133,7 +133,7 @@ "EuiDataGridColumnCellAction", "[][]" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -153,7 +153,7 @@ "text": "UseDataGridColumnsCellActionsProps" } ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -189,7 +189,7 @@ }, ", \"isCompatible\">" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -213,7 +213,7 @@ }, ") => Promise" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -234,7 +234,7 @@ }, "" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -272,7 +272,7 @@ }, "" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -288,7 +288,7 @@ "signature": [ "Omit[]" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -304,7 +304,7 @@ "signature": [ "C[\"metadata\"] | undefined" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -336,7 +336,7 @@ }, "" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -357,7 +357,7 @@ }, "[]" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -373,7 +373,7 @@ "signature": [ "React.MutableRefObject" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -389,7 +389,7 @@ "signature": [ "Metadata | undefined" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -413,7 +413,7 @@ }, "" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -427,7 +427,7 @@ "signature": [ "any" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -457,7 +457,7 @@ }, "" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -479,7 +479,7 @@ }, ">" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -497,7 +497,7 @@ "tags": [], "label": "CellActionsData", "description": [], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -546,7 +546,7 @@ "MappingTimeSeriesMetricType", " | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; parentName?: string | undefined; defaultFormatter?: string | undefined; }" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -570,7 +570,7 @@ }, " | null[]" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -584,7 +584,7 @@ "tags": [], "label": "PartitionedActions", "description": [], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -613,7 +613,7 @@ }, ">[]" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -642,7 +642,7 @@ }, ">[]" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -674,7 +674,7 @@ }, ", \"metadata\" | \"disabledActionTypes\">" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -690,7 +690,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false }, @@ -713,7 +713,7 @@ }, "[] | undefined" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false }, @@ -736,7 +736,7 @@ "text": "CellActionFieldValue" } ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -750,7 +750,7 @@ "signature": [ "string" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -765,7 +765,7 @@ "signature": [ "number" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -787,7 +787,7 @@ "EuiDataGridRefProps", " | null>" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false } @@ -809,7 +809,7 @@ "signature": [ "Partial & { id: string; }" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -832,7 +832,7 @@ }, " | null[]" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -865,7 +865,7 @@ "CellActionsMode", "; showActionTooltips?: boolean | undefined; visibleCellActions?: number | undefined; disabledActionTypes?: string[] | undefined; metadata?: Metadata | undefined; className?: string | undefined; } & { children?: React.ReactNode; }" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -888,7 +888,7 @@ }, "[]>; } & { children?: React.ReactNode; }" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -905,7 +905,7 @@ "signature": [ "{ [P in Exclude]: C[P]; }" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -920,7 +920,7 @@ "signature": [ "string[] | boolean[] | number[]" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -967,7 +967,7 @@ }, ">[]>" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -997,7 +997,7 @@ }, ">" ], - "path": "packages/kbn-cell-actions/src/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1023,7 +1023,7 @@ " | ", "SerializableArray" ], - "path": "packages/kbn-cell-actions/src/actions/types.ts", + "path": "src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1040,7 +1040,7 @@ "EuiDataGridColumnCellAction", "[][]" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1055,7 +1055,7 @@ "signature": [ "P" ], - "path": "packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", + "path": "src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 7d00616784a6d..02ca9d02c6c3b 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index d9163287fa9c3..a16cf3e05c270 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 1731b12caba48..faf1641f914bf 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 207061dbb6b12..0435c8f4414e8 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 05bf5103fe6d7..a0e9445514b11 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 3cd2545713d53..e8b434de8743a 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index ca530b7a61383..792bab70371e7 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture.mdx b/api_docs/kbn_cloud_security_posture.mdx index cf5bcab952a02..9829ba48c53be 100644 --- a/api_docs/kbn_cloud_security_posture.mdx +++ b/api_docs/kbn_cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture title: "@kbn/cloud-security-posture" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture'] --- import kbnCloudSecurityPostureObj from './kbn_cloud_security_posture.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_common.mdx b/api_docs/kbn_cloud_security_posture_common.mdx index 229bbd63114a0..d00eb6f4e4e57 100644 --- a/api_docs/kbn_cloud_security_posture_common.mdx +++ b/api_docs/kbn_cloud_security_posture_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-common title: "@kbn/cloud-security-posture-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-common'] --- import kbnCloudSecurityPostureCommonObj from './kbn_cloud_security_posture_common.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_graph.devdocs.json b/api_docs/kbn_cloud_security_posture_graph.devdocs.json index eb1a40b17d3c6..00c821750e580 100644 --- a/api_docs/kbn_cloud_security_posture_graph.devdocs.json +++ b/api_docs/kbn_cloud_security_posture_graph.devdocs.json @@ -56,6 +56,54 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/cloud-security-posture-graph", + "id": "def-public.GraphInvestigation", + "type": "Function", + "tags": [], + "label": "GraphInvestigation", + "description": [ + "\nGraph investigation view allows the user to expand nodes and view related entities." + ], + "signature": [ + "React.FunctionComponent" + ], + "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_investigation.tsx", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/cloud-security-posture-graph", + "id": "def-public.GraphInvestigation.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/ts5.0/index.d.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/cloud-security-posture-graph", + "id": "def-public.GraphInvestigation.$2", + "type": "Any", + "tags": [], + "label": "context", + "description": [], + "signature": [ + "any" + ], + "path": "node_modules/@types/react/ts5.0/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/cloud-security-posture-graph", "id": "def-public.GraphPopover", @@ -91,6 +139,46 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/cloud-security-posture-graph", + "id": "def-public.useFetchGraphData", + "type": "Function", + "tags": [], + "label": "useFetchGraphData", + "description": [ + "\nHook to fetch event's graph visualization data.\n" + ], + "signature": [ + "({ req, options, }: ", + "UseFetchGraphDataParams", + ") => ", + "UseFetchGraphDataResult" + ], + "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/cloud-security-posture-graph", + "id": "def-public.useFetchGraphData.$1", + "type": "Object", + "tags": [], + "label": "{\n req,\n options,\n}", + "description": [], + "signature": [ + "UseFetchGraphDataParams" + ], + "path": "x-pack/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "The result of the hook." + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/cloud-security-posture-graph", "id": "def-public.useGraphPopover", diff --git a/api_docs/kbn_cloud_security_posture_graph.mdx b/api_docs/kbn_cloud_security_posture_graph.mdx index 84e189f3d758a..29236bf5c4d99 100644 --- a/api_docs/kbn_cloud_security_posture_graph.mdx +++ b/api_docs/kbn_cloud_security_posture_graph.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-graph title: "@kbn/cloud-security-posture-graph" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-graph plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-graph'] --- import kbnCloudSecurityPostureGraphObj from './kbn_cloud_security_posture_graph.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 20 | 0 | 15 | 4 | +| 25 | 0 | 16 | 6 | ## Client diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 468b5f6efd416..223302f2b4f97 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mock.mdx b/api_docs/kbn_code_editor_mock.mdx index 8d330b5352d7f..1173d5af8ae8c 100644 --- a/api_docs/kbn_code_editor_mock.mdx +++ b/api_docs/kbn_code_editor_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mock title: "@kbn/code-editor-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mock plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mock'] --- import kbnCodeEditorMockObj from './kbn_code_editor_mock.devdocs.json'; diff --git a/api_docs/kbn_code_owners.devdocs.json b/api_docs/kbn_code_owners.devdocs.json index 8a9168cad1d76..c017220858247 100644 --- a/api_docs/kbn_code_owners.devdocs.json +++ b/api_docs/kbn_code_owners.devdocs.json @@ -21,81 +21,93 @@ "functions": [ { "parentPluginId": "@kbn/code-owners", - "id": "def-common.getCodeOwnersForFile", + "id": "def-common.findCodeOwnersEntryForPath", "type": "Function", - "tags": [], - "label": "getCodeOwnersForFile", + "tags": [ + "throws" + ], + "label": "findCodeOwnersEntryForPath", "description": [ - "\nGet the GitHub CODEOWNERS for a file in the repository" + "\nGet a list of matching code owners for a given path\n\nTip:\n If you're making a lot of calls to this function, fetch the code owner paths once using\n `getCodeOwnersEntries` and pass it in the `getCodeOwnersEntries` parameter to speed up your queries..\n" ], "signature": [ - "(filePath: string, reversedCodeowners: ", + "(searchPath: string, codeOwnersEntries: ", { "pluginId": "@kbn/code-owners", "scope": "common", "docId": "kibKbnCodeOwnersPluginApi", - "section": "def-common.PathWithOwners", - "text": "PathWithOwners" + "section": "def-common.CodeOwnersEntry", + "text": "CodeOwnersEntry" }, - "[] | undefined) => string | undefined" + "[] | undefined) => ", + { + "pluginId": "@kbn/code-owners", + "scope": "common", + "docId": "kibKbnCodeOwnersPluginApi", + "section": "def-common.CodeOwnersEntry", + "text": "CodeOwnersEntry" + }, + " | undefined" ], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/code-owners", - "id": "def-common.getCodeOwnersForFile.$1", + "id": "def-common.findCodeOwnersEntryForPath.$1", "type": "string", "tags": [], - "label": "filePath", + "label": "searchPath", "description": [ - "the file to get code owners for" + "The path to find code owners for" ], "signature": [ "string" ], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false, "isRequired": true }, { "parentPluginId": "@kbn/code-owners", - "id": "def-common.getCodeOwnersForFile.$2", + "id": "def-common.findCodeOwnersEntryForPath.$2", "type": "Array", "tags": [], - "label": "reversedCodeowners", + "label": "codeOwnersEntries", "description": [ - "a cached reversed code owners list, use to speed up multiple requests" + "Pre-defined list of code owner paths to search in" ], "signature": [ { "pluginId": "@kbn/code-owners", "scope": "common", "docId": "kibKbnCodeOwnersPluginApi", - "section": "def-common.PathWithOwners", - "text": "PathWithOwners" + "section": "def-common.CodeOwnersEntry", + "text": "CodeOwnersEntry" }, "[] | undefined" ], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false, "isRequired": false } ], - "returnComment": [], + "returnComment": [ + "Code owners entry if a match is found." + ], "initialIsOpen": false }, { "parentPluginId": "@kbn/code-owners", - "id": "def-common.getPathsWithOwnersReversed", + "id": "def-common.getCodeOwnersEntries", "type": "Function", "tags": [], - "label": "getPathsWithOwnersReversed", + "label": "getCodeOwnersEntries", "description": [ - "\nGet the .github/CODEOWNERS entries, prepared for path matching.\nThe last matching CODEOWNERS entry has highest precedence:\nhttps://help.github.com/articles/about-codeowners/\nso entries are returned in reversed order to later search for the first match." + "\nGet all code owner entries from the CODEOWNERS file\n\nEntries are ordered in reverse relative to how they're defined in the CODEOWNERS file\nas patterns defined lower in the CODEOWNERS file can override earlier entries." ], "signature": [ "() => ", @@ -103,12 +115,12 @@ "pluginId": "@kbn/code-owners", "scope": "common", "docId": "kibKbnCodeOwnersPluginApi", - "section": "def-common.PathWithOwners", - "text": "PathWithOwners" + "section": "def-common.CodeOwnersEntry", + "text": "CodeOwnersEntry" }, "[]" ], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -117,69 +129,140 @@ }, { "parentPluginId": "@kbn/code-owners", - "id": "def-common.runGetOwnersForFileCli", + "id": "def-common.getOwningTeamsForPath", "type": "Function", - "tags": [], - "label": "runGetOwnersForFileCli", + "tags": [ + "throws" + ], + "label": "getOwningTeamsForPath", "description": [ - "\nRun the getCodeOwnersForFile() method above.\nReport back to the cli with either success and the owner(s), or a failure.\n\nThis function depends on a --file param being passed on the cli, like this:\n$ node scripts/get_owners_for_file.js --file SOME-FILE" + "\nGet a list of matching code owners for a given path\n\nTip:\n If you're making a lot of calls to this function, fetch the code owner paths once using\n `getCodeOwnersEntries` and pass it in the `getCodeOwnersEntries` parameter to speed up your queries.\n" ], "signature": [ - "() => Promise" + "(searchPath: string, codeOwnersEntries: ", + { + "pluginId": "@kbn/code-owners", + "scope": "common", + "docId": "kibKbnCodeOwnersPluginApi", + "section": "def-common.CodeOwnersEntry", + "text": "CodeOwnersEntry" + }, + "[] | undefined) => string[]" ], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false, - "children": [], - "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/code-owners", + "id": "def-common.getOwningTeamsForPath.$1", + "type": "string", + "tags": [], + "label": "searchPath", + "description": [ + "The path to find code owners for" + ], + "signature": [ + "string" + ], + "path": "packages/kbn-code-owners/src/code_owners.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/code-owners", + "id": "def-common.getOwningTeamsForPath.$2", + "type": "Array", + "tags": [], + "label": "codeOwnersEntries", + "description": [ + "Pre-defined list of code owner entries" + ], + "signature": [ + { + "pluginId": "@kbn/code-owners", + "scope": "common", + "docId": "kibKbnCodeOwnersPluginApi", + "section": "def-common.CodeOwnersEntry", + "text": "CodeOwnersEntry" + }, + "[] | undefined" + ], + "path": "packages/kbn-code-owners/src/code_owners.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [ + "List of code owners for the given path. Empty list if no matching entry is found." + ], "initialIsOpen": false } ], "interfaces": [ { "parentPluginId": "@kbn/code-owners", - "id": "def-common.PathWithOwners", + "id": "def-common.CodeOwnersEntry", "type": "Interface", "tags": [], - "label": "PathWithOwners", + "label": "CodeOwnersEntry", "description": [], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/code-owners", - "id": "def-common.PathWithOwners.path", + "id": "def-common.CodeOwnersEntry.pattern", "type": "string", "tags": [], - "label": "path", + "label": "pattern", "description": [], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/code-owners", - "id": "def-common.PathWithOwners.teams", - "type": "string", + "id": "def-common.CodeOwnersEntry.matcher", + "type": "Object", + "tags": [], + "label": "matcher", + "description": [], + "signature": [ + "Ignore" + ], + "path": "packages/kbn-code-owners/src/code_owners.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/code-owners", + "id": "def-common.CodeOwnersEntry.teams", + "type": "Array", "tags": [], "label": "teams", "description": [], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "signature": [ + "string[]" + ], + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/code-owners", - "id": "def-common.PathWithOwners.ignorePattern", - "type": "Object", + "id": "def-common.CodeOwnersEntry.comment", + "type": "string", "tags": [], - "label": "ignorePattern", + "label": "comment", "description": [], "signature": [ - "Ignore" + "string | undefined" ], - "path": "packages/kbn-code-owners/src/file_code_owner.ts", + "path": "packages/kbn-code-owners/src/code_owners.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 86b94b9825f56..25129ef166ef9 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) for | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 9 | 0 | 4 | 0 | +| 12 | 0 | 5 | 0 | ## Common diff --git a/api_docs/kbn_coloring.devdocs.json b/api_docs/kbn_coloring.devdocs.json index c219a0dfa7778..8084df1bd1b25 100644 --- a/api_docs/kbn_coloring.devdocs.json +++ b/api_docs/kbn_coloring.devdocs.json @@ -209,6 +209,97 @@ } ], "functions": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.applyPaletteParams", + "type": "Function", + "tags": [], + "label": "applyPaletteParams", + "description": [], + "signature": [ + "(palettes: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteRegistry", + "text": "PaletteRegistry" + }, + ", activePalette: T, dataBounds: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.DataBounds", + "text": "DataBounds" + }, + ") => { stop: number; color: string; }[]" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.applyPaletteParams.$1", + "type": "Object", + "tags": [], + "label": "palettes", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteRegistry", + "text": "PaletteRegistry" + } + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.applyPaletteParams.$2", + "type": "Uncategorized", + "tags": [], + "label": "activePalette", + "description": [], + "signature": [ + "T" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.applyPaletteParams.$3", + "type": "Object", + "tags": [], + "label": "dataBounds", + "description": [], + "signature": [ + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.DataBounds", + "text": "DataBounds" + } + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/coloring", "id": "def-common.checkIsMaxContinuity", @@ -486,8 +577,14 @@ "GradientColor", " | (", "LoopColor", - " & { paletteId: string; colorIndex: number; }), getPaletteFn: (paletteId: string) => ", - "CategoricalPalette", + " & { paletteId: string; colorIndex: number; }), palettes: ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + }, ", isDarkMode: boolean, index: number, total: number) => string" ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", @@ -536,13 +633,18 @@ { "parentPluginId": "@kbn/coloring", "id": "def-common.getAssignmentColor.$3", - "type": "Function", + "type": "Object", "tags": [], - "label": "getPaletteFn", + "label": "palettes", "description": [], "signature": [ - "(paletteId: string) => ", - "CategoricalPalette" + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", "deprecated": false, @@ -612,9 +714,15 @@ "ColorCode", " | (", "LoopColor", - " & { paletteId: string; colorIndex: number; }), getPaletteFn: (paletteId: string) => ", - "CategoricalPalette", - ", isDarkMode: boolean) => string" + " & { paletteId: string; colorIndex: number; }), palettes: ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + }, + ") => string" ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", "deprecated": false, @@ -643,28 +751,18 @@ { "parentPluginId": "@kbn/coloring", "id": "def-common.getColor.$2", - "type": "Function", - "tags": [], - "label": "getPaletteFn", - "description": [], - "signature": [ - "(paletteId: string) => ", - "CategoricalPalette" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.getColor.$3", - "type": "boolean", + "type": "Object", "tags": [], - "label": "isDarkMode", + "label": "palettes", "description": [], "signature": [ - "boolean" + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", "deprecated": false, @@ -718,8 +816,14 @@ "signature": [ "({ assignments, specialAssignments, colorMode, paletteId }: ", "Config", - ", getPaletteFn: (paletteId: string) => ", - "CategoricalPalette", + ", palettes: ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + }, ", isDarkMode: boolean, data: ", { "pluginId": "@kbn/coloring", @@ -752,13 +856,18 @@ { "parentPluginId": "@kbn/coloring", "id": "def-common.getColorFactory.$2", - "type": "Function", + "type": "Object", "tags": [], - "label": "getPaletteFn", + "label": "palettes", "description": [], "signature": [ - "(paletteId: string) => ", - "CategoricalPalette" + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", "deprecated": false, @@ -813,7 +922,15 @@ "label": "getColorsFromMapping", "description": [], "signature": [ - "(isDarkMode: boolean, colorMappings: ", + "(palettes: ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + }, + ", isDarkMode: boolean, colorMappings: ", "Config", " | undefined) => string[]" ], @@ -824,6 +941,27 @@ { "parentPluginId": "@kbn/coloring", "id": "def-common.getColorsFromMapping.$1", + "type": "Object", + "tags": [], + "label": "palettes", + "description": [], + "signature": [ + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } + ], + "path": "packages/kbn-coloring/src/shared_components/color_mapping/config/default_color_mapping.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/coloring", + "id": "def-common.getColorsFromMapping.$2", "type": "boolean", "tags": [], "label": "isDarkMode", @@ -838,7 +976,7 @@ }, { "parentPluginId": "@kbn/coloring", - "id": "def-common.getColorsFromMapping.$2", + "id": "def-common.getColorsFromMapping.$3", "type": "Object", "tags": [], "label": "colorMappings", @@ -968,8 +1106,14 @@ "signature": [ "(colorMode: ", "GradientColorMode", - ", getPaletteFn: (paletteId: string) => ", - "CategoricalPalette", + ", palettes: ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + }, ", isDarkMode: boolean) => (value: number) => string" ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", @@ -994,13 +1138,18 @@ { "parentPluginId": "@kbn/coloring", "id": "def-common.getGradientColorScale.$2", - "type": "Function", + "type": "Object", "tags": [], - "label": "getPaletteFn", + "label": "palettes", "description": [], "signature": [ - "(paletteId: string) => ", - "CategoricalPalette" + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts", "deprecated": false, @@ -1028,56 +1177,71 @@ }, { "parentPluginId": "@kbn/coloring", - "id": "def-common.getPalette", + "id": "def-common.getOverridePaletteStops", "type": "Function", "tags": [], - "label": "getPalette", + "label": "getOverridePaletteStops", "description": [ - "\nThis function should be instanciated once at the root of the component with the available palettes and\na choosed default one and shared across components to keep a single point of truth of the available palettes and the default\none." + "\nReturns color stops for given palette type:\n\n- custom - User has modified the stops in some way - return stops as is\n- non-custom - Default palette stops - Return new stops based on palette\n\n> This is needed for BWC when switching between kibana themes." ], "signature": [ - "(palettes: Map, defaultPalette: ", - "CategoricalPalette", - ") => (paletteId: string) => ", - "CategoricalPalette" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/index.ts", + "(paletteService: ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteRegistry", + "text": "PaletteRegistry" + }, + ", activePalette: T | undefined) => ", + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.ColorStop", + "text": "ColorStop" + }, + "[] | undefined" + ], + "path": "packages/kbn-coloring/src/palettes/utils.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/coloring", - "id": "def-common.getPalette.$1", + "id": "def-common.getOverridePaletteStops.$1", "type": "Object", "tags": [], - "label": "palettes", + "label": "paletteService", "description": [], "signature": [ - "Map" + { + "pluginId": "@kbn/coloring", + "scope": "common", + "docId": "kibKbnColoringPluginApi", + "section": "def-common.PaletteRegistry", + "text": "PaletteRegistry" + } ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/index.ts", + "path": "packages/kbn-coloring/src/palettes/utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true }, { "parentPluginId": "@kbn/coloring", - "id": "def-common.getPalette.$2", - "type": "Object", + "id": "def-common.getOverridePaletteStops.$2", + "type": "Uncategorized", "tags": [], - "label": "defaultPalette", + "label": "activePalette", "description": [], "signature": [ - "CategoricalPalette" + "T | undefined" ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/index.ts", + "path": "packages/kbn-coloring/src/palettes/utils.ts", "deprecated": false, "trackAdoption": false, - "isRequired": true + "isRequired": false } ], "returnComment": [], @@ -1091,7 +1255,15 @@ "label": "getPaletteColors", "description": [], "signature": [ - "(isDarkMode: boolean, colorMappings: ", + "(palettes: ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + }, + ", colorMappings: ", "Config", " | undefined) => string[]" ], @@ -1102,12 +1274,18 @@ { "parentPluginId": "@kbn/coloring", "id": "def-common.getPaletteColors.$1", - "type": "boolean", + "type": "Object", "tags": [], - "label": "isDarkMode", + "label": "palettes", "description": [], "signature": [ - "boolean" + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/config/default_color_mapping.ts", "deprecated": false, @@ -1991,12 +2169,16 @@ "tags": [], "label": "palettes", "description": [ - "A map of paletteId and palette configuration" + "A collection of palette configurations" ], "signature": [ - "Map" + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } ], "path": "packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.tsx", "deprecated": false, @@ -2258,7 +2440,9 @@ "type": "Array", "tags": [], "label": "stops", - "description": [], + "description": [ + "lower color stops" + ], "signature": [ { "pluginId": "@kbn/coloring", @@ -2279,7 +2463,9 @@ "type": "Array", "tags": [], "label": "colorStops", - "description": [], + "description": [ + "upper color stops" + ], "signature": [ { "pluginId": "@kbn/coloring", @@ -3113,36 +3299,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ELASTIC_BRAND_PALETTE_COLORS", - "type": "Array", - "tags": [], - "label": "ELASTIC_BRAND_PALETTE_COLORS", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUI_AMSTERDAM_PALETTE_COLORS", - "type": "Array", - "tags": [], - "label": "EUI_AMSTERDAM_PALETTE_COLORS", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/coloring", "id": "def-common.FIXED_PROGRESSION", @@ -3158,21 +3314,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KIBANA_V7_LEGACY_PALETTE_COLORS", - "type": "Array", - "tags": [], - "label": "KIBANA_V7_LEGACY_PALETTE_COLORS", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/coloring", "id": "def-common.LEGACY_COMPLIMENTARY_PALETTE", @@ -3188,36 +3329,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NEUTRAL_COLOR_DARK", - "type": "Array", - "tags": [], - "label": "NEUTRAL_COLOR_DARK", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NEUTRAL_COLOR_LIGHT", - "type": "Array", - "tags": [], - "label": "NEUTRAL_COLOR_LIGHT", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/coloring", "id": "def-common.PaletteContinuity", @@ -3241,23 +3352,23 @@ "label": "RequiredPaletteParamTypes", "description": [], "signature": [ - "{ reverse: boolean; name: string; rangeType: \"number\" | \"percent\"; continuity: ", + "{ reverse: boolean; name: string; rangeType: \"number\" | \"percent\"; stops: ", { "pluginId": "@kbn/coloring", "scope": "common", "docId": "kibKbnColoringPluginApi", - "section": "def-common.PaletteContinuity", - "text": "PaletteContinuity" + "section": "def-common.ColorStop", + "text": "ColorStop" }, - "; progression: \"fixed\"; rangeMin: number; rangeMax: number; stops: ", + "[]; continuity: ", { "pluginId": "@kbn/coloring", "scope": "common", "docId": "kibKbnColoringPluginApi", - "section": "def-common.ColorStop", - "text": "ColorStop" + "section": "def-common.PaletteContinuity", + "text": "PaletteContinuity" }, - "[]; colorStops: ", + "; progression: \"fixed\"; rangeMin: number; rangeMax: number; colorStops: ", { "pluginId": "@kbn/coloring", "scope": "common", @@ -3274,23 +3385,6 @@ } ], "objects": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.AVAILABLE_PALETTES", - "type": "Object", - "tags": [], - "label": "AVAILABLE_PALETTES", - "description": [], - "signature": [ - "Map" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/coloring", "id": "def-common.DEFAULT_COLOR_MAPPING_CONFIG", @@ -3373,483 +3467,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette", - "type": "Object", - "tags": [], - "label": "ElasticBrandPalette", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.colorCount", - "type": "number", - "tags": [], - "label": "colorCount", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"categorical\"" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.getColor", - "type": "Function", - "tags": [], - "label": "getColor", - "description": [], - "signature": [ - "(indexInRange: number, isDarkMode: boolean, loop: boolean) => string" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.getColor.$1", - "type": "number", - "tags": [], - "label": "indexInRange", - "description": [], - "signature": [ - "number" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.getColor.$2", - "type": "boolean", - "tags": [], - "label": "isDarkMode", - "description": [], - "signature": [ - "boolean" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.ElasticBrandPalette.getColor.$3", - "type": "boolean", - "tags": [], - "label": "loop", - "description": [], - "signature": [ - "boolean" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette", - "type": "Object", - "tags": [], - "label": "EUIAmsterdamColorBlindPalette", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.colorCount", - "type": "number", - "tags": [], - "label": "colorCount", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"categorical\"" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.getColor", - "type": "Function", - "tags": [], - "label": "getColor", - "description": [], - "signature": [ - "(indexInRange: number, isDarkMode: boolean, loop: boolean) => string" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.getColor.$1", - "type": "number", - "tags": [], - "label": "indexInRange", - "description": [], - "signature": [ - "number" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.getColor.$2", - "type": "boolean", - "tags": [], - "label": "isDarkMode", - "description": [], - "signature": [ - "boolean" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.EUIAmsterdamColorBlindPalette.getColor.$3", - "type": "boolean", - "tags": [], - "label": "loop", - "description": [], - "signature": [ - "boolean" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette", - "type": "Object", - "tags": [], - "label": "KibanaV7LegacyPalette", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.colorCount", - "type": "number", - "tags": [], - "label": "colorCount", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"categorical\"" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.getColor", - "type": "Function", - "tags": [], - "label": "getColor", - "description": [], - "signature": [ - "(indexInRange: number, isDarkMode: boolean, loop: boolean) => string" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.getColor.$1", - "type": "number", - "tags": [], - "label": "indexInRange", - "description": [], - "signature": [ - "number" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.getColor.$2", - "type": "boolean", - "tags": [], - "label": "isDarkMode", - "description": [], - "signature": [ - "boolean" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.KibanaV7LegacyPalette.getColor.$3", - "type": "boolean", - "tags": [], - "label": "loop", - "description": [], - "signature": [ - "boolean" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette", - "type": "Object", - "tags": [], - "label": "NeutralPalette", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette.id", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette.colorCount", - "type": "number", - "tags": [], - "label": "colorCount", - "description": [], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"categorical\"" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette.getColor", - "type": "Function", - "tags": [], - "label": "getColor", - "description": [], - "signature": [ - "(valueInRange: number, isDarkMode: boolean) => string" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette.getColor.$1", - "type": "number", - "tags": [], - "label": "valueInRange", - "description": [], - "signature": [ - "number" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/coloring", - "id": "def-common.NeutralPalette.getColor.$2", - "type": "boolean", - "tags": [], - "label": "isDarkMode", - "description": [], - "signature": [ - "boolean" - ], - "path": "packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/coloring", "id": "def-common.SPECIAL_TOKENS_STRING_CONVERSION", diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 1495e93f55355..30dc04edc0a41 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 227 | 0 | 188 | 9 | +| 190 | 0 | 149 | 8 | ## Common diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 4495a9d666e32..a8facfa53cf06 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index 52dc8a5302807..e17d036b6ca13 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 8d6f34dec6a17..12462b43b46d8 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index 1e141bcb1989d..99e9727463240 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_public.mdx b/api_docs/kbn_content_management_content_insights_public.mdx index f27aed576d940..11fa0c52e984b 100644 --- a/api_docs/kbn_content_management_content_insights_public.mdx +++ b/api_docs/kbn_content_management_content_insights_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-public title: "@kbn/content-management-content-insights-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-public plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-public'] --- import kbnContentManagementContentInsightsPublicObj from './kbn_content_management_content_insights_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_server.mdx b/api_docs/kbn_content_management_content_insights_server.mdx index 4c87ff91d8cdb..dd60a829edb7c 100644 --- a/api_docs/kbn_content_management_content_insights_server.mdx +++ b/api_docs/kbn_content_management_content_insights_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-server title: "@kbn/content-management-content-insights-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-server'] --- import kbnContentManagementContentInsightsServerObj from './kbn_content_management_content_insights_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_common.mdx b/api_docs/kbn_content_management_favorites_common.mdx index b520a79a5bd4f..b437e4394f069 100644 --- a/api_docs/kbn_content_management_favorites_common.mdx +++ b/api_docs/kbn_content_management_favorites_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-common title: "@kbn/content-management-favorites-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-common'] --- import kbnContentManagementFavoritesCommonObj from './kbn_content_management_favorites_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_public.mdx b/api_docs/kbn_content_management_favorites_public.mdx index 6c4acde0a5d14..2ed65aa583c12 100644 --- a/api_docs/kbn_content_management_favorites_public.mdx +++ b/api_docs/kbn_content_management_favorites_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-public title: "@kbn/content-management-favorites-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-public plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-public'] --- import kbnContentManagementFavoritesPublicObj from './kbn_content_management_favorites_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_server.mdx b/api_docs/kbn_content_management_favorites_server.mdx index 3aedb8d008ab7..893be0baa0e6d 100644 --- a/api_docs/kbn_content_management_favorites_server.mdx +++ b/api_docs/kbn_content_management_favorites_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-server title: "@kbn/content-management-favorites-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-server'] --- import kbnContentManagementFavoritesServerObj from './kbn_content_management_favorites_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index 8414c4c621aa8..fc267dc867294 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index 381897e6a3e5c..703588879bad2 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index dd1dc03266130..e4eaffa69b993 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index ed02b594ff00a..cf5aed43be478 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_user_profiles.mdx b/api_docs/kbn_content_management_user_profiles.mdx index 2b422b7c4fe14..cb78d92138383 100644 --- a/api_docs/kbn_content_management_user_profiles.mdx +++ b/api_docs/kbn_content_management_user_profiles.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-user-profiles title: "@kbn/content-management-user-profiles" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-user-profiles plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-user-profiles'] --- import kbnContentManagementUserProfilesObj from './kbn_content_management_user_profiles.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index bc0eace880eea..31fd8a034bf8d 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.devdocs.json b/api_docs/kbn_core_analytics_browser.devdocs.json index d9e9918f342d9..d16c4135f6e27 100644 --- a/api_docs/kbn_core_analytics_browser.devdocs.json +++ b/api_docs/kbn_core_analytics_browser.devdocs.json @@ -478,14 +478,6 @@ "deprecated": false, "trackAdoption": true, "references": [ - { - "plugin": "@kbn/core-notifications-browser-internal", - "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" - }, - { - "plugin": "@kbn/core-notifications-browser-internal", - "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" - }, { "plugin": "@kbn/ebt-tools", "path": "packages/kbn-ebt-tools/src/performance_metric_events/helpers.ts" @@ -514,6 +506,14 @@ "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/analytics_service.ts" }, + { + "plugin": "@kbn/core-notifications-browser-internal", + "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" + }, + { + "plugin": "@kbn/core-notifications-browser-internal", + "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" + }, { "plugin": "@kbn/core-root-browser-internal", "path": "packages/core/root/core-root-browser-internal/src/core_system.ts" @@ -640,15 +640,15 @@ }, { "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts" + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts" }, { "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/index.ts" + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/index.ts" }, { "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" + "path": "src/plugins/dashboard/public/dashboard_api/track_contentful_render.ts" }, { "plugin": "discover", @@ -660,7 +660,7 @@ }, { "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/public/services/telemetry/service.ts" + "path": "x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/service.ts" }, { "plugin": "fleet", @@ -702,54 +702,6 @@ "plugin": "datasetQuality", "path": "x-pack/plugins/observability_solution/dataset_quality/public/services/telemetry/telemetry_client.ts" }, - { - "plugin": "@kbn/langchain", - "path": "x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" - }, { "plugin": "globalSearchBar", "path": "x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts" @@ -759,88 +711,88 @@ "path": "x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "reporting", + "path": "x-pack/plugins/reporting/server/usage/event_tracker.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "searchPlayground", + "path": "x-pack/plugins/search_playground/server/routes.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "@kbn/langchain", + "path": "x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { "plugin": "securitySolution", @@ -870,18 +822,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.ts" @@ -895,12 +835,12 @@ "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts" }, { - "plugin": "reporting", - "path": "x-pack/plugins/reporting/server/usage/event_tracker.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/telemetry/async_sender.ts" }, { - "plugin": "searchPlayground", - "path": "x-pack/plugins/search_playground/server/routes.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts" }, { "plugin": "securitySolutionServerless", @@ -926,6 +866,70 @@ "plugin": "apm", "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, { "plugin": "inventory", "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" @@ -994,10 +998,6 @@ "plugin": "spaces", "path": "x-pack/plugins/spaces/public/management/management_service.test.ts" }, - { - "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" @@ -1048,11 +1048,15 @@ }, { "plugin": "@kbn/langchain", - "path": "x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" + "path": "x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" }, { "plugin": "@kbn/langchain", - "path": "x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" + "path": "x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" + }, + { + "plugin": "observabilityAIAssistant", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts" }, { "plugin": "@kbn/shared-ux-chrome-navigation", @@ -1126,6 +1130,46 @@ "plugin": "discover", "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, { "plugin": "@kbn/core-analytics-browser-mocks", "path": "packages/core/analytics/core-analytics-browser-mocks/src/analytics_service.mock.ts" @@ -1494,6 +1538,14 @@ "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts" }, + { + "plugin": "@kbn/core-analytics-browser-internal", + "path": "packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts" + }, + { + "plugin": "@kbn/core-analytics-browser-internal", + "path": "packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts" + }, { "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/track_viewport_size.test.ts" @@ -1720,14 +1772,6 @@ "deprecated": false, "trackAdoption": true, "references": [ - { - "plugin": "@kbn/core-execution-context-browser-internal", - "path": "packages/core/execution-context/core-execution-context-browser-internal/src/execution_context_service.ts" - }, - { - "plugin": "@kbn/core-application-browser-internal", - "path": "packages/core/application/core-application-browser-internal/src/register_analytics_context_provider.ts" - }, { "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/track_viewport_size.ts" @@ -1756,6 +1800,14 @@ "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/analytics_service.ts" }, + { + "plugin": "@kbn/core-execution-context-browser-internal", + "path": "packages/core/execution-context/core-execution-context-browser-internal/src/execution_context_service.ts" + }, + { + "plugin": "@kbn/core-application-browser-internal", + "path": "packages/core/application/core-application-browser-internal/src/register_analytics_context_provider.ts" + }, { "plugin": "@kbn/core-chrome-browser-internal", "path": "packages/core/chrome/core-chrome-browser-internal/src/register_analytics_context_provider.ts" diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 5268cf635993e..1be67a0c46165 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index a5006de5b1484..acc2bad04ac35 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index 6ccf946f3472d..526f18e0747cf 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.devdocs.json b/api_docs/kbn_core_analytics_server.devdocs.json index f551b259301d1..9c703bb4489c9 100644 --- a/api_docs/kbn_core_analytics_server.devdocs.json +++ b/api_docs/kbn_core_analytics_server.devdocs.json @@ -486,14 +486,6 @@ "deprecated": false, "trackAdoption": true, "references": [ - { - "plugin": "@kbn/core-notifications-browser-internal", - "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" - }, - { - "plugin": "@kbn/core-notifications-browser-internal", - "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" - }, { "plugin": "@kbn/ebt-tools", "path": "packages/kbn-ebt-tools/src/performance_metric_events/helpers.ts" @@ -522,6 +514,14 @@ "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/analytics_service.ts" }, + { + "plugin": "@kbn/core-notifications-browser-internal", + "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" + }, + { + "plugin": "@kbn/core-notifications-browser-internal", + "path": "packages/core/notifications/core-notifications-browser-internal/src/toasts/telemetry/event_reporter.ts" + }, { "plugin": "@kbn/core-root-browser-internal", "path": "packages/core/root/core-root-browser-internal/src/core_system.ts" @@ -648,15 +648,15 @@ }, { "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts" + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts" }, { "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/index.ts" + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/index.ts" }, { "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" + "path": "src/plugins/dashboard/public/dashboard_api/track_contentful_render.ts" }, { "plugin": "discover", @@ -668,7 +668,7 @@ }, { "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/public/services/telemetry/service.ts" + "path": "x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/service.ts" }, { "plugin": "fleet", @@ -710,54 +710,6 @@ "plugin": "datasetQuality", "path": "x-pack/plugins/observability_solution/dataset_quality/public/services/telemetry/telemetry_client.ts" }, - { - "plugin": "@kbn/langchain", - "path": "x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" - }, { "plugin": "globalSearchBar", "path": "x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts" @@ -767,88 +719,88 @@ "path": "x-pack/plugins/global_search_bar/public/telemetry/event_reporter.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "reporting", + "path": "x-pack/plugins/reporting/server/usage/event_tracker.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "searchPlayground", + "path": "x-pack/plugins/search_playground/server/routes.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "@kbn/langchain", + "path": "x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/lib/telemetry/sender.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts" }, { "plugin": "securitySolution", @@ -878,18 +830,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/telemetry/send_alert_suppression_telemetry_event.ts" @@ -903,12 +843,12 @@ "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/asset_criticality/routes/upload_csv.ts" }, { - "plugin": "reporting", - "path": "x-pack/plugins/reporting/server/usage/event_tracker.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/telemetry/async_sender.ts" }, { - "plugin": "searchPlayground", - "path": "x-pack/plugins/search_playground/server/routes.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/common/lib/telemetry/telemetry_service.ts" }, { "plugin": "securitySolutionServerless", @@ -934,6 +874,70 @@ "plugin": "apm", "path": "x-pack/plugins/observability_solution/apm/public/services/telemetry/telemetry_client.ts" }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/public/services/telemetry/telemetry_client.ts" + }, { "plugin": "inventory", "path": "x-pack/plugins/observability_solution/inventory/public/services/telemetry/telemetry_client.ts" @@ -1002,10 +1006,6 @@ "plugin": "spaces", "path": "x-pack/plugins/spaces/public/management/management_service.test.ts" }, - { - "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/services/actions/clients/lib/base_response_actions_client.test.ts" @@ -1056,11 +1056,15 @@ }, { "plugin": "@kbn/langchain", - "path": "x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" + "path": "x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" }, { "plugin": "@kbn/langchain", - "path": "x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" + "path": "x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts" + }, + { + "plugin": "observabilityAIAssistant", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts" }, { "plugin": "@kbn/shared-ux-chrome-navigation", @@ -1134,6 +1138,46 @@ "plugin": "discover", "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/services/discover_ebt_manager.test.ts" + }, { "plugin": "@kbn/core-analytics-browser-mocks", "path": "packages/core/analytics/core-analytics-browser-mocks/src/analytics_service.mock.ts" @@ -1502,6 +1546,14 @@ "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts" }, + { + "plugin": "@kbn/core-analytics-browser-internal", + "path": "packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts" + }, + { + "plugin": "@kbn/core-analytics-browser-internal", + "path": "packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts" + }, { "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/track_viewport_size.test.ts" @@ -1728,14 +1780,6 @@ "deprecated": false, "trackAdoption": true, "references": [ - { - "plugin": "@kbn/core-execution-context-browser-internal", - "path": "packages/core/execution-context/core-execution-context-browser-internal/src/execution_context_service.ts" - }, - { - "plugin": "@kbn/core-application-browser-internal", - "path": "packages/core/application/core-application-browser-internal/src/register_analytics_context_provider.ts" - }, { "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/track_viewport_size.ts" @@ -1764,6 +1808,14 @@ "plugin": "@kbn/core-analytics-browser-internal", "path": "packages/core/analytics/core-analytics-browser-internal/src/analytics_service.ts" }, + { + "plugin": "@kbn/core-execution-context-browser-internal", + "path": "packages/core/execution-context/core-execution-context-browser-internal/src/execution_context_service.ts" + }, + { + "plugin": "@kbn/core-application-browser-internal", + "path": "packages/core/application/core-application-browser-internal/src/register_analytics_context_provider.ts" + }, { "plugin": "@kbn/core-chrome-browser-internal", "path": "packages/core/chrome/core-chrome-browser-internal/src/register_analytics_context_provider.ts" diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index 8fd7a6c7db4f6..e2ba32e8270cb 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index f32edcf1c90f0..ece83e6cabf8c 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index e13bfd11f70d8..4e393911fbf24 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.devdocs.json b/api_docs/kbn_core_application_browser.devdocs.json index ebe47e7422312..daeae67d01d90 100644 --- a/api_docs/kbn_core_application_browser.devdocs.json +++ b/api_docs/kbn_core_application_browser.devdocs.json @@ -1193,14 +1193,14 @@ "plugin": "@kbn/core-application-browser-internal", "path": "packages/core/application/core-application-browser-internal/src/ui/app_container.tsx" }, - { - "plugin": "management", - "path": "src/plugins/management/public/application.tsx" - }, { "plugin": "@kbn/core-application-browser-mocks", "path": "packages/core/application/core-application-browser-mocks/src/application_service.mock.ts" }, + { + "plugin": "management", + "path": "src/platform/plugins/shared/management/public/application.tsx" + }, { "plugin": "assetInventory", "path": "x-pack/plugins/asset_inventory/public/application.tsx" diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index 7a220a921f5c0..febcbc88dcea0 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index ef5aed04efdee..5276b1101750c 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index 5992dbbfd4286..77e060be0b44f 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index 0f05b5dba4f7d..2ed32cabd4c9b 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index 0a92b458e618a..c04e908f684f0 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 1829d5574b6ff..09d33952fd195 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index 1c52009f749fb..fca828dfb1055 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 0c94ffc318014..6c8d27704b69e 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 1bf883e34cf34..05b12e3e316e6 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index 54dca2606eecd..b5a32f565cba3 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index b62bf102300c2..5d3fd51927508 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index a4778701fe075..e75c2533c6238 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 0bb412893d351..7ad1c0b9cd1e4 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index 6bafdc9098db7..674fd74368085 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index f94a07a92fa02..207524c24ee7f 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.devdocs.json b/api_docs/kbn_core_chrome_browser.devdocs.json index a3ce26754740d..d49b19f7ce26b 100644 --- a/api_docs/kbn_core_chrome_browser.devdocs.json +++ b/api_docs/kbn_core_chrome_browser.devdocs.json @@ -3765,7 +3765,7 @@ "label": "AppDeepLinkId", "description": [], "signature": [ - "\"fleet\" | \"graph\" | \"ml\" | \"monitoring\" | \"profiling\" | \"metrics\" | \"management\" | \"apm\" | \"synthetics\" | \"ux\" | \"canvas\" | \"logs\" | \"dashboards\" | \"slo\" | \"observabilityAIAssistant\" | \"home\" | \"integrations\" | \"discover\" | \"observability-overview\" | \"streams\" | \"appSearch\" | \"dev_tools\" | \"maps\" | \"visualize\" | \"dev_tools:console\" | \"dev_tools:searchprofiler\" | \"dev_tools:painless_lab\" | \"dev_tools:grokdebugger\" | \"ml:notifications\" | \"ml:nodes\" | \"ml:overview\" | \"ml:memoryUsage\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:logPatternAnalysis\" | \"ml:logRateAnalysis\" | \"ml:singleMetricViewer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:dataDrift\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:esqlDataVisualizer\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\" | \"ml:suppliedConfigurations\" | \"osquery\" | \"management:transform\" | \"management:watcher\" | \"management:cases\" | \"management:tags\" | \"management:maintenanceWindows\" | \"management:cross_cluster_replication\" | \"management:dataViews\" | \"management:spaces\" | \"management:settings\" | \"management:users\" | \"management:migrate_data\" | \"management:search_sessions\" | \"management:data_quality\" | \"management:filesManagement\" | \"management:pipelines\" | \"management:roles\" | \"management:reporting\" | \"management:aiAssistantManagementSelection\" | \"management:securityAiAssistantManagement\" | \"management:observabilityAiAssistantManagement\" | \"management:api_keys\" | \"management:license_management\" | \"management:index_lifecycle_management\" | \"management:index_management\" | \"management:ingest_pipelines\" | \"management:jobsListLink\" | \"management:objects\" | \"management:remote_clusters\" | \"management:role_mappings\" | \"management:rollup_jobs\" | \"management:snapshot_restore\" | \"management:triggersActions\" | \"management:triggersActionsConnectors\" | \"management:upgrade_assistant\" | \"enterpriseSearch\" | \"enterpriseSearchContent\" | \"enterpriseSearchApplications\" | \"enterpriseSearchAnalytics\" | \"workplaceSearch\" | \"serverlessElasticsearch\" | \"serverlessConnectors\" | \"serverlessWebCrawlers\" | \"searchPlayground\" | \"searchInferenceEndpoints\" | \"searchHomepage\" | \"enterpriseSearchContent:connectors\" | \"enterpriseSearchContent:searchIndices\" | \"enterpriseSearchContent:webCrawlers\" | \"enterpriseSearchApplications:searchApplications\" | \"appSearch:engines\" | \"searchInferenceEndpoints:inferenceEndpoints\" | \"elasticsearchStart\" | \"elasticsearchIndices\" | \"enterpriseSearchElasticsearch\" | \"enterpriseSearchVectorSearch\" | \"enterpriseSearchSemanticSearch\" | \"enterpriseSearchAISearch\" | \"elasticsearchIndices:createIndex\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\" | \"inventory\" | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:alerts\" | \"observability-overview:rules\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:assetDetails\" | \"apm:services\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:service-groups-list\" | \"apm:storage-explorer\" | \"synthetics:overview\" | \"synthetics:certificates\" | \"profiling:functions\" | \"profiling:stacktraces\" | \"profiling:flamegraphs\" | \"inventory:datastreams\" | \"streams:overview\" | \"securitySolutionUI\" | \"securitySolutionUI:\" | \"securitySolutionUI:cases\" | \"securitySolutionUI:alerts\" | \"securitySolutionUI:rules\" | \"securitySolutionUI:policy\" | \"securitySolutionUI:overview\" | \"securitySolutionUI:dashboards\" | \"securitySolutionUI:kubernetes\" | \"securitySolutionUI:cases_create\" | \"securitySolutionUI:cases_configure\" | \"securitySolutionUI:hosts\" | \"securitySolutionUI:users\" | \"securitySolutionUI:cloud_defend-policies\" | \"securitySolutionUI:cloud_security_posture-dashboard\" | \"securitySolutionUI:cloud_security_posture-findings\" | \"securitySolutionUI:cloud_security_posture-benchmarks\" | \"securitySolutionUI:network\" | \"securitySolutionUI:data_quality\" | \"securitySolutionUI:explore\" | \"securitySolutionUI:assets\" | \"securitySolutionUI:cloud_defend\" | \"securitySolutionUI:notes\" | \"securitySolutionUI:administration\" | \"securitySolutionUI:attack_discovery\" | \"securitySolutionUI:blocklist\" | \"securitySolutionUI:cloud_security_posture-rules\" | \"securitySolutionUI:detections\" | \"securitySolutionUI:detection_response\" | \"securitySolutionUI:endpoints\" | \"securitySolutionUI:event_filters\" | \"securitySolutionUI:exceptions\" | \"securitySolutionUI:host_isolation_exceptions\" | \"securitySolutionUI:hosts-all\" | \"securitySolutionUI:hosts-anomalies\" | \"securitySolutionUI:hosts-risk\" | \"securitySolutionUI:hosts-events\" | \"securitySolutionUI:hosts-sessions\" | \"securitySolutionUI:hosts-uncommon_processes\" | \"securitySolutionUI:investigations\" | \"securitySolutionUI:get_started\" | \"securitySolutionUI:machine_learning-landing\" | \"securitySolutionUI:network-anomalies\" | \"securitySolutionUI:network-dns\" | \"securitySolutionUI:network-events\" | \"securitySolutionUI:network-flows\" | \"securitySolutionUI:network-http\" | \"securitySolutionUI:network-tls\" | \"securitySolutionUI:response_actions_history\" | \"securitySolutionUI:rules-add\" | \"securitySolutionUI:rules-create\" | \"securitySolutionUI:rules-landing\" | \"securitySolutionUI:siem_migrations-rules\" | \"securitySolutionUI:threat_intelligence\" | \"securitySolutionUI:timelines\" | \"securitySolutionUI:timelines-templates\" | \"securitySolutionUI:trusted_apps\" | \"securitySolutionUI:users-all\" | \"securitySolutionUI:users-anomalies\" | \"securitySolutionUI:users-authentications\" | \"securitySolutionUI:users-events\" | \"securitySolutionUI:users-risk\" | \"securitySolutionUI:entity_analytics\" | \"securitySolutionUI:entity_analytics-management\" | \"securitySolutionUI:entity_analytics-asset-classification\" | \"securitySolutionUI:entity_analytics-entity_store_management\" | \"securitySolutionUI:coverage-overview\" | \"fleet:settings\" | \"fleet:agents\" | \"fleet:policies\" | \"fleet:data_streams\" | \"fleet:enrollment_tokens\" | \"fleet:uninstall_tokens\"" + "\"fleet\" | \"graph\" | \"ml\" | \"monitoring\" | \"profiling\" | \"metrics\" | \"management\" | \"apm\" | \"synthetics\" | \"ux\" | \"canvas\" | \"logs\" | \"dashboards\" | \"slo\" | \"observabilityAIAssistant\" | \"home\" | \"integrations\" | \"discover\" | \"observability-overview\" | \"streams\" | \"appSearch\" | \"inventory\" | \"dev_tools\" | \"maps\" | \"visualize\" | \"dev_tools:console\" | \"dev_tools:searchprofiler\" | \"dev_tools:painless_lab\" | \"dev_tools:grokdebugger\" | \"ml:notifications\" | \"ml:nodes\" | \"ml:overview\" | \"ml:memoryUsage\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:logPatternAnalysis\" | \"ml:logRateAnalysis\" | \"ml:singleMetricViewer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:dataDrift\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:esqlDataVisualizer\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\" | \"ml:suppliedConfigurations\" | \"osquery\" | \"management:transform\" | \"management:watcher\" | \"management:cases\" | \"management:tags\" | \"management:maintenanceWindows\" | \"management:cross_cluster_replication\" | \"management:dataViews\" | \"management:spaces\" | \"management:settings\" | \"management:users\" | \"management:migrate_data\" | \"management:search_sessions\" | \"management:data_quality\" | \"management:filesManagement\" | \"management:pipelines\" | \"management:roles\" | \"management:reporting\" | \"management:aiAssistantManagementSelection\" | \"management:securityAiAssistantManagement\" | \"management:observabilityAiAssistantManagement\" | \"management:api_keys\" | \"management:license_management\" | \"management:index_lifecycle_management\" | \"management:index_management\" | \"management:ingest_pipelines\" | \"management:jobsListLink\" | \"management:objects\" | \"management:remote_clusters\" | \"management:role_mappings\" | \"management:rollup_jobs\" | \"management:snapshot_restore\" | \"management:triggersActions\" | \"management:triggersActionsConnectors\" | \"management:upgrade_assistant\" | \"enterpriseSearch\" | \"enterpriseSearchContent\" | \"enterpriseSearchApplications\" | \"enterpriseSearchAnalytics\" | \"workplaceSearch\" | \"serverlessElasticsearch\" | \"serverlessConnectors\" | \"serverlessWebCrawlers\" | \"searchPlayground\" | \"searchInferenceEndpoints\" | \"searchHomepage\" | \"enterpriseSearchContent:connectors\" | \"enterpriseSearchContent:searchIndices\" | \"enterpriseSearchContent:webCrawlers\" | \"enterpriseSearchApplications:searchApplications\" | \"appSearch:engines\" | \"searchInferenceEndpoints:inferenceEndpoints\" | \"elasticsearchStart\" | \"elasticsearchIndices\" | \"enterpriseSearchElasticsearch\" | \"enterpriseSearchVectorSearch\" | \"enterpriseSearchSemanticSearch\" | \"enterpriseSearchAISearch\" | \"elasticsearchIndices:createIndex\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\" | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:alerts\" | \"observability-overview:rules\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:assetDetails\" | \"apm:services\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:service-groups-list\" | \"apm:storage-explorer\" | \"synthetics:overview\" | \"synthetics:certificates\" | \"profiling:functions\" | \"profiling:stacktraces\" | \"profiling:flamegraphs\" | \"inventory:datastreams\" | \"streams:overview\" | \"securitySolutionUI\" | \"securitySolutionUI:\" | \"securitySolutionUI:cases\" | \"securitySolutionUI:alerts\" | \"securitySolutionUI:rules\" | \"securitySolutionUI:policy\" | \"securitySolutionUI:overview\" | \"securitySolutionUI:dashboards\" | \"securitySolutionUI:kubernetes\" | \"securitySolutionUI:cases_create\" | \"securitySolutionUI:cases_configure\" | \"securitySolutionUI:hosts\" | \"securitySolutionUI:users\" | \"securitySolutionUI:cloud_defend-policies\" | \"securitySolutionUI:cloud_security_posture-dashboard\" | \"securitySolutionUI:cloud_security_posture-findings\" | \"securitySolutionUI:cloud_security_posture-benchmarks\" | \"securitySolutionUI:network\" | \"securitySolutionUI:data_quality\" | \"securitySolutionUI:explore\" | \"securitySolutionUI:assets\" | \"securitySolutionUI:cloud_defend\" | \"securitySolutionUI:notes\" | \"securitySolutionUI:administration\" | \"securitySolutionUI:attack_discovery\" | \"securitySolutionUI:blocklist\" | \"securitySolutionUI:cloud_security_posture-rules\" | \"securitySolutionUI:detections\" | \"securitySolutionUI:detection_response\" | \"securitySolutionUI:endpoints\" | \"securitySolutionUI:event_filters\" | \"securitySolutionUI:exceptions\" | \"securitySolutionUI:host_isolation_exceptions\" | \"securitySolutionUI:hosts-all\" | \"securitySolutionUI:hosts-anomalies\" | \"securitySolutionUI:hosts-risk\" | \"securitySolutionUI:hosts-events\" | \"securitySolutionUI:hosts-sessions\" | \"securitySolutionUI:hosts-uncommon_processes\" | \"securitySolutionUI:investigations\" | \"securitySolutionUI:get_started\" | \"securitySolutionUI:machine_learning-landing\" | \"securitySolutionUI:network-anomalies\" | \"securitySolutionUI:network-dns\" | \"securitySolutionUI:network-events\" | \"securitySolutionUI:network-flows\" | \"securitySolutionUI:network-http\" | \"securitySolutionUI:network-tls\" | \"securitySolutionUI:response_actions_history\" | \"securitySolutionUI:rules-add\" | \"securitySolutionUI:rules-create\" | \"securitySolutionUI:rules-landing\" | \"securitySolutionUI:siem_migrations-rules\" | \"securitySolutionUI:threat_intelligence\" | \"securitySolutionUI:timelines\" | \"securitySolutionUI:timelines-templates\" | \"securitySolutionUI:trusted_apps\" | \"securitySolutionUI:users-all\" | \"securitySolutionUI:users-anomalies\" | \"securitySolutionUI:users-authentications\" | \"securitySolutionUI:users-events\" | \"securitySolutionUI:users-risk\" | \"securitySolutionUI:entity_analytics\" | \"securitySolutionUI:entity_analytics-management\" | \"securitySolutionUI:entity_analytics-asset-classification\" | \"securitySolutionUI:entity_analytics-entity_store_management\" | \"securitySolutionUI:coverage-overview\" | \"fleet:settings\" | \"fleet:agents\" | \"fleet:policies\" | \"fleet:data_streams\" | \"fleet:enrollment_tokens\" | \"fleet:uninstall_tokens\"" ], "path": "packages/core/chrome/core-chrome-browser/src/project_navigation.ts", "deprecated": false, diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 3ff5c647421b5..34d247da3f819 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index facf6c49d14a9..14377d09c31bc 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 456531968563b..726a38565f32d 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index ca9eb8edba744..7354b44bfda8a 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index 8f9889ca56aef..195afba542ebb 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index 3e647c5acecdc..83e55d91aa3fa 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index 425fa315c24b8..4857e877efae5 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index 3160fcad89990..a5045dc3b2b05 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index b131ab29af775..a4ea59248aceb 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index 08d626b5426e5..8bf6bab53df22 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 38a020f2e6b36..8f9eb55efea57 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index c7e94ae340b18..18056ba155501 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 6c719b4ab17db..696b1a76c2b98 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 25eb627f3a029..085e1c6e0b90e 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 5fb5a51b22258..ee2a45bb488fa 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index 5e5ab6f149601..318378ed75def 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index 88dc4dfb3126d..10818b4a71962 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index e519eaee2c944..803a9a664a16e 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 56ed022113504..0c76b47f952b2 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index bed1728d3ef7d..c401f3dba36bc 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 7a57afe9bb727..9f4265f787a61 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index b772e4bf03bea..9b31628d60ccc 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index 0e2889f354f7f..3bd418badca65 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.devdocs.json b/api_docs/kbn_core_elasticsearch_server.devdocs.json index 2a902c07e0969..c8fbb1b6c5633 100644 --- a/api_docs/kbn_core_elasticsearch_server.devdocs.json +++ b/api_docs/kbn_core_elasticsearch_server.devdocs.json @@ -797,7 +797,7 @@ }, { "plugin": "console", - "path": "src/plugins/console/server/plugin.ts" + "path": "src/platform/plugins/shared/console/server/plugin.ts" }, { "plugin": "@kbn/core-elasticsearch-server-internal", diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index f800236689dab..a5807c329cb96 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index dac12bb55fb74..01f1cb87a0634 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index 44695a10fcafc..dadecf9fed1f6 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index 92926382d0de3..f46257e53f439 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index 4a9c088e1695b..889a3cf6fa994 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index ba036780ab010..f9683000aad16 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 71955a5f6319e..bbc1183a9b2fa 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index 819a5924cc4ed..64192722c60d4 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 163e3cd854d19..d2a37ed2f9eb2 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index 7c02cf9672d79..c73d7cfbc9a06 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index b117a9535574c..80ac6063bf035 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 5c3d77b99ed28..3d5c968426368 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index d1515de746e4d..ddf713953c38e 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index db642ff24ab84..d6bd034d9cfc4 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser.mdx b/api_docs/kbn_core_feature_flags_browser.mdx index ddc168e318469..a69e62d9dd7ce 100644 --- a/api_docs/kbn_core_feature_flags_browser.mdx +++ b/api_docs/kbn_core_feature_flags_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser title: "@kbn/core-feature-flags-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser'] --- import kbnCoreFeatureFlagsBrowserObj from './kbn_core_feature_flags_browser.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_internal.mdx b/api_docs/kbn_core_feature_flags_browser_internal.mdx index 67cd7542de7e7..ea32dc99bce50 100644 --- a/api_docs/kbn_core_feature_flags_browser_internal.mdx +++ b/api_docs/kbn_core_feature_flags_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-internal title: "@kbn/core-feature-flags-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-internal'] --- import kbnCoreFeatureFlagsBrowserInternalObj from './kbn_core_feature_flags_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_mocks.mdx b/api_docs/kbn_core_feature_flags_browser_mocks.mdx index 3174685b34dcc..92cb9dd929dd8 100644 --- a/api_docs/kbn_core_feature_flags_browser_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-mocks title: "@kbn/core-feature-flags-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-mocks'] --- import kbnCoreFeatureFlagsBrowserMocksObj from './kbn_core_feature_flags_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server.mdx b/api_docs/kbn_core_feature_flags_server.mdx index beda8b77721d1..d0b9dacffac7d 100644 --- a/api_docs/kbn_core_feature_flags_server.mdx +++ b/api_docs/kbn_core_feature_flags_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server title: "@kbn/core-feature-flags-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server'] --- import kbnCoreFeatureFlagsServerObj from './kbn_core_feature_flags_server.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_internal.mdx b/api_docs/kbn_core_feature_flags_server_internal.mdx index 2b4bfb233f54e..6d845c0364563 100644 --- a/api_docs/kbn_core_feature_flags_server_internal.mdx +++ b/api_docs/kbn_core_feature_flags_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-internal title: "@kbn/core-feature-flags-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-internal'] --- import kbnCoreFeatureFlagsServerInternalObj from './kbn_core_feature_flags_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_mocks.mdx b/api_docs/kbn_core_feature_flags_server_mocks.mdx index d8b3e2cf5cb90..b7d5df7915867 100644 --- a/api_docs/kbn_core_feature_flags_server_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-mocks title: "@kbn/core-feature-flags-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-mocks'] --- import kbnCoreFeatureFlagsServerMocksObj from './kbn_core_feature_flags_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index 376b09de8c7e0..84644009631de 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index dc43923bfe5a1..6b10fd30fa03e 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 4a67f90d582ea..b8477e63acf77 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index 46720ed3b6b03..5b4cb86bbfe82 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 3c81379f64f70..fb7e2046bbb56 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index a8b1b23e8fe00..88ea5b773edb0 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index d9fc15578ca96..3f8ee5801e9ca 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index 1f6439187e6b7..5f3a396a57030 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index 6e6c372256735..01c545bbfc5c1 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 3d50d993f4a9d..62134622dc3a2 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index e2dbfc0121b19..57d4bb56b11f5 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.devdocs.json b/api_docs/kbn_core_http_server.devdocs.json index 8c6fcf6c11a15..01b7dc9f3e8ec 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -4027,7 +4027,7 @@ }, { "plugin": "inference", - "path": "x-pack/plugins/inference/server/routes/connectors.ts" + "path": "x-pack/platform/plugins/shared/inference/server/routes/connectors.ts" }, { "plugin": "assetInventory", @@ -4061,106 +4061,6 @@ "plugin": "cloudSecurityPosture", "path": "x-pack/plugins/cloud_security_posture/server/routes/vulnerabilities_dashboard/vulnerabilities_dashboard.ts" }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_get_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_get_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_privileges_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_datastream_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_datastream_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_get_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_get_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_list_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_privileges_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_list_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_get_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/inference_models/register_get_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/mapping/register_mapping_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/nodes/register_nodes_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/settings/register_load_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/stats/register_stats_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/templates/register_get_routes.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/templates/register_get_routes.ts" - }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/get_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_get_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_permissions_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_stats_route.ts" - }, { "plugin": "guidedOnboarding", "path": "src/plugins/guided_onboarding/server/routes/guide_state_routes.ts" @@ -4175,15 +4075,15 @@ }, { "plugin": "observability", - "path": "x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts" + "path": "x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts" }, { "plugin": "observability", - "path": "x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts" + "path": "x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts" }, { "plugin": "observability", - "path": "x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts" + "path": "x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts" }, { "plugin": "triggersActionsUi", @@ -4193,10 +4093,6 @@ "plugin": "triggersActionsUi", "path": "x-pack/plugins/triggers_actions_ui/server/routes/config.ts" }, - { - "plugin": "productDocBase", - "path": "x-pack/plugins/ai_infra/product_doc_base/server/routes/installation.ts" - }, { "plugin": "globalSearch", "path": "x-pack/plugins/global_search/server/routes/get_searchable_types.ts" @@ -4618,108 +4514,112 @@ "path": "x-pack/plugins/enterprise_search/server/routes/workplace_search/sources.ts" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/register_list_route.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_get_route.ts" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/register_details_route.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_get_route.ts" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_fetch_route.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_privileges_route.ts" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/templates/register_fetch_route.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_datastream_route.ts" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_policies/register_fetch_route.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_datastream_route.ts" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_get_route.ts" }, { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/get.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_get_route.ts" }, { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/get.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_list_route.ts" }, { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/privileges.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_privileges_route.ts" }, { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/documents.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_list_route.ts" }, { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/database/list.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_get_route.ts" }, { - "plugin": "licenseManagement", - "path": "x-pack/plugins/license_management/server/routes/api/license/register_start_trial_routes.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/inference_models/register_get_route.ts" }, { - "plugin": "logstash", - "path": "x-pack/plugins/logstash/server/routes/cluster/load.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/mapping/register_mapping_route.ts" }, { - "plugin": "logstash", - "path": "x-pack/plugins/logstash/server/routes/pipeline/load.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/nodes/register_nodes_route.ts" }, { - "plugin": "logstash", - "path": "x-pack/plugins/logstash/server/routes/pipelines/list.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/settings/register_load_route.ts" }, { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/routes/fields.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/stats/register_stats_route.ts" }, { - "plugin": "metricsDataAccess", - "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/templates/register_get_routes.ts" }, { - "plugin": "metricsDataAccess", - "path": "x-pack/plugins/observability_solution/metrics_data_access/server/routes/metric_indices/index.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/templates/register_get_routes.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/server/routes/api/get.ts" }, { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/server/plugin.ts" + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/server/routes/api/get.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts" + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/server/routes/api/privileges.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/server/routes/api/documents.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/server/routes/api/database/list.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + "plugin": "logstash", + "path": "x-pack/plugins/logstash/server/routes/cluster/load.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + "plugin": "logstash", + "path": "x-pack/plugins/logstash/server/routes/pipeline/load.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + "plugin": "logstash", + "path": "x-pack/plugins/logstash/server/routes/pipelines/list.ts" + }, + { + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/server/plugin.ts" }, { "plugin": "reporting", @@ -4757,18 +4657,6 @@ "plugin": "reporting", "path": "x-pack/plugins/reporting/server/test_helpers/create_mock_reportingplugin.ts" }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/indices/register_get_route.ts" - }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/indices/register_validate_index_pattern_route.ts" - }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/jobs/register_get_route.ts" - }, { "plugin": "searchIndices", "path": "x-pack/plugins/search_indices/server/routes/status.ts" @@ -4794,8 +4682,12 @@ "path": "x-pack/plugins/search_playground/server/routes.ts" }, { - "plugin": "searchprofiler", - "path": "x-pack/plugins/searchprofiler/server/routes/profile.ts" + "plugin": "productDocBase", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/routes/installation.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts" }, { "plugin": "serverlessSearch", @@ -4833,62 +4725,6 @@ "plugin": "serverlessSearch", "path": "x-pack/plugins/serverless_search/server/routes/ingest_pipeline_routes.ts" }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/app.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/snapshots.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/snapshots.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/restore.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" - }, { "plugin": "stackConnectors", "path": "x-pack/plugins/stack_connectors/server/routes/get_well_known_email_service.ts" @@ -4954,40 +4790,24 @@ "path": "x-pack/plugins/upgrade_assistant/server/routes/node_disk_space.ts" }, { - "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/settings/register_load_route.ts" - }, - { - "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/indices/register_get_index_patterns_route.ts" - }, - { - "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/license/register_refresh_route.ts" - }, - { - "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watches/register_list_route.ts" - }, - { - "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_load_route.ts" + "plugin": "customBranding", + "path": "x-pack/plugins/custom_branding/server/routes/info.ts" }, { - "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_history_route.ts" + "plugin": "metricsDataAccess", + "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { - "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/register_load_history_route.ts" + "plugin": "metricsDataAccess", + "path": "x-pack/plugins/observability_solution/metrics_data_access/server/routes/metric_indices/index.ts" }, { - "plugin": "customBranding", - "path": "x-pack/plugins/custom_branding/server/routes/info.ts" + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/routes/fields.ts" }, { - "plugin": "grokdebugger", - "path": "x-pack/plugins/grokdebugger/server/lib/kibana_framework.ts" + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { "plugin": "profiling", @@ -5025,14 +4845,6 @@ "plugin": "profiling", "path": "x-pack/plugins/observability_solution/profiling/server/routes/topn.ts" }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts" - }, { "plugin": "spaces", "path": "x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts" @@ -5054,16 +4866,192 @@ "path": "x-pack/plugins/observability_solution/apm_data_access/server/lib/helpers/create_es_client/create_apm_event_client/index.test.ts" }, { - "plugin": "console", - "path": "src/plugins/console/server/routes/api/console/es_config/index.ts" + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/get_route.ts" }, { - "plugin": "console", - "path": "src/plugins/console/server/routes/api/console/spec_definitions/index.ts" + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.ts" }, { - "plugin": "console", - "path": "src/plugins/console/server/routes/api/console/autocomplete_entities/index.ts" + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_get_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_permissions_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_stats_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/register_list_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/register_details_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_fetch_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/register_fetch_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_policies/register_fetch_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/indices/register_get_route.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/indices/register_validate_index_pattern_route.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_get_route.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/app.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/snapshots.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/snapshots.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/restore.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "watcher", + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/settings/register_load_route.ts" + }, + { + "plugin": "watcher", + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_get_index_patterns_route.ts" + }, + { + "plugin": "watcher", + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/license/register_refresh_route.ts" + }, + { + "plugin": "watcher", + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_list_route.ts" + }, + { + "plugin": "watcher", + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_load_route.ts" + }, + { + "plugin": "watcher", + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_history_route.ts" + }, + { + "plugin": "watcher", + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/register_load_history_route.ts" + }, + { + "plugin": "licenseManagement", + "path": "x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_start_trial_routes.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + }, + { + "plugin": "searchprofiler", + "path": "x-pack/platform/plugins/shared/searchprofiler/server/routes/profile.ts" + }, + { + "plugin": "grokdebugger", + "path": "x-pack/platform/plugins/private/grokdebugger/server/lib/kibana_framework.ts" + }, + { + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" + }, + { + "plugin": "uptime", + "path": "x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts" }, { "plugin": "dataViewManagement", @@ -5097,6 +5085,18 @@ "plugin": "visTypeTimelion", "path": "src/plugins/vis_types/timelion/server/routes/functions.ts" }, + { + "plugin": "console", + "path": "src/platform/plugins/shared/console/server/routes/api/console/es_config/index.ts" + }, + { + "plugin": "console", + "path": "src/platform/plugins/shared/console/server/routes/api/console/spec_definitions/index.ts" + }, + { + "plugin": "console", + "path": "src/platform/plugins/shared/console/server/routes/api/console/autocomplete_entities/index.ts" + }, { "plugin": "mockIdpPlugin", "path": "packages/kbn-mock-idp-plugin/server/plugin.ts" @@ -5601,10 +5601,6 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/legacy/list_alert_types.test.ts" }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/get_route.test.ts" - }, { "plugin": "actions", "path": "x-pack/plugins/actions/server/routes/connector/get/get.test.ts" @@ -5673,22 +5669,6 @@ "plugin": "actions", "path": "x-pack/plugins/actions/server/routes/connector/list_types_system/list_types_system.test.ts" }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_get_route.test.ts" - }, { "plugin": "indexManagement", "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_privileges_route.test.ts" @@ -5921,6 +5901,26 @@ "plugin": "monitoringCollection", "path": "x-pack/plugins/monitoring_collection/server/routes/api/v1/prometheus/get_metrics.test.ts" }, + { + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/get_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_get_route.test.ts" + }, { "plugin": "savedObjectsManagement", "path": "src/plugins/saved_objects_management/server/routes/index.test.ts" @@ -6151,7 +6151,7 @@ }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/test/helpers/router_mock.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/router_mock.ts" }, { "plugin": "interactiveSetup", @@ -6753,11 +6753,11 @@ }, { "plugin": "inference", - "path": "x-pack/plugins/inference/server/routes/chat_complete.ts" + "path": "x-pack/platform/plugins/shared/inference/server/routes/chat_complete.ts" }, { "plugin": "inference", - "path": "x-pack/plugins/inference/server/routes/chat_complete.ts" + "path": "x-pack/platform/plugins/shared/inference/server/routes/chat_complete.ts" }, { "plugin": "savedObjectsTagging", @@ -6776,152 +6776,44 @@ "path": "x-pack/plugins/saved_objects_tagging/server/routes/internal/bulk_delete.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_create_route.ts" + "plugin": "observability", + "path": "x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_delete_route.ts" + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/server/data/routes/time_series_query.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_post_route.ts" + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/server/data/routes/fields.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_post_route.ts" + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/server/data/routes/indices.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" + "plugin": "globalSearch", + "path": "x-pack/plugins/global_search/server/routes/find.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler_extraction_rules.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/adaptive_relevance.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/app_search_gated_form.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_clear_cache_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_close_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_flush_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_forcemerge_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_open_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_refresh_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_reload_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_delete_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_unfreeze_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/templates/register_delete_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/templates/register_create_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/templates/register_simulate_route.ts" - }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/add_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_create_route.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts" - }, - { - "plugin": "triggersActionsUi", - "path": "x-pack/plugins/triggers_actions_ui/server/data/routes/time_series_query.ts" - }, - { - "plugin": "triggersActionsUi", - "path": "x-pack/plugins/triggers_actions_ui/server/data/routes/fields.ts" - }, - { - "plugin": "triggersActionsUi", - "path": "x-pack/plugins/triggers_actions_ui/server/data/routes/indices.ts" - }, - { - "plugin": "productDocBase", - "path": "x-pack/plugins/ai_infra/product_doc_base/server/routes/installation.ts" - }, - { - "plugin": "productDocBase", - "path": "x-pack/plugins/ai_infra/product_doc_base/server/routes/installation.ts" - }, - { - "plugin": "globalSearch", - "path": "x-pack/plugins/global_search/server/routes/find.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler_extraction_rules.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/adaptive_relevance.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/app_search_gated_form.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" }, { "plugin": "enterpriseSearch", @@ -7252,152 +7144,120 @@ "path": "x-pack/plugins/graph/server/routes/explore.ts" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_retry_route.ts" - }, - { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_remove_route.ts" - }, - { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_add_policy_route.ts" - }, - { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_create_route.ts" - }, - { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/templates/register_add_policy_route.ts" - }, - { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/create.ts" - }, - { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/simulate.ts" - }, - { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/parse_csv.ts" - }, - { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/database/create.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_create_route.ts" }, { - "plugin": "licenseManagement", - "path": "x-pack/plugins/license_management/server/routes/api/license/register_start_basic_route.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_delete_route.ts" }, { - "plugin": "licenseManagement", - "path": "x-pack/plugins/license_management/server/routes/api/license/register_start_trial_routes.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_post_route.ts" }, { - "plugin": "licenseManagement", - "path": "x-pack/plugins/license_management/server/routes/api/license/register_permissions_route.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_post_route.ts" }, { - "plugin": "logstash", - "path": "x-pack/plugins/logstash/server/routes/pipelines/delete.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" }, { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/routes/vis.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" }, { - "plugin": "metricsDataAccess", - "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_create_route.ts" }, { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/server/routes/api/v1/alerts/enable.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_clear_cache_route.ts" }, { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/server/routes/api/v1/alerts/status.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_close_route.ts" }, { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch_settings/check/internal_monitoring.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_flush_route.ts" }, { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/server/plugin.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_forcemerge_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_open_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_refresh_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/pagerduty_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_reload_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/servicenow_oauth_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_delete_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_unfreeze_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/templates/register_delete_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/templates/register_create_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/templates/register_simulate_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/ms_exchage_server_simulation.ts" + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/server/routes/api/create.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/ms_exchage_server_simulation.ts" + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/server/routes/api/simulate.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/xmatters_simulation.ts" + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/server/routes/api/parse_csv.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/torq_simulation.ts" + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/server/routes/api/database/create.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/unsecured_actions_simulation.ts" + "plugin": "logstash", + "path": "x-pack/plugins/logstash/server/routes/pipelines/delete.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/unsecured_actions_simulation.ts" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/server/routes/api/v1/alerts/enable.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/unsecured_actions_simulation.ts" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/server/routes/api/v1/alerts/status.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/server/routes/api/v1/elasticsearch_settings/check/internal_monitoring.ts" }, { - "plugin": "painlessLab", - "path": "x-pack/plugins/painless_lab/server/routes/api/execute.ts" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/server/plugin.ts" }, { "plugin": "reporting", @@ -7411,22 +7271,6 @@ "plugin": "reporting", "path": "x-pack/plugins/reporting/server/test_helpers/create_mock_reportingplugin.ts" }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/jobs/register_delete_route.ts" - }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/jobs/register_start_route.ts" - }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/jobs/register_stop_route.ts" - }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/search/register_search_route.ts" - }, { "plugin": "@kbn/search-api-keys-server", "path": "packages/kbn-search-api-keys-server/src/routes/routes.ts" @@ -7456,28 +7300,28 @@ "path": "x-pack/plugins/search_playground/server/routes.ts" }, { - "plugin": "searchprofiler", - "path": "x-pack/plugins/searchprofiler/server/routes/profile.ts" + "plugin": "productDocBase", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/routes/installation.ts" }, { - "plugin": "serverlessSearch", - "path": "x-pack/plugins/serverless_search/server/routes/api_key_routes.ts" + "plugin": "productDocBase", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/routes/installation.ts" }, { - "plugin": "serverlessSearch", - "path": "x-pack/plugins/serverless_search/server/routes/indices_routes.ts" - }, + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts" + }, { - "plugin": "serverlessSearch", - "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts" }, { "plugin": "serverlessSearch", - "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" + "path": "x-pack/plugins/serverless_search/server/routes/api_key_routes.ts" }, { "plugin": "serverlessSearch", - "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" + "path": "x-pack/plugins/serverless_search/server/routes/indices_routes.ts" }, { "plugin": "serverlessSearch", @@ -7504,28 +7348,16 @@ "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/snapshots.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/restore.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" }, { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" }, { "plugin": "stackConnectors", @@ -7559,45 +7391,205 @@ "plugin": "upgradeAssistant", "path": "x-pack/plugins/upgrade_assistant/server/routes/cluster_settings.ts" }, + { + "plugin": "metricsDataAccess", + "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/routes/vis.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, + { + "plugin": "profiling", + "path": "x-pack/plugins/observability_solution/profiling/server/routes/setup/route.ts" + }, + { + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/add_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_create_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_retry_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_remove_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_add_policy_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_create_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/register_add_policy_route.ts" + }, + { + "plugin": "painlessLab", + "path": "x-pack/platform/plugins/private/painless_lab/server/routes/api/execute.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_delete_route.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_start_route.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_stop_route.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/search/register_search_route.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/snapshots.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/restore.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/indices/register_get_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_get_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watches/register_delete_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_delete_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_visualize_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_visualize_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/register_list_fields_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/register_list_fields_route.ts" }, { - "plugin": "grokdebugger", - "path": "x-pack/plugins/grokdebugger/server/lib/kibana_framework.ts" + "plugin": "licenseManagement", + "path": "x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_start_basic_route.ts" }, { - "plugin": "profiling", - "path": "x-pack/plugins/observability_solution/profiling/server/routes/setup/route.ts" + "plugin": "licenseManagement", + "path": "x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_start_trial_routes.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" + "plugin": "licenseManagement", + "path": "x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_permissions_route.ts" }, { - "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts" + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/pagerduty_simulation.ts" }, { - "plugin": "console", - "path": "src/plugins/console/server/routes/api/console/proxy/index.ts" + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/servicenow_oauth_simulation.ts" }, { - "plugin": "console", - "path": "src/plugins/console/server/routes/api/console/convert_request_to_language/index.ts" + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/ms_exchage_server_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/ms_exchage_server_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/xmatters_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/torq_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/unsecured_actions_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/unsecured_actions_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/unsecured_actions_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + }, + { + "plugin": "searchprofiler", + "path": "x-pack/platform/plugins/shared/searchprofiler/server/routes/profile.ts" + }, + { + "plugin": "grokdebugger", + "path": "x-pack/platform/plugins/private/grokdebugger/server/lib/kibana_framework.ts" + }, + { + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" + }, + { + "plugin": "uptime", + "path": "x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts" }, { "plugin": "contentManagement", @@ -7675,6 +7667,14 @@ "plugin": "visTypeTimelion", "path": "src/plugins/vis_types/timelion/server/routes/run.ts" }, + { + "plugin": "console", + "path": "src/platform/plugins/shared/console/server/routes/api/console/proxy/index.ts" + }, + { + "plugin": "console", + "path": "src/platform/plugins/shared/console/server/routes/api/console/convert_request_to_language/index.ts" + }, { "plugin": "mockIdpPlugin", "path": "packages/kbn-mock-idp-plugin/server/plugin.ts" @@ -8079,10 +8079,6 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_rules.test.ts" }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/add_route.test.ts" - }, { "plugin": "actions", "path": "x-pack/plugins/actions/server/routes/connector/create/create.test.ts" @@ -8115,22 +8111,6 @@ "plugin": "actions", "path": "x-pack/plugins/actions/server/routes/connector/execute/execute.test.ts" }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_create_route.test.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts" @@ -8459,6 +8439,26 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/rules_settings/apis/update/update_query_delay_settings.test.ts" }, + { + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/add_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_create_route.test.ts" + }, { "plugin": "home", "path": "src/plugins/home/server/plugin.test.ts" @@ -8609,7 +8609,7 @@ }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/test/helpers/router_mock.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/router_mock.ts" } ], "returnComment": [], @@ -8810,100 +8810,48 @@ "path": "x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_update_route.ts" + "plugin": "guidedOnboarding", + "path": "src/plugins/guided_onboarding/server/routes/plugin_state_routes.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_put_route.ts" + "plugin": "observability", + "path": "x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_execute_route.ts" + "plugin": "logsShared", + "path": "x-pack/plugins/observability_solution/logs_shared/server/routes/deprecations/migrate_log_view_settings.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/indices/register_create_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler_extraction_rules.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/mapping/register_update_mapping_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/adaptive_relevance.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/settings/register_update_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/adaptive_relevance.ts" }, { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/templates/register_update_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" }, { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/update_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" }, { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_crawl_rules.ts" }, { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_entry_points.ts" }, { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_update_route.ts" - }, - { - "plugin": "guidedOnboarding", - "path": "src/plugins/guided_onboarding/server/routes/plugin_state_routes.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts" - }, - { - "plugin": "logsShared", - "path": "x-pack/plugins/observability_solution/logs_shared/server/routes/deprecations/migrate_log_view_settings.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/enterprise_search/crawler/crawler_extraction_rules.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/adaptive_relevance.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/adaptive_relevance.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_crawl_rules.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_entry_points.ts" - }, - { - "plugin": "enterpriseSearch", - "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_sitemaps.ts" + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/routes/app_search/crawler_sitemaps.ts" }, { "plugin": "enterpriseSearch", @@ -9050,17 +8998,57 @@ "path": "x-pack/plugins/enterprise_search/server/routes/workplace_search/sources.ts" }, { - "plugin": "ingestPipelines", - "path": "x-pack/plugins/ingest_pipelines/server/routes/api/update.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_update_route.ts" }, { - "plugin": "licenseManagement", - "path": "x-pack/plugins/license_management/server/routes/api/license/register_license_route.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/data_streams/register_put_route.ts" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_execute_route.ts" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/indices/register_create_route.ts" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/mapping/register_update_mapping_route.ts" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/settings/register_update_route.ts" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/templates/register_update_route.ts" + }, + { + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/server/routes/api/update.ts" }, { "plugin": "logstash", "path": "x-pack/plugins/logstash/server/routes/pipeline/save.ts" }, + { + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/server/plugin.ts" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/server/routes/internal/deprecations/deprecations.ts" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/server/test_helpers/create_mock_reportingplugin.ts" + }, + { + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.ts" + }, { "plugin": "metricsDataAccess", "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" @@ -9070,76 +9058,88 @@ "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/server/plugin.ts" + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/update_route.ts" }, { - "plugin": "@kbn/test-suites-xpack", - "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.ts" }, { - "plugin": "reporting", - "path": "x-pack/plugins/reporting/server/routes/internal/deprecations/deprecations.ts" + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.ts" }, { - "plugin": "reporting", - "path": "x-pack/plugins/reporting/server/test_helpers/create_mock_reportingplugin.ts" + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_update_route.ts" }, { "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/routes/api/jobs/register_create_route.ts" + "path": "x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_create_route.ts" }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.ts" + "plugin": "watcher", + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_execute_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_execute_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_save_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_save_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_activate_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_activate_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_deactivate_route.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_deactivate_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/action/register_acknowledge_route.ts" }, { - "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/action/register_acknowledge_route.ts" + "plugin": "licenseManagement", + "path": "x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_license_route.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" }, { "plugin": "grokdebugger", - "path": "x-pack/plugins/grokdebugger/server/lib/kibana_framework.ts" + "path": "x-pack/platform/plugins/private/grokdebugger/server/lib/kibana_framework.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" }, { "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts" + "path": "x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts" }, { "plugin": "ftrApis", @@ -9213,10 +9213,6 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/legacy/update.test.ts" }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/update_route.test.ts" - }, { "plugin": "actions", "path": "x-pack/plugins/actions/server/routes/connector/update/update.test.ts" @@ -9229,26 +9225,6 @@ "plugin": "actions", "path": "x-pack/plugins/actions/server/routes/connector/update/update.test.ts" }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.test.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_update_route.test.ts" - }, { "plugin": "spaces", "path": "x-pack/plugins/spaces/server/routes/api/internal/set_solution_space.test.ts" @@ -9273,6 +9249,30 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.test.ts" }, + { + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/update_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_update_route.test.ts" + }, { "plugin": "indexManagement", "path": "x-pack/plugins/index_management/server/test/helpers/router_mock.ts" @@ -9291,7 +9291,7 @@ }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/test/helpers/router_mock.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/router_mock.ts" } ], "returnComment": [], @@ -9585,7 +9585,7 @@ }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/test/helpers/router_mock.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/router_mock.ts" } ], "returnComment": [], @@ -9817,25 +9817,9 @@ "plugin": "savedObjectsTagging", "path": "x-pack/plugins/saved_objects_tagging/server/routes/tags/delete_tag.ts" }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_delete_route.ts" - }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_delete_route.ts" - }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/delete_route.ts" - }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.ts" - }, { "plugin": "observability", - "path": "x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts" + "path": "x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts" }, { "plugin": "enterpriseSearch", @@ -9966,8 +9950,12 @@ "path": "x-pack/plugins/enterprise_search/server/routes/workplace_search/sources.ts" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_delete_route.ts" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/component_templates/register_delete_route.ts" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_delete_route.ts" }, { "plugin": "ingestPipelines", @@ -9981,14 +9969,6 @@ "plugin": "logstash", "path": "x-pack/plugins/logstash/server/routes/pipeline/delete.ts" }, - { - "plugin": "metricsDataAccess", - "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" - }, { "plugin": "reporting", "path": "x-pack/plugins/reporting/server/routes/internal/management/jobs.ts" @@ -10013,14 +9993,6 @@ "plugin": "serverlessSearch", "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/routes/api/policy.ts" - }, { "plugin": "upgradeAssistant", "path": "x-pack/plugins/upgrade_assistant/server/routes/deprecation_logging.ts" @@ -10029,21 +10001,49 @@ "plugin": "upgradeAssistant", "path": "x-pack/plugins/upgrade_assistant/server/routes/ml_snapshots.ts" }, + { + "plugin": "metricsDataAccess", + "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, + { + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/delete_route.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_delete_route.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts" + }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/server/routes/api/watch/register_delete_route.ts" + "path": "x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_delete_route.ts" }, { "plugin": "grokdebugger", - "path": "x-pack/plugins/grokdebugger/server/lib/kibana_framework.ts" + "path": "x-pack/platform/plugins/private/grokdebugger/server/lib/kibana_framework.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" }, { "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts" + "path": "x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts" }, { "plugin": "ftrApis", @@ -10101,10 +10101,6 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/legacy/delete.test.ts" }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/routes/api/delete_route.test.ts" - }, { "plugin": "actions", "path": "x-pack/plugins/actions/server/routes/connector/delete/delete.test.ts" @@ -10117,10 +10113,6 @@ "plugin": "actions", "path": "x-pack/plugins/actions/server/routes/connector/delete/delete.test.ts" }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.test.ts" - }, { "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.test.ts" @@ -10161,6 +10153,14 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.test.ts" }, + { + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/routes/api/delete_route.test.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.test.ts" + }, { "plugin": "indexManagement", "path": "x-pack/plugins/index_management/server/test/helpers/router_mock.ts" @@ -10179,7 +10179,7 @@ }, { "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/test/helpers/router_mock.ts" + "path": "x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/router_mock.ts" } ], "returnComment": [], @@ -13146,194 +13146,678 @@ "signature": [ ">(parts: T[]) => Promise<", { - "pluginId": "@kbn/utility-types", - "scope": "common", - "docId": "kibKbnUtilityTypesPluginApi", - "section": "def-common.AwaitedProperties", - "text": "AwaitedProperties" + "pluginId": "@kbn/utility-types", + "scope": "common", + "docId": "kibKbnUtilityTypesPluginApi", + "section": "def-common.AwaitedProperties", + "text": "AwaitedProperties" + }, + ">>" + ], + "path": "packages/core/http/core-http-server/src/router/request_handler_context.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-server.RequestHandlerContextBase.resolve.$1", + "type": "Array", + "tags": [], + "label": "parts", + "description": [], + "signature": [ + "T[]" + ], + "path": "packages/core/http/core-http-server/src/router/request_handler_context.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-server.RouteConfig", + "type": "Interface", + "tags": [], + "label": "RouteConfig", + "description": [ + "\nRoute specific configuration." + ], + "signature": [ + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.RouteConfig", + "text": "RouteConfig" + }, + "" + ], + "path": "packages/core/http/core-http-server/src/router/route.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-server.RouteConfig.path", + "type": "string", + "tags": [], + "label": "path", + "description": [ + "\nThe endpoint _within_ the router path to register the route.\n" + ], + "path": "packages/core/http/core-http-server/src/router/route.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-server.RouteConfig.validate", + "type": "CompoundType", + "tags": [], + "label": "validate", + "description": [ + "\nA schema created with `@kbn/config-schema` that every request will be validated against.\n" + ], + "signature": [ + "false | ", + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.RouteValidator", + "text": "RouteValidator" + }, + " | (() => ", + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.RouteValidator", + "text": "RouteValidator" + }, + ")" + ], + "path": "packages/core/http/core-http-server/src/router/route.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-server.RouteConfig.security", + "type": "Object", + "tags": [], + "label": "security", + "description": [ + "\nDefines the security requirements for a route, including authorization and authentication." + ], + "signature": [ + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.RouteSecurity", + "text": "RouteSecurity" + }, + " | undefined" + ], + "path": "packages/core/http/core-http-server/src/router/route.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-server.RouteConfig.options", + "type": "Object", + "tags": [], + "label": "options", + "description": [ + "\nAdditional route options {@link RouteConfigOptions}." + ], + "signature": [ + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.RouteConfigOptions", + "text": "RouteConfigOptions" + }, + " | undefined" + ], + "path": "packages/core/http/core-http-server/src/router/route.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-server.RouteConfigOptions", + "type": "Interface", + "tags": [], + "label": "RouteConfigOptions", + "description": [ + "\nAdditional route options." + ], + "signature": [ + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.RouteConfigOptions", + "text": "RouteConfigOptions" + }, + "" + ], + "path": "packages/core/http/core-http-server/src/router/route.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-server.RouteConfigOptions.authRequired", + "type": "CompoundType", + "tags": [ + "deprecated" + ], + "label": "authRequired", + "description": [ + "\nDefines authentication mode for a route:\n- true. A user has to have valid credentials to access a resource\n- false. A user can access a resource without any credentials.\n- 'optional'. A user can access a resource, and will be authenticated if provided credentials are valid.\n Can be useful when we grant access to a resource but want to identify a user if possible.\n\nDefaults to `true` if an auth mechanism is registered.\n" + ], + "signature": [ + "boolean | \"optional\" | undefined" + ], + "path": "packages/core/http/core-http-server/src/router/route.ts", + "deprecated": true, + "trackAdoption": false, + "references": [ + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/security_route_config_validator.ts" + }, + { + "plugin": "@kbn/core-http-server-internal", + "path": "packages/core/http/core-http-server-internal/src/http_server.ts" + }, + { + "plugin": "@kbn/core-http-server-internal", + "path": "packages/core/http/core-http-server-internal/src/http_server.ts" + }, + { + "plugin": "@kbn/core-metrics-server-internal", + "path": "packages/core/metrics/core-metrics-server-internal/src/routes/elu_history.ts" + }, + { + "plugin": "@kbn/core-status-server-internal", + "path": "packages/core/status/core-status-server-internal/src/routes/status.ts" + }, + { + "plugin": "@kbn/core-status-server-internal", + "path": "packages/core/status/core-status-server-internal/src/routes/status_preboot.ts" + }, + { + "plugin": "@kbn/core-i18n-server-internal", + "path": "packages/core/i18n/core-i18n-server-internal/src/routes/translations.ts" + }, + { + "plugin": "@kbn/core-rendering-server-internal", + "path": "packages/core/rendering/core-rendering-server-internal/src/bootstrap/register_bootstrap_route.ts" + }, + { + "plugin": "@kbn/core-capabilities-server-internal", + "path": "packages/core/capabilities/core-capabilities-server-internal/src/routes/resolve_capabilities.ts" + }, + { + "plugin": "@kbn/core-apps-server-internal", + "path": "packages/core/apps/core-apps-server-internal/src/bundle_routes/bundles_route.ts" + }, + { + "plugin": "@kbn/core-apps-server-internal", + "path": "packages/core/apps/core-apps-server-internal/src/core_app.ts" + }, + { + "plugin": "@kbn/core-apps-server-internal", + "path": "packages/core/apps/core-apps-server-internal/src/core_app.ts" + }, + { + "plugin": "usageCollection", + "path": "src/plugins/usage_collection/server/routes/stats/stats.ts" + }, + { + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/routes/background_task_utilization.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/common.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/common.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/oidc.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/oidc.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/oidc.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/oidc.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/oidc.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authentication/saml.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/authorization/reset_session_page.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/views/capture_url.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/views/logged_out.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/views/login.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/views/login.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/views/logout.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/routes/analytics/record_violations.ts" + }, + { + "plugin": "monitoringCollection", + "path": "x-pack/plugins/monitoring_collection/server/routes/api/v1/dynamic_route/get_metrics_by_type.ts" + }, + { + "plugin": "monitoringCollection", + "path": "x-pack/plugins/monitoring_collection/server/routes/api/v1/prometheus/get_metrics.ts" + }, + { + "plugin": "files", + "path": "src/plugins/files/server/routes/public_facing/download.ts" + }, + { + "plugin": "banners", + "path": "x-pack/plugins/banners/server/routes/info.ts" + }, + { + "plugin": "telemetry", + "path": "src/plugins/telemetry/server/routes/telemetry_config.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/agent/agent_status_handler.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/resolver.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/update_insight.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/metadata/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/metadata/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/metadata/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/policy/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/file_info_handler.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/file_download_handler.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/details.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/status.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/state.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/list.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/suggestions/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts" + }, + { + "plugin": "cloudFullStory", + "path": "x-pack/plugins/cloud_integrations/cloud_full_story/server/routes/fullstory.ts" + }, + { + "plugin": "customBranding", + "path": "x-pack/plugins/custom_branding/server/routes/info.ts" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/server/lib/route_config_helpers.test.ts" + }, + { + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts" + }, + { + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts" + }, + { + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts" + }, + { + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/routes/background_task_utilization.test.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/pagerduty_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/servicenow_oauth_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/jira_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/resilient_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/ms_exchage_server_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/ms_exchage_server_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/xmatters_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/torq_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + }, + { + "plugin": "@kbn/test-suites-xpack", + "path": "x-pack/test/alerting_api_integration/common/plugins/actions_simulators/server/tines_simulation.ts" + }, + { + "plugin": "interactiveSetup", + "path": "src/plugins/interactive_setup/server/routes/configure.ts" + }, + { + "plugin": "interactiveSetup", + "path": "src/plugins/interactive_setup/server/routes/enroll.ts" + }, + { + "plugin": "interactiveSetup", + "path": "src/plugins/interactive_setup/server/routes/ping.ts" + }, + { + "plugin": "interactiveSetup", + "path": "src/plugins/interactive_setup/server/routes/status.ts" + }, + { + "plugin": "interactiveSetup", + "path": "src/plugins/interactive_setup/server/routes/verify.ts" + }, + { + "plugin": "mockIdpPlugin", + "path": "packages/kbn-mock-idp-plugin/server/plugin.ts" + }, + { + "plugin": "mockIdpPlugin", + "path": "packages/kbn-mock-idp-plugin/server/plugin.ts" + }, + { + "plugin": "mockIdpPlugin", + "path": "packages/kbn-mock-idp-plugin/server/plugin.ts" + }, + { + "plugin": "mockIdpPlugin", + "path": "packages/kbn-mock-idp-plugin/server/plugin.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/security_route_config_validator.test.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.test.ts" + }, + { + "plugin": "@kbn/core-http-server-internal", + "path": "packages/core/http/core-http-server-internal/src/lifecycle/auth.ts" + }, + { + "plugin": "@kbn/core-http-server-internal", + "path": "packages/core/http/core-http-server-internal/src/lifecycle/auth.ts" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/capabilities/capabilities_switcher.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/authentication/providers/anonymous.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/authentication/providers/basic.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/authentication/providers/kerberos.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/authentication/providers/saml.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/authentication/providers/token.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/authentication/providers/oidc.ts" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/server/authentication/providers/pki.ts" + }, + { + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/lib/capabilities/capabilities_switcher.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" + }, + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" }, - ">>" - ], - "path": "packages/core/http/core-http-server/src/router/request_handler_context.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ { - "parentPluginId": "@kbn/core-http-server", - "id": "def-server.RequestHandlerContextBase.resolve.$1", - "type": "Array", - "tags": [], - "label": "parts", - "description": [], - "signature": [ - "T[]" - ], - "path": "packages/core/http/core-http-server/src/router/request_handler_context.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/core-http-server", - "id": "def-server.RouteConfig", - "type": "Interface", - "tags": [], - "label": "RouteConfig", - "description": [ - "\nRoute specific configuration." - ], - "signature": [ - { - "pluginId": "@kbn/core-http-server", - "scope": "server", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-server.RouteConfig", - "text": "RouteConfig" - }, - "" - ], - "path": "packages/core/http/core-http-server/src/router/route.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/core-http-server", - "id": "def-server.RouteConfig.path", - "type": "string", - "tags": [], - "label": "path", - "description": [ - "\nThe endpoint _within_ the router path to register the route.\n" - ], - "path": "packages/core/http/core-http-server/src/router/route.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/core-http-server", - "id": "def-server.RouteConfig.validate", - "type": "CompoundType", - "tags": [], - "label": "validate", - "description": [ - "\nA schema created with `@kbn/config-schema` that every request will be validated against.\n" - ], - "signature": [ - "false | ", + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" + }, { - "pluginId": "@kbn/core-http-server", - "scope": "server", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-server.RouteValidator", - "text": "RouteValidator" + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" }, - " | (() => ", { - "pluginId": "@kbn/core-http-server", - "scope": "server", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-server.RouteValidator", - "text": "RouteValidator" + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" }, - ")" - ], - "path": "packages/core/http/core-http-server/src/router/route.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/core-http-server", - "id": "def-server.RouteConfig.security", - "type": "Object", - "tags": [], - "label": "security", - "description": [ - "\nDefines the security requirements for a route, including authorization and authentication." - ], - "signature": [ { - "pluginId": "@kbn/core-http-server", - "scope": "server", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-server.RouteSecurity", - "text": "RouteSecurity" + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" }, - " | undefined" - ], - "path": "packages/core/http/core-http-server/src/router/route.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/core-http-server", - "id": "def-server.RouteConfig.options", - "type": "Object", - "tags": [], - "label": "options", - "description": [ - "\nAdditional route options {@link RouteConfigOptions}." - ], - "signature": [ { - "pluginId": "@kbn/core-http-server", - "scope": "server", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-server.RouteConfigOptions", - "text": "RouteConfigOptions" + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" }, - " | undefined" - ], - "path": "packages/core/http/core-http-server/src/router/route.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/core-http-server", - "id": "def-server.RouteConfigOptions", - "type": "Interface", - "tags": [], - "label": "RouteConfigOptions", - "description": [ - "\nAdditional route options." - ], - "signature": [ - { - "pluginId": "@kbn/core-http-server", - "scope": "server", - "docId": "kibKbnCoreHttpServerPluginApi", - "section": "def-server.RouteConfigOptions", - "text": "RouteConfigOptions" - }, - "" - ], - "path": "packages/core/http/core-http-server/src/router/route.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/core-http-server", - "id": "def-server.RouteConfigOptions.authRequired", - "type": "CompoundType", - "tags": [], - "label": "authRequired", - "description": [ - "\nDefines authentication mode for a route:\n- true. A user has to have valid credentials to access a resource\n- false. A user can access a resource without any credentials.\n- 'optional'. A user can access a resource, and will be authenticated if provided credentials are valid.\n Can be useful when we grant access to a resource but want to identify a user if possible.\n\nDefaults to `true` if an auth mechanism is registered." - ], - "signature": [ - "boolean | \"optional\" | undefined" - ], - "path": "packages/core/http/core-http-server/src/router/route.ts", - "deprecated": false, - "trackAdoption": false + { + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/request.test.ts" + } + ] }, { "parentPluginId": "@kbn/core-http-server", @@ -15458,28 +15942,8 @@ "path": "x-pack/plugins/cloud_security_posture/server/routes/benchmark_rules/get_states/get_states.ts" }, { - "plugin": "dataUsage", - "path": "x-pack/plugins/data_usage/server/routes/internal/data_streams.ts" - }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.ts" - }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.ts" - }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.ts" - }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.ts" - }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.ts" + "plugin": "logsShared", + "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { "plugin": "ml", @@ -15687,91 +16151,39 @@ }, { "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/saved_objects.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/model_management.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/model_management.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/management.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/inference_models.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/user_conversations/read_route.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/user_conversations/find_route.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.ts" + "path": "x-pack/platform/plugins/shared/ml/server/routes/saved_objects.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/model_management.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/prompts/find_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/model_management.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/management.ts" }, { - "plugin": "logsShared", - "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/inference_models.ts" }, { "plugin": "fileUpload", @@ -15870,92 +16282,116 @@ "path": "x-pack/plugins/maps/server/routes.ts" }, { - "plugin": "metricsDataAccess", - "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/live_query/get_live_query_details_route.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/live_query/get_live_query_results_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_route.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/live_query/find_live_query_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_route.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/saved_query/find_saved_query_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/saved_query/read_saved_query_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/status/create_status_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/live_query/get_live_query_details_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_policies.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/live_query/get_live_query_results_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_policy.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/live_query/find_live_query_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_status_for_agent_policy.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/saved_query/find_saved_query_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_package_policies.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/saved_query/read_saved_query_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agents.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/status/create_status_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_details.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policies.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/find_pack_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policy.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_status_for_agent_policy.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/privileges_check/privileges_check_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/fleet_wrapper/get_package_policies.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/asset/get_assets_status_route.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agents.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_details.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/read_route.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/find_pack_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/find_route.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/privileges_check/privileges_check_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/asset/get_assets_status_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/find_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.ts" }, { "plugin": "securitySolution", @@ -16137,6 +16573,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/get.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/missing.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/get_prebuilt_rules.ts" @@ -16185,6 +16625,22 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_route.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_route.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_events/get_rule_execution_events_route.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/rule_execution_logs/get_rule_execution_results/get_rule_execution_results_route.ts" + }, { "plugin": "sessionView", "path": "x-pack/plugins/session_view/server/routes/alerts_route.ts" @@ -16206,20 +16662,16 @@ "path": "x-pack/plugins/session_view/server/routes/get_total_io_bytes_route.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" - }, - { - "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts" + "plugin": "metricsDataAccess", + "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { - "plugin": "dataUsage", - "path": "x-pack/plugins/data_usage/server/routes/internal/data_streams.test.ts" + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { "plugin": "dataUsage", - "path": "x-pack/plugins/data_usage/server/routes/internal/data_streams.test.ts" + "path": "x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.ts" }, { "plugin": "dataVisualizer", @@ -16249,6 +16701,42 @@ "plugin": "transform", "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_stats_single/register_route.ts" }, + { + "plugin": "dataUsage", + "path": "x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.test.ts" + }, + { + "plugin": "dataUsage", + "path": "x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.test.ts" + }, + { + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" + }, + { + "plugin": "uptime", + "path": "x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.ts" + }, { "plugin": "@kbn/core-http-router-server-internal", "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.ts" @@ -16333,14 +16821,6 @@ "plugin": "@kbn/core-http-router-server-internal", "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.test.ts" }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/__mocks__/mock_server.ts" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/server/routes/custom_elements/find.test.ts" @@ -16385,6 +16865,14 @@ "plugin": "cloudSecurityPosture", "path": "x-pack/plugins/cloud_security_posture/server/routes/benchmarks/benchmarks.test.ts" }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/mock_server.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" + }, { "plugin": "@kbn/core-http-router-server-mocks", "path": "packages/core/http/core-http-router-server-mocks/src/versioned_router_mock_route.test.ts" @@ -16544,6 +17032,10 @@ "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" }, + { + "plugin": "logsShared", + "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, { "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/server/routes/trained_models.ts" @@ -16588,14 +17080,6 @@ "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/server/routes/inference_models.ts" }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/user_conversations/update_route.ts" - }, - { - "plugin": "logsShared", - "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" - }, { "plugin": "lists", "path": "x-pack/plugins/lists/server/routes/update_endpoint_list_item_route.ts" @@ -16617,20 +17101,16 @@ "path": "x-pack/plugins/lists/server/routes/list/update_list_route.ts" }, { - "plugin": "metricsDataAccess", - "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/saved_query/update_saved_query_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/saved_query/update_saved_query_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/update_pack_route.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/update_pack_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/update_route.ts" }, { "plugin": "securitySolution", @@ -16660,6 +17140,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/tags/routes/create_tag.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/configure_saved_object.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/update.ts" @@ -16677,12 +17161,12 @@ "path": "x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/retry.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" + "plugin": "metricsDataAccess", + "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { - "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts" + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { "plugin": "securitySolution", @@ -16693,20 +17177,20 @@ "path": "x-pack/platform/plugins/private/transform/server/routes/api/transforms_create/register_route.ts" }, { - "plugin": "@kbn/core-http-router-server-internal", - "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" }, { - "plugin": "@kbn/core-http-router-server-internal", - "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.test.ts" + "plugin": "uptime", + "path": "x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts" }, { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.ts" }, { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/__mocks__/mock_server.ts" + "plugin": "@kbn/core-http-router-server-internal", + "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_route.test.ts" }, { "plugin": "canvas", @@ -16720,6 +17204,14 @@ "plugin": "canvas", "path": "x-pack/plugins/canvas/server/routes/workpad/update.test.ts" }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/mock_server.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" + }, { "plugin": "@kbn/core-apps-server-internal", "path": "packages/core/apps/core-apps-server-internal/src/core_app.test.ts" @@ -16960,16 +17452,8 @@ "path": "x-pack/plugins/cloud_security_posture/server/routes/graph/route.ts" }, { - "plugin": "dataUsage", - "path": "x-pack/plugins/data_usage/server/routes/internal/usage_metrics.ts" - }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.ts" - }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.ts" + "plugin": "logsShared", + "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { "plugin": "ml", @@ -17216,116 +17700,56 @@ "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" }, { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/server/routes/alerting.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.ts" - }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/user_conversations/create_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/chat/chat_complete_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/results_service.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" }, { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/system.ts" }, { - "plugin": "logsShared", - "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/server/routes/alerting.ts" }, { "plugin": "fileUpload", @@ -17351,34 +17775,6 @@ "plugin": "fileUpload", "path": "x-pack/plugins/file_upload/server/routes.ts" }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/routes/related_routes.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/routes/pipeline_routes.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/routes/cel_routes.ts" - }, { "plugin": "lists", "path": "x-pack/plugins/lists/server/routes/create_endpoint_list_item_route.ts" @@ -17444,44 +17840,76 @@ "path": "x-pack/plugins/maps/server/data_indexing/indexing_routes.ts" }, { - "plugin": "metricsDataAccess", - "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/live_query/create_live_query_route.ts" }, { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/saved_query/create_saved_query_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_route.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/create_pack_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_rule_health/get_rule_health_route.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/asset/update_assets_route.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/setup/setup_health_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/live_query/create_live_query_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/create_route.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/saved_query/create_saved_query_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/create_pack_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/asset/update_assets_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/chat/chat_complete_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts" + }, + { + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.ts" }, { "plugin": "securitySolution", @@ -17535,10 +17963,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/prebuilt_rules/api/bootstrap_prebuilt_rules/bootstrap_prebuilt_rules.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/api/create_legacy_notification/route.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/index/create_index_route.ts" @@ -17727,6 +18151,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/suggestions/index.ts" @@ -17736,16 +18164,60 @@ "path": "x-pack/plugins/security_solution/server/endpoint/routes/protection_updates_note/index.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_cluster_health/get_cluster_health_route.ts" }, { - "plugin": "dataUsage", - "path": "x-pack/plugins/data_usage/server/routes/internal/usage_metrics.test.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_rule_health/get_rule_health_route.ts" }, { - "plugin": "dataUsage", - "path": "x-pack/plugins/data_usage/server/routes/internal/usage_metrics.test.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/get_space_health/get_space_health_route.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_monitoring/api/detection_engine_health/setup/setup_health_route.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/api/create_legacy_notification/route.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/routes/ecs_routes.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/routes/build_integration_routes.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/routes/categorization_routes.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/routes/related_routes.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/routes/pipeline_routes.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/routes/analyze_logs_routes.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/routes/cel_routes.ts" + }, + { + "plugin": "metricsDataAccess", + "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { "plugin": "securitySolution", @@ -17755,6 +18227,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.ts" }, + { + "plugin": "dataUsage", + "path": "x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics.ts" + }, { "plugin": "dataVisualizer", "path": "x-pack/platform/plugins/private/data_visualizer/server/routes.ts" @@ -17811,6 +18287,26 @@ "plugin": "aiops", "path": "x-pack/platform/plugins/shared/aiops/server/routes/categorization_field_validation/define_route.ts" }, + { + "plugin": "dataUsage", + "path": "x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics.test.ts" + }, + { + "plugin": "dataUsage", + "path": "x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics.test.ts" + }, + { + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.ts" + }, { "plugin": "dataViewFieldEditor", "path": "src/plugins/data_view_field_editor/server/routes/field_preview.ts" @@ -17879,14 +18375,6 @@ "plugin": "cloud", "path": "x-pack/plugins/cloud/server/routes/set_cloud_data_route.test.ts" }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/__mocks__/mock_server.ts" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/server/routes/custom_elements/create.test.ts" @@ -17898,6 +18386,14 @@ { "plugin": "canvas", "path": "x-pack/plugins/canvas/server/routes/workpad/create.test.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/mock_server.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" } ], "returnComment": [], @@ -18002,14 +18498,6 @@ "plugin": "lists", "path": "x-pack/plugins/lists/server/routes/list/patch_list_route.ts" }, - { - "plugin": "metricsDataAccess", - "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/patch_rule/route.ts" @@ -18030,6 +18518,14 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/timeline/routes/pinned_events/persist_pinned_event.ts" }, + { + "plugin": "metricsDataAccess", + "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_patch_rules/route.ts" @@ -18039,12 +18535,12 @@ "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.ts" }, { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/mock_server.ts" }, { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/__mocks__/mock_server.ts" + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" } ], "returnComment": [], @@ -18181,6 +18677,10 @@ "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/security/fleet_router.ts" }, + { + "plugin": "logsShared", + "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, { "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/server/routes/trained_models.ts" @@ -18217,14 +18717,6 @@ "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/server/routes/anomaly_detectors.ts" }, - { - "plugin": "elasticAssistant", - "path": "x-pack/plugins/elastic_assistant/server/routes/user_conversations/delete_route.ts" - }, - { - "plugin": "logsShared", - "path": "x-pack/plugins/observability_solution/logs_shared/server/lib/adapters/framework/kibana_framework_adapter.ts" - }, { "plugin": "lists", "path": "x-pack/plugins/lists/server/routes/delete_endpoint_list_item_route.ts" @@ -18254,20 +18746,16 @@ "path": "x-pack/plugins/maps/server/data_indexing/indexing_routes.ts" }, { - "plugin": "metricsDataAccess", - "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/server/routes/saved_query/delete_saved_query_route.ts" }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/saved_query/delete_saved_query_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/delete_pack_route.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/delete_pack_route.ts" + "plugin": "elasticAssistant", + "path": "x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/delete_route.ts" }, { "plugin": "securitySolution", @@ -18310,13 +18798,21 @@ "path": "x-pack/plugins/security_solution/server/lib/entity_analytics/entity_store/routes/delete.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/server.ts" + "plugin": "metricsDataAccess", + "path": "x-pack/plugins/observability_solution/metrics_data_access/server/lib/adapters/framework/kibana_framework_adapter.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/server/lib/adapters/framework/kibana_framework_adapter.ts" }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_delete_rules/route.ts" }, + { + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/server.ts" + }, { "plugin": "@kbn/core-http-router-server-internal", "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.ts" @@ -18329,14 +18825,6 @@ "plugin": "@kbn/core-http-router-server-internal", "path": "packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.test.ts" }, - { - "plugin": "ecsDataQualityDashboard", - "path": "x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" - }, - { - "plugin": "integrationAssistant", - "path": "x-pack/plugins/integration_assistant/server/__mocks__/mock_server.ts" - }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/server/routes/custom_elements/delete.test.ts" @@ -18344,6 +18832,14 @@ { "plugin": "canvas", "path": "x-pack/plugins/canvas/server/routes/workpad/delete.test.ts" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/mock_server.ts" + }, + { + "plugin": "ecsDataQualityDashboard", + "path": "x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts" } ], "returnComment": [], diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index b1acc091b418b..3e7faac61d376 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index 2334b6a7f8198..eb0045b5d2073 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index b9b3aba6760dd..2fb017028c14f 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_utils.mdx b/api_docs/kbn_core_http_server_utils.mdx index 351ec41bd0da1..4c207e08d2497 100644 --- a/api_docs/kbn_core_http_server_utils.mdx +++ b/api_docs/kbn_core_http_server_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-utils title: "@kbn/core-http-server-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-utils'] --- import kbnCoreHttpServerUtilsObj from './kbn_core_http_server_utils.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 000c47c06f11e..9d22448ad8ced 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index f51782ce75aa5..4fd1d6de7b436 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index 94ac5fc27c3c8..f84d86980e410 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index f479d00514093..2d3f3382849ff 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index 2f4b11a249567..05db7316b0316 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 8bddc5cb232c4..f054d8f60ed72 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index b2b12dd060495..8e195d8a666b5 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 8f05f4294eaf9..8bd4594447a0e 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index 98465eeca9168..95a0c5c20113b 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index 68530f37b0796..30d09f585ec69 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index 0de8193218662..28c7adcd9bfa1 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index 766bbc64b06f9..a01dfcc0c5d3f 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index 7291faa25100f..5c837e944c96e 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index 81572a65f7952..4a5b538b3bab0 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 0f323c502f4b0..3bf8a72a117a7 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index b76221057d868..0c0236d32af59 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 2b08e85635d85..2ae26f9c606f8 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index b96515f47e56e..3edb708c66178 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index e2eac2c41f700..3c6bda56bd5ca 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 1a5a185d7207d..657633ef45c88 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index fc8307aa40291..9dd60362f86df 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index 3e4acefdb49a8..c71e6d903bd9f 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index 2b37f619035cd..0de365a13a1f7 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 21b1476a1cd5c..2f5280535752f 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index 16471f6082d2a..a618a0b2bb562 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index b8348d5b4e0d0..5a9a363e2cdad 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index 99a19348d6f6e..a3c686ec34bb8 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index a1f82fd6f4204..2809da88763ad 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index 498781a110368..8e2b8dd64c171 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index e61fa73f779fd..10e0757c44189 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index fb97edb750679..fff1ebef48f98 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 998ea01939498..c96ebe8f7b96e 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index 9006f61580752..2a60233e2ed1e 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index 26c6cca6859d1..2436870107e3c 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index 6773f689157a5..1e300ac889074 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 59b5cd14f66ff..cfa94b693ce12 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 00d2daf5e7e29..b3d274cfdeea6 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index 087e03ad8fec0..6dfc664e6cdac 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 05dc9cc0932c6..3b1ce984e0923 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index 6278e07552b72..c9117c2cdd071 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser.mdx b/api_docs/kbn_core_rendering_browser.mdx index 72720bbe02cfc..c5beeae25237a 100644 --- a/api_docs/kbn_core_rendering_browser.mdx +++ b/api_docs/kbn_core_rendering_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser title: "@kbn/core-rendering-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser'] --- import kbnCoreRenderingBrowserObj from './kbn_core_rendering_browser.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 014a20a1d146f..1c56eb021f8f4 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index 65ad02a75a9df..2ba962d2b941e 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index bfae09edfb668..bfecf774c1937 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index 6d45673e4888e..e4279f2c9c240 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.devdocs.json b/api_docs/kbn_core_saved_objects_api_browser.devdocs.json index 6c099d5f78424..d59bfd8881595 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.devdocs.json +++ b/api_docs/kbn_core_saved_objects_api_browser.devdocs.json @@ -886,6 +886,14 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/saved_objects_client.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core", "path": "src/core/public/index.ts" @@ -926,14 +934,6 @@ "plugin": "visTypeTimeseries", "path": "src/plugins/vis_types/timeseries/public/application/contexts/query_input_bar_context.ts" }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, { "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.test.ts" @@ -1121,14 +1121,14 @@ "deprecated": true, "trackAdoption": false, "references": [ - { - "plugin": "home", - "path": "src/plugins/home/public/application/components/home_app.js" - }, { "plugin": "@kbn/core-saved-objects-browser-mocks", "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/components/home_app.js" + }, { "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/saved_objects_client.ts" @@ -2767,6 +2767,18 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/saved_objects_client.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core", "path": "src/core/public/index.ts" @@ -2795,14 +2807,6 @@ "plugin": "dataVisualizer", "path": "x-pack/platform/plugins/private/data_visualizer/common/types/index.ts" }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/common/types/kibana.ts" - }, - { - "plugin": "ml", - "path": "x-pack/platform/plugins/shared/ml/common/types/kibana.ts" - }, { "plugin": "dashboardEnhanced", "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/abstract_dashboard_drilldown/components/collect_config_container.tsx" @@ -2811,6 +2815,14 @@ "plugin": "dashboardEnhanced", "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/abstract_dashboard_drilldown/components/collect_config_container.tsx" }, + { + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/common/types/kibana.ts" + }, + { + "plugin": "ml", + "path": "x-pack/platform/plugins/shared/ml/common/types/kibana.ts" + }, { "plugin": "graph", "path": "x-pack/plugins/graph/public/types/app_state.ts" @@ -2878,18 +2890,6 @@ { "plugin": "visualizations", "path": "src/plugins/visualizations/public/wizard/search_selection/show_saved_object.test.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" } ], "children": [ diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 6c9bcdd0c2ae3..462b8b9da242d 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.devdocs.json b/api_docs/kbn_core_saved_objects_api_server.devdocs.json index faaa627699590..983efe0f523dc 100644 --- a/api_docs/kbn_core_saved_objects_api_server.devdocs.json +++ b/api_docs/kbn_core_saved_objects_api_server.devdocs.json @@ -2330,6 +2330,10 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core-saved-objects-api-server-internal", "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/utils/internal_utils.ts" @@ -2342,10 +2346,6 @@ "plugin": "@kbn/core-saved-objects-server-internal", "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts" }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts" @@ -2376,7 +2376,7 @@ }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts" }, { "plugin": "securitySolution", diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 0203fbac2f876..19175550af030 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 98d41a1e3380d..97a46f99d033d 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 8557124bdcda4..961ae406bb088 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 1a71c86b70763..18b5d49386ebd 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.devdocs.json b/api_docs/kbn_core_saved_objects_browser.devdocs.json index f625e14052421..d0005651d2a2e 100644 --- a/api_docs/kbn_core_saved_objects_browser.devdocs.json +++ b/api_docs/kbn_core_saved_objects_browser.devdocs.json @@ -17,18 +17,6 @@ "deprecated": true, "trackAdoption": false, "references": [ - { - "plugin": "@kbn/core-lifecycle-browser", - "path": "packages/core/lifecycle/core-lifecycle-browser/src/core_start.ts" - }, - { - "plugin": "@kbn/core-lifecycle-browser", - "path": "packages/core/lifecycle/core-lifecycle-browser/src/core_start.ts" - }, - { - "plugin": "@kbn/core-lifecycle-browser", - "path": "packages/core/lifecycle/core-lifecycle-browser/src/core_start.ts" - }, { "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/saved_objects_service.ts" @@ -41,6 +29,26 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/saved_objects_service.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" + }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" + }, + { + "plugin": "@kbn/core-lifecycle-browser", + "path": "packages/core/lifecycle/core-lifecycle-browser/src/core_start.ts" + }, + { + "plugin": "@kbn/core-lifecycle-browser", + "path": "packages/core/lifecycle/core-lifecycle-browser/src/core_start.ts" + }, + { + "plugin": "@kbn/core-lifecycle-browser", + "path": "packages/core/lifecycle/core-lifecycle-browser/src/core_start.ts" + }, { "plugin": "@kbn/core", "path": "src/core/public/index.ts" @@ -55,11 +63,11 @@ }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/application/types.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/application/types.ts" }, { "plugin": "exploratoryView", - "path": "x-pack/plugins/observability_solution/exploratory_view/public/application/types.ts" + "path": "x-pack/solutions/observability/plugins/exploratory_view/public/application/types.ts" }, { "plugin": "transform", @@ -72,14 +80,6 @@ { "plugin": "@kbn/core", "path": "src/core/server/index.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" } ], "children": [ diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index 00436cf886dbf..be85c9dc3dce9 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.devdocs.json b/api_docs/kbn_core_saved_objects_browser_internal.devdocs.json index 83b0893914e67..016c97e0e12c7 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.devdocs.json +++ b/api_docs/kbn_core_saved_objects_browser_internal.devdocs.json @@ -36,24 +36,24 @@ "trackAdoption": false, "references": [ { - "plugin": "@kbn/core-root-browser-internal", - "path": "packages/core/root/core-root-browser-internal/src/core_system.ts" + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" }, { - "plugin": "@kbn/core-root-browser-internal", - "path": "packages/core/root/core-root-browser-internal/src/core_system.ts" + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" }, { "plugin": "@kbn/core-root-browser-internal", "path": "packages/core/root/core-root-browser-internal/src/core_system.ts" }, { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" + "plugin": "@kbn/core-root-browser-internal", + "path": "packages/core/root/core-root-browser-internal/src/core_system.ts" }, { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/saved_objects_service.mock.ts" + "plugin": "@kbn/core-root-browser-internal", + "path": "packages/core/root/core-root-browser-internal/src/core_system.ts" } ], "children": [ diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 67e0027d173cf..8fc0576894a12 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 185c5151a73dc..da981f4dc034a 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.devdocs.json b/api_docs/kbn_core_saved_objects_common.devdocs.json index 27c7f50f6423b..3432b73b68444 100644 --- a/api_docs/kbn_core_saved_objects_common.devdocs.json +++ b/api_docs/kbn_core_saved_objects_common.devdocs.json @@ -1213,6 +1213,18 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/saved_objects_client.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core", "path": "src/core/public/index.ts" @@ -1317,6 +1329,18 @@ "plugin": "lists", "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts" }, + { + "plugin": "savedObjectsTagging", + "path": "x-pack/plugins/saved_objects_tagging/public/utils.test.ts" + }, + { + "plugin": "savedObjectsTagging", + "path": "x-pack/plugins/saved_objects_tagging/public/utils.test.ts" + }, + { + "plugin": "savedObjectsTagging", + "path": "x-pack/plugins/saved_objects_tagging/public/utils.test.ts" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts" @@ -1333,18 +1357,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts" }, - { - "plugin": "savedObjectsTagging", - "path": "x-pack/plugins/saved_objects_tagging/public/utils.test.ts" - }, - { - "plugin": "savedObjectsTagging", - "path": "x-pack/plugins/saved_objects_tagging/public/utils.test.ts" - }, - { - "plugin": "savedObjectsTagging", - "path": "x-pack/plugins/saved_objects_tagging/public/utils.test.ts" - }, { "plugin": "upgradeAssistant", "path": "x-pack/plugins/upgrade_assistant/common/types.ts" @@ -1437,18 +1449,6 @@ "plugin": "@kbn/core-saved-objects-import-export-server-internal", "path": "packages/core/saved-objects/core-saved-objects-import-export-server-internal/src/export/apply_export_transforms.ts" }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, { "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.test.ts" diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index 8a856f1f061b0..eb9d99f0e70cd 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index a6e4abed4ba57..a973c0cf8034e 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index 5e5163d7f8191..60634eb1b790c 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index 68cd1c18dca8e..833becb51deb7 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index 4372cddba9070..a623379512e8a 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.devdocs.json b/api_docs/kbn_core_saved_objects_server.devdocs.json index 144ba6e5eaad2..3ade9b9cbe1b4 100644 --- a/api_docs/kbn_core_saved_objects_server.devdocs.json +++ b/api_docs/kbn_core_saved_objects_server.devdocs.json @@ -5859,6 +5859,10 @@ "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.ts" }, + { + "plugin": "@kbn/core-saved-objects-browser-mocks", + "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" + }, { "plugin": "@kbn/core-saved-objects-api-server-internal", "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/utils/internal_utils.ts" @@ -5871,10 +5875,6 @@ "plugin": "@kbn/core-saved-objects-server-internal", "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts" }, - { - "plugin": "@kbn/core-saved-objects-browser-mocks", - "path": "packages/core/saved-objects/core-saved-objects-browser-mocks/src/simple_saved_object.mock.ts" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts" @@ -5905,7 +5905,7 @@ }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts" }, { "plugin": "securitySolution", @@ -10763,18 +10763,6 @@ "plugin": "maps", "path": "x-pack/plugins/maps/server/saved_objects/setup_saved_objects.ts" }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/server/saved_objects/visualization.ts" - }, - { - "plugin": "apmDataAccess", - "path": "x-pack/plugins/observability_solution/apm_data_access/server/saved_objects/apm_indices.ts" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/observability_solution/infra/server/lib/sources/saved_object_type.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts" @@ -10795,21 +10783,33 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts" }, + { + "plugin": "apmDataAccess", + "path": "x-pack/plugins/observability_solution/apm_data_access/server/saved_objects/apm_indices.ts" + }, { "plugin": "apm", "path": "x-pack/plugins/observability_solution/apm/server/saved_objects/apm_service_groups.ts" }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/server/saved_objects/visualization.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/observability_solution/infra/server/lib/sources/saved_object_type.ts" + }, { "plugin": "slo", "path": "x-pack/plugins/observability_solution/slo/server/saved_objects/slo.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor.ts" }, { "plugin": "uptime", - "path": "x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts" + "path": "x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts" }, { "plugin": "eventAnnotation", @@ -11554,10 +11554,6 @@ "plugin": "maps", "path": "x-pack/plugins/maps/server/saved_objects/setup_saved_objects.ts" }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/server/saved_objects/visualization.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts" @@ -11574,6 +11570,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts" }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/server/saved_objects/visualization.ts" + }, { "plugin": "@kbn/core-test-helpers-so-type-serializer", "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.ts" diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 6bf2d1e33f8d7..b4e52c73825c3 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 739ca5468b704..94dae1edea5cf 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index e6c9a86b32220..8c993b6cc3843 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index c97c2df724aac..9c915c2150edc 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser.mdx b/api_docs/kbn_core_security_browser.mdx index b682c8c3f93e8..6d5a6fa2a650a 100644 --- a/api_docs/kbn_core_security_browser.mdx +++ b/api_docs/kbn_core_security_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser title: "@kbn/core-security-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser'] --- import kbnCoreSecurityBrowserObj from './kbn_core_security_browser.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_internal.mdx b/api_docs/kbn_core_security_browser_internal.mdx index 5560e404afe26..52895ff636d62 100644 --- a/api_docs/kbn_core_security_browser_internal.mdx +++ b/api_docs/kbn_core_security_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-internal title: "@kbn/core-security-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-internal'] --- import kbnCoreSecurityBrowserInternalObj from './kbn_core_security_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_mocks.devdocs.json b/api_docs/kbn_core_security_browser_mocks.devdocs.json index f6b6c98008760..3d76985b7d337 100644 --- a/api_docs/kbn_core_security_browser_mocks.devdocs.json +++ b/api_docs/kbn_core_security_browser_mocks.devdocs.json @@ -146,7 +146,7 @@ "section": "def-common.AuthenticatedUser", "text": "AuthenticatedUser" }, - ", \"roles\"> & { roles: string[]; }>) => { username: string; enabled: boolean; metadata: { _reserved: boolean; _deprecated?: boolean | undefined; _deprecated_reason?: string | undefined; }; email: string; full_name: string; profile_uid: string; authentication_provider: ", + ", \"roles\"> & { roles: string[]; }>) => { username: string; enabled: boolean; metadata: { _reserved: boolean; _deprecated?: boolean | undefined; _deprecated_reason?: string | undefined; }; email: string; operator?: boolean | undefined; full_name: string; profile_uid: string; authentication_provider: ", { "pluginId": "@kbn/core-security-common", "scope": "common", diff --git a/api_docs/kbn_core_security_browser_mocks.mdx b/api_docs/kbn_core_security_browser_mocks.mdx index f6e0d4d13add9..0aba38a43a3f6 100644 --- a/api_docs/kbn_core_security_browser_mocks.mdx +++ b/api_docs/kbn_core_security_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-mocks title: "@kbn/core-security-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-mocks'] --- import kbnCoreSecurityBrowserMocksObj from './kbn_core_security_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_security_common.devdocs.json b/api_docs/kbn_core_security_common.devdocs.json index af196d5e34931..fdae7a470ddf4 100644 --- a/api_docs/kbn_core_security_common.devdocs.json +++ b/api_docs/kbn_core_security_common.devdocs.json @@ -157,6 +157,22 @@ "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/core-security-common", + "id": "def-common.AuthenticatedUser.operator", + "type": "CompoundType", + "tags": [], + "label": "operator", + "description": [ + "\nIndicates whether user is an operator." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_core_security_common.mdx b/api_docs/kbn_core_security_common.mdx index 4cd19de06ef2a..5fbfb39d867f1 100644 --- a/api_docs/kbn_core_security_common.mdx +++ b/api_docs/kbn_core_security_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-common title: "@kbn/core-security-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-common'] --- import kbnCoreSecurityCommonObj from './kbn_core_security_common.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 20 | 0 | 6 | 0 | +| 21 | 0 | 6 | 0 | ## Common diff --git a/api_docs/kbn_core_security_server.mdx b/api_docs/kbn_core_security_server.mdx index 8483bdd8ec7c9..32b9aa9c90aed 100644 --- a/api_docs/kbn_core_security_server.mdx +++ b/api_docs/kbn_core_security_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server title: "@kbn/core-security-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server'] --- import kbnCoreSecurityServerObj from './kbn_core_security_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_internal.mdx b/api_docs/kbn_core_security_server_internal.mdx index ca0e0bc1dfbc0..37248404c83fd 100644 --- a/api_docs/kbn_core_security_server_internal.mdx +++ b/api_docs/kbn_core_security_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-internal title: "@kbn/core-security-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-internal'] --- import kbnCoreSecurityServerInternalObj from './kbn_core_security_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_mocks.devdocs.json b/api_docs/kbn_core_security_server_mocks.devdocs.json index 215a6b44c44fd..4708eeb9f6c18 100644 --- a/api_docs/kbn_core_security_server_mocks.devdocs.json +++ b/api_docs/kbn_core_security_server_mocks.devdocs.json @@ -312,7 +312,7 @@ "section": "def-common.AuthenticatedUser", "text": "AuthenticatedUser" }, - ", \"roles\"> & { roles: string[]; }>) => { username: string; enabled: boolean; metadata: { _reserved: boolean; _deprecated?: boolean | undefined; _deprecated_reason?: string | undefined; }; email: string; full_name: string; profile_uid: string; authentication_provider: ", + ", \"roles\"> & { roles: string[]; }>) => { username: string; enabled: boolean; metadata: { _reserved: boolean; _deprecated?: boolean | undefined; _deprecated_reason?: string | undefined; }; email: string; operator?: boolean | undefined; full_name: string; profile_uid: string; authentication_provider: ", { "pluginId": "@kbn/core-security-common", "scope": "common", diff --git a/api_docs/kbn_core_security_server_mocks.mdx b/api_docs/kbn_core_security_server_mocks.mdx index af698f43cb8c0..3a8767f0fee57 100644 --- a/api_docs/kbn_core_security_server_mocks.mdx +++ b/api_docs/kbn_core_security_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-mocks title: "@kbn/core-security-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-mocks'] --- import kbnCoreSecurityServerMocksObj from './kbn_core_security_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 968ba728ad4f4..15ae0990ba55f 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index e343f288eb9a2..de48b328de93c 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index bfb89bf975f5a..3aa2656fdee85 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index a737b79d3f5ba..53e98e6fd449c 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index ae97e67fb0870..3be556d44b8df 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index 8a02a9580c5f2..b30f806e1a669 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index a2b4375d91f5a..31a2cb448e2cf 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index 911958b64f6c9..e271219431866 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 9ec25179db891..a5e4b03527cb4 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index cec40d2fe58a9..06efacda34267 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 65fc9b6ef2294..5cc19976b5b78 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 8015c2037ecd5..9935c9a922526 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index aac24cc2b8797..e3a60ecf5b451 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index 5a6ef4545f06d..990039b112c6f 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index 8af2f1ec3fce1..f23c7067e94e8 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.devdocs.json b/api_docs/kbn_core_ui_settings_common.devdocs.json index 44c116985b70b..6ddd9dac5f601 100644 --- a/api_docs/kbn_core_ui_settings_common.devdocs.json +++ b/api_docs/kbn_core_ui_settings_common.devdocs.json @@ -610,7 +610,7 @@ }, { "plugin": "@kbn/management-settings-field-definition", - "path": "packages/kbn-management/settings/field_definition/get_definition.ts" + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/get_definition.ts" } ] }, diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index 03f68c1f67911..9cccdbe489fc9 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index 955b7c0888321..08f736f74d78a 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index ef649a85cf818..b023b81bd34d9 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index d302813051089..168e9a53e33f6 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index af698de3ef9b3..43539d7a88020 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index dd6adadc08ff9..a326f830f8c99 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index ea631910b93bb..f66d0fc664706 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser.mdx b/api_docs/kbn_core_user_profile_browser.mdx index 828142fa1f6e5..0ec597aeb9d19 100644 --- a/api_docs/kbn_core_user_profile_browser.mdx +++ b/api_docs/kbn_core_user_profile_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser title: "@kbn/core-user-profile-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser'] --- import kbnCoreUserProfileBrowserObj from './kbn_core_user_profile_browser.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_internal.mdx b/api_docs/kbn_core_user_profile_browser_internal.mdx index 83eded117948e..fc6702759a6ea 100644 --- a/api_docs/kbn_core_user_profile_browser_internal.mdx +++ b/api_docs/kbn_core_user_profile_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-internal title: "@kbn/core-user-profile-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-internal'] --- import kbnCoreUserProfileBrowserInternalObj from './kbn_core_user_profile_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_mocks.mdx b/api_docs/kbn_core_user_profile_browser_mocks.mdx index 3f10d256503f5..070cff1ecd9ab 100644 --- a/api_docs/kbn_core_user_profile_browser_mocks.mdx +++ b/api_docs/kbn_core_user_profile_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-mocks title: "@kbn/core-user-profile-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-mocks'] --- import kbnCoreUserProfileBrowserMocksObj from './kbn_core_user_profile_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_common.mdx b/api_docs/kbn_core_user_profile_common.mdx index dd8af1cabec67..d79d803b74299 100644 --- a/api_docs/kbn_core_user_profile_common.mdx +++ b/api_docs/kbn_core_user_profile_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-common title: "@kbn/core-user-profile-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-common'] --- import kbnCoreUserProfileCommonObj from './kbn_core_user_profile_common.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server.mdx b/api_docs/kbn_core_user_profile_server.mdx index 99c739e8a177b..e221147506eb1 100644 --- a/api_docs/kbn_core_user_profile_server.mdx +++ b/api_docs/kbn_core_user_profile_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server title: "@kbn/core-user-profile-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server'] --- import kbnCoreUserProfileServerObj from './kbn_core_user_profile_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_internal.mdx b/api_docs/kbn_core_user_profile_server_internal.mdx index 791f5e818e5d1..bb871891ef8ad 100644 --- a/api_docs/kbn_core_user_profile_server_internal.mdx +++ b/api_docs/kbn_core_user_profile_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-internal title: "@kbn/core-user-profile-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-internal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-internal'] --- import kbnCoreUserProfileServerInternalObj from './kbn_core_user_profile_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_mocks.mdx b/api_docs/kbn_core_user_profile_server_mocks.mdx index da9ff6c990cbe..4114e30d38652 100644 --- a/api_docs/kbn_core_user_profile_server_mocks.mdx +++ b/api_docs/kbn_core_user_profile_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-mocks title: "@kbn/core-user-profile-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-mocks'] --- import kbnCoreUserProfileServerMocksObj from './kbn_core_user_profile_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 0b86dd76cf67b..f6fed2d29af30 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index 5f612d4d57144..cf43111f13035 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index e23337554b692..fd99d14e31d5a 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 230823f25eff1..315a8ed64fb6b 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index 1b1780d005298..fcd5775268836 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index b31685f6774ca..d617489933ae2 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index c0be02f585d99..44bf964f2fc9b 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_forge.devdocs.json b/api_docs/kbn_data_forge.devdocs.json index 64194f08c3822..6a9ac3dd24c27 100644 --- a/api_docs/kbn_data_forge.devdocs.json +++ b/api_docs/kbn_data_forge.devdocs.json @@ -39,7 +39,7 @@ }, "; }) => Promise" ], - "path": "x-pack/packages/kbn-data-forge/src/cleanup.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/cleanup.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -50,7 +50,7 @@ "tags": [], "label": "{\n client,\n config: partialConfig,\n logger,\n}", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/cleanup.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/cleanup.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -64,7 +64,7 @@ "signature": [ "default" ], - "path": "x-pack/packages/kbn-data-forge/src/cleanup.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/cleanup.ts", "deprecated": false, "trackAdoption": false }, @@ -78,7 +78,7 @@ "signature": [ "{ elasticsearch?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; apiKey?: string | undefined; installKibanaUser?: boolean | undefined; } | undefined; kibana?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; installAssets?: boolean | undefined; } | undefined; indexing?: { dataset?: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\" | undefined; scenario?: string | undefined; interval?: number | undefined; eventsPerCycle?: number | undefined; payloadSize?: number | undefined; concurrency?: number | undefined; reduceWeekendTrafficBy?: number | undefined; ephemeralProjectIds?: number | undefined; alignEventsToInterval?: boolean | undefined; artificialIndexDelay?: number | undefined; } | undefined; schedule?: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[] | undefined; }" ], - "path": "x-pack/packages/kbn-data-forge/src/cleanup.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/cleanup.ts", "deprecated": false, "trackAdoption": false }, @@ -98,7 +98,7 @@ "text": "ToolingLog" } ], - "path": "x-pack/packages/kbn-data-forge/src/cleanup.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/cleanup.ts", "deprecated": false, "trackAdoption": false } @@ -120,7 +120,7 @@ "CliOptions", " | undefined) => Promise" ], - "path": "x-pack/packages/kbn-data-forge/src/cli.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/cli.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -135,7 +135,7 @@ "CliOptions", " | undefined" ], - "path": "x-pack/packages/kbn-data-forge/src/cli.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/cli.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -154,7 +154,7 @@ "signature": [ "(partialConfig: { elasticsearch?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; apiKey?: string | undefined; installKibanaUser?: boolean | undefined; } | undefined; kibana?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; installAssets?: boolean | undefined; } | undefined; indexing?: { dataset?: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\" | undefined; scenario?: string | undefined; interval?: number | undefined; eventsPerCycle?: number | undefined; payloadSize?: number | undefined; concurrency?: number | undefined; reduceWeekendTrafficBy?: number | undefined; ephemeralProjectIds?: number | undefined; alignEventsToInterval?: boolean | undefined; artificialIndexDelay?: number | undefined; } | undefined; schedule?: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[] | undefined; }) => { elasticsearch: { host: string; username: string; password: string; apiKey: string; installKibanaUser: boolean; }; kibana: { host: string; username: string; password: string; installAssets: boolean; }; indexing: { dataset: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\"; scenario: string; interval: number; eventsPerCycle: number; payloadSize: number; concurrency: number; reduceWeekendTrafficBy: number; ephemeralProjectIds: number; alignEventsToInterval: boolean; artificialIndexDelay: number; }; schedule: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[]; }" ], - "path": "x-pack/packages/kbn-data-forge/src/lib/create_config.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_config.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -168,7 +168,7 @@ "signature": [ "{ elasticsearch?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; apiKey?: string | undefined; installKibanaUser?: boolean | undefined; } | undefined; kibana?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; installAssets?: boolean | undefined; } | undefined; indexing?: { dataset?: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\" | undefined; scenario?: string | undefined; interval?: number | undefined; eventsPerCycle?: number | undefined; payloadSize?: number | undefined; concurrency?: number | undefined; reduceWeekendTrafficBy?: number | undefined; ephemeralProjectIds?: number | undefined; alignEventsToInterval?: boolean | undefined; artificialIndexDelay?: number | undefined; } | undefined; schedule?: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[] | undefined; }" ], - "path": "x-pack/packages/kbn-data-forge/src/lib/create_config.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_config.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -197,7 +197,7 @@ }, "; }) => Promise" ], - "path": "x-pack/packages/kbn-data-forge/src/generate.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/generate.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -208,7 +208,7 @@ "tags": [], "label": "{\n client,\n config: partialConfig,\n logger,\n}", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/generate.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/generate.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -222,7 +222,7 @@ "signature": [ "default" ], - "path": "x-pack/packages/kbn-data-forge/src/generate.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/generate.ts", "deprecated": false, "trackAdoption": false }, @@ -236,7 +236,7 @@ "signature": [ "{ elasticsearch?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; apiKey?: string | undefined; installKibanaUser?: boolean | undefined; } | undefined; kibana?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; installAssets?: boolean | undefined; } | undefined; indexing?: { dataset?: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\" | undefined; scenario?: string | undefined; interval?: number | undefined; eventsPerCycle?: number | undefined; payloadSize?: number | undefined; concurrency?: number | undefined; reduceWeekendTrafficBy?: number | undefined; ephemeralProjectIds?: number | undefined; alignEventsToInterval?: boolean | undefined; artificialIndexDelay?: number | undefined; } | undefined; schedule?: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[] | undefined; }" ], - "path": "x-pack/packages/kbn-data-forge/src/generate.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/generate.ts", "deprecated": false, "trackAdoption": false }, @@ -256,7 +256,7 @@ "text": "ToolingLog" } ], - "path": "x-pack/packages/kbn-data-forge/src/generate.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/generate.ts", "deprecated": false, "trackAdoption": false } @@ -276,7 +276,7 @@ "signature": [ "(filePath: string) => Promise<{ elasticsearch?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; apiKey?: string | undefined; installKibanaUser?: boolean | undefined; } | undefined; kibana?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; installAssets?: boolean | undefined; } | undefined; indexing?: { dataset?: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\" | undefined; scenario?: string | undefined; interval?: number | undefined; eventsPerCycle?: number | undefined; payloadSize?: number | undefined; concurrency?: number | undefined; reduceWeekendTrafficBy?: number | undefined; ephemeralProjectIds?: number | undefined; alignEventsToInterval?: boolean | undefined; artificialIndexDelay?: number | undefined; } | undefined; schedule?: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[] | undefined; }>" ], - "path": "x-pack/packages/kbn-data-forge/src/lib/create_config.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_config.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -290,7 +290,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-data-forge/src/lib/create_config.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_config.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -319,7 +319,7 @@ }, ") => Promise" ], - "path": "x-pack/packages/kbn-data-forge/src/run.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -333,7 +333,7 @@ "signature": [ "{ elasticsearch: { host: string; username: string; password: string; apiKey: string; installKibanaUser: boolean; }; kibana: { host: string; username: string; password: string; installAssets: boolean; }; indexing: { dataset: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\"; scenario: string; interval: number; eventsPerCycle: number; payloadSize: number; concurrency: number; reduceWeekendTrafficBy: number; ephemeralProjectIds: number; alignEventsToInterval: boolean; artificialIndexDelay: number; }; schedule: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[]; }" ], - "path": "x-pack/packages/kbn-data-forge/src/run.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -348,7 +348,7 @@ "signature": [ "default" ], - "path": "x-pack/packages/kbn-data-forge/src/run.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -369,7 +369,7 @@ "text": "ToolingLog" } ], - "path": "x-pack/packages/kbn-data-forge/src/run.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -392,7 +392,7 @@ "signature": [ "{ elasticsearch: { host: string; username: string; password: string; apiKey: string; installKibanaUser: boolean; }; kibana: { host: string; username: string; password: string; installAssets: boolean; }; indexing: { dataset: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\"; scenario: string; interval: number; eventsPerCycle: number; payloadSize: number; concurrency: number; reduceWeekendTrafficBy: number; ephemeralProjectIds: number; alignEventsToInterval: boolean; artificialIndexDelay: number; }; schedule: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[]; }" ], - "path": "x-pack/packages/kbn-data-forge/src/types/index.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -407,7 +407,7 @@ "signature": [ "\"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\"" ], - "path": "x-pack/packages/kbn-data-forge/src/types/index.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -422,7 +422,7 @@ "signature": [ "number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; })" ], - "path": "x-pack/packages/kbn-data-forge/src/types/index.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -437,7 +437,7 @@ "signature": [ "{ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; }" ], - "path": "x-pack/packages/kbn-data-forge/src/types/index.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -452,7 +452,7 @@ "signature": [ "{ elasticsearch?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; apiKey?: string | undefined; installKibanaUser?: boolean | undefined; } | undefined; kibana?: { host?: string | undefined; username?: string | undefined; password?: string | undefined; installAssets?: boolean | undefined; } | undefined; indexing?: { dataset?: \"fake_hosts\" | \"fake_logs\" | \"fake_stack\" | \"service.logs\" | undefined; scenario?: string | undefined; interval?: number | undefined; eventsPerCycle?: number | undefined; payloadSize?: number | undefined; concurrency?: number | undefined; reduceWeekendTrafficBy?: number | undefined; ephemeralProjectIds?: number | undefined; alignEventsToInterval?: boolean | undefined; artificialIndexDelay?: number | undefined; } | undefined; schedule?: ({ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; })[] | undefined; }" ], - "path": "x-pack/packages/kbn-data-forge/src/types/index.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -467,7 +467,7 @@ "signature": [ "{ template: string; start: string; end: string | boolean; } & { eventsPerCycle?: number | ({ start: number; end: number; method: \"linear\" | \"exp\" | \"sine\"; } & { options?: { period?: number | undefined; } | undefined; }) | undefined; interval?: number | undefined; delayInMinutes?: number | undefined; delayEveryMinutes?: number | undefined; randomness?: number | undefined; metrics?: ({ name: string; method: \"linear\" | \"exp\" | \"sine\"; start: number; end: number; } & { period?: number | undefined; randomness?: number | undefined; })[] | undefined; }" ], - "path": "x-pack/packages/kbn-data-forge/src/types/index.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -482,7 +482,7 @@ "signature": [ "\"linear\" | \"exp\" | \"sine\"" ], - "path": "x-pack/packages/kbn-data-forge/src/types/index.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -496,7 +496,7 @@ "tags": [], "label": "DEFAULTS", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -507,7 +507,7 @@ "tags": [], "label": "EVENTS_PER_CYCLE", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -518,7 +518,7 @@ "tags": [], "label": "PAYLOAD_SIZE", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -529,7 +529,7 @@ "tags": [], "label": "CONCURRENCY", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -540,7 +540,7 @@ "tags": [], "label": "SERVERLESS", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -551,7 +551,7 @@ "tags": [], "label": "INDEX_INTERVAL", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -562,7 +562,7 @@ "tags": [], "label": "DATASET", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -573,7 +573,7 @@ "tags": [], "label": "SCENARIO", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -584,7 +584,7 @@ "tags": [], "label": "ELASTICSEARCH_HOST", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -595,7 +595,7 @@ "tags": [], "label": "ELASTICSEARCH_USERNAME", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -606,7 +606,7 @@ "tags": [], "label": "ELASTICSEARCH_PASSWORD", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -617,7 +617,7 @@ "tags": [], "label": "ELASTICSEARCH_API_KEY", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -628,7 +628,7 @@ "tags": [], "label": "SKIP_KIBANA_USER", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -639,7 +639,7 @@ "tags": [], "label": "INSTALL_KIBANA_ASSETS", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -650,7 +650,7 @@ "tags": [], "label": "DELAY_IN_MINUTES", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -661,7 +661,7 @@ "tags": [], "label": "DELAY_EVERY_MINUTES", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -672,7 +672,7 @@ "tags": [], "label": "LOOKBACK", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -683,7 +683,7 @@ "tags": [], "label": "KIBANA_URL", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -694,7 +694,7 @@ "tags": [], "label": "KIBANA_USERNAME", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -705,7 +705,7 @@ "tags": [], "label": "KIBANA_PASSWORD", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -716,7 +716,7 @@ "tags": [], "label": "EVENT_TEMPLATE", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -727,7 +727,7 @@ "tags": [], "label": "REDUCE_WEEKEND_TRAFFIC_BY", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -738,7 +738,7 @@ "tags": [], "label": "EPHEMERAL_PROJECT_IDS", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -749,7 +749,7 @@ "tags": [], "label": "ALIGN_EVENTS_TO_INTERVAL", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -760,7 +760,7 @@ "tags": [], "label": "CARDINALITY", "description": [], - "path": "x-pack/packages/kbn-data-forge/src/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_data_forge.mdx b/api_docs/kbn_data_forge.mdx index 2feb4a4bed699..ec0ad816fee2d 100644 --- a/api_docs/kbn_data_forge.mdx +++ b/api_docs/kbn_data_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-forge title: "@kbn/data-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-forge plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-forge'] --- import kbnDataForgeObj from './kbn_data_forge.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index 6f21ad94849af..af666e05daa77 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_data_stream_adapter.devdocs.json b/api_docs/kbn_data_stream_adapter.devdocs.json index 66d9f0dbb0c2a..4e574c32850ff 100644 --- a/api_docs/kbn_data_stream_adapter.devdocs.json +++ b/api_docs/kbn_data_stream_adapter.devdocs.json @@ -34,7 +34,7 @@ "text": "IndexAdapter" } ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -56,7 +56,7 @@ }, ") => void" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -76,7 +76,7 @@ "text": "SetIndexTemplateParams" } ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -102,7 +102,7 @@ }, ") => Promise" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -122,7 +122,7 @@ "text": "InstallParams" } ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -157,7 +157,7 @@ "text": "IndexPatternAdapter" } ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -179,7 +179,7 @@ }, ") => void" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -199,7 +199,7 @@ "text": "SetIndexTemplateParams" } ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -233,7 +233,7 @@ }, ">" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -253,7 +253,7 @@ "text": "InstallParams" } ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -273,7 +273,7 @@ "signature": [ "(spaceId: string) => Promise" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -287,7 +287,7 @@ "signature": [ "string" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -305,7 +305,7 @@ "signature": [ "(spaceId: string) => Promise" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -319,7 +319,7 @@ "signature": [ "string" ], - "path": "packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts", + "path": "x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -350,7 +350,7 @@ }, "; attempt?: number | undefined; }) => Promise" ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -364,7 +364,7 @@ "signature": [ "() => Promise" ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -376,7 +376,7 @@ "tags": [], "label": "{ logger, attempt = 0 }", "description": [], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -396,7 +396,7 @@ "text": "Logger" } ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false }, @@ -410,7 +410,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false } @@ -429,7 +429,7 @@ "tags": [], "label": "AllowedValue", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -443,7 +443,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -457,7 +457,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false } @@ -471,7 +471,7 @@ "tags": [], "label": "EcsMetadata", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -492,7 +492,7 @@ }, "[] | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -503,7 +503,7 @@ "tags": [], "label": "dashed_name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -514,7 +514,7 @@ "tags": [], "label": "description", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -528,7 +528,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -542,7 +542,7 @@ "signature": [ "string | number | boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -553,7 +553,7 @@ "tags": [], "label": "flat_name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -567,7 +567,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -581,7 +581,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -592,7 +592,7 @@ "tags": [], "label": "level", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -613,7 +613,7 @@ }, "[] | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -624,7 +624,7 @@ "tags": [], "label": "name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -638,7 +638,7 @@ "signature": [ "string[]" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -652,7 +652,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -666,7 +666,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -677,7 +677,7 @@ "tags": [], "label": "short", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -688,7 +688,7 @@ "tags": [], "label": "type", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -702,7 +702,7 @@ "signature": [ "Record | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false } @@ -716,7 +716,7 @@ "tags": [], "label": "InstallParams", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -736,7 +736,7 @@ "text": "Logger" } ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -765,7 +765,7 @@ }, ">" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -780,7 +780,7 @@ "Subject", "" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -794,7 +794,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false } @@ -808,7 +808,7 @@ "tags": [], "label": "MultiField", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -819,7 +819,7 @@ "tags": [], "label": "flat_name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -830,7 +830,7 @@ "tags": [], "label": "name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -841,7 +841,7 @@ "tags": [], "label": "type", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false } @@ -869,7 +869,7 @@ }, "[] | undefined; index?: boolean | undefined; path?: string | undefined; scaling_factor?: number | undefined; dynamic?: boolean | \"strict\" | undefined; properties?: Record | undefined; inference_id?: string | undefined; copy_to?: string | undefined; }; }" ], - "path": "packages/kbn-index-adapter/src/field_maps/ecs_field_map.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/ecs_field_map.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -892,7 +892,7 @@ }, "[] | undefined; index?: boolean | undefined; path?: string | undefined; scaling_factor?: number | undefined; dynamic?: boolean | \"strict\" | undefined; properties?: Record | undefined; inference_id?: string | undefined; copy_to?: string | undefined; }; }" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -915,7 +915,7 @@ }, ", keyof NonNullable>}` : `${Key}` : never" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -930,7 +930,7 @@ "signature": [ "GetComponentTemplateOpts" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -947,7 +947,7 @@ "IndicesPutIndexTemplateIndexTemplateMapping", " | undefined; componentTemplateRefs?: string[] | undefined; isDataStream?: boolean | undefined; }" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -972,7 +972,7 @@ }, "[] | undefined; index?: boolean | undefined; path?: string | undefined; scaling_factor?: number | undefined; dynamic?: boolean | \"strict\" | undefined; properties?: Record | undefined; inference_id?: string | undefined; copy_to?: string | undefined; }; }" ], - "path": "packages/kbn-index-adapter/src/field_maps/ecs_field_map.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/ecs_field_map.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_data_stream_adapter.mdx b/api_docs/kbn_data_stream_adapter.mdx index 05cfd5ec31920..37cc9d3f683ed 100644 --- a/api_docs/kbn_data_stream_adapter.mdx +++ b/api_docs/kbn_data_stream_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-stream-adapter title: "@kbn/data-stream-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-stream-adapter plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-stream-adapter'] --- import kbnDataStreamAdapterObj from './kbn_data_stream_adapter.devdocs.json'; diff --git a/api_docs/kbn_data_view_utils.mdx b/api_docs/kbn_data_view_utils.mdx index cb9cccfb17deb..55b0d1f19c45b 100644 --- a/api_docs/kbn_data_view_utils.mdx +++ b/api_docs/kbn_data_view_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-view-utils title: "@kbn/data-view-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-view-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-view-utils'] --- import kbnDataViewUtilsObj from './kbn_data_view_utils.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 35014b0edd438..8f286d0b271fd 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index 2e2fce64e82fc..8efb629058036 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.devdocs.json b/api_docs/kbn_deeplinks_devtools.devdocs.json index afefcb2c8d084..4b25e29049b8a 100644 --- a/api_docs/kbn_deeplinks_devtools.devdocs.json +++ b/api_docs/kbn_deeplinks_devtools.devdocs.json @@ -32,7 +32,7 @@ "signature": [ "\"dev_tools\"" ], - "path": "packages/deeplinks/devtools/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/devtools/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -47,7 +47,7 @@ "signature": [ "\"dev_tools\" | \"dev_tools:console\" | \"dev_tools:searchprofiler\" | \"dev_tools:painless_lab\" | \"dev_tools:grokdebugger\"" ], - "path": "packages/deeplinks/devtools/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/devtools/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -69,7 +69,7 @@ }, "[]" ], - "path": "packages/deeplinks/devtools/constants.ts", + "path": "src/platform/packages/shared/deeplinks/devtools/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -84,7 +84,7 @@ "signature": [ "\"dev_tools\"" ], - "path": "packages/deeplinks/devtools/constants.ts", + "path": "src/platform/packages/shared/deeplinks/devtools/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -99,7 +99,7 @@ "signature": [ "\"console\" | \"searchprofiler\" | \"painless_lab\" | \"grokdebugger\"" ], - "path": "packages/deeplinks/devtools/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/devtools/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index 6218b621946d6..f6249e8b0df5d 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_fleet.mdx b/api_docs/kbn_deeplinks_fleet.mdx index b24ee1dfcb045..031eabc8b904d 100644 --- a/api_docs/kbn_deeplinks_fleet.mdx +++ b/api_docs/kbn_deeplinks_fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-fleet title: "@kbn/deeplinks-fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-fleet plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-fleet'] --- import kbnDeeplinksFleetObj from './kbn_deeplinks_fleet.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.devdocs.json b/api_docs/kbn_deeplinks_management.devdocs.json index 379adac0327dc..ad7ee4596f7c2 100644 --- a/api_docs/kbn_deeplinks_management.devdocs.json +++ b/api_docs/kbn_deeplinks_management.devdocs.json @@ -32,7 +32,7 @@ "signature": [ "\"monitoring\" | \"management\" | \"integrations\"" ], - "path": "packages/deeplinks/management/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/management/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -47,7 +47,7 @@ "signature": [ "\"fleet\" | \"monitoring\" | \"management\" | \"integrations\" | \"osquery\" | \"management:transform\" | \"management:watcher\" | \"management:cases\" | \"management:tags\" | \"management:maintenanceWindows\" | \"management:cross_cluster_replication\" | \"management:dataViews\" | \"management:spaces\" | \"management:settings\" | \"management:users\" | \"management:migrate_data\" | \"management:search_sessions\" | \"management:data_quality\" | \"management:filesManagement\" | \"management:pipelines\" | \"management:roles\" | \"management:reporting\" | \"management:aiAssistantManagementSelection\" | \"management:securityAiAssistantManagement\" | \"management:observabilityAiAssistantManagement\" | \"management:api_keys\" | \"management:license_management\" | \"management:index_lifecycle_management\" | \"management:index_management\" | \"management:ingest_pipelines\" | \"management:jobsListLink\" | \"management:objects\" | \"management:remote_clusters\" | \"management:role_mappings\" | \"management:rollup_jobs\" | \"management:snapshot_restore\" | \"management:triggersActions\" | \"management:triggersActionsConnectors\" | \"management:upgrade_assistant\"" ], - "path": "packages/deeplinks/management/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/management/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -62,7 +62,7 @@ "signature": [ "\"transform\" | \"watcher\" | \"cases\" | \"tags\" | \"maintenanceWindows\" | \"cross_cluster_replication\" | \"dataViews\" | \"spaces\" | \"settings\" | \"users\" | \"migrate_data\" | \"search_sessions\" | \"data_quality\" | \"filesManagement\" | \"pipelines\" | \"roles\" | \"reporting\" | \"aiAssistantManagementSelection\" | \"securityAiAssistantManagement\" | \"observabilityAiAssistantManagement\" | \"api_keys\" | \"license_management\" | \"index_lifecycle_management\" | \"index_management\" | \"ingest_pipelines\" | \"jobsListLink\" | \"objects\" | \"remote_clusters\" | \"role_mappings\" | \"rollup_jobs\" | \"snapshot_restore\" | \"triggersActions\" | \"triggersActionsConnectors\" | \"upgrade_assistant\"" ], - "path": "packages/deeplinks/management/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/management/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -77,7 +77,7 @@ "signature": [ "\"monitoring\"" ], - "path": "packages/deeplinks/management/constants.ts", + "path": "src/platform/packages/shared/deeplinks/management/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index 5bcfb2b802902..39faa6e8b166d 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index af32b698c4d59..77111ec128ee6 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.devdocs.json b/api_docs/kbn_deeplinks_observability.devdocs.json index 820e8efc49cb6..a216bffd5c68d 100644 --- a/api_docs/kbn_deeplinks_observability.devdocs.json +++ b/api_docs/kbn_deeplinks_observability.devdocs.json @@ -44,7 +44,7 @@ "text": "SerializableRecord" } ], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -55,7 +55,7 @@ "tags": [], "label": "dataStream", "description": [], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false }, @@ -69,7 +69,7 @@ "signature": [ "TimeRangeConfig | undefined" ], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false }, @@ -83,7 +83,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false }, @@ -97,7 +97,7 @@ "signature": [ "{ table?: DegradedFieldsTable | undefined; } | undefined" ], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false }, @@ -111,7 +111,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false }, @@ -125,7 +125,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false } @@ -156,7 +156,7 @@ "text": "SerializableRecord" } ], - "path": "packages/deeplinks/observability/locators/dataset_quality.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -170,7 +170,7 @@ "signature": [ "Filters | undefined" ], - "path": "packages/deeplinks/observability/locators/dataset_quality.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality.ts", "deprecated": false, "trackAdoption": false } @@ -201,7 +201,7 @@ "text": "LogsExplorerNavigationParams" } ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -217,7 +217,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false } @@ -248,7 +248,7 @@ "text": "SerializableRecord" } ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -271,7 +271,7 @@ }, " | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false }, @@ -294,7 +294,7 @@ }, " | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false }, @@ -325,7 +325,7 @@ }, " | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false }, @@ -348,7 +348,7 @@ }, "[] | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false }, @@ -371,7 +371,7 @@ }, "[] | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false }, @@ -394,7 +394,7 @@ }, " | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false }, @@ -410,7 +410,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false } @@ -441,7 +441,7 @@ "text": "SerializableRecord" } ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -455,7 +455,7 @@ "signature": [ "{ id: \"application-log-onboarding\"; } | undefined" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false } @@ -486,7 +486,7 @@ "text": "SerializableRecord" } ], - "path": "packages/deeplinks/observability/locators/observability_onboarding.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_onboarding.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -502,7 +502,7 @@ "signature": [ "\"kubernetes\" | \"auto-detect\" | \"customLogs\" | \"otel-logs\" | \"firehose\" | undefined" ], - "path": "packages/deeplinks/observability/locators/observability_onboarding.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_onboarding.ts", "deprecated": false, "trackAdoption": false }, @@ -516,7 +516,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/observability_onboarding.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_onboarding.ts", "deprecated": false, "trackAdoption": false } @@ -547,7 +547,7 @@ "text": "DatasetLocatorParams" } ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -560,7 +560,7 @@ "description": [ "\nData view id to select" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false } @@ -591,7 +591,7 @@ "text": "DatasetLocatorParams" } ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -607,7 +607,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false }, @@ -620,7 +620,7 @@ "description": [ "\nDataset name to be selected.\nex: system.syslog" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false } @@ -651,7 +651,7 @@ "text": "SerializableRecord" } ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -665,7 +665,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false }, @@ -679,7 +679,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false }, @@ -693,7 +693,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false }, @@ -707,7 +707,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false } @@ -738,7 +738,7 @@ "text": "SerializableRecord" } ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -752,7 +752,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false }, @@ -766,7 +766,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false }, @@ -780,7 +780,7 @@ "signature": [ "string | undefined" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false } @@ -800,7 +800,7 @@ "signature": [ "\"observabilityAIAssistant\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -815,7 +815,7 @@ "signature": [ "\"ALL_DATASETS_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -844,7 +844,7 @@ "text": "ObservabilityLogsExplorerLocationState" } ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -857,9 +857,9 @@ "label": "AppId", "description": [], "signature": [ - "\"profiling\" | \"metrics\" | \"apm\" | \"synthetics\" | \"ux\" | \"logs\" | \"slo\" | \"observabilityAIAssistant\" | \"observability-overview\" | \"streams\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\" | \"inventory\"" + "\"profiling\" | \"metrics\" | \"apm\" | \"synthetics\" | \"ux\" | \"logs\" | \"slo\" | \"observabilityAIAssistant\" | \"observability-overview\" | \"streams\" | \"inventory\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\"" ], - "path": "packages/deeplinks/observability/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/observability/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -874,7 +874,7 @@ "signature": [ "\"DATA_QUALITY_DETAILS_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/dataset_quality_details.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -889,7 +889,7 @@ "signature": [ "\"DATA_QUALITY_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/dataset_quality.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/dataset_quality.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -918,7 +918,7 @@ "text": "ObservabilityLogsExplorerLocationState" } ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -940,7 +940,7 @@ }, " | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:alerts\" | \"observability-overview:rules\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:assetDetails\" | \"apm:services\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:service-groups-list\" | \"apm:storage-explorer\" | \"synthetics:overview\" | \"synthetics:certificates\" | \"profiling:functions\" | \"profiling:stacktraces\" | \"profiling:flamegraphs\" | \"inventory:datastreams\" | \"streams:overview\"" ], - "path": "packages/deeplinks/observability/deep_links.ts", + "path": "src/platform/packages/shared/deeplinks/observability/deep_links.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -955,7 +955,7 @@ "signature": [ "{ type: \"document-field\"; field: string; width?: number | undefined; }" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -978,7 +978,7 @@ }, " | undefined; }" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1007,7 +1007,7 @@ "text": "SmartFieldGridColumnOptions" } ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1022,7 +1022,7 @@ "signature": [ "\"last-used-logs-viewer\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1037,7 +1037,7 @@ "signature": [ "{ mode: \"include\"; values: string[]; }" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1052,7 +1052,7 @@ "signature": [ "\"logs\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1067,7 +1067,7 @@ "signature": [ "\"LOGS_EXPLORER_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1082,7 +1082,7 @@ "signature": [ "\"profiling\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1097,7 +1097,7 @@ "signature": [ "\"ux\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1112,7 +1112,7 @@ "signature": [ "\"OBS_LOGS_EXPLORER_DATA_VIEW_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1127,7 +1127,7 @@ "signature": [ "\"obs-logs-explorer:lastUsedViewer\"" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1142,7 +1142,7 @@ "signature": [ "\"observability-logs-explorer\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1157,7 +1157,7 @@ "signature": [ "\"observabilityOnboarding\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1172,7 +1172,7 @@ "signature": [ "\"OBSERVABILITY_ONBOARDING_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/observability_onboarding.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_onboarding.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1187,7 +1187,7 @@ "signature": [ "\"observability-overview\"" ], - "path": "packages/deeplinks/observability/constants.ts", + "path": "src/platform/packages/shared/deeplinks/observability/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1202,7 +1202,7 @@ "signature": [ "{ pause: boolean; value: number; }" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1217,7 +1217,7 @@ "signature": [ "\"SINGLE_DATASET_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/observability_logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1232,7 +1232,7 @@ "signature": [ "{ type: \"smart-field\"; smartField: \"content\" | \"resource\"; width?: number | undefined; }" ], - "path": "packages/deeplinks/observability/locators/logs_explorer.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1247,7 +1247,7 @@ "signature": [ "\"UPTIME_OVERVIEW_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index 0047fe3a09f97..7d21ec5d154e9 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index b3b2a6acac31f..e4e1cf2494891 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_security.mdx b/api_docs/kbn_deeplinks_security.mdx index c43fa4a74365a..b03528ddb2e6d 100644 --- a/api_docs/kbn_deeplinks_security.mdx +++ b/api_docs/kbn_deeplinks_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-security title: "@kbn/deeplinks-security" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-security plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-security'] --- import kbnDeeplinksSecurityObj from './kbn_deeplinks_security.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_shared.mdx b/api_docs/kbn_deeplinks_shared.mdx index 83acd15dc1054..9103385db0a90 100644 --- a/api_docs/kbn_deeplinks_shared.mdx +++ b/api_docs/kbn_deeplinks_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-shared title: "@kbn/deeplinks-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-shared plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-shared'] --- import kbnDeeplinksSharedObj from './kbn_deeplinks_shared.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index db7b2f78fd2f0..2cf44364492de 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.devdocs.json b/api_docs/kbn_default_nav_devtools.devdocs.json index bcd3e3cd3f355..c43ca62e92353 100644 --- a/api_docs/kbn_default_nav_devtools.devdocs.json +++ b/api_docs/kbn_default_nav_devtools.devdocs.json @@ -95,7 +95,7 @@ }, ">[]; }" ], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -110,7 +110,7 @@ "signature": [ "\"root\" | \"rootNav:devtools\"" ], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -124,7 +124,7 @@ "tags": [], "label": "defaultNavigation", "description": [], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -135,7 +135,7 @@ "tags": [], "label": "title", "description": [], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -149,7 +149,7 @@ "signature": [ "\"rootNav:devtools\"" ], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -160,7 +160,7 @@ "tags": [], "label": "icon", "description": [], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -174,7 +174,7 @@ "signature": [ "\"accordion\"" ], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -188,7 +188,7 @@ "signature": [ "({ link: \"dev_tools:console\"; } | { link: \"dev_tools:searchprofiler\"; } | { link: \"dev_tools:grokdebugger\"; } | { link: \"dev_tools:painless_lab\"; })[]" ], - "path": "packages/default-nav/devtools/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/devtools/default_navigation.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index 55d16c3017982..ffc047c250219 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.devdocs.json b/api_docs/kbn_default_nav_management.devdocs.json index 601fbb8252081..66c1fcb6a18e5 100644 --- a/api_docs/kbn_default_nav_management.devdocs.json +++ b/api_docs/kbn_default_nav_management.devdocs.json @@ -95,7 +95,7 @@ }, ">[]; }" ], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -110,7 +110,7 @@ "signature": [ "\"ingest\" | \"kibana\" | \"data\" | \"root\" | \"rootNav:management\" | \"integration_management\" | \"stack_management\" | \"alerts_and_insights\"" ], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -124,7 +124,7 @@ "tags": [], "label": "defaultNavigation", "description": [], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -138,7 +138,7 @@ "signature": [ "\"rootNav:management\"" ], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -149,7 +149,7 @@ "tags": [], "label": "title", "description": [], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -160,7 +160,7 @@ "tags": [], "label": "icon", "description": [], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -174,7 +174,7 @@ "signature": [ "\"accordion\"" ], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false }, @@ -188,7 +188,7 @@ "signature": [ "({ link: \"monitoring\"; } | { id: \"integration_management\"; title: string; renderAs: \"accordion\"; children: ({ link: \"integrations\"; } | { link: \"fleet\"; } | { link: \"osquery\"; })[]; } | { id: \"stack_management\"; title: string; renderAs: \"accordion\"; children: ({ id: \"ingest\"; title: string; renderAs: \"accordion\"; children: ({ link: \"management:ingest_pipelines\"; } | { link: \"management:pipelines\"; })[]; } | { id: \"data\"; title: string; renderAs: \"accordion\"; children: ({ link: \"management:index_management\"; } | { link: \"management:transform\"; })[]; } | { id: \"alerts_and_insights\"; title: string; renderAs: \"accordion\"; children: ({ link: \"management:triggersActions\"; } | { link: \"management:cases\"; } | { link: \"management:triggersActionsConnectors\"; } | { link: \"management:jobsListLink\"; })[]; } | { id: \"kibana\"; title: string; renderAs: \"accordion\"; children: ({ link: \"management:dataViews\"; } | { link: \"management:aiAssistantManagementSelection\"; } | { link: \"management:objects\"; } | { link: \"management:tags\"; } | { link: \"management:spaces\"; } | { link: \"management:settings\"; })[]; })[]; })[]" ], - "path": "packages/default-nav/management/default_navigation.ts", + "path": "src/platform/packages/private/default-nav/management/default_navigation.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index 6c8b9026a4f9d..0c94aa8e5e69b 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index bdcd160265547..030fb509ead5f 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 866e5088336f3..5f0bdc44c5f04 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index 55746584265c7..3ce913983f44e 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index 184adee02717f..8525f780d5d68 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 3ad4e255b7699..6280f80fece7c 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_contextual_components.mdx b/api_docs/kbn_discover_contextual_components.mdx index 17f27301f23ad..ba787263fa352 100644 --- a/api_docs/kbn_discover_contextual_components.mdx +++ b/api_docs/kbn_discover_contextual_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-contextual-components title: "@kbn/discover-contextual-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-contextual-components plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-contextual-components'] --- import kbnDiscoverContextualComponentsObj from './kbn_discover_contextual_components.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.devdocs.json b/api_docs/kbn_discover_utils.devdocs.json index 9bba66acba184..c674ad6ee7279 100644 --- a/api_docs/kbn_discover_utils.devdocs.json +++ b/api_docs/kbn_discover_utils.devdocs.json @@ -2439,7 +2439,7 @@ "section": "def-common.AppMenuControlOnClickParams", "text": "AppMenuControlOnClickParams" }, - ") => void | React.ReactNode) | undefined; } & { iconType: \"string\" | \"number\" | \"function\" | \"key\" | \"namespace\" | \"error\" | \"filter\" | \"search\" | \"link\" | \"at\" | \"nested\" | \"ip\" | \"push\" | \"list\" | \"cluster\" | \"eql\" | \"index\" | \"unlink\" | \"alert\" | \"color\" | \"grid\" | \"aggregate\" | \"warning\" | \"annotation\" | \"memory\" | \"stop\" | \"stats\" | \"mobile\" | \"article\" | \"menu\" | \"image\" | \"download\" | \"document\" | \"email\" | \"copy\" | \"move\" | \"merge\" | \"partial\" | \"container\" | \"user\" | \"pause\" | \"share\" | \"home\" | \"spaces\" | \"package\" | \"tag\" | \"beta\" | \"users\" | \"brush\" | \"percent\" | \"temperature\" | \"accessibility\" | \"addDataApp\" | \"advancedSettingsApp\" | \"agentApp\" | \"analyzeEvent\" | \"anomalyChart\" | \"anomalySwimLane\" | \"apmApp\" | \"apmTrace\" | \"appSearchApp\" | \"apps\" | \"arrowDown\" | \"arrowLeft\" | \"arrowRight\" | \"arrowUp\" | \"arrowStart\" | \"arrowEnd\" | \"asterisk\" | \"auditbeatApp\" | \"beaker\" | \"bell\" | \"bellSlash\" | \"bolt\" | \"boxesHorizontal\" | \"boxesVertical\" | \"branch\" | \"branchUser\" | \"broom\" | \"bug\" | \"bullseye\" | \"calendar\" | \"canvasApp\" | \"casesApp\" | \"changePointDetection\" | \"check\" | \"checkInCircleFilled\" | \"cheer\" | \"classificationJob\" | \"clickLeft\" | \"clickRight\" | \"clock\" | \"clockCounter\" | \"cloudDrizzle\" | \"cloudStormy\" | \"cloudSunny\" | \"codeApp\" | \"compute\" | \"console\" | \"consoleApp\" | \"continuityAbove\" | \"continuityAboveBelow\" | \"continuityBelow\" | \"continuityWithin\" | \"controlsHorizontal\" | \"controlsVertical\" | \"copyClipboard\" | \"createAdvancedJob\" | \"createMultiMetricJob\" | \"createPopulationJob\" | \"createSingleMetricJob\" | \"cross\" | \"crossClusterReplicationApp\" | \"crossInCircle\" | \"crosshairs\" | \"currency\" | \"cut\" | \"dashboardApp\" | \"dataVisualizer\" | \"database\" | \"desktop\" | \"devToolsApp\" | \"diff\" | \"discoverApp\" | \"discuss\" | \"documentEdit\" | \"documentation\" | \"documents\" | \"dot\" | \"dotInCircle\" | \"doubleArrowLeft\" | \"doubleArrowRight\" | \"editorAlignCenter\" | \"editorAlignLeft\" | \"editorAlignRight\" | \"editorBold\" | \"editorChecklist\" | \"editorCodeBlock\" | \"editorComment\" | \"editorDistributeHorizontal\" | \"editorDistributeVertical\" | \"editorHeading\" | \"editorItalic\" | \"editorItemAlignBottom\" | \"editorItemAlignCenter\" | \"editorItemAlignLeft\" | \"editorItemAlignMiddle\" | \"editorItemAlignRight\" | \"editorItemAlignTop\" | \"editorLink\" | \"editorOrderedList\" | \"editorPositionBottomLeft\" | \"editorPositionBottomRight\" | \"editorPositionTopLeft\" | \"editorPositionTopRight\" | \"editorRedo\" | \"editorStrike\" | \"editorTable\" | \"editorUnderline\" | \"editorUndo\" | \"editorUnorderedList\" | \"empty\" | \"emsApp\" | \"endpoint\" | \"eraser\" | \"errorFilled\" | \"esqlVis\" | \"exit\" | \"expand\" | \"expandMini\" | \"exportAction\" | \"eye\" | \"eyeClosed\" | \"faceHappy\" | \"faceNeutral\" | \"faceSad\" | \"fieldStatistics\" | \"filebeatApp\" | \"filterExclude\" | \"filterIgnore\" | \"filterInclude\" | \"filterInCircle\" | \"flag\" | \"fleetApp\" | \"fold\" | \"folderCheck\" | \"folderClosed\" | \"folderExclamation\" | \"folderOpen\" | \"frameNext\" | \"framePrevious\" | \"fullScreen\" | \"fullScreenExit\" | \"gear\" | \"gisApp\" | \"glasses\" | \"globe\" | \"grab\" | \"grabHorizontal\" | \"grabOmnidirectional\" | \"gradient\" | \"graphApp\" | \"grokApp\" | \"heart\" | \"heartbeatApp\" | \"heatmap\" | \"help\" | \"iInCircle\" | \"importAction\" | \"indexClose\" | \"indexEdit\" | \"indexFlush\" | \"indexManagementApp\" | \"indexMapping\" | \"indexOpen\" | \"indexPatternApp\" | \"indexRollupApp\" | \"indexRuntime\" | \"indexSettings\" | \"indexTemporary\" | \"infinity\" | \"inputOutput\" | \"inspect\" | \"invert\" | \"keyboard\" | \"kqlField\" | \"kqlFunction\" | \"kqlOperand\" | \"kqlSelector\" | \"kqlValue\" | \"kubernetesNode\" | \"kubernetesPod\" | \"launch\" | \"layers\" | \"lensApp\" | \"lettering\" | \"lineDashed\" | \"lineDotted\" | \"lineSolid\" | \"listAdd\" | \"lock\" | \"lockOpen\" | \"logPatternAnalysis\" | \"logRateAnalysis\" | \"logoAWS\" | \"logoAWSMono\" | \"logoAerospike\" | \"logoApache\" | \"logoAppSearch\" | \"logoAzure\" | \"logoAzureMono\" | \"logoBeats\" | \"logoBusinessAnalytics\" | \"logoCeph\" | \"logoCloud\" | \"logoCloudEnterprise\" | \"logoCode\" | \"logoCodesandbox\" | \"logoCouchbase\" | \"logoDocker\" | \"logoDropwizard\" | \"logoElastic\" | \"logoElasticStack\" | \"logoElasticsearch\" | \"logoEnterpriseSearch\" | \"logoEtcd\" | \"logoGCP\" | \"logoGCPMono\" | \"logoGithub\" | \"logoGmail\" | \"logoGolang\" | \"logoGoogleG\" | \"logoHAproxy\" | \"logoIBM\" | \"logoIBMMono\" | \"logoKafka\" | \"logoKibana\" | \"logoKubernetes\" | \"logoLogging\" | \"logoLogstash\" | \"logoMaps\" | \"logoMemcached\" | \"logoMetrics\" | \"logoMongodb\" | \"logoMySQL\" | \"logoNginx\" | \"logoObservability\" | \"logoOsquery\" | \"logoPhp\" | \"logoPostgres\" | \"logoPrometheus\" | \"logoRabbitmq\" | \"logoRedis\" | \"logoSecurity\" | \"logoSiteSearch\" | \"logoSketch\" | \"logoSlack\" | \"logoUptime\" | \"logoVulnerabilityManagement\" | \"logoWebhook\" | \"logoWindows\" | \"logoWorkplaceSearch\" | \"logsApp\" | \"logstashFilter\" | \"logstashIf\" | \"logstashInput\" | \"logstashOutput\" | \"logstashQueue\" | \"machineLearningApp\" | \"magnet\" | \"magnifyWithExclamation\" | \"magnifyWithMinus\" | \"magnifyWithPlus\" | \"managementApp\" | \"mapMarker\" | \"menuDown\" | \"menuLeft\" | \"menuRight\" | \"menuUp\" | \"metricbeatApp\" | \"metricsApp\" | \"minimize\" | \"minus\" | \"minusInCircle\" | \"minusInCircleFilled\" | \"minusInSquare\" | \"monitoringApp\" | \"moon\" | \"newChat\" | \"node\" | \"notebookApp\" | \"offline\" | \"online\" | \"outlierDetectionJob\" | \"packetbeatApp\" | \"pageSelect\" | \"pagesSelect\" | \"palette\" | \"paperClip\" | \"payment\" | \"pencil\" | \"pin\" | \"pinFilled\" | \"pipeBreaks\" | \"pipelineApp\" | \"pipeNoBreaks\" | \"pivot\" | \"play\" | \"playFilled\" | \"plus\" | \"plusInCircle\" | \"plusInCircleFilled\" | \"plusInSquare\" | \"popout\" | \"questionInCircle\" | \"quote\" | \"recentlyViewedApp\" | \"refresh\" | \"regressionJob\" | \"reporter\" | \"reportingApp\" | \"returnKey\" | \"save\" | \"savedObjectsApp\" | \"scale\" | \"searchProfilerApp\" | \"securityAnalyticsApp\" | \"securityApp\" | \"securitySignal\" | \"securitySignalDetected\" | \"securitySignalResolved\" | \"sessionViewer\" | \"shard\" | \"singleMetricViewer\" | \"snowflake\" | \"sortAscending\" | \"sortDescending\" | \"sortDown\" | \"sortLeft\" | \"sortRight\" | \"sortUp\" | \"sortable\" | \"spacesApp\" | \"sparkles\" | \"sqlApp\" | \"starEmpty\" | \"starEmptySpace\" | \"starFilled\" | \"starFilledSpace\" | \"starMinusEmpty\" | \"starMinusFilled\" | \"starPlusEmpty\" | \"starPlusFilled\" | \"stopFilled\" | \"stopSlash\" | \"storage\" | \"submodule\" | \"sun\" | \"swatchInput\" | \"symlink\" | \"tableDensityCompact\" | \"tableDensityExpanded\" | \"tableDensityNormal\" | \"tableOfContents\" | \"tear\" | \"timeline\" | \"timelineWithArrow\" | \"timelionApp\" | \"timeRefresh\" | \"timeslider\" | \"training\" | \"transitionLeftIn\" | \"transitionLeftOut\" | \"transitionTopIn\" | \"transitionTopOut\" | \"trash\" | \"unfold\" | \"upgradeAssistantApp\" | \"uptimeApp\" | \"userAvatar\" | \"usersRolesApp\" | \"vector\" | \"videoPlayer\" | \"visArea\" | \"visAreaStacked\" | \"visBarHorizontal\" | \"visBarHorizontalStacked\" | \"visBarVertical\" | \"visBarVerticalStacked\" | \"visGauge\" | \"visGoal\" | \"visLine\" | \"visMapCoordinate\" | \"visMapRegion\" | \"visMetric\" | \"visPie\" | \"visTable\" | \"visTagCloud\" | \"visText\" | \"visTimelion\" | \"visVega\" | \"visVisualBuilder\" | \"visualizeApp\" | \"vulnerabilityManagementApp\" | \"warningFilled\" | \"watchesApp\" | \"wordWrap\" | \"wordWrapDisabled\" | \"workplaceSearchApp\" | \"wrench\" | \"tokenAlias\" | \"tokenAnnotation\" | \"tokenArray\" | \"tokenBinary\" | \"tokenBoolean\" | \"tokenClass\" | \"tokenCompletionSuggester\" | \"tokenConstant\" | \"tokenDate\" | \"tokenDimension\" | \"tokenElement\" | \"tokenEnum\" | \"tokenEnumMember\" | \"tokenEvent\" | \"tokenException\" | \"tokenField\" | \"tokenFile\" | \"tokenFlattened\" | \"tokenFunction\" | \"tokenGeo\" | \"tokenHistogram\" | \"tokenInterface\" | \"tokenIP\" | \"tokenJoin\" | \"tokenKey\" | \"tokenKeyword\" | \"tokenMethod\" | \"tokenMetricCounter\" | \"tokenMetricGauge\" | \"tokenModule\" | \"tokenNamespace\" | \"tokenNested\" | \"tokenNull\" | \"tokenNumber\" | \"tokenObject\" | \"tokenOperator\" | \"tokenPackage\" | \"tokenParameter\" | \"tokenPercolator\" | \"tokenProperty\" | \"tokenRange\" | \"tokenRankFeature\" | \"tokenRankFeatures\" | \"tokenRepo\" | \"tokenSearchType\" | \"tokenSemanticText\" | \"tokenShape\" | \"tokenString\" | \"tokenStruct\" | \"tokenSymbol\" | \"tokenTag\" | \"tokenText\" | \"tokenTokenCount\" | \"tokenVariable\" | \"tokenVectorDense\" | \"tokenDenseVector\" | \"tokenVectorSparse\"; }" + ") => void | React.ReactNode) | undefined; } & { iconType: \"string\" | \"number\" | \"function\" | \"key\" | \"namespace\" | \"error\" | \"filter\" | \"search\" | \"link\" | \"at\" | \"nested\" | \"ip\" | \"push\" | \"list\" | \"cluster\" | \"eql\" | \"index\" | \"unlink\" | \"alert\" | \"color\" | \"grid\" | \"aggregate\" | \"warning\" | \"annotation\" | \"memory\" | \"stats\" | \"mobile\" | \"article\" | \"menu\" | \"image\" | \"stop\" | \"download\" | \"document\" | \"email\" | \"copy\" | \"move\" | \"merge\" | \"partial\" | \"container\" | \"user\" | \"pause\" | \"share\" | \"home\" | \"spaces\" | \"package\" | \"tag\" | \"beta\" | \"users\" | \"brush\" | \"percent\" | \"temperature\" | \"accessibility\" | \"addDataApp\" | \"advancedSettingsApp\" | \"agentApp\" | \"analyzeEvent\" | \"anomalyChart\" | \"anomalySwimLane\" | \"apmApp\" | \"apmTrace\" | \"appSearchApp\" | \"apps\" | \"arrowDown\" | \"arrowLeft\" | \"arrowRight\" | \"arrowUp\" | \"arrowStart\" | \"arrowEnd\" | \"asterisk\" | \"auditbeatApp\" | \"beaker\" | \"bell\" | \"bellSlash\" | \"bolt\" | \"boxesHorizontal\" | \"boxesVertical\" | \"branch\" | \"branchUser\" | \"broom\" | \"bug\" | \"bullseye\" | \"calendar\" | \"canvasApp\" | \"casesApp\" | \"changePointDetection\" | \"check\" | \"checkInCircleFilled\" | \"cheer\" | \"classificationJob\" | \"clickLeft\" | \"clickRight\" | \"clock\" | \"clockCounter\" | \"cloudDrizzle\" | \"cloudStormy\" | \"cloudSunny\" | \"codeApp\" | \"compute\" | \"console\" | \"consoleApp\" | \"continuityAbove\" | \"continuityAboveBelow\" | \"continuityBelow\" | \"continuityWithin\" | \"controlsHorizontal\" | \"controlsVertical\" | \"copyClipboard\" | \"createAdvancedJob\" | \"createMultiMetricJob\" | \"createPopulationJob\" | \"createSingleMetricJob\" | \"cross\" | \"crossClusterReplicationApp\" | \"crossInCircle\" | \"crosshairs\" | \"currency\" | \"cut\" | \"dashboardApp\" | \"dataVisualizer\" | \"database\" | \"desktop\" | \"devToolsApp\" | \"diff\" | \"discoverApp\" | \"discuss\" | \"documentEdit\" | \"documentation\" | \"documents\" | \"dot\" | \"dotInCircle\" | \"doubleArrowLeft\" | \"doubleArrowRight\" | \"editorAlignCenter\" | \"editorAlignLeft\" | \"editorAlignRight\" | \"editorBold\" | \"editorChecklist\" | \"editorCodeBlock\" | \"editorComment\" | \"editorDistributeHorizontal\" | \"editorDistributeVertical\" | \"editorHeading\" | \"editorItalic\" | \"editorItemAlignBottom\" | \"editorItemAlignCenter\" | \"editorItemAlignLeft\" | \"editorItemAlignMiddle\" | \"editorItemAlignRight\" | \"editorItemAlignTop\" | \"editorLink\" | \"editorOrderedList\" | \"editorPositionBottomLeft\" | \"editorPositionBottomRight\" | \"editorPositionTopLeft\" | \"editorPositionTopRight\" | \"editorRedo\" | \"editorStrike\" | \"editorTable\" | \"editorUnderline\" | \"editorUndo\" | \"editorUnorderedList\" | \"empty\" | \"emsApp\" | \"endpoint\" | \"eraser\" | \"errorFilled\" | \"esqlVis\" | \"exit\" | \"expand\" | \"expandMini\" | \"exportAction\" | \"eye\" | \"eyeClosed\" | \"faceHappy\" | \"faceNeutral\" | \"faceSad\" | \"fieldStatistics\" | \"filebeatApp\" | \"filterExclude\" | \"filterIgnore\" | \"filterInclude\" | \"filterInCircle\" | \"flag\" | \"fleetApp\" | \"fold\" | \"folderCheck\" | \"folderClosed\" | \"folderExclamation\" | \"folderOpen\" | \"frameNext\" | \"framePrevious\" | \"fullScreen\" | \"fullScreenExit\" | \"gear\" | \"gisApp\" | \"glasses\" | \"globe\" | \"grab\" | \"grabHorizontal\" | \"grabOmnidirectional\" | \"gradient\" | \"graphApp\" | \"grokApp\" | \"heart\" | \"heartbeatApp\" | \"heatmap\" | \"help\" | \"iInCircle\" | \"importAction\" | \"indexClose\" | \"indexEdit\" | \"indexFlush\" | \"indexManagementApp\" | \"indexMapping\" | \"indexOpen\" | \"indexPatternApp\" | \"indexRollupApp\" | \"indexRuntime\" | \"indexSettings\" | \"indexTemporary\" | \"infinity\" | \"inputOutput\" | \"inspect\" | \"invert\" | \"keyboard\" | \"kqlField\" | \"kqlFunction\" | \"kqlOperand\" | \"kqlSelector\" | \"kqlValue\" | \"kubernetesNode\" | \"kubernetesPod\" | \"launch\" | \"layers\" | \"lensApp\" | \"lettering\" | \"lineDashed\" | \"lineDotted\" | \"lineSolid\" | \"listAdd\" | \"lock\" | \"lockOpen\" | \"logPatternAnalysis\" | \"logRateAnalysis\" | \"logoAWS\" | \"logoAWSMono\" | \"logoAerospike\" | \"logoApache\" | \"logoAppSearch\" | \"logoAzure\" | \"logoAzureMono\" | \"logoBeats\" | \"logoBusinessAnalytics\" | \"logoCeph\" | \"logoCloud\" | \"logoCloudEnterprise\" | \"logoCode\" | \"logoCodesandbox\" | \"logoCouchbase\" | \"logoDocker\" | \"logoDropwizard\" | \"logoElastic\" | \"logoElasticStack\" | \"logoElasticsearch\" | \"logoEnterpriseSearch\" | \"logoEtcd\" | \"logoGCP\" | \"logoGCPMono\" | \"logoGithub\" | \"logoGmail\" | \"logoGolang\" | \"logoGoogleG\" | \"logoHAproxy\" | \"logoIBM\" | \"logoIBMMono\" | \"logoKafka\" | \"logoKibana\" | \"logoKubernetes\" | \"logoLogging\" | \"logoLogstash\" | \"logoMaps\" | \"logoMemcached\" | \"logoMetrics\" | \"logoMongodb\" | \"logoMySQL\" | \"logoNginx\" | \"logoObservability\" | \"logoOsquery\" | \"logoPhp\" | \"logoPostgres\" | \"logoPrometheus\" | \"logoRabbitmq\" | \"logoRedis\" | \"logoSecurity\" | \"logoSiteSearch\" | \"logoSketch\" | \"logoSlack\" | \"logoUptime\" | \"logoVulnerabilityManagement\" | \"logoWebhook\" | \"logoWindows\" | \"logoWorkplaceSearch\" | \"logsApp\" | \"logstashFilter\" | \"logstashIf\" | \"logstashInput\" | \"logstashOutput\" | \"logstashQueue\" | \"machineLearningApp\" | \"magnet\" | \"magnifyWithExclamation\" | \"magnifyWithMinus\" | \"magnifyWithPlus\" | \"managementApp\" | \"mapMarker\" | \"menuDown\" | \"menuLeft\" | \"menuRight\" | \"menuUp\" | \"metricbeatApp\" | \"metricsApp\" | \"minimize\" | \"minus\" | \"minusInCircle\" | \"minusInCircleFilled\" | \"minusInSquare\" | \"monitoringApp\" | \"moon\" | \"newChat\" | \"node\" | \"notebookApp\" | \"offline\" | \"online\" | \"outlierDetectionJob\" | \"packetbeatApp\" | \"pageSelect\" | \"pagesSelect\" | \"palette\" | \"paperClip\" | \"payment\" | \"pencil\" | \"pin\" | \"pinFilled\" | \"pipeBreaks\" | \"pipelineApp\" | \"pipeNoBreaks\" | \"pivot\" | \"play\" | \"playFilled\" | \"plus\" | \"plusInCircle\" | \"plusInCircleFilled\" | \"plusInSquare\" | \"popout\" | \"questionInCircle\" | \"quote\" | \"recentlyViewedApp\" | \"refresh\" | \"regressionJob\" | \"reporter\" | \"reportingApp\" | \"returnKey\" | \"save\" | \"savedObjectsApp\" | \"scale\" | \"searchProfilerApp\" | \"securityAnalyticsApp\" | \"securityApp\" | \"securitySignal\" | \"securitySignalDetected\" | \"securitySignalResolved\" | \"sessionViewer\" | \"shard\" | \"singleMetricViewer\" | \"snowflake\" | \"sortAscending\" | \"sortDescending\" | \"sortDown\" | \"sortLeft\" | \"sortRight\" | \"sortUp\" | \"sortable\" | \"spacesApp\" | \"sparkles\" | \"sqlApp\" | \"starEmpty\" | \"starEmptySpace\" | \"starFilled\" | \"starFilledSpace\" | \"starMinusEmpty\" | \"starMinusFilled\" | \"starPlusEmpty\" | \"starPlusFilled\" | \"stopFilled\" | \"stopSlash\" | \"storage\" | \"submodule\" | \"sun\" | \"swatchInput\" | \"symlink\" | \"tableDensityCompact\" | \"tableDensityExpanded\" | \"tableDensityNormal\" | \"tableOfContents\" | \"tear\" | \"timeline\" | \"timelineWithArrow\" | \"timelionApp\" | \"timeRefresh\" | \"timeslider\" | \"training\" | \"transitionLeftIn\" | \"transitionLeftOut\" | \"transitionTopIn\" | \"transitionTopOut\" | \"trash\" | \"unfold\" | \"upgradeAssistantApp\" | \"uptimeApp\" | \"userAvatar\" | \"usersRolesApp\" | \"vector\" | \"videoPlayer\" | \"visArea\" | \"visAreaStacked\" | \"visBarHorizontal\" | \"visBarHorizontalStacked\" | \"visBarVertical\" | \"visBarVerticalStacked\" | \"visGauge\" | \"visGoal\" | \"visLine\" | \"visMapCoordinate\" | \"visMapRegion\" | \"visMetric\" | \"visPie\" | \"visTable\" | \"visTagCloud\" | \"visText\" | \"visTimelion\" | \"visVega\" | \"visVisualBuilder\" | \"visualizeApp\" | \"vulnerabilityManagementApp\" | \"warningFilled\" | \"watchesApp\" | \"wordWrap\" | \"wordWrapDisabled\" | \"workplaceSearchApp\" | \"wrench\" | \"tokenAlias\" | \"tokenAnnotation\" | \"tokenArray\" | \"tokenBinary\" | \"tokenBoolean\" | \"tokenClass\" | \"tokenCompletionSuggester\" | \"tokenConstant\" | \"tokenDate\" | \"tokenDimension\" | \"tokenElement\" | \"tokenEnum\" | \"tokenEnumMember\" | \"tokenEvent\" | \"tokenException\" | \"tokenField\" | \"tokenFile\" | \"tokenFlattened\" | \"tokenFunction\" | \"tokenGeo\" | \"tokenHistogram\" | \"tokenInterface\" | \"tokenIP\" | \"tokenJoin\" | \"tokenKey\" | \"tokenKeyword\" | \"tokenMethod\" | \"tokenMetricCounter\" | \"tokenMetricGauge\" | \"tokenModule\" | \"tokenNamespace\" | \"tokenNested\" | \"tokenNull\" | \"tokenNumber\" | \"tokenObject\" | \"tokenOperator\" | \"tokenPackage\" | \"tokenParameter\" | \"tokenPercolator\" | \"tokenProperty\" | \"tokenRange\" | \"tokenRankFeature\" | \"tokenRankFeatures\" | \"tokenRepo\" | \"tokenSearchType\" | \"tokenSemanticText\" | \"tokenShape\" | \"tokenString\" | \"tokenStruct\" | \"tokenSymbol\" | \"tokenTag\" | \"tokenText\" | \"tokenTokenCount\" | \"tokenVariable\" | \"tokenVectorDense\" | \"tokenDenseVector\" | \"tokenVectorSparse\"; }" ], "path": "packages/kbn-discover-utils/src/components/app_menu/types.ts", "deprecated": false, @@ -4146,7 +4146,7 @@ "section": "def-common.AppMenuControlOnClickParams", "text": "AppMenuControlOnClickParams" }, - ") => void | React.ReactNode) | undefined; } & { iconType: \"string\" | \"number\" | \"function\" | \"key\" | \"namespace\" | \"error\" | \"filter\" | \"search\" | \"link\" | \"at\" | \"nested\" | \"ip\" | \"push\" | \"list\" | \"cluster\" | \"eql\" | \"index\" | \"unlink\" | \"alert\" | \"color\" | \"grid\" | \"aggregate\" | \"warning\" | \"annotation\" | \"memory\" | \"stop\" | \"stats\" | \"mobile\" | \"article\" | \"menu\" | \"image\" | \"download\" | \"document\" | \"email\" | \"copy\" | \"move\" | \"merge\" | \"partial\" | \"container\" | \"user\" | \"pause\" | \"share\" | \"home\" | \"spaces\" | \"package\" | \"tag\" | \"beta\" | \"users\" | \"brush\" | \"percent\" | \"temperature\" | \"accessibility\" | \"addDataApp\" | \"advancedSettingsApp\" | \"agentApp\" | \"analyzeEvent\" | \"anomalyChart\" | \"anomalySwimLane\" | \"apmApp\" | \"apmTrace\" | \"appSearchApp\" | \"apps\" | \"arrowDown\" | \"arrowLeft\" | \"arrowRight\" | \"arrowUp\" | \"arrowStart\" | \"arrowEnd\" | \"asterisk\" | \"auditbeatApp\" | \"beaker\" | \"bell\" | \"bellSlash\" | \"bolt\" | \"boxesHorizontal\" | \"boxesVertical\" | \"branch\" | \"branchUser\" | \"broom\" | \"bug\" | \"bullseye\" | \"calendar\" | \"canvasApp\" | \"casesApp\" | \"changePointDetection\" | \"check\" | \"checkInCircleFilled\" | \"cheer\" | \"classificationJob\" | \"clickLeft\" | \"clickRight\" | \"clock\" | \"clockCounter\" | \"cloudDrizzle\" | \"cloudStormy\" | \"cloudSunny\" | \"codeApp\" | \"compute\" | \"console\" | \"consoleApp\" | \"continuityAbove\" | \"continuityAboveBelow\" | \"continuityBelow\" | \"continuityWithin\" | \"controlsHorizontal\" | \"controlsVertical\" | \"copyClipboard\" | \"createAdvancedJob\" | \"createMultiMetricJob\" | \"createPopulationJob\" | \"createSingleMetricJob\" | \"cross\" | \"crossClusterReplicationApp\" | \"crossInCircle\" | \"crosshairs\" | \"currency\" | \"cut\" | \"dashboardApp\" | \"dataVisualizer\" | \"database\" | \"desktop\" | \"devToolsApp\" | \"diff\" | \"discoverApp\" | \"discuss\" | \"documentEdit\" | \"documentation\" | \"documents\" | \"dot\" | \"dotInCircle\" | \"doubleArrowLeft\" | \"doubleArrowRight\" | \"editorAlignCenter\" | \"editorAlignLeft\" | \"editorAlignRight\" | \"editorBold\" | \"editorChecklist\" | \"editorCodeBlock\" | \"editorComment\" | \"editorDistributeHorizontal\" | \"editorDistributeVertical\" | \"editorHeading\" | \"editorItalic\" | \"editorItemAlignBottom\" | \"editorItemAlignCenter\" | \"editorItemAlignLeft\" | \"editorItemAlignMiddle\" | \"editorItemAlignRight\" | \"editorItemAlignTop\" | \"editorLink\" | \"editorOrderedList\" | \"editorPositionBottomLeft\" | \"editorPositionBottomRight\" | \"editorPositionTopLeft\" | \"editorPositionTopRight\" | \"editorRedo\" | \"editorStrike\" | \"editorTable\" | \"editorUnderline\" | \"editorUndo\" | \"editorUnorderedList\" | \"empty\" | \"emsApp\" | \"endpoint\" | \"eraser\" | \"errorFilled\" | \"esqlVis\" | \"exit\" | \"expand\" | \"expandMini\" | \"exportAction\" | \"eye\" | \"eyeClosed\" | \"faceHappy\" | \"faceNeutral\" | \"faceSad\" | \"fieldStatistics\" | \"filebeatApp\" | \"filterExclude\" | \"filterIgnore\" | \"filterInclude\" | \"filterInCircle\" | \"flag\" | \"fleetApp\" | \"fold\" | \"folderCheck\" | \"folderClosed\" | \"folderExclamation\" | \"folderOpen\" | \"frameNext\" | \"framePrevious\" | \"fullScreen\" | \"fullScreenExit\" | \"gear\" | \"gisApp\" | \"glasses\" | \"globe\" | \"grab\" | \"grabHorizontal\" | \"grabOmnidirectional\" | \"gradient\" | \"graphApp\" | \"grokApp\" | \"heart\" | \"heartbeatApp\" | \"heatmap\" | \"help\" | \"iInCircle\" | \"importAction\" | \"indexClose\" | \"indexEdit\" | \"indexFlush\" | \"indexManagementApp\" | \"indexMapping\" | \"indexOpen\" | \"indexPatternApp\" | \"indexRollupApp\" | \"indexRuntime\" | \"indexSettings\" | \"indexTemporary\" | \"infinity\" | \"inputOutput\" | \"inspect\" | \"invert\" | \"keyboard\" | \"kqlField\" | \"kqlFunction\" | \"kqlOperand\" | \"kqlSelector\" | \"kqlValue\" | \"kubernetesNode\" | \"kubernetesPod\" | \"launch\" | \"layers\" | \"lensApp\" | \"lettering\" | \"lineDashed\" | \"lineDotted\" | \"lineSolid\" | \"listAdd\" | \"lock\" | \"lockOpen\" | \"logPatternAnalysis\" | \"logRateAnalysis\" | \"logoAWS\" | \"logoAWSMono\" | \"logoAerospike\" | \"logoApache\" | \"logoAppSearch\" | \"logoAzure\" | \"logoAzureMono\" | \"logoBeats\" | \"logoBusinessAnalytics\" | \"logoCeph\" | \"logoCloud\" | \"logoCloudEnterprise\" | \"logoCode\" | \"logoCodesandbox\" | \"logoCouchbase\" | \"logoDocker\" | \"logoDropwizard\" | \"logoElastic\" | \"logoElasticStack\" | \"logoElasticsearch\" | \"logoEnterpriseSearch\" | \"logoEtcd\" | \"logoGCP\" | \"logoGCPMono\" | \"logoGithub\" | \"logoGmail\" | \"logoGolang\" | \"logoGoogleG\" | \"logoHAproxy\" | \"logoIBM\" | \"logoIBMMono\" | \"logoKafka\" | \"logoKibana\" | \"logoKubernetes\" | \"logoLogging\" | \"logoLogstash\" | \"logoMaps\" | \"logoMemcached\" | \"logoMetrics\" | \"logoMongodb\" | \"logoMySQL\" | \"logoNginx\" | \"logoObservability\" | \"logoOsquery\" | \"logoPhp\" | \"logoPostgres\" | \"logoPrometheus\" | \"logoRabbitmq\" | \"logoRedis\" | \"logoSecurity\" | \"logoSiteSearch\" | \"logoSketch\" | \"logoSlack\" | \"logoUptime\" | \"logoVulnerabilityManagement\" | \"logoWebhook\" | \"logoWindows\" | \"logoWorkplaceSearch\" | \"logsApp\" | \"logstashFilter\" | \"logstashIf\" | \"logstashInput\" | \"logstashOutput\" | \"logstashQueue\" | \"machineLearningApp\" | \"magnet\" | \"magnifyWithExclamation\" | \"magnifyWithMinus\" | \"magnifyWithPlus\" | \"managementApp\" | \"mapMarker\" | \"menuDown\" | \"menuLeft\" | \"menuRight\" | \"menuUp\" | \"metricbeatApp\" | \"metricsApp\" | \"minimize\" | \"minus\" | \"minusInCircle\" | \"minusInCircleFilled\" | \"minusInSquare\" | \"monitoringApp\" | \"moon\" | \"newChat\" | \"node\" | \"notebookApp\" | \"offline\" | \"online\" | \"outlierDetectionJob\" | \"packetbeatApp\" | \"pageSelect\" | \"pagesSelect\" | \"palette\" | \"paperClip\" | \"payment\" | \"pencil\" | \"pin\" | \"pinFilled\" | \"pipeBreaks\" | \"pipelineApp\" | \"pipeNoBreaks\" | \"pivot\" | \"play\" | \"playFilled\" | \"plus\" | \"plusInCircle\" | \"plusInCircleFilled\" | \"plusInSquare\" | \"popout\" | \"questionInCircle\" | \"quote\" | \"recentlyViewedApp\" | \"refresh\" | \"regressionJob\" | \"reporter\" | \"reportingApp\" | \"returnKey\" | \"save\" | \"savedObjectsApp\" | \"scale\" | \"searchProfilerApp\" | \"securityAnalyticsApp\" | \"securityApp\" | \"securitySignal\" | \"securitySignalDetected\" | \"securitySignalResolved\" | \"sessionViewer\" | \"shard\" | \"singleMetricViewer\" | \"snowflake\" | \"sortAscending\" | \"sortDescending\" | \"sortDown\" | \"sortLeft\" | \"sortRight\" | \"sortUp\" | \"sortable\" | \"spacesApp\" | \"sparkles\" | \"sqlApp\" | \"starEmpty\" | \"starEmptySpace\" | \"starFilled\" | \"starFilledSpace\" | \"starMinusEmpty\" | \"starMinusFilled\" | \"starPlusEmpty\" | \"starPlusFilled\" | \"stopFilled\" | \"stopSlash\" | \"storage\" | \"submodule\" | \"sun\" | \"swatchInput\" | \"symlink\" | \"tableDensityCompact\" | \"tableDensityExpanded\" | \"tableDensityNormal\" | \"tableOfContents\" | \"tear\" | \"timeline\" | \"timelineWithArrow\" | \"timelionApp\" | \"timeRefresh\" | \"timeslider\" | \"training\" | \"transitionLeftIn\" | \"transitionLeftOut\" | \"transitionTopIn\" | \"transitionTopOut\" | \"trash\" | \"unfold\" | \"upgradeAssistantApp\" | \"uptimeApp\" | \"userAvatar\" | \"usersRolesApp\" | \"vector\" | \"videoPlayer\" | \"visArea\" | \"visAreaStacked\" | \"visBarHorizontal\" | \"visBarHorizontalStacked\" | \"visBarVertical\" | \"visBarVerticalStacked\" | \"visGauge\" | \"visGoal\" | \"visLine\" | \"visMapCoordinate\" | \"visMapRegion\" | \"visMetric\" | \"visPie\" | \"visTable\" | \"visTagCloud\" | \"visText\" | \"visTimelion\" | \"visVega\" | \"visVisualBuilder\" | \"visualizeApp\" | \"vulnerabilityManagementApp\" | \"warningFilled\" | \"watchesApp\" | \"wordWrap\" | \"wordWrapDisabled\" | \"workplaceSearchApp\" | \"wrench\" | \"tokenAlias\" | \"tokenAnnotation\" | \"tokenArray\" | \"tokenBinary\" | \"tokenBoolean\" | \"tokenClass\" | \"tokenCompletionSuggester\" | \"tokenConstant\" | \"tokenDate\" | \"tokenDimension\" | \"tokenElement\" | \"tokenEnum\" | \"tokenEnumMember\" | \"tokenEvent\" | \"tokenException\" | \"tokenField\" | \"tokenFile\" | \"tokenFlattened\" | \"tokenFunction\" | \"tokenGeo\" | \"tokenHistogram\" | \"tokenInterface\" | \"tokenIP\" | \"tokenJoin\" | \"tokenKey\" | \"tokenKeyword\" | \"tokenMethod\" | \"tokenMetricCounter\" | \"tokenMetricGauge\" | \"tokenModule\" | \"tokenNamespace\" | \"tokenNested\" | \"tokenNull\" | \"tokenNumber\" | \"tokenObject\" | \"tokenOperator\" | \"tokenPackage\" | \"tokenParameter\" | \"tokenPercolator\" | \"tokenProperty\" | \"tokenRange\" | \"tokenRankFeature\" | \"tokenRankFeatures\" | \"tokenRepo\" | \"tokenSearchType\" | \"tokenSemanticText\" | \"tokenShape\" | \"tokenString\" | \"tokenStruct\" | \"tokenSymbol\" | \"tokenTag\" | \"tokenText\" | \"tokenTokenCount\" | \"tokenVariable\" | \"tokenVectorDense\" | \"tokenDenseVector\" | \"tokenVectorSparse\"; }" + ") => void | React.ReactNode) | undefined; } & { iconType: \"string\" | \"number\" | \"function\" | \"key\" | \"namespace\" | \"error\" | \"filter\" | \"search\" | \"link\" | \"at\" | \"nested\" | \"ip\" | \"push\" | \"list\" | \"cluster\" | \"eql\" | \"index\" | \"unlink\" | \"alert\" | \"color\" | \"grid\" | \"aggregate\" | \"warning\" | \"annotation\" | \"memory\" | \"stats\" | \"mobile\" | \"article\" | \"menu\" | \"image\" | \"stop\" | \"download\" | \"document\" | \"email\" | \"copy\" | \"move\" | \"merge\" | \"partial\" | \"container\" | \"user\" | \"pause\" | \"share\" | \"home\" | \"spaces\" | \"package\" | \"tag\" | \"beta\" | \"users\" | \"brush\" | \"percent\" | \"temperature\" | \"accessibility\" | \"addDataApp\" | \"advancedSettingsApp\" | \"agentApp\" | \"analyzeEvent\" | \"anomalyChart\" | \"anomalySwimLane\" | \"apmApp\" | \"apmTrace\" | \"appSearchApp\" | \"apps\" | \"arrowDown\" | \"arrowLeft\" | \"arrowRight\" | \"arrowUp\" | \"arrowStart\" | \"arrowEnd\" | \"asterisk\" | \"auditbeatApp\" | \"beaker\" | \"bell\" | \"bellSlash\" | \"bolt\" | \"boxesHorizontal\" | \"boxesVertical\" | \"branch\" | \"branchUser\" | \"broom\" | \"bug\" | \"bullseye\" | \"calendar\" | \"canvasApp\" | \"casesApp\" | \"changePointDetection\" | \"check\" | \"checkInCircleFilled\" | \"cheer\" | \"classificationJob\" | \"clickLeft\" | \"clickRight\" | \"clock\" | \"clockCounter\" | \"cloudDrizzle\" | \"cloudStormy\" | \"cloudSunny\" | \"codeApp\" | \"compute\" | \"console\" | \"consoleApp\" | \"continuityAbove\" | \"continuityAboveBelow\" | \"continuityBelow\" | \"continuityWithin\" | \"controlsHorizontal\" | \"controlsVertical\" | \"copyClipboard\" | \"createAdvancedJob\" | \"createMultiMetricJob\" | \"createPopulationJob\" | \"createSingleMetricJob\" | \"cross\" | \"crossClusterReplicationApp\" | \"crossInCircle\" | \"crosshairs\" | \"currency\" | \"cut\" | \"dashboardApp\" | \"dataVisualizer\" | \"database\" | \"desktop\" | \"devToolsApp\" | \"diff\" | \"discoverApp\" | \"discuss\" | \"documentEdit\" | \"documentation\" | \"documents\" | \"dot\" | \"dotInCircle\" | \"doubleArrowLeft\" | \"doubleArrowRight\" | \"editorAlignCenter\" | \"editorAlignLeft\" | \"editorAlignRight\" | \"editorBold\" | \"editorChecklist\" | \"editorCodeBlock\" | \"editorComment\" | \"editorDistributeHorizontal\" | \"editorDistributeVertical\" | \"editorHeading\" | \"editorItalic\" | \"editorItemAlignBottom\" | \"editorItemAlignCenter\" | \"editorItemAlignLeft\" | \"editorItemAlignMiddle\" | \"editorItemAlignRight\" | \"editorItemAlignTop\" | \"editorLink\" | \"editorOrderedList\" | \"editorPositionBottomLeft\" | \"editorPositionBottomRight\" | \"editorPositionTopLeft\" | \"editorPositionTopRight\" | \"editorRedo\" | \"editorStrike\" | \"editorTable\" | \"editorUnderline\" | \"editorUndo\" | \"editorUnorderedList\" | \"empty\" | \"emsApp\" | \"endpoint\" | \"eraser\" | \"errorFilled\" | \"esqlVis\" | \"exit\" | \"expand\" | \"expandMini\" | \"exportAction\" | \"eye\" | \"eyeClosed\" | \"faceHappy\" | \"faceNeutral\" | \"faceSad\" | \"fieldStatistics\" | \"filebeatApp\" | \"filterExclude\" | \"filterIgnore\" | \"filterInclude\" | \"filterInCircle\" | \"flag\" | \"fleetApp\" | \"fold\" | \"folderCheck\" | \"folderClosed\" | \"folderExclamation\" | \"folderOpen\" | \"frameNext\" | \"framePrevious\" | \"fullScreen\" | \"fullScreenExit\" | \"gear\" | \"gisApp\" | \"glasses\" | \"globe\" | \"grab\" | \"grabHorizontal\" | \"grabOmnidirectional\" | \"gradient\" | \"graphApp\" | \"grokApp\" | \"heart\" | \"heartbeatApp\" | \"heatmap\" | \"help\" | \"iInCircle\" | \"importAction\" | \"indexClose\" | \"indexEdit\" | \"indexFlush\" | \"indexManagementApp\" | \"indexMapping\" | \"indexOpen\" | \"indexPatternApp\" | \"indexRollupApp\" | \"indexRuntime\" | \"indexSettings\" | \"indexTemporary\" | \"infinity\" | \"inputOutput\" | \"inspect\" | \"invert\" | \"keyboard\" | \"kqlField\" | \"kqlFunction\" | \"kqlOperand\" | \"kqlSelector\" | \"kqlValue\" | \"kubernetesNode\" | \"kubernetesPod\" | \"launch\" | \"layers\" | \"lensApp\" | \"lettering\" | \"lineDashed\" | \"lineDotted\" | \"lineSolid\" | \"listAdd\" | \"lock\" | \"lockOpen\" | \"logPatternAnalysis\" | \"logRateAnalysis\" | \"logoAWS\" | \"logoAWSMono\" | \"logoAerospike\" | \"logoApache\" | \"logoAppSearch\" | \"logoAzure\" | \"logoAzureMono\" | \"logoBeats\" | \"logoBusinessAnalytics\" | \"logoCeph\" | \"logoCloud\" | \"logoCloudEnterprise\" | \"logoCode\" | \"logoCodesandbox\" | \"logoCouchbase\" | \"logoDocker\" | \"logoDropwizard\" | \"logoElastic\" | \"logoElasticStack\" | \"logoElasticsearch\" | \"logoEnterpriseSearch\" | \"logoEtcd\" | \"logoGCP\" | \"logoGCPMono\" | \"logoGithub\" | \"logoGmail\" | \"logoGolang\" | \"logoGoogleG\" | \"logoHAproxy\" | \"logoIBM\" | \"logoIBMMono\" | \"logoKafka\" | \"logoKibana\" | \"logoKubernetes\" | \"logoLogging\" | \"logoLogstash\" | \"logoMaps\" | \"logoMemcached\" | \"logoMetrics\" | \"logoMongodb\" | \"logoMySQL\" | \"logoNginx\" | \"logoObservability\" | \"logoOsquery\" | \"logoPhp\" | \"logoPostgres\" | \"logoPrometheus\" | \"logoRabbitmq\" | \"logoRedis\" | \"logoSecurity\" | \"logoSiteSearch\" | \"logoSketch\" | \"logoSlack\" | \"logoUptime\" | \"logoVulnerabilityManagement\" | \"logoWebhook\" | \"logoWindows\" | \"logoWorkplaceSearch\" | \"logsApp\" | \"logstashFilter\" | \"logstashIf\" | \"logstashInput\" | \"logstashOutput\" | \"logstashQueue\" | \"machineLearningApp\" | \"magnet\" | \"magnifyWithExclamation\" | \"magnifyWithMinus\" | \"magnifyWithPlus\" | \"managementApp\" | \"mapMarker\" | \"menuDown\" | \"menuLeft\" | \"menuRight\" | \"menuUp\" | \"metricbeatApp\" | \"metricsApp\" | \"minimize\" | \"minus\" | \"minusInCircle\" | \"minusInCircleFilled\" | \"minusInSquare\" | \"monitoringApp\" | \"moon\" | \"newChat\" | \"node\" | \"notebookApp\" | \"offline\" | \"online\" | \"outlierDetectionJob\" | \"packetbeatApp\" | \"pageSelect\" | \"pagesSelect\" | \"palette\" | \"paperClip\" | \"payment\" | \"pencil\" | \"pin\" | \"pinFilled\" | \"pipeBreaks\" | \"pipelineApp\" | \"pipeNoBreaks\" | \"pivot\" | \"play\" | \"playFilled\" | \"plus\" | \"plusInCircle\" | \"plusInCircleFilled\" | \"plusInSquare\" | \"popout\" | \"questionInCircle\" | \"quote\" | \"recentlyViewedApp\" | \"refresh\" | \"regressionJob\" | \"reporter\" | \"reportingApp\" | \"returnKey\" | \"save\" | \"savedObjectsApp\" | \"scale\" | \"searchProfilerApp\" | \"securityAnalyticsApp\" | \"securityApp\" | \"securitySignal\" | \"securitySignalDetected\" | \"securitySignalResolved\" | \"sessionViewer\" | \"shard\" | \"singleMetricViewer\" | \"snowflake\" | \"sortAscending\" | \"sortDescending\" | \"sortDown\" | \"sortLeft\" | \"sortRight\" | \"sortUp\" | \"sortable\" | \"spacesApp\" | \"sparkles\" | \"sqlApp\" | \"starEmpty\" | \"starEmptySpace\" | \"starFilled\" | \"starFilledSpace\" | \"starMinusEmpty\" | \"starMinusFilled\" | \"starPlusEmpty\" | \"starPlusFilled\" | \"stopFilled\" | \"stopSlash\" | \"storage\" | \"submodule\" | \"sun\" | \"swatchInput\" | \"symlink\" | \"tableDensityCompact\" | \"tableDensityExpanded\" | \"tableDensityNormal\" | \"tableOfContents\" | \"tear\" | \"timeline\" | \"timelineWithArrow\" | \"timelionApp\" | \"timeRefresh\" | \"timeslider\" | \"training\" | \"transitionLeftIn\" | \"transitionLeftOut\" | \"transitionTopIn\" | \"transitionTopOut\" | \"trash\" | \"unfold\" | \"upgradeAssistantApp\" | \"uptimeApp\" | \"userAvatar\" | \"usersRolesApp\" | \"vector\" | \"videoPlayer\" | \"visArea\" | \"visAreaStacked\" | \"visBarHorizontal\" | \"visBarHorizontalStacked\" | \"visBarVertical\" | \"visBarVerticalStacked\" | \"visGauge\" | \"visGoal\" | \"visLine\" | \"visMapCoordinate\" | \"visMapRegion\" | \"visMetric\" | \"visPie\" | \"visTable\" | \"visTagCloud\" | \"visText\" | \"visTimelion\" | \"visVega\" | \"visVisualBuilder\" | \"visualizeApp\" | \"vulnerabilityManagementApp\" | \"warningFilled\" | \"watchesApp\" | \"wordWrap\" | \"wordWrapDisabled\" | \"workplaceSearchApp\" | \"wrench\" | \"tokenAlias\" | \"tokenAnnotation\" | \"tokenArray\" | \"tokenBinary\" | \"tokenBoolean\" | \"tokenClass\" | \"tokenCompletionSuggester\" | \"tokenConstant\" | \"tokenDate\" | \"tokenDimension\" | \"tokenElement\" | \"tokenEnum\" | \"tokenEnumMember\" | \"tokenEvent\" | \"tokenException\" | \"tokenField\" | \"tokenFile\" | \"tokenFlattened\" | \"tokenFunction\" | \"tokenGeo\" | \"tokenHistogram\" | \"tokenInterface\" | \"tokenIP\" | \"tokenJoin\" | \"tokenKey\" | \"tokenKeyword\" | \"tokenMethod\" | \"tokenMetricCounter\" | \"tokenMetricGauge\" | \"tokenModule\" | \"tokenNamespace\" | \"tokenNested\" | \"tokenNull\" | \"tokenNumber\" | \"tokenObject\" | \"tokenOperator\" | \"tokenPackage\" | \"tokenParameter\" | \"tokenPercolator\" | \"tokenProperty\" | \"tokenRange\" | \"tokenRankFeature\" | \"tokenRankFeatures\" | \"tokenRepo\" | \"tokenSearchType\" | \"tokenSemanticText\" | \"tokenShape\" | \"tokenString\" | \"tokenStruct\" | \"tokenSymbol\" | \"tokenTag\" | \"tokenText\" | \"tokenTokenCount\" | \"tokenVariable\" | \"tokenVectorDense\" | \"tokenDenseVector\" | \"tokenVectorSparse\"; }" ], "path": "packages/kbn-discover-utils/src/components/app_menu/types.ts", "deprecated": false, diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index 127098ca2d2e5..3768e307067e7 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.devdocs.json b/api_docs/kbn_doc_links.devdocs.json index 9e7a1ab119ce3..ab451f2b88259 100644 --- a/api_docs/kbn_doc_links.devdocs.json +++ b/api_docs/kbn_doc_links.devdocs.json @@ -543,7 +543,7 @@ "label": "securitySolution", "description": [], "signature": [ - "{ readonly aiAssistant: string; readonly artifactControl: string; readonly avcResults: string; readonly bidirectionalIntegrations: string; readonly trustedApps: string; readonly eventFilters: string; readonly eventMerging: string; readonly blocklist: string; readonly endpointArtifacts: string; readonly policyResponseTroubleshooting: { full_disk_access: string; macos_system_ext: string; linux_deadlock: string; }; readonly packageActionTroubleshooting: { es_connection: string; }; readonly threatIntelInt: string; readonly responseActions: string; readonly configureEndpointIntegrationPolicy: string; readonly exceptions: { value_lists: string; }; readonly privileges: string; readonly manageDetectionRules: string; readonly createDetectionRules: string; readonly createEsqlRuleType: string; readonly ruleUiAdvancedParams: string; readonly entityAnalytics: { readonly riskScorePrerequisites: string; readonly entityRiskScoring: string; readonly assetCriticality: string; }; readonly detectionEngineOverview: string; }" + "{ readonly aiAssistant: string; readonly artifactControl: string; readonly avcResults: string; readonly bidirectionalIntegrations: string; readonly trustedApps: string; readonly eventFilters: string; readonly eventMerging: string; readonly blocklist: string; readonly endpointArtifacts: string; readonly policyResponseTroubleshooting: { full_disk_access: string; macos_system_ext: string; linux_deadlock: string; }; readonly packageActionTroubleshooting: { es_connection: string; }; readonly threatIntelInt: string; readonly responseActions: string; readonly configureEndpointIntegrationPolicy: string; readonly exceptions: { value_lists: string; }; readonly privileges: string; readonly manageDetectionRules: string; readonly createDetectionRules: string; readonly createEsqlRuleType: string; readonly ruleUiAdvancedParams: string; readonly entityAnalytics: { readonly riskScorePrerequisites: string; readonly entityRiskScoring: string; readonly assetCriticality: string; }; readonly detectionEngineOverview: string; readonly signalsMigrationApi: string; }" ], "path": "src/platform/packages/shared/kbn-doc-links/src/types.ts", "deprecated": false, diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 796964c86f5af..bd0b6711bf137 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 198f7ae9e46c5..16cdefe65d120 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index f9b7f0f22d2c9..d0adc02469a7a 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.devdocs.json b/api_docs/kbn_ebt_tools.devdocs.json index 005175472345e..bfa6471d278f2 100644 --- a/api_docs/kbn_ebt_tools.devdocs.json +++ b/api_docs/kbn_ebt_tools.devdocs.json @@ -176,7 +176,9 @@ "signature": [ "(state: { customMetrics?: ", "CustomMetrics", - " | undefined; isReady: boolean; }) => void" + " | undefined; isReady: boolean; meta?: ", + "Meta", + " | undefined; }) => void" ], "path": "packages/kbn-ebt-tools/src/performance_metrics/context/use_page_ready.ts", "deprecated": false, @@ -218,6 +220,21 @@ "path": "packages/kbn-ebt-tools/src/performance_metrics/context/use_page_ready.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ebt-tools", + "id": "def-common.usePageReady.$1.meta", + "type": "Object", + "tags": [], + "label": "meta", + "description": [], + "signature": [ + "Meta", + " | undefined" + ], + "path": "packages/kbn-ebt-tools/src/performance_metrics/context/use_page_ready.ts", + "deprecated": false, + "trackAdoption": false } ] } diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index 4cdac1f86fcbf..6713fa98035a8 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 37 | 0 | 28 | 2 | +| 38 | 0 | 29 | 3 | ## Common diff --git a/api_docs/kbn_ecs_data_quality_dashboard.devdocs.json b/api_docs/kbn_ecs_data_quality_dashboard.devdocs.json index b70583710b651..39db857f43f1e 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.devdocs.json +++ b/api_docs/kbn_ecs_data_quality_dashboard.devdocs.json @@ -13,7 +13,7 @@ "signature": [ "(indexName: string) => string" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -27,7 +27,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -48,7 +48,7 @@ "signature": [ "React.NamedExoticComponent" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/index.tsx", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/index.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -82,7 +82,7 @@ "signature": [ "(phase: string) => string" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -96,7 +96,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -116,7 +116,7 @@ "tags": [], "label": "DATA_QUALITY_DASHBOARD_CONVERSATION_ID", "description": [], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -128,7 +128,7 @@ "tags": [], "label": "DATA_QUALITY_PROMPT_CONTEXT_PILL_TOOLTIP", "description": [], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -142,7 +142,7 @@ "description": [ "The subtitle displayed on the Data Quality dashboard" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -154,7 +154,7 @@ "tags": [], "label": "DATA_QUALITY_SUGGESTED_USER_PROMPT", "description": [], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -169,7 +169,7 @@ "signature": [ "\"https://www.elastic.co/guide/en/ecs/current/ecs-field-reference.html\"" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -186,7 +186,7 @@ "signature": [ "\"https://www.elastic.co/guide/en/ecs/current/ecs-reference.html\"" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -200,7 +200,7 @@ "description": [ "The label displayed for the `ILM phase` combo box on the Data Quality dashboard" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -214,7 +214,7 @@ "description": [ "The tooltip for the `ILM phase` combo box on the Data Quality Dashboard" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -229,7 +229,7 @@ "signature": [ "\"https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html\"" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -243,7 +243,7 @@ "description": [ "The placeholder for the `ILM phase` combo box on the Data Quality Dashboard" ], - "path": "x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 5438fc2be9b33..2164b0d0e029f 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index 8b2fb8cef2815..2433bc96ec9d4 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.devdocs.json b/api_docs/kbn_elastic_assistant.devdocs.json index f4e458bb3a3b2..d0d05341c3543 100644 --- a/api_docs/kbn_elastic_assistant.devdocs.json +++ b/api_docs/kbn_elastic_assistant.devdocs.json @@ -13,7 +13,7 @@ "signature": [ "React.FunctionComponent" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -69,7 +69,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -83,7 +83,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -104,7 +104,7 @@ "Props", ">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/index.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -130,19 +130,155 @@ "parentPluginId": "@kbn/elastic-assistant", "id": "def-public.AssistantAvatar", "type": "Function", - "tags": [], + "tags": [ + "deprecated" + ], "label": "AssistantAvatar", "description": [ - "\nDefault Elastic AI Assistant logo\n\nTODO: Can be removed once added to EUI" + "\nDefault Elastic AI Assistant logo\n" ], "signature": [ "({ className, size }: ", "AssistantAvatarProps", ") => React.JSX.Element" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx", - "deprecated": false, + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx", + "deprecated": true, "trackAdoption": false, + "references": [ + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx" + }, + { + "plugin": "integrationAssistant", + "path": "x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx" + }, + { + "plugin": "@kbn/ecs-data-quality-dashboard", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx" + }, + { + "plugin": "@kbn/ecs-data-quality-dashboard", + "path": "x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/assistant/get_comments/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/assistant/header_link.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/assistant/header_link.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/title/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/title/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/no_alerts/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/attack_discovery/pages/results/empty_states/welcome/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/assistant/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/components/ai_assistant/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/index.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/ai_connector/index.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_result_panel.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/panels/migration_result_panel.tsx" + } + ], "children": [ { "parentPluginId": "@kbn/elastic-assistant", @@ -154,7 +290,7 @@ "signature": [ "AssistantAvatarProps" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -173,7 +309,7 @@ "signature": [ "React.NamedExoticComponent & { readonly type: () => React.JSX.Element | null; }" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -207,7 +343,7 @@ "AssistantProviderProps", ") => React.JSX.Element" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -221,7 +357,7 @@ "signature": [ "AssistantProviderProps" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -272,7 +408,7 @@ }, " | undefined>" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -292,7 +428,7 @@ "text": "HttpSetup" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -313,7 +449,7 @@ "text": "ConversationsBulkActions" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -335,7 +471,7 @@ }, " | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -370,7 +506,7 @@ }, " | undefined) => Promise<{ attributes: { results: { created: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; updated: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"PROMPT_FIELD_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; prompts: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; prompts_count?: number | undefined; } | undefined>" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -390,7 +526,7 @@ "text": "HttpSetup" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -405,7 +541,7 @@ "signature": [ "{ create?: { name: string; content: string; promptType: \"system\" | \"quick\"; consumer?: string | undefined; color?: string | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[] | undefined; update?: { id: string; consumer?: string | undefined; content?: string | undefined; color?: string | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -427,7 +563,7 @@ }, " | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -448,7 +584,7 @@ "signature": [ "React.FunctionComponent" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -506,7 +642,7 @@ }, " | undefined>" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -520,7 +656,7 @@ "signature": [ "GetConversationByIdParams" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -555,7 +691,7 @@ }, "; signal?: AbortSignal | undefined; }) => Promise<{ page: number; data: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; perPage: number; total: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -566,7 +702,7 @@ "tags": [], "label": "{\n http,\n signal,\n toasts,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -586,7 +722,7 @@ "text": "HttpSetup" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", "deprecated": false, "trackAdoption": false }, @@ -606,7 +742,7 @@ "text": "IToasts" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", "deprecated": false, "trackAdoption": false }, @@ -620,7 +756,7 @@ "signature": [ "AbortSignal | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts", "deprecated": false, "trackAdoption": false } @@ -660,7 +796,7 @@ "FetchConversationsResponse", ">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -671,7 +807,7 @@ "tags": [], "label": "{\n http,\n signal,\n toasts,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -691,7 +827,7 @@ "text": "HttpSetup" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -712,7 +848,7 @@ }, " | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -726,7 +862,7 @@ "signature": [ "AbortSignal | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts", "deprecated": false, "trackAdoption": false } @@ -764,7 +900,7 @@ }, ">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -786,7 +922,7 @@ }, ">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -801,7 +937,7 @@ "signature": [ "FetchConversationsResponse" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -824,7 +960,7 @@ "Props", ">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/new_chat/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat/index.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -860,7 +996,7 @@ "Props", ">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/new_chat_by_title/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat_by_title/index.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -892,7 +1028,7 @@ "signature": [ "React.NamedExoticComponent<{ basePath: string; }> & { readonly type: ({ basePath }: { basePath: string; }) => React.JSX.Element; }" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/upgrade/upgrade_buttons.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/upgrade/upgrade_buttons.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -925,7 +1061,7 @@ "() => ", "UseAssistantContext" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -944,7 +1080,7 @@ "signature": [ "(category: string, conversationTitle: string | null, description: string, getPromptContext: () => Promise | Promise>, id: string | null, suggestedUserPrompt: string | null | undefined, tooltip: React.ReactNode, isAssistantEnabled: boolean, replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | null | undefined) => UseAssistantOverlay" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -958,7 +1094,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -973,7 +1109,7 @@ "signature": [ "string | null" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -988,7 +1124,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1003,7 +1139,7 @@ "signature": [ "() => Promise | Promise>" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1018,7 +1154,7 @@ "signature": [ "string | null" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1033,7 +1169,7 @@ "signature": [ "string | null | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1048,7 +1184,7 @@ "signature": [ "React.ReactNode" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1063,7 +1199,7 @@ "signature": [ "boolean" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1078,7 +1214,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | null | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1109,7 +1245,7 @@ }, ">, unknown>" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1123,7 +1259,7 @@ "signature": [ "UseFetchCurrentUserConversationsParams" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1156,7 +1292,7 @@ }, ">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1170,7 +1306,7 @@ "signature": [ "Props" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1188,7 +1324,7 @@ "tags": [], "label": "AssistantAvailability", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1199,7 +1335,7 @@ "tags": [], "label": "isAssistantEnabled", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1210,7 +1346,7 @@ "tags": [], "label": "hasAssistantPrivilege", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1221,7 +1357,7 @@ "tags": [], "label": "hasConnectorsAllPrivilege", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1232,7 +1368,7 @@ "tags": [], "label": "hasConnectorsReadPrivilege", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1243,7 +1379,7 @@ "tags": [], "label": "hasUpdateAIAssistantAnonymization", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1254,7 +1390,7 @@ "tags": [], "label": "hasManageGlobalKnowledgeBase", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -1268,7 +1404,7 @@ "tags": [], "label": "AssistantTelemetry", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1282,7 +1418,7 @@ "signature": [ "(params: { invokedBy: string; conversationId: string; }) => void" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1293,7 +1429,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1304,7 +1440,7 @@ "tags": [], "label": "invokedBy", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1315,7 +1451,7 @@ "tags": [], "label": "conversationId", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -1334,7 +1470,7 @@ "signature": [ "(params: { conversationId: string; role: string; actionTypeId: string; model?: string | undefined; provider?: string | undefined; isEnabledKnowledgeBase: boolean; }) => void" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1345,7 +1481,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1356,7 +1492,7 @@ "tags": [], "label": "conversationId", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1367,7 +1503,7 @@ "tags": [], "label": "role", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1378,7 +1514,7 @@ "tags": [], "label": "actionTypeId", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1392,7 +1528,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1406,7 +1542,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1417,7 +1553,7 @@ "tags": [], "label": "isEnabledKnowledgeBase", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -1436,7 +1572,7 @@ "signature": [ "(params: { conversationId: string; promptTitle: string; }) => void" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1447,7 +1583,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1458,7 +1594,7 @@ "tags": [], "label": "conversationId", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1469,7 +1605,7 @@ "tags": [], "label": "promptTitle", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -1488,7 +1624,7 @@ "signature": [ "(params: { assistantStreamingEnabled?: boolean | undefined; }) => void" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1499,7 +1635,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1513,7 +1649,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -1532,7 +1668,7 @@ "tags": [], "label": "BulkActionAggregatedError", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1543,7 +1679,7 @@ "tags": [], "label": "message", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1554,7 +1690,7 @@ "tags": [], "label": "status_code", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1568,7 +1704,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1582,7 +1718,7 @@ "signature": [ "{ id: string; name?: string | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false } @@ -1596,7 +1732,7 @@ "tags": [], "label": "BulkActionAttributes", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1616,7 +1752,7 @@ "text": "BulkActionSummary" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1636,7 +1772,7 @@ "text": "BulkActionResult" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1657,7 +1793,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false } @@ -1671,7 +1807,7 @@ "tags": [], "label": "BulkActionResponse", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1685,7 +1821,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1699,7 +1835,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1713,7 +1849,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1727,7 +1863,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1747,7 +1883,7 @@ "text": "BulkActionAttributes" } ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false } @@ -1761,7 +1897,7 @@ "tags": [], "label": "BulkActionResult", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1782,7 +1918,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1803,7 +1939,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1824,7 +1960,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1845,7 +1981,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false } @@ -1859,7 +1995,7 @@ "tags": [], "label": "BulkActionSummary", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1870,7 +2006,7 @@ "tags": [], "label": "failed", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1881,7 +2017,7 @@ "tags": [], "label": "skipped", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1892,7 +2028,7 @@ "tags": [], "label": "succeeded", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -1903,7 +2039,7 @@ "tags": [], "label": "total", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false } @@ -1927,7 +2063,7 @@ }, " extends Omit<{ timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, \"content\" | \"reader\">" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1941,7 +2077,7 @@ "signature": [ "ReadableStreamDefaultReader | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1955,7 +2091,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -1970,7 +2106,7 @@ "MessagePresentation", " | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -1984,7 +2120,7 @@ "tags": [], "label": "CodeBlockDetails", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1998,7 +2134,7 @@ "signature": [ "\"eql\" | \"esql\" | \"sql\" | \"kql\" | \"dsl\" | \"json\" | \"no-type\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -2009,7 +2145,7 @@ "tags": [], "label": "content", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -2020,7 +2156,7 @@ "tags": [], "label": "start", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -2031,7 +2167,7 @@ "tags": [], "label": "end", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -2045,7 +2181,7 @@ "signature": [ "(() => Element | undefined) | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2061,7 +2197,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -2077,7 +2213,7 @@ "description": [ "\nComplete state to reconstruct a conversation instance.\nIncludes all messages, connector configured, and relevant UI state.\n" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -2091,7 +2227,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2105,7 +2241,7 @@ "signature": [ "{ connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2119,7 +2255,7 @@ "signature": [ "{ id?: string | undefined; name?: string | undefined; } | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2130,7 +2266,7 @@ "tags": [], "label": "category", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2141,7 +2277,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2152,7 +2288,7 @@ "tags": [], "label": "title", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2173,7 +2309,7 @@ }, "[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2187,7 +2323,7 @@ "signature": [ "Date | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2201,7 +2337,7 @@ "signature": [ "Date | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2215,7 +2351,7 @@ "signature": [ "{} & { [k: string]: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2229,7 +2365,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false }, @@ -2243,7 +2379,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -2257,7 +2393,7 @@ "tags": [], "label": "ConversationsBulkActions", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2279,7 +2415,7 @@ }, "> | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -2301,7 +2437,7 @@ }, "> | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -2315,7 +2451,7 @@ "signature": [ "{ ids: string[]; } | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false } @@ -2329,7 +2465,7 @@ "tags": [], "label": "ConversationUpdateParams", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2343,7 +2479,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -2357,7 +2493,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -2378,7 +2514,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false }, @@ -2392,7 +2528,7 @@ "signature": [ "{ connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts", "deprecated": false, "trackAdoption": false } @@ -2408,7 +2544,7 @@ "description": [ "\nThis interface is used to pass context to the Elastic AI Assistant,\nfor the purpose of building prompts. Examples of context include:\n- a single alert\n- multiple alerts\n- a single event\n- multiple events\n- markdown\n- csv\n- anything else that the LLM can interpret" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2421,7 +2557,7 @@ "description": [ "\nThe category of data, e.g. `alert | alerts | event | events | string`\n\n`category` helps the Elastic AI Assistant display the most relevant user prompts" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2434,7 +2570,7 @@ "description": [ "\nThe Elastic AI Assistant will display this **short**, static description\nin the context pill" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2450,7 +2586,7 @@ "signature": [ "() => Promise | Promise>" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2465,7 +2601,7 @@ "description": [ "\nA unique identifier for this prompt context" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2481,7 +2617,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2497,7 +2633,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2513,7 +2649,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false } @@ -2533,7 +2669,7 @@ "signature": [ "\"attackDiscovery\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2548,7 +2684,7 @@ "signature": [ "\"elasticAssistantDefault\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2565,7 +2701,7 @@ "signature": [ "100" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2582,7 +2718,7 @@ "signature": [ "100" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2597,7 +2733,7 @@ "signature": [ "\"defendInsights\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2609,7 +2745,7 @@ "tags": [], "label": "ELASTIC_AI_ASSISTANT_TITLE", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2636,7 +2772,7 @@ "EuiCommentProps", "[]" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -2661,7 +2797,7 @@ "UserAvatar", " | undefined; setIsStreaming: (isStreaming: boolean) => void; systemPromptContent?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx", "deprecated": false, "trackAdoption": false } @@ -2678,7 +2814,7 @@ "signature": [ "\"knowledgeBase\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2693,7 +2829,7 @@ "signature": [ "\"maxAlerts\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2710,7 +2846,7 @@ "signature": [ "{ description: string; category: string; tooltip: React.ReactNode; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; suggestedUserPrompt?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2725,7 +2861,7 @@ "signature": [ "\"eql\" | \"esql\" | \"sql\" | \"kql\" | \"dsl\" | \"json\" | \"no-type\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2737,7 +2873,7 @@ "tags": [], "label": "SELECT_FEWER_ALERTS", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/translations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2752,7 +2888,7 @@ "signature": [ "\"showSettingsTour\"" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2767,7 +2903,7 @@ "signature": [ "React.ChangeEvent | React.KeyboardEvent | React.MouseEvent" ], - "path": "x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2779,7 +2915,7 @@ "tags": [], "label": "WELCOME_CONVERSATION_TITLE", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2791,7 +2927,7 @@ "tags": [], "label": "YOUR_ANONYMIZATION_SETTINGS", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/translations.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/translations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 7df32d5195bce..00006d1157401 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.devdocs.json b/api_docs/kbn_elastic_assistant_common.devdocs.json index a864611adb34f..2f0d1faeb04b8 100644 --- a/api_docs/kbn_elastic_assistant_common.devdocs.json +++ b/api_docs/kbn_elastic_assistant_common.devdocs.json @@ -29,7 +29,7 @@ "signature": [ "({ currentReplacements, rawValue, }: { currentReplacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; rawValue: string; }) => string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -40,7 +40,7 @@ "tags": [], "label": "{\n currentReplacements,\n rawValue,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -54,7 +54,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", "deprecated": false, "trackAdoption": false }, @@ -65,7 +65,7 @@ "tags": [], "label": "rawValue", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts", "deprecated": false, "trackAdoption": false } @@ -85,7 +85,7 @@ "signature": [ "(rawData: string | Record) => boolean" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -99,7 +99,7 @@ "signature": [ "string | Record" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -120,7 +120,7 @@ "signature": [ "({ alertsIndexPattern, anonymizationFields, size, }: { alertsIndexPattern: string; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; size: number; }) => { allow_no_indices: boolean; body: { fields: { field: string; include_unmapped: boolean; }[]; query: { bool: { filter: { bool: { must: never[]; filter: ({ bool: { should: { match_phrase: { 'kibana.alert.workflow_status': string; }; }[]; minimum_should_match: number; }; range?: undefined; } | { range: { '@timestamp': { gte: string; lte: string; format: string; }; }; bool?: undefined; })[]; should: never[]; must_not: { exists: { field: string; }; }[]; }; }[]; }; }; runtime_mappings: {}; size: number; sort: ({ 'kibana.alert.risk_score': { order: string; }; '@timestamp'?: undefined; } | { '@timestamp': { order: string; }; 'kibana.alert.risk_score'?: undefined; })[]; _source: boolean; }; ignore_unavailable: boolean; index: string[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -131,7 +131,7 @@ "tags": [], "label": "{\n alertsIndexPattern,\n anonymizationFields,\n size,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -142,7 +142,7 @@ "tags": [], "label": "alertsIndexPattern", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", "deprecated": false, "trackAdoption": false }, @@ -156,7 +156,7 @@ "signature": [ "{ id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", "deprecated": false, "trackAdoption": false }, @@ -167,7 +167,7 @@ "tags": [], "label": "size", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts", "deprecated": false, "trackAdoption": false } @@ -197,7 +197,7 @@ }, ") => Record" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -217,7 +217,7 @@ "text": "MaybeRawData" } ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -246,7 +246,7 @@ }, " | undefined; }) => { decodedChunk: string; bedrockBuffer: Uint8Array; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -257,7 +257,7 @@ "tags": [], "label": "{\n chunk,\n bedrockBuffer,\n chunkHandler,\n logger,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -271,7 +271,7 @@ "signature": [ "Uint8Array" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false }, @@ -285,7 +285,7 @@ "signature": [ "Uint8Array" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false }, @@ -299,7 +299,7 @@ "signature": [ "((chunk: string) => void) | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -313,7 +313,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -338,7 +338,7 @@ }, " | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false } @@ -360,7 +360,7 @@ "signature": [ "({ anonymizationFields, field, }: { anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; field: string; }) => boolean" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -371,7 +371,7 @@ "tags": [], "label": "{\n anonymizationFields,\n field,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -385,7 +385,7 @@ "signature": [ "{ id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false }, @@ -396,7 +396,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false } @@ -416,7 +416,7 @@ "signature": [ "({ anonymizationFields, field, }: { anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; field: string; }) => boolean" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -427,7 +427,7 @@ "tags": [], "label": "{\n anonymizationFields,\n field,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -441,7 +441,7 @@ "signature": [ "{ id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false }, @@ -452,7 +452,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false } @@ -472,7 +472,7 @@ "signature": [ "({ anonymizationFields, field, }: { anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; field: string; }) => boolean" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -483,7 +483,7 @@ "tags": [], "label": "{\n anonymizationFields,\n field,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -497,7 +497,7 @@ "signature": [ "{ id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false }, @@ -508,7 +508,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false } @@ -530,7 +530,7 @@ "signature": [ "(chunks: Uint8Array[]) => string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -546,7 +546,7 @@ "signature": [ "Uint8Array[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -567,7 +567,7 @@ "signature": [ "({ messageContent, replacements, }: { messageContent: string; replacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | null | undefined; }) => string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -578,7 +578,7 @@ "tags": [], "label": "{\n messageContent,\n replacements,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -589,7 +589,7 @@ "tags": [], "label": "messageContent", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false }, @@ -603,7 +603,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | null | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false } @@ -623,7 +623,7 @@ "signature": [ "({ messageContent, replacements, }: { messageContent: string; replacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\">; }) => string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -634,7 +634,7 @@ "tags": [], "label": "{\n messageContent,\n replacements,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -645,7 +645,7 @@ "tags": [], "label": "messageContent", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false }, @@ -659,7 +659,7 @@ "signature": [ "{} & { [k: string]: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts", "deprecated": false, "trackAdoption": false } @@ -681,7 +681,7 @@ "signature": [ "(size?: number | undefined) => boolean" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -695,7 +695,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -714,7 +714,7 @@ "signature": [ "({ anonymizationFields, currentReplacements, getAnonymizedValue, onNewReplacements, rawData, }: { anonymizationFields?: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[] | undefined; currentReplacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; getAnonymizedValue: ({ currentReplacements, rawValue, }: { currentReplacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; rawValue: string; }) => string; onNewReplacements?: ((replacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\">) => void) | undefined; rawData: string | Record; }) => string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -725,7 +725,7 @@ "tags": [], "label": "{\n anonymizationFields,\n currentReplacements,\n getAnonymizedValue,\n onNewReplacements,\n rawData,\n}", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -739,7 +739,7 @@ "signature": [ "{ id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[] | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -753,7 +753,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -767,7 +767,7 @@ "signature": [ "({ currentReplacements, rawValue, }: { currentReplacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; rawValue: string; }) => string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -778,7 +778,7 @@ "tags": [], "label": "{\n currentReplacements,\n rawValue,\n }", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -792,7 +792,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -803,7 +803,7 @@ "tags": [], "label": "rawValue", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false } @@ -822,7 +822,7 @@ "signature": [ "((replacements: Zod.objectOutputType<{}, Zod.ZodString, \"strip\">) => void) | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -836,7 +836,7 @@ "signature": [ "Zod.objectOutputType<{}, Zod.ZodString, \"strip\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -854,7 +854,7 @@ "signature": [ "string | Record" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx", "deprecated": false, "trackAdoption": false } @@ -878,7 +878,7 @@ "signature": [ "{ connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -893,7 +893,7 @@ "signature": [ "{ messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -908,7 +908,7 @@ "signature": [ "{ messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -923,7 +923,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -938,7 +938,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -953,7 +953,7 @@ "signature": [ "{ id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -970,7 +970,7 @@ "signature": [ "{ readonly assistantModelEvaluation: boolean; readonly defendInsights: boolean; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -987,7 +987,7 @@ "signature": [ "{ title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1004,7 +1004,7 @@ "signature": [ "{ title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1019,7 +1019,7 @@ "signature": [ "{ connectorId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1034,7 +1034,7 @@ "signature": [ "{ connectorId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1049,7 +1049,7 @@ "signature": [ "{ id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1064,7 +1064,7 @@ "signature": [ "{ status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1079,7 +1079,7 @@ "signature": [ "{ connectorId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1094,7 +1094,7 @@ "signature": [ "{ connectorId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1109,7 +1109,7 @@ "signature": [ "{ stats: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1124,7 +1124,7 @@ "signature": [ "{ size: number; subAction: \"invokeAI\" | \"invokeStream\"; alertsIndexPattern: string; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; model?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1139,7 +1139,7 @@ "signature": [ "{ size: number; subAction: \"invokeAI\" | \"invokeStream\"; alertsIndexPattern: string; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; model?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1154,7 +1154,7 @@ "signature": [ "{ id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1169,7 +1169,7 @@ "signature": [ "{ id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1186,7 +1186,7 @@ "signature": [ "{ connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1203,7 +1203,7 @@ "signature": [ "{ newDiscoveriesCount: number; newConnectorResultsCount: number; statsPerConnector: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1220,7 +1220,7 @@ "signature": [ "\"running\" | \"succeeded\" | \"failed\" | \"canceled\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1235,7 +1235,7 @@ "signature": [ "{ running: \"running\"; succeeded: \"succeeded\"; failed: \"failed\"; canceled: \"canceled\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1250,7 +1250,7 @@ "signature": [ "{ id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; alertsContextCount?: number | undefined; attackDiscoveries?: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[] | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1265,7 +1265,7 @@ "signature": [ "{ name: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1280,7 +1280,7 @@ "signature": [ "{ namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1295,7 +1295,7 @@ "signature": [ "{ name: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1310,7 +1310,7 @@ "signature": [ "{ namespace: string; name: string; users: { id?: string | undefined; name?: string | undefined; }[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1325,7 +1325,7 @@ "signature": [ "{ id: string; namespace?: string | undefined; name?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1340,7 +1340,7 @@ "signature": [ "{ ids?: string[] | undefined; query?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1355,7 +1355,7 @@ "signature": [ "{ total: number; succeeded: number; failed: number; skipped: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1370,7 +1370,7 @@ "signature": [ "{ connectorId: string; messages: { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }[]; persist: boolean; conversationId?: string | undefined; model?: string | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; promptId?: string | undefined; isStream?: boolean | undefined; responseLanguage?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1385,7 +1385,7 @@ "signature": [ "{ connectorId: string; messages: { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }[]; persist: boolean; conversationId?: string | undefined; model?: string | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; promptId?: string | undefined; isStream?: boolean | undefined; responseLanguage?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1400,7 +1400,7 @@ "signature": [ "{ connectorId: string; messages: { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }[]; persist: boolean; conversationId?: string | undefined; model?: string | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; promptId?: string | undefined; isStream?: boolean | undefined; responseLanguage?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1417,7 +1417,7 @@ "signature": [ "{ role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1434,7 +1434,7 @@ "signature": [ "\"user\" | \"system\" | \"assistant\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1449,7 +1449,7 @@ "signature": [ "{ user: \"user\"; system: \"system\"; assistant: \"assistant\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1466,7 +1466,7 @@ "signature": [ "\"assistant\" | \"insights\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1481,7 +1481,7 @@ "signature": [ "{ assistant: \"assistant\"; insights: \"insights\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1498,7 +1498,7 @@ "signature": [ "\"medium\" | \"high\" | \"low\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1513,7 +1513,7 @@ "signature": [ "{ medium: \"medium\"; high: \"high\"; low: \"low\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1528,7 +1528,7 @@ "signature": [ "{ title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1543,7 +1543,7 @@ "signature": [ "{ id: string; name?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1558,7 +1558,7 @@ "signature": [ "{ messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1573,7 +1573,7 @@ "signature": [ "{ id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1588,7 +1588,7 @@ "signature": [ "\"CONVERSATION_NOT_MODIFIED\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1603,7 +1603,7 @@ "signature": [ "{ id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1618,7 +1618,7 @@ "signature": [ "{ attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1633,7 +1633,7 @@ "signature": [ "{ created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1648,7 +1648,7 @@ "signature": [ "{ timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1663,7 +1663,7 @@ "signature": [ "{ id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1678,7 +1678,7 @@ "signature": [ "{ title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1693,7 +1693,7 @@ "signature": [ "{ title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1708,7 +1708,7 @@ "signature": [ "{ id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1723,7 +1723,7 @@ "signature": [ "{ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1738,7 +1738,7 @@ "signature": [ "{ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1753,7 +1753,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1768,7 +1768,7 @@ "signature": [ "{ resource?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1783,7 +1783,7 @@ "signature": [ "{ resource?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1798,7 +1798,7 @@ "signature": [ "{ ignoreSecurityLabs: boolean; modelId?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1813,7 +1813,7 @@ "signature": [ "{ modelId?: string | undefined; ignoreSecurityLabs?: boolean | \"true\" | \"false\" | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1828,7 +1828,7 @@ "signature": [ "{ success?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1840,7 +1840,7 @@ "tags": [], "label": "DEFEND_INSIGHTS", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1852,7 +1852,7 @@ "tags": [], "label": "DEFEND_INSIGHTS_BY_ID", "description": [], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1867,7 +1867,7 @@ "signature": [ "\"defend-insights\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1884,7 +1884,7 @@ "signature": [ "{ group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1899,7 +1899,7 @@ "signature": [ "{ status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1916,7 +1916,7 @@ "signature": [ "{ id: string; value: string; endpointId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1933,7 +1933,7 @@ "signature": [ "{ date: string; durationMs: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1948,7 +1948,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1963,7 +1963,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1978,7 +1978,7 @@ "signature": [ "{ data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; } | null | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1995,7 +1995,7 @@ "signature": [ "{ group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2010,7 +2010,7 @@ "signature": [ "{ type?: \"incompatible_antivirus\" | \"noisy_process_tree\" | undefined; size?: number | undefined; ids?: string[] | undefined; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; connector_id?: string | undefined; endpoint_ids?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2025,7 +2025,7 @@ "signature": [ "{ type?: \"incompatible_antivirus\" | \"noisy_process_tree\" | undefined; size?: number | undefined; ids?: unknown; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; connector_id?: string | undefined; endpoint_ids?: unknown; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2040,7 +2040,7 @@ "signature": [ "{ data: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2055,7 +2055,7 @@ "signature": [ "{ subAction: \"invokeAI\" | \"invokeStream\"; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; model?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2070,7 +2070,7 @@ "signature": [ "{ subAction: \"invokeAI\" | \"invokeStream\"; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; model?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2085,7 +2085,7 @@ "signature": [ "{ id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2100,7 +2100,7 @@ "signature": [ "{ id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2117,7 +2117,7 @@ "signature": [ "\"running\" | \"succeeded\" | \"failed\" | \"canceled\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2132,7 +2132,7 @@ "signature": [ "{ running: \"running\"; succeeded: \"succeeded\"; failed: \"failed\"; canceled: \"canceled\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2147,7 +2147,7 @@ "signature": [ "{ id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2164,7 +2164,7 @@ "signature": [ "\"incompatible_antivirus\" | \"noisy_process_tree\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2179,7 +2179,7 @@ "signature": [ "{ incompatible_antivirus: \"incompatible_antivirus\"; noisy_process_tree: \"noisy_process_tree\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2194,7 +2194,7 @@ "signature": [ "{ id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2209,7 +2209,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2224,7 +2224,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2239,7 +2239,7 @@ "signature": [ "{ id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2254,7 +2254,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2269,7 +2269,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2284,7 +2284,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2299,7 +2299,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2314,7 +2314,7 @@ "signature": [ "{ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2329,7 +2329,7 @@ "signature": [ "{ required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2344,7 +2344,7 @@ "signature": [ "{ source: string; type: \"document\"; text: string; kbResource: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2359,7 +2359,7 @@ "signature": [ "{ source: string; type: \"document\"; text: string; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2374,7 +2374,7 @@ "signature": [ "\"document\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2389,7 +2389,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2404,7 +2404,7 @@ "signature": [ "\"/api/security_ai_assistant/anonymization_fields\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2419,7 +2419,7 @@ "signature": [ "\"/api/security_ai_assistant/anonymization_fields/_bulk_action\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2434,7 +2434,7 @@ "signature": [ "\"/api/security_ai_assistant/anonymization_fields/_find\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2449,7 +2449,7 @@ "signature": [ "\"/api/security_ai_assistant/chat/complete\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2464,7 +2464,7 @@ "signature": [ "\"/api/security_ai_assistant/current_user/conversations\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2479,7 +2479,7 @@ "signature": [ "\"/internal/elastic_assistant/current_user/conversations/_bulk_action\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2494,7 +2494,7 @@ "signature": [ "\"/api/security_ai_assistant/current_user/conversations/{id}\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2509,7 +2509,7 @@ "signature": [ "\"/internal/elastic_assistant/current_user/conversations/{id}/messages\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2524,7 +2524,7 @@ "signature": [ "\"/api/security_ai_assistant/current_user/conversations/_find\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2539,7 +2539,7 @@ "signature": [ "\"/internal/elastic_assistant/evaluate\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2554,7 +2554,7 @@ "signature": [ "\"1\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2569,7 +2569,7 @@ "signature": [ "\"/internal/elastic_assistant/current_user/conversations\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2584,7 +2584,7 @@ "signature": [ "\"/internal/elastic_assistant\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2599,7 +2599,7 @@ "signature": [ "\"/internal/elastic_assistant/knowledge_base/entries\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2614,7 +2614,7 @@ "signature": [ "\"/internal/elastic_assistant/knowledge_base/entries/_bulk_action\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2629,7 +2629,7 @@ "signature": [ "\"/internal/elastic_assistant/knowledge_base/entries/_find\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2644,7 +2644,7 @@ "signature": [ "\"/internal/elastic_assistant/knowledge_base/_indices\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2659,7 +2659,7 @@ "signature": [ "\"/internal/elastic_assistant/knowledge_base/{resource?}\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2674,7 +2674,7 @@ "signature": [ "\"/api/security_ai_assistant/prompts\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2689,7 +2689,7 @@ "signature": [ "\"/api/security_ai_assistant/prompts/_bulk_action\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2704,7 +2704,7 @@ "signature": [ "\"/api/security_ai_assistant/prompts/_find\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2719,7 +2719,7 @@ "signature": [ "\"/api/security_ai_assistant\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/constants.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2734,7 +2734,7 @@ "signature": [ "{ error: { message: string; status_code: number; }; id?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2749,7 +2749,7 @@ "signature": [ "{ actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; message?: string | undefined; size?: number | undefined; allow?: string[] | undefined; conversationId?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allowReplacement?: string[] | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2764,7 +2764,7 @@ "signature": [ "{ actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; message?: string | undefined; size?: number | undefined; allow?: string[] | undefined; conversationId?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allowReplacement?: string[] | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2779,7 +2779,7 @@ "signature": [ "{ connectorId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2794,7 +2794,7 @@ "signature": [ "{ connectorId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2809,7 +2809,7 @@ "signature": [ "{ data: string; status: string; connector_id: string; trace_data?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2824,7 +2824,7 @@ "signature": [ "{ per_page: number; page: number; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2839,7 +2839,7 @@ "signature": [ "{ per_page?: number | undefined; page?: number | undefined; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: unknown; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2854,7 +2854,7 @@ "signature": [ "{ page: number; data: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; perPage: number; total: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2869,7 +2869,7 @@ "signature": [ "\"title\" | \"updated_at\" | \"created_at\" | \"is_default\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2884,7 +2884,7 @@ "signature": [ "{ title: \"title\"; updated_at: \"updated_at\"; created_at: \"created_at\"; is_default: \"is_default\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2899,7 +2899,7 @@ "signature": [ "{ per_page: number; page: number; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2914,7 +2914,7 @@ "signature": [ "{ per_page?: number | undefined; page?: number | undefined; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: unknown; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2929,7 +2929,7 @@ "signature": [ "{ page: number; data: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; perPage: number; total: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2944,7 +2944,7 @@ "signature": [ "\"title\" | \"updated_at\" | \"created_at\" | \"is_default\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2959,7 +2959,7 @@ "signature": [ "{ title: \"title\"; updated_at: \"updated_at\"; created_at: \"created_at\"; is_default: \"is_default\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2974,7 +2974,7 @@ "signature": [ "{ per_page: number; page: number; sort_field?: \"name\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2989,7 +2989,7 @@ "signature": [ "{ per_page?: number | undefined; page?: number | undefined; sort_field?: \"name\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: unknown; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3004,7 +3004,7 @@ "signature": [ "{ page: number; data: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; perPage: number; total: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3019,7 +3019,7 @@ "signature": [ "\"name\" | \"updated_at\" | \"created_at\" | \"is_default\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3034,7 +3034,7 @@ "signature": [ "{ name: \"name\"; updated_at: \"updated_at\"; created_at: \"created_at\"; is_default: \"is_default\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3051,7 +3051,7 @@ "signature": [ "{ date: string; durationMs: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3066,7 +3066,7 @@ "signature": [ "{ assistantModelEvaluation: boolean; defendInsights: boolean; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3081,7 +3081,7 @@ "signature": [ "{ datasets: string[]; graphs: string[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3096,7 +3096,7 @@ "signature": [ "{ indices: string[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3111,7 +3111,7 @@ "signature": [ "{ id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3126,7 +3126,7 @@ "signature": [ "{ type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3141,7 +3141,7 @@ "signature": [ "{ inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3156,7 +3156,7 @@ "signature": [ "{ type: \"index\"; index: string; field: string; description: string; queryDescription: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3171,7 +3171,7 @@ "signature": [ "{ type: \"index\"; index: string; field: string; description: string; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3186,7 +3186,7 @@ "signature": [ "\"index\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3201,7 +3201,7 @@ "signature": [ "{ id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3218,7 +3218,7 @@ "signature": [ "{ description: string; fieldName: string; fieldType: string; }[]" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3233,7 +3233,7 @@ "signature": [ "\"internal\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3248,7 +3248,7 @@ "signature": [ "{ ids?: string[] | undefined; query?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3263,7 +3263,7 @@ "signature": [ "\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3278,7 +3278,7 @@ "signature": [ "{ id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3293,7 +3293,7 @@ "signature": [ "{ attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3308,7 +3308,7 @@ "signature": [ "{ created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3323,7 +3323,7 @@ "signature": [ "{ total: number; succeeded: number; failed: number; skipped: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3338,7 +3338,7 @@ "signature": [ "{ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3353,7 +3353,7 @@ "signature": [ "{ id: string; name?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3368,7 +3368,7 @@ "signature": [ "{ error: string; message: string; statusCode: number; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3383,7 +3383,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3398,7 +3398,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3415,7 +3415,7 @@ "signature": [ "{ success?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3432,7 +3432,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/types.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3449,7 +3449,7 @@ "signature": [ "{ timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3464,7 +3464,7 @@ "signature": [ "{} & { [k: string]: unknown; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3481,7 +3481,7 @@ "signature": [ "\"user\" | \"system\" | \"assistant\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3496,7 +3496,7 @@ "signature": [ "{ user: \"user\"; system: \"system\"; assistant: \"assistant\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3513,7 +3513,7 @@ "signature": [ "{ source: string; required: boolean; kbResource: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3525,12 +3525,12 @@ "tags": [], "label": "NonEmptyString", "description": [ - "\nA string that is not empty and does not contain only whitespace" + "\nA string that does not contain only whitespace characters" ], "signature": [ "string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3545,7 +3545,7 @@ "signature": [ "{ message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3560,7 +3560,7 @@ "signature": [ "{ message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3575,7 +3575,7 @@ "signature": [ "{ create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3590,7 +3590,7 @@ "signature": [ "{ create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3605,7 +3605,7 @@ "signature": [ "{ attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3620,7 +3620,7 @@ "signature": [ "{ create?: ({ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; update?: ({ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3635,7 +3635,7 @@ "signature": [ "{ create?: ({ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; update?: ({ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3650,7 +3650,7 @@ "signature": [ "{ attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3665,7 +3665,7 @@ "signature": [ "{ size: number; alertsIndexPattern: string; replacements: {} & { [k: string]: string; }; graphs: string[]; datasetName: string; connectorIds: string[]; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; evaluatorConnectorId?: string | undefined; runName?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3680,7 +3680,7 @@ "signature": [ "{ size: number; alertsIndexPattern: string; replacements: {} & { [k: string]: string; }; graphs: string[]; datasetName: string; connectorIds: string[]; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; evaluatorConnectorId?: string | undefined; runName?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3695,7 +3695,7 @@ "signature": [ "{ graphs: string[]; datasetName: string; connectorIds: string[]; size?: number | undefined; alertsIndexPattern?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; evaluatorConnectorId?: string | undefined; runName?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3710,7 +3710,7 @@ "signature": [ "{ success: boolean; evaluationId: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3725,7 +3725,7 @@ "signature": [ "{ id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3740,7 +3740,7 @@ "signature": [ "{ system: \"system\"; quick: \"quick\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3757,7 +3757,7 @@ "signature": [ "\"Other\" | \"OpenAI\" | \"Azure OpenAI\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3772,7 +3772,7 @@ "signature": [ "{ Other: \"Other\"; OpenAI: \"OpenAI\"; \"Azure OpenAI\": \"Azure OpenAI\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3787,7 +3787,7 @@ "signature": [ "\"public\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3802,7 +3802,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3817,7 +3817,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3832,7 +3832,7 @@ "signature": [ "{ id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3847,7 +3847,7 @@ "signature": [ "{} & { [k: string]: unknown; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3862,7 +3862,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3877,7 +3877,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3892,7 +3892,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3907,7 +3907,7 @@ "signature": [ "{ resource?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3922,7 +3922,7 @@ "signature": [ "{ resource?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3937,7 +3937,7 @@ "signature": [ "{ elser_exists?: boolean | undefined; index_exists?: boolean | undefined; is_setup_available?: boolean | undefined; is_setup_in_progress?: boolean | undefined; pipeline_exists?: boolean | undefined; security_labs_exists?: boolean | undefined; user_data_exists?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3954,7 +3954,7 @@ "signature": [ "{} & { [k: string]: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3969,7 +3969,7 @@ "signature": [ "{ id: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3984,7 +3984,7 @@ "signature": [ "\"security\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3999,7 +3999,7 @@ "signature": [ "{ id: string; namespace: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4014,7 +4014,7 @@ "signature": [ "\"asc\" | \"desc\"" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4029,7 +4029,7 @@ "signature": [ "{ asc: \"asc\"; desc: \"desc\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4046,7 +4046,7 @@ "signature": [ "{ transactionId?: string | undefined; traceId?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4061,7 +4061,7 @@ "signature": [ "{ id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4076,7 +4076,7 @@ "signature": [ "{ id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4091,7 +4091,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4106,7 +4106,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4121,7 +4121,7 @@ "signature": [ "{ id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4136,7 +4136,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4151,7 +4151,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4166,7 +4166,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4181,7 +4181,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4196,7 +4196,7 @@ "signature": [ "{ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4213,7 +4213,7 @@ "signature": [ "{ id?: string | undefined; name?: string | undefined; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4230,7 +4230,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4247,7 +4247,7 @@ "signature": [ "{ modelId: string; tokens: {} & { [k: string]: number; }; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4264,7 +4264,7 @@ "signature": [ "{ readonly public: { readonly v1: \"2023-10-31\"; }; readonly internal: { readonly v1: \"1\"; }; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4279,7 +4279,7 @@ "signature": [ "Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4292,9 +4292,9 @@ "label": "AppendConversationMessageRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ messages: Zod.ZodArray, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }>" + "Zod.ZodObject<{ messages: Zod.ZodArray, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4307,9 +4307,9 @@ "label": "AppendConversationMessageRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4322,9 +4322,9 @@ "label": "AppendConversationMessageResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4337,9 +4337,9 @@ "label": "AttackDiscoveries", "description": [], "signature": [ - "Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">" + "Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4352,9 +4352,9 @@ "label": "AttackDiscovery", "description": [], "signature": [ - "Zod.ZodObject<{ alertIds: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>" + "Zod.ZodObject<{ alertIds: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4367,9 +4367,9 @@ "label": "AttackDiscoveryCancelRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ connectorId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; }, { connectorId: string; }>" + "Zod.ZodObject<{ connectorId: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; }, { connectorId: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4382,9 +4382,9 @@ "label": "AttackDiscoveryCancelResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4397,9 +4397,9 @@ "label": "AttackDiscoveryCreateProps", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodOptional; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; alertsContextCount: Zod.ZodOptional; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodOptional; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; alertsContextCount: Zod.ZodOptional; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4412,9 +4412,9 @@ "label": "AttackDiscoveryGetRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ connectorId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; }, { connectorId: string; }>" + "Zod.ZodObject<{ connectorId: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; }, { connectorId: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4427,9 +4427,9 @@ "label": "AttackDiscoveryGetResponse", "description": [], "signature": [ - "Zod.ZodObject<{ data: Zod.ZodOptional; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>>; stats: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { stats: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; } | undefined; }, { stats: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; } | undefined; }>" + "Zod.ZodObject<{ data: Zod.ZodOptional; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>>; stats: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { stats: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; } | undefined; }, { stats: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4442,9 +4442,9 @@ "label": "AttackDiscoveryPostRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ alertsIndexPattern: Zod.ZodString; anonymizationFields: Zod.ZodArray; field: Zod.ZodString; allowed: Zod.ZodOptional; anonymized: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; model: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; size: Zod.ZodNumber; subAction: Zod.ZodEnum<[\"invokeAI\", \"invokeStream\"]>; }, \"strip\", Zod.ZodTypeAny, { size: number; subAction: \"invokeAI\" | \"invokeStream\"; alertsIndexPattern: string; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; model?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, { size: number; subAction: \"invokeAI\" | \"invokeStream\"; alertsIndexPattern: string; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; model?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }>" + "Zod.ZodObject<{ alertsIndexPattern: Zod.ZodString; anonymizationFields: Zod.ZodArray; timestamp: Zod.ZodOptional>; field: Zod.ZodString; allowed: Zod.ZodOptional; anonymized: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; model: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; size: Zod.ZodNumber; subAction: Zod.ZodEnum<[\"invokeAI\", \"invokeStream\"]>; }, \"strip\", Zod.ZodTypeAny, { size: number; subAction: \"invokeAI\" | \"invokeStream\"; alertsIndexPattern: string; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; model?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, { size: number; subAction: \"invokeAI\" | \"invokeStream\"; alertsIndexPattern: string; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; model?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4457,9 +4457,9 @@ "label": "AttackDiscoveryPostResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4472,9 +4472,9 @@ "label": "AttackDiscoveryResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; alertsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; attackDiscoveries: Zod.ZodArray; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; lastViewedAt: string; attackDiscoveries: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[]; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; alertsContextCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4489,7 +4489,7 @@ "signature": [ "Zod.ZodObject<{ hasViewed: Zod.ZodBoolean; count: Zod.ZodNumber; connectorId: Zod.ZodString; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4504,7 +4504,7 @@ "signature": [ "Zod.ZodObject<{ newDiscoveriesCount: Zod.ZodNumber; newConnectorResultsCount: Zod.ZodNumber; statsPerConnector: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }, { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { newDiscoveriesCount: number; newConnectorResultsCount: number; statsPerConnector: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; }, { newDiscoveriesCount: number; newConnectorResultsCount: number; statsPerConnector: { connectorId: string; count: number; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; hasViewed: boolean; }[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4519,7 +4519,7 @@ "signature": [ "Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4534,7 +4534,7 @@ "signature": [ "{ running: \"running\"; succeeded: \"succeeded\"; failed: \"failed\"; canceled: \"canceled\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4547,9 +4547,9 @@ "label": "AttackDiscoveryUpdateProps", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; alertsContextCount: Zod.ZodOptional; attackDiscoveries: Zod.ZodOptional; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">>; status: Zod.ZodOptional>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; generationIntervals: Zod.ZodOptional, \"many\">>; backingIndex: Zod.ZodString; failureReason: Zod.ZodOptional; lastViewedAt: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; alertsContextCount?: number | undefined; attackDiscoveries?: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[] | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; }, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; alertsContextCount?: number | undefined; attackDiscoveries?: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[] | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; alertsContextCount: Zod.ZodOptional; attackDiscoveries: Zod.ZodOptional; id: Zod.ZodOptional; detailsMarkdown: Zod.ZodString; entitySummaryMarkdown: Zod.ZodOptional; mitreAttackTactics: Zod.ZodOptional>; summaryMarkdown: Zod.ZodString; title: Zod.ZodString; timestamp: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }, { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }>, \"many\">>; status: Zod.ZodOptional>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; generationIntervals: Zod.ZodOptional, \"many\">>; backingIndex: Zod.ZodString; failureReason: Zod.ZodOptional; lastViewedAt: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; alertsContextCount?: number | undefined; attackDiscoveries?: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[] | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; }, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; alertsContextCount?: number | undefined; attackDiscoveries?: { title: string; alertIds: string[]; detailsMarkdown: string; summaryMarkdown: string; id?: string | undefined; timestamp?: string | undefined; entitySummaryMarkdown?: string | undefined; mitreAttackTactics?: string[] | undefined; }[] | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4564,7 +4564,7 @@ "signature": [ "Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, \"strip\", Zod.ZodTypeAny, { name: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }, { name: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4579,7 +4579,7 @@ "signature": [ "Zod.ZodObject<{ namespace: Zod.ZodOptional; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }, { namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4594,7 +4594,7 @@ "signature": [ "Zod.ZodObject<{ name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { name: string; }, { name: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4609,7 +4609,7 @@ "signature": [ "Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, \"strip\", Zod.ZodTypeAny, { namespace: string; name: string; users: { id?: string | undefined; name?: string | undefined; }[]; }, { namespace: string; name: string; users: { id?: string | undefined; name?: string | undefined; }[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4622,9 +4622,9 @@ "label": "BaseUpdateProps", "description": [], "signature": [ - "Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, \"strip\", Zod.ZodTypeAny, { id: string; namespace?: string | undefined; name?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }, { id: string; namespace?: string | undefined; name?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }>" + "Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, \"strip\", Zod.ZodTypeAny, { id: string; namespace?: string | undefined; name?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }, { id: string; namespace?: string | undefined; name?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4639,7 +4639,7 @@ "signature": [ "Zod.ZodObject<{ query: Zod.ZodOptional; ids: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { ids?: string[] | undefined; query?: string | undefined; }, { ids?: string[] | undefined; query?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4654,7 +4654,7 @@ "signature": [ "Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4669,7 +4669,7 @@ "signature": [ "Zod.ZodObject<{ conversationId: Zod.ZodOptional; promptId: Zod.ZodOptional; isStream: Zod.ZodOptional; responseLanguage: Zod.ZodOptional; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; connectorId: Zod.ZodString; model: Zod.ZodOptional; persist: Zod.ZodBoolean; messages: Zod.ZodArray; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; data: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; fields_to_anonymize: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }, { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; messages: { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }[]; persist: boolean; conversationId?: string | undefined; model?: string | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; promptId?: string | undefined; isStream?: boolean | undefined; responseLanguage?: string | undefined; }, { connectorId: string; messages: { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }[]; persist: boolean; conversationId?: string | undefined; model?: string | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; promptId?: string | undefined; isStream?: boolean | undefined; responseLanguage?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4684,7 +4684,7 @@ "signature": [ "Zod.ZodObject<{ conversationId: Zod.ZodOptional; promptId: Zod.ZodOptional; isStream: Zod.ZodOptional; responseLanguage: Zod.ZodOptional; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; connectorId: Zod.ZodString; model: Zod.ZodOptional; persist: Zod.ZodBoolean; messages: Zod.ZodArray; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; data: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; fields_to_anonymize: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }, { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; messages: { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }[]; persist: boolean; conversationId?: string | undefined; model?: string | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; promptId?: string | undefined; isStream?: boolean | undefined; responseLanguage?: string | undefined; }, { connectorId: string; messages: { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }[]; persist: boolean; conversationId?: string | undefined; model?: string | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; promptId?: string | undefined; isStream?: boolean | undefined; responseLanguage?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4699,7 +4699,7 @@ "signature": [ "Zod.ZodObject<{ content: Zod.ZodOptional; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; data: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; fields_to_anonymize: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }, { role: \"user\" | \"system\" | \"assistant\"; data?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; content?: string | undefined; fields_to_anonymize?: string[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4714,7 +4714,7 @@ "signature": [ "Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4729,7 +4729,7 @@ "signature": [ "{ user: \"user\"; system: \"system\"; assistant: \"assistant\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4744,7 +4744,7 @@ "signature": [ "Zod.ZodEnum<[\"assistant\", \"insights\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4759,7 +4759,7 @@ "signature": [ "{ assistant: \"assistant\"; insights: \"insights\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4774,7 +4774,7 @@ "signature": [ "Zod.ZodEnum<[\"low\", \"medium\", \"high\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4789,7 +4789,7 @@ "signature": [ "{ medium: \"medium\"; high: \"high\"; low: \"low\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4802,9 +4802,9 @@ "label": "ConversationCreateProps", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodOptional; title: Zod.ZodString; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodOptional; title: Zod.ZodString; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4819,7 +4819,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4832,9 +4832,9 @@ "label": "ConversationMessageCreateProps", "description": [], "signature": [ - "Zod.ZodObject<{ messages: Zod.ZodArray, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }>" + "Zod.ZodObject<{ messages: Zod.ZodArray, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }, { messages: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4847,9 +4847,9 @@ "label": "ConversationResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4864,7 +4864,7 @@ "signature": [ "Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4879,7 +4879,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; name: Zod.ZodOptional; skip_reason: Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4892,9 +4892,9 @@ "label": "ConversationsBulkCrudActionResponse", "description": [], "signature": [ - "Zod.ZodObject<{ success: Zod.ZodOptional; status_code: Zod.ZodOptional; message: Zod.ZodOptional; conversations_count: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; created: Zod.ZodArray; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; conversations: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }>" + "Zod.ZodObject<{ success: Zod.ZodOptional; status_code: Zod.ZodOptional; message: Zod.ZodOptional; conversations_count: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; created: Zod.ZodArray; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; conversations: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4907,9 +4907,9 @@ "label": "ConversationsBulkCrudActionResults", "description": [], "signature": [ - "Zod.ZodObject<{ updated: Zod.ZodArray; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; created: Zod.ZodArray; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>" + "Zod.ZodObject<{ updated: Zod.ZodArray; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; created: Zod.ZodArray; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4922,9 +4922,9 @@ "label": "ConversationSummary", "description": [], "signature": [ - "Zod.ZodObject<{ content: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>" + "Zod.ZodObject<{ content: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4937,9 +4937,9 @@ "label": "ConversationUpdateProps", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4952,9 +4952,9 @@ "label": "CreateConversationRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodOptional; title: Zod.ZodString; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodOptional; title: Zod.ZodString; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4967,9 +4967,9 @@ "label": "CreateConversationResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4984,7 +4984,7 @@ "signature": [ "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>, \"strip\", Zod.ZodTypeAny, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>, \"strip\", Zod.ZodTypeAny, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4997,9 +4997,9 @@ "label": "CreateKnowledgeBaseEntryResponse", "description": [], "signature": [ - "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" + "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5014,7 +5014,7 @@ "signature": [ "Zod.ZodObject<{ resource: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { resource?: string | undefined; }, { resource?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5029,7 +5029,7 @@ "signature": [ "Zod.ZodObject<{ modelId: Zod.ZodOptional; ignoreSecurityLabs: Zod.ZodDefault, Zod.ZodBoolean]>, boolean, boolean | \"true\" | \"false\">>>; }, \"strip\", Zod.ZodTypeAny, { ignoreSecurityLabs: boolean; modelId?: string | undefined; }, { modelId?: string | undefined; ignoreSecurityLabs?: boolean | \"true\" | \"false\" | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5044,7 +5044,7 @@ "signature": [ "Zod.ZodObject<{ success: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { success?: boolean | undefined; }, { success?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5061,7 +5061,7 @@ "signature": [ "{ readonly assistantModelEvaluation: false; readonly defendInsights: false; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/index.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5076,7 +5076,7 @@ "signature": [ "Zod.ZodObject<{ group: Zod.ZodString; events: Zod.ZodOptional, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5089,9 +5089,9 @@ "label": "DefendInsightCreateProps", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodOptional; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; eventsContextCount: Zod.ZodOptional; endpointIds: Zod.ZodArray; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodOptional; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; eventsContextCount: Zod.ZodOptional; endpointIds: Zod.ZodArray, \"many\">; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; id?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5106,7 +5106,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; endpointId: Zod.ZodString; value: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; value: string; endpointId: string; }, { id: string; value: string; endpointId: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5121,7 +5121,7 @@ "signature": [ "Zod.ZodObject<{ date: Zod.ZodString; durationMs: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { date: string; durationMs: number; }, { date: string; durationMs: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5134,9 +5134,9 @@ "label": "DefendInsightGetRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5149,9 +5149,9 @@ "label": "DefendInsightGetResponse", "description": [], "signature": [ - "Zod.ZodObject<{ data: Zod.ZodOptional; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>>>; }, \"strip\", Zod.ZodTypeAny, { data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; } | null | undefined; }, { data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; } | null | undefined; }>" + "Zod.ZodObject<{ data: Zod.ZodOptional; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray, \"many\">; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>>>; }, \"strip\", Zod.ZodTypeAny, { data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; } | null | undefined; }, { data?: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; } | null | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5166,7 +5166,7 @@ "signature": [ "Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5179,9 +5179,9 @@ "label": "DefendInsightsGetRequestQuery", "description": [], "signature": [ - "Zod.ZodObject<{ ids: Zod.ZodOptional, string[], unknown>>; connector_id: Zod.ZodOptional; type: Zod.ZodOptional>; status: Zod.ZodOptional>; endpoint_ids: Zod.ZodOptional, string[], unknown>>; size: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type?: \"incompatible_antivirus\" | \"noisy_process_tree\" | undefined; size?: number | undefined; ids?: string[] | undefined; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; connector_id?: string | undefined; endpoint_ids?: string[] | undefined; }, { type?: \"incompatible_antivirus\" | \"noisy_process_tree\" | undefined; size?: number | undefined; ids?: unknown; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; connector_id?: string | undefined; endpoint_ids?: unknown; }>" + "Zod.ZodObject<{ ids: Zod.ZodOptional, \"many\">, string[], unknown>>; connector_id: Zod.ZodOptional>; type: Zod.ZodOptional>; status: Zod.ZodOptional>; endpoint_ids: Zod.ZodOptional, \"many\">, string[], unknown>>; size: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type?: \"incompatible_antivirus\" | \"noisy_process_tree\" | undefined; size?: number | undefined; ids?: string[] | undefined; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; connector_id?: string | undefined; endpoint_ids?: string[] | undefined; }, { type?: \"incompatible_antivirus\" | \"noisy_process_tree\" | undefined; size?: number | undefined; ids?: unknown; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; connector_id?: string | undefined; endpoint_ids?: unknown; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5194,9 +5194,9 @@ "label": "DefendInsightsGetResponse", "description": [], "signature": [ - "Zod.ZodObject<{ data: Zod.ZodArray; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { data: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }[]; }, { data: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }[]; }>" + "Zod.ZodObject<{ data: Zod.ZodArray; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray, \"many\">; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { data: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }[]; }, { data: { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5209,9 +5209,9 @@ "label": "DefendInsightsPostRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ endpointIds: Zod.ZodArray; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; anonymizationFields: Zod.ZodArray; field: Zod.ZodString; allowed: Zod.ZodOptional; anonymized: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; model: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; subAction: Zod.ZodEnum<[\"invokeAI\", \"invokeStream\"]>; }, \"strip\", Zod.ZodTypeAny, { subAction: \"invokeAI\" | \"invokeStream\"; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; model?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, { subAction: \"invokeAI\" | \"invokeStream\"; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; model?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }>" + "Zod.ZodObject<{ endpointIds: Zod.ZodArray, \"many\">; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; anonymizationFields: Zod.ZodArray; timestamp: Zod.ZodOptional>; field: Zod.ZodString; allowed: Zod.ZodOptional; anonymized: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }, { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; model: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; subAction: Zod.ZodEnum<[\"invokeAI\", \"invokeStream\"]>; }, \"strip\", Zod.ZodTypeAny, { subAction: \"invokeAI\" | \"invokeStream\"; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; model?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, { subAction: \"invokeAI\" | \"invokeStream\"; anonymizationFields: { id: string; field: string; namespace?: string | undefined; timestamp?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; allowed?: boolean | undefined; anonymized?: boolean | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; model?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5224,9 +5224,9 @@ "label": "DefendInsightsPostResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray, \"many\">; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5239,9 +5239,9 @@ "label": "DefendInsightsResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodString; lastViewedAt: Zod.ZodString; eventsContextCount: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; status: Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>; endpointIds: Zod.ZodArray, \"many\">; insightType: Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>; insights: Zod.ZodArray, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">; apiConfig: Zod.ZodObject<{ connectorId: Zod.ZodString; actionTypeId: Zod.ZodString; defaultSystemPromptId: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>; namespace: Zod.ZodString; backingIndex: Zod.ZodString; generationIntervals: Zod.ZodArray, \"many\">; averageIntervalMs: Zod.ZodNumber; failureReason: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }, { id: string; namespace: string; createdAt: string; updatedAt: string; status: \"running\" | \"succeeded\" | \"failed\" | \"canceled\"; users: { id?: string | undefined; name?: string | undefined; }[]; apiConfig: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }; endpointIds: string[]; insightType: \"incompatible_antivirus\" | \"noisy_process_tree\"; lastViewedAt: string; backingIndex: string; generationIntervals: { date: string; durationMs: number; }[]; averageIntervalMs: number; insights: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[]; timestamp?: string | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; eventsContextCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5256,7 +5256,7 @@ "signature": [ "Zod.ZodEnum<[\"running\", \"succeeded\", \"failed\", \"canceled\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5271,7 +5271,7 @@ "signature": [ "{ running: \"running\"; succeeded: \"succeeded\"; failed: \"failed\"; canceled: \"canceled\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5284,9 +5284,9 @@ "label": "DefendInsightsUpdateProps", "description": [], "signature": [ - "Zod.ZodArray; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; eventsContextCount: Zod.ZodOptional; insights: Zod.ZodOptional, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">>; status: Zod.ZodOptional>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; generationIntervals: Zod.ZodOptional, \"many\">>; backingIndex: Zod.ZodString; failureReason: Zod.ZodOptional; lastViewedAt: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }>, \"many\">" + "Zod.ZodArray; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; eventsContextCount: Zod.ZodOptional; insights: Zod.ZodOptional, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">>; status: Zod.ZodOptional>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; generationIntervals: Zod.ZodOptional, \"many\">>; backingIndex: Zod.ZodString; failureReason: Zod.ZodOptional; lastViewedAt: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }>, \"many\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5301,7 +5301,7 @@ "signature": [ "Zod.ZodEnum<[\"incompatible_antivirus\", \"noisy_process_tree\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5316,7 +5316,7 @@ "signature": [ "{ incompatible_antivirus: \"incompatible_antivirus\"; noisy_process_tree: \"noisy_process_tree\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5329,9 +5329,9 @@ "label": "DefendInsightUpdateProps", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; eventsContextCount: Zod.ZodOptional; insights: Zod.ZodOptional, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">>; status: Zod.ZodOptional>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; generationIntervals: Zod.ZodOptional, \"many\">>; backingIndex: Zod.ZodString; failureReason: Zod.ZodOptional; lastViewedAt: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; eventsContextCount: Zod.ZodOptional; insights: Zod.ZodOptional, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }, { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }>, \"many\">>; status: Zod.ZodOptional>; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; generationIntervals: Zod.ZodOptional, \"many\">>; backingIndex: Zod.ZodString; failureReason: Zod.ZodOptional; lastViewedAt: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }, { id: string; backingIndex: string; status?: \"running\" | \"succeeded\" | \"failed\" | \"canceled\" | undefined; failureReason?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; lastViewedAt?: string | undefined; generationIntervals?: { date: string; durationMs: number; }[] | undefined; eventsContextCount?: number | undefined; insights?: { group: string; events?: { id: string; value: string; endpointId: string; }[] | undefined; }[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5344,9 +5344,9 @@ "label": "DeleteConversationRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5359,9 +5359,9 @@ "label": "DeleteConversationResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5374,9 +5374,9 @@ "label": "DeleteKnowledgeBaseEntryRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5389,9 +5389,9 @@ "label": "DeleteKnowledgeBaseEntryResponse", "description": [], "signature": [ - "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" + "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5404,9 +5404,9 @@ "label": "DocumentEntry", "description": [], "signature": [ - "Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>" + "Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5421,7 +5421,7 @@ "signature": [ "Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>, \"strip\", Zod.ZodTypeAny, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5436,7 +5436,7 @@ "signature": [ "Zod.ZodObject<{ required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }, \"strip\", Zod.ZodTypeAny, { required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5451,7 +5451,7 @@ "signature": [ "Zod.ZodObject<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { source: string; type: \"document\"; text: string; kbResource: string; }, { source: string; type: \"document\"; text: string; kbResource: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5466,7 +5466,7 @@ "signature": [ "Zod.ZodObject; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>, \"strip\", Zod.ZodTypeAny, { source: string; type: \"document\"; text: string; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; type: \"document\"; text: string; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5481,7 +5481,7 @@ "signature": [ "Zod.ZodLiteral<\"document\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5494,9 +5494,9 @@ "label": "DocumentEntryUpdateFields", "description": [], "signature": [ - "Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>" + "Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5509,9 +5509,9 @@ "label": "ErrorSchema", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodOptional; error: Zod.ZodObject<{ status_code: Zod.ZodNumber; message: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { message: string; status_code: number; }, { message: string; status_code: number; }>; }, \"strict\", Zod.ZodTypeAny, { error: { message: string; status_code: number; }; id?: string | undefined; }, { error: { message: string; status_code: number; }; id?: string | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodOptional>; error: Zod.ZodObject<{ status_code: Zod.ZodNumber; message: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { message: string; status_code: number; }, { message: string; status_code: number; }>; }, \"strict\", Zod.ZodTypeAny, { error: { message: string; status_code: number; }; id?: string | undefined; }, { error: { message: string; status_code: number; }; id?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5524,9 +5524,9 @@ "label": "ExecuteConnectorRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ conversationId: Zod.ZodOptional; message: Zod.ZodOptional; model: Zod.ZodOptional; subAction: Zod.ZodEnum<[\"invokeAI\", \"invokeStream\"]>; actionTypeId: Zod.ZodString; alertsIndexPattern: Zod.ZodOptional; allow: Zod.ZodOptional>; allowReplacement: Zod.ZodOptional>; replacements: Zod.ZodObject<{}, \"strip\", Zod.ZodString, Zod.objectOutputType<{}, Zod.ZodString, \"strip\">, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>; size: Zod.ZodOptional; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; message?: string | undefined; size?: number | undefined; allow?: string[] | undefined; conversationId?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allowReplacement?: string[] | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, { actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; message?: string | undefined; size?: number | undefined; allow?: string[] | undefined; conversationId?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allowReplacement?: string[] | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }>" + "Zod.ZodObject<{ conversationId: Zod.ZodOptional>; message: Zod.ZodOptional; model: Zod.ZodOptional; subAction: Zod.ZodEnum<[\"invokeAI\", \"invokeStream\"]>; actionTypeId: Zod.ZodString; alertsIndexPattern: Zod.ZodOptional; allow: Zod.ZodOptional>; allowReplacement: Zod.ZodOptional>; replacements: Zod.ZodObject<{}, \"strip\", Zod.ZodString, Zod.objectOutputType<{}, Zod.ZodString, \"strip\">, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>; size: Zod.ZodOptional; langSmithProject: Zod.ZodOptional; langSmithApiKey: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; message?: string | undefined; size?: number | undefined; allow?: string[] | undefined; conversationId?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allowReplacement?: string[] | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }, { actionTypeId: string; subAction: \"invokeAI\" | \"invokeStream\"; replacements: {} & { [k: string]: string; }; message?: string | undefined; size?: number | undefined; allow?: string[] | undefined; conversationId?: string | undefined; model?: string | undefined; alertsIndexPattern?: string | undefined; allowReplacement?: string[] | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5541,7 +5541,7 @@ "signature": [ "Zod.ZodObject<{ connectorId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; }, { connectorId: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5556,7 +5556,7 @@ "signature": [ "Zod.ZodObject<{ data: Zod.ZodString; connector_id: Zod.ZodString; status: Zod.ZodString; trace_data: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { data: string; status: string; connector_id: string; trace_data?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { data: string; status: string; connector_id: string; trace_data?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5571,7 +5571,7 @@ "signature": [ "Zod.ZodObject<{ fields: Zod.ZodOptional, string[], unknown>>; filter: Zod.ZodOptional; sort_field: Zod.ZodOptional>; sort_order: Zod.ZodOptional>; page: Zod.ZodDefault>; per_page: Zod.ZodDefault>; }, \"strip\", Zod.ZodTypeAny, { per_page: number; page: number; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: string[] | undefined; }, { per_page?: number | undefined; page?: number | undefined; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: unknown; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5584,9 +5584,9 @@ "label": "FindConversationsResponse", "description": [], "signature": [ - "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; data: Zod.ZodArray; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; data: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; perPage: number; total: number; }, { page: number; data: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; perPage: number; total: number; }>" + "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; data: Zod.ZodArray; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; data: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; perPage: number; total: number; }, { page: number; data: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; perPage: number; total: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5601,7 +5601,7 @@ "signature": [ "Zod.ZodEnum<[\"created_at\", \"is_default\", \"title\", \"updated_at\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5616,7 +5616,7 @@ "signature": [ "{ title: \"title\"; updated_at: \"updated_at\"; created_at: \"created_at\"; is_default: \"is_default\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5631,7 +5631,7 @@ "signature": [ "Zod.ZodObject<{ fields: Zod.ZodOptional, string[], unknown>>; filter: Zod.ZodOptional; sort_field: Zod.ZodOptional>; sort_order: Zod.ZodOptional>; page: Zod.ZodDefault>; per_page: Zod.ZodDefault>; }, \"strip\", Zod.ZodTypeAny, { per_page: number; page: number; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: string[] | undefined; }, { per_page?: number | undefined; page?: number | undefined; sort_field?: \"title\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: unknown; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5644,9 +5644,9 @@ "label": "FindKnowledgeBaseEntriesResponse", "description": [], "signature": [ - "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; data: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; data: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; perPage: number; total: number; }, { page: number; data: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; perPage: number; total: number; }>" + "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; data: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; data: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; perPage: number; total: number; }, { page: number; data: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; perPage: number; total: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5661,7 +5661,7 @@ "signature": [ "Zod.ZodEnum<[\"created_at\", \"is_default\", \"title\", \"updated_at\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5676,7 +5676,7 @@ "signature": [ "{ title: \"title\"; updated_at: \"updated_at\"; created_at: \"created_at\"; is_default: \"is_default\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5691,7 +5691,7 @@ "signature": [ "Zod.ZodObject<{ fields: Zod.ZodOptional, string[], unknown>>; filter: Zod.ZodOptional; sort_field: Zod.ZodOptional>; sort_order: Zod.ZodOptional>; page: Zod.ZodDefault>; per_page: Zod.ZodDefault>; }, \"strip\", Zod.ZodTypeAny, { per_page: number; page: number; sort_field?: \"name\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: string[] | undefined; }, { per_page?: number | undefined; page?: number | undefined; sort_field?: \"name\" | \"created_at\" | \"updated_at\" | \"is_default\" | undefined; sort_order?: \"asc\" | \"desc\" | undefined; filter?: string | undefined; fields?: unknown; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5704,9 +5704,9 @@ "label": "FindPromptsResponse", "description": [], "signature": [ - "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; data: Zod.ZodArray; name: Zod.ZodString; promptType: Zod.ZodEnum<[\"system\", \"quick\"]>; content: Zod.ZodString; categories: Zod.ZodOptional>; color: Zod.ZodOptional; isNewConversationDefault: Zod.ZodOptional; isDefault: Zod.ZodOptional; consumer: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; data: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; perPage: number; total: number; }, { page: number; data: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; perPage: number; total: number; }>" + "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; data: Zod.ZodArray; timestamp: Zod.ZodOptional>; name: Zod.ZodString; promptType: Zod.ZodEnum<[\"system\", \"quick\"]>; content: Zod.ZodString; categories: Zod.ZodOptional>; color: Zod.ZodOptional; isNewConversationDefault: Zod.ZodOptional; isDefault: Zod.ZodOptional; consumer: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; data: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; perPage: number; total: number; }, { page: number; data: { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }[]; perPage: number; total: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5721,7 +5721,7 @@ "signature": [ "Zod.ZodEnum<[\"created_at\", \"is_default\", \"name\", \"updated_at\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5736,7 +5736,7 @@ "signature": [ "{ name: \"name\"; updated_at: \"updated_at\"; created_at: \"created_at\"; is_default: \"is_default\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5751,7 +5751,7 @@ "signature": [ "Zod.ZodObject<{ date: Zod.ZodString; durationMs: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { date: string; durationMs: number; }, { date: string; durationMs: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5766,7 +5766,7 @@ "signature": [ "Zod.ZodObject<{ assistantModelEvaluation: Zod.ZodBoolean; defendInsights: Zod.ZodBoolean; }, \"strip\", Zod.ZodTypeAny, { assistantModelEvaluation: boolean; defendInsights: boolean; }, { assistantModelEvaluation: boolean; defendInsights: boolean; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5781,7 +5781,7 @@ "signature": [ "Zod.ZodObject<{ datasets: Zod.ZodArray; graphs: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { datasets: string[]; graphs: string[]; }, { datasets: string[]; graphs: string[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5796,7 +5796,7 @@ "signature": [ "Zod.ZodObject<{ indices: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { indices: string[]; }, { indices: string[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5809,9 +5809,9 @@ "label": "IndexEntry", "description": [], "signature": [ - "Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>" + "Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5826,7 +5826,7 @@ "signature": [ "Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>, \"strip\", Zod.ZodTypeAny, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5841,7 +5841,7 @@ "signature": [ "Zod.ZodObject<{ inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5856,7 +5856,7 @@ "signature": [ "Zod.ZodObject<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { type: \"index\"; index: string; field: string; description: string; queryDescription: string; }, { type: \"index\"; index: string; field: string; description: string; queryDescription: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5871,7 +5871,7 @@ "signature": [ "Zod.ZodObject; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>, \"strip\", Zod.ZodTypeAny, { type: \"index\"; index: string; field: string; description: string; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { type: \"index\"; index: string; field: string; description: string; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5886,7 +5886,7 @@ "signature": [ "Zod.ZodLiteral<\"index\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5899,9 +5899,9 @@ "label": "IndexEntryUpdateFields", "description": [], "signature": [ - "Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>" + "Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5916,7 +5916,7 @@ "signature": [ "Zod.ZodArray, \"many\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5931,7 +5931,7 @@ "signature": [ "Zod.ZodObject<{ query: Zod.ZodOptional; ids: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { ids?: string[] | undefined; query?: string | undefined; }, { ids?: string[] | undefined; query?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5946,7 +5946,7 @@ "signature": [ "Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5961,7 +5961,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; name: Zod.ZodOptional; skip_reason: Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5974,9 +5974,9 @@ "label": "KnowledgeBaseEntryBulkCrudActionResponse", "description": [], "signature": [ - "Zod.ZodObject<{ success: Zod.ZodOptional; statusCode: Zod.ZodOptional; message: Zod.ZodOptional; knowledgeBaseEntriesCount: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; created: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; knowledgeBaseEntries: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }>" + "Zod.ZodObject<{ success: Zod.ZodOptional; statusCode: Zod.ZodOptional; message: Zod.ZodOptional; knowledgeBaseEntriesCount: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; created: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; knowledgeBaseEntries: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5989,9 +5989,9 @@ "label": "KnowledgeBaseEntryBulkCrudActionResults", "description": [], "signature": [ - "Zod.ZodObject<{ updated: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; created: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>" + "Zod.ZodObject<{ updated: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; created: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6006,7 +6006,7 @@ "signature": [ "Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6021,7 +6021,7 @@ "signature": [ "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>, \"strip\", Zod.ZodTypeAny, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>, \"strip\", Zod.ZodTypeAny, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6036,7 +6036,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6051,7 +6051,7 @@ "signature": [ "Zod.ZodObject<{ statusCode: Zod.ZodNumber; error: Zod.ZodString; message: Zod.ZodString; }, \"strict\", Zod.ZodTypeAny, { error: string; message: string; statusCode: number; }, { error: string; message: string; statusCode: number; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6064,9 +6064,9 @@ "label": "KnowledgeBaseEntryResponse", "description": [], "signature": [ - "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" + "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6079,9 +6079,9 @@ "label": "KnowledgeBaseEntryUpdateProps", "description": [], "signature": [ - "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" + "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6096,7 +6096,7 @@ "signature": [ "Zod.ZodObject<{ success: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { success?: boolean | undefined; }, { success?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6109,9 +6109,9 @@ "label": "Message", "description": [], "signature": [ - "Zod.ZodObject<{ content: Zod.ZodString; reader: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>" + "Zod.ZodObject<{ content: Zod.ZodString; reader: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6126,7 +6126,7 @@ "signature": [ "Zod.ZodObject<{}, \"strip\", Zod.ZodUnknown, Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6141,7 +6141,7 @@ "signature": [ "Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6156,7 +6156,7 @@ "signature": [ "{ user: \"user\"; system: \"system\"; assistant: \"assistant\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6171,7 +6171,7 @@ "signature": [ "Zod.ZodObject<{ kbResource: Zod.ZodString; source: Zod.ZodString; required: Zod.ZodBoolean; }, \"strip\", Zod.ZodTypeAny, { source: string; required: boolean; kbResource: string; }, { source: string; required: boolean; kbResource: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6184,9 +6184,9 @@ "label": "NonEmptyString", "description": [], "signature": [ - "Zod.ZodString" + "Zod.ZodEffects" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6201,7 +6201,7 @@ "signature": [ "Zod.ZodObject<{ message: Zod.ZodString; status_code: Zod.ZodNumber; err_code: Zod.ZodOptional; conversations: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6216,7 +6216,7 @@ "signature": [ "Zod.ZodObject<{ message: Zod.ZodString; statusCode: Zod.ZodNumber; err_code: Zod.ZodOptional; knowledgeBaseEntries: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6229,9 +6229,9 @@ "label": "PerformBulkActionRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ delete: Zod.ZodOptional; ids: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { ids?: string[] | undefined; query?: string | undefined; }, { ids?: string[] | undefined; query?: string | undefined; }>>; create: Zod.ZodOptional; title: Zod.ZodString; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">>; update: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }, { create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }>" + "Zod.ZodObject<{ delete: Zod.ZodOptional; ids: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { ids?: string[] | undefined; query?: string | undefined; }, { ids?: string[] | undefined; query?: string | undefined; }>>; create: Zod.ZodOptional; title: Zod.ZodString; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">>; update: Zod.ZodOptional; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }, { create?: { title: string; id?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; update?: { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6244,9 +6244,9 @@ "label": "PerformBulkActionResponse", "description": [], "signature": [ - "Zod.ZodObject<{ success: Zod.ZodOptional; status_code: Zod.ZodOptional; message: Zod.ZodOptional; conversations_count: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; created: Zod.ZodArray; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; conversations: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }>" + "Zod.ZodObject<{ success: Zod.ZodOptional; status_code: Zod.ZodOptional; message: Zod.ZodOptional; conversations_count: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; created: Zod.ZodArray; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"CONVERSATION_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; conversations: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }, { attributes: { results: { created: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; updated: { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }[]; skipped: { id: string; skip_reason: \"CONVERSATION_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; status_code: number; conversations: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; status_code?: number | undefined; conversations_count?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6259,9 +6259,9 @@ "label": "PerformKnowledgeBaseEntryBulkActionRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ delete: Zod.ZodOptional; ids: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { ids?: string[] | undefined; query?: string | undefined; }, { ids?: string[] | undefined; query?: string | undefined; }>>; create: Zod.ZodOptional; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>, \"strip\", Zod.ZodTypeAny, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>, \"strip\", Zod.ZodTypeAny, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">>; update: Zod.ZodOptional; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { create?: ({ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; update?: ({ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }, { create?: ({ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; update?: ({ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }>" + "Zod.ZodObject<{ delete: Zod.ZodOptional; ids: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { ids?: string[] | undefined; query?: string | undefined; }, { ids?: string[] | undefined; query?: string | undefined; }>>; create: Zod.ZodOptional; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>, \"strip\", Zod.ZodTypeAny, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>, \"strip\", Zod.ZodTypeAny, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">>; update: Zod.ZodOptional; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { create?: ({ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; update?: ({ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }, { create?: ({ source: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; update?: ({ source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[] | undefined; delete?: { ids?: string[] | undefined; query?: string | undefined; } | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6274,9 +6274,9 @@ "label": "PerformKnowledgeBaseEntryBulkActionResponse", "description": [], "signature": [ - "Zod.ZodObject<{ success: Zod.ZodOptional; statusCode: Zod.ZodOptional; message: Zod.ZodOptional; knowledgeBaseEntriesCount: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; created: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; knowledgeBaseEntries: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }>" + "Zod.ZodObject<{ success: Zod.ZodOptional; statusCode: Zod.ZodOptional; message: Zod.ZodOptional; knowledgeBaseEntriesCount: Zod.ZodOptional; attributes: Zod.ZodObject<{ results: Zod.ZodObject<{ updated: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; created: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>, \"many\">; deleted: Zod.ZodArray; skipped: Zod.ZodArray; skip_reason: Zod.ZodLiteral<\"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\">; }, \"strip\", Zod.ZodTypeAny, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }, { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }, { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }>; summary: Zod.ZodObject<{ failed: Zod.ZodNumber; skipped: Zod.ZodNumber; succeeded: Zod.ZodNumber; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { total: number; succeeded: number; failed: number; skipped: number; }, { total: number; succeeded: number; failed: number; skipped: number; }>; errors: Zod.ZodOptional; knowledgeBaseEntries: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { id: string; name?: string | undefined; }, { id: string; name?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }, { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }>, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }, { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }, { attributes: { results: { created: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; updated: ({ source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; } | { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; })[]; skipped: { id: string; skip_reason: \"KNOWLEDGE_BASE_ENTRY_NOT_MODIFIED\"; name?: string | undefined; }[]; deleted: string[]; }; summary: { total: number; succeeded: number; failed: number; skipped: number; }; errors?: { message: string; statusCode: number; knowledgeBaseEntries: { id: string; name?: string | undefined; }[]; err_code?: string | undefined; }[] | undefined; }; message?: string | undefined; success?: boolean | undefined; statusCode?: number | undefined; knowledgeBaseEntriesCount?: number | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6291,7 +6291,7 @@ "signature": [ "Zod.ZodObject<{ graphs: Zod.ZodArray; datasetName: Zod.ZodString; evaluatorConnectorId: Zod.ZodOptional; connectorIds: Zod.ZodArray; runName: Zod.ZodOptional; alertsIndexPattern: Zod.ZodDefault>; langSmithApiKey: Zod.ZodOptional; langSmithProject: Zod.ZodOptional; replacements: Zod.ZodDefault, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>>; size: Zod.ZodDefault>; }, \"strip\", Zod.ZodTypeAny, { size: number; alertsIndexPattern: string; replacements: {} & { [k: string]: string; }; graphs: string[]; datasetName: string; connectorIds: string[]; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; evaluatorConnectorId?: string | undefined; runName?: string | undefined; }, { graphs: string[]; datasetName: string; connectorIds: string[]; size?: number | undefined; alertsIndexPattern?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; evaluatorConnectorId?: string | undefined; runName?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6306,7 +6306,7 @@ "signature": [ "Zod.ZodObject<{ graphs: Zod.ZodArray; datasetName: Zod.ZodString; evaluatorConnectorId: Zod.ZodOptional; connectorIds: Zod.ZodArray; runName: Zod.ZodOptional; alertsIndexPattern: Zod.ZodDefault>; langSmithApiKey: Zod.ZodOptional; langSmithProject: Zod.ZodOptional; replacements: Zod.ZodDefault, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>>; size: Zod.ZodDefault>; }, \"strip\", Zod.ZodTypeAny, { size: number; alertsIndexPattern: string; replacements: {} & { [k: string]: string; }; graphs: string[]; datasetName: string; connectorIds: string[]; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; evaluatorConnectorId?: string | undefined; runName?: string | undefined; }, { graphs: string[]; datasetName: string; connectorIds: string[]; size?: number | undefined; alertsIndexPattern?: string | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; langSmithProject?: string | undefined; langSmithApiKey?: string | undefined; evaluatorConnectorId?: string | undefined; runName?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6321,7 +6321,7 @@ "signature": [ "Zod.ZodObject<{ evaluationId: Zod.ZodString; success: Zod.ZodBoolean; }, \"strip\", Zod.ZodTypeAny, { success: boolean; evaluationId: string; }, { success: boolean; evaluationId: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6334,9 +6334,9 @@ "label": "PromptResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; timestamp: Zod.ZodOptional; name: Zod.ZodString; promptType: Zod.ZodEnum<[\"system\", \"quick\"]>; content: Zod.ZodString; categories: Zod.ZodOptional>; color: Zod.ZodOptional; isNewConversationDefault: Zod.ZodOptional; isDefault: Zod.ZodOptional; consumer: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; timestamp: Zod.ZodOptional>; name: Zod.ZodString; promptType: Zod.ZodEnum<[\"system\", \"quick\"]>; content: Zod.ZodString; categories: Zod.ZodOptional>; color: Zod.ZodOptional; isNewConversationDefault: Zod.ZodOptional; isDefault: Zod.ZodOptional; consumer: Zod.ZodOptional; updatedAt: Zod.ZodOptional; updatedBy: Zod.ZodOptional; createdAt: Zod.ZodOptional; createdBy: Zod.ZodOptional; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; namespace: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }, { id: string; name: string; content: string; promptType: \"system\" | \"quick\"; namespace?: string | undefined; consumer?: string | undefined; timestamp?: string | undefined; color?: string | undefined; createdBy?: string | undefined; updatedBy?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; categories?: string[] | undefined; isDefault?: boolean | undefined; isNewConversationDefault?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6351,7 +6351,7 @@ "signature": [ "{ system: \"system\"; quick: \"quick\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6366,7 +6366,7 @@ "signature": [ "Zod.ZodEnum<[\"OpenAI\", \"Azure OpenAI\", \"Other\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6381,7 +6381,7 @@ "signature": [ "{ Other: \"Other\"; OpenAI: \"OpenAI\"; \"Azure OpenAI\": \"Azure OpenAI\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6394,9 +6394,9 @@ "label": "ReadConversationRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6409,9 +6409,9 @@ "label": "ReadConversationResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6426,7 +6426,7 @@ "signature": [ "Zod.ZodObject<{}, \"strip\", Zod.ZodUnknown, Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\">, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6439,9 +6439,9 @@ "label": "ReadKnowledgeBaseEntryRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6454,9 +6454,9 @@ "label": "ReadKnowledgeBaseEntryResponse", "description": [], "signature": [ - "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" + "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6471,7 +6471,7 @@ "signature": [ "Zod.ZodObject<{ resource: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { resource?: string | undefined; }, { resource?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6486,7 +6486,7 @@ "signature": [ "Zod.ZodObject<{ elser_exists: Zod.ZodOptional; index_exists: Zod.ZodOptional; is_setup_available: Zod.ZodOptional; is_setup_in_progress: Zod.ZodOptional; pipeline_exists: Zod.ZodOptional; security_labs_exists: Zod.ZodOptional; user_data_exists: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { elser_exists?: boolean | undefined; index_exists?: boolean | undefined; is_setup_available?: boolean | undefined; is_setup_in_progress?: boolean | undefined; pipeline_exists?: boolean | undefined; security_labs_exists?: boolean | undefined; user_data_exists?: boolean | undefined; }, { elser_exists?: boolean | undefined; index_exists?: boolean | undefined; is_setup_available?: boolean | undefined; is_setup_in_progress?: boolean | undefined; pipeline_exists?: boolean | undefined; security_labs_exists?: boolean | undefined; user_data_exists?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6501,7 +6501,7 @@ "signature": [ "Zod.ZodObject<{}, \"strip\", Zod.ZodString, Zod.objectOutputType<{}, Zod.ZodString, \"strip\">, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6514,9 +6514,9 @@ "label": "ResponseFields", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; }, { id: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; }, { id: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6531,7 +6531,7 @@ "signature": [ "Zod.ZodLiteral<\"security\">" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6544,9 +6544,9 @@ "label": "SharedResponseProps", "description": [], "signature": [ - "Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; }, { id: string; namespace: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; }>" + "Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; }, { id: string; namespace: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6561,7 +6561,7 @@ "signature": [ "Zod.ZodEnum<[\"asc\", \"desc\"]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6576,7 +6576,7 @@ "signature": [ "{ asc: \"asc\"; desc: \"desc\"; }" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6591,7 +6591,7 @@ "signature": [ "Zod.ZodObject<{ transactionId: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6604,9 +6604,9 @@ "label": "UpdateConversationRequestBody", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodOptional; category: Zod.ZodOptional>; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; excludeFromLastConversationStorage: Zod.ZodOptional; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; }, \"strip\", Zod.ZodTypeAny, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; title?: string | undefined; category?: \"assistant\" | \"insights\" | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6619,9 +6619,9 @@ "label": "UpdateConversationRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6634,9 +6634,9 @@ "label": "UpdateConversationResponse", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodString; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; title: Zod.ZodString; category: Zod.ZodEnum<[\"assistant\", \"insights\"]>; summary: Zod.ZodOptional; timestamp: Zod.ZodOptional>; public: Zod.ZodOptional; confidence: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }, { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; }>>; timestamp: Zod.ZodOptional>; updatedAt: Zod.ZodOptional; createdAt: Zod.ZodString; replacements: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodString, \"strip\">>>; users: Zod.ZodArray; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; messages: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\">>>; role: Zod.ZodEnum<[\"system\", \"user\", \"assistant\"]>; timestamp: Zod.ZodEffects; isError: Zod.ZodOptional; traceData: Zod.ZodOptional; traceId: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { transactionId?: string | undefined; traceId?: string | undefined; }, { transactionId?: string | undefined; traceId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }, { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }>, \"many\">>; apiConfig: Zod.ZodOptional; provider: Zod.ZodOptional>; model: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }, { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; }>>; isDefault: Zod.ZodOptional; excludeFromLastConversationStorage: Zod.ZodOptional; namespace: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectOutputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }, { id: string; namespace: string; title: string; createdAt: string; category: \"assistant\" | \"insights\"; users: { id?: string | undefined; name?: string | undefined; }[]; timestamp?: string | undefined; updatedAt?: string | undefined; summary?: { timestamp?: string | undefined; content?: string | undefined; public?: boolean | undefined; confidence?: \"medium\" | \"high\" | \"low\" | undefined; } | undefined; replacements?: Zod.objectInputType<{}, Zod.ZodString, \"strip\"> | undefined; apiConfig?: { connectorId: string; actionTypeId: string; provider?: \"Other\" | \"OpenAI\" | \"Azure OpenAI\" | undefined; model?: string | undefined; defaultSystemPromptId?: string | undefined; } | undefined; messages?: { timestamp: string; role: \"user\" | \"system\" | \"assistant\"; content: string; isError?: boolean | undefined; reader?: Zod.objectInputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; traceData?: { transactionId?: string | undefined; traceId?: string | undefined; } | undefined; }[] | undefined; isDefault?: boolean | undefined; excludeFromLastConversationStorage?: boolean | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6649,9 +6649,9 @@ "label": "UpdateKnowledgeBaseEntryRequestBody", "description": [], "signature": [ - "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodString; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" + "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }>, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; text: string; name: string; kbResource: string; namespace?: string | undefined; required?: boolean | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; namespace: Zod.ZodOptional>; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>>; }, { id: Zod.ZodEffects; }>, Zod.objectUtil.extendShape; users: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">>; }>, { type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }>, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; name: string; index: string; field: string; description: string; queryDescription: string; namespace?: string | undefined; users?: { id?: string | undefined; name?: string | undefined; }[] | undefined; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6664,9 +6664,9 @@ "label": "UpdateKnowledgeBaseEntryRequestParams", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" + "Zod.ZodObject<{ id: Zod.ZodEffects; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6679,9 +6679,9 @@ "label": "UpdateKnowledgeBaseEntryResponse", "description": [], "signature": [ - "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodString; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" + "Zod.ZodDiscriminatedUnion<\"type\", [Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"document\">; kbResource: Zod.ZodString; source: Zod.ZodString; text: Zod.ZodString; }, { required: Zod.ZodOptional; vector: Zod.ZodOptional, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>>; }>>, \"strip\", Zod.ZodTypeAny, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }, { source: string; id: string; type: \"document\"; namespace: string; text: string; name: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; kbResource: string; required?: boolean | undefined; vector?: { modelId: string; tokens: {} & { [k: string]: number; }; } | undefined; }>, Zod.ZodObject; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>, \"many\">; }>, { id: Zod.ZodEffects; createdAt: Zod.ZodString; createdBy: Zod.ZodString; updatedAt: Zod.ZodString; updatedBy: Zod.ZodString; }>, Zod.objectUtil.extendShape<{ type: Zod.ZodLiteral<\"index\">; index: Zod.ZodString; field: Zod.ZodString; description: Zod.ZodString; queryDescription: Zod.ZodString; }, { inputSchema: Zod.ZodOptional, \"many\">>; outputFields: Zod.ZodOptional>; }>>, \"strip\", Zod.ZodTypeAny, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }, { id: string; type: \"index\"; namespace: string; name: string; index: string; field: string; description: string; createdBy: string; updatedBy: string; createdAt: string; updatedAt: string; users: { id?: string | undefined; name?: string | undefined; }[]; queryDescription: string; inputSchema?: { description: string; fieldName: string; fieldType: string; }[] | undefined; outputFields?: string[] | undefined; }>]>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6696,7 +6696,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodOptional; name: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id?: string | undefined; name?: string | undefined; }, { id?: string | undefined; name?: string | undefined; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6711,7 +6711,7 @@ "signature": [ "Zod.ZodString" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6726,7 +6726,7 @@ "signature": [ "Zod.ZodObject<{ modelId: Zod.ZodString; tokens: Zod.ZodObject<{}, \"strip\", Zod.ZodNumber, Zod.objectOutputType<{}, Zod.ZodNumber, \"strip\">, Zod.objectInputType<{}, Zod.ZodNumber, \"strip\">>; }, \"strip\", Zod.ZodTypeAny, { modelId: string; tokens: {} & { [k: string]: number; }; }, { modelId: string; tokens: {} & { [k: string]: number; }; }>" ], - "path": "x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", + "path": "x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index 638efcb519e5e..3333402dfba2d 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_entities_schema.mdx b/api_docs/kbn_entities_schema.mdx index 44dd0e169a22c..1280141f82e27 100644 --- a/api_docs/kbn_entities_schema.mdx +++ b/api_docs/kbn_entities_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-entities-schema title: "@kbn/entities-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/entities-schema plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/entities-schema'] --- import kbnEntitiesSchemaObj from './kbn_entities_schema.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 5543f3a6b731e..7030c323edced 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 97f4a71795a7d..61404777fbaa3 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index 9d3f70b0ee967..1222b4d93f69e 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 0262b0586b2ff..b3587044cb8a4 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.devdocs.json b/api_docs/kbn_es_types.devdocs.json index ec62dd1cd61ff..31946760a86fb 100644 --- a/api_docs/kbn_es_types.devdocs.json +++ b/api_docs/kbn_es_types.devdocs.json @@ -584,6 +584,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/es-types", + "id": "def-common.ESSearchRequestWithoutBody", + "type": "Type", + "tags": [], + "label": "ESSearchRequestWithoutBody", + "description": [], + "signature": [ + "SearchRequest" + ], + "path": "packages/kbn-es-types/src/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/es-types", "id": "def-common.ESSearchResponse", diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index d9681706b3663..1749f02b8abda 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 30 | 0 | 30 | 1 | +| 31 | 0 | 31 | 1 | ## Common diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index fd86888ec92f7..0930e64da7ba8 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_ast.devdocs.json b/api_docs/kbn_esql_ast.devdocs.json index ff840245529ca..b0e685c37fde1 100644 --- a/api_docs/kbn_esql_ast.devdocs.json +++ b/api_docs/kbn_esql_ast.devdocs.json @@ -4160,7 +4160,9 @@ "parentPluginId": "@kbn/esql-ast", "id": "def-common.ESQLTimeInterval.type", "type": "string", - "tags": [], + "tags": [ + "todo" + ], "label": "type", "description": [], "signature": [ diff --git a/api_docs/kbn_esql_ast.mdx b/api_docs/kbn_esql_ast.mdx index 8ed0263341e48..37f4ee7f4c751 100644 --- a/api_docs/kbn_esql_ast.mdx +++ b/api_docs/kbn_esql_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-ast title: "@kbn/esql-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-ast plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-ast'] --- import kbnEsqlAstObj from './kbn_esql_ast.devdocs.json'; diff --git a/api_docs/kbn_esql_editor.devdocs.json b/api_docs/kbn_esql_editor.devdocs.json index ca2d78c9c89eb..b464c8bd5f1eb 100644 --- a/api_docs/kbn_esql_editor.devdocs.json +++ b/api_docs/kbn_esql_editor.devdocs.json @@ -83,15 +83,7 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined, abortController: AbortController | undefined, dataView: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | undefined) => Promise<", + " | undefined, abortController: AbortController | undefined, timeFieldName: string | undefined) => Promise<", { "pluginId": "expressions", "scope": "common", @@ -195,19 +187,12 @@ { "parentPluginId": "@kbn/esql-editor", "id": "def-public.fetchFieldsFromESQL.$5", - "type": "Object", + "type": "string", "tags": [], - "label": "dataView", + "label": "timeFieldName", "description": [], "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | undefined" + "string | undefined" ], "path": "src/platform/packages/private/kbn-esql-editor/src/fetch_fields_from_esql.ts", "deprecated": false, diff --git a/api_docs/kbn_esql_editor.mdx b/api_docs/kbn_esql_editor.mdx index fe9ce1cc47c81..7d17578b45708 100644 --- a/api_docs/kbn_esql_editor.mdx +++ b/api_docs/kbn_esql_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-editor title: "@kbn/esql-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-editor plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-editor'] --- import kbnEsqlEditorObj from './kbn_esql_editor.devdocs.json'; diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx index 147541982ac31..1adab2ac2dd2d 100644 --- a/api_docs/kbn_esql_utils.mdx +++ b/api_docs/kbn_esql_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-utils title: "@kbn/esql-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] --- import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; diff --git a/api_docs/kbn_esql_validation_autocomplete.mdx b/api_docs/kbn_esql_validation_autocomplete.mdx index 0a9ac9b139b28..ddc5e77518089 100644 --- a/api_docs/kbn_esql_validation_autocomplete.mdx +++ b/api_docs/kbn_esql_validation_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-validation-autocomplete title: "@kbn/esql-validation-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-validation-autocomplete plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-validation-autocomplete'] --- import kbnEsqlValidationAutocompleteObj from './kbn_esql_validation_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 135919de21d39..e9ee9d92b0d0e 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index d16d03113ce27..df2a5de92b607 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.devdocs.json b/api_docs/kbn_expandable_flyout.devdocs.json index 10de89b7d3657..8a6858f594bb8 100644 --- a/api_docs/kbn_expandable_flyout.devdocs.json +++ b/api_docs/kbn_expandable_flyout.devdocs.json @@ -23,7 +23,7 @@ }, "): React.JSX.Element | null; displayName: string | undefined; }" ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -43,7 +43,7 @@ "text": "ExpandableFlyoutProps" } ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -64,7 +64,7 @@ "signature": [ "({ children, urlKey, }: React.PropsWithChildren) => React.JSX.Element" ], - "path": "packages/kbn-expandable-flyout/src/provider.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/provider.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -78,7 +78,7 @@ "signature": [ "React.PropsWithChildren" ], - "path": "packages/kbn-expandable-flyout/src/provider.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/provider.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -106,7 +106,34 @@ "text": "ExpandableFlyoutApi" } ], - "path": "packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_api.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/expandable-flyout", + "id": "def-public.useExpandableFlyoutHistory", + "type": "Function", + "tags": [], + "label": "useExpandableFlyoutHistory", + "description": [ + "\nThis hook allows you to access the flyout state, read open right, left and preview panels." + ], + "signature": [ + "() => ", + { + "pluginId": "@kbn/expandable-flyout", + "scope": "public", + "docId": "kibKbnExpandableFlyoutPluginApi", + "section": "def-public.FlyoutPanelProps", + "text": "FlyoutPanelProps" + }, + "[]" + ], + "path": "x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_history.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -132,7 +159,7 @@ "text": "FlyoutPanels" } ], - "path": "packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_state.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -148,7 +175,7 @@ "tags": [], "label": "ExpandableFlyoutApi", "description": [], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -188,7 +215,7 @@ }, " | undefined; }) => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -199,7 +226,7 @@ "tags": [], "label": "panels", "description": [], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -220,7 +247,7 @@ }, " | undefined" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -241,7 +268,7 @@ }, " | undefined" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -262,7 +289,7 @@ }, " | undefined" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -291,7 +318,7 @@ }, ") => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -311,7 +338,7 @@ "text": "FlyoutPanelProps" } ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -339,7 +366,7 @@ }, ") => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -359,7 +386,7 @@ "text": "FlyoutPanelProps" } ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -387,7 +414,7 @@ }, ") => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -407,7 +434,7 @@ "text": "FlyoutPanelProps" } ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -427,7 +454,7 @@ "signature": [ "() => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -445,7 +472,7 @@ "signature": [ "() => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -463,7 +490,7 @@ "signature": [ "() => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -481,7 +508,7 @@ "signature": [ "() => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -499,7 +526,7 @@ "signature": [ "() => void" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -527,7 +554,7 @@ "EuiFlyoutResizableProps", ", \"onClose\">" ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -544,7 +571,7 @@ "Panel", "[]" ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -569,7 +596,7 @@ "Theme", ">" ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -585,7 +612,7 @@ "signature": [ "((event: KeyboardEvent | MouseEvent | TouchEvent) => void) | undefined" ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -602,7 +629,7 @@ "FlyoutCustomProps", " | undefined" ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -618,7 +645,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-expandable-flyout/src/index.tsx", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/index.tsx", "deprecated": false, "trackAdoption": false } @@ -632,7 +659,7 @@ "tags": [], "label": "FlyoutPanelProps", "description": [], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -645,7 +672,7 @@ "description": [ "\nUnique key to identify the panel" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -661,7 +688,7 @@ "signature": [ "Record | undefined" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -684,7 +711,7 @@ }, " | undefined" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -700,7 +727,7 @@ "signature": [ "Record | undefined" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -714,7 +741,7 @@ "tags": [], "label": "FlyoutPanels", "description": [], - "path": "packages/kbn-expandable-flyout/src/store/state.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -737,7 +764,7 @@ }, " | undefined" ], - "path": "packages/kbn-expandable-flyout/src/store/state.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts", "deprecated": false, "trackAdoption": false }, @@ -760,7 +787,7 @@ }, " | undefined" ], - "path": "packages/kbn-expandable-flyout/src/store/state.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts", "deprecated": false, "trackAdoption": false }, @@ -783,7 +810,28 @@ }, "[] | undefined" ], - "path": "packages/kbn-expandable-flyout/src/store/state.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/expandable-flyout", + "id": "def-public.FlyoutPanels.history", + "type": "Array", + "tags": [], + "label": "history", + "description": [], + "signature": [ + { + "pluginId": "@kbn/expandable-flyout", + "scope": "public", + "docId": "kibKbnExpandableFlyoutPluginApi", + "section": "def-public.FlyoutPanelProps", + "text": "FlyoutPanelProps" + }, + "[]" + ], + "path": "x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts", "deprecated": false, "trackAdoption": false } @@ -797,7 +845,7 @@ "tags": [], "label": "PanelPath", "description": [], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -810,7 +858,7 @@ "description": [ "\nTop level tab that to be displayed" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -826,7 +874,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-expandable-flyout/src/types.ts", + "path": "x-pack/solutions/security/packages/expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index 67c2c53ceb4d0..b33ba6512feb3 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-threat-hunting-investigations](https://github.com/org | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 41 | 0 | 14 | 2 | +| 43 | 0 | 15 | 2 | ## Client diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 9796938facfbb..169b8cc3e6be7 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 8e5483df68d9f..ed09fde4c1ad2 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 589fa07000ee9..8832d7b262606 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_formatters.mdx b/api_docs/kbn_formatters.mdx index 05ff409798bae..f87b66bbdb544 100644 --- a/api_docs/kbn_formatters.mdx +++ b/api_docs/kbn_formatters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-formatters title: "@kbn/formatters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/formatters plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/formatters'] --- import kbnFormattersObj from './kbn_formatters.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index a601c6945befa..019aee331637b 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json b/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json index 048e3d908e3f5..07675d918c70b 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json +++ b/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json @@ -11914,6 +11914,76 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.InterceptResponseFactory", + "type": "Interface", + "tags": [], + "label": "InterceptResponseFactory", + "description": [], + "path": "packages/kbn-ftr-common-functional-ui-services/services/browser.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.InterceptResponseFactory.fail", + "type": "Function", + "tags": [], + "label": "fail", + "description": [], + "signature": [ + "() => [\"Fetch.failRequest\", ", + "Protocol", + ".Fetch.FailRequestRequest]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/browser.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.InterceptResponseFactory.fulfill", + "type": "Function", + "tags": [], + "label": "fulfill", + "description": [], + "signature": [ + "(responseOptions: Omit<", + "Protocol", + ".Fetch.FulfillRequestRequest, \"requestId\">) => [\"Fetch.fulfillRequest\", ", + "Protocol", + ".Fetch.FulfillRequestRequest]" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/browser.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.InterceptResponseFactory.fulfill.$1", + "type": "Object", + "tags": [], + "label": "responseOptions", + "description": [], + "signature": [ + "Omit<", + "Protocol", + ".Fetch.FulfillRequestRequest, \"requestId\">" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/browser.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/ftr-common-functional-ui-services", "id": "def-common.NetworkOptions", diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 41a1ed2e9cf6e..554462a0d1460 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) for | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 560 | 6 | 520 | 7 | +| 564 | 6 | 524 | 7 | ## Common diff --git a/api_docs/kbn_gen_ai_functional_testing.mdx b/api_docs/kbn_gen_ai_functional_testing.mdx index ebc94ef881e85..882b2743110c5 100644 --- a/api_docs/kbn_gen_ai_functional_testing.mdx +++ b/api_docs/kbn_gen_ai_functional_testing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-gen-ai-functional-testing title: "@kbn/gen-ai-functional-testing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/gen-ai-functional-testing plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/gen-ai-functional-testing'] --- import kbnGenAiFunctionalTestingObj from './kbn_gen_ai_functional_testing.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 2e84064392c76..82b6a8b301af6 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index 7c7da8e893bb9..7b680dfc06fbe 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index 1ba4e75358a94..e21118b3f9b1f 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_grid_layout.mdx b/api_docs/kbn_grid_layout.mdx index 3abfaaebaaa51..f08f3e5157d18 100644 --- a/api_docs/kbn_grid_layout.mdx +++ b/api_docs/kbn_grid_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grid-layout title: "@kbn/grid-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grid-layout plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grid-layout'] --- import kbnGridLayoutObj from './kbn_grid_layout.devdocs.json'; diff --git a/api_docs/kbn_grouping.mdx b/api_docs/kbn_grouping.mdx index e4933bb1ff4a2..21ba60c19f7fa 100644 --- a/api_docs/kbn_grouping.mdx +++ b/api_docs/kbn_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grouping title: "@kbn/grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grouping plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grouping'] --- import kbnGroupingObj from './kbn_grouping.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index bbc027ad2c3c7..01f8451394c92 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 638ba0efb44a1..09e519d27d1c6 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index d19a016a5d9f6..a183a662520f2 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index 36325139bd057..a225109db9571 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index 227d38b14298a..9efff0dfeb813 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index 21cb65455ca07..1c48df8e27e61 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index b7a54c71affa3..0ff5f21acbffc 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index de7ebf0e5ea50..0045ac5bdf884 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index ae94fc2a4d033..38ae1c8891728 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_index_adapter.devdocs.json b/api_docs/kbn_index_adapter.devdocs.json index ac852981ef207..935776730bb27 100644 --- a/api_docs/kbn_index_adapter.devdocs.json +++ b/api_docs/kbn_index_adapter.devdocs.json @@ -17,7 +17,7 @@ "tags": [], "label": "IndexAdapter", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -28,7 +28,7 @@ "tags": [], "label": "kibanaVersion", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -39,7 +39,7 @@ "tags": [], "label": "totalFieldsLimit", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -54,7 +54,7 @@ "ClusterPutComponentTemplateRequest", "[]" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -69,7 +69,7 @@ "IndicesPutIndexTemplateRequest", "[]" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -80,7 +80,7 @@ "tags": [], "label": "installed", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -94,7 +94,7 @@ "signature": [ "any" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -108,7 +108,7 @@ "signature": [ "string" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -129,7 +129,7 @@ "text": "IndexAdapterParams" } ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -149,7 +149,7 @@ "GetComponentTemplateOpts", ") => void" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -163,7 +163,7 @@ "signature": [ "GetComponentTemplateOpts" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -189,7 +189,7 @@ }, ") => void" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -209,7 +209,7 @@ "text": "SetIndexTemplateParams" } ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -229,7 +229,7 @@ "GetInstallFnParams", ") => (promise: Promise, description?: string | undefined) => Promise" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -243,7 +243,7 @@ "signature": [ "GetInstallFnParams" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -269,7 +269,7 @@ }, ") => Promise" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -289,7 +289,7 @@ "text": "InstallParams" } ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -315,7 +315,7 @@ }, ") => Promise" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -335,7 +335,7 @@ "text": "InstallParams" } ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -370,7 +370,7 @@ "text": "IndexAdapter" } ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -384,7 +384,7 @@ "signature": [ "Map>" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -406,7 +406,7 @@ }, "> | undefined" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -420,7 +420,7 @@ "signature": [ "any" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -434,7 +434,7 @@ "signature": [ "string" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -455,7 +455,7 @@ "text": "IndexAdapterParams" } ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -483,7 +483,7 @@ }, ") => Promise" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -503,7 +503,7 @@ "text": "InstallParams" } ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -537,7 +537,7 @@ }, ">" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -557,7 +557,7 @@ "text": "InstallParams" } ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -577,7 +577,7 @@ "signature": [ "(indexSuffix: string) => Promise" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -591,7 +591,7 @@ "signature": [ "string" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -611,7 +611,7 @@ "signature": [ "(indexSuffix: string) => string" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -625,7 +625,7 @@ "signature": [ "string" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -645,7 +645,7 @@ "signature": [ "(indexSuffix: string) => Promise" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -659,7 +659,7 @@ "signature": [ "string" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -682,7 +682,7 @@ "signature": [ "({ logger, esClient, template, totalFieldsLimit, }: CreateOrUpdateComponentTemplateOpts) => Promise" ], - "path": "packages/kbn-index-adapter/src/create_or_update_component_template.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -696,7 +696,7 @@ "signature": [ "CreateOrUpdateComponentTemplateOpts" ], - "path": "packages/kbn-index-adapter/src/create_or_update_component_template.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -717,7 +717,7 @@ "signature": [ "({ logger, esClient, template, }: CreateOrUpdateIndexTemplateOpts) => Promise" ], - "path": "packages/kbn-index-adapter/src/create_or_update_index_template.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -731,7 +731,7 @@ "signature": [ "CreateOrUpdateIndexTemplateOpts" ], - "path": "packages/kbn-index-adapter/src/create_or_update_index_template.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -758,7 +758,7 @@ }, "; attempt?: number | undefined; }) => Promise" ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -772,7 +772,7 @@ "signature": [ "() => Promise" ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -784,7 +784,7 @@ "tags": [], "label": "{ logger, attempt = 0 }", "description": [], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -804,7 +804,7 @@ "text": "Logger" } ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false }, @@ -818,7 +818,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/retry_transient_es_errors.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts", "deprecated": false, "trackAdoption": false } @@ -837,7 +837,7 @@ "tags": [], "label": "AllowedValue", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -851,7 +851,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -865,7 +865,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false } @@ -879,7 +879,7 @@ "tags": [], "label": "EcsMetadata", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -900,7 +900,7 @@ }, "[] | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -911,7 +911,7 @@ "tags": [], "label": "dashed_name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -922,7 +922,7 @@ "tags": [], "label": "description", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -936,7 +936,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -950,7 +950,7 @@ "signature": [ "string | number | boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -961,7 +961,7 @@ "tags": [], "label": "flat_name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -975,7 +975,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -989,7 +989,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1000,7 +1000,7 @@ "tags": [], "label": "level", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1021,7 +1021,7 @@ }, "[] | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1032,7 +1032,7 @@ "tags": [], "label": "name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1046,7 +1046,7 @@ "signature": [ "string[]" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1060,7 +1060,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1074,7 +1074,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1085,7 +1085,7 @@ "tags": [], "label": "short", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1096,7 +1096,7 @@ "tags": [], "label": "type", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1110,7 +1110,7 @@ "signature": [ "Record | undefined" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false } @@ -1124,7 +1124,7 @@ "tags": [], "label": "IndexAdapterParams", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1135,7 +1135,7 @@ "tags": [], "label": "kibanaVersion", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -1149,7 +1149,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false } @@ -1163,7 +1163,7 @@ "tags": [], "label": "InstallParams", "description": [], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1183,7 +1183,7 @@ "text": "Logger" } ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -1212,7 +1212,7 @@ }, ">" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -1227,7 +1227,7 @@ "Subject", "" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false }, @@ -1241,7 +1241,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false } @@ -1255,7 +1255,7 @@ "tags": [], "label": "MultiField", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1266,7 +1266,7 @@ "tags": [], "label": "flat_name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1277,7 +1277,7 @@ "tags": [], "label": "name", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1288,7 +1288,7 @@ "tags": [], "label": "type", "description": [], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false } @@ -1316,7 +1316,7 @@ }, "[] | undefined; index?: boolean | undefined; path?: string | undefined; scaling_factor?: number | undefined; dynamic?: boolean | \"strict\" | undefined; properties?: Record | undefined; inference_id?: string | undefined; copy_to?: string | undefined; }; }" ], - "path": "packages/kbn-index-adapter/src/field_maps/ecs_field_map.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/ecs_field_map.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1339,7 +1339,7 @@ }, "[] | undefined; index?: boolean | undefined; path?: string | undefined; scaling_factor?: number | undefined; dynamic?: boolean | \"strict\" | undefined; properties?: Record | undefined; inference_id?: string | undefined; copy_to?: string | undefined; }; }" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1354,7 +1354,7 @@ "signature": [ "(indexSuffix: string) => Promise" ], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1366,7 +1366,7 @@ "tags": [], "label": "indexSuffix", "description": [], - "path": "packages/kbn-index-adapter/src/index_pattern_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts", "deprecated": false, "trackAdoption": false } @@ -1391,7 +1391,7 @@ }, ", keyof NonNullable>}` : `${Key}` : never" ], - "path": "packages/kbn-index-adapter/src/field_maps/types.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1406,7 +1406,7 @@ "signature": [ "GetComponentTemplateOpts" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1423,7 +1423,7 @@ "IndicesPutIndexTemplateIndexTemplateMapping", " | undefined; componentTemplateRefs?: string[] | undefined; isDataStream?: boolean | undefined; }" ], - "path": "packages/kbn-index-adapter/src/index_adapter.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1448,7 +1448,7 @@ }, "[] | undefined; index?: boolean | undefined; path?: string | undefined; scaling_factor?: number | undefined; dynamic?: boolean | \"strict\" | undefined; properties?: Record | undefined; inference_id?: string | undefined; copy_to?: string | undefined; }; }" ], - "path": "packages/kbn-index-adapter/src/field_maps/ecs_field_map.ts", + "path": "x-pack/solutions/security/packages/index-adapter/src/field_maps/ecs_field_map.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_index_adapter.mdx b/api_docs/kbn_index_adapter.mdx index 18930da423ca8..826e955b03aef 100644 --- a/api_docs/kbn_index_adapter.mdx +++ b/api_docs/kbn_index_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-adapter title: "@kbn/index-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-adapter plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-adapter'] --- import kbnIndexAdapterObj from './kbn_index_adapter.devdocs.json'; diff --git a/api_docs/kbn_index_lifecycle_management_common_shared.devdocs.json b/api_docs/kbn_index_lifecycle_management_common_shared.devdocs.json index 62664293d6a46..350f5f4933f77 100644 --- a/api_docs/kbn_index_lifecycle_management_common_shared.devdocs.json +++ b/api_docs/kbn_index_lifecycle_management_common_shared.devdocs.json @@ -27,7 +27,7 @@ "tags": [], "label": "AllocateAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -55,7 +55,7 @@ "signature": [ "{} | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -69,7 +69,7 @@ "signature": [ "{} | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -83,7 +83,7 @@ "signature": [ "{ [attribute: string]: string; } | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -97,7 +97,7 @@ "tags": [], "label": "CommonPhaseSettings", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -108,7 +108,7 @@ "tags": [], "label": "phaseEnabled", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -147,7 +147,7 @@ "text": "PhaseWithMinAge" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -158,7 +158,7 @@ "tags": [], "label": "waitForSnapshotPolicy", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -172,7 +172,7 @@ "tags": [], "label": "DownsampleAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -183,7 +183,7 @@ "tags": [], "label": "fixed_interval", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -197,7 +197,7 @@ "tags": [], "label": "ForcemergeAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -208,7 +208,7 @@ "tags": [], "label": "max_num_segments", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -222,7 +222,7 @@ "signature": [ "\"best_compression\" | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -236,7 +236,7 @@ "tags": [], "label": "MigrateAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -249,7 +249,7 @@ "description": [ "\nIf enabled is ever set it will probably only be set to `false` because the default value\nfor this is `true`. Rather leave unspecified for true when serialising." ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -263,7 +263,7 @@ "tags": [], "label": "Phases", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -284,7 +284,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -305,7 +305,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -326,7 +326,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -347,7 +347,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -368,7 +368,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -382,7 +382,7 @@ "tags": [], "label": "PhaseWithMinAge", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -393,7 +393,7 @@ "tags": [], "label": "selectedMinimumAge", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -404,7 +404,7 @@ "tags": [], "label": "selectedMinimumAgeUnits", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -418,7 +418,7 @@ "tags": [], "label": "PolicyFromES", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -429,7 +429,7 @@ "tags": [], "label": "modifiedDate", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -440,7 +440,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -460,7 +460,7 @@ "text": "SerializedPolicy" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -471,7 +471,7 @@ "tags": [], "label": "version", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -485,7 +485,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -499,7 +499,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -513,7 +513,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -527,7 +527,7 @@ "tags": [], "label": "RolloverAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -541,7 +541,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -555,7 +555,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -569,7 +569,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -583,7 +583,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -599,77 +599,77 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": true, "trackAdoption": false, "references": [ { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/__jest__/mocks.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/__jest__/mocks.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/constants.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/constants.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/constants.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/constants.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/constants.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/constants.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/constants.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/constants.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts" }, { "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts" + "path": "x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts" } ] } @@ -683,7 +683,7 @@ "tags": [], "label": "SearchableSnapshotAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -694,7 +694,7 @@ "tags": [], "label": "snapshot_repository", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -710,7 +710,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -724,7 +724,7 @@ "tags": [], "label": "SerializedActionWithAllocation", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -745,7 +745,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -766,7 +766,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -797,7 +797,7 @@ "text": "SerializedPhase" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -851,7 +851,7 @@ }, " | undefined; }" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -882,7 +882,7 @@ "text": "SerializedPhase" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -896,7 +896,7 @@ "signature": [ "{ wait_for_snapshot?: { policy: string; } | undefined; delete?: { delete_searchable_snapshot?: boolean | undefined; } | undefined; }" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -927,7 +927,7 @@ "text": "SerializedPhase" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -949,7 +949,7 @@ }, " | undefined; }" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -980,7 +980,7 @@ "text": "SerializedPhase" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1042,7 +1042,7 @@ }, " | undefined; }" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -1056,7 +1056,7 @@ "tags": [], "label": "SerializedPhase", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1070,7 +1070,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -1084,7 +1084,7 @@ "signature": [ "{ [action: string]: any; }" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -1098,7 +1098,7 @@ "tags": [], "label": "SerializedPolicy", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1109,7 +1109,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -1129,7 +1129,7 @@ "text": "Phases" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -1143,7 +1143,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -1157,7 +1157,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -1188,7 +1188,7 @@ "text": "SerializedPhase" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1250,7 +1250,7 @@ }, " | undefined; }" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -1264,7 +1264,7 @@ "tags": [], "label": "SetPriorityAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1278,7 +1278,7 @@ "signature": [ "number | null" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -1292,7 +1292,7 @@ "tags": [], "label": "ShrinkAction", "description": [], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1306,7 +1306,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -1320,7 +1320,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false }, @@ -1334,7 +1334,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false } @@ -1354,7 +1354,7 @@ "signature": [ "\"ILM_LOCATOR_ID\"" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1376,7 +1376,7 @@ "text": "Phases" } ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1391,7 +1391,7 @@ "signature": [ "\"warm\" | \"hot\" | \"frozen\" | \"cold\"" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1406,7 +1406,7 @@ "signature": [ "\"warm\" | \"cold\"" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1421,7 +1421,7 @@ "signature": [ "\"warm\" | \"hot\" | \"cold\"" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1436,7 +1436,7 @@ "signature": [ "\"delete\" | \"warm\" | \"frozen\" | \"cold\"" ], - "path": "x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", + "path": "x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_index_lifecycle_management_common_shared.mdx b/api_docs/kbn_index_lifecycle_management_common_shared.mdx index 261488413d7a3..596c9f24b25bd 100644 --- a/api_docs/kbn_index_lifecycle_management_common_shared.mdx +++ b/api_docs/kbn_index_lifecycle_management_common_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-lifecycle-management-common-shared title: "@kbn/index-lifecycle-management-common-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-lifecycle-management-common-shared plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-lifecycle-management-common-shared'] --- import kbnIndexLifecycleManagementCommonSharedObj from './kbn_index_lifecycle_management_common_shared.devdocs.json'; diff --git a/api_docs/kbn_index_management_shared_types.devdocs.json b/api_docs/kbn_index_management_shared_types.devdocs.json index e1db60365e06f..f57ce5ad4ef72 100644 --- a/api_docs/kbn_index_management_shared_types.devdocs.json +++ b/api_docs/kbn_index_management_shared_types.devdocs.json @@ -27,7 +27,7 @@ "tags": [], "label": "EmptyListContent", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ "signature": [ "(args: { createIndexButton: React.ReactElement | null; }) => React.ReactElement | null" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -52,7 +52,7 @@ "tags": [], "label": "args", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -66,7 +66,7 @@ "signature": [ "React.ReactElement | null" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false } @@ -85,7 +85,7 @@ "tags": [], "label": "ExtensionsSetup", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -99,7 +99,7 @@ "signature": [ "(action: any) => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -113,7 +113,7 @@ "signature": [ "any" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -131,7 +131,7 @@ "signature": [ "(banner: any) => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -145,7 +145,7 @@ "signature": [ "any" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -163,7 +163,7 @@ "signature": [ "(filter: any) => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -177,7 +177,7 @@ "signature": [ "any" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -203,7 +203,7 @@ }, ") => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -223,7 +223,7 @@ "text": "IndexBadge" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -249,7 +249,7 @@ }, ") => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -269,7 +269,7 @@ "text": "IndexToggle" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -295,7 +295,7 @@ }, ") => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -315,7 +315,7 @@ "text": "IndicesListColumn" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -341,7 +341,7 @@ }, ") => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -361,7 +361,7 @@ "text": "EmptyListContent" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -387,7 +387,7 @@ }, ") => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -407,7 +407,7 @@ "text": "IndexDetailsTab" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -433,7 +433,7 @@ }, ") => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -453,7 +453,7 @@ "text": "IndexContent" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -479,7 +479,7 @@ }, ") => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -499,7 +499,7 @@ "text": "IndexContent" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -525,7 +525,7 @@ }, ", detailsTabId?: string | undefined) => void" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -545,7 +545,7 @@ "text": "IndexDetailsPageRoute" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -560,7 +560,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -578,7 +578,7 @@ "tags": [], "label": "Index", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -589,7 +589,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -603,7 +603,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -617,7 +617,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -628,7 +628,7 @@ "tags": [], "label": "isFrozen", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -639,7 +639,7 @@ "tags": [], "label": "hidden", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -653,7 +653,7 @@ "signature": [ "string | string[]" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -667,7 +667,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -681,7 +681,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -696,7 +696,7 @@ "IlmExplainLifecycleLifecycleExplain", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -710,7 +710,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -725,7 +725,7 @@ "HealthStatus", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -740,7 +740,7 @@ "IndicesStatsIndexMetadataState", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -754,7 +754,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -768,7 +768,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -782,7 +782,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -796,7 +796,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -810,7 +810,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -824,7 +824,7 @@ "tags": [], "label": "IndexBadge", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -846,7 +846,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -866,7 +866,7 @@ "text": "Index" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -881,7 +881,7 @@ "tags": [], "label": "label", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false }, @@ -895,7 +895,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false }, @@ -909,7 +909,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false } @@ -923,7 +923,7 @@ "tags": [], "label": "IndexContent", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -945,7 +945,7 @@ }, "; getUrlForApp: (appId: string, options?: { path?: string | undefined; absolute?: boolean | undefined; deepLinkId?: string | undefined; } | undefined) => string; }) => React.ReactElement | null" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -956,7 +956,7 @@ "tags": [], "label": "args", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -976,7 +976,7 @@ "text": "Index" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false }, @@ -990,7 +990,7 @@ "signature": [ "(appId: string, options?: { path?: string | undefined; absolute?: boolean | undefined; deepLinkId?: string | undefined; } | undefined) => string" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1037,7 +1037,7 @@ "tags": [], "label": "IndexDetailsPageRoute", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1051,7 +1051,7 @@ "signature": [ "(indexName: string, detailsTabId?: string | undefined) => string" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1065,7 +1065,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1080,7 +1080,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1098,7 +1098,7 @@ "tags": [], "label": "IndexDetailsTab", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1109,7 +1109,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false }, @@ -1123,7 +1123,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false }, @@ -1145,7 +1145,7 @@ }, "; getUrlForApp: (appId: string, options?: { path?: string | undefined; absolute?: boolean | undefined; deepLinkId?: string | undefined; } | undefined) => string; }) => React.ReactElement | null" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1156,7 +1156,7 @@ "tags": [], "label": "args", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1176,7 +1176,7 @@ "text": "Index" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false }, @@ -1190,7 +1190,7 @@ "signature": [ "(appId: string, options?: { path?: string | undefined; absolute?: boolean | undefined; deepLinkId?: string | undefined; } | undefined) => string" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1234,7 +1234,7 @@ "tags": [], "label": "order", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false }, @@ -1256,7 +1256,7 @@ }, "; }) => boolean) | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1267,7 +1267,7 @@ "tags": [], "label": "args", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1287,7 +1287,7 @@ "text": "Index" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false } @@ -1307,7 +1307,7 @@ "EuiBreadcrumbProps", " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false } @@ -1321,7 +1321,7 @@ "tags": [], "label": "IndexManagementPluginSetup", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1341,7 +1341,7 @@ "text": "PublicApiServiceSetup" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1361,7 +1361,7 @@ "text": "ExtensionsSetup" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1382,7 +1382,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1396,7 +1396,7 @@ "tags": [], "label": "IndexManagementPluginStart", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1416,7 +1416,7 @@ "text": "ExtensionsSetup" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1446,7 +1446,7 @@ }, ">" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1457,7 +1457,7 @@ "tags": [], "label": "deps", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1478,7 +1478,7 @@ }, "" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1513,7 +1513,7 @@ }, ">" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1524,7 +1524,7 @@ "tags": [], "label": "deps", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1545,7 +1545,7 @@ }, "" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1564,7 +1564,7 @@ "tags": [], "label": "IndexMappingProps", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1585,7 +1585,7 @@ }, " | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1599,7 +1599,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1613,7 +1613,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1627,7 +1627,7 @@ "tags": [], "label": "IndexSettingProps", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1638,7 +1638,7 @@ "tags": [], "label": "indexName", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1652,7 +1652,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1666,7 +1666,7 @@ "tags": [], "label": "IndexToggle", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1688,7 +1688,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1708,7 +1708,7 @@ "text": "Index" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1723,7 +1723,7 @@ "tags": [], "label": "label", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false }, @@ -1734,7 +1734,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false } @@ -1748,7 +1748,7 @@ "tags": [], "label": "IndicesListColumn", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1759,7 +1759,7 @@ "tags": [], "label": "fieldName", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false }, @@ -1770,7 +1770,7 @@ "tags": [], "label": "label", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false }, @@ -1781,7 +1781,7 @@ "tags": [], "label": "order", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false }, @@ -1803,7 +1803,7 @@ }, ") => React.ReactNode) | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1823,7 +1823,7 @@ "text": "Index" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1849,7 +1849,7 @@ }, ") => any) | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1869,7 +1869,7 @@ "text": "Index" } ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1887,7 +1887,7 @@ "tags": [], "label": "PublicApiServiceSetup", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1917,7 +1917,7 @@ }, "[], any>>" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1943,7 +1943,7 @@ }, "" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1957,7 +1957,7 @@ "signature": [ "D | null" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1971,7 +1971,7 @@ "signature": [ "E | null" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -1985,7 +1985,7 @@ "tags": [], "label": "SerializedEnrichPolicy", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1999,7 +1999,7 @@ "signature": [ "\"match\" | \"range\" | \"geo_match\"" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false }, @@ -2010,7 +2010,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false }, @@ -2024,7 +2024,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false }, @@ -2035,7 +2035,7 @@ "tags": [], "label": "matchField", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false }, @@ -2049,7 +2049,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false }, @@ -2063,7 +2063,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts", "deprecated": false, "trackAdoption": false } @@ -2079,7 +2079,7 @@ "tags": [], "label": "IndexDetailsSection", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2091,7 +2091,7 @@ "tags": [], "label": "Section", "description": [], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2108,7 +2108,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2138,7 +2138,7 @@ }, ">" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2160,7 +2160,7 @@ }, " & ({ page: \"data_streams_details\"; dataStreamName?: string | undefined; } | { page: \"index_template\"; indexTemplate: string; } | { page: \"component_template\"; componentTemplate: string; })" ], - "path": "x-pack/packages/index-management/index_management_shared_types/src/types.ts", + "path": "x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_index_management_shared_types.mdx b/api_docs/kbn_index_management_shared_types.mdx index 8bb71f78d7ec5..4811dc257ad64 100644 --- a/api_docs/kbn_index_management_shared_types.mdx +++ b/api_docs/kbn_index_management_shared_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-management-shared-types title: "@kbn/index-management-shared-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-management-shared-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-management-shared-types'] --- import kbnIndexManagementSharedTypesObj from './kbn_index_management_shared_types.devdocs.json'; diff --git a/api_docs/kbn_inference_common.devdocs.json b/api_docs/kbn_inference_common.devdocs.json index 9cb8c900b21db..6811cb39c58d0 100644 --- a/api_docs/kbn_inference_common.devdocs.json +++ b/api_docs/kbn_inference_common.devdocs.json @@ -37,7 +37,7 @@ }, " extends Error" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -51,7 +51,7 @@ "signature": [ "any" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -65,7 +65,7 @@ "signature": [ "TCode" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -80,7 +80,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -95,7 +95,7 @@ "signature": [ "TMeta" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -120,7 +120,7 @@ "text": "InferenceTaskErrorEvent" } ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -148,7 +148,7 @@ "text": "InferenceTaskInternalError" } ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -162,7 +162,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -177,7 +177,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -203,7 +203,7 @@ "text": "InferenceTaskRequestError" } ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -217,7 +217,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -232,7 +232,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -269,7 +269,7 @@ }, ">) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -298,7 +298,7 @@ }, ">" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -327,7 +327,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -347,7 +347,7 @@ "text": "InferenceTaskEvent" } ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -376,7 +376,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -397,7 +397,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -434,7 +434,7 @@ }, ">) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -463,7 +463,7 @@ }, ">" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -482,7 +482,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -496,7 +496,7 @@ "signature": [ "unknown" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -515,7 +515,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -529,7 +529,7 @@ "signature": [ "unknown" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -548,7 +548,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -562,7 +562,7 @@ "signature": [ "unknown" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -583,7 +583,7 @@ "signature": [ "(event: TOutputEvent) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -597,7 +597,7 @@ "signature": [ "TOutputEvent" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/event_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -626,7 +626,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -646,7 +646,7 @@ "text": "InferenceTaskEvent" } ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/event_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -675,7 +675,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -696,7 +696,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/event_utils.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -717,7 +717,7 @@ "signature": [ "(error: Error) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -731,7 +731,7 @@ "signature": [ "Error" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -752,7 +752,7 @@ "signature": [ "(error: Error) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -766,7 +766,7 @@ "signature": [ "Error" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -787,7 +787,7 @@ "signature": [ "(error: Error | undefined) => boolean" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -801,7 +801,7 @@ "signature": [ "Error | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -820,7 +820,7 @@ "signature": [ "(values: T[], limit: number) => (string | T)[]" ], - "path": "x-pack/packages/ai-infra/inference-common/src/truncate_list.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/truncate_list.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -834,7 +834,7 @@ "signature": [ "T[]" ], - "path": "x-pack/packages/ai-infra/inference-common/src/truncate_list.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/truncate_list.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -849,7 +849,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/ai-infra/inference-common/src/truncate_list.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/truncate_list.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -880,7 +880,7 @@ }, ">>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -909,7 +909,7 @@ }, ">>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -938,7 +938,7 @@ }, ">>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/event_utils.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/event_utils.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -966,7 +966,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -979,7 +979,7 @@ "description": [ "\nThe text content of the LLM response." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1002,7 +1002,7 @@ }, "[\"toolCalls\"]" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1025,7 +1025,7 @@ }, " | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false } @@ -1041,7 +1041,7 @@ "description": [ "\nRepresent a partial tool call present in a chunk event.\n\nNote that all properties of the structure, except from the index,\nare partial and must be aggregated." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1054,7 +1054,7 @@ "description": [ "\nThe tool call index (position in the tool call array)." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false }, @@ -1067,7 +1067,7 @@ "description": [ "\nchunk of tool call id." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false }, @@ -1081,7 +1081,7 @@ "signature": [ "{ name: string; arguments: string; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false } @@ -1097,7 +1097,7 @@ "description": [ "\nToken count structure for the chatComplete API." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1110,7 +1110,7 @@ "description": [ "\nInput token count" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false }, @@ -1123,7 +1123,7 @@ "description": [ "\nOutput token count" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false }, @@ -1136,7 +1136,7 @@ "description": [ "\nTotal token count" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false } @@ -1162,7 +1162,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/inference_task.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/inference_task.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1178,7 +1178,7 @@ "signature": [ "TEventType" ], - "path": "x-pack/packages/ai-infra/inference-common/src/inference_task.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/inference_task.ts", "deprecated": false, "trackAdoption": false } @@ -1204,7 +1204,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1220,7 +1220,7 @@ "signature": [ "TId" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1233,7 +1233,7 @@ "description": [ "\nThe ID of the connector to use.\nMust be an inference connector, or an error will be thrown." ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1249,7 +1249,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1262,7 +1262,7 @@ "description": [ "\nThe prompt for the LLM." ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1278,7 +1278,7 @@ "signature": [ "TOutputSchema | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1301,7 +1301,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1324,7 +1324,7 @@ }, " | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1340,7 +1340,23 @@ "signature": [ "TStream | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/inference-common", + "id": "def-common.OutputOptions.retry", + "type": "Object", + "tags": [], + "label": "retry", + "description": [ + "\nOptional configuration for retrying the call if an error occurs." + ], + "signature": [ + "{ onValidationError?: number | boolean | undefined; } | undefined" + ], + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false } @@ -1366,7 +1382,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1382,7 +1398,7 @@ "signature": [ "TId" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1398,7 +1414,7 @@ "signature": [ "TOutput" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false }, @@ -1411,7 +1427,7 @@ "description": [ "\nPotential text content provided by the LLM, if it was provided in addition to the tool call." ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false } @@ -1437,7 +1453,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1450,7 +1466,7 @@ "description": [ "\nThe id of the tool call, that must be re-used when providing the tool call response" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false }, @@ -1464,7 +1480,7 @@ "signature": [ "{ name: TName; } & (TArguments extends Record ? { arguments: TArguments; } : {})" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false } @@ -1480,7 +1496,7 @@ "description": [ "\nThe definition of a tool that will be provided to the LLM for it to eventually call." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1493,7 +1509,7 @@ "description": [ "\nA description of what the tool does. Note that this will be exposed to the LLM,\nso the description should be explicit about what the tool does and when to call it." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false }, @@ -1510,7 +1526,7 @@ "ToolSchemaTypeObject", " | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false } @@ -1536,7 +1552,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1559,7 +1575,7 @@ }, " | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false }, @@ -1583,7 +1599,7 @@ }, "> | undefined" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false } @@ -1599,7 +1615,7 @@ "description": [ "\nRepresents a tool call from the LLM before correctly converted to the schema type.\n\nOnly publicly exposed because referenced by {@link ChatCompletionToolValidationError}" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1610,7 +1626,7 @@ "tags": [], "label": "toolCallId", "description": [], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false }, @@ -1624,7 +1640,7 @@ "signature": [ "{ name: string; arguments: string; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false } @@ -1642,7 +1658,7 @@ "description": [ "\nList of code of error that are specific to the {@link ChatCompleteAPI}" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1656,7 +1672,7 @@ "description": [ "\nList possible values of {@link ChatCompletionEvent} types." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1670,7 +1686,7 @@ "description": [ "\nEnum for generic inference error codes." ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1684,7 +1700,7 @@ "description": [ "\nEnum for all possible {@link Message} roles." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/messages.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1698,7 +1714,7 @@ "description": [ "\nList possible values of {@link OutputEvent} types." ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1712,7 +1728,7 @@ "description": [ "\nTool invocation choice type.\n\nRefer to {@link ToolChoice} for more details." ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1747,7 +1763,40 @@ }, " | undefined>[] | undefined; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/messages.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/inference-common", + "id": "def-common.AssistantMessageOf", + "type": "Type", + "tags": [], + "label": "AssistantMessageOf", + "description": [ + "\nUtility type to get the Assistant message type of a {@link ToolOptions} type." + ], + "signature": [ + "Omit<", + { + "pluginId": "@kbn/inference-common", + "scope": "common", + "docId": "kibKbnInferenceCommonPluginApi", + "section": "def-common.AssistantMessage", + "text": "AssistantMessage" + }, + ", \"toolCalls\"> & ", + { + "pluginId": "@kbn/inference-common", + "scope": "common", + "docId": "kibKbnInferenceCommonPluginApi", + "section": "def-common.ToolCallsOf", + "text": "ToolCallsOf" + }, + "" + ], + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1796,7 +1845,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/bound_api.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1819,7 +1868,7 @@ }, "[P]; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/bound_api.ts", "deprecated": false, "trackAdoption": false } @@ -1854,7 +1903,7 @@ }, "[\"functionCalling\"] | undefined; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/bound_api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1891,7 +1940,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/bound_api.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1904,7 +1953,7 @@ "label": "options", "description": [], "signature": [ - "{ id: TId; input: string; schema?: TOutputSchema | undefined; system?: string | undefined; stream?: TStream | undefined; previousMessages?: ", + "{ id: TId; input: string; schema?: TOutputSchema | undefined; retry?: { onValidationError?: number | boolean | undefined; } | undefined; system?: string | undefined; stream?: TStream | undefined; previousMessages?: ", { "pluginId": "@kbn/inference-common", "scope": "common", @@ -1914,7 +1963,7 @@ }, "[] | undefined; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/bound_api.ts", "deprecated": false, "trackAdoption": false } @@ -1941,7 +1990,7 @@ }, " | undefined; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/bound_api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1990,7 +2039,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -2021,7 +2070,7 @@ }, " | undefined; } & TToolOptions" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false } @@ -2056,7 +2105,7 @@ }, ">" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2089,7 +2138,7 @@ }, " | undefined; } & TToolOptions" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2115,7 +2164,7 @@ }, ">" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2155,7 +2204,7 @@ }, "[]; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2195,7 +2244,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2235,7 +2284,7 @@ }, "[\"toolCalls\"]; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2275,7 +2324,7 @@ }, "; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2307,7 +2356,7 @@ }, ".TokenLimitReachedError, { tokenLimit?: number | undefined; tokenCount?: number | undefined; }>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2339,7 +2388,7 @@ }, ".ToolNotFoundError, { name: string; }>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2379,7 +2428,7 @@ }, "[] | undefined; }>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2398,7 +2447,7 @@ "ToolSchemaTypeObject", " ? FromToolSchemaObject : TToolSchema extends ToolSchemaTypeArray ? FromToolSchemaArray : TToolSchema extends ToolSchemaTypeBoolean ? boolean : TToolSchema extends ToolSchemaTypeNumber ? number : TToolSchema extends ToolSchemaTypeString ? FromToolSchemaString : never" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tool_schema.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tool_schema.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2415,7 +2464,7 @@ "signature": [ "\"native\" | \"simulated\"" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2445,7 +2494,7 @@ }, "> & { error: { code: string; message: string; meta?: Record | undefined; }; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2467,7 +2516,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/inference_task.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/inference_task.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2479,7 +2528,7 @@ "tags": [], "label": "InferenceTaskEventType", "description": [], - "path": "x-pack/packages/ai-infra/inference-common/src/inference_task.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/inference_task.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2509,7 +2558,7 @@ }, ".internalError, Record>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2539,7 +2588,7 @@ }, ".requestError, { status: number; }>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/errors.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/errors.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2577,9 +2626,49 @@ "section": "def-common.ToolMessage", "text": "ToolMessage" }, - "" + " | undefined>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/messages.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/inference-common", + "id": "def-common.MessageOf", + "type": "Type", + "tags": [], + "label": "MessageOf", + "description": [ + "\nUtility type to get the mixin Message type of a {@link ToolOptions} type." + ], + "signature": [ + { + "pluginId": "@kbn/inference-common", + "scope": "common", + "docId": "kibKbnInferenceCommonPluginApi", + "section": "def-common.UserMessage", + "text": "UserMessage" + }, + " | ", + { + "pluginId": "@kbn/inference-common", + "scope": "common", + "docId": "kibKbnInferenceCommonPluginApi", + "section": "def-common.AssistantMessageOf", + "text": "AssistantMessageOf" + }, + " | ", + { + "pluginId": "@kbn/inference-common", + "scope": "common", + "docId": "kibKbnInferenceCommonPluginApi", + "section": "def-common.ToolMessageOf", + "text": "ToolMessageOf" + }, + "" + ], + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2596,7 +2685,7 @@ "signature": [ "unknown" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2633,7 +2722,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -2655,7 +2744,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false } @@ -2689,7 +2778,7 @@ }, ".OutputComplete> & { id: TId; output: TOutput; content: string; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2732,7 +2821,7 @@ }, " : undefined>>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2764,7 +2853,7 @@ }, "" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2800,7 +2889,7 @@ }, " : undefined>>" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2832,7 +2921,7 @@ }, ".OutputUpdate> & { id: TId; content: string; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/events.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2863,9 +2952,11 @@ "section": "def-common.ToolChoiceType", "text": "ToolChoiceType" }, - ".none; } ? { toolCalls: []; } : { toolCalls: ToolResponsesOf>; } : { toolCalls: never; }" + ".none; } ? { toolCalls: []; } : { toolCalls: ", + "ToolResponsesOf", + ">; } : { toolCalls: never; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2889,7 +2980,7 @@ }, " | CustomToolChoice" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tools.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2912,9 +3003,38 @@ "section": "def-common.MessageRole", "text": "MessageRole" }, - ".Tool> & { toolCallId: string; response: TToolResponse; }" + ".Tool> & { name: TName; toolCallId: string; response: TToolResponse; } & (TToolData extends undefined ? {} : { data: TToolData; })" + ], + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/inference-common", + "id": "def-common.ToolMessageOf", + "type": "Type", + "tags": [], + "label": "ToolMessageOf", + "description": [ + "\nUtility type to get the Tool message type of a {@link ToolOptions} type." + ], + "signature": [ + "MessageBase<", + { + "pluginId": "@kbn/inference-common", + "scope": "common", + "docId": "kibKbnInferenceCommonPluginApi", + "section": "def-common.MessageRole", + "text": "MessageRole" + }, + ".Tool> & { name: ", + "ToolNamesOf", + "; toolCallId: string; response: ", + "ToolResponsesOf", + "; } & ({} | { data: Record; })" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/messages.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2931,7 +3051,7 @@ "signature": [ "ToolSchemaTypeObject" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tool_schema.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tool_schema.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2949,7 +3069,7 @@ "ToolSchemaTypeObject", " | ToolSchemaTypeString | ToolSchemaTypeBoolean | ToolSchemaTypeNumber | ToolSchemaTypeArray" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/tool_schema.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tool_schema.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2974,7 +3094,7 @@ }, "[P]; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/bound_api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2989,7 +3109,7 @@ "\nOptions used to call the {@link BoundOutputAPI}" ], "signature": [ - "{ id: TId; input: string; schema?: TOutputSchema | undefined; system?: string | undefined; stream?: TStream | undefined; previousMessages?: ", + "{ id: TId; input: string; schema?: TOutputSchema | undefined; retry?: { onValidationError?: number | boolean | undefined; } | undefined; system?: string | undefined; stream?: TStream | undefined; previousMessages?: ", { "pluginId": "@kbn/inference-common", "scope": "common", @@ -2999,7 +3119,7 @@ }, "[] | undefined; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/output/bound_api.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/output/bound_api.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3024,7 +3144,7 @@ }, ".User> & { content: string; }" ], - "path": "x-pack/packages/ai-infra/inference-common/src/chat_complete/messages.ts", + "path": "x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_inference_common.mdx b/api_docs/kbn_inference_common.mdx index ae7b81e2ecca6..1e8c366242a47 100644 --- a/api_docs/kbn_inference_common.mdx +++ b/api_docs/kbn_inference_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-common title: "@kbn/inference-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-common'] --- import kbnInferenceCommonObj from './kbn_inference_common.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 132 | 0 | 43 | 1 | +| 136 | 0 | 43 | 3 | ## Common diff --git a/api_docs/kbn_inference_integration_flyout.mdx b/api_docs/kbn_inference_integration_flyout.mdx index 835d28fa31cbd..330839fc74b5f 100644 --- a/api_docs/kbn_inference_integration_flyout.mdx +++ b/api_docs/kbn_inference_integration_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference_integration_flyout title: "@kbn/inference_integration_flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference_integration_flyout plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference_integration_flyout'] --- import kbnInferenceIntegrationFlyoutObj from './kbn_inference_integration_flyout.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.devdocs.json b/api_docs/kbn_infra_forge.devdocs.json index 51660ce739fbc..0db9d8bc7d5a1 100644 --- a/api_docs/kbn_infra_forge.devdocs.json +++ b/api_docs/kbn_infra_forge.devdocs.json @@ -39,7 +39,7 @@ }, "; }) => Promise" ], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -50,7 +50,7 @@ "tags": [], "label": "{ esClient, logger }", "description": [], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -64,7 +64,7 @@ "signature": [ "default" ], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false }, @@ -84,7 +84,7 @@ "text": "ToolingLog" } ], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false } @@ -114,7 +114,7 @@ }, "; }) => Promise" ], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -125,7 +125,7 @@ "tags": [], "label": "{\n esClient,\n lookback,\n logger,\n}", "description": [], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -139,7 +139,7 @@ "signature": [ "default" ], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false }, @@ -150,7 +150,7 @@ "tags": [], "label": "lookback", "description": [], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false }, @@ -170,7 +170,7 @@ "text": "ToolingLog" } ], - "path": "x-pack/packages/kbn-infra-forge/src/run.ts", + "path": "x-pack/platform/packages/private/kbn-infra-forge/src/run.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 1da04c3ca95de..7b619de39b924 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index 6f7eb31206d9a..71018aadd5b28 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_investigation_shared.devdocs.json b/api_docs/kbn_investigation_shared.devdocs.json index 9d9586f583ec8..e0190597796ff 100644 --- a/api_docs/kbn_investigation_shared.devdocs.json +++ b/api_docs/kbn_investigation_shared.devdocs.json @@ -22,6 +22,36 @@ "interfaces": [], "enums": [], "misc": [ + { + "parentPluginId": "@kbn/investigation-shared", + "id": "def-common.AlertEventResponse", + "type": "Type", + "tags": [], + "label": "AlertEventResponse", + "description": [], + "signature": [ + "{ id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }" + ], + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/investigation-shared", + "id": "def-common.AnnotationEventResponse", + "type": "Type", + "tags": [], + "label": "AnnotationEventResponse", + "description": [], + "signature": [ + "{ id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; }" + ], + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/investigation-shared", "id": "def-common.CreateInvestigationItemParams", @@ -32,7 +62,7 @@ "signature": [ "{ params: Record; type: string; title: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -47,7 +77,7 @@ "signature": [ "{ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -62,7 +92,7 @@ "signature": [ "{ content: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -77,7 +107,7 @@ "signature": [ "{ id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -92,7 +122,7 @@ "signature": [ "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -105,9 +135,9 @@ "label": "CreateInvestigationResponse", "description": [], "signature": [ - "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }" + "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -122,7 +152,7 @@ "signature": [ "{ itemId: string; investigationId: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/delete_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -137,7 +167,7 @@ "signature": [ "{ investigationId: string; noteId: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/delete_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -152,7 +182,7 @@ "signature": [ "{ investigationId: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/delete.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -167,7 +197,7 @@ "signature": [ "{ dataStream?: string | undefined; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/entity.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/entity.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -182,7 +212,7 @@ "signature": [ "{ id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; } & { sources: { dataStream?: string | undefined; }[]; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/entity.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/entity.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -195,24 +225,9 @@ "label": "EventResponse", "description": [], "signature": [ - "{ id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; } & ({ eventType: \"annotation\"; annotationType?: string | undefined; } | { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; })" + "{ id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; } | { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/event.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/investigation-shared", - "id": "def-common.EventSchema", - "type": "Type", - "tags": [], - "label": "EventSchema", - "description": [], - "signature": [ - "{ id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; } & ({ eventType: \"annotation\"; annotationType?: string | undefined; } | { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; })" - ], - "path": "packages/kbn-investigation-shared/src/rest_specs/event.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -227,7 +242,7 @@ "signature": [ "{ page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; } | undefined" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/find.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -240,9 +255,9 @@ "label": "FindInvestigationsResponse", "description": [], "signature": [ - "{ page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }[]; perPage: number; total: number; }" + "{ page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }[]; perPage: number; total: number; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/find.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -257,7 +272,7 @@ "signature": [ "{ count: Partial>; total: number; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -272,7 +287,7 @@ "signature": [ "string[]" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -287,7 +302,7 @@ "signature": [ "{ 'container.id'?: string | undefined; 'host.name'?: string | undefined; 'service.environment'?: string | undefined; 'service.name'?: string | undefined; } | undefined" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -302,7 +317,7 @@ "signature": [ "{ entities: ({ id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; } & { sources: { dataStream?: string | undefined; }[]; })[]; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -315,9 +330,9 @@ "label": "GetEventsParams", "description": [], "signature": [ - "{ filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; } | undefined" + "{ filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: (\"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\")[] | undefined; } | undefined" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_events.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -330,9 +345,9 @@ "label": "GetEventsResponse", "description": [], "signature": [ - "({ id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; } & ({ eventType: \"annotation\"; annotationType?: string | undefined; } | { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }))[]" + "({ id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; } | { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; })[]" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_events.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -347,7 +362,7 @@ "signature": [ "({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_items.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_items.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -362,7 +377,7 @@ "signature": [ "{ id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_notes.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -377,7 +392,7 @@ "signature": [ "{ investigationId: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -390,9 +405,9 @@ "label": "GetInvestigationResponse", "description": [], "signature": [ - "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }" + "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -407,7 +422,7 @@ "signature": [ "{ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; }" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -422,7 +437,7 @@ "signature": [ "{ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -437,7 +452,7 @@ "signature": [ "{ id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -450,9 +465,9 @@ "label": "InvestigationResponse", "description": [], "signature": [ - "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }" + "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/investigation.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -467,7 +482,7 @@ "signature": [ "{ params: Record; type: string; title: string; }" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -482,7 +497,7 @@ "signature": [ "\"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -497,7 +512,7 @@ "signature": [ "{ params: Record; type: string; title: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -512,7 +527,7 @@ "signature": [ "{ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -527,7 +542,7 @@ "signature": [ "{ content: string; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -542,7 +557,7 @@ "signature": [ "{ id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -555,9 +570,9 @@ "label": "UpdateInvestigationParams", "description": [], "signature": [ - "{ params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }" + "{ params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -570,15 +585,30 @@ "label": "UpdateInvestigationResponse", "description": [], "signature": [ - "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }" + "{ params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false } ], "objects": [ + { + "parentPluginId": "@kbn/investigation-shared", + "id": "def-common.alertEventSchema", + "type": "Object", + "tags": [], + "label": "alertEventSchema", + "description": [], + "signature": [ + "Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; title: Zod.ZodString; description: Zod.ZodString; timestamp: Zod.ZodNumber; source: Zod.ZodOptional>; alertStatus: Zod.ZodUnion<[Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"flapping\">, Zod.ZodLiteral<\"recovered\">, Zod.ZodLiteral<\"untracked\">]>; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }, { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }>" + ], + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/investigation-shared", "id": "def-common.alertOriginSchema", @@ -589,7 +619,22 @@ "signature": [ "Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>" ], - "path": "packages/kbn-investigation-shared/src/schema/origin.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/origin.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/investigation-shared", + "id": "def-common.annotationEventSchema", + "type": "Object", + "tags": [], + "label": "annotationEventSchema", + "description": [], + "signature": [ + "Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"annotation\">; id: Zod.ZodString; title: Zod.ZodString; description: Zod.ZodString; timestamp: Zod.ZodNumber; source: Zod.ZodOptional>; annotationType: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; }, { id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; }>" + ], + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -604,7 +649,7 @@ "signature": [ "Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>" ], - "path": "packages/kbn-investigation-shared/src/schema/origin.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/origin.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -619,7 +664,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; body: Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; body: { params: Record; type: string; title: string; }; }, { path: { investigationId: string; }; body: { params: Record; type: string; title: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -634,7 +679,7 @@ "signature": [ "Zod.ZodIntersection, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -649,7 +694,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; body: Zod.ZodObject<{ content: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { content: string; }, { content: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; body: { content: string; }; }, { path: { investigationId: string; }; body: { content: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -664,7 +709,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; content: Zod.ZodString; createdAt: Zod.ZodNumber; updatedAt: Zod.ZodNumber; createdBy: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -679,7 +724,7 @@ "signature": [ "Zod.ZodObject<{ body: Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; tags: Zod.ZodArray; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }>; }, \"strip\", Zod.ZodTypeAny, { body: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }; }, { body: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -692,9 +737,9 @@ "label": "createInvestigationResponseSchema", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }>" + "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/create.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -709,7 +754,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; itemId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { itemId: string; investigationId: string; }, { itemId: string; investigationId: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { itemId: string; investigationId: string; }; }, { path: { itemId: string; investigationId: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/delete_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -724,7 +769,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; noteId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; noteId: string; }, { investigationId: string; noteId: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; noteId: string; }; }, { path: { investigationId: string; noteId: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/delete_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -739,7 +784,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; }, { path: { investigationId: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/delete.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -754,7 +799,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; definition_id: Zod.ZodString; definition_version: Zod.ZodString; display_name: Zod.ZodString; last_seen_timestamp: Zod.ZodString; identity_fields: Zod.ZodArray; schema_version: Zod.ZodString; type: Zod.ZodString; metrics: Zod.ZodObject<{ failedTransactionRate: Zod.ZodOptional; latency: Zod.ZodOptional; throughput: Zod.ZodOptional; logErrorRate: Zod.ZodOptional; logRate: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }, { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; }, { id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/entity.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/entity.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -769,37 +814,37 @@ "signature": [ "Zod.ZodIntersection; schema_version: Zod.ZodString; type: Zod.ZodString; metrics: Zod.ZodObject<{ failedTransactionRate: Zod.ZodOptional; latency: Zod.ZodOptional; throughput: Zod.ZodOptional; logErrorRate: Zod.ZodOptional; logRate: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }, { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; }, { id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; }>, Zod.ZodObject<{ sources: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { dataStream?: string | undefined; }, { dataStream?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { sources: { dataStream?: string | undefined; }[]; }, { sources: { dataStream?: string | undefined; }[]; }>>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/entity.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/entity.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false }, { "parentPluginId": "@kbn/investigation-shared", - "id": "def-common.eventResponseSchema", + "id": "def-common.eventSchema", "type": "Object", "tags": [], - "label": "eventResponseSchema", + "label": "eventSchema", "description": [], "signature": [ - "Zod.ZodIntersection, Zod.ZodLiteral<\"alert\">, Zod.ZodLiteral<\"error_rate\">, Zod.ZodLiteral<\"latency\">, Zod.ZodLiteral<\"anomaly\">]>; source: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; }, { id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; }>, Zod.ZodDiscriminatedUnion<\"eventType\", [Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"annotation\">; annotationType: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { eventType: \"annotation\"; annotationType?: string | undefined; }, { eventType: \"annotation\"; annotationType?: string | undefined; }>, Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"alert\">; alertStatus: Zod.ZodUnion<[Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"flapping\">, Zod.ZodLiteral<\"recovered\">, Zod.ZodLiteral<\"untracked\">]>; }, \"strip\", Zod.ZodTypeAny, { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }, { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }>]>>" + "Zod.ZodDiscriminatedUnion<\"eventType\", [Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"annotation\">; id: Zod.ZodString; title: Zod.ZodString; description: Zod.ZodString; timestamp: Zod.ZodNumber; source: Zod.ZodOptional>; annotationType: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; }, { id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; }>, Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; title: Zod.ZodString; description: Zod.ZodString; timestamp: Zod.ZodNumber; source: Zod.ZodOptional>; alertStatus: Zod.ZodUnion<[Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"flapping\">, Zod.ZodLiteral<\"recovered\">, Zod.ZodLiteral<\"untracked\">]>; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }, { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }>]>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/event.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false }, { "parentPluginId": "@kbn/investigation-shared", - "id": "def-common.eventSchema", + "id": "def-common.eventTypeSchema", "type": "Object", "tags": [], - "label": "eventSchema", + "label": "eventTypeSchema", "description": [], "signature": [ - "Zod.ZodIntersection, Zod.ZodLiteral<\"alert\">, Zod.ZodLiteral<\"error_rate\">, Zod.ZodLiteral<\"latency\">, Zod.ZodLiteral<\"anomaly\">]>; source: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; }, { id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; }>, Zod.ZodDiscriminatedUnion<\"eventType\", [Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"annotation\">; annotationType: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { eventType: \"annotation\"; annotationType?: string | undefined; }, { eventType: \"annotation\"; annotationType?: string | undefined; }>, Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"alert\">; alertStatus: Zod.ZodUnion<[Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"flapping\">, Zod.ZodLiteral<\"recovered\">, Zod.ZodLiteral<\"untracked\">]>; }, \"strip\", Zod.ZodTypeAny, { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }, { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }>]>>" + "Zod.ZodUnion<[Zod.ZodLiteral<\"annotation\">, Zod.ZodLiteral<\"alert\">, Zod.ZodLiteral<\"error_rate\">, Zod.ZodLiteral<\"latency\">, Zod.ZodLiteral<\"anomaly\">]>" ], - "path": "packages/kbn-investigation-shared/src/schema/event.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -814,7 +859,7 @@ "signature": [ "Zod.ZodObject<{ query: Zod.ZodOptional; search: Zod.ZodOptional; filter: Zod.ZodOptional; page: Zod.ZodOptional; perPage: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; }, { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { query?: { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; } | undefined; }, { query?: { page?: number | undefined; filter?: string | undefined; search?: string | undefined; perPage?: number | undefined; alertId?: string | undefined; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/find.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -827,9 +872,9 @@ "label": "findInvestigationsResponseSchema", "description": [], "signature": [ - "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; results: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }[]; perPage: number; total: number; }, { page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }[]; perPage: number; total: number; }>" + "Zod.ZodObject<{ page: Zod.ZodNumber; perPage: Zod.ZodNumber; total: Zod.ZodNumber; results: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }[]; perPage: number; total: number; }, { page: number; results: { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }[]; perPage: number; total: number; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/find.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -844,7 +889,7 @@ "signature": [ "Zod.ZodObject<{ query: Zod.ZodObject<{}, \"strip\", Zod.ZodTypeAny, {}, {}>; }, \"strip\", Zod.ZodTypeAny, { query: {}; }, { query: {}; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -859,7 +904,7 @@ "signature": [ "Zod.ZodObject<{ count: Zod.ZodRecord, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>, Zod.ZodNumber>; total: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { count: Partial>; total: number; }, { count: Partial>; total: number; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -874,7 +919,7 @@ "signature": [ "Zod.ZodObject<{ query: Zod.ZodObject<{}, \"strip\", Zod.ZodTypeAny, {}, {}>; }, \"strip\", Zod.ZodTypeAny, { query: {}; }, { query: {}; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -889,7 +934,7 @@ "signature": [ "Zod.ZodArray" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -904,7 +949,7 @@ "signature": [ "Zod.ZodObject<{ query: Zod.ZodOptional; 'service.environment': Zod.ZodOptional; 'host.name': Zod.ZodOptional; 'container.id': Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { 'container.id'?: string | undefined; 'host.name'?: string | undefined; 'service.environment'?: string | undefined; 'service.name'?: string | undefined; }, { 'container.id'?: string | undefined; 'host.name'?: string | undefined; 'service.environment'?: string | undefined; 'service.name'?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { query?: { 'container.id'?: string | undefined; 'host.name'?: string | undefined; 'service.environment'?: string | undefined; 'service.name'?: string | undefined; } | undefined; }, { query?: { 'container.id'?: string | undefined; 'host.name'?: string | undefined; 'service.environment'?: string | undefined; 'service.name'?: string | undefined; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -919,7 +964,7 @@ "signature": [ "Zod.ZodObject<{ entities: Zod.ZodArray; schema_version: Zod.ZodString; type: Zod.ZodString; metrics: Zod.ZodObject<{ failedTransactionRate: Zod.ZodOptional; latency: Zod.ZodOptional; throughput: Zod.ZodOptional; logErrorRate: Zod.ZodOptional; logRate: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }, { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; }, { id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; }>, Zod.ZodObject<{ sources: Zod.ZodArray; }, \"strip\", Zod.ZodTypeAny, { dataStream?: string | undefined; }, { dataStream?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { sources: { dataStream?: string | undefined; }[]; }, { sources: { dataStream?: string | undefined; }[]; }>>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { entities: ({ id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; } & { sources: { dataStream?: string | undefined; }[]; })[]; }, { entities: ({ id: string; type: string; metrics: { latency?: number | undefined; throughput?: number | undefined; failedTransactionRate?: number | undefined; logErrorRate?: number | undefined; logRate?: number | undefined; }; schema_version: string; identity_fields: string[]; display_name: string; definition_version: string; definition_id: string; last_seen_timestamp: string; } & { sources: { dataStream?: string | undefined; }[]; })[]; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -932,9 +977,9 @@ "label": "getEventsParamsSchema", "description": [], "signature": [ - "Zod.ZodObject<{ query: Zod.ZodOptional; rangeTo: Zod.ZodOptional; filter: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; }, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; } | undefined; }, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; } | undefined; }>" + "Zod.ZodObject<{ query: Zod.ZodOptional; rangeTo: Zod.ZodOptional; filter: Zod.ZodOptional; eventTypes: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: (\"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\")[] | undefined; }, { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: string | undefined; }>>; }, \"strip\", Zod.ZodTypeAny, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: (\"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\")[] | undefined; } | undefined; }, { query?: { filter?: string | undefined; rangeFrom?: string | undefined; rangeTo?: string | undefined; eventTypes?: string | undefined; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_events.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -947,9 +992,9 @@ "label": "getEventsResponseSchema", "description": [], "signature": [ - "Zod.ZodArray, Zod.ZodLiteral<\"alert\">, Zod.ZodLiteral<\"error_rate\">, Zod.ZodLiteral<\"latency\">, Zod.ZodLiteral<\"anomaly\">]>; source: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; }, { id: string; timestamp: number; title: string; description: string; eventType: \"alert\" | \"annotation\" | \"latency\" | \"error_rate\" | \"anomaly\"; source?: Record | undefined; }>, Zod.ZodDiscriminatedUnion<\"eventType\", [Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"annotation\">; annotationType: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { eventType: \"annotation\"; annotationType?: string | undefined; }, { eventType: \"annotation\"; annotationType?: string | undefined; }>, Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"alert\">; alertStatus: Zod.ZodUnion<[Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"flapping\">, Zod.ZodLiteral<\"recovered\">, Zod.ZodLiteral<\"untracked\">]>; }, \"strip\", Zod.ZodTypeAny, { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }, { alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; }>]>>, \"many\">" + "Zod.ZodArray; id: Zod.ZodString; title: Zod.ZodString; description: Zod.ZodString; timestamp: Zod.ZodNumber; source: Zod.ZodOptional>; annotationType: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; }, { id: string; timestamp: number; title: string; description: string; eventType: \"annotation\"; source?: Record | undefined; annotationType?: string | undefined; }>, Zod.ZodObject<{ eventType: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; title: Zod.ZodString; description: Zod.ZodString; timestamp: Zod.ZodNumber; source: Zod.ZodOptional>; alertStatus: Zod.ZodUnion<[Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"flapping\">, Zod.ZodLiteral<\"recovered\">, Zod.ZodLiteral<\"untracked\">]>; }, \"strip\", Zod.ZodTypeAny, { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }, { id: string; timestamp: number; title: string; description: string; alertStatus: \"flapping\" | \"recovered\" | \"active\" | \"untracked\"; eventType: \"alert\"; source?: Record | undefined; }>]>, \"many\">" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_events.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -964,7 +1009,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; }, { path: { investigationId: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_items.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_items.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -979,7 +1024,7 @@ "signature": [ "Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_items.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_items.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -994,7 +1039,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; }, { path: { investigationId: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_notes.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1009,7 +1054,7 @@ "signature": [ "Zod.ZodArray, \"many\">" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get_notes.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1024,7 +1069,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; }, { path: { investigationId: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1037,9 +1082,9 @@ "label": "getInvestigationResponseSchema", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }>" + "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/get.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1054,7 +1099,7 @@ "signature": [ "Zod.ZodIntersection, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1069,7 +1114,7 @@ "signature": [ "Zod.ZodIntersection, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1084,7 +1129,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; content: Zod.ZodString; createdAt: Zod.ZodNumber; updatedAt: Zod.ZodNumber; createdBy: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1099,7 +1144,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; content: Zod.ZodString; createdAt: Zod.ZodNumber; updatedAt: Zod.ZodNumber; createdBy: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }>" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1112,9 +1157,9 @@ "label": "investigationResponseSchema", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }>" + "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/investigation.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1127,9 +1172,9 @@ "label": "investigationSchema", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }>" + "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1144,7 +1189,7 @@ "signature": [ "Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1159,7 +1204,7 @@ "signature": [ "Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>" ], - "path": "packages/kbn-investigation-shared/src/schema/investigation.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1174,7 +1219,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; itemId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { itemId: string; investigationId: string; }, { itemId: string; investigationId: string; }>; body: Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { itemId: string; investigationId: string; }; body: { params: Record; type: string; title: string; }; }, { path: { itemId: string; investigationId: string; }; body: { params: Record; type: string; title: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1189,7 +1234,7 @@ "signature": [ "Zod.ZodIntersection, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_item.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_item.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1204,7 +1249,7 @@ "signature": [ "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; noteId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; noteId: string; }, { investigationId: string; noteId: string; }>; body: Zod.ZodObject<{ content: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { content: string; }, { content: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; noteId: string; }; body: { content: string; }; }, { path: { investigationId: string; noteId: string; }; body: { content: string; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1219,7 +1264,7 @@ "signature": [ "Zod.ZodObject<{ id: Zod.ZodString; content: Zod.ZodString; createdAt: Zod.ZodNumber; updatedAt: Zod.ZodNumber; createdBy: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }, { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update_note.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_note.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1232,9 +1277,9 @@ "label": "updateInvestigationParamsSchema", "description": [], "signature": [ - "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; body: Zod.ZodObject<{ title: Zod.ZodOptional; status: Zod.ZodOptional, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>>; params: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>>; tags: Zod.ZodOptional>; externalIncidentUrl: Zod.ZodOptional>; }, \"strip\", Zod.ZodTypeAny, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }; }, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; }; }>" + "Zod.ZodObject<{ path: Zod.ZodObject<{ investigationId: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { investigationId: string; }, { investigationId: string; }>; body: Zod.ZodObject<{ title: Zod.ZodOptional; status: Zod.ZodOptional, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>>; params: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>>; tags: Zod.ZodOptional>; externalIncidentUrl: Zod.ZodOptional>; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }; }, { path: { investigationId: string; }; body: { params?: { timeRange: { from: number; to: number; }; } | undefined; tags?: string[] | undefined; title?: string | undefined; status?: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\" | undefined; externalIncidentUrl?: string | null | undefined; rootCauseAnalysis?: { events: any[]; } | undefined; }; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1247,9 +1292,9 @@ "label": "updateInvestigationResponseSchema", "description": [], "signature": [ - "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; }>" + "Zod.ZodObject<{ id: Zod.ZodString; title: Zod.ZodString; createdAt: Zod.ZodNumber; createdBy: Zod.ZodString; updatedAt: Zod.ZodNumber; params: Zod.ZodObject<{ timeRange: Zod.ZodObject<{ from: Zod.ZodNumber; to: Zod.ZodNumber; }, \"strip\", Zod.ZodTypeAny, { from: number; to: number; }, { from: number; to: number; }>; }, \"strip\", Zod.ZodTypeAny, { timeRange: { from: number; to: number; }; }, { timeRange: { from: number; to: number; }; }>; origin: Zod.ZodUnion<[Zod.ZodObject<{ type: Zod.ZodLiteral<\"alert\">; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"alert\"; }, { id: string; type: \"alert\"; }>, Zod.ZodObject<{ type: Zod.ZodLiteral<\"blank\">; }, \"strip\", Zod.ZodTypeAny, { type: \"blank\"; }, { type: \"blank\"; }>]>; status: Zod.ZodUnion<[Zod.ZodLiteral<\"triage\">, Zod.ZodLiteral<\"active\">, Zod.ZodLiteral<\"mitigated\">, Zod.ZodLiteral<\"resolved\">, Zod.ZodLiteral<\"cancelled\">]>; tags: Zod.ZodArray; notes: Zod.ZodArray, \"many\">; items: Zod.ZodArray, Zod.ZodObject<{ title: Zod.ZodString; type: Zod.ZodString; params: Zod.ZodRecord; }, \"strip\", Zod.ZodTypeAny, { params: Record; type: string; title: string; }, { params: Record; type: string; title: string; }>>, \"many\">; externalIncidentUrl: Zod.ZodNullable; rootCauseAnalysis: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { events: any[]; }, { events: any[]; }>>; }, \"strip\", Zod.ZodTypeAny, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }, { params: { timeRange: { from: number; to: number; }; }; id: string; tags: string[]; title: string; createdBy: string; createdAt: number; updatedAt: number; status: \"active\" | \"triage\" | \"mitigated\" | \"resolved\" | \"cancelled\"; items: ({ id: string; createdBy: string; createdAt: number; updatedAt: number; } & { params: Record; type: string; title: string; })[]; origin: { id: string; type: \"alert\"; } | { type: \"blank\"; }; externalIncidentUrl: string | null; notes: { id: string; content: string; createdBy: string; createdAt: number; updatedAt: number; }[]; rootCauseAnalysis?: { events: any[]; } | undefined; }>" ], - "path": "packages/kbn-investigation-shared/src/rest_specs/update.ts", + "path": "x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_investigation_shared.mdx b/api_docs/kbn_investigation_shared.mdx index a3d2e84dae6ef..1680b66f62199 100644 --- a/api_docs/kbn_investigation_shared.mdx +++ b/api_docs/kbn_investigation_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-investigation-shared title: "@kbn/investigation-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/investigation-shared plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/investigation-shared'] --- import kbnInvestigationSharedObj from './kbn_investigation_shared.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 82 | 0 | 82 | 0 | +| 85 | 0 | 85 | 0 | ## Common diff --git a/api_docs/kbn_io_ts_utils.devdocs.json b/api_docs/kbn_io_ts_utils.devdocs.json index dfbb21237595a..35c6eb8bac439 100644 --- a/api_docs/kbn_io_ts_utils.devdocs.json +++ b/api_docs/kbn_io_ts_utils.devdocs.json @@ -31,7 +31,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -45,7 +45,7 @@ "signature": [ "LiteralValue" ], - "path": "packages/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -64,7 +64,7 @@ "signature": [ "(message: string) => Error" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -78,7 +78,7 @@ "signature": [ "string" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -107,7 +107,7 @@ }, "" ], - "path": "packages/kbn-io-ts-utils/src/route_validation/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/route_validation/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -122,7 +122,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/route_validation/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/route_validation/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -143,7 +143,7 @@ "Type", ", createError?: ErrorFactory) => (inputValue: InputValue) => DecodedValue" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -158,7 +158,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -173,7 +173,7 @@ "signature": [ "ErrorFactory" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -192,7 +192,7 @@ "signature": [ "(type: T) => T" ], - "path": "packages/kbn-io-ts-utils/src/deep_exact_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -206,7 +206,7 @@ "signature": [ "T" ], - "path": "packages/kbn-io-ts-utils/src/deep_exact_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -259,7 +259,7 @@ "Mixed", "; }>>" ], - "path": "packages/kbn-io-ts-utils/src/deep_exact_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -275,7 +275,7 @@ " | ", "ParseableType" ], - "path": "packages/kbn-io-ts-utils/src/deep_exact_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -296,7 +296,7 @@ "ValidationError", "[]) => string" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -311,7 +311,7 @@ "ValidationError", "[]" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -332,7 +332,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -346,7 +346,7 @@ "signature": [ "number" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -361,7 +361,7 @@ "signature": [ "number" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -382,7 +382,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -396,7 +396,7 @@ "signature": [ "number" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -411,7 +411,7 @@ "signature": [ "number" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -442,7 +442,7 @@ }, ">" ], - "path": "packages/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -456,7 +456,7 @@ "signature": [ "number" ], - "path": "packages/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -477,7 +477,7 @@ "MergeType", "" ], - "path": "packages/kbn-io-ts-utils/src/merge_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -491,7 +491,7 @@ "signature": [ "T1" ], - "path": "packages/kbn-io-ts-utils/src/merge_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -506,7 +506,7 @@ "signature": [ "T2" ], - "path": "packages/kbn-io-ts-utils/src/merge_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -535,7 +535,7 @@ "Encode", "; _A: any; _O: any; _I: unknown; }" ], - "path": "packages/kbn-io-ts-utils/src/merge_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -550,7 +550,7 @@ "Any", "[]" ], - "path": "packages/kbn-io-ts-utils/src/merge_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -571,7 +571,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/strict_keys_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/strict_keys_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -585,7 +585,7 @@ "signature": [ "T" ], - "path": "packages/kbn-io-ts-utils/src/strict_keys_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/strict_keys_rt/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -606,7 +606,7 @@ "Errors", ") => never" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -620,7 +620,7 @@ "signature": [ "ErrorFactory" ], - "path": "packages/kbn-io-ts-utils/src/decode_or_throw.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -643,7 +643,7 @@ "ParseableType", ") => JSONSchema" ], - "path": "packages/kbn-io-ts-utils/src/to_json_schema/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/to_json_schema/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -659,7 +659,7 @@ " | ", "ParseableType" ], - "path": "packages/kbn-io-ts-utils/src/to_json_schema/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/to_json_schema/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -677,7 +677,7 @@ "tags": [], "label": "InRangeBrand", "description": [], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -699,7 +699,7 @@ }, "[\"InRange\"]" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false } @@ -713,7 +713,7 @@ "tags": [], "label": "IsGreaterOrEqualBrand", "description": [], - "path": "packages/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -735,7 +735,7 @@ }, "[\"IsGreaterOrEqual\"]" ], - "path": "packages/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", "deprecated": false, "trackAdoption": false } @@ -749,7 +749,7 @@ "tags": [], "label": "NonEmptyStringBrand", "description": [], - "path": "packages/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -771,7 +771,7 @@ }, "[\"NonEmptyString\"]" ], - "path": "packages/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", "deprecated": false, "trackAdoption": false } @@ -795,7 +795,7 @@ }, " extends { time: string; tiebreaker: number; } & { gid?: string | undefined; fromAutoReload?: boolean | undefined; }" ], - "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -806,7 +806,7 @@ "tags": [], "label": "gid", "description": [], - "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts", "deprecated": false, "trackAdoption": false } @@ -830,7 +830,7 @@ "IndexPatternBrand", ">" ], - "path": "packages/kbn-io-ts-utils/src/index_pattern_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/index_pattern_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -855,7 +855,7 @@ }, ">" ], - "path": "packages/kbn-io-ts-utils/src/in_range_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -880,7 +880,7 @@ }, ">" ], - "path": "packages/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -895,7 +895,7 @@ "signature": [ "{ time: string; tiebreaker: number; }" ], - "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -920,7 +920,7 @@ }, ">" ], - "path": "packages/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -935,7 +935,7 @@ "signature": [ "{ time: string; tiebreaker: number; } & { gid?: string | undefined; fromAutoReload?: boolean | undefined; }" ], - "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -953,7 +953,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/array_to_string_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/array_to_string_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -969,7 +969,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -985,7 +985,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/datemath_string_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/datemath_string_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1005,7 +1005,7 @@ "DateBrand", ">" ], - "path": "packages/kbn-io-ts-utils/src/date_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/date_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1025,7 +1025,7 @@ "IndexPatternBrand", ">" ], - "path": "packages/kbn-io-ts-utils/src/index_pattern_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/index_pattern_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1041,7 +1041,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/iso_to_epoch_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1057,7 +1057,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1073,7 +1073,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/json_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/json_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1093,7 +1093,7 @@ "NumberC", "; }>" ], - "path": "packages/kbn-io-ts-utils/src/time_key_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1119,7 +1119,7 @@ }, ">" ], - "path": "packages/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1135,7 +1135,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/to_boolean_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/to_boolean_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1151,7 +1151,7 @@ "Type", "" ], - "path": "packages/kbn-io-ts-utils/src/to_number_rt/index.ts", + "path": "src/platform/packages/shared/kbn-io-ts-utils/src/to_number_rt/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index db2a188e33c6a..8c12f3ea78f2d 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_ipynb.mdx b/api_docs/kbn_ipynb.mdx index 901e82a929989..d9673cf8a48d5 100644 --- a/api_docs/kbn_ipynb.mdx +++ b/api_docs/kbn_ipynb.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ipynb title: "@kbn/ipynb" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ipynb plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ipynb'] --- import kbnIpynbObj from './kbn_ipynb.devdocs.json'; diff --git a/api_docs/kbn_item_buffer.mdx b/api_docs/kbn_item_buffer.mdx index 6a6ffb8478cb0..3e61da57e8169 100644 --- a/api_docs/kbn_item_buffer.mdx +++ b/api_docs/kbn_item_buffer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-item-buffer title: "@kbn/item-buffer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/item-buffer plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/item-buffer'] --- import kbnItemBufferObj from './kbn_item_buffer.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 7c0a7ae507c34..ec22d7ba94a79 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index 8a0a6c7fddd10..bf960d55006eb 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 7ed7865c98c88..460091effa074 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_json_schemas.mdx b/api_docs/kbn_json_schemas.mdx index 4435f176abf77..8f22dd5f94edd 100644 --- a/api_docs/kbn_json_schemas.mdx +++ b/api_docs/kbn_json_schemas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-schemas title: "@kbn/json-schemas" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-schemas plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-schemas'] --- import kbnJsonSchemasObj from './kbn_json_schemas.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 8f7927fb7441a..461b8273f87ed 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation.mdx b/api_docs/kbn_language_documentation.mdx index b5ee3a53170b7..5b8e683b67b77 100644 --- a/api_docs/kbn_language_documentation.mdx +++ b/api_docs/kbn_language_documentation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation title: "@kbn/language-documentation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation'] --- import kbnLanguageDocumentationObj from './kbn_language_documentation.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 3de194aa8dd62..fcc90f5710a8f 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index 2e10d60a23927..61c33e7ee7dfb 100644 --- a/api_docs/kbn_lens_formula_docs.mdx +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs title: "@kbn/lens-formula-docs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-formula-docs plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] --- import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index b12d106b4540b..219c77d2b5ea4 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index fabf0158d77f7..bb566b4593637 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_content_badge.mdx b/api_docs/kbn_managed_content_badge.mdx index 975c1366844ac..748b75616d0bc 100644 --- a/api_docs/kbn_managed_content_badge.mdx +++ b/api_docs/kbn_managed_content_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-content-badge title: "@kbn/managed-content-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-content-badge plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-content-badge'] --- import kbnManagedContentBadgeObj from './kbn_managed_content_badge.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index 20f5993d3784e..db52428b80929 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.devdocs.json b/api_docs/kbn_management_cards_navigation.devdocs.json index 761cfc57d721c..13e58377e07ce 100644 --- a/api_docs/kbn_management_cards_navigation.devdocs.json +++ b/api_docs/kbn_management_cards_navigation.devdocs.json @@ -37,7 +37,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-management/cards_navigation/src/cards_navigation.tsx", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -57,7 +57,7 @@ "text": "CardsNavigationComponentProps" } ], - "path": "packages/kbn-management/cards_navigation/src/cards_navigation.tsx", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -75,7 +75,7 @@ "tags": [], "label": "CardsNavigationComponentProps", "description": [], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -90,7 +90,7 @@ "AppRegistrySections", "[]" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -101,7 +101,7 @@ "tags": [], "label": "appBasePath", "description": [], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -115,7 +115,7 @@ "signature": [ "((e: React.MouseEvent) => void) | undefined" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -129,7 +129,7 @@ "signature": [ "React.MouseEvent" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -147,7 +147,7 @@ "signature": [ "(\"transform\" | \"tags\" | \"maintenanceWindows\" | \"dataViews\" | \"spaces\" | \"settings\" | \"data_quality\" | \"data_usage\" | \"filesManagement\" | \"pipelines\" | \"roles\" | \"reporting\" | \"api_keys\" | \"index_management\" | \"ingest_pipelines\" | \"jobsListLink\" | \"objects\" | \"triggersActions\" | \"triggersActionsConnectors\")[] | undefined" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -169,7 +169,7 @@ }, "> | undefined" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -187,7 +187,7 @@ "description": [ "\napp ids shared by all solutions" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -204,7 +204,7 @@ "signature": [ "\"transform\" | \"tags\" | \"maintenanceWindows\" | \"dataViews\" | \"spaces\" | \"settings\" | \"data_quality\" | \"data_usage\" | \"filesManagement\" | \"pipelines\" | \"roles\" | \"reporting\" | \"api_keys\" | \"index_management\" | \"ingest_pipelines\" | \"jobsListLink\" | \"objects\" | \"triggersActions\" | \"triggersActionsConnectors\"" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -220,7 +220,7 @@ "AppDefinition", " & ({ skipValidation?: false | undefined; } | { skipValidation: true; href: string; title: string; })" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -237,7 +237,7 @@ "signature": [ "{ readonly DATA: \"data\"; readonly ACCESS: \"access\"; readonly ALERTS: \"alerts\"; readonly CONTENT: \"content\"; readonly OTHER: \"other\"; }" ], - "path": "packages/kbn-management/cards_navigation/src/types.ts", + "path": "src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index 0fef8c4259ef7..3cebb456517fc 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.devdocs.json b/api_docs/kbn_management_settings_application.devdocs.json index c88cf83be225b..d7489d772de64 100644 --- a/api_docs/kbn_management_settings_application.devdocs.json +++ b/api_docs/kbn_management_settings_application.devdocs.json @@ -21,7 +21,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/application/index.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ "text": "SettingsApplicationKibanaDependencies" } ], - "path": "packages/kbn-management/settings/application/index.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -62,7 +62,7 @@ "signature": [ "() => React.JSX.Element" ], - "path": "packages/kbn-management/settings/application/application.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/application.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -89,7 +89,7 @@ }, ">) => React.JSX.Element" ], - "path": "packages/kbn-management/settings/application/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -111,7 +111,7 @@ }, ">" ], - "path": "packages/kbn-management/settings/application/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/services.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -140,7 +140,7 @@ }, ">) => React.JSX.Element" ], - "path": "packages/kbn-management/settings/application/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -162,7 +162,7 @@ }, ">" ], - "path": "packages/kbn-management/settings/application/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/services.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -201,7 +201,7 @@ "text": "FieldInputKibanaDependencies" } ], - "path": "packages/kbn-management/settings/application/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/services.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -234,7 +234,7 @@ " & ", "Services" ], - "path": "packages/kbn-management/settings/application/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/application/services.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 4c180b669e6ef..d7231a92315d3 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.devdocs.json b/api_docs/kbn_management_settings_components_field_category.devdocs.json index 8c7e3f4645d9d..decdb9d9a72ae 100644 --- a/api_docs/kbn_management_settings_components_field_category.devdocs.json +++ b/api_docs/kbn_management_settings_components_field_category.devdocs.json @@ -23,7 +23,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/field_category/categories.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -43,7 +43,7 @@ "text": "FieldCategoriesProps" } ], - "path": "packages/kbn-management/settings/components/field_category/categories.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -72,7 +72,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/field_category/category.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/category.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -94,7 +94,7 @@ "text": "FieldCategoryProps" } ], - "path": "packages/kbn-management/settings/components/field_category/category.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/category.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -123,7 +123,7 @@ }, ">>" ], - "path": "packages/kbn-management/settings/components/field_category/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/services.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -179,7 +179,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/field_category/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/services.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -200,7 +200,7 @@ "text": "FieldRowProviderProps" } ], - "path": "packages/kbn-management/settings/components/field_row/services.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx", "deprecated": false, "trackAdoption": false } @@ -218,7 +218,7 @@ "description": [ "\nProps for the {@link ClearQueryLink} component." ], - "path": "packages/kbn-management/settings/components/field_category/clear_query_link.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/clear_query_link.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -231,7 +231,7 @@ "description": [ "The total number of fields in the category." ], - "path": "packages/kbn-management/settings/components/field_category/clear_query_link.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/clear_query_link.tsx", "deprecated": false, "trackAdoption": false }, @@ -244,7 +244,7 @@ "description": [ "The number of fields currently being displayed." ], - "path": "packages/kbn-management/settings/components/field_category/clear_query_link.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/clear_query_link.tsx", "deprecated": false, "trackAdoption": false }, @@ -260,7 +260,7 @@ "signature": [ "() => void" ], - "path": "packages/kbn-management/settings/components/field_category/clear_query_link.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/clear_query_link.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -304,7 +304,7 @@ }, ", \"onFieldChange\" | \"isSavingEnabled\">" ], - "path": "packages/kbn-management/settings/components/field_category/categories.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -326,7 +326,7 @@ "text": "CategorizedFields" } ], - "path": "packages/kbn-management/settings/components/field_category/categories.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx", "deprecated": false, "trackAdoption": false }, @@ -346,7 +346,7 @@ "text": "CategoryCounts" } ], - "path": "packages/kbn-management/settings/components/field_category/categories.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx", "deprecated": false, "trackAdoption": false }, @@ -369,7 +369,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/components/field_category/categories.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx", "deprecated": false, "trackAdoption": false } @@ -403,7 +403,7 @@ }, ", \"fieldCount\" | \"onClearQuery\">" ], - "path": "packages/kbn-management/settings/components/field_category/category.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/category.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -416,7 +416,7 @@ "description": [ "The name of the category." ], - "path": "packages/kbn-management/settings/components/field_category/category.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/category.tsx", "deprecated": false, "trackAdoption": false }, @@ -448,7 +448,7 @@ }, ", \"FieldRow\">[]" ], - "path": "packages/kbn-management/settings/components/field_category/category.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/category.tsx", "deprecated": false, "trackAdoption": false } @@ -481,7 +481,7 @@ "text": "FieldRowServices" } ], - "path": "packages/kbn-management/settings/components/field_category/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -495,7 +495,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "packages/kbn-management/settings/components/field_category/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/services.tsx", "deprecated": false, "trackAdoption": false } @@ -531,7 +531,7 @@ "text": "FieldInputKibanaDependencies" } ], - "path": "packages/kbn-management/settings/components/field_category/types.ts", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -562,7 +562,7 @@ "text": "Services" } ], - "path": "packages/kbn-management/settings/components/field_category/types.ts", + "path": "src/platform/packages/private/kbn-management/settings/components/field_category/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index cb28f1307bdc5..d0c0c8a27cf11 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.devdocs.json b/api_docs/kbn_management_settings_components_field_input.devdocs.json index 8580042c07f55..7a2d189a70b1e 100644 --- a/api_docs/kbn_management_settings_components_field_input.devdocs.json +++ b/api_docs/kbn_management_settings_components_field_input.devdocs.json @@ -39,7 +39,7 @@ }, ">>" ], - "path": "packages/kbn-management/settings/components/field_input/field_input.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -74,7 +74,7 @@ "description": [ "\nAn interface containing a collection of Kibana plugins and services required to\nrender this component." ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -98,7 +98,7 @@ }, ", \"addDanger\">; }" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false }, @@ -120,7 +120,7 @@ }, "; }" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false } @@ -146,7 +146,7 @@ }, "" ], - "path": "packages/kbn-management/settings/components/field_input/field_input.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -162,7 +162,7 @@ "signature": [ "{ id: string; type: T; name: string; ariaAttributes: { ariaLabel: string; ariaDescribedBy?: string | undefined; }; }" ], - "path": "packages/kbn-management/settings/components/field_input/field_input.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx", "deprecated": false, "trackAdoption": false }, @@ -185,7 +185,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/components/field_input/field_input.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx", "deprecated": false, "trackAdoption": false }, @@ -209,7 +209,7 @@ }, " | undefined) => void" ], - "path": "packages/kbn-management/settings/components/field_input/field_input.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -231,7 +231,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -246,7 +246,7 @@ "description": [ "True if the input can be saved, false otherwise." ], - "path": "packages/kbn-management/settings/components/field_input/field_input.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx", "deprecated": false, "trackAdoption": false }, @@ -262,7 +262,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-management/settings/components/field_input/field_input.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx", "deprecated": false, "trackAdoption": false } @@ -278,7 +278,7 @@ "description": [ "\nContextual services used by a {@link FieldInput} component." ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -294,7 +294,7 @@ "signature": [ "(value: string) => void" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -310,7 +310,7 @@ "signature": [ "string" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -330,7 +330,7 @@ "ValueValidation", ">" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -344,7 +344,7 @@ "signature": [ "string" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -359,7 +359,7 @@ "signature": [ "any" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -389,7 +389,7 @@ }, "" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -419,7 +419,7 @@ }, " | null | undefined; }" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false }, @@ -440,7 +440,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false }, @@ -451,7 +451,7 @@ "tags": [], "label": "isSavingEnabled", "description": [], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false }, @@ -475,7 +475,7 @@ }, " | undefined) => void" ], - "path": "packages/kbn-management/settings/components/field_input/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -497,7 +497,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index 74afbf9357178..3437ccaa5de8f 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.devdocs.json b/api_docs/kbn_management_settings_components_field_row.devdocs.json index 662eb40589eef..6ff70616fe621 100644 --- a/api_docs/kbn_management_settings_components_field_row.devdocs.json +++ b/api_docs/kbn_management_settings_components_field_row.devdocs.json @@ -23,7 +23,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -45,7 +45,7 @@ "text": "FieldRowProps" } ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -74,7 +74,7 @@ }, ">) => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/field_row/services.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -96,7 +96,7 @@ }, ">" ], - "path": "packages/kbn-management/settings/components/field_row/services.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -125,7 +125,7 @@ }, ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/field_row/services.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -145,7 +145,7 @@ "text": "FieldRowProviderProps" } ], - "path": "packages/kbn-management/settings/components/field_row/services.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -165,7 +165,7 @@ "description": [ "\nProps for a {@link FieldRow} component." ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -189,7 +189,7 @@ }, "; defaultValue?: string | number | boolean | (string | number)[] | null | undefined; name: string; groupId: string; displayName: string; isCustom: boolean; isOverridden: boolean; ariaAttributes: { ariaLabel: string; ariaDescribedBy?: string | undefined; }; savedValue?: string | number | boolean | (string | number)[] | null | undefined; defaultValueDisplay: string; isDefaultValue: boolean; unsavedFieldId: string; }" ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false }, @@ -202,7 +202,7 @@ "description": [ "True if saving settings is enabled, false otherwise." ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false }, @@ -234,7 +234,7 @@ }, "> | undefined) => void" ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -246,7 +246,7 @@ "tags": [], "label": "id", "description": [], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -267,7 +267,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -285,7 +285,7 @@ "signature": [ "((id: string) => void) | undefined" ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -301,7 +301,7 @@ "signature": [ "string" ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -336,7 +336,7 @@ }, "> | undefined" ], - "path": "packages/kbn-management/settings/components/field_row/field_row.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx", "deprecated": false, "trackAdoption": false } @@ -369,7 +369,7 @@ "text": "FieldRowServices" } ], - "path": "packages/kbn-management/settings/components/field_row/services.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -383,7 +383,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "packages/kbn-management/settings/components/field_row/services.tsx", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx", "deprecated": false, "trackAdoption": false } @@ -399,7 +399,7 @@ "description": [ "\nAn interface containing a collection of Kibana plugins and services required to\nrender a {@link FieldRow} component." ], - "path": "packages/kbn-management/settings/components/field_row/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -413,7 +413,7 @@ "signature": [ "{ links: { management: Record; }; }" ], - "path": "packages/kbn-management/settings/components/field_row/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts", "deprecated": false, "trackAdoption": false } @@ -429,7 +429,7 @@ "description": [ "\nContextual services used by a {@link FieldRow} component." ], - "path": "packages/kbn-management/settings/components/field_row/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -443,7 +443,7 @@ "signature": [ "{ [key: string]: string; }" ], - "path": "packages/kbn-management/settings/components/field_row/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts", "deprecated": false, "trackAdoption": false } @@ -479,7 +479,7 @@ "text": "FieldInputKibanaDependencies" } ], - "path": "packages/kbn-management/settings/components/field_row/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -510,7 +510,7 @@ "text": "Services" } ], - "path": "packages/kbn-management/settings/components/field_row/types.ts", + "path": "src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 4986de7fed647..6b2b15e47c767 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.devdocs.json b/api_docs/kbn_management_settings_components_form.devdocs.json index 278d0f42383d9..3413a9cc320a1 100644 --- a/api_docs/kbn_management_settings_components_form.devdocs.json +++ b/api_docs/kbn_management_settings_components_form.devdocs.json @@ -17,7 +17,7 @@ "FormProps", ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/form/form.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/form/form.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -33,7 +33,7 @@ "signature": [ "FormProps" ], - "path": "packages/kbn-management/settings/components/form/form.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/form/form.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -62,7 +62,7 @@ }, ">) => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/form/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/form/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -84,7 +84,7 @@ }, ">" ], - "path": "packages/kbn-management/settings/components/form/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/form/services.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -107,7 +107,7 @@ "FormProviderProps", ") => React.JSX.Element" ], - "path": "packages/kbn-management/settings/components/form/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/form/services.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -121,7 +121,7 @@ "signature": [ "FormProviderProps" ], - "path": "packages/kbn-management/settings/components/form/services.tsx", + "path": "src/platform/packages/private/kbn-management/settings/components/form/services.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -161,7 +161,7 @@ "text": "FieldInputKibanaDependencies" } ], - "path": "packages/kbn-management/settings/components/form/types.ts", + "path": "src/platform/packages/private/kbn-management/settings/components/form/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -194,7 +194,7 @@ " & ", "Services" ], - "path": "packages/kbn-management/settings/components/form/types.ts", + "path": "src/platform/packages/private/kbn-management/settings/components/form/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index d67e63f9fd578..70901160c876b 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.devdocs.json b/api_docs/kbn_management_settings_field_definition.devdocs.json index d41e305c3b0c7..3d35ba9357328 100644 --- a/api_docs/kbn_management_settings_field_definition.devdocs.json +++ b/api_docs/kbn_management_settings_field_definition.devdocs.json @@ -39,7 +39,7 @@ }, " | null>" ], - "path": "packages/kbn-management/settings/field_definition/get_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/get_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -55,7 +55,7 @@ "signature": [ "GetDefinitionParams" ], - "path": "packages/kbn-management/settings/field_definition/get_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/get_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -108,7 +108,7 @@ }, ", string | number | boolean | (string | number)[] | null | undefined>[]" ], - "path": "packages/kbn-management/settings/field_definition/get_definitions.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/get_definitions.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -140,7 +140,7 @@ }, ", string | number | boolean | (string | number)[] | null | undefined>>" ], - "path": "packages/kbn-management/settings/field_definition/get_definitions.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/get_definitions.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -157,7 +157,7 @@ "signature": [ "SettingsClient" ], - "path": "packages/kbn-management/settings/field_definition/get_definitions.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/get_definitions.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -187,7 +187,7 @@ "text": "ArrayFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -203,7 +203,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -231,7 +231,7 @@ "text": "ArrayUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -247,7 +247,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -275,7 +275,7 @@ "text": "BooleanFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -291,7 +291,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -319,7 +319,7 @@ "text": "BooleanUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -335,7 +335,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -363,7 +363,7 @@ "text": "ColorFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -379,7 +379,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -407,7 +407,7 @@ "text": "ColorUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -423,7 +423,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -451,7 +451,7 @@ "text": "ImageFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -467,7 +467,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -495,7 +495,7 @@ "text": "ImageUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -511,7 +511,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -539,7 +539,7 @@ "text": "JsonFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -555,7 +555,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -583,7 +583,7 @@ "text": "JsonUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -599,7 +599,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -627,7 +627,7 @@ "text": "MarkdownFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -643,7 +643,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -671,7 +671,7 @@ "text": "MarkdownUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -687,7 +687,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -715,7 +715,7 @@ "text": "NumberFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -731,7 +731,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -759,7 +759,7 @@ "text": "NumberUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -775,7 +775,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -803,7 +803,7 @@ "text": "SelectFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -819,7 +819,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -847,7 +847,7 @@ "text": "SelectUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -863,7 +863,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -891,7 +891,7 @@ "text": "StringFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -907,7 +907,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -935,7 +935,7 @@ "text": "StringUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -951,7 +951,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -979,7 +979,7 @@ "text": "UndefinedFieldDefinition" } ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -995,7 +995,7 @@ "signature": [ "Definition" ], - "path": "packages/kbn-management/settings/field_definition/is/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1023,7 +1023,7 @@ "text": "UndefinedUnsavedFieldChange" } ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1039,7 +1039,7 @@ "signature": [ "Change | undefined" ], - "path": "packages/kbn-management/settings/field_definition/is/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index af5f139fae409..33cb9fd5f8587 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index d3881d109ada5..cfabff49af74b 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index a1d50b9c81982..7ece4d0d6e2fc 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.devdocs.json b/api_docs/kbn_management_settings_types.devdocs.json index 0ac6f8bbccb8e..f14f1bd1b4935 100644 --- a/api_docs/kbn_management_settings_types.devdocs.json +++ b/api_docs/kbn_management_settings_types.devdocs.json @@ -11,7 +11,7 @@ "tags": [], "label": "CategorizedFields", "description": [], - "path": "packages/kbn-management/settings/types/category.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/category.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ }, ", string | number | boolean | (string | number)[] | null | undefined>[]; }" ], - "path": "packages/kbn-management/settings/types/category.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/category.ts", "deprecated": false, "trackAdoption": false } @@ -55,7 +55,7 @@ "tags": [], "label": "CategoryCounts", "description": [], - "path": "packages/kbn-management/settings/types/category.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/category.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -69,7 +69,7 @@ "signature": [ "[category: string]: number" ], - "path": "packages/kbn-management/settings/types/category.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/category.ts", "deprecated": false, "trackAdoption": false } @@ -95,7 +95,7 @@ }, "" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -111,7 +111,7 @@ "signature": [ "{ ariaLabel: string; ariaDescribedBy?: string | undefined; }" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -127,7 +127,7 @@ "signature": [ "string[]" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -143,7 +143,7 @@ "signature": [ "V | undefined" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -156,7 +156,7 @@ "description": [ "The text-based display of the default value, for use in the UI." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -181,7 +181,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -197,7 +197,7 @@ "signature": [ "string | React.ReactElement> | undefined" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -210,7 +210,7 @@ "description": [ "The name of the field suitable for display in the UX." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -223,7 +223,7 @@ "description": [ "The grouping identifier for the field." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -236,7 +236,7 @@ "description": [ "The unique identifier of the field, typically separated by `:`" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -249,7 +249,7 @@ "description": [ "True if the field is a custom setting, false otherwise." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -262,7 +262,7 @@ "description": [ "True if the current saved setting matches the default setting." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -275,7 +275,7 @@ "description": [ "True if the setting is overridden in Kibana, false otherwise." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -288,7 +288,7 @@ "description": [ "True if the setting is read-only, false otherwise." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -304,7 +304,7 @@ "signature": [ "{ name?: string | undefined; type?: string | undefined; } | undefined" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -317,7 +317,7 @@ "description": [ "The name of the field suitable for use in the UX." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -333,7 +333,7 @@ "signature": [ "{ values: string[] | number[]; labels: Record; } | undefined" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -349,7 +349,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -362,7 +362,7 @@ "description": [ "True if the browser must be reloaded for the setting to take effect, false otherwise." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -378,7 +378,7 @@ "signature": [ "V | undefined" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -396,7 +396,7 @@ "signature": [ "T" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false }, @@ -409,7 +409,7 @@ "description": [ "An identifier of the field when it has an unsaved change." ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false } @@ -443,7 +443,7 @@ }, "<\"select\", string | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -459,7 +459,7 @@ "signature": [ "{ values: string[] | number[]; labels: Record; }" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false } @@ -473,7 +473,7 @@ "tags": [], "label": "SettingsCapabilities", "description": [], - "path": "packages/kbn-management/settings/types/capabilities.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/capabilities.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -487,7 +487,7 @@ "signature": [ "SettingCapability" ], - "path": "packages/kbn-management/settings/types/capabilities.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/capabilities.ts", "deprecated": false, "trackAdoption": false }, @@ -501,7 +501,7 @@ "signature": [ "SettingCapability" ], - "path": "packages/kbn-management/settings/types/capabilities.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/capabilities.ts", "deprecated": false, "trackAdoption": false } @@ -515,7 +515,7 @@ "tags": [], "label": "SettingsTabs", "description": [], - "path": "packages/kbn-management/settings/types/tab.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/tab.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -561,7 +561,7 @@ }, "[]; isSavingEnabled: boolean; }" ], - "path": "packages/kbn-management/settings/types/tab.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/tab.ts", "deprecated": false, "trackAdoption": false } @@ -595,7 +595,7 @@ }, "" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -613,7 +613,7 @@ "signature": [ "T" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false }, @@ -629,7 +629,7 @@ "signature": [ "V | undefined" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false }, @@ -645,7 +645,7 @@ "signature": [ "V | undefined" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false } @@ -671,7 +671,7 @@ }, "" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -689,7 +689,7 @@ "signature": [ "T" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false }, @@ -705,7 +705,7 @@ "signature": [ "string | null | undefined" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false }, @@ -721,7 +721,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false }, @@ -744,7 +744,7 @@ }, " | null | undefined" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false } @@ -773,7 +773,7 @@ }, "<\"array\", (string | number)[] | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -790,7 +790,7 @@ "signature": [ "\"array\"" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -814,7 +814,7 @@ }, "<\"array\", (string | number)[] | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -838,7 +838,7 @@ }, "<\"array\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -862,7 +862,7 @@ }, "<\"boolean\", boolean | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -879,7 +879,7 @@ "signature": [ "\"boolean\"" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -903,7 +903,7 @@ }, "<\"boolean\", boolean | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -927,7 +927,7 @@ }, "<\"boolean\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -951,7 +951,7 @@ }, "<\"color\", string | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -975,7 +975,7 @@ }, "<\"color\", string | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -999,7 +999,7 @@ }, "<\"color\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1023,7 +1023,7 @@ }, "<\"image\", string | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1047,7 +1047,7 @@ }, "<\"image\", string | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1071,7 +1071,7 @@ }, "<\"image\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1095,7 +1095,7 @@ }, "<\"json\", string | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1119,7 +1119,7 @@ }, "<\"json\", string | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1143,7 +1143,7 @@ }, "<\"json\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1240,7 +1240,7 @@ }, " : never" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1257,7 +1257,7 @@ "signature": [ "T extends \"string\" | \"color\" | \"select\" | \"image\" | \"json\" | \"markdown\" ? string : T extends \"boolean\" ? boolean : T extends \"number\" | \"bigint\" ? number : T extends \"array\" ? (string | number)[] : T extends \"undefined\" ? undefined : never" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1281,7 +1281,7 @@ }, "<\"markdown\", string | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1305,7 +1305,7 @@ }, "<\"markdown\", string | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1329,7 +1329,7 @@ }, "<\"markdown\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1353,7 +1353,7 @@ }, "<\"number\", number | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1370,7 +1370,7 @@ "signature": [ "\"number\"" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1394,7 +1394,7 @@ }, "<\"number\", number | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1418,7 +1418,7 @@ }, "<\"number\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1443,7 +1443,7 @@ }, " | undefined) => void" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1457,7 +1457,7 @@ "description": [ "A unique id corresponding to the particular setting being changed." ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1480,7 +1480,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -1507,7 +1507,7 @@ }, " | undefined) => void" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1531,7 +1531,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -1550,7 +1550,7 @@ "signature": [ "{ reset: () => void; } | null" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1574,7 +1574,7 @@ }, "<\"select\", string | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1598,7 +1598,7 @@ }, "<\"select\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1615,7 +1615,7 @@ "signature": [ "\"string\" | \"number\" | \"boolean\" | \"undefined\" | \"color\" | \"select\" | \"image\" | \"array\" | \"json\" | \"markdown\"" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1639,7 +1639,7 @@ }, "<\"string\", string | null>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1656,7 +1656,7 @@ "signature": [ "\"string\" | \"color\" | \"select\" | \"image\" | \"json\" | \"markdown\"" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1680,7 +1680,7 @@ }, "<\"string\", string | null>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1704,7 +1704,7 @@ }, "<\"string\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1736,7 +1736,7 @@ }, "" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1760,7 +1760,7 @@ }, "<\"undefined\", null | undefined>" ], - "path": "packages/kbn-management/settings/types/field_definition.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/field_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1777,7 +1777,7 @@ "signature": [ "\"undefined\"" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1801,7 +1801,7 @@ }, "<\"undefined\", null | undefined>" ], - "path": "packages/kbn-management/settings/types/metadata.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/metadata.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1825,7 +1825,7 @@ }, "<\"undefined\">" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1856,7 +1856,7 @@ }, ">; }" ], - "path": "packages/kbn-management/settings/types/unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1873,7 +1873,7 @@ "signature": [ "string | number | boolean | (string | number)[] | null | undefined" ], - "path": "packages/kbn-management/settings/types/setting_type.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/setting_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 9adad01d8feb8..0ec0a5e46433d 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.devdocs.json b/api_docs/kbn_management_settings_utilities.devdocs.json index 8c6fc7bcd6e3f..853ca2c66ab74 100644 --- a/api_docs/kbn_management_settings_utilities.devdocs.json +++ b/api_docs/kbn_management_settings_utilities.devdocs.json @@ -36,7 +36,7 @@ "text": "CategorizedFields" } ], - "path": "packages/kbn-management/settings/utilities/category/categorize_fields.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/category/categorize_fields.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -65,7 +65,7 @@ }, ", string | number | boolean | (string | number)[] | null | undefined>[]" ], - "path": "packages/kbn-management/settings/utilities/category/categorize_fields.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/category/categorize_fields.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -109,7 +109,7 @@ "text": "CategoryCounts" } ], - "path": "packages/kbn-management/settings/utilities/category/get_category_counts.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_counts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -140,7 +140,7 @@ }, ", string | number | boolean | (string | number)[] | null | undefined>[]" ], - "path": "packages/kbn-management/settings/utilities/category/get_category_counts.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_counts.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -161,7 +161,7 @@ "signature": [ "(category: string | undefined) => string" ], - "path": "packages/kbn-management/settings/utilities/category/get_category_name.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_name.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -175,7 +175,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-management/settings/utilities/category/get_category_name.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_name.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -196,7 +196,7 @@ "signature": [ "(field: F<\"array\">, change: C<\"array\"> | undefined) => [string[], boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -212,7 +212,7 @@ "signature": [ "F<\"array\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -229,7 +229,7 @@ "signature": [ "C<\"array\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -250,7 +250,7 @@ "signature": [ "(field: F<\"color\">, change: C<\"color\"> | undefined) => [string, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -266,7 +266,7 @@ "signature": [ "F<\"color\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -283,7 +283,7 @@ "signature": [ "C<\"color\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -304,7 +304,7 @@ "signature": [ "(field: F<\"boolean\">, change: C<\"boolean\"> | undefined) => [boolean, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -320,7 +320,7 @@ "signature": [ "F<\"boolean\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -337,7 +337,7 @@ "signature": [ "C<\"boolean\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -358,7 +358,7 @@ "signature": [ "(field: F<\"image\">, change: C<\"image\"> | undefined) => [string, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -374,7 +374,7 @@ "signature": [ "F<\"image\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -391,7 +391,7 @@ "signature": [ "C<\"image\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -412,7 +412,7 @@ "signature": [ "(field: F<\"json\">, change: C<\"json\"> | undefined) => [string, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -428,7 +428,7 @@ "signature": [ "F<\"json\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -445,7 +445,7 @@ "signature": [ "C<\"json\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -466,7 +466,7 @@ "signature": [ "(field: F<\"markdown\">, change: C<\"markdown\"> | undefined) => [string, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -482,7 +482,7 @@ "signature": [ "F<\"markdown\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -499,7 +499,7 @@ "signature": [ "C<\"markdown\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -520,7 +520,7 @@ "signature": [ "(field: F<\"number\">, change: C<\"number\"> | undefined) => [number, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -536,7 +536,7 @@ "signature": [ "F<\"number\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -553,7 +553,7 @@ "signature": [ "C<\"number\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -574,7 +574,7 @@ "signature": [ "(field: F<\"select\">, change: C<\"select\"> | undefined) => [string, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -590,7 +590,7 @@ "signature": [ "F<\"select\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -607,7 +607,7 @@ "signature": [ "C<\"select\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -628,7 +628,7 @@ "signature": [ "(field: F<\"string\">, change: C<\"string\"> | undefined) => [string, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -644,7 +644,7 @@ "signature": [ "F<\"string\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -661,7 +661,7 @@ "signature": [ "C<\"string\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -682,7 +682,7 @@ "signature": [ "(field: F<\"undefined\">, change: C<\"undefined\"> | undefined) => [string | null | undefined, boolean]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -698,7 +698,7 @@ "signature": [ "F<\"undefined\">" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -715,7 +715,7 @@ "signature": [ "C<\"undefined\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -744,7 +744,7 @@ }, " | null | undefined)[]" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -760,7 +760,7 @@ "signature": [ "F" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -777,7 +777,7 @@ "signature": [ "C | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/get_input_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -830,7 +830,7 @@ }, ", \"unsavedValue\"> | undefined) => boolean" ], - "path": "packages/kbn-management/settings/utilities/field/has_unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/has_unsaved_change.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -862,7 +862,7 @@ }, " | null>, \"defaultValue\" | \"savedValue\">" ], - "path": "packages/kbn-management/settings/utilities/field/has_unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/has_unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -887,7 +887,7 @@ }, ", \"unsavedValue\"> | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/has_unsaved_change.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/has_unsaved_change.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -908,7 +908,7 @@ "signature": [ "(field: F, change: C | undefined) => boolean" ], - "path": "packages/kbn-management/settings/utilities/field/is_default_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/is_default_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -924,7 +924,7 @@ "signature": [ "F" ], - "path": "packages/kbn-management/settings/utilities/field/is_default_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/is_default_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -941,7 +941,7 @@ "signature": [ "C | undefined" ], - "path": "packages/kbn-management/settings/utilities/field/is_default_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/is_default_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -986,7 +986,7 @@ }, ") => boolean" ], - "path": "packages/kbn-management/settings/utilities/setting/is_default_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/setting/is_default_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1017,7 +1017,7 @@ }, ", string | number | boolean | (string | number)[] | null | undefined>" ], - "path": "packages/kbn-management/settings/utilities/setting/is_default_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/setting/is_default_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1040,7 +1040,7 @@ "text": "Value" } ], - "path": "packages/kbn-management/settings/utilities/setting/is_default_value.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/setting/is_default_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1079,7 +1079,7 @@ }, ", string | number | boolean | (string | number)[] | null | undefined>>" ], - "path": "packages/kbn-management/settings/utilities/setting/normalize_settings.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/setting/normalize_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1095,7 +1095,7 @@ "signature": [ "RawSettings" ], - "path": "packages/kbn-management/settings/utilities/setting/normalize_settings.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/setting/normalize_settings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1142,7 +1142,7 @@ }, "" ], - "path": "packages/kbn-management/settings/utilities/field/use_update.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/use_update.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1165,7 +1165,7 @@ }, "" ], - "path": "packages/kbn-management/settings/utilities/field/use_update.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/use_update.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1195,7 +1195,7 @@ }, "" ], - "path": "packages/kbn-management/settings/utilities/field/use_update.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/use_update.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1219,7 +1219,7 @@ }, " | undefined) => void" ], - "path": "packages/kbn-management/settings/utilities/field/use_update.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/use_update.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1241,7 +1241,7 @@ }, " | undefined" ], - "path": "packages/kbn-management/settings/types/index.ts", + "path": "src/platform/packages/shared/kbn-management/settings/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -1275,7 +1275,7 @@ }, " | null | undefined; }" ], - "path": "packages/kbn-management/settings/utilities/field/use_update.ts", + "path": "src/platform/packages/shared/kbn-management/settings/utilities/field/use_update.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 331cb1ceddeac..0477f676e2b93 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index ce8a3fd26d1b2..38e49c9b1f705 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_manifest.mdx b/api_docs/kbn_manifest.mdx index 64218575a83a2..6b0725a8927da 100644 --- a/api_docs/kbn_manifest.mdx +++ b/api_docs/kbn_manifest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-manifest title: "@kbn/manifest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/manifest plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/manifest'] --- import kbnManifestObj from './kbn_manifest.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 0e365ab6aebdf..a29fb9d957e4f 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index e0b147e3efe0f..8a06fc362d8c9 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index ff0fc16114bba..43a3ecd51f4f6 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index 4db52f230beba..b194463ab078c 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_cancellable_search.mdx b/api_docs/kbn_ml_cancellable_search.mdx index 8f2d2ccdf2544..c072e913963dd 100644 --- a/api_docs/kbn_ml_cancellable_search.mdx +++ b/api_docs/kbn_ml_cancellable_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-cancellable-search title: "@kbn/ml-cancellable-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-cancellable-search plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-cancellable-search'] --- import kbnMlCancellableSearchObj from './kbn_ml_cancellable_search.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 57f44e3457aa2..c81e86c1e3cdd 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index f5ccbecdde615..80e2a956da25b 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index b0c26c2b62916..9dcfb9dc63389 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index dcd567834c179..a5ef0f3504957 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index aa266265b7c5f..5fdc2c9921f12 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index 060ab12936358..6408eed04f86b 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index f88871437f8b5..7438f26e29708 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_field_stats_flyout.devdocs.json b/api_docs/kbn_ml_field_stats_flyout.devdocs.json index 6a36d381c9d49..06386cb2c1d56 100644 --- a/api_docs/kbn_ml_field_stats_flyout.devdocs.json +++ b/api_docs/kbn_ml_field_stats_flyout.devdocs.json @@ -583,7 +583,7 @@ "EuiSelectableLIOption", ">> & ", "CommonProps", - " & { label: string; searchableLabel?: string | undefined; key?: string | undefined; checked?: \"mixed\" | \"on\" | \"off\" | undefined; disabled?: boolean | undefined; isGroupLabel?: false | undefined; prepend?: React.ReactNode; append?: React.ReactNode; ref?: ((optionIndex: number) => void) | undefined; id?: undefined; data?: { [key: string]: any; } | undefined; textWrap?: \"wrap\" | \"truncate\" | undefined; truncationProps?: Partial void) | undefined; id?: undefined; data?: { [key: string]: any; } | undefined; textWrap?: \"wrap\" | \"truncate\" | undefined; truncationProps?: Partial> | undefined; toolTipContent?: React.ReactNode; toolTipProps?: Partial React.JSX.Element" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_active_time_range_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_active_time_range_annotation.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -43,7 +43,7 @@ "signature": [ "Props" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_active_time_range_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_active_time_range_annotation.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -62,7 +62,7 @@ "signature": [ "({ alertStart, color, dateFormat, id }: Props) => React.JSX.Element" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_annotation.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -76,7 +76,7 @@ "signature": [ "Props" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_annotation.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -95,7 +95,7 @@ "signature": [ "({ threshold, color, id }: Props) => React.JSX.Element" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_threshold_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_annotation.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -109,7 +109,7 @@ "signature": [ "Props" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_threshold_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_annotation.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -128,7 +128,7 @@ "signature": [ "({ color, id, threshold }: Props) => React.JSX.Element" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_threshold_time_range_rect.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_time_range_rect.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -142,7 +142,7 @@ "signature": [ "Props" ], - "path": "x-pack/packages/observability/alert_details/src/components/alert_threshold_time_range_rect.tsx", + "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_time_range_rect.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -164,7 +164,7 @@ ") => ", "UseAlertsHistory" ], - "path": "x-pack/packages/observability/alert_details/src/hooks/use_alerts_history.ts", + "path": "x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -178,7 +178,7 @@ "signature": [ "Props" ], - "path": "x-pack/packages/observability/alert_details/src/hooks/use_alerts_history.ts", + "path": "x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.ts", "deprecated": false, "trackAdoption": false, "isRequired": true diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index fc1c9ad0e3723..29cf0c946fa03 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_rule_utils.devdocs.json b/api_docs/kbn_observability_alerting_rule_utils.devdocs.json index ba4a7cbf85536..71001a1223024 100644 --- a/api_docs/kbn_observability_alerting_rule_utils.devdocs.json +++ b/api_docs/kbn_observability_alerting_rule_utils.devdocs.json @@ -37,7 +37,7 @@ }, "[]) => Record" ], - "path": "x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -58,7 +58,7 @@ }, "[]" ], - "path": "x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -76,7 +76,7 @@ "tags": [], "label": "Group", "description": [], - "path": "x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -87,7 +87,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false }, @@ -98,7 +98,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_observability_alerting_rule_utils.mdx b/api_docs/kbn_observability_alerting_rule_utils.mdx index 92530c3edb177..d66d248666423 100644 --- a/api_docs/kbn_observability_alerting_rule_utils.mdx +++ b/api_docs/kbn_observability_alerting_rule_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-rule-utils title: "@kbn/observability-alerting-rule-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-rule-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-rule-utils'] --- import kbnObservabilityAlertingRuleUtilsObj from './kbn_observability_alerting_rule_utils.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.devdocs.json b/api_docs/kbn_observability_alerting_test_data.devdocs.json index f2836f5247cc7..94fab28a7f008 100644 --- a/api_docs/kbn_observability_alerting_test_data.devdocs.json +++ b/api_docs/kbn_observability_alerting_test_data.devdocs.json @@ -31,7 +31,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_apm_error_count_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_error_count_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -45,7 +45,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_apm_error_count_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_error_count_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -66,7 +66,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -80,7 +80,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -101,7 +101,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -115,7 +115,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -130,7 +130,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -142,7 +142,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -156,7 +156,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false }, @@ -170,7 +170,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false }, @@ -184,7 +184,7 @@ "signature": [ "{ criteria: any[]; groupBy?: string[] | undefined; searchConfiguration: { query: { query?: string | undefined; }; }; } | undefined" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false } @@ -206,7 +206,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_data_view.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -217,7 +217,7 @@ "tags": [], "label": "{\n indexPattern,\n id,\n}", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/create_data_view.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -228,7 +228,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/create_data_view.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts", "deprecated": false, "trackAdoption": false }, @@ -239,7 +239,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/create_data_view.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts", "deprecated": false, "trackAdoption": false } @@ -261,7 +261,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_index_connector.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_index_connector.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -280,7 +280,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -294,7 +294,7 @@ "signature": [ "any" ], - "path": "x-pack/packages/observability/alerting_test_data/src/create_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -313,7 +313,7 @@ "signature": [ "() => Promise" ], - "path": "x-pack/packages/observability/alerting_test_data/src/run.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/run.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -332,7 +332,7 @@ "tags": [], "label": "scenario1", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -343,7 +343,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -354,7 +354,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -365,7 +365,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -376,7 +376,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false } @@ -389,7 +389,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -400,7 +400,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -411,7 +411,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -422,7 +422,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -446,7 +446,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -457,7 +457,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -468,7 +468,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -479,7 +479,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false } @@ -501,7 +501,7 @@ "tags": [], "label": "scenario2", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -512,7 +512,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -523,7 +523,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -534,7 +534,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -545,7 +545,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false } @@ -558,7 +558,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -569,7 +569,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -580,7 +580,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -591,7 +591,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -615,7 +615,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -629,7 +629,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -640,7 +640,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -651,7 +651,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -662,7 +662,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false } @@ -684,7 +684,7 @@ "tags": [], "label": "scenario3", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -695,7 +695,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -706,7 +706,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -717,7 +717,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -728,7 +728,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false } @@ -741,7 +741,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -752,7 +752,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -763,7 +763,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -774,7 +774,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -798,7 +798,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -809,7 +809,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -820,7 +820,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -831,7 +831,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false } @@ -853,7 +853,7 @@ "tags": [], "label": "scenario4", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -864,7 +864,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -875,7 +875,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -886,7 +886,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -897,7 +897,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false } @@ -910,7 +910,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -921,7 +921,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -932,7 +932,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -943,7 +943,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -967,7 +967,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -978,7 +978,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -989,7 +989,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1000,7 +1000,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false } @@ -1022,7 +1022,7 @@ "tags": [], "label": "scenario5", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1033,7 +1033,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1044,7 +1044,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1055,7 +1055,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1066,7 +1066,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false } @@ -1079,7 +1079,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1090,7 +1090,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1101,7 +1101,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1112,7 +1112,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1136,7 +1136,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1150,7 +1150,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1161,7 +1161,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1172,7 +1172,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1183,7 +1183,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false } @@ -1205,7 +1205,7 @@ "tags": [], "label": "scenario6", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1216,7 +1216,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1227,7 +1227,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1238,7 +1238,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1249,7 +1249,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false } @@ -1262,7 +1262,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1273,7 +1273,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1284,7 +1284,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1295,7 +1295,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1319,7 +1319,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1330,7 +1330,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1341,7 +1341,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1352,7 +1352,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index f8f849871e1cd..54598b15275ee 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.devdocs.json b/api_docs/kbn_observability_get_padded_alert_time_range_util.devdocs.json index ae2d7079bfc75..84d4a7404387e 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.devdocs.json +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.devdocs.json @@ -30,7 +30,7 @@ "(alertStart: string, alertEnd?: string | undefined, lookBackWindow?: { size: number; unit: \"m\" | \"s\" | \"d\" | \"h\"; } | undefined) => ", "TimeRange" ], - "path": "x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -44,7 +44,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -59,7 +59,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -71,7 +71,7 @@ "tags": [], "label": "lookBackWindow", "description": [], - "path": "x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -82,7 +82,7 @@ "tags": [], "label": "size", "description": [], - "path": "x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false }, @@ -96,7 +96,7 @@ "signature": [ "\"m\" | \"s\" | \"d\" | \"h\"" ], - "path": "x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index 5c5c59993a441..7637fa4c1320c 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_observability_logs_overview.mdx b/api_docs/kbn_observability_logs_overview.mdx index 276476ac7430b..f8098faddff6e 100644 --- a/api_docs/kbn_observability_logs_overview.mdx +++ b/api_docs/kbn_observability_logs_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-logs-overview title: "@kbn/observability-logs-overview" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-logs-overview plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-logs-overview'] --- import kbnObservabilityLogsOverviewObj from './kbn_observability_logs_overview.devdocs.json'; diff --git a/api_docs/kbn_observability_synthetics_test_data.devdocs.json b/api_docs/kbn_observability_synthetics_test_data.devdocs.json index 21c91a98e0540..bd016da5427c8 100644 --- a/api_docs/kbn_observability_synthetics_test_data.devdocs.json +++ b/api_docs/kbn_observability_synthetics_test_data.devdocs.json @@ -17,7 +17,345 @@ "objects": [] }, "common": { - "classes": [], + "classes": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner", + "type": "Class", + "tags": [], + "label": "SyntheticsRunner", + "description": [], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.getService", + "type": "Any", + "tags": [], + "label": "getService", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.kibanaUrl", + "type": "string", + "tags": [], + "label": "kibanaUrl", + "description": [], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.testFilesLoaded", + "type": "boolean", + "tags": [], + "label": "testFilesLoaded", + "description": [], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "ArgParams" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.Unnamed.$1", + "type": "Any", + "tags": [], + "label": "getService", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.Unnamed.$2", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "ArgParams" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.setup", + "type": "Function", + "tags": [], + "label": "setup", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.createTestUsers", + "type": "Function", + "tags": [], + "label": "createTestUsers", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.loadTestFiles", + "type": "Function", + "tags": [], + "label": "loadTestFiles", + "description": [], + "signature": [ + "(callback: (reload?: boolean | undefined) => Promise, reload?: boolean) => Promise" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.loadTestFiles.$1", + "type": "Function", + "tags": [], + "label": "callback", + "description": [], + "signature": [ + "(reload?: boolean | undefined) => Promise" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.loadTestFiles.$2", + "type": "boolean", + "tags": [], + "label": "reload", + "description": [], + "signature": [ + "boolean" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.loadTestData", + "type": "Function", + "tags": [], + "label": "loadTestData", + "description": [], + "signature": [ + "(e2eDir: string, dataArchives: string[]) => Promise" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.loadTestData.$1", + "type": "string", + "tags": [], + "label": "e2eDir", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.loadTestData.$2", + "type": "Array", + "tags": [], + "label": "dataArchives", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.getKibanaUrl", + "type": "Function", + "tags": [], + "label": "getKibanaUrl", + "description": [], + "signature": [ + "() => string" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.getElasticsearchUrl", + "type": "Function", + "tags": [], + "label": "getElasticsearchUrl", + "description": [], + "signature": [ + "() => string" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.run", + "type": "Function", + "tags": [], + "label": "run", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.assertResults", + "type": "Function", + "tags": [], + "label": "assertResults", + "description": [], + "signature": [ + "(results: { [x: string]: ", + "JourneyResult", + "; }) => void" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.assertResults.$1", + "type": "Object", + "tags": [], + "label": "results", + "description": [], + "signature": [ + "{ [x: string]: ", + "JourneyResult", + "; }" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.SyntheticsRunner.cleanUp", + "type": "Function", + "tags": [], + "label": "cleanUp", + "description": [], + "signature": [ + "() => void" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], "functions": [ { "parentPluginId": "@kbn/observability-synthetics-test-data", @@ -29,9 +367,9 @@ "signature": [ "({ name, timestamp, monitorId, location, configId, }?: ", "DocOverrides", - ") => { summary: { up: number; down: number; final_attempt: boolean; }; monitor: { duration: { us: number; }; origin: string; ip: string; name: string; fleet_managed: boolean; check_group: string; timespan: { lt: string; gte: string | moment.Moment; }; id: string; type: string; status: \"up\" | \"down\"; }; error: { message: string; type: string; }; '@timestamp': string; config_id: string; state: { duration_ms: number; checks: number; ends: null; started_at: string; id: string; up: number; down: number; flap_history: never[]; status: string; }; url: { scheme: string; port: number; domain: string; full: string; }; ecs: { version: string; }; tcp: { rtt: { connect: { us: number; }; }; }; event: { agent_id_status: string; ingested: string; dataset: string; }; agent: { name: string; id: string; type: string; ephemeral_id: string; version: string; }; elastic_agent: { id: string; version: string; snapshot: boolean; }; data_stream: { namespace: string; type: string; dataset: string; }; resolve: { rtt: { us: number; }; ip: string; }; tls: { established: boolean; cipher: string; certificate_not_valid_before: string; server: { x509: { not_after: string; subject: { distinguished_name: string; common_name: string; }; not_before: string; public_key_algorithm: string; public_key_curve: string; signature_algorithm: string; serial_number: string; issuer: { distinguished_name: string; common_name: string; }; }; hash: { sha1: string; sha256: string; }; }; rtt: { handshake: { us: number; }; }; version: string; certificate_not_valid_after: string; version_protocol: string; }; http: { rtt: { response_header: { us: number; }; total: { us: number; }; write_request: { us: number; }; content: { us: number; }; validate: { us: number; }; }; response: { headers: { Server: string; P3p: string; Date: string; 'X-Frame-Options': string; 'Accept-Ranges': string; 'Cache-Control': string; 'X-Xss-Protection': string; 'Cross-Origin-Opener-Policy-Report-Only': string; Vary: string; Expires: string; 'Content-Type': string; }; status_code: number; mime_type: string; body: { bytes: number; hash: string; }; }; }; observer: { geo: { name: string; location: string; }; name: string; }; }" + ") => { summary: { up: number; down: number; final_attempt: boolean; }; monitor: { duration: { us: number; }; origin: string; ip: string; name: string; fleet_managed: boolean; check_group: string; timespan: { lt: string; gte: string | moment.Moment; }; id: string; type: string; status: \"up\" | \"down\"; }; error: { message: string; type: string; }; '@timestamp': string; config_id: string; state: { duration_ms: number; checks: number; ends: null; started_at: string; id: string; up: number; down: number; flap_history: never[]; status: string; }; url: { scheme: string; port: number; domain: string; full: string; }; ecs: { version: string; }; tcp: { rtt: { connect: { us: number; }; }; }; event: { agent_id_status: string; ingested: string; dataset: string; }; agent: { name: string; id: string; type: string; ephemeral_id: string; version: string; }; elastic_agent: { id: string; version: string; snapshot: boolean; }; data_stream: { namespace: string; type: string; dataset: string; }; resolve: { rtt: { us: number; }; ip: string; }; tls: { established: boolean; cipher: string; certificate_not_valid_before: string; server: { x509: { not_after: string; subject: { distinguished_name: string; common_name: string; }; not_before: string; public_key_algorithm: string; public_key_curve: string; signature_algorithm: string; serial_number: string; issuer: { distinguished_name: string; common_name: string; }; }; hash: { sha1: string; sha256: string; }; }; rtt: { handshake: { us: number; }; }; version: string; certificate_not_valid_after: string; version_protocol: string; }; http: { rtt: { response_header: { us: number; }; total: { us: number; }; write_request: { us: number; }; content: { us: number; }; validate: { us: number; }; }; response: { headers: { Server: string; P3p: string; Date: string; 'X-Frame-Options': string; 'Accept-Ranges': string; 'Cache-Control': string; 'X-Xss-Protection': string; 'Cross-Origin-Opener-Policy-Report-Only': string; Vary: string; Expires: string; 'Content-Type': string; }; status_code: number; mime_type: string; body: { bytes: number; hash: string; }; }; }; meta: { space_id: string; }; observer: { geo: { name: string; location: string; }; name: string; }; }" ], - "path": "x-pack/packages/observability/synthetics_test_data/src/make_summaries.ts", + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/make_summaries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -45,7 +383,7 @@ "signature": [ "DocOverrides" ], - "path": "x-pack/packages/observability/synthetics_test_data/src/make_summaries.ts", + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/make_summaries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -64,9 +402,9 @@ "signature": [ "({ name, timestamp, monitorId, configId, testRunId, location, }?: ", "DocOverrides", - ") => { test_run_id?: string | undefined; summary: { up: number; down: number; final_attempt: boolean; }; monitor: { duration: { us: number; }; origin: string; ip: string; name: string; fleet_managed: boolean; check_group: string; timespan: { lt: string; gte: string | moment.Moment; }; id: string; type: string; status: \"up\" | \"down\"; }; '@timestamp': string; config_id: string; state: { duration_ms: number; checks: number; ends: null; started_at: string; up: number; id: string; down: number; flap_history: never[]; status: string; }; url: { scheme: string; port: number; domain: string; full: string; }; ecs: { version: string; }; tcp: { rtt: { connect: { us: number; }; }; }; event: { agent_id_status: string; ingested: string; dataset: string; }; agent: { name: string; id: string; type: string; ephemeral_id: string; version: string; }; elastic_agent: { id: string; version: string; snapshot: boolean; }; data_stream: { namespace: string; type: string; dataset: string; }; resolve: { rtt: { us: number; }; ip: string; }; tls: { established: boolean; cipher: string; certificate_not_valid_before: string; server: { x509: { not_after: string; subject: { distinguished_name: string; common_name: string; }; not_before: string; public_key_algorithm: string; public_key_curve: string; signature_algorithm: string; serial_number: string; issuer: { distinguished_name: string; common_name: string; }; }; hash: { sha1: string; sha256: string; }; }; rtt: { handshake: { us: number; }; }; version: string; certificate_not_valid_after: string; version_protocol: string; }; http: { rtt: { response_header: { us: number; }; total: { us: number; }; write_request: { us: number; }; content: { us: number; }; validate: { us: number; }; }; response: { headers: { Server: string; P3p: string; Date: string; 'X-Frame-Options': string; 'Accept-Ranges': string; 'Cache-Control': string; 'X-Xss-Protection': string; 'Cross-Origin-Opener-Policy-Report-Only': string; Vary: string; Expires: string; 'Content-Type': string; }; status_code: number; mime_type: string; body: { bytes: number; hash: string; }; }; }; observer: { geo: { name: string; location: string; }; name: string; }; }" + ") => { test_run_id?: string | undefined; summary: { up: number; down: number; final_attempt: boolean; }; monitor: { duration: { us: number; }; origin: string; ip: string; name: string; fleet_managed: boolean; check_group: string; timespan: { lt: string; gte: string | moment.Moment; }; id: string; type: string; status: \"up\" | \"down\"; }; '@timestamp': string; config_id: string; state: { duration_ms: number; checks: number; ends: null; started_at: string; up: number; id: string; down: number; flap_history: never[]; status: string; }; url: { scheme: string; port: number; domain: string; full: string; }; ecs: { version: string; }; tcp: { rtt: { connect: { us: number; }; }; }; event: { agent_id_status: string; ingested: string; dataset: string; }; agent: { name: string; id: string; type: string; ephemeral_id: string; version: string; }; elastic_agent: { id: string; version: string; snapshot: boolean; }; data_stream: { namespace: string; type: string; dataset: string; }; resolve: { rtt: { us: number; }; ip: string; }; tls: { established: boolean; cipher: string; certificate_not_valid_before: string; server: { x509: { not_after: string; subject: { distinguished_name: string; common_name: string; }; not_before: string; public_key_algorithm: string; public_key_curve: string; signature_algorithm: string; serial_number: string; issuer: { distinguished_name: string; common_name: string; }; }; hash: { sha1: string; sha256: string; }; }; rtt: { handshake: { us: number; }; }; version: string; certificate_not_valid_after: string; version_protocol: string; }; http: { rtt: { response_header: { us: number; }; total: { us: number; }; write_request: { us: number; }; content: { us: number; }; validate: { us: number; }; }; response: { headers: { Server: string; P3p: string; Date: string; 'X-Frame-Options': string; 'Accept-Ranges': string; 'Cache-Control': string; 'X-Xss-Protection': string; 'Cross-Origin-Opener-Policy-Report-Only': string; Vary: string; Expires: string; 'Content-Type': string; }; status_code: number; mime_type: string; body: { bytes: number; hash: string; }; }; }; meta: { space_id: string; }; observer: { geo: { name: string; location: string; }; name: string; }; }" ], - "path": "x-pack/packages/observability/synthetics_test_data/src/make_summaries.ts", + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/make_summaries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -80,7 +418,74 @@ "signature": [ "DocOverrides" ], - "path": "x-pack/packages/observability/synthetics_test_data/src/make_summaries.ts", + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/make_summaries.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.readKibanaConfig", + "type": "Function", + "tags": [], + "label": "readKibanaConfig", + "description": [], + "signature": [ + "() => Record" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/tasks/read_kibana_config.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.recordVideo", + "type": "Function", + "tags": [], + "label": "recordVideo", + "description": [], + "signature": [ + "(page: ", + "Page", + ", postfix?: string) => void" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/record_video.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.recordVideo.$1", + "type": "Object", + "tags": [], + "label": "page", + "description": [], + "signature": [ + "Page" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/record_video.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.recordVideo.$2", + "type": "string", + "tags": [], + "label": "postfix", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/record_video.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -93,6 +498,22 @@ "interfaces": [], "enums": [], "misc": [], - "objects": [] + "objects": [ + { + "parentPluginId": "@kbn/observability-synthetics-test-data", + "id": "def-common.argv", + "type": "Object", + "tags": [], + "label": "argv", + "description": [], + "signature": [ + "{ [x: string]: unknown; headless: boolean; bail: boolean; grep: undefined; _: string[]; $0: string; }" + ], + "path": "x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/parse_args_params.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ] } } \ No newline at end of file diff --git a/api_docs/kbn_observability_synthetics_test_data.mdx b/api_docs/kbn_observability_synthetics_test_data.mdx index fe1ff61f417f9..a41ea76cfb2f7 100644 --- a/api_docs/kbn_observability_synthetics_test_data.mdx +++ b/api_docs/kbn_observability_synthetics_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-synthetics-test-data title: "@kbn/observability-synthetics-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-synthetics-test-data plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-synthetics-test-data'] --- import kbnObservabilitySyntheticsTestDataObj from './kbn_observability_synthetics_test_data.devdocs.json'; @@ -21,10 +21,16 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 4 | 0 | 4 | 1 | +| 31 | 2 | 31 | 2 | ## Common +### Objects + + ### Functions +### Classes + + diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 03890b35301f6..b482014eaceb9 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 8a7c6d88ea4d4..fa27025bd7655 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 175d8c0e1b5f3..476615d0cb255 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 9807ae3e162c7..62b0d59e71b60 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.devdocs.json b/api_docs/kbn_osquery_io_ts_types.devdocs.json index 4fd8870da6eaf..c63d3feefe73c 100644 --- a/api_docs/kbn_osquery_io_ts_types.devdocs.json +++ b/api_docs/kbn_osquery_io_ts_types.devdocs.json @@ -32,7 +32,7 @@ "signature": [ "{ agents: string[]; allAgentsSelected: boolean; platformsSelected: string[]; policiesSelected: string[]; }" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -47,7 +47,7 @@ "signature": [ "{ agents: string[]; allAgentsSelected: boolean; platformsSelected: string[]; policiesSelected: string[]; } | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -62,7 +62,7 @@ "signature": [ "{ id: string; query: string; ecs_mapping: { [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined; version: string | undefined; platform: string | undefined; removed: boolean | undefined; snapshot: boolean | undefined; }[]" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -77,7 +77,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -92,7 +92,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -107,7 +107,7 @@ "signature": [ "{ [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; }" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -122,7 +122,7 @@ "signature": [ "{ [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -137,7 +137,7 @@ "signature": [ "{ name: string | undefined; url: string | undefined; }" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -152,7 +152,7 @@ "signature": [ "{ name: string | undefined; url: string | undefined; } | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -167,7 +167,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -182,7 +182,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -197,7 +197,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -212,7 +212,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -227,7 +227,7 @@ "signature": [ "{ [x: string]: { query: string; id: string; ecs_mapping: { [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined; version: string | undefined; platform: string | undefined; saved_query_id: string | undefined; removed: boolean | undefined; snapshot: boolean | undefined; }; }" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -242,7 +242,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -257,7 +257,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -272,7 +272,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -287,7 +287,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -302,7 +302,7 @@ "signature": [ "{ id: string; query: string; ecs_mapping: { [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined; version: string | undefined; platform: string | undefined; removed: boolean | undefined; snapshot: boolean | undefined; }[] | { [x: string]: { query: string; id: string; ecs_mapping: { [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined; version: string | undefined; platform: string | undefined; saved_query_id: string | undefined; removed: boolean | undefined; snapshot: boolean | undefined; }; }" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -317,7 +317,7 @@ "signature": [ "{ id: string; query: string; ecs_mapping: { [x: string]: { field?: string | undefined; value?: string | string[] | undefined; }; } | undefined; version: string | undefined; platform: string | undefined; removed: boolean | undefined; snapshot: boolean | undefined; }[] | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -332,7 +332,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -347,7 +347,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -362,7 +362,7 @@ "signature": [ "boolean" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -377,7 +377,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -392,7 +392,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -407,7 +407,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -422,7 +422,7 @@ "signature": [ "boolean" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -437,7 +437,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -452,7 +452,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -467,7 +467,7 @@ "signature": [ "number" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -482,7 +482,7 @@ "signature": [ "number | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -497,7 +497,7 @@ "signature": [ "string" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -512,7 +512,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -544,7 +544,7 @@ "StringC", ">; }>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -578,7 +578,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -644,7 +644,7 @@ "UndefinedC", "]>; }>>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -659,7 +659,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -679,7 +679,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -709,7 +709,7 @@ "StringC", ">]>; }>>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -743,7 +743,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -771,7 +771,7 @@ "UndefinedC", "]>; }>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -803,7 +803,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -818,7 +818,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -838,7 +838,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -853,7 +853,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -873,7 +873,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -947,7 +947,7 @@ "UndefinedC", "]>; }>>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -962,7 +962,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -982,7 +982,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -997,7 +997,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1017,7 +1017,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1145,7 +1145,7 @@ "UndefinedC", "]>; }>>]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1215,7 +1215,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1230,7 +1230,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1250,7 +1250,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1265,7 +1265,7 @@ "signature": [ "BooleanC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1285,7 +1285,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1300,7 +1300,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1320,7 +1320,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1335,7 +1335,7 @@ "signature": [ "BooleanC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1355,7 +1355,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1377,7 +1377,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1393,7 +1393,7 @@ "Type", "" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1413,7 +1413,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1428,7 +1428,7 @@ "signature": [ "StringC" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1448,7 +1448,7 @@ "UndefinedC", "]>" ], - "path": "packages/kbn-osquery-io-ts-types/src/live_query/index.ts", + "path": "src/platform/packages/shared/kbn-osquery-io-ts-types/src/live_query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index 736ca4874ace0..3c48039deacb5 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_palettes.devdocs.json b/api_docs/kbn_palettes.devdocs.json new file mode 100644 index 0000000000000..0f5ba9d2d0b21 --- /dev/null +++ b/api_docs/kbn_palettes.devdocs.json @@ -0,0 +1,796 @@ +{ + "id": "@kbn/palettes", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes", + "type": "Class", + "tags": [], + "label": "KbnPalettes", + "description": [], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.palettes", + "type": "Object", + "tags": [], + "label": "#palettes", + "description": [], + "signature": [ + "Map" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.aliasMappings", + "type": "Object", + "tags": [], + "label": "#aliasMappings", + "description": [], + "signature": [ + "Map" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.defaultPalette", + "type": "Object", + "tags": [], + "label": "#defaultPalette", + "description": [], + "signature": [ + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.IKbnPalette", + "text": "IKbnPalette" + } + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.Unnamed.$1", + "type": "Array", + "tags": [], + "label": "palettes", + "description": [], + "signature": [ + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.IKbnPalette", + "text": "IKbnPalette" + }, + "[]" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.Unnamed.$2", + "type": "Object", + "tags": [], + "label": "defaultPalette", + "description": [], + "signature": [ + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.IKbnPalette", + "text": "IKbnPalette" + } + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.query", + "type": "Function", + "tags": [], + "label": "query", + "description": [], + "signature": [ + "(id: string) => ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.IKbnPalette", + "text": "IKbnPalette" + }, + " | undefined" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.query.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.get", + "type": "Function", + "tags": [], + "label": "get", + "description": [], + "signature": [ + "(id: string) => ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.IKbnPalette", + "text": "IKbnPalette" + } + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.get.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalettes.getAll", + "type": "Function", + "tags": [], + "label": "getAll", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.IKbnPalette", + "text": "IKbnPalette" + }, + "[]" + ], + "path": "packages/kbn-palettes/classes/palettes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.getKbnPalettes", + "type": "Function", + "tags": [], + "label": "getKbnPalettes", + "description": [], + "signature": [ + "({ name, darkMode }: ", + { + "pluginId": "@kbn/core-theme-browser", + "scope": "public", + "docId": "kibKbnCoreThemeBrowserPluginApi", + "section": "def-public.CoreTheme", + "text": "CoreTheme" + }, + ") => ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } + ], + "path": "packages/kbn-palettes/palettes/get_kbn_palettes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.getKbnPalettes.$1", + "type": "Object", + "tags": [], + "label": "{ name, darkMode }", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-theme-browser", + "scope": "public", + "docId": "kibKbnCoreThemeBrowserPluginApi", + "section": "def-public.CoreTheme", + "text": "CoreTheme" + } + ], + "path": "packages/kbn-palettes/palettes/get_kbn_palettes.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.getPalettes", + "type": "Function", + "tags": [], + "label": "getPalettes", + "description": [], + "signature": [ + "(darkMode: boolean) => ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } + ], + "path": "packages/kbn-palettes/palettes/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.getPalettes.$1", + "type": "boolean", + "tags": [], + "label": "darkMode", + "description": [], + "signature": [ + "boolean" + ], + "path": "packages/kbn-palettes/palettes/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.useKbnPalettes", + "type": "Function", + "tags": [], + "label": "useKbnPalettes", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/palettes", + "scope": "common", + "docId": "kibKbnPalettesPluginApi", + "section": "def-common.KbnPalettes", + "text": "KbnPalettes" + } + ], + "path": "packages/kbn-palettes/hooks/use_kbn_palettes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette", + "type": "Interface", + "tags": [], + "label": "IKbnPalette", + "description": [ + "\nCommon palette definition used throughout kibana" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "\nUnique identifier for the palette" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.name", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "\nDisplay name of this palette." + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [ + "\nType of pallette" + ], + "signature": [ + "\"gradient\" | \"categorical\"" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.colorCount", + "type": "number", + "tags": [], + "label": "colorCount", + "description": [ + "\nNumber of colors to display" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.legacy", + "type": "boolean", + "tags": [], + "label": "legacy", + "description": [ + "\nPalette belongs to an outdated theme set" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.aliases", + "type": "Array", + "tags": [], + "label": "aliases", + "description": [ + "\nAlternate aliases/ids this palette matches" + ], + "signature": [ + "string[]" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.standalone", + "type": "CompoundType", + "tags": [], + "label": "standalone", + "description": [ + "\nExcluded from `getAll` but can still query for palette with `get`/`query`\n\nAn example would be `KbnPalette.Neutral` palette. I want to exclude it from the list of all available palettes, but I still want to `get`/`query` the palette." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.colors", + "type": "Function", + "tags": [], + "label": "colors", + "description": [ + "\nReturns array of colors, optionally provide desired number of colors (`n`)" + ], + "signature": [ + "(n?: number | undefined) => string[]" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.colors.$1", + "type": "number", + "tags": [], + "label": "n", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.getColor", + "type": "Function", + "tags": [], + "label": "getColor", + "description": [ + "\nReturns color provided index and optional total number of colors" + ], + "signature": [ + "(colorIndex: number, numberOfColors?: number | undefined) => string" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.getColor.$1", + "type": "number", + "tags": [], + "label": "colorIndex", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.IKbnPalette.getColor.$2", + "type": "number", + "tags": [], + "label": "numberOfColors", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.DEFAULT_FALLBACK_PALETTE", + "type": "string", + "tags": [], + "label": "DEFAULT_FALLBACK_PALETTE", + "description": [], + "signature": [ + "\"default\"" + ], + "path": "packages/kbn-palettes/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPaletteType", + "type": "Type", + "tags": [], + "label": "KbnPaletteType", + "description": [], + "signature": [ + "\"gradient\" | \"categorical\"" + ], + "path": "packages/kbn-palettes/classes/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.elasticPalette", + "type": "Object", + "tags": [], + "label": "elasticPalette", + "description": [ + "\nThis is not correctly returning the updated vis colors from eui.\nAll gradient function work correctly." + ], + "signature": [ + "KbnColorFnPalette" + ], + "path": "packages/kbn-palettes/palettes/categorical/elastic.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalette", + "type": "Object", + "tags": [], + "label": "KbnPalette", + "description": [ + "\nEnum of all kbn palette ids, including by type" + ], + "path": "packages/kbn-palettes/constants.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalette.Unnamed", + "type": "Any", + "tags": [], + "label": "Unnamed", + "description": [ + "// Categorical palettes" + ], + "signature": [ + "any" + ], + "path": "packages/kbn-palettes/constants.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalette.Unnamed", + "type": "Any", + "tags": [], + "label": "Unnamed", + "description": [ + "// Gradient palettes" + ], + "signature": [ + "any" + ], + "path": "packages/kbn-palettes/constants.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalette.Unnamed", + "type": "Any", + "tags": [], + "label": "Unnamed", + "description": [ + "// Semantic palettes" + ], + "signature": [ + "any" + ], + "path": "packages/kbn-palettes/constants.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.KbnPalette.Amsterdam", + "type": "string", + "tags": [], + "label": "Amsterdam", + "description": [ + "// ---- Deprecated palettes ----\n/**\n * Amsterdam theme\n * @deprecated use `KbnPalette.kibana7`\n */" + ], + "signature": [ + "\"eui_amsterdam_color_blind\"" + ], + "path": "packages/kbn-palettes/constants.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.logLevelPalette", + "type": "Object", + "tags": [], + "label": "logLevelPalette", + "description": [ + "\nDefines a palette to be used directly and does not fully implement IKbnPalette" + ], + "path": "packages/kbn-palettes/palettes/semantic/log_level.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.logLevelPalette.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "\"log_level\"" + ], + "path": "packages/kbn-palettes/palettes/semantic/log_level.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.logLevelPalette.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-palettes/palettes/semantic/log_level.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.logLevelPalette.getColor", + "type": "Function", + "tags": [], + "label": "getColor", + "description": [], + "signature": [ + "(key: \"Error\" | \"Other\" | \"Debug\" | \"Info\" | \"Notice\" | \"Alert\" | \"Emerg\" | \"Crit\" | \"Warn\") => string" + ], + "path": "packages/kbn-palettes/palettes/semantic/log_level.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.logLevelPalette.getColor.$1", + "type": "CompoundType", + "tags": [], + "label": "key", + "description": [], + "signature": [ + "\"Error\" | \"Other\" | \"Debug\" | \"Info\" | \"Notice\" | \"Alert\" | \"Emerg\" | \"Crit\" | \"Warn\"" + ], + "path": "packages/kbn-palettes/palettes/semantic/log_level.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/palettes", + "id": "def-common.logLevelPalette.colors", + "type": "Object", + "tags": [], + "label": "colors", + "description": [], + "signature": [ + "{ Emerg: string; Alert: string; Crit: string; Error: string; Warn: string; Notice: string; Info: string; Debug: string; Other: string; }" + ], + "path": "packages/kbn-palettes/palettes/semantic/log_level.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ] + } +} \ No newline at end of file diff --git a/api_docs/kbn_palettes.mdx b/api_docs/kbn_palettes.mdx new file mode 100644 index 0000000000000..e515432d48e4a --- /dev/null +++ b/api_docs/kbn_palettes.mdx @@ -0,0 +1,42 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnPalettesPluginApi +slug: /kibana-dev-docs/api/kbn-palettes +title: "@kbn/palettes" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/palettes plugin +date: 2024-12-14 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/palettes'] +--- +import kbnPalettesObj from './kbn_palettes.devdocs.json'; + + + +Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 44 | 3 | 27 | 1 | + +## Common + +### Objects + + +### Functions + + +### Classes + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index 6cbe5e72b18cd..1ff4e2aea067a 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 5d30afaad94f7..cae69765c31f5 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_check.mdx b/api_docs/kbn_plugin_check.mdx index 61775fada02fc..ac97072e52148 100644 --- a/api_docs/kbn_plugin_check.mdx +++ b/api_docs/kbn_plugin_check.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-check title: "@kbn/plugin-check" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-check plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-check'] --- import kbnPluginCheckObj from './kbn_plugin_check.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 8b9db012aca7e..2bd9cdb63940e 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index ae741374afa7c..2fb117f83dc00 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.devdocs.json b/api_docs/kbn_presentation_containers.devdocs.json index 3fa2ed6691aa9..305426d8d15c6 100644 --- a/api_docs/kbn_presentation_containers.devdocs.json +++ b/api_docs/kbn_presentation_containers.devdocs.json @@ -1246,14 +1246,6 @@ ], "signature": [ "() => ", - { - "pluginId": "@kbn/utility-types", - "scope": "common", - "docId": "kibKbnUtilityTypesPluginApi", - "section": "def-common.MaybePromise", - "text": "MaybePromise" - }, - "<", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -1261,7 +1253,7 @@ "section": "def-public.SerializedPanelState", "text": "SerializedPanelState" }, - ">" + "" ], "path": "packages/presentation/presentation_containers/interfaces/serialized_state.ts", "deprecated": false, @@ -1914,7 +1906,9 @@ "section": "def-public.OverlayRef", "text": "OverlayRef" }, - ", options?: TracksOverlaysOptions | undefined) => void" + ", options?: ", + "TracksOverlaysOptions", + " | undefined) => void" ], "path": "packages/presentation/presentation_containers/interfaces/tracks_overlays.ts", "deprecated": false, @@ -1949,7 +1943,8 @@ "label": "options", "description": [], "signature": [ - "TracksOverlaysOptions | undefined" + "TracksOverlaysOptions", + " | undefined" ], "path": "packages/presentation/presentation_containers/interfaces/tracks_overlays.ts", "deprecated": false, @@ -1977,73 +1972,6 @@ } ], "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/presentation-containers", - "id": "def-public.TracksQueryPerformance", - "type": "Interface", - "tags": [], - "label": "TracksQueryPerformance", - "description": [], - "path": "packages/presentation/presentation_containers/interfaces/performance_trackers.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-containers", - "id": "def-public.TracksQueryPerformance.firstLoad", - "type": "boolean", - "tags": [], - "label": "firstLoad", - "description": [], - "path": "packages/presentation/presentation_containers/interfaces/performance_trackers.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/presentation-containers", - "id": "def-public.TracksQueryPerformance.creationStartTime", - "type": "number", - "tags": [], - "label": "creationStartTime", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "packages/presentation/presentation_containers/interfaces/performance_trackers.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/presentation-containers", - "id": "def-public.TracksQueryPerformance.creationEndTime", - "type": "number", - "tags": [], - "label": "creationEndTime", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "packages/presentation/presentation_containers/interfaces/performance_trackers.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/presentation-containers", - "id": "def-public.TracksQueryPerformance.lastLoadStartTime", - "type": "number", - "tags": [], - "label": "lastLoadStartTime", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "packages/presentation/presentation_containers/interfaces/performance_trackers.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false } ], "enums": [], diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index 2219051de19e4..6633cdb1e7b30 100644 --- a/api_docs/kbn_presentation_containers.mdx +++ b/api_docs/kbn_presentation_containers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-containers title: "@kbn/presentation-containers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-containers plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 92 | 0 | 80 | 0 | +| 87 | 0 | 75 | 1 | ## Client diff --git a/api_docs/kbn_presentation_publishing.devdocs.json b/api_docs/kbn_presentation_publishing.devdocs.json index ab054f8e4ee19..c706f1179f602 100644 --- a/api_docs/kbn_presentation_publishing.devdocs.json +++ b/api_docs/kbn_presentation_publishing.devdocs.json @@ -930,6 +930,46 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-public.apiPublishesReload", + "type": "Function", + "tags": [], + "label": "apiPublishesReload", + "description": [], + "signature": [ + "(unknownApi: unknown) => unknownApi is ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishesReload", + "text": "PublishesReload" + } + ], + "path": "packages/presentation/presentation_publishing/interfaces/fetch/publishes_reload.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-public.apiPublishesReload.$1", + "type": "Unknown", + "tags": [], + "label": "unknownApi", + "description": [], + "signature": [ + "unknown" + ], + "path": "packages/presentation/presentation_publishing/interfaces/fetch/publishes_reload.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/presentation-publishing", "id": "def-public.apiPublishesRendered", @@ -6124,6 +6164,180 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-public.PublishesReload", + "type": "Interface", + "tags": [], + "label": "PublishesReload", + "description": [], + "path": "packages/presentation/presentation_publishing/interfaces/fetch/publishes_reload.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-public.PublishesReload.reload$", + "type": "Object", + "tags": [], + "label": "reload$", + "description": [], + "signature": [ + "{ source: ", + "Observable", + " | undefined; forEach: { (next: (value: void) => void): Promise; (next: (value: void) => void, promiseCtor: PromiseConstructorLike): Promise; }; pipe: { (): ", + "Observable", + "; (op1: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + ", op7: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + ", op7: ", + "OperatorFunction", + ", op8: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + ", op7: ", + "OperatorFunction", + ", op8: ", + "OperatorFunction", + ", op9: ", + "OperatorFunction", + "): ", + "Observable", + "; (op1: ", + "OperatorFunction", + ", op2: ", + "OperatorFunction", + ", op3: ", + "OperatorFunction", + ", op4: ", + "OperatorFunction", + ", op5: ", + "OperatorFunction", + ", op6: ", + "OperatorFunction", + ", op7: ", + "OperatorFunction", + ", op8: ", + "OperatorFunction", + ", op9: ", + "OperatorFunction", + ", ...operations: ", + "OperatorFunction", + "[]): ", + "Observable", + "; }; operator: ", + "Operator", + " | undefined; lift: (operator?: ", + "Operator", + " | undefined) => ", + "Observable", + "; subscribe: { (observerOrNext?: Partial<", + "Observer", + "> | ((value: void) => void) | undefined): ", + "Subscription", + "; (next?: ((value: void) => void) | null | undefined, error?: ((error: any) => void) | null | undefined, complete?: (() => void) | null | undefined): ", + "Subscription", + "; }; toPromise: { (): Promise; (PromiseCtor: PromiseConstructor): Promise; (PromiseCtor: PromiseConstructorLike): Promise; }; }" + ], + "path": "packages/presentation/presentation_publishing/interfaces/fetch/publishes_reload.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/presentation-publishing", "id": "def-public.PublishesRendered", diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index 57156f455fc4a..e022a8355b97a 100644 --- a/api_docs/kbn_presentation_publishing.mdx +++ b/api_docs/kbn_presentation_publishing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-publishing title: "@kbn/presentation-publishing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-publishing plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 229 | 0 | 193 | 6 | +| 233 | 0 | 197 | 6 | ## Client diff --git a/api_docs/kbn_product_doc_artifact_builder.mdx b/api_docs/kbn_product_doc_artifact_builder.mdx index 2a27a3eb5c837..7efe7f87a03e7 100644 --- a/api_docs/kbn_product_doc_artifact_builder.mdx +++ b/api_docs/kbn_product_doc_artifact_builder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-artifact-builder title: "@kbn/product-doc-artifact-builder" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-artifact-builder plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-artifact-builder'] --- import kbnProductDocArtifactBuilderObj from './kbn_product_doc_artifact_builder.devdocs.json'; diff --git a/api_docs/kbn_product_doc_common.devdocs.json b/api_docs/kbn_product_doc_common.devdocs.json index f5c8ea4e0e653..33547649b923a 100644 --- a/api_docs/kbn_product_doc_common.devdocs.json +++ b/api_docs/kbn_product_doc_common.devdocs.json @@ -29,7 +29,7 @@ "signature": [ "({ productName, productVersion, excludeExtension, }: { productName: \"security\" | \"kibana\" | \"observability\" | \"elasticsearch\"; productVersion: string; excludeExtension?: boolean | undefined; }) => string" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -40,7 +40,7 @@ "tags": [], "label": "{\n productName,\n productVersion,\n excludeExtension = false,\n}", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -54,7 +54,7 @@ "signature": [ "\"security\" | \"kibana\" | \"observability\" | \"elasticsearch\"" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact.ts", "deprecated": false, "trackAdoption": false }, @@ -65,7 +65,7 @@ "tags": [], "label": "productVersion", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact.ts", "deprecated": false, "trackAdoption": false }, @@ -79,7 +79,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact.ts", "deprecated": false, "trackAdoption": false } @@ -99,7 +99,7 @@ "signature": [ "(productName: \"security\" | \"kibana\" | \"observability\" | \"elasticsearch\") => string" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/indices.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/indices.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -113,7 +113,7 @@ "signature": [ "\"security\" | \"kibana\" | \"observability\" | \"elasticsearch\"" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/indices.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/indices.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -132,7 +132,7 @@ "signature": [ "(path: string) => boolean" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact_content.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact_content.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -146,7 +146,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact_content.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact_content.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -165,7 +165,7 @@ "signature": [ "(artifactName: string) => { productName: \"security\" | \"kibana\" | \"observability\" | \"elasticsearch\"; productVersion: string; } | undefined" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -179,7 +179,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/artifact.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/artifact.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -197,7 +197,7 @@ "tags": [], "label": "ArtifactManifest", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/manifest.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/manifest.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -208,7 +208,7 @@ "tags": [], "label": "formatVersion", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/manifest.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/manifest.ts", "deprecated": false, "trackAdoption": false }, @@ -222,7 +222,7 @@ "signature": [ "\"security\" | \"kibana\" | \"observability\" | \"elasticsearch\"" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/manifest.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/manifest.ts", "deprecated": false, "trackAdoption": false }, @@ -233,7 +233,7 @@ "tags": [], "label": "productVersion", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/manifest.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/manifest.ts", "deprecated": false, "trackAdoption": false } @@ -247,7 +247,7 @@ "tags": [], "label": "ProductDocumentationAttributes", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -258,7 +258,7 @@ "tags": [], "label": "content_title", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -272,7 +272,7 @@ "signature": [ "SemanticTextField" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -286,7 +286,7 @@ "signature": [ "\"security\" | \"kibana\" | \"observability\" | \"elasticsearch\"" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -297,7 +297,7 @@ "tags": [], "label": "root_type", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -308,7 +308,7 @@ "tags": [], "label": "slug", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -319,7 +319,7 @@ "tags": [], "label": "url", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -330,7 +330,7 @@ "tags": [], "label": "version", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -341,7 +341,7 @@ "tags": [], "label": "ai_subtitle", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -355,7 +355,7 @@ "signature": [ "SemanticTextField" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -369,7 +369,7 @@ "signature": [ "SemanticTextArrayField" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false }, @@ -383,7 +383,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/documents.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/documents.ts", "deprecated": false, "trackAdoption": false } @@ -399,7 +399,7 @@ "tags": [], "label": "DocumentationProduct", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/product.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/product.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -413,7 +413,7 @@ "tags": [], "label": "productDocIndexPattern", "description": [], - "path": "x-pack/packages/ai-infra/product-doc-common/src/indices.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/indices.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -428,7 +428,7 @@ "signature": [ "\".kibana_ai_product_doc\"" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/indices.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/indices.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -443,7 +443,7 @@ "signature": [ "\"security\" | \"kibana\" | \"observability\" | \"elasticsearch\"" ], - "path": "x-pack/packages/ai-infra/product-doc-common/src/product.ts", + "path": "x-pack/platform/packages/shared/ai-infra/product-doc-common/src/product.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_product_doc_common.mdx b/api_docs/kbn_product_doc_common.mdx index fa1ddf25aeb27..ca93bc3c78ef4 100644 --- a/api_docs/kbn_product_doc_common.mdx +++ b/api_docs/kbn_product_doc_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-common title: "@kbn/product-doc-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-common'] --- import kbnProductDocCommonObj from './kbn_product_doc_common.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 16f9e36a856f7..bc8cc1efe2cd0 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 6fd0b3d1727b4..fc83c3114e4ec 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index acde3d9b4c4db..feccbf164e8e0 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_hooks.mdx b/api_docs/kbn_react_hooks.mdx index 7a13604cc9a0a..9fae32a53a879 100644 --- a/api_docs/kbn_react_hooks.mdx +++ b/api_docs/kbn_react_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-hooks title: "@kbn/react-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-hooks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-hooks'] --- import kbnReactHooksObj from './kbn_react_hooks.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.devdocs.json b/api_docs/kbn_react_kibana_context_common.devdocs.json index 0f29deb8b761e..3795856330269 100644 --- a/api_docs/kbn_react_kibana_context_common.devdocs.json +++ b/api_docs/kbn_react_kibana_context_common.devdocs.json @@ -225,6 +225,30 @@ "path": "packages/react/kibana_context/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-common", + "id": "def-common.ThemeServiceStart.getTheme", + "type": "Function", + "tags": [], + "label": "getTheme", + "description": [], + "signature": [ + "(() => ", + { + "pluginId": "@kbn/react-kibana-context-common", + "scope": "common", + "docId": "kibKbnReactKibanaContextCommonPluginApi", + "section": "def-common.KibanaTheme", + "text": "KibanaTheme" + }, + ") | undefined" + ], + "path": "packages/react/kibana_context/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index e4478b802c0c4..ca635ae99feac 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 15 | 0 | 8 | 0 | +| 16 | 0 | 9 | 0 | ## Common diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index de6526007e27a..055afed959582 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.devdocs.json b/api_docs/kbn_react_kibana_context_root.devdocs.json index 074a223560fa5..3aef4a4374cae 100644 --- a/api_docs/kbn_react_kibana_context_root.devdocs.json +++ b/api_docs/kbn_react_kibana_context_root.devdocs.json @@ -29,7 +29,7 @@ "\nPrepares and returns a configured `EuiProvider` for use in Kibana roots. In most cases, this utility context\nshould not be used. Instead, refer to `KibanaRootContextProvider` to set up the root of Kibana." ], "signature": [ - "({ theme: { theme$ }, globalStyles: globalStylesProp, colorMode: colorModeProp, modify, children, }: React.PropsWithChildren<", + "({ theme, globalStyles: globalStylesProp, colorMode: colorModeProp, modify, children, }: React.PropsWithChildren<", { "pluginId": "@kbn/react-kibana-context-root", "scope": "common", @@ -48,7 +48,7 @@ "id": "def-common.KibanaEuiProvider.$1", "type": "CompoundType", "tags": [], - "label": "{\n theme: { theme$ },\n globalStyles: globalStylesProp,\n colorMode: colorModeProp,\n modify,\n children,\n}", + "label": "{\n theme,\n globalStyles: globalStylesProp,\n colorMode: colorModeProp,\n modify,\n children,\n}", "description": [], "signature": [ "React.PropsWithChildren<", diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index 5ae581983f572..a21d1b96c0328 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index 040b05718f8c6..3bf4c7ebf621c 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index a10eb5ae7ca0d..66bbf64395433 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 1b2af6522c1cd..e439d6480db16 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_react_mute_legacy_root_warning.mdx b/api_docs/kbn_react_mute_legacy_root_warning.mdx index a0b6111a5b56a..4fbd1dce15c6a 100644 --- a/api_docs/kbn_react_mute_legacy_root_warning.mdx +++ b/api_docs/kbn_react_mute_legacy_root_warning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-mute-legacy-root-warning title: "@kbn/react-mute-legacy-root-warning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-mute-legacy-root-warning plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-mute-legacy-root-warning'] --- import kbnReactMuteLegacyRootWarningObj from './kbn_react_mute_legacy_root_warning.devdocs.json'; diff --git a/api_docs/kbn_recently_accessed.mdx b/api_docs/kbn_recently_accessed.mdx index 1c7322e524649..ee0a31d2713a4 100644 --- a/api_docs/kbn_recently_accessed.mdx +++ b/api_docs/kbn_recently_accessed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-recently-accessed title: "@kbn/recently-accessed" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/recently-accessed plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/recently-accessed'] --- import kbnRecentlyAccessedObj from './kbn_recently_accessed.devdocs.json'; diff --git a/api_docs/kbn_relocate.devdocs.json b/api_docs/kbn_relocate.devdocs.json new file mode 100644 index 0000000000000..ba9cd4ccc1f19 --- /dev/null +++ b/api_docs/kbn_relocate.devdocs.json @@ -0,0 +1,47 @@ +{ + "id": "@kbn/relocate", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/relocate", + "id": "def-server.runKbnRelocateCli", + "type": "Function", + "tags": [], + "label": "runKbnRelocateCli", + "description": [ + "\nA CLI to move Kibana modules into the right folder structure,\naccording to the Sustainable Kibana Architecture" + ], + "signature": [ + "() => void" + ], + "path": "packages/kbn-relocate/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_relocate.mdx b/api_docs/kbn_relocate.mdx new file mode 100644 index 0000000000000..8abda25bbed2b --- /dev/null +++ b/api_docs/kbn_relocate.mdx @@ -0,0 +1,30 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnRelocatePluginApi +slug: /kibana-dev-docs/api/kbn-relocate +title: "@kbn/relocate" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/relocate plugin +date: 2024-12-14 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/relocate'] +--- +import kbnRelocateObj from './kbn_relocate.devdocs.json'; + + + +Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 1 | 0 | 0 | 0 | + +## Server + +### Functions + + diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index cf7709abb7f35..cb40dedf0540d 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index 354c33d80654e..6864fb655ab6c 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 54526e5317998..e573d3f794687 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index 77193b39aaf89..de2730b59ab49 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index fc271f63ea3d2..43728e1526ded 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_csv_share_panel.mdx b/api_docs/kbn_reporting_csv_share_panel.mdx index ef317de7ff4bb..ed3c6358cefb7 100644 --- a/api_docs/kbn_reporting_csv_share_panel.mdx +++ b/api_docs/kbn_reporting_csv_share_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-csv-share-panel title: "@kbn/reporting-csv-share-panel" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-csv-share-panel plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-csv-share-panel'] --- import kbnReportingCsvSharePanelObj from './kbn_reporting_csv_share_panel.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index b1f0cba5d2309..8da12b8977242 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index 6797e44a17699..80544b5f78a3e 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index ba65a70ac6bb1..4bbc349604e32 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index a73dd9fedb5e4..0fb1abefc7785 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index e575f36bcf820..728dfeb26cb18 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 2387ddfb2b759..54f1808170114 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 6ad57318e6a09..1b4db8ce5bdbd 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index f2d6aca304578..a7edb08e1847e 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 54280e3d10199..416cf1acf379a 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index 697be56d70d0b..a0682c8e43923 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_response_ops_feature_flag_service.mdx b/api_docs/kbn_response_ops_feature_flag_service.mdx index 57f0048adcf1c..2f588759173c3 100644 --- a/api_docs/kbn_response_ops_feature_flag_service.mdx +++ b/api_docs/kbn_response_ops_feature_flag_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-feature-flag-service title: "@kbn/response-ops-feature-flag-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-feature-flag-service plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-feature-flag-service'] --- import kbnResponseOpsFeatureFlagServiceObj from './kbn_response_ops_feature_flag_service.devdocs.json'; diff --git a/api_docs/kbn_response_ops_rule_form.devdocs.json b/api_docs/kbn_response_ops_rule_form.devdocs.json index b163e043f7950..1df902627c59b 100644 --- a/api_docs/kbn_response_ops_rule_form.devdocs.json +++ b/api_docs/kbn_response_ops_rule_form.devdocs.json @@ -1348,6 +1348,26 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "@kbn/response-ops-rule-form", + "id": "def-public.RuleFormPlugins.userProfile", + "type": "Object", + "tags": [], + "label": "userProfile", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-user-profile-browser", + "scope": "public", + "docId": "kibKbnCoreUserProfileBrowserPluginApi", + "section": "def-public.UserProfileService", + "text": "UserProfileService" + } + ], + "path": "packages/response-ops/rule_form/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/response-ops-rule-form", "id": "def-public.RuleFormPlugins.application", diff --git a/api_docs/kbn_response_ops_rule_form.mdx b/api_docs/kbn_response_ops_rule_form.mdx index d11ded24d77dc..bcefe993b2ae0 100644 --- a/api_docs/kbn_response_ops_rule_form.mdx +++ b/api_docs/kbn_response_ops_rule_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-form title: "@kbn/response-ops-rule-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-form plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-form'] --- import kbnResponseOpsRuleFormObj from './kbn_response_ops_rule_form.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 157 | 0 | 156 | 7 | +| 158 | 0 | 157 | 7 | ## Client diff --git a/api_docs/kbn_response_ops_rule_params.mdx b/api_docs/kbn_response_ops_rule_params.mdx index d7cddafb1e606..453b84b011e43 100644 --- a/api_docs/kbn_response_ops_rule_params.mdx +++ b/api_docs/kbn_response_ops_rule_params.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-params title: "@kbn/response-ops-rule-params" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-params plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-params'] --- import kbnResponseOpsRuleParamsObj from './kbn_response_ops_rule_params.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index f2f4a8baf58be..ba7216688ee90 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rollup.devdocs.json b/api_docs/kbn_rollup.devdocs.json index 508f97802119c..e873d2f168bae 100644 --- a/api_docs/kbn_rollup.devdocs.json +++ b/api_docs/kbn_rollup.devdocs.json @@ -29,7 +29,7 @@ "signature": [ "({ children }: RollupDeprecationTooltipProps) => React.JSX.Element" ], - "path": "x-pack/packages/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx", + "path": "x-pack/platform/packages/private/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -43,7 +43,7 @@ "signature": [ "RollupDeprecationTooltipProps" ], - "path": "x-pack/packages/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx", + "path": "x-pack/platform/packages/private/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -63,7 +63,7 @@ "tags": [], "label": "ROLLUP_DEPRECATION_BADGE_LABEL", "description": [], - "path": "x-pack/packages/rollup/src/constants/index.ts", + "path": "x-pack/platform/packages/private/rollup/src/constants/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_rollup.mdx b/api_docs/kbn_rollup.mdx index db40f919b9dca..cc714c6a46fed 100644 --- a/api_docs/kbn_rollup.mdx +++ b/api_docs/kbn_rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rollup title: "@kbn/rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rollup plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rollup'] --- import kbnRollupObj from './kbn_rollup.devdocs.json'; diff --git a/api_docs/kbn_router_to_openapispec.mdx b/api_docs/kbn_router_to_openapispec.mdx index 354dedf7e6620..6bc7051032f36 100644 --- a/api_docs/kbn_router_to_openapispec.mdx +++ b/api_docs/kbn_router_to_openapispec.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-to-openapispec title: "@kbn/router-to-openapispec" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-to-openapispec plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-to-openapispec'] --- import kbnRouterToOpenapispecObj from './kbn_router_to_openapispec.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 499bad3166c47..05c518458e199 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index ef55ace7e4222..0cbbce166c64a 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 30bd03d23c3cb..15c957649834c 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index dc4cfeb2093f8..f1c9da8c5c0bc 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_saved_search_component.mdx b/api_docs/kbn_saved_search_component.mdx index 83958a1b8f7a3..7b772b545de3d 100644 --- a/api_docs/kbn_saved_search_component.mdx +++ b/api_docs/kbn_saved_search_component.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-search-component title: "@kbn/saved-search-component" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-search-component plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-search-component'] --- import kbnSavedSearchComponentObj from './kbn_saved_search_component.devdocs.json'; diff --git a/api_docs/kbn_scout.devdocs.json b/api_docs/kbn_scout.devdocs.json index 3eaffaf3d88cd..2b4edec870188 100644 --- a/api_docs/kbn_scout.devdocs.json +++ b/api_docs/kbn_scout.devdocs.json @@ -1612,7 +1612,7 @@ "section": "def-common.ScoutTestFixtures", "text": "ScoutTestFixtures" }, - ", ", + " & { validateTags: void; }, ", "PlaywrightWorkerArgs", " & ", "PlaywrightWorkerOptions", @@ -1650,7 +1650,9 @@ "type": "Function", "tags": [], "label": "loadIfNeeded", - "description": [], + "description": [ + "\nLoads an Elasticsearch archive if the specified data index is not present." + ], "signature": [ "(name: string, performance?: ", { @@ -1674,7 +1676,9 @@ "type": "string", "tags": [], "label": "name", - "description": [], + "description": [ + "The name of the archive to load." + ], "signature": [ "string" ], @@ -1689,7 +1693,9 @@ "type": "Object", "tags": [], "label": "performance", - "description": [], + "description": [ + "An object of type LoadActionPerfOptions to measure and\nreport performance metrics during the load operation." + ], "signature": [ { "pluginId": "@kbn/es-archiver", @@ -1706,7 +1712,9 @@ "isRequired": false } ], - "returnComment": [] + "returnComment": [ + "A Promise that resolves to an object containing index statistics." + ] } ], "initialIsOpen": false @@ -1798,7 +1806,7 @@ }, " extends Pick<", "PlaywrightTestConfig", - "<{}, {}>, \"testDir\" | \"workers\">" + "<{}, {}>, \"workers\" | \"testDir\">" ], "path": "packages/kbn-scout/src/playwright/types/index.ts", "deprecated": false, @@ -1960,7 +1968,9 @@ "type": "Interface", "tags": [], "label": "ScoutWorkerFixtures", - "description": [], + "description": [ + "\nThe `ScoutWorkerFixtures` type defines the set of fixtures that are available" + ], "path": "packages/kbn-scout/src/playwright/fixtures/types/worker_scope.ts", "deprecated": false, "trackAdoption": false, @@ -2144,6 +2154,63 @@ "initialIsOpen": false } ], - "objects": [] + "objects": [ + { + "parentPluginId": "@kbn/scout", + "id": "def-common.tags", + "type": "Object", + "tags": [], + "label": "tags", + "description": [], + "path": "packages/kbn-scout/src/playwright/tags.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/scout", + "id": "def-common.tags.ESS_ONLY", + "type": "Array", + "tags": [], + "label": "ESS_ONLY", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-scout/src/playwright/tags.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/scout", + "id": "def-common.tags.SERVERLESS_ONLY", + "type": "Array", + "tags": [], + "label": "SERVERLESS_ONLY", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-scout/src/playwright/tags.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/scout", + "id": "def-common.tags.DEPLOYMENT_AGNOSTIC", + "type": "Array", + "tags": [], + "label": "DEPLOYMENT_AGNOSTIC", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-scout/src/playwright/tags.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ] } } \ No newline at end of file diff --git a/api_docs/kbn_scout.mdx b/api_docs/kbn_scout.mdx index e5b3bff9f472a..ff6f6b1a6269e 100644 --- a/api_docs/kbn_scout.mdx +++ b/api_docs/kbn_scout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout title: "@kbn/scout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout'] --- import kbnScoutObj from './kbn_scout.devdocs.json'; @@ -21,10 +21,13 @@ Contact [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) for | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 117 | 0 | 86 | 8 | +| 121 | 0 | 86 | 8 | ## Common +### Objects + + ### Functions diff --git a/api_docs/kbn_scout_info.mdx b/api_docs/kbn_scout_info.mdx index e06c3d3af8170..6a2ed5abc3815 100644 --- a/api_docs/kbn_scout_info.mdx +++ b/api_docs/kbn_scout_info.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-info title: "@kbn/scout-info" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-info plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-info'] --- import kbnScoutInfoObj from './kbn_scout_info.devdocs.json'; diff --git a/api_docs/kbn_scout_reporting.mdx b/api_docs/kbn_scout_reporting.mdx index 83f93554a4c59..f22c424846d33 100644 --- a/api_docs/kbn_scout_reporting.mdx +++ b/api_docs/kbn_scout_reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-reporting title: "@kbn/scout-reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-reporting plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-reporting'] --- import kbnScoutReportingObj from './kbn_scout_reporting.devdocs.json'; diff --git a/api_docs/kbn_screenshotting_server.mdx b/api_docs/kbn_screenshotting_server.mdx index 7ada739fa09a9..2f9f46f5b98f0 100644 --- a/api_docs/kbn_screenshotting_server.mdx +++ b/api_docs/kbn_screenshotting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-screenshotting-server title: "@kbn/screenshotting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/screenshotting-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/screenshotting-server'] --- import kbnScreenshottingServerObj from './kbn_screenshotting_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_components.mdx b/api_docs/kbn_search_api_keys_components.mdx index ce83b7341015f..142f68044208c 100644 --- a/api_docs/kbn_search_api_keys_components.mdx +++ b/api_docs/kbn_search_api_keys_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-components title: "@kbn/search-api-keys-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-components plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-components'] --- import kbnSearchApiKeysComponentsObj from './kbn_search_api_keys_components.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_server.mdx b/api_docs/kbn_search_api_keys_server.mdx index 6af6e2a754994..5478cc57e9f97 100644 --- a/api_docs/kbn_search_api_keys_server.mdx +++ b/api_docs/kbn_search_api_keys_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-server title: "@kbn/search-api-keys-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-server'] --- import kbnSearchApiKeysServerObj from './kbn_search_api_keys_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 0eaeae8c49c00..50d909b4d7482 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 31c2ae5d16f11..4768a5ba870fe 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index d807d557e6404..39f4092a628a4 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index c87dba5e4faad..5003343df9cdf 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 0b28331cd33a5..b3bd4220b2d86 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_search_shared_ui.mdx b/api_docs/kbn_search_shared_ui.mdx index 9012e3a9da187..26b20d4e366d9 100644 --- a/api_docs/kbn_search_shared_ui.mdx +++ b/api_docs/kbn_search_shared_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-shared-ui title: "@kbn/search-shared-ui" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-shared-ui plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-shared-ui'] --- import kbnSearchSharedUiObj from './kbn_search_shared_ui.devdocs.json'; diff --git a/api_docs/kbn_search_types.mdx b/api_docs/kbn_search_types.mdx index 4c448ff834846..2f7c430fc8dbf 100644 --- a/api_docs/kbn_search_types.mdx +++ b/api_docs/kbn_search_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-types title: "@kbn/search-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-types'] --- import kbnSearchTypesObj from './kbn_search_types.devdocs.json'; diff --git a/api_docs/kbn_security_api_key_management.mdx b/api_docs/kbn_security_api_key_management.mdx index dd6c4e355b536..45527e0ef097e 100644 --- a/api_docs/kbn_security_api_key_management.mdx +++ b/api_docs/kbn_security_api_key_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-api-key-management title: "@kbn/security-api-key-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-api-key-management plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-api-key-management'] --- import kbnSecurityApiKeyManagementObj from './kbn_security_api_key_management.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core.mdx b/api_docs/kbn_security_authorization_core.mdx index 08692cd14f622..734cab0194a78 100644 --- a/api_docs/kbn_security_authorization_core.mdx +++ b/api_docs/kbn_security_authorization_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core title: "@kbn/security-authorization-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core'] --- import kbnSecurityAuthorizationCoreObj from './kbn_security_authorization_core.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core_common.mdx b/api_docs/kbn_security_authorization_core_common.mdx index 8fd2cf460021e..382a8ad2f6131 100644 --- a/api_docs/kbn_security_authorization_core_common.mdx +++ b/api_docs/kbn_security_authorization_core_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core-common title: "@kbn/security-authorization-core-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core-common'] --- import kbnSecurityAuthorizationCoreCommonObj from './kbn_security_authorization_core_common.devdocs.json'; diff --git a/api_docs/kbn_security_form_components.mdx b/api_docs/kbn_security_form_components.mdx index 4defccc0e674a..abdd264ae9636 100644 --- a/api_docs/kbn_security_form_components.mdx +++ b/api_docs/kbn_security_form_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-form-components title: "@kbn/security-form-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-form-components plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-form-components'] --- import kbnSecurityFormComponentsObj from './kbn_security_form_components.devdocs.json'; diff --git a/api_docs/kbn_security_hardening.mdx b/api_docs/kbn_security_hardening.mdx index 0c4468431ffe9..59979a703c5a2 100644 --- a/api_docs/kbn_security_hardening.mdx +++ b/api_docs/kbn_security_hardening.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-hardening title: "@kbn/security-hardening" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-hardening plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-hardening'] --- import kbnSecurityHardeningObj from './kbn_security_hardening.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.devdocs.json b/api_docs/kbn_security_plugin_types_common.devdocs.json index 66423093f7f10..886b1bffd0d93 100644 --- a/api_docs/kbn_security_plugin_types_common.devdocs.json +++ b/api_docs/kbn_security_plugin_types_common.devdocs.json @@ -270,6 +270,22 @@ "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/security-plugin-types-common", + "id": "def-common.AuthenticatedUser.operator", + "type": "CompoundType", + "tags": [], + "label": "operator", + "description": [ + "\nIndicates whether user is an operator." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index df118cc8509c0..36e1f3ac78c67 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana- | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 125 | 0 | 66 | 0 | +| 126 | 0 | 66 | 0 | ## Common diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index f476cf48ccdd7..dc847a4b4a85a 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.devdocs.json b/api_docs/kbn_security_plugin_types_server.devdocs.json index b8a5df3a3b0c9..32feff21a5cb9 100644 --- a/api_docs/kbn_security_plugin_types_server.devdocs.json +++ b/api_docs/kbn_security_plugin_types_server.devdocs.json @@ -4851,7 +4851,7 @@ }, { "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/service/index.ts" + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/index.ts" }, { "plugin": "fleet", @@ -4874,24 +4874,20 @@ "path": "x-pack/plugins/cloud_security_posture/server/routes/setup_routes.ts" }, { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" - }, - { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/server/routes/api_key_routes.ts" }, { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" }, { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/enable.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" }, { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/disable.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" }, { "plugin": "apm", @@ -4906,68 +4902,72 @@ "path": "x-pack/plugins/observability_solution/apm/server/routes/fleet/is_superuser.ts" }, { - "plugin": "serverlessSearch", - "path": "x-pack/plugins/serverless_search/server/routes/api_key_routes.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/enable.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/disable.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/reauthorize_transforms/route_handler_factory.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/reauthorize_transforms/route_handler_factory.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts" } ] }, @@ -6072,6 +6072,23 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/security-plugin-types-server", + "id": "def-server.EsSecurityConfig", + "type": "Type", + "tags": [], + "label": "EsSecurityConfig", + "description": [], + "signature": [ + "{ operator_privileges: ", + "XpackUsageBase", + "; }" + ], + "path": "x-pack/packages/security/plugin_types_server/src/authorization/es_security_config.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/security-plugin-types-server", "id": "def-server.GLOBAL_RESOURCE", diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 7976f4a945fb8..ce4c718b426a1 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana- | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 281 | 1 | 160 | 0 | +| 282 | 1 | 161 | 0 | ## Server diff --git a/api_docs/kbn_security_role_management_model.mdx b/api_docs/kbn_security_role_management_model.mdx index 9a4ab0b9242e9..126b11823940b 100644 --- a/api_docs/kbn_security_role_management_model.mdx +++ b/api_docs/kbn_security_role_management_model.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-role-management-model title: "@kbn/security-role-management-model" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-role-management-model plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-role-management-model'] --- import kbnSecurityRoleManagementModelObj from './kbn_security_role_management_model.devdocs.json'; diff --git a/api_docs/kbn_security_solution_distribution_bar.devdocs.json b/api_docs/kbn_security_solution_distribution_bar.devdocs.json index 51fdf64ef88c7..ac66b60a1f718 100644 --- a/api_docs/kbn_security_solution_distribution_bar.devdocs.json +++ b/api_docs/kbn_security_solution_distribution_bar.devdocs.json @@ -23,7 +23,7 @@ }, ">" ], - "path": "x-pack/packages/security-solution/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -70,7 +70,7 @@ "description": [ "DistributionBar component props" ], - "path": "x-pack/packages/security-solution/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -86,7 +86,7 @@ "signature": [ "{ key: string; count: number; color: string; label?: React.ReactNode; isCurrentFilter?: boolean | undefined; filter?: (() => void) | undefined; reset?: ((event: React.MouseEvent) => void) | undefined; }[]" ], - "path": "x-pack/packages/security-solution/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false }, @@ -102,7 +102,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false }, @@ -118,7 +118,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_security_solution_distribution_bar.mdx b/api_docs/kbn_security_solution_distribution_bar.mdx index 697f727b79d61..8e6b87a24bc78 100644 --- a/api_docs/kbn_security_solution_distribution_bar.mdx +++ b/api_docs/kbn_security_solution_distribution_bar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-distribution-bar title: "@kbn/security-solution-distribution-bar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-distribution-bar plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-distribution-bar'] --- import kbnSecuritySolutionDistributionBarObj from './kbn_security_solution_distribution_bar.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.devdocs.json b/api_docs/kbn_security_solution_features.devdocs.json index f77d52c6d9ffa..4e2fd77a59f29 100644 --- a/api_docs/kbn_security_solution_features.devdocs.json +++ b/api_docs/kbn_security_solution_features.devdocs.json @@ -37,7 +37,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -87,7 +87,7 @@ "ReservedKibanaPrivilege", "[]; } | undefined; }" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -101,7 +101,7 @@ "signature": [ "T[]" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -123,7 +123,7 @@ }, ">" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -151,7 +151,7 @@ }, ">" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -202,7 +202,7 @@ "ReservedKibanaPrivilege", "[]; } | undefined; }" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -224,7 +224,7 @@ }, "[]" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -245,7 +245,7 @@ " | ", "ProductFeatureAttackDiscoveryKey" ], - "path": "x-pack/packages/security-solution/features/src/product_features_keys.ts", + "path": "x-pack/solutions/security/packages/features/src/product_features_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -291,7 +291,7 @@ }, ">[] | undefined; }" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -318,7 +318,7 @@ "AssistantSubFeatureId", ">>" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -343,7 +343,7 @@ }, ">" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -370,7 +370,7 @@ "CasesSubFeatureId", ">>" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -401,7 +401,7 @@ }, ">" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -428,7 +428,7 @@ "SecuritySubFeatureId", ">>" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -547,7 +547,7 @@ }, "<{ all: readonly string[]; read: readonly string[]; }> | undefined; }" ], - "path": "x-pack/packages/security-solution/features/src/types.ts", + "path": "x-pack/solutions/security/packages/features/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index ba2edfd501e56..f4536322347bb 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.devdocs.json b/api_docs/kbn_security_solution_navigation.devdocs.json index cfb6285eaefe7..4e22926d5b05a 100644 --- a/api_docs/kbn_security_solution_navigation.devdocs.json +++ b/api_docs/kbn_security_solution_navigation.devdocs.json @@ -31,7 +31,7 @@ "signature": [ "(id: string) => { appId: string; deepLinkId?: string | undefined; path?: string | undefined; }" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -45,7 +45,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -80,7 +80,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -101,7 +101,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -136,7 +136,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -157,7 +157,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -192,7 +192,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -213,7 +213,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -240,7 +240,7 @@ }, "; }>) => React.JSX.Element" ], - "path": "x-pack/packages/security-solution/navigation/src/context.tsx", + "path": "x-pack/solutions/security/packages/navigation/src/context.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -262,7 +262,7 @@ }, "; }>" ], - "path": "x-pack/packages/security-solution/navigation/src/context.tsx", + "path": "x-pack/solutions/security/packages/navigation/src/context.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -291,7 +291,7 @@ }, "; }" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -318,7 +318,7 @@ }, "; }" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -353,7 +353,7 @@ }, "; }" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -387,7 +387,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -408,7 +408,7 @@ }, ".accordion" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -419,7 +419,7 @@ "tags": [], "label": "label", "description": [], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -440,7 +440,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -464,7 +464,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -478,7 +478,7 @@ "signature": [ "readonly T[] | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -492,7 +492,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -513,7 +513,7 @@ }, " | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -528,7 +528,7 @@ "IconType", " | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -549,7 +549,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -573,7 +573,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -595,7 +595,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -609,7 +609,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -623,7 +623,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -637,7 +637,7 @@ "signature": [ "T" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -652,7 +652,7 @@ "IconType", " | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -666,7 +666,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -687,7 +687,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -698,7 +698,7 @@ "tags": [], "label": "title", "description": [], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -713,7 +713,7 @@ "IconType", " | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -727,7 +727,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -741,7 +741,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -755,7 +755,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -769,7 +769,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -783,7 +783,7 @@ "signature": [ "{ text: string; } | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -815,7 +815,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -836,7 +836,7 @@ }, ".separator" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -850,7 +850,7 @@ "signature": [ "readonly T[]" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -882,7 +882,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -903,7 +903,7 @@ }, ".title | undefined" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -917,7 +917,7 @@ "signature": [ "readonly T[]" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -928,7 +928,7 @@ "tags": [], "label": "label", "description": [], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -946,7 +946,7 @@ "description": [ "\nExternal (non-Security) page names that need to be linked in the Security navigation.\nFormat: `:/`.\n\n`pluginId`: is the id of the plugin that owns the deep link\n\n`deepLinkId`: is the id of the deep link inside the plugin.\nKeep empty for the root page of the plugin, e.g. `osquery:`\n\n`path`: is the path to append to the plugin and deep link.\nThis is optional and only needed if the path is not registered in the plugin's `deepLinks`. e.g. `integrations:/browse/security`\nThe path should not be used for links displayed in the main left navigation, since highlighting won't work." ], - "path": "x-pack/packages/security-solution/navigation/src/constants.ts", + "path": "x-pack/solutions/security/packages/navigation/src/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -958,7 +958,7 @@ "tags": [], "label": "LinkCategoryType", "description": [], - "path": "x-pack/packages/security-solution/navigation/src/constants.ts", + "path": "x-pack/solutions/security/packages/navigation/src/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -987,7 +987,7 @@ "signature": [ "(param: { appId?: string | undefined; deepLinkId?: string | undefined; path?: string | undefined; absolute?: boolean | undefined; }) => string" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1002,7 +1002,7 @@ "signature": [ "{ appId?: string | undefined; deepLinkId?: string | undefined; path?: string | undefined; absolute?: boolean | undefined; }" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false } @@ -1027,7 +1027,7 @@ }, "[]" ], - "path": "x-pack/packages/security-solution/navigation/src/types.ts", + "path": "x-pack/solutions/security/packages/navigation/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1050,7 +1050,7 @@ }, ") => void" ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1072,7 +1072,7 @@ "text": "NavigateToAppOptions" } ], - "path": "x-pack/packages/security-solution/navigation/src/navigation.ts", + "path": "x-pack/solutions/security/packages/navigation/src/navigation.ts", "deprecated": false, "trackAdoption": false } @@ -1089,7 +1089,7 @@ "signature": [ "\"securitySolutionUI\"" ], - "path": "x-pack/packages/security-solution/navigation/src/constants.ts", + "path": "x-pack/solutions/security/packages/navigation/src/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 09fe67fe7946a..8eb69acb36c12 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.devdocs.json b/api_docs/kbn_security_solution_side_nav.devdocs.json index f50c9850b3ac2..a82741016145e 100644 --- a/api_docs/kbn_security_solution_side_nav.devdocs.json +++ b/api_docs/kbn_security_solution_side_nav.devdocs.json @@ -37,7 +37,7 @@ }, ") => React.JSX.Element" ], - "path": "x-pack/packages/security-solution/side_nav/src/index.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -57,7 +57,7 @@ "text": "SolutionSideNavProps" } ], - "path": "x-pack/packages/security-solution/side_nav/src/index.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -85,7 +85,7 @@ }, "" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -99,7 +99,7 @@ "signature": [ "T" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -110,7 +110,7 @@ "tags": [], "label": "label", "description": [], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -121,7 +121,7 @@ "tags": [], "label": "href", "description": [], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -135,7 +135,7 @@ "signature": [ "React.MouseEventHandler | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -149,7 +149,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -163,7 +163,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -184,7 +184,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -206,7 +206,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -221,7 +221,7 @@ "IconType", " | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -235,7 +235,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -256,7 +256,7 @@ }, " | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -270,7 +270,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -284,7 +284,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -298,7 +298,7 @@ "signature": [ "{ text: string; } | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -312,7 +312,7 @@ "tags": [], "label": "SolutionSideNavProps", "description": [], - "path": "x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -335,7 +335,7 @@ }, "[]" ], - "path": "x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx", "deprecated": false, "trackAdoption": false }, @@ -348,7 +348,7 @@ "description": [ "The id of the selected item to highlight. It only affects the top level items rendered in the main panel" ], - "path": "x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx", "deprecated": false, "trackAdoption": false }, @@ -371,7 +371,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx", "deprecated": false, "trackAdoption": false }, @@ -387,7 +387,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx", "deprecated": false, "trackAdoption": false }, @@ -403,7 +403,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx", "deprecated": false, "trackAdoption": false }, @@ -426,7 +426,7 @@ }, " | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx", + "path": "x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx", "deprecated": false, "trackAdoption": false } @@ -442,7 +442,7 @@ "tags": [], "label": "SolutionSideNavItemPosition", "description": [], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -459,7 +459,7 @@ "signature": [ "(type: string, event: string | string[], count?: number | undefined) => void" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -471,7 +471,7 @@ "tags": [], "label": "type", "description": [], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -485,7 +485,7 @@ "signature": [ "string | string[]" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -499,7 +499,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/security-solution/side_nav/src/types.ts", + "path": "x-pack/solutions/security/packages/side_nav/src/types.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index e06a281b52d67..53af89c7774d4 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.devdocs.json b/api_docs/kbn_security_solution_storybook_config.devdocs.json index 8d585c20a8a0f..ac9afa5705207 100644 --- a/api_docs/kbn_security_solution_storybook_config.devdocs.json +++ b/api_docs/kbn_security_solution_storybook_config.devdocs.json @@ -34,7 +34,7 @@ "signature": [ "\"Security Solution Storybook\"" ], - "path": "x-pack/packages/security-solution/storybook/config/constants.ts", + "path": "x-pack/solutions/security/packages/storybook/config/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -51,7 +51,7 @@ "signature": [ "\"https://github.com/elastic/kibana/tree/main/packages/security_solution\"" ], - "path": "x-pack/packages/security-solution/storybook/config/constants.ts", + "path": "x-pack/solutions/security/packages/storybook/config/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index 440095f2cc18c..e697565790b05 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_security_ui_components.mdx b/api_docs/kbn_security_ui_components.mdx index 369deb84d5fdd..923d0c140defa 100644 --- a/api_docs/kbn_security_ui_components.mdx +++ b/api_docs/kbn_security_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-ui-components title: "@kbn/security-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-ui-components plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-ui-components'] --- import kbnSecurityUiComponentsObj from './kbn_security_ui_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index e06d9857ba312..289e61ae3aa94 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.devdocs.json b/api_docs/kbn_securitysolution_data_table.devdocs.json index 094b367093aa8..2116e15e76b4f 100644 --- a/api_docs/kbn_securitysolution_data_table.devdocs.json +++ b/api_docs/kbn_securitysolution_data_table.devdocs.json @@ -47,7 +47,7 @@ "EuiDataGridSetCellProps", ") => void) => void" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -67,7 +67,7 @@ "text": "EcsSecurityExtension" } ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -88,7 +88,7 @@ "text": "EuiTheme" } ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -105,7 +105,7 @@ "EuiDataGridSetCellProps", ") => void" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -126,7 +126,7 @@ "DataTableProps", ">" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -175,7 +175,7 @@ "text": "TableState" } ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/reducer.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/reducer.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -235,7 +235,7 @@ "ColumnHeaderOptions", "[]" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -250,7 +250,7 @@ "ColumnHeaderOptions", "[]" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -271,7 +271,7 @@ "text": "BrowserFields" } ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -286,7 +286,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -323,7 +323,7 @@ }, "[]>" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -344,7 +344,7 @@ }, "[]" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -359,7 +359,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -374,7 +374,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -389,7 +389,7 @@ "signature": [ "boolean" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -410,7 +410,7 @@ "signature": [ "(rowIndex: number, itemsPerPage: number) => number" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/pagination.ts", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/pagination.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -424,7 +424,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/pagination.ts", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/pagination.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -439,7 +439,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/pagination.ts", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/pagination.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -492,7 +492,7 @@ }, ", { clearCache: () => void; }> & { clearCache: () => void; }" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/selectors.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/selectors.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -517,7 +517,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -537,7 +537,7 @@ "text": "EcsSecurityExtension" } ], - "path": "x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx", + "path": "x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -566,7 +566,7 @@ " extends ", "DataTableModelSettings" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -612,7 +612,7 @@ }, " | undefined; type?: string | undefined; })[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -628,7 +628,7 @@ "signature": [ "string | null" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -644,7 +644,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -665,7 +665,7 @@ }, "[] | undefined" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -681,7 +681,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -694,7 +694,7 @@ "description": [ "Uniquely identifies the data table" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -708,7 +708,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -719,7 +719,7 @@ "tags": [], "label": "isLoading", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -732,7 +732,7 @@ "description": [ "If selectAll checkbox in header is checked" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -745,7 +745,7 @@ "description": [ "The number of items to show in a single page of results" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -761,7 +761,7 @@ "signature": [ "number[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -777,7 +777,7 @@ "signature": [ "string[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -801,7 +801,7 @@ }, "[]; }" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -815,7 +815,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -830,7 +830,7 @@ "SessionViewConfig", " | null" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -846,7 +846,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -859,7 +859,7 @@ "description": [ "Total number of fetched events/alerts" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -873,7 +873,7 @@ "signature": [ "\"gridView\" | \"eventRenderedView\"" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false }, @@ -887,7 +887,7 @@ "signature": [ "{ showOnlyThreatIndicatorAlerts: boolean; showBuildingBlockAlerts: boolean; }" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false } @@ -903,7 +903,7 @@ "description": [ "The state of all timelines is stored here" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/types.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -923,7 +923,7 @@ "text": "TableState" } ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/types.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/types.ts", "deprecated": false, "trackAdoption": false } @@ -937,7 +937,7 @@ "tags": [], "label": "SortColumnTable", "description": [], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -948,7 +948,7 @@ "tags": [], "label": "columnId", "description": [], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false }, @@ -959,7 +959,7 @@ "tags": [], "label": "columnType", "description": [], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false }, @@ -973,7 +973,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false }, @@ -994,7 +994,7 @@ "text": "Direction" } ], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false } @@ -1010,7 +1010,7 @@ "description": [ "A map of id to data table" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/types.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1031,7 +1031,7 @@ "text": "DataTableModel" } ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/types.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/types.ts", "deprecated": false, "trackAdoption": false } @@ -1047,7 +1047,7 @@ "description": [ "The state of all data tables is stored here" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/types.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1067,7 +1067,7 @@ "text": "TableById" } ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/types.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/types.ts", "deprecated": false, "trackAdoption": false } @@ -1083,7 +1083,7 @@ "tags": [], "label": "Direction", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1095,7 +1095,7 @@ "tags": [], "label": "TableEntityType", "description": [], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1107,7 +1107,7 @@ "tags": [], "label": "TableId", "description": [], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1119,7 +1119,7 @@ "tags": [], "label": "TimelineTabs", "description": [], - "path": "x-pack/packages/security-solution/data_table/common/types/detail_panel.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/detail_panel.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1136,7 +1136,7 @@ "signature": [ "\"not-filtered\" | \"text-filter\"" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1152,7 +1152,7 @@ "ColumnHeaderOptions", "[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1167,7 +1167,7 @@ "signature": [ "\"open\"" ], - "path": "x-pack/packages/security-solution/data_table/common/types/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1189,7 +1189,7 @@ "text": "Direction" } ], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1300,7 +1300,7 @@ "SessionViewConfig", " | null; readonly totalCount: number; }" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/model.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/model.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1402,7 +1402,7 @@ }, ".alertsRiskInputs" ], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1417,7 +1417,7 @@ "signature": [ "\"gridView\" | \"eventRenderedView\"" ], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1431,7 +1431,7 @@ "tags": [], "label": "tableDefaults", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1446,7 +1446,7 @@ "ColumnHeaderOptions", "[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1460,7 +1460,7 @@ "signature": [ "null" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1474,7 +1474,7 @@ "signature": [ "never[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1488,7 +1488,7 @@ "signature": [ "never[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1502,7 +1502,7 @@ "signature": [ "never[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1516,7 +1516,7 @@ "signature": [ "false" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1530,7 +1530,7 @@ "signature": [ "false" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1541,7 +1541,7 @@ "tags": [], "label": "itemsPerPage", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1555,7 +1555,7 @@ "signature": [ "number[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1569,7 +1569,7 @@ "signature": [ "never[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1580,7 +1580,7 @@ "tags": [], "label": "selectedEventIds", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false, "children": [] @@ -1595,7 +1595,7 @@ "signature": [ "false" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1609,7 +1609,7 @@ "signature": [ "{ columnId: string; columnType: string; esTypes: string[]; sortDirection: \"desc\"; }[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1623,7 +1623,7 @@ "signature": [ "false" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1634,7 +1634,7 @@ "tags": [], "label": "graphEventId", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1648,7 +1648,7 @@ "signature": [ "null" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1663,7 +1663,7 @@ "ColumnHeaderOptions", "[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1677,7 +1677,7 @@ "signature": [ "never[]" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1688,7 +1688,7 @@ "tags": [], "label": "title", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1699,7 +1699,7 @@ "tags": [], "label": "totalCount", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1713,7 +1713,7 @@ "signature": [ "\"gridView\"" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1724,7 +1724,7 @@ "tags": [], "label": "additionalFilters", "description": [], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1738,7 +1738,7 @@ "signature": [ "false" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false }, @@ -1752,7 +1752,7 @@ "signature": [ "false" ], - "path": "x-pack/packages/security-solution/data_table/store/data_table/defaults.ts", + "path": "x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts", "deprecated": false, "trackAdoption": false } @@ -1875,7 +1875,7 @@ }, "; }" ], - "path": "x-pack/packages/security-solution/data_table/common/types/data_table/index.ts", + "path": "x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index bd1680ab7c165..cfab442b5c086 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.devdocs.json b/api_docs/kbn_securitysolution_ecs.devdocs.json index 3ac6349390b9a..a03c6128f86c4 100644 --- a/api_docs/kbn_securitysolution_ecs.devdocs.json +++ b/api_docs/kbn_securitysolution_ecs.devdocs.json @@ -27,7 +27,7 @@ "tags": [], "label": "AgentEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/agent/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/agent/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/agent/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/agent/index.ts", "deprecated": false, "trackAdoption": false }, @@ -55,7 +55,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/agent/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/agent/index.ts", "deprecated": false, "trackAdoption": false } @@ -69,7 +69,7 @@ "tags": [], "label": "AuditdEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/auditd/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -83,7 +83,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/auditd/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts", "deprecated": false, "trackAdoption": false }, @@ -97,7 +97,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/auditd/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts", "deprecated": false, "trackAdoption": false }, @@ -112,7 +112,7 @@ "AuditdDataEcs", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/auditd/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts", "deprecated": false, "trackAdoption": false }, @@ -127,7 +127,7 @@ "SummaryEcs", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/auditd/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts", "deprecated": false, "trackAdoption": false }, @@ -141,7 +141,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/auditd/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts", "deprecated": false, "trackAdoption": false } @@ -155,7 +155,7 @@ "tags": [], "label": "CloudEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/cloud/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/cloud/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -170,7 +170,7 @@ "CloudInstanceEcs", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/cloud/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/cloud/index.ts", "deprecated": false, "trackAdoption": false }, @@ -185,7 +185,7 @@ "CloudMachineEcs", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/cloud/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/cloud/index.ts", "deprecated": false, "trackAdoption": false }, @@ -199,7 +199,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/cloud/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/cloud/index.ts", "deprecated": false, "trackAdoption": false }, @@ -213,7 +213,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/cloud/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/cloud/index.ts", "deprecated": false, "trackAdoption": false } @@ -227,7 +227,7 @@ "tags": [], "label": "CodeSignature", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -241,7 +241,7 @@ "signature": [ "string[]" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -255,7 +255,7 @@ "signature": [ "string[]" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false } @@ -269,7 +269,7 @@ "tags": [], "label": "DestinationEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/destination/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -283,7 +283,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/destination/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts", "deprecated": false, "trackAdoption": false }, @@ -297,7 +297,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/destination/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts", "deprecated": false, "trackAdoption": false }, @@ -311,7 +311,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/destination/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts", "deprecated": false, "trackAdoption": false }, @@ -325,7 +325,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/destination/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts", "deprecated": false, "trackAdoption": false }, @@ -346,7 +346,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/destination/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts", "deprecated": false, "trackAdoption": false }, @@ -360,7 +360,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/destination/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts", "deprecated": false, "trackAdoption": false } @@ -374,7 +374,7 @@ "tags": [], "label": "DllEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/dll/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dll/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -388,7 +388,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/dll/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dll/index.ts", "deprecated": false, "trackAdoption": false }, @@ -409,7 +409,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/dll/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dll/index.ts", "deprecated": false, "trackAdoption": false }, @@ -424,7 +424,7 @@ "ProcessPe", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/dll/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dll/index.ts", "deprecated": false, "trackAdoption": false } @@ -438,7 +438,7 @@ "tags": [], "label": "DnsEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/dns/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dns/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -453,7 +453,7 @@ "DnsQuestionEcs", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/dns/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dns/index.ts", "deprecated": false, "trackAdoption": false }, @@ -467,7 +467,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/dns/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dns/index.ts", "deprecated": false, "trackAdoption": false }, @@ -481,7 +481,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/dns/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/dns/index.ts", "deprecated": false, "trackAdoption": false } @@ -495,7 +495,7 @@ "tags": [], "label": "EcsSecurityExtension", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -516,7 +516,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -537,7 +537,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -558,7 +558,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -579,7 +579,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -600,7 +600,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -621,7 +621,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -642,7 +642,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -656,7 +656,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -677,7 +677,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -698,7 +698,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -719,7 +719,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -740,7 +740,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -761,7 +761,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -782,7 +782,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -803,7 +803,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -824,7 +824,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -845,7 +845,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -856,7 +856,7 @@ "tags": [], "label": "_id", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -870,7 +870,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -891,7 +891,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -912,7 +912,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -933,7 +933,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -949,7 +949,7 @@ "SignalEcsAAD", "; } | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -963,7 +963,7 @@ "signature": [ "{ index: string[]; data_view_id?: string | undefined; type?: string | undefined; } | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -977,7 +977,7 @@ "signature": [ "\"open\" | \"closed\" | \"in-progress\" | \"acknowledged\" | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -998,7 +998,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1019,7 +1019,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1040,7 +1040,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1061,7 +1061,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1075,7 +1075,7 @@ "signature": [ "{ parentId: string; sequenceNumber: string; } | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1096,7 +1096,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1117,7 +1117,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1138,7 +1138,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1152,7 +1152,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1173,7 +1173,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1194,7 +1194,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts", "deprecated": false, "trackAdoption": false } @@ -1208,7 +1208,7 @@ "tags": [], "label": "EndgameEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1222,7 +1222,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1236,7 +1236,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1250,7 +1250,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1264,7 +1264,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1278,7 +1278,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1292,7 +1292,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1306,7 +1306,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1320,7 +1320,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1334,7 +1334,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1348,7 +1348,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1362,7 +1362,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1376,7 +1376,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1390,7 +1390,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/endgame/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts", "deprecated": false, "trackAdoption": false } @@ -1404,7 +1404,7 @@ "tags": [], "label": "EventEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1418,7 +1418,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1432,7 +1432,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1446,7 +1446,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1460,7 +1460,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1474,7 +1474,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1488,7 +1488,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1502,7 +1502,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1516,7 +1516,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1530,7 +1530,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1544,7 +1544,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1558,7 +1558,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1572,7 +1572,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1586,7 +1586,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1600,7 +1600,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1614,7 +1614,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1628,7 +1628,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1642,7 +1642,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1656,7 +1656,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1670,7 +1670,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false } @@ -1684,7 +1684,7 @@ "tags": [], "label": "FileEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1698,7 +1698,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1712,7 +1712,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1726,7 +1726,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1740,7 +1740,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1755,7 +1755,7 @@ "Ext", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1769,7 +1769,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1783,7 +1783,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1797,7 +1797,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1811,7 +1811,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1825,7 +1825,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1839,7 +1839,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1853,7 +1853,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1867,7 +1867,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1881,7 +1881,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1895,7 +1895,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1909,7 +1909,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1924,7 +1924,7 @@ "Hash", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/file/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts", "deprecated": false, "trackAdoption": false } @@ -1938,7 +1938,7 @@ "tags": [], "label": "GeoEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1952,7 +1952,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1966,7 +1966,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1980,7 +1980,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1994,7 +1994,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2009,7 +2009,7 @@ "Location", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2023,7 +2023,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2037,7 +2037,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/geo/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts", "deprecated": false, "trackAdoption": false } @@ -2051,7 +2051,7 @@ "tags": [], "label": "HostEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2065,7 +2065,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2079,7 +2079,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2093,7 +2093,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2107,7 +2107,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2121,7 +2121,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2142,7 +2142,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2156,7 +2156,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false } @@ -2170,7 +2170,7 @@ "tags": [], "label": "HttpEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/http/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/http/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2184,7 +2184,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/http/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/http/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2199,7 +2199,7 @@ "HttpRequestData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/http/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/http/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2214,7 +2214,7 @@ "HttpResponseData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/http/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/http/index.ts", "deprecated": false, "trackAdoption": false } @@ -2228,7 +2228,7 @@ "tags": [], "label": "MemoryProtection", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/memory_protection/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2242,7 +2242,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/memory_protection/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2256,7 +2256,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/memory_protection/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2270,7 +2270,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/memory_protection/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2284,7 +2284,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/memory_protection/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2298,7 +2298,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/memory_protection/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts", "deprecated": false, "trackAdoption": false } @@ -2312,7 +2312,7 @@ "tags": [], "label": "NetworkEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/network/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2326,7 +2326,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/network/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2340,7 +2340,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/network/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2354,7 +2354,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/network/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2368,7 +2368,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/network/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2382,7 +2382,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/network/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2396,7 +2396,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/network/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts", "deprecated": false, "trackAdoption": false } @@ -2410,7 +2410,7 @@ "tags": [], "label": "OsEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2424,7 +2424,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2438,7 +2438,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2452,7 +2452,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2466,7 +2466,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2480,7 +2480,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2494,7 +2494,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/host/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts", "deprecated": false, "trackAdoption": false } @@ -2508,7 +2508,7 @@ "tags": [], "label": "ProcessEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2523,7 +2523,7 @@ "Ext", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2537,7 +2537,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2551,7 +2551,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2566,7 +2566,7 @@ "ProcessSessionData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2581,7 +2581,7 @@ "ProcessSessionData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2596,7 +2596,7 @@ "ProcessSessionData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2610,7 +2610,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2625,7 +2625,7 @@ "ProcessHashData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2640,7 +2640,7 @@ "ProcessParentData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2661,7 +2661,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2675,7 +2675,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2689,7 +2689,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2703,7 +2703,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2717,7 +2717,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2731,7 +2731,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2745,7 +2745,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2760,7 +2760,7 @@ "Thread", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2774,7 +2774,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/process/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts", "deprecated": false, "trackAdoption": false } @@ -2788,7 +2788,7 @@ "tags": [], "label": "Ransomware", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ransomware/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2802,7 +2802,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/ransomware/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2816,7 +2816,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/ransomware/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2830,7 +2830,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/ransomware/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2844,7 +2844,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/ransomware/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2859,7 +2859,7 @@ "RansomwareFiles", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/ransomware/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts", "deprecated": false, "trackAdoption": false } @@ -2873,7 +2873,7 @@ "tags": [], "label": "RegistryEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/registry/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2887,7 +2887,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/registry/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2901,7 +2901,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/registry/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2915,7 +2915,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/registry/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2929,7 +2929,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/registry/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2944,7 +2944,7 @@ "RegistryEcsData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/registry/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts", "deprecated": false, "trackAdoption": false } @@ -2958,7 +2958,7 @@ "tags": [], "label": "RuleEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2972,7 +2972,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2986,7 +2986,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3000,7 +3000,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3014,7 +3014,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3028,7 +3028,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3042,7 +3042,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3056,7 +3056,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3070,7 +3070,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3084,7 +3084,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3098,7 +3098,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3112,7 +3112,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3126,7 +3126,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3140,7 +3140,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3154,7 +3154,7 @@ "signature": [ "boolean[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3168,7 +3168,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3182,7 +3182,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3196,7 +3196,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3210,7 +3210,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3224,7 +3224,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3238,7 +3238,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3252,7 +3252,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3266,7 +3266,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3280,7 +3280,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3294,7 +3294,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3308,7 +3308,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3322,7 +3322,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3336,7 +3336,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3350,7 +3350,7 @@ "signature": [ "boolean[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3364,7 +3364,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3378,7 +3378,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3392,7 +3392,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3406,7 +3406,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3420,7 +3420,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3434,7 +3434,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3448,7 +3448,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3462,7 +3462,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/rule/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts", "deprecated": false, "trackAdoption": false } @@ -3476,7 +3476,7 @@ "tags": [], "label": "SignalEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/signal/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3497,7 +3497,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/signal/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3511,7 +3511,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/signal/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3525,7 +3525,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/signal/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3539,7 +3539,7 @@ "signature": [ "{ id?: string[] | undefined; } | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/signal/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3553,7 +3553,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-securitysolution-ecs/src/signal/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts", "deprecated": false, "trackAdoption": false } @@ -3567,7 +3567,7 @@ "tags": [], "label": "SourceEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/source/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3581,7 +3581,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/source/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3595,7 +3595,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/source/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3609,7 +3609,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/source/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3623,7 +3623,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/source/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3644,7 +3644,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/source/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3658,7 +3658,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/source/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts", "deprecated": false, "trackAdoption": false } @@ -3672,7 +3672,7 @@ "tags": [], "label": "SuricataEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/suricata/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/suricata/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3687,7 +3687,7 @@ "SuricataEveData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/suricata/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/suricata/index.ts", "deprecated": false, "trackAdoption": false } @@ -3701,7 +3701,7 @@ "tags": [], "label": "SystemEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/system/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/system/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3716,7 +3716,7 @@ "AuditEcs", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/system/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/system/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3731,7 +3731,7 @@ "AuthEcs", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/system/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/system/index.ts", "deprecated": false, "trackAdoption": false } @@ -3745,7 +3745,7 @@ "tags": [], "label": "Target", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/target_type/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/target_type/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3765,7 +3765,7 @@ "text": "ProcessEcs" } ], - "path": "packages/kbn-securitysolution-ecs/src/target_type/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/target_type/index.ts", "deprecated": false, "trackAdoption": false } @@ -3779,7 +3779,7 @@ "tags": [], "label": "ThreatEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3794,7 +3794,7 @@ "LegacyThreatIndicatorEcs", "[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3809,7 +3809,7 @@ "ThreatEnrichmentEcs", "[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false } @@ -3823,7 +3823,7 @@ "tags": [], "label": "ThreatIndicatorEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3844,7 +3844,7 @@ }, " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3858,7 +3858,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3872,7 +3872,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3886,7 +3886,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/threat/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts", "deprecated": false, "trackAdoption": false } @@ -3900,7 +3900,7 @@ "tags": [], "label": "TlsEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/tls/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/tls/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3915,7 +3915,7 @@ "TlsClientCertificateData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/tls/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/tls/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3930,7 +3930,7 @@ "TlsFingerprintsData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/tls/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/tls/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3945,7 +3945,7 @@ "TlsServerCertificateData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/tls/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/tls/index.ts", "deprecated": false, "trackAdoption": false } @@ -3959,7 +3959,7 @@ "tags": [], "label": "UrlEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/url/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/url/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3973,7 +3973,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/url/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/url/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3987,7 +3987,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/url/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/url/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4001,7 +4001,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/url/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/url/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4015,7 +4015,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/url/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/url/index.ts", "deprecated": false, "trackAdoption": false } @@ -4029,7 +4029,7 @@ "tags": [], "label": "UserEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4043,7 +4043,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4057,7 +4057,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4071,7 +4071,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4085,7 +4085,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4099,7 +4099,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4113,7 +4113,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4127,7 +4127,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/user/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts", "deprecated": false, "trackAdoption": false } @@ -4141,7 +4141,7 @@ "tags": [], "label": "WinlogEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/winlog/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/winlog/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4155,7 +4155,7 @@ "signature": [ "number[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/winlog/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/winlog/index.ts", "deprecated": false, "trackAdoption": false } @@ -4169,7 +4169,7 @@ "tags": [], "label": "ZeekEcs", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4183,7 +4183,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4198,7 +4198,7 @@ "ZeekConnectionData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4213,7 +4213,7 @@ "ZeekNoticeData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4228,7 +4228,7 @@ "ZeekDnsData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4243,7 +4243,7 @@ "ZeekHttpData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4258,7 +4258,7 @@ "ZeekFileData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4273,7 +4273,7 @@ "ZeekSslData", " | undefined" ], - "path": "packages/kbn-securitysolution-ecs/src/zeek/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts", "deprecated": false, "trackAdoption": false } @@ -4289,7 +4289,7 @@ "tags": [], "label": "EventCategory", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4301,7 +4301,7 @@ "tags": [], "label": "EventCode", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/event/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4316,7 +4316,7 @@ "tags": [], "label": "cloudFieldsMap", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4327,7 +4327,7 @@ "tags": [], "label": "'cloud.account.id'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4338,7 +4338,7 @@ "tags": [], "label": "'cloud.availability_zone'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4349,7 +4349,7 @@ "tags": [], "label": "'cloud.instance.id'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4360,7 +4360,7 @@ "tags": [], "label": "'cloud.instance.name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4371,7 +4371,7 @@ "tags": [], "label": "'cloud.machine.type'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4382,7 +4382,7 @@ "tags": [], "label": "'cloud.provider'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4393,7 +4393,7 @@ "tags": [], "label": "'cloud.region'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -4407,7 +4407,7 @@ "tags": [], "label": "hostFieldsMap", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4418,7 +4418,7 @@ "tags": [], "label": "'host.architecture'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4429,7 +4429,7 @@ "tags": [], "label": "'host.id'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4440,7 +4440,7 @@ "tags": [], "label": "'host.ip'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4451,7 +4451,7 @@ "tags": [], "label": "'host.mac'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4462,7 +4462,7 @@ "tags": [], "label": "'host.name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4476,7 +4476,7 @@ "signature": [ "any" ], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -4490,7 +4490,7 @@ "tags": [], "label": "osFieldsMap", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4501,7 +4501,7 @@ "tags": [], "label": "'os.platform'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4512,7 +4512,7 @@ "tags": [], "label": "'os.name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4523,7 +4523,7 @@ "tags": [], "label": "'os.full'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4534,7 +4534,7 @@ "tags": [], "label": "'os.family'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4545,7 +4545,7 @@ "tags": [], "label": "'os.version'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4556,7 +4556,7 @@ "tags": [], "label": "'os.kernel'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -4570,7 +4570,7 @@ "tags": [], "label": "processFieldsMap", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4581,7 +4581,7 @@ "tags": [], "label": "'process.hash.md5'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4592,7 +4592,7 @@ "tags": [], "label": "'process.hash.sha1'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4603,7 +4603,7 @@ "tags": [], "label": "'process.hash.sha256'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4614,7 +4614,7 @@ "tags": [], "label": "'process.pid'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4625,7 +4625,7 @@ "tags": [], "label": "'process.name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4636,7 +4636,7 @@ "tags": [], "label": "'process.ppid'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4647,7 +4647,7 @@ "tags": [], "label": "'process.args'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4658,7 +4658,7 @@ "tags": [], "label": "'process.entity_id'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4669,7 +4669,7 @@ "tags": [], "label": "'process.executable'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4680,7 +4680,7 @@ "tags": [], "label": "'process.title'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4691,7 +4691,7 @@ "tags": [], "label": "'process.thread'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4702,7 +4702,7 @@ "tags": [], "label": "'process.working_directory'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -4716,7 +4716,7 @@ "tags": [], "label": "sourceFieldsMap", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4727,7 +4727,7 @@ "tags": [], "label": "'source.bytes'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4738,7 +4738,7 @@ "tags": [], "label": "'source.ip'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4749,7 +4749,7 @@ "tags": [], "label": "'source.packets'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4760,7 +4760,7 @@ "tags": [], "label": "'source.port'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4771,7 +4771,7 @@ "tags": [], "label": "'source.domain'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4782,7 +4782,7 @@ "tags": [], "label": "'source.geo.continent_name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4793,7 +4793,7 @@ "tags": [], "label": "'source.geo.country_name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4804,7 +4804,7 @@ "tags": [], "label": "'source.geo.country_iso_code'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4815,7 +4815,7 @@ "tags": [], "label": "'source.geo.city_name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4826,7 +4826,7 @@ "tags": [], "label": "'source.geo.region_iso_code'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4837,7 +4837,7 @@ "tags": [], "label": "'source.geo.region_name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -4851,7 +4851,7 @@ "tags": [], "label": "userFieldsMap", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4862,7 +4862,7 @@ "tags": [], "label": "'user.domain'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4873,7 +4873,7 @@ "tags": [], "label": "'user.id'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4884,7 +4884,7 @@ "tags": [], "label": "'user.name'", "description": [], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4897,7 +4897,7 @@ "description": [ "// NOTE: This field is not tested and available from ECS. Please remove this tag once it is" ], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4910,7 +4910,7 @@ "description": [ "// NOTE: This field is not tested and available from ECS. Please remove this tag once it is" ], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4923,7 +4923,7 @@ "description": [ "// NOTE: This field is not tested and available from ECS. Please remove this tag once it is" ], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4936,7 +4936,7 @@ "description": [ "// NOTE: This field is not tested and available from ECS. Please remove this tag once it is" ], - "path": "packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts", + "path": "src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 3088d20513408..e9a4220f45609 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.devdocs.json b/api_docs/kbn_securitysolution_es_utils.devdocs.json index e7dcb1d4de62f..6708767007105 100644 --- a/api_docs/kbn_securitysolution_es_utils.devdocs.json +++ b/api_docs/kbn_securitysolution_es_utils.devdocs.json @@ -613,9 +613,9 @@ "\nRetrieves all index aliases for a given alias name\n" ], "signature": [ - "({ esClient, alias, }: { esClient: ", + "({ esClient, alias, index, }: { esClient: ", "ElasticsearchClient", - "; alias: string; }) => Promise" + "; alias: string; index?: string | undefined; }) => Promise" ], "path": "packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts", "deprecated": false, @@ -626,7 +626,7 @@ "id": "def-common.getIndexAliases.$1", "type": "Object", "tags": [], - "label": "{\n esClient,\n alias,\n}", + "label": "{\n esClient,\n alias,\n index,\n}", "description": [], "path": "packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts", "deprecated": false, @@ -1906,6 +1906,20 @@ "path": "packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/securitysolution-es-utils", + "id": "def-common.getIndexAliases.$1.index", + "type": "string", + "tags": [], + "label": "index", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-securitysolution-es-utils/src/get_index_aliases/index.ts", + "deprecated": false, + "trackAdoption": false } ] } diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 6d98ee04fb159..de1a2fa3f85d8 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-detection-engine](https://github.com/orgs/elastic/tea | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 87 | 0 | 76 | 1 | +| 88 | 0 | 77 | 1 | ## Common diff --git a/api_docs/kbn_securitysolution_exception_list_components.devdocs.json b/api_docs/kbn_securitysolution_exception_list_components.devdocs.json index 6fad7dd1a9543..43c4c1d822e7b 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.devdocs.json +++ b/api_docs/kbn_securitysolution_exception_list_components.devdocs.json @@ -868,7 +868,7 @@ "label": "formattedDateComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"stop\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "packages/kbn-securitysolution-exception-list-components/src/exception_item_card/meta/index.tsx", "deprecated": false, @@ -882,7 +882,7 @@ "label": "securityLinkAnchorComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"stop\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "packages/kbn-securitysolution-exception-list-components/src/exception_item_card/meta/index.tsx", "deprecated": false, @@ -1021,7 +1021,7 @@ "label": "securityLinkAnchorComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"stop\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "packages/kbn-securitysolution-exception-list-components/src/exception_item_card/exception_item_card.tsx", "deprecated": false, @@ -1035,7 +1035,7 @@ "label": "formattedDateComponent", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"stop\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "packages/kbn-securitysolution-exception-list-components/src/exception_item_card/exception_item_card.tsx", "deprecated": false, @@ -1161,7 +1161,7 @@ "label": "showValueListModal", "description": [], "signature": [ - "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"stop\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" + "\"symbol\" | \"object\" | \"source\" | \"meta\" | \"desc\" | \"filter\" | \"search\" | \"big\" | \"link\" | \"small\" | \"sub\" | \"sup\" | \"text\" | \"map\" | \"head\" | \"label\" | \"data\" | \"slot\" | \"style\" | \"title\" | \"form\" | \"path\" | \"code\" | \"pattern\" | \"set\" | \"summary\" | \"template\" | \"span\" | \"q\" | \"body\" | \"html\" | \"main\" | \"a\" | \"abbr\" | \"address\" | \"area\" | \"article\" | \"aside\" | \"audio\" | \"b\" | \"base\" | \"bdi\" | \"bdo\" | \"blockquote\" | \"br\" | \"button\" | \"canvas\" | \"caption\" | \"center\" | \"cite\" | \"col\" | \"colgroup\" | \"datalist\" | \"dd\" | \"del\" | \"details\" | \"dfn\" | \"dialog\" | \"div\" | \"dl\" | \"dt\" | \"em\" | \"embed\" | \"fieldset\" | \"figcaption\" | \"figure\" | \"footer\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"header\" | \"hgroup\" | \"hr\" | \"i\" | \"iframe\" | \"img\" | \"input\" | \"ins\" | \"kbd\" | \"keygen\" | \"legend\" | \"li\" | \"mark\" | \"menu\" | \"menuitem\" | \"meter\" | \"nav\" | \"noindex\" | \"noscript\" | \"ol\" | \"optgroup\" | \"option\" | \"output\" | \"p\" | \"param\" | \"picture\" | \"pre\" | \"progress\" | \"rp\" | \"rt\" | \"ruby\" | \"s\" | \"samp\" | \"script\" | \"section\" | \"select\" | \"strong\" | \"table\" | \"tbody\" | \"td\" | \"textarea\" | \"tfoot\" | \"th\" | \"thead\" | \"time\" | \"tr\" | \"track\" | \"u\" | \"ul\" | \"var\" | \"video\" | \"wbr\" | \"webview\" | \"svg\" | \"animate\" | \"animateMotion\" | \"animateTransform\" | \"circle\" | \"clipPath\" | \"defs\" | \"ellipse\" | \"feBlend\" | \"feColorMatrix\" | \"feComponentTransfer\" | \"feComposite\" | \"feConvolveMatrix\" | \"feDiffuseLighting\" | \"feDisplacementMap\" | \"feDistantLight\" | \"feDropShadow\" | \"feFlood\" | \"feFuncA\" | \"feFuncB\" | \"feFuncG\" | \"feFuncR\" | \"feGaussianBlur\" | \"feImage\" | \"feMerge\" | \"feMergeNode\" | \"feMorphology\" | \"feOffset\" | \"fePointLight\" | \"feSpecularLighting\" | \"feSpotLight\" | \"feTile\" | \"feTurbulence\" | \"foreignObject\" | \"g\" | \"image\" | \"line\" | \"linearGradient\" | \"marker\" | \"mask\" | \"metadata\" | \"mpath\" | \"polygon\" | \"polyline\" | \"radialGradient\" | \"rect\" | \"stop\" | \"switch\" | \"textPath\" | \"tspan\" | \"use\" | \"view\" | React.ComponentType" ], "path": "packages/kbn-securitysolution-exception-list-components/src/exception_item_card/exception_item_card.tsx", "deprecated": false, diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index b267a800bb667..029c418cc2396 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index f26d3d93dfc4e..166262b33621a 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 2c8bcf2913986..9ad1845c33bd5 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 1cfd4acdd73eb..6e9b2f0cefec6 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 63131851f322e..155c08b3daeb8 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index aadaa9bb5e058..c0991bf83204b 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index acda4d82918e1..bc81ec6e27dbc 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.devdocs.json b/api_docs/kbn_securitysolution_list_constants.devdocs.json index 2b2e1776831a1..c4e0211dbc40a 100644 --- a/api_docs/kbn_securitysolution_list_constants.devdocs.json +++ b/api_docs/kbn_securitysolution_list_constants.devdocs.json @@ -69,11 +69,11 @@ "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts" + "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts" + "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" }, { "plugin": "securitySolution", @@ -85,11 +85,11 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/blocklist/constants.ts" }, { "plugin": "securitySolution", @@ -161,19 +161,19 @@ "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" + "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" + "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" }, { "plugin": "securitySolution", @@ -201,79 +201,79 @@ "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" + "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" + "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" + "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx" + "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx" + "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts" + "path": "x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts" + "path": "x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/view/components/form.tsx" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/view/utils.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/service/service_actions.ts" }, { "plugin": "securitySolution", @@ -333,19 +333,19 @@ "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" + "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" + "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/fleet_integration/handlers/create_event_filters.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/event_filters/constants.ts" }, { "plugin": "securitySolution", @@ -405,27 +405,27 @@ "references": [ { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" + "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" + "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + "path": "x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + "path": "x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/host_isolation_exceptions/constants.ts" }, { "plugin": "lists", @@ -686,11 +686,11 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" + "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" + "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" }, { "plugin": "securitySolution", @@ -702,11 +702,11 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts" + "path": "x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts" }, { "plugin": "lists", diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 6cc5f6231ab41..bbf68a39b6213 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 4b4ae0c9f0a3a..05d6ad0289549 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 0bb78551477da..e0f86fab65fac 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index 0a9a4ac9323e0..1a0f059beed89 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 62a0d9909e409..3e23fc014dcc6 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 0673ea18beffb..36e198afbe7be 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index c467d3e2445ac..10899d06fa505 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.devdocs.json b/api_docs/kbn_server_route_repository.devdocs.json index b402826a9d604..88f2e8c60398f 100644 --- a/api_docs/kbn_server_route_repository.devdocs.json +++ b/api_docs/kbn_server_route_repository.devdocs.json @@ -23,7 +23,7 @@ "CreateServerRouteFactory", "" ], - "path": "packages/kbn-server-route-repository/src/create_server_route_factory.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/create_server_route_factory.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -42,7 +42,7 @@ "OutputOf", "" ], - "path": "packages/kbn-server-route-repository/src/decode_request_params.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/decode_request_params.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -56,7 +56,7 @@ "signature": [ "Partial<{ path: any; query: any; body: any; }>" ], - "path": "packages/kbn-server-route-repository/src/decode_request_params.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/decode_request_params.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -71,7 +71,7 @@ "signature": [ "T" ], - "path": "packages/kbn-server-route-repository/src/decode_request_params.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/decode_request_params.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -98,7 +98,7 @@ }, "; pathname: string; version: string; }" ], - "path": "packages/kbn-server-route-repository-utils/src/format_request.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -112,7 +112,7 @@ "signature": [ "string" ], - "path": "packages/kbn-server-route-repository-utils/src/format_request.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -127,7 +127,7 @@ "signature": [ "Record" ], - "path": "packages/kbn-server-route-repository-utils/src/format_request.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -154,7 +154,7 @@ }, "; pathname: string; version: string; }" ], - "path": "packages/kbn-server-route-repository-utils/src/parse_endpoint.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/parse_endpoint.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -168,7 +168,7 @@ "signature": [ "string" ], - "path": "packages/kbn-server-route-repository-utils/src/parse_endpoint.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/parse_endpoint.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -219,7 +219,7 @@ }, "; dependencies: TDependencies; }) => void" ], - "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -230,7 +230,7 @@ "tags": [], "label": "{\n core,\n repository,\n logger,\n dependencies,\n}", "description": [], - "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -251,7 +251,7 @@ }, "" ], - "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts", "deprecated": false, "trackAdoption": false }, @@ -281,7 +281,7 @@ }, " | undefined, any, any, any>; }" ], - "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts", "deprecated": false, "trackAdoption": false }, @@ -301,7 +301,7 @@ "text": "Logger" } ], - "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts", "deprecated": false, "trackAdoption": false }, @@ -315,7 +315,7 @@ "signature": [ "TDependencies" ], - "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts", "deprecated": false, "trackAdoption": false } @@ -335,7 +335,7 @@ "signature": [ "(params: KibanaRequestParams) => Partial<{ path: any; body: any; query: any; }>" ], - "path": "packages/kbn-server-route-repository/src/strip_nullish_request_parameters.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/strip_nullish_request_parameters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -349,7 +349,7 @@ "signature": [ "KibanaRequestParams" ], - "path": "packages/kbn-server-route-repository/src/strip_nullish_request_parameters.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/strip_nullish_request_parameters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -377,7 +377,7 @@ }, " extends CoreRouteHandlerResources" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -397,7 +397,7 @@ "text": "Logger" } ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false } @@ -421,7 +421,7 @@ }, "" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -459,7 +459,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -473,7 +473,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -504,7 +504,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -550,7 +550,7 @@ "Observable", " : never : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -564,7 +564,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -595,7 +595,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -651,7 +651,7 @@ }, " ? ClientRequestParamsOfType : TRouteParamsRT extends undefined ? {} : never : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -690,7 +690,7 @@ }, " ? DecodedRequestParamsOfType : {} : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -720,7 +720,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -735,7 +735,7 @@ "signature": [ "keyof TServerRouteRepository" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -760,7 +760,7 @@ "Encoder", "; }" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -801,7 +801,7 @@ }, " | undefined; } | undefined> ? TWrappedResponseType : TReturnType : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -830,7 +830,7 @@ "text": "ZodParamsObject" } ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -869,7 +869,7 @@ }, " ? { options: TRouteCreateOptions; } : {})" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -908,7 +908,7 @@ }, " | undefined>; }" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -922,7 +922,7 @@ "tags": [], "label": "passThroughValidationObject", "description": [], - "path": "packages/kbn-server-route-repository/src/validation_objects.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/validation_objects.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -936,7 +936,7 @@ "signature": [ "Zod.ZodAny" ], - "path": "packages/kbn-server-route-repository/src/validation_objects.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/validation_objects.ts", "deprecated": false, "trackAdoption": false }, @@ -950,7 +950,7 @@ "signature": [ "Zod.ZodAny" ], - "path": "packages/kbn-server-route-repository/src/validation_objects.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/validation_objects.ts", "deprecated": false, "trackAdoption": false }, @@ -964,7 +964,7 @@ "signature": [ "Zod.ZodAny" ], - "path": "packages/kbn-server-route-repository/src/validation_objects.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository/src/validation_objects.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index c569f7af69c10..ce670f3e0e951 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_client.devdocs.json b/api_docs/kbn_server_route_repository_client.devdocs.json index 03e5c79e96682..759f12ff6b32b 100644 --- a/api_docs/kbn_server_route_repository_client.devdocs.json +++ b/api_docs/kbn_server_route_repository_client.devdocs.json @@ -37,7 +37,7 @@ }, "" ], - "path": "packages/kbn-server-route-repository-client/src/create_repository_client.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-client/src/create_repository_client.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -66,7 +66,7 @@ }, "" ], - "path": "packages/kbn-server-route-repository-client/src/create_repository_client.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-client/src/create_repository_client.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -85,7 +85,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "packages/kbn-server-route-repository-client/src/is_http_fetch_error.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-client/src/is_http_fetch_error.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -99,7 +99,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-server-route-repository-client/src/is_http_fetch_error.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-client/src/is_http_fetch_error.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -118,7 +118,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "packages/kbn-server-route-repository-client/src/is_request_aborted_error.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-client/src/is_request_aborted_error.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -132,7 +132,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-server-route-repository-client/src/is_request_aborted_error.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-client/src/is_request_aborted_error.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -160,7 +160,7 @@ }, "" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -198,7 +198,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -212,7 +212,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -243,7 +243,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -289,7 +289,7 @@ "Observable", " : never : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -303,7 +303,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -334,7 +334,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -390,7 +390,7 @@ }, " ? ClientRequestParamsOfType : TRouteParamsRT extends undefined ? {} : never : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -411,7 +411,7 @@ "text": "HttpFetchOptions" } ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_server_route_repository_client.mdx b/api_docs/kbn_server_route_repository_client.mdx index bf4bea214db22..cb14e788e753f 100644 --- a/api_docs/kbn_server_route_repository_client.mdx +++ b/api_docs/kbn_server_route_repository_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-client title: "@kbn/server-route-repository-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-client plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-client'] --- import kbnServerRouteRepositoryClientObj from './kbn_server_route_repository_client.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_utils.devdocs.json b/api_docs/kbn_server_route_repository_utils.devdocs.json index b33006a95896a..09f60f690d12e 100644 --- a/api_docs/kbn_server_route_repository_utils.devdocs.json +++ b/api_docs/kbn_server_route_repository_utils.devdocs.json @@ -37,7 +37,7 @@ }, "; pathname: string; version: string; }" ], - "path": "packages/kbn-server-route-repository-utils/src/format_request.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -51,7 +51,7 @@ "signature": [ "string" ], - "path": "packages/kbn-server-route-repository-utils/src/format_request.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -66,7 +66,7 @@ "signature": [ "Record" ], - "path": "packages/kbn-server-route-repository-utils/src/format_request.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -93,7 +93,7 @@ }, "; pathname: string; version: string; }" ], - "path": "packages/kbn-server-route-repository-utils/src/parse_endpoint.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/parse_endpoint.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -107,7 +107,7 @@ "signature": [ "string" ], - "path": "packages/kbn-server-route-repository-utils/src/parse_endpoint.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/parse_endpoint.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -135,7 +135,7 @@ }, " extends CoreRouteHandlerResources" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -155,7 +155,7 @@ "text": "Logger" } ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false } @@ -179,7 +179,7 @@ }, "" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -217,7 +217,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -231,7 +231,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -262,7 +262,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -308,7 +308,7 @@ "Observable", " : never : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -322,7 +322,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -353,7 +353,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -371,7 +371,7 @@ "tags": [], "label": "ServerRouteCreateOptions", "description": [], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -385,7 +385,7 @@ "signature": [ "[x: string]: any" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false } @@ -437,7 +437,7 @@ }, " ? ClientRequestParamsOfType : TRouteParamsRT extends undefined ? {} : never : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -476,7 +476,7 @@ }, " ? DecodedRequestParamsOfType : {} : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -497,7 +497,7 @@ "text": "HttpFetchOptions" } ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -527,7 +527,7 @@ }, ">" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -542,7 +542,7 @@ "signature": [ "keyof TServerRouteRepository" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -567,7 +567,7 @@ "Encoder", "; }" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -608,7 +608,7 @@ }, " | undefined; } | undefined> ? TWrappedResponseType : TReturnType : never" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -637,7 +637,7 @@ "text": "ZodParamsObject" } ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -676,7 +676,7 @@ }, " ? { options: TRouteCreateOptions; } : {})" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -691,7 +691,7 @@ "signature": [ "{ [x: string]: any; }" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -730,7 +730,7 @@ }, " | undefined>; }" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -745,7 +745,7 @@ "signature": [ "Zod.ZodObject<{ path?: Zod.ZodType | undefined; query?: Zod.ZodType | undefined; body?: Zod.ZodType | undefined; }, Zod.UnknownKeysParam, Zod.ZodTypeAny, { query?: unknown; path?: unknown; body?: unknown; }, { query?: unknown; path?: unknown; body?: unknown; }>" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_server_route_repository_utils.mdx b/api_docs/kbn_server_route_repository_utils.mdx index 1cc5a5d72b0d7..cc24ad9ffae28 100644 --- a/api_docs/kbn_server_route_repository_utils.mdx +++ b/api_docs/kbn_server_route_repository_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-utils title: "@kbn/server-route-repository-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-utils'] --- import kbnServerRouteRepositoryUtilsObj from './kbn_server_route_repository_utils.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index cd0c189f2a912..bc07b728eff4c 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index 756a31d3679cd..0e6eb999e1eab 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 7444f55f614df..13689457c3ae1 100644 --- a/api_docs/kbn_serverless_project_switcher.mdx +++ b/api_docs/kbn_serverless_project_switcher.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher title: "@kbn/serverless-project-switcher" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-project-switcher plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 09f93f60ffc6a..8db744741cbd4 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index a8758f5ecad7e..6e0df65d548bc 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index c5a5f69686dfc..3f0849087e8b9 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index e2e57260035d2..f70dcae003b1c 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index 5cc189ae94891..6f2400752215e 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 6eb5a4029897d..58b29db250bc9 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.devdocs.json b/api_docs/kbn_shared_ux_button_toolbar.devdocs.json index ea07e99c1ce78..249f1003dbbf3 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.devdocs.json +++ b/api_docs/kbn_shared_ux_button_toolbar.devdocs.json @@ -1,27 +1,11 @@ { "id": "@kbn/shared-ux-button-toolbar", "client": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "server": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "common": { "classes": [], "functions": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.AddFromLibraryButton", + "id": "def-public.AddFromLibraryButton", "type": "Function", "tags": [], "label": "AddFromLibraryButton", @@ -32,9 +16,9 @@ "({ onClick, size, ...rest }: ", { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element" @@ -45,7 +29,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.AddFromLibraryButton.$1", + "id": "def-public.AddFromLibraryButton.$1", "type": "Object", "tags": [], "label": "{ onClick, size = 'm', ...rest }", @@ -53,9 +37,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" } ], @@ -70,7 +54,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButtonGroup", + "id": "def-public.IconButtonGroup", "type": "Function", "tags": [], "label": "IconButtonGroup", @@ -81,9 +65,9 @@ "({ buttons, legend, buttonSize, \"data-test-subj\": dataTestSubj, }: ", { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element" @@ -94,7 +78,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButtonGroup.$1", + "id": "def-public.IconButtonGroup.$1", "type": "Object", "tags": [], "label": "{\n buttons,\n legend,\n buttonSize = 'm',\n 'data-test-subj': dataTestSubj,\n}", @@ -102,9 +86,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" } ], @@ -119,7 +103,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Toolbar", + "id": "def-public.Toolbar", "type": "Function", "tags": [], "label": "Toolbar", @@ -130,9 +114,9 @@ "({ children }: ", { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element" @@ -143,7 +127,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Toolbar.$1", + "id": "def-public.Toolbar.$1", "type": "Object", "tags": [], "label": "{ children }", @@ -151,9 +135,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" } ], @@ -170,7 +154,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.ToolbarButton", + "id": "def-public.ToolbarButton", "type": "Function", "tags": [], "label": "ToolbarButton", @@ -179,9 +163,9 @@ "(props: ", { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element" @@ -192,7 +176,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.ToolbarButton.$1", + "id": "def-public.ToolbarButton.$1", "type": "Uncategorized", "tags": [], "label": "props", @@ -200,9 +184,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, "" @@ -218,7 +202,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.ToolbarPopover", + "id": "def-public.ToolbarPopover", "type": "Function", "tags": [], "label": "ToolbarPopover", @@ -229,9 +213,9 @@ "({ type, label, iconType, size, children, isDisabled, ...popover }: ", { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element" @@ -242,7 +226,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.ToolbarPopover.$1", + "id": "def-public.ToolbarPopover.$1", "type": "CompoundType", "tags": [], "label": "{\n type,\n label,\n iconType,\n size = 'm',\n children,\n isDisabled,\n ...popover\n}", @@ -250,9 +234,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" } ], @@ -269,7 +253,7 @@ "interfaces": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton", + "id": "def-public.IconButton", "type": "Interface", "tags": [], "label": "IconButton", @@ -282,7 +266,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.label", + "id": "def-public.IconButton.label", "type": "string", "tags": [], "label": "label", @@ -295,7 +279,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.iconType", + "id": "def-public.IconButton.iconType", "type": "CompoundType", "tags": [], "label": "iconType", @@ -311,7 +295,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.onClick", + "id": "def-public.IconButton.onClick", "type": "Function", "tags": [], "label": "onClick", @@ -329,7 +313,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.title", + "id": "def-public.IconButton.title", "type": "string", "tags": [], "label": "title", @@ -345,7 +329,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.datatestsubj", + "id": "def-public.IconButton.datatestsubj", "type": "string", "tags": [], "label": "'data-test-subj'", @@ -361,7 +345,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.isDisabled", + "id": "def-public.IconButton.isDisabled", "type": "CompoundType", "tags": [], "label": "isDisabled", @@ -377,7 +361,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.ariaexpanded", + "id": "def-public.IconButton.ariaexpanded", "type": "CompoundType", "tags": [], "label": "'aria-expanded'", @@ -393,7 +377,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.IconButton.ariacontrols", + "id": "def-public.IconButton.ariacontrols", "type": "string", "tags": [], "label": "'aria-controls'", @@ -412,7 +396,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props", + "id": "def-public.Props", "type": "Interface", "tags": [], "label": "Props", @@ -425,7 +409,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props.legend", + "id": "def-public.Props.legend", "type": "string", "tags": [], "label": "legend", @@ -438,7 +422,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props.buttons", + "id": "def-public.Props.buttons", "type": "Array", "tags": [], "label": "buttons", @@ -448,9 +432,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.IconButton", + "section": "def-public.IconButton", "text": "IconButton" }, "[]" @@ -461,7 +445,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props.buttonSize", + "id": "def-public.Props.buttonSize", "type": "CompoundType", "tags": [], "label": "buttonSize", @@ -477,7 +461,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props.datatestsubj", + "id": "def-public.Props.datatestsubj", "type": "string", "tags": [], "label": "'data-test-subj'", @@ -496,7 +480,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props", + "id": "def-public.Props", "type": "Interface", "tags": [], "label": "Props", @@ -509,7 +493,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props.children", + "id": "def-public.Props.children", "type": "Object", "tags": [], "label": "children", @@ -529,7 +513,7 @@ "misc": [ { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props", + "id": "def-public.Props", "type": "Type", "tags": [], "label": "Props", @@ -546,7 +530,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props", + "id": "def-public.Props", "type": "Type", "tags": [], "label": "Props", @@ -563,7 +547,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.Props", + "id": "def-public.Props", "type": "Type", "tags": [], "label": "Props", @@ -580,7 +564,7 @@ }, { "parentPluginId": "@kbn/shared-ux-button-toolbar", - "id": "def-common.ToolbarButtonType", + "id": "def-public.ToolbarButtonType", "type": "Type", "tags": [], "label": "ToolbarButtonType", @@ -591,17 +575,17 @@ "((props: ", { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element) | (({ type, label, iconType, size, children, isDisabled, ...popover }: ", { "pluginId": "@kbn/shared-ux-button-toolbar", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxButtonToolbarPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element)" @@ -615,5 +599,21 @@ } ], "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] } } \ No newline at end of file diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 3757ca9c569ee..496869f13fe62 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; @@ -23,14 +23,14 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh |-------------------|-----------|------------------------|-----------------| | 30 | 0 | 8 | 0 | -## Common +## Client ### Functions - + ### Interfaces - + ### Consts, variables and types - + diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index f0252f01c744c..62f98e0bc961b 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index fb0e3a99631db..ee89e102e1000 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index 5e3fe38d97284..32d4696ab8952 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index ae38a19b7f620..05e855289fe0b 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index 6beb3f26d8480..a291a215f4066 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index 706879497645a..c7278c204488f 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index 9dad1bda446b4..de408ea91586b 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index cf98a19607492..c88e51393db26 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.devdocs.json b/api_docs/kbn_shared_ux_file_picker.devdocs.json index 8afebe976c729..f60003a33ad09 100644 --- a/api_docs/kbn_shared_ux_file_picker.devdocs.json +++ b/api_docs/kbn_shared_ux_file_picker.devdocs.json @@ -1,27 +1,11 @@ { "id": "@kbn/shared-ux-file-picker", "client": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "server": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "common": { "classes": [], "functions": [ { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.FilePicker", + "id": "def-public.FilePicker", "type": "Function", "tags": [], "label": "FilePicker", @@ -30,9 +14,9 @@ "(props: ", { "pluginId": "@kbn/shared-ux-file-picker", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFilePickerPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, ") => React.JSX.Element" @@ -43,7 +27,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.FilePicker.$1", + "id": "def-public.FilePicker.$1", "type": "Object", "tags": [], "label": "props", @@ -51,9 +35,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-file-picker", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFilePickerPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, "" @@ -71,7 +55,7 @@ "interfaces": [ { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props", + "id": "def-public.Props", "type": "Interface", "tags": [], "label": "Props", @@ -79,9 +63,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-file-picker", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFilePickerPluginApi", - "section": "def-common.Props", + "section": "def-public.Props", "text": "Props" }, "" @@ -92,7 +76,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.kind", + "id": "def-public.Props.kind", "type": "Uncategorized", "tags": [], "label": "kind", @@ -108,7 +92,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.shouldAllowDelete", + "id": "def-public.Props.shouldAllowDelete", "type": "Function", "tags": [], "label": "shouldAllowDelete", @@ -132,7 +116,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.shouldAllowDelete.$1", + "id": "def-public.Props.shouldAllowDelete.$1", "type": "Object", "tags": [], "label": "file", @@ -157,7 +141,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.onClose", + "id": "def-public.Props.onClose", "type": "Function", "tags": [], "label": "onClose", @@ -175,7 +159,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.onDone", + "id": "def-public.Props.onDone", "type": "Function", "tags": [], "label": "onDone", @@ -199,7 +183,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.onDone.$1", + "id": "def-public.Props.onDone.$1", "type": "Array", "tags": [], "label": "files", @@ -224,7 +208,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.onUpload", + "id": "def-public.Props.onUpload", "type": "Function", "tags": [], "label": "onUpload", @@ -235,9 +219,9 @@ "((done: ", { "pluginId": "@kbn/shared-ux-file-upload", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFileUploadPluginApi", - "section": "def-common.DoneNotification", + "section": "def-public.DoneNotification", "text": "DoneNotification" }, "[]) => void) | undefined" @@ -248,7 +232,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.onUpload.$1", + "id": "def-public.Props.onUpload.$1", "type": "Array", "tags": [], "label": "done", @@ -256,9 +240,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-file-upload", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFileUploadPluginApi", - "section": "def-common.DoneNotification", + "section": "def-public.DoneNotification", "text": "DoneNotification" }, "[]" @@ -273,7 +257,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.uploadMeta", + "id": "def-public.Props.uploadMeta", "type": "Unknown", "tags": [], "label": "uploadMeta", @@ -289,7 +273,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.pageSize", + "id": "def-public.Props.pageSize", "type": "number", "tags": [], "label": "pageSize", @@ -305,7 +289,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-picker", - "id": "def-common.Props.multiple", + "id": "def-public.Props.multiple", "type": "CompoundType", "tags": [ "default" @@ -328,5 +312,21 @@ "enums": [], "misc": [], "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] } } \ No newline at end of file diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index 1b3576896484e..a5d7709de61e3 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; @@ -23,11 +23,11 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh |-------------------|-----------|------------------------|-----------------| | 14 | 0 | 6 | 0 | -## Common +## Client ### Functions - + ### Interfaces - + diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index 60b250e385b9d..b30a4145e7438 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.devdocs.json b/api_docs/kbn_shared_ux_file_upload.devdocs.json index a3ad0f3d41893..131c7f36c33a9 100644 --- a/api_docs/kbn_shared_ux_file_upload.devdocs.json +++ b/api_docs/kbn_shared_ux_file_upload.devdocs.json @@ -1,27 +1,11 @@ { "id": "@kbn/shared-ux-file-upload", "client": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "server": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "common": { "classes": [], "functions": [ { "parentPluginId": "@kbn/shared-ux-file-upload", - "id": "def-common.FileUpload", + "id": "def-public.FileUpload", "type": "Function", "tags": [], "label": "FileUpload", @@ -30,9 +14,9 @@ "(props: ", { "pluginId": "@kbn/shared-ux-file-upload", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFileUploadPluginApi", - "section": "def-common.FileUploadProps", + "section": "def-public.FileUploadProps", "text": "FileUploadProps" }, ") => React.JSX.Element" @@ -43,7 +27,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-file-upload", - "id": "def-common.FileUpload.$1", + "id": "def-public.FileUpload.$1", "type": "CompoundType", "tags": [], "label": "props", @@ -51,9 +35,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-file-upload", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFileUploadPluginApi", - "section": "def-common.FileUploadProps", + "section": "def-public.FileUploadProps", "text": "FileUploadProps" } ], @@ -70,7 +54,7 @@ "interfaces": [ { "parentPluginId": "@kbn/shared-ux-file-upload", - "id": "def-common.DoneNotification", + "id": "def-public.DoneNotification", "type": "Interface", "tags": [], "label": "DoneNotification", @@ -78,9 +62,9 @@ "signature": [ { "pluginId": "@kbn/shared-ux-file-upload", - "scope": "common", + "scope": "public", "docId": "kibKbnSharedUxFileUploadPluginApi", - "section": "def-common.DoneNotification", + "section": "def-public.DoneNotification", "text": "DoneNotification" }, "" @@ -91,7 +75,7 @@ "children": [ { "parentPluginId": "@kbn/shared-ux-file-upload", - "id": "def-common.DoneNotification.id", + "id": "def-public.DoneNotification.id", "type": "string", "tags": [], "label": "id", @@ -102,7 +86,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-upload", - "id": "def-common.DoneNotification.kind", + "id": "def-public.DoneNotification.kind", "type": "string", "tags": [], "label": "kind", @@ -113,7 +97,7 @@ }, { "parentPluginId": "@kbn/shared-ux-file-upload", - "id": "def-common.DoneNotification.fileJSON", + "id": "def-public.DoneNotification.fileJSON", "type": "Object", "tags": [], "label": "fileJSON", @@ -140,7 +124,7 @@ "misc": [ { "parentPluginId": "@kbn/shared-ux-file-upload", - "id": "def-common.FileUploadProps", + "id": "def-public.FileUploadProps", "type": "Type", "tags": [], "label": "FileUploadProps", @@ -156,5 +140,21 @@ } ], "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] } } \ No newline at end of file diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index cc92bd7686b6a..a096e0232bc8e 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; @@ -23,14 +23,14 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh |-------------------|-----------|------------------------|-----------------| | 7 | 0 | 7 | 1 | -## Common +## Client ### Functions - + ### Interfaces - + ### Consts, variables and types - + diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index ba6df33a865c1..47b40813c67ae 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index d1908e5a20433..b9e85252db944 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index 68514ec9753e4..8586ae58dc49e 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index 2604477f27e1b..a80fc24995f66 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index 26126b89dc85d..7ba967f469f7b 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index 471a0023258bb..22db4fe1d97b6 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index 265d15cbaf4d2..ef5af79b3f6c0 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index 83e3c89c5514a..3c0e022e8751a 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index 9913f12207e24..7098069888f20 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index 067d0719f9b2a..3d518f6906f52 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index 28f6bbf10e0c7..7267ac6739888 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index f3f85740ba4d2..485086c3263ff 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index 9d2b9dff40a0c..fbbe3cd0b2910 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 19760b957cb9a..9dee11083a85f 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index e970f0fc22c63..521e85e0404d1 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index 5aa822627f552..b2be645bdabf7 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index 240e58147a121..c642790205e7a 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 8642aa9ac4f84..726fb22003190 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index 1a02155b99cbf..7b336f70986d0 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index 95ebb75b17f29..8b138cff55e7e 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 18ffcec0fd798..04feddedfa048 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index 32cbf9523ead0..62a28e51d2d72 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 55867fa84a977..d5e9011f4601b 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_tabbed_modal.mdx b/api_docs/kbn_shared_ux_tabbed_modal.mdx index a69c91c82d529..466b62f8648c5 100644 --- a/api_docs/kbn_shared_ux_tabbed_modal.mdx +++ b/api_docs/kbn_shared_ux_tabbed_modal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-tabbed-modal title: "@kbn/shared-ux-tabbed-modal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-tabbed-modal plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-tabbed-modal'] --- import kbnSharedUxTabbedModalObj from './kbn_shared_ux_tabbed_modal.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_table_persist.mdx b/api_docs/kbn_shared_ux_table_persist.mdx index 23c94ff6dd4fa..071c16e71bd9c 100644 --- a/api_docs/kbn_shared_ux_table_persist.mdx +++ b/api_docs/kbn_shared_ux_table_persist.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-table-persist title: "@kbn/shared-ux-table-persist" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-table-persist plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-table-persist'] --- import kbnSharedUxTablePersistObj from './kbn_shared_ux_table_persist.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 2cc2dc17261d9..2494bf0cb64e3 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.devdocs.json b/api_docs/kbn_slo_schema.devdocs.json index 434db5f52535c..2e67a7d3d3106 100644 --- a/api_docs/kbn_slo_schema.devdocs.json +++ b/api_docs/kbn_slo_schema.devdocs.json @@ -25,7 +25,7 @@ "tags": [], "label": "Duration", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -39,7 +39,7 @@ "signature": [ "any" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -53,7 +53,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -74,7 +74,7 @@ "text": "DurationUnit" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -107,7 +107,7 @@ "text": "Duration" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -127,7 +127,7 @@ "text": "Duration" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -153,7 +153,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -173,7 +173,7 @@ "text": "Duration" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -199,7 +199,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -219,7 +219,7 @@ "text": "Duration" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -245,7 +245,7 @@ }, ") => boolean" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -265,7 +265,7 @@ "text": "Duration" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -283,7 +283,7 @@ "signature": [ "() => string" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -299,7 +299,7 @@ "signature": [ "() => number" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -315,7 +315,7 @@ "signature": [ "() => number" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -343,7 +343,7 @@ "text": "DurationUnit" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -357,7 +357,7 @@ "signature": [ "string" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -384,7 +384,7 @@ }, ") => moment.unitOfTime.Diff" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -404,7 +404,7 @@ "text": "DurationUnit" } ], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -432,7 +432,7 @@ }, "" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -443,7 +443,7 @@ "tags": [], "label": "total", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false }, @@ -454,7 +454,7 @@ "tags": [], "label": "page", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false }, @@ -465,7 +465,7 @@ "tags": [], "label": "perPage", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false }, @@ -479,7 +479,7 @@ "signature": [ "T[]" ], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false } @@ -493,7 +493,7 @@ "tags": [], "label": "Pagination", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -504,7 +504,7 @@ "tags": [], "label": "page", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false }, @@ -515,7 +515,7 @@ "tags": [], "label": "perPage", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/pagination.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts", "deprecated": false, "trackAdoption": false } @@ -531,7 +531,7 @@ "tags": [], "label": "DurationUnit", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -548,7 +548,7 @@ "signature": [ "\"*\"" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -563,7 +563,7 @@ "signature": [ "{ type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -578,7 +578,7 @@ "signature": [ "{ type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -593,7 +593,7 @@ "signature": [ "\"occurrences\" | \"timeslices\"" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -608,7 +608,7 @@ "signature": [ "{ name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; preventInitialBackfill?: boolean | undefined; syncField?: string | null | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | string[] | undefined; revision?: number | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -663,7 +663,7 @@ }, " | undefined; preventInitialBackfill?: boolean | undefined; syncField?: string | null | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | string[] | undefined; revision?: number | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -678,7 +678,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -693,7 +693,7 @@ "signature": [ "{ list: ({ sloId: string; instanceId: string; } & { excludeRollup?: boolean | undefined; })[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -708,7 +708,7 @@ "signature": [ "{ list: ({ sloId: string; instanceId: string; } & { excludeRollup?: boolean | undefined; })[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -747,7 +747,7 @@ }, " | undefined; }; groupBy: string | string[]; revision: number; } & { remoteName?: string | undefined; range?: { from: Date; to: Date; } | undefined; })[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -762,7 +762,7 @@ "signature": [ "{ sloId: string; instanceId: string; data: { date: string; status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }[]; }[]" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -777,7 +777,7 @@ "signature": [ "{ list: { sloId: string; sloInstanceId: string; }[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -792,7 +792,7 @@ "signature": [ "{ sloId: string; sloInstanceId: string; sloRevision: number; state: \"running\" | \"indexing\" | \"no_data\" | \"stale\"; health: { overall: \"healthy\" | \"unhealthy\"; rollup: \"healthy\" | \"unhealthy\"; summary: \"healthy\" | \"unhealthy\"; }; }[]" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -807,7 +807,7 @@ "signature": [ "({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -822,7 +822,7 @@ "signature": [ "{ search?: string | undefined; includeOutdatedOnly?: boolean | undefined; page?: string | undefined; perPage?: string | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -837,7 +837,7 @@ "signature": [ "{ page: number; perPage: number; total: number; results: { id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -852,7 +852,7 @@ "signature": [ "{ page?: string | undefined; perPage?: string | undefined; groupBy?: \"status\" | \"slo.instanceId\" | \"_index\" | \"ungrouped\" | \"slo.tags\" | \"slo.indicator.type\" | undefined; groupsFilter?: string | string[] | undefined; kqlQuery?: string | undefined; filters?: string | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_group.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_group.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -867,7 +867,7 @@ "signature": [ "{ page: number; perPage: number; total: number; results: { group: string; groupBy: \"status\" | \"slo.instanceId\" | \"_index\" | \"ungrouped\" | \"slo.tags\" | \"slo.indicator.type\"; summary: { total: number; worst: { sliValue: number; status: string; slo: { id: string; instanceId: string; name: string; groupings: { [x: string]: unknown; }; }; }; violated: number; healthy: number; degrading: number; noData: number; }; }[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_group.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_group.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -882,7 +882,7 @@ "signature": [ "{ filters?: string | undefined; kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | \"burn_rate_5m\" | \"burn_rate_1h\" | \"burn_rate_1d\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; hideStale?: boolean | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -897,7 +897,7 @@ "signature": [ "{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; })[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -920,7 +920,7 @@ }, " | undefined; }) | undefined; instanceId?: string | undefined; groupBy?: string | string[] | undefined; remoteName?: string | undefined; groupings?: { [x: string]: unknown; } | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -935,7 +935,7 @@ "signature": [ "({ date: string; sliValue: number | null; } & { events?: { good: number; bad: number; total: number; } | undefined; })[]" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -950,7 +950,7 @@ "signature": [ "{ burnRates: { name: string; burnRate: number; sli: number; }[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -965,7 +965,7 @@ "signature": [ "{ instanceId: string; groupingKey: string; } & { search?: string | undefined; afterKey?: string | undefined; size?: string | undefined; excludeStale?: boolean | undefined; remoteName?: string | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -980,7 +980,7 @@ "signature": [ "{ groupingKey: string; values: string[]; afterKey: string | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -995,7 +995,7 @@ "signature": [ "{ instanceId?: string | undefined; remoteName?: string | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1010,7 +1010,7 @@ "signature": [ "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1025,7 +1025,7 @@ "signature": [ "{ useAllRemoteClusters: boolean; selectedRemoteClusters: string[]; staleThresholdInHours: number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1040,7 +1040,7 @@ "signature": [ "{ tags: { label: string; value: string; count: number; }[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1055,7 +1055,7 @@ "signature": [ "{ [x: string]: string | number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1070,7 +1070,7 @@ "signature": [ "{ total: number; worst: { sliValue: number; status: string; slo: { id: string; instanceId: string; name: string; groupings: { [x: string]: unknown; }; }; }; violated: number; healthy: number; degrading: number; noData: number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1085,7 +1085,7 @@ "signature": [ "{ type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1100,7 +1100,7 @@ "signature": [ "{ date: string; status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1115,7 +1115,7 @@ "signature": [ "{ type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1130,7 +1130,7 @@ "signature": [ "\"sli.apm.transactionDuration\" | \"sli.apm.transactionErrorRate\" | \"sli.synthetics.availability\" | \"sli.kql.custom\" | \"sli.metric.custom\" | \"sli.metric.timeslice\" | \"sli.histogram.custom\"" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1145,7 +1145,7 @@ "signature": [ "{ type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1160,7 +1160,7 @@ "signature": [ "{ kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1175,7 +1175,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/manage.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/manage.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1190,7 +1190,7 @@ "signature": [ "{ type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1205,7 +1205,7 @@ "signature": [ "{ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1220,7 +1220,7 @@ "signature": [ "{ useAllRemoteClusters: boolean; selectedRemoteClusters: string[]; staleThresholdInHours: number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1235,7 +1235,7 @@ "signature": [ "{ useAllRemoteClusters: boolean; selectedRemoteClusters: string[]; staleThresholdInHours: number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1250,7 +1250,7 @@ "signature": [ "string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1265,7 +1265,7 @@ "signature": [ "{ id: string; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/reset.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/reset.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1280,7 +1280,7 @@ "signature": [ "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/reset.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/reset.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1295,7 +1295,7 @@ "signature": [ "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1310,7 +1310,7 @@ "signature": [ "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1325,7 +1325,7 @@ "signature": [ "{ type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1340,7 +1340,7 @@ "signature": [ "{ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1355,7 +1355,7 @@ "signature": [ "{ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1370,7 +1370,7 @@ "signature": [ "{ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1385,7 +1385,7 @@ "signature": [ "{ type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1400,7 +1400,7 @@ "signature": [ "\"rolling\" | \"calendarAligned\"" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1415,7 +1415,7 @@ "signature": [ "{ name?: string | undefined; description?: string | undefined; indicator?: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | undefined; timeWindow?: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }) | undefined; settings?: { syncDelay?: string | undefined; frequency?: string | undefined; preventInitialBackfill?: boolean | undefined; syncField?: string | null | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | string[] | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1470,7 +1470,7 @@ }, " | undefined; preventInitialBackfill?: boolean | undefined; syncField?: string | null | undefined; } | undefined; tags?: string[] | undefined; groupBy?: string | string[] | undefined; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1485,7 +1485,7 @@ "signature": [ "{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; }" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1507,7 +1507,7 @@ "StringC", "]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1535,7 +1535,7 @@ "StringC", "]>>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1643,7 +1643,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1659,7 +1659,7 @@ "LiteralC", "<\"sli.apm.transactionDuration\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1765,7 +1765,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1781,7 +1781,7 @@ "LiteralC", "<\"sli.apm.transactionErrorRate\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1801,7 +1801,7 @@ "LiteralC", "<\"timeslices\">]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1829,7 +1829,7 @@ "LiteralC", "<\"calendarAligned\">; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/time_window.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1845,7 +1845,7 @@ "LiteralC", "<\"calendarAligned\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/time_window.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3425,7 +3425,7 @@ "NumberC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3443,7 +3443,7 @@ "Type", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/create.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3463,7 +3463,7 @@ "Type", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3479,7 +3479,7 @@ "Type", "" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3511,7 +3511,7 @@ "BooleanC", "; }>]>>; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3531,7 +3531,7 @@ "Type", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3555,7 +3555,7 @@ }, ", string, unknown>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/duration.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/duration.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3579,7 +3579,7 @@ "BooleanC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3689,7 +3689,7 @@ "Type", "; }>; }>]>>; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3743,7 +3743,7 @@ "BooleanC", "; }>; }>>; }>>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3773,7 +3773,7 @@ "StringC", "]>; }>>; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3831,7 +3831,7 @@ "LiteralC", "<\"unhealthy\">]>; }>; }>>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3891,7 +3891,7 @@ "AnyC", "; }>]>>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3917,7 +3917,7 @@ "StringC", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5513,7 +5513,7 @@ "NumberC", "; }>>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_definition.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5561,7 +5561,7 @@ "StringC", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_group.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_group.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5635,7 +5635,7 @@ "NumberC", "; }>; }>>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_group.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_group.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5685,7 +5685,7 @@ "Type", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -7359,7 +7359,7 @@ "StringC", "; }>; }>]>>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8877,7 +8877,7 @@ "UnknownC", ">; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8915,7 +8915,7 @@ "NumberC", "; }>; }>]>>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8965,7 +8965,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8991,7 +8991,7 @@ "NumberC", "; }>>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9031,7 +9031,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9059,7 +9059,7 @@ "UndefinedC", "]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9093,7 +9093,7 @@ "StringC", "; }>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10757,7 +10757,7 @@ "StringC", "; }>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10783,7 +10783,7 @@ "NumberC", "; }>>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10811,7 +10811,7 @@ "StringC", "]>>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10835,7 +10835,7 @@ "NumberC", "]>>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10881,7 +10881,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10901,7 +10901,7 @@ "LiteralC", "<\"unhealthy\">]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/health.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/health.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -11253,7 +11253,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -11269,7 +11269,7 @@ "LiteralC", "<\"sli.histogram.custom\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -11309,7 +11309,7 @@ "BooleanC", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -12769,7 +12769,7 @@ "StringC", "; }>]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -12785,7 +12785,7 @@ "Type", "" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -12815,7 +12815,7 @@ "LiteralC", "<\"sli.histogram.custom\">]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13007,7 +13007,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13023,7 +13023,7 @@ "LiteralC", "<\"sli.kql.custom\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13038,7 +13038,7 @@ "signature": [ "StringC" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13102,7 +13102,7 @@ "AnyC", "; }>]>>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13122,7 +13122,7 @@ "Type", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/manage.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/manage.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13146,7 +13146,7 @@ "StringC", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13226,7 +13226,7 @@ "AnyC", "; }>]>>; }>]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13304,7 +13304,7 @@ "AnyC", "; }>]>>; }>]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13664,7 +13664,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13680,7 +13680,7 @@ "LiteralC", "<\"sli.metric.custom\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13714,7 +13714,7 @@ }, ", string, unknown>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13730,7 +13730,7 @@ "LiteralC", "<\"occurrences\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13774,7 +13774,7 @@ "NullC", "]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13794,7 +13794,7 @@ "NumberC", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13820,7 +13820,7 @@ "NumberC", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13844,7 +13844,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13912,7 +13912,7 @@ "AnyC", "; }>]>>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13932,7 +13932,7 @@ "StringC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13952,7 +13952,7 @@ "Type", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/reset.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/reset.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -15538,7 +15538,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/reset.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/reset.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -15566,7 +15566,7 @@ "LiteralC", "<\"rolling\">; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/time_window.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -15582,7 +15582,7 @@ "LiteralC", "<\"rolling\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/time_window.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -15630,7 +15630,7 @@ "NullC", "]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -17216,7 +17216,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -17280,7 +17280,7 @@ "NumberC", "; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_group.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_group.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -17296,7 +17296,7 @@ "Type", "" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -17314,7 +17314,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -17338,7 +17338,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/settings.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/settings.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19002,7 +19002,7 @@ "StringC", "; }>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19026,7 +19026,7 @@ "LiteralC", "<\"stale\">]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/health.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/health.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19050,7 +19050,7 @@ "LiteralC", "<\"VIOLATED\">]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19104,7 +19104,7 @@ "NullC", "]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19234,7 +19234,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19250,7 +19250,7 @@ "LiteralC", "<\"sli.synthetics.availability\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19268,7 +19268,7 @@ "StringC", ">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19286,7 +19286,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19366,7 +19366,7 @@ "AnyC", "; }>]>>; }>]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19378,7 +19378,7 @@ "tags": [], "label": "timesliceMetricComparatorMapping", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -19389,7 +19389,7 @@ "tags": [], "label": "GT", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false }, @@ -19400,7 +19400,7 @@ "tags": [], "label": "GTE", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false }, @@ -19411,7 +19411,7 @@ "tags": [], "label": "LT", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false }, @@ -19422,7 +19422,7 @@ "tags": [], "label": "LTE", "description": [], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false } @@ -19502,7 +19502,7 @@ "AnyC", "; }>]>>; }>]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19796,7 +19796,7 @@ "StringC", "; }>]>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -19812,7 +19812,7 @@ "LiteralC", "<\"sli.metric.timeslice\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -20026,7 +20026,7 @@ "AnyC", "; }>]>>; }>]>; }>]>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -20108,7 +20108,7 @@ "AnyC", "; }>]>>; }>]>; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -20124,7 +20124,7 @@ "LiteralC", "<\"timeslices\">" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/slo.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -20168,7 +20168,7 @@ "LiteralC", "<\"calendarAligned\">; }>]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/time_window.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -20188,7 +20188,7 @@ "LiteralC", "<\"calendarAligned\">]>" ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/time_window.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -21764,7 +21764,7 @@ "StringC", "]>>]>; }>; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -23350,7 +23350,7 @@ "NumberC", "; }>" ], - "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts", + "path": "x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 0e07f12737d33..ad732ab75d3a8 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 266e25316751e..f608230a7c5e8 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_predicates.mdx b/api_docs/kbn_sort_predicates.mdx index 6df76da5ee1c7..91be9f8fcbfb1 100644 --- a/api_docs/kbn_sort_predicates.mdx +++ b/api_docs/kbn_sort_predicates.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-predicates title: "@kbn/sort-predicates" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-predicates plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-predicates'] --- import kbnSortPredicatesObj from './kbn_sort_predicates.devdocs.json'; diff --git a/api_docs/kbn_sse_utils.devdocs.json b/api_docs/kbn_sse_utils.devdocs.json index 967f282e27735..7487ff3e0983e 100644 --- a/api_docs/kbn_sse_utils.devdocs.json +++ b/api_docs/kbn_sse_utils.devdocs.json @@ -35,7 +35,7 @@ }, " extends Error" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -49,7 +49,7 @@ "signature": [ "any" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -63,7 +63,7 @@ "signature": [ "TCode" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -78,7 +78,7 @@ "signature": [ "string" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -93,7 +93,7 @@ "signature": [ "TMeta" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -113,7 +113,7 @@ "ServerSentEventType", ".error; }" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -135,7 +135,7 @@ "(message: string) => ", "ServerSentEventInternalError" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -149,7 +149,7 @@ "signature": [ "string" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -169,7 +169,7 @@ "(message: string, status: number) => ", "ServerSentEventRequestError" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -183,7 +183,7 @@ "signature": [ "string" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -198,7 +198,7 @@ "signature": [ "number" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -217,7 +217,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -231,7 +231,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -250,7 +250,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -264,7 +264,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -283,7 +283,7 @@ "signature": [ "(error: unknown) => boolean" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -297,7 +297,7 @@ "signature": [ "unknown" ], - "path": "packages/kbn-sse-utils/src/errors.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/errors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -320,7 +320,7 @@ "signature": [ "Record & { type: string; }" ], - "path": "packages/kbn-sse-utils/src/events.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -335,7 +335,7 @@ "signature": [ "keyof TData extends \"type\" ? never : TData & { type: TEventType; }" ], - "path": "packages/kbn-sse-utils/src/events.ts", + "path": "src/platform/packages/shared/kbn-sse-utils/src/events.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_sse_utils.mdx b/api_docs/kbn_sse_utils.mdx index c7e2ed7c6e7ff..65494fcf65e5e 100644 --- a/api_docs/kbn_sse_utils.mdx +++ b/api_docs/kbn_sse_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils title: "@kbn/sse-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils'] --- import kbnSseUtilsObj from './kbn_sse_utils.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_client.devdocs.json b/api_docs/kbn_sse_utils_client.devdocs.json index 40d155d0755b0..9531b9e1d515d 100644 --- a/api_docs/kbn_sse_utils_client.devdocs.json +++ b/api_docs/kbn_sse_utils_client.devdocs.json @@ -33,7 +33,7 @@ "StreamedHttpResponse", ", T>" ], - "path": "packages/kbn-sse-utils-client/src/http_response_into_observable.ts", + "path": "src/platform/packages/shared/kbn-sse-utils-client/src/http_response_into_observable.ts", "deprecated": false, "trackAdoption": false, "children": [], diff --git a/api_docs/kbn_sse_utils_client.mdx b/api_docs/kbn_sse_utils_client.mdx index 71c40e3e32ecf..c3c38c454329b 100644 --- a/api_docs/kbn_sse_utils_client.mdx +++ b/api_docs/kbn_sse_utils_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-client title: "@kbn/sse-utils-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-client plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-client'] --- import kbnSseUtilsClientObj from './kbn_sse_utils_client.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_server.devdocs.json b/api_docs/kbn_sse_utils_server.devdocs.json index dbf75dfc2083a..84ba6735488bb 100644 --- a/api_docs/kbn_sse_utils_server.devdocs.json +++ b/api_docs/kbn_sse_utils_server.devdocs.json @@ -29,10 +29,18 @@ "signature": [ "(source$: ", "Observable", - " & { type: string; }>) => ", + " & { type: string; }>, {\n logger,\n signal,\n }: { logger: Pick<", + { + "pluginId": "@kbn/logging", + "scope": "common", + "docId": "kibKbnLoggingPluginApi", + "section": "def-common.Logger", + "text": "Logger" + }, + ", \"error\" | \"debug\">; signal: AbortSignal; }) => ", "PassThrough" ], - "path": "packages/kbn-sse-utils-server/src/observable_into_event_source_stream.ts", + "path": "src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -47,10 +55,99 @@ "Observable", " & { type: string; }>" ], - "path": "packages/kbn-sse-utils-server/src/observable_into_event_source_stream.ts", + "path": "src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts", "deprecated": false, "trackAdoption": false, "isRequired": true + }, + { + "parentPluginId": "@kbn/sse-utils-server", + "id": "def-common.observableIntoEventSourceStream.$2", + "type": "Object", + "tags": [], + "label": "{\n logger,\n signal,\n }", + "description": [], + "path": "src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/sse-utils-server", + "id": "def-common.observableIntoEventSourceStream.$2.logger", + "type": "Object", + "tags": [], + "label": "logger", + "description": [], + "signature": [ + "{ error: (errorOrMessage: Error | ", + { + "pluginId": "@kbn/logging", + "scope": "common", + "docId": "kibKbnLoggingPluginApi", + "section": "def-common.LogMessageSource", + "text": "LogMessageSource" + }, + ", meta?: Meta | undefined) => void; debug: (message: ", + { + "pluginId": "@kbn/logging", + "scope": "common", + "docId": "kibKbnLoggingPluginApi", + "section": "def-common.LogMessageSource", + "text": "LogMessageSource" + }, + ", meta?: Meta | undefined) => void; }" + ], + "path": "src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/sse-utils-server", + "id": "def-common.observableIntoEventSourceStream.$2.signal", + "type": "Object", + "tags": [], + "label": "signal", + "description": [], + "signature": [ + "AbortSignal" + ], + "path": "src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts", + "deprecated": false, + "trackAdoption": false + } + ] } ], "returnComment": [], @@ -72,7 +169,7 @@ "Observable", "" ], - "path": "packages/kbn-sse-utils-server/src/supertest_to_observable.ts", + "path": "src/platform/packages/shared/kbn-sse-utils-server/src/supertest_to_observable.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -86,7 +183,7 @@ "signature": [ "Test" ], - "path": "packages/kbn-sse-utils-server/src/supertest_to_observable.ts", + "path": "src/platform/packages/shared/kbn-sse-utils-server/src/supertest_to_observable.ts", "deprecated": false, "trackAdoption": false, "isRequired": true diff --git a/api_docs/kbn_sse_utils_server.mdx b/api_docs/kbn_sse_utils_server.mdx index ba641ade176f3..ad3d6958a8f95 100644 --- a/api_docs/kbn_sse_utils_server.mdx +++ b/api_docs/kbn_sse_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-server title: "@kbn/sse-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-server plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-server'] --- import kbnSseUtilsServerObj from './kbn_sse_utils_server.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs- | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 4 | 0 | 3 | 0 | +| 7 | 0 | 6 | 0 | ## Common diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 713b5a6e82643..c9d3153b08538 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 434de060b7cb1..2ea214cc6bc51 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 5e4273929e997..4a6dd4c3a1295 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_synthetics_e2e.devdocs.json b/api_docs/kbn_synthetics_e2e.devdocs.json index 279942a1d8bca..c1cf32a65f2e8 100644 --- a/api_docs/kbn_synthetics_e2e.devdocs.json +++ b/api_docs/kbn_synthetics_e2e.devdocs.json @@ -17,345 +17,7 @@ "objects": [] }, "common": { - "classes": [ - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner", - "type": "Class", - "tags": [], - "label": "SyntheticsRunner", - "description": [], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.getService", - "type": "Any", - "tags": [], - "label": "getService", - "description": [], - "signature": [ - "any" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.kibanaUrl", - "type": "string", - "tags": [], - "label": "kibanaUrl", - "description": [], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.testFilesLoaded", - "type": "boolean", - "tags": [], - "label": "testFilesLoaded", - "description": [], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.params", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "ArgParams" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.Unnamed.$1", - "type": "Any", - "tags": [], - "label": "getService", - "description": [], - "signature": [ - "any" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.Unnamed.$2", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "ArgParams" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.setup", - "type": "Function", - "tags": [], - "label": "setup", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.createTestUsers", - "type": "Function", - "tags": [], - "label": "createTestUsers", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.loadTestFiles", - "type": "Function", - "tags": [], - "label": "loadTestFiles", - "description": [], - "signature": [ - "(callback: (reload?: boolean | undefined) => Promise, reload?: boolean) => Promise" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.loadTestFiles.$1", - "type": "Function", - "tags": [], - "label": "callback", - "description": [], - "signature": [ - "(reload?: boolean | undefined) => Promise" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.loadTestFiles.$2", - "type": "boolean", - "tags": [], - "label": "reload", - "description": [], - "signature": [ - "boolean" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.loadTestData", - "type": "Function", - "tags": [], - "label": "loadTestData", - "description": [], - "signature": [ - "(e2eDir: string, dataArchives: string[]) => Promise" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.loadTestData.$1", - "type": "string", - "tags": [], - "label": "e2eDir", - "description": [], - "signature": [ - "string" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.loadTestData.$2", - "type": "Array", - "tags": [], - "label": "dataArchives", - "description": [], - "signature": [ - "string[]" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.getKibanaUrl", - "type": "Function", - "tags": [], - "label": "getKibanaUrl", - "description": [], - "signature": [ - "() => string" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.getElasticsearchUrl", - "type": "Function", - "tags": [], - "label": "getElasticsearchUrl", - "description": [], - "signature": [ - "() => string" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.run", - "type": "Function", - "tags": [], - "label": "run", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.assertResults", - "type": "Function", - "tags": [], - "label": "assertResults", - "description": [], - "signature": [ - "(results: { [x: string]: ", - "JourneyResult", - "; }) => void" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.assertResults.$1", - "type": "Object", - "tags": [], - "label": "results", - "description": [], - "signature": [ - "{ [x: string]: ", - "JourneyResult", - "; }" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.SyntheticsRunner.cleanUp", - "type": "Function", - "tags": [], - "label": "cleanUp", - "description": [], - "signature": [ - "() => void" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - } - ], + "classes": [], "functions": [ { "parentPluginId": "@kbn/synthetics-e2e", @@ -369,7 +31,7 @@ "Page", "; isRemote?: boolean | undefined; username?: string | undefined; password?: string | undefined; }) => { waitForLoadingToFinish(): Promise; loginToKibana(usernameT?: \"editor\" | \"viewer\" | undefined, passwordT?: string | undefined): Promise; }" ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -380,7 +42,7 @@ "tags": [], "label": "{\n page,\n isRemote = false,\n username = 'elastic',\n password = 'changeme',\n}", "description": [], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -394,7 +56,7 @@ "signature": [ "Page" ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx", "deprecated": false, "trackAdoption": false }, @@ -408,7 +70,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx", "deprecated": false, "trackAdoption": false }, @@ -422,7 +84,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx", "deprecated": false, "trackAdoption": false }, @@ -436,7 +98,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx", "deprecated": false, "trackAdoption": false } @@ -462,7 +124,7 @@ "ElementHandle", ">; }" ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/utils.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/utils.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -473,7 +135,7 @@ "tags": [], "label": "{ page }", "description": [], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/utils.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/utils.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -487,7 +149,7 @@ "signature": [ "Page" ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/page_objects/utils.tsx", + "path": "x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/utils.tsx", "deprecated": false, "trackAdoption": false } @@ -501,22 +163,6 @@ "interfaces": [], "enums": [], "misc": [], - "objects": [ - { - "parentPluginId": "@kbn/synthetics-e2e", - "id": "def-common.argv", - "type": "Object", - "tags": [], - "label": "argv", - "description": [], - "signature": [ - "{ [x: string]: unknown; headless: boolean; bail: boolean; grep: undefined; _: string[]; $0: string; }" - ], - "path": "x-pack/plugins/observability_solution/synthetics/e2e/helpers/parse_args_params.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - } - ] + "objects": [] } } \ No newline at end of file diff --git a/api_docs/kbn_synthetics_e2e.mdx b/api_docs/kbn_synthetics_e2e.mdx index 21c5a7dfe8815..1fae4d770032d 100644 --- a/api_docs/kbn_synthetics_e2e.mdx +++ b/api_docs/kbn_synthetics_e2e.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-e2e title: "@kbn/synthetics-e2e" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-e2e plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-e2e'] --- import kbnSyntheticsE2eObj from './kbn_synthetics_e2e.devdocs.json'; @@ -21,16 +21,10 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 32 | 2 | 32 | 0 | +| 9 | 0 | 9 | 0 | ## Common -### Objects - - ### Functions -### Classes - - diff --git a/api_docs/kbn_synthetics_private_location.mdx b/api_docs/kbn_synthetics_private_location.mdx index fcc0b28808d36..1ba48994d4777 100644 --- a/api_docs/kbn_synthetics_private_location.mdx +++ b/api_docs/kbn_synthetics_private_location.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-private-location title: "@kbn/synthetics-private-location" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-private-location plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-private-location'] --- import kbnSyntheticsPrivateLocationObj from './kbn_synthetics_private_location.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index bf80b02cdbb5f..459acc574a365 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index 90b99d676f20b..45fdf146e0e52 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_eui_helpers.mdx b/api_docs/kbn_test_eui_helpers.mdx index c2087a4d8dcc4..86ba25fe86119 100644 --- a/api_docs/kbn_test_eui_helpers.mdx +++ b/api_docs/kbn_test_eui_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-eui-helpers title: "@kbn/test-eui-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-eui-helpers plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-eui-helpers'] --- import kbnTestEuiHelpersObj from './kbn_test_eui_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index a4c009f13823c..c535c207403f4 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index 3eee4b5fcf634..ca5fef76b25df 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_timerange.devdocs.json b/api_docs/kbn_timerange.devdocs.json index ed4a19c41a6e9..6c66de05c49d4 100644 --- a/api_docs/kbn_timerange.devdocs.json +++ b/api_docs/kbn_timerange.devdocs.json @@ -124,6 +124,92 @@ ], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/timerange", + "id": "def-common.getOffsetFromNowInSeconds", + "type": "Function", + "tags": [], + "label": "getOffsetFromNowInSeconds", + "description": [], + "signature": [ + "(epochDate: number) => number" + ], + "path": "packages/kbn-timerange/src/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/timerange", + "id": "def-common.getOffsetFromNowInSeconds.$1", + "type": "number", + "tags": [], + "label": "epochDate", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-timerange/src/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/timerange", + "id": "def-common.getTimeDifferenceInSeconds", + "type": "Function", + "tags": [], + "label": "getTimeDifferenceInSeconds", + "description": [], + "signature": [ + "({\n startDate,\n endDate,\n}: { startDate: number; endDate: number; }) => number" + ], + "path": "packages/kbn-timerange/src/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/timerange", + "id": "def-common.getTimeDifferenceInSeconds.$1", + "type": "Object", + "tags": [], + "label": "{\n startDate,\n endDate,\n}", + "description": [], + "path": "packages/kbn-timerange/src/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/timerange", + "id": "def-common.getTimeDifferenceInSeconds.$1.startDate", + "type": "number", + "tags": [], + "label": "startDate", + "description": [], + "path": "packages/kbn-timerange/src/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/timerange", + "id": "def-common.getTimeDifferenceInSeconds.$1.endDate", + "type": "number", + "tags": [], + "label": "endDate", + "description": [], + "path": "packages/kbn-timerange/src/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [], diff --git a/api_docs/kbn_timerange.mdx b/api_docs/kbn_timerange.mdx index c623e767d0235..26b62a9026873 100644 --- a/api_docs/kbn_timerange.mdx +++ b/api_docs/kbn_timerange.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-timerange title: "@kbn/timerange" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/timerange plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/timerange'] --- import kbnTimerangeObj from './kbn_timerange.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 8 | 0 | 8 | 0 | +| 14 | 0 | 14 | 0 | ## Common diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 7e39333f85ded..4042171aad28d 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_transpose_utils.mdx b/api_docs/kbn_transpose_utils.mdx index ee25d7b22877f..2b04fdf4cac90 100644 --- a/api_docs/kbn_transpose_utils.mdx +++ b/api_docs/kbn_transpose_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-transpose-utils title: "@kbn/transpose-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/transpose-utils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/transpose-utils'] --- import kbnTransposeUtilsObj from './kbn_transpose_utils.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index 1ed43aacfbebd..ed175afd37846 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_try_in_console.mdx b/api_docs/kbn_try_in_console.mdx index ab433f5c8f1c8..d38b2e644e528 100644 --- a/api_docs/kbn_try_in_console.mdx +++ b/api_docs/kbn_try_in_console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-try-in-console title: "@kbn/try-in-console" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/try-in-console plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/try-in-console'] --- import kbnTryInConsoleObj from './kbn_try_in_console.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 089172c24b07f..afd66a02a3c54 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.devdocs.json b/api_docs/kbn_typed_react_router_config.devdocs.json index f20c6013c647f..669b8705b459c 100644 --- a/api_docs/kbn_typed_react_router_config.devdocs.json +++ b/api_docs/kbn_typed_react_router_config.devdocs.json @@ -19,7 +19,7 @@ }, " extends Error" ], - "path": "packages/kbn-typed-react-router-config/src/create_router.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -33,7 +33,7 @@ "signature": [ "any" ], - "path": "packages/kbn-typed-react-router-config/src/create_router.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -47,7 +47,7 @@ "signature": [ "string" ], - "path": "packages/kbn-typed-react-router-config/src/create_router.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -70,7 +70,7 @@ "signature": [ "({\n children,\n}: { children: React.ReactNode; }) => React.JSX.Element" ], - "path": "packages/kbn-typed-react-router-config/src/breadcrumbs/context.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/context.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -81,7 +81,7 @@ "tags": [], "label": "{\n children,\n}", "description": [], - "path": "packages/kbn-typed-react-router-config/src/breadcrumbs/context.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/context.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -95,7 +95,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/breadcrumbs/context.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/context.tsx", "deprecated": false, "trackAdoption": false } @@ -123,7 +123,7 @@ }, "" ], - "path": "packages/kbn-typed-react-router-config/src/create_router.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -137,7 +137,7 @@ "signature": [ "TRoutes" ], - "path": "packages/kbn-typed-react-router-config/src/create_router.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -158,7 +158,7 @@ "RouterBreadcrumb", "" ], - "path": "packages/kbn-typed-react-router-config/src/breadcrumbs/create_router_breadcrumb_component.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/create_router_breadcrumb_component.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -175,7 +175,7 @@ "signature": [ "() => UseBreadcrumbs" ], - "path": "packages/kbn-typed-react-router-config/src/breadcrumbs/use_router_breadcrumb.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/use_router_breadcrumb.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -208,7 +208,7 @@ }, ">; element: React.ReactElement>; children: React.ReactElement>; }) => React.JSX.Element" ], - "path": "packages/kbn-typed-react-router-config/src/use_current_route.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -219,7 +219,7 @@ "tags": [], "label": "{\n match,\n element,\n children,\n}", "description": [], - "path": "packages/kbn-typed-react-router-config/src/use_current_route.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -248,7 +248,7 @@ }, ">" ], - "path": "packages/kbn-typed-react-router-config/src/use_current_route.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx", "deprecated": false, "trackAdoption": false }, @@ -262,7 +262,7 @@ "signature": [ "React.ReactElement>" ], - "path": "packages/kbn-typed-react-router-config/src/use_current_route.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx", "deprecated": false, "trackAdoption": false }, @@ -276,7 +276,7 @@ "signature": [ "React.ReactElement>" ], - "path": "packages/kbn-typed-react-router-config/src/use_current_route.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx", "deprecated": false, "trackAdoption": false } @@ -296,7 +296,7 @@ "signature": [ "() => React.ReactElement> | null" ], - "path": "packages/kbn-typed-react-router-config/src/outlet.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/outlet.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -313,7 +313,7 @@ "signature": [ "({\n element,\n children,\n}: { element: React.ReactElement>; children: React.ReactNode; }) => React.JSX.Element" ], - "path": "packages/kbn-typed-react-router-config/src/outlet.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/outlet.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -324,7 +324,7 @@ "tags": [], "label": "{\n element,\n children,\n}", "description": [], - "path": "packages/kbn-typed-react-router-config/src/outlet.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/outlet.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -338,7 +338,7 @@ "signature": [ "React.ReactElement>" ], - "path": "packages/kbn-typed-react-router-config/src/outlet.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/outlet.tsx", "deprecated": false, "trackAdoption": false }, @@ -352,7 +352,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/outlet.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/outlet.tsx", "deprecated": false, "trackAdoption": false } @@ -388,7 +388,7 @@ }, ">; children: React.ReactNode; }) => React.JSX.Element" ], - "path": "packages/kbn-typed-react-router-config/src/use_router.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_router.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -399,7 +399,7 @@ "tags": [], "label": "{\n router,\n children,\n}", "description": [], - "path": "packages/kbn-typed-react-router-config/src/use_router.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_router.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -428,7 +428,7 @@ }, ">" ], - "path": "packages/kbn-typed-react-router-config/src/use_router.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_router.tsx", "deprecated": false, "trackAdoption": false }, @@ -442,7 +442,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/use_router.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_router.tsx", "deprecated": false, "trackAdoption": false } @@ -462,7 +462,7 @@ "signature": [ "() => React.JSX.Element" ], - "path": "packages/kbn-typed-react-router-config/src/route_renderer.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/route_renderer.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -497,7 +497,7 @@ "History", "; children?: React.ReactNode; }) => React.JSX.Element" ], - "path": "packages/kbn-typed-react-router-config/src/router_provider.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/router_provider.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -508,7 +508,7 @@ "tags": [], "label": "{\n children,\n router,\n history,\n}", "description": [], - "path": "packages/kbn-typed-react-router-config/src/router_provider.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/router_provider.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -537,7 +537,7 @@ }, ">" ], - "path": "packages/kbn-typed-react-router-config/src/router_provider.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/router_provider.tsx", "deprecated": false, "trackAdoption": false }, @@ -552,7 +552,7 @@ "History", "" ], - "path": "packages/kbn-typed-react-router-config/src/router_provider.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/router_provider.tsx", "deprecated": false, "trackAdoption": false }, @@ -566,7 +566,7 @@ "signature": [ "string | number | boolean | React.ReactElement> | Iterable | React.ReactPortal | null | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/router_provider.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/router_provider.tsx", "deprecated": false, "trackAdoption": false } @@ -602,7 +602,7 @@ }, ">; element: React.ReactElement>; }" ], - "path": "packages/kbn-typed-react-router-config/src/use_current_route.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -635,7 +635,7 @@ }, ">[]" ], - "path": "packages/kbn-typed-react-router-config/src/use_match_routes.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_match_routes.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -649,7 +649,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/use_match_routes.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_match_routes.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -676,7 +676,7 @@ }, " | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/use_params.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_params.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -690,7 +690,7 @@ "signature": [ "any[]" ], - "path": "packages/kbn-typed-react-router-config/src/use_params.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_params.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -709,7 +709,7 @@ "signature": [ "() => string" ], - "path": "packages/kbn-typed-react-router-config/src/use_route_path.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_route_path.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -734,7 +734,7 @@ }, "" ], - "path": "packages/kbn-typed-react-router-config/src/use_router.tsx", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/use_router.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -750,7 +750,7 @@ "tags": [], "label": "DefaultOutput", "description": [], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -764,7 +764,7 @@ "signature": [ "{}" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -778,7 +778,7 @@ "signature": [ "{}" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -792,7 +792,7 @@ "tags": [], "label": "Route", "description": [], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -806,7 +806,7 @@ "signature": [ "React.ReactElement>" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -827,7 +827,7 @@ }, " | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -842,7 +842,7 @@ "Type", " | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -856,7 +856,7 @@ "signature": [ "Record> | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -870,7 +870,7 @@ "signature": [ "React.ReactElement> | undefined" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -894,7 +894,7 @@ }, "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -908,7 +908,7 @@ "signature": [ "TRoute & { path: string; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false }, @@ -926,7 +926,7 @@ "TypeOf", " : {}; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -950,7 +950,7 @@ }, "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1000,7 +1000,7 @@ }, ">>; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1014,7 +1014,7 @@ "signature": [ "TPath" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1030,7 +1030,7 @@ "Location", "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1084,7 +1084,7 @@ }, ">>; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1099,7 +1099,7 @@ "Location", "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1271,7 +1271,7 @@ }, "; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1285,7 +1285,7 @@ "signature": [ "TPath" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1301,7 +1301,7 @@ "Location", "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1473,7 +1473,7 @@ }, "; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1487,7 +1487,7 @@ "signature": [ "TPath" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1503,7 +1503,7 @@ "Location", "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1518,7 +1518,7 @@ "signature": [ "TOptional" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1690,7 +1690,7 @@ }, "; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1704,7 +1704,7 @@ "signature": [ "T1" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1719,7 +1719,7 @@ "signature": [ "T2" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1735,7 +1735,7 @@ "Location", "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1907,7 +1907,7 @@ }, "; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1921,7 +1921,7 @@ "signature": [ "T1" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1936,7 +1936,7 @@ "signature": [ "T2" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1951,7 +1951,7 @@ "signature": [ "T3" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1967,7 +1967,7 @@ "Location", "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2139,7 +2139,7 @@ }, "; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2153,7 +2153,7 @@ "signature": [ "TPath" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2169,7 +2169,7 @@ "Location", "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2184,7 +2184,7 @@ "signature": [ "TOptional" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2226,7 +2226,7 @@ }, ">) => string" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2240,7 +2240,7 @@ "signature": [ "TPath" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2270,7 +2270,7 @@ }, ">" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2296,7 +2296,7 @@ }, ") => string" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2316,7 +2316,7 @@ "text": "RouteWithPath" } ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2342,7 +2342,7 @@ }, "" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2356,7 +2356,7 @@ "signature": [ "string" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2391,7 +2391,7 @@ "text": "Route" } ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2402,7 +2402,7 @@ "tags": [], "label": "path", "description": [], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false } @@ -2425,7 +2425,7 @@ "ValuesType", "[key]>; }>[]" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2440,7 +2440,7 @@ "signature": [ "MapRoutes[TPath]" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2470,7 +2470,7 @@ "text": "DefaultOutput" } ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2505,7 +2505,7 @@ }, " : never); }>" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2528,7 +2528,7 @@ }, "; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2545,7 +2545,7 @@ "RequiredKeys", " extends never ? [] | [TObject] : [TObject]" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2562,7 +2562,7 @@ "RequiredKeys", " extends never ? never : { params: TObject; }" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2593,7 +2593,7 @@ }, " : {})" ], - "path": "packages/kbn-typed-react-router-config/src/types/index.ts", + "path": "src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index e71c62047b2e0..8b37e9e8f569f 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index 91519393d174e..a4275ca9ee831 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index 8ef4bbb1b2dd9..cbc44f78bdda1 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 50f9bb53556b5..47e2b0139c78d 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index ecf1da9eed3f9..cb632ed4b9ba2 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 9adf0481ac2ce..e35d019f07615 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.devdocs.json b/api_docs/kbn_unified_field_list.devdocs.json index 09eff21c8fa75..8d9c7a262b95d 100644 --- a/api_docs/kbn_unified_field_list.devdocs.json +++ b/api_docs/kbn_unified_field_list.devdocs.json @@ -4656,7 +4656,7 @@ "label": "type", "description": [], "signature": [ - "\"normal\" | \"other\" | undefined" + "\"other\" | \"normal\" | undefined" ], "path": "packages/kbn-unified-field-list/src/components/field_stats/field_top_values_bucket.tsx", "deprecated": false, diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index a25c3dc4592e4..240929b15744e 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index a39c3736b9066..32f49d404eca1 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_prompt.devdocs.json b/api_docs/kbn_unsaved_changes_prompt.devdocs.json index 8db4d70da4ce5..dcbe7fbf4a5ab 100644 --- a/api_docs/kbn_unsaved_changes_prompt.devdocs.json +++ b/api_docs/kbn_unsaved_changes_prompt.devdocs.json @@ -13,7 +13,7 @@ "signature": [ "({ hasUnsavedChanges, openConfirm, history, http, navigateToUrl, messageText, titleText, confirmButtonText, cancelButtonText, }: Props) => void" ], - "path": "packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx", + "path": "src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -27,7 +27,7 @@ "signature": [ "Props" ], - "path": "packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx", + "path": "src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true diff --git a/api_docs/kbn_unsaved_changes_prompt.mdx b/api_docs/kbn_unsaved_changes_prompt.mdx index 58ddf3fd5c7a5..3ca49fe34dfb6 100644 --- a/api_docs/kbn_unsaved_changes_prompt.mdx +++ b/api_docs/kbn_unsaved_changes_prompt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-prompt title: "@kbn/unsaved-changes-prompt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-prompt plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-prompt'] --- import kbnUnsavedChangesPromptObj from './kbn_unsaved_changes_prompt.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index a00d54551c2d0..353549cfbcb93 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.devdocs.json b/api_docs/kbn_user_profile_components.devdocs.json index 2824a1c269765..05679e867fa4d 100644 --- a/api_docs/kbn_user_profile_components.devdocs.json +++ b/api_docs/kbn_user_profile_components.devdocs.json @@ -1409,7 +1409,7 @@ "EuiSelectableLIOption", "<{}>> & ", "CommonProps", - " & { label: string; searchableLabel?: string | undefined; key?: string | undefined; checked?: \"mixed\" | \"on\" | \"off\" | undefined; disabled?: boolean | undefined; isGroupLabel?: false | undefined; prepend?: React.ReactNode; append?: React.ReactNode; ref?: ((optionIndex: number) => void) | undefined; id?: undefined; data?: { [key: string]: any; } | undefined; textWrap?: \"wrap\" | \"truncate\" | undefined; truncationProps?: Partial void) | undefined; id?: undefined; data?: { [key: string]: any; } | undefined; textWrap?: \"wrap\" | \"truncate\" | undefined; truncationProps?: Partial> | undefined; toolTipContent?: React.ReactNode; toolTipProps?: Partial void" + ], + "path": "packages/kbn-zod-helpers/src/non_empty_string.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/zod-helpers", + "id": "def-common.isNonEmptyString.$1", + "type": "string", + "tags": [], + "label": "input", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-zod-helpers/src/non_empty_string.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/zod-helpers", + "id": "def-common.isNonEmptyString.$2", + "type": "Object", + "tags": [], + "label": "ctx", + "description": [], + "signature": [ + "Zod.RefinementCtx" + ], + "path": "packages/kbn-zod-helpers/src/non_empty_string.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/zod-helpers", "id": "def-common.isValidDateMath", diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index 0885ecaca7222..982efdf962506 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-detection-rule-management](https://github.com/orgs/el | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 20 | 0 | 10 | 0 | +| 23 | 0 | 13 | 0 | ## Common diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 6aff7fa949e00..caad048826b9f 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json index c893f92835185..f9f20e71faba9 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -966,6 +966,14 @@ { "plugin": "observabilityShared", "path": "x-pack/plugins/observability_solution/observability_shared/public/components/header_menu/header_menu_portal.tsx" + }, + { + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/components/header_menu/header_menu_portal.tsx" + }, + { + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/components/header_menu/header_menu_portal.tsx" } ], "children": [ @@ -1478,19 +1486,19 @@ "references": [ { "plugin": "aiAssistantManagementSelection", - "path": "src/plugins/ai_assistant_management/selection/public/management_section/mount_section.tsx" + "path": "src/platform/plugins/shared/ai_assistant_management/selection/public/management_section/mount_section.tsx" }, { "plugin": "aiAssistantManagementSelection", - "path": "src/plugins/ai_assistant_management/selection/public/management_section/mount_section.tsx" + "path": "src/platform/plugins/shared/ai_assistant_management/selection/public/management_section/mount_section.tsx" }, { "plugin": "observabilityAiAssistantManagement", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_management/public/app.tsx" + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/app.tsx" }, { "plugin": "observabilityAiAssistantManagement", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_management/public/app.tsx" + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/app.tsx" } ], "children": [ diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index be05b56eda8bb..fe1dec8543c14 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index 5396d6f8ed22b..e776dc2bbace7 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index 2e7cf52c6ee91..5cc4587128450 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.devdocs.json b/api_docs/lens.devdocs.json index 17f5de4a4d6e4..f896f44527892 100644 --- a/api_docs/lens.devdocs.json +++ b/api_docs/lens.devdocs.json @@ -132,14 +132,6 @@ "text": "PublishingSubject" }, " | undefined; resetUnsavedChanges?: (() => boolean) | undefined; serializeState: () => ", - { - "pluginId": "@kbn/utility-types", - "scope": "common", - "docId": "kibKbnUtilityTypesPluginApi", - "section": "def-common.MaybePromise", - "text": "MaybePromise" - }, - "<", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -385,7 +377,7 @@ "section": "def-common.DynamicActionsState", "text": "DynamicActionsState" }, - "; } | undefined; isNewPanel?: boolean | undefined; }>>; snapshotRuntimeState: () => { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", + "; } | undefined; isNewPanel?: boolean | undefined; }>; snapshotRuntimeState: () => { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -689,7 +681,15 @@ "section": "def-common.AggregateQuery", "text": "AggregateQuery" }, - " | undefined>; rendered$: ", + " | undefined>; searchSessionId$: ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishingSubject", + "text": "PublishingSubject" + }, + "; rendered$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -1721,7 +1721,7 @@ "label": "mode", "description": [], "signature": [ - "\"custom\" | \"full\" | \"dataBounds\"" + "\"full\" | \"custom\" | \"dataBounds\"" ], "path": "src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts", "deprecated": false, @@ -6678,7 +6678,7 @@ "\nReact component which can be used to embed a Lens visualization into another application.\nSee `x-pack/examples/embedded_lens_example` for exemplary usage.\n\nThis API might undergo breaking changes even in minor versions.\n" ], "signature": [ - "({ title, withDefaultActions, extraActions, showInspector, syncColors, syncCursor, syncTooltips, viewMode, id, query, filters, timeRange, disabledActions, ...props }: { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", + "({ title, withDefaultActions, extraActions, showInspector, syncColors, syncCursor, syncTooltips, viewMode, id, query, filters, timeRange, disabledActions, searchSessionId, hidePanelTitles, ...props }: { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -10352,7 +10352,7 @@ "label": "changeType", "description": [], "signature": [ - "\"extended\" | \"layers\" | \"initial\" | \"unchanged\" | \"reduced\" | \"reorder\"" + "\"layers\" | \"initial\" | \"unchanged\" | \"reduced\" | \"extended\" | \"reorder\"" ], "path": "x-pack/plugins/lens/public/types.ts", "deprecated": false, @@ -10643,7 +10643,7 @@ "\nThe change type indicates what was changed in this table compared to the currently active table of this layer." ], "signature": [ - "\"extended\" | \"layers\" | \"initial\" | \"unchanged\" | \"reduced\" | \"reorder\"" + "\"layers\" | \"initial\" | \"unchanged\" | \"reduced\" | \"extended\" | \"reorder\"" ], "path": "x-pack/plugins/lens/public/types.ts", "deprecated": false, @@ -15729,7 +15729,7 @@ "label": "AxisExtentMode", "description": [], "signature": [ - "\"custom\" | \"full\" | \"dataBounds\"" + "\"full\" | \"custom\" | \"dataBounds\"" ], "path": "src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts", "deprecated": false, @@ -17756,14 +17756,6 @@ "text": "PublishingSubject" }, " | undefined; resetUnsavedChanges?: (() => boolean) | undefined; serializeState: () => ", - { - "pluginId": "@kbn/utility-types", - "scope": "common", - "docId": "kibKbnUtilityTypesPluginApi", - "section": "def-common.MaybePromise", - "text": "MaybePromise" - }, - "<", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -18009,7 +18001,7 @@ "section": "def-common.DynamicActionsState", "text": "DynamicActionsState" }, - "; } | undefined; isNewPanel?: boolean | undefined; }>>; snapshotRuntimeState: () => { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", + "; } | undefined; isNewPanel?: boolean | undefined; }>; snapshotRuntimeState: () => { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -18313,7 +18305,15 @@ "section": "def-common.AggregateQuery", "text": "AggregateQuery" }, - " | undefined>; rendered$: ", + " | undefined>; searchSessionId$: ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishingSubject", + "text": "PublishingSubject" + }, + "; rendered$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -20310,14 +20310,6 @@ "text": "PublishingSubject" }, " | undefined; resetUnsavedChanges?: (() => boolean) | undefined; serializeState: () => ", - { - "pluginId": "@kbn/utility-types", - "scope": "common", - "docId": "kibKbnUtilityTypesPluginApi", - "section": "def-common.MaybePromise", - "text": "MaybePromise" - }, - "<", { "pluginId": "@kbn/presentation-containers", "scope": "public", @@ -20563,7 +20555,7 @@ "section": "def-common.DynamicActionsState", "text": "DynamicActionsState" }, - "; } | undefined; isNewPanel?: boolean | undefined; }>>; snapshotRuntimeState: () => { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", + "; } | undefined; isNewPanel?: boolean | undefined; }>; snapshotRuntimeState: () => { id?: string | undefined; className?: string | undefined; style?: React.CSSProperties | undefined; title?: string | undefined; description?: string | undefined; viewMode?: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -20867,7 +20859,15 @@ "section": "def-common.AggregateQuery", "text": "AggregateQuery" }, - " | undefined>; rendered$: ", + " | undefined>; searchSessionId$: ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "public", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-public.PublishingSubject", + "text": "PublishingSubject" + }, + "; rendered$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index e90abb70f6549..f6f705db3d514 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.devdocs.json b/api_docs/license_api_guard.devdocs.json index 0c48a2c09fc39..216fc1eea6fb1 100644 --- a/api_docs/license_api_guard.devdocs.json +++ b/api_docs/license_api_guard.devdocs.json @@ -17,7 +17,7 @@ "tags": [], "label": "License", "description": [], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -31,7 +31,7 @@ "signature": [ "({ pluginName, logger }: SetupSettings) => void" ], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -45,7 +45,7 @@ "signature": [ "SetupSettings" ], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -63,7 +63,7 @@ "signature": [ "({ pluginId, minimumLicenseType, licensing }: StartSettings) => void" ], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -77,7 +77,7 @@ "signature": [ "StartSettings" ], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -145,7 +145,7 @@ }, ">" ], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -168,7 +168,7 @@ }, ">" ], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -183,7 +183,7 @@ "tags": [], "label": "isEsSecurityEnabled", "description": [], - "path": "x-pack/plugins/license_api_guard/server/license.ts", + "path": "x-pack/platform/plugins/private/license_api_guard/server/license.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 7229770a2ce29..edc75130a3629 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.devdocs.json b/api_docs/license_management.devdocs.json index 308585a34a03d..4ade943d371d7 100644 --- a/api_docs/license_management.devdocs.json +++ b/api_docs/license_management.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "LicenseManagementUIPluginSetup", "description": [], - "path": "x-pack/plugins/license_management/public/plugin.ts", + "path": "x-pack/platform/plugins/shared/license_management/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -25,7 +25,7 @@ "tags": [], "label": "enabled", "description": [], - "path": "x-pack/plugins/license_management/public/plugin.ts", + "path": "x-pack/platform/plugins/shared/license_management/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -40,7 +40,7 @@ "LicenseManagementLocator", " | undefined" ], - "path": "x-pack/plugins/license_management/public/plugin.ts", + "path": "x-pack/platform/plugins/shared/license_management/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -58,7 +58,7 @@ "signature": [ "void" ], - "path": "x-pack/plugins/license_management/public/plugin.ts", + "path": "x-pack/platform/plugins/shared/license_management/public/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "start", diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 704efebb74b73..8a7cd370e2883 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.devdocs.json b/api_docs/licensing.devdocs.json index f9770fc80ae0a..1fb7433e760d1 100644 --- a/api_docs/licensing.devdocs.json +++ b/api_docs/licensing.devdocs.json @@ -812,47 +812,47 @@ }, { "plugin": "licenseManagement", - "path": "x-pack/plugins/license_management/public/plugin.ts" + "path": "x-pack/platform/plugins/shared/license_management/public/plugin.ts" }, { "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/public/plugin.ts" }, - { - "plugin": "crossClusterReplication", - "path": "x-pack/plugins/cross_cluster_replication/public/plugin.ts" - }, { "plugin": "logstash", "path": "x-pack/plugins/logstash/public/plugin.ts" }, { - "plugin": "painlessLab", - "path": "x-pack/plugins/painless_lab/public/plugin.tsx" + "plugin": "slo", + "path": "x-pack/plugins/observability_solution/slo/public/plugin.ts" }, { - "plugin": "painlessLab", - "path": "x-pack/plugins/painless_lab/public/plugin.tsx" + "plugin": "crossClusterReplication", + "path": "x-pack/platform/plugins/private/cross_cluster_replication/public/plugin.ts" }, { - "plugin": "searchprofiler", - "path": "x-pack/plugins/searchprofiler/public/plugin.ts" + "plugin": "painlessLab", + "path": "x-pack/platform/plugins/private/painless_lab/public/plugin.tsx" }, { - "plugin": "searchprofiler", - "path": "x-pack/plugins/searchprofiler/public/plugin.ts" + "plugin": "painlessLab", + "path": "x-pack/platform/plugins/private/painless_lab/public/plugin.tsx" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/public/plugin.ts" + "path": "x-pack/platform/plugins/private/watcher/public/plugin.ts" }, { "plugin": "watcher", - "path": "x-pack/plugins/watcher/public/plugin.ts" + "path": "x-pack/platform/plugins/private/watcher/public/plugin.ts" }, { - "plugin": "slo", - "path": "x-pack/plugins/observability_solution/slo/public/plugin.ts" + "plugin": "searchprofiler", + "path": "x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts" + }, + { + "plugin": "searchprofiler", + "path": "x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts" } ] }, @@ -2194,10 +2194,6 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/plugin.ts" }, - { - "plugin": "remoteClusters", - "path": "x-pack/plugins/remote_clusters/server/plugin.ts" - }, { "plugin": "ml", "path": "x-pack/platform/plugins/shared/ml/server/plugin.ts" @@ -2206,13 +2202,9 @@ "plugin": "graph", "path": "x-pack/plugins/graph/server/plugin.ts" }, - { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/server/services/license.ts" - }, { "plugin": "osquery", - "path": "x-pack/plugins/osquery/server/handlers/action/create_action_service.ts" + "path": "x-pack/platform/plugins/shared/osquery/server/handlers/action/create_action_service.ts" }, { "plugin": "securitySolution", @@ -2230,22 +2222,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.ts" }, - { - "plugin": "painlessLab", - "path": "x-pack/plugins/painless_lab/server/services/license.ts" - }, - { - "plugin": "rollup", - "path": "x-pack/plugins/rollup/server/services/license.ts" - }, - { - "plugin": "searchprofiler", - "path": "x-pack/plugins/searchprofiler/server/plugin.ts" - }, - { - "plugin": "snapshotRestore", - "path": "x-pack/plugins/snapshot_restore/server/services/license.ts" - }, { "plugin": "upgradeAssistant", "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts" @@ -2274,6 +2250,26 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts" }, + { + "plugin": "remoteClusters", + "path": "x-pack/platform/plugins/private/remote_clusters/server/plugin.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/platform/plugins/private/index_lifecycle_management/server/services/license.ts" + }, + { + "plugin": "painlessLab", + "path": "x-pack/platform/plugins/private/painless_lab/server/services/license.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/platform/plugins/private/rollup/server/services/license.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/platform/plugins/private/snapshot_restore/server/services/license.ts" + }, { "plugin": "transform", "path": "x-pack/platform/plugins/private/transform/server/services/license.ts" @@ -2282,6 +2278,10 @@ "plugin": "aiops", "path": "x-pack/platform/plugins/shared/aiops/server/plugin.ts" }, + { + "plugin": "searchprofiler", + "path": "x-pack/platform/plugins/shared/searchprofiler/server/plugin.ts" + }, { "plugin": "actions", "path": "x-pack/plugins/actions/server/lib/license_state.test.ts" diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index cb2fa10f2037f..e8e6ffee132b7 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 3624254804ce6..7ad5dc1d481c4 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index c01f7076c28f9..1fd835d99962d 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/llm_tasks.devdocs.json b/api_docs/llm_tasks.devdocs.json index be33e1e8cbf53..39638b49a1e87 100644 --- a/api_docs/llm_tasks.devdocs.json +++ b/api_docs/llm_tasks.devdocs.json @@ -24,7 +24,7 @@ "description": [ "\nDescribes public llmTasks plugin contract returned at the `setup` stage." ], - "path": "x-pack/plugins/ai_infra/llm_tasks/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/llm_tasks/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -40,7 +40,7 @@ "description": [ "\nDescribes public llmTasks plugin contract returned at the `start` stage." ], - "path": "x-pack/plugins/ai_infra/llm_tasks/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/llm_tasks/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -56,7 +56,7 @@ "signature": [ "() => Promise" ], - "path": "x-pack/plugins/ai_infra/llm_tasks/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/llm_tasks/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -80,7 +80,7 @@ "RetrieveDocumentationResult", ">" ], - "path": "x-pack/plugins/ai_infra/llm_tasks/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/llm_tasks/server/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -95,7 +95,7 @@ "signature": [ "RetrieveDocumentationParams" ], - "path": "x-pack/plugins/ai_infra/llm_tasks/server/tasks/retrieve_documentation/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/llm_tasks/server/tasks/retrieve_documentation/types.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/llm_tasks.mdx b/api_docs/llm_tasks.mdx index 2adb45f4aaf45..d0463a082693c 100644 --- a/api_docs/llm_tasks.mdx +++ b/api_docs/llm_tasks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/llmTasks title: "llmTasks" image: https://source.unsplash.com/400x175/?github description: API docs for the llmTasks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'llmTasks'] --- import llmTasksObj from './llm_tasks.devdocs.json'; diff --git a/api_docs/logs_data_access.mdx b/api_docs/logs_data_access.mdx index c1e10f806bb00..1f24f829d43cc 100644 --- a/api_docs/logs_data_access.mdx +++ b/api_docs/logs_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsDataAccess title: "logsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the logsDataAccess plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsDataAccess'] --- import logsDataAccessObj from './logs_data_access.devdocs.json'; diff --git a/api_docs/logs_explorer.mdx b/api_docs/logs_explorer.mdx index 6149d530e0934..6bba8fb1758aa 100644 --- a/api_docs/logs_explorer.mdx +++ b/api_docs/logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsExplorer title: "logsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logsExplorer plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsExplorer'] --- import logsExplorerObj from './logs_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.devdocs.json b/api_docs/logs_shared.devdocs.json index 9f8ec3fc78fad..f0c1e97569f1b 100644 --- a/api_docs/logs_shared.devdocs.json +++ b/api_docs/logs_shared.devdocs.json @@ -344,23 +344,7 @@ "label": "LogColumnHeadersWrapper", "description": [], "signature": [ - "React.ForwardRefExoticComponent<(Omit & Partial>, \"theme\"> & { theme?: ", - { - "pluginId": "@kbn/react-kibana-context-styled", - "scope": "common", - "docId": "kibKbnReactKibanaContextStyledPluginApi", - "section": "def-common.EuiTheme", - "text": "EuiTheme" - }, - " | undefined; } & { as?: React.ComponentType | keyof JSX.IntrinsicElements | undefined; forwardedAs?: React.ComponentType | keyof JSX.IntrinsicElements | undefined; }, \"ref\"> | Omit & Partial>, \"theme\"> & { theme?: ", - { - "pluginId": "@kbn/react-kibana-context-styled", - "scope": "common", - "docId": "kibKbnReactKibanaContextStyledPluginApi", - "section": "def-common.EuiTheme", - "text": "EuiTheme" - }, - " | undefined; } & { children?: React.ReactNode; } & { as?: React.ComponentType | keyof JSX.IntrinsicElements | undefined; forwardedAs?: React.ComponentType | keyof JSX.IntrinsicElements | undefined; }, \"ref\">) & React.RefAttributes<{}>>" + "React.ForwardRefExoticComponent & React.RefAttributes<{}>>" ], "path": "x-pack/plugins/observability_solution/logs_shared/public/index.ts", "deprecated": false, diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index aadc044bb6f73..91d9421ce0f86 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.devdocs.json b/api_docs/management.devdocs.json index 5e0f24e61dca5..1eb477d2ca7d3 100644 --- a/api_docs/management.devdocs.json +++ b/api_docs/management.devdocs.json @@ -20,7 +20,7 @@ " extends ", "ManagementItem" ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -46,7 +46,7 @@ "Unmount", ">" ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -67,7 +67,7 @@ "text": "ManagementAppMountParams" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -80,7 +80,7 @@ "tags": [], "label": "basePath", "description": [], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false }, @@ -94,7 +94,7 @@ "signature": [ "string[]" ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false }, @@ -108,7 +108,7 @@ "signature": [ "any" ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -128,7 +128,7 @@ "text": "RegisterManagementAppArgs" } ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -157,7 +157,7 @@ " extends ", "ManagementItem" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -178,7 +178,7 @@ }, "[]" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false }, @@ -192,7 +192,7 @@ "signature": [ "any" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -206,7 +206,7 @@ "signature": [ "RegisterManagementSectionArgs" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -239,7 +239,7 @@ "text": "ManagementApp" } ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -261,7 +261,7 @@ }, ", \"basePath\">" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -287,7 +287,7 @@ }, " | undefined" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -301,7 +301,7 @@ "signature": [ "string" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -327,7 +327,7 @@ }, "[]" ], - "path": "src/plugins/management/public/utils/management_section.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_section.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -346,7 +346,7 @@ "tags": [], "label": "DefinedSections", "description": [], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -366,7 +366,7 @@ "text": "ManagementSection" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -386,7 +386,7 @@ "text": "ManagementSection" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -406,7 +406,7 @@ "text": "ManagementSection" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -426,7 +426,7 @@ "text": "ManagementSection" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -446,7 +446,7 @@ "text": "ManagementSection" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -466,7 +466,7 @@ "text": "ManagementSection" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -480,7 +480,7 @@ "tags": [], "label": "ManagementAppMountParams", "description": [], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -491,7 +491,7 @@ "tags": [], "label": "basePath", "description": [], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -505,7 +505,7 @@ "signature": [ "HTMLElement" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -527,7 +527,7 @@ }, "[]) => void" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -548,7 +548,7 @@ }, "[]" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -573,7 +573,7 @@ }, "" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -593,7 +593,7 @@ "text": "ThemeServiceSetup" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -618,7 +618,7 @@ }, ">" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": true, "trackAdoption": false, "references": [ @@ -649,7 +649,7 @@ " extends ", "CreateManagementItemArgs" ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -675,7 +675,7 @@ "Unmount", ">" ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -696,7 +696,7 @@ "text": "ManagementAppMountParams" } ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -709,7 +709,7 @@ "tags": [], "label": "basePath", "description": [], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false }, @@ -723,7 +723,7 @@ "signature": [ "string[] | undefined" ], - "path": "src/plugins/management/public/utils/management_app.ts", + "path": "src/platform/plugins/shared/management/public/utils/management_app.ts", "deprecated": false, "trackAdoption": false } @@ -743,7 +743,7 @@ "signature": [ "\"management\"" ], - "path": "src/plugins/management/common/contants.ts", + "path": "src/platform/plugins/shared/management/common/contants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -757,7 +757,7 @@ "tags": [], "label": "ManagementSetup", "description": [], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -771,7 +771,7 @@ "signature": [ "SectionsServiceSetup" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -794,7 +794,7 @@ "ManagementAppLocatorParams", ">" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -809,7 +809,7 @@ "tags": [], "label": "ManagementStart", "description": [], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -825,7 +825,7 @@ "NavigationCardsSubject", ") => void" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -839,7 +839,7 @@ "signature": [ "NavigationCardsSubject" ], - "path": "src/plugins/management/public/types.ts", + "path": "src/platform/plugins/shared/management/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -885,7 +885,7 @@ "ManagementAppLocatorParams", ">" ], - "path": "src/plugins/management/common/locator.ts", + "path": "src/platform/plugins/shared/management/common/locator.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 02f48da672886..06cf55fc6d9af 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 13be2f6257719..b960b5eef15b5 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index acb7b46255e2f..2b6ba004aba52 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 59a57b0fade86..86a41da7df636 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 792589e932c7e..6c651a76fbece 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index 17d3e33d2eba0..2d5f3a163eed5 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 5b7f69096f7c8..5b4f6788cc6b9 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index 782c0b380c1f9..8092594b096f9 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index cfa72847f2677..7df899900460d 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 5cae7cf8fb46f..462a693eb5744 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 186c617fbef8d..08d0ca50b6c9f 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 3e281d9a87f84..7d21c39ffa135 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json index 3dc14fc3d10b8..51eb9e06f65e9 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -15,7 +15,7 @@ "AutocompleteFieldProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -29,7 +29,7 @@ "signature": [ "AutocompleteFieldProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -56,7 +56,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/build_es_query/build_es_query.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/build_es_query.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -70,7 +70,7 @@ "signature": [ "BuildEsQueryArgs" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/build_es_query/build_es_query.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/build_es_query.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -106,7 +106,7 @@ ") => ", "BucketSize" ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/calculate_bucket_size.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/calculate_bucket_size.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -126,7 +126,7 @@ "text": "TimeRange" } ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/calculate_bucket_size.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/calculate_bucket_size.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -147,7 +147,7 @@ "text": "TimeBuckets" } ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/calculate_bucket_size.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/calculate_bucket_size.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -170,7 +170,7 @@ "Maybe", "; defaultValue?: string | undefined; extended?: boolean | undefined; }) => ConvertedDuration" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -181,7 +181,7 @@ "tags": [], "label": "{\n unit,\n microseconds,\n defaultValue = NOT_AVAILABLE_LABEL,\n extended,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -196,7 +196,7 @@ "\"microseconds\" | ", "TimeUnit" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false }, @@ -210,7 +210,7 @@ "signature": [ "number | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false }, @@ -224,7 +224,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false }, @@ -238,7 +238,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false } @@ -274,7 +274,7 @@ }, " | undefined; list: () => string[]; } & { getFormatter: () => () => string; registerFormatter: () => void; list: () => string[]; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/observability_rule_type_registry_mock.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/observability_rule_type_registry_mock.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -300,7 +300,7 @@ ") => ", "LinkProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/hooks/create_use_rules_link.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/hooks/create_use_rules_link.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -319,7 +319,7 @@ "DatePickerProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -333,7 +333,7 @@ "signature": [ "DatePickerProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -352,7 +352,7 @@ "signature": [ "({ children }: { children: React.ReactElement>; }) => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/context/date_picker_context/date_picker_context.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/context/date_picker_context/date_picker_context.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -363,7 +363,7 @@ "tags": [], "label": "{ children }", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/context/date_picker_context/date_picker_context.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/context/date_picker_context/date_picker_context.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -377,7 +377,7 @@ "signature": [ "React.ReactElement>" ], - "path": "x-pack/plugins/observability_solution/observability/public/context/date_picker_context/date_picker_context.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/context/date_picker_context/date_picker_context.tsx", "deprecated": false, "trackAdoption": false } @@ -397,7 +397,7 @@ "signature": [ "(ruleTypeId?: string | undefined, evaluationValue?: number | undefined) => string | number" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/format_alert_evaluation_value.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/format_alert_evaluation_value.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -411,7 +411,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/format_alert_evaluation_value.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/format_alert_evaluation_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -426,7 +426,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/format_alert_evaluation_value.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/format_alert_evaluation_value.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -445,7 +445,7 @@ "signature": [ "(query: Record) => string" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -459,7 +459,7 @@ "signature": [ "Record" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -493,7 +493,7 @@ "text": "AlertSummaryTimeRange" } ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -513,7 +513,7 @@ "text": "TimeRange" } ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -528,7 +528,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -543,7 +543,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -562,7 +562,7 @@ "signature": [ "({\n traceId,\n rangeFrom,\n rangeTo,\n}: { traceId: string; rangeFrom: string; rangeTo: string; }) => string" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -573,7 +573,7 @@ "tags": [], "label": "{\n traceId,\n rangeFrom,\n rangeTo,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -584,7 +584,7 @@ "tags": [], "label": "traceId", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.ts", "deprecated": false, "trackAdoption": false }, @@ -595,7 +595,7 @@ "tags": [], "label": "rangeFrom", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.ts", "deprecated": false, "trackAdoption": false }, @@ -606,7 +606,7 @@ "tags": [], "label": "rangeTo", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.ts", "deprecated": false, "trackAdoption": false } @@ -628,7 +628,7 @@ "CoreVitalProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -642,7 +642,7 @@ "signature": [ "CoreVitalProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -671,7 +671,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/helpers/get_group.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/helpers/get_group.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -686,7 +686,7 @@ "Group", "[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/helpers/get_group.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/helpers/get_group.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -701,7 +701,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/helpers/get_group.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/helpers/get_group.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -720,7 +720,7 @@ "signature": [ "React.LazyExoticComponent<({ alert, rawAlert, alerts, isInApp, observabilityRuleTypeRegistry, onClose, selectedAlertId, }: AlertsFlyoutProps) => React.JSX.Element | null>" ], - "path": "x-pack/plugins/observability_solution/observability/public/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -754,7 +754,7 @@ "ObservabilityAlertSearchBarProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -768,7 +768,7 @@ "signature": [ "ObservabilityAlertSearchBarProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -807,7 +807,7 @@ "node_modules/@testing-library/dom/types/queries", ", HTMLElement, HTMLElement>" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/test_helper.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/test_helper.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -821,7 +821,7 @@ "signature": [ "React.ReactNode" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/test_helper.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/test_helper.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -851,7 +851,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/test_helper.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/test_helper.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -872,7 +872,7 @@ "RuleConditionChartProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -886,7 +886,7 @@ "signature": [ "RuleConditionChartProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -907,7 +907,7 @@ "RuleFlyoutKueryBarProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -921,7 +921,7 @@ "signature": [ "RuleFlyoutKueryBarProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -942,7 +942,7 @@ "Props", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/threshold.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/threshold.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -956,7 +956,7 @@ "signature": [ "Props" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/threshold.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/threshold.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -977,7 +977,7 @@ "ParsedQuery", "" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -991,7 +991,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/utils/url.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/utils/url.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1022,7 +1022,7 @@ "SeriesIdentifier", ">> | undefined; annotations?: ({ id: string; } & { annotation: { title?: string | undefined; type?: string | undefined; style?: { icon?: string | undefined; color?: string | undefined; line?: { width?: number | undefined; style?: \"dashed\" | \"solid\" | \"dotted\" | undefined; iconPosition?: \"top\" | \"bottom\" | undefined; textDecoration?: \"none\" | \"name\" | undefined; } | undefined; rect?: { fill?: \"inside\" | \"outside\" | undefined; } | undefined; } | undefined; }; '@timestamp': string; message: string; } & { event?: ({ start: string; } & { end?: string | undefined; }) | undefined; tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; monitor?: { id?: string | undefined; } | undefined; slo?: ({ id: string; } & { instanceId?: string | undefined; }) | undefined; host?: { name?: string | undefined; } | undefined; })[] | undefined; }) => React.JSX.Element; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1033,7 +1033,7 @@ "tags": [], "label": "{\n domain,\n editAnnotation,\n slo,\n setEditAnnotation,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1047,7 +1047,7 @@ "signature": [ "({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.synthetics.availability\"; params: { monitorIds: { value: string; label: string; }[]; index: string; } & { tags?: { value: string; label: string; }[] | undefined; projects?: { value: string; label: string; }[] | undefined; filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; good: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; total: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.custom\"; params: { index: string; good: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; total: { metrics: (({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.metric.timeslice\"; params: { index: string; metric: { metrics: (({ name: string; aggregation: \"min\" | \"max\" | \"sum\" | \"avg\" | \"cardinality\" | \"last_value\" | \"std_deviation\"; field: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"doc_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ name: string; aggregation: \"percentile\"; field: string; percentile: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }))[]; equation: string; threshold: number; comparator: \"GT\" | \"GTE\" | \"LT\" | \"LTE\"; }; timestampField: string; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; }); } & { filter?: string | { kqlQuery: string; filters: ({ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; field?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; } & { $state?: any; })[]; } | undefined; dataViewId?: string | undefined; }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; preventInitialBackfill: boolean; } & { syncField?: string | null | undefined; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; groupBy: string | string[]; version: number; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; fiveMinuteBurnRate: number; oneHourBurnRate: number; oneDayBurnRate: number; } & { summaryUpdatedAt?: string | null | undefined; }; groupings: { [x: string]: string | number; }; } & { instanceId?: string | undefined; meta?: { synthetics?: { monitorId: string; locationId: string; configId: string; } | undefined; } | undefined; remote?: { remoteName: string; kibanaUrl: string; } | undefined; }) | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, "trackAdoption": false }, @@ -1061,7 +1061,7 @@ "signature": [ "({ id: string; } & { annotation: { title?: string | undefined; type?: string | undefined; style?: { icon?: string | undefined; color?: string | undefined; line?: { width?: number | undefined; style?: \"dashed\" | \"solid\" | \"dotted\" | undefined; iconPosition?: \"top\" | \"bottom\" | undefined; textDecoration?: \"none\" | \"name\" | undefined; } | undefined; rect?: { fill?: \"inside\" | \"outside\" | undefined; } | undefined; } | undefined; }; '@timestamp': string; message: string; } & { event?: ({ start: string; } & { end?: string | undefined; }) | undefined; tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; monitor?: { id?: string | undefined; } | undefined; slo?: ({ id: string; } & { instanceId?: string | undefined; }) | undefined; host?: { name?: string | undefined; } | undefined; }) | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, "trackAdoption": false }, @@ -1075,7 +1075,7 @@ "signature": [ "((annotation: ({ id: string; } & { annotation: { title?: string | undefined; type?: string | undefined; style?: { icon?: string | undefined; color?: string | undefined; line?: { width?: number | undefined; style?: \"dashed\" | \"solid\" | \"dotted\" | undefined; iconPosition?: \"top\" | \"bottom\" | undefined; textDecoration?: \"none\" | \"name\" | undefined; } | undefined; rect?: { fill?: \"inside\" | \"outside\" | undefined; } | undefined; } | undefined; }; '@timestamp': string; message: string; } & { event?: ({ start: string; } & { end?: string | undefined; }) | undefined; tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; monitor?: { id?: string | undefined; } | undefined; slo?: ({ id: string; } & { instanceId?: string | undefined; }) | undefined; host?: { name?: string | undefined; } | undefined; }) | null) => void) | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1089,7 +1089,7 @@ "signature": [ "({ id: string; } & { annotation: { title?: string | undefined; type?: string | undefined; style?: { icon?: string | undefined; color?: string | undefined; line?: { width?: number | undefined; style?: \"dashed\" | \"solid\" | \"dotted\" | undefined; iconPosition?: \"top\" | \"bottom\" | undefined; textDecoration?: \"none\" | \"name\" | undefined; } | undefined; rect?: { fill?: \"inside\" | \"outside\" | undefined; } | undefined; } | undefined; }; '@timestamp': string; message: string; } & { event?: ({ start: string; } & { end?: string | undefined; }) | undefined; tags?: string[] | undefined; service?: { name?: string | undefined; environment?: string | undefined; version?: string | undefined; } | undefined; monitor?: { id?: string | undefined; } | undefined; slo?: ({ id: string; } & { instanceId?: string | undefined; }) | undefined; host?: { name?: string | undefined; } | undefined; }) | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1107,7 +1107,7 @@ "signature": [ "{ min: string | number; max: string | number; } | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx", "deprecated": false, "trackAdoption": false } @@ -1149,7 +1149,7 @@ }, "[], unknown>>; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_data_views.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_data_views.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1181,7 +1181,7 @@ "text": "AlertSummaryTimeRange" } ], - "path": "x-pack/plugins/observability_solution/observability/public/hooks/use_summary_time_range.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/hooks/use_summary_time_range.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1201,7 +1201,7 @@ "text": "TimeRange" } ], - "path": "x-pack/plugins/observability_solution/observability/public/hooks/use_summary_time_range.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/hooks/use_summary_time_range.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1227,7 +1227,7 @@ "text": "TimeBuckets" } ], - "path": "x-pack/plugins/observability_solution/observability/public/hooks/use_time_buckets.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/hooks/use_time_buckets.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1246,7 +1246,7 @@ "WithKueryAutocompletionLifecycleProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -1260,7 +1260,7 @@ "signature": [ "WithKueryAutocompletionLifecycleProps" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1278,7 +1278,7 @@ "tags": [], "label": "AlertDetailsAppSectionProps", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/pages/alert_details/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/alert_details/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1294,7 +1294,7 @@ "AlertDetailsSource", "[] | undefined>) => void" ], - "path": "x-pack/plugins/observability_solution/observability/public/pages/alert_details/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/pages/alert_details/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1342,7 +1342,7 @@ "text": "FetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1372,7 +1372,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1394,7 +1394,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1408,7 +1408,7 @@ "tags": [], "label": "APMHasDataResponse", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1419,7 +1419,7 @@ "tags": [], "label": "hasData", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1433,7 +1433,7 @@ "signature": [ "ApmIndicesConfig" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1447,7 +1447,7 @@ "tags": [], "label": "ConfigSchema", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1461,7 +1461,7 @@ "signature": [ "{ alertDetails: { logs?: { enabled: boolean; } | undefined; uptime: { enabled: boolean; }; observability?: { enabled: boolean; } | undefined; }; thresholdRule?: { enabled: boolean; } | undefined; ruleFormV2?: { enabled: boolean; } | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -1475,7 +1475,7 @@ "tags": [], "label": "Coordinates", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1486,7 +1486,7 @@ "tags": [], "label": "x", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1500,7 +1500,7 @@ "signature": [ "number | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1524,7 +1524,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1554,7 +1554,7 @@ }, "[T]>" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1575,7 +1575,7 @@ "text": "FetchDataParams" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1607,7 +1607,7 @@ }, "[T]>" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1629,7 +1629,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1645,7 +1645,7 @@ "tags": [], "label": "FetchDataParams", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1659,7 +1659,7 @@ "signature": [ "{ start: number; end: number; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1673,7 +1673,7 @@ "signature": [ "{ start: string; end: string; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1687,7 +1687,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1698,7 +1698,7 @@ "tags": [], "label": "bucketSize", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1709,7 +1709,7 @@ "tags": [], "label": "intervalString", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1723,7 +1723,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1737,7 +1737,7 @@ "tags": [], "label": "FetchDataResponse", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1748,7 +1748,7 @@ "tags": [], "label": "appLink", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1762,7 +1762,7 @@ "tags": [], "label": "HasDataParams", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1776,7 +1776,7 @@ "signature": [ "{ start: number; end: number; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1790,7 +1790,7 @@ "tags": [], "label": "HasDataResponse", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1801,7 +1801,7 @@ "tags": [], "label": "hasData", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1815,7 +1815,7 @@ "tags": [], "label": "InfraLogsHasDataResponse", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1826,7 +1826,7 @@ "tags": [], "label": "hasData", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1837,7 +1837,7 @@ "tags": [], "label": "indices", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1851,7 +1851,7 @@ "tags": [], "label": "InfraMetricsHasDataResponse", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1862,7 +1862,7 @@ "tags": [], "label": "hasData", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1873,7 +1873,7 @@ "tags": [], "label": "indices", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1904,7 +1904,7 @@ "text": "FetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1926,7 +1926,7 @@ }, " & { label: string; }; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1948,7 +1948,7 @@ }, " & { label: string; }; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -1979,7 +1979,7 @@ "text": "FetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2001,7 +2001,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2015,7 +2015,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2030,7 +2030,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2055,7 +2055,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -2069,7 +2069,7 @@ "tags": [], "label": "MetricsFetchDataSeries", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2080,7 +2080,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2094,7 +2094,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2108,7 +2108,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2122,7 +2122,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2136,7 +2136,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2150,7 +2150,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2164,7 +2164,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2178,7 +2178,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2192,7 +2192,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2206,7 +2206,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2260,7 +2260,7 @@ }, "; }[]" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -2274,7 +2274,7 @@ "tags": [], "label": "ObservabilityFetchDataResponse", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2294,7 +2294,7 @@ "text": "ApmFetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2314,7 +2314,7 @@ "text": "MetricsFetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2334,7 +2334,7 @@ "text": "LogsFetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2354,7 +2354,7 @@ "text": "UptimeFetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2374,7 +2374,7 @@ "text": "UxFetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2394,7 +2394,7 @@ "text": "FetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -2408,7 +2408,7 @@ "tags": [], "label": "ObservabilityHasDataResponse", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2428,7 +2428,7 @@ "text": "APMHasDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2448,7 +2448,7 @@ "text": "InfraMetricsHasDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2468,7 +2468,7 @@ "text": "InfraLogsHasDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2488,7 +2488,7 @@ "text": "SyntheticsHasDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2508,7 +2508,7 @@ "text": "UXHasDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2522,7 +2522,7 @@ "signature": [ "UniversalProfilingHasDataResponse" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -2536,7 +2536,7 @@ "tags": [], "label": "ObservabilityPublicPluginsSetup", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2556,7 +2556,7 @@ "text": "DataPublicPluginSetup" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2578,7 +2578,7 @@ }, "[]) => void; has: (id: string) => boolean; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2602,7 +2602,7 @@ }, "[]>) => void; }; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2623,7 +2623,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2671,7 +2671,7 @@ }, ") => void; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2691,7 +2691,7 @@ "text": "TriggersAndActionsUIPublicPluginSetup" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2712,7 +2712,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2732,7 +2732,7 @@ "text": "UsageCollectionSetup" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2752,7 +2752,7 @@ "text": "EmbeddableSetup" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2798,7 +2798,7 @@ }, ") => void; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2818,7 +2818,7 @@ "text": "LicensingPluginSetup" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2839,7 +2839,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2860,7 +2860,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2881,7 +2881,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -2895,7 +2895,7 @@ "tags": [], "label": "ObservabilityPublicPluginsStart", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2933,7 +2933,7 @@ }, ") => void; has: (id: string) => boolean; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2953,7 +2953,7 @@ "text": "CasesPublicStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2976,7 +2976,7 @@ "ActiveCursor", "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -2996,7 +2996,7 @@ "text": "ContentManagementPublicStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3016,7 +3016,7 @@ "text": "DataPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3036,7 +3036,7 @@ "text": "DataViewsServicePublic" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3056,7 +3056,7 @@ "text": "PluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3076,7 +3076,7 @@ "text": "DiscoverStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3096,7 +3096,7 @@ "text": "EmbeddableStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3138,7 +3138,7 @@ }, ") => React.JSX.Element | null; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3168,7 +3168,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3189,7 +3189,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3209,7 +3209,7 @@ "text": "LensPublicStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3229,7 +3229,7 @@ "text": "LicensingPluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3250,7 +3250,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3270,7 +3270,7 @@ "text": "NavigationPublicStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3314,7 +3314,7 @@ }, ">; }) => void; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3335,7 +3335,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3397,7 +3397,7 @@ }, ">) => void; has: (id: string) => boolean; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3417,7 +3417,7 @@ "text": "SecurityPluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3457,7 +3457,7 @@ }, ">): void; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3478,7 +3478,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3498,7 +3498,7 @@ "text": "TriggersAndActionsUIPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3518,7 +3518,7 @@ "text": "UsageCollectionSetup" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3538,7 +3538,7 @@ "text": "UnifiedSearchPublicPluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3559,7 +3559,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3580,7 +3580,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3600,7 +3600,7 @@ "text": "AiopsPluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3621,7 +3621,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3641,7 +3641,7 @@ "text": "IUiSettingsClient" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3729,7 +3729,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3750,7 +3750,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3770,7 +3770,7 @@ "text": "ThemeServiceSetup" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3790,7 +3790,7 @@ "text": "PluginStart" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3810,7 +3810,7 @@ "text": "IToasts" } ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3831,7 +3831,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false }, @@ -3852,7 +3852,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -3884,7 +3884,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3910,7 +3910,7 @@ "Maybe", ", denominator: number | undefined, fallbackResult?: string) => string; }; }) => { reason: string; link?: string | undefined; hasBasePath?: boolean | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -3937,7 +3937,7 @@ "Maybe", ", denominator: number | undefined, fallbackResult?: string) => string; }; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, "trackAdoption": false } @@ -3953,7 +3953,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, "trackAdoption": false } @@ -3984,7 +3984,7 @@ "text": "SerializableRecord" } ], - "path": "x-pack/plugins/observability_solution/observability/public/locators/rules.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/locators/rules.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3998,7 +3998,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/locators/rules.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/locators/rules.ts", "deprecated": false, "trackAdoption": false }, @@ -4012,7 +4012,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/locators/rules.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/locators/rules.ts", "deprecated": false, "trackAdoption": false }, @@ -4026,7 +4026,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/locators/rules.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/locators/rules.ts", "deprecated": false, "trackAdoption": false }, @@ -4047,7 +4047,7 @@ }, "[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/locators/rules.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/locators/rules.ts", "deprecated": false, "trackAdoption": false }, @@ -4061,7 +4061,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/locators/rules.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/locators/rules.ts", "deprecated": false, "trackAdoption": false } @@ -4075,7 +4075,7 @@ "tags": [], "label": "Series", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4096,7 +4096,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4110,7 +4110,7 @@ "tags": [], "label": "Stat", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4124,7 +4124,7 @@ "signature": [ "\"number\" | \"percent\" | \"bytesPerSecond\"" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4135,7 +4135,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4166,7 +4166,7 @@ "text": "HasDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4177,7 +4177,7 @@ "tags": [], "label": "indices", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4201,7 +4201,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4223,7 +4223,7 @@ }, "[]; }; readonly \"kibana.alert.rule.execution.timestamp\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.execution.type\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.parameters\": { readonly array: false; readonly type: \"flattened\"; readonly ignore_above: 4096; readonly required: false; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.severity_improving\": { readonly type: \"boolean\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.time_range\": { readonly type: \"date_range\"; readonly format: \"epoch_millis||strict_date_optional_time\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.url\": { readonly type: \"keyword\"; readonly array: false; readonly index: false; readonly required: false; readonly ignore_above: 2048; }; readonly \"kibana.alert.workflow_assignee_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.version\": { readonly type: \"version\"; readonly array: false; readonly required: false; }; }>> & OutputOf> & TAdditionalMetaFields" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -4234,7 +4234,7 @@ "tags": [], "label": "start", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -4245,7 +4245,7 @@ "tags": [], "label": "lastUpdated", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -4256,7 +4256,7 @@ "tags": [], "label": "reason", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -4270,7 +4270,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -4281,7 +4281,7 @@ "tags": [], "label": "active", "description": [], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -4295,7 +4295,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts", "deprecated": false, "trackAdoption": false } @@ -4326,7 +4326,7 @@ "text": "FetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4364,7 +4364,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4394,7 +4394,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4425,7 +4425,7 @@ "text": "FetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4445,7 +4445,7 @@ "text": "UXMetrics" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4476,7 +4476,7 @@ "text": "HasDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4490,7 +4490,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false }, @@ -4504,7 +4504,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4524,7 +4524,7 @@ "signature": [ "\"ALERTS_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4539,7 +4539,7 @@ "signature": [ "\"observability:apmEnableTableSearchBar\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4554,7 +4554,7 @@ "signature": [ "\"observability:apmServiceGroupMaxNumberOfServices\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4569,7 +4569,7 @@ "signature": [ "\"observability:apmAgentExplorerView\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4584,7 +4584,7 @@ "signature": [ "\"observability:enableComparisonByDefault\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4599,7 +4599,7 @@ "signature": [ "\"observability:enableInspectEsQueries\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4614,7 +4614,7 @@ "signature": [ "\"observability:enableLegacyUptimeApp\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4637,7 +4637,7 @@ }, ") => Promise" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -4658,7 +4658,7 @@ "text": "FetchDataParams" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4676,7 +4676,7 @@ "\"custom\" | ", "Aggregators" ], - "path": "x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/rule_condition_chart.tsx", + "path": "x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/rule_condition_chart.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4707,7 +4707,7 @@ }, "[T]>" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -4729,7 +4729,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false } @@ -4746,7 +4746,7 @@ "signature": [ "number | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4761,7 +4761,7 @@ "signature": [ "\"observability-overview\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4776,7 +4776,7 @@ "signature": [ "\"observability\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4791,7 +4791,7 @@ "signature": [ "\"uptime\" | \"apm\" | \"ux\" | \"infra_logs\" | \"infra_metrics\" | \"universal_profiling\"" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4818,7 +4818,7 @@ "Maybe", ", denominator: number | undefined, fallbackResult?: string) => string; }; }) => { reason: string; link?: string | undefined; hasBasePath?: boolean | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -4845,7 +4845,7 @@ "Maybe", ", denominator: number | undefined, fallbackResult?: string) => string; }; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, "trackAdoption": false } @@ -4878,7 +4878,7 @@ }, " | undefined; list: () => string[]; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4893,7 +4893,7 @@ "signature": [ "\"RULE_DETAILS_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4908,7 +4908,7 @@ "signature": [ "\"RULES_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4923,7 +4923,7 @@ "signature": [ "\"SLO_DETAILS_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4938,7 +4938,7 @@ "signature": [ "\"SLO_EDIT_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4953,7 +4953,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4978,7 +4978,7 @@ }, " : K[attr]) | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/utils.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/utils.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4993,7 +4993,7 @@ "signature": [ "\"observability:syntheticsThrottlingEnabled\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5014,7 +5014,7 @@ "text": "FetchDataResponse" } ], - "path": "x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5029,7 +5029,7 @@ "signature": [ "\"UPTIME_OVERVIEW_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5122,7 +5122,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "setup", @@ -5172,7 +5172,7 @@ "LinkProps", "; }" ], - "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/public/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "start", @@ -5192,7 +5192,7 @@ "WrappedElasticsearchClientError", " extends Error" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -5206,7 +5206,7 @@ "signature": [ "ElasticsearchClientError" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts", "deprecated": false, "trackAdoption": false }, @@ -5220,7 +5220,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -5234,7 +5234,7 @@ "signature": [ "ElasticsearchClientError" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -5293,7 +5293,7 @@ }, "; }) => Promise" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -5304,7 +5304,7 @@ "tags": [], "label": "{\n index,\n mappings,\n client,\n logger,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -5315,7 +5315,7 @@ "tags": [], "label": "index", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, "trackAdoption": false }, @@ -5349,7 +5349,7 @@ "MappingRuntimeFields", " | undefined; }) | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, "trackAdoption": false }, @@ -6617,7 +6617,7 @@ "default", "; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, "trackAdoption": false }, @@ -6637,7 +6637,7 @@ "text": "Logger" } ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, "trackAdoption": false } @@ -6677,7 +6677,7 @@ "AcknowledgedResponseBase", " | undefined>" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index_template.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index_template.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -6688,7 +6688,7 @@ "tags": [], "label": "{\n indexTemplate,\n client,\n logger,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index_template.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index_template.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -6702,7 +6702,7 @@ "signature": [ "IndicesPutIndexTemplateRequest" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index_template.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index_template.ts", "deprecated": false, "trackAdoption": false }, @@ -7970,7 +7970,7 @@ "default", "; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index_template.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index_template.ts", "deprecated": false, "trackAdoption": false }, @@ -7990,7 +7990,7 @@ "text": "Logger" } ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index_template.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index_template.ts", "deprecated": false, "trackAdoption": false } @@ -8012,7 +8012,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8026,7 +8026,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8072,7 +8072,7 @@ "text": "Request" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8083,7 +8083,7 @@ "tags": [], "label": "{\n esError,\n esRequestParams,\n esRequestStatus,\n esResponse,\n kibanaRequest,\n operationName,\n startTime,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8098,7 +8098,7 @@ "WrappedElasticsearchClientError", " | null" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -8112,7 +8112,7 @@ "signature": [ "{ [x: string]: any; }" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -8132,7 +8132,7 @@ "text": "RequestStatus" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -8146,7 +8146,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -8167,7 +8167,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -8178,7 +8178,7 @@ "tags": [], "label": "operationName", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -8189,7 +8189,7 @@ "tags": [], "label": "startTime", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false } @@ -8211,7 +8211,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/get_parsed_filtered_query.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/get_parsed_filtered_query.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8225,7 +8225,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/get_parsed_filtered_query.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/get_parsed_filtered_query.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -8246,7 +8246,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8260,7 +8260,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -8281,7 +8281,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8295,7 +8295,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -8310,7 +8310,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -8325,7 +8325,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8346,7 +8346,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8360,7 +8360,7 @@ "signature": [ "T" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8375,7 +8375,7 @@ "signature": [ "string | number | boolean | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -8390,7 +8390,7 @@ "signature": [ "TermQueryOpts" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8411,7 +8411,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8425,7 +8425,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8440,7 +8440,7 @@ "signature": [ "(string | number | boolean | null | undefined)[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8459,7 +8459,7 @@ "signature": [ "(responsePromise: T) => Promise[\"body\"]>" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8473,7 +8473,7 @@ "signature": [ "T" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8494,7 +8494,7 @@ "QueryDslQueryContainer", "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8508,7 +8508,7 @@ "signature": [ "T" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8523,7 +8523,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -8538,7 +8538,7 @@ "signature": [ "{ leadingWildcard: boolean; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/queries.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/queries.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -8556,7 +8556,7 @@ "tags": [], "label": "CustomThresholdLocators", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8585,7 +8585,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts", "deprecated": false, "trackAdoption": false }, @@ -8614,7 +8614,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts", "deprecated": false, "trackAdoption": false } @@ -8628,7 +8628,7 @@ "tags": [], "label": "ObservabilityRouteCreateOptions", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8642,7 +8642,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false }, @@ -8656,7 +8656,7 @@ "signature": [ "\"internal\" | \"public\" | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false } @@ -8670,7 +8670,7 @@ "tags": [], "label": "ObservabilityRouteHandlerResources", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8715,7 +8715,7 @@ }, ">; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false }, @@ -8729,7 +8729,7 @@ "signature": [ "RegisterRoutesDependencies" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false }, @@ -8749,7 +8749,7 @@ "text": "Logger" } ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false }, @@ -8770,7 +8770,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false } @@ -8814,7 +8814,7 @@ }, " | undefined>; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8829,7 +8829,7 @@ "signature": [ "\"GET /internal/observability/assistant/alert_details_contextual_insights\" | \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/get_global_observability_server_route_repository.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/get_global_observability_server_route_repository.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8863,7 +8863,7 @@ "MappingRuntimeFields", " | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8992,7 +8992,7 @@ }, " | undefined; } | undefined> ? TWrappedResponseType : TReturnType : never" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9007,7 +9007,7 @@ "signature": [ "{ readonly enabled: boolean; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; ruleFormV2: Readonly<{} & { enabled: boolean; }>; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly createO11yGenericFeatureId: boolean; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9110,7 +9110,7 @@ }, ">; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/routes/get_global_observability_server_route_repository.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/routes/get_global_observability_server_route_repository.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9135,7 +9135,7 @@ "DeleteByQueryResponse", ">; permissions: () => Promise<{ index: string; hasGoldLicense: boolean; }>; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/lib/annotations/bootstrap_annotations.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/lib/annotations/bootstrap_annotations.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9171,7 +9171,7 @@ "UnknownRecordC", "]>" ], - "path": "x-pack/plugins/observability_solution/observability/server/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9217,7 +9217,7 @@ "Type", "; }>]>" ], - "path": "x-pack/plugins/observability_solution/observability/server/types.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9231,7 +9231,7 @@ "description": [ "\nuiSettings definitions for Observability." ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9242,7 +9242,7 @@ "tags": [], "label": "[enableInspectEsQueries]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9256,7 +9256,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9267,7 +9267,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9281,7 +9281,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9292,7 +9292,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9313,7 +9313,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9327,7 +9327,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -9340,7 +9340,7 @@ "tags": [], "label": "[maxSuggestions]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9354,7 +9354,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9365,7 +9365,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9376,7 +9376,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9387,7 +9387,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9408,7 +9408,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -9421,7 +9421,7 @@ "tags": [], "label": "[enableComparisonByDefault]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9435,7 +9435,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9446,7 +9446,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9460,7 +9460,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9471,7 +9471,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9492,7 +9492,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -9505,7 +9505,7 @@ "tags": [], "label": "[defaultApmServiceEnvironment]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9519,7 +9519,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9533,7 +9533,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9544,7 +9544,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9555,7 +9555,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9566,7 +9566,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9587,7 +9587,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -9600,7 +9600,7 @@ "tags": [], "label": "[apmProgressiveLoading]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9614,7 +9614,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9625,7 +9625,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9636,7 +9636,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9656,7 +9656,7 @@ "text": "ProgressiveLoadingQuality" } ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9685,7 +9685,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9699,7 +9699,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9713,7 +9713,7 @@ "signature": [ "\"select\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9734,7 +9734,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9745,7 +9745,7 @@ "tags": [], "label": "optionLabels", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9756,7 +9756,7 @@ "tags": [], "label": "[ProgressiveLoadingQuality.off]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9767,7 +9767,7 @@ "tags": [], "label": "[ProgressiveLoadingQuality.low]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9778,7 +9778,7 @@ "tags": [], "label": "[ProgressiveLoadingQuality.medium]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9789,7 +9789,7 @@ "tags": [], "label": "[ProgressiveLoadingQuality.high]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -9805,7 +9805,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -9818,7 +9818,7 @@ "tags": [], "label": "[apmServiceInventoryOptimizedSorting]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9832,7 +9832,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9843,7 +9843,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9854,7 +9854,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9875,7 +9875,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9889,7 +9889,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9903,7 +9903,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9917,7 +9917,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9931,7 +9931,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -9944,7 +9944,7 @@ "tags": [], "label": "[apmServiceGroupMaxNumberOfServices]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9958,7 +9958,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9969,7 +9969,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9980,7 +9980,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -9991,7 +9991,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10012,7 +10012,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10025,7 +10025,7 @@ "tags": [], "label": "[apmTraceExplorerTab]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10039,7 +10039,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10050,7 +10050,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10061,7 +10061,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10082,7 +10082,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10096,7 +10096,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10110,7 +10110,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10124,7 +10124,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10138,7 +10138,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10151,7 +10151,7 @@ "tags": [], "label": "[apmLabsButton]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10165,7 +10165,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10176,7 +10176,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10187,7 +10187,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10208,7 +10208,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10222,7 +10222,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10236,7 +10236,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10250,7 +10250,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10263,7 +10263,7 @@ "tags": [], "label": "[enableInfrastructureProfilingIntegration]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10277,7 +10277,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10288,7 +10288,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10302,7 +10302,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10313,7 +10313,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10334,7 +10334,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10347,7 +10347,7 @@ "tags": [], "label": "[enableInfrastructureAssetCustomDashboards]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10361,7 +10361,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10372,7 +10372,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10386,7 +10386,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10397,7 +10397,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10418,7 +10418,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10431,7 +10431,7 @@ "tags": [], "label": "[enableAwsLambdaMetrics]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10445,7 +10445,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10456,7 +10456,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10467,7 +10467,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10488,7 +10488,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10502,7 +10502,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10516,7 +10516,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10530,7 +10530,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10544,7 +10544,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10557,7 +10557,7 @@ "tags": [], "label": "[enableAgentExplorerView]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10571,7 +10571,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10582,7 +10582,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10593,7 +10593,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10614,7 +10614,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10628,7 +10628,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10642,7 +10642,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10656,7 +10656,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10669,7 +10669,7 @@ "tags": [], "label": "[apmEnableTableSearchBar]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10683,7 +10683,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10694,7 +10694,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10705,7 +10705,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10726,7 +10726,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10740,7 +10740,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10754,7 +10754,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10768,7 +10768,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10781,7 +10781,7 @@ "tags": [], "label": "[entityCentricExperience]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10795,7 +10795,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10806,7 +10806,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10817,7 +10817,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10838,7 +10838,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10852,7 +10852,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10866,7 +10866,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10880,7 +10880,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -10893,7 +10893,7 @@ "tags": [], "label": "[apmEnableServiceInventoryTableSearchBar]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -10907,7 +10907,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10918,7 +10918,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10929,7 +10929,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10950,7 +10950,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10964,7 +10964,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10978,7 +10978,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -10992,7 +10992,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11005,7 +11005,7 @@ "tags": [], "label": "[apmAWSLambdaPriceFactor]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11019,7 +11019,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11030,7 +11030,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11044,7 +11044,7 @@ "signature": [ "\"json\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11055,7 +11055,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11066,7 +11066,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11103,7 +11103,7 @@ }, "; }>" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11116,7 +11116,7 @@ "tags": [], "label": "[apmAWSLambdaRequestCostPerMillion]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11130,7 +11130,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11141,7 +11141,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11152,7 +11152,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11173,7 +11173,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11186,7 +11186,7 @@ "tags": [], "label": "[apmEnableServiceMetrics]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11200,7 +11200,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11211,7 +11211,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11225,7 +11225,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11236,7 +11236,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11257,7 +11257,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11271,7 +11271,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11284,7 +11284,7 @@ "tags": [], "label": "[apmEnableContinuousRollups]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11298,7 +11298,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11309,7 +11309,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11323,7 +11323,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11334,7 +11334,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11355,7 +11355,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11369,7 +11369,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11382,7 +11382,7 @@ "tags": [], "label": "[enableCriticalPath]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11396,7 +11396,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11407,7 +11407,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11418,7 +11418,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11439,7 +11439,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11453,7 +11453,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11467,7 +11467,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11481,7 +11481,7 @@ "signature": [ "\"boolean\"" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11495,7 +11495,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11508,7 +11508,7 @@ "tags": [], "label": "[syntheticsThrottlingEnabled]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11522,7 +11522,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11533,7 +11533,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11547,7 +11547,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11558,7 +11558,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11579,7 +11579,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11593,7 +11593,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11606,7 +11606,7 @@ "tags": [], "label": "[enableLegacyUptimeApp]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11620,7 +11620,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11631,7 +11631,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11645,7 +11645,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11656,7 +11656,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11677,7 +11677,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11691,7 +11691,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11704,7 +11704,7 @@ "tags": [], "label": "[apmEnableProfilingIntegration]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11718,7 +11718,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11729,7 +11729,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11743,7 +11743,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11764,7 +11764,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11778,7 +11778,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11791,7 +11791,7 @@ "tags": [], "label": "[profilingShowErrorFrames]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11805,7 +11805,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11816,7 +11816,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11830,7 +11830,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11851,7 +11851,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11865,7 +11865,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11878,7 +11878,7 @@ "tags": [], "label": "[profilingPervCPUWattX86]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11892,7 +11892,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11903,7 +11903,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11914,7 +11914,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11925,7 +11925,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11946,7 +11946,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11960,7 +11960,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -11973,7 +11973,7 @@ "tags": [], "label": "[profilingPervCPUWattArm64]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -11987,7 +11987,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -11998,7 +11998,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12009,7 +12009,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12020,7 +12020,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12041,7 +12041,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12055,7 +12055,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12068,7 +12068,7 @@ "tags": [], "label": "[profilingDatacenterPUE]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12082,7 +12082,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12093,7 +12093,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12104,7 +12104,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12115,7 +12115,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12136,7 +12136,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12150,7 +12150,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12163,7 +12163,7 @@ "tags": [], "label": "[profilingCo2PerKWH]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12177,7 +12177,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12188,7 +12188,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12199,7 +12199,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12210,7 +12210,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12231,7 +12231,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12245,7 +12245,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12258,7 +12258,7 @@ "tags": [], "label": "[profilingAWSCostDiscountRate]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12272,7 +12272,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12283,7 +12283,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12294,7 +12294,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12315,7 +12315,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12329,7 +12329,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12340,7 +12340,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12353,7 +12353,7 @@ "tags": [], "label": "[profilingAzureCostDiscountRate]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12367,7 +12367,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12378,7 +12378,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12389,7 +12389,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12410,7 +12410,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12424,7 +12424,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12435,7 +12435,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12448,7 +12448,7 @@ "tags": [], "label": "[profilingCostPervCPUPerHour]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12462,7 +12462,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12473,7 +12473,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12484,7 +12484,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12495,7 +12495,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12516,7 +12516,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12530,7 +12530,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12543,7 +12543,7 @@ "tags": [], "label": "[apmEnableTransactionProfiling]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12557,7 +12557,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12568,7 +12568,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12582,7 +12582,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12603,7 +12603,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12617,7 +12617,7 @@ "signature": [ "true" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12630,7 +12630,7 @@ "tags": [], "label": "[profilingFetchTopNFunctionsFromStacktraces]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12644,7 +12644,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12655,7 +12655,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12666,7 +12666,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12680,7 +12680,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12701,7 +12701,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12715,7 +12715,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12728,7 +12728,7 @@ "tags": [], "label": "[searchExcludedDataTiers]", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12742,7 +12742,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12753,7 +12753,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12764,7 +12764,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12778,7 +12778,7 @@ "signature": [ "never[]" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12799,7 +12799,7 @@ }, "<(\"data_cold\" | \"data_frozen\")[]>" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false }, @@ -12813,7 +12813,7 @@ "signature": [ "false" ], - "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/ui_settings.ts", "deprecated": false, "trackAdoption": false } @@ -12885,7 +12885,7 @@ }, ">; }" ], - "path": "x-pack/plugins/observability_solution/observability/server/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability/server/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "setup", @@ -12927,7 +12927,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12941,7 +12941,7 @@ "signature": [ "\"ALERTS_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -12963,7 +12963,7 @@ }, ") => Promise<{ app: string; path: string; state: {}; }>" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -12983,7 +12983,7 @@ "text": "AlertsLocatorParams" } ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13008,7 +13008,7 @@ "TimeUnit", ") => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/datetime.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/datetime.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13022,7 +13022,7 @@ "signature": [ "number" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/datetime.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/datetime.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13037,7 +13037,7 @@ "signature": [ "TimeUnit" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/datetime.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/datetime.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13060,7 +13060,7 @@ "Maybe", ", { defaultValue = NOT_AVAILABLE_LABEL, extended }: FormatterOptions) => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13075,7 +13075,7 @@ "Maybe", "" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13090,7 +13090,7 @@ "signature": [ "FormatterOptions" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13111,7 +13111,7 @@ "Maybe", ") => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/size.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/size.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -13126,7 +13126,7 @@ "signature": [ "number | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/size.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/size.ts", "deprecated": false, "trackAdoption": false } @@ -13143,7 +13143,7 @@ "signature": [ "(value: number | null | undefined) => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13157,7 +13157,7 @@ "signature": [ "number | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13178,7 +13178,7 @@ "Maybe", ", denominator: number | undefined, fallbackResult: string) => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13193,7 +13193,7 @@ "Maybe", "" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13208,7 +13208,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13223,7 +13223,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13251,7 +13251,7 @@ "text": "COMPARATORS" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/convert_legacy_outside_comparator.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/convert_legacy_outside_comparator.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13265,7 +13265,7 @@ "signature": [ "LegacyComparator" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/convert_legacy_outside_comparator.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/convert_legacy_outside_comparator.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13292,7 +13292,7 @@ }, ") => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13306,7 +13306,7 @@ "signature": [ "number" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13327,7 +13327,7 @@ "text": "TimeUnitChar" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13354,7 +13354,7 @@ }, ", spaceId: string, alertUuid: string | null) => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13374,7 +13374,7 @@ "text": "IBasePath" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13389,7 +13389,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13404,7 +13404,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13439,7 +13439,7 @@ }, "> | undefined, publicBaseUrl?: string | undefined) => Promise" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13453,7 +13453,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13468,7 +13468,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13483,7 +13483,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13513,7 +13513,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13528,7 +13528,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -13554,7 +13554,7 @@ "text": "TimeFormatter" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -13566,7 +13566,7 @@ "tags": [], "label": "max", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false } @@ -13610,7 +13610,7 @@ "text": "Request" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13621,7 +13621,7 @@ "tags": [], "label": "{\n esError,\n esRequestParams,\n esRequestStatus,\n esResponse,\n kibanaRequest,\n operationName,\n startTime,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13636,7 +13636,7 @@ "WrappedElasticsearchClientError", " | null" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -13650,7 +13650,7 @@ "signature": [ "{ [x: string]: any; }" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -13670,7 +13670,7 @@ "text": "RequestStatus" } ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -13684,7 +13684,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -13705,7 +13705,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -13716,7 +13716,7 @@ "tags": [], "label": "operationName", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false }, @@ -13727,7 +13727,7 @@ "tags": [], "label": "startTime", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts", "deprecated": false, "trackAdoption": false } @@ -13755,7 +13755,7 @@ }, ") => number" ], - "path": "x-pack/plugins/observability_solution/observability/common/progressive_loading.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/progressive_loading.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13775,7 +13775,7 @@ "text": "ProgressiveLoadingQuality" } ], - "path": "x-pack/plugins/observability_solution/observability/common/progressive_loading.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/progressive_loading.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -13810,7 +13810,7 @@ "text": "SerializableRecord" } ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -13821,7 +13821,7 @@ "tags": [], "label": "baseUrl", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -13832,7 +13832,7 @@ "tags": [], "label": "spaceId", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -13846,7 +13846,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -13860,7 +13860,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -13874,7 +13874,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false }, @@ -13889,7 +13889,7 @@ "AlertStatus", " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false } @@ -13905,7 +13905,7 @@ "tags": [], "label": "ProcessorEvent", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/processor_event.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/processor_event.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13917,7 +13917,7 @@ "tags": [], "label": "ProgressiveLoadingQuality", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/progressive_loading.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/progressive_loading.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13949,7 +13949,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability/common/locators/alerts.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13964,7 +13964,7 @@ "signature": [ "\"ALERTS_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13979,7 +13979,7 @@ "signature": [ "\"observability:apmAWSLambdaPriceFactor\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -13994,7 +13994,7 @@ "signature": [ "\"observability:apmAWSLambdaRequestCostPerMillion\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14009,7 +14009,7 @@ "signature": [ "\"observability:apmEnableContinuousRollups\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14024,7 +14024,7 @@ "signature": [ "\"observability:apmEnableProfilingIntegration\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14039,7 +14039,7 @@ "signature": [ "\"observability:apmEnableServiceInventoryTableSearchBar\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14054,7 +14054,7 @@ "signature": [ "\"observability:apmEnableServiceMetrics\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14069,7 +14069,7 @@ "signature": [ "\"observability:apmEnableTableSearchBar\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14084,7 +14084,7 @@ "signature": [ "\"observability:apmEnableTransactionProfiling\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14099,7 +14099,7 @@ "signature": [ "\"observability:apmLabsButton\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14114,7 +14114,7 @@ "signature": [ "\"observability:apmProgressiveLoading\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14129,7 +14129,7 @@ "signature": [ "\"observability:apmServiceGroupMaxNumberOfServices\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14144,7 +14144,7 @@ "signature": [ "\"observability:apmServiceInventoryOptimizedSorting\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14159,7 +14159,7 @@ "signature": [ "\"observability:apmTraceExplorerTab\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14176,7 +14176,7 @@ "Maybe", ", { defaultValue, extended }?: FormatterOptions) => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -14191,7 +14191,7 @@ "signature": [ "number | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false }, @@ -14205,7 +14205,7 @@ "signature": [ "FormatterOptions" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false } @@ -14224,7 +14224,7 @@ "Maybe", ", denominator: number | undefined, fallbackResult?: string) => string" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -14239,7 +14239,7 @@ "signature": [ "number | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false }, @@ -14253,7 +14253,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false }, @@ -14264,7 +14264,7 @@ "tags": [], "label": "fallbackResult", "description": [], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts", "deprecated": false, "trackAdoption": false } @@ -14283,7 +14283,7 @@ "signature": [ "\"observabilityCases\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": true, "trackAdoption": false, "references": [], @@ -14299,7 +14299,7 @@ "signature": [ "\"observabilityCasesV2\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14314,7 +14314,7 @@ "signature": [ "\"observability:apmDefaultServiceEnvironment\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14329,7 +14329,7 @@ "signature": [ "\"observability:apmAgentExplorerView\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14344,7 +14344,7 @@ "signature": [ "\"observability:enableAwsLambdaMetrics\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14359,7 +14359,7 @@ "signature": [ "\"observability:enableComparisonByDefault\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14374,7 +14374,7 @@ "signature": [ "\"observability:apmEnableCriticalPath\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14389,7 +14389,7 @@ "signature": [ "\"observability:enableInfrastructureAssetCustomDashboards\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14404,7 +14404,7 @@ "signature": [ "\"observability:enableInfrastructureProfilingIntegration\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14419,7 +14419,7 @@ "signature": [ "\"observability:enableInspectEsQueries\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14434,7 +14434,7 @@ "signature": [ "\"observability:entityCentricExperience\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14449,7 +14449,7 @@ "signature": [ "\"observability:maxSuggestions\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14471,7 +14471,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability/common/constants.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14486,7 +14486,7 @@ "signature": [ "\"observability-overview\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14501,7 +14501,7 @@ "signature": [ "\"observability\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14516,7 +14516,7 @@ "signature": [ "\"observability:profilingAWSCostDiscountRate\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14531,7 +14531,7 @@ "signature": [ "\"observability:profilingAzureCostDiscountRate\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14546,7 +14546,7 @@ "signature": [ "\"observability:profilingCo2PerKWH\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14561,7 +14561,7 @@ "signature": [ "\"observability:profilingCostPervCPUPerHour\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14576,7 +14576,7 @@ "signature": [ "\"observability:profilingDatacenterPUE\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14591,7 +14591,7 @@ "signature": [ "\"observability:profilingFetchTopNFunctionsFromStacktraces\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14606,7 +14606,7 @@ "signature": [ "\"observability:profilingPervCPUWattArm64\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14621,7 +14621,7 @@ "signature": [ "\"observability:profilingPerVCPUWattX86\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14636,7 +14636,7 @@ "signature": [ "\"observability:profilingShowErrorFrames\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14651,7 +14651,7 @@ "signature": [ "\"RULE_DETAILS_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14666,7 +14666,7 @@ "signature": [ "\"RULES_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14681,7 +14681,7 @@ "signature": [ "\"SLO_DETAILS_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14696,7 +14696,7 @@ "signature": [ "\"SLO_EDIT_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14711,7 +14711,7 @@ "signature": [ "\"slo\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14726,7 +14726,7 @@ "signature": [ "\"SLO_LIST_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14741,7 +14741,7 @@ "signature": [ "\"SYNTHETICS_EDIT_MONITOR_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14756,7 +14756,7 @@ "signature": [ "\"SYNTHETICS_MONITOR_DETAIL_LOCATOR\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14771,7 +14771,7 @@ "signature": [ "\"SYNTHETICS_SETTINGS\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14786,7 +14786,7 @@ "signature": [ "\"observability:syntheticsThrottlingEnabled\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14803,7 +14803,7 @@ "Maybe", ", options?: FormatterOptions | undefined) => ConvertedDuration" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -14818,7 +14818,7 @@ "signature": [ "number | null | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false }, @@ -14832,7 +14832,7 @@ "signature": [ "FormatterOptions | undefined" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false } @@ -14849,7 +14849,7 @@ "signature": [ "\"m\" | \"s\" | \"d\" | \"h\"" ], - "path": "x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14864,7 +14864,7 @@ "signature": [ "\"UPTIME_OVERVIEW_LOCATOR\"" ], - "path": "packages/deeplinks/observability/locators/uptime.ts", + "path": "src/platform/packages/shared/deeplinks/observability/locators/uptime.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -14881,7 +14881,7 @@ "signature": [ "{ alerts: string; annotations: string; alertDetails: (alertId: string) => string; rules: string; ruleDetails: (ruleId: string) => string; }" ], - "path": "x-pack/plugins/observability_solution/observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 397f23be76136..f4a23f88ed090 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.devdocs.json b/api_docs/observability_a_i_assistant.devdocs.json index 548b3f1e3fd6c..45d008746b3c3 100644 --- a/api_docs/observability_a_i_assistant.devdocs.json +++ b/api_docs/observability_a_i_assistant.devdocs.json @@ -9,7 +9,7 @@ "tags": [], "label": "ShortIdTable", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -23,7 +23,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -39,7 +39,7 @@ "signature": [ "(originalId: string) => string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -53,7 +53,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -71,7 +71,7 @@ "signature": [ "(shortId: string) => string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -85,7 +85,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -102,7 +102,9 @@ "parentPluginId": "observabilityAIAssistant", "id": "def-public.AssistantAvatar", "type": "Function", - "tags": [], + "tags": [ + "deprecated" + ], "label": "AssistantAvatar", "description": [], "signature": [ @@ -110,9 +112,63 @@ "AssistantAvatarProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx", - "deprecated": false, + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx", + "deprecated": true, "trackAdoption": false, + "references": [ + { + "plugin": "@kbn/ai-assistant", + "path": "x-pack/packages/kbn-ai-assistant/src/chat/chat_header.tsx" + }, + { + "plugin": "@kbn/ai-assistant", + "path": "x-pack/packages/kbn-ai-assistant/src/chat/chat_header.tsx" + }, + { + "plugin": "@kbn/ai-assistant", + "path": "x-pack/packages/kbn-ai-assistant/src/chat/chat_item_avatar.tsx" + }, + { + "plugin": "@kbn/ai-assistant", + "path": "x-pack/packages/kbn-ai-assistant/src/chat/chat_item_avatar.tsx" + }, + { + "plugin": "searchAssistant", + "path": "x-pack/plugins/search_assistant/public/components/nav_control/index.tsx" + }, + { + "plugin": "searchAssistant", + "path": "x-pack/plugins/search_assistant/public/components/nav_control/index.tsx" + }, + { + "plugin": "observabilityAIAssistantApp", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.tsx" + }, + { + "plugin": "observabilityAIAssistantApp", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.tsx" + }, + { + "plugin": "observabilityAIAssistantApp", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/ai_assistant.tsx" + }, + { + "plugin": "observabilityAIAssistantApp", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/ai_assistant.tsx" + }, + { + "plugin": "observabilityAIAssistantApp", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/index.tsx" + }, + { + "plugin": "observabilityAIAssistantApp", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/index.tsx" + }, + { + "plugin": "observabilityAIAssistantApp", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/index.tsx" + } + ], "children": [ { "parentPluginId": "observabilityAIAssistant", @@ -124,7 +180,7 @@ "signature": [ "AssistantAvatarProps" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -151,7 +207,7 @@ }, ") => void; onRegenerateClick: () => void; onStopGeneratingClick: () => void; }) => React.JSX.Element | null" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -162,7 +218,7 @@ "tags": [], "label": "{\n error,\n loading,\n canRegenerate,\n canGiveFeedback,\n onFeedbackClick,\n onRegenerateClick,\n onStopGeneratingClick,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -176,7 +232,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false }, @@ -187,7 +243,7 @@ "tags": [], "label": "loading", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false }, @@ -198,7 +254,7 @@ "tags": [], "label": "canRegenerate", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false }, @@ -209,7 +265,7 @@ "tags": [], "label": "canGiveFeedback", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false }, @@ -231,7 +287,7 @@ }, ") => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -251,7 +307,7 @@ "text": "Feedback" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -269,7 +325,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -285,7 +341,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -315,7 +371,7 @@ "ConcatenatedMessage", ">" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -334,7 +390,7 @@ "UseGenAIConnectorsResult", ") => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -348,7 +404,7 @@ "signature": [ "UseGenAIConnectorsResult" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -374,7 +430,7 @@ "text": "MessageAddEvent" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -385,7 +441,7 @@ "tags": [], "label": "{\n name,\n args,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -396,7 +452,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", "deprecated": false, "trackAdoption": false }, @@ -410,7 +466,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", "deprecated": false, "trackAdoption": false } @@ -437,7 +493,7 @@ "text": "MessageAddEvent" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -448,7 +504,7 @@ "tags": [], "label": "{\n name,\n content,\n data,\n}", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -459,7 +515,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", "deprecated": false, "trackAdoption": false }, @@ -473,7 +529,7 @@ "signature": [ "unknown" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", "deprecated": false, "trackAdoption": false }, @@ -487,7 +543,7 @@ "signature": [ "unknown" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", "deprecated": false, "trackAdoption": false } @@ -509,7 +565,7 @@ "ScreenContextActionDefinition", ">" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -523,7 +579,7 @@ "signature": [ "TActionDefinition" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -538,7 +594,7 @@ "signature": [ "TRespondFunction" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -564,7 +620,7 @@ "text": "ObservabilityAIAssistantChatService" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/storybook_mock.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/storybook_mock.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -588,7 +644,7 @@ "text": "ObservabilityAIAssistantService" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/storybook_mock.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/storybook_mock.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -605,7 +661,7 @@ "signature": [ "() => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/failed_to_load_response.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/failed_to_load_response.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -622,7 +678,7 @@ "signature": [ "({ onClickFeedback }: FeedbackButtonsProps) => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -636,7 +692,7 @@ "signature": [ "FeedbackButtonsProps" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -655,7 +711,7 @@ "signature": [ "(type: string) => boolean" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/connectors.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/connectors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -669,7 +725,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/connectors.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/connectors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -688,7 +744,7 @@ "signature": [ "({ loading, content, onActionClick }: Props) => React.JSX.Element" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -702,7 +758,7 @@ "signature": [ "Props" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -729,7 +785,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -743,7 +799,7 @@ "signature": [ "({}: { signal: AbortSignal; }) => T | Promise" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -758,7 +814,7 @@ "signature": [ "any[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -770,7 +826,7 @@ "tags": [], "label": "options", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -784,7 +840,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", "deprecated": false, "trackAdoption": false }, @@ -798,7 +854,7 @@ "signature": [ "(() => T) | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -829,7 +885,7 @@ ") => ", "UseGenAIConnectorsResult" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -849,7 +905,7 @@ "text": "ObservabilityAIAssistantService" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -867,7 +923,7 @@ "tags": [], "label": "Conversation", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -878,7 +934,7 @@ "tags": [], "label": "'@timestamp'", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -892,7 +948,7 @@ "signature": [ "{ id?: string | undefined; name: string; } | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -908,7 +964,7 @@ "TokenCount", " | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -929,7 +985,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -943,7 +999,7 @@ "signature": [ "{ [x: string]: string; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -957,7 +1013,7 @@ "signature": [ "{ [x: string]: number; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -968,7 +1024,7 @@ "tags": [], "label": "namespace", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -979,7 +1035,7 @@ "tags": [], "label": "public", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -993,7 +1049,7 @@ "tags": [], "label": "DiscoveredDataset", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1004,7 +1060,7 @@ "tags": [], "label": "title", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1015,7 +1071,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1029,7 +1085,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1043,7 +1099,7 @@ "signature": [ "unknown[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -1067,7 +1123,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1078,7 +1134,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1089,7 +1145,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1110,7 +1166,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1124,7 +1180,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1138,7 +1194,7 @@ "signature": [ "TParameters | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false } @@ -1152,7 +1208,7 @@ "tags": [], "label": "KnowledgeBaseEntry", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1163,7 +1219,7 @@ "tags": [], "label": "'@timestamp'", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1174,7 +1230,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1188,7 +1244,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1199,7 +1255,7 @@ "tags": [], "label": "text", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1213,7 +1269,7 @@ "signature": [ "\"medium\" | \"high\" | \"low\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1224,7 +1280,7 @@ "tags": [], "label": "is_correction", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1238,7 +1294,7 @@ "signature": [ "\"user_instruction\" | \"contextual\" | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1249,7 +1305,7 @@ "tags": [], "label": "public", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1263,7 +1319,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1283,7 +1339,7 @@ "text": "KnowledgeBaseEntryRole" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1297,7 +1353,7 @@ "signature": [ "{ name: string; } | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -1311,7 +1367,7 @@ "tags": [], "label": "Message", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1322,7 +1378,7 @@ "tags": [], "label": "'@timestamp'", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1368,7 +1424,7 @@ }, ".Elastic; } | undefined; data?: string | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -1382,7 +1438,7 @@ "tags": [], "label": "ObservabilityAIAssistantChatService", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1404,7 +1460,7 @@ }, ") => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1424,7 +1480,7 @@ "text": "TelemetryEventTypeWithPayload" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1484,7 +1540,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1498,7 +1554,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1510,7 +1566,7 @@ "tags": [], "label": "options", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1531,7 +1587,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1542,7 +1598,7 @@ "tags": [], "label": "connectorId", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1572,7 +1628,7 @@ }, ">, \"name\" | \"description\" | \"parameters\">[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1586,7 +1642,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1600,7 +1656,7 @@ "signature": [ "AbortSignal" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1621,7 +1677,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -1670,7 +1726,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1681,7 +1737,7 @@ "tags": [], "label": "options", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1697,7 +1753,7 @@ "ObservabilityAIAssistantScreenContext", "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1713,7 +1769,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1724,7 +1780,7 @@ "tags": [], "label": "connectorId", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1745,7 +1801,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1756,7 +1812,7 @@ "tags": [], "label": "persist", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1770,7 +1826,7 @@ "signature": [ "boolean | { except: string[]; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1784,7 +1840,7 @@ "signature": [ "AbortSignal" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1799,7 +1855,7 @@ "AdHocInstruction", "[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1820,7 +1876,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -1863,7 +1919,7 @@ }, ">[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1874,7 +1930,7 @@ "tags": [], "label": "options", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1888,7 +1944,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1902,7 +1958,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1923,7 +1979,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -1959,7 +2015,7 @@ }, ">[]>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -1973,7 +2029,7 @@ "signature": [ "(name: string) => boolean" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1987,7 +2043,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2012,7 +2068,7 @@ "text": "Message" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2028,7 +2084,7 @@ "signature": [ "(name: string) => boolean" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2042,7 +2098,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2068,7 +2124,7 @@ }, ") => React.ReactNode" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2082,7 +2138,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2097,7 +2153,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -2109,7 +2165,7 @@ "tags": [], "label": "response", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2123,7 +2179,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -2137,7 +2193,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -2159,7 +2215,7 @@ "text": "ChatActionClickHandler" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2185,7 +2241,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -2201,7 +2257,7 @@ "tags": [], "label": "ObservabilityAIAssistantService", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2498,7 +2554,7 @@ ", { errorMessage?: string | undefined; ready: boolean; enabled: boolean; endpoint?: Partial<", "InferenceInferenceEndpointInfo", "> | undefined; model_stats?: { deployment_state: ", - "MlDeploymentState", + "MlDeploymentAssignmentState", " | undefined; allocation_state: ", "MlDeploymentAllocationState", " | undefined; } | undefined; }, ", @@ -3476,7 +3532,7 @@ ", { errorMessage?: string | undefined; ready: boolean; enabled: boolean; endpoint?: Partial<", "InferenceInferenceEndpointInfo", "> | undefined; model_stats?: { deployment_state: ", - "MlDeploymentState", + "MlDeploymentAssignmentState", " | undefined; allocation_state: ", "MlDeploymentAllocationState", " | undefined; } | undefined; }, ", @@ -4163,7 +4219,7 @@ "ObservabilityAIAssistantRouteCreateOptions", ">; }, TEndpoint>>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -4178,7 +4234,7 @@ "signature": [ "TEndpoint" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false }, @@ -4241,7 +4297,7 @@ }, "]" ], - "path": "packages/kbn-server-route-repository-utils/src/typings.ts", + "path": "src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts", "deprecated": false, "trackAdoption": false } @@ -4257,7 +4313,7 @@ "signature": [ "() => boolean" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -4281,7 +4337,7 @@ }, ">" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4292,7 +4348,7 @@ "tags": [], "label": "{}", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4306,7 +4362,7 @@ "signature": [ "AbortSignal" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -4327,7 +4383,7 @@ "ChatRegistrationRenderFunction", ") => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4341,7 +4397,7 @@ "signature": [ "ChatRegistrationRenderFunction" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -4361,7 +4417,7 @@ "ObservabilityAIAssistantScreenContext", ") => () => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4375,7 +4431,7 @@ "signature": [ "ObservabilityAIAssistantScreenContext" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -4395,7 +4451,7 @@ "ObservabilityAIAssistantScreenContext", "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -4411,7 +4467,7 @@ "signature": [ "ObservabilityAIAssistantConversationService" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -4435,7 +4491,7 @@ }, ">>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4449,7 +4505,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -4476,7 +4532,7 @@ }, "[]>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -4498,7 +4554,7 @@ }, "[]) => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4519,7 +4575,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -4545,7 +4601,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -4561,7 +4617,7 @@ "tags": [], "label": "UseChatResult", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4582,7 +4638,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false }, @@ -4604,7 +4660,7 @@ }, "[]) => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4625,7 +4681,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -4649,7 +4705,7 @@ "text": "ChatState" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false }, @@ -4671,7 +4727,7 @@ }, "[]) => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -4692,7 +4748,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -4710,7 +4766,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -4728,7 +4784,7 @@ "tags": [], "label": "ChatActionClickType", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4740,7 +4796,7 @@ "tags": [], "label": "ChatState", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4752,7 +4808,7 @@ "tags": [], "label": "FunctionVisibility", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4764,7 +4820,7 @@ "tags": [], "label": "KnowledgeBaseEntryRole", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4776,7 +4832,7 @@ "tags": [], "label": "KnowledgeBaseType", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4788,7 +4844,7 @@ "tags": [], "label": "MessageRole", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4800,7 +4856,7 @@ "tags": [], "label": "ObservabilityAIAssistantTelemetryEventType", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/telemetry_event_type.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/telemetry_event_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4812,7 +4868,7 @@ "tags": [], "label": "StreamingChatResponseEventType", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4824,7 +4880,7 @@ "tags": [], "label": "VisualizeESQLUserIntention", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4841,7 +4897,7 @@ "signature": [ "(T extends Promise ? State : State) & { refresh: () => void; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4856,7 +4912,7 @@ "signature": [ "\"observability:logSources\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4871,7 +4927,7 @@ "signature": [ "\"aiAssistant:preferredAIAssistantType\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4886,7 +4942,7 @@ "signature": [ "\"observability:aiAssistantSearchConnectorIndexPattern\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4901,7 +4957,7 @@ "signature": [ "\"observability:aiAssistantSimulatedFunctionCalling\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5191,7 +5247,7 @@ ", { errorMessage?: string | undefined; ready: boolean; enabled: boolean; endpoint?: Partial<", "InferenceInferenceEndpointInfo", "> | undefined; model_stats?: { deployment_state: ", - "MlDeploymentState", + "MlDeploymentAssignmentState", " | undefined; allocation_state: ", "MlDeploymentAllocationState", " | undefined; } | undefined; }, ", @@ -5904,7 +5960,7 @@ }, " | undefined; } | undefined> ? TWrappedResponseType : TReturnType : never" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/api/index.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/api/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5919,7 +5975,7 @@ "signature": [ "(payload: ChatActionClickPayloadExecuteEsql) => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -5942,7 +5998,7 @@ }, "; } & { query: string; userOverrides?: unknown; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/types.ts", "deprecated": false, "trackAdoption": false } @@ -5967,7 +6023,7 @@ }, "; } & { query: string; userOverrides?: unknown; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -5990,7 +6046,7 @@ }, ".ChatCompletionChunk; } & { id: string; message: { content?: string | undefined; function_call?: { name?: string | undefined; arguments?: string | undefined; } | undefined; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6079,7 +6135,7 @@ }, "[] | undefined; description?: string | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6091,7 +6147,7 @@ "tags": [], "label": "elasticAiAssistantImage", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/index.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6106,7 +6162,7 @@ "signature": [ "\"negative\" | \"positive\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -6396,7 +6452,7 @@ ", { errorMessage?: string | undefined; ready: boolean; enabled: boolean; endpoint?: Partial<", "InferenceInferenceEndpointInfo", "> | undefined; model_stats?: { deployment_state: ", - "MlDeploymentState", + "MlDeploymentAssignmentState", " | undefined; allocation_state: ", "MlDeploymentAllocationState", " | undefined; } | undefined; }, ", @@ -7115,7 +7171,7 @@ }, " ? ClientRequestParamsOfType : TRouteParamsRT extends undefined ? {} : never : never" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/api/index.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/api/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -7130,7 +7186,7 @@ "signature": [ "\"POST /internal/observability_ai_assistant/chat\" | \"POST /internal/observability_ai_assistant/chat/recall\" | \"POST /internal/observability_ai_assistant/chat/complete\" | \"POST /api/observability_ai_assistant/chat/complete 2023-10-31\" | \"GET /internal/observability_ai_assistant/conversation/{conversationId}\" | \"POST /internal/observability_ai_assistant/conversations\" | \"POST /internal/observability_ai_assistant/conversation\" | \"PUT /internal/observability_ai_assistant/conversation/{conversationId}\" | \"PUT /internal/observability_ai_assistant/conversation/{conversationId}/title\" | \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\" | \"GET /internal/observability_ai_assistant/connectors\" | \"GET /internal/observability_ai_assistant/functions\" | \"POST /internal/observability_ai_assistant/functions/recall\" | \"POST /internal/observability_ai_assistant/functions/summarize\" | \"POST /internal/observability_ai_assistant/kb/semantic_text_migration\" | \"POST /internal/observability_ai_assistant/kb/setup\" | \"POST /internal/observability_ai_assistant/kb/reset\" | \"GET /internal/observability_ai_assistant/kb/status\" | \"GET /internal/observability_ai_assistant/kb/entries\" | \"PUT /internal/observability_ai_assistant/kb/user_instructions\" | \"POST /internal/observability_ai_assistant/kb/entries/import\" | \"GET /internal/observability_ai_assistant/kb/user_instructions\" | \"POST /internal/observability_ai_assistant/kb/entries/save\" | \"DELETE /internal/observability_ai_assistant/kb/entries/{entryId}\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/api/index.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/api/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -7153,7 +7209,7 @@ }, ") => void" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -7165,7 +7221,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -7187,7 +7243,7 @@ }, "; }) => React.ReactNode" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -7210,7 +7266,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -7237,7 +7293,7 @@ }, "; }) => React.ReactNode" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -7260,7 +7316,7 @@ }, "; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -7331,7 +7387,7 @@ "InsightResponse", "; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/index.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -7353,7 +7409,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -7367,7 +7423,7 @@ "tags": [], "label": "aiAssistantCapabilities", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/capabilities.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/capabilities.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -7378,7 +7434,7 @@ "tags": [], "label": "show", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/capabilities.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/capabilities.ts", "deprecated": false, "trackAdoption": false } @@ -7393,7 +7449,7 @@ "tags": [], "label": "ObservabilityAIAssistantPublicSetup", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -7407,7 +7463,7 @@ "tags": [], "label": "ObservabilityAIAssistantPublicStart", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -7427,7 +7483,7 @@ "text": "ObservabilityAIAssistantService" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -7443,7 +7499,7 @@ "InsightProps", "> | null" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -7459,7 +7515,7 @@ "ChatFlyoutSecondSlotHandler", " | undefined>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -7481,7 +7537,7 @@ }, " | undefined>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -7502,7 +7558,7 @@ "text": "ObservabilityAIAssistantChatService" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -7519,7 +7575,7 @@ "() => ", "UseGenAIConnectorsResult" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -7544,7 +7600,7 @@ "text": "UseChatResult" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -7615,7 +7671,7 @@ }, "[]; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts", "deprecated": false, "trackAdoption": false } @@ -7639,7 +7695,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -7650,7 +7706,7 @@ "tags": [], "label": "{}", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -7661,7 +7717,7 @@ "tags": [], "label": "message", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -7672,7 +7728,7 @@ "tags": [], "label": "instructions", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -7697,7 +7753,7 @@ "ScreenContextActionDefinition", ">" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -7712,7 +7768,7 @@ "signature": [ "TActionDefinition" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", "deprecated": false, "trackAdoption": false }, @@ -7726,7 +7782,7 @@ "signature": [ "TRespondFunction" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -7757,7 +7813,7 @@ }, "[]; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -7771,248 +7827,1856 @@ } }, "server": { - "classes": [], - "functions": [ + "classes": [ { "parentPluginId": "observabilityAIAssistant", - "id": "def-server.streamIntoObservable", - "type": "Function", + "id": "def-server.ObservabilityAIAssistantClient", + "type": "Class", "tags": [], - "label": "streamIntoObservable", + "label": "ObservabilityAIAssistantClient", "description": [], - "signature": [ - "(readable: ", - "Readable", - ") => ", - "Observable", - "" - ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "observabilityAIAssistant", - "id": "def-server.streamIntoObservable.$1", - "type": "Object", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed", + "type": "Function", "tags": [], - "label": "readable", + "label": "Constructor", "description": [], "signature": [ - "Readable" + "any" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", "deprecated": false, "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - } - ], - "interfaces": [], - "enums": [], - "misc": [ - { - "parentPluginId": "observabilityAIAssistant", - "id": "def-server.aiAssistantLogsIndexPattern", - "type": "string", - "tags": [], - "label": "aiAssistantLogsIndexPattern", - "description": [], - "signature": [ - "\"observability:logSources\"" - ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observabilityAIAssistant", - "id": "def-server.aiAssistantSearchConnectorIndexPattern", - "type": "string", - "tags": [], - "label": "aiAssistantSearchConnectorIndexPattern", - "description": [], - "signature": [ - "\"observability:aiAssistantSearchConnectorIndexPattern\"" - ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observabilityAIAssistant", - "id": "def-server.aiAssistantSimulatedFunctionCalling", - "type": "string", - "tags": [], - "label": "aiAssistantSimulatedFunctionCalling", - "description": [], - "signature": [ - "\"observability:aiAssistantSimulatedFunctionCalling\"" - ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observabilityAIAssistant", - "id": "def-server.ObservabilityAIAssistantServerRouteRepository", - "type": "Type", - "tags": [], - "label": "ObservabilityAIAssistantServerRouteRepository", - "description": [], - "signature": [ - "{ \"DELETE /internal/observability_ai_assistant/kb/entries/{entryId}\": ", - { - "pluginId": "@kbn/server-route-repository-utils", - "scope": "common", - "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", - "section": "def-common.ServerRoute", - "text": "ServerRoute" - }, - "<\"DELETE /internal/observability_ai_assistant/kb/entries/{entryId}\", ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ entryId: ", - "StringC", - "; }>; }>, ", - "ObservabilityAIAssistantRouteHandlerResources", - ", void, ", - "ObservabilityAIAssistantRouteCreateOptions", - ">; \"POST /internal/observability_ai_assistant/kb/entries/save\": ", - { - "pluginId": "@kbn/server-route-repository-utils", - "scope": "common", - "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", - "section": "def-common.ServerRoute", - "text": "ServerRoute" - }, - "<\"POST /internal/observability_ai_assistant/kb/entries/save\", ", - "TypeC", - "<{ body: ", - "IntersectionC", - "<[", - "TypeC", - "<{ id: ", - "StringC", - "; title: ", - "StringC", - "; text: ", - "BrandC", - "<", - "StringC", - ", ", - { - "pluginId": "@kbn/io-ts-utils", - "scope": "common", - "docId": "kibKbnIoTsUtilsPluginApi", - "section": "def-common.NonEmptyStringBrand", - "text": "NonEmptyStringBrand" - }, - ">; }>, ", - "PartialC", - "<{ confidence: ", - "UnionC", - "<[", - "LiteralC", - "<\"low\">, ", - "LiteralC", - "<\"medium\">, ", - "LiteralC", - "<\"high\">]>; is_correction: ", - "Type", - "; public: ", - "Type", - "; labels: ", - "RecordC", - "<", - "StringC", - ", ", - "StringC", - ">; role: ", - "UnionC", - "<[", - "LiteralC", - "<", - { - "pluginId": "observabilityAIAssistant", - "scope": "common", - "docId": "kibObservabilityAIAssistantPluginApi", - "section": "def-common.KnowledgeBaseEntryRole", - "text": "KnowledgeBaseEntryRole" - }, - ".AssistantSummarization>, ", - "LiteralC", - "<", - { - "pluginId": "observabilityAIAssistant", - "scope": "common", - "docId": "kibObservabilityAIAssistantPluginApi", - "section": "def-common.KnowledgeBaseEntryRole", - "text": "KnowledgeBaseEntryRole" - }, - ".UserEntry>, ", - "LiteralC", - "<", - { - "pluginId": "observabilityAIAssistant", - "scope": "common", - "docId": "kibObservabilityAIAssistantPluginApi", - "section": "def-common.KnowledgeBaseEntryRole", - "text": "KnowledgeBaseEntryRole" - }, - ".Elastic>]>; }>]>; }>, ", - "ObservabilityAIAssistantRouteHandlerResources", - ", void, ", - "ObservabilityAIAssistantRouteCreateOptions", - ">; \"GET /internal/observability_ai_assistant/kb/user_instructions\": ", - { - "pluginId": "@kbn/server-route-repository-utils", - "scope": "common", - "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", - "section": "def-common.ServerRoute", - "text": "ServerRoute" - }, - "<\"GET /internal/observability_ai_assistant/kb/user_instructions\", undefined, ", - "ObservabilityAIAssistantRouteHandlerResources", - ", { userInstructions: (", - "Instruction", - " & { public?: boolean | undefined; })[]; }, ", - "ObservabilityAIAssistantRouteCreateOptions", - ">; \"POST /internal/observability_ai_assistant/kb/entries/import\": ", - { - "pluginId": "@kbn/server-route-repository-utils", - "scope": "common", - "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", - "section": "def-common.ServerRoute", - "text": "ServerRoute" - }, - "<\"POST /internal/observability_ai_assistant/kb/entries/import\", ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ entries: ", - "ArrayC", - "<", - "IntersectionC", - "<[", - "TypeC", - "<{ id: ", - "StringC", - "; title: ", - "StringC", - "; text: ", - "BrandC", - "<", - "StringC", - ", ", - { + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "dependencies", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.config", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + "{ readonly scope?: \"search\" | \"observability\" | undefined; readonly enabled: boolean; readonly enableKnowledgeBase: boolean; }" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.core", + "type": "Object", + "tags": [], + "label": "core", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-lifecycle-server", + "scope": "server", + "docId": "kibKbnCoreLifecycleServerPluginApi", + "section": "def-server.CoreSetup", + "text": "CoreSetup" + }, + "<", + "ObservabilityAIAssistantPluginStartDependencies", + ", unknown>" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.actionsClient", + "type": "Object", + "tags": [], + "label": "actionsClient", + "description": [], + "signature": [ + "{ execute: (connectorExecuteParams: ", + "ConnectorExecuteParams", + ") => Promise<", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.ActionTypeExecutorResult", + "text": "ActionTypeExecutorResult" + }, + ">; create: ({ action, options, }: Omit<", + "ConnectorCreateParams", + ", \"context\">) => Promise<", + "Connector", + ">; update: ({ id, action, }: Pick<", + "ConnectorUpdateParams", + ", \"id\" | \"action\">) => Promise<", + "Connector", + ">; get: ({ id, throwIfSystemAction, }: { id: string; throwIfSystemAction?: boolean | undefined; }) => Promise<", + "Connector", + ">; getAll: ({ includeSystemActions }?: { includeSystemActions?: boolean | undefined; }) => Promise<", + { + "pluginId": "actions", + "scope": "server", + "docId": "kibActionsPluginApi", + "section": "def-server.ConnectorWithExtraFindData", + "text": "ConnectorWithExtraFindData" + }, + "[]>; getAllSystemConnectors: () => Promise<", + { + "pluginId": "actions", + "scope": "server", + "docId": "kibActionsPluginApi", + "section": "def-server.ConnectorWithExtraFindData", + "text": "ConnectorWithExtraFindData" + }, + "[]>; getBulk: ({ ids, throwIfSystemAction, }: { ids: string[]; throwIfSystemAction?: boolean | undefined; }) => Promise<", + "Connector", + "[]>; getOAuthAccessToken: ({ type, options }: Readonly<{} & { type: \"jwt\" | \"client\"; options: Readonly<{} & { tokenUrl: string; config: Readonly<{} & { clientId: string; jwtKeyId: string; userIdentifierValue: string; }>; secrets: Readonly<{ privateKeyPassword?: string | undefined; } & { clientSecret: string; privateKey: string; }>; }> | Readonly<{} & { tokenUrl: string; config: Readonly<{} & { clientId: string; tenantId: string; }>; secrets: Readonly<{} & { clientSecret: string; }>; scope: string; }>; }>, configurationUtilities: ", + "ActionsConfigurationUtilities", + ") => Promise<{ accessToken: string | null; }>; delete: ({ id }: { id: string; }) => Promise<{}>; bulkEnqueueExecution: (options: ", + "ExecuteOptions", + "[]) => Promise<", + "ExecutionResponse", + ">; listTypes: ({ featureId, includeSystemActionTypes, }?: ", + "ListTypesParams", + ") => Promise<", + "ConnectorType", + "[]>; isActionTypeEnabled: (actionTypeId: string, options?: { notifyUsage: boolean; }) => boolean; isPreconfigured: (connectorId: string) => boolean; isSystemAction: (connectorId: string) => boolean; getGlobalExecutionLogWithAuth: ({ dateStart, dateEnd, filter, page, perPage, sort, namespaces, }: ", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.GetGlobalExecutionLogParams", + "text": "GetGlobalExecutionLogParams" + }, + ") => Promise<", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.IExecutionLogResult", + "text": "IExecutionLogResult" + }, + ">; getGlobalExecutionKpiWithAuth: ({ dateStart, dateEnd, filter, namespaces, }: ", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.GetGlobalExecutionKPIParams", + "text": "GetGlobalExecutionKPIParams" + }, + ") => Promise<{ success: number; unknown: number; failure: number; warning: number; }>; }" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.uiSettingsClient", + "type": "Object", + "tags": [], + "label": "uiSettingsClient", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-ui-settings-server", + "scope": "server", + "docId": "kibKbnCoreUiSettingsServerPluginApi", + "section": "def-server.IUiSettingsClient", + "text": "IUiSettingsClient" + } + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.namespace", + "type": "string", + "tags": [], + "label": "namespace", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.esClient", + "type": "Object", + "tags": [], + "label": "esClient", + "description": [], + "signature": [ + "{ asInternalUser: ", + { + "pluginId": "@kbn/core-elasticsearch-server", + "scope": "server", + "docId": "kibKbnCoreElasticsearchServerPluginApi", + "section": "def-server.ElasticsearchClient", + "text": "ElasticsearchClient" + }, + "; asCurrentUser: ", + { + "pluginId": "@kbn/core-elasticsearch-server", + "scope": "server", + "docId": "kibKbnCoreElasticsearchServerPluginApi", + "section": "def-server.ElasticsearchClient", + "text": "ElasticsearchClient" + }, + "; }" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.inferenceClient", + "type": "Object", + "tags": [], + "label": "inferenceClient", + "description": [], + "signature": [ + { + "pluginId": "inference", + "scope": "server", + "docId": "kibInferencePluginApi", + "section": "def-server.InferenceClient", + "text": "InferenceClient" + } + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.logger", + "type": "Object", + "tags": [], + "label": "logger", + "description": [], + "signature": [ + { + "pluginId": "@kbn/logging", + "scope": "common", + "docId": "kibKbnLoggingPluginApi", + "section": "def-common.Logger", + "text": "Logger" + } + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.user", + "type": "Object", + "tags": [], + "label": "user", + "description": [], + "signature": [ + "{ id?: string | undefined; name: string; } | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.knowledgeBaseService", + "type": "Object", + "tags": [], + "label": "knowledgeBaseService", + "description": [], + "signature": [ + "KnowledgeBaseService" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.Unnamed.$1.scopes", + "type": "Array", + "tags": [], + "label": "scopes", + "description": [], + "signature": [ + { + "pluginId": "@kbn/ai-assistant-common", + "scope": "common", + "docId": "kibKbnAiAssistantCommonPluginApi", + "section": "def-common.AssistantScope", + "text": "AssistantScope" + }, + "[]" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.get", + "type": "Function", + "tags": [], + "label": "get", + "description": [], + "signature": [ + "(conversationId: string) => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.get.$1", + "type": "string", + "tags": [], + "label": "conversationId", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.delete", + "type": "Function", + "tags": [], + "label": "delete", + "description": [], + "signature": [ + "(conversationId: string) => Promise" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.delete.$1", + "type": "string", + "tags": [], + "label": "conversationId", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete", + "type": "Function", + "tags": [], + "label": "complete", + "description": [], + "signature": [ + "({ functionClient, connectorId, simulateFunctionCalling, instructions: adHocInstructions, messages: initialMessages, signal, persist, kibanaPublicUrl, isPublic, title: predefinedTitle, conversationId: predefinedConversationId, disableFunctions, }: { messages: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + "[]; connectorId: string; signal: AbortSignal; functionClient: ", + "ChatFunctionClient", + "; persist: boolean; conversationId?: string | undefined; title?: string | undefined; isPublic?: boolean | undefined; kibanaPublicUrl?: string | undefined; instructions?: ", + "AdHocInstruction", + "[] | undefined; simulateFunctionCalling?: boolean | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; }) => ", + "Observable", + "<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.ConversationCreateEvent", + "text": "ConversationCreateEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.ConversationUpdateEvent", + "text": "ConversationUpdateEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.MessageAddEvent", + "text": "MessageAddEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.ChatCompletionChunkEvent", + "text": "ChatCompletionChunkEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.ChatCompletionMessageEvent", + "text": "ChatCompletionMessageEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.TokenCountEvent", + "text": "TokenCountEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.BufferFlushEvent", + "text": "BufferFlushEvent" + }, + ">" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1", + "type": "Object", + "tags": [], + "label": "{\n functionClient,\n connectorId,\n simulateFunctionCalling = false,\n instructions: adHocInstructions = [],\n messages: initialMessages,\n signal,\n persist,\n kibanaPublicUrl,\n isPublic,\n title: predefinedTitle,\n conversationId: predefinedConversationId,\n disableFunctions = false,\n }", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.messages", + "type": "Array", + "tags": [], + "label": "messages", + "description": [], + "signature": [ + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + "[]" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.connectorId", + "type": "string", + "tags": [], + "label": "connectorId", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.signal", + "type": "Object", + "tags": [], + "label": "signal", + "description": [], + "signature": [ + "AbortSignal" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.functionClient", + "type": "Object", + "tags": [], + "label": "functionClient", + "description": [], + "signature": [ + "ChatFunctionClient" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.persist", + "type": "boolean", + "tags": [], + "label": "persist", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.conversationId", + "type": "string", + "tags": [], + "label": "conversationId", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.isPublic", + "type": "CompoundType", + "tags": [], + "label": "isPublic", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.kibanaPublicUrl", + "type": "string", + "tags": [], + "label": "kibanaPublicUrl", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.instructions", + "type": "Array", + "tags": [], + "label": "instructions", + "description": [], + "signature": [ + "AdHocInstruction", + "[] | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.simulateFunctionCalling", + "type": "CompoundType", + "tags": [], + "label": "simulateFunctionCalling", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.complete.$1.disableFunctions", + "type": "CompoundType", + "tags": [], + "label": "disableFunctions", + "description": [], + "signature": [ + "boolean | { except: string[]; } | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat", + "type": "Function", + "tags": [], + "label": "chat", + "description": [], + "signature": [ + "(name: string, { messages, connectorId, functions, functionCall, signal, simulateFunctionCalling, tracer, }: { messages: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + "[]; connectorId: string; functions?: { name: string; description: string; parameters?: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.CompatibleJSONSchema", + "text": "CompatibleJSONSchema" + }, + " | undefined; }[] | undefined; functionCall?: string | undefined; signal: AbortSignal; simulateFunctionCalling?: boolean | undefined; tracer: ", + "LangTracer", + "; }) => ", + "Observable", + "<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.ChatCompletionChunkEvent", + "text": "ChatCompletionChunkEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.ChatCompletionMessageEvent", + "text": "ChatCompletionMessageEvent" + }, + " | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.TokenCountEvent", + "text": "TokenCountEvent" + }, + ">" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2", + "type": "Object", + "tags": [], + "label": "{\n messages,\n connectorId,\n functions,\n functionCall,\n signal,\n simulateFunctionCalling,\n tracer,\n }", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.messages", + "type": "Array", + "tags": [], + "label": "messages", + "description": [], + "signature": [ + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + "[]" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.connectorId", + "type": "string", + "tags": [], + "label": "connectorId", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.functions", + "type": "Array", + "tags": [], + "label": "functions", + "description": [], + "signature": [ + "{ name: string; description: string; parameters?: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.CompatibleJSONSchema", + "text": "CompatibleJSONSchema" + }, + " | undefined; }[] | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.functionCall", + "type": "string", + "tags": [], + "label": "functionCall", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.signal", + "type": "Object", + "tags": [], + "label": "signal", + "description": [], + "signature": [ + "AbortSignal" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.simulateFunctionCalling", + "type": "CompoundType", + "tags": [], + "label": "simulateFunctionCalling", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.tracer", + "type": "Object", + "tags": [], + "label": "tracer", + "description": [], + "signature": [ + "LangTracer" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.find", + "type": "Function", + "tags": [], + "label": "find", + "description": [], + "signature": [ + "(options?: { query?: string | undefined; } | undefined) => Promise<{ conversations: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + "[]; }>" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.find.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.find.$1.query", + "type": "string", + "tags": [], + "label": "query", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.update", + "type": "Function", + "tags": [], + "label": "update", + "description": [], + "signature": [ + "(conversationId: string, conversation: ", + "ConversationUpdateRequest", + ") => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.update.$1", + "type": "string", + "tags": [], + "label": "conversationId", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.update.$2", + "type": "CompoundType", + "tags": [], + "label": "conversation", + "description": [], + "signature": [ + "ConversationUpdateRequest" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.setTitle", + "type": "Function", + "tags": [], + "label": "setTitle", + "description": [], + "signature": [ + "({ conversationId, title }: { conversationId: string; title: string; }) => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.setTitle.$1", + "type": "Object", + "tags": [], + "label": "{ conversationId, title }", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.setTitle.$1.conversationId", + "type": "string", + "tags": [], + "label": "conversationId", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.setTitle.$1.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "(conversation: ", + "ConversationRequestBase", + ") => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.create.$1", + "type": "CompoundType", + "tags": [], + "label": "conversation", + "description": [], + "signature": [ + "ConversationRequestBase" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.recall", + "type": "Function", + "tags": [], + "label": "recall", + "description": [], + "signature": [ + "({ queries, categories, limit, }: { queries: { text: string; boost?: number | undefined; }[]; categories?: string[] | undefined; limit?: { size?: number | undefined; tokenCount?: number | undefined; } | undefined; }) => Promise<", + "RecalledEntry", + "[]>" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.recall.$1", + "type": "Object", + "tags": [], + "label": "{\n queries,\n categories,\n limit,\n }", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.recall.$1.queries", + "type": "Array", + "tags": [], + "label": "queries", + "description": [], + "signature": [ + "{ text: string; boost?: number | undefined; }[]" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.recall.$1.categories", + "type": "Array", + "tags": [], + "label": "categories", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.recall.$1.limit", + "type": "Object", + "tags": [], + "label": "limit", + "description": [], + "signature": [ + "{ size?: number | undefined; tokenCount?: number | undefined; } | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.getKnowledgeBaseStatus", + "type": "Function", + "tags": [], + "label": "getKnowledgeBaseStatus", + "description": [], + "signature": [ + "() => Promise<{ ready: boolean; enabled: boolean; errorMessage: string; endpoint?: undefined; model_stats?: undefined; } | { endpoint: ", + "InferenceInferenceEndpointInfo", + "; ready: boolean; enabled: boolean; model_stats: { allocation_count: number; deployment_state: ", + "MlDeploymentAssignmentState", + " | undefined; allocation_state: ", + "MlDeploymentAllocationState", + " | undefined; }; errorMessage?: undefined; }>" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.setupKnowledgeBase", + "type": "Function", + "tags": [], + "label": "setupKnowledgeBase", + "description": [], + "signature": [ + "(modelId: string | undefined) => Promise<", + "InferenceInferenceEndpointInfo", + ">" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.setupKnowledgeBase.$1", + "type": "string", + "tags": [], + "label": "modelId", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.resetKnowledgeBase", + "type": "Function", + "tags": [], + "label": "resetKnowledgeBase", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.migrateKnowledgeBaseToSemanticText", + "type": "Function", + "tags": [], + "label": "migrateKnowledgeBaseToSemanticText", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.addUserInstruction", + "type": "Function", + "tags": [], + "label": "addUserInstruction", + "description": [], + "signature": [ + "({ entry, }: { entry: Omit<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.KnowledgeBaseEntry", + "text": "KnowledgeBaseEntry" + }, + ", \"type\" | \"@timestamp\" | \"role\" | \"confidence\" | \"is_correction\">; }) => Promise" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.addUserInstruction.$1", + "type": "Object", + "tags": [], + "label": "{\n entry,\n }", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.addUserInstruction.$1.entry", + "type": "Object", + "tags": [], + "label": "entry", + "description": [], + "signature": [ + "{ id: string; text: string; title?: string | undefined; labels?: Record | undefined; public: boolean; user?: { name: string; } | undefined; }" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.addKnowledgeBaseEntry", + "type": "Function", + "tags": [], + "label": "addKnowledgeBaseEntry", + "description": [], + "signature": [ + "({ entry, }: { entry: Omit<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.KnowledgeBaseEntry", + "text": "KnowledgeBaseEntry" + }, + ", \"type\" | \"@timestamp\">; }) => Promise" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.addKnowledgeBaseEntry.$1", + "type": "Object", + "tags": [], + "label": "{\n entry,\n }", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.addKnowledgeBaseEntry.$1.entry", + "type": "Object", + "tags": [], + "label": "entry", + "description": [], + "signature": [ + "{ id: string; text: string; title?: string | undefined; role: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.KnowledgeBaseEntryRole", + "text": "KnowledgeBaseEntryRole" + }, + "; labels?: Record | undefined; public: boolean; user?: { name: string; } | undefined; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; }" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.getKnowledgeBaseEntries", + "type": "Function", + "tags": [], + "label": "getKnowledgeBaseEntries", + "description": [], + "signature": [ + "({ query, sortBy, sortDirection, }: { query: string; sortBy: string; sortDirection: \"asc\" | \"desc\"; }) => Promise<{ entries: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.KnowledgeBaseEntry", + "text": "KnowledgeBaseEntry" + }, + "[]; }>" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.getKnowledgeBaseEntries.$1", + "type": "Object", + "tags": [], + "label": "{\n query,\n sortBy,\n sortDirection,\n }", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.getKnowledgeBaseEntries.$1.query", + "type": "string", + "tags": [], + "label": "query", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.getKnowledgeBaseEntries.$1.sortBy", + "type": "string", + "tags": [], + "label": "sortBy", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.getKnowledgeBaseEntries.$1.sortDirection", + "type": "CompoundType", + "tags": [], + "label": "sortDirection", + "description": [], + "signature": [ + "\"asc\" | \"desc\"" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.deleteKnowledgeBaseEntry", + "type": "Function", + "tags": [], + "label": "deleteKnowledgeBaseEntry", + "description": [], + "signature": [ + "(id: string) => Promise" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.deleteKnowledgeBaseEntry.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.getKnowledgeBaseUserInstructions", + "type": "Function", + "tags": [], + "label": "getKnowledgeBaseUserInstructions", + "description": [], + "signature": [ + "() => Promise<(", + "Instruction", + " & { public?: boolean | undefined; })[]>" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionRequestMessage", + "type": "Function", + "tags": [], + "label": "createFunctionRequestMessage", + "description": [], + "signature": [ + "({\n name,\n args,\n}: { name: string; args?: Record | undefined; }) => ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.MessageAddEvent", + "text": "MessageAddEvent" + } + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionRequestMessage.$1", + "type": "Object", + "tags": [], + "label": "{\n name,\n args,\n}", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionRequestMessage.$1.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionRequestMessage.$1.args", + "type": "Object", + "tags": [], + "label": "args", + "description": [], + "signature": [ + "Record | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionResponseMessage", + "type": "Function", + "tags": [], + "label": "createFunctionResponseMessage", + "description": [], + "signature": [ + "({\n name,\n content,\n data,\n}: { name: string; content: unknown; data?: unknown; }) => ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.MessageAddEvent", + "text": "MessageAddEvent" + } + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionResponseMessage.$1", + "type": "Object", + "tags": [], + "label": "{\n name,\n content,\n data,\n}", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionResponseMessage.$1.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionResponseMessage.$1.content", + "type": "Unknown", + "tags": [], + "label": "content", + "description": [], + "signature": [ + "unknown" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.createFunctionResponseMessage.$1.data", + "type": "Unknown", + "tags": [], + "label": "data", + "description": [], + "signature": [ + "unknown" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.streamIntoObservable", + "type": "Function", + "tags": [], + "label": "streamIntoObservable", + "description": [], + "signature": [ + "(readable: ", + "Readable", + ") => ", + "Observable", + "" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.streamIntoObservable.$1", + "type": "Object", + "tags": [], + "label": "readable", + "description": [], + "signature": [ + "Readable" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.aiAssistantLogsIndexPattern", + "type": "string", + "tags": [], + "label": "aiAssistantLogsIndexPattern", + "description": [], + "signature": [ + "\"observability:logSources\"" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.aiAssistantSearchConnectorIndexPattern", + "type": "string", + "tags": [], + "label": "aiAssistantSearchConnectorIndexPattern", + "description": [], + "signature": [ + "\"observability:aiAssistantSearchConnectorIndexPattern\"" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.aiAssistantSimulatedFunctionCalling", + "type": "string", + "tags": [], + "label": "aiAssistantSimulatedFunctionCalling", + "description": [], + "signature": [ + "\"observability:aiAssistantSimulatedFunctionCalling\"" + ], + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantServerRouteRepository", + "type": "Type", + "tags": [], + "label": "ObservabilityAIAssistantServerRouteRepository", + "description": [], + "signature": [ + "{ \"DELETE /internal/observability_ai_assistant/kb/entries/{entryId}\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"DELETE /internal/observability_ai_assistant/kb/entries/{entryId}\", ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ entryId: ", + "StringC", + "; }>; }>, ", + "ObservabilityAIAssistantRouteHandlerResources", + ", void, ", + "ObservabilityAIAssistantRouteCreateOptions", + ">; \"POST /internal/observability_ai_assistant/kb/entries/save\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/observability_ai_assistant/kb/entries/save\", ", + "TypeC", + "<{ body: ", + "IntersectionC", + "<[", + "TypeC", + "<{ id: ", + "StringC", + "; title: ", + "StringC", + "; text: ", + "BrandC", + "<", + "StringC", + ", ", + { + "pluginId": "@kbn/io-ts-utils", + "scope": "common", + "docId": "kibKbnIoTsUtilsPluginApi", + "section": "def-common.NonEmptyStringBrand", + "text": "NonEmptyStringBrand" + }, + ">; }>, ", + "PartialC", + "<{ confidence: ", + "UnionC", + "<[", + "LiteralC", + "<\"low\">, ", + "LiteralC", + "<\"medium\">, ", + "LiteralC", + "<\"high\">]>; is_correction: ", + "Type", + "; public: ", + "Type", + "; labels: ", + "RecordC", + "<", + "StringC", + ", ", + "StringC", + ">; role: ", + "UnionC", + "<[", + "LiteralC", + "<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.KnowledgeBaseEntryRole", + "text": "KnowledgeBaseEntryRole" + }, + ".AssistantSummarization>, ", + "LiteralC", + "<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.KnowledgeBaseEntryRole", + "text": "KnowledgeBaseEntryRole" + }, + ".UserEntry>, ", + "LiteralC", + "<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.KnowledgeBaseEntryRole", + "text": "KnowledgeBaseEntryRole" + }, + ".Elastic>]>; }>]>; }>, ", + "ObservabilityAIAssistantRouteHandlerResources", + ", void, ", + "ObservabilityAIAssistantRouteCreateOptions", + ">; \"GET /internal/observability_ai_assistant/kb/user_instructions\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"GET /internal/observability_ai_assistant/kb/user_instructions\", undefined, ", + "ObservabilityAIAssistantRouteHandlerResources", + ", { userInstructions: (", + "Instruction", + " & { public?: boolean | undefined; })[]; }, ", + "ObservabilityAIAssistantRouteCreateOptions", + ">; \"POST /internal/observability_ai_assistant/kb/entries/import\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/observability_ai_assistant/kb/entries/import\", ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ entries: ", + "ArrayC", + "<", + "IntersectionC", + "<[", + "TypeC", + "<{ id: ", + "StringC", + "; title: ", + "StringC", + "; text: ", + "BrandC", + "<", + "StringC", + ", ", + { "pluginId": "@kbn/io-ts-utils", "scope": "common", "docId": "kibKbnIoTsUtilsPluginApi", @@ -8144,7 +9808,7 @@ ", { errorMessage?: string | undefined; ready: boolean; enabled: boolean; endpoint?: Partial<", "InferenceInferenceEndpointInfo", "> | undefined; model_stats?: { deployment_state: ", - "MlDeploymentState", + "MlDeploymentAssignmentState", " | undefined; allocation_state: ", "MlDeploymentAllocationState", " | undefined; } | undefined; }, ", @@ -8831,7 +10495,7 @@ "ObservabilityAIAssistantRouteCreateOptions", ">; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -8847,7 +10511,13 @@ "({}: { signal: AbortSignal; resources: ", "RespondFunctionResources", "; client: ", - "ObservabilityAIAssistantClient", + { + "pluginId": "observabilityAIAssistant", + "scope": "server", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-server.ObservabilityAIAssistantClient", + "text": "ObservabilityAIAssistantClient" + }, "; functions: ", "ChatFunctionClient", "; scopes: ", @@ -8860,7 +10530,7 @@ }, "[]; }) => Promise" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/service/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -8876,7 +10546,13 @@ "{ signal: AbortSignal; resources: ", "RespondFunctionResources", "; client: ", - "ObservabilityAIAssistantClient", + { + "pluginId": "observabilityAIAssistant", + "scope": "server", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-server.ObservabilityAIAssistantClient", + "text": "ObservabilityAIAssistantClient" + }, "; functions: ", "ChatFunctionClient", "; scopes: ", @@ -8889,7 +10565,7 @@ }, "[]; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/service/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/types.ts", "deprecated": false, "trackAdoption": false } @@ -8905,7 +10581,7 @@ "tags": [], "label": "ObservabilityAIAssistantServerStart", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8921,7 +10597,7 @@ "signature": [ "ObservabilityAIAssistantService" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/types.ts", "deprecated": false, "trackAdoption": false } @@ -8936,7 +10612,7 @@ "tags": [], "label": "ObservabilityAIAssistantServerSetup", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8952,7 +10628,7 @@ "signature": [ "ObservabilityAIAssistantService" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/types.ts", "deprecated": false, "trackAdoption": false } @@ -8980,7 +10656,7 @@ }, " extends Error" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -8994,7 +10670,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9008,7 +10684,7 @@ "signature": [ "T" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9023,7 +10699,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9038,7 +10714,7 @@ "signature": [ "ErrorMetaAttributes[T]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9056,7 +10732,7 @@ "tags": [], "label": "ShortIdTable", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9070,7 +10746,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -9086,7 +10762,7 @@ "signature": [ "(originalId: string) => string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9100,7 +10776,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9118,7 +10794,7 @@ "signature": [ "(shortId: string) => string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9132,7 +10808,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9163,7 +10839,7 @@ "ConcatenatedMessage", ">" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -9196,7 +10872,7 @@ }, ".NotFoundError>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -9229,7 +10905,7 @@ }, ".FunctionNotFoundError>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9243,7 +10919,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9278,7 +10954,7 @@ }, ".InternalError>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9292,7 +10968,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9327,7 +11003,7 @@ }, ".TokenLimitReachedError>" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9341,7 +11017,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -9356,7 +11032,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -9375,7 +11051,7 @@ "signature": [ "(error: Error) => boolean" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9389,7 +11065,7 @@ "signature": [ "Error" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9408,7 +11084,7 @@ "signature": [ "(type: string) => boolean" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/connectors.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/connectors.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9422,7 +11098,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/connectors.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/connectors.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9441,7 +11117,7 @@ "signature": [ "(error: Error) => boolean" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9455,7 +11131,7 @@ "signature": [ "Error" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -9473,7 +11149,7 @@ "tags": [], "label": "Conversation", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9484,7 +11160,7 @@ "tags": [], "label": "'@timestamp'", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9498,7 +11174,7 @@ "signature": [ "{ id?: string | undefined; name: string; } | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9514,7 +11190,7 @@ "TokenCount", " | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9535,7 +11211,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9549,7 +11225,7 @@ "signature": [ "{ [x: string]: string; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9563,7 +11239,7 @@ "signature": [ "{ [x: string]: number; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9574,7 +11250,7 @@ "tags": [], "label": "namespace", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9585,7 +11261,7 @@ "tags": [], "label": "public", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -9609,7 +11285,7 @@ }, "" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9620,7 +11296,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9631,7 +11307,7 @@ "tags": [], "label": "description", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9652,7 +11328,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9666,7 +11342,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9680,7 +11356,7 @@ "signature": [ "TParameters | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false } @@ -9694,7 +11370,7 @@ "tags": [], "label": "KnowledgeBaseEntry", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9705,7 +11381,7 @@ "tags": [], "label": "'@timestamp'", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9716,7 +11392,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9730,7 +11406,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9741,7 +11417,7 @@ "tags": [], "label": "text", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9755,7 +11431,7 @@ "signature": [ "\"medium\" | \"high\" | \"low\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9766,7 +11442,7 @@ "tags": [], "label": "is_correction", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9780,7 +11456,7 @@ "signature": [ "\"user_instruction\" | \"contextual\" | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9791,7 +11467,7 @@ "tags": [], "label": "public", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9805,7 +11481,7 @@ "signature": [ "Record | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9825,7 +11501,7 @@ "text": "KnowledgeBaseEntryRole" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9839,7 +11515,7 @@ "signature": [ "{ name: string; } | undefined" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -9853,7 +11529,7 @@ "tags": [], "label": "Message", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -9864,7 +11540,7 @@ "tags": [], "label": "'@timestamp'", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false }, @@ -9910,7 +11586,7 @@ }, ".Elastic; } | undefined; data?: string | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false } @@ -9926,7 +11602,7 @@ "tags": [], "label": "ChatCompletionErrorCode", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9938,7 +11614,7 @@ "tags": [], "label": "FunctionVisibility", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9950,7 +11626,7 @@ "tags": [], "label": "KnowledgeBaseEntryRole", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9962,7 +11638,7 @@ "tags": [], "label": "KnowledgeBaseType", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9974,7 +11650,7 @@ "tags": [], "label": "MessageRole", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9986,7 +11662,7 @@ "tags": [], "label": "StreamingChatResponseEventType", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -9998,7 +11674,7 @@ "tags": [], "label": "VisualizeESQLUserIntention", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10015,7 +11691,7 @@ "signature": [ "\"observability:logSources\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10030,7 +11706,7 @@ "signature": [ "\"observability:aiAssistantSearchConnectorIndexPattern\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10045,7 +11721,7 @@ "signature": [ "\"observability:aiAssistantSimulatedFunctionCalling\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10068,7 +11744,7 @@ }, ".BufferFlush; } & { data?: string | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10091,7 +11767,7 @@ }, ".ChatCompletionChunk; } & { id: string; message: { content?: string | undefined; function_call?: { name?: string | undefined; arguments?: string | undefined; } | undefined; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10122,7 +11798,7 @@ }, " | undefined; meta?: Record | undefined; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10145,7 +11821,7 @@ }, ".ChatCompletionMessage; } & { id: string; message: { content?: string | undefined; function_call?: { name?: string | undefined; arguments?: string | undefined; } | undefined; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10234,7 +11910,7 @@ }, "[] | undefined; description?: string | undefined; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10259,7 +11935,7 @@ "TokenCount", " | undefined; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10284,7 +11960,7 @@ "TokenCount", " | undefined; id?: string | undefined; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10309,7 +11985,7 @@ "TokenCount", " | undefined; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10340,7 +12016,7 @@ }, "; id: string; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10417,7 +12093,7 @@ "text": "BufferFlushEvent" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10486,7 +12162,7 @@ "text": "BufferFlushEvent" } ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10509,7 +12185,7 @@ }, ".TokenCount; } & { tokens: { completion: number; prompt: number; total: number; }; }" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -10531,7 +12207,7 @@ }, "[]" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index a238101a6e23b..7fb67decca0ba 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 298 | 1 | 296 | 28 | +| 385 | 1 | 383 | 30 | ## Client @@ -60,6 +60,9 @@ Contact [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai ### Functions +### Classes + + ### Consts, variables and types diff --git a/api_docs/observability_a_i_assistant_app.devdocs.json b/api_docs/observability_a_i_assistant_app.devdocs.json index b20b594df3987..d583c2ff125c9 100644 --- a/api_docs/observability_a_i_assistant_app.devdocs.json +++ b/api_docs/observability_a_i_assistant_app.devdocs.json @@ -6,7 +6,69 @@ "interfaces": [], "enums": [], "misc": [], - "objects": [] + "objects": [], + "setup": { + "parentPluginId": "observabilityAIAssistantApp", + "id": "def-public.ObservabilityAIAssistantAppPublicSetup", + "type": "Interface", + "tags": [], + "label": "ObservabilityAIAssistantAppPublicSetup", + "description": [], + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "observabilityAIAssistantApp", + "id": "def-public.ObservabilityAIAssistantAppPublicStart", + "type": "Interface", + "tags": [], + "label": "ObservabilityAIAssistantAppPublicStart", + "description": [], + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistantApp", + "id": "def-public.ObservabilityAIAssistantAppPublicStart.RootCauseAnalysisContainer", + "type": "Function", + "tags": [], + "label": "RootCauseAnalysisContainer", + "description": [], + "signature": [ + "React.ExoticComponent<{ events?: ", + "RootCauseAnalysisEvent", + "[] | undefined; completeInBackground: boolean; onStartAnalysisClick: () => void; onStopAnalysisClick: () => void; onResetAnalysisClick: () => void; onClearAnalysisClick: () => void; onCompleteInBackgroundClick: () => void; loading: boolean; error?: Error | undefined; }>" + ], + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "observabilityAIAssistantApp", + "id": "def-public.ObservabilityAIAssistantAppPublicStart.RootCauseAnalysisContainer.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/ts5.0/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "lifecycle": "start", + "initialIsOpen": true + } }, "server": { "classes": [], @@ -24,7 +86,7 @@ "signature": [ "\"changes\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/changes/index.ts", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/changes/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -39,7 +101,7 @@ "signature": [ "\"query\"" ], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -53,7 +115,7 @@ "tags": [], "label": "ObservabilityAIAssistantAppServerStart", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_app/server/types.ts", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -67,7 +129,7 @@ "tags": [], "label": "ObservabilityAIAssistantAppServerSetup", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_app/server/types.ts", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], diff --git a/api_docs/observability_a_i_assistant_app.mdx b/api_docs/observability_a_i_assistant_app.mdx index d17a9e0e27f08..41e4ea4be98e5 100644 --- a/api_docs/observability_a_i_assistant_app.mdx +++ b/api_docs/observability_a_i_assistant_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistantApp title: "observabilityAIAssistantApp" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistantApp plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistantApp'] --- import observabilityAIAssistantAppObj from './observability_a_i_assistant_app.devdocs.json'; @@ -21,7 +21,15 @@ Contact [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 4 | 0 | 4 | 0 | +| 8 | 0 | 7 | 0 | + +## Client + +### Setup + + +### Start + ## Server diff --git a/api_docs/observability_ai_assistant_management.devdocs.json b/api_docs/observability_ai_assistant_management.devdocs.json index 8cc7e70b1990f..b7ca87c812621 100644 --- a/api_docs/observability_ai_assistant_management.devdocs.json +++ b/api_docs/observability_ai_assistant_management.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "AiAssistantManagementObservabilityPluginSetup", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_management/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "AiAssistantManagementObservabilityPluginStart", "description": [], - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_management/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], diff --git a/api_docs/observability_ai_assistant_management.mdx b/api_docs/observability_ai_assistant_management.mdx index ee6994ae7dc22..7744f46cc3aa9 100644 --- a/api_docs/observability_ai_assistant_management.mdx +++ b/api_docs/observability_ai_assistant_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAiAssistantManagement title: "observabilityAiAssistantManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAiAssistantManagement plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAiAssistantManagement'] --- import observabilityAiAssistantManagementObj from './observability_ai_assistant_management.devdocs.json'; diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx index eefd6bbbc17b9..53230c9761b59 100644 --- a/api_docs/observability_logs_explorer.mdx +++ b/api_docs/observability_logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogsExplorer title: "observabilityLogsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogsExplorer plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogsExplorer'] --- import observabilityLogsExplorerObj from './observability_logs_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 46b8953d5f670..090f6b92d82c5 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index d8f637861d6e7..ddd28f32e344b 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.devdocs.json b/api_docs/osquery.devdocs.json index 942a222062531..df87b16bced25 100644 --- a/api_docs/osquery.devdocs.json +++ b/api_docs/osquery.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "OsqueryPluginSetup", "description": [], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "OsqueryPluginStart", "description": [], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -52,7 +52,7 @@ }, " | undefined; }) => React.JSX.Element) | undefined" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -68,7 +68,7 @@ "OsqueryActionResultProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -83,7 +83,7 @@ "signature": [ "OsqueryActionResultProps" ], - "path": "x-pack/plugins/osquery/public/shared_components/lazy_osquery_result.tsx", + "path": "x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_result.tsx", "deprecated": false, "trackAdoption": false } @@ -101,7 +101,7 @@ "OsqueryActionResultsProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -116,7 +116,7 @@ "signature": [ "OsqueryActionResultsProps" ], - "path": "x-pack/plugins/osquery/public/shared_components/lazy_osquery_results.tsx", + "path": "x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_results.tsx", "deprecated": false, "trackAdoption": false } @@ -136,7 +136,7 @@ "UseFormReturn", "<{ label: string; query: string; ecs_mapping: Record; }, any, undefined>; }) => React.JSX.Element) | undefined" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -150,7 +150,7 @@ "signature": [ "(props: { agentId: string; }) => boolean" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -161,7 +161,7 @@ "tags": [], "label": "props", "description": [], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -172,7 +172,7 @@ "tags": [], "label": "agentId", "description": [], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -191,7 +191,7 @@ "signature": [ "() => { loading: boolean; disabled: boolean; permissionDenied: boolean; }" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -209,7 +209,7 @@ "OsqueryResponseActionsParamsFormProps", ") => React.JSX.Element" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -224,7 +224,7 @@ "signature": [ "OsqueryResponseActionsParamsFormProps" ], - "path": "x-pack/plugins/osquery/public/shared_components/lazy_osquery_action_params_form.tsx", + "path": "x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_action_params_form.tsx", "deprecated": false, "trackAdoption": false } @@ -248,7 +248,7 @@ "SearchHit", "[]; }; }, Error>" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -262,7 +262,7 @@ "signature": [ "UseAllLiveQueriesConfig" ], - "path": "x-pack/plugins/osquery/public/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -289,7 +289,7 @@ "tags": [], "label": "OsqueryPluginSetup", "description": [], - "path": "x-pack/plugins/osquery/server/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -311,7 +311,7 @@ }, "[]; }; readonly \"kibana.alert.rule.execution.timestamp\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.execution.type\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.parameters\": { readonly array: false; readonly type: \"flattened\"; readonly ignore_above: 4096; readonly required: false; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.severity_improving\": { readonly type: \"boolean\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.time_range\": { readonly type: \"date_range\"; readonly format: \"epoch_millis||strict_date_optional_time\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.url\": { readonly type: \"keyword\"; readonly array: false; readonly index: false; readonly required: false; readonly ignore_above: 2048; }; readonly \"kibana.alert.workflow_assignee_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.version\": { readonly type: \"version\"; readonly array: false; readonly required: false; }; }>> & { _index: string; }) | undefined) => Promise<{ response: { action_id: string; '@timestamp': string; expiration: string; type: string; input_type: string; alert_ids: string[] | undefined; event_ids: string[] | undefined; case_ids: string[] | undefined; agent_ids: string[] | undefined; agent_all: boolean | undefined; agent_platforms: string[] | undefined; agent_policy_ids: string[] | undefined; agents: string[]; user_id: string | undefined; metadata: object | undefined; pack_id: string | undefined; pack_name: string | undefined; pack_prebuilt: boolean | undefined; queries: _.Dictionary[]; }; fleetActionsCount: number; }>; stop: () => void; }" ], - "path": "x-pack/plugins/osquery/server/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/server/types.ts", "deprecated": false, "trackAdoption": false } @@ -326,7 +326,7 @@ "tags": [], "label": "OsqueryPluginStart", "description": [], - "path": "x-pack/plugins/osquery/server/types.ts", + "path": "x-pack/platform/plugins/shared/osquery/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -350,7 +350,7 @@ "signature": [ "\"/app/osquery\"" ], - "path": "x-pack/plugins/osquery/common/constants.ts", + "path": "x-pack/platform/plugins/shared/osquery/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -365,7 +365,7 @@ "signature": [ "\"osquery_manager\"" ], - "path": "x-pack/plugins/osquery/common/constants.ts", + "path": "x-pack/platform/plugins/shared/osquery/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -380,7 +380,7 @@ "signature": [ "\"osquery\"" ], - "path": "x-pack/plugins/osquery/common/index.ts", + "path": "x-pack/platform/plugins/shared/osquery/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -395,7 +395,7 @@ "signature": [ "\"Osquery\"" ], - "path": "x-pack/plugins/osquery/common/index.ts", + "path": "x-pack/platform/plugins/shared/osquery/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index deaeb4de2d923..3e1b8ed19f710 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.devdocs.json b/api_docs/painless_lab.devdocs.json index 04e37e95b5801..ea0a326c6dff8 100644 --- a/api_docs/painless_lab.devdocs.json +++ b/api_docs/painless_lab.devdocs.json @@ -24,7 +24,7 @@ "signature": [ "{ readonly enabled: boolean; }" ], - "path": "x-pack/plugins/painless_lab/server/index.ts", + "path": "x-pack/platform/plugins/private/painless_lab/server/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -56,7 +56,7 @@ }, "; }>" ], - "path": "x-pack/plugins/painless_lab/server/index.ts", + "path": "x-pack/platform/plugins/private/painless_lab/server/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index c701e7935d091..7d800cd530c8b 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index a010cb19a416e..9f264e05ef355 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,13 +15,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 901 | 768 | 43 | +| 906 | 771 | 43 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 55052 | 240 | 41416 | 2030 | +| 55156 | 243 | 41481 | 2033 | ## Plugin Directory @@ -39,7 +39,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Considering using bfetch capabilities when fetching large amounts of data. This services supports batching HTTP requests and streaming responses back. | 60 | 1 | 59 | 2 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds Canvas application to Kibana | 9 | 0 | 8 | 3 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | The Case management system in Kibana | 125 | 0 | 105 | 28 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 267 | 2 | 252 | 9 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 271 | 2 | 255 | 9 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 83 | 0 | 20 | 1 | | cloudChat | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | Chat available on Elastic Cloud deployments for quicker assistance. | 0 | 0 | 0 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | Static migration page where self-managed users can see text/copy about migrating to Elastic Cloud | 8 | 0 | 8 | 1 | @@ -54,7 +54,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | crossClusterReplication | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | | customBranding | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Enables customization of Kibana | 0 | 0 | 0 | 0 | | | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 268 | 0 | 249 | 1 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 114 | 0 | 111 | 14 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 114 | 0 | 111 | 13 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 54 | 0 | 51 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3209 | 31 | 2594 | 24 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 6 | 0 | 6 | 0 | @@ -66,13 +66,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | The Data Visualizer tools help you understand your data, by analyzing the metrics and fields in a log file or an existing Elasticsearch index. | 31 | 3 | 25 | 4 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin introduces the concept of data set quality, where users can easily get an overview on the data sets they have. | 14 | 0 | 14 | 8 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 15 | 0 | 9 | 2 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 214 | 0 | 166 | 30 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 215 | 0 | 167 | 30 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 35 | 0 | 33 | 2 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | A stateful layer to register shared features and provide an access point to discover without a direct dependency | 26 | 0 | 23 | 2 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | APIs used to assess the quality of data in Elasticsearch indexes | 2 | 0 | 0 | 0 | -| | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | Server APIs for the Elastic AI Assistant | 56 | 0 | 41 | 2 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 571 | 1 | 462 | 9 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Extends embeddable plugin with more functionality | 19 | 0 | 19 | 2 | +| | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | Server APIs for the Elastic AI Assistant | 55 | 0 | 40 | 2 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 537 | 1 | 433 | 6 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Extends embeddable plugin with more functionality | 15 | 0 | 15 | 2 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides encryption and decryption utilities for saved objects containing sensitive information. | 54 | 0 | 47 | 1 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | Adds dashboards for discovering and managing Enterprise Search products. | 5 | 0 | 5 | 0 | | | [@elastic/obs-entities](https://github.com/orgs/elastic/teams/obs-entities) | - | 2 | 0 | 2 | 0 | @@ -100,7 +100,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Expression XY plugin adds a `xy` renderer and function to the expression plugin. The renderer will display the `xy` chart. | 182 | 0 | 171 | 13 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Adds expression runtime to Kibana | 2241 | 17 | 1769 | 6 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 270 | 0 | 110 | 3 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Index pattern fields and ambiguous values formatters | 292 | 5 | 253 | 3 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Index pattern fields and ambiguous values formatters | 293 | 5 | 254 | 3 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | Exposes services for async usage and search of fields metadata. | 45 | 0 | 45 | 9 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The file upload plugin contains components and services for uploading a file, analyzing its data, and then importing the data into an Elasticsearch index. Supported file types include CSV, TSV, newline-delimited JSON and GeoJSON. | 89 | 0 | 89 | 8 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | File upload, download, sharing, and serving over HTTP implementation in Kibana. | 240 | 0 | 24 | 9 | @@ -156,8 +156,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 3 | 0 | 3 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 1 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 697 | 2 | 689 | 23 | -| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 298 | 1 | 296 | 28 | -| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 4 | 0 | 4 | 0 | +| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 385 | 1 | 383 | 30 | +| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 8 | 0 | 7 | 0 | | | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 2 | 0 | 2 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin exposes and registers observability log consumption features. | 19 | 0 | 19 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 24 | 0 | 24 | 0 | @@ -165,7 +165,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 23 | 0 | 23 | 7 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds a standardized Presentation panel which allows any forward ref component to interface with various Kibana systems. | 11 | 0 | 11 | 4 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). | 159 | 2 | 129 | 10 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). | 126 | 2 | 102 | 8 | | | [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai-infra) | - | 10 | 0 | 10 | 4 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 16 | 1 | 16 | 0 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 22 | 0 | 22 | 7 | @@ -191,7 +191,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | Plugin to provide access to and rendering of python notebooks for use in the persistent developer console. | 10 | 0 | 10 | 1 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | - | 13 | 0 | 13 | 0 | | searchprofiler | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | -| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 455 | 0 | 238 | 0 | +| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 458 | 0 | 238 | 0 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 191 | 0 | 123 | 34 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | ESS customizations for Security Solution. | 6 | 0 | 6 | 0 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | Serverless customizations for security. | 7 | 0 | 7 | 0 | @@ -199,16 +199,16 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | Serverless customizations for observability. | 6 | 0 | 6 | 0 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | Serverless customizations for search. | 7 | 0 | 7 | 0 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 134 | 0 | 134 | 8 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds URL Service and sharing capabilities to Kibana | 136 | 0 | 73 | 15 | -| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 48 | 0 | 48 | 2 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds URL Service and sharing capabilities to Kibana | 136 | 0 | 73 | 16 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 54 | 0 | 54 | 2 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 22 | 1 | 22 | 1 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides the Spaces feature, which allows saved objects to be organized into meaningful categories. | 269 | 0 | 73 | 1 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 25 | 0 | 25 | 3 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 10 | 0 | 10 | 0 | -| | [@elastic/streams-program-team](https://github.com/orgs/elastic/teams/streams-program-team) | A manager for Streams | 13 | 0 | 13 | 4 | +| | [@elastic/streams-program-team](https://github.com/orgs/elastic/teams/streams-program-team) | A manager for Streams | 13 | 0 | 13 | 3 | | | [@elastic/streams-program-team](https://github.com/orgs/elastic/teams/streams-program-team) | - | 8 | 0 | 8 | 0 | -| synthetics | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | This plugin visualizes data from Synthetics and Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 1 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 108 | 0 | 64 | 7 | +| synthetics | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | This plugin visualizes data from Synthetics and Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 0 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 105 | 0 | 62 | 6 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 45 | 0 | 1 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 31 | 0 | 26 | 6 | | telemetryCollectionXpack | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | @@ -222,13 +222,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Extends UI Actions plugin with more functionality | 212 | 0 | 145 | 11 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains services reliant on the plugin lifecycle for the unified doc viewer component (see @kbn/unified-doc-viewer). | 15 | 0 | 10 | 3 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | The `unifiedHistogram` plugin provides UI components to create a layout including a resizable histogram and a main display. | 69 | 0 | 35 | 6 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 149 | 2 | 112 | 21 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 150 | 2 | 113 | 21 | | upgradeAssistant | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | This plugin visualizes data from Heartbeat, and integrates with other Observability solutions. | 1 | 0 | 0 | 0 | | urlDrilldown | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds drilldown implementations to Kibana | 0 | 0 | 0 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 12 | 0 | 12 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 52 | 0 | 14 | 5 | -| | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 2 | 0 | 2 | 0 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The default editor used in most aggregation-based visualizations. | 70 | 0 | 63 | 4 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the gauge chart implementation using the elastic-charts library. The goal is to eventually deprecate the old implementation and keep only this. Until then, the library used is defined by the Legacy charts library advanced setting. | 7 | 0 | 7 | 2 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the heatmap implementation using the elastic-charts library. The goal is to eventually deprecate the old implementation and keep only this. Until then, the library used is defined by the Legacy heatmap charts library advanced setting. | 3 | 0 | 3 | 2 | @@ -242,7 +242,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Registers the vega visualization. Is the elastic version of vega and vega-lite libraries. | 2 | 0 | 2 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the vislib visualizations. These are the classical area/line/bar, gauge/goal and heatmap charts. We want to replace them with elastic-charts. | 1 | 0 | 1 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the new xy-axis chart using the elastic-charts library, which will eventually replace the vislib xy-axis charts including bar, area, and line. | 52 | 0 | 50 | 5 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. | 871 | 12 | 840 | 20 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. | 871 | 12 | 840 | 21 | | watcher | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | ## Package Directory @@ -252,6 +252,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 14 | 0 | 14 | 0 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | - | 64 | 0 | 64 | 1 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | - | 3 | 0 | 3 | 0 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 11 | 0 | 3 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 37 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 2 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 66 | 0 | 0 | 0 | @@ -266,7 +267,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 1 | 0 | 0 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 18 | 0 | 18 | 0 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 4 | 0 | 4 | 0 | -| | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 87 | 0 | 87 | 11 | +| | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 90 | 0 | 90 | 11 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 272 | 0 | 272 | 38 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 337 | 0 | 336 | 0 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 12 | 0 | 12 | 0 | @@ -286,11 +287,11 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 93 | 1 | 93 | 0 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 122 | 0 | 120 | 1 | -| | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 20 | 0 | 15 | 4 | +| | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 25 | 0 | 16 | 6 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 41 | 0 | 17 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 | -| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 9 | 0 | 4 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 227 | 0 | 188 | 9 | +| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 12 | 0 | 5 | 0 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 190 | 0 | 149 | 8 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 79 | 0 | 50 | 9 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 24 | 0 | 24 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 149 | 2 | 143 | 20 | @@ -450,7 +451,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 10 | 0 | 3 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 8 | 0 | 8 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 8 | 0 | 8 | 0 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 20 | 0 | 6 | 0 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 21 | 0 | 6 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 146 | 1 | 63 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 16 | 0 | 16 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 15 | 0 | 15 | 2 | @@ -517,7 +518,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/docs](https://github.com/orgs/elastic/teams/docs) | - | 80 | 0 | 80 | 2 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 5 | 0 | 5 | 1 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 57 | 0 | 30 | 6 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 37 | 0 | 28 | 2 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 38 | 0 | 29 | 3 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 16 | 0 | 8 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 42 | 0 | 41 | 0 | | | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | - | 170 | 0 | 141 | 10 | @@ -527,7 +528,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 32 | 0 | 19 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 11 | 0 | 6 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 271 | 1 | 210 | 14 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 30 | 0 | 30 | 1 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 31 | 0 | 31 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 1 | 0 | | | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 285 | 1 | 223 | 25 | | | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 29 | 0 | 12 | 0 | @@ -535,13 +536,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 205 | 0 | 193 | 12 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 40 | 0 | 40 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 52 | 0 | 52 | 1 | -| | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 41 | 0 | 14 | 2 | +| | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 43 | 0 | 15 | 2 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 22 | 0 | 18 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 51 | 0 | 42 | 2 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 0 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 3 | 0 | 3 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 111 | 2 | 86 | 1 | -| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 560 | 6 | 520 | 7 | +| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 564 | 6 | 524 | 7 | | | [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai-infra) | - | 10 | 0 | 8 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 0 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 1 | 0 | 1 | 0 | @@ -560,11 +561,11 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-threat-hunting](https://github.com/orgs/elastic/teams/security-threat-hunting) | - | 85 | 0 | 80 | 2 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 75 | 0 | 73 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 126 | 3 | 126 | 0 | -| | [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai-infra) | - | 132 | 0 | 43 | 1 | +| | [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai-infra) | - | 136 | 0 | 43 | 3 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 7 | 1 | 7 | 1 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 9 | 0 | 9 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 52 | 12 | 43 | 0 | -| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 82 | 0 | 82 | 0 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 85 | 0 | 85 | 0 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 60 | 0 | 60 | 4 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | - | 44 | 0 | 44 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 23 | 0 | 14 | 0 | @@ -620,7 +621,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 8 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 2 | 0 | 1 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 34 | 0 | 0 | 0 | -| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 47 | 0 | 41 | 1 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 48 | 0 | 41 | 1 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 18 | 0 | 18 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 42 | 1 | 35 | 1 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 32 | 0 | 0 | 0 | @@ -633,26 +634,27 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 99 | 1 | 99 | 0 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 6 | 0 | 6 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 29 | 0 | 27 | 5 | -| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 4 | 0 | 4 | 1 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 31 | 2 | 31 | 2 | | | [@elastic/security-detection-rule-management](https://github.com/orgs/elastic/teams/security-detection-rule-management) | - | 12 | 0 | 12 | 0 | | | [@elastic/security-detection-rule-management](https://github.com/orgs/elastic/teams/security-detection-rule-management) | - | 15 | 0 | 15 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 46 | 0 | 46 | 9 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 51 | 5 | 34 | 0 | | | [@elastic/security-asset-management](https://github.com/orgs/elastic/teams/security-asset-management) | - | 66 | 0 | 66 | 0 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 44 | 3 | 27 | 1 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 5 | 0 | 5 | 0 | | | [@elastic/kibana-performance-testing](https://github.com/orgs/elastic/teams/kibana-performance-testing) | - | 3 | 0 | 3 | 1 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 1 | 0 | 0 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 1 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 1 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 92 | 0 | 80 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 229 | 0 | 193 | 6 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 87 | 0 | 75 | 1 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 233 | 0 | 197 | 6 | | | [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai-infra) | - | 1 | 0 | 1 | 0 | | | [@elastic/appex-ai-infra](https://github.com/orgs/elastic/teams/appex-ai-infra) | - | 31 | 0 | 31 | 0 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 168 | 0 | 55 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 13 | 0 | 7 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 22 | 0 | 9 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 9 | 0 | 8 | 0 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 15 | 0 | 8 | 0 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 16 | 0 | 9 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 3 | 0 | 1 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 11 | 0 | 5 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 18 | 0 | 3 | 0 | @@ -660,6 +662,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 11 | 0 | 8 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 1 | 0 | 0 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 14 | 0 | 7 | 0 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 1 | 0 | 0 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 18 | 0 | 18 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 40 | 0 | 38 | 5 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 13 | 0 | 9 | 0 | @@ -677,7 +680,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 91 | 0 | 91 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | A component for creating resizable layouts containing a fixed width panel and a flexible panel, with support for horizontal and vertical layouts. | 18 | 0 | 5 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 3 | 0 | 3 | 0 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 157 | 0 | 156 | 7 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 158 | 0 | 157 | 7 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 8 | 0 | 8 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 13 | 2 | 8 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 3 | 0 | 3 | 0 | @@ -687,7 +690,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-detections-response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 152 | 0 | 140 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 15 | 0 | 14 | 0 | -| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 117 | 0 | 86 | 8 | +| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 121 | 0 | 86 | 8 | | | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 6 | 0 | 6 | 0 | | | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 68 | 0 | 53 | 3 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 35 | 0 | 34 | 0 | @@ -705,9 +708,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 4 | 0 | 0 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 35 | 0 | 25 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 7 | 0 | 7 | 0 | -| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 125 | 0 | 66 | 0 | +| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 126 | 0 | 66 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 67 | 0 | 40 | 0 | -| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 281 | 1 | 160 | 0 | +| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 282 | 1 | 161 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 74 | 0 | 73 | 0 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 7 | 0 | 0 | 0 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 15 | 0 | 15 | 7 | @@ -718,7 +721,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 56 | 1 | 41 | 0 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 92 | 0 | 70 | 6 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 341 | 1 | 337 | 32 | -| | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 87 | 0 | 76 | 1 | +| | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 88 | 0 | 77 | 1 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 107 | 0 | 96 | 1 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 15 | 0 | 7 | 0 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 147 | 0 | 125 | 0 | @@ -788,18 +791,18 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 4 | 0 | 4 | 0 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 19 | 0 | 19 | 3 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 1 | 0 | 1 | 1 | -| | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 4 | 0 | 3 | 0 | +| | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 7 | 0 | 6 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 108 | 2 | 70 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 4 | 0 | 2 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 41 | 2 | 21 | 0 | -| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 32 | 2 | 32 | 0 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 9 | 0 | 9 | 0 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 19 | 0 | 19 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 7 | 0 | 5 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 360 | 4 | 305 | 14 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 37 | 1 | 19 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 131 | 3 | 98 | 2 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 1 | 0 | -| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 8 | 0 | 8 | 0 | +| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 14 | 0 | 14 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 74 | 0 | 55 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 9 | 0 | 7 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 17 | 0 | 17 | 0 | @@ -819,10 +822,10 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 37 | 0 | 16 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 26 | 0 | 15 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 144 | 0 | 138 | 4 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 145 | 0 | 139 | 4 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 24 | 0 | 22 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 14 | 0 | 14 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 9 | 0 | 4 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 1254 | 0 | 4 | 0 | -| | [@elastic/security-detection-rule-management](https://github.com/orgs/elastic/teams/security-detection-rule-management) | - | 20 | 0 | 10 | 0 | +| | [@elastic/security-detection-rule-management](https://github.com/orgs/elastic/teams/security-detection-rule-management) | - | 23 | 0 | 13 | 0 | diff --git a/api_docs/presentation_panel.mdx b/api_docs/presentation_panel.mdx index 405058c4edb25..98a508eea46dd 100644 --- a/api_docs/presentation_panel.mdx +++ b/api_docs/presentation_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationPanel title: "presentationPanel" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationPanel plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationPanel'] --- import presentationPanelObj from './presentation_panel.devdocs.json'; diff --git a/api_docs/presentation_util.devdocs.json b/api_docs/presentation_util.devdocs.json index 3ceb843da051a..ea50ab8480f1e 100644 --- a/api_docs/presentation_util.devdocs.json +++ b/api_docs/presentation_util.devdocs.json @@ -3,62 +3,6 @@ "client": { "classes": [], "functions": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.cleanFiltersForSerialize", - "type": "Function", - "tags": [], - "label": "cleanFiltersForSerialize", - "description": [], - "signature": [ - "(filters?: ", - { - "pluginId": "@kbn/es-query", - "scope": "common", - "docId": "kibKbnEsQueryPluginApi", - "section": "def-common.Filter", - "text": "Filter" - }, - "[] | undefined) => ", - { - "pluginId": "@kbn/es-query", - "scope": "common", - "docId": "kibKbnEsQueryPluginApi", - "section": "def-common.Filter", - "text": "Filter" - }, - "[]" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/clean_redux_embeddable_state.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.cleanFiltersForSerialize.$1", - "type": "Array", - "tags": [], - "label": "filters", - "description": [], - "signature": [ - { - "pluginId": "@kbn/es-query", - "scope": "common", - "docId": "kibKbnEsQueryPluginApi", - "section": "def-common.Filter", - "text": "Filter" - }, - "[] | undefined" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/clean_redux_embeddable_state.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "presentationUtil", "id": "def-public.DashboardDrilldownOptionsComponent", @@ -350,31 +294,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.lazyLoadReduxToolsPackage", - "type": "Function", - "tags": [], - "label": "lazyLoadReduxToolsPackage", - "description": [], - "signature": [ - "() => Promise<", - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxToolsPackage", - "text": "ReduxToolsPackage" - }, - ">" - ], - "path": "src/plugins/presentation_util/public/redux_tools/index.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "presentationUtil", "id": "def-public.LazySavedObjectSaveModalDashboard", @@ -899,678 +818,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableState", - "type": "Interface", - "tags": [], - "label": "ReduxEmbeddableState", - "description": [ - "\nThe Embeddable Redux store should contain Input, Output and State. Input is serialized and used to create the embeddable,\nOutput is used as a communication layer for state that the Embeddable creates, and State is used to store ephemeral state which needs\nto be communicated between an embeddable and its inner React components." - ], - "signature": [ - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxEmbeddableState", - "text": "ReduxEmbeddableState" - }, - "" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableState.explicitInput", - "type": "Uncategorized", - "tags": [], - "label": "explicitInput", - "description": [], - "signature": [ - "InputType" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableState.output", - "type": "Uncategorized", - "tags": [], - "label": "output", - "description": [], - "signature": [ - "OutputType" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableState.componentState", - "type": "Uncategorized", - "tags": [], - "label": "componentState", - "description": [], - "signature": [ - "StateType" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools", - "type": "Interface", - "tags": [], - "label": "ReduxEmbeddableTools", - "description": [ - "\nThe return type from createReduxEmbeddableTools. Contains tools to get state, select state for react components,\nset state, and react to state changes." - ], - "signature": [ - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxEmbeddableTools", - "text": "ReduxEmbeddableTools" - }, - "" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.cleanup", - "type": "Function", - "tags": [], - "label": "cleanup", - "description": [], - "signature": [ - "() => void" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.store", - "type": "Object", - "tags": [], - "label": "store", - "description": [], - "signature": [ - "ToolkitStore", - ">" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.select", - "type": "Function", - "tags": [], - "label": "select", - "description": [], - "signature": [ - "(selector: (state: ReduxEmbeddableStateType) => Selected, equalityFn?: ((previous: Selected, next: Selected) => boolean) | undefined) => Selected" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.select.$1", - "type": "Function", - "tags": [], - "label": "selector", - "description": [], - "signature": [ - "(state: ReduxStateType) => Selected" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.select.$1.$1", - "type": "Uncategorized", - "tags": [], - "label": "state", - "description": [], - "signature": [ - "ReduxStateType" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.select.$2", - "type": "Function", - "tags": [], - "label": "equalityFn", - "description": [], - "signature": [ - "((previous: Selected, next: Selected) => boolean) | undefined" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.getState", - "type": "Function", - "tags": [], - "label": "getState", - "description": [], - "signature": [ - "() => ReduxEmbeddableStateType & {}" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.dispatch", - "type": "Object", - "tags": [], - "label": "dispatch", - "description": [], - "signature": [ - "{ [ReducerKey in keyof ReducerType]: (payload: Parameters[1][\"payload\"]) => void; }" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.onStateChange", - "type": "Function", - "tags": [], - "label": "onStateChange", - "description": [], - "signature": [ - "(listener: () => void) => ", - "Unsubscribe" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxEmbeddableTools.onStateChange.$1", - "type": "Function", - "tags": [], - "label": "listener", - "description": [], - "signature": [ - "() => void" - ], - "path": "node_modules/redux/index.d.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [] - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools", - "type": "Interface", - "tags": [], - "label": "ReduxTools", - "description": [ - "\nThe return type from createReduxTools. Contains tools to get state, select state for react components,\nset state, and react to state changes." - ], - "signature": [ - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxTools", - "text": "ReduxTools" - }, - "" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.store", - "type": "Object", - "tags": [], - "label": "store", - "description": [], - "signature": [ - "ToolkitStore", - ">" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.select", - "type": "Function", - "tags": [], - "label": "select", - "description": [], - "signature": [ - "(selector: (state: ReduxStateType) => Selected, equalityFn?: ((previous: Selected, next: Selected) => boolean) | undefined) => Selected" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.select.$1", - "type": "Function", - "tags": [], - "label": "selector", - "description": [], - "signature": [ - "(state: ReduxStateType) => Selected" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.select.$1.$1", - "type": "Uncategorized", - "tags": [], - "label": "state", - "description": [], - "signature": [ - "ReduxStateType" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.select.$2", - "type": "Function", - "tags": [], - "label": "equalityFn", - "description": [], - "signature": [ - "((previous: Selected, next: Selected) => boolean) | undefined" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.getState", - "type": "Function", - "tags": [], - "label": "getState", - "description": [], - "signature": [ - "() => ReduxStateType & {}" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.onStateChange", - "type": "Function", - "tags": [], - "label": "onStateChange", - "description": [], - "signature": [ - "(listener: () => void) => ", - "Unsubscribe" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.onStateChange.$1", - "type": "Function", - "tags": [], - "label": "listener", - "description": [], - "signature": [ - "() => void" - ], - "path": "node_modules/redux/index.d.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [] - } - ] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxTools.dispatch", - "type": "Object", - "tags": [], - "label": "dispatch", - "description": [], - "signature": [ - "{ [ReducerKey in keyof ReducerType]: (payload: Parameters[1][\"payload\"]) => void; }" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxToolsPackage", - "type": "Interface", - "tags": [], - "label": "ReduxToolsPackage", - "description": [ - "\nThe package type is lazily exported from presentation_util and should contain all methods needed to use the redux embeddable tools." - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxToolsPackage.createReduxTools", - "type": "Function", - "tags": [], - "label": "createReduxTools", - "description": [], - "signature": [ - " = ", - "ReduxToolsReducers", - ">({ reducers, additionalMiddleware, initialState, }: { additionalMiddleware?: ", - "Middleware", - "<", - "AnyAction", - ", any, ", - "Dispatch", - "<", - "AnyAction", - ">>[] | undefined; initialState: ReduxStateType; reducers: ReducerType; }) => ", - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxTools", - "text": "ReduxTools" - }, - "" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxToolsPackage.createReduxTools.$1", - "type": "Object", - "tags": [], - "label": "__0", - "description": [], - "signature": [ - "{ additionalMiddleware?: ", - "Middleware", - "<", - "AnyAction", - ", any, ", - "Dispatch", - "<", - "AnyAction", - ">>[] | undefined; initialState: ReduxStateType; reducers: ReducerType; }" - ], - "path": "src/plugins/presentation_util/public/redux_tools/create_redux_tools.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxToolsPackage.createReduxEmbeddableTools", - "type": "Function", - "tags": [], - "label": "createReduxEmbeddableTools", - "description": [], - "signature": [ - " = ", - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxEmbeddableState", - "text": "ReduxEmbeddableState" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", unknown>, ReducerType extends ", - "ReduxToolsReducers", - " = ", - "ReduxToolsReducers", - ">({ reducers, embeddable, syncSettings, additionalMiddleware, initialComponentState, }: { embeddable: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.Embeddable", - "text": "Embeddable" - }, - "; additionalMiddleware?: ", - "Middleware", - "<", - "AnyAction", - ", any, ", - "Dispatch", - "<", - "AnyAction", - ">>[] | undefined; initialComponentState?: ReduxEmbeddableStateType[\"componentState\"] | undefined; syncSettings?: ", - "ReduxEmbeddableSyncSettings", - "<", - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxEmbeddableState", - "text": "ReduxEmbeddableState" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", unknown>> | undefined; reducers: ReducerType; }) => ", - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxEmbeddableTools", - "text": "ReduxEmbeddableTools" - }, - "" - ], - "path": "src/plugins/presentation_util/public/redux_tools/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "presentationUtil", - "id": "def-public.ReduxToolsPackage.createReduxEmbeddableTools.$1", - "type": "Object", - "tags": [], - "label": "__0", - "description": [], - "signature": [ - "{ embeddable: ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.Embeddable", - "text": "Embeddable" - }, - "; additionalMiddleware?: ", - "Middleware", - "<", - "AnyAction", - ", any, ", - "Dispatch", - "<", - "AnyAction", - ">>[] | undefined; initialComponentState?: ReduxEmbeddableStateType[\"componentState\"] | undefined; syncSettings?: ", - "ReduxEmbeddableSyncSettings", - "<", - { - "pluginId": "presentationUtil", - "scope": "public", - "docId": "kibPresentationUtilPluginApi", - "section": "def-public.ReduxEmbeddableState", - "text": "ReduxEmbeddableState" - }, - "<", - { - "pluginId": "embeddable", - "scope": "common", - "docId": "kibEmbeddablePluginApi", - "section": "def-common.EmbeddableInput", - "text": "EmbeddableInput" - }, - ", ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.EmbeddableOutput", - "text": "EmbeddableOutput" - }, - ", unknown>> | undefined; reducers: ReducerType; }" - ], - "path": "src/plugins/presentation_util/public/redux_tools/redux_embeddables/create_redux_embeddable_tools.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ], - "initialIsOpen": false - }, { "parentPluginId": "presentationUtil", "id": "def-public.SaveModalDashboardProps", diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index f76c594cfb617..ea421a9fd8409 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 159 | 2 | 129 | 10 | +| 126 | 2 | 102 | 8 | ## Client diff --git a/api_docs/product_doc_base.devdocs.json b/api_docs/product_doc_base.devdocs.json index c6d82bc6f79ef..71ded441b875c 100644 --- a/api_docs/product_doc_base.devdocs.json +++ b/api_docs/product_doc_base.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "ProductDocBasePluginSetup", "description": [], - "path": "x-pack/plugins/ai_infra/product_doc_base/public/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "ProductDocBasePluginStart", "description": [], - "path": "x-pack/plugins/ai_infra/product_doc_base/public/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -42,7 +42,7 @@ "signature": [ "InstallationAPI" ], - "path": "x-pack/plugins/ai_infra/product_doc_base/public/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -71,7 +71,7 @@ "DocSearchResponse", ">" ], - "path": "x-pack/plugins/ai_infra/product_doc_base/server/services/search/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/services/search/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -86,7 +86,7 @@ "signature": [ "DocSearchOptions" ], - "path": "x-pack/plugins/ai_infra/product_doc_base/server/services/search/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/services/search/types.ts", "deprecated": false, "trackAdoption": false } @@ -102,7 +102,7 @@ "tags": [], "label": "ProductDocBaseSetupContract", "description": [], - "path": "x-pack/plugins/ai_infra/product_doc_base/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -116,7 +116,7 @@ "tags": [], "label": "ProductDocBaseStartContract", "description": [], - "path": "x-pack/plugins/ai_infra/product_doc_base/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -134,7 +134,7 @@ "DocSearchResponse", ">" ], - "path": "x-pack/plugins/ai_infra/product_doc_base/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -149,7 +149,7 @@ "signature": [ "DocSearchOptions" ], - "path": "x-pack/plugins/ai_infra/product_doc_base/server/services/search/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/services/search/types.ts", "deprecated": false, "trackAdoption": false } @@ -165,7 +165,7 @@ "signature": [ "DocumentationManagerAPI" ], - "path": "x-pack/plugins/ai_infra/product_doc_base/server/types.ts", + "path": "x-pack/platform/plugins/shared/ai_infra/product_doc_base/server/types.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/product_doc_base.mdx b/api_docs/product_doc_base.mdx index 8697949c31bc7..078a6ebbfcb8d 100644 --- a/api_docs/product_doc_base.mdx +++ b/api_docs/product_doc_base.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/productDocBase title: "productDocBase" image: https://source.unsplash.com/400x175/?github description: API docs for the productDocBase plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'productDocBase'] --- import productDocBaseObj from './product_doc_base.devdocs.json'; diff --git a/api_docs/profiling.devdocs.json b/api_docs/profiling.devdocs.json index 01192dc0b13f4..1946c2afe9ecb 100644 --- a/api_docs/profiling.devdocs.json +++ b/api_docs/profiling.devdocs.json @@ -17,7 +17,7 @@ "signature": [ "void" ], - "path": "x-pack/plugins/observability_solution/profiling/public/plugin.tsx", + "path": "x-pack/plugins/observability_solution/profiling/public/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "start", diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 2f2edbd73b900..3e27f4638f328 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 522147b1c44c4..432c55ef11630 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.devdocs.json b/api_docs/remote_clusters.devdocs.json index bc742af1091a7..751c78d0c1f24 100644 --- a/api_docs/remote_clusters.devdocs.json +++ b/api_docs/remote_clusters.devdocs.json @@ -11,7 +11,7 @@ "tags": [], "label": "Cluster", "description": [], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -22,7 +22,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -36,7 +36,7 @@ "signature": [ "string[] | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -50,7 +50,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -64,7 +64,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -78,7 +78,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -92,7 +92,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -106,7 +106,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -120,7 +120,7 @@ "signature": [ "\"proxy\" | \"sniff\" | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -134,7 +134,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -148,7 +148,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -162,7 +162,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -176,7 +176,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -190,7 +190,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -204,7 +204,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -218,7 +218,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -232,7 +232,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false }, @@ -246,7 +246,7 @@ "signature": [ "\"certificate\" | \"api_key\"" ], - "path": "x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts", "deprecated": false, "trackAdoption": false } @@ -266,7 +266,7 @@ "signature": [ "\"/api/remote_clusters\"" ], - "path": "x-pack/plugins/remote_clusters/common/constants.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -280,7 +280,7 @@ "tags": [], "label": "RemoteClustersPluginSetup", "description": [], - "path": "x-pack/plugins/remote_clusters/public/plugin.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/public/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -291,7 +291,7 @@ "tags": [], "label": "isUiEnabled", "description": [], - "path": "x-pack/plugins/remote_clusters/public/plugin.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/public/plugin.ts", "deprecated": false, "trackAdoption": false } @@ -314,7 +314,7 @@ "tags": [], "label": "RemoteClustersPluginSetup", "description": [], - "path": "x-pack/plugins/remote_clusters/server/plugin.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/server/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -325,7 +325,7 @@ "tags": [], "label": "isUiEnabled", "description": [], - "path": "x-pack/plugins/remote_clusters/server/plugin.ts", + "path": "x-pack/platform/plugins/private/remote_clusters/server/plugin.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index fa12a3aa38bdd..525c8272d4a8d 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 517733987a9a3..3f92cb9567c2e 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.devdocs.json b/api_docs/rollup.devdocs.json index 455e264f6ee57..95b0417824434 100644 --- a/api_docs/rollup.devdocs.json +++ b/api_docs/rollup.devdocs.json @@ -32,7 +32,7 @@ "signature": [ "\"/api/rollup\"" ], - "path": "x-pack/plugins/rollup/common/index.ts", + "path": "x-pack/platform/plugins/private/rollup/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -47,7 +47,7 @@ "signature": [ "\"rollups:enableIndexPatterns\"" ], - "path": "x-pack/plugins/rollup/common/index.ts", + "path": "x-pack/platform/plugins/private/rollup/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -62,7 +62,7 @@ "signature": [ "\"8.0.0\"" ], - "path": "x-pack/plugins/rollup/common/index.ts", + "path": "x-pack/platform/plugins/private/rollup/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -77,7 +77,7 @@ "signature": [ "\"app_load\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -92,7 +92,7 @@ "signature": [ "\"rollup_jobs\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -107,7 +107,7 @@ "signature": [ "\"detail_panel_histogram_tab_click\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -122,7 +122,7 @@ "signature": [ "\"detail_panel_json_tab_click\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -137,7 +137,7 @@ "signature": [ "\"detail_panel_metrics_tab_click\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -152,7 +152,7 @@ "signature": [ "\"detail_panel_summary_tab_click\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -167,7 +167,7 @@ "signature": [ "\"detail_panel_terms_tab_click\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -182,7 +182,7 @@ "signature": [ "\"job_create\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -197,7 +197,7 @@ "signature": [ "\"job_delete\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -212,7 +212,7 @@ "signature": [ "\"job_delete_many\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -227,7 +227,7 @@ "signature": [ "\"job_start\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -242,7 +242,7 @@ "signature": [ "\"job_start_many\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -257,7 +257,7 @@ "signature": [ "\"job_stop\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -272,7 +272,7 @@ "signature": [ "\"job_stop_many\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -287,7 +287,7 @@ "signature": [ "\"show_details_click\"" ], - "path": "x-pack/plugins/rollup/common/ui_metric.ts", + "path": "x-pack/platform/plugins/private/rollup/common/ui_metric.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -301,7 +301,7 @@ "tags": [], "label": "PLUGIN", "description": [], - "path": "x-pack/plugins/rollup/common/index.ts", + "path": "x-pack/platform/plugins/private/rollup/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -312,7 +312,7 @@ "tags": [], "label": "ID", "description": [], - "path": "x-pack/plugins/rollup/common/index.ts", + "path": "x-pack/platform/plugins/private/rollup/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -326,7 +326,7 @@ "signature": [ "\"basic\"" ], - "path": "x-pack/plugins/rollup/common/index.ts", + "path": "x-pack/platform/plugins/private/rollup/common/index.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index ddc9a17fdda4e..a2cd066e42aa1 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 2dfad9af095ad..cf3bfba0201af 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.devdocs.json b/api_docs/runtime_fields.devdocs.json index 90294a4540fc7..296a735e223d9 100644 --- a/api_docs/runtime_fields.devdocs.json +++ b/api_docs/runtime_fields.devdocs.json @@ -21,7 +21,7 @@ }, ") => React.JSX.Element" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -41,7 +41,7 @@ "text": "Props" } ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -68,7 +68,7 @@ }, ") => React.JSX.Element" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -88,7 +88,7 @@ "text": "Props" } ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -106,7 +106,7 @@ "tags": [], "label": "FormState", "description": [], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -120,7 +120,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", "deprecated": false, "trackAdoption": false }, @@ -131,7 +131,7 @@ "tags": [], "label": "isSubmitted", "description": [], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", "deprecated": false, "trackAdoption": false }, @@ -153,7 +153,7 @@ }, "; isValid: boolean; }>" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -168,7 +168,7 @@ "signature": [ "React.MouseEvent | React.FormEvent | undefined" ], - "path": "src/plugins/es_ui_shared/static/forms/hook_form_lib/types.ts", + "path": "src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/types.ts", "deprecated": false, "trackAdoption": false } @@ -184,7 +184,7 @@ "tags": [], "label": "Props", "description": [], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -208,7 +208,7 @@ }, ") => void" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -228,7 +228,7 @@ "text": "RuntimeField" } ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -248,7 +248,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false, "children": [], @@ -272,7 +272,7 @@ "text": "DocLinksStart" } ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false }, @@ -295,7 +295,7 @@ }, " | undefined" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false }, @@ -311,7 +311,7 @@ "signature": [ "{ namesNotAllowed?: string[] | undefined; existingConcreteFields?: Field[] | undefined; } | undefined" ], - "path": "x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", + "path": "x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx", "deprecated": false, "trackAdoption": false } @@ -325,7 +325,7 @@ "tags": [], "label": "RuntimeField", "description": [], - "path": "x-pack/plugins/runtime_fields/public/types.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -336,7 +336,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/runtime_fields/public/types.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -350,7 +350,7 @@ "signature": [ "\"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\"" ], - "path": "x-pack/plugins/runtime_fields/public/types.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -364,7 +364,7 @@ "signature": [ "{ source: string; }" ], - "path": "x-pack/plugins/runtime_fields/public/types.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -385,7 +385,7 @@ "ComboBoxOption", "<\"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\">[]" ], - "path": "x-pack/plugins/runtime_fields/public/constants.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -400,7 +400,7 @@ "signature": [ "\"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\"" ], - "path": "x-pack/plugins/runtime_fields/public/types.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -414,7 +414,7 @@ "tags": [], "label": "PluginSetup", "description": [], - "path": "x-pack/plugins/runtime_fields/public/types.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -430,7 +430,7 @@ "LoadEditorResponse", ">" ], - "path": "x-pack/plugins/runtime_fields/public/types.ts", + "path": "x-pack/platform/plugins/private/runtime_fields/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 6ec93b8215ca5..f8243259cfc88 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.devdocs.json b/api_docs/saved_objects.devdocs.json index 79f331186c699..56c2bcd5d8cd7 100644 --- a/api_docs/saved_objects.devdocs.json +++ b/api_docs/saved_objects.devdocs.json @@ -34,14 +34,6 @@ "removeBy": "8.8.0", "trackAdoption": false, "references": [ - { - "plugin": "embeddable", - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx" - }, - { - "plugin": "embeddable", - "path": "src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx" - }, { "plugin": "presentationUtil", "path": "src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx" @@ -50,6 +42,14 @@ "plugin": "presentationUtil", "path": "src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx" }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx" + }, { "plugin": "lens", "path": "x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx" diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 7a4f8e71721f2..cc72705240b8e 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index f84b1de547b6c..b7e3de73de728 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 5af681ef08084..840131647bd17 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index b32e5a9d99d35..0dc2d1f92e1c4 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index dd7b41d92559d..fe5cdac6abd10 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index 5a2fae0d7abd3..8bbbfed64bdbf 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index eb3e94d6aeabb..012c825e032c1 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index 7519647f5d444..c18faef48b47f 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/search_assistant.mdx b/api_docs/search_assistant.mdx index 10999a62b75f5..bc27c985b4db2 100644 --- a/api_docs/search_assistant.mdx +++ b/api_docs/search_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchAssistant title: "searchAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the searchAssistant plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchAssistant'] --- import searchAssistantObj from './search_assistant.devdocs.json'; diff --git a/api_docs/search_connectors.mdx b/api_docs/search_connectors.mdx index 4c51a6bfb01e1..0d004b06249f8 100644 --- a/api_docs/search_connectors.mdx +++ b/api_docs/search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchConnectors title: "searchConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the searchConnectors plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchConnectors'] --- import searchConnectorsObj from './search_connectors.devdocs.json'; diff --git a/api_docs/search_homepage.mdx b/api_docs/search_homepage.mdx index 26fd2f09cf18c..15b6542fc1c37 100644 --- a/api_docs/search_homepage.mdx +++ b/api_docs/search_homepage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchHomepage title: "searchHomepage" image: https://source.unsplash.com/400x175/?github description: API docs for the searchHomepage plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchHomepage'] --- import searchHomepageObj from './search_homepage.devdocs.json'; diff --git a/api_docs/search_indices.devdocs.json b/api_docs/search_indices.devdocs.json index 71fee82506aed..ee436dbc5ddd7 100644 --- a/api_docs/search_indices.devdocs.json +++ b/api_docs/search_indices.devdocs.json @@ -85,7 +85,7 @@ "label": "startAppId", "description": [], "signature": [ - "\"fleet\" | \"graph\" | \"ml\" | \"monitoring\" | \"profiling\" | \"metrics\" | \"management\" | \"apm\" | \"synthetics\" | \"ux\" | \"canvas\" | \"logs\" | \"dashboards\" | \"slo\" | \"observabilityAIAssistant\" | \"home\" | \"integrations\" | \"discover\" | \"observability-overview\" | \"streams\" | \"appSearch\" | \"dev_tools\" | \"maps\" | \"visualize\" | \"dev_tools:console\" | \"dev_tools:searchprofiler\" | \"dev_tools:painless_lab\" | \"dev_tools:grokdebugger\" | \"ml:notifications\" | \"ml:nodes\" | \"ml:overview\" | \"ml:memoryUsage\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:logPatternAnalysis\" | \"ml:logRateAnalysis\" | \"ml:singleMetricViewer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:dataDrift\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:esqlDataVisualizer\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\" | \"ml:suppliedConfigurations\" | \"osquery\" | \"management:transform\" | \"management:watcher\" | \"management:cases\" | \"management:tags\" | \"management:maintenanceWindows\" | \"management:cross_cluster_replication\" | \"management:dataViews\" | \"management:spaces\" | \"management:settings\" | \"management:users\" | \"management:migrate_data\" | \"management:search_sessions\" | \"management:data_quality\" | \"management:filesManagement\" | \"management:pipelines\" | \"management:roles\" | \"management:reporting\" | \"management:aiAssistantManagementSelection\" | \"management:securityAiAssistantManagement\" | \"management:observabilityAiAssistantManagement\" | \"management:api_keys\" | \"management:license_management\" | \"management:index_lifecycle_management\" | \"management:index_management\" | \"management:ingest_pipelines\" | \"management:jobsListLink\" | \"management:objects\" | \"management:remote_clusters\" | \"management:role_mappings\" | \"management:rollup_jobs\" | \"management:snapshot_restore\" | \"management:triggersActions\" | \"management:triggersActionsConnectors\" | \"management:upgrade_assistant\" | \"enterpriseSearch\" | \"enterpriseSearchContent\" | \"enterpriseSearchApplications\" | \"enterpriseSearchAnalytics\" | \"workplaceSearch\" | \"serverlessElasticsearch\" | \"serverlessConnectors\" | \"serverlessWebCrawlers\" | \"searchPlayground\" | \"searchInferenceEndpoints\" | \"searchHomepage\" | \"enterpriseSearchContent:connectors\" | \"enterpriseSearchContent:searchIndices\" | \"enterpriseSearchContent:webCrawlers\" | \"enterpriseSearchApplications:searchApplications\" | \"appSearch:engines\" | \"searchInferenceEndpoints:inferenceEndpoints\" | \"elasticsearchStart\" | \"elasticsearchIndices\" | \"enterpriseSearchElasticsearch\" | \"enterpriseSearchVectorSearch\" | \"enterpriseSearchSemanticSearch\" | \"enterpriseSearchAISearch\" | \"elasticsearchIndices:createIndex\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\" | \"inventory\" | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:alerts\" | \"observability-overview:rules\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:assetDetails\" | \"apm:services\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:service-groups-list\" | \"apm:storage-explorer\" | \"synthetics:overview\" | \"synthetics:certificates\" | \"profiling:functions\" | \"profiling:stacktraces\" | \"profiling:flamegraphs\" | \"inventory:datastreams\" | \"streams:overview\" | \"securitySolutionUI\" | \"securitySolutionUI:\" | \"securitySolutionUI:cases\" | \"securitySolutionUI:alerts\" | \"securitySolutionUI:rules\" | \"securitySolutionUI:policy\" | \"securitySolutionUI:overview\" | \"securitySolutionUI:dashboards\" | \"securitySolutionUI:kubernetes\" | \"securitySolutionUI:cases_create\" | \"securitySolutionUI:cases_configure\" | \"securitySolutionUI:hosts\" | \"securitySolutionUI:users\" | \"securitySolutionUI:cloud_defend-policies\" | \"securitySolutionUI:cloud_security_posture-dashboard\" | \"securitySolutionUI:cloud_security_posture-findings\" | \"securitySolutionUI:cloud_security_posture-benchmarks\" | \"securitySolutionUI:network\" | \"securitySolutionUI:data_quality\" | \"securitySolutionUI:explore\" | \"securitySolutionUI:assets\" | \"securitySolutionUI:cloud_defend\" | \"securitySolutionUI:notes\" | \"securitySolutionUI:administration\" | \"securitySolutionUI:attack_discovery\" | \"securitySolutionUI:blocklist\" | \"securitySolutionUI:cloud_security_posture-rules\" | \"securitySolutionUI:detections\" | \"securitySolutionUI:detection_response\" | \"securitySolutionUI:endpoints\" | \"securitySolutionUI:event_filters\" | \"securitySolutionUI:exceptions\" | \"securitySolutionUI:host_isolation_exceptions\" | \"securitySolutionUI:hosts-all\" | \"securitySolutionUI:hosts-anomalies\" | \"securitySolutionUI:hosts-risk\" | \"securitySolutionUI:hosts-events\" | \"securitySolutionUI:hosts-sessions\" | \"securitySolutionUI:hosts-uncommon_processes\" | \"securitySolutionUI:investigations\" | \"securitySolutionUI:get_started\" | \"securitySolutionUI:machine_learning-landing\" | \"securitySolutionUI:network-anomalies\" | \"securitySolutionUI:network-dns\" | \"securitySolutionUI:network-events\" | \"securitySolutionUI:network-flows\" | \"securitySolutionUI:network-http\" | \"securitySolutionUI:network-tls\" | \"securitySolutionUI:response_actions_history\" | \"securitySolutionUI:rules-add\" | \"securitySolutionUI:rules-create\" | \"securitySolutionUI:rules-landing\" | \"securitySolutionUI:siem_migrations-rules\" | \"securitySolutionUI:threat_intelligence\" | \"securitySolutionUI:timelines\" | \"securitySolutionUI:timelines-templates\" | \"securitySolutionUI:trusted_apps\" | \"securitySolutionUI:users-all\" | \"securitySolutionUI:users-anomalies\" | \"securitySolutionUI:users-authentications\" | \"securitySolutionUI:users-events\" | \"securitySolutionUI:users-risk\" | \"securitySolutionUI:entity_analytics\" | \"securitySolutionUI:entity_analytics-management\" | \"securitySolutionUI:entity_analytics-asset-classification\" | \"securitySolutionUI:entity_analytics-entity_store_management\" | \"securitySolutionUI:coverage-overview\" | \"fleet:settings\" | \"fleet:agents\" | \"fleet:policies\" | \"fleet:data_streams\" | \"fleet:enrollment_tokens\" | \"fleet:uninstall_tokens\"" + "\"fleet\" | \"graph\" | \"ml\" | \"monitoring\" | \"profiling\" | \"metrics\" | \"management\" | \"apm\" | \"synthetics\" | \"ux\" | \"canvas\" | \"logs\" | \"dashboards\" | \"slo\" | \"observabilityAIAssistant\" | \"home\" | \"integrations\" | \"discover\" | \"observability-overview\" | \"streams\" | \"appSearch\" | \"inventory\" | \"dev_tools\" | \"maps\" | \"visualize\" | \"dev_tools:console\" | \"dev_tools:searchprofiler\" | \"dev_tools:painless_lab\" | \"dev_tools:grokdebugger\" | \"ml:notifications\" | \"ml:nodes\" | \"ml:overview\" | \"ml:memoryUsage\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:logPatternAnalysis\" | \"ml:logRateAnalysis\" | \"ml:singleMetricViewer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:dataDrift\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:esqlDataVisualizer\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\" | \"ml:suppliedConfigurations\" | \"osquery\" | \"management:transform\" | \"management:watcher\" | \"management:cases\" | \"management:tags\" | \"management:maintenanceWindows\" | \"management:cross_cluster_replication\" | \"management:dataViews\" | \"management:spaces\" | \"management:settings\" | \"management:users\" | \"management:migrate_data\" | \"management:search_sessions\" | \"management:data_quality\" | \"management:filesManagement\" | \"management:pipelines\" | \"management:roles\" | \"management:reporting\" | \"management:aiAssistantManagementSelection\" | \"management:securityAiAssistantManagement\" | \"management:observabilityAiAssistantManagement\" | \"management:api_keys\" | \"management:license_management\" | \"management:index_lifecycle_management\" | \"management:index_management\" | \"management:ingest_pipelines\" | \"management:jobsListLink\" | \"management:objects\" | \"management:remote_clusters\" | \"management:role_mappings\" | \"management:rollup_jobs\" | \"management:snapshot_restore\" | \"management:triggersActions\" | \"management:triggersActionsConnectors\" | \"management:upgrade_assistant\" | \"enterpriseSearch\" | \"enterpriseSearchContent\" | \"enterpriseSearchApplications\" | \"enterpriseSearchAnalytics\" | \"workplaceSearch\" | \"serverlessElasticsearch\" | \"serverlessConnectors\" | \"serverlessWebCrawlers\" | \"searchPlayground\" | \"searchInferenceEndpoints\" | \"searchHomepage\" | \"enterpriseSearchContent:connectors\" | \"enterpriseSearchContent:searchIndices\" | \"enterpriseSearchContent:webCrawlers\" | \"enterpriseSearchApplications:searchApplications\" | \"appSearch:engines\" | \"searchInferenceEndpoints:inferenceEndpoints\" | \"elasticsearchStart\" | \"elasticsearchIndices\" | \"enterpriseSearchElasticsearch\" | \"enterpriseSearchVectorSearch\" | \"enterpriseSearchSemanticSearch\" | \"enterpriseSearchAISearch\" | \"elasticsearchIndices:createIndex\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\" | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:alerts\" | \"observability-overview:rules\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:assetDetails\" | \"apm:services\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:service-groups-list\" | \"apm:storage-explorer\" | \"synthetics:overview\" | \"synthetics:certificates\" | \"profiling:functions\" | \"profiling:stacktraces\" | \"profiling:flamegraphs\" | \"inventory:datastreams\" | \"streams:overview\" | \"securitySolutionUI\" | \"securitySolutionUI:\" | \"securitySolutionUI:cases\" | \"securitySolutionUI:alerts\" | \"securitySolutionUI:rules\" | \"securitySolutionUI:policy\" | \"securitySolutionUI:overview\" | \"securitySolutionUI:dashboards\" | \"securitySolutionUI:kubernetes\" | \"securitySolutionUI:cases_create\" | \"securitySolutionUI:cases_configure\" | \"securitySolutionUI:hosts\" | \"securitySolutionUI:users\" | \"securitySolutionUI:cloud_defend-policies\" | \"securitySolutionUI:cloud_security_posture-dashboard\" | \"securitySolutionUI:cloud_security_posture-findings\" | \"securitySolutionUI:cloud_security_posture-benchmarks\" | \"securitySolutionUI:network\" | \"securitySolutionUI:data_quality\" | \"securitySolutionUI:explore\" | \"securitySolutionUI:assets\" | \"securitySolutionUI:cloud_defend\" | \"securitySolutionUI:notes\" | \"securitySolutionUI:administration\" | \"securitySolutionUI:attack_discovery\" | \"securitySolutionUI:blocklist\" | \"securitySolutionUI:cloud_security_posture-rules\" | \"securitySolutionUI:detections\" | \"securitySolutionUI:detection_response\" | \"securitySolutionUI:endpoints\" | \"securitySolutionUI:event_filters\" | \"securitySolutionUI:exceptions\" | \"securitySolutionUI:host_isolation_exceptions\" | \"securitySolutionUI:hosts-all\" | \"securitySolutionUI:hosts-anomalies\" | \"securitySolutionUI:hosts-risk\" | \"securitySolutionUI:hosts-events\" | \"securitySolutionUI:hosts-sessions\" | \"securitySolutionUI:hosts-uncommon_processes\" | \"securitySolutionUI:investigations\" | \"securitySolutionUI:get_started\" | \"securitySolutionUI:machine_learning-landing\" | \"securitySolutionUI:network-anomalies\" | \"securitySolutionUI:network-dns\" | \"securitySolutionUI:network-events\" | \"securitySolutionUI:network-flows\" | \"securitySolutionUI:network-http\" | \"securitySolutionUI:network-tls\" | \"securitySolutionUI:response_actions_history\" | \"securitySolutionUI:rules-add\" | \"securitySolutionUI:rules-create\" | \"securitySolutionUI:rules-landing\" | \"securitySolutionUI:siem_migrations-rules\" | \"securitySolutionUI:threat_intelligence\" | \"securitySolutionUI:timelines\" | \"securitySolutionUI:timelines-templates\" | \"securitySolutionUI:trusted_apps\" | \"securitySolutionUI:users-all\" | \"securitySolutionUI:users-anomalies\" | \"securitySolutionUI:users-authentications\" | \"securitySolutionUI:users-events\" | \"securitySolutionUI:users-risk\" | \"securitySolutionUI:entity_analytics\" | \"securitySolutionUI:entity_analytics-management\" | \"securitySolutionUI:entity_analytics-asset-classification\" | \"securitySolutionUI:entity_analytics-entity_store_management\" | \"securitySolutionUI:coverage-overview\" | \"fleet:settings\" | \"fleet:agents\" | \"fleet:policies\" | \"fleet:data_streams\" | \"fleet:enrollment_tokens\" | \"fleet:uninstall_tokens\"" ], "path": "x-pack/plugins/search_indices/public/types.ts", "deprecated": false, diff --git a/api_docs/search_indices.mdx b/api_docs/search_indices.mdx index d3e710662efa5..06bc51f25db53 100644 --- a/api_docs/search_indices.mdx +++ b/api_docs/search_indices.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchIndices title: "searchIndices" image: https://source.unsplash.com/400x175/?github description: API docs for the searchIndices plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchIndices'] --- import searchIndicesObj from './search_indices.devdocs.json'; diff --git a/api_docs/search_inference_endpoints.mdx b/api_docs/search_inference_endpoints.mdx index 586130aa4c7fb..846f3a49c3043 100644 --- a/api_docs/search_inference_endpoints.mdx +++ b/api_docs/search_inference_endpoints.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchInferenceEndpoints title: "searchInferenceEndpoints" image: https://source.unsplash.com/400x175/?github description: API docs for the searchInferenceEndpoints plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchInferenceEndpoints'] --- import searchInferenceEndpointsObj from './search_inference_endpoints.devdocs.json'; diff --git a/api_docs/search_navigation.devdocs.json b/api_docs/search_navigation.devdocs.json index 3ec95f74ec323..94e0857bfcb6b 100644 --- a/api_docs/search_navigation.devdocs.json +++ b/api_docs/search_navigation.devdocs.json @@ -132,7 +132,7 @@ "label": "link", "description": [], "signature": [ - "\"fleet\" | \"graph\" | \"ml\" | \"monitoring\" | \"profiling\" | \"metrics\" | \"management\" | \"apm\" | \"synthetics\" | \"ux\" | \"canvas\" | \"logs\" | \"dashboards\" | \"slo\" | \"observabilityAIAssistant\" | \"home\" | \"integrations\" | \"discover\" | \"observability-overview\" | \"streams\" | \"appSearch\" | \"dev_tools\" | \"maps\" | \"visualize\" | \"dev_tools:console\" | \"dev_tools:searchprofiler\" | \"dev_tools:painless_lab\" | \"dev_tools:grokdebugger\" | \"ml:notifications\" | \"ml:nodes\" | \"ml:overview\" | \"ml:memoryUsage\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:logPatternAnalysis\" | \"ml:logRateAnalysis\" | \"ml:singleMetricViewer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:dataDrift\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:esqlDataVisualizer\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\" | \"ml:suppliedConfigurations\" | \"osquery\" | \"management:transform\" | \"management:watcher\" | \"management:cases\" | \"management:tags\" | \"management:maintenanceWindows\" | \"management:cross_cluster_replication\" | \"management:dataViews\" | \"management:spaces\" | \"management:settings\" | \"management:users\" | \"management:migrate_data\" | \"management:search_sessions\" | \"management:data_quality\" | \"management:filesManagement\" | \"management:pipelines\" | \"management:roles\" | \"management:reporting\" | \"management:aiAssistantManagementSelection\" | \"management:securityAiAssistantManagement\" | \"management:observabilityAiAssistantManagement\" | \"management:api_keys\" | \"management:license_management\" | \"management:index_lifecycle_management\" | \"management:index_management\" | \"management:ingest_pipelines\" | \"management:jobsListLink\" | \"management:objects\" | \"management:remote_clusters\" | \"management:role_mappings\" | \"management:rollup_jobs\" | \"management:snapshot_restore\" | \"management:triggersActions\" | \"management:triggersActionsConnectors\" | \"management:upgrade_assistant\" | \"enterpriseSearch\" | \"enterpriseSearchContent\" | \"enterpriseSearchApplications\" | \"enterpriseSearchAnalytics\" | \"workplaceSearch\" | \"serverlessElasticsearch\" | \"serverlessConnectors\" | \"serverlessWebCrawlers\" | \"searchPlayground\" | \"searchInferenceEndpoints\" | \"searchHomepage\" | \"enterpriseSearchContent:connectors\" | \"enterpriseSearchContent:searchIndices\" | \"enterpriseSearchContent:webCrawlers\" | \"enterpriseSearchApplications:searchApplications\" | \"appSearch:engines\" | \"searchInferenceEndpoints:inferenceEndpoints\" | \"elasticsearchStart\" | \"elasticsearchIndices\" | \"enterpriseSearchElasticsearch\" | \"enterpriseSearchVectorSearch\" | \"enterpriseSearchSemanticSearch\" | \"enterpriseSearchAISearch\" | \"elasticsearchIndices:createIndex\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\" | \"inventory\" | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:alerts\" | \"observability-overview:rules\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:assetDetails\" | \"apm:services\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:service-groups-list\" | \"apm:storage-explorer\" | \"synthetics:overview\" | \"synthetics:certificates\" | \"profiling:functions\" | \"profiling:stacktraces\" | \"profiling:flamegraphs\" | \"inventory:datastreams\" | \"streams:overview\" | \"securitySolutionUI\" | \"securitySolutionUI:\" | \"securitySolutionUI:cases\" | \"securitySolutionUI:alerts\" | \"securitySolutionUI:rules\" | \"securitySolutionUI:policy\" | \"securitySolutionUI:overview\" | \"securitySolutionUI:dashboards\" | \"securitySolutionUI:kubernetes\" | \"securitySolutionUI:cases_create\" | \"securitySolutionUI:cases_configure\" | \"securitySolutionUI:hosts\" | \"securitySolutionUI:users\" | \"securitySolutionUI:cloud_defend-policies\" | \"securitySolutionUI:cloud_security_posture-dashboard\" | \"securitySolutionUI:cloud_security_posture-findings\" | \"securitySolutionUI:cloud_security_posture-benchmarks\" | \"securitySolutionUI:network\" | \"securitySolutionUI:data_quality\" | \"securitySolutionUI:explore\" | \"securitySolutionUI:assets\" | \"securitySolutionUI:cloud_defend\" | \"securitySolutionUI:notes\" | \"securitySolutionUI:administration\" | \"securitySolutionUI:attack_discovery\" | \"securitySolutionUI:blocklist\" | \"securitySolutionUI:cloud_security_posture-rules\" | \"securitySolutionUI:detections\" | \"securitySolutionUI:detection_response\" | \"securitySolutionUI:endpoints\" | \"securitySolutionUI:event_filters\" | \"securitySolutionUI:exceptions\" | \"securitySolutionUI:host_isolation_exceptions\" | \"securitySolutionUI:hosts-all\" | \"securitySolutionUI:hosts-anomalies\" | \"securitySolutionUI:hosts-risk\" | \"securitySolutionUI:hosts-events\" | \"securitySolutionUI:hosts-sessions\" | \"securitySolutionUI:hosts-uncommon_processes\" | \"securitySolutionUI:investigations\" | \"securitySolutionUI:get_started\" | \"securitySolutionUI:machine_learning-landing\" | \"securitySolutionUI:network-anomalies\" | \"securitySolutionUI:network-dns\" | \"securitySolutionUI:network-events\" | \"securitySolutionUI:network-flows\" | \"securitySolutionUI:network-http\" | \"securitySolutionUI:network-tls\" | \"securitySolutionUI:response_actions_history\" | \"securitySolutionUI:rules-add\" | \"securitySolutionUI:rules-create\" | \"securitySolutionUI:rules-landing\" | \"securitySolutionUI:siem_migrations-rules\" | \"securitySolutionUI:threat_intelligence\" | \"securitySolutionUI:timelines\" | \"securitySolutionUI:timelines-templates\" | \"securitySolutionUI:trusted_apps\" | \"securitySolutionUI:users-all\" | \"securitySolutionUI:users-anomalies\" | \"securitySolutionUI:users-authentications\" | \"securitySolutionUI:users-events\" | \"securitySolutionUI:users-risk\" | \"securitySolutionUI:entity_analytics\" | \"securitySolutionUI:entity_analytics-management\" | \"securitySolutionUI:entity_analytics-asset-classification\" | \"securitySolutionUI:entity_analytics-entity_store_management\" | \"securitySolutionUI:coverage-overview\" | \"fleet:settings\" | \"fleet:agents\" | \"fleet:policies\" | \"fleet:data_streams\" | \"fleet:enrollment_tokens\" | \"fleet:uninstall_tokens\"" + "\"fleet\" | \"graph\" | \"ml\" | \"monitoring\" | \"profiling\" | \"metrics\" | \"management\" | \"apm\" | \"synthetics\" | \"ux\" | \"canvas\" | \"logs\" | \"dashboards\" | \"slo\" | \"observabilityAIAssistant\" | \"home\" | \"integrations\" | \"discover\" | \"observability-overview\" | \"streams\" | \"appSearch\" | \"inventory\" | \"dev_tools\" | \"maps\" | \"visualize\" | \"dev_tools:console\" | \"dev_tools:searchprofiler\" | \"dev_tools:painless_lab\" | \"dev_tools:grokdebugger\" | \"ml:notifications\" | \"ml:nodes\" | \"ml:overview\" | \"ml:memoryUsage\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:logPatternAnalysis\" | \"ml:logRateAnalysis\" | \"ml:singleMetricViewer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:dataDrift\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:esqlDataVisualizer\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\" | \"ml:suppliedConfigurations\" | \"osquery\" | \"management:transform\" | \"management:watcher\" | \"management:cases\" | \"management:tags\" | \"management:maintenanceWindows\" | \"management:cross_cluster_replication\" | \"management:dataViews\" | \"management:spaces\" | \"management:settings\" | \"management:users\" | \"management:migrate_data\" | \"management:search_sessions\" | \"management:data_quality\" | \"management:filesManagement\" | \"management:pipelines\" | \"management:roles\" | \"management:reporting\" | \"management:aiAssistantManagementSelection\" | \"management:securityAiAssistantManagement\" | \"management:observabilityAiAssistantManagement\" | \"management:api_keys\" | \"management:license_management\" | \"management:index_lifecycle_management\" | \"management:index_management\" | \"management:ingest_pipelines\" | \"management:jobsListLink\" | \"management:objects\" | \"management:remote_clusters\" | \"management:role_mappings\" | \"management:rollup_jobs\" | \"management:snapshot_restore\" | \"management:triggersActions\" | \"management:triggersActionsConnectors\" | \"management:upgrade_assistant\" | \"enterpriseSearch\" | \"enterpriseSearchContent\" | \"enterpriseSearchApplications\" | \"enterpriseSearchAnalytics\" | \"workplaceSearch\" | \"serverlessElasticsearch\" | \"serverlessConnectors\" | \"serverlessWebCrawlers\" | \"searchPlayground\" | \"searchInferenceEndpoints\" | \"searchHomepage\" | \"enterpriseSearchContent:connectors\" | \"enterpriseSearchContent:searchIndices\" | \"enterpriseSearchContent:webCrawlers\" | \"enterpriseSearchApplications:searchApplications\" | \"appSearch:engines\" | \"searchInferenceEndpoints:inferenceEndpoints\" | \"elasticsearchStart\" | \"elasticsearchIndices\" | \"enterpriseSearchElasticsearch\" | \"enterpriseSearchVectorSearch\" | \"enterpriseSearchSemanticSearch\" | \"enterpriseSearchAISearch\" | \"elasticsearchIndices:createIndex\" | \"observability-logs-explorer\" | \"last-used-logs-viewer\" | \"observabilityOnboarding\" | \"logs:settings\" | \"logs:stream\" | \"logs:log-categories\" | \"logs:anomalies\" | \"observability-overview:cases\" | \"observability-overview:alerts\" | \"observability-overview:rules\" | \"observability-overview:cases_create\" | \"observability-overview:cases_configure\" | \"metrics:settings\" | \"metrics:hosts\" | \"metrics:inventory\" | \"metrics:metrics-explorer\" | \"metrics:assetDetails\" | \"apm:services\" | \"apm:traces\" | \"apm:dependencies\" | \"apm:service-map\" | \"apm:settings\" | \"apm:service-groups-list\" | \"apm:storage-explorer\" | \"synthetics:overview\" | \"synthetics:certificates\" | \"profiling:functions\" | \"profiling:stacktraces\" | \"profiling:flamegraphs\" | \"inventory:datastreams\" | \"streams:overview\" | \"securitySolutionUI\" | \"securitySolutionUI:\" | \"securitySolutionUI:cases\" | \"securitySolutionUI:alerts\" | \"securitySolutionUI:rules\" | \"securitySolutionUI:policy\" | \"securitySolutionUI:overview\" | \"securitySolutionUI:dashboards\" | \"securitySolutionUI:kubernetes\" | \"securitySolutionUI:cases_create\" | \"securitySolutionUI:cases_configure\" | \"securitySolutionUI:hosts\" | \"securitySolutionUI:users\" | \"securitySolutionUI:cloud_defend-policies\" | \"securitySolutionUI:cloud_security_posture-dashboard\" | \"securitySolutionUI:cloud_security_posture-findings\" | \"securitySolutionUI:cloud_security_posture-benchmarks\" | \"securitySolutionUI:network\" | \"securitySolutionUI:data_quality\" | \"securitySolutionUI:explore\" | \"securitySolutionUI:assets\" | \"securitySolutionUI:cloud_defend\" | \"securitySolutionUI:notes\" | \"securitySolutionUI:administration\" | \"securitySolutionUI:attack_discovery\" | \"securitySolutionUI:blocklist\" | \"securitySolutionUI:cloud_security_posture-rules\" | \"securitySolutionUI:detections\" | \"securitySolutionUI:detection_response\" | \"securitySolutionUI:endpoints\" | \"securitySolutionUI:event_filters\" | \"securitySolutionUI:exceptions\" | \"securitySolutionUI:host_isolation_exceptions\" | \"securitySolutionUI:hosts-all\" | \"securitySolutionUI:hosts-anomalies\" | \"securitySolutionUI:hosts-risk\" | \"securitySolutionUI:hosts-events\" | \"securitySolutionUI:hosts-sessions\" | \"securitySolutionUI:hosts-uncommon_processes\" | \"securitySolutionUI:investigations\" | \"securitySolutionUI:get_started\" | \"securitySolutionUI:machine_learning-landing\" | \"securitySolutionUI:network-anomalies\" | \"securitySolutionUI:network-dns\" | \"securitySolutionUI:network-events\" | \"securitySolutionUI:network-flows\" | \"securitySolutionUI:network-http\" | \"securitySolutionUI:network-tls\" | \"securitySolutionUI:response_actions_history\" | \"securitySolutionUI:rules-add\" | \"securitySolutionUI:rules-create\" | \"securitySolutionUI:rules-landing\" | \"securitySolutionUI:siem_migrations-rules\" | \"securitySolutionUI:threat_intelligence\" | \"securitySolutionUI:timelines\" | \"securitySolutionUI:timelines-templates\" | \"securitySolutionUI:trusted_apps\" | \"securitySolutionUI:users-all\" | \"securitySolutionUI:users-anomalies\" | \"securitySolutionUI:users-authentications\" | \"securitySolutionUI:users-events\" | \"securitySolutionUI:users-risk\" | \"securitySolutionUI:entity_analytics\" | \"securitySolutionUI:entity_analytics-management\" | \"securitySolutionUI:entity_analytics-asset-classification\" | \"securitySolutionUI:entity_analytics-entity_store_management\" | \"securitySolutionUI:coverage-overview\" | \"fleet:settings\" | \"fleet:agents\" | \"fleet:policies\" | \"fleet:data_streams\" | \"fleet:enrollment_tokens\" | \"fleet:uninstall_tokens\"" ], "path": "x-pack/plugins/search_solution/search_navigation/public/types.ts", "deprecated": false, diff --git a/api_docs/search_navigation.mdx b/api_docs/search_navigation.mdx index 68c346df437e9..b371d5ea2df7a 100644 --- a/api_docs/search_navigation.mdx +++ b/api_docs/search_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNavigation title: "searchNavigation" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNavigation plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNavigation'] --- import searchNavigationObj from './search_navigation.devdocs.json'; diff --git a/api_docs/search_notebooks.mdx b/api_docs/search_notebooks.mdx index 60127da7c23ad..a87136f755be4 100644 --- a/api_docs/search_notebooks.mdx +++ b/api_docs/search_notebooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNotebooks title: "searchNotebooks" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNotebooks plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNotebooks'] --- import searchNotebooksObj from './search_notebooks.devdocs.json'; diff --git a/api_docs/search_playground.mdx b/api_docs/search_playground.mdx index f21a543026a9b..f2b250c7621de 100644 --- a/api_docs/search_playground.mdx +++ b/api_docs/search_playground.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchPlayground title: "searchPlayground" image: https://source.unsplash.com/400x175/?github description: API docs for the searchPlayground plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchPlayground'] --- import searchPlaygroundObj from './search_playground.devdocs.json'; diff --git a/api_docs/security.devdocs.json b/api_docs/security.devdocs.json index c1f411fb8b769..a66deb7e92ab8 100644 --- a/api_docs/security.devdocs.json +++ b/api_docs/security.devdocs.json @@ -141,6 +141,22 @@ "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "security", + "id": "def-public.AuthenticatedUser.operator", + "type": "CompoundType", + "tags": [], + "label": "operator", + "description": [ + "\nIndicates whether user is an operator." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -3673,6 +3689,22 @@ "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "security", + "id": "def-server.AuthenticatedUser.operator", + "type": "CompoundType", + "tags": [], + "label": "operator", + "description": [ + "\nIndicates whether user is an operator." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -6467,7 +6499,7 @@ }, { "plugin": "observabilityAIAssistant", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant/server/service/index.ts" + "path": "x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/index.ts" }, { "plugin": "fleet", @@ -6490,24 +6522,20 @@ "path": "x-pack/plugins/cloud_security_posture/server/routes/setup_routes.ts" }, { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" - }, - { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/server/routes/api_key_routes.ts" }, { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" }, { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/enable.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" }, { - "plugin": "entityManager", - "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/disable.ts" + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" }, { "plugin": "apm", @@ -6522,68 +6550,72 @@ "path": "x-pack/plugins/observability_solution/apm/server/routes/fleet/is_superuser.ts" }, { - "plugin": "serverlessSearch", - "path": "x-pack/plugins/serverless_search/server/routes/api_key_routes.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/lib/auth/api_key/api_key.ts" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/server/lib/reindexing/credential_store.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/enable.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "plugin": "entityManager", + "path": "x-pack/platform/plugins/shared/entity_manager/server/routes/enablement/disable.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + }, + { + "plugin": "transform", + "path": "x-pack/platform/plugins/private/transform/server/routes/api/reauthorize_transforms/route_handler_factory.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/server/routes/setup/handlers.test.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts" }, { - "plugin": "transform", - "path": "x-pack/platform/plugins/private/transform/server/routes/api/reauthorize_transforms/route_handler_factory.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts" } ] }, @@ -6963,6 +6995,22 @@ "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "security", + "id": "def-common.AuthenticatedUser.operator", + "type": "CompoundType", + "tags": [], + "label": "operator", + "description": [ + "\nIndicates whether user is an operator." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/core/security/core-security-common/src/authentication/authenticated_user.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/security.mdx b/api_docs/security.mdx index ee526e2bdc142..42b4ea81ccce1 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana- | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 455 | 0 | 238 | 0 | +| 458 | 0 | 238 | 0 | ## Client diff --git a/api_docs/security_solution.devdocs.json b/api_docs/security_solution.devdocs.json index 83890026a0c99..16aff7a2ceaa4 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -427,7 +427,7 @@ "label": "data", "description": [], "signature": [ - "({ id: string; type: \"eql\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; language: \"eql\"; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; tiebreaker_field?: string | undefined; timestamp_field?: string | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; event_category_override?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"query\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; language: \"kuery\" | \"lucene\"; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; saved_id?: string | undefined; } | { id: string; type: \"saved_query\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; language: \"kuery\" | \"lucene\"; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; saved_id: string; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; query?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"threshold\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; language: \"kuery\" | \"lucene\"; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threshold: { value: number; field: string | string[]; cardinality?: { value: number; field: string; }[] | undefined; }; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { duration: { value: number; unit: \"m\" | \"s\" | \"h\"; }; } | undefined; saved_id?: string | undefined; } | { id: string; type: \"threat_match\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; language: \"kuery\" | \"lucene\"; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; threat_query: string; threat_mapping: { entries: { value: string; type: \"mapping\"; field: string; }[]; }[]; threat_index: string[]; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; saved_id?: string | undefined; threat_filters?: unknown[] | undefined; threat_indicator_path?: string | undefined; threat_language?: \"kuery\" | \"lucene\" | undefined; concurrent_searches?: number | undefined; items_per_search?: number | undefined; } | { id: string; type: \"machine_learning\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; anomaly_threshold: number; machine_learning_job_id: string | string[]; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"new_terms\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; language: \"kuery\" | \"lucene\"; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; new_terms_fields: string[]; history_window_start: string; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"esql\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; language: \"esql\"; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; })[]" + "({ id: string; type: \"eql\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; language: \"eql\"; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; tiebreaker_field?: string | undefined; timestamp_field?: string | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; event_category_override?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"query\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; language: \"kuery\" | \"lucene\"; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; saved_id?: string | undefined; } | { id: string; type: \"saved_query\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; language: \"kuery\" | \"lucene\"; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; saved_id: string; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; query?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"threshold\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; language: \"kuery\" | \"lucene\"; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threshold: { value: number; field: string | string[]; cardinality?: { value: number; field: string; }[] | undefined; }; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { duration: { value: number; unit: \"m\" | \"s\" | \"h\"; }; } | undefined; saved_id?: string | undefined; } | { id: string; type: \"threat_match\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; language: \"kuery\" | \"lucene\"; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; threat_query: string; threat_mapping: { entries: { value: string; type: \"mapping\"; field: string; }[]; }[]; threat_index: string[]; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; saved_id?: string | undefined; threat_filters?: unknown[] | undefined; threat_indicator_path?: string | undefined; threat_language?: \"kuery\" | \"lucene\" | undefined; concurrent_searches?: number | undefined; items_per_search?: number | undefined; } | { id: string; type: \"machine_learning\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; anomaly_threshold: number; machine_learning_job_id: string | string[]; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"new_terms\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; language: \"kuery\" | \"lucene\"; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; new_terms_fields: string[]; history_window_start: string; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; index?: string[] | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; filters?: unknown[] | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; data_view_id?: string | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; } | { id: string; type: \"esql\"; version: number; name: string; actions: { params: {} & { [k: string]: unknown; }; id: string; action_type_id: string; frequency?: { throttle: string | null; notifyWhen: \"onActionGroupChange\" | \"onActiveAlert\" | \"onThrottleInterval\"; summary: boolean; } | undefined; uuid?: string | undefined; group?: string | undefined; alerts_filter?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; }[]; tags: string[]; setup: string; description: string; enabled: boolean; revision: number; query: string; interval: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; risk_score: number; from: string; to: string; language: \"esql\"; created_at: string; created_by: string; updated_at: string; updated_by: string; references: string[]; author: string[]; immutable: boolean; rule_id: string; threat: { framework: string; tactic: { id: string; name: string; reference: string; }; technique?: { id: string; name: string; reference: string; subtechnique?: { id: string; name: string; reference: string; }[] | undefined; }[] | undefined; }[]; risk_score_mapping: { value: string; field: string; operator: \"equals\"; risk_score?: number | undefined; }[]; severity_mapping: { value: string; field: string; severity: \"medium\" | \"high\" | \"low\" | \"critical\"; operator: \"equals\"; }[]; exceptions_list: { id: string; type: \"endpoint\" | \"detection\" | \"rule_default\" | \"endpoint_trusted_apps\" | \"endpoint_events\" | \"endpoint_host_isolation_exceptions\" | \"endpoint_blocklists\"; list_id: string; namespace_type: \"single\" | \"agnostic\"; }[]; false_positives: string[]; max_signals: number; related_integrations: { version: string; package: string; integration?: string | undefined; }[]; required_fields: { type: string; name: string; ecs: boolean; }[]; rule_source: { type: \"external\"; is_customized: boolean; } | { type: \"internal\"; }; meta?: Zod.objectOutputType<{}, Zod.ZodUnknown, \"strip\"> | undefined; namespace?: string | undefined; license?: string | undefined; throttle?: string | undefined; outcome?: \"exactMatch\" | \"aliasMatch\" | \"conflict\" | undefined; alias_target_id?: string | undefined; alias_purpose?: \"savedObjectConversion\" | \"savedObjectImport\" | undefined; note?: string | undefined; rule_name_override?: string | undefined; timestamp_override?: string | undefined; timestamp_override_fallback_disabled?: boolean | undefined; timeline_id?: string | undefined; timeline_title?: string | undefined; building_block_type?: string | undefined; output_index?: string | undefined; investigation_fields?: { field_names: string[]; } | undefined; response_actions?: ({ params: { query?: string | undefined; timeout?: number | undefined; queries?: { id: string; query: string; version?: string | undefined; snapshot?: boolean | undefined; platform?: string | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; removed?: boolean | undefined; }[] | undefined; ecs_mapping?: Zod.objectOutputType<{}, Zod.ZodObject<{ field: Zod.ZodOptional; value: Zod.ZodOptional]>>; }, \"strip\", Zod.ZodTypeAny, { value?: string | string[] | undefined; field?: string | undefined; }, { value?: string | string[] | undefined; field?: string | undefined; }>, \"strip\"> | undefined; saved_query_id?: string | undefined; pack_id?: string | undefined; }; action_type_id: \".osquery\"; } | { params: { command: \"isolate\"; comment?: string | undefined; } | { config: { field: string; overwrite: boolean; }; command: \"kill-process\" | \"suspend-process\"; comment?: string | undefined; }; action_type_id: \".endpoint\"; })[] | undefined; execution_summary?: { last_execution: { message: string; date: string; status: \"running\" | \"succeeded\" | \"failed\" | \"going to run\" | \"partial failure\"; metrics: { total_search_duration_ms?: number | undefined; total_indexing_duration_ms?: number | undefined; execution_gap_duration_s?: number | undefined; total_enrichment_duration_ms?: number | undefined; }; status_order: number; }; } | undefined; alert_suppression?: { group_by: string[]; duration?: { value: number; unit: \"m\" | \"s\" | \"h\"; } | undefined; missing_fields_strategy?: \"doNotSuppress\" | \"suppress\" | undefined; } | undefined; })[]" ], "path": "x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts", "deprecated": false, @@ -522,7 +522,7 @@ "\nExperimental flag needed to enable the link" ], "signature": [ - "\"assistantModelEvaluation\" | \"defendInsights\" | \"alertSuppressionForSequenceEqlRuleEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"extendedRuleExecutionLoggingEnabled\" | \"socTrendsEnabled\" | \"responseActionUploadEnabled\" | \"automatedProcessActionsEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"responseActionsSentinelOneV2Enabled\" | \"responseActionsSentinelOneGetFileEnabled\" | \"responseActionsSentinelOneKillProcessEnabled\" | \"responseActionsSentinelOneProcessesEnabled\" | \"responseActionsCrowdstrikeManualHostIsolationEnabled\" | \"endpointManagementSpaceAwarenessEnabled\" | \"securitySolutionNotesDisabled\" | \"entityAlertPreviewDisabled\" | \"newUserDetailsFlyoutManagedUser\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"crowdstrikeDataInAnalyzerEnabled\" | \"responseActionsTelemetryEnabled\" | \"jamfDataInAnalyzerEnabled\" | \"timelineEsqlTabDisabled\" | \"analyzerDatePickersAndSourcererDisabled\" | \"graphVisualizationInFlyoutEnabled\" | \"prebuiltRulesCustomizationEnabled\" | \"malwareOnWriteScanOptionAvailable\" | \"unifiedManifestEnabled\" | \"valueListItemsModalEnabled\" | \"filterProcessDescendantsForEventFiltersEnabled\" | \"dataIngestionHubEnabled\" | \"entityStoreDisabled\" | \"serviceEntityStoreEnabled\" | \"siemMigrationsEnabled\" | undefined" + "\"assistantModelEvaluation\" | \"defendInsights\" | \"alertSuppressionForSequenceEqlRuleEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"extendedRuleExecutionLoggingEnabled\" | \"socTrendsEnabled\" | \"responseActionUploadEnabled\" | \"automatedProcessActionsEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"responseActionsSentinelOneV2Enabled\" | \"responseActionsSentinelOneGetFileEnabled\" | \"responseActionsSentinelOneKillProcessEnabled\" | \"responseActionsSentinelOneProcessesEnabled\" | \"responseActionsCrowdstrikeManualHostIsolationEnabled\" | \"endpointManagementSpaceAwarenessEnabled\" | \"securitySolutionNotesDisabled\" | \"entityAlertPreviewDisabled\" | \"newUserDetailsFlyoutManagedUser\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"crowdstrikeDataInAnalyzerEnabled\" | \"responseActionsTelemetryEnabled\" | \"jamfDataInAnalyzerEnabled\" | \"timelineEsqlTabDisabled\" | \"analyzerDatePickersAndSourcererDisabled\" | \"graphVisualizationInFlyoutEnabled\" | \"prebuiltRulesCustomizationEnabled\" | \"malwareOnWriteScanOptionAvailable\" | \"unifiedManifestEnabled\" | \"valueListItemsModalEnabled\" | \"filterProcessDescendantsForEventFiltersEnabled\" | \"dataIngestionHubEnabled\" | \"entityStoreDisabled\" | \"serviceEntityStoreEnabled\" | \"siemMigrationsEnabled\" | \"newExpandableFlyoutNavigationEnabled\" | \"crowdstrikeRunScriptEnabled\" | undefined" ], "path": "x-pack/plugins/security_solution/public/common/links/types.ts", "deprecated": false, @@ -602,7 +602,7 @@ "\nExperimental flag needed to disable the link. Opposite of experimentalKey" ], "signature": [ - "\"assistantModelEvaluation\" | \"defendInsights\" | \"alertSuppressionForSequenceEqlRuleEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"extendedRuleExecutionLoggingEnabled\" | \"socTrendsEnabled\" | \"responseActionUploadEnabled\" | \"automatedProcessActionsEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"responseActionsSentinelOneV2Enabled\" | \"responseActionsSentinelOneGetFileEnabled\" | \"responseActionsSentinelOneKillProcessEnabled\" | \"responseActionsSentinelOneProcessesEnabled\" | \"responseActionsCrowdstrikeManualHostIsolationEnabled\" | \"endpointManagementSpaceAwarenessEnabled\" | \"securitySolutionNotesDisabled\" | \"entityAlertPreviewDisabled\" | \"newUserDetailsFlyoutManagedUser\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"crowdstrikeDataInAnalyzerEnabled\" | \"responseActionsTelemetryEnabled\" | \"jamfDataInAnalyzerEnabled\" | \"timelineEsqlTabDisabled\" | \"analyzerDatePickersAndSourcererDisabled\" | \"graphVisualizationInFlyoutEnabled\" | \"prebuiltRulesCustomizationEnabled\" | \"malwareOnWriteScanOptionAvailable\" | \"unifiedManifestEnabled\" | \"valueListItemsModalEnabled\" | \"filterProcessDescendantsForEventFiltersEnabled\" | \"dataIngestionHubEnabled\" | \"entityStoreDisabled\" | \"serviceEntityStoreEnabled\" | \"siemMigrationsEnabled\" | undefined" + "\"assistantModelEvaluation\" | \"defendInsights\" | \"alertSuppressionForSequenceEqlRuleEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"extendedRuleExecutionLoggingEnabled\" | \"socTrendsEnabled\" | \"responseActionUploadEnabled\" | \"automatedProcessActionsEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"responseActionsSentinelOneV2Enabled\" | \"responseActionsSentinelOneGetFileEnabled\" | \"responseActionsSentinelOneKillProcessEnabled\" | \"responseActionsSentinelOneProcessesEnabled\" | \"responseActionsCrowdstrikeManualHostIsolationEnabled\" | \"endpointManagementSpaceAwarenessEnabled\" | \"securitySolutionNotesDisabled\" | \"entityAlertPreviewDisabled\" | \"newUserDetailsFlyoutManagedUser\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"crowdstrikeDataInAnalyzerEnabled\" | \"responseActionsTelemetryEnabled\" | \"jamfDataInAnalyzerEnabled\" | \"timelineEsqlTabDisabled\" | \"analyzerDatePickersAndSourcererDisabled\" | \"graphVisualizationInFlyoutEnabled\" | \"prebuiltRulesCustomizationEnabled\" | \"malwareOnWriteScanOptionAvailable\" | \"unifiedManifestEnabled\" | \"valueListItemsModalEnabled\" | \"filterProcessDescendantsForEventFiltersEnabled\" | \"dataIngestionHubEnabled\" | \"entityStoreDisabled\" | \"serviceEntityStoreEnabled\" | \"siemMigrationsEnabled\" | \"newExpandableFlyoutNavigationEnabled\" | \"crowdstrikeRunScriptEnabled\" | undefined" ], "path": "x-pack/plugins/security_solution/public/common/links/types.ts", "deprecated": false, @@ -1882,7 +1882,7 @@ "label": "experimentalFeatures", "description": [], "signature": [ - "{ readonly alertSuppressionForSequenceEqlRuleEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly responseActionsSentinelOneV2Enabled: boolean; readonly responseActionsSentinelOneGetFileEnabled: boolean; readonly responseActionsSentinelOneKillProcessEnabled: boolean; readonly responseActionsSentinelOneProcessesEnabled: boolean; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: boolean; readonly endpointManagementSpaceAwarenessEnabled: boolean; readonly securitySolutionNotesDisabled: boolean; readonly entityAlertPreviewDisabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly responseActionsTelemetryEnabled: boolean; readonly jamfDataInAnalyzerEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly graphVisualizationInFlyoutEnabled: boolean; readonly prebuiltRulesCustomizationEnabled: boolean; readonly malwareOnWriteScanOptionAvailable: boolean; readonly unifiedManifestEnabled: boolean; readonly valueListItemsModalEnabled: boolean; readonly filterProcessDescendantsForEventFiltersEnabled: boolean; readonly dataIngestionHubEnabled: boolean; readonly entityStoreDisabled: boolean; readonly serviceEntityStoreEnabled: boolean; readonly siemMigrationsEnabled: boolean; readonly defendInsights: boolean; }" + "{ readonly alertSuppressionForSequenceEqlRuleEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly responseActionsSentinelOneV2Enabled: boolean; readonly responseActionsSentinelOneGetFileEnabled: boolean; readonly responseActionsSentinelOneKillProcessEnabled: boolean; readonly responseActionsSentinelOneProcessesEnabled: boolean; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: boolean; readonly endpointManagementSpaceAwarenessEnabled: boolean; readonly securitySolutionNotesDisabled: boolean; readonly entityAlertPreviewDisabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly responseActionsTelemetryEnabled: boolean; readonly jamfDataInAnalyzerEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly graphVisualizationInFlyoutEnabled: boolean; readonly prebuiltRulesCustomizationEnabled: boolean; readonly malwareOnWriteScanOptionAvailable: boolean; readonly unifiedManifestEnabled: boolean; readonly valueListItemsModalEnabled: boolean; readonly filterProcessDescendantsForEventFiltersEnabled: boolean; readonly dataIngestionHubEnabled: boolean; readonly entityStoreDisabled: boolean; readonly serviceEntityStoreEnabled: boolean; readonly siemMigrationsEnabled: boolean; readonly defendInsights: boolean; readonly newExpandableFlyoutNavigationEnabled: boolean; readonly crowdstrikeRunScriptEnabled: boolean; }" ], "path": "x-pack/plugins/security_solution/public/types.ts", "deprecated": false, @@ -3130,7 +3130,7 @@ "\nThe security solution generic experimental features" ], "signature": [ - "{ readonly alertSuppressionForSequenceEqlRuleEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly responseActionsSentinelOneV2Enabled: boolean; readonly responseActionsSentinelOneGetFileEnabled: boolean; readonly responseActionsSentinelOneKillProcessEnabled: boolean; readonly responseActionsSentinelOneProcessesEnabled: boolean; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: boolean; readonly endpointManagementSpaceAwarenessEnabled: boolean; readonly securitySolutionNotesDisabled: boolean; readonly entityAlertPreviewDisabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly responseActionsTelemetryEnabled: boolean; readonly jamfDataInAnalyzerEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly graphVisualizationInFlyoutEnabled: boolean; readonly prebuiltRulesCustomizationEnabled: boolean; readonly malwareOnWriteScanOptionAvailable: boolean; readonly unifiedManifestEnabled: boolean; readonly valueListItemsModalEnabled: boolean; readonly filterProcessDescendantsForEventFiltersEnabled: boolean; readonly dataIngestionHubEnabled: boolean; readonly entityStoreDisabled: boolean; readonly serviceEntityStoreEnabled: boolean; readonly siemMigrationsEnabled: boolean; readonly defendInsights: boolean; }" + "{ readonly alertSuppressionForSequenceEqlRuleEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly responseActionsSentinelOneV2Enabled: boolean; readonly responseActionsSentinelOneGetFileEnabled: boolean; readonly responseActionsSentinelOneKillProcessEnabled: boolean; readonly responseActionsSentinelOneProcessesEnabled: boolean; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: boolean; readonly endpointManagementSpaceAwarenessEnabled: boolean; readonly securitySolutionNotesDisabled: boolean; readonly entityAlertPreviewDisabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly responseActionsTelemetryEnabled: boolean; readonly jamfDataInAnalyzerEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly graphVisualizationInFlyoutEnabled: boolean; readonly prebuiltRulesCustomizationEnabled: boolean; readonly malwareOnWriteScanOptionAvailable: boolean; readonly unifiedManifestEnabled: boolean; readonly valueListItemsModalEnabled: boolean; readonly filterProcessDescendantsForEventFiltersEnabled: boolean; readonly dataIngestionHubEnabled: boolean; readonly entityStoreDisabled: boolean; readonly serviceEntityStoreEnabled: boolean; readonly siemMigrationsEnabled: boolean; readonly defendInsights: boolean; readonly newExpandableFlyoutNavigationEnabled: boolean; readonly crowdstrikeRunScriptEnabled: boolean; }" ], "path": "x-pack/plugins/security_solution/server/plugin_contract.ts", "deprecated": false, @@ -3303,7 +3303,7 @@ "label": "ExperimentalFeatures", "description": [], "signature": [ - "{ readonly alertSuppressionForSequenceEqlRuleEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly responseActionsSentinelOneV2Enabled: boolean; readonly responseActionsSentinelOneGetFileEnabled: boolean; readonly responseActionsSentinelOneKillProcessEnabled: boolean; readonly responseActionsSentinelOneProcessesEnabled: boolean; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: boolean; readonly endpointManagementSpaceAwarenessEnabled: boolean; readonly securitySolutionNotesDisabled: boolean; readonly entityAlertPreviewDisabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly responseActionsTelemetryEnabled: boolean; readonly jamfDataInAnalyzerEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly graphVisualizationInFlyoutEnabled: boolean; readonly prebuiltRulesCustomizationEnabled: boolean; readonly malwareOnWriteScanOptionAvailable: boolean; readonly unifiedManifestEnabled: boolean; readonly valueListItemsModalEnabled: boolean; readonly filterProcessDescendantsForEventFiltersEnabled: boolean; readonly dataIngestionHubEnabled: boolean; readonly entityStoreDisabled: boolean; readonly serviceEntityStoreEnabled: boolean; readonly siemMigrationsEnabled: boolean; readonly defendInsights: boolean; }" + "{ readonly alertSuppressionForSequenceEqlRuleEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly responseActionsSentinelOneV2Enabled: boolean; readonly responseActionsSentinelOneGetFileEnabled: boolean; readonly responseActionsSentinelOneKillProcessEnabled: boolean; readonly responseActionsSentinelOneProcessesEnabled: boolean; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: boolean; readonly endpointManagementSpaceAwarenessEnabled: boolean; readonly securitySolutionNotesDisabled: boolean; readonly entityAlertPreviewDisabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly responseActionsTelemetryEnabled: boolean; readonly jamfDataInAnalyzerEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly graphVisualizationInFlyoutEnabled: boolean; readonly prebuiltRulesCustomizationEnabled: boolean; readonly malwareOnWriteScanOptionAvailable: boolean; readonly unifiedManifestEnabled: boolean; readonly valueListItemsModalEnabled: boolean; readonly filterProcessDescendantsForEventFiltersEnabled: boolean; readonly dataIngestionHubEnabled: boolean; readonly entityStoreDisabled: boolean; readonly serviceEntityStoreEnabled: boolean; readonly siemMigrationsEnabled: boolean; readonly defendInsights: boolean; readonly newExpandableFlyoutNavigationEnabled: boolean; readonly crowdstrikeRunScriptEnabled: boolean; }" ], "path": "x-pack/plugins/security_solution/common/experimental_features.ts", "deprecated": false, @@ -3369,7 +3369,7 @@ "\nA list of allowed values that can be used in `xpack.securitySolution.enableExperimental`.\nThis object is then used to validate and parse the value entered." ], "signature": [ - "{ readonly alertSuppressionForSequenceEqlRuleEnabled: true; readonly excludePoliciesInFilterEnabled: false; readonly kubernetesEnabled: false; readonly donutChartEmbeddablesEnabled: false; readonly previewTelemetryUrlEnabled: false; readonly extendedRuleExecutionLoggingEnabled: false; readonly socTrendsEnabled: false; readonly responseActionUploadEnabled: true; readonly automatedProcessActionsEnabled: true; readonly responseActionsSentinelOneV1Enabled: true; readonly responseActionsSentinelOneV2Enabled: true; readonly responseActionsSentinelOneGetFileEnabled: true; readonly responseActionsSentinelOneKillProcessEnabled: true; readonly responseActionsSentinelOneProcessesEnabled: true; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: true; readonly endpointManagementSpaceAwarenessEnabled: false; readonly securitySolutionNotesDisabled: false; readonly entityAlertPreviewDisabled: false; readonly assistantModelEvaluation: false; readonly newUserDetailsFlyoutManagedUser: false; readonly riskScoringPersistence: true; readonly riskScoringRoutesEnabled: true; readonly esqlRulesDisabled: false; readonly protectionUpdatesEnabled: true; readonly disableTimelineSaveTour: false; readonly riskEnginePrivilegesRouteEnabled: true; readonly sentinelOneDataInAnalyzerEnabled: true; readonly sentinelOneManualHostActionsEnabled: true; readonly crowdstrikeDataInAnalyzerEnabled: true; readonly responseActionsTelemetryEnabled: false; readonly jamfDataInAnalyzerEnabled: true; readonly timelineEsqlTabDisabled: false; readonly analyzerDatePickersAndSourcererDisabled: false; readonly graphVisualizationInFlyoutEnabled: false; readonly prebuiltRulesCustomizationEnabled: false; readonly malwareOnWriteScanOptionAvailable: true; readonly unifiedManifestEnabled: true; readonly valueListItemsModalEnabled: true; readonly filterProcessDescendantsForEventFiltersEnabled: true; readonly dataIngestionHubEnabled: false; readonly entityStoreDisabled: false; readonly serviceEntityStoreEnabled: true; readonly siemMigrationsEnabled: false; readonly defendInsights: false; }" + "{ readonly alertSuppressionForSequenceEqlRuleEnabled: true; readonly excludePoliciesInFilterEnabled: false; readonly kubernetesEnabled: false; readonly donutChartEmbeddablesEnabled: false; readonly previewTelemetryUrlEnabled: false; readonly extendedRuleExecutionLoggingEnabled: false; readonly socTrendsEnabled: false; readonly responseActionUploadEnabled: true; readonly automatedProcessActionsEnabled: true; readonly responseActionsSentinelOneV1Enabled: true; readonly responseActionsSentinelOneV2Enabled: true; readonly responseActionsSentinelOneGetFileEnabled: true; readonly responseActionsSentinelOneKillProcessEnabled: true; readonly responseActionsSentinelOneProcessesEnabled: true; readonly responseActionsCrowdstrikeManualHostIsolationEnabled: true; readonly endpointManagementSpaceAwarenessEnabled: false; readonly securitySolutionNotesDisabled: false; readonly entityAlertPreviewDisabled: false; readonly assistantModelEvaluation: false; readonly newUserDetailsFlyoutManagedUser: false; readonly riskScoringPersistence: true; readonly riskScoringRoutesEnabled: true; readonly esqlRulesDisabled: false; readonly protectionUpdatesEnabled: true; readonly disableTimelineSaveTour: false; readonly riskEnginePrivilegesRouteEnabled: true; readonly sentinelOneDataInAnalyzerEnabled: true; readonly sentinelOneManualHostActionsEnabled: true; readonly crowdstrikeDataInAnalyzerEnabled: true; readonly responseActionsTelemetryEnabled: false; readonly jamfDataInAnalyzerEnabled: true; readonly timelineEsqlTabDisabled: false; readonly analyzerDatePickersAndSourcererDisabled: false; readonly graphVisualizationInFlyoutEnabled: false; readonly prebuiltRulesCustomizationEnabled: false; readonly malwareOnWriteScanOptionAvailable: true; readonly unifiedManifestEnabled: true; readonly valueListItemsModalEnabled: true; readonly filterProcessDescendantsForEventFiltersEnabled: true; readonly dataIngestionHubEnabled: false; readonly entityStoreDisabled: false; readonly serviceEntityStoreEnabled: false; readonly siemMigrationsEnabled: false; readonly defendInsights: false; readonly newExpandableFlyoutNavigationEnabled: false; readonly crowdstrikeRunScriptEnabled: false; }" ], "path": "x-pack/plugins/security_solution/common/experimental_features.ts", "deprecated": false, diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 3187c6ebb1327..d40d630a22698 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index ac50037684913..9828920c8290a 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index c564182e3e4a8..14041a34d64ea 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index b8f60227062d9..97ab11f873dcd 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.devdocs.json b/api_docs/serverless_observability.devdocs.json index 27cfb7e4ed1a4..4b2486bb91368 100644 --- a/api_docs/serverless_observability.devdocs.json +++ b/api_docs/serverless_observability.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "ServerlessObservabilityPublicSetup", "description": [], - "path": "x-pack/plugins/serverless_observability/public/types.ts", + "path": "x-pack/solutions/observability/plugins/serverless_observability/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "ServerlessObservabilityPublicStart", "description": [], - "path": "x-pack/plugins/serverless_observability/public/types.ts", + "path": "x-pack/solutions/observability/plugins/serverless_observability/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -50,7 +50,7 @@ "tags": [], "label": "ServerlessObservabilityPluginSetup", "description": [], - "path": "x-pack/plugins/serverless_observability/server/types.ts", + "path": "x-pack/solutions/observability/plugins/serverless_observability/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -64,7 +64,7 @@ "tags": [], "label": "ServerlessObservabilityPluginStart", "description": [], - "path": "x-pack/plugins/serverless_observability/server/types.ts", + "path": "x-pack/solutions/observability/plugins/serverless_observability/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -88,7 +88,7 @@ "signature": [ "\"serverlessObservability\"" ], - "path": "x-pack/plugins/serverless_observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/serverless_observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -103,7 +103,7 @@ "signature": [ "\"serverlessObservability\"" ], - "path": "x-pack/plugins/serverless_observability/common/index.ts", + "path": "x-pack/solutions/observability/plugins/serverless_observability/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index 2b29dcbc97034..be35d68a4858c 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index 4c4ffb23c5acc..0d669929952d8 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index b085908391dcc..2c7adf7df0613 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.devdocs.json b/api_docs/share.devdocs.json index f059f4827715a..36ca1c42b9b08 100644 --- a/api_docs/share.devdocs.json +++ b/api_docs/share.devdocs.json @@ -528,7 +528,7 @@ ], "signature": [ "(params: P, options?: ", - "FormatSearchParamsOptions", + "GetRedirectUrlOptions", " | undefined) => string" ], "path": "src/plugins/share/common/url_service/locators/types.ts", @@ -562,7 +562,7 @@ "URL serialization options." ], "signature": [ - "FormatSearchParamsOptions", + "GetRedirectUrlOptions", " | undefined" ], "path": "src/plugins/share/common/url_service/locators/types.ts", @@ -847,7 +847,9 @@ "\nAllows for passing contextual information that each consumer can provide to customize the share menu" ], "signature": [ - "{ title: string; }" + "{ title: string; config?: Partial> | undefined; }" ], "path": "src/plugins/share/public/types.ts", "deprecated": false, @@ -2318,7 +2320,7 @@ ], "signature": [ "(params: P, options?: ", - "FormatSearchParamsOptions", + "GetRedirectUrlOptions", " | undefined) => string" ], "path": "src/plugins/share/common/url_service/locators/types.ts", @@ -2352,7 +2354,7 @@ "URL serialization options." ], "signature": [ - "FormatSearchParamsOptions", + "GetRedirectUrlOptions", " | undefined" ], "path": "src/plugins/share/common/url_service/locators/types.ts", diff --git a/api_docs/share.mdx b/api_docs/share.mdx index b533d5e9cdafa..088801c6cbf1e 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 136 | 0 | 73 | 15 | +| 136 | 0 | 73 | 16 | ## Client diff --git a/api_docs/slo.devdocs.json b/api_docs/slo.devdocs.json index 6103989a90a7a..410a5f83698d0 100644 --- a/api_docs/slo.devdocs.json +++ b/api_docs/slo.devdocs.json @@ -1221,10 +1221,124 @@ "server": { "classes": [], "functions": [], - "interfaces": [], + "interfaces": [ + { + "parentPluginId": "slo", + "id": "def-server.SloClient", + "type": "Interface", + "tags": [], + "label": "SloClient", + "description": [], + "path": "x-pack/plugins/observability_solution/slo/server/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "slo", + "id": "def-server.SloClient.getSummaryIndices", + "type": "Function", + "tags": [], + "label": "getSummaryIndices", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "x-pack/plugins/observability_solution/slo/server/client/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], "enums": [], "misc": [], - "objects": [] + "objects": [], + "setup": { + "parentPluginId": "slo", + "id": "def-server.SLOServerSetup", + "type": "Interface", + "tags": [], + "label": "SLOServerSetup", + "description": [], + "path": "x-pack/plugins/observability_solution/slo/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "slo", + "id": "def-server.SLOServerStart", + "type": "Interface", + "tags": [], + "label": "SLOServerStart", + "description": [], + "path": "x-pack/plugins/observability_solution/slo/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "slo", + "id": "def-server.SLOServerStart.getSloClientWithRequest", + "type": "Function", + "tags": [], + "label": "getSloClientWithRequest", + "description": [], + "signature": [ + "(request: ", + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.KibanaRequest", + "text": "KibanaRequest" + }, + ") => ", + { + "pluginId": "slo", + "scope": "server", + "docId": "kibSloPluginApi", + "section": "def-server.SloClient", + "text": "SloClient" + } + ], + "path": "x-pack/plugins/observability_solution/slo/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "slo", + "id": "def-server.SLOServerStart.getSloClientWithRequest.$1", + "type": "Object", + "tags": [], + "label": "request", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-http-server", + "scope": "server", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-server.KibanaRequest", + "text": "KibanaRequest" + }, + "" + ], + "path": "x-pack/plugins/observability_solution/slo/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "lifecycle": "start", + "initialIsOpen": true + } }, "common": { "classes": [], diff --git a/api_docs/slo.mdx b/api_docs/slo.mdx index 34be1f29719bd..06ef48d43f31e 100644 --- a/api_docs/slo.mdx +++ b/api_docs/slo.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/slo title: "slo" image: https://source.unsplash.com/400x175/?github description: API docs for the slo plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'slo'] --- import sloObj from './slo.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 48 | 0 | 48 | 2 | +| 54 | 0 | 54 | 2 | ## Client @@ -34,6 +34,17 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ ### Interfaces +## Server + +### Setup + + +### Start + + +### Interfaces + + ## Common ### Objects diff --git a/api_docs/snapshot_restore.devdocs.json b/api_docs/snapshot_restore.devdocs.json index 72be1ac1a783d..935bd2ba373c6 100644 --- a/api_docs/snapshot_restore.devdocs.json +++ b/api_docs/snapshot_restore.devdocs.json @@ -28,7 +28,7 @@ "tags": [], "label": "REPOSITORY_TYPES", "description": [], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -45,7 +45,7 @@ "signature": [ "\"/api/snapshot_restore/\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -60,7 +60,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -75,7 +75,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -90,7 +90,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -105,7 +105,7 @@ "signature": [ "\"none\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -120,7 +120,7 @@ "signature": [ "\"8.0.0\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -136,7 +136,7 @@ "RepositoryType", "[]" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -152,7 +152,7 @@ "RepositoryType", "[]" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -168,7 +168,7 @@ "RepositoryType", "[]" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -182,7 +182,7 @@ "tags": [], "label": "PLUGIN", "description": [], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -193,7 +193,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -207,7 +207,7 @@ "signature": [ "\"basic\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -221,7 +221,7 @@ "signature": [ "(i18n: any) => string" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -235,7 +235,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -253,7 +253,7 @@ "tags": [], "label": "REPOSITORY_PLUGINS_MAP", "description": [], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -274,7 +274,7 @@ }, ".hdfs" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false } @@ -288,7 +288,7 @@ "tags": [], "label": "TIME_UNITS", "description": [], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -302,7 +302,7 @@ "signature": [ "\"d\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -316,7 +316,7 @@ "signature": [ "\"h\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -330,7 +330,7 @@ "signature": [ "\"m\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false }, @@ -344,7 +344,7 @@ "signature": [ "\"s\"" ], - "path": "x-pack/plugins/snapshot_restore/common/constants.ts", + "path": "x-pack/platform/plugins/private/snapshot_restore/common/constants.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index fe3e8f32c653d..a6c9192831019 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index 27ce322add6ab..ca4777528a866 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 5303fd771eb84..efbb0a91c5712 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index 8e9ed5dc29325..95c09b31b065b 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/streams.devdocs.json b/api_docs/streams.devdocs.json index 095b9b87cb116..4e6151b341ba7 100644 --- a/api_docs/streams.devdocs.json +++ b/api_docs/streams.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "StreamsPluginSetup", "description": [], - "path": "x-pack/plugins/streams/public/types.ts", + "path": "x-pack/solutions/observability/plugins/streams/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -29,7 +29,7 @@ "Observable", "<{ status: \"unknown\" | \"disabled\" | \"enabled\"; }>" ], - "path": "x-pack/plugins/streams/public/types.ts", + "path": "x-pack/solutions/observability/plugins/streams/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -44,7 +44,7 @@ "tags": [], "label": "StreamsPluginStart", "description": [], - "path": "x-pack/plugins/streams/public/types.ts", + "path": "x-pack/solutions/observability/plugins/streams/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -63,7 +63,27 @@ "section": "def-common.RouteRepositoryClient", "text": "RouteRepositoryClient" }, - "<{ \"POST /api/streams/{id}/_sample\": ", + "<{ \"POST /api/streams/{id}/schema/fields_simulation\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /api/streams/{id}/schema/fields_simulation\", Zod.ZodObject<{ path: Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>; body: Zod.ZodObject<{ field_definitions: Zod.ZodArray; format: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }, { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }; }, { path: { id: string; }; body: { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }; }>, ", + "StreamsRouteHandlerResources", + ", { status: \"unknown\" | \"success\" | \"failure\"; simulationError: string | null; documentsWithRuntimeFieldsApplied: unknown[] | null; }, undefined>; \"GET /api/streams/{id}/schema/unmapped_fields\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"GET /api/streams/{id}/schema/unmapped_fields\", Zod.ZodObject<{ path: Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; }, { path: { id: string; }; }>, ", + "StreamsRouteHandlerResources", + ", { unmappedFields: string[]; }, undefined>; \"POST /api/streams/{id}/_sample\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -129,11 +149,9 @@ "StreamsRouteHandlerResources", ", { definitions: { id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }[]; trees: ", - "StreamTree", - "[]; }, undefined>; \"DELETE /api/streams/{id}\": ", + "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }[]; }, undefined>; \"DELETE /api/streams/{id}\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -159,7 +177,7 @@ "Condition", "; }, { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }>, \"many\">>; fields: Zod.ZodDefault; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }>, \"many\">>; children: Zod.ZodDefault, \"many\">>; fields: Zod.ZodDefault; format: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }>, \"many\">>; managed: Zod.ZodDefault; children: Zod.ZodDefault, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; }, { children?: { id: string; condition?: ", "Condition", - "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; }; }, { path: { id: string; }; body: { children?: { id: string; condition?: ", "Condition", - "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; }; }>, ", "StreamsRouteHandlerResources", @@ -197,9 +215,9 @@ "StreamsRouteHandlerResources", ", { id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }[]; inheritedFields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; from: string; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, undefined>; \"POST /api/streams/{id}/_fork\": ", + "; }[]; inheritedFields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; from: string; format?: string | undefined; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, undefined>; \"POST /api/streams/{id}/_fork\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -215,7 +233,7 @@ "Condition", "; }, { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }>, \"many\">>; fields: Zod.ZodDefault; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }>, \"many\">>; children: Zod.ZodDefault, \"many\">>; fields: Zod.ZodDefault; format: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }>, \"many\">>; managed: Zod.ZodDefault; children: Zod.ZodDefault, \"many\">>; }, { id: Zod.ZodString; managed: Zod.ZodDefault; unmanaged_elasticsearch_assets: Zod.ZodOptional; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }>, \"many\">>; }>, \"children\">, \"strip\", Zod.ZodTypeAny, { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }>, \"many\">>; }, { id: Zod.ZodString; unmanaged_elasticsearch_assets: Zod.ZodOptional; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }>, \"many\">>; }>, \"children\">, \"strip\", Zod.ZodTypeAny, { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }>; condition: Zod.ZodType<", "Condition", ", Zod.ZodTypeDef, ", "Condition", - ">; }, \"strip\", Zod.ZodTypeAny, { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + ">; }, \"strip\", Zod.ZodTypeAny, { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", - "; }, { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }, { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", - "; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", - "; }; }, { path: { id: string; }; body: { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }; }, { path: { id: string; }; body: { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", @@ -269,11 +287,11 @@ }, "<\"POST /api/streams/_enable\", Zod.ZodObject<{}, \"strip\", Zod.ZodTypeAny, {}, {}>, ", "StreamsRouteHandlerResources", - ", { acknowledged: true; }, undefined>; }, ", + ", { acknowledged: true; message: string; }, undefined>; }, ", "StreamsRepositoryClientOptions", ">" ], - "path": "x-pack/plugins/streams/public/types.ts", + "path": "x-pack/solutions/observability/plugins/streams/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -288,7 +306,7 @@ "Observable", "<{ status: \"unknown\" | \"disabled\" | \"enabled\"; }>" ], - "path": "x-pack/plugins/streams/public/types.ts", + "path": "x-pack/solutions/observability/plugins/streams/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -308,7 +326,7 @@ "tags": [], "label": "ListStreamResponse", "description": [], - "path": "x-pack/plugins/streams/server/lib/streams/stream_crud.ts", + "path": "x-pack/solutions/observability/plugins/streams/server/lib/streams/stream_crud.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -322,11 +340,11 @@ "signature": [ "{ id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }[]" ], - "path": "x-pack/plugins/streams/server/lib/streams/stream_crud.ts", + "path": "x-pack/solutions/observability/plugins/streams/server/lib/streams/stream_crud.ts", "deprecated": false, "trackAdoption": false } @@ -346,7 +364,7 @@ "signature": [ "{}" ], - "path": "x-pack/plugins/streams/common/config.ts", + "path": "x-pack/solutions/observability/plugins/streams/common/config.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -359,7 +377,27 @@ "label": "StreamsRouteRepository", "description": [], "signature": [ - "{ \"POST /api/streams/{id}/_sample\": ", + "{ \"POST /api/streams/{id}/schema/fields_simulation\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /api/streams/{id}/schema/fields_simulation\", Zod.ZodObject<{ path: Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>; body: Zod.ZodObject<{ field_definitions: Zod.ZodArray; format: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }, { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }; }, { path: { id: string; }; body: { field_definitions: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; }; }>, ", + "StreamsRouteHandlerResources", + ", { status: \"unknown\" | \"success\" | \"failure\"; simulationError: string | null; documentsWithRuntimeFieldsApplied: unknown[] | null; }, undefined>; \"GET /api/streams/{id}/schema/unmapped_fields\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"GET /api/streams/{id}/schema/unmapped_fields\", Zod.ZodObject<{ path: Zod.ZodObject<{ id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; }, { id: string; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; }, { path: { id: string; }; }>, ", + "StreamsRouteHandlerResources", + ", { unmappedFields: string[]; }, undefined>; \"POST /api/streams/{id}/_sample\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -425,11 +463,9 @@ "StreamsRouteHandlerResources", ", { definitions: { id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }[]; trees: ", - "StreamTree", - "[]; }, undefined>; \"DELETE /api/streams/{id}\": ", + "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }[]; }, undefined>; \"DELETE /api/streams/{id}\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -455,7 +491,7 @@ "Condition", "; }, { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }>, \"many\">>; fields: Zod.ZodDefault; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }>, \"many\">>; children: Zod.ZodDefault, \"many\">>; fields: Zod.ZodDefault; format: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }>, \"many\">>; managed: Zod.ZodDefault; children: Zod.ZodDefault, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; }, { children?: { id: string; condition?: ", "Condition", - "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; }; }, { path: { id: string; }; body: { children?: { id: string; condition?: ", "Condition", - "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[] | undefined; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; }; }>, ", "StreamsRouteHandlerResources", @@ -493,9 +529,9 @@ "StreamsRouteHandlerResources", ", { id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }[]; inheritedFields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; from: string; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, undefined>; \"POST /api/streams/{id}/_fork\": ", + "; }[]; inheritedFields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; from: string; format?: string | undefined; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, undefined>; \"POST /api/streams/{id}/_fork\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -511,7 +547,7 @@ "Condition", "; }, { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }>, \"many\">>; fields: Zod.ZodDefault; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }>, \"many\">>; children: Zod.ZodDefault, \"many\">>; fields: Zod.ZodDefault; format: Zod.ZodOptional; }, \"strip\", Zod.ZodTypeAny, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }, { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }>, \"many\">>; managed: Zod.ZodDefault; children: Zod.ZodDefault, \"many\">>; }, { id: Zod.ZodString; managed: Zod.ZodDefault; unmanaged_elasticsearch_assets: Zod.ZodOptional; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }>, \"many\">>; }>, \"children\">, \"strip\", Zod.ZodTypeAny, { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }>, \"many\">>; }, { id: Zod.ZodString; unmanaged_elasticsearch_assets: Zod.ZodOptional; id: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }, { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }>, \"many\">>; }>, \"children\">, \"strip\", Zod.ZodTypeAny, { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }, { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }>; condition: Zod.ZodType<", "Condition", ", Zod.ZodTypeDef, ", "Condition", - ">; }, \"strip\", Zod.ZodTypeAny, { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + ">; }, \"strip\", Zod.ZodTypeAny, { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", - "; }, { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }, { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", - "; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }>; }, \"strip\", Zod.ZodTypeAny, { path: { id: string; }; body: { stream: { id: string; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", - "; }; }, { path: { id: string; }; body: { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }; }, { path: { id: string; }; body: { stream: { id: string; fields?: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[] | undefined; managed?: boolean | undefined; processing?: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[] | undefined; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; condition?: ", "Condition", @@ -565,9 +601,9 @@ }, "<\"POST /api/streams/_enable\", Zod.ZodObject<{}, \"strip\", Zod.ZodTypeAny, {}, {}>, ", "StreamsRouteHandlerResources", - ", { acknowledged: true; }, undefined>; }" + ", { acknowledged: true; message: string; }, undefined>; }" ], - "path": "x-pack/plugins/streams/server/routes/index.ts", + "path": "x-pack/solutions/observability/plugins/streams/server/routes/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -581,7 +617,7 @@ "tags": [], "label": "StreamsPluginSetup", "description": [], - "path": "x-pack/plugins/streams/server/plugin.ts", + "path": "x-pack/solutions/observability/plugins/streams/server/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -595,7 +631,7 @@ "tags": [], "label": "StreamsPluginStart", "description": [], - "path": "x-pack/plugins/streams/server/plugin.ts", + "path": "x-pack/solutions/observability/plugins/streams/server/plugin.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -619,11 +655,11 @@ "signature": [ "{ id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", - "; }[]; inheritedFields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; from: string; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }" + "; }[]; inheritedFields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; from: string; format?: string | undefined; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }" ], - "path": "x-pack/plugins/streams/common/types.ts", + "path": "x-pack/solutions/observability/plugins/streams/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -638,11 +674,11 @@ "signature": [ "{ id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }" ], - "path": "x-pack/plugins/streams/common/types.ts", + "path": "x-pack/solutions/observability/plugins/streams/common/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/streams.mdx b/api_docs/streams.mdx index c998504b68e13..5e6925b5dc4c1 100644 --- a/api_docs/streams.mdx +++ b/api_docs/streams.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/streams title: "streams" image: https://source.unsplash.com/400x175/?github description: API docs for the streams plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'streams'] --- import streamsObj from './streams.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/streams-program-team](https://github.com/orgs/elastic/teams/st | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 13 | 0 | 13 | 4 | +| 13 | 0 | 13 | 3 | ## Client diff --git a/api_docs/streams_app.devdocs.json b/api_docs/streams_app.devdocs.json index 12a4d9b1b7d5a..0c7fcf59a750f 100644 --- a/api_docs/streams_app.devdocs.json +++ b/api_docs/streams_app.devdocs.json @@ -14,7 +14,7 @@ "tags": [], "label": "StreamsAppPublicSetup", "description": [], - "path": "x-pack/plugins/streams_app/public/types.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -28,7 +28,7 @@ "tags": [], "label": "StreamsAppPublicStart", "description": [], - "path": "x-pack/plugins/streams_app/public/types.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -50,7 +50,7 @@ "tags": [], "label": "StreamsAppServerSetup", "description": [], - "path": "x-pack/plugins/streams_app/server/types.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -64,7 +64,7 @@ "tags": [], "label": "StreamsAppServerStart", "description": [], - "path": "x-pack/plugins/streams_app/server/types.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -83,7 +83,7 @@ "tags": [], "label": "EntityTypeDefinition", "description": [], - "path": "x-pack/plugins/streams_app/common/index.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -94,7 +94,7 @@ "tags": [], "label": "displayName", "description": [], - "path": "x-pack/plugins/streams_app/common/index.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/common/index.ts", "deprecated": false, "trackAdoption": false } @@ -114,11 +114,11 @@ "signature": [ "EntityBase & { type: \"stream\"; properties: { id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; }" ], - "path": "x-pack/plugins/streams_app/common/index.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -133,11 +133,11 @@ "signature": [ "EntityBase & { type: \"stream\"; properties: { id: string; children: { id: string; condition?: ", "Condition", - "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", + "; }[]; fields: { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; name: string; format?: string | undefined; }[]; managed: boolean; processing: { config: { type: \"grok\"; field: string; patterns: string[]; pattern_definitions?: Record | undefined; } | { type: \"dissect\"; field: string; pattern: string; }; condition?: ", "Condition", "; }[]; unmanaged_elasticsearch_assets?: { id: string; type: \"ingest_pipeline\" | \"data_stream\" | \"index_template\" | \"component_template\"; }[] | undefined; }; }" ], - "path": "x-pack/plugins/streams_app/common/index.ts", + "path": "x-pack/solutions/observability/plugins/streams_app/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/streams_app.mdx b/api_docs/streams_app.mdx index c33f416e0da40..0725fd0371d0f 100644 --- a/api_docs/streams_app.mdx +++ b/api_docs/streams_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/streamsApp title: "streamsApp" image: https://source.unsplash.com/400x175/?github description: API docs for the streamsApp plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'streamsApp'] --- import streamsAppObj from './streams_app.devdocs.json'; diff --git a/api_docs/task_manager.devdocs.json b/api_docs/task_manager.devdocs.json index 88f728716be0e..3d43a6cda1eb4 100644 --- a/api_docs/task_manager.devdocs.json +++ b/api_docs/task_manager.devdocs.json @@ -454,42 +454,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "taskManager", - "id": "def-server.isEphemeralTaskRejectedDueToCapacityError", - "type": "Function", - "tags": [], - "label": "isEphemeralTaskRejectedDueToCapacityError", - "description": [], - "signature": [ - "(error: Error | ", - "EphemeralTaskRejectedDueToCapacityError", - ") => boolean" - ], - "path": "x-pack/plugins/task_manager/server/task_running/errors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "taskManager", - "id": "def-server.isEphemeralTaskRejectedDueToCapacityError.$1", - "type": "CompoundType", - "tags": [], - "label": "error", - "description": [], - "signature": [ - "Error | ", - "EphemeralTaskRejectedDueToCapacityError" - ], - "path": "x-pack/plugins/task_manager/server/task_running/errors.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "taskManager", "id": "def-server.isUnrecoverableError", @@ -1673,23 +1637,6 @@ } ], "misc": [ - { - "parentPluginId": "taskManager", - "id": "def-server.EphemeralTask", - "type": "Type", - "tags": [], - "label": "EphemeralTask", - "description": [ - "\nA task instance that has an id and is ready for storage." - ], - "signature": [ - "{ params: Record; scope?: string[] | undefined; enabled?: boolean | undefined; state: Record; taskType: string; }" - ], - "path": "x-pack/plugins/task_manager/server/task.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "taskManager", "id": "def-server.TaskDefinitionRegistry", @@ -1988,9 +1935,9 @@ "signature": [ "Pick<", "TaskScheduling", - ", \"schedule\" | \"runSoon\" | \"bulkEnable\" | \"ephemeralRunNow\" | \"ensureScheduled\" | \"bulkUpdateSchedules\" | \"bulkDisable\" | \"bulkSchedule\" | \"bulkUpdateState\"> & Pick<", + ", \"schedule\" | \"runSoon\" | \"bulkEnable\" | \"ensureScheduled\" | \"bulkUpdateSchedules\" | \"bulkDisable\" | \"bulkSchedule\" | \"bulkUpdateState\"> & Pick<", "TaskStore", - ", \"get\" | \"aggregate\" | \"fetch\" | \"remove\" | \"bulkRemove\"> & { removeIfExists: (id: string) => Promise; } & { supportsEphemeralTasks: () => boolean; getRegisteredTypes: () => string[]; }" + ", \"get\" | \"aggregate\" | \"fetch\" | \"remove\" | \"bulkRemove\"> & { removeIfExists: (id: string) => Promise; } & { getRegisteredTypes: () => string[]; }" ], "path": "x-pack/plugins/task_manager/server/plugin.ts", "deprecated": false, diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 34fb36b7d6fd0..07b1e61f48a98 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 108 | 0 | 64 | 7 | +| 105 | 0 | 62 | 6 | ## Server diff --git a/api_docs/telemetry.devdocs.json b/api_docs/telemetry.devdocs.json index 4ea397d13220c..72092679afa2c 100644 --- a/api_docs/telemetry.devdocs.json +++ b/api_docs/telemetry.devdocs.json @@ -828,20 +828,20 @@ "path": "x-pack/plugins/fleet/server/telemetry/sender.test.ts" }, { - "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.ts" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.test.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.test.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.ts" }, { "plugin": "synthetics", - "path": "x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.test.ts" + "path": "x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.test.ts" }, { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.test.ts" + "plugin": "synthetics", + "path": "x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.test.ts" } ], "children": [], diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 207ac79533832..e367904a9dd5e 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 627e061f33085..960abecb6f6b3 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 32336fbcf4fd3..f845f140a06ba 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.devdocs.json b/api_docs/threat_intelligence.devdocs.json index 2257a85ac3bcb..57443fe73fb61 100644 --- a/api_docs/threat_intelligence.devdocs.json +++ b/api_docs/threat_intelligence.devdocs.json @@ -15,7 +15,7 @@ "signature": [ "(threatIntelligencePage: \"indicators\") => TILinkItem" ], - "path": "x-pack/plugins/threat_intelligence/public/utils/security_solution_links.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/utils/security_solution_links.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -31,7 +31,7 @@ "signature": [ "\"indicators\"" ], - "path": "x-pack/plugins/threat_intelligence/public/utils/security_solution_links.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/utils/security_solution_links.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -53,7 +53,7 @@ "description": [ "\nMethods exposed from the security solution to the threat intelligence application." ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -69,7 +69,7 @@ "signature": [ "() => React.ComponentType<{ children: React.ReactNode; }>" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -87,7 +87,7 @@ "signature": [ "() => React.ComponentType<{ children: React.ReactNode; }>" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -105,7 +105,7 @@ "signature": [ "LicenseAware" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -121,7 +121,7 @@ "signature": [ "SelectedDataView" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -140,7 +140,7 @@ "AnyAction", ">" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -158,7 +158,7 @@ "UseInvestigateInTimelineProps", ") => () => Promise" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -172,7 +172,7 @@ "signature": [ "UseInvestigateInTimelineProps" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -197,7 +197,7 @@ "text": "Query" } ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -221,7 +221,7 @@ }, "[]" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -244,7 +244,7 @@ "text": "TimeRange" } ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -260,7 +260,7 @@ "signature": [ "React.VoidFunctionComponent" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -307,7 +307,7 @@ "signature": [ "(query: { id: string; loading: boolean; refetch: VoidFunction; }) => void" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -318,7 +318,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -329,7 +329,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -340,7 +340,7 @@ "tags": [], "label": "loading", "description": [], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false }, @@ -354,7 +354,7 @@ "signature": [ "VoidFunction" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -377,7 +377,7 @@ "signature": [ "(query: { id: string; }) => void" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -388,7 +388,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -399,7 +399,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -420,7 +420,7 @@ "signature": [ "Blocking" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false } @@ -434,7 +434,7 @@ "tags": [], "label": "ThreatIntelligencePluginSetup", "description": [], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -447,7 +447,7 @@ "tags": [], "label": "ThreatIntelligencePluginStart", "description": [], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -469,7 +469,7 @@ }, "; }) => React.ReactElement>" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -493,7 +493,7 @@ "signature": [ "\"/threat_intelligence\"" ], - "path": "x-pack/plugins/threat_intelligence/public/constants/navigation.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/constants/navigation.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -510,7 +510,7 @@ "signature": [ "\"threat_intelligence\"" ], - "path": "x-pack/plugins/threat_intelligence/public/types.ts", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/types.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 058f185518266..0236cb9c964c0 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.devdocs.json b/api_docs/timelines.devdocs.json index c404e4317d82e..4f5ced0bc1b6d 100644 --- a/api_docs/timelines.devdocs.json +++ b/api_docs/timelines.devdocs.json @@ -15,7 +15,7 @@ "signature": [ "(arrayIndex: number) => number" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -29,7 +29,7 @@ "signature": [ "number" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -50,7 +50,7 @@ "signature": [ "(element: HTMLElement | null | undefined) => boolean" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -64,7 +64,7 @@ "signature": [ "HTMLElement | null | undefined" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -85,7 +85,7 @@ "signature": [ "({ colindexAttribute, containerElement, ariaColindex, ariaRowindex, rowindexAttribute, }: { colindexAttribute: string; containerElement: Element | null; ariaColindex: number; ariaRowindex: number; rowindexAttribute: string; }) => FocusColumnResult" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -96,7 +96,7 @@ "tags": [], "label": "{\n colindexAttribute,\n containerElement,\n ariaColindex,\n ariaRowindex,\n rowindexAttribute,\n}", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -107,7 +107,7 @@ "tags": [], "label": "colindexAttribute", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -121,7 +121,7 @@ "signature": [ "Element | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -132,7 +132,7 @@ "tags": [], "label": "ariaColindex", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -143,7 +143,7 @@ "tags": [], "label": "ariaRowindex", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -154,7 +154,7 @@ "tags": [], "label": "rowindexAttribute", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -176,7 +176,7 @@ "signature": [ "({ containerElement, tableClassName, }: { containerElement: HTMLElement | null; tableClassName: string; }) => HTMLDivElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -187,7 +187,7 @@ "tags": [], "label": "{\n containerElement,\n tableClassName,\n}", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -201,7 +201,7 @@ "signature": [ "HTMLElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -212,7 +212,7 @@ "tags": [], "label": "tableClassName", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -234,7 +234,7 @@ "signature": [ "({ containerElement, tableClassName, }: { containerElement: HTMLElement | null; tableClassName: string; }) => HTMLDivElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -245,7 +245,7 @@ "tags": [], "label": "{\n containerElement,\n tableClassName,\n}", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -259,7 +259,7 @@ "signature": [ "HTMLElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -270,7 +270,7 @@ "tags": [], "label": "tableClassName", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -290,7 +290,7 @@ "signature": [ "(ariaRowindex: number) => string" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -304,7 +304,7 @@ "signature": [ "number" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -323,7 +323,7 @@ "signature": [ "(ariaRowindex: number) => string" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -337,7 +337,7 @@ "signature": [ "number" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -361,7 +361,7 @@ "; shiftKey: boolean; tableHasFocus: (containerElement: HTMLElement | null) => boolean; tableClassName: string; }) => ", "SkipFocus" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -372,7 +372,7 @@ "tags": [], "label": "{\n containerElement,\n getFocusedCell,\n shiftKey,\n tableHasFocus,\n tableClassName,\n}", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -386,7 +386,7 @@ "signature": [ "HTMLElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -400,7 +400,7 @@ "signature": [ "({ containerElement, tableClassName, }: { containerElement: HTMLElement | null; tableClassName: string; }) => HTMLDivElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -415,7 +415,7 @@ "signature": [ "{ containerElement: HTMLElement | null; tableClassName: string; }" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -428,7 +428,7 @@ "tags": [], "label": "shiftKey", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -442,7 +442,7 @@ "signature": [ "(containerElement: HTMLElement | null) => boolean" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -456,7 +456,7 @@ "signature": [ "HTMLElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -471,7 +471,7 @@ "tags": [], "label": "tableClassName", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -495,7 +495,7 @@ "SkipFocus", "; }) => void" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -506,7 +506,7 @@ "tags": [], "label": "{\n onSkipFocusBackwards,\n onSkipFocusForward,\n skipFocus,\n}", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -520,7 +520,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -536,7 +536,7 @@ "signature": [ "() => void" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -552,7 +552,7 @@ "signature": [ "\"SKIP_FOCUS_BACKWARDS\" | \"SKIP_FOCUS_FORWARD\" | \"SKIP_FOCUS_NOOP\"" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -574,7 +574,7 @@ "signature": [ "(event: React.KeyboardEvent) => boolean" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -588,7 +588,7 @@ "signature": [ "React.KeyboardEvent" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -609,7 +609,7 @@ "signature": [ "(event: React.KeyboardEvent) => boolean" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -623,7 +623,7 @@ "signature": [ "React.KeyboardEvent" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -644,7 +644,7 @@ "signature": [ "(event: React.KeyboardEvent) => boolean" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -658,7 +658,7 @@ "signature": [ "React.KeyboardEvent" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -679,7 +679,7 @@ "signature": [ "(event: React.KeyboardEvent) => boolean" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -693,7 +693,7 @@ "signature": [ "React.KeyboardEvent" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -716,7 +716,7 @@ "OnColumnFocused", "; rowindexAttribute: string; }) => void" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -727,7 +727,7 @@ "tags": [], "label": "{\n colindexAttribute,\n containerElement,\n event,\n maxAriaColindex,\n maxAriaRowindex,\n onColumnFocused,\n rowindexAttribute,\n}", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -738,7 +738,7 @@ "tags": [], "label": "colindexAttribute", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -752,7 +752,7 @@ "signature": [ "HTMLDivElement | null" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -766,7 +766,7 @@ "signature": [ "React.KeyboardEvent" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -777,7 +777,7 @@ "tags": [], "label": "maxAriaColindex", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -788,7 +788,7 @@ "tags": [], "label": "maxAriaRowindex", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false }, @@ -802,7 +802,7 @@ "signature": [ "({ newFocusedColumn, newFocusedColumnAriaColindex, }: { newFocusedColumn: HTMLDivElement | null; newFocusedColumnAriaColindex: number | null; }) => void" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -817,7 +817,7 @@ "signature": [ "{ newFocusedColumn: HTMLDivElement | null; newFocusedColumnAriaColindex: number | null; }" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -830,7 +830,7 @@ "tags": [], "label": "rowindexAttribute", "description": [], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -852,7 +852,7 @@ "signature": [ "(event: React.KeyboardEvent) => void" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -866,7 +866,7 @@ "signature": [ "React.KeyboardEvent" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -895,7 +895,7 @@ " extends ", "HoverActionComponentProps" ], - "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", + "path": "x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -939,7 +939,7 @@ "EuiButtonIconProps", " & { href?: string | undefined; onClick?: React.MouseEventHandler | undefined; } & React.AnchorHTMLAttributes & { buttonRef?: React.Ref | undefined; })> | React.FunctionComponent | undefined" ], - "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", + "path": "x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", "deprecated": false, "trackAdoption": false }, @@ -953,7 +953,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", + "path": "x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", "deprecated": false, "trackAdoption": false }, @@ -982,7 +982,7 @@ }, "[] | undefined" ], - "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", + "path": "x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", "deprecated": false, "trackAdoption": false }, @@ -996,7 +996,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", + "path": "x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", "deprecated": false, "trackAdoption": false }, @@ -1034,7 +1034,7 @@ }, "; }" ], - "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", + "path": "x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx", "deprecated": false, "trackAdoption": false } @@ -1056,7 +1056,7 @@ "signature": [ "\"aria-colindex\"" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1073,7 +1073,7 @@ "signature": [ "\"aria-rowindex\"" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1090,7 +1090,7 @@ "signature": [ "\"data-colindex\"" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1107,7 +1107,7 @@ "signature": [ "\"data-rowindex\"" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1124,7 +1124,7 @@ "signature": [ "1" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1139,7 +1139,7 @@ "signature": [ "({ newFocusedColumn, newFocusedColumnAriaColindex, }: { newFocusedColumn: HTMLDivElement | null; newFocusedColumnAriaColindex: number | null; }) => void" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -1154,7 +1154,7 @@ "signature": [ "{ newFocusedColumn: HTMLDivElement | null; newFocusedColumnAriaColindex: number | null; }" ], - "path": "x-pack/plugins/timelines/common/utils/accessibility/helpers.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts", "deprecated": false, "trackAdoption": false } @@ -1195,7 +1195,7 @@ }, "; }" ], - "path": "x-pack/plugins/timelines/public/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1209,7 +1209,7 @@ "tags": [], "label": "TimelinesUIStart", "description": [], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1226,7 +1226,7 @@ "() => ", "HoverActionsConfig" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": true, "trackAdoption": false, "references": [ @@ -1235,24 +1235,24 @@ "path": "x-pack/plugins/kubernetes_security/public/hooks/use_filter.ts" }, { - "plugin": "osquery", - "path": "x-pack/plugins/osquery/public/timelines/add_to_timeline_button.tsx" + "plugin": "threatIntelligence", + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" }, { "plugin": "threatIntelligence", - "path": "x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" }, { "plugin": "threatIntelligence", - "path": "x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" }, { "plugin": "threatIntelligence", - "path": "x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" + "path": "x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" }, { - "plugin": "threatIntelligence", - "path": "x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx" + "plugin": "osquery", + "path": "x-pack/platform/plugins/shared/osquery/public/timelines/add_to_timeline_button.tsx" } ], "children": [], @@ -1268,7 +1268,7 @@ "signature": [ "() => any" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1288,7 +1288,7 @@ "LoadingPanelProps", ", string | React.JSXElementConstructor>" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1302,7 +1302,7 @@ "signature": [ "LoadingPanelProps" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1324,7 +1324,7 @@ "LastUpdatedAtProps", ", string | React.JSXElementConstructor>" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1338,7 +1338,7 @@ "signature": [ "LastUpdatedAtProps" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1359,7 +1359,7 @@ ") => ", "UseAddToTimeline" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1377,7 +1377,7 @@ "SensorAPI", ") => void" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1397,7 +1397,7 @@ "AnyAction", ">) => void" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1414,7 +1414,7 @@ "AnyAction", ">" ], - "path": "x-pack/plugins/timelines/public/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/public/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1441,7 +1441,7 @@ "tags": [], "label": "TimelinesPluginUI", "description": [], - "path": "x-pack/plugins/timelines/server/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1455,7 +1455,7 @@ "tags": [], "label": "TimelinesPluginStart", "description": [], - "path": "x-pack/plugins/timelines/server/types.ts", + "path": "x-pack/solutions/security/plugins/timelines/server/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -1486,7 +1486,7 @@ }, "[]" ], - "path": "x-pack/plugins/timelines/common/utils/field_formatters.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1501,7 +1501,7 @@ "Fields", "" ], - "path": "x-pack/plugins/timelines/common/utils/field_formatters.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1516,7 +1516,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/utils/field_formatters.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1531,7 +1531,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/utils/field_formatters.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1550,7 +1550,7 @@ "signature": [ "(field: string) => boolean" ], - "path": "x-pack/plugins/timelines/common/utils/field_formatters.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1564,7 +1564,7 @@ "signature": [ "string" ], - "path": "x-pack/plugins/timelines/common/utils/field_formatters.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1583,7 +1583,7 @@ "signature": [ "(value: T | T[] | null | undefined) => T[]" ], - "path": "x-pack/plugins/timelines/common/utils/to_array.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/to_array.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1597,7 +1597,7 @@ "signature": [ "T | T[] | null | undefined" ], - "path": "x-pack/plugins/timelines/common/utils/to_array.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/to_array.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1616,7 +1616,7 @@ "signature": [ "(value: T | T[] | null) => { str: string; isObjectArray?: boolean | undefined; }[]" ], - "path": "x-pack/plugins/timelines/common/utils/to_array.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/to_array.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1630,7 +1630,7 @@ "signature": [ "T | T[] | null" ], - "path": "x-pack/plugins/timelines/common/utils/to_array.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/utils/to_array.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1648,7 +1648,7 @@ "tags": [], "label": "CursorType", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1663,7 +1663,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1678,7 +1678,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false } @@ -1692,7 +1692,7 @@ "tags": [], "label": "DataProvider", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1705,7 +1705,7 @@ "description": [ "Uniquely identifies a data provider" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1718,7 +1718,7 @@ "description": [ "Human readable" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1731,7 +1731,7 @@ "description": [ "\nWhen `false`, a data provider is temporarily disabled, but not removed from\nthe timeline. default: `true`" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1744,7 +1744,7 @@ "description": [ "\nWhen `true`, a data provider is excluding the match, but not removed from\nthe timeline. default: `false`" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1757,7 +1757,7 @@ "description": [ "\nReturns the KQL query who have been added by user" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1779,7 +1779,7 @@ "text": "QueryMatch" } ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1802,7 +1802,7 @@ }, "[]" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1818,7 +1818,7 @@ "signature": [ "\"default\" | \"template\" | undefined" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false } @@ -1836,17 +1836,17 @@ "description": [ "\nThis interface should not be used anymore.\nUse the one from `plugins/security_solution/common/types/timeline`." ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": true, "trackAdoption": false, "references": [ { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx" }, { "plugin": "securitySolution", @@ -1868,7 +1868,7 @@ "signature": [ "DeprecatedRowRendererId" ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1890,7 +1890,7 @@ }, ") => boolean" ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1910,7 +1910,7 @@ "text": "EcsSecurityExtension" } ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1936,7 +1936,7 @@ }, "; isDraggable: boolean; scopeId: string; }) => React.ReactNode" ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1947,7 +1947,7 @@ "tags": [], "label": "{\n contextId,\n data,\n isDraggable,\n scopeId,\n }", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1961,7 +1961,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1981,7 +1981,7 @@ "text": "EcsSecurityExtension" } ], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false }, @@ -1992,7 +1992,7 @@ "tags": [], "label": "isDraggable", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2003,7 +2003,7 @@ "tags": [], "label": "scopeId", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/rows/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts", "deprecated": false, "trackAdoption": false } @@ -2022,7 +2022,7 @@ "tags": [], "label": "EqlFieldsComboBoxOptions", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2037,7 +2037,7 @@ "EuiComboBoxOptionOption", "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2052,7 +2052,7 @@ "EuiComboBoxOptionOption", "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2067,7 +2067,7 @@ "EuiComboBoxOptionOption", "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false } @@ -2081,7 +2081,7 @@ "tags": [], "label": "EqlOptions", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2095,7 +2095,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2109,7 +2109,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2123,7 +2123,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2137,7 +2137,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2151,7 +2151,7 @@ "signature": [ "number | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false } @@ -2165,7 +2165,7 @@ "tags": [], "label": "FieldInfo", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2176,7 +2176,7 @@ "tags": [], "label": "category", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2190,7 +2190,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2204,7 +2204,7 @@ "signature": [ "string | number | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2218,7 +2218,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2229,7 +2229,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2243,7 +2243,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -2275,7 +2275,7 @@ }, ", \"format\">" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2288,7 +2288,7 @@ "description": [ "Where the field belong" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2305,7 +2305,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2322,7 +2322,7 @@ "Maybe", "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2339,7 +2339,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2354,7 +2354,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -2388,7 +2388,7 @@ }, "" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": true, "trackAdoption": false, "references": [ @@ -2435,7 +2435,7 @@ }, "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2449,7 +2449,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2465,7 +2465,7 @@ "MappingRuntimeField", "; }" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false } @@ -2479,7 +2479,7 @@ "tags": [], "label": "Inspect", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2493,7 +2493,7 @@ "signature": [ "string[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false } @@ -2507,7 +2507,7 @@ "tags": [], "label": "LastTimeDetails", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2522,7 +2522,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2537,7 +2537,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2552,7 +2552,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false } @@ -2566,7 +2566,7 @@ "tags": [], "label": "PaginationInputPaginated", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2579,7 +2579,7 @@ "description": [ "The activePage parameter defines the page of results you want to fetch" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2592,7 +2592,7 @@ "description": [ "The cursorStart parameter defines the start of the results to be displayed" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2605,7 +2605,7 @@ "description": [ "The fakePossibleCount parameter determines the total count in order to show 5 additional pages" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2618,7 +2618,7 @@ "description": [ "The querySize parameter is the number of items to be returned" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false } @@ -2632,7 +2632,7 @@ "tags": [], "label": "QueryMatch", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2643,7 +2643,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2657,7 +2657,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2671,7 +2671,7 @@ "signature": [ "string | number | boolean | (string | number | boolean)[]" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2685,7 +2685,7 @@ "signature": [ "string | number | boolean | undefined" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2699,7 +2699,7 @@ "signature": [ "\"includes\" | \":\" | \":*\"" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false } @@ -2723,7 +2723,7 @@ }, "" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2737,7 +2737,7 @@ "signature": [ "Field" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2757,7 +2757,7 @@ "text": "Direction" } ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false } @@ -2771,7 +2771,7 @@ "tags": [], "label": "TimelineEdges", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2791,7 +2791,7 @@ "text": "TimelineItem" } ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2811,7 +2811,7 @@ "text": "CursorType" } ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false } @@ -2845,7 +2845,7 @@ "EqlSearchResponse", ">" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2866,7 +2866,7 @@ }, "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2877,7 +2877,7 @@ "tags": [], "label": "totalCount", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2891,7 +2891,7 @@ "signature": [ "{ activePage: number; querySize: number; }" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2912,7 +2912,7 @@ }, " | null" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false } @@ -2944,7 +2944,7 @@ }, "" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -2958,7 +2958,7 @@ "signature": [ "{ [x: string]: number; }" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2979,7 +2979,7 @@ }, "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -2990,7 +2990,7 @@ "tags": [], "label": "totalCount", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3004,7 +3004,7 @@ "signature": [ "{ activePage: number; querySize: number; }" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3027,7 +3027,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false } @@ -3041,7 +3041,7 @@ "tags": [], "label": "TimelineEventsDetailsItem", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3056,7 +3056,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3070,7 +3070,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3081,7 +3081,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3096,7 +3096,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3110,7 +3110,7 @@ "signature": [ "any" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3121,7 +3121,7 @@ "tags": [], "label": "isObjectArray", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false } @@ -3153,7 +3153,7 @@ }, "" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3176,7 +3176,7 @@ }, "[]> | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3199,7 +3199,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3222,7 +3222,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3237,7 +3237,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts", "deprecated": false, "trackAdoption": false } @@ -3269,7 +3269,7 @@ }, "" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3283,7 +3283,7 @@ "signature": [ "string | null" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3306,7 +3306,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false } @@ -3320,7 +3320,7 @@ "tags": [], "label": "TimelineItem", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3331,7 +3331,7 @@ "tags": [], "label": "_id", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3346,7 +3346,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3367,7 +3367,7 @@ }, "[]" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3387,7 +3387,7 @@ "text": "EcsSecurityExtension" } ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false } @@ -3419,7 +3419,7 @@ }, "" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3430,7 +3430,7 @@ "tags": [], "label": "destinationIpCount", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3453,7 +3453,7 @@ }, "> | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3464,7 +3464,7 @@ "tags": [], "label": "hostCount", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3475,7 +3475,7 @@ "tags": [], "label": "processCount", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3486,7 +3486,7 @@ "tags": [], "label": "sourceIpCount", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3497,7 +3497,7 @@ "tags": [], "label": "userCount", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts", "deprecated": false, "trackAdoption": false } @@ -3511,7 +3511,7 @@ "tags": [], "label": "TimelineNonEcsData", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3522,7 +3522,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3537,7 +3537,7 @@ "Maybe", " | undefined" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts", "deprecated": false, "trackAdoption": false } @@ -3551,7 +3551,7 @@ "tags": [], "label": "TimerangeInput", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3564,7 +3564,7 @@ "description": [ "The interval string to use for last bucket. The format is '{value}{unit}'. For example '5m' would return the metrics for the last 5 minutes of the timespan." ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3577,7 +3577,7 @@ "description": [ "The end of the timerange" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3590,7 +3590,7 @@ "description": [ "The beginning of the timerange" ], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false } @@ -3604,7 +3604,7 @@ "tags": [], "label": "TotalValue", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -3615,7 +3615,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false }, @@ -3626,7 +3626,7 @@ "tags": [], "label": "relation", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false } @@ -3642,7 +3642,7 @@ "tags": [], "label": "Direction", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/common/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3654,7 +3654,7 @@ "tags": [], "label": "LastEventIndexKey", "description": [], - "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3666,7 +3666,7 @@ "tags": [], "label": "TimelineEventsQueries", "description": [], - "path": "x-pack/plugins/timelines/common/api/search_strategy/model/timeline_events_queries.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/timeline_events_queries.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3693,7 +3693,7 @@ }, "; }" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": true, "trackAdoption": false, "references": [ @@ -3730,45 +3730,45 @@ "FieldCategory", "; }" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": true, "trackAdoption": false, "references": [ { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/common/types/header_actions/index.ts" + "path": "x-pack/solutions/security/packages/data_table/common/types/header_actions/index.ts" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/common/types/header_actions/index.ts" + "path": "x-pack/solutions/security/packages/data_table/common/types/header_actions/index.ts" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx" }, { "plugin": "securitySolution", @@ -4092,11 +4092,11 @@ }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/mock/mock_source.ts" + "path": "x-pack/solutions/security/packages/data_table/mock/mock_source.ts" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/mock/mock_source.ts" + "path": "x-pack/solutions/security/packages/data_table/mock/mock_source.ts" } ], "initialIsOpen": false @@ -4143,7 +4143,7 @@ }, " | undefined; type?: string | undefined; }" ], - "path": "x-pack/plugins/timelines/common/types/timeline/actions/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/actions/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4166,7 +4166,7 @@ }, "; }" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4181,7 +4181,7 @@ "signature": [ "\"DELETED_SECURITY_SOLUTION_DATA_VIEW\"" ], - "path": "x-pack/plugins/timelines/common/constants.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/constants.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4249,17 +4249,17 @@ }, "[] | undefined; setFlyoutAlert?: ((alertId: string) => void) | undefined; scopeId: string; truncate?: boolean | undefined; key?: string | undefined; closeCellPopover?: (() => void) | undefined; enableActions?: boolean | undefined; }" ], - "path": "x-pack/plugins/timelines/common/types/timeline/cells/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/cells/index.ts", "deprecated": true, "trackAdoption": false, "references": [ { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx" }, { "plugin": "@kbn/securitysolution-data-table", - "path": "x-pack/packages/security-solution/data_table/components/data_table/index.tsx" + "path": "x-pack/solutions/security/packages/data_table/components/data_table/index.tsx" }, { "plugin": "securitySolution", @@ -4282,7 +4282,7 @@ "signature": [ "\"events\" | \"sessions\"" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4299,7 +4299,7 @@ "signature": [ "\":*\"" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4321,7 +4321,7 @@ "text": "EqlOptions" } ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4341,7 +4341,7 @@ " : ", "IndexFieldsStrategyRequestByIndices" ], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": true, "trackAdoption": false, "references": [ @@ -4384,7 +4384,7 @@ "signature": [ "\":\"" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4401,7 +4401,7 @@ "signature": [ "\"includes\" | \":\" | \":*\"" ], - "path": "x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4424,7 +4424,7 @@ }, "; type?: string | undefined; esTypes?: string[] | undefined; }[]; language: \"eql\"; fieldRequested: string[]; params?: any; id?: string | undefined; size?: number | undefined; indexType?: string | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; timestampField?: string | undefined; defaultIndex?: string[] | undefined; entityType?: \"events\" | \"sessions\" | undefined; runtimeMappings?: Record; id: string; } | undefined; fetch_fields?: string[] | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; filterQuery?: string | Record | { range: Record; } | { query_string: { query: string; analyze_wildcard: boolean; }; } | { match: Record; } | { term: Record; } | { bool: { filter: {}[]; should: {}[]; must: {}[]; must_not: {}[]; }; } | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; pagination?: Zod.objectInputType<{ activePage: Zod.ZodNumber; cursorStart: Zod.ZodOptional; querySize: Zod.ZodNumber; }, Zod.ZodTypeAny, \"passthrough\"> | undefined; eventCategoryField?: string | undefined; tiebreakerField?: string | undefined; runTimeMappings?: Record; id: string; } | undefined; fetch_fields?: string[] | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; }" ], - "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/eql.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/eql.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4455,7 +4455,7 @@ }, ".all; params?: any; id?: string | undefined; indexType?: string | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; defaultIndex?: string[] | undefined; entityType?: \"events\" | \"sessions\" | undefined; runtimeMappings?: Record; id: string; } | undefined; fetch_fields?: string[] | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; filterQuery?: any; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; pagination?: Zod.objectInputType<{ activePage: Zod.ZodNumber; cursorStart: Zod.ZodOptional; querySize: Zod.ZodNumber; }, Zod.ZodTypeAny, \"passthrough\"> | undefined; authFilter?: {} | undefined; excludeEcsData?: boolean | undefined; }" ], - "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/events_all.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_all.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4478,7 +4478,7 @@ }, ".details; params?: any; id?: string | undefined; indexType?: string | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; defaultIndex?: string[] | undefined; entityType?: \"events\" | \"sessions\" | undefined; runtimeMappings?: Record; id: string; } | undefined; fetch_fields?: string[] | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; filterQuery?: string | Record | { range: Record; } | { query_string: { query: string; analyze_wildcard: boolean; }; } | { match: Record; } | { term: Record; } | { bool: { filter: {}[]; should: {}[]; must: {}[]; must_not: {}[]; }; } | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; pagination?: Zod.objectInputType<{ activePage: Zod.ZodNumber; cursorStart: Zod.ZodOptional; querySize: Zod.ZodNumber; }, Zod.ZodTypeAny, \"passthrough\"> | undefined; authFilter?: {} | undefined; }" ], - "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/events_details.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_details.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4509,7 +4509,7 @@ }, "; params?: any; id?: string | undefined; indexType?: string | undefined; defaultIndex?: string[] | undefined; entityType?: \"events\" | \"sessions\" | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; }" ], - "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4532,7 +4532,7 @@ }, ".kpi; params?: any; id?: string | undefined; indexType?: string | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; defaultIndex?: string[] | undefined; entityType?: \"events\" | \"sessions\" | undefined; runtimeMappings?: Record; id: string; } | undefined; fetch_fields?: string[] | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; filterQuery?: string | Record | { range: Record; } | { query_string: { query: string; analyze_wildcard: boolean; }; } | { match: Record; } | { term: Record; } | { bool: { filter: {}[]; should: {}[]; must: {}[]; must_not: {}[]; }; } | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; }" ], - "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/kpi.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/kpi.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -4546,7 +4546,7 @@ "tags": [], "label": "EMPTY_BROWSER_FIELDS", "description": [], - "path": "x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -4562,7 +4562,7 @@ "signature": [ "{ readonly EVENTS: \"events\"; readonly SESSIONS: \"sessions\"; }" ], - "path": "x-pack/plugins/timelines/common/search_strategy/timeline/events/index.ts", + "path": "x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index d3c4eb10322de..df2e2f1771bd2 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 47e11b4c27bff..2bc7ffb4c40ee 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index f6897f079dd4f..4e80891af097f 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.devdocs.json b/api_docs/ui_actions.devdocs.json index 902cbd0c015da..ec4ba804fb8e2 100644 --- a/api_docs/ui_actions.devdocs.json +++ b/api_docs/ui_actions.devdocs.json @@ -772,26 +772,6 @@ { "plugin": "imageEmbeddable", "path": "src/plugins/image_embeddable/public/components/image_embeddable.tsx" - }, - { - "plugin": "embeddable", - "path": "src/plugins/embeddable/public/tests/helpers.ts" - }, - { - "plugin": "embeddable", - "path": "src/plugins/embeddable/public/tests/container.test.ts" - }, - { - "plugin": "embeddable", - "path": "src/plugins/embeddable/public/tests/container.test.ts" - }, - { - "plugin": "embeddable", - "path": "src/plugins/embeddable/public/tests/container.test.ts" - }, - { - "plugin": "embeddable", - "path": "src/plugins/embeddable/public/tests/explicit_input.test.ts" } ], "children": [ diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index b259a3b7ab81a..258e63a827fc0 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 3cadaea195dc2..b4bcfd85c94a3 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index 795a362575f0c..0494caa86209f 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 8c934b6a5263e..c49ed10f8c8bc 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.devdocs.json b/api_docs/unified_search.devdocs.json index 8cd7f76bb914f..7cf8791b9a017 100644 --- a/api_docs/unified_search.devdocs.json +++ b/api_docs/unified_search.devdocs.json @@ -1595,6 +1595,26 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.IUnifiedSearchPluginServices.userProfile", + "type": "Object", + "tags": [], + "label": "userProfile", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-user-profile-browser", + "scope": "public", + "docId": "kibKbnCoreUserProfileBrowserPluginApi", + "section": "def-public.UserProfileService", + "text": "UserProfileService" + } + ], + "path": "src/plugins/unified_search/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "unifiedSearch", "id": "def-public.IUnifiedSearchPluginServices.storage", diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 10bbb6d686cf2..02836cf1c2c00 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 149 | 2 | 112 | 21 | +| 150 | 2 | 113 | 21 | ## Client diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index f6d9d17e126d7..d07f57132ab76 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 149 | 2 | 112 | 21 | +| 150 | 2 | 113 | 21 | ## Client diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index dc8ab141643a6..25b306995145a 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index e8a3ff383b534..6f6d701bf2c7a 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 0dae6d29e8b4d..09f5e854f2847 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.devdocs.json b/api_docs/ux.devdocs.json index 0198d4e41388f..f4b0f58de4ad1 100644 --- a/api_docs/ux.devdocs.json +++ b/api_docs/ux.devdocs.json @@ -17,7 +17,7 @@ "signature": [ "void" ], - "path": "x-pack/plugins/observability_solution/ux/public/plugin.ts", + "path": "x-pack/solutions/observability/plugins/ux/public/plugin.ts", "deprecated": false, "trackAdoption": false, "lifecycle": "start", diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 606ada6a8816d..eacdd459f7cc0 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; -Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin. +Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index fbaea5e2d110d..69d46105d3441 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 05e17b746a628..9bc27d9b75e33 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 91d0b3ba9e2cc..3bf33f708c432 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 51ad1945ad75a..9a360d7e5162d 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 0adee8b9b5585..4ecde92f9fc39 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 37fe584a900b1..3877a34ec217d 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index f59f7e828cdd1..cfc47883b7d50 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index af2b3adaa3d40..743492f04029d 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index a48db75fbdd6e..a9a4668ebf9ff 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index ec33e813e88bf..f019b07aac6f9 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.devdocs.json b/api_docs/visualizations.devdocs.json index 234558c6457ac..5e2ffe587d533 100644 --- a/api_docs/visualizations.devdocs.json +++ b/api_docs/visualizations.devdocs.json @@ -1463,13 +1463,7 @@ "label": "attributeService", "description": [], "signature": [ - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.AttributeService", - "text": "AttributeService" - }, + "AttributeService", "<", "VisualizeSavedObjectAttributes", ", ", @@ -6970,7 +6964,7 @@ "section": "def-public.PublishingSubject", "text": "PublishingSubject" }, - "; lockHoverActions: (lock: boolean) => void; disableTriggers: boolean; savedObjectId: ", + "; lockHoverActions: (lock: boolean) => void; disableTriggers: boolean; filters$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -6978,7 +6972,15 @@ "section": "def-public.PublishingSubject", "text": "PublishingSubject" }, - "; timeRange$: ", + "<", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.Filter", + "text": "Filter" + }, + "[] | undefined>; savedObjectId: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -6986,15 +6988,7 @@ "section": "def-public.PublishingSubject", "text": "PublishingSubject" }, - "<", - { - "pluginId": "@kbn/es-query", - "scope": "common", - "docId": "kibKbnEsQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, - " | undefined>; filters$: ", + "; timeRange$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -7007,10 +7001,10 @@ "pluginId": "@kbn/es-query", "scope": "common", "docId": "kibKbnEsQueryPluginApi", - "section": "def-common.Filter", - "text": "Filter" + "section": "def-common.TimeRange", + "text": "TimeRange" }, - "[] | undefined>; isCompatibleWithUnifiedSearch: (() => boolean) | undefined; query$: ", + " | undefined>; isCompatibleWithUnifiedSearch: (() => boolean) | undefined; query$: ", { "pluginId": "@kbn/presentation-publishing", "scope": "public", @@ -9703,7 +9697,7 @@ "label": "mode", "description": [], "signature": [ - "\"custom\" | \"full\" | \"dataBounds\"" + "\"full\" | \"custom\" | \"dataBounds\"" ], "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, @@ -15616,7 +15610,7 @@ "label": "GaugeCentralMajorMode", "description": [], "signature": [ - "\"none\" | \"custom\" | \"auto\"" + "\"none\" | \"auto\" | \"custom\"" ], "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, @@ -15646,7 +15640,7 @@ "label": "GaugeLabelMajorMode", "description": [], "signature": [ - "\"none\" | \"custom\" | \"auto\"" + "\"none\" | \"auto\" | \"custom\"" ], "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index a8031263a8f9f..4cc1ab4a62e02 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2024-12-10 +date: 2024-12-14 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 871 | 12 | 840 | 20 | +| 871 | 12 | 840 | 21 | ## Client diff --git a/config/serverless.security.yml b/config/serverless.security.yml index b9190df608540..47a67c293565a 100644 --- a/config/serverless.security.yml +++ b/config/serverless.security.yml @@ -10,6 +10,7 @@ xpack.observabilityAIAssistant.enabled: false xpack.search.notebooks.enabled: false xpack.searchPlayground.enabled: false xpack.searchInferenceEndpoints.enabled: false +xpack.inventory.enabled: false ## Fine-tune the security solution feature privileges. Also, refer to `serverless.yml` for the project-agnostic overrides. xpack.features.overrides: diff --git a/dev_docs/key_concepts/api_authorization.mdx b/dev_docs/key_concepts/api_authorization.mdx index cda6ad5de21ce..5615a20d0f4b5 100644 --- a/dev_docs/key_concepts/api_authorization.mdx +++ b/dev_docs/key_concepts/api_authorization.mdx @@ -102,6 +102,38 @@ router.get({ }, handler); ``` +### Configuring operator and superuser privileges +We have two special predefined privilege sets that can be used in security configuration: +1. Operator +```ts +router.get({ + path: '/api/path', + security: { + authz: { + requiredPrivileges: [ReservedPrivilegesSet.operator, ''], + }, + }, + ... +}, handler); +``` +Operator privileges check is enforced only if operator privileges are enabled in the Elasticsearch configuration. +For more information on operator privileges, refer to the [Operator privileges documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/operator-privileges.html). +If operator privileges are disabled, we skip the check for it, so the only privilege checked from the example above is ``. +Operator privileges cannot be used as standalone, it is required to explicitly specify additional privileges in the configuration to ensure that the route is protected even when operator privileges are disabled. + +2. Superuser +```ts +router.get({ + path: '/api/path', + security: { + authz: { + requiredPrivileges: [ReservedPrivilegesSet.superuser], + }, + }, + ... +}, handler); +``` + ### Opting out of authorization for specific routes **Before migration:** ```ts @@ -291,7 +323,7 @@ GET /api/oas?pathStartsWith=/your/api/path ## Migrating from `access` tags to `security` configuration We aim to use the same privileges that are currently defined with tags `access:`. To assist with this migration, we have created eslint rule `no_deprecated_authz_config`, that will automatically convert your `access` tags to the new `security` configuration. -It scans route definitions and converts `access` tags to the new `requiredPriviliges` configuration. +It scans route definitions and converts `access` tags to the new `requiredPrivileges` configuration. Note: The rule is disabled by default to avoid automatic migrations without an oversight. You can perform migrations by running: diff --git a/docs/concepts/data-views.asciidoc b/docs/concepts/data-views.asciidoc index 2a260e611a060..02922b2989762 100644 --- a/docs/concepts/data-views.asciidoc +++ b/docs/concepts/data-views.asciidoc @@ -142,14 +142,14 @@ To match indices starting with `logstash-`, but exclude those starting with `log all clusters having a name starting with `cluster_`: ```ts -`cluster_*:logstash-*,cluster_*:-logstash-old*` +cluster_*:logstash-*,cluster_*:-logstash-old* ``` Excluding a cluster avoids sending any network calls to that cluster. To exclude a cluster with the name `cluster_one`: ```ts -`cluster_*:logstash-*,-cluster_one:*` +cluster_*:logstash-*,-cluster_one:* ``` Once you configure a {data-source} to use the {ccs} syntax, all searches and @@ -182,4 +182,4 @@ for {data-sources} with a high field count that span a large number of indices a list is updated every couple of minutes in typical {kib} usage. Alternatively, use the refresh button on the {data-source} management detail page to get an updated field list. A force reload of {kib} has the same effect. -The field list may be impacted by changes in indices and user permissions. \ No newline at end of file +The field list may be impacted by changes in indices and user permissions. diff --git a/docs/developer/contributing/development-tests.asciidoc b/docs/developer/contributing/development-tests.asciidoc index 81ca46669a828..d4a478040b4f8 100644 --- a/docs/developer/contributing/development-tests.asciidoc +++ b/docs/developer/contributing/development-tests.asciidoc @@ -60,7 +60,7 @@ You can generate code coverage report for a single plugin. [source,bash] ---- -yarn jest --coverage --config src/plugins/console/jest.config.js +yarn jest --coverage --config src/platform/plugins/shared/console/jest.config.js ---- Html report is available in target/kibana-coverage/jest/path/to/plugin diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index 3266b5e836b27..101dcdec07810 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -28,7 +28,7 @@ allowing users to configure their advanced settings, also known as uiSettings within the code. -|{kib-repo}blob/{branch}/src/plugins/ai_assistant_management/selection/README.md[aiAssistantManagementSelection] +|{kib-repo}blob/{branch}/src/platform/plugins/shared/ai_assistant_management/selection/README.md[aiAssistantManagementSelection] |The aiAssistantManagementSelection plugin manages the Ai Assistant management section. @@ -40,7 +40,7 @@ as uiSettings within the code. |The Charts plugin is a way to create easier integration of shared colors, themes, types and other utilities across all Kibana charts and visualizations. -|{kib-repo}blob/{branch}/src/plugins/console/README.md[console] +|{kib-repo}blob/{branch}/src/platform/plugins/shared/console/README.md[console] |Console provides the user with tools for storing and executing requests against Elasticsearch. @@ -83,7 +83,7 @@ and field lists across the various Kibana apps. It's typically used in conjuncti for composing queries. -|{kib-repo}blob/{branch}/src/plugins/dev_tools/README.md[devTools] +|{kib-repo}blob/{branch}/src/platform/plugins/shared/dev_tools/README.md[devTools] |The ui/registry/dev_tools is removed in favor of the devTools plugin which exposes a register method in the setup contract. Registering app works mostly the same as registering apps in core.application.register. Routing will be handled by the id of the dev tool - your dev tool will be mounted when the URL matches /app/dev_tools#/. @@ -110,7 +110,7 @@ This API doesn't support angular, for registering angular dev tools, bootstrap a |Contains a Discover-like table specifically for ES|QL queries: -|{kib-repo}blob/{branch}/src/plugins/es_ui_shared/README.md[esUiShared] +|{kib-repo}blob/{branch}/src/platform/plugins/shared/es_ui_shared/README.md[esUiShared] |This plugin contains reusable code in the form of self-contained modules (or libraries). Each of these modules exports a set of functionality relevant to the domain of the module. @@ -258,7 +258,7 @@ in Kibana, e.g. visualizations. It has the form of a flyout panel. |This plugin adds the Links panel which allows authors to create hard links to navigate on click and bring all context from the source dashboard to the destination dashboard. -|{kib-repo}blob/{branch}/src/plugins/management/README.md[management] +|{kib-repo}blob/{branch}/src/platform/plugins/shared/management/README.md[management] |This plugins contains the "Stack Management" page framework. It offers navigation and an API to link individual management section into it. This plugin does not contain any individual management section itself. @@ -495,7 +495,7 @@ The plugin exposes the static DefaultEditorController class to consume. It was removed, but the plugin was left behind to register no longer used config keys. -|{kib-repo}blob/{branch}/x-pack/plugins/cloud_integrations/cloud_data_migration/README.md[cloudDataMigration] +|{kib-repo}blob/{branch}/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/README.md[cloudDataMigration] |Static migration page where self-managed users can see text/copy about migrating to Elastic Cloud @@ -520,7 +520,7 @@ This plugin no-longer exposes any evaluation APIs. Refer to - "non_recurring": 4, # <2> - "ephemeral": 8 # <3> + "non_recurring": 12, # <2> }, -------------------------------------------------- <1> 88% of executed tasks are recurring tasks -<2> 4% of executed tasks are non-recurring tasks -<3> 8% of executed tasks are ephemeral tasks +<2> 12% of executed tasks are non-recurring tasks You can infer from these stats that the majority of executions consist of recurring tasks at 88%. You can use the `execution.persistence` stats to evaluate the ratio of consumed capacity, but on their own, you should not make assumptions about the sufficiency of the available capacity. @@ -645,7 +641,7 @@ To assess the capacity, you should evaluate these stats against the `load` under } -------------------------------------------------- -You can infer from these stats that it is very unusual for Task Manager to run out of capacity, so the capacity is likely sufficient to handle the amount of non-recurring and ephemeral tasks. +You can infer from these stats that it is very unusual for Task Manager to run out of capacity, so the capacity is likely sufficient to handle the amount of non-recurring tasks. Suppose you have an alternate scenario, where you see the following output under `stats.runtime.value.execution.persistence`: @@ -653,15 +649,13 @@ Suppose you have an alternate scenario, where you see the following output under -------------------------------------------------- { "recurring": 60, # <1> - "non_recurring": 30, # <2> - "ephemeral": 10 # <3> + "non_recurring": 40, # <2> }, -------------------------------------------------- <1> 60% of executed tasks are recurring tasks -<2> 30% of executed tasks are non-recurring tasks -<3> 10% of executed tasks are ephemeral tasks +<2> 40% of executed tasks are non-recurring tasks -You can infer from these stats that even though most executions are recurring tasks, a substantial percentage of executions are non-recurring and ephemeral tasks at 40%. +You can infer from these stats that even though most executions are recurring tasks, a substantial percentage of executions are non-recurring tasks at 40%. Evaluating the `load` under `stats.runtime.value`, you see the following: @@ -678,9 +672,9 @@ Evaluating the `load` under `stats.runtime.value`, you see the following: -------------------------------------------------- You can infer from these stats that it is quite common for this {kib} instance to run out of capacity. -Given the high rate of non-recurring and ephemeral tasks, it would be reasonable to assess that there is insufficient capacity in the {kib} cluster to handle the amount of tasks. +Given the high rate of non-recurring tasks, it would be reasonable to assess that there is insufficient capacity in the {kib} cluster to handle the amount of tasks. -Keep in mind that these stats give you a glimpse at a moment in time, and even though there has been insufficient capacity in recent minutes, this might not be true in other times where fewer non-recurring or ephemeral tasks are used. We recommend tracking these stats over time and identifying the source of these tasks before making sweeping changes to your infrastructure. +Keep in mind that these stats give you a glimpse at a moment in time, and even though there has been insufficient capacity in recent minutes, this might not be true in other times where fewer non-recurring tasks are used. We recommend tracking these stats over time and identifying the source of these tasks before making sweeping changes to your infrastructure. [[task-manager-health-evaluate-the-workload]] ===== Evaluate the Workload diff --git a/docs/user/security/audit-logging.asciidoc b/docs/user/security/audit-logging.asciidoc index ef12f4303c1b4..0c5bee6106f01 100644 --- a/docs/user/security/audit-logging.asciidoc +++ b/docs/user/security/audit-logging.asciidoc @@ -151,6 +151,18 @@ Refer to the corresponding {es} logs for potential write errors. .1+| `product_documentation_create` | `unknown` | User requested to install the product documentation for use in AI Assistants. +.2+| `knowledge_base_entry_create` +| `success` | User has created knowledge base entry [id=x] +| `failure` | Failed attempt to create a knowledge base entry + +.2+| `knowledge_base_entry_update` +| `success` | User has updated knowledge base entry [id=x] +| `failure` | Failed attempt to update a knowledge base entry + +.2+| `knowledge_base_entry_delete` +| `success` | User has deleted knowledge base entry [id=x] +| `failure` | Failed attempt to delete a knowledge base entry + 3+a| ====== Type: change diff --git a/examples/controls_example/public/app/app.tsx b/examples/controls_example/public/app/app.tsx index 9c6df503700b6..9659b0fa47749 100644 --- a/examples/controls_example/public/app/app.tsx +++ b/examples/controls_example/public/app/app.tsx @@ -48,7 +48,7 @@ const App = ({ } return ( - + diff --git a/examples/controls_example/public/app/react_control_example/react_control_example.tsx b/examples/controls_example/public/app/react_control_example/react_control_example.tsx index 7ba409e83c0e3..b6cb97720d79b 100644 --- a/examples/controls_example/public/app/react_control_example/react_control_example.tsx +++ b/examples/controls_example/public/app/react_control_example/react_control_example.tsx @@ -315,10 +315,7 @@ export const ReactControlExample = ({ {JSON.stringify(controlGroupApi?.serializeState(), null, 2)} , - { - theme: core.theme, - i18n: core.i18n, - } + core ) ); }} @@ -374,10 +371,10 @@ export const ReactControlExample = ({ { + onClick={() => { if (controlGroupApi) { saveNotification$.next(); - setControlGroupSerializedState(await controlGroupApi.serializeState()); + setControlGroupSerializedState(controlGroupApi.serializeState()); } }} > diff --git a/examples/discover_customization_examples/public/plugin.tsx b/examples/discover_customization_examples/public/plugin.tsx index 6dc6e8f48da58..2ac642b4f752b 100644 --- a/examples/discover_customization_examples/public/plugin.tsx +++ b/examples/discover_customization_examples/public/plugin.tsx @@ -52,11 +52,11 @@ export class DiscoverCustomizationExamplesPlugin implements Plugin { title: PLUGIN_NAME, visibleIn: [], mount: async (appMountParams) => { - const [_, { discover, data }] = await core.getStartServices(); + const [coreStart, { discover, data }] = await core.getStartServices(); ReactDOM.render( - + diff --git a/examples/embeddable_examples/public/app/app.tsx b/examples/embeddable_examples/public/app/app.tsx index f59169849e9f0..97389830552a8 100644 --- a/examples/embeddable_examples/public/app/app.tsx +++ b/examples/embeddable_examples/public/app/app.tsx @@ -81,7 +81,7 @@ const App = ({ }, [pages]); return ( - + diff --git a/examples/embeddable_examples/public/app/presentation_container_example/page_api.ts b/examples/embeddable_examples/public/app/presentation_container_example/page_api.ts index 59f06847a1538..c08ba7a499b98 100644 --- a/examples/embeddable_examples/public/app/presentation_container_example/page_api.ts +++ b/examples/embeddable_examples/public/app/presentation_container_example/page_api.ts @@ -9,7 +9,6 @@ import { BehaviorSubject, Subject, combineLatest, map, merge } from 'rxjs'; import { v4 as generateId } from 'uuid'; -import { asyncForEach } from '@kbn/std'; import { TimeRange } from '@kbn/es-query'; import { PanelPackage, @@ -146,14 +145,14 @@ export function getPageApi() { }, onSave: async () => { const panelsState: LastSavedState['panelsState'] = []; - await asyncForEach(panels$.value, async ({ id, type }) => { + panels$.value.forEach(({ id, type }) => { try { const childApi = children$.value[id]; if (apiHasSerializableState(childApi)) { panelsState.push({ id, type, - panelState: await childApi.serializeState(), + panelState: childApi.serializeState(), }); } } catch (error) { diff --git a/examples/embeddable_examples/public/app/state_management_example/state_management_example.tsx b/examples/embeddable_examples/public/app/state_management_example/state_management_example.tsx index a3dcd06618155..18ff194769b3d 100644 --- a/examples/embeddable_examples/public/app/state_management_example/state_management_example.tsx +++ b/examples/embeddable_examples/public/app/state_management_example/state_management_example.tsx @@ -21,7 +21,6 @@ import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; import { ViewMode } from '@kbn/presentation-publishing'; import { ReactEmbeddableRenderer } from '@kbn/embeddable-plugin/public'; import { BehaviorSubject, Subject } from 'rxjs'; -import useMountedState from 'react-use/lib/useMountedState'; import { SAVED_BOOK_ID } from '../../react_embeddables/saved_book/constants'; import { BookApi, @@ -32,7 +31,6 @@ import { lastSavedStateSessionStorage } from './last_saved_state'; import { unsavedChangesSessionStorage } from './unsaved_changes'; export const StateManagementExample = ({ uiActions }: { uiActions: UiActionsStart }) => { - const isMounted = useMountedState(); const saveNotification$ = useMemo(() => { return new Subject(); }, []); @@ -123,16 +121,13 @@ export const StateManagementExample = ({ uiActions }: { uiActions: UiActionsStar { + onClick={() => { if (!bookApi) { return; } setIsSaving(true); - const bookSerializedState = await bookApi.serializeState(); - if (!isMounted()) { - return; - } + const bookSerializedState = bookApi.serializeState(); lastSavedStateSessionStorage.save(bookSerializedState); saveNotification$.next(); // signals embeddable unsaved change tracking to update last saved state setHasUnsavedChanges(false); diff --git a/examples/embeddable_examples/public/react_embeddables/data_table/data_table_react_embeddable.tsx b/examples/embeddable_examples/public/react_embeddables/data_table/data_table_react_embeddable.tsx index 54046eb5afa02..0311decf5c3c6 100644 --- a/examples/embeddable_examples/public/react_embeddables/data_table/data_table_react_embeddable.tsx +++ b/examples/embeddable_examples/public/react_embeddables/data_table/data_table_react_embeddable.tsx @@ -99,7 +99,7 @@ export const getDataTableFactory = ( width: 100%; `} > - + { @@ -36,19 +35,17 @@ export const registerCreateSavedBookAction = (uiActions: UiActionsPublicStart, c if (!apiCanAddNewPanel(embeddable)) throw new IncompatibleActionError(); const newPanelStateManager = stateManagerFromAttributes(defaultBookAttributes); - const { addToLibrary } = await openSavedBookEditor(newPanelStateManager, true, core, { - parentApi: embeddable, + const { savedBookId } = await openSavedBookEditor({ + attributesManager: newPanelStateManager, + parent: embeddable, + isCreate: true, + core, }); - const initialState: BookRuntimeState = await (async () => { - const bookAttributes = serializeBookAttributes(newPanelStateManager); - // if we're adding this to the library, we only need to return the by reference state. - if (addToLibrary) { - const savedBookId = await saveBookAttributes(undefined, bookAttributes); - return { savedBookId, ...bookAttributes }; - } - return bookAttributes; - })(); + const bookAttributes = serializeBookAttributes(newPanelStateManager); + const initialState: BookRuntimeState = savedBookId + ? { savedBookId, ...bookAttributes } + : { ...bookAttributes }; embeddable.addNewPanel({ panelType: SAVED_BOOK_ID, diff --git a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_editor.tsx b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_editor.tsx index 8a028eeadd49e..0222e682b7b0d 100644 --- a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_editor.tsx +++ b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_editor.tsx @@ -27,26 +27,32 @@ import { OverlayRef } from '@kbn/core-mount-utils-browser'; import { i18n } from '@kbn/i18n'; import { tracksOverlays } from '@kbn/presentation-containers'; import { - apiHasParentApi, + apiHasInPlaceLibraryTransforms, apiHasUniqueId, useBatchedOptionalPublishingSubjects, } from '@kbn/presentation-publishing'; import { toMountPoint } from '@kbn/react-kibana-mount'; -import React from 'react'; +import React, { useState } from 'react'; import { serializeBookAttributes } from './book_state'; -import { BookAttributesManager } from './types'; +import { BookApi, BookAttributesManager } from './types'; +import { saveBookAttributes } from './saved_book_library'; -export const openSavedBookEditor = ( - attributesManager: BookAttributesManager, - isCreate: boolean, - core: CoreStart, - api: unknown -): Promise<{ addToLibrary: boolean }> => { +export const openSavedBookEditor = ({ + attributesManager, + isCreate, + core, + parent, + api, +}: { + attributesManager: BookAttributesManager; + isCreate: boolean; + core: CoreStart; + parent?: unknown; + api?: BookApi; +}): Promise<{ savedBookId?: string }> => { return new Promise((resolve) => { const closeOverlay = (overlayRef: OverlayRef) => { - if (apiHasParentApi(api) && tracksOverlays(api.parentApi)) { - api.parentApi.clearOverlays(); - } + if (tracksOverlays(parent)) parent.clearOverlays(); overlayRef.close(); }; @@ -54,8 +60,9 @@ export const openSavedBookEditor = ( const overlay = core.overlays.openFlyout( toMountPoint( { // set the state back to the initial state and reject attributesManager.authorName.next(initialState.authorName); @@ -64,19 +71,23 @@ export const openSavedBookEditor = ( attributesManager.numberOfPages.next(initialState.numberOfPages); closeOverlay(overlay); }} - onSubmit={(addToLibrary: boolean) => { + onSubmit={async (addToLibrary: boolean) => { + const savedBookId = addToLibrary + ? await saveBookAttributes( + apiHasInPlaceLibraryTransforms(api) ? api.libraryId$.value : undefined, + serializeBookAttributes(attributesManager) + ) + : undefined; + closeOverlay(overlay); - resolve({ addToLibrary }); + resolve({ savedBookId }); }} />, - { - theme: core.theme, - i18n: core.i18n, - } + core ), { type: isCreate ? 'overlay' : 'push', - size: isCreate ? 'm' : 's', + size: 'm', onClose: () => closeOverlay(overlay), } ); @@ -86,9 +97,7 @@ export const openSavedBookEditor = ( * if our parent needs to know about the overlay, notify it. This allows the parent to close the overlay * when navigating away, or change certain behaviors based on the overlay being open. */ - if (apiHasParentApi(api) && tracksOverlays(api.parentApi)) { - api.parentApi.openOverlay(overlay, overlayOptions); - } + if (tracksOverlays(parent)) parent.openOverlay(overlay, overlayOptions); }); }; @@ -97,19 +106,24 @@ export const SavedBookEditor = ({ isCreate, onSubmit, onCancel, + api, }: { attributesManager: BookAttributesManager; isCreate: boolean; - onSubmit: (addToLibrary: boolean) => void; + onSubmit: (addToLibrary: boolean) => Promise; onCancel: () => void; + api?: BookApi; }) => { - const [addToLibrary, setAddToLibrary] = React.useState(false); - const [authorName, synopsis, bookTitle, numberOfPages] = useBatchedOptionalPublishingSubjects( - attributesManager.authorName, - attributesManager.bookSynopsis, - attributesManager.bookTitle, - attributesManager.numberOfPages - ); + const [libraryId, authorName, synopsis, bookTitle, numberOfPages] = + useBatchedOptionalPublishingSubjects( + api?.libraryId$, + attributesManager.authorName, + attributesManager.bookSynopsis, + attributesManager.bookTitle, + attributesManager.numberOfPages + ); + const [addToLibrary, setAddToLibrary] = useState(Boolean(libraryId)); + const [saving, setSaving] = useState(false); return ( <> @@ -133,6 +147,7 @@ export const SavedBookEditor = ({ })} > attributesManager.authorName.next(e.target.value)} /> @@ -143,6 +158,7 @@ export const SavedBookEditor = ({ })} > attributesManager.bookTitle.next(e.target.value)} /> @@ -153,6 +169,7 @@ export const SavedBookEditor = ({ })} > attributesManager.numberOfPages.next(+e.target.value)} /> @@ -163,6 +180,7 @@ export const SavedBookEditor = ({ })} > attributesManager.bookSynopsis.next(e.target.value)} /> @@ -171,7 +189,7 @@ export const SavedBookEditor = ({ - + {i18n.translate('embeddableExamples.savedBook.editor.cancel', { defaultMessage: 'Discard changes', })} @@ -179,19 +197,25 @@ export const SavedBookEditor = ({ - {isCreate && ( - - setAddToLibrary(!addToLibrary)} - /> - - )} - onSubmit(addToLibrary)} fill> + setAddToLibrary(!addToLibrary)} + /> + + + { + setSaving(true); + onSubmit(addToLibrary); + }} + fill + > {isCreate ? i18n.translate('embeddableExamples.savedBook.editor.create', { defaultMessage: 'Create book', diff --git a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_library.ts b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_library.ts index 3d989debf7092..ef22750d94578 100644 --- a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_library.ts +++ b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_library.ts @@ -23,7 +23,7 @@ export const saveBookAttributes = async ( maybeId?: string, attributes?: BookAttributes ): Promise => { - await new Promise((r) => setTimeout(r, 100)); // simulate save to network. + await new Promise((r) => setTimeout(r, 500)); // simulate save to network. const id = maybeId ?? v4(); storage.set(id, attributes); return id; diff --git a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_react_embeddable.tsx b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_react_embeddable.tsx index 58f0f4de8555c..74cd81cf51bde 100644 --- a/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_react_embeddable.tsx +++ b/examples/embeddable_examples/public/react_embeddables/saved_book/saved_book_react_embeddable.tsx @@ -81,14 +81,22 @@ export const getSavedBookEmbeddableFactory = (core: CoreStart) => { { ...titlesApi, onEdit: async () => { - openSavedBookEditor(bookAttributesManager, false, core, api); + openSavedBookEditor({ + attributesManager: bookAttributesManager, + parent: api.parentApi, + isCreate: false, + core, + api, + }).then((result) => { + savedBookId$.next(result.savedBookId); + }); }, isEditingEnabled: () => true, getTypeDisplayName: () => i18n.translate('embeddableExamples.savedbook.editBook.displayName', { defaultMessage: 'book', }), - serializeState: async () => { + serializeState: () => { if (!Boolean(savedBookId$.value)) { // if this book is currently by value, we serialize the entire state. const bookByValueState: BookByValueSerializedState = { @@ -98,16 +106,11 @@ export const getSavedBookEmbeddableFactory = (core: CoreStart) => { return { rawState: bookByValueState }; } - // if this book is currently by reference, we serialize the reference and write to the external store. + // if this book is currently by reference, we serialize the reference only. const bookByReferenceState: BookByReferenceSerializedState = { savedBookId: savedBookId$.value!, ...serializeTitles(), }; - - await saveBookAttributes( - savedBookId$.value, - serializeBookAttributes(bookAttributesManager) - ); return { rawState: bookByReferenceState }; }, diff --git a/examples/embeddable_examples/tsconfig.json b/examples/embeddable_examples/tsconfig.json index 8f59132f05fbc..d7aa8342de0c1 100644 --- a/examples/embeddable_examples/tsconfig.json +++ b/examples/embeddable_examples/tsconfig.json @@ -40,7 +40,6 @@ "@kbn/kibana-utils-plugin", "@kbn/core-mount-utils-browser", "@kbn/react-kibana-mount", - "@kbn/std", "@kbn/shared-ux-router" ] } diff --git a/examples/esql_ast_inspector/public/components/esql_inspector/components/preview/components/preview_ui/components/from_command/index.tsx b/examples/esql_ast_inspector/public/components/esql_inspector/components/preview/components/preview_ui/components/from_command/index.tsx index 58d22f5767ca6..3c10240eadfe9 100644 --- a/examples/esql_ast_inspector/public/components/esql_inspector/components/preview/components/preview_ui/components/from_command/index.tsx +++ b/examples/esql_ast_inspector/public/components/esql_inspector/components/preview/components/preview_ui/components/from_command/index.tsx @@ -52,7 +52,7 @@ export const FromCommand: React.FC = () => { onClick={() => { const length = from.args.length; const source = Builder.expression.source({ - name: `source${length + 1}`, + index: `source${length + 1}`, sourceType: 'index', }); from.args.push(source); diff --git a/examples/expressions_explorer/public/app.tsx b/examples/expressions_explorer/public/app.tsx index 638767ed72a35..ca7db99f81e97 100644 --- a/examples/expressions_explorer/public/app.tsx +++ b/examples/expressions_explorer/public/app.tsx @@ -24,6 +24,7 @@ import { I18nStart, IUiSettingsClient, ThemeServiceStart, + UserProfileService, } from '@kbn/core/public'; import { ExpressionsStart } from '@kbn/expressions-plugin/public'; import { Start as InspectorStart } from '@kbn/inspector-plugin/public'; @@ -41,6 +42,7 @@ interface Props { inspector: InspectorStart; actions: UiActionsStart; uiSettings: IUiSettingsClient; + userProfile: UserProfileService; settings: SettingsStart; theme: ThemeServiceStart; i18n: I18nStart; @@ -52,15 +54,13 @@ const ExpressionsExplorer = ({ actions, uiSettings, settings, - i18n, - theme, + ...startServices }: Props) => { const { Provider: KibanaReactContextProvider } = createKibanaReactContext({ uiSettings, settings, - theme, + theme: startServices.theme, }); - const startServices = { i18n, theme }; return ( diff --git a/examples/expressions_explorer/public/plugin.tsx b/examples/expressions_explorer/public/plugin.tsx index b0030d1c00aaa..d03008bb16534 100644 --- a/examples/expressions_explorer/public/plugin.tsx +++ b/examples/expressions_explorer/public/plugin.tsx @@ -58,6 +58,7 @@ export class ExpressionsExplorerPlugin implements Plugin, - { - theme: coreStart.theme, - i18n: coreStart.i18n, - } + coreStart ) ); }); diff --git a/examples/portable_dashboards_example/public/app.tsx b/examples/portable_dashboards_example/public/app.tsx index c68b612c31193..04a42de836904 100644 --- a/examples/portable_dashboards_example/public/app.tsx +++ b/examples/portable_dashboards_example/public/app.tsx @@ -56,7 +56,7 @@ const PortableDashboardsDemos = ({ history: AppMountParameters['history']; }) => { return ( - + diff --git a/examples/resizable_layout_examples/public/application.tsx b/examples/resizable_layout_examples/public/application.tsx index 7637cf2a79c66..90065dc3f704d 100644 --- a/examples/resizable_layout_examples/public/application.tsx +++ b/examples/resizable_layout_examples/public/application.tsx @@ -8,7 +8,7 @@ */ import { KibanaThemeProvider } from '@kbn/react-kibana-context-theme'; -import type { AppMountParameters } from '@kbn/core/public'; +import type { AppMountParameters, CoreStart } from '@kbn/core/public'; import { I18nProvider } from '@kbn/i18n-react'; import React, { ReactNode, useState } from 'react'; import ReactDOM from 'react-dom'; @@ -98,10 +98,10 @@ const ResizableSection = ({ ); }; -export const renderApp = ({ element, theme$ }: AppMountParameters) => { +export const renderApp = (coreStart: CoreStart, { element }: AppMountParameters) => { ReactDOM.render( - +
{ + const [coreStart] = await core.getStartServices(); // Load application bundle const { renderApp } = await import('./application'); // Render the application - return renderApp(params); + return renderApp(coreStart, params); }, }); diff --git a/examples/search_examples/public/search/app.tsx b/examples/search_examples/public/search/app.tsx index 6639d446e80ec..c1ffceb561fe4 100644 --- a/examples/search_examples/public/search/app.tsx +++ b/examples/search_examples/public/search/app.tsx @@ -43,7 +43,10 @@ import { PLUGIN_ID, PLUGIN_NAME, SERVER_SEARCH_ROUTE_PATH } from '../../common'; import { IMyStrategyResponse } from '../../common/types'; interface SearchExamplesAppDeps - extends Pick { + extends Pick< + CoreStart, + 'notifications' | 'http' | 'analytics' | 'i18n' | 'theme' | 'userProfile' + > { navigation: NavigationPublicPluginStart; data: DataPublicPluginStart; unifiedSearch: UnifiedSearchPublicPluginStart; @@ -230,13 +233,8 @@ export const SearchExamplesApp = ({ ); notifications.toasts.addSuccess( - { - title: 'Query result', - text: toMountPoint(message, startServices), - }, - { - toastLifeTimeMs: 300000, - } + { title: 'Query result', text: toMountPoint(message, startServices) }, + { toastLifeTimeMs: 300000 } ); if (res.warning) { notifications.toasts.addWarning({ diff --git a/examples/search_examples/public/search_sessions/app.tsx b/examples/search_examples/public/search_sessions/app.tsx index 5fcb0e326c8b8..aca66a3953524 100644 --- a/examples/search_examples/public/search_sessions/app.tsx +++ b/examples/search_examples/public/search_sessions/app.tsx @@ -56,6 +56,7 @@ interface SearchSessionsExampleAppDeps { analytics: CoreStart['analytics']; i18n: CoreStart['i18n']; theme: CoreStart['theme']; + userProfile: CoreStart['userProfile']; navigation: NavigationPublicPluginStart; data: DataPublicPluginStart; unifiedSearch: UnifiedSearchPublicPluginStart; @@ -674,6 +675,7 @@ function doSearch( analytics: CoreStart['analytics']; i18n: CoreStart['i18n']; theme: CoreStart['theme']; + userProfile: CoreStart['userProfile']; } ): Promise<{ request: IEsSearchRequest; response: IEsSearchResponse; tookMs?: number }> { if (!dataView) return Promise.reject('Select a data view'); diff --git a/examples/unified_field_list_examples/public/application.tsx b/examples/unified_field_list_examples/public/application.tsx index 6cbdc8242b6be..fa1a936d66893 100644 --- a/examples/unified_field_list_examples/public/application.tsx +++ b/examples/unified_field_list_examples/public/application.tsx @@ -18,11 +18,11 @@ import { UnifiedFieldListExampleApp } from './example_app'; export const renderApp = ( core: CoreStart, deps: AppPluginStartDependencies, - { element, theme$ }: AppMountParameters + { element }: AppMountParameters ) => { ReactDOM.render( - + { + const { euiTheme } = useEuiTheme(); const userProfile: UserProfile<{ avatar: UserProfileAvatarData }> = { uid: 'u_J41Oh6L9ki-Vo2tOogS8WRTENzhHurGtRc87NgEAlkc_0', enabled: true, @@ -24,7 +25,7 @@ export const AvatarDemo: FunctionComponent = () => { }, data: { avatar: { - color: '#09e8ca', + color: euiTheme.colors.vis.euiColorVis1, initials: 'DN', imageUrl: 'https://source.unsplash.com/64x64/?cat', }, diff --git a/examples/user_profile_examples/public/tooltip_demo.tsx b/examples/user_profile_examples/public/tooltip_demo.tsx index 1c356be4df20d..bb99bfa5bb525 100644 --- a/examples/user_profile_examples/public/tooltip_demo.tsx +++ b/examples/user_profile_examples/public/tooltip_demo.tsx @@ -10,10 +10,11 @@ import React, { FunctionComponent } from 'react'; import { UserAvatarTip, UserToolTip } from '@kbn/user-profile-components'; import type { UserProfile, UserProfileAvatarData } from '@kbn/user-profile-components'; -import { EuiCommentList, EuiComment } from '@elastic/eui'; +import { EuiCommentList, EuiComment, useEuiTheme } from '@elastic/eui'; import { PanelWithCodeBlock } from './panel_with_code_block'; export const ToolTipDemo: FunctionComponent = () => { + const { euiTheme } = useEuiTheme(); const userProfile: UserProfile<{ avatar: UserProfileAvatarData }> = { uid: 'u_9xDEQqUqoYCnFnPPLq5mIRHKL8gBTo_NiKgOnd5gGk0_0', enabled: true, @@ -24,7 +25,7 @@ export const ToolTipDemo: FunctionComponent = () => { }, data: { avatar: { - color: '#09e8ca', + color: euiTheme.colors.vis.euiColorVis1, initials: 'WD', imageUrl: 'https://source.unsplash.com/64x64/?dingo', }, diff --git a/kbn_pm/src/commands/watch_command.mjs b/kbn_pm/src/commands/watch_command.mjs index c9e12620d9107..9a98b5c128102 100644 --- a/kbn_pm/src/commands/watch_command.mjs +++ b/kbn_pm/src/commands/watch_command.mjs @@ -27,6 +27,7 @@ export const command = { async run({ args, log }) { await Bazel.watch(log, { offline: args.getBooleanValue('offline') ?? true, + reactVersion: process.env.REACT_18 ? '18' : '17', }); }, }; diff --git a/kbn_pm/src/lib/bazel.mjs b/kbn_pm/src/lib/bazel.mjs index 53a1c87f164c2..f3a0e287cf3fd 100644 --- a/kbn_pm/src/lib/bazel.mjs +++ b/kbn_pm/src/lib/bazel.mjs @@ -83,7 +83,7 @@ async function runBazel(log, inputArgs, opts = undefined) { /** * * @param {import('./log.mjs').Log} log - * @param {{ offline: boolean } | undefined} opts + * @param {{ offline: boolean, reactVersion?: string } | undefined} opts */ export async function watch(log, opts = undefined) { const ibazel = (await getBazelRunner()).runIBazel; @@ -97,10 +97,12 @@ export async function watch(log, opts = undefined) { ...BAZEL_TARGETS, '--show_result=1', ...(opts?.offline ? ['--config=offline'] : []), + `--define=REACT_18=${opts?.reactVersion === '18' ? 'true' : 'false'}`, ]; log.debug(`> ibazel ${args.join(' ')}`); await ibazel(args, { cwd: REPO_ROOT, + env: { ...process.env, REACT_18: opts?.reactVersion === '18' ? 'true' : 'false' }, logPrefix: Color.info('[ibazel]'), onErrorExit(code, output) { throwBazelError(log, 'ibazel', code, output); diff --git a/oas_docs/output/kibana.serverless.yaml b/oas_docs/output/kibana.serverless.yaml index 5d4725f0b2e24..2a942bc85c3bc 100644 --- a/oas_docs/output/kibana.serverless.yaml +++ b/oas_docs/output/kibana.serverless.yaml @@ -114,7 +114,12 @@ tags: - description: Manage and interact with Security Assistant resources. name: Security AI Assistant API x-displayName: Security AI assistant - - description: You can create rules that automatically turn events and external alerts sent to Elastic Security into detection alerts. These alerts are displayed on the Detections page. + - description: | + Use the detections APIs to create and manage detection rules. Detection rules search events and external alerts sent to Elastic Security and generate detection alerts from any hits. Alerts are displayed on the **Alerts** page and can be assigned and triaged, using the alert status to mark them as open, closed, or acknowledged. + > warn + > If the API key used for authorization has different privileges than the key that created or most recently updated a rule, the rule behavior might change. + + > If the API key that created a rule is deleted, or the user that created the rule becomes inactive, the rule will stop running. name: Security Detections API x-displayName: Security detections - description: Endpoint Exceptions API allows you to manage detection rule endpoint exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met. @@ -126,10 +131,67 @@ tags: - description: '' name: Security Entity Analytics API x-displayName: Security entity analytics - - description: Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met. + - description: | + Exceptions are associated with detection and endpoint rules, and are used to prevent a rule from generating an alert from incoming events, even when the rule's other criteria are met. They can help reduce the number of false positives and prevent trusted processes and network activity from generating unnecessary alerts. + + Exceptions are made up of: + + * **Exception containers**: A container for related exceptions. Generally, a single exception container contains all the exception items relevant for a subset of rules. For example, a container can be used to group together network-related exceptions that are relevant for a large number of network rules. The container can then be associated with all the relevant rules. + * **Exception items**: The query (fields, values, and logic) used to prevent rules from generating alerts. When an exception item's query evaluates to `true`, the rule does not generate an alert. + + For detection rules, you can also use lists to define rule exceptions. A list holds multiple values of the same Elasticsearch data type, such as IP addresses. These values are used to determine when an exception prevents an alert from being generated. + > info + > You cannot use lists with endpoint rule exceptions. + + > info + > Only exception containers can be associated with rules. You cannot directly associate an exception item or a list container with a rule. To use list exceptions, create an exception item that references the relevant list container. + + ## Exceptions requirements + + Before you can start working with exceptions that use value lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. For a complete list of requirements, refer to [Enable and access detections](https://www.elastic.co/guide/en/serverless/current/security-detections-requirements.html#enable-detections-ui). name: Security Exceptions API x-displayName: Security exceptions - - description: Lists API allows you to manage lists of keywords, IPs or IP ranges items. + - description: | + Lists can be used with detection rule exceptions to define values that prevent a rule from generating alerts. + + Lists are made up of: + + * **List containers**: A container for values of the same Elasticsearch data type. The following data types can be used: + * `boolean` + * `byte` + * `date` + * `date_nanos` + * `date_range` + * `double` + * `double_range` + * `float` + * `float_range` + * `half_float` + * `integer` + * `integer_range` + * `ip` + * `ip_range` + * `keyword` + * `long` + * `long_range` + * `short` + * `text` + * **List items**: The values used to determine whether the exception prevents an alert from being generated. + + All list items in the same list container must be of the same data type, and each item defines a single value. For example, an IP list container named `internal-ip-addresses-southport` contains five items, where each item defines one internal IP address: + 1. `192.168.1.1` + 2. `192.168.1.3` + 3. `192.168.1.18` + 4. `192.168.1.12` + 5. `192.168.1.7` + + To use these IP addresses as values for defining rule exceptions, use the Security exceptions API to [create an exception list item](../operation/operation-createexceptionlistitem) that references the `internal-ip-addresses-southport` list. + > info + > Lists cannot be added directly to rules, nor do they define the operators used to determine when exceptions are applied (`is in list`, `is not in list`). Use an exception item to define the operator and associate it with an [exception container](../operation/operation-createexceptionlist). You can then add the exception container to a rule's `exceptions_list` object. + + ## Lists requirements + + Before you can start using lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. Refer to [Enable and access detections](https://www.elastic.co/guide/en/serverless/current/security-detections-requirements.html#enable-detections-ui) for a complete list of requirements. name: Security Lists API x-displayName: Security lists - description: Run live queries, manage packs and saved queries. @@ -33483,6 +33545,58 @@ paths: tags: - Security Entity Analytics API x-beta: true + /api/risk_score/engine/saved_object/configure: + patch: + description: Configuring the Risk Engine Saved Object + operationId: ConfigureRiskEngineSavedObject + requestBody: + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + type: object + properties: + exclude_alert_statuses: + items: + type: string + type: array + exclude_alert_tags: + items: + type: string + type: array + range: + type: object + properties: + end: + type: string + start: + type: string + required: true + responses: + '200': + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + type: object + properties: + risk_engine_saved_object_configured: + type: boolean + description: Successful response + '400': + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + $ref: '#/components/schemas/Security_Entity_Analytics_API_TaskManagerUnavailableResponse' + description: Task manager is unavailable + default: + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + $ref: '#/components/schemas/Security_Entity_Analytics_API_ConfigureRiskEngineSavedObjectErrorResponse' + description: Unexpected error + summary: Configure the Risk Engine Saved Object + tags: + - Security Entity Analytics API + x-beta: true /api/risk_score/engine/schedule_now: post: description: Schedule the risk scoring engine to run as soon as possible. You can use this to recalculate entity risk scores after updating their asset criticality. @@ -46925,6 +47039,27 @@ components: required: - cleanup_successful - errors + Security_Entity_Analytics_API_ConfigureRiskEngineSavedObjectErrorResponse: + type: object + properties: + errors: + items: + type: object + properties: + error: + type: string + seq: + type: integer + required: + - seq + - error + type: array + risk_engine_saved_object_configured: + example: false + type: boolean + required: + - risk_engine_saved_object_configured + - errors Security_Entity_Analytics_API_CreateAssetCriticalityRecord: allOf: - $ref: '#/components/schemas/Security_Entity_Analytics_API_AssetCriticalityRecordIdParts' diff --git a/oas_docs/output/kibana.yaml b/oas_docs/output/kibana.yaml index b8f8fa29e84ee..9945bce1322a3 100644 --- a/oas_docs/output/kibana.yaml +++ b/oas_docs/output/kibana.yaml @@ -130,7 +130,12 @@ tags: - description: Manage and interact with Security Assistant resources. name: Security AI Assistant API x-displayName: Security AI assistant - - description: You can create rules that automatically turn events and external alerts sent to Elastic Security into detection alerts. These alerts are displayed on the Detections page. + - description: | + Use the detections APIs to create and manage detection rules. Detection rules search events and external alerts sent to Elastic Security and generate detection alerts from any hits. Alerts are displayed on the **Alerts** page and can be assigned and triaged, using the alert status to mark them as open, closed, or acknowledged. + > warn + > If the API key used for authorization has different privileges than the key that created or most recently updated a rule, the rule behavior might change. + + > If the API key that created a rule is deleted, or the user that created the rule becomes inactive, the rule will stop running. name: Security Detections API x-displayName: Security detections - description: Endpoint Exceptions API allows you to manage detection rule endpoint exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met. @@ -142,10 +147,67 @@ tags: - description: '' name: Security Entity Analytics API x-displayName: Security entity analytics - - description: Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met. + - description: | + Exceptions are associated with detection and endpoint rules, and are used to prevent a rule from generating an alert from incoming events, even when the rule's other criteria are met. They can help reduce the number of false positives and prevent trusted processes and network activity from generating unnecessary alerts. + + Exceptions are made up of: + + * **Exception containers**: A container for related exceptions. Generally, a single exception container contains all the exception items relevant for a subset of rules. For example, a container can be used to group together network-related exceptions that are relevant for a large number of network rules. The container can then be associated with all the relevant rules. + * **Exception items**: The query (fields, values, and logic) used to prevent rules from generating alerts. When an exception item's query evaluates to `true`, the rule does not generate an alert. + + For detection rules, you can also use lists to define rule exceptions. A list holds multiple values of the same Elasticsearch data type, such as IP addresses. These values are used to determine when an exception prevents an alert from being generated. + > info + > You cannot use lists with endpoint rule exceptions. + + > info + > Only exception containers can be associated with rules. You cannot directly associate an exception item or a list container with a rule. To use list exceptions, create an exception item that references the relevant list container. + + ## Exceptions requirements + + Before you can start working with exceptions that use value lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. For a complete list of requirements, refer to [Enable and access detections](https://www.elastic.co/guide/en/security/current/detections-permissions-section.html#enable-detections-ui). name: Security Exceptions API x-displayName: Security exceptions - - description: Lists API allows you to manage lists of keywords, IPs or IP ranges items. + - description: | + Lists can be used with detection rule exceptions to define values that prevent a rule from generating alerts. + + Lists are made up of: + + * **List containers**: A container for values of the same Elasticsearch data type. The following data types can be used: + * `boolean` + * `byte` + * `date` + * `date_nanos` + * `date_range` + * `double` + * `double_range` + * `float` + * `float_range` + * `half_float` + * `integer` + * `integer_range` + * `ip` + * `ip_range` + * `keyword` + * `long` + * `long_range` + * `short` + * `text` + * **List items**: The values used to determine whether the exception prevents an alert from being generated. + + All list items in the same list container must be of the same data type, and each item defines a single value. For example, an IP list container named `internal-ip-addresses-southport` contains five items, where each item defines one internal IP address: + 1. `192.168.1.1` + 2. `192.168.1.3` + 3. `192.168.1.18` + 4. `192.168.1.12` + 5. `192.168.1.7` + + To use these IP addresses as values for defining rule exceptions, use the Security exceptions API to [create an exception list item](../operation/operation-createexceptionlistitem) that references the `internal-ip-addresses-southport` list. + > info + > Lists cannot be added directly to rules, nor do they define the operators used to determine when exceptions are applied (`is in list`, `is not in list`). Use an exception item to define the operator and associate it with an [exception container](../operation/operation-createexceptionlist). You can then add the exception container to a rule's `exceptions_list` object. + + ## Lists requirements + + Before you can start using lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. Refer to [Enable and access detections](https://www.elastic.co/guide/en/security/current/detections-permissions-section.html#enable-detections-ui) for a complete list of requirements. name: Security Lists API x-displayName: Security lists - description: Run live queries, manage packs and saved queries. @@ -36208,6 +36270,57 @@ paths: summary: Cleanup the Risk Engine tags: - Security Entity Analytics API + /api/risk_score/engine/saved_object/configure: + patch: + description: Configuring the Risk Engine Saved Object + operationId: ConfigureRiskEngineSavedObject + requestBody: + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + type: object + properties: + exclude_alert_statuses: + items: + type: string + type: array + exclude_alert_tags: + items: + type: string + type: array + range: + type: object + properties: + end: + type: string + start: + type: string + required: true + responses: + '200': + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + type: object + properties: + risk_engine_saved_object_configured: + type: boolean + description: Successful response + '400': + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + $ref: '#/components/schemas/Security_Entity_Analytics_API_TaskManagerUnavailableResponse' + description: Task manager is unavailable + default: + content: + application/json; Elastic-Api-Version=2023-10-31: + schema: + $ref: '#/components/schemas/Security_Entity_Analytics_API_ConfigureRiskEngineSavedObjectErrorResponse' + description: Unexpected error + summary: Configure the Risk Engine Saved Object + tags: + - Security Entity Analytics API /api/risk_score/engine/schedule_now: post: description: Schedule the risk scoring engine to run as soon as possible. You can use this to recalculate entity risk scores after updating their asset criticality. @@ -54610,6 +54723,27 @@ components: required: - cleanup_successful - errors + Security_Entity_Analytics_API_ConfigureRiskEngineSavedObjectErrorResponse: + type: object + properties: + errors: + items: + type: object + properties: + error: + type: string + seq: + type: integer + required: + - seq + - error + type: array + risk_engine_saved_object_configured: + example: false + type: boolean + required: + - risk_engine_saved_object_configured + - errors Security_Entity_Analytics_API_CreateAssetCriticalityRecord: allOf: - $ref: '#/components/schemas/Security_Entity_Analytics_API_AssetCriticalityRecordIdParts' diff --git a/oas_docs/overlays/alerting.overlays.yaml b/oas_docs/overlays/alerting.overlays.yaml index c4cc25b685783..f6920e662e9e3 100644 --- a/oas_docs/overlays/alerting.overlays.yaml +++ b/oas_docs/overlays/alerting.overlays.yaml @@ -113,9 +113,9 @@ actions: # SLO burn rate (slo.rules.burnRate) - $ref: '../../x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/docs/params_property_slo_burn_rate.yaml' # Synthetics uptime TLS rule (xpack.uptime.alerts.tls) - - $ref: '../../x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_uptime_tls.yaml' + - $ref: '../../x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_uptime_tls.yaml' # Uptime monitor status rule (xpack.uptime.alerts.monitorStatus) - - $ref: '../../x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_monitor_status.yaml' + - $ref: '../../x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_monitor_status.yaml' # TBD # Anomaly detection alert rule (xpack.ml.anomaly_detection_alert) # Anomaly detection jobs health rule (xpack.ml.anomaly_detection_jobs_health) diff --git a/oas_docs/scripts/merge_ess_oas.js b/oas_docs/scripts/merge_ess_oas.js index b9882b3dd49fc..c44a6669ca8bc 100644 --- a/oas_docs/scripts/merge_ess_oas.js +++ b/oas_docs/scripts/merge_ess_oas.js @@ -30,8 +30,8 @@ const { REPO_ROOT } = require('@kbn/repo-info'); `${REPO_ROOT}/packages/kbn-securitysolution-lists-common/docs/openapi/ess/*.schema.yaml`, `${REPO_ROOT}/packages/kbn-securitysolution-exceptions-common/docs/openapi/ess/*.schema.yaml`, `${REPO_ROOT}/packages/kbn-securitysolution-endpoint-exceptions-common/docs/openapi/ess/*.schema.yaml`, - `${REPO_ROOT}/x-pack/packages/kbn-elastic-assistant-common/docs/openapi/ess/*.schema.yaml`, - `${REPO_ROOT}/x-pack/plugins/osquery/docs/openapi/ess/*.schema.yaml`, + `${REPO_ROOT}/x-pack/platform/packages/shared/kbn-elastic-assistant-common/docs/openapi/ess/*.schema.yaml`, + `${REPO_ROOT}/x-pack/platform/plugins/shared/osquery/docs/openapi/ess/*.schema.yaml`, ], outputFilePath: `${REPO_ROOT}/oas_docs/output/kibana.yaml`, options: { diff --git a/oas_docs/scripts/merge_serverless_oas.js b/oas_docs/scripts/merge_serverless_oas.js index 7dcfa340eaf09..bc466a289bdd5 100644 --- a/oas_docs/scripts/merge_serverless_oas.js +++ b/oas_docs/scripts/merge_serverless_oas.js @@ -28,8 +28,8 @@ const { REPO_ROOT } = require('@kbn/repo-info'); `${REPO_ROOT}/packages/kbn-securitysolution-lists-common/docs/openapi/serverless/*.schema.yaml`, `${REPO_ROOT}/packages/kbn-securitysolution-exceptions-common/docs/openapi/serverless/*.schema.yaml`, `${REPO_ROOT}/packages/kbn-securitysolution-endpoint-exceptions-common/docs/openapi/serverless/*.schema.yaml`, - `${REPO_ROOT}/x-pack/packages/kbn-elastic-assistant-common/docs/openapi/serverless/*.schema.yaml`, - `${REPO_ROOT}/x-pack/plugins/osquery/docs/openapi/serverless/*.schema.yaml`, + `${REPO_ROOT}/x-pack/platform/packages/shared/kbn-elastic-assistant-common/docs/openapi/serverless/*.schema.yaml`, + `${REPO_ROOT}/x-pack/platform/plugins/shared/osquery/docs/openapi/serverless/*.schema.yaml`, ], outputFilePath: `${REPO_ROOT}/oas_docs/output/kibana.serverless.yaml`, options: { diff --git a/package.json b/package.json index a5687c0ae3729..ebc74c2bb03d6 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,7 @@ "@elastic/datemath": "5.0.3", "@elastic/ebt": "^1.1.1", "@elastic/ecs": "^8.11.1", - "@elastic/elasticsearch": "^8.15.2", + "@elastic/elasticsearch": "^8.16.0", "@elastic/ems-client": "8.5.3", "@elastic/eui": "98.1.0-borealis.0", "@elastic/eui-theme-borealis": "0.0.4", @@ -159,8 +159,9 @@ "@kbn/actions-types": "link:packages/kbn-actions-types", "@kbn/advanced-settings-plugin": "link:src/plugins/advanced_settings", "@kbn/ai-assistant": "link:x-pack/packages/kbn-ai-assistant", - "@kbn/ai-assistant-common": "link:x-pack/packages/kbn-ai-assistant-common", - "@kbn/ai-assistant-management-plugin": "link:src/plugins/ai_assistant_management/selection", + "@kbn/ai-assistant-common": "link:x-pack/platform/packages/shared/ai-assistant/common", + "@kbn/ai-assistant-icon": "link:x-pack/platform/packages/shared/ai-assistant/icon", + "@kbn/ai-assistant-management-plugin": "link:src/platform/plugins/shared/ai_assistant_management/selection", "@kbn/aiops-change-point-detection": "link:x-pack/platform/packages/private/ml/aiops_change_point_detection", "@kbn/aiops-common": "link:x-pack/platform/packages/shared/ml/aiops_common", "@kbn/aiops-components": "link:x-pack/platform/packages/private/ml/aiops_components", @@ -193,7 +194,7 @@ "@kbn/application-usage-test-plugin": "link:x-pack/test/usage_collection/plugins/application_usage_test", "@kbn/asset-inventory-plugin": "link:x-pack/plugins/asset_inventory", "@kbn/audit-log-plugin": "link:x-pack/test/security_api_integration/plugins/audit_log", - "@kbn/avc-banner": "link:packages/kbn-avc-banner", + "@kbn/avc-banner": "link:src/platform/packages/shared/kbn-avc-banner", "@kbn/banners-plugin": "link:x-pack/plugins/banners", "@kbn/bfetch-error": "link:packages/kbn-bfetch-error", "@kbn/bfetch-explorer-plugin": "link:examples/bfetch_explorer", @@ -205,13 +206,13 @@ "@kbn/cases-components": "link:packages/kbn-cases-components", "@kbn/cases-plugin": "link:x-pack/plugins/cases", "@kbn/cbor": "link:packages/kbn-cbor", - "@kbn/cell-actions": "link:packages/kbn-cell-actions", + "@kbn/cell-actions": "link:src/platform/packages/shared/kbn-cell-actions", "@kbn/chart-expressions-common": "link:src/plugins/chart_expressions/common", "@kbn/chart-icons": "link:packages/kbn-chart-icons", "@kbn/charts-plugin": "link:src/plugins/charts", "@kbn/cloud": "link:packages/cloud", "@kbn/cloud-chat-plugin": "link:x-pack/plugins/cloud_integrations/cloud_chat", - "@kbn/cloud-data-migration-plugin": "link:x-pack/plugins/cloud_integrations/cloud_data_migration", + "@kbn/cloud-data-migration-plugin": "link:x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration", "@kbn/cloud-defend-plugin": "link:x-pack/plugins/cloud_defend", "@kbn/cloud-experiments-plugin": "link:x-pack/plugins/cloud_integrations/cloud_experiments", "@kbn/cloud-full-story-plugin": "link:x-pack/plugins/cloud_integrations/cloud_full_story", @@ -228,7 +229,7 @@ "@kbn/config": "link:packages/kbn-config", "@kbn/config-mocks": "link:packages/kbn-config-mocks", "@kbn/config-schema": "link:packages/kbn-config-schema", - "@kbn/console-plugin": "link:src/plugins/console", + "@kbn/console-plugin": "link:src/platform/plugins/shared/console", "@kbn/content-management-content-editor": "link:packages/content-management/content_editor", "@kbn/content-management-content-insights-public": "link:packages/content-management/content_insights/content_insights_public", "@kbn/content-management-content-insights-server": "link:packages/content-management/content_insights/content_insights_server", @@ -414,7 +415,7 @@ "@kbn/core-user-settings-server": "link:packages/core/user-settings/core-user-settings-server", "@kbn/core-user-settings-server-internal": "link:packages/core/user-settings/core-user-settings-server-internal", "@kbn/core-user-settings-server-mocks": "link:packages/core/user-settings/core-user-settings-server-mocks", - "@kbn/cross-cluster-replication-plugin": "link:x-pack/plugins/cross_cluster_replication", + "@kbn/cross-cluster-replication-plugin": "link:x-pack/platform/plugins/private/cross_cluster_replication", "@kbn/crypto": "link:packages/kbn-crypto", "@kbn/crypto-browser": "link:packages/kbn-crypto-browser", "@kbn/custom-branding-plugin": "link:x-pack/plugins/custom_branding", @@ -423,13 +424,13 @@ "@kbn/custom-integrations-plugin": "link:src/plugins/custom_integrations", "@kbn/dashboard-enhanced-plugin": "link:x-pack/plugins/dashboard_enhanced", "@kbn/dashboard-plugin": "link:src/plugins/dashboard", - "@kbn/data-forge": "link:x-pack/packages/kbn-data-forge", + "@kbn/data-forge": "link:x-pack/platform/packages/shared/kbn-data-forge", "@kbn/data-plugin": "link:src/plugins/data", "@kbn/data-quality-plugin": "link:x-pack/plugins/data_quality", "@kbn/data-search-plugin": "link:test/plugin_functional/plugins/data_search", "@kbn/data-service": "link:packages/kbn-data-service", - "@kbn/data-stream-adapter": "link:packages/kbn-data-stream-adapter", - "@kbn/data-usage-plugin": "link:x-pack/plugins/data_usage", + "@kbn/data-stream-adapter": "link:x-pack/solutions/security/packages/data-stream-adapter", + "@kbn/data-usage-plugin": "link:x-pack/platform/plugins/private/data_usage", "@kbn/data-view-editor-plugin": "link:src/plugins/data_view_editor", "@kbn/data-view-field-editor-example-plugin": "link:examples/data_view_field_editor_example", "@kbn/data-view-field-editor-plugin": "link:src/plugins/data_view_field_editor", @@ -440,19 +441,19 @@ "@kbn/dataset-quality-plugin": "link:x-pack/plugins/observability_solution/dataset_quality", "@kbn/datemath": "link:packages/kbn-datemath", "@kbn/deeplinks-analytics": "link:packages/deeplinks/analytics", - "@kbn/deeplinks-devtools": "link:packages/deeplinks/devtools", + "@kbn/deeplinks-devtools": "link:src/platform/packages/shared/deeplinks/devtools", "@kbn/deeplinks-fleet": "link:packages/deeplinks/fleet", - "@kbn/deeplinks-management": "link:packages/deeplinks/management", + "@kbn/deeplinks-management": "link:src/platform/packages/shared/deeplinks/management", "@kbn/deeplinks-ml": "link:src/platform/packages/shared/deeplinks/ml", - "@kbn/deeplinks-observability": "link:packages/deeplinks/observability", + "@kbn/deeplinks-observability": "link:src/platform/packages/shared/deeplinks/observability", "@kbn/deeplinks-search": "link:packages/deeplinks/search", "@kbn/deeplinks-security": "link:packages/deeplinks/security", "@kbn/deeplinks-shared": "link:packages/deeplinks/shared", "@kbn/default-nav-analytics": "link:packages/default-nav/analytics", - "@kbn/default-nav-devtools": "link:packages/default-nav/devtools", - "@kbn/default-nav-management": "link:packages/default-nav/management", + "@kbn/default-nav-devtools": "link:src/platform/packages/private/default-nav/devtools", + "@kbn/default-nav-management": "link:src/platform/packages/private/default-nav/management", "@kbn/default-nav-ml": "link:src/platform/packages/private/default-nav/ml", - "@kbn/dev-tools-plugin": "link:src/plugins/dev_tools", + "@kbn/dev-tools-plugin": "link:src/platform/plugins/shared/dev_tools", "@kbn/developer-examples-plugin": "link:examples/developer_examples", "@kbn/discover-contextual-components": "link:packages/kbn-discover-contextual-components", "@kbn/discover-customization-examples-plugin": "link:examples/discover_customization_examples", @@ -463,12 +464,12 @@ "@kbn/doc-links": "link:src/platform/packages/shared/kbn-doc-links", "@kbn/dom-drag-drop": "link:packages/kbn-dom-drag-drop", "@kbn/ebt-tools": "link:packages/kbn-ebt-tools", - "@kbn/ecs-data-quality-dashboard": "link:x-pack/packages/security-solution/ecs_data_quality_dashboard", - "@kbn/ecs-data-quality-dashboard-plugin": "link:x-pack/plugins/ecs_data_quality_dashboard", + "@kbn/ecs-data-quality-dashboard": "link:x-pack/solutions/security/packages/ecs_data_quality_dashboard", + "@kbn/ecs-data-quality-dashboard-plugin": "link:x-pack/solutions/security/plugins/ecs_data_quality_dashboard", "@kbn/elastic-agent-utils": "link:packages/kbn-elastic-agent-utils", - "@kbn/elastic-assistant": "link:x-pack/packages/kbn-elastic-assistant", - "@kbn/elastic-assistant-common": "link:x-pack/packages/kbn-elastic-assistant-common", - "@kbn/elastic-assistant-plugin": "link:x-pack/plugins/elastic_assistant", + "@kbn/elastic-assistant": "link:x-pack/platform/packages/shared/kbn-elastic-assistant", + "@kbn/elastic-assistant-common": "link:x-pack/platform/packages/shared/kbn-elastic-assistant-common", + "@kbn/elastic-assistant-plugin": "link:x-pack/solutions/security/plugins/elastic_assistant", "@kbn/elasticsearch-client-plugin": "link:test/plugin_functional/plugins/elasticsearch_client_plugin", "@kbn/elasticsearch-client-xpack-plugin": "link:x-pack/test/plugin_api_integration/plugins/elasticsearch_client", "@kbn/embeddable-enhanced-plugin": "link:x-pack/plugins/embeddable_enhanced", @@ -486,7 +487,7 @@ "@kbn/es-errors": "link:packages/kbn-es-errors", "@kbn/es-query": "link:packages/kbn-es-query", "@kbn/es-types": "link:packages/kbn-es-types", - "@kbn/es-ui-shared-plugin": "link:src/plugins/es_ui_shared", + "@kbn/es-ui-shared-plugin": "link:src/platform/plugins/shared/es_ui_shared", "@kbn/eso-model-version-example": "link:examples/eso_model_version_example", "@kbn/eso-plugin": "link:x-pack/test/encrypted_saved_objects_api_integration/plugins/api_consumer_plugin", "@kbn/esql": "link:src/platform/plugins/shared/esql", @@ -504,9 +505,9 @@ "@kbn/event-annotation-plugin": "link:src/plugins/event_annotation", "@kbn/event-log-fixture-plugin": "link:x-pack/test/plugin_api_integration/plugins/event_log", "@kbn/event-log-plugin": "link:x-pack/plugins/event_log", - "@kbn/expandable-flyout": "link:packages/kbn-expandable-flyout", + "@kbn/expandable-flyout": "link:x-pack/solutions/security/packages/expandable-flyout", "@kbn/exploratory-view-example-plugin": "link:x-pack/examples/exploratory_view_example", - "@kbn/exploratory-view-plugin": "link:x-pack/plugins/observability_solution/exploratory_view", + "@kbn/exploratory-view-plugin": "link:x-pack/solutions/observability/plugins/exploratory_view", "@kbn/expression-error-plugin": "link:src/plugins/expression_error", "@kbn/expression-gauge-plugin": "link:src/plugins/chart_expressions/expression_gauge", "@kbn/expression-heatmap-plugin": "link:src/plugins/chart_expressions/expression_heatmap", @@ -553,7 +554,7 @@ "@kbn/graph-plugin": "link:x-pack/plugins/graph", "@kbn/grid-example-plugin": "link:examples/grid_example", "@kbn/grid-layout": "link:packages/kbn-grid-layout", - "@kbn/grokdebugger-plugin": "link:x-pack/plugins/grokdebugger", + "@kbn/grokdebugger-plugin": "link:x-pack/platform/plugins/private/grokdebugger", "@kbn/grouping": "link:packages/kbn-grouping", "@kbn/guided-onboarding": "link:packages/kbn-guided-onboarding", "@kbn/guided-onboarding-example-plugin": "link:examples/guided_onboarding_example", @@ -571,29 +572,29 @@ "@kbn/i18n-react": "link:packages/kbn-i18n-react", "@kbn/iframe-embedded-plugin": "link:x-pack/test/functional_embedded/plugins/iframe_embedded", "@kbn/image-embeddable-plugin": "link:src/plugins/image_embeddable", - "@kbn/index-adapter": "link:packages/kbn-index-adapter", - "@kbn/index-lifecycle-management-common-shared": "link:x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared", - "@kbn/index-lifecycle-management-plugin": "link:x-pack/plugins/index_lifecycle_management", + "@kbn/index-adapter": "link:x-pack/solutions/security/packages/index-adapter", + "@kbn/index-lifecycle-management-common-shared": "link:x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared", + "@kbn/index-lifecycle-management-plugin": "link:x-pack/platform/plugins/private/index_lifecycle_management", "@kbn/index-management-plugin": "link:x-pack/plugins/index_management", - "@kbn/index-management-shared-types": "link:x-pack/packages/index-management/index_management_shared_types", + "@kbn/index-management-shared-types": "link:x-pack/platform/packages/shared/index-management/index_management_shared_types", "@kbn/index-patterns-test-plugin": "link:test/plugin_functional/plugins/index_patterns", "@kbn/inference-common": "link:x-pack/platform/packages/shared/ai-infra/inference-common", "@kbn/inference-plugin": "link:x-pack/platform/plugins/shared/inference", "@kbn/inference_integration_flyout": "link:x-pack/platform/packages/private/ml/inference_integration_flyout", - "@kbn/infra-forge": "link:x-pack/packages/kbn-infra-forge", + "@kbn/infra-forge": "link:x-pack/platform/packages/private/kbn-infra-forge", "@kbn/infra-plugin": "link:x-pack/plugins/observability_solution/infra", "@kbn/ingest-pipelines-plugin": "link:x-pack/plugins/ingest_pipelines", "@kbn/input-control-vis-plugin": "link:src/plugins/input_control_vis", "@kbn/inspector-plugin": "link:src/plugins/inspector", - "@kbn/integration-assistant-plugin": "link:x-pack/plugins/integration_assistant", + "@kbn/integration-assistant-plugin": "link:x-pack/platform/plugins/shared/integration_assistant", "@kbn/interactive-setup-plugin": "link:src/plugins/interactive_setup", "@kbn/interactive-setup-test-endpoints-plugin": "link:test/interactive_setup_api_integration/plugins/test_endpoints", "@kbn/interpreter": "link:packages/kbn-interpreter", "@kbn/inventory-plugin": "link:x-pack/plugins/observability_solution/inventory", - "@kbn/investigate-app-plugin": "link:x-pack/plugins/observability_solution/investigate_app", - "@kbn/investigate-plugin": "link:x-pack/plugins/observability_solution/investigate", - "@kbn/investigation-shared": "link:packages/kbn-investigation-shared", - "@kbn/io-ts-utils": "link:packages/kbn-io-ts-utils", + "@kbn/investigate-app-plugin": "link:x-pack/solutions/observability/plugins/investigate_app", + "@kbn/investigate-plugin": "link:x-pack/solutions/observability/plugins/investigate", + "@kbn/investigation-shared": "link:x-pack/solutions/observability/packages/kbn-investigation-shared", + "@kbn/io-ts-utils": "link:src/platform/packages/shared/kbn-io-ts-utils", "@kbn/ipynb": "link:packages/kbn-ipynb", "@kbn/item-buffer": "link:packages/kbn-item-buffer", "@kbn/json-schemas": "link:x-pack/platform/packages/private/ml/json_schemas", @@ -608,15 +609,15 @@ "@kbn/kibana-usage-collection-plugin": "link:src/plugins/kibana_usage_collection", "@kbn/kibana-utils-plugin": "link:src/plugins/kibana_utils", "@kbn/kubernetes-security-plugin": "link:x-pack/plugins/kubernetes_security", - "@kbn/langchain": "link:x-pack/packages/kbn-langchain", + "@kbn/langchain": "link:x-pack/platform/packages/shared/kbn-langchain", "@kbn/language-documentation": "link:src/platform/packages/private/kbn-language-documentation", "@kbn/lens-config-builder-example-plugin": "link:x-pack/examples/lens_config_builder_example", "@kbn/lens-embeddable-utils": "link:packages/kbn-lens-embeddable-utils", "@kbn/lens-formula-docs": "link:packages/kbn-lens-formula-docs", "@kbn/lens-inline-editing-example-plugin": "link:x-pack/examples/lens_embeddable_inline_editing_example", "@kbn/lens-plugin": "link:x-pack/plugins/lens", - "@kbn/license-api-guard-plugin": "link:x-pack/plugins/license_api_guard", - "@kbn/license-management-plugin": "link:x-pack/plugins/license_management", + "@kbn/license-api-guard-plugin": "link:x-pack/platform/plugins/private/license_api_guard", + "@kbn/license-management-plugin": "link:x-pack/platform/plugins/shared/license_management", "@kbn/licensing-plugin": "link:x-pack/plugins/licensing", "@kbn/links-plugin": "link:src/plugins/links", "@kbn/lists-plugin": "link:x-pack/plugins/lists", @@ -630,18 +631,18 @@ "@kbn/logs-shared-plugin": "link:x-pack/plugins/observability_solution/logs_shared", "@kbn/logstash-plugin": "link:x-pack/plugins/logstash", "@kbn/managed-content-badge": "link:packages/kbn-managed-content-badge", - "@kbn/management-cards-navigation": "link:packages/kbn-management/cards_navigation", - "@kbn/management-plugin": "link:src/plugins/management", - "@kbn/management-settings-application": "link:packages/kbn-management/settings/application", - "@kbn/management-settings-components-field-category": "link:packages/kbn-management/settings/components/field_category", - "@kbn/management-settings-components-field-input": "link:packages/kbn-management/settings/components/field_input", - "@kbn/management-settings-components-field-row": "link:packages/kbn-management/settings/components/field_row", - "@kbn/management-settings-components-form": "link:packages/kbn-management/settings/components/form", - "@kbn/management-settings-field-definition": "link:packages/kbn-management/settings/field_definition", + "@kbn/management-cards-navigation": "link:src/platform/packages/shared/kbn-management/cards_navigation", + "@kbn/management-plugin": "link:src/platform/plugins/shared/management", + "@kbn/management-settings-application": "link:src/platform/packages/private/kbn-management/settings/application", + "@kbn/management-settings-components-field-category": "link:src/platform/packages/private/kbn-management/settings/components/field_category", + "@kbn/management-settings-components-field-input": "link:src/platform/packages/shared/kbn-management/settings/components/field_input", + "@kbn/management-settings-components-field-row": "link:src/platform/packages/shared/kbn-management/settings/components/field_row", + "@kbn/management-settings-components-form": "link:src/platform/packages/private/kbn-management/settings/components/form", + "@kbn/management-settings-field-definition": "link:src/platform/packages/shared/kbn-management/settings/field_definition", "@kbn/management-settings-ids": "link:packages/kbn-management/settings/setting_ids", "@kbn/management-settings-section-registry": "link:packages/kbn-management/settings/section_registry", - "@kbn/management-settings-types": "link:packages/kbn-management/settings/types", - "@kbn/management-settings-utilities": "link:packages/kbn-management/settings/utilities", + "@kbn/management-settings-types": "link:src/platform/packages/shared/kbn-management/settings/types", + "@kbn/management-settings-utilities": "link:src/platform/packages/shared/kbn-management/settings/utilities", "@kbn/management-test-plugin": "link:test/plugin_functional/plugins/management_test_plugin", "@kbn/mapbox-gl": "link:packages/kbn-mapbox-gl", "@kbn/maps-custom-raster-source-plugin": "link:x-pack/examples/third_party_maps_source_example", @@ -692,20 +693,22 @@ "@kbn/notifications-plugin": "link:x-pack/plugins/notifications", "@kbn/object-versioning": "link:packages/kbn-object-versioning", "@kbn/object-versioning-utils": "link:packages/kbn-object-versioning-utils", - "@kbn/observability-ai-assistant-app-plugin": "link:x-pack/plugins/observability_solution/observability_ai_assistant_app", - "@kbn/observability-ai-assistant-management-plugin": "link:x-pack/plugins/observability_solution/observability_ai_assistant_management", - "@kbn/observability-ai-assistant-plugin": "link:x-pack/plugins/observability_solution/observability_ai_assistant", - "@kbn/observability-alert-details": "link:x-pack/packages/observability/alert_details", - "@kbn/observability-alerting-rule-utils": "link:x-pack/packages/observability/alerting_rule_utils", - "@kbn/observability-alerting-test-data": "link:x-pack/packages/observability/alerting_test_data", + "@kbn/observability-ai-assistant-app-plugin": "link:x-pack/solutions/observability/plugins/observability_ai_assistant_app", + "@kbn/observability-ai-assistant-management-plugin": "link:x-pack/solutions/observability/plugins/observability_ai_assistant_management", + "@kbn/observability-ai-assistant-plugin": "link:x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant", + "@kbn/observability-ai-common": "link:x-pack/solutions/observability/packages/observability_ai/observability_ai_common", + "@kbn/observability-ai-server": "link:x-pack/solutions/observability/packages/observability_ai/observability_ai_server", + "@kbn/observability-alert-details": "link:x-pack/solutions/observability/packages/alert_details", + "@kbn/observability-alerting-rule-utils": "link:x-pack/platform/packages/shared/observability/alerting_rule_utils", + "@kbn/observability-alerting-test-data": "link:x-pack/solutions/observability/packages/alerting_test_data", "@kbn/observability-fixtures-plugin": "link:x-pack/test/cases_api_integration/common/plugins/observability", - "@kbn/observability-get-padded-alert-time-range-util": "link:x-pack/packages/observability/get_padded_alert_time_range_util", + "@kbn/observability-get-padded-alert-time-range-util": "link:x-pack/solutions/observability/packages/get_padded_alert_time_range_util", "@kbn/observability-logs-explorer-plugin": "link:x-pack/plugins/observability_solution/observability_logs_explorer", "@kbn/observability-logs-overview": "link:x-pack/packages/observability/logs_overview", "@kbn/observability-onboarding-plugin": "link:x-pack/plugins/observability_solution/observability_onboarding", - "@kbn/observability-plugin": "link:x-pack/plugins/observability_solution/observability", + "@kbn/observability-plugin": "link:x-pack/solutions/observability/plugins/observability", "@kbn/observability-shared-plugin": "link:x-pack/plugins/observability_solution/observability_shared", - "@kbn/observability-synthetics-test-data": "link:x-pack/packages/observability/synthetics_test_data", + "@kbn/observability-synthetics-test-data": "link:x-pack/solutions/observability/packages/synthetics_test_data", "@kbn/observability-utils-browser": "link:x-pack/packages/observability/observability_utils/observability_utils_browser", "@kbn/observability-utils-common": "link:x-pack/packages/observability/observability_utils/observability_utils_common", "@kbn/observability-utils-server": "link:x-pack/packages/observability/observability_utils/observability_utils_server", @@ -713,9 +716,10 @@ "@kbn/open-telemetry-instrumented-plugin": "link:test/common/plugins/otel_metrics", "@kbn/openapi-common": "link:packages/kbn-openapi-common", "@kbn/osquery-io-ts-types": "link:src/platform/packages/shared/kbn-osquery-io-ts-types", - "@kbn/osquery-plugin": "link:x-pack/plugins/osquery", + "@kbn/osquery-plugin": "link:x-pack/platform/plugins/shared/osquery", "@kbn/paertial-results-example-plugin": "link:examples/partial_results_example", - "@kbn/painless-lab-plugin": "link:x-pack/plugins/painless_lab", + "@kbn/painless-lab-plugin": "link:x-pack/platform/plugins/private/painless_lab", + "@kbn/palettes": "link:packages/kbn-palettes", "@kbn/panel-loader": "link:packages/kbn-panel-loader", "@kbn/plugin-check": "link:packages/kbn-plugin-check", "@kbn/portable-dashboards-example": "link:examples/portable_dashboards_example", @@ -740,7 +744,7 @@ "@kbn/react-kibana-mount": "link:packages/react/kibana_mount", "@kbn/react-mute-legacy-root-warning": "link:packages/kbn-react-mute-legacy-root-warning", "@kbn/recently-accessed": "link:packages/kbn-recently-accessed", - "@kbn/remote-clusters-plugin": "link:x-pack/plugins/remote_clusters", + "@kbn/remote-clusters-plugin": "link:x-pack/platform/plugins/private/remote_clusters", "@kbn/rendering-plugin": "link:test/plugin_functional/plugins/rendering_plugin", "@kbn/repo-info": "link:packages/kbn-repo-info", "@kbn/repo-packages": "link:packages/kbn-repo-packages", @@ -764,15 +768,15 @@ "@kbn/response-ops-rule-params": "link:packages/response-ops/rule_params", "@kbn/response-stream-plugin": "link:examples/response_stream", "@kbn/rison": "link:packages/kbn-rison", - "@kbn/rollup": "link:x-pack/packages/rollup", - "@kbn/rollup-plugin": "link:x-pack/plugins/rollup", + "@kbn/rollup": "link:x-pack/platform/packages/private/rollup", + "@kbn/rollup-plugin": "link:x-pack/platform/plugins/private/rollup", "@kbn/router-to-openapispec": "link:packages/kbn-router-to-openapispec", "@kbn/router-utils": "link:packages/kbn-router-utils", "@kbn/routing-example-plugin": "link:examples/routing_example", "@kbn/rrule": "link:packages/kbn-rrule", "@kbn/rule-data-utils": "link:packages/kbn-rule-data-utils", "@kbn/rule-registry-plugin": "link:x-pack/plugins/rule_registry", - "@kbn/runtime-fields-plugin": "link:x-pack/plugins/runtime_fields", + "@kbn/runtime-fields-plugin": "link:x-pack/platform/plugins/private/runtime_fields", "@kbn/safer-lodash-set": "link:packages/kbn-safer-lodash-set", "@kbn/saml-provider-plugin": "link:x-pack/test/security_api_integration/plugins/saml_provider", "@kbn/sample-task-plugin": "link:x-pack/test/plugin_api_integration/plugins/sample_task_plugin", @@ -813,7 +817,7 @@ "@kbn/search-response-warnings": "link:packages/kbn-search-response-warnings", "@kbn/search-shared-ui": "link:x-pack/packages/search/shared_ui", "@kbn/search-types": "link:packages/kbn-search-types", - "@kbn/searchprofiler-plugin": "link:x-pack/plugins/searchprofiler", + "@kbn/searchprofiler-plugin": "link:x-pack/platform/plugins/shared/searchprofiler", "@kbn/security-api-key-management": "link:x-pack/packages/security/api_key_management", "@kbn/security-authorization-core": "link:x-pack/packages/security/authorization_core", "@kbn/security-authorization-core-common": "link:x-pack/packages/security/authorization_core_common", @@ -824,21 +828,21 @@ "@kbn/security-plugin-types-public": "link:x-pack/packages/security/plugin_types_public", "@kbn/security-plugin-types-server": "link:x-pack/packages/security/plugin_types_server", "@kbn/security-role-management-model": "link:x-pack/packages/security/role_management_model", - "@kbn/security-solution-distribution-bar": "link:x-pack/packages/security-solution/distribution_bar", + "@kbn/security-solution-distribution-bar": "link:x-pack/solutions/security/packages/distribution_bar", "@kbn/security-solution-ess": "link:x-pack/plugins/security_solution_ess", - "@kbn/security-solution-features": "link:x-pack/packages/security-solution/features", + "@kbn/security-solution-features": "link:x-pack/solutions/security/packages/features", "@kbn/security-solution-fixtures-plugin": "link:x-pack/test/cases_api_integration/common/plugins/security_solution", - "@kbn/security-solution-navigation": "link:x-pack/packages/security-solution/navigation", + "@kbn/security-solution-navigation": "link:x-pack/solutions/security/packages/navigation", "@kbn/security-solution-plugin": "link:x-pack/plugins/security_solution", "@kbn/security-solution-serverless": "link:x-pack/plugins/security_solution_serverless", - "@kbn/security-solution-side-nav": "link:x-pack/packages/security-solution/side_nav", - "@kbn/security-solution-storybook-config": "link:x-pack/packages/security-solution/storybook/config", - "@kbn/security-solution-upselling": "link:x-pack/packages/security-solution/upselling", + "@kbn/security-solution-side-nav": "link:x-pack/solutions/security/packages/side_nav", + "@kbn/security-solution-storybook-config": "link:x-pack/solutions/security/packages/storybook/config", + "@kbn/security-solution-upselling": "link:x-pack/solutions/security/packages/upselling", "@kbn/security-test-endpoints-plugin": "link:x-pack/test/security_functional/plugins/test_endpoints", "@kbn/security-ui-components": "link:x-pack/packages/security/ui_components", "@kbn/securitysolution-autocomplete": "link:packages/kbn-securitysolution-autocomplete", - "@kbn/securitysolution-data-table": "link:x-pack/packages/security-solution/data_table", - "@kbn/securitysolution-ecs": "link:packages/kbn-securitysolution-ecs", + "@kbn/securitysolution-data-table": "link:x-pack/solutions/security/packages/data_table", + "@kbn/securitysolution-ecs": "link:src/platform/packages/shared/kbn-securitysolution-ecs", "@kbn/securitysolution-endpoint-exceptions-common": "link:packages/kbn-securitysolution-endpoint-exceptions-common", "@kbn/securitysolution-es-utils": "link:packages/kbn-securitysolution-es-utils", "@kbn/securitysolution-exception-list-components": "link:packages/kbn-securitysolution-exception-list-components", @@ -857,12 +861,12 @@ "@kbn/securitysolution-t-grid": "link:packages/kbn-securitysolution-t-grid", "@kbn/securitysolution-utils": "link:packages/kbn-securitysolution-utils", "@kbn/server-http-tools": "link:packages/kbn-server-http-tools", - "@kbn/server-route-repository": "link:packages/kbn-server-route-repository", - "@kbn/server-route-repository-client": "link:packages/kbn-server-route-repository-client", - "@kbn/server-route-repository-utils": "link:packages/kbn-server-route-repository-utils", + "@kbn/server-route-repository": "link:src/platform/packages/shared/kbn-server-route-repository", + "@kbn/server-route-repository-client": "link:src/platform/packages/shared/kbn-server-route-repository-client", + "@kbn/server-route-repository-utils": "link:src/platform/packages/shared/kbn-server-route-repository-utils", "@kbn/serverless": "link:x-pack/plugins/serverless", "@kbn/serverless-common-settings": "link:packages/serverless/settings/common", - "@kbn/serverless-observability": "link:x-pack/plugins/serverless_observability", + "@kbn/serverless-observability": "link:x-pack/solutions/observability/plugins/serverless_observability", "@kbn/serverless-observability-settings": "link:packages/serverless/settings/observability_project", "@kbn/serverless-project-switcher": "link:packages/serverless/project_switcher", "@kbn/serverless-search": "link:x-pack/plugins/serverless_search", @@ -926,14 +930,14 @@ "@kbn/shared-ux-table-persist": "link:packages/shared-ux/table_persist", "@kbn/shared-ux-utility": "link:packages/kbn-shared-ux-utility", "@kbn/slo-plugin": "link:x-pack/plugins/observability_solution/slo", - "@kbn/slo-schema": "link:x-pack/packages/kbn-slo-schema", - "@kbn/snapshot-restore-plugin": "link:x-pack/plugins/snapshot_restore", + "@kbn/slo-schema": "link:x-pack/platform/packages/shared/kbn-slo-schema", + "@kbn/snapshot-restore-plugin": "link:x-pack/platform/plugins/private/snapshot_restore", "@kbn/sort-predicates": "link:packages/kbn-sort-predicates", "@kbn/spaces-plugin": "link:x-pack/plugins/spaces", "@kbn/spaces-test-plugin": "link:x-pack/test/spaces_api_integration/common/plugins/spaces_test_plugin", - "@kbn/sse-utils": "link:packages/kbn-sse-utils", - "@kbn/sse-utils-client": "link:packages/kbn-sse-utils-client", - "@kbn/sse-utils-server": "link:packages/kbn-sse-utils-server", + "@kbn/sse-utils": "link:src/platform/packages/shared/kbn-sse-utils", + "@kbn/sse-utils-client": "link:src/platform/packages/shared/kbn-sse-utils-client", + "@kbn/sse-utils-server": "link:src/platform/packages/shared/kbn-sse-utils-server", "@kbn/stack-alerts-plugin": "link:x-pack/plugins/stack_alerts", "@kbn/stack-connectors-plugin": "link:x-pack/plugins/stack_connectors", "@kbn/stack-management-usage-test-plugin": "link:x-pack/test/usage_collection/plugins/stack_management_usage_test", @@ -943,7 +947,7 @@ "@kbn/std": "link:packages/kbn-std", "@kbn/streams-app-plugin": "link:x-pack/solutions/observability/plugins/streams_app", "@kbn/streams-plugin": "link:x-pack/solutions/observability/plugins/streams", - "@kbn/synthetics-plugin": "link:x-pack/plugins/observability_solution/synthetics", + "@kbn/synthetics-plugin": "link:x-pack/solutions/observability/plugins/synthetics", "@kbn/synthetics-private-location": "link:x-pack/packages/kbn-synthetics-private-location", "@kbn/task-manager-fixture-plugin": "link:x-pack/test/alerting_api_integration/common/plugins/task_manager_fixture", "@kbn/task-manager-performance-plugin": "link:x-pack/test/plugin_api_perf/plugins/task_manager_performance", @@ -957,8 +961,8 @@ "@kbn/testing-embedded-lens-plugin": "link:x-pack/examples/testing_embedded_lens", "@kbn/third-party-lens-navigation-prompt-plugin": "link:x-pack/examples/third_party_lens_navigation_prompt", "@kbn/third-party-vis-lens-example-plugin": "link:x-pack/examples/third_party_vis_lens_example", - "@kbn/threat-intelligence-plugin": "link:x-pack/plugins/threat_intelligence", - "@kbn/timelines-plugin": "link:x-pack/plugins/timelines", + "@kbn/threat-intelligence-plugin": "link:x-pack/solutions/security/plugins/threat_intelligence", + "@kbn/timelines-plugin": "link:x-pack/solutions/security/plugins/timelines", "@kbn/timelion-grammar": "link:packages/kbn-timelion-grammar", "@kbn/timerange": "link:packages/kbn-timerange", "@kbn/tinymath": "link:packages/kbn-tinymath", @@ -969,7 +973,7 @@ "@kbn/triggers-actions-ui-plugin": "link:x-pack/plugins/triggers_actions_ui", "@kbn/triggers-actions-ui-types": "link:packages/kbn-triggers-actions-ui-types", "@kbn/try-in-console": "link:packages/kbn-try-in-console", - "@kbn/typed-react-router-config": "link:packages/kbn-typed-react-router-config", + "@kbn/typed-react-router-config": "link:src/platform/packages/shared/kbn-typed-react-router-config", "@kbn/ui-actions-browser": "link:packages/kbn-ui-actions-browser", "@kbn/ui-actions-enhanced-examples-plugin": "link:x-pack/examples/ui_actions_enhanced_examples", "@kbn/ui-actions-enhanced-plugin": "link:src/plugins/ui_actions_enhanced", @@ -989,9 +993,9 @@ "@kbn/unified-histogram-plugin": "link:src/plugins/unified_histogram", "@kbn/unified-search-plugin": "link:src/plugins/unified_search", "@kbn/unsaved-changes-badge": "link:packages/kbn-unsaved-changes-badge", - "@kbn/unsaved-changes-prompt": "link:packages/kbn-unsaved-changes-prompt", + "@kbn/unsaved-changes-prompt": "link:src/platform/packages/shared/kbn-unsaved-changes-prompt", "@kbn/upgrade-assistant-plugin": "link:x-pack/plugins/upgrade_assistant", - "@kbn/uptime-plugin": "link:x-pack/plugins/observability_solution/uptime", + "@kbn/uptime-plugin": "link:x-pack/solutions/observability/plugins/uptime", "@kbn/url-drilldown-plugin": "link:x-pack/plugins/drilldowns/url_drilldown", "@kbn/url-forwarding-plugin": "link:src/plugins/url_forwarding", "@kbn/usage-collection-plugin": "link:src/plugins/usage_collection", @@ -1003,7 +1007,7 @@ "@kbn/utility-types": "link:packages/kbn-utility-types", "@kbn/utility-types-jest": "link:packages/kbn-utility-types-jest", "@kbn/utils": "link:packages/kbn-utils", - "@kbn/ux-plugin": "link:x-pack/plugins/observability_solution/ux", + "@kbn/ux-plugin": "link:x-pack/solutions/observability/plugins/ux", "@kbn/v8-profiler-examples-plugin": "link:examples/v8_profiler_examples", "@kbn/vis-default-editor-plugin": "link:src/plugins/vis_default_editor", "@kbn/vis-type-gauge-plugin": "link:src/plugins/vis_types/gauge", @@ -1021,7 +1025,7 @@ "@kbn/visualization-ui-components": "link:packages/kbn-visualization-ui-components", "@kbn/visualization-utils": "link:packages/kbn-visualization-utils", "@kbn/visualizations-plugin": "link:src/plugins/visualizations", - "@kbn/watcher-plugin": "link:x-pack/plugins/watcher", + "@kbn/watcher-plugin": "link:x-pack/platform/plugins/private/watcher", "@kbn/xstate-utils": "link:packages/kbn-xstate-utils", "@kbn/zod": "link:packages/kbn-zod", "@kbn/zod-helpers": "link:packages/kbn-zod-helpers", @@ -1130,7 +1134,7 @@ "del": "^6.1.0", "diff": "^5.1.0", "dotenv": "^16.4.5", - "elastic-apm-node": "^4.8.1", + "elastic-apm-node": "^4.9.0", "email-addresses": "^5.0.0", "eventsource-parser": "^3.0.0", "execa": "^5.1.1", @@ -1145,6 +1149,7 @@ "fnv-plus": "^1.3.1", "formik": "^2.4.6", "fp-ts": "^2.3.1", + "fuse.js": "^7.0.0", "get-port": "^5.0.0", "getopts": "^2.2.5", "getos": "^3.1.0", @@ -1168,7 +1173,7 @@ "joi-to-json": "^4.3.0", "jquery": "^3.5.0", "js-search": "^1.4.3", - "js-sha256": "^0.9.0", + "js-sha256": "^0.11.0", "js-yaml": "^4.1.0", "json-schema-to-ts": "^2.9.1", "json-stable-stringify": "^1.0.1", @@ -1487,6 +1492,7 @@ "@kbn/plugin-generator": "link:packages/kbn-plugin-generator", "@kbn/plugin-helpers": "link:packages/kbn-plugin-helpers", "@kbn/product-doc-artifact-builder": "link:x-pack/packages/ai-infra/product-doc-artifact-builder", + "@kbn/relocate": "link:packages/kbn-relocate", "@kbn/repo-file-maps": "link:packages/kbn-repo-file-maps", "@kbn/repo-linter": "link:packages/kbn-repo-linter", "@kbn/repo-path": "link:packages/kbn-repo-path", @@ -1501,7 +1507,7 @@ "@kbn/sort-package-json": "link:packages/kbn-sort-package-json", "@kbn/stdio-dev-helpers": "link:packages/kbn-stdio-dev-helpers", "@kbn/storybook": "link:packages/kbn-storybook", - "@kbn/synthetics-e2e": "link:x-pack/plugins/observability_solution/synthetics/e2e", + "@kbn/synthetics-e2e": "link:x-pack/solutions/observability/plugins/synthetics/e2e", "@kbn/telemetry-tools": "link:packages/kbn-telemetry-tools", "@kbn/test": "link:packages/kbn-test", "@kbn/test-eui-helpers": "link:packages/kbn-test-eui-helpers", @@ -1613,10 +1619,9 @@ "@types/mime": "^2.0.1", "@types/mime-types": "^2.1.0", "@types/minimatch": "^2.0.29", - "@types/minimist": "^1.2.2", + "@types/minimist": "^1.2.5", "@types/mock-fs": "^4.13.1", "@types/moment-duration-format": "^2.2.3", - "@types/multistream": "^4.1.0", "@types/mustache": "^0.8.31", "@types/nock": "^10.0.3", "@types/node": "20.10.5", @@ -1631,7 +1636,6 @@ "@types/pbf": "3.0.2", "@types/pdfmake": "^0.2.2", "@types/picomatch": "^2.3.0", - "@types/pidusage": "^2.0.2", "@types/pixelmatch": "^5.2.4", "@types/pngjs": "^6.0.5", "@types/prop-types": "^15.7.5", @@ -1785,7 +1789,7 @@ "micromatch": "^4.0.8", "mini-css-extract-plugin": "1.1.0", "minimist": "^1.2.6", - "mocha": "^10.1.0", + "mocha": "^10.3.0", "mocha-junit-reporter": "^2.0.2", "mocha-multi-reporters": "^1.5.1", "mochawesome": "^7.1.3", @@ -1793,7 +1797,6 @@ "mock-fs": "^5.1.2", "ms-chromium-edge-driver": "^0.5.1", "msw": "^2.4.12", - "multistream": "^4.1.0", "mutation-observer": "^1.0.3", "native-hdr-histogram": "^1.0.0", "nock": "12.0.3", @@ -1804,7 +1807,6 @@ "p-reflect": "2.1.0", "peggy": "^1.2.0", "picomatch": "^2.3.1", - "pidusage": "^3.0.2", "pirates": "^4.0.1", "piscina": "^3.2.0", "pixelmatch": "^5.3.0", @@ -1842,7 +1844,7 @@ "swagger-jsdoc": "^6.2.8", "swagger-ui-express": "^5.0.1", "table": "^6.8.2", - "tape": "^5.0.1", + "tape": "^5.9.0", "terser": "^5.36.0", "terser-webpack-plugin": "^4.2.3", "tough-cookie": "^5.0.0", diff --git a/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts b/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts index ab9d19b6843e5..ab4de0e45fc99 100644 --- a/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts +++ b/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.test.ts @@ -128,4 +128,31 @@ describe('trackPerformanceMeasureEntries', () => { value1: 'value1', }); }); + + test('reports an analytics event with query metadata', () => { + setupMockPerformanceObserver([ + { + name: '/', + entryType: 'measure', + startTime: 100, + duration: 1000, + detail: { + eventName: 'kibana:plugin_render_time', + type: 'kibana:performance', + meta: { + queryRangeSecs: 86400, + queryOffsetSecs: 0, + }, + }, + }, + ]); + trackPerformanceMeasureEntries(analyticsClientMock, true); + + expect(analyticsClientMock.reportEvent).toHaveBeenCalledTimes(1); + expect(analyticsClientMock.reportEvent).toHaveBeenCalledWith('performance_metric', { + duration: 1000, + eventName: 'kibana:plugin_render_time', + meta: { target: '/', query_range_secs: 86400, query_offset_secs: 0 }, + }); + }); }); diff --git a/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.ts b/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.ts index 38a0a28bb3893..fc46230f85c2c 100644 --- a/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.ts +++ b/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.ts @@ -27,6 +27,7 @@ export function trackPerformanceMeasureEntries(analytics: AnalyticsClient, isDev if (entry.entryType === 'measure' && entry.detail?.type === 'kibana:performance') { const target = entry?.name; const duration = entry.duration; + const meta = entry.detail?.meta; const customMetrics = Object.keys(entry.detail?.customMetrics ?? {}).reduce( (acc, metric) => { if (ALLOWED_CUSTOM_METRICS_KEYS_VALUES.includes(metric)) { @@ -72,6 +73,8 @@ export function trackPerformanceMeasureEntries(analytics: AnalyticsClient, isDev ...customMetrics, meta: { target, + query_range_secs: meta?.queryRangeSecs, + query_offset_secs: meta?.queryOffsetSecs, }, }); } catch (error) { diff --git a/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.test.ts b/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.test.ts index f10d2cb3b3ac4..a0cadaacfbf7b 100644 --- a/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.test.ts +++ b/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.test.ts @@ -220,6 +220,16 @@ describe('RouteSecurity validation', () => { expect(() => validRouteSecurity(routeSecurity)).not.toThrow(); }); + it('should pass validation when operator privileges are combined with superuser', () => { + const routeSecurity = { + authz: { + requiredPrivileges: [ReservedPrivilegesSet.operator, ReservedPrivilegesSet.superuser], + }, + }; + + expect(() => validRouteSecurity(routeSecurity)).not.toThrow(); + }); + it('should fail validation when anyRequired and allRequired have the same values', () => { const invalidRouteSecurity = { authz: { @@ -263,6 +273,20 @@ describe('RouteSecurity validation', () => { ); }); + it('should fail validation when allRequired has duplicate entries', () => { + const invalidRouteSecurity = { + authz: { + requiredPrivileges: [ + { anyRequired: ['privilege4', 'privilege5'], allRequired: ['privilege1', 'privilege1'] }, + ], + }, + }; + + expect(() => validRouteSecurity(invalidRouteSecurity)).toThrowErrorMatchingInlineSnapshot( + `"[authz.requiredPrivileges]: allRequired privileges must contain unique values"` + ); + }); + it('should fail validation when anyRequired has duplicates in multiple privilege entries', () => { const invalidRouteSecurity = { authz: { @@ -289,7 +313,7 @@ describe('RouteSecurity validation', () => { }; expect(() => validRouteSecurity(invalidRouteSecurity)).toThrowErrorMatchingInlineSnapshot( - `"[authz.requiredPrivileges]: Combining superuser with other privileges is redundant, superuser privileges set can be only used as a standalone privilege."` + `"[authz.requiredPrivileges]: Using superuser privileges in anyRequired is not allowed"` ); }); @@ -304,4 +328,41 @@ describe('RouteSecurity validation', () => { `"[authz.requiredPrivileges]: Combining superuser with other privileges is redundant, superuser privileges set can be only used as a standalone privilege."` ); }); + + it('should fail validation when anyRequired has operator privileges set', () => { + const invalidRouteSecurity = { + authz: { + requiredPrivileges: [ + { anyRequired: ['privilege1', 'privilege2'], allRequired: ['privilege4'] }, + { anyRequired: ['privilege5', ReservedPrivilegesSet.operator] }, + ], + }, + }; + + expect(() => validRouteSecurity(invalidRouteSecurity)).toThrowErrorMatchingInlineSnapshot( + `"[authz.requiredPrivileges]: Using operator privileges in anyRequired is not allowed"` + ); + }); + + it('should fail validation when operator privileges set is used as standalone', () => { + expect(() => + validRouteSecurity({ + authz: { + requiredPrivileges: [{ allRequired: [ReservedPrivilegesSet.operator] }], + }, + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[authz.requiredPrivileges]: Operator privilege requires at least one additional non-operator privilege to be defined"` + ); + + expect(() => + validRouteSecurity({ + authz: { + requiredPrivileges: [ReservedPrivilegesSet.operator], + }, + }) + ).toThrowErrorMatchingInlineSnapshot( + `"[authz.requiredPrivileges]: Operator privilege requires at least one additional non-operator privilege to be defined"` + ); + }); }); diff --git a/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.ts b/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.ts index 65073f9a66ec6..ec54c5e61ce0d 100644 --- a/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.ts +++ b/packages/core/http/core-http-router-server-internal/src/security_route_config_validator.ts @@ -50,15 +50,33 @@ const requiredPrivilegesSchema = schema.arrayOf( } }); + if (anyRequired.includes(ReservedPrivilegesSet.superuser)) { + return 'Using superuser privileges in anyRequired is not allowed'; + } + + const hasSuperuserInAllRequired = allRequired.includes(ReservedPrivilegesSet.superuser); + const hasOperatorInAllRequired = allRequired.includes(ReservedPrivilegesSet.operator); + // Combining superuser with other privileges is redundant. // If user is a superuser, they inherently have access to all the privileges that may come with other roles. + // The exception is when superuser and operator are the only required privileges. if ( - anyRequired.includes(ReservedPrivilegesSet.superuser) || - (allRequired.includes(ReservedPrivilegesSet.superuser) && allRequired.length > 1) + hasSuperuserInAllRequired && + allRequired.length > 1 && + !(hasOperatorInAllRequired && allRequired.length === 2) ) { return 'Combining superuser with other privileges is redundant, superuser privileges set can be only used as a standalone privilege.'; } + // Operator privilege requires at least one additional non-operator privilege to be defined, that's why it's not allowed in anyRequired. + if (anyRequired.includes(ReservedPrivilegesSet.operator)) { + return 'Using operator privileges in anyRequired is not allowed'; + } + + if (hasOperatorInAllRequired && allRequired.length === 1) { + return 'Operator privilege requires at least one additional non-operator privilege to be defined'; + } + if (anyRequired.length && allRequired.length) { for (const privilege of anyRequired) { if (allRequired.includes(privilege)) { @@ -68,12 +86,20 @@ const requiredPrivilegesSchema = schema.arrayOf( } if (anyRequired.length) { - const uniquePrivileges = new Set([...anyRequired]); + const uniqueAnyPrivileges = new Set([...anyRequired]); - if (anyRequired.length !== uniquePrivileges.size) { + if (anyRequired.length !== uniqueAnyPrivileges.size) { return 'anyRequired privileges must contain unique values'; } } + + if (allRequired.length) { + const uniqueAllPrivileges = new Set([...allRequired]); + + if (allRequired.length !== uniqueAllPrivileges.size) { + return 'allRequired privileges must contain unique values'; + } + } }, minSize: 1, } diff --git a/packages/core/overlays/core-overlays-browser-internal/src/flyout/__snapshots__/flyout_service.test.tsx.snap b/packages/core/overlays/core-overlays-browser-internal/src/flyout/__snapshots__/flyout_service.test.tsx.snap index 9df54435ba9a0..192c892b0128f 100644 --- a/packages/core/overlays/core-overlays-browser-internal/src/flyout/__snapshots__/flyout_service.test.tsx.snap +++ b/packages/core/overlays/core-overlays-browser-internal/src/flyout/__snapshots__/flyout_service.test.tsx.snap @@ -160,7 +160,20 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -280,7 +293,20 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, diff --git a/packages/core/overlays/core-overlays-browser-internal/src/modal/__snapshots__/modal_service.test.tsx.snap b/packages/core/overlays/core-overlays-browser-internal/src/modal/__snapshots__/modal_service.test.tsx.snap index cc2dc671f9210..c0e94fc9fb2d6 100644 --- a/packages/core/overlays/core-overlays-browser-internal/src/modal/__snapshots__/modal_service.test.tsx.snap +++ b/packages/core/overlays/core-overlays-browser-internal/src/modal/__snapshots__/modal_service.test.tsx.snap @@ -102,7 +102,20 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -380,7 +393,28 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -715,7 +749,36 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + Array [], + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -969,7 +1032,36 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + Array [], + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -1228,7 +1320,36 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + Array [], + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -1482,7 +1603,36 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + Array [], + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -1696,7 +1846,20 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -1816,7 +1979,20 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -1941,7 +2117,20 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, @@ -2061,7 +2250,20 @@ Array [ } theme={ Object { - "getTheme": [MockFunction], + "getTheme": [MockFunction] { + "calls": Array [ + Array [], + ], + "results": Array [ + Object { + "type": "return", + "value": Object { + "darkMode": false, + "name": "amsterdam", + }, + }, + ], + }, "theme$": Observable { "_subscribe": [Function], }, diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/open_point_in_time.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/open_point_in_time.test.ts index ca07f39d6620e..2efc33eddddfd 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/open_point_in_time.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/open_point_in_time.test.ts @@ -36,6 +36,7 @@ import { createGenericNotFoundErrorPayload, } from '../../test_helpers/repository.test.common'; import { PointInTimeFinder } from '../point_in_time_finder'; +import { OpenPointInTimeResponse } from '@elastic/elasticsearch/lib/api/types'; describe('SavedObjectsRepository', () => { let client: ReturnType; @@ -81,7 +82,7 @@ describe('SavedObjectsRepository', () => { describe('#openPointInTimeForType', () => { const type = 'index-pattern'; - const generateResults = (id?: string) => ({ id: id || 'id' }); + const generateResults = (id?: string) => ({ id: id || 'id' } as OpenPointInTimeResponse); const successResponse = async (type: string, options?: SavedObjectsOpenPointInTimeOptions) => { client.openPointInTime.mockResponseOnce(generateResults()); const result = await repository.openPointInTimeForType(type, options); @@ -136,7 +137,7 @@ describe('SavedObjectsRepository', () => { it(`throws when ES is unable to find the index`, async () => { client.openPointInTime.mockResolvedValueOnce( elasticsearchClientMock.createSuccessTransportRequestPromise( - { id: 'error' }, + { id: 'error' } as OpenPointInTimeResponse, { statusCode: 404 } ) ); diff --git a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.security_extension.test.ts b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.security_extension.test.ts index 984a60814d591..171b37c3a6b3b 100644 --- a/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.security_extension.test.ts +++ b/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository.security_extension.test.ts @@ -66,6 +66,7 @@ import { import { savedObjectsExtensionsMock } from '../mocks/saved_objects_extensions.mock'; import { arrayMapsAreEqual } from '@kbn/core-saved-objects-utils-server'; import { mockAuthenticatedUser } from '@kbn/core-security-common/mocks'; +import { OpenPointInTimeResponse } from '@elastic/elasticsearch/lib/api/types'; describe('SavedObjectsRepository Security Extension', () => { let client: ReturnType; @@ -676,7 +677,7 @@ describe('SavedObjectsRepository Security Extension', () => { test(`returns result when partially authorized`, async () => { setupAuthorizeFunc(mockSecurityExt.authorizeOpenPointInTime, 'partially_authorized'); - client.openPointInTime.mockResponseOnce({ id }); + client.openPointInTime.mockResponseOnce({ id } as OpenPointInTimeResponse); const result = await repository.openPointInTimeForType(type); expect(mockSecurityExt.authorizeOpenPointInTime).toHaveBeenCalledTimes(1); @@ -687,7 +688,7 @@ describe('SavedObjectsRepository Security Extension', () => { test(`returns result when fully authorized`, async () => { setupAuthorizeFunc(mockSecurityExt.authorizeOpenPointInTime, 'fully_authorized'); - client.openPointInTime.mockResponseOnce({ id }); + client.openPointInTime.mockResponseOnce({ id } as OpenPointInTimeResponse); const result = await repository.openPointInTimeForType(type); expect(mockSecurityExt.authorizeOpenPointInTime).toHaveBeenCalledTimes(1); @@ -702,7 +703,7 @@ describe('SavedObjectsRepository Security Extension', () => { test(`calls authorizeOpenPointInTime with correct parameters`, async () => { setupAuthorizeFunc(mockSecurityExt.authorizeOpenPointInTime, 'fully_authorized'); - client.openPointInTime.mockResponseOnce({ id }); + client.openPointInTime.mockResponseOnce({ id } as OpenPointInTimeResponse); const namespaces = [namespace, 'x', 'y', 'z']; await repository.openPointInTimeForType(type, { namespaces }); expect(mockSecurityExt.authorizeOpenPointInTime).toHaveBeenCalledTimes(1); diff --git a/packages/core/security/core-security-common/src/authentication/authenticated_user.ts b/packages/core/security/core-security-common/src/authentication/authenticated_user.ts index 4aa871125052b..d80ff8f434a4f 100644 --- a/packages/core/security/core-security-common/src/authentication/authenticated_user.ts +++ b/packages/core/security/core-security-common/src/authentication/authenticated_user.ts @@ -60,4 +60,9 @@ export interface AuthenticatedUser extends User { * User profile ID of this user. */ profile_uid?: string; + + /** + * Indicates whether user is an operator. + */ + operator?: boolean; } diff --git a/packages/deeplinks/devtools/jest.config.js b/packages/deeplinks/devtools/jest.config.js deleted file mode 100644 index 2d3a8261a75d1..0000000000000 --- a/packages/deeplinks/devtools/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/deeplinks/devtools'], -}; diff --git a/packages/deeplinks/devtools/tsconfig.json b/packages/deeplinks/devtools/tsconfig.json deleted file mode 100644 index 94b099694eaf4..0000000000000 --- a/packages/deeplinks/devtools/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - ] -} diff --git a/packages/deeplinks/management/jest.config.js b/packages/deeplinks/management/jest.config.js deleted file mode 100644 index d308c49ffafae..0000000000000 --- a/packages/deeplinks/management/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/deeplinks/management'], -}; diff --git a/packages/deeplinks/management/tsconfig.json b/packages/deeplinks/management/tsconfig.json deleted file mode 100644 index d1414086f2187..0000000000000 --- a/packages/deeplinks/management/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [] -} diff --git a/packages/deeplinks/observability/jest.config.js b/packages/deeplinks/observability/jest.config.js deleted file mode 100644 index 76553cb468478..0000000000000 --- a/packages/deeplinks/observability/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/deeplinks/observability'], -}; diff --git a/packages/deeplinks/observability/tsconfig.json b/packages/deeplinks/observability/tsconfig.json deleted file mode 100644 index 425a5a8612854..0000000000000 --- a/packages/deeplinks/observability/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/utility-types", - "@kbn/es-query", - ] -} diff --git a/packages/deeplinks/security/deep_links.ts b/packages/deeplinks/security/deep_links.ts index c1d9b3b3cb6af..2f8229def91df 100644 --- a/packages/deeplinks/security/deep_links.ts +++ b/packages/deeplinks/security/deep_links.ts @@ -72,7 +72,7 @@ export enum SecurityPageName { siemMigrationsRules = 'siem_migrations-rules', /* * Warning: Computed values are not permitted in an enum with string valued members - * All threat intelligence page names must match `TIPageId` in x-pack/plugins/threat_intelligence/public/common/navigation/types.ts + * All threat intelligence page names must match `TIPageId` in x-pack/solutions/security/plugins/threat_intelligence/public/common/navigation/types.ts */ threatIntelligence = 'threat_intelligence', timelines = 'timelines', diff --git a/packages/default-nav/devtools/jest.config.js b/packages/default-nav/devtools/jest.config.js deleted file mode 100644 index c7be7cf80bb03..0000000000000 --- a/packages/default-nav/devtools/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/default-nav/devtools'], -}; diff --git a/packages/default-nav/devtools/tsconfig.json b/packages/default-nav/devtools/tsconfig.json deleted file mode 100644 index 7adfc75ce745d..0000000000000 --- a/packages/default-nav/devtools/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/core-chrome-browser", - "@kbn/deeplinks-devtools", - ] -} diff --git a/packages/default-nav/management/jest.config.js b/packages/default-nav/management/jest.config.js deleted file mode 100644 index a42f1603492ec..0000000000000 --- a/packages/default-nav/management/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/default-nav/management'], -}; diff --git a/packages/default-nav/management/tsconfig.json b/packages/default-nav/management/tsconfig.json deleted file mode 100644 index 2e7b8415084c9..0000000000000 --- a/packages/default-nav/management/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/core-chrome-browser", - "@kbn/deeplinks-management", - ] -} diff --git a/packages/kbn-alerts-ui-shared/tsconfig.json b/packages/kbn-alerts-ui-shared/tsconfig.json index 07a52c9d9c1b9..30be2e17af3ea 100644 --- a/packages/kbn-alerts-ui-shared/tsconfig.json +++ b/packages/kbn-alerts-ui-shared/tsconfig.json @@ -34,6 +34,6 @@ "@kbn/alerts-as-data-utils", "@kbn/core-http-browser-mocks", "@kbn/core-notifications-browser-mocks", - "@kbn/shared-ux-table-persist" + "@kbn/shared-ux-table-persist", ] } diff --git a/packages/kbn-apm-synthtrace-client/src/lib/logs/index.ts b/packages/kbn-apm-synthtrace-client/src/lib/logs/index.ts index 8fa7a5997f4f7..e4e382860767d 100644 --- a/packages/kbn-apm-synthtrace-client/src/lib/logs/index.ts +++ b/packages/kbn-apm-synthtrace-client/src/lib/logs/index.ts @@ -83,6 +83,7 @@ export type LogDocument = Fields & 'kubernetes.pod.name'?: string; 'kubernetes.container.name'?: string; 'orchestrator.resource.name'?: string; + tags?: string | string[]; }>; class Log extends Serializable { diff --git a/packages/kbn-apm-synthtrace/src/cli/utils/synthtrace_worker.ts b/packages/kbn-apm-synthtrace/src/cli/utils/synthtrace_worker.ts index 72644bd8f1103..0d5398f473cb2 100644 --- a/packages/kbn-apm-synthtrace/src/cli/utils/synthtrace_worker.ts +++ b/packages/kbn-apm-synthtrace/src/cli/utils/synthtrace_worker.ts @@ -9,7 +9,6 @@ import { timerange } from '@kbn/apm-synthtrace-client'; import { castArray } from 'lodash'; -import pidusage from 'pidusage'; import { memoryUsage } from 'process'; import { parentPort, workerData } from 'worker_threads'; import { getApmEsClient } from './get_apm_es_client'; @@ -123,10 +122,16 @@ async function start() { return Math.round(value / 1024 ** 2).toString() + 'mb'; } + let cpuUsage = process.cpuUsage(); + setInterval(async () => { - const stats = await pidusage(process.pid); + cpuUsage = process.cpuUsage(cpuUsage); const mem = memoryUsage(); - logger.info(`cpu: ${stats.cpu}, memory: ${mb(mem.heapUsed)}/${mb(mem.heapTotal)}`); + logger.info( + `cpu time: (user: ${cpuUsage.user}µs, sys: ${cpuUsage.system}µs), memory: ${mb( + mem.heapUsed + )}/${mb(mem.heapTotal)}` + ); }, 5000); await logger.perf('index_scenario', async () => { diff --git a/packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts b/packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts index 2460e95014413..c53e4664f1373 100644 --- a/packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts +++ b/packages/kbn-apm-synthtrace/src/lib/infra/infra_synthtrace_es_client.ts @@ -17,6 +17,10 @@ import { Logger } from '../utils/create_logger'; export type InfraSynthtraceEsClientOptions = Omit; +interface Pipeline { + includeSerialization?: boolean; +} + export class InfraSynthtraceEsClient extends SynthtraceEsClient { constructor(options: { client: Client; logger: Logger } & InfraSynthtraceEsClientOptions) { super({ @@ -30,13 +34,26 @@ export class InfraSynthtraceEsClient extends SynthtraceEsClient { 'metrics-aws*', ]; } + + getDefaultPipeline( + { + includeSerialization, + }: { + includeSerialization?: boolean; + } = { includeSerialization: true } + ) { + return infraPipeline({ includeSerialization }); + } } -function infraPipeline() { +function infraPipeline({ includeSerialization }: Pipeline = { includeSerialization: true }) { return (base: Readable) => { + const serializationTransform = includeSerialization ? [getSerializeTransform()] : []; + return pipeline( + // @ts-expect-error Some weird stuff here with the type definition for pipeline. We have tests! base, - getSerializeTransform(), + ...serializationTransform, getRoutingTransform(), getDedotTransform(), (err: unknown) => { diff --git a/packages/kbn-apm-synthtrace/src/lib/utils/stream_utils.ts b/packages/kbn-apm-synthtrace/src/lib/utils/stream_utils.ts index 9e52e9fc2b0ad..77aba18974b38 100644 --- a/packages/kbn-apm-synthtrace/src/lib/utils/stream_utils.ts +++ b/packages/kbn-apm-synthtrace/src/lib/utils/stream_utils.ts @@ -8,11 +8,29 @@ */ import { eachSeries } from 'async'; -import MultiStream from 'multistream'; -import { Duplex, Readable, Transform } from 'stream'; +import { Duplex, Readable, Transform, PassThrough } from 'stream'; + +/** + * Pipe one or many streams sequentially into the destination stream. Once all + * source streams have been exhausted, the destination stream is ended. + * @param sources A collection of streams to read from + * @param destination The stream to pipe data to + */ +async function combineStreams(sources: Readable[], destination: PassThrough) { + for (const stream of sources) { + await new Promise((resolve, reject) => { + stream.on('end', resolve); + stream.on('error', reject); + stream.pipe(destination, { end: false }); + }); + } + destination.emit('end'); +} export function sequential(...streams: Readable[]) { - return new MultiStream(streams, { objectMode: true }); + const output = new PassThrough({ objectMode: true }); + combineStreams(streams, output).catch((err) => output.destroy(err)); + return output; } export function fork(...streams: Transform[]): Duplex { diff --git a/packages/kbn-avc-banner/jest.config.js b/packages/kbn-avc-banner/jest.config.js deleted file mode 100644 index e45e51dd79c86..0000000000000 --- a/packages/kbn-avc-banner/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['/packages/kbn-avc-banner'], -}; diff --git a/packages/kbn-avc-banner/tsconfig.json b/packages/kbn-avc-banner/tsconfig.json deleted file mode 100644 index b75e84d57cf72..0000000000000 --- a/packages/kbn-avc-banner/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/kibana-react-plugin", - ] -} diff --git a/packages/kbn-babel-preset/styled_components_files.js b/packages/kbn-babel-preset/styled_components_files.js index 89b71c06d9e84..1eaeb115ab673 100644 --- a/packages/kbn-babel-preset/styled_components_files.js +++ b/packages/kbn-babel-preset/styled_components_files.js @@ -15,9 +15,12 @@ module.exports = { USES_STYLED_COMPONENTS: [ /packages[\/\\]kbn-ui-shared-deps-(npm|src)[\/\\]/, /src[\/\\]plugins[\/\\](kibana_react)[\/\\]/, - /x-pack[\/\\]plugins[\/\\](observability_solution\/apm|beats_management|fleet|observability_solution\/infra|lists|observability_solution\/observability|observability_solution\/observability_shared|observability_solution\/exploratory_view|security_solution|timelines|observability_solution\/synthetics|observability_solution\/ux|observability_solution\/uptime)[\/\\]/, + /x-pack[\/\\]solutions[\/\\]observability[\/\\]plugins[\/\\]/, + /x-pack[\/\\]plugins[\/\\](observability_solution\/apm|beats_management|fleet|lists|observability_solution\/observability|observability_solution\/observability_shared|observability_solution\/exploratory_view|security_solution|timelines|observability_solution\/synthetics|observability_solution\/ux|observability_solution\/uptime)[\/\\]/, + /x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\](observability_solution\/apm|beats_management|fleet|observability_solution\/infra|lists|observability_solution\/observability|observability_solution\/observability_shared|observability_solution\/exploratory_view|security_solution|timelines|observability_solution\/synthetics|observability_solution\/ux|observability_solution\/uptime)[\/\\]/, /x-pack[\/\\]test[\/\\]plugin_functional[\/\\]plugins[\/\\]resolver_test[\/\\]/, /x-pack[\/\\]packages[\/\\]elastic_assistant[\/\\]/, - /x-pack[\/\\]packages[\/\\]security-solution[\/\\]ecs_data_quality_dashboard[\/\\]/, + /x-pack[\/\\]solutions[\/\\]security[\/\\]packages[\/\\]ecs_data_quality_dashboard[\/\\]/, + /x-pack[\/\\]platform[\/\\]packages[\/\\]shared[\/\\]kbn-elastic-assistant[\/\\]/, ], }; diff --git a/packages/kbn-cell-actions/jest.config.js b/packages/kbn-cell-actions/jest.config.js deleted file mode 100644 index 11196f0530fca..0000000000000 --- a/packages/kbn-cell-actions/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['/packages/kbn-cell-actions'], -}; diff --git a/packages/kbn-cell-actions/tsconfig.json b/packages/kbn-cell-actions/tsconfig.json deleted file mode 100644 index f7ac4890347af..0000000000000 --- a/packages/kbn-cell-actions/tsconfig.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@emotion/react/types/css-prop", - "@testing-library/jest-dom", - "@testing-library/react" - ] - }, - "include": ["**/*.ts", "**/*.tsx"], - "kbn_references": [ - "@kbn/ui-theme", - "@kbn/i18n", - "@kbn/core", - "@kbn/data-plugin", - "@kbn/es-query", - "@kbn/ui-actions-plugin", - "@kbn/field-types", - "@kbn/data-views-plugin", - "@kbn/core-notifications-browser", - "@kbn/utility-types", - ], - "exclude": ["target/**/*"] -} diff --git a/packages/kbn-code-owners/index.ts b/packages/kbn-code-owners/index.ts index 1c371d27e2575..df85bb6d9c624 100644 --- a/packages/kbn-code-owners/index.ts +++ b/packages/kbn-code-owners/index.ts @@ -7,9 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export type { PathWithOwners, CodeOwnership } from './src/file_code_owner'; +export type { CodeOwnersEntry } from './src/code_owners'; +export * as cli from './src/cli'; export { - getPathsWithOwnersReversed, - getCodeOwnersForFile, - runGetOwnersForFileCli, -} from './src/file_code_owner'; + getCodeOwnersEntries, + findCodeOwnersEntryForPath, + getOwningTeamsForPath, +} from './src/code_owners'; diff --git a/packages/kbn-code-owners/src/cli.ts b/packages/kbn-code-owners/src/cli.ts new file mode 100644 index 0000000000000..9e7a839e0546c --- /dev/null +++ b/packages/kbn-code-owners/src/cli.ts @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { run } from '@kbn/dev-cli-runner'; +import { findCodeOwnersEntryForPath } from './code_owners'; +import { throwIfPathIsMissing, throwIfPathNotInRepo } from './path'; + +/** + * CLI entrypoint for finding code owners for a given path. + */ +export async function findCodeOwnersForPath() { + await run( + async ({ flagsReader, log }) => { + const targetPath = flagsReader.requiredPath('path'); + throwIfPathIsMissing(targetPath, 'Target path', true); + throwIfPathNotInRepo(targetPath, true); + + const codeOwnersEntry = findCodeOwnersEntryForPath(targetPath); + + if (!codeOwnersEntry) { + log.warning(`No matching code owners entry found for path ${targetPath}`); + return; + } + + if (flagsReader.boolean('json')) { + // Replacer function that hides irrelevant fields in JSON output + const hideIrrelevantFields = (k: string, v: any) => { + return ['matcher'].includes(k) ? undefined : v; + }; + + log.write(JSON.stringify(codeOwnersEntry, hideIrrelevantFields, 2)); + return; + } + + log.write(`Matching pattern: ${codeOwnersEntry.pattern}`); + log.write('Teams:', codeOwnersEntry.teams); + }, + { + description: `Find code owners for a given path in this local Kibana repository`, + flags: { + string: ['path'], + boolean: ['json'], + help: ` + --path Path to find owners for (required) + --json Output result as JSON`, + }, + } + ); +} diff --git a/packages/kbn-code-owners/src/code_owners.ts b/packages/kbn-code-owners/src/code_owners.ts new file mode 100644 index 0000000000000..47aa2a67171c0 --- /dev/null +++ b/packages/kbn-code-owners/src/code_owners.ts @@ -0,0 +1,127 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { REPO_ROOT } from '@kbn/repo-info'; +import fs from 'node:fs'; +import path from 'node:path'; + +import ignore, { Ignore } from 'ignore'; +import { CODE_OWNERS_FILE, throwIfPathIsMissing, throwIfPathNotInRepo } from './path'; + +export interface CodeOwnersEntry { + pattern: string; + matcher: Ignore; + teams: string[]; + comment?: string; +} + +/** + * Generator function that yields lines from the CODEOWNERS file + */ +export function* getCodeOwnersLines(): Generator { + const codeOwnerLines = fs + .readFileSync(CODE_OWNERS_FILE, { encoding: 'utf8', flag: 'r' }) + .split(/\r?\n/); + + for (const line of codeOwnerLines) { + // Empty line + if (line.length === 0) continue; + + // Comment + if (line.startsWith('#')) continue; + + // Assignment override on backport branches to avoid review requests + if (line.includes('@kibanamachine')) continue; + + yield line.trim(); + } +} + +/** + * Get all code owner entries from the CODEOWNERS file + * + * Entries are ordered in reverse relative to how they're defined in the CODEOWNERS file + * as patterns defined lower in the CODEOWNERS file can override earlier entries. + */ +export function getCodeOwnersEntries(): CodeOwnersEntry[] { + const entries: CodeOwnersEntry[] = []; + + for (const line of getCodeOwnersLines()) { + const comment = line + .match(/#(.+)$/) + ?.at(1) + ?.trim(); + + const [rawPathPattern, ...rawTeams] = line + .replace(/#.+$/, '') // drop comment + .split(/\s+/); + + const pathPattern = rawPathPattern.replace(/\/$/, ''); + + entries.push({ + pattern: pathPattern, + teams: rawTeams.map((t) => t.replace('@', '')).filter((t) => t.length > 0), + comment, + + // Register code owner entry with the `ignores` lib for easy pattern matching later on + matcher: ignore().add(pathPattern), + }); + } + + // Reverse entry order as patterns defined lower in the CODEOWNERS file can override earlier entries + entries.reverse(); + + return entries; +} + +/** + * Get a list of matching code owners for a given path + * + * Tip: + * If you're making a lot of calls to this function, fetch the code owner paths once using + * `getCodeOwnersEntries` and pass it in the `getCodeOwnersEntries` parameter to speed up your queries.. + * + * @param searchPath The path to find code owners for + * @param codeOwnersEntries Pre-defined list of code owner paths to search in + * + * @returns Code owners entry if a match is found. + * @throws Error if `searchPath` does not exist or is not part of this repository + */ +export function findCodeOwnersEntryForPath( + searchPath: string, + codeOwnersEntries?: CodeOwnersEntry[] +): CodeOwnersEntry | undefined { + throwIfPathIsMissing(CODE_OWNERS_FILE, 'Code owners file'); + throwIfPathNotInRepo(searchPath); + const searchPathRelativeToRepo = path.relative(REPO_ROOT, searchPath); + + return (codeOwnersEntries || getCodeOwnersEntries()).find( + (p) => p.matcher.test(searchPathRelativeToRepo).ignored + ); +} + +/** + * Get a list of matching code owners for a given path + * + * Tip: + * If you're making a lot of calls to this function, fetch the code owner paths once using + * `getCodeOwnersEntries` and pass it in the `getCodeOwnersEntries` parameter to speed up your queries. + * + * @param searchPath The path to find code owners for + * @param codeOwnersEntries Pre-defined list of code owner entries + * + * @returns List of code owners for the given path. Empty list if no matching entry is found. + * @throws Error if `searchPath` does not exist or is not part of this repository + */ +export function getOwningTeamsForPath( + searchPath: string, + codeOwnersEntries?: CodeOwnersEntry[] +): string[] { + return findCodeOwnersEntryForPath(searchPath, codeOwnersEntries)?.teams || []; +} diff --git a/packages/kbn-code-owners/src/file_code_owner.ts b/packages/kbn-code-owners/src/file_code_owner.ts deleted file mode 100644 index aa3c856f15f7c..0000000000000 --- a/packages/kbn-code-owners/src/file_code_owner.ts +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { REPO_ROOT } from '@kbn/repo-info'; -import { createFailError, createFlagError } from '@kbn/dev-cli-errors'; -import { join as joinPath } from 'path'; -import { existsSync, readFileSync } from 'fs'; -import { run } from '@kbn/dev-cli-runner'; - -import type { Ignore } from 'ignore'; -import ignore from 'ignore'; - -export interface PathWithOwners { - path: string; - teams: string; - ignorePattern: Ignore; -} -export type CodeOwnership = Partial> | undefined; - -const existOrThrow = (targetFile: string) => { - if (existsSync(targetFile) === false) - throw createFailError(`Unable to determine code owners: file ${targetFile} Not Found`); -}; - -/** - * Get the .github/CODEOWNERS entries, prepared for path matching. - * The last matching CODEOWNERS entry has highest precedence: - * https://help.github.com/articles/about-codeowners/ - * so entries are returned in reversed order to later search for the first match. - */ -export function getPathsWithOwnersReversed(): PathWithOwners[] { - const codeownersPath = joinPath(REPO_ROOT, '.github', 'CODEOWNERS'); - existOrThrow(codeownersPath); - const codeownersContent = readFileSync(codeownersPath, { encoding: 'utf8', flag: 'r' }); - const codeownersLines = codeownersContent.split(/\r?\n/); - const codeowners = codeownersLines - .map((line) => line.trim()) - .filter((line) => line && line[0] !== '#') - // kibanamachine is an assignment override on backport branches to avoid review requests - .filter((line) => line && !line.includes('@kibanamachine')); - - const pathsWithOwners: PathWithOwners[] = codeowners.map((c) => { - const [path, ...ghTeams] = c.split(/\s+/); - const cleanedPath = path.replace(/\/$/, ''); // remove trailing slash - return { - path: cleanedPath, - teams: ghTeams.map((t) => t.replace('@', '')).join(), - // register CODEOWNERS entries with the `ignores` lib for later path matching - ignorePattern: ignore().add([cleanedPath]), - }; - }); - - return pathsWithOwners.reverse(); -} - -/** - * Get the GitHub CODEOWNERS for a file in the repository - * @param filePath the file to get code owners for - * @param reversedCodeowners a cached reversed code owners list, use to speed up multiple requests - */ -export function getCodeOwnersForFile( - filePath: string, - reversedCodeowners?: PathWithOwners[] -): CodeOwnership { - const pathsWithOwners = reversedCodeowners ?? getPathsWithOwnersReversed(); - const match = pathsWithOwners.find((p) => p.ignorePattern.test(filePath).ignored); - if (match?.path && match.teams) return { path: match.path, teams: match.teams }; - return; -} -const trimFrontSlash = (x: string): string => x.replace(/^\//, ''); -/** - * Run the getCodeOwnersForFile() method above. - * Report back to the cli with either success and the owner(s), or a failure. - * - * This function depends on a --file param being passed on the cli, like this: - * $ node scripts/get_owners_for_file.js --file SOME-FILE - */ -export async function runGetOwnersForFileCli() { - run( - async ({ flags, log }) => { - const targetFile = flags.file as string; - if (!targetFile) throw createFlagError(`Missing --file argument`); - existOrThrow(targetFile); // This call is duplicated in getPathsWithOwnersReversed(), so this is a short circuit - const result = getCodeOwnersForFile(targetFile); - if (result) - log.success(`Found matching entry in .github/CODEOWNERS: -${trimFrontSlash(result?.path ? result.path : '')} ${result.teams}`); - else log.error(`Ownership of file [${targetFile}] is UNKNOWN`); - }, - { - description: 'Report file ownership from GitHub CODEOWNERS file.', - flags: { - string: ['file'], - help: ` - --file Required, path to the file to report owners for. - `, - }, - } - ); -} diff --git a/packages/kbn-code-owners/src/path.ts b/packages/kbn-code-owners/src/path.ts new file mode 100644 index 0000000000000..4a8c09b041c82 --- /dev/null +++ b/packages/kbn-code-owners/src/path.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import fs from 'node:fs'; +import path from 'node:path'; +import { createFailError } from '@kbn/dev-cli-errors'; +import { REPO_ROOT } from '@kbn/repo-info'; + +/** CODEOWNERS file path **/ +export const CODE_OWNERS_FILE = path.join(REPO_ROOT, '.github', 'CODEOWNERS'); + +/** + * Throw an error if the given path does not exist + * + * @param targetPath Path to check + * @param description Path description used in the error message if an exception is thrown + * @param cli Whether this function is called from a CLI context + */ +export function throwIfPathIsMissing( + targetPath: fs.PathLike, + description = 'File', + cli: boolean = false +) { + if (fs.existsSync(targetPath)) return; + const msg = `${description} ${targetPath} does not exist`; + throw cli ? createFailError(msg) : new Error(msg); +} + +/** + * Throw an error if the given path does not reside in this repo + * + * @param targetPath Path to check + * @param cli Whether this function is called from a CLI context + */ +export function throwIfPathNotInRepo(targetPath: fs.PathLike, cli: boolean = false) { + const relativePath = path.relative(REPO_ROOT, targetPath.toString()); + + if (relativePath.includes('../')) { + const msg = `Path ${targetPath} is not part of this repository.`; + throw cli ? createFailError(msg) : new Error(msg); + } +} diff --git a/packages/kbn-coloring/src/palettes/types.ts b/packages/kbn-coloring/src/palettes/types.ts index b5e81a437f6da..5a43c65097960 100644 --- a/packages/kbn-coloring/src/palettes/types.ts +++ b/packages/kbn-coloring/src/palettes/types.ts @@ -140,7 +140,9 @@ export interface CustomPaletteParams { progression?: 'fixed'; rangeMin?: number; rangeMax?: number; + /** lower color stops */ stops?: ColorStop[]; + /** upper color stops */ colorStops?: ColorStop[]; steps?: number; maxSteps?: number | undefined; diff --git a/packages/kbn-coloring/src/palettes/utils.test.ts b/packages/kbn-coloring/src/palettes/utils.test.ts index 8292c7440063e..e7595a738bf11 100644 --- a/packages/kbn-coloring/src/palettes/utils.test.ts +++ b/packages/kbn-coloring/src/palettes/utils.test.ts @@ -9,6 +9,7 @@ import { getPaletteRegistry } from './mocks/palettes_registry'; import { + applyPaletteParams, getDataMinMax, getPaletteStops, getStepValue, @@ -312,3 +313,43 @@ describe('getStepValue', () => { ).toBe(1); }); }); + +describe('applyPaletteParams', () => { + const paletteRegistry = getPaletteRegistry(); + it('should return a palette stops array only by the name', () => { + expect( + applyPaletteParams( + paletteRegistry, + { name: 'default', type: 'palette', params: { name: 'default' } }, + { min: 0, max: 100 } + ) + ).toEqual([ + // stops are 0 and 50 by with a 20 offset (100 divided by 5 steps) for display + // the mock palette service has only 2 colors so tests are a bit off by that + { color: 'red', stop: 20 }, + { color: 'black', stop: 70 }, + ]); + }); + + it('should return a palette stops array reversed', () => { + expect( + applyPaletteParams( + paletteRegistry, + { name: 'default', type: 'palette', params: { name: 'default', reverse: true } }, + { min: 0, max: 100 } + ) + ).toEqual([ + { color: 'black', stop: 20 }, + { color: 'red', stop: 70 }, + ]); + }); + + it('should pick the default palette from the activePalette object when passed', () => { + expect( + applyPaletteParams(paletteRegistry, { name: 'mocked', type: 'palette' }, { min: 0, max: 100 }) + ).toEqual([ + { color: 'blue', stop: 20 }, + { color: 'yellow', stop: 70 }, + ]); + }); +}); diff --git a/packages/kbn-coloring/src/palettes/utils.ts b/packages/kbn-coloring/src/palettes/utils.ts index c10ef98f825af..a4a3c24f6a797 100644 --- a/packages/kbn-coloring/src/palettes/utils.ts +++ b/packages/kbn-coloring/src/palettes/utils.ts @@ -13,6 +13,7 @@ import { CustomPaletteParams, DataBounds, ColorStop, + PaletteOutput, } from './types'; import { @@ -20,9 +21,10 @@ import { DEFAULT_PALETTE_NAME, DEFAULT_MAX_STOP, DEFAULT_MIN_STOP, + CUSTOM_PALETTE, + COMPLEMENTARY_PALETTE, DEFAULT_FALLBACK_PALETTE, LEGACY_COMPLIMENTARY_PALETTE, - COMPLEMENTARY_PALETTE, } from './constants'; /** @internal **/ @@ -204,3 +206,46 @@ export function getActivePaletteName(name?: string): string { } return paletteName; } + +export function applyPaletteParams>( + palettes: PaletteRegistry, + activePalette: T, + dataBounds: DataBounds +) { + // make a copy of it as they have to be manipulated later on + const displayStops = getPaletteStops(palettes, activePalette?.params || {}, { + dataBounds, + defaultPaletteName: activePalette?.name, + }); + + if (activePalette?.params?.reverse && activePalette?.params?.name !== CUSTOM_PALETTE) { + return reversePalette(displayStops); + } + return displayStops; +} + +/** + * Returns color stops for given palette type: + * + * - custom - User has modified the stops in some way - return stops as is + * - non-custom - Default palette stops - Return new stops based on palette + * + * > This is needed for BWC when switching between kibana themes. + */ +export function getOverridePaletteStops>( + paletteService: PaletteRegistry, + activePalette?: T +) { + if (!activePalette || activePalette.name === CUSTOM_PALETTE || !activePalette.params?.stops) { + return activePalette?.params?.stops; + } + + const { stops, ...otherParams } = activePalette.params; + const colors = paletteService + .get(activePalette.name ?? DEFAULT_PALETTE_NAME) + .getCategoricalColors(stops.length, otherParams); + return stops.map((stop, i) => ({ + ...stop, + color: colors[i], + })); +} diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/__stories__/color_mapping.stories.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/__stories__/color_mapping.stories.tsx index 3eebf74205a07..3ebc8064987b4 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/__stories__/color_mapping.stories.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/__stories__/color_mapping.stories.tsx @@ -8,11 +8,11 @@ */ import React, { FC, useState } from 'react'; +import { getKbnPalettes } from '@kbn/palettes'; import { EuiFlyout, EuiForm, EuiPage, isColorDark } from '@elastic/eui'; import { ComponentStory } from '@storybook/react'; import { css } from '@emotion/react'; import { CategoricalColorMapping, ColorMappingProps } from '../categorical_color_mapping'; -import { AVAILABLE_PALETTES, getPalette, NeutralPalette } from '../palettes'; import { DEFAULT_COLOR_MAPPING_CONFIG } from '../config/default_color_mapping'; import { ColorMapping } from '../config'; import { getColorFactory } from '../color/color_handling'; @@ -30,9 +30,8 @@ const Template: ComponentStory> = (args) => { DEFAULT_COLOR_MAPPING_CONFIG ); - const getPaletteFn = getPalette(AVAILABLE_PALETTES, NeutralPalette); - - const colorFactory = getColorFactory(updatedModel, getPaletteFn, false, args.data); + const palettes = getKbnPalettes({ name: 'amsterdam', darkMode: false }); + const colorFactory = getColorFactory(updatedModel, palettes, false, args.data); return ( @@ -71,7 +70,7 @@ const Template: ComponentStory> = (args) => { ownFocus={false} > - + @@ -82,6 +81,7 @@ export const Default = Template.bind({}); Default.args = { model: { ...DEFAULT_COLOR_MAPPING_CONFIG, + paletteId: 'eui_amsterdam', colorMode: { type: 'categorical', @@ -119,7 +119,6 @@ Default.args = { ], }, - palettes: AVAILABLE_PALETTES, specialTokens: new Map(), // eslint-disable-next-line no-console onModelUpdate: (model) => console.log(model), diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.test.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.test.tsx index dd7b12305fdad..530f16f912d0d 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.test.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.test.tsx @@ -10,9 +10,9 @@ import React from 'react'; import { mount } from 'enzyme'; import { CategoricalColorMapping, ColorMappingInputData } from './categorical_color_mapping'; -import { AVAILABLE_PALETTES } from './palettes'; import { DEFAULT_COLOR_MAPPING_CONFIG } from './config/default_color_mapping'; import { MULTI_FIELD_KEY_SEPARATOR } from '@kbn/data-plugin/common'; +import { getKbnPalettes } from '@kbn/palettes'; const ASSIGNMENTS_LIST = '[data-test-subj="lns-colorMapping-assignmentsList"]'; const ASSIGNMENTS_PROMPT = '[data-test-subj="lns-colorMapping-assignmentsPrompt"]'; @@ -20,6 +20,8 @@ const ASSIGNMENTS_PROMPT_ADD_ALL = '[data-test-subj="lns-colorMapping-assignment const ASSIGNMENT_ITEM = (i: number) => `[data-test-subj="lns-colorMapping-assignmentsItem${i}"]`; describe('color mapping', () => { + const palettes = getKbnPalettes({ name: 'amsterdam', darkMode: false }); + it('load a default color mapping', () => { const dataInput: ColorMappingInputData = { type: 'categories', @@ -31,7 +33,7 @@ describe('color mapping', () => { data={dataInput} isDarkMode={false} model={{ ...DEFAULT_COLOR_MAPPING_CONFIG }} - palettes={AVAILABLE_PALETTES} + palettes={palettes} onModelUpdate={onModelUpdateFn} specialTokens={new Map()} /> @@ -53,7 +55,7 @@ describe('color mapping', () => { data={dataInput} isDarkMode={false} model={{ ...DEFAULT_COLOR_MAPPING_CONFIG }} - palettes={AVAILABLE_PALETTES} + palettes={palettes} onModelUpdate={onModelUpdateFn} specialTokens={new Map()} /> @@ -81,7 +83,7 @@ describe('color mapping', () => { data={dataInput} isDarkMode={false} model={{ ...DEFAULT_COLOR_MAPPING_CONFIG }} - palettes={AVAILABLE_PALETTES} + palettes={palettes} onModelUpdate={onModelUpdateFn} specialTokens={ new Map([ diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.tsx index 668cdc7ce07fd..8bd006ba9c663 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/categorical_color_mapping.tsx @@ -11,6 +11,7 @@ import React from 'react'; import { Provider } from 'react-redux'; import { type EnhancedStore, configureStore } from '@reduxjs/toolkit'; import { isEqual } from 'lodash'; +import { KbnPalettes } from '@kbn/palettes'; import { colorMappingReducer, updateModel } from './state/color_mapping'; import { Container } from './components/container/container'; import { ColorMapping } from './config'; @@ -43,8 +44,8 @@ export type ColorMappingInputData = export interface ColorMappingProps { /** The initial color mapping model, usually coming from a the visualization saved object */ model: ColorMapping.Config; - /** A map of paletteId and palette configuration */ - palettes: Map; + /** A collection of palette configurations */ + palettes: KbnPalettes; /** A data description of what needs to be colored */ data: ColorMappingInputData; /** Theme dark mode */ diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.test.ts b/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.test.ts index 627f39e5026ac..c97100781e005 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.test.ts +++ b/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.test.ts @@ -12,64 +12,52 @@ import { DEFAULT_NEUTRAL_PALETTE_INDEX, } from '../config/default_color_mapping'; import { getColorFactory } from './color_handling'; -import { getPalette, AVAILABLE_PALETTES } from '../palettes'; -import { - EUIAmsterdamColorBlindPalette, - EUI_AMSTERDAM_PALETTE_COLORS, -} from '../palettes/eui_amsterdam'; -import { NeutralPalette, NEUTRAL_COLOR_DARK, NEUTRAL_COLOR_LIGHT } from '../palettes/neutral'; import { toHex } from './color_math'; -import { ColorMapping } from '../config'; +import { KbnPalette, getKbnPalettes } from '@kbn/palettes'; describe('Color mapping - color generation', () => { - const getPaletteFn = getPalette(AVAILABLE_PALETTES, NeutralPalette); + const palettes = getKbnPalettes({ name: 'amsterdam', darkMode: false }); + const neutralPaletteColors = palettes + .get(KbnPalette.Neutral) + .colors() + .map((c) => c.toLowerCase()); + const elasticPaletteColors = palettes + .get(KbnPalette.Default) + .colors() + .map((c) => c.toLowerCase()); it('returns EUI light colors from default config', () => { - const colorFactory = getColorFactory(DEFAULT_COLOR_MAPPING_CONFIG, getPaletteFn, false, { + const colorFactory = getColorFactory(DEFAULT_COLOR_MAPPING_CONFIG, palettes, false, { type: 'categories', categories: ['catA', 'catB', 'catC'], }); - expect(colorFactory('catA')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[0]); - expect(colorFactory('catB')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[1]); - expect(colorFactory('catC')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[2]); + expect(colorFactory('catA')).toBe(elasticPaletteColors[0]); + expect(colorFactory('catB')).toBe(elasticPaletteColors[1]); + expect(colorFactory('catC')).toBe(elasticPaletteColors[2]); // if the category is not available in the `categories` list then a default netural is used // this is an edge case and ideally never happen expect(colorFactory('not_available_1')).toBe( - NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX] + neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX] ); }); // currently there is no difference in the two colors, but this could change in the future // this test will catch the change it('returns EUI dark colors from default config', () => { - const colorFactory = getColorFactory(DEFAULT_COLOR_MAPPING_CONFIG, getPaletteFn, true, { + const colorFactory = getColorFactory(DEFAULT_COLOR_MAPPING_CONFIG, palettes, true, { type: 'categories', categories: ['catA', 'catB', 'catC'], }); - expect(colorFactory('catA')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[0]); - expect(colorFactory('catB')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[1]); - expect(colorFactory('catC')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[2]); + expect(colorFactory('catA')).toBe(elasticPaletteColors[0]); + expect(colorFactory('catB')).toBe(elasticPaletteColors[1]); + expect(colorFactory('catC')).toBe(elasticPaletteColors[2]); // if the category is not available in the `categories` list then a default netural is used // this is an edge case and ideally never happen - expect(colorFactory('not_available')).toBe(NEUTRAL_COLOR_DARK[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('not_available')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); }); it('by default loops colors defined in palette', () => { - const twoColorPalette: ColorMapping.CategoricalPalette = { - id: 'twoColors', - name: 'twoColors', - colorCount: 2, - type: 'categorical', - getColor(indexInRange, isDarkMode, loop) { - return ['red', 'blue'][loop ? indexInRange % 2 : indexInRange]; - }, - }; - - const simplifiedGetPaletteGn = getPalette( - new Map([[twoColorPalette.id, twoColorPalette]]), - NeutralPalette - ); const colorFactory = getColorFactory( { ...DEFAULT_COLOR_MAPPING_CONFIG, @@ -84,37 +72,26 @@ describe('Color mapping - color generation', () => { touched: false, }, ], - paletteId: twoColorPalette.id, + paletteId: KbnPalette.Neutral, }, - simplifiedGetPaletteGn, + palettes, false, { type: 'categories', - categories: ['cat1', 'cat2', 'cat3', 'cat4'], + categories: ['cat1', 'cat2', 'cat3', 'cat4', 'cat5', 'cat6', 'cat7'], } ); - expect(colorFactory('cat1')).toBe('#ff0000'); - expect(colorFactory('cat2')).toBe('#0000ff'); + expect(colorFactory('cat1')).toBe(neutralPaletteColors[0]); + expect(colorFactory('cat2')).toBe(neutralPaletteColors[1]); + expect(colorFactory('cat3')).toBe(neutralPaletteColors[2]); + expect(colorFactory('cat4')).toBe(neutralPaletteColors[3]); + expect(colorFactory('cat5')).toBe(neutralPaletteColors[4]); // the palette will loop depending on the number of colors available - expect(colorFactory('cat3')).toBe('#ff0000'); - expect(colorFactory('cat4')).toBe('#0000ff'); + expect(colorFactory('cat6')).toBe(neutralPaletteColors[0]); + expect(colorFactory('cat7')).toBe(neutralPaletteColors[1]); }); it('returns the unassigned color if configured statically', () => { - const twoColorPalette: ColorMapping.CategoricalPalette = { - id: 'twoColors', - name: 'twoColors', - colorCount: 2, - type: 'categorical', - getColor(indexInRange, darkMode, loop) { - return ['red', 'blue'][loop ? indexInRange % 2 : indexInRange]; - }, - }; - - const simplifiedGetPaletteGn = getPalette( - new Map([[twoColorPalette.id, twoColorPalette]]), - NeutralPalette - ); const colorFactory = getColorFactory( { ...DEFAULT_COLOR_MAPPING_CONFIG, @@ -122,7 +99,7 @@ describe('Color mapping - color generation', () => { { color: { type: 'categorical', - paletteId: NeutralPalette.id, + paletteId: KbnPalette.Neutral, colorIndex: DEFAULT_NEUTRAL_PALETTE_INDEX, }, rule: { @@ -131,33 +108,32 @@ describe('Color mapping - color generation', () => { touched: false, }, ], - paletteId: twoColorPalette.id, }, - simplifiedGetPaletteGn, + palettes, false, { type: 'categories', categories: ['cat1', 'cat2', 'cat3', 'cat4'], } ); - expect(colorFactory('cat1')).toBe(NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX]); - expect(colorFactory('cat2')).toBe(NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX]); - expect(colorFactory('cat3')).toBe(NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX]); - expect(colorFactory('cat4')).toBe(NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('cat1')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('cat2')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('cat3')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('cat4')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); // if the category is not available in the `categories` list then a default netural is used // this is an edge case and ideally never happen - expect(colorFactory('not_available')).toBe(NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('not_available')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); }); it('handles special tokens, multi-field categories and non-trimmed whitespaces', () => { - const colorFactory = getColorFactory(DEFAULT_COLOR_MAPPING_CONFIG, getPaletteFn, false, { + const colorFactory = getColorFactory(DEFAULT_COLOR_MAPPING_CONFIG, palettes, false, { type: 'categories', categories: ['__other__', ['fieldA', 'fieldB'], '__empty__', ' with-whitespaces '], }); - expect(colorFactory('__other__')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[0]); - // expect(colorFactory(['fieldA', 'fieldB'])).toBe(EUI_AMSTERDAM_PALETTE_COLORS[1]); - expect(colorFactory('__empty__')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[2]); - expect(colorFactory(' with-whitespaces ')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[3]); + expect(colorFactory('__other__')).toBe(elasticPaletteColors[0]); + // expect(colorFactory(['fieldA', 'fieldB'])).toBe(elasticPaletteColors[1]); + expect(colorFactory('__empty__')).toBe(elasticPaletteColors[2]); + expect(colorFactory(' with-whitespaces ')).toBe(elasticPaletteColors[3]); }); it('ignores configured assignments in loop mode', () => { @@ -172,17 +148,17 @@ describe('Color mapping - color generation', () => { }, ], }, - getPaletteFn, + palettes, false, { type: 'categories', categories: ['catA', 'catB', 'configuredAssignment', 'nextCat'], } ); - expect(colorFactory('catA')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[0]); - expect(colorFactory('catB')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[1]); + expect(colorFactory('catA')).toBe(elasticPaletteColors[0]); + expect(colorFactory('catB')).toBe(elasticPaletteColors[1]); expect(colorFactory('configuredAssignment')).toBe('red'); - expect(colorFactory('nextCat')).toBe(EUI_AMSTERDAM_PALETTE_COLORS[2]); + expect(colorFactory('nextCat')).toBe(elasticPaletteColors[2]); }); it('color with auto rule are assigned in order of the configured data input', () => { @@ -207,7 +183,7 @@ describe('Color mapping - color generation', () => { }, ], }, - getPaletteFn, + palettes, false, { type: 'categories', @@ -222,7 +198,7 @@ describe('Color mapping - color generation', () => { expect(colorFactory('greenCat')).toBe('green'); // if the category is not available in the `categories` list then a default netural is used // this is an edge case and ideally never happen - expect(colorFactory('not_available')).toBe(NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('not_available')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); }); it('returns sequential gradient colors from darker to lighter [desc, lightMode]', () => { @@ -234,7 +210,7 @@ describe('Color mapping - color generation', () => { steps: [ { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Default, colorIndex: 0, touched: false, }, @@ -242,7 +218,7 @@ describe('Color mapping - color generation', () => { sort: 'desc', }, }, - getPaletteFn, + palettes, false, { type: 'categories', @@ -250,7 +226,7 @@ describe('Color mapping - color generation', () => { } ); // this matches exactly with the initial step selected - expect(toHex(colorFactory('cat1'))).toBe(toHex(EUI_AMSTERDAM_PALETTE_COLORS[0])); + expect(toHex(colorFactory('cat1'))).toBe(toHex(elasticPaletteColors[0])); expect(toHex(colorFactory('cat2'))).toBe('#93cebc'); expect(toHex(colorFactory('cat3'))).toBe('#cce8e0'); }); @@ -264,7 +240,7 @@ describe('Color mapping - color generation', () => { steps: [ { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Default, colorIndex: 0, touched: false, }, @@ -272,7 +248,7 @@ describe('Color mapping - color generation', () => { sort: 'asc', }, }, - getPaletteFn, + palettes, false, { type: 'categories', @@ -284,7 +260,7 @@ describe('Color mapping - color generation', () => { // mid green point expect(toHex(colorFactory('cat2'))).toBe('#93cebc'); // initial gradient color - expect(toHex(colorFactory('cat3'))).toBe(EUI_AMSTERDAM_PALETTE_COLORS[0]); + expect(toHex(colorFactory('cat3'))).toBe(elasticPaletteColors[0]); }); it('sequential gradients and static color from lighter to darker [asc, lightMode]', () => { const colorFactory = getColorFactory( @@ -300,7 +276,7 @@ describe('Color mapping - color generation', () => { steps: [ { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Default, colorIndex: 0, touched: false, }, @@ -312,7 +288,7 @@ describe('Color mapping - color generation', () => { color: { type: 'categorical', colorIndex: DEFAULT_NEUTRAL_PALETTE_INDEX, - paletteId: NeutralPalette.id, + paletteId: KbnPalette.Neutral, }, rule: { type: 'other', @@ -321,7 +297,7 @@ describe('Color mapping - color generation', () => { }, ], }, - getPaletteFn, + palettes, false, { type: 'categories', @@ -329,9 +305,9 @@ describe('Color mapping - color generation', () => { } ); expect(toHex(colorFactory('cat1'))).toBe('#cce8e0'); - expect(toHex(colorFactory('cat2'))).toBe(EUI_AMSTERDAM_PALETTE_COLORS[0]); + expect(toHex(colorFactory('cat2'))).toBe(elasticPaletteColors[0]); // this matches exactly with the initial step selected - expect(toHex(colorFactory('cat3'))).toBe(NEUTRAL_COLOR_LIGHT[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(toHex(colorFactory('cat3'))).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); }); it('returns 2 colors gradient [desc, lightMode]', () => { @@ -343,13 +319,13 @@ describe('Color mapping - color generation', () => { steps: [ { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Default, colorIndex: 0, touched: false, }, { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Default, colorIndex: 2, touched: false, }, @@ -357,16 +333,16 @@ describe('Color mapping - color generation', () => { sort: 'desc', }, }, - getPaletteFn, + palettes, false, { type: 'categories', categories: ['cat1', 'cat2', 'cat3'], } ); - expect(toHex(colorFactory('cat1'))).toBe(toHex(EUI_AMSTERDAM_PALETTE_COLORS[0])); // EUI green - expect(toHex(colorFactory('cat2'))).toBe('#a4908f'); // red gray green - expect(toHex(colorFactory('cat3'))).toBe(toHex(EUI_AMSTERDAM_PALETTE_COLORS[2])); // EUI pink + expect(toHex(colorFactory('cat1'))).toBe(toHex(elasticPaletteColors[0])); + expect(toHex(colorFactory('cat2'))).toBe('#a4908f'); + expect(toHex(colorFactory('cat3'))).toBe(toHex(elasticPaletteColors[2])); }); it('returns divergent gradient [asc, darkMode]', () => { @@ -378,14 +354,14 @@ describe('Color mapping - color generation', () => { steps: [ { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Default, colorIndex: 0, touched: false, }, - { type: 'categorical', paletteId: NeutralPalette.id, colorIndex: 0, touched: false }, + { type: 'categorical', paletteId: KbnPalette.Neutral, colorIndex: 0, touched: false }, { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Default, colorIndex: 2, touched: false, }, @@ -393,18 +369,18 @@ describe('Color mapping - color generation', () => { sort: 'asc', // testing in ascending order }, }, - getPaletteFn, + palettes, true, // testing in dark mode { type: 'categories', categories: ['cat1', 'cat2', 'cat3'], } ); - expect(toHex(colorFactory('cat1'))).toBe(toHex(EUI_AMSTERDAM_PALETTE_COLORS[2])); // EUI pink - expect(toHex(colorFactory('cat2'))).toBe(NEUTRAL_COLOR_DARK[0]); // NEUTRAL LIGHT GRAY - expect(toHex(colorFactory('cat3'))).toBe(toHex(EUI_AMSTERDAM_PALETTE_COLORS[0])); // EUI green - // if the category is not available in the `categories` list then a default netural is used + expect(toHex(colorFactory('cat1'))).toBe(toHex(elasticPaletteColors[2])); + expect(toHex(colorFactory('cat2'))).toBe(neutralPaletteColors[0]); + expect(toHex(colorFactory('cat3'))).toBe(toHex(elasticPaletteColors[0])); + // if the category is not available in the `categories` list then a default neutral is used // this is an edge case and ideally never happen - expect(colorFactory('not_available')).toBe(NEUTRAL_COLOR_DARK[DEFAULT_NEUTRAL_PALETTE_INDEX]); + expect(colorFactory('not_available')).toBe(neutralPaletteColors[DEFAULT_NEUTRAL_PALETTE_INDEX]); }); }); diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts b/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts index 373e56e3cb8f6..0031ac81908c0 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts +++ b/packages/kbn-coloring/src/shared_components/color_mapping/color/color_handling.ts @@ -9,9 +9,9 @@ import chroma from 'chroma-js'; import { findLast } from 'lodash'; +import { KbnPalette, KbnPalettes } from '@kbn/palettes'; import { ColorMapping } from '../config'; import { changeAlpha, combineColors, getValidColor } from './color_math'; -import { getPalette, NeutralPalette } from '../palettes'; import { ColorMappingInputData } from '../categorical_color_mapping'; import { ruleMatch } from './rule_matching'; import { GradientColorMode } from '../config/types'; @@ -25,7 +25,7 @@ export function getAssignmentColor( color: | ColorMapping.Config['assignments'][number]['color'] | (ColorMapping.LoopColor & { paletteId: string; colorIndex: number }), - getPaletteFn: ReturnType, + palettes: KbnPalettes, isDarkMode: boolean, index: number, total: number @@ -34,12 +34,12 @@ export function getAssignmentColor( case 'colorCode': case 'categorical': case 'loop': - return getColor(color, getPaletteFn, isDarkMode); + return getColor(color, palettes); case 'gradient': { if (colorMode.type === 'categorical') { return 'red'; } - const colorScale = getGradientColorScale(colorMode, getPaletteFn, isDarkMode); + const colorScale = getGradientColorScale(colorMode, palettes, isDarkMode); return total === 0 ? 'red' : total === 1 ? colorScale(0) : colorScale(index / (total - 1)); } } @@ -50,19 +50,16 @@ export function getColor( | ColorMapping.ColorCode | ColorMapping.CategoricalColor | (ColorMapping.LoopColor & { paletteId: string; colorIndex: number }), - getPaletteFn: ReturnType, - isDarkMode: boolean + palettes: KbnPalettes ): string { return color.type === 'colorCode' ? color.colorCode - : getValidColor( - getPaletteFn(color.paletteId).getColor(color.colorIndex, isDarkMode, true) - ).hex(); + : getValidColor(palettes.get(color.paletteId).getColor(color.colorIndex)).hex(); } export function getColorFactory( { assignments, specialAssignments, colorMode, paletteId }: ColorMapping.Config, - getPaletteFn: ReturnType, + palettes: KbnPalettes, isDarkMode: boolean, data: ColorMappingInputData ): (category: string | string[]) => string { @@ -104,7 +101,7 @@ export function getColorFactory( return getAssignmentColor( colorMode, autoByOrderAssignments[nonAssignedCategoryIndex].color, - getPaletteFn, + palettes, isDarkMode, autoAssignmentIndex, assignments.length @@ -129,7 +126,7 @@ export function getColorFactory( paletteId, } : specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX].color, - getPaletteFn, + palettes, isDarkMode, indexIfGradient, totalColorsIfGradient @@ -146,7 +143,7 @@ export function getColorFactory( return getAssignmentColor( colorMode, assignment.color, - getPaletteFn, + palettes, isDarkMode, matchingAssignmentIndex, assignments.length @@ -155,30 +152,29 @@ export function getColorFactory( return getColor( { type: 'categorical', - paletteId: NeutralPalette.id, + paletteId: KbnPalette.Neutral, colorIndex: DEFAULT_NEUTRAL_PALETTE_INDEX, }, - getPaletteFn, - isDarkMode + palettes ); }; } export function getGradientColorScale( colorMode: GradientColorMode, - getPaletteFn: ReturnType, + palettes: KbnPalettes, isDarkMode: boolean ): (value: number) => string { const steps = colorMode.steps.length === 1 ? [ - getColor(colorMode.steps[0], getPaletteFn, isDarkMode), + getColor(colorMode.steps[0], palettes), combineColors( - changeAlpha(getColor(colorMode.steps[0], getPaletteFn, isDarkMode), 0.3), + changeAlpha(getColor(colorMode.steps[0], palettes), 0.3), isDarkMode ? 'black' : 'white' ), ] - : colorMode.steps.map((d) => getColor(d, getPaletteFn, isDarkMode)); + : colorMode.steps.map((d) => getColor(d, palettes)); steps.sort(() => (colorMode.sort === 'asc' ? -1 : 1)); const scale = chroma.scale(steps).mode('lab'); return (value: number) => scale(value).hex(); diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/assignment.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/assignment.tsx index 0606aa94e6aa8..5a629a18cf959 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/assignment.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/assignment.tsx @@ -13,6 +13,7 @@ import { EuiButtonIcon, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; import { euiThemeVars } from '@kbn/ui-theme'; +import { IKbnPalette, KbnPalettes } from '@kbn/palettes'; import { removeAssignment, updateAssignmentColor, @@ -21,7 +22,6 @@ import { import { ColorMapping } from '../../config'; import { Range } from './range'; import { Match } from './match'; -import { getPalette } from '../../palettes'; import { ColorMappingInputData } from '../../categorical_color_mapping'; import { ColorSwatch } from '../color_picker/color_swatch'; @@ -33,8 +33,8 @@ export function Assignment({ index, total, palette, + palettes, colorMode, - getPaletteFn, isDarkMode, specialTokens, assignmentValuesCounter, @@ -45,8 +45,8 @@ export function Assignment({ colorMode: ColorMapping.Config['colorMode']; assignment: ColorMapping.Config['assignments'][number]; disableDelete: boolean; - palette: ColorMapping.CategoricalPalette; - getPaletteFn: ReturnType; + palette: IKbnPalette; + palettes: KbnPalettes; isDarkMode: boolean; specialTokens: Map; assignmentValuesCounter: Map; @@ -62,9 +62,9 @@ export function Assignment({ swatchShape="square" colorMode={colorMode} assignmentColor={assignment.color} - getPaletteFn={getPaletteFn} index={index} palette={palette} + palettes={palettes} total={total} onColorChange={(color) => { dispatch(updateAssignmentColor({ assignmentIndex: index, color })); diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/special_assignment.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/special_assignment.tsx index 3bdab18cbf19e..4834ccc57d822 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/special_assignment.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/assignment/special_assignment.tsx @@ -9,8 +9,7 @@ import { useDispatch } from 'react-redux'; import React from 'react'; -import { ColorMapping } from '../../config'; -import { getPalette } from '../../palettes'; +import { IKbnPalette, KbnPalettes } from '@kbn/palettes'; import { ColorSwatch } from '../color_picker/color_swatch'; import { updateSpecialAssignmentColor } from '../../state/color_mapping'; import { ColorCode, CategoricalColor } from '../../config/types'; @@ -19,15 +18,15 @@ export function SpecialAssignment({ assignmentColor, index, palette, - getPaletteFn, + palettes, isDarkMode, total, }: { isDarkMode: boolean; index: number; assignmentColor: CategoricalColor | ColorCode; - palette: ColorMapping.CategoricalPalette; - getPaletteFn: ReturnType; + palette: IKbnPalette; + palettes: KbnPalettes; total: number; }) { const dispatch = useDispatch(); @@ -36,7 +35,7 @@ export function SpecialAssignment({ forType="specialAssignment" colorMode={{ type: 'categorical' }} assignmentColor={assignmentColor} - getPaletteFn={getPaletteFn} + palettes={palettes} index={index} palette={palette} total={total} diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_picker.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_picker.tsx index e4d42b9645698..eafa07793dd5c 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_picker.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_picker.tsx @@ -10,32 +10,29 @@ import React, { useState } from 'react'; import { EuiButtonEmpty, EuiPopoverTitle, EuiTab, EuiTabs, EuiHorizontalRule } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { IKbnPalette, KbnPalette, KbnPalettes } from '@kbn/palettes'; import { ColorMapping } from '../../config'; -import { getPalette } from '../../palettes'; import { PaletteColors } from './palette_colors'; import { RGBPicker } from './rgb_picker'; -import { NeutralPalette } from '../../palettes/neutral'; export function ColorPicker({ - palette, - getPaletteFn, color, + palette, + palettes, close, selectColor, - isDarkMode, deleteStep, }: { color: ColorMapping.CategoricalColor | ColorMapping.ColorCode; - getPaletteFn: ReturnType; - palette: ColorMapping.CategoricalPalette; - isDarkMode: boolean; + palette: IKbnPalette; + palettes: KbnPalettes; close: () => void; selectColor: (color: ColorMapping.CategoricalColor | ColorMapping.ColorCode) => void; deleteStep?: () => void; }) { const [tab, setTab] = useState( color.type === 'categorical' && - (color.paletteId === palette.id || color.paletteId === NeutralPalette.id) + (color.paletteId === palette.id || color.paletteId === KbnPalette.Neutral) ? 'palette' : 'custom' ); @@ -64,20 +61,12 @@ export function ColorPicker({ {tab === 'palette' ? ( ) : ( - + )} {deleteStep ? ( <> diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_swatch.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_swatch.tsx index 590d66018e803..b1af9d364efd4 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_swatch.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/color_swatch.tsx @@ -18,10 +18,10 @@ import React from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; +import { IKbnPalette, KbnPalettes } from '@kbn/palettes'; import { ColorPicker } from './color_picker'; import { getAssignmentColor } from '../../color/color_handling'; import { ColorMapping } from '../../config'; -import { getPalette } from '../../palettes'; import { removeGradientColorStep } from '../../state/color_mapping'; import { selectColorPickerVisibility } from '../../state/selectors'; @@ -31,22 +31,23 @@ import { getValidColor } from '../../color/color_math'; interface ColorPickerSwatchProps { colorMode: ColorMapping.Config['colorMode']; assignmentColor: ColorMapping.Config['assignments'][number]['color']; - getPaletteFn: ReturnType; index: number; total: number; - palette: ColorMapping.CategoricalPalette; + palette: IKbnPalette; + palettes: KbnPalettes; onColorChange: (color: ColorMapping.CategoricalColor | ColorMapping.ColorCode) => void; swatchShape: 'square' | 'round'; isDarkMode: boolean; forType: 'assignment' | 'specialAssignment' | 'gradient'; } + export const ColorSwatch = ({ colorMode, assignmentColor, - getPaletteFn, index, total, palette, + palettes, onColorChange, swatchShape, isDarkMode, @@ -61,7 +62,7 @@ export const ColorSwatch = ({ const colorHex = getAssignmentColor( colorMode, assignmentColor, - getPaletteFn, + palettes, isDarkMode, index, total @@ -147,11 +148,9 @@ export const ColorSwatch = ({ } color={assignmentColor} palette={palette} - getPaletteFn={getPaletteFn} + palettes={palettes} close={() => dispatch(hideColorPickerVisibility())} - isDarkMode={isDarkMode} selectColor={(color) => { - // dispatch update onColorChange(color); }} deleteStep={ diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/palette_colors.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/palette_colors.tsx index 3f58ed5d564e9..0ed0d8d68bb63 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/palette_colors.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/palette_colors.tsx @@ -19,35 +19,33 @@ import { EuiSpacer, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { IKbnPalette, KbnPalette, KbnPalettes } from '@kbn/palettes'; import { ColorMapping } from '../../config'; -import { getPalette } from '../../palettes'; import { isSameColor } from '../../color/color_math'; -import { NeutralPalette } from '../../palettes/neutral'; export function PaletteColors({ palette, - isDarkMode, + palettes, color, - getPaletteFn, selectColor, }: { - palette: ColorMapping.CategoricalPalette; - isDarkMode: boolean; + palette: IKbnPalette; + palettes: KbnPalettes; color: ColorMapping.CategoricalColor | ColorMapping.ColorCode; - getPaletteFn: ReturnType; selectColor: (color: ColorMapping.CategoricalColor | ColorMapping.ColorCode) => void; }) { const colors = Array.from({ length: palette.colorCount }, (d, i) => { - return palette.getColor(i, isDarkMode, false); + return palette.getColor(i); }); - const neutralColors = Array.from({ length: NeutralPalette.colorCount }, (d, i) => { - return NeutralPalette.getColor(i, isDarkMode, false); + const neutralPalette = palettes.get(KbnPalette.Neutral); + const neutralColors = Array.from({ length: neutralPalette.colorCount }, (d, i) => { + return neutralPalette.getColor(i); }); const originalColor = color.type === 'categorical' - ? color.paletteId === NeutralPalette.id - ? NeutralPalette.getColor(color.colorIndex, isDarkMode, false) - : getPaletteFn(color.paletteId).getColor(color.colorIndex, isDarkMode, false) + ? color.paletteId === neutralPalette.id + ? neutralPalette.getColor(color.colorIndex) + : palettes.get(color.paletteId).getColor(color.colorIndex) : color.colorCode; return ( <> @@ -126,7 +124,7 @@ export function PaletteColors({ onClick={() => selectColor({ type: 'categorical', - paletteId: NeutralPalette.id, + paletteId: neutralPalette.id, colorIndex: index, }) } diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/rgb_picker.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/rgb_picker.tsx index 6c701fbfebacc..175d3ae36e71a 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/rgb_picker.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/color_picker/rgb_picker.tsx @@ -22,24 +22,19 @@ import chromajs from 'chroma-js'; import { css } from '@emotion/react'; import { euiThemeVars } from '@kbn/ui-theme'; import { i18n } from '@kbn/i18n'; +import { KbnPalettes } from '@kbn/palettes'; import { ColorMapping } from '../../config'; import { hasEnoughContrast } from '../../color/color_math'; -import { getPalette } from '../../palettes'; export function RGBPicker({ - isDarkMode, color, - getPaletteFn, + palettes, selectColor, - close, }: { - palette: ColorMapping.CategoricalPalette; - isDarkMode: boolean; color: ColorMapping.CategoricalColor | ColorMapping.ColorCode; - getPaletteFn: ReturnType; + palettes: KbnPalettes; selectColor: (color: ColorMapping.CategoricalColor | ColorMapping.ColorCode) => void; - close: () => void; }) { const [customColorMappingColor, setCustomColorMappingColor] = useState< ColorMapping.CategoricalColor | ColorMapping.ColorCode @@ -47,11 +42,7 @@ export function RGBPicker({ const customColorHex = customColorMappingColor.type === 'categorical' - ? getPaletteFn(customColorMappingColor.paletteId).getColor( - customColorMappingColor.colorIndex, - isDarkMode, - false - ) + ? palettes.get(customColorMappingColor.paletteId).getColor(customColorMappingColor.colorIndex) : customColorMappingColor.colorCode; const [colorTextInput, setColorTextInput] = useState(customColorHex); diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/container/assigments.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/container/assigments.tsx index 1f9c37b1c60b6..6abe702ca8bc3 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/container/assigments.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/container/assigments.tsx @@ -29,6 +29,7 @@ import { euiThemeVars } from '@kbn/ui-theme'; import { i18n } from '@kbn/i18n'; import { useDispatch, useSelector } from 'react-redux'; import { findLast } from 'lodash'; +import { KbnPalettes } from '@kbn/palettes'; import { Assignment } from '../assignment/assignment'; import { addNewAssignment, @@ -38,7 +39,6 @@ import { import { selectColorMode, selectComputedAssignments, selectPalette } from '../../state/selectors'; import { ColorMappingInputData } from '../../categorical_color_mapping'; import { ColorMapping } from '../../config'; -import { getPalette, NeutralPalette } from '../../palettes'; import { ruleMatch } from '../../color/rule_matching'; export function AssignmentsConfig({ @@ -47,7 +47,7 @@ export function AssignmentsConfig({ isDarkMode, specialTokens, }: { - palettes: Map; + palettes: KbnPalettes; data: ColorMappingInputData; isDarkMode: boolean; /** map between original and formatted tokens used to handle special cases, like the Other bucket and the empty bucket */ @@ -56,8 +56,7 @@ export function AssignmentsConfig({ const [showOtherActions, setShowOtherActions] = useState(false); const dispatch = useDispatch(); - const getPaletteFn = getPalette(palettes, NeutralPalette); - const palette = useSelector(selectPalette(getPaletteFn)); + const palette = useSelector(selectPalette(palettes)); const colorMode = useSelector(selectColorMode); const assignments = useSelector(selectComputedAssignments); @@ -100,13 +99,13 @@ export function AssignmentsConfig({ ? { type: 'categorical', paletteId: palette.id, - colorIndex: nextCategoricalIndex % palette.colorCount, + colorIndex: nextCategoricalIndex % palette.colors().length, } : { type: 'gradient' }, touched: false, }) ); - }, [assignments, colorMode.type, data.type, dispatch, palette.colorCount, palette.id]); + }, [assignments, colorMode.type, data.type, dispatch, palette]); const onClickAddAllCurrentCategories = useCallback(() => { if (data.type === 'categories') { @@ -128,7 +127,7 @@ export function AssignmentsConfig({ ? { type: 'categorical', paletteId: palette.id, - colorIndex: (nextCategoricalIndex + i) % palette.colorCount, + colorIndex: (nextCategoricalIndex + i) % palette.colors().length, } : { type: 'gradient' }, touched: false, @@ -137,15 +136,7 @@ export function AssignmentsConfig({ ); dispatch(addNewAssignments(newAssignments)); } - }, [ - dispatch, - assignments, - colorMode.type, - data.type, - palette.colorCount, - palette.id, - unmatchingCategories, - ]); + }, [data.type, assignments, unmatchingCategories, dispatch, colorMode.type, palette]); return ( ; + palettes: KbnPalettes; data: ColorMappingInputData; isDarkMode: boolean; /** map between original and formatted tokens used to handle special cases, like the Other bucket and the empty bucket */ specialTokens: Map; }) { const dispatch = useDispatch(); - - const getPaletteFn = getPalette(palettes, NeutralPalette); - - const palette = useSelector(selectPalette(getPaletteFn)); + const palette = useSelector(selectPalette(palettes)); const colorMode = useSelector(selectColorMode); const assignments = useSelector(selectComputedAssignments); @@ -55,14 +50,10 @@ export function Container({ gutterSize="s" > - + - + @@ -105,7 +96,7 @@ export function Container({ > diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/container/unassigned_terms_config.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/container/unassigned_terms_config.tsx index 3a7469d120f10..4ebaadeeb7b82 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/container/unassigned_terms_config.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/container/unassigned_terms_config.tsx @@ -19,14 +19,13 @@ import { import { i18n } from '@kbn/i18n'; import { useDispatch, useSelector } from 'react-redux'; import { css } from '@emotion/react'; +import { KbnPalette, KbnPalettes } from '@kbn/palettes'; import { updateSpecialAssignmentColor } from '../../state/color_mapping'; -import { getPalette, NeutralPalette } from '../../palettes'; import { DEFAULT_NEUTRAL_PALETTE_INDEX, DEFAULT_OTHER_ASSIGNMENT_INDEX, } from '../../config/default_color_mapping'; import { SpecialAssignment } from '../assignment/special_assignment'; -import { ColorMapping } from '../../config'; import { selectColorMode, selectPalette, selectSpecialAssignments } from '../../state/selectors'; import { ColorMappingInputData } from '../../categorical_color_mapping'; @@ -35,15 +34,13 @@ export function UnassignedTermsConfig({ data, isDarkMode, }: { - palettes: Map; + palettes: KbnPalettes; data: ColorMappingInputData; isDarkMode: boolean; }) { const dispatch = useDispatch(); - - const getPaletteFn = getPalette(palettes, NeutralPalette); - - const palette = useSelector(selectPalette(getPaletteFn)); + const neutralPalette = palettes.get(KbnPalette.Neutral); + const palette = useSelector(selectPalette(palettes)); const colorMode = useSelector(selectColorMode); const specialAssignments = useSelector(selectSpecialAssignments); const otherAssignment = specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX]; @@ -99,7 +96,7 @@ export function UnassignedTermsConfig({ : { type: 'categorical', colorIndex: DEFAULT_NEUTRAL_PALETTE_INDEX, - paletteId: NeutralPalette.id, + paletteId: neutralPalette.id, }, }) ); @@ -122,7 +119,7 @@ export function UnassignedTermsConfig({ index={0} palette={palette} isDarkMode={isDarkMode} - getPaletteFn={getPaletteFn} + palettes={palettes} assignmentColor={otherAssignment.color} total={specialAssignments.length} /> diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient.tsx index c08834fdd384a..5fc9dc40f1589 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient.tsx @@ -11,9 +11,9 @@ import React from 'react'; import { euiThemeVars } from '@kbn/ui-theme'; import { css } from '@emotion/react'; import { useDispatch } from 'react-redux'; +import { KbnPalettes } from '@kbn/palettes'; import { changeAlpha } from '../../color/color_math'; import { ColorMapping } from '../../config'; -import { getPalette } from '../../palettes'; import { getGradientColorScale } from '../../color/color_handling'; import { AddStop } from './gradient_add_stop'; import { ColorSwatch } from '../color_picker/color_swatch'; @@ -22,21 +22,21 @@ import { updateGradientColorStep } from '../../state/color_mapping'; export function Gradient({ paletteId, colorMode, - getPaletteFn, isDarkMode, + palettes, }: { paletteId: string; isDarkMode: boolean; colorMode: ColorMapping.Config['colorMode']; - getPaletteFn: ReturnType; + palettes: KbnPalettes; }) { const dispatch = useDispatch(); if (colorMode.type === 'categorical') { return null; } - const currentPalette = getPaletteFn(paletteId); - const gradientColorScale = getGradientColorScale(colorMode, getPaletteFn, isDarkMode); + const currentPalette = palettes.get(paletteId); + const gradientColorScale = getGradientColorScale(colorMode, palettes, isDarkMode); const startStepColor = colorMode.sort === 'asc' @@ -104,7 +104,7 @@ export function Gradient({ forType="gradient" colorMode={colorMode} assignmentColor={startStepColor} - getPaletteFn={getPaletteFn} + palettes={palettes} index={startStepIndex} palette={currentPalette} total={colorMode.steps.length} @@ -133,7 +133,7 @@ export function Gradient({ forType="gradient" colorMode={colorMode} assignmentColor={middleStepColor} - getPaletteFn={getPaletteFn} + palettes={palettes} index={middleStepIndex} palette={currentPalette} total={colorMode.steps.length} @@ -161,7 +161,7 @@ export function Gradient({ forType="gradient" colorMode={colorMode} assignmentColor={endStepColor} - getPaletteFn={getPaletteFn} + palettes={palettes} index={endStepIndex} palette={currentPalette} total={colorMode.steps.length} diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient_add_stop.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient_add_stop.tsx index 6b89f8143fb8f..1c6736262e217 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient_add_stop.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/gradient_add_stop.tsx @@ -20,6 +20,7 @@ import { import { useDispatch } from 'react-redux'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; +import { IKbnPalette } from '@kbn/palettes'; import { ColorMapping } from '../../config'; import { addGradientColorStep } from '../../state/color_mapping'; import { colorPickerVisibility } from '../../state/ui'; @@ -30,7 +31,7 @@ export function AddStop({ at, }: { colorMode: ColorMapping.GradientColorMode; - currentPalette: ColorMapping.CategoricalPalette; + currentPalette: IKbnPalette; at: number; }) { const euiTheme = useEuiTheme(); diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/palette_selector.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/palette_selector.tsx index 1d909f000a417..54c6d05bbed18 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/palette_selector.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/palette_selector.tsx @@ -7,25 +7,16 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import React, { useCallback, useState } from 'react'; +import React, { useCallback, useState, useMemo } from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { EuiColorPalettePicker, EuiConfirmModal, EuiFormRow } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { KbnPalettes } from '@kbn/palettes'; import { RootState, updatePalette } from '../../state/color_mapping'; -import { ColorMapping } from '../../config'; import { updateAssignmentsPalette, updateColorModePalette } from '../../config/assignments'; -import { getPalette } from '../../palettes'; -export function PaletteSelector({ - palettes, - getPaletteFn, - isDarkMode, -}: { - getPaletteFn: ReturnType; - palettes: Map; - isDarkMode: boolean; -}) { +export function PaletteSelector({ palettes }: { palettes: KbnPalettes }) { const dispatch = useDispatch(); const model = useSelector((state: RootState) => state.colorMapping); @@ -38,7 +29,7 @@ export function PaletteSelector({ model.assignments, model.colorMode, selectedPaletteId, - getPaletteFn, + palettes, preserveColorChanges ), colorMode: updateColorModePalette( @@ -49,7 +40,7 @@ export function PaletteSelector({ }) ); }, - [getPaletteFn, model, dispatch] + [dispatch, model.assignments, model.colorMode, palettes] ); const [preserveModalPaletteId, setPreserveModalPaletteId] = useState(null); @@ -85,6 +76,11 @@ export function PaletteSelector({ ) : null; + const currentPaletteId = useMemo( + () => palettes.get(model.paletteId).id, // need to resolve aliased id + [model.paletteId, palettes] + ); + return ( <> {preserveChangesModal} @@ -97,14 +93,15 @@ export function PaletteSelector({ d.name !== 'Neutral') + palettes={palettes + .getAll() + .filter((d) => d.type === 'categorical') .map((palette) => ({ 'data-test-subj': `kbnColoring_ColorMapping_Palette-${palette.id}`, value: palette.id, title: palette.name, palette: Array.from({ length: palette.colorCount }, (_, i) => { - return palette.getColor(i, isDarkMode, false); + return palette.getColor(i); }), type: 'fixed', }))} @@ -118,7 +115,7 @@ export function PaletteSelector({ switchPaletteFn(selectedPaletteId, false); } }} - valueOfSelected={model.paletteId} + valueOfSelected={currentPaletteId} selectionDisplay={'palette'} compressed={true} /> diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/scale.tsx b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/scale.tsx index f7249aa12d576..42fea54d6fdb7 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/scale.tsx +++ b/packages/kbn-coloring/src/shared_components/color_mapping/components/palette_selector/scale.tsx @@ -12,12 +12,12 @@ import { useSelector, useDispatch } from 'react-redux'; import { EuiButtonGroup, EuiConfirmModal, EuiFormRow } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { KbnPalettes } from '@kbn/palettes'; import { RootState, updatePalette } from '../../state/color_mapping'; import { ColorMapping } from '../../config'; import { updateAssignmentsPalette } from '../../config/assignments'; -import { getPalette } from '../../palettes'; -export function ScaleMode({ getPaletteFn }: { getPaletteFn: ReturnType }) { +export function ScaleMode({ palettes }: { palettes: KbnPalettes }) { const dispatch = useDispatch(); const colorMode = useSelector((state: RootState) => state.colorMapping.colorMode); const model = useSelector((state: RootState) => state.colorMapping); @@ -46,12 +46,12 @@ export function ScaleMode({ getPaletteFn }: { getPaletteFn: ReturnType( diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/config/assignments.ts b/packages/kbn-coloring/src/shared_components/color_mapping/config/assignments.ts index 3d30ce3c7f607..5f039c05074db 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/config/assignments.ts +++ b/packages/kbn-coloring/src/shared_components/color_mapping/config/assignments.ts @@ -7,17 +7,17 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import { KbnPalettes } from '@kbn/palettes'; import type { ColorMapping } from '.'; -import { getPalette } from '../palettes'; export function updateAssignmentsPalette( assignments: ColorMapping.Config['assignments'], colorMode: ColorMapping.Config['colorMode'], paletteId: string, - getPaletteFn: ReturnType, + palettes: KbnPalettes, preserveColorChanges: boolean ): ColorMapping.Config['assignments'] { - const palette = getPaletteFn(paletteId); + const palette = palettes.get(paletteId); return assignments.map(({ rule, color, touched }, index) => { if (preserveColorChanges && touched) { return { rule, color, touched }; @@ -27,7 +27,7 @@ export function updateAssignmentsPalette( ? { type: 'categorical', paletteId, - colorIndex: index % palette.colorCount, + colorIndex: index % palette.colors().length, } : { type: 'gradient' }; return { diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/config/default_color_mapping.ts b/packages/kbn-coloring/src/shared_components/color_mapping/config/default_color_mapping.ts index b613d0d76adb8..1005f5d89855a 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/config/default_color_mapping.ts +++ b/packages/kbn-coloring/src/shared_components/color_mapping/config/default_color_mapping.ts @@ -7,11 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import { KbnPalettes } from '@kbn/palettes'; import { ColorMapping } from '.'; -import { AVAILABLE_PALETTES, getPalette } from '../palettes'; -import { EUIAmsterdamColorBlindPalette } from '../palettes/eui_amsterdam'; -import { NeutralPalette } from '../palettes/neutral'; import { getColor, getGradientColorScale } from '../color/color_handling'; +import { DEFAULT_FALLBACK_PALETTE } from '../../../palettes'; export const DEFAULT_NEUTRAL_PALETTE_INDEX = 1; export const DEFAULT_OTHER_ASSIGNMENT_INDEX = 0; @@ -32,32 +31,31 @@ export const DEFAULT_COLOR_MAPPING_CONFIG: ColorMapping.Config = { touched: false, }, ], - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: DEFAULT_FALLBACK_PALETTE, colorMode: { type: 'categorical', }, }; export function getPaletteColors( - isDarkMode: boolean, + palettes: KbnPalettes, colorMappings?: ColorMapping.Config ): string[] { const colorMappingModel = colorMappings ?? { ...DEFAULT_COLOR_MAPPING_CONFIG }; - const palette = getPalette(AVAILABLE_PALETTES, NeutralPalette)(colorMappingModel.paletteId); - return getPaletteColorsFromPaletteId(isDarkMode, palette.id); + const palette = palettes.get(colorMappingModel.paletteId); + return getPaletteColorsFromPaletteId(palettes, palette.id); } export function getPaletteColorsFromPaletteId( - isDarkMode: boolean, + palettes: KbnPalettes, paletteId: ColorMapping.Config['paletteId'] ): string[] { - const palette = getPalette(AVAILABLE_PALETTES, NeutralPalette)(paletteId); - return Array.from({ length: palette.colorCount }, (d, i) => - palette.getColor(i, isDarkMode, true) - ); + const palette = palettes.get(paletteId); + return Array.from({ length: palette.colorCount }, (d, i) => palette.getColor(i)); } export function getColorsFromMapping( + palettes: KbnPalettes, isDarkMode: boolean, colorMappings?: ColorMapping.Config ): string[] { @@ -65,27 +63,18 @@ export function getColorsFromMapping( ...DEFAULT_COLOR_MAPPING_CONFIG, }; - const getPaletteFn = getPalette(AVAILABLE_PALETTES, NeutralPalette); if (colorMode.type === 'gradient') { - const colorScale = getGradientColorScale(colorMode, getPaletteFn, isDarkMode); + const colorScale = getGradientColorScale(colorMode, palettes, isDarkMode); return Array.from({ length: 6 }, (d, i) => colorScale(i / 6)); } else { - const palette = getPaletteFn(paletteId); + const palette = palettes.get(paletteId); const otherColors = specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX].color.type === 'loop' - ? Array.from({ length: palette.colorCount }, (d, i) => - palette.getColor(i, isDarkMode, true) - ) - : [ - getColor( - specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX].color, - getPaletteFn, - isDarkMode - ), - ]; + ? Array.from({ length: palette.colorCount }, (d, i) => palette.getColor(i)) + : [getColor(specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX].color, palettes)]; return [ ...assignments.map((a) => { - return a.color.type === 'gradient' ? '' : getColor(a.color, getPaletteFn, isDarkMode); + return a.color.type === 'gradient' ? '' : getColor(a.color, palettes); }), ...otherColors, ].filter((color) => color !== ''); diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/config/types.ts b/packages/kbn-coloring/src/shared_components/color_mapping/config/types.ts index 1c8b984dc52dd..79be2aa615c3c 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/config/types.ts +++ b/packages/kbn-coloring/src/shared_components/color_mapping/config/types.ts @@ -150,11 +150,3 @@ export interface Config { >; specialAssignments: Array>; } - -export interface CategoricalPalette { - id: string; - name: string; - type: 'categorical'; - colorCount: number; - getColor: (valueInRange: number, isDarkMode: boolean, loop: boolean) => string; -} diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/index.ts b/packages/kbn-coloring/src/shared_components/color_mapping/index.ts index 6337447c1038b..5cba53f0eadcc 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/index.ts +++ b/packages/kbn-coloring/src/shared_components/color_mapping/index.ts @@ -15,7 +15,6 @@ export { } from './categorical_color_mapping'; export type { ColorMappingInputData } from './categorical_color_mapping'; export type { ColorMapping } from './config'; -export * from './palettes'; export * from './color/color_handling'; export { SPECIAL_TOKENS_STRING_CONVERSION, getSpecialString } from './color/rule_matching'; export { diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts b/packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts deleted file mode 100644 index bd8492823b4db..0000000000000 --- a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/elastic_brand.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ColorMapping } from '../config'; - -export const ELASTIC_BRAND_PALETTE_COLORS = [ - '#20377d', - '#7de2d1', - '#ff957d', - '#f04e98', - '#0077cc', - '#fec514', -]; - -export const ElasticBrandPalette: ColorMapping.CategoricalPalette = { - id: 'elastic_brand_2023', - name: 'Elastic Brand', - colorCount: ELASTIC_BRAND_PALETTE_COLORS.length, - type: 'categorical', - getColor(indexInRange, isDarkMode, loop) { - return ELASTIC_BRAND_PALETTE_COLORS[ - loop ? indexInRange % ELASTIC_BRAND_PALETTE_COLORS.length : indexInRange - ]; - }, -}; diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts b/packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts deleted file mode 100644 index 7a29bc9f343e0..0000000000000 --- a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/eui_amsterdam.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ColorMapping } from '../config'; - -export const EUI_AMSTERDAM_PALETTE_COLORS = [ - '#54b399', - '#6092c0', - '#d36086', - '#9170b8', - '#ca8eae', - '#d6bf57', - '#b9a888', - '#da8b45', - '#aa6556', - '#e7664c', -]; - -export const EUIAmsterdamColorBlindPalette: ColorMapping.CategoricalPalette = { - id: 'eui_amsterdam_color_blind', - name: 'Default', - colorCount: EUI_AMSTERDAM_PALETTE_COLORS.length, - type: 'categorical', - getColor(indexInRange, isDarkMode, loop) { - return EUI_AMSTERDAM_PALETTE_COLORS[ - loop ? indexInRange % EUI_AMSTERDAM_PALETTE_COLORS.length : indexInRange - ]; - }, -}; diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/index.ts b/packages/kbn-coloring/src/shared_components/color_mapping/palettes/index.ts deleted file mode 100644 index ca3d5b9503885..0000000000000 --- a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ColorMapping } from '../config'; -import { ElasticBrandPalette } from './elastic_brand'; -import { EUIAmsterdamColorBlindPalette } from './eui_amsterdam'; -import { KibanaV7LegacyPalette } from './kibana_legacy'; -import { NeutralPalette } from './neutral'; - -export const AVAILABLE_PALETTES = new Map([ - [EUIAmsterdamColorBlindPalette.id, EUIAmsterdamColorBlindPalette], - [ElasticBrandPalette.id, ElasticBrandPalette], - [KibanaV7LegacyPalette.id, KibanaV7LegacyPalette], - [NeutralPalette.id, NeutralPalette], -]); - -/** - * This function should be instanciated once at the root of the component with the available palettes and - * a choosed default one and shared across components to keep a single point of truth of the available palettes and the default - * one. - */ -export function getPalette( - palettes: Map, - defaultPalette: ColorMapping.CategoricalPalette -): (paletteId: string) => ColorMapping.CategoricalPalette { - return (paletteId) => palettes.get(paletteId) ?? defaultPalette; -} - -export * from './eui_amsterdam'; -export * from './elastic_brand'; -export * from './kibana_legacy'; -export * from './neutral'; diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts b/packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts deleted file mode 100644 index c0c25049700fe..0000000000000 --- a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/kibana_legacy.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ColorMapping } from '../config'; - -export const KIBANA_V7_LEGACY_PALETTE_COLORS = [ - '#00a69b', - '#57c17b', - '#6f87d8', - '#663db8', - '#bc52bc', - '#9e3533', - '#daa05d', -]; - -export const KibanaV7LegacyPalette: ColorMapping.CategoricalPalette = { - id: 'kibana_v7_legacy', - name: 'Kibana Legacy', - colorCount: KIBANA_V7_LEGACY_PALETTE_COLORS.length, - type: 'categorical', - getColor(indexInRange, isDarkMode, loop) { - return KIBANA_V7_LEGACY_PALETTE_COLORS[ - loop ? indexInRange % KIBANA_V7_LEGACY_PALETTE_COLORS.length : indexInRange - ]; - }, -}; diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts b/packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.ts deleted file mode 100644 index 5d41ab0fa3c94..0000000000000 --- a/packages/kbn-coloring/src/shared_components/color_mapping/palettes/neutral.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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ColorMapping } from '../config'; - -const schemeGreys = ['#f2f4fb', '#d4d9e5', '#98a2b3', '#696f7d', '#353642']; -export const NEUTRAL_COLOR_LIGHT = schemeGreys.slice(); -export const NEUTRAL_COLOR_DARK = schemeGreys.slice().reverse(); - -export const NeutralPalette: ColorMapping.CategoricalPalette = { - id: 'neutral', - name: 'Neutral', - colorCount: NEUTRAL_COLOR_LIGHT.length, - type: 'categorical', - getColor(valueInRange, isDarkMode) { - return isDarkMode ? NEUTRAL_COLOR_DARK[valueInRange] : NEUTRAL_COLOR_LIGHT[valueInRange]; - }, -}; diff --git a/packages/kbn-coloring/src/shared_components/color_mapping/state/selectors.ts b/packages/kbn-coloring/src/shared_components/color_mapping/state/selectors.ts index 05454ead22a61..3f8053aa8e922 100644 --- a/packages/kbn-coloring/src/shared_components/color_mapping/state/selectors.ts +++ b/packages/kbn-coloring/src/shared_components/color_mapping/state/selectors.ts @@ -7,11 +7,11 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { getPalette } from '../palettes'; +import { KbnPalettes } from '@kbn/palettes'; import { RootState } from './color_mapping'; -export function selectPalette(getPaletteFn: ReturnType) { - return (state: RootState) => getPaletteFn(state.colorMapping.paletteId); +export function selectPalette(palettes: KbnPalettes) { + return (state: RootState) => palettes.get(state.colorMapping.paletteId); } export function selectColorMode(state: RootState) { return state.colorMapping.colorMode; diff --git a/packages/kbn-coloring/tsconfig.json b/packages/kbn-coloring/tsconfig.json index 3a97faa1b9d3a..c3be4a82e8baa 100644 --- a/packages/kbn-coloring/tsconfig.json +++ b/packages/kbn-coloring/tsconfig.json @@ -23,6 +23,7 @@ "@kbn/data-plugin", "@kbn/ui-theme", "@kbn/visualization-utils", + "@kbn/palettes", ], "exclude": [ "target/**/*", diff --git a/packages/kbn-data-stream-adapter/index.ts b/packages/kbn-data-stream-adapter/index.ts deleted file mode 100644 index f03a384dca1ff..0000000000000 --- a/packages/kbn-data-stream-adapter/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export { DataStreamAdapter } from './src/data_stream_adapter'; -export { DataStreamSpacesAdapter } from './src/data_stream_spaces_adapter'; - -export { retryTransientEsErrors, ecsFieldMap } from '@kbn/index-adapter'; -export type { - SetComponentTemplateParams, - SetIndexTemplateParams, - InstallParams, - EcsFieldMap, -} from '@kbn/index-adapter'; - -export * from '@kbn/index-adapter/src/field_maps/types'; diff --git a/packages/kbn-data-stream-adapter/jest.config.js b/packages/kbn-data-stream-adapter/jest.config.js deleted file mode 100644 index 9dad2c70d375c..0000000000000 --- a/packages/kbn-data-stream-adapter/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['/packages/kbn-data-stream-adapter'], -}; diff --git a/packages/kbn-data-stream-adapter/package.json b/packages/kbn-data-stream-adapter/package.json deleted file mode 100644 index 588c7e4a1cf37..0000000000000 --- a/packages/kbn-data-stream-adapter/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "@kbn/data-stream-adapter", - "version": "1.0.0", - "description": "Utility library for Elasticsearch Data Stream management", - "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0", - "private": true -} diff --git a/packages/kbn-data-stream-adapter/src/data_stream_adapter.ts b/packages/kbn-data-stream-adapter/src/data_stream_adapter.ts deleted file mode 100644 index f54ed81312d75..0000000000000 --- a/packages/kbn-data-stream-adapter/src/data_stream_adapter.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { IndexAdapter, SetIndexTemplateParams, type InstallParams } from '@kbn/index-adapter'; -import { createOrUpdateDataStream } from './create_or_update_data_stream'; - -export class DataStreamAdapter extends IndexAdapter { - public setIndexTemplate(params: SetIndexTemplateParams) { - super.setIndexTemplate({ ...params, isDataStream: true }); - } - - public async install(params: InstallParams) { - this.installed = true; - const { logger, pluginStop$, tasksTimeoutMs } = params; - const esClient = await params.esClient; - - await this.installTemplates(params); - - const installFn = this.getInstallFn({ logger, pluginStop$, tasksTimeoutMs }); - - // create data stream when everything is ready - await installFn( - createOrUpdateDataStream({ - name: this.name, - esClient, - logger, - totalFieldsLimit: this.totalFieldsLimit, - }), - `${this.name} data stream` - ); - } -} diff --git a/packages/kbn-data-stream-adapter/tsconfig.json b/packages/kbn-data-stream-adapter/tsconfig.json deleted file mode 100644 index 8c8bcce97fe74..0000000000000 --- a/packages/kbn-data-stream-adapter/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - ] - }, - "include": ["**/*.ts"], - "kbn_references": [ - "@kbn/core", - "@kbn/index-adapter", - ], - "exclude": [ - "target/**/*" - ], -} diff --git a/packages/kbn-discover-contextual-components/src/data_types/logs/components/cell_actions_popover.tsx b/packages/kbn-discover-contextual-components/src/data_types/logs/components/cell_actions_popover.tsx index 96651cf26189b..8fa56c56162ab 100644 --- a/packages/kbn-discover-contextual-components/src/data_types/logs/components/cell_actions_popover.tsx +++ b/packages/kbn-discover-contextual-components/src/data_types/logs/components/cell_actions_popover.tsx @@ -20,10 +20,10 @@ import { EuiTextTruncate, EuiButtonEmpty, EuiCopy, + useEuiTheme, } from '@elastic/eui'; import { css } from '@emotion/react'; import { useBoolean } from '@kbn/react-hooks'; -import { euiThemeVars } from '@kbn/ui-theme'; import type { DocViewFilterFn } from '@kbn/unified-doc-viewer/types'; import type { SharePluginStart } from '@kbn/share-plugin/public'; import type { CoreStart } from '@kbn/core-lifecycle-browser'; @@ -38,10 +38,6 @@ import { openCellActionPopoverAriaText, } from './translations'; -const codeFontCSS = css` - font-family: ${euiThemeVars.euiCodeFontFamily}; -`; - interface CellActionsPopoverProps { onFilter?: DocViewFilterFn; /* ECS mapping for the key */ @@ -67,6 +63,7 @@ export function CellActionsPopover({ renderValue, renderPopoverTrigger, }: CellActionsPopoverProps) { + const { euiTheme } = useEuiTheme(); const [isPopoverOpen, { toggle: togglePopover, off: closePopover }] = useBoolean(false); const makeFilterHandlerByOperator = (operator: '+' | '-') => () => { @@ -95,7 +92,12 @@ export function CellActionsPopover({ data-test-subj="dataTableCellActionPopoverTitle" > - + {property}{' '} {typeof renderValue === 'function' ? renderValue(value) : value} diff --git a/packages/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx b/packages/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx index 7dacc3393763e..c6d8d3b10e297 100644 --- a/packages/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx +++ b/packages/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx @@ -11,7 +11,6 @@ import { dynamic } from '@kbn/shared-ux-utility'; import React from 'react'; import { css } from '@emotion/react'; import { AgentName } from '@kbn/elastic-agent-utils'; -import { euiThemeVars } from '@kbn/ui-theme'; import type { SharePluginStart } from '@kbn/share-plugin/public'; import type { CoreStart } from '@kbn/core-lifecycle-browser'; import { @@ -28,6 +27,7 @@ import { } from '@kbn/discover-utils'; import { DataTableRecord, getFieldValue } from '@kbn/discover-utils'; import { LogDocument, ResourceFields, getAvailableResourceFields } from '@kbn/discover-utils/src'; +import { useEuiTheme } from '@elastic/eui'; import { FieldBadgeWithActions, FieldBadgeWithActionsProps } from '../cell_actions_popover'; import { ServiceNameBadgeWithActions } from '../service_name_badge_with_actions'; /** @@ -94,15 +94,18 @@ export const createResourceFields = ( value: resourceDoc[name] as string, ResourceBadge: resourceBadgeComponentWithDependencies, ...(name === SERVICE_NAME_FIELD && { - Icon: () => ( - - ), + Icon: () => { + const { euiTheme } = useEuiTheme(); + return ( + + ); + }, }), }; }); diff --git a/packages/kbn-discover-contextual-components/tsconfig.json b/packages/kbn-discover-contextual-components/tsconfig.json index 21d65228b9597..0dc07688b4cab 100644 --- a/packages/kbn-discover-contextual-components/tsconfig.json +++ b/packages/kbn-discover-contextual-components/tsconfig.json @@ -22,7 +22,6 @@ "@kbn/router-utils", "@kbn/management-settings-ids", "@kbn/share-plugin", - "@kbn/ui-theme", "@kbn/unified-data-table", "@kbn/unified-doc-viewer", "@kbn/react-hooks", diff --git a/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.test.ts b/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.test.ts index 47792f0aa6d17..fcbf7848603a9 100644 --- a/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.test.ts +++ b/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.test.ts @@ -13,7 +13,7 @@ import { LogLevelCoalescedValue } from './get_log_level_coalesed_value'; const euiTheme = { colors: { - lightShade: '#ffffff', + mediumShade: '#d3dae6', }, }; @@ -32,20 +32,20 @@ describe('getLogLevelColor', () => { '#d6bf57' ); expect(getLogLevelColor(LogLevelCoalescedValue.error, euiTheme as EuiThemeComputed)).toBe( - '#df9352' + '#e18774' ); expect(getLogLevelColor(LogLevelCoalescedValue.critical, euiTheme as EuiThemeComputed)).toBe( - '#e7664c' + '#dd7b67' ); expect(getLogLevelColor(LogLevelCoalescedValue.alert, euiTheme as EuiThemeComputed)).toBe( - '#da5e47' + '#d76f5b' ); expect(getLogLevelColor(LogLevelCoalescedValue.emergency, euiTheme as EuiThemeComputed)).toBe( - '#cc5642' + '#d2634e' ); // other expect(getLogLevelColor(LogLevelCoalescedValue.trace, euiTheme as EuiThemeComputed)).toBe( - '#ffffff' + '#d3dae6' ); }); }); diff --git a/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.ts b/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.ts index 3e9d2e419bb76..1418ae7f10f45 100644 --- a/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.ts +++ b/packages/kbn-discover-utils/src/data_types/logs/utils/get_log_level_color.ts @@ -7,7 +7,12 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { EuiThemeComputed, euiPaletteForTemperature, euiPaletteForStatus } from '@elastic/eui'; +import { + EuiThemeComputed, + euiPaletteForTemperature, + euiPaletteForStatus, + euiPaletteRed, +} from '@elastic/eui'; import { LogLevelCoalescedValue } from './get_log_level_coalesed_value'; export const getLogLevelColor = ( @@ -16,8 +21,11 @@ export const getLogLevelColor = ( ): string | undefined => { const euiPaletteForTemperature6 = euiPaletteForTemperature(6); const euiPaletteForStatus9 = euiPaletteForStatus(9); + const euiPaletteRed9 = euiPaletteRed(14); switch (logLevelCoalescedValue) { + case LogLevelCoalescedValue.trace: + return euiTheme.colors.mediumShade; case LogLevelCoalescedValue.debug: return euiPaletteForTemperature6[2]; // lighter, closer to the default color for all other unknown log levels case LogLevelCoalescedValue.info: @@ -27,15 +35,16 @@ export const getLogLevelColor = ( case LogLevelCoalescedValue.warning: return euiPaletteForStatus9[4]; case LogLevelCoalescedValue.error: - return euiPaletteForStatus9[5]; + return euiPaletteRed9[9]; case LogLevelCoalescedValue.critical: - return euiPaletteForStatus9[6]; + return euiPaletteRed9[10]; case LogLevelCoalescedValue.alert: - return euiPaletteForStatus9[7]; + return euiPaletteRed9[11]; case LogLevelCoalescedValue.emergency: + return euiPaletteRed9[12]; case LogLevelCoalescedValue.fatal: - return euiPaletteForStatus9[8]; + return euiPaletteRed9[13]; default: - return euiTheme.colors.lightShade; + return euiTheme.colors.mediumShade; } }; diff --git a/packages/kbn-discover-utils/src/utils/get_log_document_overview.ts b/packages/kbn-discover-utils/src/utils/get_log_document_overview.ts index 33c8fdba68526..04c70a87aff45 100644 --- a/packages/kbn-discover-utils/src/utils/get_log_document_overview.ts +++ b/packages/kbn-discover-utils/src/utils/get_log_document_overview.ts @@ -30,8 +30,7 @@ export function getLogDocumentOverview( }; const levelArray = doc.flattened[fieldConstants.LOG_LEVEL_FIELD]; - const level = - Array.isArray(levelArray) && levelArray.length ? levelArray[0].toLowerCase() : levelArray; + const level = Array.isArray(levelArray) && levelArray.length > 0 ? levelArray[0] : levelArray; const message = formatField(fieldConstants.MESSAGE_FIELD); const errorMessage = formatField(fieldConstants.ERROR_MESSAGE_FIELD); const eventOriginal = formatField(fieldConstants.EVENT_ORIGINAL_FIELD); diff --git a/packages/kbn-ebt-tools/BUILD.bazel b/packages/kbn-ebt-tools/BUILD.bazel index 7f916b42152ca..1ea329e82638e 100644 --- a/packages/kbn-ebt-tools/BUILD.bazel +++ b/packages/kbn-ebt-tools/BUILD.bazel @@ -25,6 +25,7 @@ SHARED_DEPS = [ "@npm//@elastic/apm-rum-core", "@npm//react", "@npm//react-router-dom", + "//packages/kbn-timerange" ] js_library( diff --git a/packages/kbn-ebt-tools/src/performance_metrics/context/measure_interaction/index.ts b/packages/kbn-ebt-tools/src/performance_metrics/context/measure_interaction/index.ts new file mode 100644 index 0000000000000..790314a8f0892 --- /dev/null +++ b/packages/kbn-ebt-tools/src/performance_metrics/context/measure_interaction/index.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { + getDateRange, + getOffsetFromNowInSeconds, + getTimeDifferenceInSeconds, +} from '@kbn/timerange'; +import { perfomanceMarkers } from '../../performance_markers'; +import { EventData } from '../performance_context'; + +interface PerformanceMeta { + queryRangeSecs: number; + queryOffsetSecs: number; +} + +export function measureInteraction() { + performance.mark(perfomanceMarkers.startPageChange); + const trackedRoutes: string[] = []; + return { + /** + * Marks the end of the page ready state and measures the performance between the start of the page change and the end of the page ready state. + * @param pathname - The pathname of the page. + * @param customMetrics - Custom metrics to be included in the performance measure. + */ + pageReady(pathname: string, eventData?: EventData) { + let performanceMeta: PerformanceMeta | undefined; + performance.mark(perfomanceMarkers.endPageReady); + + if (eventData?.meta) { + const { rangeFrom, rangeTo } = eventData.meta; + + // Convert the date range to epoch timestamps (in milliseconds) + const dateRangesInEpoch = getDateRange({ + from: rangeFrom, + to: rangeTo, + }); + + performanceMeta = { + queryRangeSecs: getTimeDifferenceInSeconds(dateRangesInEpoch), + queryOffsetSecs: + rangeTo === 'now' ? 0 : getOffsetFromNowInSeconds(dateRangesInEpoch.endDate), + }; + } + + if (!trackedRoutes.includes(pathname)) { + performance.measure(pathname, { + detail: { + eventName: 'kibana:plugin_render_time', + type: 'kibana:performance', + customMetrics: eventData?.customMetrics, + meta: performanceMeta, + }, + start: perfomanceMarkers.startPageChange, + end: perfomanceMarkers.endPageReady, + }); + trackedRoutes.push(pathname); + } + }, + }; +} diff --git a/packages/kbn-ebt-tools/src/performance_metrics/context/measure_interaction/measure_interaction.test.tsx b/packages/kbn-ebt-tools/src/performance_metrics/context/measure_interaction/measure_interaction.test.tsx new file mode 100644 index 0000000000000..5768a6126c571 --- /dev/null +++ b/packages/kbn-ebt-tools/src/performance_metrics/context/measure_interaction/measure_interaction.test.tsx @@ -0,0 +1,161 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { measureInteraction } from '.'; +import { perfomanceMarkers } from '../../performance_markers'; + +describe('measureInteraction', () => { + afterAll(() => { + jest.restoreAllMocks(); + }); + + beforeEach(() => { + jest.clearAllMocks(); + performance.mark = jest.fn(); + performance.measure = jest.fn(); + }); + + it('should mark the start of the page change', () => { + measureInteraction(); + expect(performance.mark).toHaveBeenCalledWith(perfomanceMarkers.startPageChange); + }); + + it('should mark the end of the page ready state and measure performance', () => { + const interaction = measureInteraction(); + const pathname = '/test-path'; + interaction.pageReady(pathname); + + expect(performance.mark).toHaveBeenCalledWith(perfomanceMarkers.endPageReady); + expect(performance.measure).toHaveBeenCalledWith(pathname, { + detail: { + eventName: 'kibana:plugin_render_time', + type: 'kibana:performance', + }, + start: perfomanceMarkers.startPageChange, + end: perfomanceMarkers.endPageReady, + }); + }); + + it('should include custom metrics and meta in the performance measure', () => { + const interaction = measureInteraction(); + const pathname = '/test-path'; + const eventData = { + customMetrics: { key1: 'foo-metric', value1: 100 }, + meta: { rangeFrom: 'now-15m', rangeTo: 'now' }, + }; + + interaction.pageReady(pathname, eventData); + + expect(performance.mark).toHaveBeenCalledWith(perfomanceMarkers.endPageReady); + expect(performance.measure).toHaveBeenCalledWith(pathname, { + detail: { + eventName: 'kibana:plugin_render_time', + type: 'kibana:performance', + customMetrics: eventData.customMetrics, + meta: { + queryRangeSecs: 900, + queryOffsetSecs: 0, + }, + }, + end: 'end::pageReady', + start: 'start::pageChange', + }); + }); + + it('should handle absolute date format correctly', () => { + const interaction = measureInteraction(); + const pathname = '/test-path'; + jest.spyOn(global.Date, 'now').mockReturnValue(1733704200000); // 2024-12-09T00:30:00Z + + const eventData = { + meta: { rangeFrom: '2024-12-09T00:00:00Z', rangeTo: '2024-12-09T00:30:00Z' }, + }; + + interaction.pageReady(pathname, eventData); + + expect(performance.mark).toHaveBeenCalledWith(perfomanceMarkers.endPageReady); + expect(performance.measure).toHaveBeenCalledWith(pathname, { + detail: { + eventName: 'kibana:plugin_render_time', + type: 'kibana:performance', + customMetrics: undefined, + meta: { + queryRangeSecs: 1800, + queryOffsetSecs: 0, + }, + }, + end: 'end::pageReady', + start: 'start::pageChange', + }); + }); + + it('should handle negative offset when rangeTo is in the past', () => { + const interaction = measureInteraction(); + const pathname = '/test-path'; + jest.spyOn(global.Date, 'now').mockReturnValue(1733704200000); // 2024-12-09T00:30:00Z + + const eventData = { + meta: { rangeFrom: '2024-12-08T00:00:00Z', rangeTo: '2024-12-09T00:00:00Z' }, + }; + + interaction.pageReady(pathname, eventData); + + expect(performance.mark).toHaveBeenCalledWith(perfomanceMarkers.endPageReady); + expect(performance.measure).toHaveBeenCalledWith(pathname, { + detail: { + eventName: 'kibana:plugin_render_time', + type: 'kibana:performance', + customMetrics: undefined, + meta: { + queryRangeSecs: 86400, + queryOffsetSecs: -1800, + }, + }, + end: 'end::pageReady', + start: 'start::pageChange', + }); + }); + + it('should handle positive offset when rangeTo is in the future', () => { + const interaction = measureInteraction(); + const pathname = '/test-path'; + jest.spyOn(global.Date, 'now').mockReturnValue(1733704200000); // 2024-12-09T00:30:00Z + + const eventData = { + meta: { rangeFrom: '2024-12-08T01:00:00Z', rangeTo: '2024-12-09T01:00:00Z' }, + }; + + interaction.pageReady(pathname, eventData); + + expect(performance.mark).toHaveBeenCalledWith(perfomanceMarkers.endPageReady); + expect(performance.measure).toHaveBeenCalledWith(pathname, { + detail: { + eventName: 'kibana:plugin_render_time', + type: 'kibana:performance', + customMetrics: undefined, + meta: { + queryRangeSecs: 86400, + queryOffsetSecs: 1800, + }, + }, + end: 'end::pageReady', + start: 'start::pageChange', + }); + }); + + it('should not measure the same route twice', () => { + const interaction = measureInteraction(); + const pathname = '/test-path'; + + interaction.pageReady(pathname); + interaction.pageReady(pathname); + + expect(performance.measure).toHaveBeenCalledTimes(1); + }); +}); diff --git a/packages/kbn-ebt-tools/src/performance_metrics/context/performance_context.tsx b/packages/kbn-ebt-tools/src/performance_metrics/context/performance_context.tsx index a55c8d0475797..c3e60270c6ac4 100644 --- a/packages/kbn-ebt-tools/src/performance_metrics/context/performance_context.tsx +++ b/packages/kbn-ebt-tools/src/performance_metrics/context/performance_context.tsx @@ -10,38 +10,19 @@ import React, { useMemo, useState } from 'react'; import { afterFrame } from '@elastic/apm-rum-core'; import { useLocation } from 'react-router-dom'; -import { perfomanceMarkers } from '../performance_markers'; import { PerformanceApi, PerformanceContext } from './use_performance_context'; import { PerformanceMetricEvent } from '../../performance_metric_events'; +import { measureInteraction } from './measure_interaction'; export type CustomMetrics = Omit; -function measureInteraction() { - performance.mark(perfomanceMarkers.startPageChange); - const trackedRoutes: string[] = []; - return { - /** - * Marks the end of the page ready state and measures the performance between the start of the page change and the end of the page ready state. - * @param pathname - The pathname of the page. - * @param customMetrics - Custom metrics to be included in the performance measure. - */ - pageReady(pathname: string, customMetrics?: CustomMetrics) { - performance.mark(perfomanceMarkers.endPageReady); - - if (!trackedRoutes.includes(pathname)) { - performance.measure(pathname, { - detail: { - eventName: 'kibana:plugin_render_time', - type: 'kibana:performance', - customMetrics, - }, - start: perfomanceMarkers.startPageChange, - end: perfomanceMarkers.endPageReady, - }); - trackedRoutes.push(pathname); - } - }, - }; +export interface Meta { + rangeFrom: string; + rangeTo: string; +} +export interface EventData { + customMetrics?: CustomMetrics; + meta?: Meta; } export function PerformanceContextProvider({ children }: { children: React.ReactElement }) { @@ -61,9 +42,9 @@ export function PerformanceContextProvider({ children }: { children: React.React const api = useMemo( () => ({ - onPageReady(customMetrics) { + onPageReady(eventData) { if (isRendered) { - interaction.pageReady(location.pathname, customMetrics); + interaction.pageReady(location.pathname, eventData); } }, }), diff --git a/packages/kbn-ebt-tools/src/performance_metrics/context/use_page_ready.ts b/packages/kbn-ebt-tools/src/performance_metrics/context/use_page_ready.ts index 4c399c0d3de82..775a822a308d3 100644 --- a/packages/kbn-ebt-tools/src/performance_metrics/context/use_page_ready.ts +++ b/packages/kbn-ebt-tools/src/performance_metrics/context/use_page_ready.ts @@ -8,18 +8,22 @@ */ import { useEffect, useState } from 'react'; -import { CustomMetrics } from './performance_context'; +import type { CustomMetrics, Meta } from './performance_context'; import { usePerformanceContext } from '../../..'; -export const usePageReady = (state: { customMetrics?: CustomMetrics; isReady: boolean }) => { +export const usePageReady = (state: { + customMetrics?: CustomMetrics; + isReady: boolean; + meta?: Meta; +}) => { const { onPageReady } = usePerformanceContext(); const [isReported, setIsReported] = useState(false); useEffect(() => { if (state.isReady && !isReported) { - onPageReady(state.customMetrics); + onPageReady({ customMetrics: state.customMetrics, meta: state.meta }); setIsReported(true); } - }, [isReported, onPageReady, state.customMetrics, state.isReady]); + }, [isReported, onPageReady, state.customMetrics, state.isReady, state.meta]); }; diff --git a/packages/kbn-ebt-tools/src/performance_metrics/context/use_performance_context.tsx b/packages/kbn-ebt-tools/src/performance_metrics/context/use_performance_context.tsx index 1e045230cfe07..a2fab435778e1 100644 --- a/packages/kbn-ebt-tools/src/performance_metrics/context/use_performance_context.tsx +++ b/packages/kbn-ebt-tools/src/performance_metrics/context/use_performance_context.tsx @@ -8,14 +8,13 @@ */ import { createContext, useContext } from 'react'; -import { CustomMetrics } from './performance_context'; - +import type { EventData } from './performance_context'; export interface PerformanceApi { /** * Marks the end of the page ready state and measures the performance between the start of the page change and the end of the page ready state. - * @param customMetrics - Custom metrics to be included in the performance measure. + * @param eventData - Data to send with the performance measure, conforming the structure of a {@link EventData}. */ - onPageReady(customMetrics?: CustomMetrics): void; + onPageReady(eventData?: EventData): void; } export const PerformanceContext = createContext(undefined); diff --git a/packages/kbn-ebt-tools/tsconfig.json b/packages/kbn-ebt-tools/tsconfig.json index 680ae75219fff..f74f8991be327 100644 --- a/packages/kbn-ebt-tools/tsconfig.json +++ b/packages/kbn-ebt-tools/tsconfig.json @@ -5,8 +5,6 @@ "types": ["jest", "node"] }, "include": ["**/*.ts", "**/*.tsx"], - "kbn_references": [ - "@kbn/logging-mocks" - ], + "kbn_references": ["@kbn/logging-mocks", "@kbn/timerange"], "exclude": ["target/**/*"] } diff --git a/packages/kbn-es-types/index.ts b/packages/kbn-es-types/index.ts index 683fddb541baf..d4ba23840e2a6 100644 --- a/packages/kbn-es-types/index.ts +++ b/packages/kbn-es-types/index.ts @@ -13,6 +13,7 @@ export type { SearchHit, ESSearchResponse, ESSearchRequest, + ESSearchRequestWithoutBody, ESSourceOptions, InferSearchResponseOf, AggregationResultOf, diff --git a/packages/kbn-es-types/src/index.ts b/packages/kbn-es-types/src/index.ts index 2ec37ba474789..77d02320b6f2d 100644 --- a/packages/kbn-es-types/src/index.ts +++ b/packages/kbn-es-types/src/index.ts @@ -8,6 +8,7 @@ */ import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import * as estypesWithoutBody from '@elastic/elasticsearch/lib/api/types'; import type { Field, QueryDslFieldAndFormat, @@ -26,6 +27,7 @@ import { export type ESFilter = estypes.QueryDslQueryContainer; export type ESSearchRequest = estypes.SearchRequest; +export type ESSearchRequestWithoutBody = estypesWithoutBody.SearchRequest; export type AggregationOptionsByType = Required; // Typings for Elasticsearch queries and aggregations. These are intended to be diff --git a/packages/kbn-es-types/src/search.ts b/packages/kbn-es-types/src/search.ts index d3675e04c2663..1c9a9e16fd4a7 100644 --- a/packages/kbn-es-types/src/search.ts +++ b/packages/kbn-es-types/src/search.ts @@ -23,20 +23,15 @@ type InvalidAggregationRequest = unknown; // Union keys are not included in keyof, but extends iterates over the types in a union. type ValidAggregationKeysOf> = T extends T ? keyof T : never; -type KeyOfSource = Record< - keyof T, - (T extends Record ? null : never) | string | number ->; +type KeyOfSource = { + [key in keyof T]: + | (T[key] extends Record ? null : never) + | string + | number; +}; -type KeysOfSources = T extends [any] - ? KeyOfSource - : T extends [any, any] - ? KeyOfSource & KeyOfSource - : T extends [any, any, any] - ? KeyOfSource & KeyOfSource & KeyOfSource - : T extends [any, any, any, any] - ? KeyOfSource & KeyOfSource & KeyOfSource & KeyOfSource - : Record; +// convert to intersection to be able to get all the keys +type KeysOfSources = UnionToIntersection>>>; type CompositeKeysOf = TAggregationContainer extends { diff --git a/packages/kbn-eslint-plugin-i18n/helpers/get_i18n_identifier_from_file_path.test.ts b/packages/kbn-eslint-plugin-i18n/helpers/get_i18n_identifier_from_file_path.test.ts index ca59efd40de44..fc7bf0b6bb509 100644 --- a/packages/kbn-eslint-plugin-i18n/helpers/get_i18n_identifier_from_file_path.test.ts +++ b/packages/kbn-eslint-plugin-i18n/helpers/get_i18n_identifier_from_file_path.test.ts @@ -13,7 +13,7 @@ const SYSTEMPATH = 'systemPath'; const testMap = [ [ - 'x-pack/plugins/observability_solution/observability/public/header_actions.tsx', + 'x-pack/solutions/observability/plugins/observability/public/header_actions.tsx', 'xpack.observability', ], [ @@ -22,7 +22,7 @@ const testMap = [ ], ['x-pack/plugins/cases/server/components/foo.tsx', 'xpack.cases'], [ - 'x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/toggle_alert_flyout_button.tsx', + 'x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/toggle_alert_flyout_button.tsx', 'xpack.synthetics', ], ['src/plugins/vis_types/gauge/public/editor/collections.ts', 'visTypeGauge'], diff --git a/packages/kbn-eslint-plugin-i18n/rules/formatted_message_should_start_with_the_right_id.test.ts b/packages/kbn-eslint-plugin-i18n/rules/formatted_message_should_start_with_the_right_id.test.ts index 55d32fb801f04..69d03af917d1b 100644 --- a/packages/kbn-eslint-plugin-i18n/rules/formatted_message_should_start_with_the_right_id.test.ts +++ b/packages/kbn-eslint-plugin-i18n/rules/formatted_message_should_start_with_the_right_id.test.ts @@ -52,13 +52,13 @@ for (const [name, tester] of [tsTester, babelTester]) { { name: 'When a string literal is passed to FormattedMessage the ID attribute should start with the correct i18n identifier, and if no existing defaultMessage is passed, it should add an empty default.', filename: - '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ``, }, { name: 'When a string literal is passed to FormattedMessage the ID attribute should start with the correct i18n identifier, and if an existing id and defaultMessage is passed, it should leave them alone.', filename: - '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ``, }, ], @@ -66,7 +66,7 @@ for (const [name, tester] of [tsTester, babelTester]) { { name: 'When a string literal is passed to FormattedMessage the ID attribute should start with the correct i18n identifier, and if no existing defaultMessage is passed, it should add an empty default.', filename: - '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import { FormattedMessage } from '@kbn/i18n-react'; @@ -89,7 +89,7 @@ for (const [name, tester] of [tsTester, babelTester]) { { name: 'When a string literal is passed to the ID attribute of and the root of the i18n identifier is not correct, it should keep the existing identifier but only update the right base app, and keep the default message if available.', filename: - '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import { FormattedMessage } from '@kbn/i18n-react'; @@ -112,7 +112,7 @@ for (const [name, tester] of [tsTester, babelTester]) { { name: 'When no string literal is passed to the ID attribute of it should start with the correct i18n identifier.', filename: - '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import { FormattedMessage } from '@kbn/i18n-react'; @@ -135,7 +135,7 @@ for (const [name, tester] of [tsTester, babelTester]) { { name: 'When i18n is not imported yet, the rule should add it.', filename: - '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` function TestComponent() { return ; diff --git a/packages/kbn-eslint-plugin-i18n/rules/i18n_translate_should_start_with_the_right_id.test.ts b/packages/kbn-eslint-plugin-i18n/rules/i18n_translate_should_start_with_the_right_id.test.ts index 36ddbdd3c4258..df701532517b6 100644 --- a/packages/kbn-eslint-plugin-i18n/rules/i18n_translate_should_start_with_the_right_id.test.ts +++ b/packages/kbn-eslint-plugin-i18n/rules/i18n_translate_should_start_with_the_right_id.test.ts @@ -45,7 +45,7 @@ const babelTester = [ const invalid: RuleTester.InvalidTestCase[] = [ { name: 'When a string literal is passed to i18n.translate, it should start with the correct i18n identifier, and if no existing defaultMessage is passed, it should add an empty default.', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.ts', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.ts', code: ` import { i18n } from '@kbn/i18n'; @@ -67,7 +67,7 @@ function TestComponent() { }, { name: 'When a string literal is passed to i18n.translate, and the root of the i18n identifier is not correct, it should keep the existing identifier but only update the right base app.', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.ts', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.ts', code: ` import { i18n } from '@kbn/i18n'; @@ -89,7 +89,7 @@ function TestComponent() { }, { name: 'When a string literal is passed to i18n.translate, and the root of the i18n identifier is not correct, it should keep the existing identifier but only update the right base app, and keep the default message if available.', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.ts', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.ts', code: ` import { i18n } from '@kbn/i18n'; @@ -111,7 +111,7 @@ function TestComponent() { }, { name: 'When no string literal is passed to i18n.translate, it should start with the correct i18n identifier.', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.ts', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.ts', code: ` import { i18n } from '@kbn/i18n'; @@ -133,7 +133,7 @@ function TestComponent() { }, { name: 'When i18n is not imported yet, the rule should add it.', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.ts', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.ts', code: ` function TestComponent() { const foo = i18n.translate(); diff --git a/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_formatted_message.test.ts b/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_formatted_message.test.ts index b9aeaed90d1a9..298e5976add23 100644 --- a/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_formatted_message.test.ts +++ b/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_formatted_message.test.ts @@ -45,7 +45,7 @@ const babelTester = [ const invalid: RuleTester.InvalidTestCase[] = [ { name: 'A JSX element with a string literal should be translated with i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; @@ -76,7 +76,7 @@ function TestComponent() { }, { name: 'A JSX element with a string literal that are inside an Eui component should take the component name of the parent into account', - filename: '/x-pack/plugins/observability_solution/observability/public/another_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/another_component.tsx', code: ` import React from 'react'; @@ -120,7 +120,7 @@ function AnotherComponent() { { name: 'When no import of the translation module is present, the import line should be added', filename: - '/x-pack/plugins/observability_solution/observability/public/yet_another_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/yet_another_component.tsx', code: ` import React from 'react'; @@ -155,7 +155,7 @@ function YetAnotherComponent() { }, { name: 'Import lines without the necessary translation module should be updated to include i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { SomeOtherModule } from '@kbn/i18n-react'; @@ -183,7 +183,7 @@ function TestComponent() { }, { name: 'JSX elements that have a label, aria-label or title prop with a string value should be translated with FormattedMessage', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -239,7 +239,7 @@ function TestComponent3() { }, { name: 'JSX elements that have a label, aria-label or title prop with a string value with quotes in it should be correctly translated with FormattedMessage', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -295,7 +295,7 @@ function TestComponent3() { }, { name: 'JSX elements that have a label, aria-label or title prop with a JSXExpression value that is a string should be translated with FormattedMessage', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -351,7 +351,7 @@ function TestComponent3() { }, { name: 'JSX elements that have a label, aria-label or title prop with a JSXExpression value that is a string with quotes in it should be correctly translated with FormattedMessage', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -410,7 +410,7 @@ function TestComponent3() { const valid: RuleTester.ValidTestCase[] = [ { name: 'A JSXText element inside a EuiCode component should not be translated', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; @@ -422,7 +422,7 @@ function TestComponent() { }, { name: 'A JSXText element that contains anything other than alpha characters should not be translated', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; @@ -434,7 +434,7 @@ function TestComponent() { }, { name: 'A JSXText element that is wrapped in three backticks (markdown) should not be translated', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; diff --git a/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_i18n.test.ts b/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_i18n.test.ts index 17a1e290befb5..1d36880057f16 100644 --- a/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_i18n.test.ts +++ b/packages/kbn-eslint-plugin-i18n/rules/strings_should_be_translated_with_i18n.test.ts @@ -45,7 +45,7 @@ const babelTester = [ const invalid: RuleTester.InvalidTestCase[] = [ { name: 'A JSX element with a string literal should be translated with i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; @@ -72,7 +72,7 @@ function TestComponent() { }, { name: 'A JSX element with a string literal that are inside an Eui component should take the component name of the parent into account', - filename: '/x-pack/plugins/observability_solution/observability/public/another_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/another_component.tsx', code: ` import React from 'react'; @@ -112,7 +112,7 @@ function AnotherComponent() { { name: 'When no import of the translation module is present, the import line should be added', filename: - '/x-pack/plugins/observability_solution/observability/public/yet_another_component.tsx', + '/x-pack/solutions/observability/plugins/observability/public/yet_another_component.tsx', code: ` import React from 'react'; @@ -143,7 +143,7 @@ function YetAnotherComponent() { }, { name: 'Import lines without the necessary translation module should be updated to include i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { SomeOtherModule } from '@kbn/i18n'; @@ -171,7 +171,7 @@ function TestComponent() { }, { name: 'JSX elements that have a label, aria-label or title prop with a string value should be translated with i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { i18n } from '@kbn/i18n'; @@ -227,7 +227,7 @@ function TestComponent3() { }, { name: 'JSX elements that have a label, aria-label or title prop with a string value with quotes should be correctly translated with i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { i18n } from '@kbn/i18n'; @@ -283,7 +283,7 @@ function TestComponent3() { }, { name: 'JSX elements that have a label, aria-label or title prop with a JSXExpression value that is a string should be translated with i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { i18n } from '@kbn/i18n'; @@ -339,7 +339,7 @@ function TestComponent3() { }, { name: 'JSX elements that have a label, aria-label or title prop with a JSXExpression value that is a string with quotes in it should be correctly translated with i18n', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; import { i18n } from '@kbn/i18n'; @@ -398,7 +398,7 @@ function TestComponent3() { const valid: RuleTester.ValidTestCase[] = [ { name: 'A JSXText element inside a EuiCode component should not be translated', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; @@ -410,7 +410,7 @@ function TestComponent() { }, { name: 'A JSXText element that contains anything other than alpha characters should not be translated', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; @@ -422,7 +422,7 @@ function TestComponent() { }, { name: 'A JSXText element that is wrapped in three backticks (markdown) should not be translated', - filename: '/x-pack/plugins/observability_solution/observability/public/test_component.tsx', + filename: '/x-pack/solutions/observability/plugins/observability/public/test_component.tsx', code: ` import React from 'react'; diff --git a/packages/kbn-eslint-plugin-telemetry/helpers/get_app_name.test.ts b/packages/kbn-eslint-plugin-telemetry/helpers/get_app_name.test.ts index 0d5526103fb7d..5053c4ca5a8e2 100644 --- a/packages/kbn-eslint-plugin-telemetry/helpers/get_app_name.test.ts +++ b/packages/kbn-eslint-plugin-telemetry/helpers/get_app_name.test.ts @@ -12,7 +12,7 @@ import { getAppName } from './get_app_name'; const SYSTEMPATH = 'systemPath'; const testMap = [ - ['x-pack/plugins/observability_solution/observability/foo/bar/baz/header_actions.tsx', 'o11y'], + ['x-pack/solutions/observability/plugins/observability/foo/bar/baz/header_actions.tsx', 'o11y'], ['x-pack/plugins/observability_solution/apm/baz/header_actions.tsx', 'apm'], ['x-pack/plugins/apm/public/components/app/correlations/correlations_table.tsx', 'apm'], ['x-pack/plugins/observability/foo/bar/baz/header_actions.tsx', 'o11y'], diff --git a/packages/kbn-event-annotation-components/components/annotation_editor_controls/annotation_editor_controls.tsx b/packages/kbn-event-annotation-components/components/annotation_editor_controls/annotation_editor_controls.tsx index de230ac617987..9053494071c03 100644 --- a/packages/kbn-event-annotation-components/components/annotation_editor_controls/annotation_editor_controls.tsx +++ b/packages/kbn-event-annotation-components/components/annotation_editor_controls/annotation_editor_controls.tsx @@ -11,7 +11,14 @@ import './index.scss'; import { isFieldLensCompatible } from '@kbn/visualization-ui-components'; import React, { useCallback, useEffect, useMemo } from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiFormRow, EuiSwitch, EuiSwitchEvent, EuiButtonGroup, EuiSpacer } from '@elastic/eui'; +import { + EuiFormRow, + EuiSwitch, + EuiSwitchEvent, + EuiButtonGroup, + EuiSpacer, + euiPaletteColorBlind, +} from '@elastic/eui'; import { IconSelectSetting, DimensionEditorSection, @@ -339,6 +346,7 @@ const AnnotationEditorControls = ({ label={i18n.translate('eventAnnotationComponents.xyChart.lineColor.label', { defaultMessage: 'Color', })} + swatches={euiPaletteColorBlind()} /> Run `yarn storybook expandable_flyout` to take a quick look at the expandable flyout in action - -## Design decisions - -The expandable-flyout is making some strict UI design decisions: -- when in collapsed mode (i.e. when only the right/preview section is open), the flyout's width linearly grows from its minimum value of 380px to its maximum value of 750px -- when in expanded mode (i.e. when the left section is opened), the flyout's width changes depending on the browser's width: - - if the window is smaller than 1600px, the flyout takes the entire browser window (minus 48px of padding on the left) - - for windows bigger than 1600px, the flyout's width is 80% of the entire browser window (with a max width of 1500px for the left section, and 750px for the right section) - -> While the expandable-flyout will work on very small screens, having both the right and left sections visible at the same time will not be a good experience to the user. We recommend only showing the right panel, and therefore handling this situation when you build your panels by considering hiding the actions that could open the left panel (like the expand details button in the [FlyoutNavigation](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx)). - -## State persistence - -The expandable flyout offers 2 ways of managing its state: - -### Memory storage - -The default behavior saves the state of the flyout in memory. The state is internal to the package and based on an isolated redux context. Using this mode means the state will not be persisted when sharing url or reloading browser pages. - -### Url storage - -The second way (done by setting the `urlKey` prop to a string value) saves the state of the flyout in the url. This allows the flyout to be automatically reopened when users refresh the browser page, or when users share an url. The `urlKey` will be used as the url parameter. - -**_Note: the word `memory` cannot be used as an `urlKey` as it is reserved for the memory storage behavior. You can use any other string value, try to use something that should be unique._** - -> We highly recommend NOT nesting flyouts in your code, as it would cause conflicts for the url keys. We recommend instead to build multiple panels, with each their own context to manage their data (for example, take a look at the Security Solution [setup](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout)). -> -> A good solution is for example to have one instance of a flyout at a page level, and then have multiple panels that can be opened in that flyout. - - -## Package API - -The ExpandableFlyout [React component](https://github.com/elastic/kibana/tree/main/packages/kbn-expandable-flyout/src/index.tsx) renders the UI, leveraging an [EuiFlyout](https://eui.elastic.co/#/layout/flyout). - -To retrieve the flyout's layout (left, right and preview panels), you can utilize [useExpandableFlyoutState](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts). - -To control (or mutate) flyout's layout, you can utilize [useExpandableFlyoutApi](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts). - -**Expandable Flyout API** exposes the following methods: -- **openFlyout**: open the flyout with a set of panels -- **openRightPanel**: open a right panel -- **openLeftPanel**: open a left panel -- **openPreviewPanel**: open a preview panel -- **closeRightPanel**: close the right panel -- **closeLeftPanel**: close the left panel -- **closePreviewPanel**: close the preview panels -- **previousPreviewPanel**: navigate to the previous preview panel -- **closeFlyout**: close the flyout - -> The expandable flyout propagates the `onClose` callback from the EuiFlyout component. As we recommend having a single instance of the flyout in your application, it's up to the application's code to dispatch the event (through Redux, window events, observable, prop drilling...). - -When calling `openFlyout`, the right panel state is automatically appended in the `history` slice in the redux context. To access the flyout's history, you can use the [useExpandableFlyoutHistory](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_history.ts) hook. - -## Usage - -To use the expandable flyout in your plugin, first you need wrap your code with the [context provider](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/context.tsx) at a high enough level as follows: -```typescript jsx -// state stored in the url - - ... - - - -// state stored in memory - - ... - -``` - -Then use the [React UI component](https://github.com/elastic/kibana/tree/main/packages/kbn-expandable-flyout/src/index.tsx) where you need: - -```typescript jsx - -``` -_where `myPanels` is a list of all the panels that can be rendered in the flyout_ - -## Optional properties - -The expandable flyout now offers a way for users to change some of the flyout's UI properties. These are done via a gear icon in the top right corner of the flyout, to the left of the close icon. - -The gear icon can be hidden by setting the `hideSettings` property to `true` in the flyout's custom props. -The `typeDisabled` property allows to disable the push/overlay toggle. -```typescript -flyoutCustomProps?: { - hideSettings?: boolean; - typeDisabled?: boolean, -}; -``` - -At the moment, clicking on the gear icon opens a popover that allows you to toggle the flyout between `overlay` and `push` modes (see [EUI](https://eui.elastic.co/#/layout/flyout#push-versus-overlay)). The default value is `overlay`. The package remembers the selected value in local storage, only for expandable flyout that have a urlKey. The state of memory flyouts is not persisted. - -## Terminology - -### Section - -One of the 3 areas of the flyout (**left**, **right** or **preview**). - -### Panel - -A set of properties defining what's displayed in one of the flyout section (see interface [here](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/types.ts)). diff --git a/packages/kbn-expandable-flyout/__mocks__/index.tsx b/packages/kbn-expandable-flyout/__mocks__/index.tsx deleted file mode 100644 index 75da56c9eb814..0000000000000 --- a/packages/kbn-expandable-flyout/__mocks__/index.tsx +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import type { IStorage } from '@kbn/kibana-utils-plugin/public'; - -export const ExpandableFlyout = jest.fn(); - -export const localStorageMock = (): IStorage => { - let store: Record = {}; - - return { - getItem: (key: string) => { - return store[key] || null; - }, - setItem: (key: string, value: unknown) => { - store[key] = value; - }, - clear() { - store = {}; - }, - removeItem(key: string) { - delete store[key]; - }, - }; -}; diff --git a/packages/kbn-expandable-flyout/index.ts b/packages/kbn-expandable-flyout/index.ts deleted file mode 100644 index 48478334b6590..0000000000000 --- a/packages/kbn-expandable-flyout/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export { ExpandableFlyout } from './src'; - -export { useExpandableFlyoutApi } from './src/hooks/use_expandable_flyout_api'; -export { useExpandableFlyoutState } from './src/hooks/use_expandable_flyout_state'; -export { useExpandableFlyoutHistory } from './src/hooks/use_expandable_flyout_history'; - -export { type FlyoutPanels as ExpandableFlyoutState } from './src/store/state'; - -export { ExpandableFlyoutProvider } from './src/provider'; - -export type { ExpandableFlyoutProps } from './src'; -export type { FlyoutPanelProps, PanelPath, ExpandableFlyoutApi } from './src/types'; diff --git a/packages/kbn-expandable-flyout/jest.config.js b/packages/kbn-expandable-flyout/jest.config.js deleted file mode 100644 index c318a1b2717bc..0000000000000 --- a/packages/kbn-expandable-flyout/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['/packages/kbn-expandable-flyout'], -}; diff --git a/packages/kbn-expandable-flyout/package.json b/packages/kbn-expandable-flyout/package.json deleted file mode 100644 index 7cb64358db0ba..0000000000000 --- a/packages/kbn-expandable-flyout/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "@kbn/expandable-flyout", - "private": true, - "version": "1.0.0", - "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0", - "sideEffects": false -} \ No newline at end of file diff --git a/packages/kbn-expandable-flyout/src/components/left_section.tsx b/packages/kbn-expandable-flyout/src/components/left_section.tsx deleted file mode 100644 index 591062116a971..0000000000000 --- a/packages/kbn-expandable-flyout/src/components/left_section.tsx +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { EuiFlexItem } from '@elastic/eui'; -import React, { memo } from 'react'; -import { LEFT_SECTION_TEST_ID } from './test_ids'; - -interface LeftSectionProps { - /** - * Component to be rendered - */ - component: React.ReactElement; -} - -/** - * Left section of the expanded flyout rendering a panel - */ -export const LeftSection: React.FC = memo(({ component }: LeftSectionProps) => ( - - {component} - -)); - -LeftSection.displayName = 'LeftSection'; diff --git a/packages/kbn-expandable-flyout/src/components/right_section.tsx b/packages/kbn-expandable-flyout/src/components/right_section.tsx deleted file mode 100644 index ab6598b9f8e3a..0000000000000 --- a/packages/kbn-expandable-flyout/src/components/right_section.tsx +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { EuiFlexItem } from '@elastic/eui'; -import React, { memo } from 'react'; -import { RIGHT_SECTION_TEST_ID } from './test_ids'; - -interface RightSectionProps { - /** - * Component to be rendered - */ - component: React.ReactElement; -} - -/** - * Right section of the expanded flyout rendering a panel - */ -export const RightSection: React.FC = memo( - ({ component }: RightSectionProps) => ( - - {component} - - ) -); - -RightSection.displayName = 'RightSection'; diff --git a/packages/kbn-expandable-flyout/src/components/test_ids.ts b/packages/kbn-expandable-flyout/src/components/test_ids.ts deleted file mode 100644 index 22d2e00ed66c7..0000000000000 --- a/packages/kbn-expandable-flyout/src/components/test_ids.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export const FLYOUT_TEST_ID = 'resizableFlyout'; - -export const RIGHT_SECTION_TEST_ID = 'rightSection'; - -export const LEFT_SECTION_TEST_ID = 'leftSection'; - -export const PREVIEW_SECTION_TEST_ID = 'previewSection'; - -export const PREVIEW_SECTION_CLOSE_BUTTON_TEST_ID = 'previewSectionCloseButton'; - -export const PREVIEW_SECTION_BACK_BUTTON_TEST_ID = 'previewSectionBackButton'; - -export const PREVIEW_SECTION_HEADER_TEST_ID = 'previewSectionHeader'; - -export const SETTINGS_MENU_BUTTON_TEST_ID = 'settingsMenuButton'; - -export const SETTINGS_MENU_FLYOUT_TYPE_TITLE_TEST_ID = 'settingsMenuFlyoutTypeTitle'; - -export const SETTINGS_MENU_FLYOUT_TYPE_INFORMATION_ICON_TEST_ID = - 'settingsMenuFlyoutTypeInformationIcon'; - -export const SETTINGS_MENU_FLYOUT_TYPE_BUTTON_GROUP_TEST_ID = 'settingsMenuFlyoutTypeButtonGroup'; - -export const SETTINGS_MENU_FLYOUT_TYPE_BUTTON_GROUP_OVERLAY_TEST_ID = - 'settingsMenuFlyoutTypeButtonGroupOverlayOption'; - -export const SETTINGS_MENU_FLYOUT_TYPE_BUTTON_GROUP_PUSH_TEST_ID = - 'settingsMenuFlyoutTypeButtonGroupPushOption'; - -export const SETTINGS_MENU_FLYOUT_RESIZE_TITLE_TEST_ID = 'settingsMenuFlyoutSizeTitle'; - -export const SETTINGS_MENU_FLYOUT_RESIZE_INFORMATION_ICON_TEST_ID = - 'settingsMenuFlyoutSizeInformationIcon'; - -export const SETTINGS_MENU_FLYOUT_RESIZE_BUTTON_TEST_ID = 'settingsMenuFlyoutSizeButton'; - -export const RESIZABLE_LEFT_SECTION_TEST_ID = 'resizableLeftSection'; - -export const RESIZABLE_RIGHT_SECTION_TEST_ID = 'resizableRightSection'; - -export const RESIZABLE_BUTTON_TEST_ID = 'resizableButton'; diff --git a/packages/kbn-expandable-flyout/src/components/translations.ts b/packages/kbn-expandable-flyout/src/components/translations.ts deleted file mode 100644 index 01ab016a720c1..0000000000000 --- a/packages/kbn-expandable-flyout/src/components/translations.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { i18n } from '@kbn/i18n'; - -export const BACK_BUTTON = i18n.translate('expandableFlyout.previewSection.backButton', { - defaultMessage: 'Back', -}); - -export const CLOSE_BUTTON = i18n.translate('expandableFlyout.previewSection.closeButton', { - defaultMessage: 'Close', -}); diff --git a/packages/kbn-expandable-flyout/src/constants.ts b/packages/kbn-expandable-flyout/src/constants.ts deleted file mode 100644 index dfabd845a3f20..0000000000000 --- a/packages/kbn-expandable-flyout/src/constants.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -/** - * This is a reserved word that we use as an id when no urlKey is provided and we are in memory storage mode - */ -export const REDUX_ID_FOR_MEMORY_STORAGE = 'memory'; - -export const EXPANDABLE_FLYOUT_LOCAL_STORAGE = 'expandableFlyout.ui'; -export const PUSH_VS_OVERLAY_LOCAL_STORAGE = 'pushVsOverlay'; -export const USER_COLLAPSED_WIDTH_LOCAL_STORAGE = 'collapsedWidth'; -export const USER_EXPANDED_WIDTH_LOCAL_STORAGE = 'expandedWidth'; -export const USER_SECTION_WIDTHS_LOCAL_STORAGE = 'sectionWidths'; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_history.ts b/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_history.ts deleted file mode 100644 index 415703a8811e4..0000000000000 --- a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_history.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { REDUX_ID_FOR_MEMORY_STORAGE } from '../constants'; -import { useExpandableFlyoutContext } from '../context'; -import { selectHistoryById, useSelector } from '../store/redux'; - -/** - * This hook allows you to access the flyout state, read open right, left and preview panels. - */ -export const useExpandableFlyoutHistory = () => { - const { urlKey } = useExpandableFlyoutContext(); - // if no urlKey is provided, we are in memory storage mode and use the reserved word 'memory' - const id = urlKey || REDUX_ID_FOR_MEMORY_STORAGE; - return useSelector(selectHistoryById(id)); -}; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts b/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts deleted file mode 100644 index 88a94f66d54ae..0000000000000 --- a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { useMemo } from 'react'; -import { REDUX_ID_FOR_MEMORY_STORAGE } from '../constants'; -import { useExpandableFlyoutContext } from '../context'; -import { selectPanelsById, useSelector } from '../store/redux'; - -/** - * This hook allows you to access the flyout state, read open right, left and preview panels. - */ -export const useExpandableFlyoutState = () => { - const { urlKey } = useExpandableFlyoutContext(); - // if no urlKey is provided, we are in memory storage mode and use the reserved word 'memory' - const id = useMemo(() => urlKey || REDUX_ID_FOR_MEMORY_STORAGE, [urlKey]); - - return useSelector(selectPanelsById(id)); -}; diff --git a/packages/kbn-expandable-flyout/src/index.stories.tsx b/packages/kbn-expandable-flyout/src/index.stories.tsx deleted file mode 100644 index b827d02f1da08..0000000000000 --- a/packages/kbn-expandable-flyout/src/index.stories.tsx +++ /dev/null @@ -1,371 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import type { Story } from '@storybook/react'; -import { - EuiButton, - EuiFlexGroup, - EuiFlexItem, - EuiFlyoutBody, - EuiFlyoutFooter, - EuiFlyoutHeader, - EuiPanel, - EuiTitle, -} from '@elastic/eui'; -import { ExpandableFlyout } from '.'; -import { TestProvider } from './test/provider'; -import { initialUiState, State } from './store/state'; - -export default { - component: ExpandableFlyout, - title: 'ExpandableFlyout', -}; - -const registeredPanels = [ - { - key: 'right', - component: () => ( - <> - - -

{'Right panel header'}

-
-
- -

{'Example of a right component body'}

-
- - - - {'Footer button'} - - - - - ), - }, - { - key: 'left', - component: () => ( - - - - -

{'Left panel header'}

-
-
-

{'Example of a left component content'}

- -
-
- ), - }, - { - key: 'preview1', - component: () => ( - - - - -

{'Preview panel header'}

-
-
-

{'Example of a preview component content'}

- -
-
- ), - }, - { - key: 'preview2', - component: () => ( - - - - -

{'Second preview panel header'}

-
-
-

{'Example of another preview component content'}

- -
-
- ), - }, -]; - -export const Right: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: undefined, - preview: undefined, - history: [{ id: 'right' }], - }, - }, - }, - ui: initialUiState, - }; - - return ( - - - - ); -}; - -export const Left: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: undefined, - history: [{ id: 'right' }], - }, - }, - }, - ui: initialUiState, - }; - - return ( - - - - ); -}; - -export const Preview: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: [ - { - id: 'preview1', - }, - ], - history: [{ id: 'right' }], - }, - }, - }, - ui: initialUiState, - }; - - return ( - - - - ); -}; - -export const MultiplePreviews: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: [ - { - id: 'preview1', - }, - { - id: 'preview2', - }, - ], - history: [{ id: 'right' }], - }, - }, - }, - ui: initialUiState, - }; - - return ( - - - - ); -}; - -export const CollapsedPushMode: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: undefined, - preview: undefined, - history: [{ id: 'right' }], - }, - }, - }, - ui: { - ...initialUiState, - pushVsOverlay: 'push', - }, - }; - - return ( - - - - ); -}; - -export const ExpandedPushMode: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: undefined, - history: [{ id: 'right' }], - }, - }, - }, - ui: { - ...initialUiState, - pushVsOverlay: 'push', - }, - }; - - return ( - - - - ); -}; - -export const DisableTypeSelection: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: undefined, - history: [{ id: 'right' }], - }, - }, - }, - ui: initialUiState, - }; - - return ( - - - - ); -}; - -export const ResetWidths: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: undefined, - history: [{ id: 'right' }], - }, - }, - }, - ui: initialUiState, - }; - - return ( - - - - ); -}; - -export const DisableResizeWidthSelection: Story = () => { - const state: State = { - panels: { - byId: { - memory: { - right: { - id: 'right', - }, - left: { - id: 'left', - }, - preview: undefined, - history: [{ id: 'right' }], - }, - }, - }, - ui: initialUiState, - }; - - return ( - - - - ); -}; diff --git a/packages/kbn-expandable-flyout/src/index.test.tsx b/packages/kbn-expandable-flyout/src/index.test.tsx deleted file mode 100644 index 5f0bada8653a1..0000000000000 --- a/packages/kbn-expandable-flyout/src/index.test.tsx +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { render } from '@testing-library/react'; - -import { Panel } from './types'; -import { ExpandableFlyout } from '.'; -import { useWindowWidth } from './hooks/use_window_width'; -import { TestProvider } from './test/provider'; -import { REDUX_ID_FOR_MEMORY_STORAGE } from './constants'; -import { initialUiState } from './store/state'; - -jest.mock('./hooks/use_window_width'); - -const registeredPanels: Panel[] = [ - { - key: 'key', - component: () =>
{'component'}
, - }, -]; - -describe('ExpandableFlyout', () => { - it(`should not render flyout if window width is 0`, () => { - (useWindowWidth as jest.Mock).mockReturnValue(0); - - const result = render( - - - - ); - - expect(result.asFragment()).toMatchInlineSnapshot(``); - }); - - it(`should render flyout`, () => { - (useWindowWidth as jest.Mock).mockReturnValue(1000); - - const state = { - panels: { - byId: { - [REDUX_ID_FOR_MEMORY_STORAGE]: { - right: { - id: 'key', - }, - left: undefined, - preview: undefined, - history: [{ id: 'key' }], - }, - }, - }, - ui: initialUiState, - }; - - const { getByTestId } = render( - - - - ); - - expect(getByTestId('TEST')).toBeInTheDocument(); - }); -}); diff --git a/packages/kbn-expandable-flyout/src/index.tsx b/packages/kbn-expandable-flyout/src/index.tsx deleted file mode 100644 index 25425a75e2ba9..0000000000000 --- a/packages/kbn-expandable-flyout/src/index.tsx +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React, { useMemo } from 'react'; -import type { Interpolation, Theme } from '@emotion/react'; -import { EuiFlyoutProps } from '@elastic/eui'; -import { EuiFlyoutResizableProps } from '@elastic/eui/src/components/flyout/flyout_resizable'; -import { Container } from './components/container'; -import { useWindowWidth } from './hooks/use_window_width'; -import { useInitializeFromLocalStorage } from './hooks/use_initialize_from_local_storage'; -import { FlyoutCustomProps } from './components/settings_menu'; -import type { Panel } from './types'; - -export interface ExpandableFlyoutProps extends Omit { - /** - * List of all registered panels available for render - */ - registeredPanels: Panel[]; - /** - * Allows for custom styles to be passed to the EuiFlyout component - */ - customStyles?: Interpolation; - /** - * Callback function to let application's code the flyout is closed - */ - onClose?: EuiFlyoutProps['onClose']; - /** - * Set of properties that drive a settings menu - */ - flyoutCustomProps?: FlyoutCustomProps; - /** - * Optional data test subject string to be used on the EuiFlyoutResizable component - */ - 'data-test-subj'?: string; -} - -/** - * Expandable flyout UI React component. - * Displays 3 sections (right, left, preview) depending on the panels in the context. - * - * The behavior expects that the left and preview sections should only be displayed is a right section - * is already rendered. - */ -export const ExpandableFlyout: React.FC = ({ ...props }) => { - const windowWidth = useWindowWidth(); - - useInitializeFromLocalStorage(); - - const container = useMemo(() => , [props]); - - if (windowWidth === 0) { - return null; - } - - return <>{container}; -}; - -ExpandableFlyout.displayName = 'ExpandableFlyout'; diff --git a/packages/kbn-expandable-flyout/src/provider.tsx b/packages/kbn-expandable-flyout/src/provider.tsx deleted file mode 100644 index cad83bb0ee808..0000000000000 --- a/packages/kbn-expandable-flyout/src/provider.tsx +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { createKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; -import React, { FC, PropsWithChildren, useEffect, useMemo } from 'react'; -import { Provider as ReduxProvider } from 'react-redux'; -import { useHistory } from 'react-router-dom'; -import { ExpandableFlyoutContextProvider, useExpandableFlyoutContext } from './context'; -import { FlyoutPanels } from './store/state'; -import { useExpandableFlyoutState } from './hooks/use_expandable_flyout_state'; -import { Context, selectNeedsSync, store, useDispatch, useSelector } from './store/redux'; -import { urlChangedAction } from './store/actions'; - -/** - * Dispatches actions when url state changes and initializes the state when the app is loaded with flyout url parameters - */ -export const UrlSynchronizer = () => { - const { urlKey } = useExpandableFlyoutContext(); - const panels = useExpandableFlyoutState(); - const needsSync = useSelector(selectNeedsSync()); - const dispatch = useDispatch(); - - const history = useHistory(); - - const urlStorage = useMemo( - () => - createKbnUrlStateStorage({ - history, - useHash: false, - useHashQuery: false, - }), - [history] - ); - - useEffect(() => { - if (!urlKey) { - return; - } - - const currentValue = urlStorage.get(urlKey); - - // Dispatch current value to redux store as it does not happen automatically - if (currentValue) { - dispatch( - urlChangedAction({ - ...currentValue, - preview: currentValue?.preview?.at(-1), - id: urlKey, - }) - ); - } - - const subscription = urlStorage.change$(urlKey).subscribe((value) => { - dispatch(urlChangedAction({ ...value, preview: value?.preview?.at(-1), id: urlKey })); - }); - - return () => subscription.unsubscribe(); - }, [dispatch, urlKey, urlStorage]); - - useEffect(() => { - if (!needsSync || !panels || !urlKey) { - return; - } - - const { left, right, preview } = panels; - urlStorage.set(urlKey, { left, right, preview: [preview?.at(-1)] }); - }, [needsSync, panels, urlKey, urlStorage]); - - return null; -}; - -interface ExpandableFlyoutProviderProps { - /** - * Unique key to be used as url parameter to store the state of the flyout. - * Providing this will save the state of the flyout in the url. - * The word `memory` is reserved, do NOT use it! - */ - urlKey?: string; -} - -/** - * Wrap your plugin with this context for the ExpandableFlyout React component. - */ -export const ExpandableFlyoutProvider: FC> = ({ - children, - urlKey, -}) => { - return ( - - - {urlKey ? : null} - {children} - - - ); -}; diff --git a/packages/kbn-expandable-flyout/src/store/state.ts b/packages/kbn-expandable-flyout/src/store/state.ts deleted file mode 100644 index 46326c311fbeb..0000000000000 --- a/packages/kbn-expandable-flyout/src/store/state.ts +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { FlyoutPanelProps } from '../..'; - -export interface FlyoutPanels { - /** - * Panel to render in the left section - */ - left: FlyoutPanelProps | undefined; - /** - * Panel to render in the right section - */ - right: FlyoutPanelProps | undefined; - /** - * Panels to render in the preview section - */ - preview: FlyoutPanelProps[] | undefined; - /* - * History of the right panels that were opened - */ - history: FlyoutPanelProps[]; -} - -export interface PanelsState { - /** - * Store the panels for multiple flyouts - */ - byId: { - [id: string]: FlyoutPanels; - }; - /** - * Is the flyout in sync with external storage (eg. url)? - * This value can be used in useEffect for example, to control whether we should - * call an external state sync method. - */ - needsSync?: boolean; -} - -export const initialPanelsState: PanelsState = { - byId: {}, - needsSync: false, -}; - -export interface DefaultWidthsState { - /** - * Default width for the right section (calculated from the window width) - */ - rightWidth: number; - /** - * Default width for the left section (calculated from the window width) - */ - leftWidth: number; - /** - * Default width for the preview section (calculated from the window width) - */ - previewWidth: number; - /** - * Value of the right width in percentage (of the flyout total width) - */ - rightPercentage: number; - /** - * Value of the left width in percentage (of the flyout total width) - */ - leftPercentage: number; - /** - * Value of the preview width in percentage (of the flyout total width) - */ - previewPercentage: number; -} - -export interface UserFlyoutWidthsState { - /** - * Width of the collapsed flyout - */ - collapsedWidth?: number; - /** - * Width of the expanded flyout - */ - expandedWidth?: number; -} - -export interface UserSectionWidthsState { - /** - * Percentage for the left section - */ - leftPercentage: number | undefined; - /** - * Percentage for the right section - */ - rightPercentage: number | undefined; -} - -export interface UiState { - /** - * Push vs overlay information - */ - pushVsOverlay: 'push' | 'overlay'; - /** - * Default widths for the flyout - */ - defaultWidths: DefaultWidthsState; - /** - * User resized widths for the flyout - */ - userFlyoutWidths: UserFlyoutWidthsState; - /** - * User resized left and right section widths for the flyout - */ - userSectionWidths: UserSectionWidthsState; -} - -export const initialUiState: UiState = { - pushVsOverlay: 'overlay', - defaultWidths: {} as DefaultWidthsState, - userFlyoutWidths: {}, - userSectionWidths: {} as UserSectionWidthsState, -}; - -export interface State { - /** - * All panels related information - */ - panels: PanelsState; - /** - * All ui related information - */ - ui: UiState; -} - -export const initialState: State = { - panels: initialPanelsState, - ui: initialUiState, -}; diff --git a/packages/kbn-expandable-flyout/src/test/provider.tsx b/packages/kbn-expandable-flyout/src/test/provider.tsx deleted file mode 100644 index 81de83720afd7..0000000000000 --- a/packages/kbn-expandable-flyout/src/test/provider.tsx +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { Provider as ReduxProvider } from 'react-redux'; -import { configureStore } from '@reduxjs/toolkit'; -import React, { FC, PropsWithChildren } from 'react'; -import { I18nProvider } from '@kbn/i18n-react'; -import { - savePushVsOverlayToLocalStorageMiddleware, - saveUserSectionWidthsToLocalStorageMiddleware, - saveUserFlyoutWidthsToLocalStorageMiddleware, -} from '../store/middlewares'; -import { ExpandableFlyoutContextProvider } from '../context'; -import { panelsReducer, uiReducer } from '../store/reducers'; -import { Context } from '../store/redux'; -import { initialState, State } from '../store/state'; - -interface TestProviderProps { - state?: State; - urlKey?: string; -} - -export const TestProvider: FC> = ({ - children, - state = initialState, - urlKey, -}) => { - const store = configureStore({ - reducer: { - panels: panelsReducer, - ui: uiReducer, - }, - devTools: false, - preloadedState: state, - middleware: [ - savePushVsOverlayToLocalStorageMiddleware, - saveUserSectionWidthsToLocalStorageMiddleware, - saveUserFlyoutWidthsToLocalStorageMiddleware, - ], - }); - - return ( - - - - {children} - - - - ); -}; diff --git a/packages/kbn-expandable-flyout/src/types.ts b/packages/kbn-expandable-flyout/src/types.ts deleted file mode 100644 index 14e1a06ff4605..0000000000000 --- a/packages/kbn-expandable-flyout/src/types.ts +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; - -export interface ExpandableFlyoutApi { - /** - * Open the flyout with left, right and/or preview panels - */ - openFlyout: (panels: { - left?: FlyoutPanelProps; - right?: FlyoutPanelProps; - preview?: FlyoutPanelProps; - }) => void; - /** - * Replaces the current right panel with a new one - */ - openRightPanel: (panel: FlyoutPanelProps) => void; - /** - * Replaces the current left panel with a new one - */ - openLeftPanel: (panel: FlyoutPanelProps) => void; - /** - * Add a new preview panel to the list of current preview panels - */ - openPreviewPanel: (panel: FlyoutPanelProps) => void; - /** - * Closes right panel - */ - closeRightPanel: () => void; - /** - * Closes left panel - */ - closeLeftPanel: () => void; - /** - * Closes all preview panels - */ - closePreviewPanel: () => void; - /** - * Go back to previous preview panel - */ - previousPreviewPanel: () => void; - /** - * Close all panels and closes flyout - */ - closeFlyout: () => void; -} - -export interface PanelPath { - /** - * Top level tab that to be displayed - */ - tab: string; - /** - * Optional secondary level to be displayed under top level tab - */ - subTab?: string; -} - -export interface FlyoutPanelProps { - /** - * Unique key to identify the panel - */ - id: string; - /** - * Any parameters necessary for the initial requests within the flyout - */ - params?: Record; - /** - * Tracks the path for what to show in a panel, such as activated tab and subtab - */ - path?: PanelPath; - /** - * Tracks visual state such as whether the panel is collapsed - */ - state?: Record; -} - -export interface Panel { - /** - * Unique key used to identify the panel - */ - key?: string; - /** - * Component to be rendered - */ - component: (props: FlyoutPanelProps) => React.ReactElement; -} diff --git a/packages/kbn-expandable-flyout/tsconfig.json b/packages/kbn-expandable-flyout/tsconfig.json deleted file mode 100644 index 5a0cf87cf61e2..0000000000000 --- a/packages/kbn-expandable-flyout/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@emotion/react/types/css-prop", - "@testing-library/jest-dom", - "@testing-library/react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/kibana-utils-plugin", - "@kbn/i18n-react" - ] -} diff --git a/packages/kbn-ftr-common-functional-ui-services/index.ts b/packages/kbn-ftr-common-functional-ui-services/index.ts index 1355d112ffaf8..c316ecf7db60e 100644 --- a/packages/kbn-ftr-common-functional-ui-services/index.ts +++ b/packages/kbn-ftr-common-functional-ui-services/index.ts @@ -15,7 +15,7 @@ export type { CustomCheerioStatic, } from './services/web_element_wrapper/custom_cheerio_api'; export { Browsers } from './services/remote/browsers'; -export { type Browser } from './services/browser'; +export { type Browser, type InterceptResponseFactory } from './services/browser'; export { NETWORK_PROFILES, type NetworkOptions, diff --git a/packages/kbn-ftr-common-functional-ui-services/services/browser.ts b/packages/kbn-ftr-common-functional-ui-services/services/browser.ts index 56888b0a8087c..7a3885d7e3f9a 100644 --- a/packages/kbn-ftr-common-functional-ui-services/services/browser.ts +++ b/packages/kbn-ftr-common-functional-ui-services/services/browser.ts @@ -13,6 +13,7 @@ import { Key, Origin, type WebDriver } from 'selenium-webdriver'; import { Driver as ChromiumWebDriver } from 'selenium-webdriver/chrome'; import { setTimeout as setTimeoutAsync } from 'timers/promises'; import Url from 'url'; +import { Protocol } from 'devtools-protocol'; import { NoSuchSessionError } from 'selenium-webdriver/lib/error'; import sharp from 'sharp'; @@ -26,7 +27,12 @@ import { import { FtrService, type FtrProviderContext } from './ftr_provider_context'; export type Browser = BrowserService; - +export interface InterceptResponseFactory { + fail: () => ['Fetch.failRequest', Protocol.Fetch.FailRequestRequest]; + fulfill: ( + responseOptions: Omit + ) => ['Fetch.fulfillRequest', Protocol.Fetch.FulfillRequestRequest]; +} class BrowserService extends FtrService { /** * Keyboard events @@ -837,6 +843,59 @@ class BrowserService extends FtrService { throw new Error(message); } } + + /** + * Intercept network requests using the Chrome DevTools Protocol (CDP). + * @param pattern - URL pattern to match intercepted requests. + * @param onIntercept - Callback defining how to handle intercepted requests. + * @param cb - Callback to trigger actions that make requests. + */ + + public async interceptRequest( + pattern: string, + onIntercept: (responseFactory: InterceptResponseFactory) => [string, Record], + cb: () => Promise + ): Promise { + const connection = await this.driver.createCDPConnection('page'); + + return new Promise((resolve, reject) => { + connection._wsConnection.on('message', async (data: Buffer) => { + try { + const parsed = JSON.parse(data.toString()); + this.log.debug(`CDP Event: ${parsed.method} ${parsed.params?.request?.url}`); + + if (parsed.method === 'Fetch.requestPaused') { + const requestId = parsed.params.requestId; + + const [method, params] = onIntercept({ + fail: () => ['Fetch.failRequest', { requestId, errorReason: 'Failed' }], + fulfill: (responseOptions) => [ + 'Fetch.fulfillRequest', + { requestId, ...responseOptions }, + ], + }); + + connection.execute(method, params, () => { + this.log.debug(`Executed command: ${method}`); + }); + } + } catch (error) { + this.log.error(`Error in Fetch.requestPaused handler: ${error.message}`); + } + }); + + connection.execute('Fetch.enable', { patterns: [{ urlPattern: pattern }] }, (result: any) => { + this.log.debug('Fetch.enable result:', result); + + cb() + .then(resolve) + .catch((error) => { + this.log.error(`Error in callback: ${error.message}`); + reject(error); + }); + }); + }); + } } export async function BrowserProvider(ctx: FtrProviderContext) { diff --git a/packages/kbn-generate-console-definitions/README.md b/packages/kbn-generate-console-definitions/README.md index a8b7e451612f5..1c5ed9c24ffa7 100644 --- a/packages/kbn-generate-console-definitions/README.md +++ b/packages/kbn-generate-console-definitions/README.md @@ -5,10 +5,10 @@ The definitions files are generated from the Elasticsearch specification [repo]( ## Instructions 1. Checkout the Elasticsearch specification [repo](https://github.com/elastic/elasticsearch-specification). 2. Run the command `node scripts/generate_console_definitions.js --source --emptyDest` - This command will use the folder `` as the source and the constant [`AUTOCOMPLETE_DEFINITIONS_FOLDER`](https://github.com/elastic/kibana/blob/main/src/plugins/console/common/constants/autocomplete_definitions.ts) as the destination. Based on the value of the constant, the autocomplete definitions will be generated in the folder `/src/plugins/server/lib/spec_definitions/json/generated`. The flag `--emptyDest` indicates that all existing files in the destination folder will be removed. -3. It's possible to generate the definitions into a different folder. For that pass an option to the command `--dest ` and also update the constant [`AUTOCOMPLETE_DEFINITIONS_FOLDER`](https://github.com/elastic/kibana/blob/main/src/plugins/console/common/constants/autocomplete_definitions.ts) so that the Console server will load the definitions from this folder. + This command will use the folder `` as the source and the constant [`AUTOCOMPLETE_DEFINITIONS_FOLDER`](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/common/constants/autocomplete_definitions.ts) as the destination. Based on the value of the constant, the autocomplete definitions will be generated in the folder `/src/plugins/server/lib/spec_definitions/json/generated`. The flag `--emptyDest` indicates that all existing files in the destination folder will be removed. +3. It's possible to generate the definitions into a different folder. For that pass an option to the command `--dest ` and also update the constant [`AUTOCOMPLETE_DEFINITIONS_FOLDER`](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/common/constants/autocomplete_definitions.ts) so that the Console server will load the definitions from this folder. ## Functionality This script generates definitions for all endpoints defined in the ES specification at once. -The script generates fully functional autocomplete definition files with properties as described in the [Console README.md file](https://github.com/elastic/kibana/blob/main/src/plugins/console/README.md) except `data_autocomplete_rules`. Currently, this property needs to be written manually to add autocomplete suggestions for request body parameters. +The script generates fully functional autocomplete definition files with properties as described in the [Console README.md file](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/README.md) except `data_autocomplete_rules`. Currently, this property needs to be written manually to add autocomplete suggestions for request body parameters. diff --git a/packages/kbn-generate-csv/src/lib/search_cursor_pit.test.ts b/packages/kbn-generate-csv/src/lib/search_cursor_pit.test.ts index 4852cfb9d32c1..ab5e294397a6e 100644 --- a/packages/kbn-generate-csv/src/lib/search_cursor_pit.test.ts +++ b/packages/kbn-generate-csv/src/lib/search_cursor_pit.test.ts @@ -17,6 +17,7 @@ import { createSearchSourceMock } from '@kbn/data-plugin/common/search/search_so import { createSearchRequestHandlerContext } from '@kbn/data-plugin/server/search/mocks'; import type { SearchCursorSettings } from './search_cursor'; import { SearchCursorPit } from './search_cursor_pit'; +import { OpenPointInTimeResponse } from '@elastic/elasticsearch/lib/api/types'; class TestSearchCursorPit extends SearchCursorPit { constructor(...args: ConstructorParameters) { @@ -69,7 +70,7 @@ describe('CSV Export Search Cursor', () => { openPointInTimeSpy = jest .spyOn(es.asCurrentUser, 'openPointInTime') - .mockResolvedValue({ id: 'somewhat-pit-id' }); + .mockResolvedValue({ id: 'somewhat-pit-id' } as OpenPointInTimeResponse); logger = loggingSystemMock.createLogger(); }); diff --git a/packages/kbn-generate-csv/src/lib/search_cursor_scroll.test.ts b/packages/kbn-generate-csv/src/lib/search_cursor_scroll.test.ts index 5d6cd6f67a4d6..cdccbca468a76 100644 --- a/packages/kbn-generate-csv/src/lib/search_cursor_scroll.test.ts +++ b/packages/kbn-generate-csv/src/lib/search_cursor_scroll.test.ts @@ -16,6 +16,7 @@ import { createSearchSourceMock } from '@kbn/data-plugin/common/search/search_so import { createSearchRequestHandlerContext } from '@kbn/data-plugin/server/search/mocks'; import type { SearchCursorSettings } from './search_cursor'; import { SearchCursorScroll } from './search_cursor_scroll'; +import type { OpenPointInTimeResponse } from '@elastic/elasticsearch/lib/api/types'; class TestSearchCursorScroll extends SearchCursorScroll { constructor(...args: ConstructorParameters) { @@ -47,7 +48,9 @@ describe('CSV Export Search Cursor', () => { es = elasticsearchServiceMock.createScopedClusterClient(); data = createSearchRequestHandlerContext(); - jest.spyOn(es.asCurrentUser, 'openPointInTime').mockResolvedValue({ id: 'simply-scroll-id' }); + jest + .spyOn(es.asCurrentUser, 'openPointInTime') + .mockResolvedValue({ id: 'simply-scroll-id' } as OpenPointInTimeResponse); logger = loggingSystemMock.createLogger(); }); diff --git a/packages/kbn-index-adapter/index.ts b/packages/kbn-index-adapter/index.ts deleted file mode 100644 index 6956792135282..0000000000000 --- a/packages/kbn-index-adapter/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export { IndexAdapter } from './src/index_adapter'; -export { IndexPatternAdapter, type InstallIndex } from './src/index_pattern_adapter'; -export { retryTransientEsErrors } from './src/retry_transient_es_errors'; -export { ecsFieldMap, type EcsFieldMap } from './src/field_maps/ecs_field_map'; -export { createOrUpdateIndexTemplate } from './src/create_or_update_index_template'; -export { createOrUpdateComponentTemplate } from './src/create_or_update_component_template'; - -export type { - SetComponentTemplateParams, - SetIndexTemplateParams, - IndexAdapterParams, - InstallParams, -} from './src/index_adapter'; -export * from './src/field_maps/types'; diff --git a/packages/kbn-index-adapter/jest.config.js b/packages/kbn-index-adapter/jest.config.js deleted file mode 100644 index bf08ec1526382..0000000000000 --- a/packages/kbn-index-adapter/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['/packages/kbn-index-adapter'], -}; diff --git a/packages/kbn-index-adapter/package.json b/packages/kbn-index-adapter/package.json deleted file mode 100644 index 70b79abe1b571..0000000000000 --- a/packages/kbn-index-adapter/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "@kbn/index-adapter", - "version": "1.0.0", - "description": "Utility library for Elasticsearch index management", - "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0", - "private": true -} \ No newline at end of file diff --git a/packages/kbn-index-adapter/src/field_maps/types.ts b/packages/kbn-index-adapter/src/field_maps/types.ts deleted file mode 100644 index 90fb44873a342..0000000000000 --- a/packages/kbn-index-adapter/src/field_maps/types.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export interface AllowedValue { - description?: string; - name?: string; -} - -export interface MultiField { - flat_name: string; - name: string; - type: string; -} - -export interface EcsMetadata { - allowed_values?: AllowedValue[]; - dashed_name: string; - description: string; - doc_values?: boolean; - example?: string | number | boolean; - flat_name: string; - ignore_above?: number; - index?: boolean; - level: string; - multi_fields?: MultiField[]; - name: string; - normalize: string[]; - required?: boolean; - scaling_factor?: number; - short: string; - type: string; - properties?: Record; -} - -export type FieldMap = Record< - T, - { - type: string; - required: boolean; - array?: boolean; - doc_values?: boolean; - enabled?: boolean; - fields?: Record; - format?: string; - ignore_above?: number; - multi_fields?: MultiField[]; - index?: boolean; - path?: string; - scaling_factor?: number; - dynamic?: boolean | 'strict'; - properties?: Record; - inference_id?: string; - copy_to?: string; - } ->; - -// This utility type flattens all the keys of a schema object and its nested objects as a union type. -// Its purpose is to ensure that the FieldMap keys are always in sync with the schema object. -// It assumes all optional fields of the schema are required in the field map, they can always be omitted from the resulting type. -export type SchemaFieldMapKeys< - T extends Record, - Key = keyof T -> = Key extends string - ? NonNullable extends Record - ? `${Key}` | `${Key}.${SchemaFieldMapKeys>}` - : `${Key}` - : never; diff --git a/packages/kbn-index-adapter/tsconfig.json b/packages/kbn-index-adapter/tsconfig.json deleted file mode 100644 index cca50adbf7eb8..0000000000000 --- a/packages/kbn-index-adapter/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - ] - }, - "include": ["**/*.ts"], - "kbn_references": [ - "@kbn/core", - "@kbn/std", - "@kbn/safer-lodash-set", - "@kbn/logging-mocks", - ], - "exclude": [ - "target/**/*" - ], -} diff --git a/packages/kbn-investigation-shared/jest.config.js b/packages/kbn-investigation-shared/jest.config.js deleted file mode 100644 index 54ed81a5d343b..0000000000000 --- a/packages/kbn-investigation-shared/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test/jest_node', - rootDir: '../..', - roots: ['/packages/kbn-investigation-shared'], -}; diff --git a/packages/kbn-investigation-shared/package.json b/packages/kbn-investigation-shared/package.json deleted file mode 100644 index 7687defb4dc5a..0000000000000 --- a/packages/kbn-investigation-shared/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "@kbn/investigation-shared", - "private": true, - "version": "1.0.0", - "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0" -} diff --git a/packages/kbn-investigation-shared/src/index.ts b/packages/kbn-investigation-shared/src/index.ts deleted file mode 100644 index 8ab81653a18dd..0000000000000 --- a/packages/kbn-investigation-shared/src/index.ts +++ /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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export * from './rest_specs'; -export * from './schema'; diff --git a/packages/kbn-investigation-shared/src/rest_specs/create.ts b/packages/kbn-investigation-shared/src/rest_specs/create.ts deleted file mode 100644 index 8a8e4d62a37ee..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/create.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationResponseSchema } from './investigation'; -import { alertOriginSchema, blankOriginSchema } from '../schema'; - -const createInvestigationParamsSchema = z.object({ - body: z.object({ - id: z.string(), - title: z.string(), - params: z.object({ - timeRange: z.object({ from: z.number(), to: z.number() }), - }), - origin: z.union([alertOriginSchema, blankOriginSchema]), - tags: z.array(z.string()), - externalIncidentUrl: z.string().nullable(), - }), -}); - -const createInvestigationResponseSchema = investigationResponseSchema; - -type CreateInvestigationParams = z.infer; -type CreateInvestigationResponse = z.output; - -export { createInvestigationParamsSchema, createInvestigationResponseSchema }; -export type { CreateInvestigationParams, CreateInvestigationResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/create_item.ts b/packages/kbn-investigation-shared/src/rest_specs/create_item.ts deleted file mode 100644 index 2e9551fcaa36b..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/create_item.ts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { itemSchema } from '../schema'; -import { investigationItemResponseSchema } from './investigation_item'; - -const createInvestigationItemParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - }), - body: itemSchema, -}); - -const createInvestigationItemResponseSchema = investigationItemResponseSchema; - -type CreateInvestigationItemParams = z.infer; -type CreateInvestigationItemResponse = z.output; - -export { createInvestigationItemParamsSchema, createInvestigationItemResponseSchema }; -export type { CreateInvestigationItemParams, CreateInvestigationItemResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/create_note.ts b/packages/kbn-investigation-shared/src/rest_specs/create_note.ts deleted file mode 100644 index bf4c4f62456e2..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/create_note.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationNoteResponseSchema } from './investigation_note'; - -const createInvestigationNoteParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - }), - body: z.object({ - content: z.string(), - }), -}); - -const createInvestigationNoteResponseSchema = investigationNoteResponseSchema; - -type CreateInvestigationNoteParams = z.infer; -type CreateInvestigationNoteResponse = z.output; - -export { createInvestigationNoteParamsSchema, createInvestigationNoteResponseSchema }; -export type { CreateInvestigationNoteParams, CreateInvestigationNoteResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/delete.ts b/packages/kbn-investigation-shared/src/rest_specs/delete.ts deleted file mode 100644 index 32e9b1f26bf66..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/delete.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -const deleteInvestigationParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - }), -}); - -type DeleteInvestigationParams = z.infer; - -export { deleteInvestigationParamsSchema }; -export type { DeleteInvestigationParams }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts b/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts deleted file mode 100644 index 712a74e299368..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const deleteInvestigationItemParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - itemId: z.string(), - }), -}); - -type DeleteInvestigationItemParams = z.infer; - -export { deleteInvestigationItemParamsSchema }; -export type { DeleteInvestigationItemParams }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts b/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts deleted file mode 100644 index c3789ea13a359..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const deleteInvestigationNoteParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - noteId: z.string(), - }), -}); - -type DeleteInvestigationNoteParams = z.infer; - -export { deleteInvestigationNoteParamsSchema }; -export type { DeleteInvestigationNoteParams }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/entity.ts b/packages/kbn-investigation-shared/src/rest_specs/entity.ts deleted file mode 100644 index 8e571f3e2a4d4..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/entity.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const metricsSchema = z.object({ - failedTransactionRate: z.number().optional(), - latency: z.number().optional(), - throughput: z.number().optional(), - logErrorRate: z.number().optional(), - logRate: z.number().optional(), -}); - -const entitySchema = z.object({ - id: z.string(), - definition_id: z.string(), - definition_version: z.string(), - display_name: z.string(), - last_seen_timestamp: z.string(), - identity_fields: z.array(z.string()), - schema_version: z.string(), - type: z.string(), - metrics: metricsSchema, -}); - -const entitySourceSchema = z.object({ - dataStream: z.string().optional(), -}); - -const entityWithSourceSchema = z.intersection( - entitySchema, - z.object({ - sources: z.array(entitySourceSchema), - }) -); - -type EntityWithSource = z.output; -type EntitySource = z.output; - -export { entitySchema, entityWithSourceSchema }; -export type { EntityWithSource, EntitySource }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/event.ts b/packages/kbn-investigation-shared/src/rest_specs/event.ts deleted file mode 100644 index e63083f75c824..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/event.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { eventSchema } from '../schema'; - -const eventResponseSchema = eventSchema; - -type EventResponse = z.output; -type EventSchema = z.output; - -export { eventResponseSchema }; -export type { EventResponse, EventSchema }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/find.ts b/packages/kbn-investigation-shared/src/rest_specs/find.ts deleted file mode 100644 index 7a938212cfba4..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/find.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationResponseSchema } from './investigation'; - -const findInvestigationsParamsSchema = z - .object({ - query: z - .object({ - alertId: z.string(), - search: z.string(), - filter: z.string(), - page: z.coerce.number(), - perPage: z.coerce.number(), - }) - .partial(), - }) - .partial(); - -const findInvestigationsResponseSchema = z.object({ - page: z.number(), - perPage: z.number(), - total: z.number(), - results: z.array(investigationResponseSchema), -}); - -type FindInvestigationsParams = z.infer; -type FindInvestigationsResponse = z.output; - -export { findInvestigationsParamsSchema, findInvestigationsResponseSchema }; -export type { FindInvestigationsParams, FindInvestigationsResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/get.ts b/packages/kbn-investigation-shared/src/rest_specs/get.ts deleted file mode 100644 index d9104959c1d7b..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/get.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationResponseSchema } from './investigation'; - -const getInvestigationParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - }), -}); - -const getInvestigationResponseSchema = investigationResponseSchema; - -type GetInvestigationParams = z.infer; // Parsed payload used by the backend -type GetInvestigationResponse = z.output; // Raw response sent to the frontend - -export { getInvestigationParamsSchema, getInvestigationResponseSchema }; -export type { GetInvestigationParams, GetInvestigationResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts b/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts deleted file mode 100644 index bee9f15db587d..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { statusSchema } from '../schema'; - -const getAllInvestigationStatsParamsSchema = z.object({ - query: z.object({}), -}); - -const getAllInvestigationStatsResponseSchema = z.object({ - count: z.record(statusSchema, z.number()), - total: z.number(), -}); - -type GetAllInvestigationStatsResponse = z.output; - -export { getAllInvestigationStatsParamsSchema, getAllInvestigationStatsResponseSchema }; -export type { GetAllInvestigationStatsResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts b/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts deleted file mode 100644 index 35665b1b3c695..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const getAllInvestigationTagsParamsSchema = z.object({ - query: z.object({}), -}); - -const getAllInvestigationTagsResponseSchema = z.string().array(); - -type GetAllInvestigationTagsResponse = z.output; - -export { getAllInvestigationTagsParamsSchema, getAllInvestigationTagsResponseSchema }; -export type { GetAllInvestigationTagsResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts b/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts deleted file mode 100644 index 383bc21b58085..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { entityWithSourceSchema } from './entity'; - -const getEntitiesParamsSchema = z - .object({ - query: z - .object({ - 'service.name': z.string(), - 'service.environment': z.string(), - 'host.name': z.string(), - 'container.id': z.string(), - }) - .partial(), - }) - .partial(); - -const getEntitiesResponseSchema = z.object({ - entities: z.array(entityWithSourceSchema), -}); - -type GetEntitiesParams = z.infer; -type GetEntitiesResponse = z.output; - -export { getEntitiesParamsSchema, getEntitiesResponseSchema }; -export type { GetEntitiesParams, GetEntitiesResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/get_events.ts b/packages/kbn-investigation-shared/src/rest_specs/get_events.ts deleted file mode 100644 index 064a75fab1562..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/get_events.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { eventResponseSchema } from './event'; - -const getEventsParamsSchema = z - .object({ - query: z - .object({ - rangeFrom: z.string(), - rangeTo: z.string(), - filter: z.string(), - }) - .partial(), - }) - .partial(); - -const getEventsResponseSchema = z.array(eventResponseSchema); - -type GetEventsParams = z.infer; -type GetEventsResponse = z.output; - -export { getEventsParamsSchema, getEventsResponseSchema }; -export type { GetEventsParams, GetEventsResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/get_items.ts b/packages/kbn-investigation-shared/src/rest_specs/get_items.ts deleted file mode 100644 index eb6ddac42a7ae..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/get_items.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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationItemResponseSchema } from './investigation_item'; - -const getInvestigationItemsParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - }), -}); - -const getInvestigationItemsResponseSchema = z.array(investigationItemResponseSchema); - -type GetInvestigationItemsResponse = z.output; - -export { getInvestigationItemsParamsSchema, getInvestigationItemsResponseSchema }; -export type { GetInvestigationItemsResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts b/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts deleted file mode 100644 index 0a86f19a31d1a..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/get_notes.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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationNoteResponseSchema } from './investigation_note'; - -const getInvestigationNotesParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - }), -}); - -const getInvestigationNotesResponseSchema = z.array(investigationNoteResponseSchema); - -type GetInvestigationNotesResponse = z.output; - -export { getInvestigationNotesParamsSchema, getInvestigationNotesResponseSchema }; -export type { GetInvestigationNotesResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/index.ts b/packages/kbn-investigation-shared/src/rest_specs/index.ts deleted file mode 100644 index d0070c8b8959d..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/index.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export type * from './create'; -export type * from './create_item'; -export type * from './create_note'; -export type * from './delete'; -export type * from './delete_item'; -export type * from './delete_note'; -export type * from './find'; -export type * from './get'; -export type * from './get_items'; -export type * from './get_notes'; -export type * from './get_all_investigation_stats'; -export type * from './get_all_investigation_tags'; -export type * from './investigation'; -export type * from './investigation_item'; -export type * from './investigation_note'; -export type * from './update'; -export type * from './update_item'; -export type * from './update_note'; -export type * from './event'; -export type * from './get_events'; -export type * from './entity'; -export type * from './get_entities'; - -export * from './create'; -export * from './create_item'; -export * from './create_note'; -export * from './delete'; -export * from './delete_item'; -export * from './delete_note'; -export * from './find'; -export * from './get'; -export * from './get_items'; -export * from './get_notes'; -export * from './get_all_investigation_stats'; -export * from './get_all_investigation_tags'; -export * from './investigation'; -export * from './investigation_item'; -export * from './investigation_note'; -export * from './update'; -export * from './update_item'; -export * from './update_note'; -export * from './event'; -export * from './get_events'; -export * from './entity'; -export * from './get_entities'; diff --git a/packages/kbn-investigation-shared/src/rest_specs/investigation.ts b/packages/kbn-investigation-shared/src/rest_specs/investigation.ts deleted file mode 100644 index c02e90cd70d25..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/investigation.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationSchema } from '../schema'; - -const investigationResponseSchema = investigationSchema; - -type InvestigationResponse = z.output; - -export { investigationResponseSchema }; -export type { InvestigationResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts b/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts deleted file mode 100644 index e7faa1d7a2834..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationItemSchema } from '../schema'; - -const investigationItemResponseSchema = investigationItemSchema; - -type InvestigationItemResponse = z.output; - -export { investigationItemResponseSchema }; -export type { InvestigationItemResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts b/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts deleted file mode 100644 index 73114fe844d52..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationNoteSchema } from '../schema'; - -const investigationNoteResponseSchema = investigationNoteSchema; - -type InvestigationNoteResponse = z.output; - -export { investigationNoteResponseSchema }; -export type { InvestigationNoteResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/update.ts b/packages/kbn-investigation-shared/src/rest_specs/update.ts deleted file mode 100644 index cab773d9549a2..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/update.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationResponseSchema } from './investigation'; -import { statusSchema } from '../schema'; - -const updateInvestigationParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - }), - body: z - .object({ - title: z.string(), - status: statusSchema, - params: z.object({ - timeRange: z.object({ from: z.number(), to: z.number() }), - }), - tags: z.array(z.string()), - externalIncidentUrl: z.string().nullable(), - }) - .partial(), -}); - -const updateInvestigationResponseSchema = investigationResponseSchema; - -type UpdateInvestigationParams = z.infer; -type UpdateInvestigationResponse = z.output; - -export { updateInvestigationParamsSchema, updateInvestigationResponseSchema }; -export type { UpdateInvestigationParams, UpdateInvestigationResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/update_item.ts b/packages/kbn-investigation-shared/src/rest_specs/update_item.ts deleted file mode 100644 index 8e96785c452b9..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/update_item.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationItemResponseSchema } from './investigation_item'; -import { itemSchema } from '../schema'; - -const updateInvestigationItemParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - itemId: z.string(), - }), - body: itemSchema, -}); - -const updateInvestigationItemResponseSchema = investigationItemResponseSchema; - -type UpdateInvestigationItemParams = z.infer; -type UpdateInvestigationItemResponse = z.output; - -export { updateInvestigationItemParamsSchema, updateInvestigationItemResponseSchema }; -export type { UpdateInvestigationItemParams, UpdateInvestigationItemResponse }; diff --git a/packages/kbn-investigation-shared/src/rest_specs/update_note.ts b/packages/kbn-investigation-shared/src/rest_specs/update_note.ts deleted file mode 100644 index 35862cbe19aea..0000000000000 --- a/packages/kbn-investigation-shared/src/rest_specs/update_note.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { investigationNoteResponseSchema } from './investigation_note'; - -const updateInvestigationNoteParamsSchema = z.object({ - path: z.object({ - investigationId: z.string(), - noteId: z.string(), - }), - body: z.object({ - content: z.string(), - }), -}); - -const updateInvestigationNoteResponseSchema = investigationNoteResponseSchema; - -type UpdateInvestigationNoteParams = z.infer; -type UpdateInvestigationNoteResponse = z.output; - -export { updateInvestigationNoteParamsSchema, updateInvestigationNoteResponseSchema }; -export type { UpdateInvestigationNoteParams, UpdateInvestigationNoteResponse }; diff --git a/packages/kbn-investigation-shared/src/schema/event.ts b/packages/kbn-investigation-shared/src/schema/event.ts deleted file mode 100644 index c954a0de13fb3..0000000000000 --- a/packages/kbn-investigation-shared/src/schema/event.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const eventTypeSchema = z.union([ - z.literal('annotation'), - z.literal('alert'), - z.literal('error_rate'), - z.literal('latency'), - z.literal('anomaly'), -]); - -const annotationEventSchema = z.object({ - eventType: z.literal('annotation'), - annotationType: z.string().optional(), -}); - -const alertStatusSchema = z.union([ - z.literal('active'), - z.literal('flapping'), - z.literal('recovered'), - z.literal('untracked'), -]); - -const alertEventSchema = z.object({ - eventType: z.literal('alert'), - alertStatus: alertStatusSchema, -}); - -const sourceSchema = z.record(z.string(), z.any()); - -const eventSchema = z.intersection( - z.object({ - id: z.string(), - title: z.string(), - description: z.string(), - timestamp: z.number(), - eventType: eventTypeSchema, - source: sourceSchema.optional(), - }), - z.discriminatedUnion('eventType', [annotationEventSchema, alertEventSchema]) -); - -export { eventSchema }; diff --git a/packages/kbn-investigation-shared/src/schema/index.ts b/packages/kbn-investigation-shared/src/schema/index.ts deleted file mode 100644 index f65fe9baf1f6f..0000000000000 --- a/packages/kbn-investigation-shared/src/schema/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export * from './investigation'; -export * from './investigation_item'; -export * from './investigation_note'; -export * from './origin'; -export * from './event'; - -export type * from './investigation'; diff --git a/packages/kbn-investigation-shared/src/schema/investigation.ts b/packages/kbn-investigation-shared/src/schema/investigation.ts deleted file mode 100644 index 751f1a20048a5..0000000000000 --- a/packages/kbn-investigation-shared/src/schema/investigation.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; -import { alertOriginSchema, blankOriginSchema } from './origin'; -import { investigationNoteSchema } from './investigation_note'; -import { investigationItemSchema } from './investigation_item'; - -const statusSchema = z.union([ - z.literal('triage'), - z.literal('active'), - z.literal('mitigated'), - z.literal('resolved'), - z.literal('cancelled'), -]); - -const investigationSchema = z.object({ - id: z.string(), - title: z.string(), - createdAt: z.number(), - createdBy: z.string(), - updatedAt: z.number(), - params: z.object({ - timeRange: z.object({ from: z.number(), to: z.number() }), - }), - origin: z.union([alertOriginSchema, blankOriginSchema]), - status: statusSchema, - tags: z.array(z.string()), - notes: z.array(investigationNoteSchema), - items: z.array(investigationItemSchema), - externalIncidentUrl: z.string().nullable(), -}); - -type Status = z.infer; - -export type { Status }; -export { investigationSchema, statusSchema }; diff --git a/packages/kbn-investigation-shared/src/schema/investigation_item.ts b/packages/kbn-investigation-shared/src/schema/investigation_item.ts deleted file mode 100644 index 820db8500e5dc..0000000000000 --- a/packages/kbn-investigation-shared/src/schema/investigation_item.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const itemSchema = z.object({ - title: z.string(), - type: z.string(), - params: z.record(z.string(), z.any()), -}); - -const investigationItemSchema = z.intersection( - z.object({ - id: z.string(), - createdAt: z.number(), - createdBy: z.string(), - updatedAt: z.number(), - }), - itemSchema -); - -type Item = z.infer; -type InvestigationItem = z.infer; - -export type { Item, InvestigationItem }; -export { investigationItemSchema, itemSchema }; diff --git a/packages/kbn-investigation-shared/src/schema/investigation_note.ts b/packages/kbn-investigation-shared/src/schema/investigation_note.ts deleted file mode 100644 index ff877ab884127..0000000000000 --- a/packages/kbn-investigation-shared/src/schema/investigation_note.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const investigationNoteSchema = z.object({ - id: z.string(), - content: z.string(), - createdAt: z.number(), - updatedAt: z.number(), - createdBy: z.string(), -}); - -export { investigationNoteSchema }; diff --git a/packages/kbn-investigation-shared/src/schema/origin.ts b/packages/kbn-investigation-shared/src/schema/origin.ts deleted file mode 100644 index b0c790db0ad67..0000000000000 --- a/packages/kbn-investigation-shared/src/schema/origin.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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { z } from '@kbn/zod'; - -const blankOriginSchema = z.object({ type: z.literal('blank') }); -const alertOriginSchema = z.object({ type: z.literal('alert'), id: z.string() }); - -export { alertOriginSchema, blankOriginSchema }; diff --git a/packages/kbn-investigation-shared/tsconfig.json b/packages/kbn-investigation-shared/tsconfig.json deleted file mode 100644 index e8db47aba5c14..0000000000000 --- a/packages/kbn-investigation-shared/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/zod" - ] -} diff --git a/packages/kbn-io-ts-utils/BUILD.bazel b/packages/kbn-io-ts-utils/BUILD.bazel new file mode 100644 index 0000000000000..cad7e8e0b6226 --- /dev/null +++ b/packages/kbn-io-ts-utils/BUILD.bazel @@ -0,0 +1,28 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") + +SRCS = glob( + [ + "**/*.ts", + "**/*.js", + ], + exclude = [ + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__/**", + "**/integration_tests/**", + "**/mocks/**", + "**/scripts/**", + "**/storybook/**", + "**/test_fixtures/**", + "**/test_helpers/**", + ], +) + +js_library( + name = "kbn-io-ts-utils", + package_name = "@kbn/io-ts-utils", + srcs = ["package.json"] + SRCS, + visibility = ["//visibility:public"], +) \ No newline at end of file diff --git a/packages/kbn-io-ts-utils/jest.config.js b/packages/kbn-io-ts-utils/jest.config.js deleted file mode 100644 index 21c3cf4f8e049..0000000000000 --- a/packages/kbn-io-ts-utils/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['/packages/kbn-io-ts-utils'], -}; diff --git a/packages/kbn-io-ts-utils/tsconfig.json b/packages/kbn-io-ts-utils/tsconfig.json deleted file mode 100644 index 0ac791e1542ae..0000000000000 --- a/packages/kbn-io-ts-utils/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/datemath" - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/packages/kbn-management/cards_navigation/jest.config.js b/packages/kbn-management/cards_navigation/jest.config.js deleted file mode 100644 index 6d918533dacec..0000000000000 --- a/packages/kbn-management/cards_navigation/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/kbn-management/cards_navigation'], -}; diff --git a/packages/kbn-management/cards_navigation/tsconfig.json b/packages/kbn-management/cards_navigation/tsconfig.json deleted file mode 100644 index d73041d8c35a9..0000000000000 --- a/packages/kbn-management/cards_navigation/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@kbn/ambient-ui-types" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - ] -} diff --git a/packages/kbn-management/settings/application/tsconfig.json b/packages/kbn-management/settings/application/tsconfig.json deleted file mode 100644 index 3ebad4ae3d214..0000000000000 --- a/packages/kbn-management/settings/application/tsconfig.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@testing-library/jest-dom" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/core-ui-settings-browser", - "@kbn/management-settings-types", - "@kbn/management-settings-field-definition", - "@kbn/management-settings-utilities", - "@kbn/management-settings-components-form", - "@kbn/i18n", - "@kbn/test-jest-helpers", - "@kbn/core-application-browser", - "@kbn/i18n-react", - "@kbn/management-settings-components-field-category", - "@kbn/react-kibana-context-root", - "@kbn/core-theme-browser-mocks", - "@kbn/core-i18n-browser", - "@kbn/core-analytics-browser-mocks", - "@kbn/core-ui-settings-common", - "@kbn/management-settings-section-registry", - "@kbn/core-notifications-browser", - "@kbn/core-chrome-browser", - "@kbn/core-user-profile-browser-mocks", - ] -} diff --git a/packages/kbn-management/settings/components/field_category/jest.config.js b/packages/kbn-management/settings/components/field_category/jest.config.js deleted file mode 100644 index 73d47db7b38a8..0000000000000 --- a/packages/kbn-management/settings/components/field_category/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../..', - roots: ['/packages/kbn-management/settings/components/field_category'], -}; diff --git a/packages/kbn-management/settings/components/field_category/tsconfig.json b/packages/kbn-management/settings/components/field_category/tsconfig.json deleted file mode 100644 index 8b4e9b1566b31..0000000000000 --- a/packages/kbn-management/settings/components/field_category/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/management-settings-utilities", - "@kbn/management-settings-field-definition", - "@kbn/management-settings-components-field-row", - "@kbn/management-settings-types", - "@kbn/i18n-react", - ] -} diff --git a/packages/kbn-management/settings/components/field_input/tsconfig.json b/packages/kbn-management/settings/components/field_input/tsconfig.json deleted file mode 100644 index d3fc7c27da7a9..0000000000000 --- a/packages/kbn-management/settings/components/field_input/tsconfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/management-settings-types", - "@kbn/management-settings-field-definition", - "@kbn/monaco", - "@kbn/management-settings-utilities", - "@kbn/i18n-react", - "@kbn/i18n", - "@kbn/core-notifications-browser", - "@kbn/core-ui-settings-common", - "@kbn/react-kibana-context-root", - "@kbn/core-theme-browser-mocks", - "@kbn/core-i18n-browser", - "@kbn/core-analytics-browser-mocks", - "@kbn/core-ui-settings-browser", - "@kbn/code-editor", - "@kbn/core-user-profile-browser-mocks", - ] -} diff --git a/packages/kbn-management/settings/components/field_row/tsconfig.json b/packages/kbn-management/settings/components/field_row/tsconfig.json deleted file mode 100644 index 0c1f8e31e4a59..0000000000000 --- a/packages/kbn-management/settings/components/field_row/tsconfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@kbn/ambient-ui-types", - "@kbn/ambient-storybook-types", - "@emotion/react/types/css-prop" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/management-settings-types", - "@kbn/management-settings-field-definition", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/management-settings-utilities", - "@kbn/management-settings-components-field-input", - "@kbn/core-doc-links-browser", - "@kbn/react-kibana-context-root", - "@kbn/core-theme-browser-mocks", - "@kbn/core-i18n-browser", - "@kbn/core-analytics-browser-mocks", - "@kbn/core-user-profile-browser-mocks", - ] -} diff --git a/packages/kbn-management/settings/components/form/tsconfig.json b/packages/kbn-management/settings/components/form/tsconfig.json deleted file mode 100644 index 073882ccf4b48..0000000000000 --- a/packages/kbn-management/settings/components/form/tsconfig.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@testing-library/jest-dom", - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/management-settings-types", - "@kbn/management-settings-field-definition", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/management-settings-components-field-row", - "@kbn/react-kibana-context-root", - "@kbn/core-theme-browser-mocks", - "@kbn/core-i18n-browser", - "@kbn/react-kibana-mount", - "@kbn/core-notifications-browser", - "@kbn/core-theme-browser", - "@kbn/core-ui-settings-browser", - "@kbn/management-settings-components-field-input", - "@kbn/management-settings-components-field-category", - "@kbn/management-settings-utilities", - "@kbn/core-analytics-browser-mocks", - "@kbn/core-ui-settings-common", - "@kbn/core-user-profile-browser-mocks", - "@kbn/core-user-profile-browser", - ] -} diff --git a/packages/kbn-management/settings/field_definition/tsconfig.json b/packages/kbn-management/settings/field_definition/tsconfig.json deleted file mode 100644 index 26d2dc3afb883..0000000000000 --- a/packages/kbn-management/settings/field_definition/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/management-settings-types", - "@kbn/core-ui-settings-browser", - "@kbn/management-settings-utilities", - ] -} diff --git a/packages/kbn-management/settings/types/tsconfig.json b/packages/kbn-management/settings/types/tsconfig.json deleted file mode 100644 index 2753fb935acaa..0000000000000 --- a/packages/kbn-management/settings/types/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/analytics", - "@kbn/core", - "@kbn/core-ui-settings-common", - "@kbn/management-settings-section-registry", - ] -} diff --git a/packages/kbn-management/settings/utilities/tsconfig.json b/packages/kbn-management/settings/utilities/tsconfig.json deleted file mode 100644 index 553ed61f4fd90..0000000000000 --- a/packages/kbn-management/settings/utilities/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/management-settings-types", - "@kbn/i18n", - "@kbn/core-ui-settings-common", - ] -} diff --git a/packages/kbn-monaco/src/esql/lib/esql_theme.ts b/packages/kbn-monaco/src/esql/lib/esql_theme.ts index d8223df99bbd1..b10c924992f05 100644 --- a/packages/kbn-monaco/src/esql/lib/esql_theme.ts +++ b/packages/kbn-monaco/src/esql/lib/esql_theme.ts @@ -45,7 +45,7 @@ export const buildESQLTheme = ({ // source commands ...buildRuleGroup( ['from', 'row', 'show'], - euiThemeVars.euiColorPrimaryText, + euiThemeVars.euiColorPrimary, true // isBold ), @@ -88,12 +88,12 @@ export const buildESQLTheme = ({ 'desc', 'nulls_order', ], - euiThemeVars.euiColorAccentText, + euiThemeVars.euiColorAccent, true // isBold ), // functions - ...buildRuleGroup(['functions'], euiThemeVars.euiColorPrimaryText), + ...buildRuleGroup(['functions'], euiThemeVars.euiColorPrimary), // operators ...buildRuleGroup( @@ -116,7 +116,7 @@ export const buildESQLTheme = ({ 'percent', // '%' 'cast_op', // '::' ], - euiThemeVars.euiColorPrimaryText + euiThemeVars.euiColorPrimary ), // comments @@ -156,7 +156,7 @@ export const buildESQLTheme = ({ 'closing_metrics_line_comment', 'closing_metrics_multiline_comment', ], - euiThemeVars.euiColorDisabledText + euiThemeVars.euiTextSubduedColor ), // values diff --git a/packages/kbn-palettes/README.md b/packages/kbn-palettes/README.md new file mode 100644 index 0000000000000..d4c3913e33d24 --- /dev/null +++ b/packages/kbn-palettes/README.md @@ -0,0 +1,3 @@ +# @kbn/palettes + +Package containing shared visualization palette definitions diff --git a/packages/kbn-palettes/classes/categorical_palette.ts b/packages/kbn-palettes/classes/categorical_palette.ts new file mode 100644 index 0000000000000..fc352e7b45b35 --- /dev/null +++ b/packages/kbn-palettes/classes/categorical_palette.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { Optional } from 'utility-types'; +import { KbnBasePalette, KbnBasePaletteConfig } from './palette'; +import { IKbnPalette } from './types'; + +export interface KbnCategoricalPaletteConfig extends Optional { + colors: string[]; +} + +export class KbnCategoricalPalette extends KbnBasePalette implements IKbnPalette { + public readonly type = 'categorical' as const; + + #colors: string[]; + + constructor({ colors, colorCount = colors.length, ...rest }: KbnCategoricalPaletteConfig) { + super({ ...rest, colorCount }); + + this.#colors = colors; + } + + public colors = (n?: number) => { + const end = n === undefined ? n : Math.max(1, n); + return this.#colors.slice(0, end); + }; +} diff --git a/packages/kbn-palettes/classes/color_fn_palette.ts b/packages/kbn-palettes/classes/color_fn_palette.ts new file mode 100644 index 0000000000000..4be79355f110f --- /dev/null +++ b/packages/kbn-palettes/classes/color_fn_palette.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { Optional } from 'utility-types'; +import { KbnBasePaletteConfig, KbnBasePalette } from './palette'; +import { IKbnPalette, KbnPaletteType } from './types'; + +const DEFAULT_COLOR_COUNT = 10; + +export interface KbnColorFnPaletteConfig extends Optional { + type: KbnPaletteType; + colorFn: (n: number) => string[]; + /** + * Default number of colors returned from `colors` method. + * + * @default `colorCount` + */ + defaultNumberOfColors?: number; +} + +export class KbnColorFnPalette extends KbnBasePalette implements IKbnPalette { + public readonly type: KbnPaletteType; + + #colorFn: (n: number) => string[]; + #defaultNumberOfColors: number; + + constructor({ + type, + colorFn, + defaultNumberOfColors, + colorCount = DEFAULT_COLOR_COUNT, + ...rest + }: KbnColorFnPaletteConfig) { + super({ ...rest, colorCount }); + + this.type = type; + + this.#colorFn = colorFn; + this.#defaultNumberOfColors = defaultNumberOfColors ?? colorCount; + } + + public colors = (n: number = this.#defaultNumberOfColors) => { + return this.#colorFn(n === undefined ? n : Math.max(1, n)); + }; +} diff --git a/packages/kbn-palettes/classes/index.ts b/packages/kbn-palettes/classes/index.ts new file mode 100644 index 0000000000000..6cc89dc1cc1fe --- /dev/null +++ b/packages/kbn-palettes/classes/index.ts @@ -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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './types'; +export { KbnPalettes } from './palettes'; diff --git a/packages/kbn-palettes/classes/palette.ts b/packages/kbn-palettes/classes/palette.ts new file mode 100644 index 0000000000000..8c707b1c3b7da --- /dev/null +++ b/packages/kbn-palettes/classes/palette.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { Optional } from 'utility-types'; +import { IKbnPalette, KbnPaletteType } from './types'; + +export type KbnBasePaletteConfig = Optional< + Pick, + 'legacy' | 'aliases' +>; + +export abstract class KbnBasePalette implements IKbnPalette { + public abstract type: KbnPaletteType; + + public readonly id: string; + public readonly name: string; + public readonly colorCount: number; + public readonly legacy: boolean; + public readonly standalone: boolean; + public readonly aliases: string[]; + + constructor({ + id, + name, + colorCount, + aliases = [], + legacy = false, + standalone = false, + }: KbnBasePaletteConfig) { + this.id = id; + this.name = name; + this.colorCount = colorCount; + this.legacy = legacy; + this.standalone = standalone; + this.aliases = aliases; + } + + public abstract colors: (n?: number | undefined) => string[]; + + public getColor = (colorIndex: number, numberOfColors?: number) => { + const colors = this.colors(numberOfColors); + return colors[colorIndex % colors.length]; // ensure color is always returned + }; +} diff --git a/packages/kbn-palettes/classes/palettes.ts b/packages/kbn-palettes/classes/palettes.ts new file mode 100644 index 0000000000000..8b0ea42dd0724 --- /dev/null +++ b/packages/kbn-palettes/classes/palettes.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { IKbnPalette } from './types'; + +export class KbnPalettes { + #palettes: Map; + #aliasMappings: Map; + #defaultPalette: IKbnPalette; + + constructor(palettes: IKbnPalette[], defaultPalette: IKbnPalette) { + this.#defaultPalette = defaultPalette; + this.#palettes = new Map(palettes.map((p) => [p.id, p])); + this.#aliasMappings = buildAliasMappings(palettes); + } + + query = (id: string) => { + const aliasedId = (this.#palettes.has(id) ? id : this.#aliasMappings.get(id)) ?? id; + return this.#palettes.get(aliasedId); + }; + + get = (id: string) => { + return this.query(id) ?? this.#defaultPalette; + }; + + getAll = () => { + return [...this.#palettes.values()].filter(({ standalone }) => !standalone); + }; +} + +function buildAliasMappings(palettes: IKbnPalette[]): Map { + return palettes.reduce((acc, { id, aliases }) => { + aliases.forEach((alias) => { + acc.set(alias, id); + }); + return acc; + }, new Map()); +} diff --git a/packages/kbn-palettes/classes/types.ts b/packages/kbn-palettes/classes/types.ts new file mode 100644 index 0000000000000..345978a409a51 --- /dev/null +++ b/packages/kbn-palettes/classes/types.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export type KbnPaletteType = 'categorical' | 'gradient'; + +/** + * Common palette definition used throughout kibana + */ +export interface IKbnPalette { + /** + * Unique identifier for the palette + */ + id: string; + /** + * Display name of this palette. + */ + name: string; + /** + * Type of pallette + */ + type: KbnPaletteType; + /** + * Number of colors to display + */ + colorCount: number; + /** + * Palette belongs to an outdated theme set + */ + legacy: boolean; + /** + * Alternate aliases/ids this palette matches + */ + aliases: string[]; + /** + * Excluded from `getAll` but can still query for palette with `get`/`query` + * + * An example would be `KbnPalette.Neutral` palette. I want to exclude it from the list of all available palettes, but I still want to `get`/`query` the palette. + */ + standalone?: boolean; + /** + * Returns array of colors, optionally provide desired number of colors (`n`) + */ + colors: (n?: number) => string[]; + /** + * Returns color provided index and optional total number of colors + */ + getColor: (colorIndex: number, numberOfColors?: number) => string; +} diff --git a/packages/kbn-palettes/constants.ts b/packages/kbn-palettes/constants.ts new file mode 100644 index 0000000000000..13ac550577e59 --- /dev/null +++ b/packages/kbn-palettes/constants.ts @@ -0,0 +1,81 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export const DEFAULT_FALLBACK_PALETTE = 'default' as const; + +export const EUI_THEME_AMSTERDAM = 'EUI_THEME_AMSTERDAM'; +export const EUI_THEME_BOREALIS = 'EUI_THEME_BOREALIS'; + +const semantic = { + /** + * Log level palette + */ + LogLevel: 'log_level' as const, +}; + +const categorical = { + /** + * Default kibana theme + */ + Default: DEFAULT_FALLBACK_PALETTE, + /** + * Neutral palette + */ + Neutral: 'neutral' as const, + + // ---- Legacy Palettes ---- + /** + * Kibana legacy theme v7 to v9 + */ + Kibana7: 'eui_amsterdam' as const, + /** + * Kibana behind text legacy theme v7 to v9 + */ + Kibana7BehindText: 'behind_text' as const, + /** + * Kibana legacy theme v4 to v7 + */ + Kibana4: 'kibana_v7_legacy' as const, + /** + * Elastic classic color palette + */ + ElasticClassic: 'elastic_brand_2023' as const, +}; + +const gradient = { + Cool: 'cool' as const, + Gray: 'gray' as const, + Red: 'red' as const, + Green: 'green' as const, + Warm: 'warm' as const, + Temperature: 'temperature' as const, + Complementary: 'complementary' as const, + Status: 'status' as const, +}; + +/** + * Enum of all kbn palette ids, including by type + */ +export const KbnPalette = { + // Categorical palettes + ...categorical, + + // Gradient palettes + ...gradient, + + // Semantic palettes + ...semantic, + + // ---- Deprecated palettes ---- + /** + * Amsterdam theme + * @deprecated use `KbnPalette.kibana7` + */ + Amsterdam: 'eui_amsterdam_color_blind' as const, +}; diff --git a/packages/kbn-palettes/hooks/index.ts b/packages/kbn-palettes/hooks/index.ts new file mode 100644 index 0000000000000..b01c38728d15e --- /dev/null +++ b/packages/kbn-palettes/hooks/index.ts @@ -0,0 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './use_kbn_palettes'; diff --git a/packages/kbn-palettes/hooks/use_kbn_palettes.ts b/packages/kbn-palettes/hooks/use_kbn_palettes.ts new file mode 100644 index 0000000000000..f78c70ad2ba3e --- /dev/null +++ b/packages/kbn-palettes/hooks/use_kbn_palettes.ts @@ -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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { useEuiTheme } from '@elastic/eui'; +import { getPalettes } from '../palettes'; +import { getLegacyKbnPalettes } from '../palettes/legacy'; + +export function useKbnPalettes() { + const { + euiTheme: { themeName }, + colorMode, + } = useEuiTheme(); + + if (themeName === 'EUI_THEME_BOREALIS') { + return getPalettes(colorMode === 'DARK'); + } + + return getLegacyKbnPalettes(colorMode === 'DARK'); +} diff --git a/packages/kbn-palettes/index.ts b/packages/kbn-palettes/index.ts new file mode 100644 index 0000000000000..361273837f9c9 --- /dev/null +++ b/packages/kbn-palettes/index.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './palettes'; +export * from './classes'; +export { DEFAULT_FALLBACK_PALETTE, KbnPalette } from './constants'; + +export * from './hooks'; diff --git a/packages/kbn-palettes/jest.config.js b/packages/kbn-palettes/jest.config.js new file mode 100644 index 0000000000000..ba851fd1d70fa --- /dev/null +++ b/packages/kbn-palettes/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-palettes'], +}; diff --git a/packages/kbn-palettes/kibana.jsonc b/packages/kbn-palettes/kibana.jsonc new file mode 100644 index 0000000000000..940c34426c2bc --- /dev/null +++ b/packages/kbn-palettes/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/palettes", + "owner": "@elastic/kibana-visualizations" +} diff --git a/packages/kbn-palettes/package.json b/packages/kbn-palettes/package.json new file mode 100644 index 0000000000000..6400900ccfba1 --- /dev/null +++ b/packages/kbn-palettes/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/palettes", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0" +} \ No newline at end of file diff --git a/packages/kbn-palettes/palettes/categorical/elastic.ts b/packages/kbn-palettes/palettes/categorical/elastic.ts new file mode 100644 index 0000000000000..239b1c009d5de --- /dev/null +++ b/packages/kbn-palettes/palettes/categorical/elastic.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteColorBlind } from '@elastic/eui'; +import { KbnPalette } from '../../constants'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; + +/** + * This is not correctly returning the updated vis colors from eui. + * All gradient function work correctly. + */ +export const elasticPalette = new KbnColorFnPalette({ + id: KbnPalette.Default, + type: 'categorical', + aliases: [ + 'elastic_borealis', // placeholder - not yet used + KbnPalette.Amsterdam, // to assign to existing default palettes + ], + colorCount: 10, + defaultNumberOfColors: 30, + name: i18n.translate('palettes.elastic.name', { + defaultMessage: 'Elastic (default)', + }), + // Return exact colors requested given enough rotations + colorFn: (n) => euiPaletteColorBlind({ rotations: Math.ceil(n / 10) }).slice(0, n), +}); diff --git a/packages/kbn-palettes/palettes/categorical/index.ts b/packages/kbn-palettes/palettes/categorical/index.ts new file mode 100644 index 0000000000000..63638c387f715 --- /dev/null +++ b/packages/kbn-palettes/palettes/categorical/index.ts @@ -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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './neutral'; +export * from './elastic'; diff --git a/packages/kbn-palettes/palettes/categorical/neutral.ts b/packages/kbn-palettes/palettes/categorical/neutral.ts new file mode 100644 index 0000000000000..13de3a45cb94a --- /dev/null +++ b/packages/kbn-palettes/palettes/categorical/neutral.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { + KbnCategoricalPalette, + KbnCategoricalPaletteConfig, +} from '../../classes/categorical_palette'; +import { KbnPalette } from '../../constants'; + +const commonProps = { + id: KbnPalette.Neutral, + standalone: true, + name: i18n.translate('palettes.elastic.name', { + defaultMessage: 'Neutral', + }), +} satisfies Omit; + +const lightNeutralPalette = new KbnCategoricalPalette({ + ...commonProps, + colors: ['#F6F9FC', '#D0D4DA', '#989FAA', '#666D78', '#373D45'], +}); + +const darkNeutralPalette = new KbnCategoricalPalette({ + ...commonProps, + colors: ['#F6F9FC', '#C9D4E6', '#89A0C4', '#546D95', '#283C5C'], +}); + +export const getNeutralPalette = (darkMode: boolean) => + darkMode ? darkNeutralPalette : lightNeutralPalette; diff --git a/packages/kbn-palettes/palettes/get_kbn_palettes.ts b/packages/kbn-palettes/palettes/get_kbn_palettes.ts new file mode 100644 index 0000000000000..0519a2d4bf9a9 --- /dev/null +++ b/packages/kbn-palettes/palettes/get_kbn_palettes.ts @@ -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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { CoreTheme } from '@kbn/core-theme-browser'; +import { getPalettes } from '.'; +import { getLegacyKbnPalettes } from './legacy'; + +export function getKbnPalettes({ name, darkMode }: CoreTheme) { + if (name === 'amsterdam') { + return getLegacyKbnPalettes(darkMode); + } + + return getPalettes(darkMode); +} diff --git a/packages/kbn-palettes/palettes/gradient/complementary.ts b/packages/kbn-palettes/palettes/gradient/complementary.ts new file mode 100644 index 0000000000000..c61fc8d140d5d --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/complementary.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteComplementary } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const complementaryPalette = new KbnColorFnPalette({ + id: KbnPalette.Complementary, + type: 'gradient', + name: i18n.translate('palettes.complementary.name', { + defaultMessage: 'Complementary', + }), + colorFn: euiPaletteComplementary, +}); diff --git a/packages/kbn-palettes/palettes/gradient/cool.ts b/packages/kbn-palettes/palettes/gradient/cool.ts new file mode 100644 index 0000000000000..2982cba8a35dd --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/cool.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteCool } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const coolPalette = new KbnColorFnPalette({ + id: KbnPalette.Cool, + type: 'gradient', + name: i18n.translate('palettes.cool.name', { + defaultMessage: 'Cool', + }), + colorFn: euiPaletteCool, +}); diff --git a/packages/kbn-palettes/palettes/gradient/gray.ts b/packages/kbn-palettes/palettes/gradient/gray.ts new file mode 100644 index 0000000000000..24d6d2444ce57 --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/gray.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteGray } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const grayPalette = new KbnColorFnPalette({ + id: KbnPalette.Gray, + type: 'gradient', + name: i18n.translate('palettes.gray.name', { + defaultMessage: 'Gray', + }), + colorFn: euiPaletteGray, +}); diff --git a/packages/kbn-palettes/palettes/gradient/green.ts b/packages/kbn-palettes/palettes/gradient/green.ts new file mode 100644 index 0000000000000..bb6655d575ea5 --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/green.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteGreen } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const greenPalette = new KbnColorFnPalette({ + id: KbnPalette.Green, + type: 'gradient', + name: i18n.translate('palettes.green.name', { + defaultMessage: 'Positive', + }), + colorFn: euiPaletteGreen, +}); diff --git a/packages/kbn-palettes/palettes/gradient/index.ts b/packages/kbn-palettes/palettes/gradient/index.ts new file mode 100644 index 0000000000000..7781fdd5ec7a3 --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './cool'; +export * from './gray'; +export * from './red'; +export * from './green'; +export * from './warm'; +export * from './temperature'; +export * from './complementary'; +export * from './status'; diff --git a/packages/kbn-palettes/palettes/gradient/red.ts b/packages/kbn-palettes/palettes/gradient/red.ts new file mode 100644 index 0000000000000..e2cd76df1e454 --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/red.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteRed } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const redPalette = new KbnColorFnPalette({ + id: KbnPalette.Red, + type: 'gradient', + name: i18n.translate('palettes.red.name', { + defaultMessage: 'Negative', + }), + colorFn: euiPaletteRed, +}); diff --git a/packages/kbn-palettes/palettes/gradient/status.ts b/packages/kbn-palettes/palettes/gradient/status.ts new file mode 100644 index 0000000000000..db0c1931aae73 --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/status.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteForStatus } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const statusPalette = new KbnColorFnPalette({ + id: KbnPalette.Status, + type: 'gradient', + name: i18n.translate('palettes.status.name', { + defaultMessage: 'Status', + }), + colorFn: euiPaletteForStatus, +}); diff --git a/packages/kbn-palettes/palettes/gradient/temperature.ts b/packages/kbn-palettes/palettes/gradient/temperature.ts new file mode 100644 index 0000000000000..5cf802db6c1f2 --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/temperature.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteForTemperature } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const temperaturePalette = new KbnColorFnPalette({ + id: KbnPalette.Temperature, + type: 'gradient', + name: i18n.translate('palettes.temperature.name', { + defaultMessage: 'Temperature', + }), + colorFn: euiPaletteForTemperature, +}); diff --git a/packages/kbn-palettes/palettes/gradient/warm.ts b/packages/kbn-palettes/palettes/gradient/warm.ts new file mode 100644 index 0000000000000..16ada3059903c --- /dev/null +++ b/packages/kbn-palettes/palettes/gradient/warm.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteWarm } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../classes/color_fn_palette'; +import { KbnPalette } from '../../constants'; + +export const warmPalette = new KbnColorFnPalette({ + id: KbnPalette.Warm, + type: 'gradient', + name: i18n.translate('palettes.warm.name', { + defaultMessage: 'Warm', + }), + colorFn: euiPaletteWarm, +}); diff --git a/packages/kbn-palettes/palettes/index.ts b/packages/kbn-palettes/palettes/index.ts new file mode 100644 index 0000000000000..5f70cafaa6b2c --- /dev/null +++ b/packages/kbn-palettes/palettes/index.ts @@ -0,0 +1,66 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { KbnPalettes } from '../classes/palettes'; +import { elasticPalette, getNeutralPalette } from './categorical'; +import { elasticClassicPalette, kibana4Palette, kibana7Palette } from './legacy/categorical'; +import { + complementaryPalette, + coolPalette, + grayPalette, + greenPalette, + redPalette, + statusPalette, + temperaturePalette, + warmPalette, +} from './gradient'; +export { logLevelPalette } from './semantic'; + +const darkKbnPalettes = new KbnPalettes( + [ + elasticPalette, + kibana7Palette, + kibana4Palette, + getNeutralPalette(true), + complementaryPalette, + coolPalette, + grayPalette, + greenPalette, + redPalette, + statusPalette, + temperaturePalette, + warmPalette, + elasticClassicPalette, + ], + elasticPalette +); + +const lightKbnPalettes = new KbnPalettes( + [ + elasticPalette, + kibana7Palette, + kibana4Palette, + getNeutralPalette(true), + complementaryPalette, + coolPalette, + grayPalette, + greenPalette, + redPalette, + statusPalette, + temperaturePalette, + warmPalette, + elasticClassicPalette, + ], + elasticPalette +); + +export const getPalettes = (darkMode: boolean) => (darkMode ? darkKbnPalettes : lightKbnPalettes); + +export { elasticPalette } from './categorical'; +export * from './get_kbn_palettes'; diff --git a/packages/kbn-palettes/palettes/legacy/categorical/elastic_classic.ts b/packages/kbn-palettes/palettes/legacy/categorical/elastic_classic.ts new file mode 100644 index 0000000000000..5a4347b8b7cc2 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/categorical/elastic_classic.ts @@ -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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { KbnCategoricalPalette } from '../../../classes/categorical_palette'; +import { KbnPalette } from '../../../constants'; + +export const elasticClassicPalette = new KbnCategoricalPalette({ + id: KbnPalette.ElasticClassic, + name: i18n.translate('palettes.classic.name', { + defaultMessage: 'Elastic classic', + }), + colors: ['#20377d', '#7de2d1', '#ff957d', '#f04e98', '#0077cc', '#fec514'], +}); diff --git a/packages/kbn-palettes/palettes/legacy/categorical/index.ts b/packages/kbn-palettes/palettes/legacy/categorical/index.ts new file mode 100644 index 0000000000000..52e244344f20e --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/categorical/index.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './kibana_7'; +export * from './kibana_7_behind_text'; +export * from './kibana_4'; +export * from './elastic_classic'; +export * from './neutral'; diff --git a/packages/kbn-palettes/palettes/legacy/categorical/kibana_4.ts b/packages/kbn-palettes/palettes/legacy/categorical/kibana_4.ts new file mode 100644 index 0000000000000..ff8019a8fb02f --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/categorical/kibana_4.ts @@ -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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { KbnCategoricalPalette } from '../../../classes/categorical_palette'; +import { KbnPalette } from '../../../constants'; + +export const kibana4Palette = new KbnCategoricalPalette({ + id: KbnPalette.Kibana4, + name: i18n.translate('palettes.kibana4.name', { + defaultMessage: 'Kibana 4', + }), + colors: ['#00a69b', '#57c17b', '#6f87d8', '#663db8', '#bc52bc', '#9e3533', '#daa05d'], +}); diff --git a/packages/kbn-palettes/palettes/legacy/categorical/kibana_7.ts b/packages/kbn-palettes/palettes/legacy/categorical/kibana_7.ts new file mode 100644 index 0000000000000..75ec1c7073c6e --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/categorical/kibana_7.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { KbnCategoricalPalette } from '../../../classes/categorical_palette'; +import { KbnPalette } from '../../../constants'; + +export const kibana7Palette = new KbnCategoricalPalette({ + id: KbnPalette.Kibana7, + aliases: [ + KbnPalette.Default, // needed when switching between new and old themes + KbnPalette.Amsterdam, // to assign to existing default palettes + ], + name: i18n.translate('palettes.kibana7.name', { + defaultMessage: 'Kibana 7', + }), + colorCount: 10, + colors: [ + '#54b399', + '#6092c0', + '#d36086', + '#9170b8', + '#ca8eae', + '#d6bf57', + '#b9a888', + '#da8b45', + '#aa6556', + '#e7664c', + '#7fc6b3', + '#88aed0', + '#de88a5', + '#ad94ca', + '#d8abc3', + '#e1cf81', + '#cbbea6', + '#e4a874', + '#c08c81', + '#ed8d79', + '#aad9cc', + '#b0c9e0', + '#e9b0c3', + '#c8b8dc', + '#e5c7d7', + '#ebdfab', + '#dcd4c4', + '#edc5a2', + '#d5b2ab', + '#f3b3a6', + ], +}); diff --git a/packages/kbn-palettes/palettes/legacy/categorical/kibana_7_behind_text.ts b/packages/kbn-palettes/palettes/legacy/categorical/kibana_7_behind_text.ts new file mode 100644 index 0000000000000..578afcdff6284 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/categorical/kibana_7_behind_text.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { KbnCategoricalPalette } from '../../../classes/categorical_palette'; +import { KbnPalette } from '../../../constants'; + +export const kibana7BehindText = new KbnCategoricalPalette({ + id: KbnPalette.Kibana7BehindText, + name: i18n.translate('palettes.kibana7BehindText.name', { + defaultMessage: 'Kibana 7 (behind text)', + }), + standalone: true, + colorCount: 10, + colors: [ + '#6dccb1', + '#79aad9', + '#ee789d', + '#a987d1', + '#e4a6c7', + '#f1d86f', + '#d2c0a0', + '#f5a35c', + '#c47c6c', + '#ff7e62', + '#98dfcc', + '#a0c7e9', + '#f8a0bd', + '#c6ace3', + '#f2c4dc', + '#fbe899', + '#e4d7be', + '#ffc08b', + '#daa498', + '#ffa590', + '#c3f3e5', + '#c9e2fa', + '#ffc9dc', + '#e1d1f6', + '#ffe0f1', + '#fff9c4', + '#f6eddd', + '#ffdeba', + '#efcbc4', + '#ffccbe', + ], +}); diff --git a/packages/kbn-palettes/palettes/legacy/categorical/neutral.ts b/packages/kbn-palettes/palettes/legacy/categorical/neutral.ts new file mode 100644 index 0000000000000..99bb21e42f395 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/categorical/neutral.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { KbnCategoricalPalette } from '../../../classes/categorical_palette'; +import { KbnPalette } from '../../../constants'; + +const schemeGreys = ['#f2f4fb', '#d4d9e5', '#98a2b3', '#696f7d', '#353642']; +const NEUTRAL_COLOR_LIGHT = schemeGreys.slice(); +const NEUTRAL_COLOR_DARK = schemeGreys.slice().reverse(); + +export const getNeutralPalette = (darkMode: boolean) => + new KbnCategoricalPalette({ + id: KbnPalette.Neutral, + name: i18n.translate('palettes.elastic.name', { + defaultMessage: 'Neutral', + }), + standalone: true, + colors: darkMode ? NEUTRAL_COLOR_DARK : NEUTRAL_COLOR_LIGHT, + }); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/complementary.ts b/packages/kbn-palettes/palettes/legacy/gradient/complementary.ts new file mode 100644 index 0000000000000..be730d39e89b1 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/complementary.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteComplementary } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const complementaryPalette = new KbnColorFnPalette({ + id: KbnPalette.Complementary, + type: 'gradient', + name: i18n.translate('palettes.complementary.name', { + defaultMessage: 'Complementary', + }), + colorFn: euiPaletteComplementary, +}); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/cool.ts b/packages/kbn-palettes/palettes/legacy/gradient/cool.ts new file mode 100644 index 0000000000000..178b7f2afeae2 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/cool.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteCool } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const coolPalette = new KbnColorFnPalette({ + id: KbnPalette.Cool, + type: 'gradient', + name: i18n.translate('palettes.cool.name', { + defaultMessage: 'Cool', + }), + colorFn: euiPaletteCool, +}); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/gray.ts b/packages/kbn-palettes/palettes/legacy/gradient/gray.ts new file mode 100644 index 0000000000000..c0176eba2262f --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/gray.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteGray } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const grayPalette = new KbnColorFnPalette({ + id: KbnPalette.Gray, + type: 'gradient', + name: i18n.translate('palettes.gray.name', { + defaultMessage: 'Gray', + }), + colorFn: euiPaletteGray, +}); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/green.ts b/packages/kbn-palettes/palettes/legacy/gradient/green.ts new file mode 100644 index 0000000000000..3e84be1c923ff --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/green.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteGreen } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const greenPalette = new KbnColorFnPalette({ + id: KbnPalette.Green, + type: 'gradient', + name: i18n.translate('palettes.green.name', { + defaultMessage: 'Positive', + }), + colorFn: euiPaletteGreen, +}); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/index.ts b/packages/kbn-palettes/palettes/legacy/gradient/index.ts new file mode 100644 index 0000000000000..7781fdd5ec7a3 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './cool'; +export * from './gray'; +export * from './red'; +export * from './green'; +export * from './warm'; +export * from './temperature'; +export * from './complementary'; +export * from './status'; diff --git a/packages/kbn-palettes/palettes/legacy/gradient/red.ts b/packages/kbn-palettes/palettes/legacy/gradient/red.ts new file mode 100644 index 0000000000000..9c028502ce602 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/red.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteRed } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const redPalette = new KbnColorFnPalette({ + id: KbnPalette.Red, + type: 'gradient', + name: i18n.translate('palettes.red.name', { + defaultMessage: 'Negative', + }), + colorFn: euiPaletteRed, +}); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/status.ts b/packages/kbn-palettes/palettes/legacy/gradient/status.ts new file mode 100644 index 0000000000000..d367efe4752ff --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/status.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteForStatus } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const statusPalette = new KbnColorFnPalette({ + id: KbnPalette.Status, + type: 'gradient', + name: i18n.translate('palettes.status.name', { + defaultMessage: 'Status', + }), + colorFn: euiPaletteForStatus, +}); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/temperature.ts b/packages/kbn-palettes/palettes/legacy/gradient/temperature.ts new file mode 100644 index 0000000000000..2ff7a7fbf65db --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/temperature.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteForTemperature } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const temperaturePalette = new KbnColorFnPalette({ + id: KbnPalette.Temperature, + type: 'gradient', + name: i18n.translate('palettes.temperature.name', { + defaultMessage: 'Temperature', + }), + colorFn: euiPaletteForTemperature, +}); diff --git a/packages/kbn-palettes/palettes/legacy/gradient/warm.ts b/packages/kbn-palettes/palettes/legacy/gradient/warm.ts new file mode 100644 index 0000000000000..f19a8eb148db3 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/gradient/warm.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { euiPaletteWarm } from '@elastic/eui'; +import { KbnColorFnPalette } from '../../../classes/color_fn_palette'; +import { KbnPalette } from '../../../constants'; + +export const warmPalette = new KbnColorFnPalette({ + id: KbnPalette.Warm, + type: 'gradient', + name: i18n.translate('palettes.warm.name', { + defaultMessage: 'Warm', + }), + colorFn: euiPaletteWarm, +}); diff --git a/packages/kbn-palettes/palettes/legacy/index.ts b/packages/kbn-palettes/palettes/legacy/index.ts new file mode 100644 index 0000000000000..ced72336fc370 --- /dev/null +++ b/packages/kbn-palettes/palettes/legacy/index.ts @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { KbnPalettes } from '../../classes/palettes'; + +import { + kibana7Palette, + kibana4Palette, + elasticClassicPalette, + getNeutralPalette, + kibana7BehindText, +} from './categorical'; +import { + complementaryPalette, + coolPalette, + grayPalette, + greenPalette, + redPalette, + statusPalette, + temperaturePalette, + warmPalette, +} from './gradient'; + +const darkLegacyKbnPalettes = new KbnPalettes( + [ + kibana7Palette, + kibana4Palette, + kibana7BehindText, + getNeutralPalette(true), + complementaryPalette, + coolPalette, + grayPalette, + greenPalette, + redPalette, + statusPalette, + temperaturePalette, + warmPalette, + elasticClassicPalette, + ], + kibana7Palette +); + +const lightLegacyKbnPalettes = new KbnPalettes( + [ + kibana7Palette, + kibana4Palette, + kibana7BehindText, + getNeutralPalette(true), + complementaryPalette, + coolPalette, + grayPalette, + greenPalette, + redPalette, + statusPalette, + temperaturePalette, + warmPalette, + elasticClassicPalette, + ], + kibana7Palette +); + +export const getLegacyKbnPalettes = (darkMode: boolean) => + darkMode ? darkLegacyKbnPalettes : lightLegacyKbnPalettes; diff --git a/packages/kbn-palettes/palettes/semantic/index.ts b/packages/kbn-palettes/palettes/semantic/index.ts new file mode 100644 index 0000000000000..cfc7c779dacf4 --- /dev/null +++ b/packages/kbn-palettes/palettes/semantic/index.ts @@ -0,0 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './log_level'; diff --git a/packages/kbn-palettes/palettes/semantic/log_level.ts b/packages/kbn-palettes/palettes/semantic/log_level.ts new file mode 100644 index 0000000000000..cbcbbdaee3def --- /dev/null +++ b/packages/kbn-palettes/palettes/semantic/log_level.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { i18n } from '@kbn/i18n'; +import { $Keys } from 'utility-types'; +import { KbnPalette } from '../../constants'; + +// TODO: update colors to vis colors +const logLevelColors = { + Emerg: '#F66D64', + Alert: '#E78E76', + Crit: '#E7A584', + Error: '#E7BD91', + Warn: '#E8D297', + Notice: '#C7D59', + Info: '#9CB1D3', + Debug: '#718FBC', + Other: '#CED4DE', +}; +type LogLevelKeys = $Keys; + +/** + * Defines a palette to be used directly and does not fully implement IKbnPalette + */ +export const logLevelPalette = { + id: KbnPalette.LogLevel, + name: i18n.translate('palettes.logLevel.name', { + defaultMessage: 'Log Level', + }), + getColor: (key: LogLevelKeys) => { + return logLevelColors[key]; + }, + colors: logLevelColors, +}; diff --git a/packages/kbn-palettes/tsconfig.json b/packages/kbn-palettes/tsconfig.json new file mode 100644 index 0000000000000..546dace9495b5 --- /dev/null +++ b/packages/kbn-palettes/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/core-theme-browser" + ] +} diff --git a/packages/kbn-relocate/README.md b/packages/kbn-relocate/README.md new file mode 100644 index 0000000000000..899a5e9b97970 --- /dev/null +++ b/packages/kbn-relocate/README.md @@ -0,0 +1,60 @@ +# @kbn/relocate + +This package contains a CLI tool to help move modules (plugins and packages) into their intended folders, according to the _Sustainable Kibana Architecture. + +## Prerequisites + +You must have `gh` CLI tool installed. You can install it by running: + +```sh +brew install gh +``` + +You must have `elastic/kibana` remote configured under the name `upstream`. + +You must have a remote named `origin` pointing to your fork of the Kibana repo. + +## Usage + +First of all, you need to decide whether you want to contribute to an existing PR or to create a new one. Use the `--pr` flag to specify the PR you are trying to update: + +```sh +node scripts/relocate --pr +``` + +Note that when specifying an existing PR, the logic will undo + rewrite history for that PR, by force-pushing changes. + +To relocate modules for a given team, identify the "team handle" (e.g. @elastic/kibana-core), and run the following command from the root of the Kibana repo: + +```sh +node scripts/relocate --pr --team +``` + +You can relocate modules by path, e.g. all modules that are under `x-pack/plugins/observability_solution/`: + +```sh +node scripts/relocate --pr --path "x-pack/plugins/observability_solution/" +``` + +You can specify indivual packages by ID: + +```sh +node scripts/relocate --pr --include "@kbn/data-forge" --include "@kbn/deeplinks-observability" +``` + +You can also specify combinations of the above filters, to include modules that match ANY of the criteria. +Excluding modules explictly is also supported: + +```sh +node scripts/relocate --pr --team "@elastic/obs-ux-management-team" --exclude "@kbn/data-forge" +``` + +## Details + +The script generates log / description files of the form `relocate_YYYYMMDDhhmmss_.out`. You can inspect them if you encounter any errors. + +In particular, the file `relocate_YYYYMMDDhhmmss_description.out` contains the auto-generated PR description. You can push it to the PR by running: + +```sh +gh pr edit -F relocate_YYYYMMDDhhmmss_description.out -R elastic/kibana +``` diff --git a/packages/kbn-relocate/constants.ts b/packages/kbn-relocate/constants.ts new file mode 100644 index 0000000000000..059c32004370e --- /dev/null +++ b/packages/kbn-relocate/constants.ts @@ -0,0 +1,101 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import dedent from 'dedent'; + +export const BASE_FOLDER = process.cwd() + '/'; +export const BASE_FOLDER_DEPTH = process.cwd().split('/').length; +export const KIBANA_FOLDER = process.cwd().split('/').pop()!; +export const EXCLUDED_MODULES = ['@kbn/core']; +export const TARGET_FOLDERS = [ + 'src/platform/plugins/', + 'src/platform/packages/', + 'x-pack/platform/plugins/', + 'x-pack/platform/packages/', + 'x-pack/solutions/', +]; +export const EXTENSIONS = [ + 'eslintignore', + 'gitignore', + 'js', + 'mjs', + 'txt', + 'json', + 'lock', + 'bazel', + 'md', + 'mdz', + 'asciidoc', + 'sh', + 'ts', + 'jsonc', + 'yaml', + 'yml', +]; + +export const EXCLUDED_FOLDERS = [ + './api_docs', // autogenerated daily https://buildkite.com/elastic/kibana-api-docs-daily + './.chromium', + './.devcontainer', + './.es', + './.git', + // './.github', + './.native_modules', + './.node_binaries', + './.vscode', + './.yarn-local-mirror', + './build', + './core_http.codeql', + './data', + './node_modules', + './target', + './test.codeql', + './test2.codeql', + './trash', +]; + +export const NO_GREP = EXCLUDED_FOLDERS.map((f) => `--exclude-dir "${f}"`).join(' '); + +// These two constants are singletons, used and updated throughout the process +export const UPDATED_REFERENCES = new Set(); +export const UPDATED_RELATIVE_PATHS = new Set(); +export const SCRIPT_ERRORS: string[] = []; + +export const YMDMS = new Date() + .toISOString() + .replace(/[^0-9]/g, '') + .slice(0, -3); + +export const DESCRIPTION = `relocate_${YMDMS}_description.out`; +export const NEW_BRANCH = `kbn-team-1309-relocate-${YMDMS}`; + +export const GLOBAL_DESCRIPTION = dedent` +## Summary + +This PR aims at relocating some of the Kibana modules (plugins and packages) into a new folder structure, according to the _Sustainable Kibana Architecture_ initiative. + +> [!IMPORTANT] +> * We kindly ask you to: +> * Manually fix the errors in the error section below (if there are any). +> * Search for the \`packages[\/\\]\` and \`plugins[\/\\]\` patterns in the source code (Babel and Eslint config files), and update them appropriately. +> * Manually review \`.buildkite/scripts/pipelines/pull_request/pipeline.ts\` to ensure that any CI pipeline customizations continue to be correctly applied after the changed path names +> * Review all of the updated files, specially the \`.ts\` and \`.js\` files listed in the sections below, as some of them contain relative paths that have been updated. +> * Think of potential impact of the move, including tooling and configuration files that can be pointing to the relocated modules. E.g.: +> * customised eslint rules +> * docs pointing to source code + +> [!NOTE] +> * This PR has been auto-generated. +> * Any manual contributions will be lost if the 'relocate' script is re-run. +> * Try to obtain the missing reviews / approvals before applying manual fixes, and/or keep your changes in a .patch / git stash. +> * Please use [#sustainable_kibana_architecture](https://elastic.slack.com/archives/C07TCKTA22E) Slack channel for feedback. + +Are you trying to rebase this PR to solve merge conflicts? Please follow the steps describe [here](https://elastic.slack.com/archives/C07TCKTA22E/p1734019532879269?thread_ts=1734019339.935419&cid=C07TCKTA22E). + +`; diff --git a/packages/kbn-relocate/index.ts b/packages/kbn-relocate/index.ts new file mode 100644 index 0000000000000..cddaa307ab7b6 --- /dev/null +++ b/packages/kbn-relocate/index.ts @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { run } from '@kbn/dev-cli-runner'; +import { findAndRelocateModules, findAndMoveModule } from './relocate'; + +const toStringArray = (flag: string | boolean | string[] | undefined): string[] => { + if (typeof flag === 'string') { + return [flag].filter(Boolean); + } else if (typeof flag === 'boolean') { + return []; + } else if (Array.isArray(flag)) { + return flag.filter(Boolean); + } + return []; +}; + +const toOptString = ( + flagName: string, + flag: string | boolean | string[] | undefined, + defaultValue?: string +): string | undefined => { + if (typeof flag === 'boolean') { + throw Error(`You must specify a valid string for the --${flagName} flag`); + } else if (Array.isArray(flag)) { + throw Error(`Cannot specify multiple values for --${flagName} flag`); + } + return flag || defaultValue; +}; + +/** + * A CLI to move Kibana modules into the right folder structure, + * according to the Sustainable Kibana Architecture + */ +export const runKbnRelocateCli = () => { + run( + async ({ log, flags }) => { + if (typeof flags.moveOnly === 'string' && flags.moveOnly.length > 0) { + log.info('When using --moveOnly flag, the rest of flags are ignored.'); + await findAndMoveModule(flags.moveOnly, log); + } else { + const { pr, team, path, include, exclude, baseBranch } = flags; + await findAndRelocateModules({ + prNumber: toOptString('prNumber', pr), + baseBranch: toOptString('baseBranch', baseBranch, 'main')!, + teams: toStringArray(team), + paths: toStringArray(path), + included: toStringArray(include), + excluded: toStringArray(exclude), + log, + }); + } + }, + { + log: { + defaultLevel: 'info', + }, + flags: { + string: ['pr', 'team', 'path', 'include', 'exclude', 'baseBranch', 'moveOnly'], + help: ` + Usage: node scripts/relocate [options] + + --moveOnly Only move the specified module in the current branch (no cleanup, no branching, no commit) + --pr Use the given PR number instead of creating a new one + --team Include all modules (packages and plugins) belonging to the specified owner (can specify multiple teams) + --path Include all modules (packages and plugins) under the specified path (can specify multiple paths) + --include Include the specified module in the relocation (can specify multiple modules) + --exclude Exclude the specified module from the relocation (can use multiple times) + --baseBranch Use a branch different than 'main' (e.g. "8.x") + + E.g. relocate all modules owned by Core team and also modules owned by Operations team, excluding 'foo-module-id'. Force push into PR 239847: + node scripts/relocate --pr 239847 --team @elastic/kibana-core --team @elastic/kibana-operations --exclude @kbn/foo-module-id + `, + }, + } + ); +}; diff --git a/packages/kbn-relocate/jest.config.js b/packages/kbn-relocate/jest.config.js new file mode 100644 index 0000000000000..f63ccebc0ab46 --- /dev/null +++ b/packages/kbn-relocate/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../..', + roots: ['/packages/kbn-relocate'], +}; diff --git a/packages/kbn-relocate/kibana.jsonc b/packages/kbn-relocate/kibana.jsonc new file mode 100644 index 0000000000000..bae4e5f6e9c60 --- /dev/null +++ b/packages/kbn-relocate/kibana.jsonc @@ -0,0 +1,6 @@ +{ + "type": "shared-server", + "id": "@kbn/relocate", + "owner": "@elastic/kibana-core", + "devOnly": true +} diff --git a/packages/kbn-relocate/package.json b/packages/kbn-relocate/package.json new file mode 100644 index 0000000000000..5091a883ce6a5 --- /dev/null +++ b/packages/kbn-relocate/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/relocate", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0" +} diff --git a/packages/kbn-relocate/relocate.ts b/packages/kbn-relocate/relocate.ts new file mode 100644 index 0000000000000..dde0c83fc096e --- /dev/null +++ b/packages/kbn-relocate/relocate.ts @@ -0,0 +1,222 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { join } from 'path'; +import { existsSync } from 'fs'; +import { rename, mkdir, rm } from 'fs/promises'; +import inquirer from 'inquirer'; +import { orderBy } from 'lodash'; +import type { ToolingLog } from '@kbn/tooling-log'; +import { getPackages } from '@kbn/repo-packages'; +import { REPO_ROOT } from '@kbn/repo-info'; +import type { Package } from './types'; +import { + DESCRIPTION, + EXCLUDED_MODULES, + KIBANA_FOLDER, + NEW_BRANCH, + TARGET_FOLDERS, +} from './constants'; +import { + belongsTo, + calculateModuleTargetFolder, + replaceReferences, + replaceRelativePaths, +} from './utils.relocate'; +import { safeExec } from './utils.exec'; +import { relocatePlan, relocateSummary } from './utils.logging'; +import { checkoutBranch, checkoutResetPr } from './utils.git'; + +const moveModule = async (module: Package, log: ToolingLog) => { + const destination = calculateModuleTargetFolder(module); + log.info(`Moving ${module.directory} to ${destination}`); + const chunks = destination.split('/'); + chunks.pop(); // discard module folder + if (existsSync(destination)) { + await rm(destination, { recursive: true }); + } + await mkdir(join('/', ...chunks), { recursive: true }); + await rename(module.directory, destination); + await replaceReferences(module, destination, log); + await replaceRelativePaths(module, destination, log); +}; + +const relocateModules = async (toMove: Package[], log: ToolingLog): Promise => { + let relocated: number = 0; + for (let i = 0; i < toMove.length; ++i) { + const module = toMove[i]; + + if (TARGET_FOLDERS.some((folder) => module.directory.includes(folder))) { + log.warning(`The module ${module.id} is already in a "sustainable" folder. Skipping`); + // skip modules that are already moved + continue; + } + log.info(''); + log.info('--------------------------------------------------------------------------------'); + log.info(`\t${module.id} (${i + 1} of ${toMove.length})`); + log.info('--------------------------------------------------------------------------------'); + await moveModule(module, log); + + // after move operations + await safeExec('yarn kbn bootstrap'); + await safeExec('node scripts/build_plugin_list_docs'); + await safeExec('node scripts/generate codeowners'); + await safeExec('node scripts/lint_packages --fix'); + await safeExec('node scripts/eslint --no-cache --fix'); + await safeExec('node scripts/precommit_hook --fix'); + + // single commit per module now + await safeExec(`git add .`); + await safeExec(`git commit --no-verify -m "Relocating module \\\`${module.id}\\\`"`); + ++relocated; + } + return relocated; +}; + +interface FindModulesParams { + teams: string[]; + paths: string[]; + included: string[]; + excluded: string[]; +} + +export interface RelocateModulesParams { + baseBranch: string; + prNumber?: string; + teams: string[]; + paths: string[]; + included: string[]; + excluded: string[]; + log: ToolingLog; +} + +const findModules = ({ teams, paths, included, excluded }: FindModulesParams) => { + // get all modules + const modules = getPackages(REPO_ROOT); + + // find modules selected by user filters + return orderBy( + modules + // exclude devOnly modules (they will remain in /packages) + .filter(({ manifest }) => !manifest.devOnly) + // exclude modules that do not specify a group + .filter(({ manifest }) => manifest.group) + // explicit exclusions + .filter(({ id }) => !EXCLUDED_MODULES.includes(id) && !excluded.includes(id)) + // we don't want to move test modules (just yet) + .filter( + ({ directory }) => + !directory.includes(`/${KIBANA_FOLDER}/test/`) && + !directory.includes(`/${KIBANA_FOLDER}/x-pack/test/`) + ) + // the module is under the umbrella specified by the user + .filter( + (module) => + included.includes(module.id) || + teams.some((team) => belongsTo(module, team)) || + paths.some((path) => module.directory.includes(path)) + ) + // the module is not explicitly excluded + .filter(({ id }) => !excluded.includes(id)), + 'id' + ); +}; + +export const findAndMoveModule = async (moduleId: string, log: ToolingLog) => { + const modules = findModules({ teams: [], paths: [], included: [moduleId], excluded: [] }); + if (!modules.length) { + log.warning(`Cannot move ${moduleId}, either not found or not allowed!`); + } else { + await moveModule(modules[0], log); + } +}; + +export const findAndRelocateModules = async (params: RelocateModulesParams) => { + const { prNumber, log, baseBranch, ...findParams } = params; + + const toMove = findModules(findParams); + if (!toMove.length) { + log.info( + `No packages match the specified filters. Please tune your '--path' and/or '--team' and/or '--include' flags` + ); + return; + } + + relocatePlan(toMove, log); + const res1 = await inquirer.prompt({ + type: 'confirm', + name: 'confirmPlan', + message: `The script will RESET CHANGES in this repository, relocate the modules above and update references. Proceed?`, + }); + + if (!res1.confirmPlan) { + log.info('Aborting'); + return; + } + + // start with a clean repo + await safeExec(`git restore --staged .`); + await safeExec(`git restore .`); + await safeExec(`git clean -f -d`); + await safeExec(`git checkout ${baseBranch} && git pull upstream ${baseBranch}`); + + if (prNumber) { + // checkout existing PR, reset all commits, rebase from baseBranch + try { + if (!(await checkoutResetPr(baseBranch, prNumber))) { + log.info('Aborting'); + return; + } + } catch (error) { + log.error(`Error checking out / resetting PR #${prNumber}:`); + log.error(error); + return; + } + } else { + // checkout [new] branch + await checkoutBranch(NEW_BRANCH); + } + + // relocate modules + await safeExec(`yarn kbn bootstrap`); + const movedCount = await relocateModules(toMove, log); + + if (movedCount === 0) { + log.warning( + 'No modules were relocated, aborting operation to prevent force-pushing empty changes (this would close the existing PR!)' + ); + return; + } + relocateSummary(log); + + // push changes in the branch + const res2 = await inquirer.prompt({ + type: 'confirm', + name: 'pushBranch', + message: `Relocation finished! You can commit extra changes at this point. Confirm to proceed pushing the current branch`, + }); + + const pushCmd = prNumber + ? `git push --force-with-lease` + : `git push --set-upstream origin ${NEW_BRANCH}`; + + if (!res2.pushBranch) { + log.info(`Remember to push changes with "${pushCmd}"`); + return; + } + await safeExec(pushCmd); + + if (prNumber) { + await safeExec(`gh pr edit ${prNumber} -F ${DESCRIPTION} -R elastic/kibana`); + log.info(`Access the PR at: https://github.com/elastic/kibana/pull/${prNumber}`); + } else { + log.info('TIP: Run the following command to quickly create a PR:'); + log.info(`$ gh pr create -d -t "" -F ${DESCRIPTION} -R elastic/kibana`); + } +}; diff --git a/packages/kbn-relocate/transforms.ts b/packages/kbn-relocate/transforms.ts new file mode 100644 index 0000000000000..72f57a24daa00 --- /dev/null +++ b/packages/kbn-relocate/transforms.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { Package } from './types'; + +type TransformFunction = (param: string) => string; +const TRANSFORMS: Record<string, string | TransformFunction> = { + 'x-pack/solutions/security/packages/security-solution/': 'x-pack/solutions/security/packages/', + 'x-pack/solutions/observability/plugins/observability_solution/': + 'x-pack/solutions/observability/plugins/', + 'x-pack/solutions/observability/packages/observability/': + 'x-pack/solutions/observability/packages/', + 'src/core/packages/core/': (path: string) => { + const relativePath = path.split('src/core/packages/')[1]; + const relativeChunks = relativePath.split('/'); + const packageName = relativeChunks.pop(); + const unneededPrefix = relativeChunks.join('-') + '-'; + + // strip the spare /core/ folder + path = path.replace('src/core/packages/core/', 'src/core/packages/'); + + if (packageName?.startsWith(unneededPrefix)) { + return path.replace(unneededPrefix, ''); + } else { + return path; + } + }, +}; +export const applyTransforms = (module: Package, path: string): string => { + const transform = Object.entries(TRANSFORMS).find(([what]) => path.includes(what)); + if (!transform) { + return path; + } else { + const [what, by] = transform; + if (typeof by === 'function') { + return by(path); + } else if (typeof by === 'string') { + return path.replace(what, by); + } else { + throw new Error('Invalid transform function', by); + } + } +}; diff --git a/packages/kbn-relocate/tsconfig.json b/packages/kbn-relocate/tsconfig.json new file mode 100644 index 0000000000000..cd11268486134 --- /dev/null +++ b/packages/kbn-relocate/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/dev-cli-runner", + "@kbn/repo-info", + "@kbn/repo-packages", + "@kbn/tooling-log", + ] +} diff --git a/packages/kbn-relocate/types.ts b/packages/kbn-relocate/types.ts new file mode 100644 index 0000000000000..391cef336d639 --- /dev/null +++ b/packages/kbn-relocate/types.ts @@ -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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export type { Package } from '@kbn/repo-packages'; + +export interface CommitAuthor { + login: string; +} + +export interface Commit { + messageHeadline: string; + authors: CommitAuthor[]; +} + +export interface PullRequest { + number: string; + commits: Commit[]; + headRefName: string; +} diff --git a/packages/kbn-relocate/utils.exec.ts b/packages/kbn-relocate/utils.exec.ts new file mode 100644 index 0000000000000..afd9391dfcab5 --- /dev/null +++ b/packages/kbn-relocate/utils.exec.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import util from 'util'; +import { exec } from 'child_process'; + +export const execAsync = util.promisify(exec); + +export const safeExec = async (command: string, critical = true, log = true) => { + try { + if (log) { + // eslint-disable-next-line no-console + console.log(' >', command); + } + const result = await execAsync(command, { maxBuffer: 1024 * 1024 * 128 }); + return result; + } catch (err) { + const message = `Error executing ${command}: ${err}`; + + if (critical) { + throw err; + } + return { stdout: '', stderr: message }; + } +}; + +export const quietExec = async (command: string) => { + return await safeExec(command, false, false); +}; diff --git a/packages/kbn-relocate/utils.git.ts b/packages/kbn-relocate/utils.git.ts new file mode 100644 index 0000000000000..4f002772528fd --- /dev/null +++ b/packages/kbn-relocate/utils.git.ts @@ -0,0 +1,108 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import inquirer from 'inquirer'; +import type { Commit, PullRequest } from './types'; +import { safeExec } from './utils.exec'; + +export const findPr = async (number: string): Promise<PullRequest> => { + const res = await safeExec(`gh pr view ${number} --json commits,headRefName`); + return { ...JSON.parse(res.stdout), number }; +}; + +export function hasManualCommits(commits: Commit[]) { + const manualCommits = commits.filter( + (commit) => + !commit.messageHeadline.startsWith('Relocating module ') && + !commit.messageHeadline.startsWith('Moving modules owned by ') && + commit.authors.some( + (author) => author.login !== 'kibanamachine' && author.login !== 'elasticmachine' + ) + ); + + return manualCommits.length > 0; +} + +export async function getLastCommitMessage() { + return (await safeExec('git log -1 --pretty=%B')).stdout.split('\n')[0]; +} + +export async function resetAllCommits(numCommits: number) { + await safeExec(`git reset --hard HEAD~${numCommits}`); + + let msg = await getLastCommitMessage(); + while (msg.startsWith('Relocating module ')) { + await safeExec(`git reset --hard HEAD~1`); + msg = await getLastCommitMessage(); + } + await safeExec('git restore --staged .'); + await safeExec('git restore .'); + await safeExec('git clean -f -d'); +} + +export async function localBranchExists(branchName: string): Promise<boolean> { + const res = await safeExec('git branch -l'); + const branches = res.stdout + .split('\n') + .filter(Boolean) + .map((name) => name.trim()); + return branches.includes(branchName); +} + +async function deleteBranches(...branchNames: string[]) { + const res = await safeExec('git branch -l'); + const branches = res.stdout + .split('\n') + .filter(Boolean) + .map((branchName) => branchName.trim()); + + await Promise.all( + branchNames + .filter((toDelete) => branches.includes(toDelete)) + .map((toDelete) => safeExec(`git branch -D ${toDelete}`).catch(() => {})) + ); +} + +export const checkoutResetPr = async (baseBranch: string, prNumber: string): Promise<boolean> => { + const pr = await findPr(prNumber); + + if (hasManualCommits(pr.commits)) { + const res = await inquirer.prompt({ + type: 'confirm', + name: 'overrideManualCommits', + message: 'Detected manual commits in the PR, do you want to override them?', + }); + if (!res.overrideManualCommits) { + return false; + } + } + + // previous cleanup on current branch + await safeExec(`git restore --staged .`); + await safeExec(`git restore .`); + await safeExec(`git clean -f -d`); + + // delete existing branch + await deleteBranches(pr.headRefName); + + // checkout the PR branch + await safeExec(`gh pr checkout ${prNumber}`); + await resetAllCommits(pr.commits.length); + await safeExec(`git rebase ${baseBranch}`); + return true; +}; + +export const checkoutBranch = async (branch: string) => { + // create a new branch / PR + if (await localBranchExists(branch)) { + throw new Error('The local branch already exists, aborting!'); + } else { + await safeExec(`git checkout -b ${branch}`); + } +}; diff --git a/packages/kbn-relocate/utils.logging.ts b/packages/kbn-relocate/utils.logging.ts new file mode 100644 index 0000000000000..5b290292dd75e --- /dev/null +++ b/packages/kbn-relocate/utils.logging.ts @@ -0,0 +1,107 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { ToolingLog } from '@kbn/tooling-log'; +import { appendFileSync, writeFileSync } from 'fs'; +import dedent from 'dedent'; +import type { Package } from './types'; +import { calculateModuleTargetFolder } from './utils.relocate'; +import { + BASE_FOLDER, + DESCRIPTION, + GLOBAL_DESCRIPTION, + SCRIPT_ERRORS, + UPDATED_REFERENCES, + UPDATED_RELATIVE_PATHS, +} from './constants'; + +export const relocatePlan = (modules: Package[], log: ToolingLog) => { + const plugins = modules.filter((module) => module.manifest.type === 'plugin'); + const packages = modules.filter((module) => module.manifest.type !== 'plugin'); + + const target = (module: Package) => calculateModuleTargetFolder(module).replace(BASE_FOLDER, ''); + writeFileSync(DESCRIPTION, GLOBAL_DESCRIPTION); + + if (plugins.length) { + const pluginList = dedent` + \n\n#### ${plugins.length} plugin(s) are going to be relocated:\n + | Id | Target folder | + | -- | ------------- | + ${plugins.map((plg) => `| \`${plg.id}\` | \`${target(plg)}\` |`).join('\n')} + \n\n`; + + appendFileSync(DESCRIPTION, pluginList); + log.info( + `${plugins.length} plugin(s) are going to be relocated:\n${plugins + .map((plg) => `${plg.id} => ${target(plg)}`) + .join('\n')}` + ); + } + + if (packages.length) { + const packageList = dedent` + \n\n#### ${packages.length} packages(s) are going to be relocated:\n + | Id | Target folder | + | -- | ------------- | + ${packages.map((pkg) => `| \`${pkg.id}\` | \`${target(pkg)}\` |`).join('\n')} + \n\n`; + + appendFileSync(DESCRIPTION, packageList); + log.info( + `${packages.length} packages(s) are going to be relocated:\n${packages + .map((plg) => `${plg.id} => ${target(plg)}`) + .join('\n')}` + ); + } +}; + +export const appendCollapsible = ( + fileName: string, + title: string, + contents: string, + open = false +) => { + appendFileSync( + fileName, + dedent` + <details ${open ? 'open' : ''}> + <summary>${title}</summary> + + \`\`\` + ${contents} + \`\`\` + + </details>` + ); +}; + +export const relocateSummary = (log: ToolingLog) => { + if (SCRIPT_ERRORS.length > 0) { + const contents = SCRIPT_ERRORS.sort().join('\n'); + appendCollapsible(DESCRIPTION, 'Script errors', contents, true); + log.warning(`Please address the following errors:\n${contents}`); + } + + if (UPDATED_REFERENCES.size > 0) { + const contents = Array.from(UPDATED_REFERENCES).sort().join('\n'); + appendCollapsible(DESCRIPTION, 'Updated references', contents); + log.info( + `The following files have been updated to replace references to modules:\n${contents}` + ); + } + + if (UPDATED_RELATIVE_PATHS.size > 0) { + const contents = Array.from(UPDATED_RELATIVE_PATHS) + .sort() + .map((ref) => ref.replace(BASE_FOLDER, '')) + .join('\n'); + appendCollapsible(DESCRIPTION, 'Updated relative paths', contents); + log.info(`The following files contain relative paths that have been updated:\n${contents}`); + } +}; diff --git a/packages/kbn-relocate/utils.relocate.ts b/packages/kbn-relocate/utils.relocate.ts new file mode 100644 index 0000000000000..15121fefd344a --- /dev/null +++ b/packages/kbn-relocate/utils.relocate.ts @@ -0,0 +1,211 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { join } from 'path'; +import type { ToolingLog } from '@kbn/tooling-log'; +import { orderBy } from 'lodash'; +import type { Package } from './types'; +import { applyTransforms } from './transforms'; +import { + BASE_FOLDER, + BASE_FOLDER_DEPTH, + EXTENSIONS, + KIBANA_FOLDER, + NO_GREP, + SCRIPT_ERRORS, + TARGET_FOLDERS, + UPDATED_REFERENCES, + UPDATED_RELATIVE_PATHS, +} from './constants'; +import { quietExec, safeExec } from './utils.exec'; + +export const belongsTo = (module: Package, owner: string): boolean => { + return Array.from(module.manifest.owner)[0] === owner; +}; + +export const stripFirstChunk = (path: string): string => { + const chunks = path.split('/'); + chunks.shift(); + return chunks.join('/'); +}; + +export const calculateModuleTargetFolder = (module: Package): string => { + const group = module.manifest.group!; + const isPlugin = module.manifest.type === 'plugin'; + const fullPath = join(BASE_FOLDER, module.directory); + let moduleDelimiter = isPlugin ? '/plugins/' : '/packages/'; + if (TARGET_FOLDERS.some((folder) => module.directory.includes(folder)) && group === 'platform') { + // if a platform module has already been relocated, strip the /private/ or /shared/ part too + moduleDelimiter += `${module.visibility}/`; + } + const moduleFolder = fullPath.split(moduleDelimiter).pop()!; + let path: string; + + if (group === 'platform') { + if (fullPath.includes(`/${KIBANA_FOLDER}/packages/core/`)) { + // packages/core/* => src/core/packages/* + path = join(BASE_FOLDER, 'src', 'core', 'packages', moduleFolder); + } else { + const isXpack = fullPath.includes(`/${KIBANA_FOLDER}/x-pack/`); + const visibility = module.manifest.visibility!; + + path = join( + BASE_FOLDER, + isXpack ? 'x-pack' : 'src', + group, + isPlugin ? 'plugins' : 'packages', + visibility, + moduleFolder + ); + } + } else { + path = join( + BASE_FOLDER, + 'x-pack', // all solution modules are 'x-pack' + 'solutions', + group, + isPlugin ? 'plugins' : 'packages', + moduleFolder + ); + } + + // after-creation transforms + return applyTransforms(module, path); +}; + +export const replaceReferences = async (module: Package, destination: string, log: ToolingLog) => { + const dir = module.directory; + const source = + dir.startsWith(KIBANA_FOLDER) || dir.startsWith(`/${KIBANA_FOLDER}`) + ? join(BASE_FOLDER, dir) + : dir; + const relativeSource = source.replace(BASE_FOLDER, ''); + const relativeDestination = destination.replace(BASE_FOLDER, ''); + + if ( + (relativeSource.startsWith('src') && relativeDestination.startsWith('src')) || + (relativeSource.startsWith('x-pack') && relativeDestination.startsWith('x-pack')) + ) { + await replaceReferencesInternal( + stripFirstChunk(relativeSource), + stripFirstChunk(relativeDestination), + log + ); + } else { + await replaceReferencesInternal(relativeSource, relativeDestination, log); + } +}; + +const replaceReferencesInternal = async ( + relativeSource: string, + relativeDestination: string, + log: ToolingLog +) => { + log.info(`Finding and replacing "${relativeSource}" by "${relativeDestination}"`); + + const src = relativeSource.replaceAll('/', '\\/'); + const dst = relativeDestination.replaceAll('/', '\\/'); + + const result = await safeExec( + `grep -I -s -R -l ${EXTENSIONS.map((ext) => `--include="*.${ext}"`).join(' ')} \ + ${NO_GREP} "${relativeSource}"`, + false + ); + + const matchingFiles = result.stdout.split('\n').filter(Boolean); + matchingFiles.push('.github/CODEOWNERS'); // to update references in the manual section, thanks pgayvallet! + + for (let i = 0; i < matchingFiles.length; ++i) { + const file = matchingFiles[i]; + if (file.includes('/target/types/') || file.includes('/target/public/')) { + continue; + } + + const md5Before = (await quietExec(`md5 ${file} --quiet`)).stdout.trim(); + // if we are updating packages/cloud references, we must pay attention to not update packages/cloud_defend too + await safeExec(`sed -i '' -E "/${src}[\-_a-zA-Z0-9]/! s/${src}/${dst}/g" ${file}`, false); + const md5After = (await quietExec(`md5 ${file} --quiet`)).stdout.trim(); + + if (md5Before !== md5After) { + UPDATED_REFERENCES.add(file); + } + } + + // plugins\/pluginName special treatment (.buildkite/scripts/pipelines/pull_request/pipeline.ts) + const backFwdSrc = relativeSource.replaceAll('/', `\\\\\\/`); + const backFwdDst = relativeDestination.replaceAll('/', `\\\\\\/`); + await safeExec( + `sed -i '' -E '/${src}[\-_a-zA-Z0-9]/! s/${backFwdSrc}/${backFwdDst}/g' .buildkite/scripts/pipelines/pull_request/pipeline.ts`, + false + ); +}; + +const getRelativeDepth = (directory: string): number => { + const fullPath = directory.startsWith(BASE_FOLDER) ? directory : join(BASE_FOLDER, directory); + return fullPath.split('/').length - BASE_FOLDER_DEPTH; +}; + +export const replaceRelativePaths = async ( + module: Package, + destination: string, + log: ToolingLog +) => { + log.info('Updating relative paths at fault'); + + const relativeDepthBefore = getRelativeDepth(module.directory); + const relativeDepthAfter = getRelativeDepth(destination); + const relativeDepthDiff = relativeDepthAfter - relativeDepthBefore; + + const result = await safeExec( + `grep -I -s -R -n -o ${NO_GREP} -E "\\.\\.(/\\.\\.)+/?" ${destination}`, + false + ); + const matches = result.stdout.split('\n').filter(Boolean); + + const brokenReferences = orderBy( + matches + .map((line) => line.split(':')) + .map(([path, line, match]) => { + if (match.endsWith('/')) { + match = match.substring(0, match.length - 1); + } + let moduleRelativePath = path.replace(destination, ''); + if (moduleRelativePath.startsWith('/')) { + moduleRelativePath = moduleRelativePath.substring(1); + } + const moduleRelativeDepth = moduleRelativePath.split('/').length - 1; // do not count filename + const matchDepth = match.split('/').length; + + return { path, line, moduleRelativeDepth, match, matchDepth }; + }) + .filter(({ matchDepth, moduleRelativeDepth }) => matchDepth > moduleRelativeDepth), + 'matchDepth', + 'desc' + ); + + for (let i = 0; i < brokenReferences.length; ++i) { + const { path, line, match, matchDepth } = brokenReferences[i]; + + if (path.includes('/target/types/') || path.includes('/target/public/')) { + continue; + } + const pathLine = `${path}:${line}`; + + if (UPDATED_RELATIVE_PATHS.has(pathLine)) { + const message = `Cannot replace multiple occurrences of "${match}" in the same line, please fix manually:\t${pathLine}`; + SCRIPT_ERRORS.push(message); + } else { + const escapedMatch = match.replaceAll('/', '\\/').replaceAll('.', '\\.'); // escape '.' too (regexp any char) + const escapedReplacement = new Array(matchDepth + relativeDepthDiff).fill('..').join('\\/'); + + await safeExec(`sed -i '' "${line}s/${escapedMatch}/${escapedReplacement}/" ${path}`, false); + UPDATED_RELATIVE_PATHS.add(pathLine); + } + } +}; diff --git a/packages/kbn-scout-reporting/src/reporting/playwright.ts b/packages/kbn-scout-reporting/src/reporting/playwright.ts index f50b25bab83d3..98ad6655626ae 100644 --- a/packages/kbn-scout-reporting/src/reporting/playwright.ts +++ b/packages/kbn-scout-reporting/src/reporting/playwright.ts @@ -24,9 +24,9 @@ import { SCOUT_REPORT_OUTPUT_ROOT } from '@kbn/scout-info'; import stripANSI from 'strip-ansi'; import { REPO_ROOT } from '@kbn/repo-info'; import { - type PathWithOwners, - getPathsWithOwnersReversed, - getCodeOwnersForFile, + type CodeOwnersEntry, + getCodeOwnersEntries, + getOwningTeamsForPath, } from '@kbn/code-owners'; import { generateTestRunId, getTestIDForTitle, ScoutReport, ScoutReportEventAction } from '.'; import { environmentMetadata } from '../datasources'; @@ -47,7 +47,7 @@ export class ScoutPlaywrightReporter implements Reporter { readonly name: string; readonly runId: string; private report: ScoutReport; - private readonly pathsWithOwners: PathWithOwners[]; + private readonly codeOwnersEntries: CodeOwnersEntry[]; constructor(private reporterOptions: ScoutPlaywrightReporterOptions = {}) { this.log = new ToolingLog({ @@ -60,20 +60,11 @@ export class ScoutPlaywrightReporter implements Reporter { this.log.info(`Scout test run ID: ${this.runId}`); this.report = new ScoutReport(this.log); - this.pathsWithOwners = getPathsWithOwnersReversed(); + this.codeOwnersEntries = getCodeOwnersEntries(); } private getFileOwners(filePath: string): string[] { - const concatenatedOwners = getCodeOwnersForFile(filePath, this.pathsWithOwners)?.teams; - - if (concatenatedOwners === undefined) { - return []; - } - - return concatenatedOwners - .replace(/#.+$/, '') - .split(',') - .filter((value) => value.length > 0); + return getOwningTeamsForPath(filePath, this.codeOwnersEntries); } /** diff --git a/packages/kbn-scout/README.md b/packages/kbn-scout/README.md index 4449bdf966200..b5e64416d4ed2 100644 --- a/packages/kbn-scout/README.md +++ b/packages/kbn-scout/README.md @@ -1,9 +1,258 @@ # @kbn/scout -The package is designed to streamline the setup and execution of Playwright tests for Kibana. It consolidates server management and testing capabilities by wrapping both the Kibana/Elasticsearch server launcher and the Playwright test runner. It includes: +`kbn-scout` is a modern test framework for Kibana. It uses Playwright for UI integration tests. Its primary goal is to enhance the developer experience by offering a lightweight and flexible testing solution to create UI tests next to the plugin source code. This README explains the structure of the `kbn-scout` package and provides an overview of its key components. - - core test and worker-scoped fixtures for reliable setup across test suites - - page objects combined into the fixture for for core Kibana apps UI interactions - - configurations for seamless test execution in both local and CI environments +### Table of Contents -This package aims to simplify test setup and enhance modularity, making it easier to create, run, and maintain deployment-agnostic tests, that are located in the plugin they actually test. +1. Overview +2. Folder Structure +3. Key Components +4. How to Use +5. Contributing + +### Overview + +The `kbn-scout` framework provides: + +- **Ease of integration:** a simplified mechanism to write and run tests closer to plugins. +- **Deployment-agnostic tests:** enables the testing of Kibana features across different environments (e.g., Stateful, Serverless). +- **Fixture-based design:** built on Playwright's fixture model to modularize and standardize test setup. +- **Focus on Developer Productivity:** faster test execution and minimal boilerplate for writing tests. + +### Folder Structure + +The `kbn-scout` structure includes the following key directories and files: + +``` +packages/kbn-scout/ +├── src/ +│ ├── cli/ +│ ├── common/ +│ │ ├── services/ +│ │ ├── utils/ +│ ├── config/ +│ │ ├── loader/ +│ │ ├── schema/ +│ │ └── serverless/ +│ │ └── stateful/ +│ │ └── config.ts +│ ├── playwright/ +│ │ ├── config/ +│ │ └── fixtures +│ │ │ └── test/ +│ │ │ └── worker/ +│ │ └── page_objects/ +│ │ └── runner +│ │ │ └── config_validator.ts +│ │ │ └── run_tests.ts +│ ├── servers/ +│ │ ├── run_elasticsearch.ts +│ │ └── run_kibana_server.ts +│ │ └── start_servers.ts +│ ├── types/ +│ └── index.ts +├── package.json +├── tsconfig.json +``` + +### Key Components + +1. **src/cli/** + +Contains the logic to start servers, with or without running tests. It is accessed through the `scripts/scout` script. + +2. **src/common/** + +`services` directory includes test helpers used across UI and API integration tests, such as Kibana and Elasticsearch `clients`, `esArchiver`, and `samlSessionManager`. These services are used to initialize instances and expose them to tests via Playwright worker fixtures. + +3. **src/config/** + +`config` directory holds configurations for running servers locally. `serverless` and `stateful` directories contain deployment-specific configurations. Configuration attributes are defined in `schema` directory. +The `Config` class in config.ts serves as the main entry point. It is instantiated using the config loader in +the `loader` directory. This instance is compatible with the `kbn-test` input format and is passed to functions +for starting servers. + +4. **src/playwright/** + +#### Config + +`playwright` directory manages the default Playwright configuration. It exports the `createPlaywrightConfig` function, which is used by Kibana plugins to define Scout playwright configurations and serves as the entry point to run tests. + +```ts +import { createPlaywrightConfig } from '@kbn/scout'; + +// eslint-disable-next-line import/no-default-export +export default createPlaywrightConfig({ + testDir: './tests', + workers: 2, +}); +``` + +Scout relies on configuration to determine the test files and opt-in [parallel test execution](https://playwright.dev/docs/test-parallel) against the single Elastic cluster. + +The Playwright configuration should only be created this way to ensure compatibility with Scout functionality. For configuration +verification, we use a marker `VALID_CONFIG_MARKER`, and Scout will throw an error if the configuration is invalid. + +#### Fixtures + +The `fixtures` directory contains core Scout capabilities required for testing the majority of Kibana plugins. [Fixtures](https://playwright.dev/docs/test-fixtures) can be +scoped to either `test` or `worker`. Scope decides when to init a new fixture instance: once per worker or for every test function. It is important to choose the correct scope to keep test execution optimally fast: if **a new instance is not needed for every test**, the fixture should be scoped to **worker**. Otherwise, it should be scoped to **test**. + +**Core `worker` scoped fixtures:** +- `log` +- `config` +- `esClient` +- `kbnClient` +- `esArchiver` +- `samlAuth` + +```ts + test.beforeAll(async ({ kbnClient }) => { + await kbnClient.importExport.load(testData.KBN_ARCHIVES.ECOMMERCE); + }); +``` + +**Core `test` scoped fixtures:** +- `browserAuth` +- `pageObjects` +- `page` + +```ts + test.beforeEach(async ({ browserAuth }) => { + await browserAuth.loginAsViewer(); + }); +``` + +If a new fixture depends on a fixture with a `test` scope, it must also be `test` scoped. + +#### Page Objects + +The `page_objects` directory contains all the Page Objects that represent Platform core functionality such as Discover, Dashboard, Index Management, etc. + +If a Page Object is likely to be used in more than one plugin, it should be added here. This allows other teams to reuse it, improving collaboration across teams, reducing code duplication, and simplifying support and adoption. + +Page Objects must be registered with the `createLazyPageObject` function, which guarantees its instance is lazy-initialized. This way, we can have all the page objects available in the test context, but only the ones that are called will be actually initialized: + +```ts +export function createCorePageObjects(page: ScoutPage): PageObjects { + return { + dashboard: createLazyPageObject(DashboardApp, page), + discover: createLazyPageObject(DiscoverApp, page), + // Add new page objects here + }; +} +``` + +All registered Page Objects are available via the `pageObjects` fixture: + +```ts +test.beforeEach(async ({ pageObjects }) => { + await pageObjects.discover.goto(); +}); +``` + +5. **src/servers/** + +Here we have logic to start Kibana and Elasticsearch servers using `kbn-test` functionality in Scout flavor. +The instance of the `Config` class is passed to start servers for the specific deployment type. The `loadServersConfig` function not only returns a `kbn-test` compatible config instance, but also converts it to `ScoutServiceConfig` format and saves it on disk to `./scout/servers/local.json` in the Kibana root directory. Scout `config` fixture reads it and expose to UI tests. + +### How to Use + +#### Starting Servers Only + +To start the servers without running tests, use the following command: + +```bash +node scripts/scout.js start-server [--stateful|--serverless=[es|oblt|security]] +``` + +This is useful for manual testing or running tests via an IDE. + +#### Running Servers and Tests + +To start the servers and run tests, use: + +```bash +node scripts/scout.js run-tests [--stateful|--serverless=[es|oblt|security]] --config <plugin-path>/ui_tests/playwright.config.ts +``` + +This command starts the required servers and then automatically executes the tests using Playwright. + +#### Running Tests Separately + +If the servers are already running, you can execute tests independently using either: + +- Playwright Plugin in IDE: Run tests directly within your IDE using Playwright's integration. +- Command Line: Use the following command to run tests: + +```bash +npx playwright test --config <plugin-path>/ui_tests/playwright.config.ts +``` + +### Contributing + +We welcome contributions to improve and extend `kbn-scout`. This guide will help you get started, add new features, and align with existing project standards. + +#### Setting Up the Environment + +Ensure you have the latest local copy of the Kibana repository. + +Install dependencies by running the following commands: +- `yarn kbn bootstrap` to install dependencies. +- `node scripts/build_kibana_platform_plugins.js` to build plugins. + +Move to the `packages/kbn-scout` directory to begin development. + +#### Adding or Modifying Features + +Contributions to sharable fixtures and page objects are highly encouraged to promote reusability, stability, and ease of adoption. Follow these steps: + +Create a New Page Object: Add your Page Object to the `src/playwright/page_objects` directory. For instance: + +#### Adding Page Objects + +1. **Create a New Page Object:** Add your Page Object to the src/playwright/page_objects directory. For instance: + +```ts +export class NewPage { + constructor(private readonly page: ScoutPage) {} + + // implementation +} +``` +2. **Register the Page Object:** Update the index file to include the new Page Object: +```ts +export function createCorePageObjects(page: ScoutPage): PageObjects { + return { + ... + newPage: createLazyPageObject(NewPage, page), + }; +} +``` +#### Adding Fixtures +1. **Determine Fixture Scope:** Decide if your fixture should apply to the `test` (per-test) or `worker` (per-worker) scope. + +2. **Implement the Fixture:** Add the implementation to `src/playwright/fixtures/test` or `src/playwright/fixtures/worker`. + +```ts +export const newTestFixture = base.extend<ScoutTestFixtures, ScoutWorkerFixtures>({ + newFixture: async ({}, use) => { + const myFn = // implementation + await use(myFn); + // optionally, cleanup on test completion + }, +}); +``` +3. **Register the Fixture:** Add the fixture to the appropriate scope: +```ts +export const scoutTestFixtures = mergeTests( + ... + newTestFixture, +); +``` + +#### Best Practices +- **Reusable Code:** When creating Page Objects or Fixtures that apply to more than one plugin, ensure they are added to the kbn-scout package. +- **Adhere to Existing Structure:** Maintain consistency with the project's architecture. +- **Add Unit Tests:** Include tests for new logic where applicable, ensuring it works as expected. +- **Playwright documentation:** [Official best practices](https://playwright.dev/docs/best-practices) diff --git a/packages/kbn-scout/index.ts b/packages/kbn-scout/index.ts index 5cb95662f4228..733d0bae1ecd1 100644 --- a/packages/kbn-scout/index.ts +++ b/packages/kbn-scout/index.ts @@ -8,7 +8,7 @@ */ export * as cli from './src/cli'; -export { expect, test, createPlaywrightConfig, createLazyPageObject } from './src/playwright'; +export { expect, test, tags, createPlaywrightConfig, createLazyPageObject } from './src/playwright'; export type { ScoutPage, ScoutPlaywrightOptions, diff --git a/packages/kbn-scout/src/config/loader/config_load.ts b/packages/kbn-scout/src/config/loader/config_load.ts index 5ef4b88b4cf1a..c7e6b197d6a28 100644 --- a/packages/kbn-scout/src/config/loader/config_load.ts +++ b/packages/kbn-scout/src/config/loader/config_load.ts @@ -8,10 +8,16 @@ */ import path from 'path'; -import { ToolingLog } from '@kbn/tooling-log'; import { Config } from '../config'; -export const loadConfig = async (configPath: string, log: ToolingLog): Promise<Config> => { +/** + * Dynamically loads server configuration file in the "kbn-scout" framework. It reads + * and validates the configuration file, ensuring the presence of essential servers + * information required to initialize the testing environment. + * @param configPath Path to the configuration file to be loaded. + * @returns Config instance that is used to start local servers + */ +export const loadConfig = async (configPath: string): Promise<Config> => { try { const absolutePath = path.resolve(configPath); const configModule = await import(absolutePath); diff --git a/packages/kbn-scout/src/config/serverless/es.serverless.config.ts b/packages/kbn-scout/src/config/serverless/es.serverless.config.ts index 89e27b4e877e0..0ae2c7e6f0b3f 100644 --- a/packages/kbn-scout/src/config/serverless/es.serverless.config.ts +++ b/packages/kbn-scout/src/config/serverless/es.serverless.config.ts @@ -17,6 +17,7 @@ export const servers: ScoutLoaderConfig = { serverArgs: [...defaultConfig.esTestCluster.serverArgs], }, kbnTestServer: { + ...defaultConfig.kbnTestServer, serverArgs: [ ...defaultConfig.kbnTestServer.serverArgs, '--serverless=es', diff --git a/packages/kbn-scout/src/config/serverless/oblt.serverless.config.ts b/packages/kbn-scout/src/config/serverless/oblt.serverless.config.ts index 3f283f140479e..08eb4d9d7cf55 100644 --- a/packages/kbn-scout/src/config/serverless/oblt.serverless.config.ts +++ b/packages/kbn-scout/src/config/serverless/oblt.serverless.config.ts @@ -22,6 +22,7 @@ export const servers: ScoutLoaderConfig = { ], }, kbnTestServer: { + ...defaultConfig.kbnTestServer, serverArgs: [ ...defaultConfig.kbnTestServer.serverArgs, '--serverless=oblt', diff --git a/packages/kbn-scout/src/config/serverless/security.serverless.config.ts b/packages/kbn-scout/src/config/serverless/security.serverless.config.ts index f1fa4f53f8988..289790a9ffeb1 100644 --- a/packages/kbn-scout/src/config/serverless/security.serverless.config.ts +++ b/packages/kbn-scout/src/config/serverless/security.serverless.config.ts @@ -20,6 +20,7 @@ export const servers: ScoutLoaderConfig = { ], }, kbnTestServer: { + ...defaultConfig.kbnTestServer, serverArgs: [ ...defaultConfig.kbnTestServer.serverArgs, '--serverless=security', diff --git a/packages/kbn-scout/src/config/serverless/serverless.base.config.ts b/packages/kbn-scout/src/config/serverless/serverless.base.config.ts index 8b4852f9c9e62..a20a0c3bbe7a7 100644 --- a/packages/kbn-scout/src/config/serverless/serverless.base.config.ts +++ b/packages/kbn-scout/src/config/serverless/serverless.base.config.ts @@ -80,6 +80,11 @@ export const defaultConfig: ScoutLoaderConfig = { 'xpack.security.authc.realms.jwt.jwt1.order=-98', `xpack.security.authc.realms.jwt.jwt1.pkc_jwkset_path=${getDockerFileMountPath(JWKS_PATH)}`, `xpack.security.authc.realms.jwt.jwt1.token_type=access_token`, + 'serverless.indices.validate_dot_prefixes=true', + // controller cluster-settings + `cluster.service.slow_task_logging_threshold=15s`, + `cluster.service.slow_task_thread_dump_timeout=5s`, + `serverless.search.enable_replicas_for_instant_failover=true`, ], ssl: true, // SSL is required for SAML realm }, @@ -136,7 +141,15 @@ export const defaultConfig: ScoutLoaderConfig = { // This ensures that we register the Security SAML API endpoints. // In the real world the SAML config is injected by control plane. `--plugin-path=${SAML_IDP_PLUGIN_PATH}`, + '--xpack.cloud.base_url=https://fake-cloud.elastic.co', + '--xpack.cloud.billing_url=/billing/overview/', + '--xpack.cloud.deployments_url=/deployments', '--xpack.cloud.id=ftr_fake_cloud_id', + '--xpack.cloud.organization_url=/account/', + '--xpack.cloud.profile_url=/user/settings/', + '--xpack.cloud.projects_url=/projects/', + '--xpack.cloud.serverless.project_id=fakeprojectid', + '--xpack.cloud.users_and_roles_url=/account/members/', // Ensure that SAML is used as the default authentication method whenever a user navigates to Kibana. In other // words, Kibana should attempt to authenticate the user using the provider with the lowest order if the Login // Selector is disabled (which is how Serverless Kibana is configured). By declaring `cloud-basic` with a higher diff --git a/packages/kbn-scout/src/config/utils.ts b/packages/kbn-scout/src/config/utils.ts index d15e0e094b2db..38c65f1573b04 100644 --- a/packages/kbn-scout/src/config/utils.ts +++ b/packages/kbn-scout/src/config/utils.ts @@ -16,6 +16,7 @@ import { SCOUT_SERVERS_ROOT } from '@kbn/scout-info'; import { CliSupportedServerModes, ScoutServerConfig } from '../types'; import { getConfigFilePath } from './get_config_file'; import { loadConfig } from './loader/config_load'; +import type { Config } from './config'; export const formatCurrentDate = () => { const now = new Date(); @@ -29,6 +30,11 @@ export const formatCurrentDate = () => { ); }; +/** + * Saves Scout server configuration to the disk. + * @param testServersConfig configuration to be saved + * @param log Logger instance to report errors or debug information. + */ const saveTestServersConfigOnDisk = (testServersConfig: ScoutServerConfig, log: ToolingLog) => { const configFilePath = path.join(SCOUT_SERVERS_ROOT, `local.json`); @@ -48,16 +54,26 @@ const saveTestServersConfigOnDisk = (testServersConfig: ScoutServerConfig, log: } }; -export async function loadServersConfig(mode: CliSupportedServerModes, log: ToolingLog) { +/** + * Loads server configuration based on the mode, creates "kbn-test" compatible Config + * instance, that can be used to start local servers and saves its "Scout"-format copy + * to the disk. + * @param mode server local run mode + * @param log Logger instance to report errors or debug information. + * @returns "kbn-test" compatible Config instance + */ +export async function loadServersConfig( + mode: CliSupportedServerModes, + log: ToolingLog +): Promise<Config> { // get path to one of the predefined config files const configPath = getConfigFilePath(mode); // load config that is compatible with kbn-test input format - const config = await loadConfig(configPath, log); + const config = await loadConfig(configPath); // construct config for Playwright Test const scoutServerConfig = config.getTestServersConfig(); // save test config to the file saveTestServersConfigOnDisk(scoutServerConfig, log); - return config; } diff --git a/packages/kbn-scout/src/playwright/fixtures/test/browser_auth.ts b/packages/kbn-scout/src/playwright/fixtures/test/browser_auth.ts index 5faa1b5392d96..11c2d97b06673 100644 --- a/packages/kbn-scout/src/playwright/fixtures/test/browser_auth.ts +++ b/packages/kbn-scout/src/playwright/fixtures/test/browser_auth.ts @@ -14,6 +14,11 @@ import { serviceLoadedMsg } from '../../utils'; type LoginFunction = (role: string) => Promise<void>; +/** + * The "browserAuth" fixture simplifies the process of logging into Kibana with + * different roles during tests. It uses the "samlAuth" fixture to create an authentication session + * for the specified role and the "context" fixture to update the cookie with the role-scoped session. + */ export const browserAuthFixture = base.extend<{ browserAuth: LoginFixture }, ScoutWorkerFixtures>({ browserAuth: async ({ log, context, samlAuth, config }, use) => { const setSessionCookie = async (cookieValue: string) => { diff --git a/packages/kbn-scout/src/playwright/fixtures/test/index.ts b/packages/kbn-scout/src/playwright/fixtures/test/index.ts index 41bfedcf39dc7..3e2ea85b90bc3 100644 --- a/packages/kbn-scout/src/playwright/fixtures/test/index.ts +++ b/packages/kbn-scout/src/playwright/fixtures/test/index.ts @@ -11,9 +11,11 @@ import { mergeTests } from '@playwright/test'; import { browserAuthFixture } from './browser_auth'; import { scoutPageFixture } from './page'; import { pageObjectsFixture } from './page_objects'; +import { validateTagsFixture } from './validate_tags'; export const scoutTestFixtures = mergeTests( browserAuthFixture, scoutPageFixture, - pageObjectsFixture + pageObjectsFixture, + validateTagsFixture ); diff --git a/packages/kbn-scout/src/playwright/fixtures/test/page_objects.ts b/packages/kbn-scout/src/playwright/fixtures/test/page_objects.ts index ed142b48b3f9a..06be362294432 100644 --- a/packages/kbn-scout/src/playwright/fixtures/test/page_objects.ts +++ b/packages/kbn-scout/src/playwright/fixtures/test/page_objects.ts @@ -11,6 +11,14 @@ import { test as base } from '@playwright/test'; import { ScoutTestFixtures, ScoutWorkerFixtures } from '../types'; import { createCorePageObjects } from '../../page_objects'; +/** + * The "pageObjects" fixture provides a centralized and consistent way to access and + * interact with reusable Page Objects in tests. This fixture automatically + * initializes core Page Objects and makes them available to tests, promoting + * modularity and reducing redundant setup. + * + * Note: Page Objects are lazily instantiated on first access. + */ export const pageObjectsFixture = base.extend<ScoutTestFixtures, ScoutWorkerFixtures>({ pageObjects: async ({ page }, use) => { const corePageObjects = createCorePageObjects(page); diff --git a/packages/kbn-scout/src/playwright/fixtures/test/validate_tags.ts b/packages/kbn-scout/src/playwright/fixtures/test/validate_tags.ts new file mode 100644 index 0000000000000..1866935440e1a --- /dev/null +++ b/packages/kbn-scout/src/playwright/fixtures/test/validate_tags.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { test as base } from '@playwright/test'; +import { tags } from '../../tags'; + +const supportedTags = tags.DEPLOYMENT_AGNOSTIC; + +export const validateTagsFixture = base.extend<{ validateTags: void }>({ + validateTags: [ + async ({}, use, testInfo) => { + if (testInfo.tags.length === 0) { + throw new Error(`At least one tag is required: ${supportedTags.join(', ')}`); + } + + const invalidTags = testInfo.tags.filter((tag: string) => !supportedTags.includes(tag)); + if (invalidTags.length > 0) { + throw new Error( + `Unsupported tag(s) found in test suite "${testInfo.title}": ${invalidTags.join( + ', ' + )}. ` + `Supported tags are: ${supportedTags.join(', ')}.` + ); + } + + await use(); + }, + { auto: true }, + ], +}); diff --git a/packages/kbn-scout/src/playwright/fixtures/types/test_scope.ts b/packages/kbn-scout/src/playwright/fixtures/types/test_scope.ts index 4ff7fc18cd6f2..13a3c3ebaed83 100644 --- a/packages/kbn-scout/src/playwright/fixtures/types/test_scope.ts +++ b/packages/kbn-scout/src/playwright/fixtures/types/test_scope.ts @@ -17,8 +17,20 @@ export interface ScoutTestFixtures { } export interface LoginFixture { + /** + * Logs in as a user with viewer-only permissions. + * @returns A Promise that resolves once the cookie in browser is set. + */ loginAsViewer: () => Promise<void>; + /** + * Logs in as a user with administrative privileges + * @returns A Promise that resolves once the cookie in browser is set. + */ loginAsAdmin: () => Promise<void>; + /** + * Logs in as a user with elevated, but not admin, permissions. + * @returns A Promise that resolves once the cookie in browser is set. + */ loginAsPrivilegedUser: () => Promise<void>; } diff --git a/packages/kbn-scout/src/playwright/fixtures/types/worker_scope.ts b/packages/kbn-scout/src/playwright/fixtures/types/worker_scope.ts index 20908a566abb2..c42f7143d3191 100644 --- a/packages/kbn-scout/src/playwright/fixtures/types/worker_scope.ts +++ b/packages/kbn-scout/src/playwright/fixtures/types/worker_scope.ts @@ -18,6 +18,13 @@ import { ScoutServerConfig } from '../../../types'; import { KibanaUrl } from '../../../common/services/kibana_url'; export interface EsArchiverFixture { + /** + * Loads an Elasticsearch archive if the specified data index is not present. + * @param name The name of the archive to load. + * @param performance An object of type LoadActionPerfOptions to measure and + * report performance metrics during the load operation. + * @returns A Promise that resolves to an object containing index statistics. + */ loadIfNeeded: ( name: string, performance?: LoadActionPerfOptions | undefined @@ -25,11 +32,30 @@ export interface EsArchiverFixture { } export interface UiSettingsFixture { + /** + * Applies one or more UI settings + * @param values (UiSettingValues): An object containing key-value pairs of UI settings to apply. + * @returns A Promise that resolves once the settings are applied. + */ set: (values: UiSettingValues) => Promise<void>; + /** + * Resets specific UI settings to their default values. + * @param values A list of UI setting keys to unset. + * @returns A Promise that resolves after the settings are unset. + */ unset: (...values: string[]) => Promise<any>; + /** + * Sets the default time range for Kibana. + * @from The start time of the default time range. + * @to The end time of the default time range. + * @returns A Promise that resolves once the default time is set. + */ setDefaultTime: ({ from, to }: { from: string; to: string }) => Promise<void>; } +/** + * The `ScoutWorkerFixtures` type defines the set of fixtures that are available + */ export interface ScoutWorkerFixtures { log: ToolingLog; config: ScoutServerConfig; diff --git a/packages/kbn-scout/src/playwright/fixtures/worker/core.ts b/packages/kbn-scout/src/playwright/fixtures/worker/core.ts index 359a779b05fc7..9f90f71d9c276 100644 --- a/packages/kbn-scout/src/playwright/fixtures/worker/core.ts +++ b/packages/kbn-scout/src/playwright/fixtures/worker/core.ts @@ -22,7 +22,16 @@ import { import { ScoutWorkerFixtures } from '../types/worker_scope'; import { ScoutTestOptions } from '../../types'; +/** + * The coreWorkerFixtures setup defines foundational fixtures that are essential + * for running tests in the "kbn-scout" framework. These fixtures provide reusable, + * scoped resources for each Playwright worker, ensuring that tests have consistent + * and isolated access to critical services such as logging, configuration, and + * clients for interacting with Kibana and Elasticsearch. + */ export const coreWorkerFixtures = base.extend<{}, ScoutWorkerFixtures>({ + // Provides a scoped logger instance for each worker. This logger is shared across + // all other fixtures within the worker scope. log: [ ({}, use) => { use(createLogger()); @@ -30,6 +39,11 @@ export const coreWorkerFixtures = base.extend<{}, ScoutWorkerFixtures>({ { scope: 'worker' }, ], + /** + * Loads the test server configuration from the source file based on local or cloud + * target, located by default in '.scout/servers' directory. It supplies Playwright + * with all server-related information including hosts, credentials, type of deployment, etc. + */ config: [ ({ log }, use, testInfo) => { const configName = 'local'; @@ -42,6 +56,10 @@ export const coreWorkerFixtures = base.extend<{}, ScoutWorkerFixtures>({ { scope: 'worker' }, ], + /** + * Generates and exposes a Kibana URL object based on the configuration, allowing tests + * and fixtures to programmatically construct and validate URLs. + */ kbnUrl: [ ({ config, log }, use) => { use(createKbnUrl(config, log)); @@ -49,6 +67,9 @@ export const coreWorkerFixtures = base.extend<{}, ScoutWorkerFixtures>({ { scope: 'worker' }, ], + /** + * Instantiates an Elasticsearch client, enabling API-level interactions with ES. + */ esClient: [ ({ config, log }, use) => { use(createEsClient(config, log)); @@ -56,6 +77,9 @@ export const coreWorkerFixtures = base.extend<{}, ScoutWorkerFixtures>({ { scope: 'worker' }, ], + /** + * Creates a Kibana client, enabling API-level interactions with Kibana. + */ kbnClient: [ ({ log, config }, use) => { use(createKbnClient(config, log)); @@ -63,10 +87,17 @@ export const coreWorkerFixtures = base.extend<{}, ScoutWorkerFixtures>({ { scope: 'worker' }, ], + /** + * Provides utilities for managing test data in Elasticsearch. The "loadIfNeeded" method + * optimizes test execution by loading data archives only if required, avoiding redundant + * data ingestion. + * + * Note: In order to speedup test execution and avoid the overhead of deleting the data + * we only expose capability to ingest the data indexes. + */ esArchiver: [ ({ log, esClient, kbnClient }, use) => { const esArchiverInstance = createEsArchiver(esClient, kbnClient, log); - // to speedup test execution we only allow to ingest the data indexes and only if index doesn't exist const loadIfNeeded = async (name: string, performance?: LoadActionPerfOptions | undefined) => esArchiverInstance!.loadIfNeeded(name, performance); @@ -75,6 +106,13 @@ export const coreWorkerFixtures = base.extend<{}, ScoutWorkerFixtures>({ { scope: 'worker' }, ], + /** + * Creates a SAML session manager, that handles authentication tasks for tests involving + * SAML-based authentication. + * + * Note: In order to speedup execution of tests, we cache the session cookies for each role + * after first call. + */ samlAuth: [ ({ log, config }, use) => { use(createSamlSessionManager(config, log)); diff --git a/packages/kbn-scout/src/playwright/fixtures/worker/ui_settings.ts b/packages/kbn-scout/src/playwright/fixtures/worker/ui_settings.ts index 989f7ce436616..20fa59da9aba7 100644 --- a/packages/kbn-scout/src/playwright/fixtures/worker/ui_settings.ts +++ b/packages/kbn-scout/src/playwright/fixtures/worker/ui_settings.ts @@ -12,6 +12,9 @@ import { UiSettingValues } from '@kbn/test/src/kbn_client/kbn_client_ui_settings import { ScoutWorkerFixtures } from '../types'; import { isValidUTCDate, formatTime } from '../../utils'; +/** + * This fixture provides a way to interact with Kibana UI settings. + */ export const uiSettingsFixture = base.extend<{}, ScoutWorkerFixtures>({ uiSettings: [ ({ kbnClient }, use) => { diff --git a/packages/kbn-scout/src/playwright/index.ts b/packages/kbn-scout/src/playwright/index.ts index 5294274c41bc5..0a82bc0468fce 100644 --- a/packages/kbn-scout/src/playwright/index.ts +++ b/packages/kbn-scout/src/playwright/index.ts @@ -25,3 +25,6 @@ export type { ScoutPage, EsArchiverFixture, } from './fixtures'; + +// use to tag tests +export { tags } from './tags'; diff --git a/packages/kbn-scout/src/playwright/runner/run_tests.ts b/packages/kbn-scout/src/playwright/runner/run_tests.ts index a5d8aa137dbfd..766209f169963 100644 --- a/packages/kbn-scout/src/playwright/runner/run_tests.ts +++ b/packages/kbn-scout/src/playwright/runner/run_tests.ts @@ -18,12 +18,14 @@ import { loadServersConfig } from '../../config'; import { silence } from '../../common'; import { RunTestsOptions } from './flags'; import { getExtraKbnOpts } from '../../servers/run_kibana_server'; +import { getPlaywrightGrepTag } from '../utils'; export async function runTests(log: ToolingLog, options: RunTestsOptions) { const runStartTime = Date.now(); - const reportTime = getTimeReporter(log, 'scripts/scout_test'); + const reportTime = getTimeReporter(log, 'scripts/scout run-tests'); const config = await loadServersConfig(options.mode, log); + const playwrightGrepTag = getPlaywrightGrepTag(config); const playwrightConfigPath = options.configPath; await withProcRunner(log, async (procs) => { @@ -59,7 +61,12 @@ export async function runTests(log: ToolingLog, options: RunTestsOptions) { // Running 'npx playwright test --config=${playwrightConfigPath}' await procs.run(`playwright`, { cmd: resolve(REPO_ROOT, './node_modules/.bin/playwright'), - args: ['test', `--config=${playwrightConfigPath}`, ...(options.headed ? ['--headed'] : [])], + args: [ + 'test', + `--config=${playwrightConfigPath}`, + `--grep=${playwrightGrepTag}`, + ...(options.headed ? ['--headed'] : []), + ], cwd: resolve(REPO_ROOT), env: { ...process.env, diff --git a/packages/kbn-scout/src/playwright/tags.ts b/packages/kbn-scout/src/playwright/tags.ts new file mode 100644 index 0000000000000..a022b6afd3430 --- /dev/null +++ b/packages/kbn-scout/src/playwright/tags.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +const SERVERLESS_ONLY = ['@svlSecurity', '@svlOblt', '@svlSearch']; +const ESS_ONLY = ['@ess']; +const DEPLOYMENT_AGNOSTIC = SERVERLESS_ONLY.concat(ESS_ONLY); + +export const tags = { + ESS_ONLY, + SERVERLESS_ONLY, + DEPLOYMENT_AGNOSTIC, +}; + +export const tagsByMode = { + stateful: '@ess', + serverless: { + es: '@svlSearch', + oblt: '@svlOblt', + security: '@svlSecurity', + }, +}; diff --git a/packages/kbn-scout/src/playwright/utils/index.ts b/packages/kbn-scout/src/playwright/utils/index.ts index 4b6fcafcbcfa8..8956c6d7cc18f 100644 --- a/packages/kbn-scout/src/playwright/utils/index.ts +++ b/packages/kbn-scout/src/playwright/utils/index.ts @@ -8,6 +8,8 @@ */ import moment from 'moment'; +import { Config } from '../../config'; +import { tagsByMode } from '../tags'; export const serviceLoadedMsg = (name: string) => `scout service loaded: ${name}`; @@ -18,3 +20,10 @@ export const isValidUTCDate = (date: string): boolean => { export function formatTime(date: string, fmt: string = 'MMM D, YYYY @ HH:mm:ss.SSS') { return moment.utc(date, fmt).format(); } + +export const getPlaywrightGrepTag = (config: Config): string => { + const serversConfig = config.getTestServersConfig(); + return serversConfig.serverless + ? tagsByMode.serverless[serversConfig.projectType!] + : tagsByMode.stateful; +}; diff --git a/packages/kbn-scout/src/types/config.d.ts b/packages/kbn-scout/src/types/config.d.ts index 2f0c3a764d65f..08c4bc5f3f9b0 100644 --- a/packages/kbn-scout/src/types/config.d.ts +++ b/packages/kbn-scout/src/types/config.d.ts @@ -25,9 +25,9 @@ export interface ScoutLoaderConfig { ssl: boolean; }; kbnTestServer: { - env?: any; - buildArgs?: string[]; - sourceArgs?: string[]; + env: any; + buildArgs: string[]; + sourceArgs: string[]; serverArgs: string[]; useDedicatedTestRunner?: boolean; }; diff --git a/packages/kbn-search-connectors/components/cron_editor/readme.md b/packages/kbn-search-connectors/components/cron_editor/readme.md index 1b2f8e39e9e58..f1288c56917cd 100644 --- a/packages/kbn-search-connectors/components/cron_editor/readme.md +++ b/packages/kbn-search-connectors/components/cron_editor/readme.md @@ -1,4 +1,4 @@ -`CronEditor` found `./cron_editor.tsx` is based on the `Cron Editor` component from `src/plugins/es_ui_shared/public/components/cron_editor` +`CronEditor` found `./cron_editor.tsx` is based on the `Cron Editor` component from `src/platform/plugins/shared/es_ui_shared/public/components/cron_editor` Includes a `disabled` prop that can be passed down to the child form components. diff --git a/packages/kbn-search-response-warnings/src/handle_warnings.tsx b/packages/kbn-search-response-warnings/src/handle_warnings.tsx index 95ce6e2b112a1..7287c3185cc52 100644 --- a/packages/kbn-search-response-warnings/src/handle_warnings.tsx +++ b/packages/kbn-search-response-warnings/src/handle_warnings.tsx @@ -14,6 +14,7 @@ import type { AnalyticsServiceStart, NotificationsStart, ThemeServiceStart, + UserProfileService, } from '@kbn/core/public'; import { toMountPoint } from '@kbn/react-kibana-mount'; import type { I18nStart } from '@kbn/core-i18n-browser'; @@ -36,6 +37,7 @@ interface Services { inspector: InspectorStart; notifications: NotificationsStart; theme: ThemeServiceStart; + userProfile: UserProfileService; } /** diff --git a/packages/kbn-securitysolution-autocomplete/src/es_field_selector/__tests__/use_es_field.test.ts b/packages/kbn-securitysolution-autocomplete/src/es_field_selector/__tests__/use_es_field.test.ts index 49a4b0d5eb40f..942ccbc29c38e 100644 --- a/packages/kbn-securitysolution-autocomplete/src/es_field_selector/__tests__/use_es_field.test.ts +++ b/packages/kbn-securitysolution-autocomplete/src/es_field_selector/__tests__/use_es_field.test.ts @@ -9,11 +9,7 @@ import { DataViewFieldBase } from '@kbn/es-query'; import { ReactElement } from 'react'; -import { act } from '@testing-library/react'; - -import { renderHook } from '@testing-library/react-hooks'; -import TestRenderer from 'react-test-renderer'; -const { act: actTestRenderer } = TestRenderer; +import { act, renderHook } from '@testing-library/react'; import { fields } from '../../fields/index.mock'; import { useEsField } from '../use_es_field'; @@ -480,7 +476,7 @@ describe('useField', () => { useEsField({ indexPattern, onChange: onChangeMock, isRequired: true }) ); - actTestRenderer(() => { + act(() => { result.current.handleTouch(); }); expect(result.current.isInvalid).toBeTruthy(); @@ -490,7 +486,7 @@ describe('useField', () => { useEsField({ indexPattern, onChange: onChangeMock, isRequired: true, selectedField }) ); - actTestRenderer(() => { + act(() => { result.current.handleTouch(); }); expect(result.current.isInvalid).toBeFalsy(); @@ -498,7 +494,7 @@ describe('useField', () => { it('should return isInvalid equals false when isRequired is false', () => { const { result } = renderHook(() => useEsField({ indexPattern, onChange: onChangeMock })); - actTestRenderer(() => { + act(() => { result.current.handleTouch(); }); expect(result.current.isInvalid).toBeFalsy(); diff --git a/packages/kbn-securitysolution-autocomplete/src/hooks/use_field_value_autocomplete/index.test.ts b/packages/kbn-securitysolution-autocomplete/src/hooks/use_field_value_autocomplete/index.test.ts index aae858aa63087..836744f3ede28 100644 --- a/packages/kbn-securitysolution-autocomplete/src/hooks/use_field_value_autocomplete/index.test.ts +++ b/packages/kbn-securitysolution-autocomplete/src/hooks/use_field_value_autocomplete/index.test.ts @@ -7,14 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { ListOperatorTypeEnum as OperatorTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; -import { - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn, - useFieldValueAutocomplete, -} from '.'; +import { UseFieldValueAutocompleteReturn, useFieldValueAutocomplete } from '.'; import { getField } from '../../fields/index.mock'; import { autocompleteStartMock } from '../../autocomplete/index.mock'; import { DataViewFieldBase } from '@kbn/es-query'; @@ -46,140 +42,115 @@ describe('use_field_value_autocomplete', () => { }); test('initializes hook', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: getValueSuggestionsMock, - }, - fieldValue: '', - indexPattern: undefined, - operatorType: OperatorTypeEnum.MATCH, - query: '', - selectedField: undefined, - }) - ); - await waitForNextUpdate(); - - expect(result.current).toEqual([false, true, [], result.current[3]]); - }); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: getValueSuggestionsMock, + }, + fieldValue: '', + indexPattern: undefined, + operatorType: OperatorTypeEnum.MATCH, + query: '', + selectedField: undefined, + }) + ); + await waitFor(() => expect(result.current).toEqual([false, true, [], result.current[3]])); }); test('does not call autocomplete service if "operatorType" is "exists"', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: getValueSuggestionsMock, - }, - fieldValue: '', - indexPattern: stubIndexPatternWithFields, - operatorType: OperatorTypeEnum.EXISTS, - query: '', - selectedField: getField('machine.os'), - }) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: getValueSuggestionsMock, + }, + fieldValue: '', + indexPattern: stubIndexPatternWithFields, + operatorType: OperatorTypeEnum.EXISTS, + query: '', + selectedField: getField('machine.os'), + }) + ); + await waitFor(() => { const expectedResult: UseFieldValueAutocompleteReturn = [false, true, [], result.current[3]]; - expect(getValueSuggestionsMock).not.toHaveBeenCalled(); expect(result.current).toEqual(expectedResult); + expect(getValueSuggestionsMock).not.toHaveBeenCalled(); }); }); test('does not call autocomplete service if "selectedField" is undefined', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: getValueSuggestionsMock, - }, - fieldValue: '', - indexPattern: stubIndexPatternWithFields, - operatorType: OperatorTypeEnum.EXISTS, - query: '', - selectedField: undefined, - }) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: getValueSuggestionsMock, + }, + fieldValue: '', + indexPattern: stubIndexPatternWithFields, + operatorType: OperatorTypeEnum.EXISTS, + query: '', + selectedField: undefined, + }) + ); + await waitFor(() => { const expectedResult: UseFieldValueAutocompleteReturn = [false, true, [], result.current[3]]; - expect(getValueSuggestionsMock).not.toHaveBeenCalled(); expect(result.current).toEqual(expectedResult); + expect(getValueSuggestionsMock).not.toHaveBeenCalled(); }); }); test('does not call autocomplete service if "indexPattern" is undefined', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: getValueSuggestionsMock, - }, - fieldValue: '', - indexPattern: undefined, - operatorType: OperatorTypeEnum.EXISTS, - query: '', - selectedField: getField('machine.os'), - }) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: getValueSuggestionsMock, + }, + fieldValue: '', + indexPattern: undefined, + operatorType: OperatorTypeEnum.EXISTS, + query: '', + selectedField: getField('machine.os'), + }) + ); + await waitFor(() => { const expectedResult: UseFieldValueAutocompleteReturn = [false, true, [], result.current[3]]; - expect(getValueSuggestionsMock).not.toHaveBeenCalled(); expect(result.current).toEqual(expectedResult); + expect(getValueSuggestionsMock).not.toHaveBeenCalled(); }); }); test('it uses full path name for nested fields to fetch suggestions', async () => { const suggestionsMock = jest.fn().mockResolvedValue([]); - await act(async () => { - const selectedField: DataViewFieldBase | undefined = getField('nestedField.child'); - if (selectedField == null) { - throw new TypeError('selectedField for this test should always be defined'); - } - - const { signal } = new AbortController(); - const { waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: suggestionsMock, - }, - fieldValue: '', - indexPattern: stubIndexPatternWithFields, - operatorType: OperatorTypeEnum.MATCH, - query: '', - selectedField: { ...selectedField, name: 'child' }, - }) - ); - // Note: initial `waitForNextUpdate` is hook initialization - await waitForNextUpdate(); - await waitForNextUpdate(); + const selectedField: DataViewFieldBase | undefined = getField('nestedField.child'); + if (selectedField == null) { + throw new TypeError('selectedField for this test should always be defined'); + } + + const { signal } = new AbortController(); + renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: suggestionsMock, + }, + fieldValue: '', + indexPattern: stubIndexPatternWithFields, + operatorType: OperatorTypeEnum.MATCH, + query: '', + selectedField: { ...selectedField, name: 'child' }, + }) + ); + await waitFor(() => expect(suggestionsMock).toHaveBeenCalledWith({ field: { ...getField('nestedField.child'), name: 'nestedField.child' }, indexPattern: { @@ -199,63 +170,51 @@ describe('use_field_value_autocomplete', () => { query: '', signal, useTimeRange: false, - }); - }); + }) + ); }); test('returns "isSuggestingValues" of false if field type is boolean', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: getValueSuggestionsMock, - }, - fieldValue: '', - indexPattern: stubIndexPatternWithFields, - operatorType: OperatorTypeEnum.MATCH, - query: '', - selectedField: getField('ssl'), - }) - ); - // Note: initial `waitForNextUpdate` is hook initialization - await waitForNextUpdate(); - await waitForNextUpdate(); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: getValueSuggestionsMock, + }, + fieldValue: '', + indexPattern: stubIndexPatternWithFields, + operatorType: OperatorTypeEnum.MATCH, + query: '', + selectedField: getField('ssl'), + }) + ); + await waitFor(() => { const expectedResult: UseFieldValueAutocompleteReturn = [false, false, [], result.current[3]]; - expect(getValueSuggestionsMock).not.toHaveBeenCalled(); expect(result.current).toEqual(expectedResult); + expect(getValueSuggestionsMock).not.toHaveBeenCalled(); }); }); test('returns "isSuggestingValues" of false to note that autocomplete service is not in use if no autocomplete suggestions available', async () => { const suggestionsMock = jest.fn().mockResolvedValue([]); - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: suggestionsMock, - }, - fieldValue: '', - indexPattern: stubIndexPatternWithFields, - operatorType: OperatorTypeEnum.MATCH, - query: '', - selectedField: getField('bytes'), - }) - ); - // Note: initial `waitForNextUpdate` is hook initialization - await waitForNextUpdate(); - await waitForNextUpdate(); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: suggestionsMock, + }, + fieldValue: '', + indexPattern: stubIndexPatternWithFields, + operatorType: OperatorTypeEnum.MATCH, + query: '', + selectedField: getField('bytes'), + }) + ); + await waitFor(() => { const expectedResult: UseFieldValueAutocompleteReturn = [false, false, [], result.current[3]]; expect(suggestionsMock).toHaveBeenCalled(); @@ -264,28 +223,22 @@ describe('use_field_value_autocomplete', () => { }); test('returns suggestions', async () => { - await act(async () => { - const { signal } = new AbortController(); - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: getValueSuggestionsMock, - }, - fieldValue: '', - indexPattern: stubIndexPatternWithFields, - operatorType: OperatorTypeEnum.MATCH, - query: '', - selectedField: getField('@tags'), - }) - ); - // Note: initial `waitForNextUpdate` is hook initialization - await waitForNextUpdate(); - await waitForNextUpdate(); + const { signal } = new AbortController(); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: getValueSuggestionsMock, + }, + fieldValue: '', + indexPattern: stubIndexPatternWithFields, + operatorType: OperatorTypeEnum.MATCH, + query: '', + selectedField: getField('@tags'), + }) + ); + await waitFor(() => { const expectedResult: UseFieldValueAutocompleteReturn = [ false, true, @@ -305,42 +258,34 @@ describe('use_field_value_autocomplete', () => { }); test('returns new suggestions on subsequent calls', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseFieldValueAutocompleteProps, - UseFieldValueAutocompleteReturn - >(() => - useFieldValueAutocomplete({ - autocompleteService: { - ...autocompleteStartMock, - getValueSuggestions: getValueSuggestionsMock, - }, - fieldValue: '', - indexPattern: stubIndexPatternWithFields, - operatorType: OperatorTypeEnum.MATCH, - query: '', - selectedField: getField('@tags'), - }) - ); - // Note: initial `waitForNextUpdate` is hook initialization - await waitForNextUpdate(); - await waitForNextUpdate(); - - expect(result.current[3]).not.toBeNull(); - - // Added check for typescripts sake, if null, - // would not reach below logic as test would stop above - if (result.current[3] != null) { - result.current[3]({ - fieldSelected: getField('@tags'), - patterns: stubIndexPatternWithFields, - searchQuery: '', - value: 'hello', - }); - } - - await waitForNextUpdate(); + const { result } = renderHook(() => + useFieldValueAutocomplete({ + autocompleteService: { + ...autocompleteStartMock, + getValueSuggestions: getValueSuggestionsMock, + }, + fieldValue: '', + indexPattern: stubIndexPatternWithFields, + operatorType: OperatorTypeEnum.MATCH, + query: '', + selectedField: getField('@tags'), + }) + ); + + await waitFor(() => expect(result.current[3]).not.toBeNull()); + + // Added check for typescripts sake, if null, + // would not reach below logic as test would stop above + if (result.current[3] != null) { + result.current[3]({ + fieldSelected: getField('@tags'), + patterns: stubIndexPatternWithFields, + searchQuery: '', + value: 'hello', + }); + } + await waitFor(() => { const expectedResult: UseFieldValueAutocompleteReturn = [ false, true, diff --git a/packages/kbn-securitysolution-ecs/index.ts b/packages/kbn-securitysolution-ecs/index.ts deleted file mode 100644 index 55b900ad5137a..0000000000000 --- a/packages/kbn-securitysolution-ecs/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export * from './src'; diff --git a/packages/kbn-securitysolution-ecs/jest.config.js b/packages/kbn-securitysolution-ecs/jest.config.js deleted file mode 100644 index 50b1d85a0c5f8..0000000000000 --- a/packages/kbn-securitysolution-ecs/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-securitysolution-ecs'], -}; diff --git a/packages/kbn-securitysolution-ecs/tsconfig.json b/packages/kbn-securitysolution-ecs/tsconfig.json deleted file mode 100644 index dcb1ea0d03d93..0000000000000 --- a/packages/kbn-securitysolution-ecs/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts" - ], - "exclude": [ - "target/**/*" - ] -} diff --git a/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/use_exception_item_card.test.ts b/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/use_exception_item_card.test.ts index cd3e9d8ab5817..5c04c87727147 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/use_exception_item_card.test.ts +++ b/packages/kbn-securitysolution-exception-list-components/src/exception_item_card/use_exception_item_card.test.ts @@ -8,7 +8,7 @@ */ import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { getExceptionListItemSchemaMock } from '../mocks/exception_list_item_schema.mock'; import { useExceptionItemCard } from './use_exception_item_card'; import * as i18n from './translations'; diff --git a/packages/kbn-securitysolution-exception-list-components/src/list_header/edit_modal/use_edit_modal.test.ts b/packages/kbn-securitysolution-exception-list-components/src/list_header/edit_modal/use_edit_modal.test.ts index e982637791200..65b532a55c834 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/list_header/edit_modal/use_edit_modal.test.ts +++ b/packages/kbn-securitysolution-exception-list-components/src/list_header/edit_modal/use_edit_modal.test.ts @@ -8,7 +8,7 @@ */ import { ChangeEvent, SyntheticEvent } from 'react'; -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { useEditModal } from './use_edit_modal'; const listDetails = { name: 'test-name', description: 'test-description' }; diff --git a/packages/kbn-securitysolution-exception-list-components/src/list_header/use_list_header.test.ts b/packages/kbn-securitysolution-exception-list-components/src/list_header/use_list_header.test.ts index d3c17a4aefc48..e16681d2b184b 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/list_header/use_list_header.test.ts +++ b/packages/kbn-securitysolution-exception-list-components/src/list_header/use_list_header.test.ts @@ -7,8 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { waitFor } from '@testing-library/react'; -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook, act } from '@testing-library/react'; import { useExceptionListHeader } from './use_list_header'; describe('useExceptionListHeader', () => { diff --git a/packages/kbn-securitysolution-exception-list-components/src/pagination/use_pagination.test.ts b/packages/kbn-securitysolution-exception-list-components/src/pagination/use_pagination.test.ts index f05066bb61499..e90408f1e161b 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/pagination/use_pagination.test.ts +++ b/packages/kbn-securitysolution-exception-list-components/src/pagination/use_pagination.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { usePagination } from './use_pagination'; const onPaginationChange = jest.fn(); diff --git a/packages/kbn-securitysolution-exception-list-components/src/value_with_space_warning/use_value_with_space_warning.test.ts b/packages/kbn-securitysolution-exception-list-components/src/value_with_space_warning/use_value_with_space_warning.test.ts index ab0c87c110dfb..51954c0140e61 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/value_with_space_warning/use_value_with_space_warning.test.ts +++ b/packages/kbn-securitysolution-exception-list-components/src/value_with_space_warning/use_value_with_space_warning.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useValueWithSpaceWarning } from './use_value_with_space_warning'; describe('useValueWithSpaceWarning', () => { diff --git a/packages/kbn-securitysolution-exceptions-common/docs/openapi/ess/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml b/packages/kbn-securitysolution-exceptions-common/docs/openapi/ess/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml index d02bd360cc313..c4f44ca0e85f5 100644 --- a/packages/kbn-securitysolution-exceptions-common/docs/openapi/ess/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml +++ b/packages/kbn-securitysolution-exceptions-common/docs/openapi/ess/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml @@ -1899,9 +1899,55 @@ components: security: - BasicAuth: [] tags: - - description: >- - Exceptions API allows you to manage detection rule exceptions to prevent a - rule from generating an alert from incoming events even when the rule's - other criteria are met. + - description: > + Exceptions are associated with detection and endpoint rules, and are used + to prevent a rule from generating an alert from incoming events, even when + the rule's other criteria are met. They can help reduce the number of + false positives and prevent trusted processes and network activity from + generating unnecessary alerts. + + + Exceptions are made up of: + + + * **Exception containers**: A container for related exceptions. Generally, + a single exception container contains all the exception items relevant for + a subset of rules. For example, a container can be used to group together + network-related exceptions that are relevant for a large number of network + rules. The container can then be associated with all the relevant rules. + + * **Exception items**: The query (fields, values, and logic) used to + prevent rules from generating alerts. When an exception item's query + evaluates to `true`, the rule does not generate an alert. + + + For detection rules, you can also use lists to define rule exceptions. A + list holds multiple values of the same Elasticsearch data type, such as IP + addresses. These values are used to determine when an exception prevents + an alert from being generated. + + > info + + > You cannot use lists with endpoint rule exceptions. + + + > info + + > Only exception containers can be associated with rules. You cannot + directly associate an exception item or a list container with a rule. To + use list exceptions, create an exception item that references the relevant + list container. + + + ## Exceptions requirements + + + Before you can start working with exceptions that use value lists, you + must create the `.lists` and `.items` data streams for the relevant Kibana + space. To do this, use the [Create list data + streams](../operation/operation-createlistindex) endpoint. Once these data + streams are created, your role needs privileges to manage rules. For a + complete list of requirements, refer to [Enable and access + detections](https://www.elastic.co/guide/en/security/current/detections-permissions-section.html#enable-detections-ui). name: Security Exceptions API x-displayName: Security exceptions diff --git a/packages/kbn-securitysolution-exceptions-common/docs/openapi/serverless/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml b/packages/kbn-securitysolution-exceptions-common/docs/openapi/serverless/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml index 885028d7e2d94..c686d57b725f9 100644 --- a/packages/kbn-securitysolution-exceptions-common/docs/openapi/serverless/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml +++ b/packages/kbn-securitysolution-exceptions-common/docs/openapi/serverless/security_solution_exceptions_api_2023_10_31.bundled.schema.yaml @@ -1899,9 +1899,55 @@ components: security: - BasicAuth: [] tags: - - description: >- - Exceptions API allows you to manage detection rule exceptions to prevent a - rule from generating an alert from incoming events even when the rule's - other criteria are met. + - description: > + Exceptions are associated with detection and endpoint rules, and are used + to prevent a rule from generating an alert from incoming events, even when + the rule's other criteria are met. They can help reduce the number of + false positives and prevent trusted processes and network activity from + generating unnecessary alerts. + + + Exceptions are made up of: + + + * **Exception containers**: A container for related exceptions. Generally, + a single exception container contains all the exception items relevant for + a subset of rules. For example, a container can be used to group together + network-related exceptions that are relevant for a large number of network + rules. The container can then be associated with all the relevant rules. + + * **Exception items**: The query (fields, values, and logic) used to + prevent rules from generating alerts. When an exception item's query + evaluates to `true`, the rule does not generate an alert. + + + For detection rules, you can also use lists to define rule exceptions. A + list holds multiple values of the same Elasticsearch data type, such as IP + addresses. These values are used to determine when an exception prevents + an alert from being generated. + + > info + + > You cannot use lists with endpoint rule exceptions. + + + > info + + > Only exception containers can be associated with rules. You cannot + directly associate an exception item or a list container with a rule. To + use list exceptions, create an exception item that references the relevant + list container. + + + ## Exceptions requirements + + + Before you can start working with exceptions that use value lists, you + must create the `.lists` and `.items` data streams for the relevant Kibana + space. To do this, use the [Create list data + streams](../operation/operation-createlistindex) endpoint. Once these data + streams are created, your role needs privileges to manage rules. For a + complete list of requirements, refer to [Enable and access + detections](https://www.elastic.co/guide/en/serverless/current/security-detections-requirements.html#enable-detections-ui). name: Security Exceptions API x-displayName: Security exceptions diff --git a/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle.js b/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle.js index 83c84d91daaf5..70299e56eac2e 100644 --- a/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle.js +++ b/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle.js @@ -22,21 +22,7 @@ const ROOT = resolve(__dirname, '..'); ), options: { includeLabels: ['serverless'], - prototypeDocument: { - info: { - title: 'Security Exceptions API (Elastic Cloud Serverless)', - description: - "Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met.", - }, - tags: [ - { - name: 'Security Exceptions API', - 'x-displayName': 'Security exceptions', - description: - "Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met.", - }, - ], - }, + prototypeDocument: join(ROOT, 'scripts/openapi_bundle_info/exceptions_serverless.info.yaml'), }, }); @@ -48,21 +34,7 @@ const ROOT = resolve(__dirname, '..'); ), options: { includeLabels: ['ess'], - prototypeDocument: { - info: { - title: 'Security Exceptions API (Elastic Cloud and self-hosted)', - description: - "Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met.", - }, - tags: [ - { - name: 'Security Exceptions API', - 'x-displayName': 'Security exceptions', - description: - "Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met.", - }, - ], - }, + prototypeDocument: join(ROOT, 'scripts/openapi_bundle_info/exceptions_ess.info.yaml'), }, }); })(); diff --git a/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle_info/exceptions_ess.info.yaml b/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle_info/exceptions_ess.info.yaml new file mode 100644 index 0000000000000..855870c444c7c --- /dev/null +++ b/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle_info/exceptions_ess.info.yaml @@ -0,0 +1,26 @@ +openapi: 3.0.3 +info: + title: "Security Exceptions API (Elastic Cloud and self-hosted)" + description: "Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met." + +tags: + - name: "Security Exceptions API" + x-displayName: "Security exceptions" + description: | + Exceptions are associated with detection and endpoint rules, and are used to prevent a rule from generating an alert from incoming events, even when the rule's other criteria are met. They can help reduce the number of false positives and prevent trusted processes and network activity from generating unnecessary alerts. + + Exceptions are made up of: + + * **Exception containers**: A container for related exceptions. Generally, a single exception container contains all the exception items relevant for a subset of rules. For example, a container can be used to group together network-related exceptions that are relevant for a large number of network rules. The container can then be associated with all the relevant rules. + * **Exception items**: The query (fields, values, and logic) used to prevent rules from generating alerts. When an exception item's query evaluates to `true`, the rule does not generate an alert. + + For detection rules, you can also use lists to define rule exceptions. A list holds multiple values of the same Elasticsearch data type, such as IP addresses. These values are used to determine when an exception prevents an alert from being generated. + > info + > You cannot use lists with endpoint rule exceptions. + + > info + > Only exception containers can be associated with rules. You cannot directly associate an exception item or a list container with a rule. To use list exceptions, create an exception item that references the relevant list container. + + ## Exceptions requirements + + Before you can start working with exceptions that use value lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. For a complete list of requirements, refer to [Enable and access detections](https://www.elastic.co/guide/en/security/current/detections-permissions-section.html#enable-detections-ui). diff --git a/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle_info/exceptions_serverless.info.yaml b/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle_info/exceptions_serverless.info.yaml new file mode 100644 index 0000000000000..a8894d997be98 --- /dev/null +++ b/packages/kbn-securitysolution-exceptions-common/scripts/openapi_bundle_info/exceptions_serverless.info.yaml @@ -0,0 +1,26 @@ +openapi: 3.0.3 +info: + title: "Security Exceptions API (Elastic Cloud Serverless)" + description: "Exceptions API allows you to manage detection rule exceptions to prevent a rule from generating an alert from incoming events even when the rule's other criteria are met." + +tags: + - name: "Security Exceptions API" + x-displayName: "Security exceptions" + description: | + Exceptions are associated with detection and endpoint rules, and are used to prevent a rule from generating an alert from incoming events, even when the rule's other criteria are met. They can help reduce the number of false positives and prevent trusted processes and network activity from generating unnecessary alerts. + + Exceptions are made up of: + + * **Exception containers**: A container for related exceptions. Generally, a single exception container contains all the exception items relevant for a subset of rules. For example, a container can be used to group together network-related exceptions that are relevant for a large number of network rules. The container can then be associated with all the relevant rules. + * **Exception items**: The query (fields, values, and logic) used to prevent rules from generating alerts. When an exception item's query evaluates to `true`, the rule does not generate an alert. + + For detection rules, you can also use lists to define rule exceptions. A list holds multiple values of the same Elasticsearch data type, such as IP addresses. These values are used to determine when an exception prevents an alert from being generated. + > info + > You cannot use lists with endpoint rule exceptions. + + > info + > Only exception containers can be associated with rules. You cannot directly associate an exception item or a list container with a rule. To use list exceptions, create an exception item that references the relevant list container. + + ## Exceptions requirements + + Before you can start working with exceptions that use value lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. For a complete list of requirements, refer to [Enable and access detections](https://www.elastic.co/guide/en/serverless/current/security-detections-requirements.html#enable-detections-ui). diff --git a/packages/kbn-securitysolution-hook-utils/src/use_async/index.test.ts b/packages/kbn-securitysolution-hook-utils/src/use_async/index.test.ts index a9f02622df306..99417c1fe3292 100644 --- a/packages/kbn-securitysolution-hook-utils/src/use_async/index.test.ts +++ b/packages/kbn-securitysolution-hook-utils/src/use_async/index.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook, act } from '@testing-library/react'; import { useAsync } from '.'; @@ -20,8 +20,8 @@ type TestReturn = Promise<unknown>; describe('useAsync', () => { /** - * Timeout for both jest tests and for the waitForNextUpdate. - * jest tests default to 5 seconds and waitForNextUpdate defaults to 1 second. + * Timeout for both jest tests and for the waitFor. + * jest tests default to 5 seconds and waitFor defaults to 1 second. * 20_0000 = 20,000 milliseconds = 20 seconds */ const timeout = 20_000; @@ -42,43 +42,42 @@ describe('useAsync', () => { it( 'invokes the function when start is called', async () => { - const { result, waitForNextUpdate } = renderHook(() => useAsync(fn)); + const { result } = renderHook(() => useAsync(fn)); act(() => { result.current.start(args); }); - await waitForNextUpdate({ timeout }); - - expect(fn).toHaveBeenCalled(); + await waitFor(() => expect(fn).toHaveBeenCalled(), { timeout }); }, timeout ); it('invokes the function with start args', async () => { - const { result, waitForNextUpdate } = renderHook(() => useAsync(fn)); + const { result } = renderHook(() => useAsync(fn)); const expectedArgs = { ...args }; act(() => { result.current.start(args); }); - await waitForNextUpdate({ timeout }); - - expect(fn).toHaveBeenCalledWith(expectedArgs); + await waitFor(() => expect(fn).toHaveBeenCalledWith(expectedArgs), { timeout }); }); it( 'populates result with the resolved value of the fn', async () => { - const { result, waitForNextUpdate } = renderHook(() => useAsync(fn)); + const { result } = renderHook(() => useAsync(fn)); fn.mockResolvedValue({ resolved: 'value' }); act(() => { result.current.start(args); }); - await waitForNextUpdate({ timeout }); - - expect(result.current.result).toEqual({ resolved: 'value' }); - expect(result.current.error).toBeUndefined(); + await waitFor( + () => { + expect(result.current.result).toEqual({ resolved: 'value' }); + expect(result.current.error).toBeUndefined(); + }, + { timeout } + ); }, timeout ); @@ -87,15 +86,19 @@ describe('useAsync', () => { 'populates error if function rejects', async () => { fn.mockRejectedValue(new Error('whoops')); - const { result, waitForNextUpdate } = renderHook(() => useAsync(fn)); + const { result } = renderHook(() => useAsync(fn)); act(() => { result.current.start(args); }); - await waitForNextUpdate({ timeout }); - expect(result.current.result).toBeUndefined(); - expect(result.current.error).toEqual(new Error('whoops')); + await waitFor( + () => { + expect(result.current.result).toBeUndefined(); + expect(result.current.error).toEqual(new Error('whoops')); + }, + { timeout } + ); }, timeout ); @@ -106,7 +109,7 @@ describe('useAsync', () => { let resolve: () => void; fn.mockImplementation(() => new Promise<void>((_resolve) => (resolve = _resolve))); - const { result, waitForNextUpdate } = renderHook(() => useAsync(fn)); + const { result } = renderHook(() => useAsync(fn)); act(() => { result.current.start(args); @@ -115,9 +118,7 @@ describe('useAsync', () => { expect(result.current.loading).toBe(true); act(() => resolve()); - await waitForNextUpdate({ timeout }); - - expect(result.current.loading).toBe(false); + await waitFor(() => expect(result.current.loading).toBe(false), { timeout }); }, timeout ); @@ -128,7 +129,7 @@ describe('useAsync', () => { let resolve: (result: string) => void; fn.mockImplementation(() => new Promise((_resolve) => (resolve = _resolve))); - const { result, waitForNextUpdate } = renderHook(() => useAsync(fn)); + const { result } = renderHook(() => useAsync(fn)); act(() => { result.current.start(args); @@ -137,10 +138,13 @@ describe('useAsync', () => { expect(result.current.loading).toBe(true); act(() => resolve('result')); - await waitForNextUpdate({ timeout }); - - expect(result.current.loading).toBe(false); - expect(result.current.result).toBe('result'); + await waitFor( + () => { + expect(result.current.loading).toBe(false); + expect(result.current.result).toBe('result'); + }, + { timeout } + ); act(() => { result.current.start(args); @@ -149,10 +153,13 @@ describe('useAsync', () => { expect(result.current.loading).toBe(true); expect(result.current.result).toBe(undefined); act(() => resolve('result')); - await waitForNextUpdate({ timeout }); - - expect(result.current.loading).toBe(false); - expect(result.current.result).toBe('result'); + await waitFor( + () => { + expect(result.current.loading).toBe(false); + expect(result.current.result).toBe('result'); + }, + { timeout } + ); }, timeout ); diff --git a/packages/kbn-securitysolution-hook-utils/src/use_is_mounted/index.test.ts b/packages/kbn-securitysolution-hook-utils/src/use_is_mounted/index.test.ts index 3435fc838382b..a8013a65441c9 100644 --- a/packages/kbn-securitysolution-hook-utils/src/use_is_mounted/index.test.ts +++ b/packages/kbn-securitysolution-hook-utils/src/use_is_mounted/index.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useIsMounted } from '.'; diff --git a/packages/kbn-securitysolution-hook-utils/src/use_observable/index.test.ts b/packages/kbn-securitysolution-hook-utils/src/use_observable/index.test.ts index d0608c5d10174..8d90bffeb3ee2 100644 --- a/packages/kbn-securitysolution-hook-utils/src/use_observable/index.test.ts +++ b/packages/kbn-securitysolution-hook-utils/src/use_observable/index.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { Subject, throwError } from 'rxjs'; import { useObservable } from '.'; diff --git a/packages/kbn-securitysolution-list-hooks/src/use_cursor/index.test.ts b/packages/kbn-securitysolution-list-hooks/src/use_cursor/index.test.ts index c4464704b7cd1..ca94eda81f950 100644 --- a/packages/kbn-securitysolution-list-hooks/src/use_cursor/index.test.ts +++ b/packages/kbn-securitysolution-list-hooks/src/use_cursor/index.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { UseCursorProps, useCursor } from '.'; diff --git a/packages/kbn-securitysolution-list-hooks/src/use_find_lists/index.test.ts b/packages/kbn-securitysolution-list-hooks/src/use_find_lists/index.test.ts index fa68009be9d9b..fcce54ac3be32 100644 --- a/packages/kbn-securitysolution-list-hooks/src/use_find_lists/index.test.ts +++ b/packages/kbn-securitysolution-list-hooks/src/use_find_lists/index.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook, act } from '@testing-library/react'; import { useFindLists } from '.'; import { httpServiceMock } from '@kbn/core-http-browser-mocks'; @@ -26,14 +26,14 @@ describe('useFindLists', () => { }); it('invokes Api.findLists', async () => { - const { result, waitForNextUpdate } = renderHook(() => useFindLists()); + const { result } = renderHook(() => useFindLists()); act(() => { result.current.start({ http: httpMock, pageIndex: 1, pageSize: 10 }); }); - await waitForNextUpdate(); - - expect(Api.findLists).toHaveBeenCalledWith( - expect.objectContaining({ http: httpMock, pageIndex: 1, pageSize: 10 }) + await waitFor(() => + expect(Api.findLists).toHaveBeenCalledWith( + expect.objectContaining({ http: httpMock, pageIndex: 1, pageSize: 10 }) + ) ); }); }); diff --git a/packages/kbn-securitysolution-list-hooks/src/use_persist_exception_item/index.ts b/packages/kbn-securitysolution-list-hooks/src/use_persist_exception_item/index.ts index e5166dc3f0f91..79f8748345fdf 100644 --- a/packages/kbn-securitysolution-list-hooks/src/use_persist_exception_item/index.ts +++ b/packages/kbn-securitysolution-list-hooks/src/use_persist_exception_item/index.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { Dispatch, useEffect, useState } from 'react'; +import { Dispatch, useEffect, useRef, useState } from 'react'; import type { CreateExceptionListItemSchema, PersistHookProps, @@ -47,57 +47,63 @@ export const usePersistExceptionItem = ({ const [isLoading, setIsLoading] = useState(false); const isUpdateExceptionItem = (item: unknown): item is UpdateExceptionListItemSchema => Boolean(item && (item as UpdateExceptionListItemSchema).id != null); + const isSubscribed = useRef(false); useEffect(() => { - let isSubscribed = true; - const abortCtrl = new AbortController(); + let abortCtrl: AbortController | null = null; + isSubscribed.current = true; setIsSaved(false); const saveExceptionItem = async (): Promise<void> => { - if (exceptionListItem != null) { - try { - setIsLoading(true); - - if (isUpdateExceptionItem(exceptionListItem)) { - // Please see `x-pack/plugins/lists/public/exceptions/transforms.ts` doc notes - // for context around the temporary `id` - const transformedList = transformOutput(exceptionListItem); - - await updateExceptionListItem({ - http, - listItem: transformedList, - signal: abortCtrl.signal, - }); - } else { - // Please see `x-pack/plugins/lists/public/exceptions/transforms.ts` doc notes - // for context around the temporary `id` - const transformedList = transformNewItemOutput(exceptionListItem); - - await addExceptionListItem({ - http, - listItem: transformedList, - signal: abortCtrl.signal, - }); - } - - if (isSubscribed) { - setIsSaved(true); - } - } catch (error) { - if (isSubscribed) { - onError(error); - } + if (exceptionListItem === null) { + return; + } + + try { + abortCtrl = new AbortController(); + setIsLoading(true); + + if (isUpdateExceptionItem(exceptionListItem)) { + // Please see `x-pack/plugins/lists/public/exceptions/transforms.ts` doc notes + // for context around the temporary `id` + const transformedList = transformOutput(exceptionListItem); + + await updateExceptionListItem({ + http, + listItem: transformedList, + signal: abortCtrl.signal, + }); + } else { + // Please see `x-pack/plugins/lists/public/exceptions/transforms.ts` doc notes + // for context around the temporary `id` + const transformedList = transformNewItemOutput(exceptionListItem); + + await addExceptionListItem({ + http, + listItem: transformedList, + signal: abortCtrl.signal, + }); } - if (isSubscribed) { + + if (isSubscribed.current) { + setIsSaved(true); + } + } catch (error) { + if (isSubscribed.current) { + onError(error); + } + } finally { + if (isSubscribed.current) { setIsLoading(false); } } }; saveExceptionItem(); + return (): void => { - isSubscribed = false; - abortCtrl.abort(); + isSubscribed.current = false; + abortCtrl?.abort(); }; }, [http, exceptionListItem, onError]); diff --git a/packages/kbn-securitysolution-lists-common/docs/openapi/ess/security_solution_lists_api_2023_10_31.bundled.schema.yaml b/packages/kbn-securitysolution-lists-common/docs/openapi/ess/security_solution_lists_api_2023_10_31.bundled.schema.yaml index ef88149b49b32..a8324753a6798 100644 --- a/packages/kbn-securitysolution-lists-common/docs/openapi/ess/security_solution_lists_api_2023_10_31.bundled.schema.yaml +++ b/packages/kbn-securitysolution-lists-common/docs/openapi/ess/security_solution_lists_api_2023_10_31.bundled.schema.yaml @@ -1562,6 +1562,79 @@ components: security: - BasicAuth: [] tags: - - description: Lists API allows you to manage lists of keywords, IPs or IP ranges items. + - description: > + Lists can be used with detection rule exceptions to define values that + prevent a rule from generating alerts. + + + Lists are made up of: + + + * **List containers**: A container for values of the same Elasticsearch + data type. The following data types can be used: + * `boolean` + * `byte` + * `date` + * `date_nanos` + * `date_range` + * `double` + * `double_range` + * `float` + * `float_range` + * `half_float` + * `integer` + * `integer_range` + * `ip` + * `ip_range` + * `keyword` + * `long` + * `long_range` + * `short` + * `text` + * **List items**: The values used to determine whether the exception + prevents an alert from being generated. + + + All list items in the same list container must be of the same data type, + and each item defines a single value. For example, an IP list container + named `internal-ip-addresses-southport` contains five items, where each + item defines one internal IP address: + + 1. `192.168.1.1` + + 2. `192.168.1.3` + + 3. `192.168.1.18` + + 4. `192.168.1.12` + + 5. `192.168.1.7` + + + To use these IP addresses as values for defining rule exceptions, use the + Security exceptions API to [create an exception list + item](../operation/operation-createexceptionlistitem) that references the + `internal-ip-addresses-southport` list. + + > info + + > Lists cannot be added directly to rules, nor do they define the + operators used to determine when exceptions are applied (`is in list`, `is + not in list`). Use an exception item to define the operator and associate + it with an [exception + container](../operation/operation-createexceptionlist). You can then add + the exception container to a rule's `exceptions_list` object. + + + ## Lists requirements + + + Before you can start using lists, you must create the `.lists` and + `.items` data streams for the relevant Kibana space. To do this, use the + [Create list data streams](../operation/operation-createlistindex) + endpoint. Once these data streams are created, your role needs privileges + to manage rules. Refer to [Enable and access + detections](https://www.elastic.co/guide/en/security/current/detections-permissions-section.html#enable-detections-ui) + for a complete list of requirements. name: Security Lists API x-displayName: Security lists diff --git a/packages/kbn-securitysolution-lists-common/docs/openapi/serverless/security_solution_lists_api_2023_10_31.bundled.schema.yaml b/packages/kbn-securitysolution-lists-common/docs/openapi/serverless/security_solution_lists_api_2023_10_31.bundled.schema.yaml index e3558193b30da..5cba050e50c35 100644 --- a/packages/kbn-securitysolution-lists-common/docs/openapi/serverless/security_solution_lists_api_2023_10_31.bundled.schema.yaml +++ b/packages/kbn-securitysolution-lists-common/docs/openapi/serverless/security_solution_lists_api_2023_10_31.bundled.schema.yaml @@ -1562,6 +1562,79 @@ components: security: - BasicAuth: [] tags: - - description: Lists API allows you to manage lists of keywords, IPs or IP ranges items. + - description: > + Lists can be used with detection rule exceptions to define values that + prevent a rule from generating alerts. + + + Lists are made up of: + + + * **List containers**: A container for values of the same Elasticsearch + data type. The following data types can be used: + * `boolean` + * `byte` + * `date` + * `date_nanos` + * `date_range` + * `double` + * `double_range` + * `float` + * `float_range` + * `half_float` + * `integer` + * `integer_range` + * `ip` + * `ip_range` + * `keyword` + * `long` + * `long_range` + * `short` + * `text` + * **List items**: The values used to determine whether the exception + prevents an alert from being generated. + + + All list items in the same list container must be of the same data type, + and each item defines a single value. For example, an IP list container + named `internal-ip-addresses-southport` contains five items, where each + item defines one internal IP address: + + 1. `192.168.1.1` + + 2. `192.168.1.3` + + 3. `192.168.1.18` + + 4. `192.168.1.12` + + 5. `192.168.1.7` + + + To use these IP addresses as values for defining rule exceptions, use the + Security exceptions API to [create an exception list + item](../operation/operation-createexceptionlistitem) that references the + `internal-ip-addresses-southport` list. + + > info + + > Lists cannot be added directly to rules, nor do they define the + operators used to determine when exceptions are applied (`is in list`, `is + not in list`). Use an exception item to define the operator and associate + it with an [exception + container](../operation/operation-createexceptionlist). You can then add + the exception container to a rule's `exceptions_list` object. + + + ## Lists requirements + + + Before you can start using lists, you must create the `.lists` and + `.items` data streams for the relevant Kibana space. To do this, use the + [Create list data streams](../operation/operation-createlistindex) + endpoint. Once these data streams are created, your role needs privileges + to manage rules. Refer to [Enable and access + detections](https://www.elastic.co/guide/en/serverless/current/security-detections-requirements.html#enable-detections-ui) + for a complete list of requirements. name: Security Lists API x-displayName: Security lists diff --git a/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle.js b/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle.js index b8ea2ea2e8377..7a61724759178 100644 --- a/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle.js +++ b/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle.js @@ -22,20 +22,7 @@ const ROOT = resolve(__dirname, '..'); ), options: { includeLabels: ['serverless'], - prototypeDocument: { - info: { - title: 'Security Lists API (Elastic Cloud Serverless)', - description: 'Lists API allows you to manage lists of keywords, IPs or IP ranges items.', - }, - tags: [ - { - name: 'Security Lists API', - 'x-displayName': 'Security lists', - description: - 'Lists API allows you to manage lists of keywords, IPs or IP ranges items.', - }, - ], - }, + prototypeDocument: join(ROOT, 'scripts/openapi_bundle_info/lists_serverless.info.yaml'), }, }); @@ -47,20 +34,7 @@ const ROOT = resolve(__dirname, '..'); ), options: { includeLabels: ['ess'], - prototypeDocument: { - info: { - title: 'Security Lists API (Elastic Cloud and self-hosted)', - description: 'Lists API allows you to manage lists of keywords, IPs or IP ranges items.', - }, - tags: [ - { - name: 'Security Lists API', - 'x-displayName': 'Security lists', - description: - 'Lists API allows you to manage lists of keywords, IPs or IP ranges items.', - }, - ], - }, + prototypeDocument: join(ROOT, 'scripts/openapi_bundle_info/lists_ess.info.yaml'), }, }); })(); diff --git a/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle_info/lists_ess.info.yaml b/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle_info/lists_ess.info.yaml new file mode 100644 index 0000000000000..f2f528c8d7ba7 --- /dev/null +++ b/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle_info/lists_ess.info.yaml @@ -0,0 +1,49 @@ +openapi: 3.0.3 +info: + title: "Security Lists API (Elastic Cloud and self-hosted)" + description: "Lists API allows you to manage lists of keywords, IPs or IP ranges items." + +tags: + - name: "Security Lists API" + x-displayName: "Security lists" + description: | + Lists can be used with detection rule exceptions to define values that prevent a rule from generating alerts. + + Lists are made up of: + + * **List containers**: A container for values of the same Elasticsearch data type. The following data types can be used: + * `boolean` + * `byte` + * `date` + * `date_nanos` + * `date_range` + * `double` + * `double_range` + * `float` + * `float_range` + * `half_float` + * `integer` + * `integer_range` + * `ip` + * `ip_range` + * `keyword` + * `long` + * `long_range` + * `short` + * `text` + * **List items**: The values used to determine whether the exception prevents an alert from being generated. + + All list items in the same list container must be of the same data type, and each item defines a single value. For example, an IP list container named `internal-ip-addresses-southport` contains five items, where each item defines one internal IP address: + 1. `192.168.1.1` + 2. `192.168.1.3` + 3. `192.168.1.18` + 4. `192.168.1.12` + 5. `192.168.1.7` + + To use these IP addresses as values for defining rule exceptions, use the Security exceptions API to [create an exception list item](../operation/operation-createexceptionlistitem) that references the `internal-ip-addresses-southport` list. + > info + > Lists cannot be added directly to rules, nor do they define the operators used to determine when exceptions are applied (`is in list`, `is not in list`). Use an exception item to define the operator and associate it with an [exception container](../operation/operation-createexceptionlist). You can then add the exception container to a rule's `exceptions_list` object. + + ## Lists requirements + + Before you can start using lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. Refer to [Enable and access detections](https://www.elastic.co/guide/en/security/current/detections-permissions-section.html#enable-detections-ui) for a complete list of requirements. diff --git a/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle_info/lists_serverless.info.yaml b/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle_info/lists_serverless.info.yaml new file mode 100644 index 0000000000000..8f3245db29a99 --- /dev/null +++ b/packages/kbn-securitysolution-lists-common/scripts/openapi_bundle_info/lists_serverless.info.yaml @@ -0,0 +1,49 @@ +openapi: 3.0.3 +info: + title: "Security Lists API (Elastic Cloud Serverless)" + description: "Lists API allows you to manage lists of keywords, IPs or IP ranges items." + +tags: + - name: "Security Lists API" + x-displayName: "Security lists" + description: | + Lists can be used with detection rule exceptions to define values that prevent a rule from generating alerts. + + Lists are made up of: + + * **List containers**: A container for values of the same Elasticsearch data type. The following data types can be used: + * `boolean` + * `byte` + * `date` + * `date_nanos` + * `date_range` + * `double` + * `double_range` + * `float` + * `float_range` + * `half_float` + * `integer` + * `integer_range` + * `ip` + * `ip_range` + * `keyword` + * `long` + * `long_range` + * `short` + * `text` + * **List items**: The values used to determine whether the exception prevents an alert from being generated. + + All list items in the same list container must be of the same data type, and each item defines a single value. For example, an IP list container named `internal-ip-addresses-southport` contains five items, where each item defines one internal IP address: + 1. `192.168.1.1` + 2. `192.168.1.3` + 3. `192.168.1.18` + 4. `192.168.1.12` + 5. `192.168.1.7` + + To use these IP addresses as values for defining rule exceptions, use the Security exceptions API to [create an exception list item](../operation/operation-createexceptionlistitem) that references the `internal-ip-addresses-southport` list. + > info + > Lists cannot be added directly to rules, nor do they define the operators used to determine when exceptions are applied (`is in list`, `is not in list`). Use an exception item to define the operator and associate it with an [exception container](../operation/operation-createexceptionlist). You can then add the exception container to a rule's `exceptions_list` object. + + ## Lists requirements + + Before you can start using lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. To do this, use the [Create list data streams](../operation/operation-createlistindex) endpoint. Once these data streams are created, your role needs privileges to manage rules. Refer to [Enable and access detections](https://www.elastic.co/guide/en/serverless/current/security-detections-requirements.html#enable-detections-ui) for a complete list of requirements. diff --git a/packages/kbn-server-route-repository-client/jest.config.js b/packages/kbn-server-route-repository-client/jest.config.js deleted file mode 100644 index 6e6a4071c05bb..0000000000000 --- a/packages/kbn-server-route-repository-client/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test/jest_node', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-server-route-repository-client'], -}; diff --git a/packages/kbn-server-route-repository-client/tsconfig.json b/packages/kbn-server-route-repository-client/tsconfig.json deleted file mode 100644 index e1ce8a6572b75..0000000000000 --- a/packages/kbn-server-route-repository-client/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/server-route-repository-utils", - "@kbn/core-lifecycle-browser", - "@kbn/core-http-browser", - "@kbn/sse-utils-client", - ] -} diff --git a/packages/kbn-server-route-repository-utils/jest.config.js b/packages/kbn-server-route-repository-utils/jest.config.js deleted file mode 100644 index 39bcfc131648c..0000000000000 --- a/packages/kbn-server-route-repository-utils/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-server-route-repository-utils'], -}; diff --git a/packages/kbn-server-route-repository-utils/tsconfig.json b/packages/kbn-server-route-repository-utils/tsconfig.json deleted file mode 100644 index 593d368856aa6..0000000000000 --- a/packages/kbn-server-route-repository-utils/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/core-http-server", - "@kbn/core", - "@kbn/zod", - "@kbn/core-http-browser", - "@kbn/sse-utils", - ] -} diff --git a/packages/kbn-server-route-repository/jest.config.js b/packages/kbn-server-route-repository/jest.config.js deleted file mode 100644 index 0c749ba792012..0000000000000 --- a/packages/kbn-server-route-repository/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-server-route-repository'], -}; diff --git a/packages/kbn-server-route-repository/tsconfig.json b/packages/kbn-server-route-repository/tsconfig.json deleted file mode 100644 index 0e11a0f095897..0000000000000 --- a/packages/kbn-server-route-repository/tsconfig.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ], - "noUnusedLocals": false - }, - "include": [ - "**/*.ts" - ], - "kbn_references": [ - "@kbn/io-ts-utils", - "@kbn/core-http-request-handler-context-server", - "@kbn/core-http-server", - "@kbn/core-lifecycle-server", - "@kbn/logging", - "@kbn/core", - "@kbn/logging-mocks", - "@kbn/server-route-repository-utils", - "@kbn/zod", - "@kbn/sse-utils-server", - "@kbn/sse-utils", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/packages/kbn-sse-utils-client/jest.config.js b/packages/kbn-sse-utils-client/jest.config.js deleted file mode 100644 index 29aa22cc6dc30..0000000000000 --- a/packages/kbn-sse-utils-client/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-sse-utils-client'], -}; diff --git a/packages/kbn-sse-utils-client/tsconfig.json b/packages/kbn-sse-utils-client/tsconfig.json deleted file mode 100644 index fa695dc1d0f59..0000000000000 --- a/packages/kbn-sse-utils-client/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/sse-utils", - ] -} diff --git a/packages/kbn-sse-utils-server/jest.config.js b/packages/kbn-sse-utils-server/jest.config.js deleted file mode 100644 index a2fe0d9caa7d3..0000000000000 --- a/packages/kbn-sse-utils-server/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test/jest_node', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-sse-utils-server'], -}; diff --git a/packages/kbn-sse-utils-server/kibana.jsonc b/packages/kbn-sse-utils-server/kibana.jsonc deleted file mode 100644 index 8c533af1953e9..0000000000000 --- a/packages/kbn-sse-utils-server/kibana.jsonc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "shared-common", - "id": "@kbn/sse-utils-server", - "owner": [ - "@elastic/obs-knowledge-team" - ], - "group": "platform", - "visibility": "private" -} \ No newline at end of file diff --git a/packages/kbn-sse-utils-server/src/observable_into_event_source_stream.ts b/packages/kbn-sse-utils-server/src/observable_into_event_source_stream.ts deleted file mode 100644 index e0d653e44dabc..0000000000000 --- a/packages/kbn-sse-utils-server/src/observable_into_event_source_stream.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { map, Observable } from 'rxjs'; -import { PassThrough } from 'stream'; -import { ServerSentEvent } from '@kbn/sse-utils'; - -export function observableIntoEventSourceStream(source$: Observable<ServerSentEvent>): PassThrough { - const withSerializedEvents$ = source$.pipe( - map((event) => { - const { type, ...rest } = event; - return `event: ${type}\ndata: ${JSON.stringify(rest)}\n\n`; - }) - ); - - const stream = new PassThrough(); - - withSerializedEvents$.subscribe({ - next: (line) => { - stream.write(line); - }, - complete: () => { - stream.end(); - }, - error: (error) => { - stream.write(`event: error\ndata: ${JSON.stringify(error)}\n\n`); - stream.end(); - }, - }); - - return stream; -} diff --git a/packages/kbn-sse-utils-server/tsconfig.json b/packages/kbn-sse-utils-server/tsconfig.json deleted file mode 100644 index 9053749c5898b..0000000000000 --- a/packages/kbn-sse-utils-server/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/sse-utils", - ] -} diff --git a/packages/kbn-sse-utils/README.md b/packages/kbn-sse-utils/README.md deleted file mode 100644 index ad6dbf8b67c00..0000000000000 --- a/packages/kbn-sse-utils/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# @kbn/sse-utils - -This package exports utility functions that can be used to format and parse server-sent events(SSE). SSE is useful when streaming data back to the browser as part of a long-running process, such as LLM-based inference. It can convert an Observable that emits values of type `ServerSentEvent` into a response stream on the server, emitting lines in an SSE-compatible format, and it can convert an SSE response stream back into deserialized event. - -## Server - -On the server, you can use `observableIntoEventSourceStream` to convert an Observable that emits `ServerSentEvent` values into a Node.js response stream: - -```ts -import { observableIntoEventSourceStream } from '@kbn/sse-utils-server'; - -function myRequestHandler( - context: RequestHandlerContext, - request: KibanaRequest, - response: KibanaResponseFactory -) { - return response.ok({ - body: observableIntoEventSourceStream( - of({ - type: 'my_event_type', - data: { - anyData: {}, - }, - }) - ), - }); -} -``` - -All emitted values have to be of `ServerSentEvent` type: - -```ts -type ServerSentEvent = { - type: string; - data: Record<string, any>; -}; -``` - -Any error that occurs in the Observable is written to the stream as an event, and the stream is closed. - -## Client - -On the client, you can use `http `@elastic/core-http-browser` to convert the stream of events back into an Observable: - -```ts -import { httpResponseIntoObservable } from '@kbn/sse-utils-client'; -function streamEvents(http: Http) { - from( - http.post('/internal/my_event_stream', { - asResponse: true, - rawResponse: true, - }) - ).pipe(httpResponseIntoObservable()); -} -``` - -Any serialized error events from the stream are de-serialized, and thrown as an error in the Observable. diff --git a/packages/kbn-sse-utils/jest.config.js b/packages/kbn-sse-utils/jest.config.js deleted file mode 100644 index 73de8aa4d38bb..0000000000000 --- a/packages/kbn-sse-utils/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test/jest_node', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-sse-utils'], -}; diff --git a/packages/kbn-sse-utils/tsconfig.json b/packages/kbn-sse-utils/tsconfig.json deleted file mode 100644 index b38926e5f25ba..0000000000000 --- a/packages/kbn-sse-utils/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - ] -} diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/scout_ftr_reporter.ts b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/scout_ftr_reporter.ts index 23766e8784df0..8ded1efba8a99 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/scout_ftr_reporter.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/scout_ftr_reporter.ts @@ -19,9 +19,9 @@ import { datasources, } from '@kbn/scout-reporting'; import { - getCodeOwnersForFile, - getPathsWithOwnersReversed, - type PathWithOwners, + getOwningTeamsForPath, + getCodeOwnersEntries, + type CodeOwnersEntry, } from '@kbn/code-owners'; import { Runner, Test } from '../../../fake_mocha_types'; @@ -41,7 +41,7 @@ export class ScoutFTRReporter { readonly name: string; readonly runId: string; private report: ScoutReport; - private readonly pathsWithOwners: PathWithOwners[]; + private readonly codeOwnersEntries: CodeOwnersEntry[]; constructor(private runner: Runner, private reporterOptions: ScoutFTRReporterOptions = {}) { this.log = new ToolingLog({ @@ -54,7 +54,7 @@ export class ScoutFTRReporter { this.log.info(`Scout test run ID: ${this.runId}`); this.report = new ScoutReport(this.log); - this.pathsWithOwners = getPathsWithOwnersReversed(); + this.codeOwnersEntries = getCodeOwnersEntries(); // Register event listeners for (const [eventName, listener] of Object.entries({ @@ -68,16 +68,7 @@ export class ScoutFTRReporter { } private getFileOwners(filePath: string): string[] { - const concatenatedOwners = getCodeOwnersForFile(filePath, this.pathsWithOwners)?.teams; - - if (concatenatedOwners === undefined) { - return []; - } - - return concatenatedOwners - .replace(/#.+$/, '') - .split(',') - .filter((value) => value.length > 0); + return getOwningTeamsForPath(filePath, this.codeOwnersEntries); } /** diff --git a/packages/kbn-test/src/functional_test_runner/run_check_ftr_code_owners.ts b/packages/kbn-test/src/functional_test_runner/run_check_ftr_code_owners.ts index 17bab9a44a44c..8a1ec50bd1a3e 100644 --- a/packages/kbn-test/src/functional_test_runner/run_check_ftr_code_owners.ts +++ b/packages/kbn-test/src/functional_test_runner/run_check_ftr_code_owners.ts @@ -10,11 +10,7 @@ import { run } from '@kbn/dev-cli-runner'; import { createFailError } from '@kbn/dev-cli-errors'; import { getRepoFiles } from '@kbn/get-repo-files'; -import { - getCodeOwnersForFile, - getPathsWithOwnersReversed, - type CodeOwnership, -} from '@kbn/code-owners'; +import { getOwningTeamsForPath, getCodeOwnersEntries } from '@kbn/code-owners'; const TEST_DIRECTORIES = ['test', 'x-pack/test', 'x-pack/test_serverless']; @@ -36,15 +32,22 @@ export async function runCheckFtrCodeOwnersCli() { const missingOwners = new Set<string>(); // cache codeowners for quicker lookup - const reversedCodeowners = getPathsWithOwnersReversed(); + log.info('Reading CODEOWNERS file'); + const codeOwnersEntries = getCodeOwnersEntries(); const testFiles = await getRepoFiles(TEST_DIRECTORIES); + log.info(`Checking ownership for ${testFiles.length} test files (this will take a while)`); + for (const { repoRel } of testFiles) { - const owners: CodeOwnership = getCodeOwnersForFile(repoRel, reversedCodeowners); - if (owners === undefined || owners.teams === '') missingOwners.add(repoRel); + const owners = getOwningTeamsForPath(repoRel, codeOwnersEntries); + + if (owners.length === 0) { + missingOwners.add(repoRel); + } } const timeSpent = fmtMs(performance.now() - start); + log.info(`Ownership check complete (took ${timeSpent})`); if (missingOwners.size) { log.error( @@ -55,9 +58,7 @@ export async function runCheckFtrCodeOwnersCli() { ); } - log.success( - `All test files have a code owner (checked ${testFiles.length} test files in ${timeSpent})` - ); + log.success(`All test files have a code owner. 🥳`); }, { description: 'Check that all test files are covered by GitHub CODEOWNERS', diff --git a/packages/kbn-test/src/mocha/junit_report_generation.js b/packages/kbn-test/src/mocha/junit_report_generation.js index 2dfa0cdbfa3c0..976cbfb7540d3 100644 --- a/packages/kbn-test/src/mocha/junit_report_generation.js +++ b/packages/kbn-test/src/mocha/junit_report_generation.js @@ -8,7 +8,7 @@ */ import { REPO_ROOT } from '@kbn/repo-info'; -import { getCodeOwnersForFile, getPathsWithOwnersReversed } from '@kbn/code-owners'; +import { getOwningTeamsForPath, getCodeOwnersEntries } from '@kbn/code-owners'; import { dirname, relative } from 'path'; import { writeFileSync, mkdirSync } from 'fs'; import { inspect } from 'util'; @@ -94,10 +94,10 @@ export function setupJUnitReportGeneration(runner, options = {}) { .filter((node) => node.pending || !results.find((result) => result.node === node)) .map((node) => ({ skipped: true, node })); - // cache codeowners for quicker lookup - let reversedCodeowners = []; + // cache codeowner entries for quicker lookup + let codeOwnersEntries = []; try { - reversedCodeowners = getPathsWithOwnersReversed(); + codeOwnersEntries = getCodeOwnersEntries(); } catch { /* no-op */ } @@ -143,8 +143,8 @@ export function setupJUnitReportGeneration(runner, options = {}) { if (failed) { const testCaseRelativePath = getPath(node); - const owners = getCodeOwnersForFile(testCaseRelativePath, reversedCodeowners); - attrs.owners = owners?.teams || ''; // empty string when no codeowners are defined + // Comma-separated list of owners. Empty string if no owners are found. + attrs.owners = getOwningTeamsForPath(testCaseRelativePath, codeOwnersEntries).join(','); } return testsuitesEl.ele('testcase', attrs); diff --git a/packages/kbn-timerange/BUILD.bazel b/packages/kbn-timerange/BUILD.bazel new file mode 100644 index 0000000000000..0e0f44f87be10 --- /dev/null +++ b/packages/kbn-timerange/BUILD.bazel @@ -0,0 +1,28 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") + +SRCS = glob( + [ + "**/*.ts", + "**/*.js", + ], + exclude = [ + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__/**", + "**/integration_tests/**", + "**/mocks/**", + "**/scripts/**", + "**/storybook/**", + "**/test_fixtures/**", + "**/test_helpers/**", + ], +) + +js_library( + name = "kbn-timerange", + package_name = "@kbn/timerange", + srcs = ["package.json"] + SRCS, + visibility = ["//visibility:public"], +) \ No newline at end of file diff --git a/packages/kbn-timerange/index.ts b/packages/kbn-timerange/index.ts index c2f833d365f1c..5c67f5cdd0a26 100644 --- a/packages/kbn-timerange/index.ts +++ b/packages/kbn-timerange/index.ts @@ -7,4 +7,9 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export { getDateRange, getDateISORange } from './src'; +export { + getDateRange, + getDateISORange, + getOffsetFromNowInSeconds, + getTimeDifferenceInSeconds, +} from './src'; diff --git a/packages/kbn-timerange/kibana.jsonc b/packages/kbn-timerange/kibana.jsonc index dc2e47f2a9c6c..5d6db9d12ce97 100644 --- a/packages/kbn-timerange/kibana.jsonc +++ b/packages/kbn-timerange/kibana.jsonc @@ -1,9 +1,7 @@ { "type": "shared-common", "id": "@kbn/timerange", - "owner": [ - "@elastic/obs-ux-logs-team" - ], - "group": "observability", - "visibility": "private" -} \ No newline at end of file + "owner": ["@elastic/obs-ux-logs-team"], + "group": "platform", + "visibility": "shared" +} diff --git a/packages/kbn-timerange/src/index.ts b/packages/kbn-timerange/src/index.ts index 2eec98496193d..bc7a8522bd5c5 100644 --- a/packages/kbn-timerange/src/index.ts +++ b/packages/kbn-timerange/src/index.ts @@ -52,3 +52,24 @@ export function getDateISORange({ from, to }: { from: string; to: string }) { endDate, }; } + +export function getTimeDifferenceInSeconds({ + startDate, + endDate, +}: { + startDate: number; + endDate: number; +}): number { + if (!startDate || !endDate || startDate > endDate) { + throw new Error(`Invalid Dates: from: ${startDate}, to: ${endDate}`); + } + + const rangeInSeconds = (endDate - startDate) / 1000; + return Math.round(rangeInSeconds); +} + +export function getOffsetFromNowInSeconds(epochDate: number) { + const now = Date.now(); + + return Math.round((epochDate - now) / 1000); +} diff --git a/packages/kbn-typed-react-router-config/jest.config.js b/packages/kbn-typed-react-router-config/jest.config.js deleted file mode 100644 index 0b2d32b78bf87..0000000000000 --- a/packages/kbn-typed-react-router-config/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-typed-react-router-config'], -}; diff --git a/packages/kbn-typed-react-router-config/tsconfig.json b/packages/kbn-typed-react-router-config/tsconfig.json deleted file mode 100644 index f9a133f48e8d5..0000000000000 --- a/packages/kbn-typed-react-router-config/tsconfig.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "isolatedModules": true, - "outDir": "target/types", - "types": [ - "node", - "jest" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "kbn_references": [ - "@kbn/io-ts-utils", - "@kbn/shared-ux-router", - "@kbn/core", - "@kbn/i18n", - "@kbn/kibana-react-plugin", - "@kbn/core-chrome-browser", - "@kbn/serverless" - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/packages/kbn-unsaved-changes-prompt/jest.config.js b/packages/kbn-unsaved-changes-prompt/jest.config.js deleted file mode 100644 index 06d30fc1271e0..0000000000000 --- a/packages/kbn-unsaved-changes-prompt/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['<rootDir>/packages/kbn-unsaved-changes-prompt'], -}; diff --git a/packages/kbn-unsaved-changes-prompt/tsconfig.json b/packages/kbn-unsaved-changes-prompt/tsconfig.json deleted file mode 100644 index a8d349af93f84..0000000000000 --- a/packages/kbn-unsaved-changes-prompt/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": ["*.ts", "src/**/*"], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/core" - ] -} diff --git a/packages/kbn-visualization-ui-components/components/color_picker.tsx b/packages/kbn-visualization-ui-components/components/color_picker.tsx index 589066726300e..e3ca47e63e65f 100644 --- a/packages/kbn-visualization-ui-components/components/color_picker.tsx +++ b/packages/kbn-visualization-ui-components/components/color_picker.tsx @@ -10,14 +10,7 @@ import React, { useEffect, useRef, useState } from 'react'; import { i18n } from '@kbn/i18n'; import { TooltipWrapper } from '@kbn/visualization-utils'; -import { - EuiFormRow, - EuiColorPicker, - EuiColorPickerProps, - EuiToolTip, - EuiIcon, - euiPaletteColorBlind, -} from '@elastic/eui'; +import { EuiFormRow, EuiColorPicker, EuiColorPickerProps, EuiToolTip, EuiIcon } from '@elastic/eui'; import { getColorAlpha, makeColorWithAlpha } from '@kbn/coloring'; const tooltipContent = { @@ -38,6 +31,7 @@ export interface ColorPickerProps { disableHelpTooltip?: boolean; disabledMessage?: string; showAlpha?: boolean; + swatches: string[]; } export const ColorPicker = ({ @@ -49,6 +43,7 @@ export const ColorPicker = ({ disableHelpTooltip, disabledMessage, showAlpha, + swatches, }: ColorPickerProps) => { const [colorText, setColorText] = useState(overwriteColor || defaultColor); const [validatedColor, setValidatedColor] = useState(overwriteColor || defaultColor); @@ -112,8 +107,8 @@ export const ColorPicker = ({ showAlpha={showAlpha} swatches={ currentColorAlpha === 1 - ? euiPaletteColorBlind() - : euiPaletteColorBlind().map((c) => makeColorWithAlpha(c, currentColorAlpha).hex()) + ? swatches + : swatches.map((c) => makeColorWithAlpha(c, currentColorAlpha).hex()) } /> ); diff --git a/packages/presentation/presentation_containers/interfaces/serialized_state.ts b/packages/presentation/presentation_containers/interfaces/serialized_state.ts index 21011d46b2402..0368bd751ce78 100644 --- a/packages/presentation/presentation_containers/interfaces/serialized_state.ts +++ b/packages/presentation/presentation_containers/interfaces/serialized_state.ts @@ -8,7 +8,6 @@ */ import type { Reference } from '@kbn/content-management-utils'; -import type { MaybePromise } from '@kbn/utility-types'; /** * A package containing the serialized Embeddable state, with references extracted. When saving Embeddables using any @@ -24,7 +23,7 @@ export interface HasSerializableState<State extends object = object> { * Serializes all state into a format that can be saved into * some external store. The opposite of `deserialize` in the {@link ReactEmbeddableFactory} */ - serializeState: () => MaybePromise<SerializedPanelState<State>>; + serializeState: () => SerializedPanelState<State>; } export const apiHasSerializableState = (api: unknown | null): api is HasSerializableState => { diff --git a/packages/presentation/presentation_containers/tsconfig.json b/packages/presentation/presentation_containers/tsconfig.json index 15fe397861700..8e25a7b80c6e2 100644 --- a/packages/presentation/presentation_containers/tsconfig.json +++ b/packages/presentation/presentation_containers/tsconfig.json @@ -10,6 +10,5 @@ "@kbn/presentation-publishing", "@kbn/core-mount-utils-browser", "@kbn/content-management-utils", - "@kbn/utility-types", ] } diff --git a/packages/presentation/presentation_publishing/interfaces/fetch/publishes_unified_search.ts b/packages/presentation/presentation_publishing/interfaces/fetch/publishes_unified_search.ts index aec8c33715c0f..08a21f16ca5e9 100644 --- a/packages/presentation/presentation_publishing/interfaces/fetch/publishes_unified_search.ts +++ b/packages/presentation/presentation_publishing/interfaces/fetch/publishes_unified_search.ts @@ -7,7 +7,15 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { AggregateQuery, Filter, Query, TimeRange } from '@kbn/es-query'; +import { + AggregateQuery, + COMPARE_ALL_OPTIONS, + Filter, + Query, + TimeRange, + onlyDisabledFiltersChanged, +} from '@kbn/es-query'; +import fastIsEqual from 'fast-deep-equal'; import { useEffect, useMemo } from 'react'; import { BehaviorSubject } from 'rxjs'; import { PublishingSubject } from '../../publishing_subject'; @@ -113,15 +121,27 @@ export function useSearchApi({ }, []); useEffect(() => { - searchApi.filters$.next(filters); + if ( + !onlyDisabledFiltersChanged(searchApi.filters$.getValue(), filters, { + ...COMPARE_ALL_OPTIONS, + // do not compare $state to avoid refreshing when filter is pinned/unpinned (which does not impact results) + state: false, + }) + ) { + searchApi.filters$.next(filters); + } }, [filters, searchApi.filters$]); useEffect(() => { - searchApi.query$.next(query); + if (!fastIsEqual(searchApi.query$.getValue(), query)) { + searchApi.query$.next(query); + } }, [query, searchApi.query$]); useEffect(() => { - searchApi.timeRange$.next(timeRange); + if (!fastIsEqual(searchApi.timeRange$.getValue(), timeRange)) { + searchApi.timeRange$.next(timeRange); + } }, [timeRange, searchApi.timeRange$]); return searchApi; diff --git a/packages/react/kibana_context/common/tsconfig.json b/packages/react/kibana_context/common/tsconfig.json index 0d78dace105e1..994137ade7df2 100644 --- a/packages/react/kibana_context/common/tsconfig.json +++ b/packages/react/kibana_context/common/tsconfig.json @@ -13,5 +13,6 @@ "exclude": [ "target/**/*" ], - "kbn_references": [] + "kbn_references": [ + ] } diff --git a/packages/react/kibana_context/common/types.ts b/packages/react/kibana_context/common/types.ts index 05e7ab7a0c7d5..e6c15e3cb391f 100644 --- a/packages/react/kibana_context/common/types.ts +++ b/packages/react/kibana_context/common/types.ts @@ -35,4 +35,5 @@ export interface KibanaTheme { */ export interface ThemeServiceStart { theme$: Observable<KibanaTheme>; + getTheme?(): KibanaTheme; } diff --git a/packages/react/kibana_context/root/eui_provider.tsx b/packages/react/kibana_context/root/eui_provider.tsx index fa1d92e897800..9b089829a347b 100644 --- a/packages/react/kibana_context/root/eui_provider.tsx +++ b/packages/react/kibana_context/root/eui_provider.tsx @@ -65,16 +65,22 @@ const cache = { default: emotionCache, global: globalCache, utility: utilitiesCa * should not be used. Instead, refer to `KibanaRootContextProvider` to set up the root of Kibana. */ export const KibanaEuiProvider: FC<PropsWithChildren<KibanaEuiProviderProps>> = ({ - theme: { theme$ }, + theme, globalStyles: globalStylesProp, colorMode: colorModeProp, modify, children, }) => { - const kibanaTheme = useObservable(theme$, defaultTheme); + const { theme$ } = theme; + + // use the selected theme if available before using the defaultTheme; this ensures that + // Kibana loads with the currently selected theme without additional updates from default to selected + const initialTheme = theme.getTheme?.() ?? defaultTheme; + + const kibanaTheme = useObservable(theme$, initialTheme); const themeColorMode = useMemo(() => getColorMode(kibanaTheme), [kibanaTheme]); - const theme = useMemo(() => { + const _theme = useMemo(() => { const config = getThemeConfigByName(kibanaTheme.name) || DEFAULT_THEME_CONFIG; return config.euiTheme; }, [kibanaTheme.name]); @@ -95,7 +101,7 @@ export const KibanaEuiProvider: FC<PropsWithChildren<KibanaEuiProviderProps>> = colorMode, globalStyles, utilityClasses: globalStyles, - theme, + theme: _theme, }} > {children} diff --git a/packages/response-ops/rule_form/src/create_rule_form.tsx b/packages/response-ops/rule_form/src/create_rule_form.tsx index d7ba545935495..2f5e0472dcd50 100644 --- a/packages/response-ops/rule_form/src/create_rule_form.tsx +++ b/packages/response-ops/rule_form/src/create_rule_form.tsx @@ -64,7 +64,7 @@ export const CreateRuleForm = (props: CreateRuleFormProps) => { onSubmit, } = props; - const { http, docLinks, notifications, ruleTypeRegistry, i18n, theme } = plugins; + const { http, docLinks, notifications, ruleTypeRegistry, ...deps } = plugins; const { toasts } = notifications; const { mutate, isLoading: isSaving } = useCreateRule({ @@ -82,7 +82,7 @@ export const CreateRuleForm = (props: CreateRuleFormProps) => { ...(message.details && { text: toMountPoint( <RuleFormCircuitBreakerError>{message.details}</RuleFormCircuitBreakerError>, - { i18n, theme } + deps ), }), }); diff --git a/packages/response-ops/rule_form/src/edit_rule_form.tsx b/packages/response-ops/rule_form/src/edit_rule_form.tsx index 7350a42475b69..392447114edd4 100644 --- a/packages/response-ops/rule_form/src/edit_rule_form.tsx +++ b/packages/response-ops/rule_form/src/edit_rule_form.tsx @@ -45,7 +45,7 @@ export const EditRuleForm = (props: EditRuleFormProps) => { onCancel, onSubmit, } = props; - const { http, notifications, docLinks, ruleTypeRegistry, i18n, theme, application } = plugins; + const { http, notifications, docLinks, ruleTypeRegistry, application, ...deps } = plugins; const { toasts } = notifications; const { mutate, isLoading: isSaving } = useUpdateRule({ @@ -63,7 +63,7 @@ export const EditRuleForm = (props: EditRuleFormProps) => { ...(message.details && { text: toMountPoint( <RuleFormCircuitBreakerError>{message.details}</RuleFormCircuitBreakerError>, - { i18n, theme } + deps ), }), }); diff --git a/packages/response-ops/rule_form/src/rule_form.tsx b/packages/response-ops/rule_form/src/rule_form.tsx index c09add5ae1c06..f34f811a7b488 100644 --- a/packages/response-ops/rule_form/src/rule_form.tsx +++ b/packages/response-ops/rule_form/src/rule_form.tsx @@ -28,13 +28,46 @@ export interface RuleFormProps { } export const RuleForm = (props: RuleFormProps) => { - const { plugins, onCancel, onSubmit } = props; + const { plugins: _plugins, onCancel, onSubmit } = props; const { id, ruleTypeId } = useParams<{ id?: string; ruleTypeId?: string; }>(); + const { + http, + i18n, + theme, + userProfile, + application, + notifications, + charts, + settings, + data, + dataViews, + unifiedSearch, + docLinks, + ruleTypeRegistry, + actionTypeRegistry, + } = _plugins; + const ruleFormComponent = useMemo(() => { + const plugins = { + http, + i18n, + theme, + userProfile, + application, + notifications, + charts, + settings, + data, + dataViews, + unifiedSearch, + docLinks, + ruleTypeRegistry, + actionTypeRegistry, + }; if (id) { return <EditRuleForm id={id} plugins={plugins} onCancel={onCancel} onSubmit={onSubmit} />; } @@ -60,7 +93,26 @@ export const RuleForm = (props: RuleFormProps) => { } /> ); - }, [id, ruleTypeId, plugins, onCancel, onSubmit]); + }, [ + http, + i18n, + theme, + userProfile, + application, + notifications, + charts, + settings, + data, + dataViews, + unifiedSearch, + docLinks, + ruleTypeRegistry, + actionTypeRegistry, + id, + ruleTypeId, + onCancel, + onSubmit, + ]); return <QueryClientProvider client={queryClient}>{ruleFormComponent}</QueryClientProvider>; }; diff --git a/packages/response-ops/rule_form/src/types.ts b/packages/response-ops/rule_form/src/types.ts index 48ba6952b47f8..07f34e4c59026 100644 --- a/packages/response-ops/rule_form/src/types.ts +++ b/packages/response-ops/rule_form/src/types.ts @@ -16,6 +16,7 @@ import type { HttpStart } from '@kbn/core-http-browser'; import type { I18nStart } from '@kbn/core-i18n-browser'; import type { NotificationsStart } from '@kbn/core-notifications-browser'; import type { ThemeServiceStart } from '@kbn/core-theme-browser'; +import type { UserProfileService } from '@kbn/core-user-profile-browser'; import type { SettingsStart } from '@kbn/core-ui-settings-browser'; import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; @@ -54,6 +55,7 @@ export interface RuleFormPlugins { http: HttpStart; i18n: I18nStart; theme: ThemeServiceStart; + userProfile: UserProfileService; application: ApplicationStart; notifications: NotificationsStart; charts: ChartsPluginSetup; diff --git a/packages/response-ops/rule_form/tsconfig.json b/packages/response-ops/rule_form/tsconfig.json index 3f39fc766bd10..cea1478df1ef8 100644 --- a/packages/response-ops/rule_form/tsconfig.json +++ b/packages/response-ops/rule_form/tsconfig.json @@ -39,5 +39,6 @@ "@kbn/kibana-react-plugin", "@kbn/core-i18n-browser", "@kbn/core-theme-browser", + "@kbn/core-user-profile-browser", ] } diff --git a/packages/shared-ux/button_toolbar/kibana.jsonc b/packages/shared-ux/button_toolbar/kibana.jsonc index 1a61c5ffc3d4d..909aeb3209de9 100644 --- a/packages/shared-ux/button_toolbar/kibana.jsonc +++ b/packages/shared-ux/button_toolbar/kibana.jsonc @@ -1,9 +1,9 @@ { - "type": "shared-common", + "type": "shared-browser", "id": "@kbn/shared-ux-button-toolbar", "owner": [ "@elastic/appex-sharedux" ], "group": "platform", "visibility": "shared" -} \ No newline at end of file +} diff --git a/packages/shared-ux/button_toolbar/src/buttons/toolbar_button/toolbar_button.styles.ts b/packages/shared-ux/button_toolbar/src/buttons/toolbar_button/toolbar_button.styles.ts index a5bb105424351..b70993ed8b02e 100644 --- a/packages/shared-ux/button_toolbar/src/buttons/toolbar_button/toolbar_button.styles.ts +++ b/packages/shared-ux/button_toolbar/src/buttons/toolbar_button/toolbar_button.styles.ts @@ -24,9 +24,9 @@ export const ToolbarButtonStyles = ({ euiTheme }: UseEuiTheme) => { borderColor: euiTheme.border.color, }, emptyButton: { - backgroundColor: euiTheme.colors.emptyShade, + backgroundColor: euiTheme.colors.backgroundBasePlain, border: `${euiTheme.border.thin}`, - color: `${euiTheme.colors.text}`, + color: `${euiTheme.colors.textParagraph}`, }, buttonPositions: { left: { diff --git a/packages/shared-ux/chrome/navigation/src/ui/components/panel/label_badge.tsx b/packages/shared-ux/chrome/navigation/src/ui/components/panel/label_badge.tsx index 8ea6fc9718125..ceff96fde7ed6 100644 --- a/packages/shared-ux/chrome/navigation/src/ui/components/panel/label_badge.tsx +++ b/packages/shared-ux/chrome/navigation/src/ui/components/panel/label_badge.tsx @@ -25,14 +25,13 @@ export const LabelBadge = ({ className?: string; }) => { const { euiTheme } = useEuiTheme(); - return ( <EuiBetaBadge label={text} size="s" css={css` margin-left: ${euiTheme.size.s}; - color: ${euiTheme.colors.text}; + color: ${euiTheme.colors.textParagraph}; vertical-align: middle; margin-bottom: ${euiTheme.size.xxs}; `} diff --git a/packages/shared-ux/code_editor/impl/placeholder_widget.ts b/packages/shared-ux/code_editor/impl/placeholder_widget.ts index 67a70af58ea1c..cf74087af115d 100644 --- a/packages/shared-ux/code_editor/impl/placeholder_widget.ts +++ b/packages/shared-ux/code_editor/impl/placeholder_widget.ts @@ -31,7 +31,7 @@ export class PlaceholderWidget implements monaco.editor.IContentWidget { const domNode = document.createElement('div'); domNode.innerText = this.placeholderText; domNode.className = css` - color: ${this.euiTheme.colors.subduedText}; + color: ${this.euiTheme.colors.textSubdued}; width: max-content; pointer-events: none; `; diff --git a/packages/shared-ux/file/file_picker/impl/kibana.jsonc b/packages/shared-ux/file/file_picker/impl/kibana.jsonc index 9d7bc72bb634d..e812b97c9a086 100644 --- a/packages/shared-ux/file/file_picker/impl/kibana.jsonc +++ b/packages/shared-ux/file/file_picker/impl/kibana.jsonc @@ -1,9 +1,9 @@ { - "type": "shared-common", + "type": "shared-browser", "id": "@kbn/shared-ux-file-picker", "owner": [ "@elastic/appex-sharedux" ], "group": "platform", "visibility": "shared" -} \ No newline at end of file +} diff --git a/packages/shared-ux/file/file_upload/impl/kibana.jsonc b/packages/shared-ux/file/file_upload/impl/kibana.jsonc index ed5b6366e2a73..406982d80f1d4 100644 --- a/packages/shared-ux/file/file_upload/impl/kibana.jsonc +++ b/packages/shared-ux/file/file_upload/impl/kibana.jsonc @@ -1,9 +1,9 @@ { - "type": "shared-common", + "type": "shared-browser", "id": "@kbn/shared-ux-file-upload", "owner": [ "@elastic/appex-sharedux" ], "group": "platform", "visibility": "shared" -} \ No newline at end of file +} diff --git a/packages/shared-ux/file/file_upload/impl/src/components/cancel_button.tsx b/packages/shared-ux/file/file_upload/impl/src/components/cancel_button.tsx index 5a2ae29e9fe33..9c34aa1bc59ba 100644 --- a/packages/shared-ux/file/file_upload/impl/src/components/cancel_button.tsx +++ b/packages/shared-ux/file/file_upload/impl/src/components/cancel_button.tsx @@ -34,12 +34,13 @@ export const CancelButton: FunctionComponent<Props> = ({ onClick, compressed }) /> ) : ( <EuiButton + color="danger" + fill={true} key="cancelButton" size="s" data-test-subj="cancelButton" disabled={disabled} onClick={onClick} - color="danger" > {i18nTexts.cancel} </EuiButton> diff --git a/packages/shared-ux/file/file_upload/impl/src/components/upload_button.tsx b/packages/shared-ux/file/file_upload/impl/src/components/upload_button.tsx index ba712fefff537..447f6acfdcdaf 100644 --- a/packages/shared-ux/file/file_upload/impl/src/components/upload_button.tsx +++ b/packages/shared-ux/file/file_upload/impl/src/components/upload_button.tsx @@ -30,6 +30,7 @@ export const UploadButton: FunctionComponent<Props> = ({ onClick }) => { key="uploadButton" isLoading={uploading} color={done ? 'success' : 'primary'} + fill={true} iconType={done ? 'checkInCircleFilled' : undefined} disabled={Boolean(!files.length || error || done)} onClick={onClick} diff --git a/packages/shared-ux/file/file_upload/impl/src/file_upload.component.tsx b/packages/shared-ux/file/file_upload/impl/src/file_upload.component.tsx index 0cff9a248d135..d79bd18dc7516 100644 --- a/packages/shared-ux/file/file_upload/impl/src/file_upload.component.tsx +++ b/packages/shared-ux/file/file_upload/impl/src/file_upload.component.tsx @@ -7,27 +7,30 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import { css } from '@emotion/react'; import React from 'react'; +import useObservable from 'react-use/lib/useObservable'; + import { - EuiText, - EuiSpacer, - EuiFlexItem, - EuiFlexGroup, EuiFilePicker, + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiText, useEuiTheme, useGeneratedHtmlId, + mathWithUnits, } from '@elastic/eui'; import type { EuiFilePickerClass, EuiFilePickerProps, } from '@elastic/eui/src/components/form/file_picker/file_picker'; -import { euiThemeVars } from '@kbn/ui-theme'; + import { useBehaviorSubject } from '@kbn/shared-ux-file-util'; -import { css } from '@emotion/react'; -import useObservable from 'react-use/lib/useObservable'; -import { i18nTexts } from './i18n_texts'; -import { ControlButton, ClearButton } from './components'; + +import { ClearButton, ControlButton } from './components'; import { useUploadState } from './context'; +import { i18nTexts } from './i18n_texts'; export interface Props { meta?: unknown; @@ -41,8 +44,6 @@ export interface Props { className?: string; } -const { euiFormMaxWidth, euiButtonHeightSmall } = euiThemeVars; - const styles = { horizontalContainer: css` display: flex; @@ -79,12 +80,15 @@ export const FileUpload = React.forwardRef<EuiFilePickerClass, Props>( const id = useGeneratedHtmlId({ prefix: 'filesFileUpload' }); const errorId = `${id}_error`; + // FIXME: add a token for this on euiTheme.components. https://github.com/elastic/eui/issues/8217 + const formMaxWidth = mathWithUnits(euiTheme.size.base, (x) => x * 25); + return ( <div data-test-subj="filesFileUpload" css={[ css` - max-width: ${fullWidth ? '100%' : euiFormMaxWidth}; + max-width: ${fullWidth ? '100%' : formMaxWidth}; `, fullWidth ? styles.fullWidth : undefined, compressed ? styles.horizontalContainer : undefined, @@ -143,7 +147,7 @@ export const FileUpload = React.forwardRef<EuiFilePickerClass, Props>( css={css` display: flex; align-items: center; - min-height: ${euiButtonHeightSmall}; + min-height: ${euiTheme.size.xl}; `} size="s" color="danger" diff --git a/packages/shared-ux/file/file_upload/impl/tsconfig.json b/packages/shared-ux/file/file_upload/impl/tsconfig.json index 81d7704f03f7b..7fbdf2f04dc6f 100644 --- a/packages/shared-ux/file/file_upload/impl/tsconfig.json +++ b/packages/shared-ux/file/file_upload/impl/tsconfig.json @@ -15,7 +15,6 @@ ], "kbn_references": [ "@kbn/i18n", - "@kbn/ui-theme", "@kbn/shared-ux-file-context", "@kbn/shared-ux-file-util", "@kbn/shared-ux-file-types", diff --git a/renovate.json b/renovate.json index 7903b41f290d3..e28b7eea6c6fe 100644 --- a/renovate.json +++ b/renovate.json @@ -260,6 +260,27 @@ ], "enabled": true }, + { + "groupName": "@elastic/ml-ui dependencies", + "matchDepNames": [ + "@types/he", + "he", + "react-popper-tooltip" + ], + "reviewers": [ + "team:ml-ui" + ], + "matchBaseBranches": [ + "main" + ], + "labels": [ + "Team:ML", + ":ml", + "release_note:skip", + "backport:all-open" + ], + "enabled": true + }, { "groupName": "@elastic/fleet dependencies", "matchDepNames": [ @@ -1246,12 +1267,57 @@ "minimumReleaseAge": "7 days", "enabled": true }, + { + "groupName": "json-stringify-pretty-compact", + "matchDepNames": [ + "json-stringify-pretty-compact" + ], + "reviewers": [ + "team:kibana-visualizations" + ], + "matchBaseBranches": [ + "main" + ], + "labels": [ + "Feature:Vega", + "Team:Visualizations", + "backport:all-open" + ], + "minimumReleaseAge": "7 days", + "enabled": true + }, + { + "groupName": "kibana-visualization color related modules", + "matchDepNames": [ + "chroma-js", + "color", + "tinycolor2", + "tinygradient", + "@types/chroma-js", + "@types/color" + ], + "reviewers": [ + "team:kibana-visualizations" + ], + "matchBaseBranches": [ + "main" + ], + "labels": [ + "Feature:Vega", + "Team:Visualizations", + "backport:all-open" + ], + "minimumReleaseAge": "7 days", + "enabled": true + }, { "groupName": "vega related modules", "matchDepNames": [ "vega", + "vega-interpreter", "vega-lite", "vega-schema-url-parser", + "vega-spec-injector", "vega-tooltip" ], "reviewers": [ @@ -1262,7 +1328,44 @@ ], "labels": [ "Feature:Vega", - "Team:Visualizations" + "Team:Visualizations", + "backport:all-open" + ], + "minimumReleaseAge": "7 days", + "enabled": true + }, + { + "groupName": "d3 modules", + "matchDepNames": [ + "@types/d3", + "@types/d3-array", + "@types/d3-brush", + "@types/d3-interpolate", + "@types/d3-scale", + "@types/d3-selection", + "@types/d3-shape", + "@types/d3-time", + "@types/d3-transition", + "d3", + "d3-array", + "d3-brush", + "d3-interpolate", + "d3-scale", + "d3-selection", + "d3-shape", + "d3-time", + "d3-transition" + ], + "reviewers": [ + "team:kibana-visualizations" + ], + "matchBaseBranches": [ + "main" + ], + "labels": [ + "Feature:Vega", + "Team:Visualizations", + "backport:all-open" ], "minimumReleaseAge": "7 days", "enabled": true @@ -2484,8 +2587,15 @@ }, { "groupName": "OpenTelemetry modules", - "matchDepPrefixes": [ - "@opentelemetry/" + "matchDepNames": [ + "@grpc/grpc-js", + "@opentelemetry/api", + "@opentelemetry/api-metrics", + "@opentelemetry/exporter-metrics-otlp-grpc", + "@opentelemetry/exporter-prometheus", + "@opentelemetry/resources", + "@opentelemetry/sdk-metrics-base", + "@opentelemetry/semantic-conventions" ], "reviewers": [ "team:stack-monitoring" @@ -2494,7 +2604,9 @@ "main" ], "labels": [ - "Team:Monitoring" + "Team:Monitoring", + "backport:all-open", + "release_note:skip" ], "minimumReleaseAge": "7 days", "enabled": true @@ -2610,6 +2722,25 @@ "minimumReleaseAge": "7 days", "enabled": true }, + { + "groupName": "react-is", + "matchDepNames": [ + "react-is", + "@types/react-is" + ], + "reviewers": [ + "team:visualizations" + ], + "matchBaseBranches": [ + "main" + ], + "labels": [ + "release_note:skip", + "backport:all-open", + "Team:Visualizations" + ], + "enabled": true + }, { "groupName": "re2js", "matchDepNames": [ diff --git a/scripts/get_owners_for_file.js b/scripts/get_owners_for_file.js index f5a07b76ee04c..15c21a3f06d9c 100644 --- a/scripts/get_owners_for_file.js +++ b/scripts/get_owners_for_file.js @@ -8,4 +8,4 @@ */ require('../src/setup_node_env'); -require('@kbn/code-owners').runGetOwnersForFileCli(); +void require('@kbn/code-owners').cli.findCodeOwnersForPath(); diff --git a/scripts/relocate.js b/scripts/relocate.js new file mode 100644 index 0000000000000..1a8c71373c673 --- /dev/null +++ b/scripts/relocate.js @@ -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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +require('../src/setup_node_env'); +require('@kbn/relocate').runKbnRelocateCli(); diff --git a/src/core/server/docs/kib_core_deprecations_service.mdx b/src/core/server/docs/kib_core_deprecations_service.mdx index 2594bd2f0dd6b..1cf5fd50869f1 100644 --- a/src/core/server/docs/kib_core_deprecations_service.mdx +++ b/src/core/server/docs/kib_core_deprecations_service.mdx @@ -152,9 +152,13 @@ coreSetup.deprecations.registerDeprecations({ ``` The `getDeprecations` function is invoked when the user requests to see the deprecations affecting their deployment. -The function provides a context object which contains a scoped Elasticsearch client and a saved objects client. +The function provides a context object which contains a scoped Elasticsearch client and a Saved Objects client. -To check the full TS types of the service please check the [generated core docs](../../../../docs/development/core/server/kibana-plugin-core-server.deprecationsservicesetup.md). +⚠️When using the Saved Objects client, bear in mind that all Spaces must be checked for deprecations: +By default, the Saved Objects client retrieves data from the current Space only. To override this behavior, add the +option `namespaces: ['*']` to search in all Spaces. When getting by ID, it's best to loop through all the spaces and get with `namespaces: [mySpaceOverride]`. + +To check the full TS types of the service please check the [generated core docs](https://docs.elastic.dev/kibana-dev-docs/api/kbn-core-deprecations-server). ### Example ```ts diff --git a/src/dev/build/tasks/os_packages/docker_generator/run.ts b/src/dev/build/tasks/os_packages/docker_generator/run.ts index fdfce95385806..ca45a31ad7310 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/run.ts +++ b/src/dev/build/tasks/os_packages/docker_generator/run.ts @@ -51,7 +51,7 @@ export async function runDockerGenerator( */ if (flags.baseImage === 'wolfi') baseImageName = - 'docker.elastic.co/wolfi/chainguard-base:latest@sha256:ad2e15a6b7fbd893990fd9bd39fb0f367282a9ba65e350655540e470858ef382'; + 'docker.elastic.co/wolfi/chainguard-base:latest@sha256:1b51ff6dba78c98d3e02b0cd64a8ce3238c7a40408d21e3af12a329d44db6f23'; let imageFlavor = ''; if (flags.baseImage === 'ubi') imageFlavor += `-ubi`; diff --git a/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile b/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile index 94d604d726562..e868cb73cb8db 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile +++ b/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile @@ -134,7 +134,7 @@ RUN for iter in {1..10}; do \ (exit $exit_code) {{/ubuntu}} {{#wolfi}} -RUN apk --no-cache add bash curl fontconfig libstdc++ libnss findutils shadow +RUN apk --no-cache add bash curl fontconfig libstdc++ libnss findutils shadow ca-certificates {{/wolfi}} # Bring in Kibana from the initial stage. diff --git a/src/dev/precommit_hook/casing_check_config.js b/src/dev/precommit_hook/casing_check_config.js index 3572781c4b262..313c2bd357dc4 100644 --- a/src/dev/precommit_hook/casing_check_config.js +++ b/src/dev/precommit_hook/casing_check_config.js @@ -165,7 +165,7 @@ export const TEMPORARILY_IGNORED_PATHS = [ 'src/core/server/core_app/assets/favicons/safari-pinned-tab.svg', 'test/functional/apps/management/exports/_import_objects-conflicts.json', 'x-pack/legacy/plugins/index_management/public/lib/editSettings.js', - 'x-pack/legacy/plugins/license_management/public/store/reducers/licenseManagement.js', + 'x-pack/legacy/platform/plugins/shared/license_management/public/store/reducers/licenseManagement.js', 'x-pack/plugins/monitoring/public/icons/health-gray.svg', 'x-pack/plugins/monitoring/public/icons/health-green.svg', 'x-pack/plugins/monitoring/public/icons/health-red.svg', diff --git a/src/dev/storybook/aliases.ts b/src/dev/storybook/aliases.ts index 1d3ec990948a9..2875d8312cc8e 100644 --- a/src/dev/storybook/aliases.ts +++ b/src/dev/storybook/aliases.ts @@ -12,10 +12,11 @@ // If you wish for your Storybook to be built and included in CI, also add your // alias to .buildkite/scripts/steps/storybooks/build_and_upload.ts export const storybookAliases = { + ai_assistant: 'x-pack/packages/kbn-ai-assistant/.storybook', apm: 'x-pack/plugins/observability_solution/apm/.storybook', canvas: 'x-pack/plugins/canvas/storybook', cases: 'packages/kbn-cases-components/.storybook', - cell_actions: 'packages/kbn-cell-actions/.storybook', + cell_actions: 'src/platform/packages/shared/kbn-cell-actions/.storybook', cloud_security_posture_packages: 'x-pack/packages/kbn-cloud-security-posture/storybook/config', cloud: 'packages/cloud/.storybook', coloring: 'packages/kbn-coloring/.storybook', @@ -30,8 +31,8 @@ export const storybookAliases = { data: 'src/plugins/data/.storybook', discover: 'src/plugins/discover/.storybook', esql_ast_inspector: 'examples/esql_ast_inspector/.storybook', - es_ui_shared: 'src/plugins/es_ui_shared/.storybook', - expandable_flyout: 'packages/kbn-expandable-flyout/.storybook', + es_ui_shared: 'src/platform/plugins/shared/es_ui_shared/.storybook', + expandable_flyout: 'x-pack/solutions/security/packages/kbn-expandable-flyout/.storybook', expression_error: 'src/plugins/expression_error/.storybook', expression_image: 'src/plugins/expression_image/.storybook', expression_metric_vis: 'src/plugins/chart_expressions/expression_legacy_metric/.storybook', @@ -46,16 +47,16 @@ export const storybookAliases = { home: 'src/plugins/home/.storybook', infra: 'x-pack/plugins/observability_solution/infra/.storybook', inventory: 'x-pack/plugins/observability_solution/inventory/.storybook', - investigate: 'x-pack/plugins/observability_solution/investigate_app/.storybook', + investigate: 'x-pack/solutions/observability/plugins/investigate_app/.storybook', kibana_react: 'src/plugins/kibana_react/.storybook', lists: 'x-pack/plugins/lists/.storybook', logs_explorer: 'x-pack/plugins/observability_solution/logs_explorer/.storybook', management: 'packages/kbn-management/storybook/config', - observability: 'x-pack/plugins/observability_solution/observability/.storybook', + observability: 'x-pack/solutions/observability/plugins/observability/.storybook', observability_ai_assistant: - 'x-pack/plugins/observability_solution/observability_ai_assistant/.storybook', + 'x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook', observability_ai_assistant_app: - 'x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook', + 'x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook', observability_inventory: 'x-pack/plugins/observability_solution/inventory/.storybook', observability_shared: 'x-pack/plugins/observability_solution/observability_shared/.storybook', observability_slo: 'x-pack/plugins/observability_solution/slo/.storybook', @@ -63,11 +64,11 @@ export const storybookAliases = { random_sampling: 'x-pack/packages/kbn-random-sampling/.storybook', esql_editor: 'src/platform/packages/private/kbn-esql-editor/.storybook', security_solution: 'x-pack/plugins/security_solution/.storybook', - security_solution_packages: 'x-pack/packages/security-solution/storybook/config', + security_solution_packages: 'x-pack/solutions/security/packages/storybook/config', serverless: 'packages/serverless/storybook/config', shared_ux: 'packages/shared-ux/storybook/config', slo: 'x-pack/plugins/observability_solution/slo/.storybook', - threat_intelligence: 'x-pack/plugins/threat_intelligence/.storybook', + threat_intelligence: 'x-pack/solutions/security/plugins/threat_intelligence/.storybook', triggers_actions_ui: 'x-pack/plugins/triggers_actions_ui/.storybook', ui_actions_enhanced: 'src/plugins/ui_actions_enhanced/.storybook', unified_search: 'src/plugins/unified_search/.storybook', diff --git a/packages/default-nav/devtools/README.md b/src/platform/packages/private/default-nav/devtools/README.md similarity index 100% rename from packages/default-nav/devtools/README.md rename to src/platform/packages/private/default-nav/devtools/README.md diff --git a/packages/default-nav/devtools/default_navigation.ts b/src/platform/packages/private/default-nav/devtools/default_navigation.ts similarity index 100% rename from packages/default-nav/devtools/default_navigation.ts rename to src/platform/packages/private/default-nav/devtools/default_navigation.ts diff --git a/packages/default-nav/devtools/index.ts b/src/platform/packages/private/default-nav/devtools/index.ts similarity index 100% rename from packages/default-nav/devtools/index.ts rename to src/platform/packages/private/default-nav/devtools/index.ts diff --git a/src/platform/packages/private/default-nav/devtools/jest.config.js b/src/platform/packages/private/default-nav/devtools/jest.config.js new file mode 100644 index 0000000000000..c02758afa2bf8 --- /dev/null +++ b/src/platform/packages/private/default-nav/devtools/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/src/platform/packages/private/default-nav/devtools'], +}; diff --git a/packages/default-nav/devtools/kibana.jsonc b/src/platform/packages/private/default-nav/devtools/kibana.jsonc similarity index 100% rename from packages/default-nav/devtools/kibana.jsonc rename to src/platform/packages/private/default-nav/devtools/kibana.jsonc diff --git a/packages/default-nav/devtools/package.json b/src/platform/packages/private/default-nav/devtools/package.json similarity index 100% rename from packages/default-nav/devtools/package.json rename to src/platform/packages/private/default-nav/devtools/package.json diff --git a/src/platform/packages/private/default-nav/devtools/tsconfig.json b/src/platform/packages/private/default-nav/devtools/tsconfig.json new file mode 100644 index 0000000000000..6e216eb62dd4e --- /dev/null +++ b/src/platform/packages/private/default-nav/devtools/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/core-chrome-browser", + "@kbn/deeplinks-devtools", + ] +} diff --git a/packages/default-nav/management/README.md b/src/platform/packages/private/default-nav/management/README.md similarity index 100% rename from packages/default-nav/management/README.md rename to src/platform/packages/private/default-nav/management/README.md diff --git a/packages/default-nav/management/default_navigation.ts b/src/platform/packages/private/default-nav/management/default_navigation.ts similarity index 100% rename from packages/default-nav/management/default_navigation.ts rename to src/platform/packages/private/default-nav/management/default_navigation.ts diff --git a/packages/default-nav/management/index.ts b/src/platform/packages/private/default-nav/management/index.ts similarity index 100% rename from packages/default-nav/management/index.ts rename to src/platform/packages/private/default-nav/management/index.ts diff --git a/src/platform/packages/private/default-nav/management/jest.config.js b/src/platform/packages/private/default-nav/management/jest.config.js new file mode 100644 index 0000000000000..4977ed105d381 --- /dev/null +++ b/src/platform/packages/private/default-nav/management/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/src/platform/packages/private/default-nav/management'], +}; diff --git a/packages/default-nav/management/kibana.jsonc b/src/platform/packages/private/default-nav/management/kibana.jsonc similarity index 100% rename from packages/default-nav/management/kibana.jsonc rename to src/platform/packages/private/default-nav/management/kibana.jsonc diff --git a/packages/default-nav/management/package.json b/src/platform/packages/private/default-nav/management/package.json similarity index 100% rename from packages/default-nav/management/package.json rename to src/platform/packages/private/default-nav/management/package.json diff --git a/src/platform/packages/private/default-nav/management/tsconfig.json b/src/platform/packages/private/default-nav/management/tsconfig.json new file mode 100644 index 0000000000000..86aef204f06cf --- /dev/null +++ b/src/platform/packages/private/default-nav/management/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/core-chrome-browser", + "@kbn/deeplinks-management", + ] +} diff --git a/src/platform/packages/private/kbn-esql-editor/src/esql_editor.tsx b/src/platform/packages/private/kbn-esql-editor/src/esql_editor.tsx index eb3da01abd505..628bab839bdb9 100644 --- a/src/platform/packages/private/kbn-esql-editor/src/esql_editor.tsx +++ b/src/platform/packages/private/kbn-esql-editor/src/esql_editor.tsx @@ -169,25 +169,25 @@ export const ESQLEditor = memo(function ESQLEditor({ const currentSelection = editor1?.current?.getSelection(); const startLineNumber = currentSelection?.startLineNumber; const endLineNumber = currentSelection?.endLineNumber; + const edits = []; if (startLineNumber && endLineNumber) { for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) { const lineContent = editorModel.current?.getLineContent(lineNumber) ?? ''; const hasComment = lineContent?.startsWith('//'); const commentedLine = hasComment ? lineContent?.replace('//', '') : `//${lineContent}`; - // executeEdits allows to keep edit in history - editor1.current?.executeEdits('comment', [ - { - range: { - startLineNumber: lineNumber, - startColumn: 0, - endLineNumber: lineNumber, - endColumn: (lineContent?.length ?? 0) + 1, - }, - text: commentedLine, + edits.push({ + range: { + startLineNumber: lineNumber, + startColumn: 0, + endLineNumber: lineNumber, + endColumn: (lineContent?.length ?? 0) + 1, }, - ]); + text: commentedLine, + }); } + // executeEdits allows to keep edit in history + editor1.current?.executeEdits('comment', edits); } }, []); diff --git a/src/platform/packages/private/kbn-management/jest.config.js b/src/platform/packages/private/kbn-management/jest.config.js new file mode 100644 index 0000000000000..b249a47d2bf86 --- /dev/null +++ b/src/platform/packages/private/kbn-management/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/private/kbn-management'], +}; diff --git a/packages/kbn-management/settings/application/README.md b/src/platform/packages/private/kbn-management/settings/application/README.md similarity index 100% rename from packages/kbn-management/settings/application/README.md rename to src/platform/packages/private/kbn-management/settings/application/README.md diff --git a/packages/kbn-management/settings/application/__snapshots__/query_input.test.tsx.snap b/src/platform/packages/private/kbn-management/settings/application/__snapshots__/query_input.test.tsx.snap similarity index 100% rename from packages/kbn-management/settings/application/__snapshots__/query_input.test.tsx.snap rename to src/platform/packages/private/kbn-management/settings/application/__snapshots__/query_input.test.tsx.snap diff --git a/packages/kbn-management/settings/application/__stories__/application.stories.tsx b/src/platform/packages/private/kbn-management/settings/application/__stories__/application.stories.tsx similarity index 100% rename from packages/kbn-management/settings/application/__stories__/application.stories.tsx rename to src/platform/packages/private/kbn-management/settings/application/__stories__/application.stories.tsx diff --git a/packages/kbn-management/settings/application/__stories__/use_application_story.tsx b/src/platform/packages/private/kbn-management/settings/application/__stories__/use_application_story.tsx similarity index 100% rename from packages/kbn-management/settings/application/__stories__/use_application_story.tsx rename to src/platform/packages/private/kbn-management/settings/application/__stories__/use_application_story.tsx diff --git a/packages/kbn-management/settings/application/application.test.tsx b/src/platform/packages/private/kbn-management/settings/application/application.test.tsx similarity index 100% rename from packages/kbn-management/settings/application/application.test.tsx rename to src/platform/packages/private/kbn-management/settings/application/application.test.tsx diff --git a/packages/kbn-management/settings/application/application.tsx b/src/platform/packages/private/kbn-management/settings/application/application.tsx similarity index 100% rename from packages/kbn-management/settings/application/application.tsx rename to src/platform/packages/private/kbn-management/settings/application/application.tsx diff --git a/packages/kbn-management/settings/application/empty_state.tsx b/src/platform/packages/private/kbn-management/settings/application/empty_state.tsx similarity index 100% rename from packages/kbn-management/settings/application/empty_state.tsx rename to src/platform/packages/private/kbn-management/settings/application/empty_state.tsx diff --git a/packages/kbn-management/settings/application/hooks/index.ts b/src/platform/packages/private/kbn-management/settings/application/hooks/index.ts similarity index 100% rename from packages/kbn-management/settings/application/hooks/index.ts rename to src/platform/packages/private/kbn-management/settings/application/hooks/index.ts diff --git a/packages/kbn-management/settings/application/hooks/use_fields.ts b/src/platform/packages/private/kbn-management/settings/application/hooks/use_fields.ts similarity index 100% rename from packages/kbn-management/settings/application/hooks/use_fields.ts rename to src/platform/packages/private/kbn-management/settings/application/hooks/use_fields.ts diff --git a/packages/kbn-management/settings/application/hooks/use_scope_fields.ts b/src/platform/packages/private/kbn-management/settings/application/hooks/use_scope_fields.ts similarity index 100% rename from packages/kbn-management/settings/application/hooks/use_scope_fields.ts rename to src/platform/packages/private/kbn-management/settings/application/hooks/use_scope_fields.ts diff --git a/packages/kbn-management/settings/application/hooks/use_settings.ts b/src/platform/packages/private/kbn-management/settings/application/hooks/use_settings.ts similarity index 100% rename from packages/kbn-management/settings/application/hooks/use_settings.ts rename to src/platform/packages/private/kbn-management/settings/application/hooks/use_settings.ts diff --git a/packages/kbn-management/settings/application/i18n_texts.ts b/src/platform/packages/private/kbn-management/settings/application/i18n_texts.ts similarity index 100% rename from packages/kbn-management/settings/application/i18n_texts.ts rename to src/platform/packages/private/kbn-management/settings/application/i18n_texts.ts diff --git a/packages/kbn-management/settings/application/index.tsx b/src/platform/packages/private/kbn-management/settings/application/index.tsx similarity index 100% rename from packages/kbn-management/settings/application/index.tsx rename to src/platform/packages/private/kbn-management/settings/application/index.tsx diff --git a/packages/kbn-management/settings/application/kibana.jsonc b/src/platform/packages/private/kbn-management/settings/application/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/application/kibana.jsonc rename to src/platform/packages/private/kbn-management/settings/application/kibana.jsonc diff --git a/packages/kbn-management/settings/application/mocks/context.tsx b/src/platform/packages/private/kbn-management/settings/application/mocks/context.tsx similarity index 100% rename from packages/kbn-management/settings/application/mocks/context.tsx rename to src/platform/packages/private/kbn-management/settings/application/mocks/context.tsx diff --git a/packages/kbn-management/settings/application/mocks/index.ts b/src/platform/packages/private/kbn-management/settings/application/mocks/index.ts similarity index 100% rename from packages/kbn-management/settings/application/mocks/index.ts rename to src/platform/packages/private/kbn-management/settings/application/mocks/index.ts diff --git a/packages/kbn-management/settings/application/package.json b/src/platform/packages/private/kbn-management/settings/application/package.json similarity index 100% rename from packages/kbn-management/settings/application/package.json rename to src/platform/packages/private/kbn-management/settings/application/package.json diff --git a/packages/kbn-management/settings/application/query_input.test.tsx b/src/platform/packages/private/kbn-management/settings/application/query_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/application/query_input.test.tsx rename to src/platform/packages/private/kbn-management/settings/application/query_input.test.tsx diff --git a/packages/kbn-management/settings/application/query_input.tsx b/src/platform/packages/private/kbn-management/settings/application/query_input.tsx similarity index 100% rename from packages/kbn-management/settings/application/query_input.tsx rename to src/platform/packages/private/kbn-management/settings/application/query_input.tsx diff --git a/packages/kbn-management/settings/application/read_only_badge.ts b/src/platform/packages/private/kbn-management/settings/application/read_only_badge.ts similarity index 100% rename from packages/kbn-management/settings/application/read_only_badge.ts rename to src/platform/packages/private/kbn-management/settings/application/read_only_badge.ts diff --git a/packages/kbn-management/settings/application/services.tsx b/src/platform/packages/private/kbn-management/settings/application/services.tsx similarity index 100% rename from packages/kbn-management/settings/application/services.tsx rename to src/platform/packages/private/kbn-management/settings/application/services.tsx diff --git a/packages/kbn-management/settings/application/tab.tsx b/src/platform/packages/private/kbn-management/settings/application/tab.tsx similarity index 100% rename from packages/kbn-management/settings/application/tab.tsx rename to src/platform/packages/private/kbn-management/settings/application/tab.tsx diff --git a/src/platform/packages/private/kbn-management/settings/application/tsconfig.json b/src/platform/packages/private/kbn-management/settings/application/tsconfig.json new file mode 100644 index 0000000000000..de36999e41644 --- /dev/null +++ b/src/platform/packages/private/kbn-management/settings/application/tsconfig.json @@ -0,0 +1,40 @@ +{ + "extends": "../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@testing-library/jest-dom" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/core-ui-settings-browser", + "@kbn/management-settings-types", + "@kbn/management-settings-field-definition", + "@kbn/management-settings-utilities", + "@kbn/management-settings-components-form", + "@kbn/i18n", + "@kbn/test-jest-helpers", + "@kbn/core-application-browser", + "@kbn/i18n-react", + "@kbn/management-settings-components-field-category", + "@kbn/react-kibana-context-root", + "@kbn/core-theme-browser-mocks", + "@kbn/core-i18n-browser", + "@kbn/core-analytics-browser-mocks", + "@kbn/core-ui-settings-common", + "@kbn/management-settings-section-registry", + "@kbn/core-notifications-browser", + "@kbn/core-chrome-browser", + "@kbn/core-user-profile-browser-mocks", + ] +} diff --git a/packages/kbn-management/settings/components/field_category/README.mdx b/src/platform/packages/private/kbn-management/settings/components/field_category/README.mdx similarity index 100% rename from packages/kbn-management/settings/components/field_category/README.mdx rename to src/platform/packages/private/kbn-management/settings/components/field_category/README.mdx diff --git a/packages/kbn-management/settings/components/field_category/__stories__/categories.stories.tsx b/src/platform/packages/private/kbn-management/settings/components/field_category/__stories__/categories.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_category/__stories__/categories.stories.tsx rename to src/platform/packages/private/kbn-management/settings/components/field_category/__stories__/categories.stories.tsx diff --git a/packages/kbn-management/settings/components/field_category/__stories__/category.stories.tsx b/src/platform/packages/private/kbn-management/settings/components/field_category/__stories__/category.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_category/__stories__/category.stories.tsx rename to src/platform/packages/private/kbn-management/settings/components/field_category/__stories__/category.stories.tsx diff --git a/packages/kbn-management/settings/components/field_category/__stories__/use_category_story.tsx b/src/platform/packages/private/kbn-management/settings/components/field_category/__stories__/use_category_story.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_category/__stories__/use_category_story.tsx rename to src/platform/packages/private/kbn-management/settings/components/field_category/__stories__/use_category_story.tsx diff --git a/packages/kbn-management/settings/components/field_category/categories.tsx b/src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_category/categories.tsx rename to src/platform/packages/private/kbn-management/settings/components/field_category/categories.tsx diff --git a/packages/kbn-management/settings/components/field_category/category.tsx b/src/platform/packages/private/kbn-management/settings/components/field_category/category.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_category/category.tsx rename to src/platform/packages/private/kbn-management/settings/components/field_category/category.tsx diff --git a/packages/kbn-management/settings/components/field_category/clear_query_link.tsx b/src/platform/packages/private/kbn-management/settings/components/field_category/clear_query_link.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_category/clear_query_link.tsx rename to src/platform/packages/private/kbn-management/settings/components/field_category/clear_query_link.tsx diff --git a/packages/kbn-management/settings/components/field_category/index.ts b/src/platform/packages/private/kbn-management/settings/components/field_category/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_category/index.ts rename to src/platform/packages/private/kbn-management/settings/components/field_category/index.ts diff --git a/src/platform/packages/private/kbn-management/settings/components/field_category/jest.config.js b/src/platform/packages/private/kbn-management/settings/components/field_category/jest.config.js new file mode 100644 index 0000000000000..0d2ae1922729b --- /dev/null +++ b/src/platform/packages/private/kbn-management/settings/components/field_category/jest.config.js @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../../..', + roots: [ + '<rootDir>/src/platform/packages/private/kbn-management/settings/components/field_category', + ], +}; diff --git a/packages/kbn-management/settings/components/field_category/kibana.jsonc b/src/platform/packages/private/kbn-management/settings/components/field_category/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/components/field_category/kibana.jsonc rename to src/platform/packages/private/kbn-management/settings/components/field_category/kibana.jsonc diff --git a/packages/kbn-management/settings/components/field_category/package.json b/src/platform/packages/private/kbn-management/settings/components/field_category/package.json similarity index 100% rename from packages/kbn-management/settings/components/field_category/package.json rename to src/platform/packages/private/kbn-management/settings/components/field_category/package.json diff --git a/packages/kbn-management/settings/components/field_category/services.tsx b/src/platform/packages/private/kbn-management/settings/components/field_category/services.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_category/services.tsx rename to src/platform/packages/private/kbn-management/settings/components/field_category/services.tsx diff --git a/src/platform/packages/private/kbn-management/settings/components/field_category/tsconfig.json b/src/platform/packages/private/kbn-management/settings/components/field_category/tsconfig.json new file mode 100644 index 0000000000000..5fd04965d3f30 --- /dev/null +++ b/src/platform/packages/private/kbn-management/settings/components/field_category/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/management-settings-utilities", + "@kbn/management-settings-field-definition", + "@kbn/management-settings-components-field-row", + "@kbn/management-settings-types", + "@kbn/i18n-react", + ] +} diff --git a/packages/kbn-management/settings/components/field_category/types.ts b/src/platform/packages/private/kbn-management/settings/components/field_category/types.ts similarity index 100% rename from packages/kbn-management/settings/components/field_category/types.ts rename to src/platform/packages/private/kbn-management/settings/components/field_category/types.ts diff --git a/packages/kbn-management/settings/components/form/README.mdx b/src/platform/packages/private/kbn-management/settings/components/form/README.mdx similarity index 100% rename from packages/kbn-management/settings/components/form/README.mdx rename to src/platform/packages/private/kbn-management/settings/components/form/README.mdx diff --git a/packages/kbn-management/settings/components/form/bottom_bar/bottom_bar.test.tsx b/src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/bottom_bar.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/bottom_bar/bottom_bar.test.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/bottom_bar.test.tsx diff --git a/packages/kbn-management/settings/components/form/bottom_bar/bottom_bar.tsx b/src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/bottom_bar.tsx similarity index 99% rename from packages/kbn-management/settings/components/form/bottom_bar/bottom_bar.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/bottom_bar.tsx index e9947ac6f9306..dd300aad99c3a 100644 --- a/packages/kbn-management/settings/components/form/bottom_bar/bottom_bar.tsx +++ b/src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/bottom_bar.tsx @@ -87,7 +87,7 @@ export const BottomBar = ({ <EuiButton css={cssFormButton} disabled={hasInvalidChanges} - color="success" + color="primary" fill size="s" iconType="check" diff --git a/packages/kbn-management/settings/components/form/bottom_bar/index.tsx b/src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/index.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/bottom_bar/index.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/index.tsx diff --git a/packages/kbn-management/settings/components/form/bottom_bar/unsaved_count.tsx b/src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/unsaved_count.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/bottom_bar/unsaved_count.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/bottom_bar/unsaved_count.tsx diff --git a/packages/kbn-management/settings/components/form/form.styles.ts b/src/platform/packages/private/kbn-management/settings/components/form/form.styles.ts similarity index 100% rename from packages/kbn-management/settings/components/form/form.styles.ts rename to src/platform/packages/private/kbn-management/settings/components/form/form.styles.ts diff --git a/packages/kbn-management/settings/components/form/form.test.tsx b/src/platform/packages/private/kbn-management/settings/components/form/form.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/form.test.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/form.test.tsx diff --git a/packages/kbn-management/settings/components/form/form.tsx b/src/platform/packages/private/kbn-management/settings/components/form/form.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/form.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/form.tsx diff --git a/packages/kbn-management/settings/components/form/index.ts b/src/platform/packages/private/kbn-management/settings/components/form/index.ts similarity index 100% rename from packages/kbn-management/settings/components/form/index.ts rename to src/platform/packages/private/kbn-management/settings/components/form/index.ts diff --git a/packages/kbn-management/settings/components/form/kibana.jsonc b/src/platform/packages/private/kbn-management/settings/components/form/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/components/form/kibana.jsonc rename to src/platform/packages/private/kbn-management/settings/components/form/kibana.jsonc diff --git a/packages/kbn-management/settings/components/form/mocks/context.tsx b/src/platform/packages/private/kbn-management/settings/components/form/mocks/context.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/mocks/context.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/mocks/context.tsx diff --git a/packages/kbn-management/settings/components/form/mocks/index.ts b/src/platform/packages/private/kbn-management/settings/components/form/mocks/index.ts similarity index 100% rename from packages/kbn-management/settings/components/form/mocks/index.ts rename to src/platform/packages/private/kbn-management/settings/components/form/mocks/index.ts diff --git a/packages/kbn-management/settings/components/form/mocks/settings_client.ts b/src/platform/packages/private/kbn-management/settings/components/form/mocks/settings_client.ts similarity index 100% rename from packages/kbn-management/settings/components/form/mocks/settings_client.ts rename to src/platform/packages/private/kbn-management/settings/components/form/mocks/settings_client.ts diff --git a/packages/kbn-management/settings/components/form/package.json b/src/platform/packages/private/kbn-management/settings/components/form/package.json similarity index 100% rename from packages/kbn-management/settings/components/form/package.json rename to src/platform/packages/private/kbn-management/settings/components/form/package.json diff --git a/packages/kbn-management/settings/components/form/reload_page_toast.tsx b/src/platform/packages/private/kbn-management/settings/components/form/reload_page_toast.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/reload_page_toast.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/reload_page_toast.tsx diff --git a/packages/kbn-management/settings/components/form/services.tsx b/src/platform/packages/private/kbn-management/settings/components/form/services.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/services.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/services.tsx diff --git a/packages/kbn-management/settings/components/form/storybook/form.stories.tsx b/src/platform/packages/private/kbn-management/settings/components/form/storybook/form.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/form/storybook/form.stories.tsx rename to src/platform/packages/private/kbn-management/settings/components/form/storybook/form.stories.tsx diff --git a/src/platform/packages/private/kbn-management/settings/components/form/tsconfig.json b/src/platform/packages/private/kbn-management/settings/components/form/tsconfig.json new file mode 100644 index 0000000000000..56f49203120dc --- /dev/null +++ b/src/platform/packages/private/kbn-management/settings/components/form/tsconfig.json @@ -0,0 +1,40 @@ +{ + "extends": "../../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@testing-library/jest-dom", + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/management-settings-types", + "@kbn/management-settings-field-definition", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/management-settings-components-field-row", + "@kbn/react-kibana-context-root", + "@kbn/core-theme-browser-mocks", + "@kbn/core-i18n-browser", + "@kbn/react-kibana-mount", + "@kbn/core-notifications-browser", + "@kbn/core-theme-browser", + "@kbn/core-ui-settings-browser", + "@kbn/management-settings-components-field-input", + "@kbn/management-settings-components-field-category", + "@kbn/management-settings-utilities", + "@kbn/core-analytics-browser-mocks", + "@kbn/core-ui-settings-common", + "@kbn/core-user-profile-browser-mocks", + "@kbn/core-user-profile-browser", + ] +} diff --git a/packages/kbn-management/settings/components/form/types.ts b/src/platform/packages/private/kbn-management/settings/components/form/types.ts similarity index 100% rename from packages/kbn-management/settings/components/form/types.ts rename to src/platform/packages/private/kbn-management/settings/components/form/types.ts diff --git a/packages/kbn-management/settings/components/form/use_save.ts b/src/platform/packages/private/kbn-management/settings/components/form/use_save.ts similarity index 100% rename from packages/kbn-management/settings/components/form/use_save.ts rename to src/platform/packages/private/kbn-management/settings/components/form/use_save.ts diff --git a/packages/deeplinks/devtools/README.md b/src/platform/packages/shared/deeplinks/devtools/README.md similarity index 100% rename from packages/deeplinks/devtools/README.md rename to src/platform/packages/shared/deeplinks/devtools/README.md diff --git a/packages/deeplinks/devtools/constants.ts b/src/platform/packages/shared/deeplinks/devtools/constants.ts similarity index 100% rename from packages/deeplinks/devtools/constants.ts rename to src/platform/packages/shared/deeplinks/devtools/constants.ts diff --git a/packages/deeplinks/devtools/deep_links.ts b/src/platform/packages/shared/deeplinks/devtools/deep_links.ts similarity index 100% rename from packages/deeplinks/devtools/deep_links.ts rename to src/platform/packages/shared/deeplinks/devtools/deep_links.ts diff --git a/packages/deeplinks/devtools/index.ts b/src/platform/packages/shared/deeplinks/devtools/index.ts similarity index 100% rename from packages/deeplinks/devtools/index.ts rename to src/platform/packages/shared/deeplinks/devtools/index.ts diff --git a/src/platform/packages/shared/deeplinks/devtools/jest.config.js b/src/platform/packages/shared/deeplinks/devtools/jest.config.js new file mode 100644 index 0000000000000..f5eccf53d143c --- /dev/null +++ b/src/platform/packages/shared/deeplinks/devtools/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/deeplinks/devtools'], +}; diff --git a/packages/deeplinks/devtools/kibana.jsonc b/src/platform/packages/shared/deeplinks/devtools/kibana.jsonc similarity index 100% rename from packages/deeplinks/devtools/kibana.jsonc rename to src/platform/packages/shared/deeplinks/devtools/kibana.jsonc diff --git a/packages/deeplinks/devtools/package.json b/src/platform/packages/shared/deeplinks/devtools/package.json similarity index 100% rename from packages/deeplinks/devtools/package.json rename to src/platform/packages/shared/deeplinks/devtools/package.json diff --git a/src/platform/packages/shared/deeplinks/devtools/tsconfig.json b/src/platform/packages/shared/deeplinks/devtools/tsconfig.json new file mode 100644 index 0000000000000..af23c916b5d13 --- /dev/null +++ b/src/platform/packages/shared/deeplinks/devtools/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + ] +} diff --git a/packages/deeplinks/management/README.md b/src/platform/packages/shared/deeplinks/management/README.md similarity index 100% rename from packages/deeplinks/management/README.md rename to src/platform/packages/shared/deeplinks/management/README.md diff --git a/packages/deeplinks/management/constants.ts b/src/platform/packages/shared/deeplinks/management/constants.ts similarity index 100% rename from packages/deeplinks/management/constants.ts rename to src/platform/packages/shared/deeplinks/management/constants.ts diff --git a/packages/deeplinks/management/deep_links.ts b/src/platform/packages/shared/deeplinks/management/deep_links.ts similarity index 100% rename from packages/deeplinks/management/deep_links.ts rename to src/platform/packages/shared/deeplinks/management/deep_links.ts diff --git a/packages/deeplinks/management/index.ts b/src/platform/packages/shared/deeplinks/management/index.ts similarity index 100% rename from packages/deeplinks/management/index.ts rename to src/platform/packages/shared/deeplinks/management/index.ts diff --git a/src/platform/packages/shared/deeplinks/management/jest.config.js b/src/platform/packages/shared/deeplinks/management/jest.config.js new file mode 100644 index 0000000000000..8a4039d61f2bc --- /dev/null +++ b/src/platform/packages/shared/deeplinks/management/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/deeplinks/management'], +}; diff --git a/packages/deeplinks/management/kibana.jsonc b/src/platform/packages/shared/deeplinks/management/kibana.jsonc similarity index 100% rename from packages/deeplinks/management/kibana.jsonc rename to src/platform/packages/shared/deeplinks/management/kibana.jsonc diff --git a/packages/deeplinks/management/package.json b/src/platform/packages/shared/deeplinks/management/package.json similarity index 100% rename from packages/deeplinks/management/package.json rename to src/platform/packages/shared/deeplinks/management/package.json diff --git a/src/platform/packages/shared/deeplinks/management/tsconfig.json b/src/platform/packages/shared/deeplinks/management/tsconfig.json new file mode 100644 index 0000000000000..18d16ae2e8837 --- /dev/null +++ b/src/platform/packages/shared/deeplinks/management/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [] +} diff --git a/packages/deeplinks/observability/README.md b/src/platform/packages/shared/deeplinks/observability/README.md similarity index 100% rename from packages/deeplinks/observability/README.md rename to src/platform/packages/shared/deeplinks/observability/README.md diff --git a/packages/deeplinks/observability/constants.ts b/src/platform/packages/shared/deeplinks/observability/constants.ts similarity index 100% rename from packages/deeplinks/observability/constants.ts rename to src/platform/packages/shared/deeplinks/observability/constants.ts diff --git a/packages/deeplinks/observability/deep_links.ts b/src/platform/packages/shared/deeplinks/observability/deep_links.ts similarity index 100% rename from packages/deeplinks/observability/deep_links.ts rename to src/platform/packages/shared/deeplinks/observability/deep_links.ts diff --git a/packages/deeplinks/observability/index.ts b/src/platform/packages/shared/deeplinks/observability/index.ts similarity index 100% rename from packages/deeplinks/observability/index.ts rename to src/platform/packages/shared/deeplinks/observability/index.ts diff --git a/src/platform/packages/shared/deeplinks/observability/jest.config.js b/src/platform/packages/shared/deeplinks/observability/jest.config.js new file mode 100644 index 0000000000000..132706f9af307 --- /dev/null +++ b/src/platform/packages/shared/deeplinks/observability/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/deeplinks/observability'], +}; diff --git a/packages/deeplinks/observability/kibana.jsonc b/src/platform/packages/shared/deeplinks/observability/kibana.jsonc similarity index 100% rename from packages/deeplinks/observability/kibana.jsonc rename to src/platform/packages/shared/deeplinks/observability/kibana.jsonc diff --git a/packages/deeplinks/observability/locators/dataset_quality.ts b/src/platform/packages/shared/deeplinks/observability/locators/dataset_quality.ts similarity index 100% rename from packages/deeplinks/observability/locators/dataset_quality.ts rename to src/platform/packages/shared/deeplinks/observability/locators/dataset_quality.ts diff --git a/packages/deeplinks/observability/locators/dataset_quality_details.ts b/src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts similarity index 100% rename from packages/deeplinks/observability/locators/dataset_quality_details.ts rename to src/platform/packages/shared/deeplinks/observability/locators/dataset_quality_details.ts diff --git a/packages/deeplinks/observability/locators/index.ts b/src/platform/packages/shared/deeplinks/observability/locators/index.ts similarity index 100% rename from packages/deeplinks/observability/locators/index.ts rename to src/platform/packages/shared/deeplinks/observability/locators/index.ts diff --git a/packages/deeplinks/observability/locators/logs_explorer.ts b/src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts similarity index 100% rename from packages/deeplinks/observability/locators/logs_explorer.ts rename to src/platform/packages/shared/deeplinks/observability/locators/logs_explorer.ts diff --git a/packages/deeplinks/observability/locators/observability_logs_explorer.ts b/src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts similarity index 100% rename from packages/deeplinks/observability/locators/observability_logs_explorer.ts rename to src/platform/packages/shared/deeplinks/observability/locators/observability_logs_explorer.ts diff --git a/packages/deeplinks/observability/locators/observability_onboarding.ts b/src/platform/packages/shared/deeplinks/observability/locators/observability_onboarding.ts similarity index 100% rename from packages/deeplinks/observability/locators/observability_onboarding.ts rename to src/platform/packages/shared/deeplinks/observability/locators/observability_onboarding.ts diff --git a/packages/deeplinks/observability/locators/uptime.ts b/src/platform/packages/shared/deeplinks/observability/locators/uptime.ts similarity index 100% rename from packages/deeplinks/observability/locators/uptime.ts rename to src/platform/packages/shared/deeplinks/observability/locators/uptime.ts diff --git a/packages/deeplinks/observability/package.json b/src/platform/packages/shared/deeplinks/observability/package.json similarity index 100% rename from packages/deeplinks/observability/package.json rename to src/platform/packages/shared/deeplinks/observability/package.json diff --git a/src/platform/packages/shared/deeplinks/observability/tsconfig.json b/src/platform/packages/shared/deeplinks/observability/tsconfig.json new file mode 100644 index 0000000000000..e1c207f1ba4d2 --- /dev/null +++ b/src/platform/packages/shared/deeplinks/observability/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/utility-types", + "@kbn/es-query", + ] +} diff --git a/packages/kbn-avc-banner/README.md b/src/platform/packages/shared/kbn-avc-banner/README.md similarity index 100% rename from packages/kbn-avc-banner/README.md rename to src/platform/packages/shared/kbn-avc-banner/README.md diff --git a/packages/kbn-avc-banner/index.ts b/src/platform/packages/shared/kbn-avc-banner/index.ts similarity index 100% rename from packages/kbn-avc-banner/index.ts rename to src/platform/packages/shared/kbn-avc-banner/index.ts diff --git a/src/platform/packages/shared/kbn-avc-banner/jest.config.js b/src/platform/packages/shared/kbn-avc-banner/jest.config.js new file mode 100644 index 0000000000000..09256a9d88b91 --- /dev/null +++ b/src/platform/packages/shared/kbn-avc-banner/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-avc-banner'], +}; diff --git a/packages/kbn-avc-banner/kibana.jsonc b/src/platform/packages/shared/kbn-avc-banner/kibana.jsonc similarity index 100% rename from packages/kbn-avc-banner/kibana.jsonc rename to src/platform/packages/shared/kbn-avc-banner/kibana.jsonc diff --git a/packages/kbn-avc-banner/package.json b/src/platform/packages/shared/kbn-avc-banner/package.json similarity index 100% rename from packages/kbn-avc-banner/package.json rename to src/platform/packages/shared/kbn-avc-banner/package.json diff --git a/packages/kbn-avc-banner/src/avc_banner_background.svg b/src/platform/packages/shared/kbn-avc-banner/src/avc_banner_background.svg similarity index 100% rename from packages/kbn-avc-banner/src/avc_banner_background.svg rename to src/platform/packages/shared/kbn-avc-banner/src/avc_banner_background.svg diff --git a/packages/kbn-avc-banner/src/custom.d.ts b/src/platform/packages/shared/kbn-avc-banner/src/custom.d.ts similarity index 100% rename from packages/kbn-avc-banner/src/custom.d.ts rename to src/platform/packages/shared/kbn-avc-banner/src/custom.d.ts diff --git a/packages/kbn-avc-banner/src/index.tsx b/src/platform/packages/shared/kbn-avc-banner/src/index.tsx similarity index 100% rename from packages/kbn-avc-banner/src/index.tsx rename to src/platform/packages/shared/kbn-avc-banner/src/index.tsx diff --git a/src/platform/packages/shared/kbn-avc-banner/tsconfig.json b/src/platform/packages/shared/kbn-avc-banner/tsconfig.json new file mode 100644 index 0000000000000..1f9876c64502f --- /dev/null +++ b/src/platform/packages/shared/kbn-avc-banner/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/kibana-react-plugin", + ] +} diff --git a/packages/kbn-cell-actions/.storybook/main.js b/src/platform/packages/shared/kbn-cell-actions/.storybook/main.js similarity index 100% rename from packages/kbn-cell-actions/.storybook/main.js rename to src/platform/packages/shared/kbn-cell-actions/.storybook/main.js diff --git a/packages/kbn-cell-actions/README.md b/src/platform/packages/shared/kbn-cell-actions/README.md similarity index 100% rename from packages/kbn-cell-actions/README.md rename to src/platform/packages/shared/kbn-cell-actions/README.md diff --git a/packages/kbn-cell-actions/actions/index.ts b/src/platform/packages/shared/kbn-cell-actions/actions/index.ts similarity index 100% rename from packages/kbn-cell-actions/actions/index.ts rename to src/platform/packages/shared/kbn-cell-actions/actions/index.ts diff --git a/packages/kbn-cell-actions/actions/utils.ts b/src/platform/packages/shared/kbn-cell-actions/actions/utils.ts similarity index 100% rename from packages/kbn-cell-actions/actions/utils.ts rename to src/platform/packages/shared/kbn-cell-actions/actions/utils.ts diff --git a/packages/kbn-cell-actions/constants.ts b/src/platform/packages/shared/kbn-cell-actions/constants.ts similarity index 100% rename from packages/kbn-cell-actions/constants.ts rename to src/platform/packages/shared/kbn-cell-actions/constants.ts diff --git a/packages/kbn-cell-actions/index.ts b/src/platform/packages/shared/kbn-cell-actions/index.ts similarity index 100% rename from packages/kbn-cell-actions/index.ts rename to src/platform/packages/shared/kbn-cell-actions/index.ts diff --git a/src/platform/packages/shared/kbn-cell-actions/jest.config.js b/src/platform/packages/shared/kbn-cell-actions/jest.config.js new file mode 100644 index 0000000000000..b55e4223182c6 --- /dev/null +++ b/src/platform/packages/shared/kbn-cell-actions/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-cell-actions'], +}; diff --git a/packages/kbn-cell-actions/kibana.jsonc b/src/platform/packages/shared/kbn-cell-actions/kibana.jsonc similarity index 100% rename from packages/kbn-cell-actions/kibana.jsonc rename to src/platform/packages/shared/kbn-cell-actions/kibana.jsonc diff --git a/packages/kbn-cell-actions/package.json b/src/platform/packages/shared/kbn-cell-actions/package.json similarity index 100% rename from packages/kbn-cell-actions/package.json rename to src/platform/packages/shared/kbn-cell-actions/package.json diff --git a/packages/kbn-cell-actions/src/__stories__/cell_actions.stories.tsx b/src/platform/packages/shared/kbn-cell-actions/src/__stories__/cell_actions.stories.tsx similarity index 100% rename from packages/kbn-cell-actions/src/__stories__/cell_actions.stories.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/__stories__/cell_actions.stories.tsx diff --git a/packages/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.test.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.test.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.test.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.test.ts diff --git a/packages/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/copy_to_clipboard/copy_to_clipboard.ts diff --git a/packages/kbn-cell-actions/src/actions/copy_to_clipboard/index.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/copy_to_clipboard/index.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/copy_to_clipboard/index.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/copy_to_clipboard/index.ts diff --git a/packages/kbn-cell-actions/src/actions/factory.test.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/factory.test.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/factory.test.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/factory.test.ts diff --git a/packages/kbn-cell-actions/src/actions/factory.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/factory.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/factory.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/factory.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/add_filter.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/add_filter.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/add_filter.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/add_filter.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/create_filter.test.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/create_filter.test.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/create_filter.test.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/create_filter.test.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/create_filter.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/create_filter.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/create_filter.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/create_filter.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/filter_in.test.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_in.test.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/filter_in.test.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_in.test.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/filter_in.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_in.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/filter_in.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_in.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/filter_out.test.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_out.test.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/filter_out.test.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_out.test.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/filter_out.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_out.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/filter_out.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/filter_out.ts diff --git a/packages/kbn-cell-actions/src/actions/filter/index.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/filter/index.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/filter/index.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/filter/index.ts diff --git a/packages/kbn-cell-actions/src/actions/index.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/index.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/index.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/index.ts diff --git a/packages/kbn-cell-actions/src/actions/translations.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/translations.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/translations.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/translations.ts diff --git a/packages/kbn-cell-actions/src/actions/types.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/types.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/types.ts diff --git a/packages/kbn-cell-actions/src/actions/utils.test.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/utils.test.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/utils.test.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/utils.test.ts diff --git a/packages/kbn-cell-actions/src/actions/utils.ts b/src/platform/packages/shared/kbn-cell-actions/src/actions/utils.ts similarity index 100% rename from packages/kbn-cell-actions/src/actions/utils.ts rename to src/platform/packages/shared/kbn-cell-actions/src/actions/utils.ts diff --git a/packages/kbn-cell-actions/src/components/cell_action_item.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/cell_action_item.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/cell_action_item.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/cell_action_item.test.tsx diff --git a/packages/kbn-cell-actions/src/components/cell_action_item.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/cell_action_item.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/cell_action_item.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/cell_action_item.tsx diff --git a/packages/kbn-cell-actions/src/components/cell_actions.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/cell_actions.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/cell_actions.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/cell_actions.test.tsx diff --git a/packages/kbn-cell-actions/src/components/cell_actions.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/cell_actions.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/cell_actions.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/cell_actions.tsx diff --git a/packages/kbn-cell-actions/src/components/extra_actions_button.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_button.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/extra_actions_button.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_button.test.tsx diff --git a/packages/kbn-cell-actions/src/components/extra_actions_button.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_button.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/extra_actions_button.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_button.tsx diff --git a/packages/kbn-cell-actions/src/components/extra_actions_popover.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_popover.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/extra_actions_popover.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_popover.test.tsx diff --git a/packages/kbn-cell-actions/src/components/extra_actions_popover.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_popover.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/extra_actions_popover.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/extra_actions_popover.tsx diff --git a/packages/kbn-cell-actions/src/components/hover_actions_popover.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/hover_actions_popover.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/hover_actions_popover.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/hover_actions_popover.test.tsx diff --git a/packages/kbn-cell-actions/src/components/hover_actions_popover.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/hover_actions_popover.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/hover_actions_popover.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/hover_actions_popover.tsx diff --git a/packages/kbn-cell-actions/src/components/index.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/index.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/index.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/index.tsx diff --git a/packages/kbn-cell-actions/src/components/inline_actions.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/inline_actions.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/inline_actions.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/inline_actions.test.tsx diff --git a/packages/kbn-cell-actions/src/components/inline_actions.tsx b/src/platform/packages/shared/kbn-cell-actions/src/components/inline_actions.tsx similarity index 100% rename from packages/kbn-cell-actions/src/components/inline_actions.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/components/inline_actions.tsx diff --git a/packages/kbn-cell-actions/src/components/translations.ts b/src/platform/packages/shared/kbn-cell-actions/src/components/translations.ts similarity index 100% rename from packages/kbn-cell-actions/src/components/translations.ts rename to src/platform/packages/shared/kbn-cell-actions/src/components/translations.ts diff --git a/packages/kbn-cell-actions/src/constants.ts b/src/platform/packages/shared/kbn-cell-actions/src/constants.ts similarity index 100% rename from packages/kbn-cell-actions/src/constants.ts rename to src/platform/packages/shared/kbn-cell-actions/src/constants.ts diff --git a/packages/kbn-cell-actions/src/context/cell_actions_context.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/context/cell_actions_context.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/context/cell_actions_context.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/context/cell_actions_context.test.tsx diff --git a/packages/kbn-cell-actions/src/context/cell_actions_context.tsx b/src/platform/packages/shared/kbn-cell-actions/src/context/cell_actions_context.tsx similarity index 100% rename from packages/kbn-cell-actions/src/context/cell_actions_context.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/context/cell_actions_context.tsx diff --git a/packages/kbn-cell-actions/src/context/index.ts b/src/platform/packages/shared/kbn-cell-actions/src/context/index.ts similarity index 100% rename from packages/kbn-cell-actions/src/context/index.ts rename to src/platform/packages/shared/kbn-cell-actions/src/context/index.ts diff --git a/packages/kbn-cell-actions/src/hooks/actions.test.ts b/src/platform/packages/shared/kbn-cell-actions/src/hooks/actions.test.ts similarity index 100% rename from packages/kbn-cell-actions/src/hooks/actions.test.ts rename to src/platform/packages/shared/kbn-cell-actions/src/hooks/actions.test.ts diff --git a/packages/kbn-cell-actions/src/hooks/actions.ts b/src/platform/packages/shared/kbn-cell-actions/src/hooks/actions.ts similarity index 100% rename from packages/kbn-cell-actions/src/hooks/actions.ts rename to src/platform/packages/shared/kbn-cell-actions/src/hooks/actions.ts diff --git a/packages/kbn-cell-actions/src/hooks/index.ts b/src/platform/packages/shared/kbn-cell-actions/src/hooks/index.ts similarity index 100% rename from packages/kbn-cell-actions/src/hooks/index.ts rename to src/platform/packages/shared/kbn-cell-actions/src/hooks/index.ts diff --git a/packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.test.tsx diff --git a/packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx b/src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx similarity index 100% rename from packages/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/hooks/use_data_grid_column_cell_actions.tsx diff --git a/packages/kbn-cell-actions/src/hooks/use_load_actions.test.tsx b/src/platform/packages/shared/kbn-cell-actions/src/hooks/use_load_actions.test.tsx similarity index 100% rename from packages/kbn-cell-actions/src/hooks/use_load_actions.test.tsx rename to src/platform/packages/shared/kbn-cell-actions/src/hooks/use_load_actions.test.tsx diff --git a/packages/kbn-cell-actions/src/hooks/use_load_actions.ts b/src/platform/packages/shared/kbn-cell-actions/src/hooks/use_load_actions.ts similarity index 100% rename from packages/kbn-cell-actions/src/hooks/use_load_actions.ts rename to src/platform/packages/shared/kbn-cell-actions/src/hooks/use_load_actions.ts diff --git a/packages/kbn-cell-actions/src/mocks/helpers.ts b/src/platform/packages/shared/kbn-cell-actions/src/mocks/helpers.ts similarity index 100% rename from packages/kbn-cell-actions/src/mocks/helpers.ts rename to src/platform/packages/shared/kbn-cell-actions/src/mocks/helpers.ts diff --git a/packages/kbn-cell-actions/src/types.ts b/src/platform/packages/shared/kbn-cell-actions/src/types.ts similarity index 100% rename from packages/kbn-cell-actions/src/types.ts rename to src/platform/packages/shared/kbn-cell-actions/src/types.ts diff --git a/src/platform/packages/shared/kbn-cell-actions/tsconfig.json b/src/platform/packages/shared/kbn-cell-actions/tsconfig.json new file mode 100644 index 0000000000000..f71c8caf5dcfe --- /dev/null +++ b/src/platform/packages/shared/kbn-cell-actions/tsconfig.json @@ -0,0 +1,28 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@testing-library/jest-dom", + "@testing-library/react" + ] + }, + "include": ["**/*.ts", "**/*.tsx"], + "kbn_references": [ + "@kbn/ui-theme", + "@kbn/i18n", + "@kbn/core", + "@kbn/data-plugin", + "@kbn/es-query", + "@kbn/ui-actions-plugin", + "@kbn/field-types", + "@kbn/data-views-plugin", + "@kbn/core-notifications-browser", + "@kbn/utility-types", + ], + "exclude": ["target/**/*"] +} diff --git a/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.test.ts b/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.test.ts index 9c914b449f536..61fdd931ca7bb 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.test.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.test.ts @@ -8,14 +8,367 @@ */ import { Builder } from '.'; +import { BasicPrettyPrinter } from '../pretty_print'; -test('can mint a numeric literal', () => { - const node = Builder.expression.literal.numeric({ value: 42, literalType: 'integer' }); +describe('command', () => { + test('can create a LIMIT command', () => { + const node = Builder.command({ + name: 'limit', + args: [Builder.expression.literal.integer(10)], + }); + const text = BasicPrettyPrinter.command(node); - expect(node).toMatchObject({ - type: 'literal', - literalType: 'integer', - name: '42', - value: 42, + expect(text).toBe('LIMIT 10'); + }); + + test('can create a FROM command with BY option', () => { + const node = Builder.command({ + name: 'from', + args: [ + Builder.expression.source({ index: 'my_index', sourceType: 'index' }), + Builder.option({ + name: 'by', + args: [ + Builder.expression.column({ + args: [Builder.identifier({ name: '_id' })], + }), + Builder.expression.column({ + args: [Builder.identifier('_source')], + }), + ], + }), + ], + }); + const text = BasicPrettyPrinter.command(node); + + expect(text).toBe('FROM my_index BY _id, _source'); + }); +}); + +describe('function', () => { + test('can mint a binary expression', () => { + const node = Builder.expression.func.binary('+', [ + Builder.expression.literal.integer(1), + Builder.expression.literal.integer(2), + ]); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('1 + 2'); + }); + + test('can mint a unary expression', () => { + const node = Builder.expression.func.unary('not', Builder.expression.literal.integer(123)); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('NOT 123'); + }); + + test('can mint "-" unary expression', () => { + const node = Builder.expression.func.unary('-', Builder.expression.literal.integer(123)); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('-123'); + }); + + test('can mint a unary postfix expression', () => { + const node = Builder.expression.func.postfix( + 'is not null', + Builder.expression.literal.integer(123) + ); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('123 IS NOT NULL'); + }); + + test('can mint a function call', () => { + const node = Builder.expression.func.call('agg', [ + Builder.expression.literal.integer(1), + Builder.expression.literal.integer(2), + Builder.expression.literal.integer(3), + ]); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('AGG(1, 2, 3)'); + }); +}); + +describe('source', () => { + test('basic index', () => { + const node = Builder.expression.source({ index: 'my_index', sourceType: 'index' }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_index'); + }); + + test('basic index using shortcut', () => { + const node = Builder.expression.source('my_index'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_index'); + }); + + test('index with cluster', () => { + const node = Builder.expression.source({ + index: 'my_index', + sourceType: 'index', + cluster: 'my_cluster', + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_cluster:my_index'); + }); + + test('can use .indexSource() shorthand to specify cluster', () => { + const node = Builder.expression.indexSource('my_index', 'my_cluster'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_cluster:my_index'); + }); + + test('policy index', () => { + const node = Builder.expression.source({ index: 'my_policy', sourceType: 'policy' }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_policy'); + }); +}); + +describe('column', () => { + test('a simple field', () => { + const node = Builder.expression.column({ args: [Builder.identifier('my_field')] }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_field'); + }); + + test('a simple field using shorthand', () => { + const node = Builder.expression.column('my_field'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_field'); + }); + + test('a nested field', () => { + const node = Builder.expression.column({ + args: [Builder.identifier('locale'), Builder.identifier('region')], + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('locale.region'); + }); + + test('a nested field using shortcut', () => { + const node = Builder.expression.column(['locale', 'region']); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('locale.region'); + }); + + test('a nested with params using shortcut', () => { + const node = Builder.expression.column(['locale', '?param', 'region']); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('locale.?param.region'); + }); +}); + +describe('literal', () => { + describe('"time interval"', () => { + test('a basic time Interval node', () => { + const node = Builder.expression.literal.qualifiedInteger(42, 'days'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('42 days'); + }); + }); + + describe('null', () => { + test('can create a NULL node', () => { + const node = Builder.expression.literal.nil(); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('NULL'); + expect(node).toMatchObject({ + type: 'literal', + literalType: 'null', + }); + }); + }); + + describe('numeric', () => { + test('integer shorthand', () => { + const node = Builder.expression.literal.integer(42); + + expect(node).toMatchObject({ + type: 'literal', + literalType: 'integer', + name: '42', + value: 42, + }); + }); + + test('decimal shorthand', () => { + const node = Builder.expression.literal.decimal(3.14); + + expect(node).toMatchObject({ + type: 'literal', + literalType: 'double', + name: '3.14', + value: 3.14, + }); + }); + }); + + describe('string', () => { + test('can create a basic string', () => { + const node = Builder.expression.literal.string('abc'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('"""abc"""'); + expect(node).toMatchObject({ + type: 'literal', + literalType: 'keyword', + name: '"""abc"""', + value: '"""abc"""', + }); + }); + }); + + describe('boolean', () => { + test('TRUE literal', () => { + const node = Builder.expression.literal.boolean(true); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('TRUE'); + expect(node).toMatchObject({ + type: 'literal', + literalType: 'boolean', + name: 'true', + value: 'true', + }); + }); + }); + + describe('lists', () => { + test('string list', () => { + const node = Builder.expression.literal.list({ + values: [ + Builder.expression.literal.string('a'), + Builder.expression.literal.string('b'), + Builder.expression.literal.string('c'), + ], + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('["""a""", """b""", """c"""]'); + }); + + test('integer list', () => { + const node = Builder.expression.literal.list({ + values: [ + Builder.expression.literal.integer(1), + Builder.expression.literal.integer(2), + Builder.expression.literal.integer(3), + ], + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('[1, 2, 3]'); + }); + + test('boolean list', () => { + const node = Builder.expression.literal.list({ + values: [ + Builder.expression.literal.boolean(true), + Builder.expression.literal.boolean(false), + ], + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('[TRUE, FALSE]'); + }); + }); +}); + +describe('identifier', () => { + test('a single identifier node', () => { + const node = Builder.identifier('text'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('text'); + }); +}); + +describe('param', () => { + test('unnamed', () => { + const node = Builder.param.build('?'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('?'); + expect(node).toMatchObject({ + type: 'literal', + literalType: 'param', + paramType: 'unnamed', + }); + }); + + test('named', () => { + const node = Builder.param.build('?the_name'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('?the_name'); + expect(node).toMatchObject({ + type: 'literal', + literalType: 'param', + paramType: 'named', + value: 'the_name', + }); + }); + + test('positional', () => { + const node = Builder.param.build('?123'); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('?123'); + expect(node).toMatchObject({ + type: 'literal', + literalType: 'param', + paramType: 'positional', + value: 123, + }); + }); +}); + +describe('cast', () => { + test('cast to integer', () => { + const node = Builder.expression.inlineCast({ + value: Builder.expression.literal.decimal(123.45), + castType: 'integer', + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('123.45::INTEGER'); + }); +}); + +describe('order', () => { + test('field with no modifiers', () => { + const node = Builder.expression.order(Builder.expression.column('my_field'), { + nulls: '', + order: '', + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('my_field'); + }); + + test('field with ASC and NULL FIRST modifiers', () => { + const node = Builder.expression.order(Builder.expression.column(['a', 'b', 'c']), { + nulls: 'NULLS FIRST', + order: 'ASC', + }); + const text = BasicPrettyPrinter.expression(node); + + expect(text).toBe('a.b.c ASC NULLS FIRST'); }); }); diff --git a/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.ts b/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.ts index 07b9f14875abb..44e404609ffd6 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/builder/builder.ts @@ -32,6 +32,12 @@ import { ESQLParamLiteral, ESQLFunction, ESQLAstItem, + ESQLBinaryExpression, + ESQLUnaryExpression, + ESQLTimeInterval, + ESQLStringLiteral, + ESQLBooleanLiteral, + ESQLNullLiteral, } from '../types'; import { AstNodeParserFields, AstNodeTemplate, PartialFields } from './types'; @@ -100,14 +106,22 @@ export namespace Builder { }; }; + export type SourceTemplate = { index: string } & Omit<AstNodeTemplate<ESQLSource>, 'name'>; + export const source = ( - template: AstNodeTemplate<ESQLSource>, + indexOrTemplate: string | SourceTemplate, fromParser?: Partial<AstNodeParserFields> ): ESQLSource => { + const template: SourceTemplate = + typeof indexOrTemplate === 'string' + ? { sourceType: 'index', index: indexOrTemplate } + : indexOrTemplate; + const { index, cluster } = template; return { ...template, ...Builder.parserFields(fromParser), type: 'source', + name: (cluster ? cluster + ':' : '') + index, }; }; @@ -122,16 +136,29 @@ export namespace Builder { ...Builder.parserFields(fromParser), index, cluster, - name: (cluster ? cluster + ':' : '') + index, sourceType: 'index', type: 'source', + name: (cluster ? cluster + ':' : '') + index, }; }; + export type ColumnTemplate = Omit<AstNodeTemplate<ESQLColumn>, 'name' | 'quoted' | 'parts'>; + export const column = ( - template: Omit<AstNodeTemplate<ESQLColumn>, 'name' | 'quoted' | 'parts'>, + nameOrTemplate: string | string[] | ColumnTemplate, fromParser?: Partial<AstNodeParserFields> ): ESQLColumn => { + if (typeof nameOrTemplate === 'string') { + nameOrTemplate = [nameOrTemplate]; + } + + const template: ColumnTemplate = Array.isArray(nameOrTemplate) + ? { + args: nameOrTemplate.map((name: string) => + name[0] === '?' ? Builder.param.build(name) : Builder.identifier(name) + ), + } + : nameOrTemplate; const node: ESQLColumn = { ...template, ...Builder.parserFields(fromParser), @@ -207,21 +234,83 @@ export namespace Builder { ); }; + export const unary = ( + name: string, + arg: ESQLAstItem, + template?: Omit<AstNodeTemplate<ESQLFunction>, 'subtype' | 'name' | 'operator' | 'args'>, + fromParser?: Partial<AstNodeParserFields> + ): ESQLUnaryExpression => { + const operator = Builder.identifier({ name }); + return Builder.expression.func.node( + { ...template, name, operator, args: [arg], subtype: 'unary-expression' }, + fromParser + ) as ESQLUnaryExpression; + }; + + export const postfix = ( + name: string, + arg: ESQLAstItem, + template?: Omit<AstNodeTemplate<ESQLFunction>, 'subtype' | 'name' | 'operator' | 'args'>, + fromParser?: Partial<AstNodeParserFields> + ): ESQLUnaryExpression => { + const operator = Builder.identifier({ name }); + return Builder.expression.func.node( + { ...template, name, operator, args: [arg], subtype: 'postfix-unary-expression' }, + fromParser + ) as ESQLUnaryExpression; + }; + export const binary = ( name: string, args: [left: ESQLAstItem, right: ESQLAstItem], template?: Omit<AstNodeTemplate<ESQLFunction>, 'subtype' | 'name' | 'operator' | 'args'>, fromParser?: Partial<AstNodeParserFields> - ): ESQLFunction => { + ): ESQLBinaryExpression => { const operator = Builder.identifier({ name }); return Builder.expression.func.node( { ...template, name, operator, args, subtype: 'binary-expression' }, fromParser - ); + ) as ESQLBinaryExpression; }; } export namespace literal { + /** + * Constructs a NULL literal node. + */ + export const nil = ( + template?: Omit<AstNodeTemplate<ESQLNullLiteral>, 'name' | 'literalType'>, + fromParser?: Partial<AstNodeParserFields> + ): ESQLNullLiteral => { + const node: ESQLNullLiteral = { + ...template, + ...Builder.parserFields(fromParser), + type: 'literal', + literalType: 'null', + name: 'NULL', + value: 'NULL', + }; + + return node; + }; + + export const boolean = ( + value: boolean, + template?: Omit<AstNodeTemplate<ESQLBooleanLiteral>, 'name' | 'literalType'>, + fromParser?: Partial<AstNodeParserFields> + ): ESQLBooleanLiteral => { + const node: ESQLBooleanLiteral = { + ...template, + ...Builder.parserFields(fromParser), + type: 'literal', + literalType: 'boolean', + name: String(value), + value: String(value), + }; + + return node; + }; + /** * Constructs an integer literal node. */ @@ -239,11 +328,16 @@ export namespace Builder { return node; }; + /** + * Creates an integer literal. + * + * @example 42 + */ export const integer = ( value: number, - template?: Omit<AstNodeTemplate<ESQLIntegerLiteral | ESQLDecimalLiteral>, 'name'>, + template?: Omit<AstNodeTemplate<ESQLIntegerLiteral>, 'name'>, fromParser?: Partial<AstNodeParserFields> - ): ESQLIntegerLiteral | ESQLDecimalLiteral => { + ): ESQLIntegerLiteral => { return Builder.expression.literal.numeric( { ...template, @@ -251,7 +345,66 @@ export namespace Builder { literalType: 'integer', }, fromParser - ); + ) as ESQLIntegerLiteral; + }; + + /** + * Creates a floating point number literal. + * + * @example 3.14 + */ + export const decimal = ( + value: number, + template?: Omit<AstNodeTemplate<ESQLDecimalLiteral>, 'name'>, + fromParser?: Partial<AstNodeParserFields> + ): ESQLDecimalLiteral => { + return Builder.expression.literal.numeric( + { + ...template, + value, + literalType: 'double', + }, + fromParser + ) as ESQLDecimalLiteral; + }; + + export const string = ( + value: string, + template?: Omit<AstNodeTemplate<ESQLStringLiteral>, 'name' | 'literalType'>, + fromParser?: Partial<AstNodeParserFields> + ): ESQLStringLiteral => { + // TODO: Once (https://github.com/elastic/kibana/issues/203445) do not use + // triple quotes and escape the string. + const quotedValue = '"""' + value + '"""'; + const node: ESQLStringLiteral = { + ...template, + ...Builder.parserFields(fromParser), + type: 'literal', + literalType: 'keyword', + name: quotedValue, + value: quotedValue, + }; + + return node; + }; + + /** + * Constructs "time interval" literal node. + * + * @example 1337 milliseconds + */ + export const qualifiedInteger = ( + quantity: ESQLTimeInterval['quantity'], + unit: ESQLTimeInterval['unit'], + fromParser?: Partial<AstNodeParserFields> + ): ESQLTimeInterval => { + return { + ...Builder.parserFields(fromParser), + type: 'timeInterval', + unit, + quantity, + name: `${quantity} ${unit}`, + }; }; export const list = ( @@ -269,9 +422,11 @@ export namespace Builder { } export const identifier = ( - template: AstNodeTemplate<ESQLIdentifier>, + nameOrTemplate: string | AstNodeTemplate<ESQLIdentifier>, fromParser?: Partial<AstNodeParserFields> ): ESQLIdentifier => { + const template: AstNodeTemplate<ESQLIdentifier> = + typeof nameOrTemplate === 'string' ? { name: nameOrTemplate } : nameOrTemplate; return { ...template, ...Builder.parserFields(fromParser), diff --git a/src/platform/packages/shared/kbn-esql-ast/src/mutate/generic/commands/args/index.test.ts b/src/platform/packages/shared/kbn-esql-ast/src/mutate/generic/commands/args/index.test.ts index e687c4528dd7d..29c0898b694d8 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/mutate/generic/commands/args/index.test.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/mutate/generic/commands/args/index.test.ts @@ -21,7 +21,7 @@ describe('generic.commands.args', () => { generic.commands.args.insert( command!, - Builder.expression.source({ name: 'test', sourceType: 'index' }), + Builder.expression.source({ index: 'test', sourceType: 'index' }), 123 ); @@ -37,7 +37,7 @@ describe('generic.commands.args', () => { generic.commands.args.insert( command!, - Builder.expression.source({ name: 'test', sourceType: 'index' }), + Builder.expression.source({ index: 'test', sourceType: 'index' }), 0 ); @@ -53,7 +53,7 @@ describe('generic.commands.args', () => { generic.commands.args.insert( command!, - Builder.expression.source({ name: 'test', sourceType: 'index' }), + Builder.expression.source({ index: 'test', sourceType: 'index' }), 1 ); @@ -70,7 +70,7 @@ describe('generic.commands.args', () => { generic.commands.args.insert( command!, - Builder.expression.source({ name: 'test', sourceType: 'index' }), + Builder.expression.source({ index: 'test', sourceType: 'index' }), 123 ); @@ -86,7 +86,7 @@ describe('generic.commands.args', () => { generic.commands.args.insert( command!, - Builder.expression.source({ name: 'test', sourceType: 'index' }), + Builder.expression.source({ index: 'test', sourceType: 'index' }), 0 ); @@ -102,7 +102,7 @@ describe('generic.commands.args', () => { generic.commands.args.insert( command!, - Builder.expression.source({ name: 'test', sourceType: 'index' }), + Builder.expression.source({ index: 'test', sourceType: 'index' }), 1 ); @@ -121,7 +121,7 @@ describe('generic.commands.args', () => { generic.commands.args.append( command!, - Builder.expression.source({ name: 'test', sourceType: 'index' }) + Builder.expression.source({ index: 'test', sourceType: 'index' }) ); const src2 = BasicPrettyPrinter.print(root); diff --git a/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/commands.test.ts b/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/commands.test.ts index 6fb176c9624f7..865d8ef64e272 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/commands.test.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/commands.test.ts @@ -141,6 +141,35 @@ describe('commands', () => { ]); }); + it('KEEP (with param)', () => { + const query = 'FROM index | KEEP abc, ?param'; + const { ast } = parse(query); + + expect(ast).toMatchObject([ + {}, + { + type: 'command', + name: 'keep', + args: [ + { + type: 'column', + name: 'abc', + }, + { + type: 'column', + args: [ + { + type: 'literal', + literalType: 'param', + value: 'param', + }, + ], + }, + ], + }, + ]); + }); + it('SORT', () => { const query = 'FROM index | SORT 1'; const { ast } = parse(query); diff --git a/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/literal.test.ts b/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/literal.test.ts index ede899d4d8058..ac2914a55422e 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/literal.test.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/parser/__tests__/literal.test.ts @@ -11,6 +11,19 @@ import { parse } from '..'; import { ESQLLiteral } from '../../types'; describe('literal expression', () => { + it('NULL', () => { + const text = 'ROW NULL'; + const { ast } = parse(text); + const literal = ast[0].args[0] as ESQLLiteral; + + expect(literal).toMatchObject({ + type: 'literal', + literalType: 'null', + name: 'NULL', + value: 'NULL', + }); + }); + it('numeric expression captures "value", and "name" fields', () => { const text = 'ROW 1'; const { ast } = parse(text); @@ -47,4 +60,55 @@ describe('literal expression', () => { ], }); }); + + // TODO: Un-skip once string parsing fixed: https://github.com/elastic/kibana/issues/203445 + it.skip('single-quoted string', () => { + const text = 'ROW "abc"'; + const { root } = parse(text); + + expect(root.commands[0]).toMatchObject({ + type: 'command', + args: [ + { + type: 'literal', + literalType: 'keyword', + value: 'abc', + }, + ], + }); + }); + + // TODO: Un-skip once string parsing fixed: https://github.com/elastic/kibana/issues/203445 + it.skip('unescapes characters', () => { + const text = 'ROW "a\\nbc"'; + const { root } = parse(text); + + expect(root.commands[0]).toMatchObject({ + type: 'command', + args: [ + { + type: 'literal', + literalType: 'keyword', + value: 'a\nbc', + }, + ], + }); + }); + + // TODO: Un-skip once string parsing fixed: https://github.com/elastic/kibana/issues/203445 + it.skip('triple-quoted string', () => { + const text = 'ROW """abc"""'; + const { root } = parse(text); + + expect(root.commands[0]).toMatchObject({ + type: 'command', + args: [ + { + type: 'literal', + literalType: 'keyword', + value: 'abc', + }, + ], + }); + }); }); diff --git a/src/platform/packages/shared/kbn-esql-ast/src/parser/factories.ts b/src/platform/packages/shared/kbn-esql-ast/src/parser/factories.ts index 388469e82ab99..df30e596993ea 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/parser/factories.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/parser/factories.ts @@ -119,19 +119,6 @@ export function createFakeMultiplyLiteral( }; } -export function createLiteralString(token: Token): ESQLLiteral { - const text = token.text!; - return { - type: 'literal', - literalType: 'keyword', - text, - name: text, - value: text, - location: getPosition(token), - incomplete: Boolean(token.text === ''), - }; -} - function isMissingText(text: string) { return /<missing /.test(text); } @@ -526,11 +513,21 @@ export function createColumn(ctx: ParserRuleContext): ESQLColumn { if (ctx instanceof QualifiedNamePatternContext) { const list = ctx.identifierPattern_list(); - for (const identifier of list) { - const name = parseIdentifier(identifier.getText()); - const node = Builder.identifier({ name }, createParserFields(identifier)); + for (const identifierPattern of list) { + const ID_PATTERN = identifierPattern.ID_PATTERN(); - args.push(node); + if (ID_PATTERN) { + const name = parseIdentifier(ID_PATTERN.getText()); + const node = Builder.identifier({ name }, createParserFields(identifierPattern)); + + args.push(node); + } else { + const parameter = createParam(identifierPattern.parameter()); + + if (parameter) { + args.push(parameter); + } + } } } else if (ctx instanceof QualifiedNameContext) { const list = ctx.identifierOrParameter_list(); diff --git a/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/basic_pretty_printer.ts b/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/basic_pretty_printer.ts index 60248774f9157..296425b1eca07 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/basic_pretty_printer.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/basic_pretty_printer.ts @@ -289,7 +289,8 @@ export class BasicPrettyPrinter { case 'unary-expression': { operator = this.keyword(operator); - const formatted = `${operator} ${ctx.visitArgument(0, undefined)}`; + const separator = operator === '-' || operator === '+' ? '' : ' '; + const formatted = `${operator}${separator}${ctx.visitArgument(0, undefined)}`; return this.decorateWithComments(ctx.node, formatted); } diff --git a/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/leaf_printer.ts b/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/leaf_printer.ts index bb768c1e6a738..5432fd815ba52 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/leaf_printer.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/leaf_printer.ts @@ -27,7 +27,16 @@ const regexUnquotedIdPattern = /^([a-z\*_\@]{1})[a-z0-9_\*]*$/i; * atomic short string. */ export const LeafPrinter = { - source: (node: ESQLSource) => node.name, + source: (node: ESQLSource): string => { + const { index, name, cluster } = node; + let text = index || name || ''; + + if (cluster) { + text = `${cluster}:${text}`; + } + + return text; + }, identifier: (node: ESQLIdentifier) => { const name = node.name; diff --git a/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/wrapping_pretty_printer.ts b/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/wrapping_pretty_printer.ts index 9ba4ce8b0a5ae..f9612a2233b89 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/wrapping_pretty_printer.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/pretty_print/wrapping_pretty_printer.ts @@ -526,7 +526,8 @@ export class WrappingPrettyPrinter { switch (node.subtype) { case 'unary-expression': { - txt = `${operator} ${ctx.visitArgument(0, inp).txt}`; + const separator = operator === '-' || operator === '+' ? '' : ' '; + txt = `${operator}${separator}${ctx.visitArgument(0, inp).txt}`; break; } case 'postfix-unary-expression': { diff --git a/src/platform/packages/shared/kbn-esql-ast/src/types.ts b/src/platform/packages/shared/kbn-esql-ast/src/types.ts index a204cf50901ce..d2e2bb8ae775c 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/types.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/types.ts @@ -257,6 +257,7 @@ export interface ESQLUnknownItem extends ESQLAstBaseItem { } export interface ESQLTimeInterval extends ESQLAstBaseItem { + /** @todo For consistency with other literals, this should be `literal`, not `timeInterval`. */ type: 'timeInterval'; unit: string; quantity: number; @@ -363,7 +364,10 @@ export interface ESQLNullLiteral extends ESQLAstBaseItem { // @internal export interface ESQLStringLiteral extends ESQLAstBaseItem { type: 'literal'; + + /** This really should be `string`, not `keyword`. */ literalType: 'keyword'; + value: string; } diff --git a/packages/kbn-io-ts-utils/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/index.ts diff --git a/src/platform/packages/shared/kbn-io-ts-utils/jest.config.js b/src/platform/packages/shared/kbn-io-ts-utils/jest.config.js new file mode 100644 index 0000000000000..425673182b7e4 --- /dev/null +++ b/src/platform/packages/shared/kbn-io-ts-utils/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-io-ts-utils'], +}; diff --git a/packages/kbn-io-ts-utils/kibana.jsonc b/src/platform/packages/shared/kbn-io-ts-utils/kibana.jsonc similarity index 100% rename from packages/kbn-io-ts-utils/kibana.jsonc rename to src/platform/packages/shared/kbn-io-ts-utils/kibana.jsonc diff --git a/packages/kbn-io-ts-utils/package.json b/src/platform/packages/shared/kbn-io-ts-utils/package.json similarity index 100% rename from packages/kbn-io-ts-utils/package.json rename to src/platform/packages/shared/kbn-io-ts-utils/package.json diff --git a/packages/kbn-io-ts-utils/src/array_to_string_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/array_to_string_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/array_to_string_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/array_to_string_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/array_to_string_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/array_to_string_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/array_to_string_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/array_to_string_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/date_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/date_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/date_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/date_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/date_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/date_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/date_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/date_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/datemath_string_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/datemath_string_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/datemath_string_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/datemath_string_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/datemath_string_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/datemath_string_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/datemath_string_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/datemath_string_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/decode_or_throw.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/decode_or_throw.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/decode_or_throw.ts diff --git a/packages/kbn-io-ts-utils/src/deep_exact_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/deep_exact_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/deep_exact_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/deep_exact_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/deep_exact_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/in_range_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/in_range_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/in_range_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/in_range_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/in_range_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/index_pattern_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/index_pattern_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/index_pattern_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/index_pattern_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/index_pattern_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/index_pattern_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/index_pattern_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/index_pattern_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/is_greater_or_equal/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/is_greater_or_equal/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/is_greater_or_equal/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/is_greater_or_equal/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/is_greater_or_equal/index.ts diff --git a/packages/kbn-io-ts-utils/src/iso_to_epoch_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/iso_to_epoch_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/iso_to_epoch_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/iso_to_epoch_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/iso_to_epoch_secs_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/json_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/json_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/json_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/json_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/json_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/json_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/json_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/json_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/literal_value_from_undefined_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/merge_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/merge_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/merge_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/merge_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/merge_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/non_empty_string_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/non_empty_string_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/non_empty_string_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/non_empty_string_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/non_empty_string_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/parseable_types/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/parseable_types/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/parseable_types/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/parseable_types/index.ts diff --git a/packages/kbn-io-ts-utils/src/route_validation/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/route_validation/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/route_validation/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/route_validation/index.ts diff --git a/packages/kbn-io-ts-utils/src/strict_keys_rt/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/strict_keys_rt/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/strict_keys_rt/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/strict_keys_rt/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/strict_keys_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/strict_keys_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/strict_keys_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/strict_keys_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/time_key_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/time_key_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/time_key_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/to_boolean_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/to_boolean_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/to_boolean_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/to_boolean_rt/index.ts diff --git a/packages/kbn-io-ts-utils/src/to_json_schema/index.test.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/to_json_schema/index.test.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/to_json_schema/index.test.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/to_json_schema/index.test.ts diff --git a/packages/kbn-io-ts-utils/src/to_json_schema/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/to_json_schema/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/to_json_schema/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/to_json_schema/index.ts diff --git a/packages/kbn-io-ts-utils/src/to_number_rt/index.ts b/src/platform/packages/shared/kbn-io-ts-utils/src/to_number_rt/index.ts similarity index 100% rename from packages/kbn-io-ts-utils/src/to_number_rt/index.ts rename to src/platform/packages/shared/kbn-io-ts-utils/src/to_number_rt/index.ts diff --git a/src/platform/packages/shared/kbn-io-ts-utils/tsconfig.json b/src/platform/packages/shared/kbn-io-ts-utils/tsconfig.json new file mode 100644 index 0000000000000..adaa8b70c4b14 --- /dev/null +++ b/src/platform/packages/shared/kbn-io-ts-utils/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/datemath" + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/packages/kbn-management/cards_navigation/README.mdx b/src/platform/packages/shared/kbn-management/cards_navigation/README.mdx similarity index 100% rename from packages/kbn-management/cards_navigation/README.mdx rename to src/platform/packages/shared/kbn-management/cards_navigation/README.mdx diff --git a/packages/kbn-management/cards_navigation/index.ts b/src/platform/packages/shared/kbn-management/cards_navigation/index.ts similarity index 100% rename from packages/kbn-management/cards_navigation/index.ts rename to src/platform/packages/shared/kbn-management/cards_navigation/index.ts diff --git a/packages/kbn-management/cards_navigation/kibana.jsonc b/src/platform/packages/shared/kbn-management/cards_navigation/kibana.jsonc similarity index 100% rename from packages/kbn-management/cards_navigation/kibana.jsonc rename to src/platform/packages/shared/kbn-management/cards_navigation/kibana.jsonc diff --git a/packages/kbn-management/cards_navigation/mocks/mocks.ts b/src/platform/packages/shared/kbn-management/cards_navigation/mocks/mocks.ts similarity index 100% rename from packages/kbn-management/cards_navigation/mocks/mocks.ts rename to src/platform/packages/shared/kbn-management/cards_navigation/mocks/mocks.ts diff --git a/packages/kbn-management/cards_navigation/mocks/storybook.mock.ts b/src/platform/packages/shared/kbn-management/cards_navigation/mocks/storybook.mock.ts similarity index 100% rename from packages/kbn-management/cards_navigation/mocks/storybook.mock.ts rename to src/platform/packages/shared/kbn-management/cards_navigation/mocks/storybook.mock.ts diff --git a/packages/kbn-management/cards_navigation/package.json b/src/platform/packages/shared/kbn-management/cards_navigation/package.json similarity index 100% rename from packages/kbn-management/cards_navigation/package.json rename to src/platform/packages/shared/kbn-management/cards_navigation/package.json diff --git a/packages/kbn-management/cards_navigation/src/cards_navigation.stories.tsx b/src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.stories.tsx similarity index 100% rename from packages/kbn-management/cards_navigation/src/cards_navigation.stories.tsx rename to src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.stories.tsx diff --git a/packages/kbn-management/cards_navigation/src/cards_navigation.test.tsx b/src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.test.tsx similarity index 100% rename from packages/kbn-management/cards_navigation/src/cards_navigation.test.tsx rename to src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.test.tsx diff --git a/packages/kbn-management/cards_navigation/src/cards_navigation.tsx b/src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.tsx similarity index 100% rename from packages/kbn-management/cards_navigation/src/cards_navigation.tsx rename to src/platform/packages/shared/kbn-management/cards_navigation/src/cards_navigation.tsx diff --git a/packages/kbn-management/cards_navigation/src/consts.tsx b/src/platform/packages/shared/kbn-management/cards_navigation/src/consts.tsx similarity index 100% rename from packages/kbn-management/cards_navigation/src/consts.tsx rename to src/platform/packages/shared/kbn-management/cards_navigation/src/consts.tsx diff --git a/packages/kbn-management/cards_navigation/src/index.ts b/src/platform/packages/shared/kbn-management/cards_navigation/src/index.ts similarity index 100% rename from packages/kbn-management/cards_navigation/src/index.ts rename to src/platform/packages/shared/kbn-management/cards_navigation/src/index.ts diff --git a/packages/kbn-management/cards_navigation/src/types.ts b/src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts similarity index 100% rename from packages/kbn-management/cards_navigation/src/types.ts rename to src/platform/packages/shared/kbn-management/cards_navigation/src/types.ts diff --git a/src/platform/packages/shared/kbn-management/cards_navigation/tsconfig.json b/src/platform/packages/shared/kbn-management/cards_navigation/tsconfig.json new file mode 100644 index 0000000000000..0005162e325f0 --- /dev/null +++ b/src/platform/packages/shared/kbn-management/cards_navigation/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@kbn/ambient-ui-types" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + ] +} diff --git a/src/platform/packages/shared/kbn-management/jest.config.js b/src/platform/packages/shared/kbn-management/jest.config.js new file mode 100644 index 0000000000000..e5fdb49ff9b97 --- /dev/null +++ b/src/platform/packages/shared/kbn-management/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-management'], +}; diff --git a/packages/kbn-management/settings/components/field_input/README.mdx b/src/platform/packages/shared/kbn-management/settings/components/field_input/README.mdx similarity index 100% rename from packages/kbn-management/settings/components/field_input/README.mdx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/README.mdx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/array_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/array_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/array_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/array_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/boolean_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/boolean_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/boolean_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/boolean_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/color_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/color_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/color_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/color_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/common.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/common.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/common.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/common.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/image_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/image_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/image_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/image_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/json_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/json_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/json_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/json_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/markdown_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/markdown_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/markdown_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/markdown_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/number_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/number_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/number_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/number_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/select_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/select_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/select_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/select_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/__stories__/text_input.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/text_input.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/__stories__/text_input.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/__stories__/text_input.stories.tsx diff --git a/packages/kbn-management/settings/components/field_input/code_editor.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/code_editor.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/code_editor.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/code_editor.tsx diff --git a/packages/kbn-management/settings/components/field_input/field_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/field_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/field_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/field_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/field_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_input/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_input/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_input/index.ts diff --git a/packages/kbn-management/settings/components/field_input/input/array_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/array_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/array_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/array_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/array_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/array_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/array_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/array_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/boolean_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/boolean_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/boolean_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/boolean_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/boolean_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/boolean_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/boolean_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/boolean_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/code_editor_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/code_editor_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/code_editor_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/code_editor_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/color_picker_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/color_picker_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/color_picker_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/color_picker_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/color_picker_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/color_picker_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/color_picker_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/color_picker_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/image_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/image_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/image_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/image_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/image_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/image_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/image_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/image_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/index.ts diff --git a/packages/kbn-management/settings/components/field_input/input/json_editor_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/json_editor_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/json_editor_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/json_editor_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/markdown_editor_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/markdown_editor_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/markdown_editor_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/markdown_editor_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/number_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/number_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/number_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/number_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/number_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/number_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/number_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/number_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/select_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/select_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/select_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/select_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/select_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/select_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/select_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/select_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/text_input.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/text_input.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/text_input.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/text_input.test.tsx diff --git a/packages/kbn-management/settings/components/field_input/input/text_input.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/input/text_input.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/input/text_input.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/input/text_input.tsx diff --git a/packages/kbn-management/settings/components/field_input/kibana.jsonc b/src/platform/packages/shared/kbn-management/settings/components/field_input/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/components/field_input/kibana.jsonc rename to src/platform/packages/shared/kbn-management/settings/components/field_input/kibana.jsonc diff --git a/packages/kbn-management/settings/components/field_input/mocks/context.mock.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/mocks/context.mock.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/mocks/context.mock.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/mocks/context.mock.tsx diff --git a/packages/kbn-management/settings/components/field_input/mocks/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_input/mocks/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_input/mocks/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_input/mocks/index.ts diff --git a/packages/kbn-management/settings/components/field_input/package.json b/src/platform/packages/shared/kbn-management/settings/components/field_input/package.json similarity index 100% rename from packages/kbn-management/settings/components/field_input/package.json rename to src/platform/packages/shared/kbn-management/settings/components/field_input/package.json diff --git a/packages/kbn-management/settings/components/field_input/services.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/services.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_input/services.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_input/services.tsx diff --git a/packages/kbn-management/settings/components/field_input/setup_tests.ts b/src/platform/packages/shared/kbn-management/settings/components/field_input/setup_tests.ts similarity index 100% rename from packages/kbn-management/settings/components/field_input/setup_tests.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_input/setup_tests.ts diff --git a/src/platform/packages/shared/kbn-management/settings/components/field_input/tsconfig.json b/src/platform/packages/shared/kbn-management/settings/components/field_input/tsconfig.json new file mode 100644 index 0000000000000..ce22fa8df8c1a --- /dev/null +++ b/src/platform/packages/shared/kbn-management/settings/components/field_input/tsconfig.json @@ -0,0 +1,35 @@ +{ + "extends": "../../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/management-settings-types", + "@kbn/management-settings-field-definition", + "@kbn/monaco", + "@kbn/management-settings-utilities", + "@kbn/i18n-react", + "@kbn/i18n", + "@kbn/core-notifications-browser", + "@kbn/core-ui-settings-common", + "@kbn/react-kibana-context-root", + "@kbn/core-theme-browser-mocks", + "@kbn/core-i18n-browser", + "@kbn/core-analytics-browser-mocks", + "@kbn/core-ui-settings-browser", + "@kbn/code-editor", + "@kbn/core-user-profile-browser-mocks", + ] +} diff --git a/packages/kbn-management/settings/components/field_input/types.ts b/src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts similarity index 100% rename from packages/kbn-management/settings/components/field_input/types.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_input/types.ts diff --git a/packages/kbn-management/settings/components/field_row/README.mdx b/src/platform/packages/shared/kbn-management/settings/components/field_row/README.mdx similarity index 100% rename from packages/kbn-management/settings/components/field_row/README.mdx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/README.mdx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/array_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/array_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/array_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/array_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/boolean_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/boolean_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/boolean_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/boolean_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/color_picker_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/color_picker_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/color_picker_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/color_picker_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/common.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/common.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/common.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/common.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/image_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/image_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/image_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/image_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/json_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/json_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/json_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/json_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/markdown_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/markdown_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/markdown_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/markdown_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/number_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/number_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/number_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/number_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/select_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/select_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/select_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/select_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/__stories__/text_field.stories.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/text_field.stories.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/__stories__/text_field.stories.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/__stories__/text_field.stories.tsx diff --git a/packages/kbn-management/settings/components/field_row/assets/form_row.png b/src/platform/packages/shared/kbn-management/settings/components/field_row/assets/form_row.png similarity index 100% rename from packages/kbn-management/settings/components/field_row/assets/form_row.png rename to src/platform/packages/shared/kbn-management/settings/components/field_row/assets/form_row.png diff --git a/packages/kbn-management/settings/components/field_row/assets/page.png b/src/platform/packages/shared/kbn-management/settings/components/field_row/assets/page.png similarity index 100% rename from packages/kbn-management/settings/components/field_row/assets/page.png rename to src/platform/packages/shared/kbn-management/settings/components/field_row/assets/page.png diff --git a/packages/kbn-management/settings/components/field_row/description/default_value.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/description/default_value.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/description/default_value.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/description/default_value.test.tsx diff --git a/packages/kbn-management/settings/components/field_row/description/default_value.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/description/default_value.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/description/default_value.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/description/default_value.tsx diff --git a/packages/kbn-management/settings/components/field_row/description/deprecation.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/description/deprecation.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/description/deprecation.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/description/deprecation.test.tsx diff --git a/packages/kbn-management/settings/components/field_row/description/deprecation.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/description/deprecation.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/description/deprecation.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/description/deprecation.tsx diff --git a/packages/kbn-management/settings/components/field_row/description/description.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/description/description.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/description/description.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/description/description.test.tsx diff --git a/packages/kbn-management/settings/components/field_row/description/description.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/description/description.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/description/description.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/description/description.tsx diff --git a/packages/kbn-management/settings/components/field_row/description/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/description/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/description/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/description/index.ts diff --git a/packages/kbn-management/settings/components/field_row/field_row.styles.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.styles.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/field_row.styles.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.styles.ts diff --git a/packages/kbn-management/settings/components/field_row/field_row.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/field_row.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.test.tsx diff --git a/packages/kbn-management/settings/components/field_row/field_row.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/field_row.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/field_row.tsx diff --git a/packages/kbn-management/settings/components/field_row/footer/change_image_link.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/change_image_link.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/change_image_link.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/change_image_link.test.tsx diff --git a/packages/kbn-management/settings/components/field_row/footer/change_image_link.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/change_image_link.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/change_image_link.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/change_image_link.tsx diff --git a/packages/kbn-management/settings/components/field_row/footer/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/index.ts diff --git a/packages/kbn-management/settings/components/field_row/footer/input_footer.styles.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/input_footer.styles.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/input_footer.styles.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/input_footer.styles.ts diff --git a/packages/kbn-management/settings/components/field_row/footer/input_footer.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/input_footer.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/input_footer.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/input_footer.tsx diff --git a/packages/kbn-management/settings/components/field_row/footer/overridden_message.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/overridden_message.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/overridden_message.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/overridden_message.test.tsx diff --git a/packages/kbn-management/settings/components/field_row/footer/overridden_message.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/overridden_message.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/overridden_message.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/overridden_message.tsx diff --git a/packages/kbn-management/settings/components/field_row/footer/reset_link.test.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/reset_link.test.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/reset_link.test.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/reset_link.test.tsx diff --git a/packages/kbn-management/settings/components/field_row/footer/reset_link.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/footer/reset_link.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/footer/reset_link.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/footer/reset_link.tsx diff --git a/packages/kbn-management/settings/components/field_row/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/index.ts diff --git a/packages/kbn-management/settings/components/field_row/kibana.jsonc b/src/platform/packages/shared/kbn-management/settings/components/field_row/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/components/field_row/kibana.jsonc rename to src/platform/packages/shared/kbn-management/settings/components/field_row/kibana.jsonc diff --git a/packages/kbn-management/settings/components/field_row/mocks/context.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/mocks/context.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/mocks/context.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/mocks/context.tsx diff --git a/packages/kbn-management/settings/components/field_row/mocks/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/mocks/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/mocks/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/mocks/index.ts diff --git a/packages/kbn-management/settings/components/field_row/package.json b/src/platform/packages/shared/kbn-management/settings/components/field_row/package.json similarity index 100% rename from packages/kbn-management/settings/components/field_row/package.json rename to src/platform/packages/shared/kbn-management/settings/components/field_row/package.json diff --git a/packages/kbn-management/settings/components/field_row/services.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/services.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/services.tsx diff --git a/packages/kbn-management/settings/components/field_row/setup_tests.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/setup_tests.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/setup_tests.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/setup_tests.ts diff --git a/packages/kbn-management/settings/components/field_row/title/icon_custom.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/title/icon_custom.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/title/icon_custom.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/title/icon_custom.tsx diff --git a/packages/kbn-management/settings/components/field_row/title/icon_unsaved.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/title/icon_unsaved.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/title/icon_unsaved.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/title/icon_unsaved.tsx diff --git a/packages/kbn-management/settings/components/field_row/title/index.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/title/index.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/title/index.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/title/index.ts diff --git a/packages/kbn-management/settings/components/field_row/title/title.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_row/title/title.tsx similarity index 100% rename from packages/kbn-management/settings/components/field_row/title/title.tsx rename to src/platform/packages/shared/kbn-management/settings/components/field_row/title/title.tsx diff --git a/src/platform/packages/shared/kbn-management/settings/components/field_row/tsconfig.json b/src/platform/packages/shared/kbn-management/settings/components/field_row/tsconfig.json new file mode 100644 index 0000000000000..d0b13e6c13926 --- /dev/null +++ b/src/platform/packages/shared/kbn-management/settings/components/field_row/tsconfig.json @@ -0,0 +1,35 @@ +{ + "extends": "../../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@kbn/ambient-ui-types", + "@kbn/ambient-storybook-types", + "@emotion/react/types/css-prop" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/management-settings-types", + "@kbn/management-settings-field-definition", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/management-settings-utilities", + "@kbn/management-settings-components-field-input", + "@kbn/core-doc-links-browser", + "@kbn/react-kibana-context-root", + "@kbn/core-theme-browser-mocks", + "@kbn/core-i18n-browser", + "@kbn/core-analytics-browser-mocks", + "@kbn/core-user-profile-browser-mocks", + ] +} diff --git a/packages/kbn-management/settings/components/field_row/types.ts b/src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts similarity index 100% rename from packages/kbn-management/settings/components/field_row/types.ts rename to src/platform/packages/shared/kbn-management/settings/components/field_row/types.ts diff --git a/packages/kbn-management/settings/field_definition/README.mdx b/src/platform/packages/shared/kbn-management/settings/field_definition/README.mdx similarity index 100% rename from packages/kbn-management/settings/field_definition/README.mdx rename to src/platform/packages/shared/kbn-management/settings/field_definition/README.mdx diff --git a/packages/kbn-management/settings/field_definition/get_definition.ts b/src/platform/packages/shared/kbn-management/settings/field_definition/get_definition.ts similarity index 100% rename from packages/kbn-management/settings/field_definition/get_definition.ts rename to src/platform/packages/shared/kbn-management/settings/field_definition/get_definition.ts diff --git a/packages/kbn-management/settings/field_definition/get_definitions.ts b/src/platform/packages/shared/kbn-management/settings/field_definition/get_definitions.ts similarity index 100% rename from packages/kbn-management/settings/field_definition/get_definitions.ts rename to src/platform/packages/shared/kbn-management/settings/field_definition/get_definitions.ts diff --git a/packages/kbn-management/settings/field_definition/index.ts b/src/platform/packages/shared/kbn-management/settings/field_definition/index.ts similarity index 100% rename from packages/kbn-management/settings/field_definition/index.ts rename to src/platform/packages/shared/kbn-management/settings/field_definition/index.ts diff --git a/packages/kbn-management/settings/field_definition/is/field_definition.ts b/src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts similarity index 100% rename from packages/kbn-management/settings/field_definition/is/field_definition.ts rename to src/platform/packages/shared/kbn-management/settings/field_definition/is/field_definition.ts diff --git a/packages/kbn-management/settings/field_definition/is/index.ts b/src/platform/packages/shared/kbn-management/settings/field_definition/is/index.ts similarity index 100% rename from packages/kbn-management/settings/field_definition/is/index.ts rename to src/platform/packages/shared/kbn-management/settings/field_definition/is/index.ts diff --git a/packages/kbn-management/settings/field_definition/is/unsaved_change.ts b/src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts similarity index 100% rename from packages/kbn-management/settings/field_definition/is/unsaved_change.ts rename to src/platform/packages/shared/kbn-management/settings/field_definition/is/unsaved_change.ts diff --git a/packages/kbn-management/settings/field_definition/kibana.jsonc b/src/platform/packages/shared/kbn-management/settings/field_definition/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/field_definition/kibana.jsonc rename to src/platform/packages/shared/kbn-management/settings/field_definition/kibana.jsonc diff --git a/packages/kbn-management/settings/field_definition/package.json b/src/platform/packages/shared/kbn-management/settings/field_definition/package.json similarity index 100% rename from packages/kbn-management/settings/field_definition/package.json rename to src/platform/packages/shared/kbn-management/settings/field_definition/package.json diff --git a/src/platform/packages/shared/kbn-management/settings/field_definition/tsconfig.json b/src/platform/packages/shared/kbn-management/settings/field_definition/tsconfig.json new file mode 100644 index 0000000000000..f9236003cbbfb --- /dev/null +++ b/src/platform/packages/shared/kbn-management/settings/field_definition/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/management-settings-types", + "@kbn/core-ui-settings-browser", + "@kbn/management-settings-utilities", + ] +} diff --git a/packages/kbn-management/settings/types/README.mdx b/src/platform/packages/shared/kbn-management/settings/types/README.mdx similarity index 100% rename from packages/kbn-management/settings/types/README.mdx rename to src/platform/packages/shared/kbn-management/settings/types/README.mdx diff --git a/packages/kbn-management/settings/types/capabilities.ts b/src/platform/packages/shared/kbn-management/settings/types/capabilities.ts similarity index 100% rename from packages/kbn-management/settings/types/capabilities.ts rename to src/platform/packages/shared/kbn-management/settings/types/capabilities.ts diff --git a/packages/kbn-management/settings/types/category.ts b/src/platform/packages/shared/kbn-management/settings/types/category.ts similarity index 100% rename from packages/kbn-management/settings/types/category.ts rename to src/platform/packages/shared/kbn-management/settings/types/category.ts diff --git a/packages/kbn-management/settings/types/field_definition.ts b/src/platform/packages/shared/kbn-management/settings/types/field_definition.ts similarity index 100% rename from packages/kbn-management/settings/types/field_definition.ts rename to src/platform/packages/shared/kbn-management/settings/types/field_definition.ts diff --git a/packages/kbn-management/settings/types/index.ts b/src/platform/packages/shared/kbn-management/settings/types/index.ts similarity index 100% rename from packages/kbn-management/settings/types/index.ts rename to src/platform/packages/shared/kbn-management/settings/types/index.ts diff --git a/packages/kbn-management/settings/types/kibana.jsonc b/src/platform/packages/shared/kbn-management/settings/types/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/types/kibana.jsonc rename to src/platform/packages/shared/kbn-management/settings/types/kibana.jsonc diff --git a/packages/kbn-management/settings/types/metadata.ts b/src/platform/packages/shared/kbn-management/settings/types/metadata.ts similarity index 100% rename from packages/kbn-management/settings/types/metadata.ts rename to src/platform/packages/shared/kbn-management/settings/types/metadata.ts diff --git a/packages/kbn-management/settings/types/package.json b/src/platform/packages/shared/kbn-management/settings/types/package.json similarity index 100% rename from packages/kbn-management/settings/types/package.json rename to src/platform/packages/shared/kbn-management/settings/types/package.json diff --git a/packages/kbn-management/settings/types/setting_type.ts b/src/platform/packages/shared/kbn-management/settings/types/setting_type.ts similarity index 100% rename from packages/kbn-management/settings/types/setting_type.ts rename to src/platform/packages/shared/kbn-management/settings/types/setting_type.ts diff --git a/packages/kbn-management/settings/types/tab.ts b/src/platform/packages/shared/kbn-management/settings/types/tab.ts similarity index 100% rename from packages/kbn-management/settings/types/tab.ts rename to src/platform/packages/shared/kbn-management/settings/types/tab.ts diff --git a/src/platform/packages/shared/kbn-management/settings/types/tsconfig.json b/src/platform/packages/shared/kbn-management/settings/types/tsconfig.json new file mode 100644 index 0000000000000..31d88a1be797b --- /dev/null +++ b/src/platform/packages/shared/kbn-management/settings/types/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/analytics", + "@kbn/core", + "@kbn/core-ui-settings-common", + "@kbn/management-settings-section-registry", + ] +} diff --git a/packages/kbn-management/settings/types/unsaved_change.ts b/src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts similarity index 100% rename from packages/kbn-management/settings/types/unsaved_change.ts rename to src/platform/packages/shared/kbn-management/settings/types/unsaved_change.ts diff --git a/packages/kbn-management/settings/utilities/README.mdx b/src/platform/packages/shared/kbn-management/settings/utilities/README.mdx similarity index 100% rename from packages/kbn-management/settings/utilities/README.mdx rename to src/platform/packages/shared/kbn-management/settings/utilities/README.mdx diff --git a/packages/kbn-management/settings/utilities/category/categorize_fields.ts b/src/platform/packages/shared/kbn-management/settings/utilities/category/categorize_fields.ts similarity index 100% rename from packages/kbn-management/settings/utilities/category/categorize_fields.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/category/categorize_fields.ts diff --git a/packages/kbn-management/settings/utilities/category/const.ts b/src/platform/packages/shared/kbn-management/settings/utilities/category/const.ts similarity index 100% rename from packages/kbn-management/settings/utilities/category/const.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/category/const.ts diff --git a/packages/kbn-management/settings/utilities/category/get_category_counts.ts b/src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_counts.ts similarity index 100% rename from packages/kbn-management/settings/utilities/category/get_category_counts.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_counts.ts diff --git a/packages/kbn-management/settings/utilities/category/get_category_name.ts b/src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_name.ts similarity index 100% rename from packages/kbn-management/settings/utilities/category/get_category_name.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/category/get_category_name.ts diff --git a/packages/kbn-management/settings/utilities/category/index.ts b/src/platform/packages/shared/kbn-management/settings/utilities/category/index.ts similarity index 100% rename from packages/kbn-management/settings/utilities/category/index.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/category/index.ts diff --git a/packages/kbn-management/settings/utilities/field/get_input_value.ts b/src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts similarity index 100% rename from packages/kbn-management/settings/utilities/field/get_input_value.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/field/get_input_value.ts diff --git a/packages/kbn-management/settings/utilities/field/has_unsaved_change.test.ts b/src/platform/packages/shared/kbn-management/settings/utilities/field/has_unsaved_change.test.ts similarity index 100% rename from packages/kbn-management/settings/utilities/field/has_unsaved_change.test.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/field/has_unsaved_change.test.ts diff --git a/packages/kbn-management/settings/utilities/field/has_unsaved_change.ts b/src/platform/packages/shared/kbn-management/settings/utilities/field/has_unsaved_change.ts similarity index 100% rename from packages/kbn-management/settings/utilities/field/has_unsaved_change.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/field/has_unsaved_change.ts diff --git a/packages/kbn-management/settings/utilities/field/index.ts b/src/platform/packages/shared/kbn-management/settings/utilities/field/index.ts similarity index 100% rename from packages/kbn-management/settings/utilities/field/index.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/field/index.ts diff --git a/packages/kbn-management/settings/utilities/field/is_default_value.ts b/src/platform/packages/shared/kbn-management/settings/utilities/field/is_default_value.ts similarity index 100% rename from packages/kbn-management/settings/utilities/field/is_default_value.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/field/is_default_value.ts diff --git a/packages/kbn-management/settings/utilities/field/use_update.ts b/src/platform/packages/shared/kbn-management/settings/utilities/field/use_update.ts similarity index 100% rename from packages/kbn-management/settings/utilities/field/use_update.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/field/use_update.ts diff --git a/packages/kbn-management/settings/utilities/index.ts b/src/platform/packages/shared/kbn-management/settings/utilities/index.ts similarity index 100% rename from packages/kbn-management/settings/utilities/index.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/index.ts diff --git a/packages/kbn-management/settings/utilities/kibana.jsonc b/src/platform/packages/shared/kbn-management/settings/utilities/kibana.jsonc similarity index 100% rename from packages/kbn-management/settings/utilities/kibana.jsonc rename to src/platform/packages/shared/kbn-management/settings/utilities/kibana.jsonc diff --git a/packages/kbn-management/settings/utilities/mocks/capabilities.mock.ts b/src/platform/packages/shared/kbn-management/settings/utilities/mocks/capabilities.mock.ts similarity index 100% rename from packages/kbn-management/settings/utilities/mocks/capabilities.mock.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/mocks/capabilities.mock.ts diff --git a/packages/kbn-management/settings/utilities/mocks/settings.mock.ts b/src/platform/packages/shared/kbn-management/settings/utilities/mocks/settings.mock.ts similarity index 100% rename from packages/kbn-management/settings/utilities/mocks/settings.mock.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/mocks/settings.mock.ts diff --git a/packages/kbn-management/settings/utilities/package.json b/src/platform/packages/shared/kbn-management/settings/utilities/package.json similarity index 100% rename from packages/kbn-management/settings/utilities/package.json rename to src/platform/packages/shared/kbn-management/settings/utilities/package.json diff --git a/packages/kbn-management/settings/utilities/setting/index.ts b/src/platform/packages/shared/kbn-management/settings/utilities/setting/index.ts similarity index 100% rename from packages/kbn-management/settings/utilities/setting/index.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/setting/index.ts diff --git a/packages/kbn-management/settings/utilities/setting/is_default_value.ts b/src/platform/packages/shared/kbn-management/settings/utilities/setting/is_default_value.ts similarity index 100% rename from packages/kbn-management/settings/utilities/setting/is_default_value.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/setting/is_default_value.ts diff --git a/packages/kbn-management/settings/utilities/setting/normalize_settings.test.ts b/src/platform/packages/shared/kbn-management/settings/utilities/setting/normalize_settings.test.ts similarity index 100% rename from packages/kbn-management/settings/utilities/setting/normalize_settings.test.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/setting/normalize_settings.test.ts diff --git a/packages/kbn-management/settings/utilities/setting/normalize_settings.ts b/src/platform/packages/shared/kbn-management/settings/utilities/setting/normalize_settings.ts similarity index 100% rename from packages/kbn-management/settings/utilities/setting/normalize_settings.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/setting/normalize_settings.ts diff --git a/packages/kbn-management/settings/utilities/storybook/index.ts b/src/platform/packages/shared/kbn-management/settings/utilities/storybook/index.ts similarity index 100% rename from packages/kbn-management/settings/utilities/storybook/index.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/storybook/index.ts diff --git a/packages/kbn-management/settings/utilities/storybook/values.ts b/src/platform/packages/shared/kbn-management/settings/utilities/storybook/values.ts similarity index 100% rename from packages/kbn-management/settings/utilities/storybook/values.ts rename to src/platform/packages/shared/kbn-management/settings/utilities/storybook/values.ts diff --git a/src/platform/packages/shared/kbn-management/settings/utilities/tsconfig.json b/src/platform/packages/shared/kbn-management/settings/utilities/tsconfig.json new file mode 100644 index 0000000000000..70445908b2d24 --- /dev/null +++ b/src/platform/packages/shared/kbn-management/settings/utilities/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/management-settings-types", + "@kbn/i18n", + "@kbn/core-ui-settings-common", + ] +} diff --git a/packages/kbn-securitysolution-ecs/README.md b/src/platform/packages/shared/kbn-securitysolution-ecs/README.md similarity index 100% rename from packages/kbn-securitysolution-ecs/README.md rename to src/platform/packages/shared/kbn-securitysolution-ecs/README.md diff --git a/packages/kbn-investigation-shared/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/index.ts similarity index 100% rename from packages/kbn-investigation-shared/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/index.ts diff --git a/src/platform/packages/shared/kbn-securitysolution-ecs/jest.config.js b/src/platform/packages/shared/kbn-securitysolution-ecs/jest.config.js new file mode 100644 index 0000000000000..f9e49d0a6719a --- /dev/null +++ b/src/platform/packages/shared/kbn-securitysolution-ecs/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-securitysolution-ecs'], +}; diff --git a/packages/kbn-securitysolution-ecs/kibana.jsonc b/src/platform/packages/shared/kbn-securitysolution-ecs/kibana.jsonc similarity index 100% rename from packages/kbn-securitysolution-ecs/kibana.jsonc rename to src/platform/packages/shared/kbn-securitysolution-ecs/kibana.jsonc diff --git a/packages/kbn-securitysolution-ecs/package.json b/src/platform/packages/shared/kbn-securitysolution-ecs/package.json similarity index 100% rename from packages/kbn-securitysolution-ecs/package.json rename to src/platform/packages/shared/kbn-securitysolution-ecs/package.json diff --git a/packages/kbn-securitysolution-ecs/src/agent/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/agent/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/agent/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/agent/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/auditd/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/auditd/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/auditd/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/cloud/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/cloud/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/cloud/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/cloud/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/destination/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/destination/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/destination/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/dll/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/dll/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/dll/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/dll/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/dns/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/dns/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/dns/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/dns/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/ecs_fields/extend_map.test.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/extend_map.test.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/ecs_fields/extend_map.test.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/extend_map.test.ts diff --git a/packages/kbn-securitysolution-ecs/src/ecs_fields/extend_map.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/extend_map.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/ecs_fields/extend_map.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/extend_map.ts diff --git a/packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/ecs_fields/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/ecs_fields/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/endgame/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/endgame/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/endgame/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/event/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/event/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/event/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/file/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/file/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/file/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/geo/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/geo/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/geo/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/host/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/host/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/host/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/http/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/http/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/http/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/http/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/memory_protection/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/memory_protection/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/memory_protection/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/network/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/network/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/network/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/process/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/process/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/process/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/ransomware/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/ransomware/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/ransomware/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/registry/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/registry/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/registry/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/rule/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/rule/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/rule/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/signal/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/signal/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/signal/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/source/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/source/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/source/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/suricata/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/suricata/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/suricata/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/suricata/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/system/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/system/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/system/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/system/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/target_type/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/target_type/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/target_type/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/target_type/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/threat/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/threat/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/threat/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/tls/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/tls/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/tls/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/tls/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/url/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/url/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/url/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/url/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/user/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/user/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/user/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/winlog/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/winlog/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/winlog/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/winlog/index.ts diff --git a/packages/kbn-securitysolution-ecs/src/zeek/index.ts b/src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts similarity index 100% rename from packages/kbn-securitysolution-ecs/src/zeek/index.ts rename to src/platform/packages/shared/kbn-securitysolution-ecs/src/zeek/index.ts diff --git a/src/platform/packages/shared/kbn-securitysolution-ecs/tsconfig.json b/src/platform/packages/shared/kbn-securitysolution-ecs/tsconfig.json new file mode 100644 index 0000000000000..e4fd00b524dd9 --- /dev/null +++ b/src/platform/packages/shared/kbn-securitysolution-ecs/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts" + ], + "exclude": [ + "target/**/*" + ] +} diff --git a/packages/kbn-server-route-repository-client/README.md b/src/platform/packages/shared/kbn-server-route-repository-client/README.md similarity index 100% rename from packages/kbn-server-route-repository-client/README.md rename to src/platform/packages/shared/kbn-server-route-repository-client/README.md diff --git a/packages/kbn-server-route-repository-client/index.ts b/src/platform/packages/shared/kbn-server-route-repository-client/index.ts similarity index 100% rename from packages/kbn-server-route-repository-client/index.ts rename to src/platform/packages/shared/kbn-server-route-repository-client/index.ts diff --git a/src/platform/packages/shared/kbn-server-route-repository-client/jest.config.js b/src/platform/packages/shared/kbn-server-route-repository-client/jest.config.js new file mode 100644 index 0000000000000..325cde5bdf78c --- /dev/null +++ b/src/platform/packages/shared/kbn-server-route-repository-client/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-server-route-repository-client'], +}; diff --git a/packages/kbn-server-route-repository-client/kibana.jsonc b/src/platform/packages/shared/kbn-server-route-repository-client/kibana.jsonc similarity index 100% rename from packages/kbn-server-route-repository-client/kibana.jsonc rename to src/platform/packages/shared/kbn-server-route-repository-client/kibana.jsonc diff --git a/packages/kbn-server-route-repository-client/package.json b/src/platform/packages/shared/kbn-server-route-repository-client/package.json similarity index 100% rename from packages/kbn-server-route-repository-client/package.json rename to src/platform/packages/shared/kbn-server-route-repository-client/package.json diff --git a/packages/kbn-server-route-repository-client/src/create_observable_from_http_response.ts b/src/platform/packages/shared/kbn-server-route-repository-client/src/create_observable_from_http_response.ts similarity index 100% rename from packages/kbn-server-route-repository-client/src/create_observable_from_http_response.ts rename to src/platform/packages/shared/kbn-server-route-repository-client/src/create_observable_from_http_response.ts diff --git a/packages/kbn-server-route-repository-client/src/create_repository_client.test.ts b/src/platform/packages/shared/kbn-server-route-repository-client/src/create_repository_client.test.ts similarity index 100% rename from packages/kbn-server-route-repository-client/src/create_repository_client.test.ts rename to src/platform/packages/shared/kbn-server-route-repository-client/src/create_repository_client.test.ts diff --git a/packages/kbn-server-route-repository-client/src/create_repository_client.ts b/src/platform/packages/shared/kbn-server-route-repository-client/src/create_repository_client.ts similarity index 100% rename from packages/kbn-server-route-repository-client/src/create_repository_client.ts rename to src/platform/packages/shared/kbn-server-route-repository-client/src/create_repository_client.ts diff --git a/packages/kbn-server-route-repository-client/src/is_http_fetch_error.ts b/src/platform/packages/shared/kbn-server-route-repository-client/src/is_http_fetch_error.ts similarity index 100% rename from packages/kbn-server-route-repository-client/src/is_http_fetch_error.ts rename to src/platform/packages/shared/kbn-server-route-repository-client/src/is_http_fetch_error.ts diff --git a/packages/kbn-server-route-repository-client/src/is_request_aborted_error.ts b/src/platform/packages/shared/kbn-server-route-repository-client/src/is_request_aborted_error.ts similarity index 100% rename from packages/kbn-server-route-repository-client/src/is_request_aborted_error.ts rename to src/platform/packages/shared/kbn-server-route-repository-client/src/is_request_aborted_error.ts diff --git a/src/platform/packages/shared/kbn-server-route-repository-client/tsconfig.json b/src/platform/packages/shared/kbn-server-route-repository-client/tsconfig.json new file mode 100644 index 0000000000000..144271cdf8003 --- /dev/null +++ b/src/platform/packages/shared/kbn-server-route-repository-client/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/server-route-repository-utils", + "@kbn/core-lifecycle-browser", + "@kbn/core-http-browser", + "@kbn/sse-utils-client", + ] +} diff --git a/packages/kbn-server-route-repository-utils/README.md b/src/platform/packages/shared/kbn-server-route-repository-utils/README.md similarity index 100% rename from packages/kbn-server-route-repository-utils/README.md rename to src/platform/packages/shared/kbn-server-route-repository-utils/README.md diff --git a/packages/kbn-server-route-repository-utils/index.ts b/src/platform/packages/shared/kbn-server-route-repository-utils/index.ts similarity index 100% rename from packages/kbn-server-route-repository-utils/index.ts rename to src/platform/packages/shared/kbn-server-route-repository-utils/index.ts diff --git a/src/platform/packages/shared/kbn-server-route-repository-utils/jest.config.js b/src/platform/packages/shared/kbn-server-route-repository-utils/jest.config.js new file mode 100644 index 0000000000000..fddc8e7bd0e81 --- /dev/null +++ b/src/platform/packages/shared/kbn-server-route-repository-utils/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-server-route-repository-utils'], +}; diff --git a/packages/kbn-server-route-repository-utils/kibana.jsonc b/src/platform/packages/shared/kbn-server-route-repository-utils/kibana.jsonc similarity index 100% rename from packages/kbn-server-route-repository-utils/kibana.jsonc rename to src/platform/packages/shared/kbn-server-route-repository-utils/kibana.jsonc diff --git a/packages/kbn-server-route-repository-utils/package.json b/src/platform/packages/shared/kbn-server-route-repository-utils/package.json similarity index 100% rename from packages/kbn-server-route-repository-utils/package.json rename to src/platform/packages/shared/kbn-server-route-repository-utils/package.json diff --git a/packages/kbn-server-route-repository-utils/src/format_request.test.ts b/src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.test.ts similarity index 100% rename from packages/kbn-server-route-repository-utils/src/format_request.test.ts rename to src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.test.ts diff --git a/packages/kbn-server-route-repository-utils/src/format_request.ts b/src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts similarity index 100% rename from packages/kbn-server-route-repository-utils/src/format_request.ts rename to src/platform/packages/shared/kbn-server-route-repository-utils/src/format_request.ts diff --git a/packages/kbn-server-route-repository-utils/src/parse_endpoint.ts b/src/platform/packages/shared/kbn-server-route-repository-utils/src/parse_endpoint.ts similarity index 100% rename from packages/kbn-server-route-repository-utils/src/parse_endpoint.ts rename to src/platform/packages/shared/kbn-server-route-repository-utils/src/parse_endpoint.ts diff --git a/packages/kbn-server-route-repository-utils/src/typings.ts b/src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts similarity index 100% rename from packages/kbn-server-route-repository-utils/src/typings.ts rename to src/platform/packages/shared/kbn-server-route-repository-utils/src/typings.ts diff --git a/src/platform/packages/shared/kbn-server-route-repository-utils/tsconfig.json b/src/platform/packages/shared/kbn-server-route-repository-utils/tsconfig.json new file mode 100644 index 0000000000000..4dbcb3bef87d0 --- /dev/null +++ b/src/platform/packages/shared/kbn-server-route-repository-utils/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/core-http-server", + "@kbn/core", + "@kbn/zod", + "@kbn/core-http-browser", + "@kbn/sse-utils", + ] +} diff --git a/packages/kbn-server-route-repository/README.md b/src/platform/packages/shared/kbn-server-route-repository/README.md similarity index 100% rename from packages/kbn-server-route-repository/README.md rename to src/platform/packages/shared/kbn-server-route-repository/README.md diff --git a/packages/kbn-server-route-repository/index.ts b/src/platform/packages/shared/kbn-server-route-repository/index.ts similarity index 100% rename from packages/kbn-server-route-repository/index.ts rename to src/platform/packages/shared/kbn-server-route-repository/index.ts diff --git a/src/platform/packages/shared/kbn-server-route-repository/jest.config.js b/src/platform/packages/shared/kbn-server-route-repository/jest.config.js new file mode 100644 index 0000000000000..701aa33fac5e7 --- /dev/null +++ b/src/platform/packages/shared/kbn-server-route-repository/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-server-route-repository'], +}; diff --git a/packages/kbn-server-route-repository/kibana.jsonc b/src/platform/packages/shared/kbn-server-route-repository/kibana.jsonc similarity index 100% rename from packages/kbn-server-route-repository/kibana.jsonc rename to src/platform/packages/shared/kbn-server-route-repository/kibana.jsonc diff --git a/packages/kbn-server-route-repository/package.json b/src/platform/packages/shared/kbn-server-route-repository/package.json similarity index 100% rename from packages/kbn-server-route-repository/package.json rename to src/platform/packages/shared/kbn-server-route-repository/package.json diff --git a/packages/kbn-server-route-repository/src/create_server_route_factory.ts b/src/platform/packages/shared/kbn-server-route-repository/src/create_server_route_factory.ts similarity index 100% rename from packages/kbn-server-route-repository/src/create_server_route_factory.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/create_server_route_factory.ts diff --git a/packages/kbn-server-route-repository/src/decode_request_params.test.ts b/src/platform/packages/shared/kbn-server-route-repository/src/decode_request_params.test.ts similarity index 100% rename from packages/kbn-server-route-repository/src/decode_request_params.test.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/decode_request_params.test.ts diff --git a/packages/kbn-server-route-repository/src/decode_request_params.ts b/src/platform/packages/shared/kbn-server-route-repository/src/decode_request_params.ts similarity index 100% rename from packages/kbn-server-route-repository/src/decode_request_params.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/decode_request_params.ts diff --git a/packages/kbn-server-route-repository/src/make_zod_validation_object.test.ts b/src/platform/packages/shared/kbn-server-route-repository/src/make_zod_validation_object.test.ts similarity index 100% rename from packages/kbn-server-route-repository/src/make_zod_validation_object.test.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/make_zod_validation_object.test.ts diff --git a/packages/kbn-server-route-repository/src/make_zod_validation_object.ts b/src/platform/packages/shared/kbn-server-route-repository/src/make_zod_validation_object.ts similarity index 100% rename from packages/kbn-server-route-repository/src/make_zod_validation_object.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/make_zod_validation_object.ts diff --git a/packages/kbn-server-route-repository/src/register_routes.test.ts b/src/platform/packages/shared/kbn-server-route-repository/src/register_routes.test.ts similarity index 100% rename from packages/kbn-server-route-repository/src/register_routes.test.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/register_routes.test.ts diff --git a/packages/kbn-server-route-repository/src/register_routes.ts b/src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts similarity index 95% rename from packages/kbn-server-route-repository/src/register_routes.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts index 6201ffcd869ea..90c4f42b9ce44 100644 --- a/packages/kbn-server-route-repository/src/register_routes.ts +++ b/src/platform/packages/shared/kbn-server-route-repository/src/register_routes.ts @@ -98,8 +98,15 @@ export function registerRoutes<TDependencies extends Record<string, any>>({ if (isKibanaResponse(result)) { return result; } else if (isObservable(result)) { + const controller = new AbortController(); + request.events.aborted$.subscribe(() => { + controller.abort(); + }); return response.ok({ - body: observableIntoEventSourceStream(result as Observable<ServerSentEvent>), + body: observableIntoEventSourceStream(result as Observable<ServerSentEvent>, { + logger, + signal: controller.signal, + }), }); } else { const body = result || {}; diff --git a/packages/kbn-server-route-repository/src/strip_nullish_request_parameters.test.ts b/src/platform/packages/shared/kbn-server-route-repository/src/strip_nullish_request_parameters.test.ts similarity index 100% rename from packages/kbn-server-route-repository/src/strip_nullish_request_parameters.test.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/strip_nullish_request_parameters.test.ts diff --git a/packages/kbn-server-route-repository/src/strip_nullish_request_parameters.ts b/src/platform/packages/shared/kbn-server-route-repository/src/strip_nullish_request_parameters.ts similarity index 100% rename from packages/kbn-server-route-repository/src/strip_nullish_request_parameters.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/strip_nullish_request_parameters.ts diff --git a/packages/kbn-server-route-repository/src/test_types.ts b/src/platform/packages/shared/kbn-server-route-repository/src/test_types.ts similarity index 100% rename from packages/kbn-server-route-repository/src/test_types.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/test_types.ts diff --git a/packages/kbn-server-route-repository/src/validate_and_decode_params.test.ts b/src/platform/packages/shared/kbn-server-route-repository/src/validate_and_decode_params.test.ts similarity index 100% rename from packages/kbn-server-route-repository/src/validate_and_decode_params.test.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/validate_and_decode_params.test.ts diff --git a/packages/kbn-server-route-repository/src/validate_and_decode_params.ts b/src/platform/packages/shared/kbn-server-route-repository/src/validate_and_decode_params.ts similarity index 100% rename from packages/kbn-server-route-repository/src/validate_and_decode_params.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/validate_and_decode_params.ts diff --git a/packages/kbn-server-route-repository/src/validation_objects.ts b/src/platform/packages/shared/kbn-server-route-repository/src/validation_objects.ts similarity index 100% rename from packages/kbn-server-route-repository/src/validation_objects.ts rename to src/platform/packages/shared/kbn-server-route-repository/src/validation_objects.ts diff --git a/src/platform/packages/shared/kbn-server-route-repository/tsconfig.json b/src/platform/packages/shared/kbn-server-route-repository/tsconfig.json new file mode 100644 index 0000000000000..8a493c3b83722 --- /dev/null +++ b/src/platform/packages/shared/kbn-server-route-repository/tsconfig.json @@ -0,0 +1,30 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ], + "noUnusedLocals": false + }, + "include": [ + "**/*.ts" + ], + "kbn_references": [ + "@kbn/io-ts-utils", + "@kbn/core-http-request-handler-context-server", + "@kbn/core-http-server", + "@kbn/core-lifecycle-server", + "@kbn/logging", + "@kbn/core", + "@kbn/logging-mocks", + "@kbn/server-route-repository-utils", + "@kbn/zod", + "@kbn/sse-utils-server", + "@kbn/sse-utils", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/packages/kbn-sse-utils-client/README.md b/src/platform/packages/shared/kbn-sse-utils-client/README.md similarity index 100% rename from packages/kbn-sse-utils-client/README.md rename to src/platform/packages/shared/kbn-sse-utils-client/README.md diff --git a/packages/kbn-sse-utils-client/index.ts b/src/platform/packages/shared/kbn-sse-utils-client/index.ts similarity index 100% rename from packages/kbn-sse-utils-client/index.ts rename to src/platform/packages/shared/kbn-sse-utils-client/index.ts diff --git a/src/platform/packages/shared/kbn-sse-utils-client/jest.config.js b/src/platform/packages/shared/kbn-sse-utils-client/jest.config.js new file mode 100644 index 0000000000000..2e90b1d614331 --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils-client/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-sse-utils-client'], +}; diff --git a/packages/kbn-sse-utils-client/kibana.jsonc b/src/platform/packages/shared/kbn-sse-utils-client/kibana.jsonc similarity index 100% rename from packages/kbn-sse-utils-client/kibana.jsonc rename to src/platform/packages/shared/kbn-sse-utils-client/kibana.jsonc diff --git a/packages/kbn-sse-utils-client/package.json b/src/platform/packages/shared/kbn-sse-utils-client/package.json similarity index 100% rename from packages/kbn-sse-utils-client/package.json rename to src/platform/packages/shared/kbn-sse-utils-client/package.json diff --git a/packages/kbn-sse-utils-client/src/create_observable_from_http_response.ts b/src/platform/packages/shared/kbn-sse-utils-client/src/create_observable_from_http_response.ts similarity index 100% rename from packages/kbn-sse-utils-client/src/create_observable_from_http_response.ts rename to src/platform/packages/shared/kbn-sse-utils-client/src/create_observable_from_http_response.ts diff --git a/packages/kbn-sse-utils-client/src/http_response_into_observable.test.ts b/src/platform/packages/shared/kbn-sse-utils-client/src/http_response_into_observable.test.ts similarity index 100% rename from packages/kbn-sse-utils-client/src/http_response_into_observable.test.ts rename to src/platform/packages/shared/kbn-sse-utils-client/src/http_response_into_observable.test.ts diff --git a/packages/kbn-sse-utils-client/src/http_response_into_observable.ts b/src/platform/packages/shared/kbn-sse-utils-client/src/http_response_into_observable.ts similarity index 100% rename from packages/kbn-sse-utils-client/src/http_response_into_observable.ts rename to src/platform/packages/shared/kbn-sse-utils-client/src/http_response_into_observable.ts diff --git a/src/platform/packages/shared/kbn-sse-utils-client/tsconfig.json b/src/platform/packages/shared/kbn-sse-utils-client/tsconfig.json new file mode 100644 index 0000000000000..6807bb0f68ebf --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils-client/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/sse-utils", + ] +} diff --git a/packages/kbn-sse-utils-server/README.md b/src/platform/packages/shared/kbn-sse-utils-server/README.md similarity index 100% rename from packages/kbn-sse-utils-server/README.md rename to src/platform/packages/shared/kbn-sse-utils-server/README.md diff --git a/packages/kbn-sse-utils-server/index.ts b/src/platform/packages/shared/kbn-sse-utils-server/index.ts similarity index 100% rename from packages/kbn-sse-utils-server/index.ts rename to src/platform/packages/shared/kbn-sse-utils-server/index.ts diff --git a/src/platform/packages/shared/kbn-sse-utils-server/jest.config.js b/src/platform/packages/shared/kbn-sse-utils-server/jest.config.js new file mode 100644 index 0000000000000..eb6d801b56a5f --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils-server/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-sse-utils-server'], +}; diff --git a/src/platform/packages/shared/kbn-sse-utils-server/kibana.jsonc b/src/platform/packages/shared/kbn-sse-utils-server/kibana.jsonc new file mode 100644 index 0000000000000..c4778482e4561 --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils-server/kibana.jsonc @@ -0,0 +1,9 @@ +{ + "type": "shared-common", + "id": "@kbn/sse-utils-server", + "owner": [ + "@elastic/obs-knowledge-team" + ], + "group": "platform", + "visibility": "shared" +} diff --git a/packages/kbn-sse-utils-server/package.json b/src/platform/packages/shared/kbn-sse-utils-server/package.json similarity index 100% rename from packages/kbn-sse-utils-server/package.json rename to src/platform/packages/shared/kbn-sse-utils-server/package.json diff --git a/src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.test.ts b/src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.test.ts new file mode 100644 index 0000000000000..9f4f8ffa84284 --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.test.ts @@ -0,0 +1,198 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { Logger } from '@kbn/logging'; +import { observableIntoEventSourceStream } from './observable_into_event_source_stream'; +import { PassThrough } from 'node:stream'; +import { Subject } from 'rxjs'; +import { ServerSentEvent, ServerSentEventType } from '@kbn/sse-utils/src/events'; +import { + ServerSentEventErrorCode, + createSSEInternalError, + createSSERequestError, +} from '@kbn/sse-utils/src/errors'; + +describe('observableIntoEventSourceStream', () => { + let logger: jest.Mocked<Logger>; + + let controller: AbortController; + + let stream: PassThrough; + let source$: Subject<ServerSentEvent>; + + let data: string[]; + + beforeEach(() => { + jest.useFakeTimers(); + logger = { + debug: jest.fn(), + error: jest.fn(), + } as unknown as jest.Mocked<Logger>; + + controller = new AbortController(); + source$ = new Subject(); + data = []; + + stream = observableIntoEventSourceStream(source$, { logger, signal: controller.signal }); + stream.on('data', (chunk) => { + data.push(chunk.toString()); + }); + }); + + afterEach(() => { + jest.clearAllTimers(); + }); + + it('writes events into the stream in SSE format', () => { + source$.next({ type: ServerSentEventType.data, data: { foo: 'bar' } }); + source$.complete(); + + jest.runAllTimers(); + + expect(data).toEqual(['event: data\ndata: {"data":{"foo":"bar"}}\n\n']); + }); + + it('handles SSE errors', () => { + const sseError = createSSEInternalError('Invalid input'); + + source$.error(sseError); + + jest.runAllTimers(); + + expect(logger.error).toHaveBeenCalledWith(sseError); + expect(logger.debug).toHaveBeenCalled(); + const debugFn = logger.debug.mock.calls[0][0] as () => string; + const loggedError = JSON.parse(debugFn()); + expect(loggedError).toEqual({ + type: 'error', + error: { + code: ServerSentEventErrorCode.internalError, + message: 'Invalid input', + meta: {}, + }, + }); + + expect(data).toEqual([ + `event: error\ndata: ${JSON.stringify({ + error: { + code: ServerSentEventErrorCode.internalError, + message: 'Invalid input', + meta: {}, + }, + })}\n\n`, + ]); + }); + + it('handles SSE errors with metadata', () => { + const sseError = createSSERequestError('Invalid request', 400); + + source$.error(sseError); + + jest.runAllTimers(); + + expect(logger.error).toHaveBeenCalledWith(sseError); + expect(logger.debug).toHaveBeenCalled(); + const debugFn = logger.debug.mock.calls[0][0] as () => string; + const loggedError = JSON.parse(debugFn()); + expect(loggedError).toEqual({ + type: 'error', + error: { + code: ServerSentEventErrorCode.requestError, + message: 'Invalid request', + meta: { + status: 400, + }, + }, + }); + + expect(data).toEqual([ + `event: error\ndata: ${JSON.stringify({ + error: { + code: ServerSentEventErrorCode.requestError, + message: 'Invalid request', + meta: { + status: 400, + }, + }, + })}\n\n`, + ]); + }); + + it('handles non-SSE errors', () => { + const error = new Error('Non-SSE Error'); + + source$.error(error); + + jest.runAllTimers(); + + expect(logger.error).toHaveBeenCalledWith(error); + expect(data).toEqual([ + `event: error\ndata: ${JSON.stringify({ + error: { + code: ServerSentEventErrorCode.internalError, + message: 'Non-SSE Error', + }, + })}\n\n`, + ]); + }); + + it('should send keep-alive comments every 10 seconds', () => { + jest.advanceTimersByTime(10000); + expect(data).toContain(': keep-alive'); + + jest.advanceTimersByTime(10000); + expect(data.filter((d) => d === ': keep-alive')).toHaveLength(2); + }); + + describe('without fake timers', () => { + beforeEach(() => { + jest.useFakeTimers({ doNotFake: ['nextTick'] }); + }); + + it('should end the stream when the observable completes', async () => { + jest.useFakeTimers({ doNotFake: ['nextTick'] }); + + const endSpy = jest.fn(); + stream.on('end', endSpy); + + source$.complete(); + + await new Promise((resolve) => process.nextTick(resolve)); + + expect(endSpy).toHaveBeenCalled(); + }); + + it('should end stream when signal is aborted', async () => { + const endSpy = jest.fn(); + stream.on('end', endSpy); + + // Emit some data + source$.next({ type: ServerSentEventType.data, data: { initial: 'data' } }); + + // Abort the signal + controller.abort(); + + // Emit more data after abort + source$.next({ type: ServerSentEventType.data, data: { after: 'abort' } }); + + await new Promise((resolve) => process.nextTick(resolve)); + + expect(endSpy).toHaveBeenCalled(); + + // Data after abort should not be received + expect(data).toEqual([ + `event: data\ndata: ${JSON.stringify({ data: { initial: 'data' } })}\n\n`, + ]); + }); + + afterEach(() => { + jest.useFakeTimers(); + }); + }); +}); diff --git a/src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts b/src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts new file mode 100644 index 0000000000000..0a71cd60192e6 --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils-server/src/observable_into_event_source_stream.ts @@ -0,0 +1,97 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { Logger } from '@kbn/logging'; +import { + isSSEError, + ServerSentErrorEvent, + ServerSentEventErrorCode, +} from '@kbn/sse-utils/src/errors'; +import { ServerSentEvent, ServerSentEventType } from '@kbn/sse-utils/src/events'; +import { catchError, map, Observable, of } from 'rxjs'; +import { PassThrough } from 'stream'; + +export function observableIntoEventSourceStream( + source$: Observable<ServerSentEvent>, + { + logger, + signal, + }: { + logger: Pick<Logger, 'debug' | 'error'>; + signal: AbortSignal; + } +) { + const withSerializedErrors$ = source$.pipe( + catchError((error): Observable<ServerSentErrorEvent> => { + if (isSSEError(error)) { + logger.error(error); + logger.debug(() => JSON.stringify(error)); + return of({ + type: ServerSentEventType.error, + error: { + code: error.code, + message: error.message, + meta: error.meta, + }, + }); + } + + logger.error(error); + + return of({ + type: ServerSentEventType.error, + error: { + code: ServerSentEventErrorCode.internalError, + message: error.message as string, + }, + }); + }), + map((event) => { + const { type, ...rest } = event; + return `event: ${type}\ndata: ${JSON.stringify(rest)}\n\n`; + }) + ); + + const stream = new PassThrough(); + + const intervalId = setInterval(() => { + // `:` denotes a comment - this is to keep the connection open + // it will be ignored by the SSE parser on the client + stream.write(': keep-alive'); + }, 10000); + + const subscription = withSerializedErrors$.subscribe({ + next: (line) => { + stream.write(line); + }, + complete: () => { + stream.end(); + clearTimeout(intervalId); + }, + error: (error) => { + clearTimeout(intervalId); + stream.write( + `event:error\ndata: ${JSON.stringify({ + error: { + code: ServerSentEventErrorCode.internalError, + message: error.message, + }, + })}\n\n` + ); + stream.end(); + }, + }); + + signal.addEventListener('abort', () => { + subscription.unsubscribe(); + stream.end(); + }); + + return stream; +} diff --git a/packages/kbn-sse-utils-server/src/supertest_to_observable.ts b/src/platform/packages/shared/kbn-sse-utils-server/src/supertest_to_observable.ts similarity index 100% rename from packages/kbn-sse-utils-server/src/supertest_to_observable.ts rename to src/platform/packages/shared/kbn-sse-utils-server/src/supertest_to_observable.ts diff --git a/src/platform/packages/shared/kbn-sse-utils-server/tsconfig.json b/src/platform/packages/shared/kbn-sse-utils-server/tsconfig.json new file mode 100644 index 0000000000000..8e73d0e64c84f --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils-server/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/sse-utils", + "@kbn/logging", + ] +} diff --git a/src/platform/packages/shared/kbn-sse-utils/README.md b/src/platform/packages/shared/kbn-sse-utils/README.md new file mode 100644 index 0000000000000..948376fb7e4e5 --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils/README.md @@ -0,0 +1,58 @@ +# @kbn/sse-utils + +This package exports utility functions that can be used to format and parse server-sent events(SSE). SSE is useful when streaming data back to the browser as part of a long-running process, such as LLM-based inference. It can convert an Observable that emits values of type `ServerSentEvent` into a response stream on the server, emitting lines in an SSE-compatible format, and it can convert an SSE response stream back into deserialized event. + +## Server + +On the server, you can use `observableIntoEventSourceStream` to convert an Observable that emits `ServerSentEvent` values into a Node.js response stream: + +```ts +import { observableIntoEventSourceStream } from '@kbn/sse-utils-server'; + +function myRequestHandler( + context: RequestHandlerContext, + request: KibanaRequest, + response: KibanaResponseFactory +) { + return response.ok({ + body: observableIntoEventSourceStream( + of({ + type: 'my_event_type', + data: { + anyData: {}, + }, + }), + logger + ), + }); +} +``` + +All emitted values have to be of `ServerSentEvent` type: + +```ts +type ServerSentEvent = { + type: string; + data: Record<string, any>; +}; +``` + +Any error that occurs in the Observable is written to the stream as an event, and the stream is closed. + +## Client + +On the client, you can use `http `@elastic/core-http-browser` to convert the stream of events back into an Observable: + +```ts +import { httpResponseIntoObservable } from '@kbn/sse-utils-client'; +function streamEvents(http: Http) { + from( + http.post('/internal/my_event_stream', { + asResponse: true, + rawResponse: true, + }) + ).pipe(httpResponseIntoObservable()); +} +``` + +Any serialized error events from the stream are de-serialized, and thrown as an error in the Observable. diff --git a/packages/kbn-sse-utils/index.ts b/src/platform/packages/shared/kbn-sse-utils/index.ts similarity index 100% rename from packages/kbn-sse-utils/index.ts rename to src/platform/packages/shared/kbn-sse-utils/index.ts diff --git a/src/platform/packages/shared/kbn-sse-utils/jest.config.js b/src/platform/packages/shared/kbn-sse-utils/jest.config.js new file mode 100644 index 0000000000000..b7409fb04e8f2 --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-sse-utils'], +}; diff --git a/packages/kbn-sse-utils/kibana.jsonc b/src/platform/packages/shared/kbn-sse-utils/kibana.jsonc similarity index 100% rename from packages/kbn-sse-utils/kibana.jsonc rename to src/platform/packages/shared/kbn-sse-utils/kibana.jsonc diff --git a/packages/kbn-sse-utils/package.json b/src/platform/packages/shared/kbn-sse-utils/package.json similarity index 100% rename from packages/kbn-sse-utils/package.json rename to src/platform/packages/shared/kbn-sse-utils/package.json diff --git a/packages/kbn-sse-utils/src/errors.ts b/src/platform/packages/shared/kbn-sse-utils/src/errors.ts similarity index 100% rename from packages/kbn-sse-utils/src/errors.ts rename to src/platform/packages/shared/kbn-sse-utils/src/errors.ts diff --git a/packages/kbn-sse-utils/src/events.ts b/src/platform/packages/shared/kbn-sse-utils/src/events.ts similarity index 100% rename from packages/kbn-sse-utils/src/events.ts rename to src/platform/packages/shared/kbn-sse-utils/src/events.ts diff --git a/src/platform/packages/shared/kbn-sse-utils/tsconfig.json b/src/platform/packages/shared/kbn-sse-utils/tsconfig.json new file mode 100644 index 0000000000000..05d96f4557574 --- /dev/null +++ b/src/platform/packages/shared/kbn-sse-utils/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + ] +} diff --git a/packages/kbn-typed-react-router-config/index.ts b/src/platform/packages/shared/kbn-typed-react-router-config/index.ts similarity index 100% rename from packages/kbn-typed-react-router-config/index.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/index.ts diff --git a/src/platform/packages/shared/kbn-typed-react-router-config/jest.config.js b/src/platform/packages/shared/kbn-typed-react-router-config/jest.config.js new file mode 100644 index 0000000000000..cfaf181f1f4a2 --- /dev/null +++ b/src/platform/packages/shared/kbn-typed-react-router-config/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-typed-react-router-config'], +}; diff --git a/packages/kbn-typed-react-router-config/kibana.jsonc b/src/platform/packages/shared/kbn-typed-react-router-config/kibana.jsonc similarity index 100% rename from packages/kbn-typed-react-router-config/kibana.jsonc rename to src/platform/packages/shared/kbn-typed-react-router-config/kibana.jsonc diff --git a/packages/kbn-typed-react-router-config/package.json b/src/platform/packages/shared/kbn-typed-react-router-config/package.json similarity index 100% rename from packages/kbn-typed-react-router-config/package.json rename to src/platform/packages/shared/kbn-typed-react-router-config/package.json diff --git a/packages/kbn-typed-react-router-config/src/breadcrumbs/breadcrumb.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/breadcrumb.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/breadcrumbs/breadcrumb.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/breadcrumb.tsx diff --git a/packages/kbn-typed-react-router-config/src/breadcrumbs/context.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/context.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/breadcrumbs/context.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/context.tsx diff --git a/packages/kbn-typed-react-router-config/src/breadcrumbs/create_router_breadcrumb_component.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/create_router_breadcrumb_component.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/breadcrumbs/create_router_breadcrumb_component.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/create_router_breadcrumb_component.tsx diff --git a/packages/kbn-typed-react-router-config/src/breadcrumbs/index.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/index.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/breadcrumbs/index.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/index.tsx diff --git a/packages/kbn-typed-react-router-config/src/breadcrumbs/use_breadcrumbs.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/use_breadcrumbs.ts similarity index 100% rename from packages/kbn-typed-react-router-config/src/breadcrumbs/use_breadcrumbs.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/use_breadcrumbs.ts diff --git a/packages/kbn-typed-react-router-config/src/breadcrumbs/use_router_breadcrumb.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/use_router_breadcrumb.ts similarity index 100% rename from packages/kbn-typed-react-router-config/src/breadcrumbs/use_router_breadcrumb.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/src/breadcrumbs/use_router_breadcrumb.ts diff --git a/packages/kbn-typed-react-router-config/src/create_router.test.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.test.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/create_router.test.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.test.tsx diff --git a/packages/kbn-typed-react-router-config/src/create_router.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.ts similarity index 100% rename from packages/kbn-typed-react-router-config/src/create_router.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/src/create_router.ts diff --git a/packages/kbn-typed-react-router-config/src/outlet.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/outlet.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/outlet.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/outlet.tsx diff --git a/packages/kbn-typed-react-router-config/src/route_renderer.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/route_renderer.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/route_renderer.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/route_renderer.tsx diff --git a/packages/kbn-typed-react-router-config/src/router_provider.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/router_provider.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/router_provider.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/router_provider.tsx diff --git a/packages/kbn-typed-react-router-config/src/types/index.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts similarity index 100% rename from packages/kbn-typed-react-router-config/src/types/index.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/src/types/index.ts diff --git a/packages/kbn-typed-react-router-config/src/types/utils.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/types/utils.ts similarity index 100% rename from packages/kbn-typed-react-router-config/src/types/utils.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/src/types/utils.ts diff --git a/packages/kbn-typed-react-router-config/src/use_current_route.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/use_current_route.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/use_current_route.tsx diff --git a/packages/kbn-typed-react-router-config/src/use_match_routes.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/use_match_routes.ts similarity index 100% rename from packages/kbn-typed-react-router-config/src/use_match_routes.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/src/use_match_routes.ts diff --git a/packages/kbn-typed-react-router-config/src/use_params.ts b/src/platform/packages/shared/kbn-typed-react-router-config/src/use_params.ts similarity index 100% rename from packages/kbn-typed-react-router-config/src/use_params.ts rename to src/platform/packages/shared/kbn-typed-react-router-config/src/use_params.ts diff --git a/packages/kbn-typed-react-router-config/src/use_route_path.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/use_route_path.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/use_route_path.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/use_route_path.tsx diff --git a/packages/kbn-typed-react-router-config/src/use_router.tsx b/src/platform/packages/shared/kbn-typed-react-router-config/src/use_router.tsx similarity index 100% rename from packages/kbn-typed-react-router-config/src/use_router.tsx rename to src/platform/packages/shared/kbn-typed-react-router-config/src/use_router.tsx diff --git a/src/platform/packages/shared/kbn-typed-react-router-config/tsconfig.json b/src/platform/packages/shared/kbn-typed-react-router-config/tsconfig.json new file mode 100644 index 0000000000000..0995478cae6bc --- /dev/null +++ b/src/platform/packages/shared/kbn-typed-react-router-config/tsconfig.json @@ -0,0 +1,27 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "isolatedModules": true, + "outDir": "target/types", + "types": [ + "node", + "jest" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "kbn_references": [ + "@kbn/io-ts-utils", + "@kbn/shared-ux-router", + "@kbn/core", + "@kbn/i18n", + "@kbn/kibana-react-plugin", + "@kbn/core-chrome-browser", + "@kbn/serverless" + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/packages/kbn-unsaved-changes-prompt/README.md b/src/platform/packages/shared/kbn-unsaved-changes-prompt/README.md similarity index 100% rename from packages/kbn-unsaved-changes-prompt/README.md rename to src/platform/packages/shared/kbn-unsaved-changes-prompt/README.md diff --git a/packages/kbn-unsaved-changes-prompt/index.ts b/src/platform/packages/shared/kbn-unsaved-changes-prompt/index.ts similarity index 100% rename from packages/kbn-unsaved-changes-prompt/index.ts rename to src/platform/packages/shared/kbn-unsaved-changes-prompt/index.ts diff --git a/src/platform/packages/shared/kbn-unsaved-changes-prompt/jest.config.js b/src/platform/packages/shared/kbn-unsaved-changes-prompt/jest.config.js new file mode 100644 index 0000000000000..4c92eb4efbc5d --- /dev/null +++ b/src/platform/packages/shared/kbn-unsaved-changes-prompt/jest.config.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/packages/shared/kbn-unsaved-changes-prompt'], +}; diff --git a/packages/kbn-unsaved-changes-prompt/kibana.jsonc b/src/platform/packages/shared/kbn-unsaved-changes-prompt/kibana.jsonc similarity index 100% rename from packages/kbn-unsaved-changes-prompt/kibana.jsonc rename to src/platform/packages/shared/kbn-unsaved-changes-prompt/kibana.jsonc diff --git a/packages/kbn-unsaved-changes-prompt/package.json b/src/platform/packages/shared/kbn-unsaved-changes-prompt/package.json similarity index 100% rename from packages/kbn-unsaved-changes-prompt/package.json rename to src/platform/packages/shared/kbn-unsaved-changes-prompt/package.json diff --git a/packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/index.ts b/src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/index.ts similarity index 100% rename from packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/index.ts rename to src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/index.ts diff --git a/packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.test.tsx b/src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.test.tsx similarity index 100% rename from packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.test.tsx rename to src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.test.tsx diff --git a/packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx b/src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx similarity index 100% rename from packages/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx rename to src/platform/packages/shared/kbn-unsaved-changes-prompt/src/unsaved_changes_prompt/unsaved_changes_prompt.tsx diff --git a/src/platform/packages/shared/kbn-unsaved-changes-prompt/tsconfig.json b/src/platform/packages/shared/kbn-unsaved-changes-prompt/tsconfig.json new file mode 100644 index 0000000000000..f36642a9adb25 --- /dev/null +++ b/src/platform/packages/shared/kbn-unsaved-changes-prompt/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": ["*.ts", "src/**/*"], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/core" + ] +} diff --git a/src/plugins/ai_assistant_management/selection/README.md b/src/platform/plugins/shared/ai_assistant_management/selection/README.md similarity index 100% rename from src/plugins/ai_assistant_management/selection/README.md rename to src/platform/plugins/shared/ai_assistant_management/selection/README.md diff --git a/src/plugins/ai_assistant_management/selection/common/ai_assistant_type.ts b/src/platform/plugins/shared/ai_assistant_management/selection/common/ai_assistant_type.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/common/ai_assistant_type.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/common/ai_assistant_type.ts diff --git a/src/plugins/ai_assistant_management/selection/common/ui_setting_keys.ts b/src/platform/plugins/shared/ai_assistant_management/selection/common/ui_setting_keys.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/common/ui_setting_keys.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/common/ui_setting_keys.ts diff --git a/src/platform/plugins/shared/ai_assistant_management/selection/jest.config.js b/src/platform/plugins/shared/ai_assistant_management/selection/jest.config.js new file mode 100644 index 0000000000000..7082a96250d33 --- /dev/null +++ b/src/platform/plugins/shared/ai_assistant_management/selection/jest.config.js @@ -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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/src/platform/plugins/shared/ai_assistant_management/selection'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/src/platform/plugins/shared/ai_assistant_management/selection', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/src/platform/plugins/shared/ai_assistant_management/selection/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/src/plugins/ai_assistant_management/selection/kibana.jsonc b/src/platform/plugins/shared/ai_assistant_management/selection/kibana.jsonc similarity index 100% rename from src/plugins/ai_assistant_management/selection/kibana.jsonc rename to src/platform/plugins/shared/ai_assistant_management/selection/kibana.jsonc diff --git a/src/plugins/ai_assistant_management/selection/public/app_context.tsx b/src/platform/plugins/shared/ai_assistant_management/selection/public/app_context.tsx similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/app_context.tsx rename to src/platform/plugins/shared/ai_assistant_management/selection/public/app_context.tsx diff --git a/src/plugins/ai_assistant_management/selection/public/index.ts b/src/platform/plugins/shared/ai_assistant_management/selection/public/index.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/index.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/public/index.ts diff --git a/src/plugins/ai_assistant_management/selection/public/management_section/mount_section.tsx b/src/platform/plugins/shared/ai_assistant_management/selection/public/management_section/mount_section.tsx similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/management_section/mount_section.tsx rename to src/platform/plugins/shared/ai_assistant_management/selection/public/management_section/mount_section.tsx diff --git a/src/plugins/ai_assistant_management/selection/public/plugin.ts b/src/platform/plugins/shared/ai_assistant_management/selection/public/plugin.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/plugin.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/public/plugin.ts diff --git a/src/plugins/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx b/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx rename to src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.test.tsx diff --git a/src/plugins/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.tsx b/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.tsx similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.tsx rename to src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/ai_assistant_selection_page.tsx diff --git a/src/plugins/ai_assistant_management/selection/public/routes/components/redirect_to_home_if_unauthorized.tsx b/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/redirect_to_home_if_unauthorized.tsx similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/routes/components/redirect_to_home_if_unauthorized.tsx rename to src/platform/plugins/shared/ai_assistant_management/selection/public/routes/components/redirect_to_home_if_unauthorized.tsx diff --git a/src/plugins/ai_assistant_management/selection/public/routes/config.tsx b/src/platform/plugins/shared/ai_assistant_management/selection/public/routes/config.tsx similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/routes/config.tsx rename to src/platform/plugins/shared/ai_assistant_management/selection/public/routes/config.tsx diff --git a/src/plugins/ai_assistant_management/selection/public/types.ts b/src/platform/plugins/shared/ai_assistant_management/selection/public/types.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/public/types.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/public/types.ts diff --git a/src/plugins/ai_assistant_management/selection/server/config.ts b/src/platform/plugins/shared/ai_assistant_management/selection/server/config.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/server/config.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/server/config.ts diff --git a/src/plugins/ai_assistant_management/selection/server/index.ts b/src/platform/plugins/shared/ai_assistant_management/selection/server/index.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/server/index.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/server/index.ts diff --git a/src/plugins/ai_assistant_management/selection/server/plugin.ts b/src/platform/plugins/shared/ai_assistant_management/selection/server/plugin.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/server/plugin.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/server/plugin.ts diff --git a/src/plugins/ai_assistant_management/selection/server/types.ts b/src/platform/plugins/shared/ai_assistant_management/selection/server/types.ts similarity index 100% rename from src/plugins/ai_assistant_management/selection/server/types.ts rename to src/platform/plugins/shared/ai_assistant_management/selection/server/types.ts diff --git a/src/platform/plugins/shared/ai_assistant_management/selection/tsconfig.json b/src/platform/plugins/shared/ai_assistant_management/selection/tsconfig.json new file mode 100644 index 0000000000000..0fc6cec454817 --- /dev/null +++ b/src/platform/plugins/shared/ai_assistant_management/selection/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": ["common/**/*", "public/**/*", "server/**/*"], + "kbn_references": [ + "@kbn/core", + "@kbn/home-plugin", + "@kbn/kibana-react-plugin", + "@kbn/management-plugin", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/core-chrome-browser", + "@kbn/typed-react-router-config", + "@kbn/serverless", + "@kbn/config-schema", + "@kbn/core-plugins-server", + "@kbn/features-plugin", + "@kbn/config", + "@kbn/doc-links" + ], + "exclude": ["target/**/*"] +} diff --git a/src/platform/plugins/shared/console/README.md b/src/platform/plugins/shared/console/README.md new file mode 100644 index 0000000000000..3b3bc1a5a5ade --- /dev/null +++ b/src/platform/plugins/shared/console/README.md @@ -0,0 +1,320 @@ +# Console + +## About + +Console provides the user with tools for storing and executing requests against Elasticsearch. + +## Features + +### `load_from` query parameter + +The `load_from` query parameter enables opening Console with prepopulated requests in two ways: from the elastic.co docs and from within other parts of Kibana. + +Plugins can open requests in Kibana by assigning this parameter a `data:text/plain` [lz-string](https://pieroxy.net/blog/pages/lz-string/index.html) encoded value. For example, navigating to `/dev_tools#/console?load_from=data:text/plain,OIUQKgBA+gzgpgQwE4GMAWAoA3gIgI4CucSAnjgFy4C2CALulAgDZMVYC+nQA` will prepopulate Console with the following request: + +``` +GET _search +{"query":{"match_all":{}}} +``` + +### Kibana API support ([#100253](https://github.com/elastic/kibana/pull/128562)) +Console plugin now supports Kibana API endpoints. `kbn:` prefix must be used in the request URL to send a request to Kibana API. For example, the following request sends a request to the Kibana API to retrieve the list of available spaces: +``` +GET kbn:api/spaces/space +``` + +### Request-body comments +Single-line and multiline comments can be added to the request body. The comments are displayed in the request editor, but are not sent to the cluster. The comments are useful for adding notes to the request body. For example, the following request body contains a single-line comment and a multiline comment: +``` +POST /_some_endpoint +{ + // This is a single-line comment + /* This is a multiline comment */ + "field": "value" +} +``` + +### Variables +Console plugin now supports variables. The variables can be used in the request body and in the request URL. The variables are defined in the `Variables` flyout in the Console UI and used in the request body and URL by wrapping the variable name with `${}`. For example, the following request body contains a variable: +``` +POST /_some_endpoint +{ + "field": "${variable}" +} +``` + +## Architecture +Console uses Monaco editor that is wrapped with [`kbn-monaco`](https://github.com/elastic/kibana/blob/main/packages/kbn-monaco/index.ts), so that if needed it can easily be replaced with another editor. +The autocomplete logic is located in [`autocomplete`](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/public/lib/autocomplete) folder. Autocomplete rules are computed by classes in `components` sub-folder. + +## Autocomplete definitions +Kibana users benefit greatly from autocomplete suggestions since not all Elasticsearch APIs can be provided with a corresponding UI. Autocomplete suggestions improve usability of Console for any Elasticsearch API endpoint. +Autocomplete definitions are all created in the form of javascript objects loaded from `json` and `js` files. + +### Creating definitions +The [`generated`](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated) folder contains definitions created automatically from Elasticsearch specifications. See this [README](https://github.com/elastic/kibana/blob/main/packages/kbn-generate-console-definitions/README.md) file for more information on the `generate-console-definitions` script. The AppEx/Management team (@elastic/kibana-management) regularly runs the script to update the definitions and is planning to automate this process. + +Manually created override files in the [`overrides`](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides) folder contain additions for request body parameters since those +are not created by the script. Any other fixes such as documentation links, request methods and patterns and url parameters +should be addressed at the source. That means this should be fixed in Elasticsearch specifications and then +autocomplete definitions can be re-generated with the script. + +If there are any endpoints missing completely from the `generated` folder, this should also be addressed at the source, i.e. +Elasticsearch specifications. If for some reason, that is not possible, then additional definitions files +can be placed in the folder [`manual`]((https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/server/lib/spec_definitions/json/manual)). + +### Top level keys +Use following top level keys in the definitions objects. + +#### `documentation` +Url to Elasticsearch REST API documentation for the endpoint (If the url contains `master` or `current` strings in the path, Console automatically replaces them with the `docLinkVersion` to always redirect the user to the correct version of the documentation). + +#### `methods` +Allowed http methods (`GET`, `POST` etc) + +#### `patterns` +Array of API endpoints that contain dynamic parameters like `{index}` or `{fields}`. For example, `{index}/_rollup/{rollup_index}`. Dynamic parameters used in patterns are not always defined. For example, a pattern `_ilm/policy/{policy}` indicates that any string can be used as policy name. +See the [Dynamic parameters](#dynamic-parameters) section below for more info about dynamic parameters defined in the autocomplete engine, such as `{index}`. + +#### `url_params` +Query url parameters and their values. See the [Query url parameters](#query-url-parameters) section below for more info. An example: +```json +{ + "url_params": { + "format": "", + "local": "__flag__", + "h": [], + "expand_wildcards": [ + "open", + "closed", + "hidden", + "none", + "all" + ] + } +} +``` + +#### `priority` +Value for selecting one autocomplete definition, if several configurations are loaded from the files. The highest number takes precedence. + +#### `availability` +A property that describes if an endpoint is available in stack and serverless environments. Endpoints with a `false` boolean value are filtered out in the corresponding environment. An example of an endpoint that is not available in the serverless environment: +```json +"availability": { + "stack": true, + "serverless": false +} +``` + +#### `data_autocomplete_rules` +Request body parameters and their values. Only used in `overrides` files because REST API specs don't contain any information about body request parameters. +Refer to Elasticsearch REST API documentation when configuring this object. See the [Request body parameters](#request-body-parameters) section below for more info. An example: +```json +{ + "data_autocomplete_rules": { + "text": [], + "field": "{field}", + "analyzer": "", + "explain": { "__one_of": [false, true] } + } +} +``` + +### Query url parameters +Query url parameters are configured in form of an object, for example: +```json +{ + "url_params": { + "local": "__flag__", + "scroll": "", + "expand_wildcards": [ + "open", + "closed", + "hidden", + "none", + "all" + ] + } +} +``` +This object specifies 3 query parameters: `local` (boolean value), `scroll` (no default value) and `expand_wildcards` (with a list of accepted values). + +When the user types in the url path into Console and at least 2 characters after `?`, all matching url parameters are displayed as autocomplete suggestions. In this example, after typing +``` +GET /_some_endpoint?ca +``` +"local" and "expand_wildcards" are displayed as suggestions. +When the user types at least 2 characters after `=`, all matching values for this parameter are displayed as autocomplete suggestions. In this example, after typing +``` +GET /_some_endpoint?expand_wildcards=hi +``` +"hidden" is displayed for autocompletion. + +Dynamic parameters such as `{index}` or `{fields}` are accepted both as an url parameter and its value in the configuration object. See the [Dynamic parameters](#dynamic-parameters) section below for more information. + +### Request body parameters +Request body parameters are configured in form of an object, for example: +```json +{ + "data_autocomplete_rules": { + "index_patterns": [], + "mappings": { "__scope_link": "put_mapping" }, + "version": 0, + "aliases": { + "__template": { + "NAME": {} + } + } + } +} +``` +Object's keys are parameters that will be displayed as autocomplete suggestions when the user starts typing request body. In this example, after typing +``` +PUT /_some_endpoint +{ + " +``` +"index_patterns", "mappings", "version" and "aliases" are displayed as autocomplete suggestions. +Object's values provide default or accepted values of request body parameters. For example, if "version" is selected from the suggestions list, value `0` is automatically filled, resulting in the following request: +``` +PUT /_some_endpoint +{ + "version": 0 +} +``` +Object's values can contain objects for nested configuration because the engine can work recursively while searching for autocomplete suggestions. + +Upper case strings are used to indicate that the property's name is a dynamic value that the user needs to define. For example, the autocomplete suggestion for aggregations displays the following object: +```json +{ + "aggs": { + "NAME": { + "AGG_TYPE": {} + } + } +} +``` +Both upper case strings `NAME` and `AGG_TYPE` indicate that those values need to be filled in by the user. + +**Following values can be used in the configuration object:** + +#### One value from the list (`__one_of: [..., ...]`) +Use this configuration for a parameter with a list of allowed values, for example types of snapshot repository: +``` +"type": {"__one_of": ["fs", "url", "s3", "hdfs", "azure"]} +``` +The first value in the list will be automatically filled as parameter value. For example, when "type" is selected from the suggestions list, the request body is autofilled as following: +``` +PUT /_some_endpoint +{ + "type": "fs" +} +``` +But if the value `fs` is deleted, all suggestions will be displayed: "fs", "url", "s3", "hdfs" and "azure". +Use `__one_of: [true, false]` for boolean values. + +#### Array of values (`[..., ... ]` or `__any_of: [..., ...]`) +Use this configuration for parameters which accept an array of values, for example actions parameter: +``` +"actions": { "__any_of": [ "add", "remove"]} +``` +When "actions" is selected from the suggestions list, it will be autocompleted with an empty array: +``` +POST /_some_endpoint +{ + "actions": [] +} +``` +All values in the array are displayed as suggestions for parameter values inside the array. + + +#### Default object structure (`__template: {...}`) +Use this configuration to insert an object with default values into the request body when the corresponding key is typed in. +For example, in this configuration +```json +{ + "terms": { + "__template": { + "field": "", + "size": 10 + }, + "field": "{field}", + "size": 10, + "shard_size": 10, + "min_doc_count": 10 + } +} +``` +the `terms` parameter has several properties, but only `field` and `size` are autocompleted in the request body when "terms" is selected from the suggestions list. +``` +POST /_some_endpoint +{ + terms: { + field: '', + size: 10, + } +} +``` +The rest of the properties are displayed as autocomplete suggestions, when the `terms` object is being edited. + +#### Scope link (`__scope_link`) +Use this type to copy a configuration object specified in a different endpoint definition. For example, the `put_settings` endpoint definition contains a configuration object that can be reused for `settings` parameter in a different endpoint: +```json +{ + "data_autocomplete_rules": { + "settings": { + "__scope_link": "put_settings" + } + } +} +``` +#### Global scope (`GLOBAL`) +Use `GLOBAL` keyword with `__scope_link` to refer to a reusable set of definitions created in the [`globals`](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/server/lib/spec_definitions/js/globals.ts) file. +For example: +```json +{ + "data_autocomplete_rules": { + "query": { + "__scope_link": "GLOBAL.query" + } + } +} +``` +#### Conditional definition (`__condition: { lines_regex: ... }`) +To provide a different set of autocomplete suggestions based on the value configured in the request. For example, when creating a snapshot repository of different types (`fs`, `url` etc) different properties are displayed in the suggestions list based on the type. See [snapshot.create_repository.json](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/snapshot.create_repository.json) for an example. + + +### Dynamic parameters +Some autocomplete definitions need to be configured with dynamic values that can't be hard coded into a json or js file, for example a list of indices in the cluster. +A list of dynamic parameters is defined in the `parametrizedComponentFactories` function in [`kb.js`](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/public/lib/kb/kb.js) file. The values of these parameters are assigned dynamically for every cluster. +Use these dynamic parameters with curly braces, for example `{index}`, `{fields}`, `{template}` etc. + +Dynamic parameters can be used in url patterns, for example `{index}/_search`. Url patterns can also contain unknown parameters just to indicate that any value can be used in the url, for example in the url `/_ilm/policy/{policy}` the value for `{policy}` can be any accepted policy name and the dynamic parameter `{policy}` is not defined in the autocomplete engine. + +For request body parameters, only known dynamic properties are allowed. For example: +```json +{ + "data_autocomplete_rules": { + "query": { + "field": "{field}" + } + } +} +``` +If an unknown dynamic parameter (for example, `{my_param}`) is used in request body parameters, a warning will be logged in the browser: `[Console] no factory found for 'my_param'`. + +### Architecture changes in 8.3 release (timeline: 07-04-2022 - 19-06-2022) +One of the main changes in architecture is refactoring the retrieval of autocomplete suggestions. Console used to send a separate request to ES for each autocomplete entity (mappings, aliases, templates, data-streams etc) to retrieve the autocomplete suggestions via the original [hand-rolled ES proxy](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/server/routes/api/console/proxy/create_handler.ts). This had a few drawbacks: +- The number of requests was dependent on the number of autocomplete entities, which was not scalable and could cause performance issues +- It added unnecessary dependencies on the ES proxy +- We risked fetching an enormous response payload for users who have a large number of mappings. + +To address these issues, we created a specific [route](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/server/routes/api/console/autocomplete_entities/index.ts) in the Kibana server to retrieve all autocomplete entities in one request and send it to the client. The response for mappings capped to 10MB to avoid sending a huge payload. The client-side code was refactored to use the new response format. For more details, see [#130633](https://github.com/elastic/kibana/pull/130633). + +Another change is replacing jQuery with the core http client to communicate with the Kibana server. Console used a custom jQuery ajax [function](https://github.com/elastic/kibana/blob/8.0/src/platform/plugins/shared/console/public/lib/es/es.ts) to send requests to the Kibana server to have lower-level control over the requests, specifically controls like `crossDomain: true`. This is no longer needed since we are using the core http client. For more details, see [#127867](https://github.com/elastic/kibana/pull/127867). + +### Outstanding issues +#### Autocomplete suggestions for Kibana API endpoints +Console currently supports autocomplete suggestions for Elasticsearch API endpoints. The autocomplete suggestions for Kibana API endpoints are not supported yet. +Related issue: [#130661](https://github.com/elastic/kibana/issues/130661) \ No newline at end of file diff --git a/src/plugins/console/common/constants/api.ts b/src/platform/plugins/shared/console/common/constants/api.ts similarity index 100% rename from src/plugins/console/common/constants/api.ts rename to src/platform/plugins/shared/console/common/constants/api.ts diff --git a/src/plugins/console/common/constants/autocomplete_definitions.ts b/src/platform/plugins/shared/console/common/constants/autocomplete_definitions.ts similarity index 100% rename from src/plugins/console/common/constants/autocomplete_definitions.ts rename to src/platform/plugins/shared/console/common/constants/autocomplete_definitions.ts diff --git a/src/plugins/console/common/constants/copy_as.ts b/src/platform/plugins/shared/console/common/constants/copy_as.ts similarity index 100% rename from src/plugins/console/common/constants/copy_as.ts rename to src/platform/plugins/shared/console/common/constants/copy_as.ts diff --git a/src/plugins/console/common/constants/editor_input.ts b/src/platform/plugins/shared/console/common/constants/editor_input.ts similarity index 100% rename from src/plugins/console/common/constants/editor_input.ts rename to src/platform/plugins/shared/console/common/constants/editor_input.ts diff --git a/src/plugins/console/common/constants/index.ts b/src/platform/plugins/shared/console/common/constants/index.ts similarity index 100% rename from src/plugins/console/common/constants/index.ts rename to src/platform/plugins/shared/console/common/constants/index.ts diff --git a/src/plugins/console/common/constants/plugin.ts b/src/platform/plugins/shared/console/common/constants/plugin.ts similarity index 100% rename from src/plugins/console/common/constants/plugin.ts rename to src/platform/plugins/shared/console/common/constants/plugin.ts diff --git a/src/plugins/console/common/constants/variables.ts b/src/platform/plugins/shared/console/common/constants/variables.ts similarity index 100% rename from src/plugins/console/common/constants/variables.ts rename to src/platform/plugins/shared/console/common/constants/variables.ts diff --git a/src/plugins/console/common/constants/welcome_panel.ts b/src/platform/plugins/shared/console/common/constants/welcome_panel.ts similarity index 100% rename from src/plugins/console/common/constants/welcome_panel.ts rename to src/platform/plugins/shared/console/common/constants/welcome_panel.ts diff --git a/src/plugins/console/common/text_object.ts b/src/platform/plugins/shared/console/common/text_object.ts similarity index 100% rename from src/plugins/console/common/text_object.ts rename to src/platform/plugins/shared/console/common/text_object.ts diff --git a/src/plugins/console/common/types/api_responses.ts b/src/platform/plugins/shared/console/common/types/api_responses.ts similarity index 100% rename from src/plugins/console/common/types/api_responses.ts rename to src/platform/plugins/shared/console/common/types/api_responses.ts diff --git a/src/plugins/console/common/types/autocomplete_definitions.ts b/src/platform/plugins/shared/console/common/types/autocomplete_definitions.ts similarity index 100% rename from src/plugins/console/common/types/autocomplete_definitions.ts rename to src/platform/plugins/shared/console/common/types/autocomplete_definitions.ts diff --git a/src/plugins/console/common/types/index.ts b/src/platform/plugins/shared/console/common/types/index.ts similarity index 100% rename from src/plugins/console/common/types/index.ts rename to src/platform/plugins/shared/console/common/types/index.ts diff --git a/src/plugins/console/common/types/models.ts b/src/platform/plugins/shared/console/common/types/models.ts similarity index 100% rename from src/plugins/console/common/types/models.ts rename to src/platform/plugins/shared/console/common/types/models.ts diff --git a/src/plugins/console/common/types/plugin_config.ts b/src/platform/plugins/shared/console/common/types/plugin_config.ts similarity index 100% rename from src/plugins/console/common/types/plugin_config.ts rename to src/platform/plugins/shared/console/common/types/plugin_config.ts diff --git a/src/platform/plugins/shared/console/jest.config.js b/src/platform/plugins/shared/console/jest.config.js new file mode 100644 index 0000000000000..12edf4d1f4cf6 --- /dev/null +++ b/src/platform/plugins/shared/console/jest.config.js @@ -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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/plugins/shared/console'], + coverageDirectory: '<rootDir>/target/kibana-coverage/jest/src/platform/plugins/shared/console', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/src/platform/plugins/shared/console/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/src/plugins/console/kibana.jsonc b/src/platform/plugins/shared/console/kibana.jsonc similarity index 100% rename from src/plugins/console/kibana.jsonc rename to src/platform/plugins/shared/console/kibana.jsonc diff --git a/src/plugins/console/public/application/components/console_menu.tsx b/src/platform/plugins/shared/console/public/application/components/console_menu.tsx similarity index 100% rename from src/plugins/console/public/application/components/console_menu.tsx rename to src/platform/plugins/shared/console/public/application/components/console_menu.tsx diff --git a/src/plugins/console/public/application/components/console_tour_step.tsx b/src/platform/plugins/shared/console/public/application/components/console_tour_step.tsx similarity index 100% rename from src/plugins/console/public/application/components/console_tour_step.tsx rename to src/platform/plugins/shared/console/public/application/components/console_tour_step.tsx diff --git a/src/plugins/console/public/application/components/editor_content_spinner.tsx b/src/platform/plugins/shared/console/public/application/components/editor_content_spinner.tsx similarity index 100% rename from src/plugins/console/public/application/components/editor_content_spinner.tsx rename to src/platform/plugins/shared/console/public/application/components/editor_content_spinner.tsx diff --git a/src/plugins/console/public/application/components/help_popover.tsx b/src/platform/plugins/shared/console/public/application/components/help_popover.tsx similarity index 100% rename from src/plugins/console/public/application/components/help_popover.tsx rename to src/platform/plugins/shared/console/public/application/components/help_popover.tsx diff --git a/src/plugins/console/public/application/components/index.ts b/src/platform/plugins/shared/console/public/application/components/index.ts similarity index 100% rename from src/plugins/console/public/application/components/index.ts rename to src/platform/plugins/shared/console/public/application/components/index.ts diff --git a/src/plugins/console/public/application/components/network_request_status_bar/index.ts b/src/platform/plugins/shared/console/public/application/components/network_request_status_bar/index.ts similarity index 100% rename from src/plugins/console/public/application/components/network_request_status_bar/index.ts rename to src/platform/plugins/shared/console/public/application/components/network_request_status_bar/index.ts diff --git a/src/plugins/console/public/application/components/network_request_status_bar/network_request_status_bar.tsx b/src/platform/plugins/shared/console/public/application/components/network_request_status_bar/network_request_status_bar.tsx similarity index 100% rename from src/plugins/console/public/application/components/network_request_status_bar/network_request_status_bar.tsx rename to src/platform/plugins/shared/console/public/application/components/network_request_status_bar/network_request_status_bar.tsx diff --git a/src/plugins/console/public/application/components/output_panel_empty_state.tsx b/src/platform/plugins/shared/console/public/application/components/output_panel_empty_state.tsx similarity index 100% rename from src/plugins/console/public/application/components/output_panel_empty_state.tsx rename to src/platform/plugins/shared/console/public/application/components/output_panel_empty_state.tsx diff --git a/src/plugins/console/public/application/components/settings/index.ts b/src/platform/plugins/shared/console/public/application/components/settings/index.ts similarity index 100% rename from src/plugins/console/public/application/components/settings/index.ts rename to src/platform/plugins/shared/console/public/application/components/settings/index.ts diff --git a/src/plugins/console/public/application/components/settings/settings_editor.tsx b/src/platform/plugins/shared/console/public/application/components/settings/settings_editor.tsx similarity index 100% rename from src/plugins/console/public/application/components/settings/settings_editor.tsx rename to src/platform/plugins/shared/console/public/application/components/settings/settings_editor.tsx diff --git a/src/plugins/console/public/application/components/settings/settings_form_row.tsx b/src/platform/plugins/shared/console/public/application/components/settings/settings_form_row.tsx similarity index 100% rename from src/plugins/console/public/application/components/settings/settings_form_row.tsx rename to src/platform/plugins/shared/console/public/application/components/settings/settings_form_row.tsx diff --git a/src/plugins/console/public/application/components/settings/settings_group.tsx b/src/platform/plugins/shared/console/public/application/components/settings/settings_group.tsx similarity index 100% rename from src/plugins/console/public/application/components/settings/settings_group.tsx rename to src/platform/plugins/shared/console/public/application/components/settings/settings_group.tsx diff --git a/src/plugins/console/public/application/components/settings/types.ts b/src/platform/plugins/shared/console/public/application/components/settings/types.ts similarity index 100% rename from src/plugins/console/public/application/components/settings/types.ts rename to src/platform/plugins/shared/console/public/application/components/settings/types.ts diff --git a/src/plugins/console/public/application/components/shortcuts_popover/index.ts b/src/platform/plugins/shared/console/public/application/components/shortcuts_popover/index.ts similarity index 100% rename from src/plugins/console/public/application/components/shortcuts_popover/index.ts rename to src/platform/plugins/shared/console/public/application/components/shortcuts_popover/index.ts diff --git a/src/plugins/console/public/application/components/shortcuts_popover/keys.tsx b/src/platform/plugins/shared/console/public/application/components/shortcuts_popover/keys.tsx similarity index 100% rename from src/plugins/console/public/application/components/shortcuts_popover/keys.tsx rename to src/platform/plugins/shared/console/public/application/components/shortcuts_popover/keys.tsx diff --git a/src/plugins/console/public/application/components/shortcuts_popover/shortcut_line.tsx b/src/platform/plugins/shared/console/public/application/components/shortcuts_popover/shortcut_line.tsx similarity index 100% rename from src/plugins/console/public/application/components/shortcuts_popover/shortcut_line.tsx rename to src/platform/plugins/shared/console/public/application/components/shortcuts_popover/shortcut_line.tsx diff --git a/src/plugins/console/public/application/components/shortcuts_popover/shortcuts_popover.tsx b/src/platform/plugins/shared/console/public/application/components/shortcuts_popover/shortcuts_popover.tsx similarity index 100% rename from src/plugins/console/public/application/components/shortcuts_popover/shortcuts_popover.tsx rename to src/platform/plugins/shared/console/public/application/components/shortcuts_popover/shortcuts_popover.tsx diff --git a/src/plugins/console/public/application/components/something_went_wrong_callout.tsx b/src/platform/plugins/shared/console/public/application/components/something_went_wrong_callout.tsx similarity index 100% rename from src/plugins/console/public/application/components/something_went_wrong_callout.tsx rename to src/platform/plugins/shared/console/public/application/components/something_went_wrong_callout.tsx diff --git a/src/plugins/console/public/application/components/storage_quota_error.tsx b/src/platform/plugins/shared/console/public/application/components/storage_quota_error.tsx similarity index 100% rename from src/plugins/console/public/application/components/storage_quota_error.tsx rename to src/platform/plugins/shared/console/public/application/components/storage_quota_error.tsx diff --git a/src/plugins/console/public/application/components/top_nav_menu.tsx b/src/platform/plugins/shared/console/public/application/components/top_nav_menu.tsx similarity index 100% rename from src/plugins/console/public/application/components/top_nav_menu.tsx rename to src/platform/plugins/shared/console/public/application/components/top_nav_menu.tsx diff --git a/src/plugins/console/public/application/components/variables/index.ts b/src/platform/plugins/shared/console/public/application/components/variables/index.ts similarity index 100% rename from src/plugins/console/public/application/components/variables/index.ts rename to src/platform/plugins/shared/console/public/application/components/variables/index.ts diff --git a/src/plugins/console/public/application/components/variables/types.ts b/src/platform/plugins/shared/console/public/application/components/variables/types.ts similarity index 100% rename from src/plugins/console/public/application/components/variables/types.ts rename to src/platform/plugins/shared/console/public/application/components/variables/types.ts diff --git a/src/plugins/console/public/application/components/variables/utils.test.ts b/src/platform/plugins/shared/console/public/application/components/variables/utils.test.ts similarity index 100% rename from src/plugins/console/public/application/components/variables/utils.test.ts rename to src/platform/plugins/shared/console/public/application/components/variables/utils.test.ts diff --git a/src/plugins/console/public/application/components/variables/utils.ts b/src/platform/plugins/shared/console/public/application/components/variables/utils.ts similarity index 100% rename from src/plugins/console/public/application/components/variables/utils.ts rename to src/platform/plugins/shared/console/public/application/components/variables/utils.ts diff --git a/src/plugins/console/public/application/components/variables/variables_editor.tsx b/src/platform/plugins/shared/console/public/application/components/variables/variables_editor.tsx similarity index 100% rename from src/plugins/console/public/application/components/variables/variables_editor.tsx rename to src/platform/plugins/shared/console/public/application/components/variables/variables_editor.tsx diff --git a/src/plugins/console/public/application/components/variables/variables_editor_form.tsx b/src/platform/plugins/shared/console/public/application/components/variables/variables_editor_form.tsx similarity index 100% rename from src/plugins/console/public/application/components/variables/variables_editor_form.tsx rename to src/platform/plugins/shared/console/public/application/components/variables/variables_editor_form.tsx diff --git a/src/plugins/console/public/application/containers/config/config.tsx b/src/platform/plugins/shared/console/public/application/containers/config/config.tsx similarity index 100% rename from src/plugins/console/public/application/containers/config/config.tsx rename to src/platform/plugins/shared/console/public/application/containers/config/config.tsx diff --git a/src/plugins/console/public/application/containers/config/index.ts b/src/platform/plugins/shared/console/public/application/containers/config/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/config/index.ts rename to src/platform/plugins/shared/console/public/application/containers/config/index.ts diff --git a/src/plugins/console/public/application/containers/config/settings.tsx b/src/platform/plugins/shared/console/public/application/containers/config/settings.tsx similarity index 100% rename from src/plugins/console/public/application/containers/config/settings.tsx rename to src/platform/plugins/shared/console/public/application/containers/config/settings.tsx diff --git a/src/plugins/console/public/application/containers/config/variables.tsx b/src/platform/plugins/shared/console/public/application/containers/config/variables.tsx similarity index 100% rename from src/plugins/console/public/application/containers/config/variables.tsx rename to src/platform/plugins/shared/console/public/application/containers/config/variables.tsx diff --git a/src/plugins/console/public/application/containers/editor/components/context_menu/context_menu.tsx b/src/platform/plugins/shared/console/public/application/containers/editor/components/context_menu/context_menu.tsx similarity index 100% rename from src/plugins/console/public/application/containers/editor/components/context_menu/context_menu.tsx rename to src/platform/plugins/shared/console/public/application/containers/editor/components/context_menu/context_menu.tsx diff --git a/src/plugins/console/public/application/containers/editor/components/context_menu/index.ts b/src/platform/plugins/shared/console/public/application/containers/editor/components/context_menu/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/components/context_menu/index.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/components/context_menu/index.ts diff --git a/src/plugins/console/public/application/containers/editor/components/context_menu/language_selector_modal.tsx b/src/platform/plugins/shared/console/public/application/containers/editor/components/context_menu/language_selector_modal.tsx similarity index 100% rename from src/plugins/console/public/application/containers/editor/components/context_menu/language_selector_modal.tsx rename to src/platform/plugins/shared/console/public/application/containers/editor/components/context_menu/language_selector_modal.tsx diff --git a/src/plugins/console/public/application/containers/editor/components/index.ts b/src/platform/plugins/shared/console/public/application/containers/editor/components/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/components/index.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/components/index.ts diff --git a/src/plugins/console/public/application/containers/editor/editor.tsx b/src/platform/plugins/shared/console/public/application/containers/editor/editor.tsx similarity index 100% rename from src/plugins/console/public/application/containers/editor/editor.tsx rename to src/platform/plugins/shared/console/public/application/containers/editor/editor.tsx diff --git a/src/plugins/console/public/application/containers/editor/hooks/index.ts b/src/platform/plugins/shared/console/public/application/containers/editor/hooks/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/hooks/index.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/hooks/index.ts diff --git a/src/plugins/console/public/application/containers/editor/hooks/use_register_keyboard_commands.ts b/src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_register_keyboard_commands.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/hooks/use_register_keyboard_commands.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_register_keyboard_commands.ts diff --git a/src/plugins/console/public/application/containers/editor/hooks/use_resize_checker_utils.ts b/src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_resize_checker_utils.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/hooks/use_resize_checker_utils.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_resize_checker_utils.ts diff --git a/src/plugins/console/public/application/containers/editor/hooks/use_set_initial_value.test.ts b/src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_set_initial_value.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/hooks/use_set_initial_value.test.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_set_initial_value.test.ts diff --git a/src/plugins/console/public/application/containers/editor/hooks/use_set_initial_value.ts b/src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_set_initial_value.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/hooks/use_set_initial_value.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_set_initial_value.ts diff --git a/src/plugins/console/public/application/containers/editor/hooks/use_setup_autocomplete_polling.ts b/src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_setup_autocomplete_polling.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/hooks/use_setup_autocomplete_polling.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_setup_autocomplete_polling.ts diff --git a/src/plugins/console/public/application/containers/editor/hooks/use_setup_autosave.ts b/src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_setup_autosave.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/hooks/use_setup_autosave.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/hooks/use_setup_autosave.ts diff --git a/src/plugins/console/public/application/containers/editor/index.ts b/src/platform/plugins/shared/console/public/application/containers/editor/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/index.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/index.ts diff --git a/src/plugins/console/public/application/containers/editor/monaco_editor.tsx b/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor.tsx similarity index 100% rename from src/plugins/console/public/application/containers/editor/monaco_editor.tsx rename to src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor.tsx diff --git a/src/plugins/console/public/application/containers/editor/monaco_editor_actions_provider.test.ts b/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_actions_provider.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/monaco_editor_actions_provider.test.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_actions_provider.test.ts diff --git a/src/plugins/console/public/application/containers/editor/monaco_editor_actions_provider.ts b/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_actions_provider.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/monaco_editor_actions_provider.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_actions_provider.ts diff --git a/src/plugins/console/public/application/containers/editor/monaco_editor_output.tsx b/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_output.tsx similarity index 100% rename from src/plugins/console/public/application/containers/editor/monaco_editor_output.tsx rename to src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_output.tsx diff --git a/src/plugins/console/public/application/containers/editor/monaco_editor_output_actions_provider.ts b/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_output_actions_provider.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/monaco_editor_output_actions_provider.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_output_actions_provider.ts diff --git a/src/plugins/console/public/application/containers/editor/monaco_editor_suggestion_provider.ts b/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_suggestion_provider.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/monaco_editor_suggestion_provider.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_suggestion_provider.ts diff --git a/src/plugins/console/public/application/containers/editor/types.ts b/src/platform/plugins/shared/console/public/application/containers/editor/types.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/types.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/types.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/autocomplete_utils.test.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/autocomplete_utils.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/autocomplete_utils.test.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/autocomplete_utils.test.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/autocomplete_utils.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/autocomplete_utils.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/autocomplete_utils.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/autocomplete_utils.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/constants.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/constants.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/constants.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/constants.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/index.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/index.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/index.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.test.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.test.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.test.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/convert_mapbox_vector_tile_to_json.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/index.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/index.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/index.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/response.pbf b/src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/response.pbf similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/mapbox_vector_tile/response.pbf rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/mapbox_vector_tile/response.pbf diff --git a/src/plugins/console/public/application/containers/editor/utils/output_data.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/output_data.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/output_data.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/output_data.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/requests_utils.test.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/requests_utils.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/requests_utils.test.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/requests_utils.test.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/requests_utils.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/requests_utils.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/requests_utils.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/requests_utils.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/status_code_decoration_utils.test.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/status_code_decoration_utils.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/status_code_decoration_utils.test.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/status_code_decoration_utils.test.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/status_code_decoration_utils.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/status_code_decoration_utils.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/status_code_decoration_utils.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/status_code_decoration_utils.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/tokens_utils.test.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/tokens_utils.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/tokens_utils.test.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/tokens_utils.test.ts diff --git a/src/plugins/console/public/application/containers/editor/utils/tokens_utils.ts b/src/platform/plugins/shared/console/public/application/containers/editor/utils/tokens_utils.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/utils/tokens_utils.ts rename to src/platform/plugins/shared/console/public/application/containers/editor/utils/tokens_utils.ts diff --git a/src/plugins/console/public/application/containers/embeddable/_embeddable_console.scss b/src/platform/plugins/shared/console/public/application/containers/embeddable/_embeddable_console.scss similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/_embeddable_console.scss rename to src/platform/plugins/shared/console/public/application/containers/embeddable/_embeddable_console.scss diff --git a/src/plugins/console/public/application/containers/embeddable/_index.scss b/src/platform/plugins/shared/console/public/application/containers/embeddable/_index.scss similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/_index.scss rename to src/platform/plugins/shared/console/public/application/containers/embeddable/_index.scss diff --git a/src/plugins/console/public/application/containers/embeddable/_variables.scss b/src/platform/plugins/shared/console/public/application/containers/embeddable/_variables.scss similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/_variables.scss rename to src/platform/plugins/shared/console/public/application/containers/embeddable/_variables.scss diff --git a/src/plugins/console/public/application/containers/embeddable/console_resize_button.test.ts b/src/platform/plugins/shared/console/public/application/containers/embeddable/console_resize_button.test.ts similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/console_resize_button.test.ts rename to src/platform/plugins/shared/console/public/application/containers/embeddable/console_resize_button.test.ts diff --git a/src/plugins/console/public/application/containers/embeddable/console_resize_button.tsx b/src/platform/plugins/shared/console/public/application/containers/embeddable/console_resize_button.tsx similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/console_resize_button.tsx rename to src/platform/plugins/shared/console/public/application/containers/embeddable/console_resize_button.tsx diff --git a/src/plugins/console/public/application/containers/embeddable/console_wrapper.tsx b/src/platform/plugins/shared/console/public/application/containers/embeddable/console_wrapper.tsx similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/console_wrapper.tsx rename to src/platform/plugins/shared/console/public/application/containers/embeddable/console_wrapper.tsx diff --git a/src/plugins/console/public/application/containers/embeddable/embeddable_console.tsx b/src/platform/plugins/shared/console/public/application/containers/embeddable/embeddable_console.tsx similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/embeddable_console.tsx rename to src/platform/plugins/shared/console/public/application/containers/embeddable/embeddable_console.tsx diff --git a/src/plugins/console/public/application/containers/embeddable/index.tsx b/src/platform/plugins/shared/console/public/application/containers/embeddable/index.tsx similarity index 100% rename from src/plugins/console/public/application/containers/embeddable/index.tsx rename to src/platform/plugins/shared/console/public/application/containers/embeddable/index.tsx diff --git a/src/plugins/console/public/application/containers/history/history.tsx b/src/platform/plugins/shared/console/public/application/containers/history/history.tsx similarity index 100% rename from src/plugins/console/public/application/containers/history/history.tsx rename to src/platform/plugins/shared/console/public/application/containers/history/history.tsx diff --git a/src/plugins/console/public/application/containers/history/history_empty.tsx b/src/platform/plugins/shared/console/public/application/containers/history/history_empty.tsx similarity index 100% rename from src/plugins/console/public/application/containers/history/history_empty.tsx rename to src/platform/plugins/shared/console/public/application/containers/history/history_empty.tsx diff --git a/src/plugins/console/public/application/containers/history/history_viewer_monaco.tsx b/src/platform/plugins/shared/console/public/application/containers/history/history_viewer_monaco.tsx similarity index 100% rename from src/plugins/console/public/application/containers/history/history_viewer_monaco.tsx rename to src/platform/plugins/shared/console/public/application/containers/history/history_viewer_monaco.tsx diff --git a/src/plugins/console/public/application/containers/history/index.ts b/src/platform/plugins/shared/console/public/application/containers/history/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/history/index.ts rename to src/platform/plugins/shared/console/public/application/containers/history/index.ts diff --git a/src/plugins/console/public/application/containers/index.ts b/src/platform/plugins/shared/console/public/application/containers/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/index.ts rename to src/platform/plugins/shared/console/public/application/containers/index.ts diff --git a/src/plugins/console/public/application/containers/main/constants.ts b/src/platform/plugins/shared/console/public/application/containers/main/constants.ts similarity index 100% rename from src/plugins/console/public/application/containers/main/constants.ts rename to src/platform/plugins/shared/console/public/application/containers/main/constants.ts diff --git a/src/plugins/console/public/application/containers/main/get_console_tour_step_props.tsx b/src/platform/plugins/shared/console/public/application/containers/main/get_console_tour_step_props.tsx similarity index 100% rename from src/plugins/console/public/application/containers/main/get_console_tour_step_props.tsx rename to src/platform/plugins/shared/console/public/application/containers/main/get_console_tour_step_props.tsx diff --git a/src/plugins/console/public/application/containers/main/get_top_nav.ts b/src/platform/plugins/shared/console/public/application/containers/main/get_top_nav.ts similarity index 100% rename from src/plugins/console/public/application/containers/main/get_top_nav.ts rename to src/platform/plugins/shared/console/public/application/containers/main/get_top_nav.ts diff --git a/src/plugins/console/public/application/containers/main/get_tour_steps.tsx b/src/platform/plugins/shared/console/public/application/containers/main/get_tour_steps.tsx similarity index 100% rename from src/plugins/console/public/application/containers/main/get_tour_steps.tsx rename to src/platform/plugins/shared/console/public/application/containers/main/get_tour_steps.tsx diff --git a/src/plugins/console/public/application/containers/main/i18n.ts b/src/platform/plugins/shared/console/public/application/containers/main/i18n.ts similarity index 100% rename from src/plugins/console/public/application/containers/main/i18n.ts rename to src/platform/plugins/shared/console/public/application/containers/main/i18n.ts diff --git a/src/plugins/console/public/application/containers/main/import_confirm_modal.tsx b/src/platform/plugins/shared/console/public/application/containers/main/import_confirm_modal.tsx similarity index 100% rename from src/plugins/console/public/application/containers/main/import_confirm_modal.tsx rename to src/platform/plugins/shared/console/public/application/containers/main/import_confirm_modal.tsx diff --git a/src/plugins/console/public/application/containers/main/index.ts b/src/platform/plugins/shared/console/public/application/containers/main/index.ts similarity index 100% rename from src/plugins/console/public/application/containers/main/index.ts rename to src/platform/plugins/shared/console/public/application/containers/main/index.ts diff --git a/src/plugins/console/public/application/containers/main/main.tsx b/src/platform/plugins/shared/console/public/application/containers/main/main.tsx similarity index 100% rename from src/plugins/console/public/application/containers/main/main.tsx rename to src/platform/plugins/shared/console/public/application/containers/main/main.tsx diff --git a/src/plugins/console/public/application/containers/main/nav_icon_button.tsx b/src/platform/plugins/shared/console/public/application/containers/main/nav_icon_button.tsx similarity index 100% rename from src/plugins/console/public/application/containers/main/nav_icon_button.tsx rename to src/platform/plugins/shared/console/public/application/containers/main/nav_icon_button.tsx diff --git a/src/plugins/console/public/application/contexts/create_use_context.ts b/src/platform/plugins/shared/console/public/application/contexts/create_use_context.ts similarity index 100% rename from src/plugins/console/public/application/contexts/create_use_context.ts rename to src/platform/plugins/shared/console/public/application/contexts/create_use_context.ts diff --git a/src/plugins/console/public/application/contexts/editor_context/editor_context.tsx b/src/platform/plugins/shared/console/public/application/contexts/editor_context/editor_context.tsx similarity index 100% rename from src/plugins/console/public/application/contexts/editor_context/editor_context.tsx rename to src/platform/plugins/shared/console/public/application/contexts/editor_context/editor_context.tsx diff --git a/src/plugins/console/public/application/contexts/editor_context/editor_registry.ts b/src/platform/plugins/shared/console/public/application/contexts/editor_context/editor_registry.ts similarity index 100% rename from src/plugins/console/public/application/contexts/editor_context/editor_registry.ts rename to src/platform/plugins/shared/console/public/application/contexts/editor_context/editor_registry.ts diff --git a/src/plugins/console/public/application/contexts/editor_context/index.ts b/src/platform/plugins/shared/console/public/application/contexts/editor_context/index.ts similarity index 100% rename from src/plugins/console/public/application/contexts/editor_context/index.ts rename to src/platform/plugins/shared/console/public/application/contexts/editor_context/index.ts diff --git a/src/plugins/console/public/application/contexts/index.ts b/src/platform/plugins/shared/console/public/application/contexts/index.ts similarity index 100% rename from src/plugins/console/public/application/contexts/index.ts rename to src/platform/plugins/shared/console/public/application/contexts/index.ts diff --git a/src/plugins/console/public/application/contexts/request_context.tsx b/src/platform/plugins/shared/console/public/application/contexts/request_context.tsx similarity index 100% rename from src/plugins/console/public/application/contexts/request_context.tsx rename to src/platform/plugins/shared/console/public/application/contexts/request_context.tsx diff --git a/src/plugins/console/public/application/contexts/services_context.mock.ts b/src/platform/plugins/shared/console/public/application/contexts/services_context.mock.ts similarity index 100% rename from src/plugins/console/public/application/contexts/services_context.mock.ts rename to src/platform/plugins/shared/console/public/application/contexts/services_context.mock.ts diff --git a/src/plugins/console/public/application/contexts/services_context.tsx b/src/platform/plugins/shared/console/public/application/contexts/services_context.tsx similarity index 100% rename from src/plugins/console/public/application/contexts/services_context.tsx rename to src/platform/plugins/shared/console/public/application/contexts/services_context.tsx diff --git a/src/plugins/console/public/application/factories/index.ts b/src/platform/plugins/shared/console/public/application/factories/index.ts similarity index 100% rename from src/plugins/console/public/application/factories/index.ts rename to src/platform/plugins/shared/console/public/application/factories/index.ts diff --git a/src/plugins/console/public/application/factories/token_iterator.ts b/src/platform/plugins/shared/console/public/application/factories/token_iterator.ts similarity index 100% rename from src/plugins/console/public/application/factories/token_iterator.ts rename to src/platform/plugins/shared/console/public/application/factories/token_iterator.ts diff --git a/src/plugins/console/public/application/hooks/README.md b/src/platform/plugins/shared/console/public/application/hooks/README.md similarity index 100% rename from src/plugins/console/public/application/hooks/README.md rename to src/platform/plugins/shared/console/public/application/hooks/README.md diff --git a/src/plugins/console/public/application/hooks/index.ts b/src/platform/plugins/shared/console/public/application/hooks/index.ts similarity index 100% rename from src/plugins/console/public/application/hooks/index.ts rename to src/platform/plugins/shared/console/public/application/hooks/index.ts diff --git a/src/plugins/console/public/application/hooks/use_data_init/data_migration.ts b/src/platform/plugins/shared/console/public/application/hooks/use_data_init/data_migration.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_data_init/data_migration.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_data_init/data_migration.ts diff --git a/src/plugins/console/public/application/hooks/use_data_init/index.ts b/src/platform/plugins/shared/console/public/application/hooks/use_data_init/index.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_data_init/index.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_data_init/index.ts diff --git a/src/plugins/console/public/application/hooks/use_data_init/use_data_init.ts b/src/platform/plugins/shared/console/public/application/hooks/use_data_init/use_data_init.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_data_init/use_data_init.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_data_init/use_data_init.ts diff --git a/src/plugins/console/public/application/hooks/use_save_current_text_object.ts b/src/platform/plugins/shared/console/public/application/hooks/use_save_current_text_object.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_save_current_text_object.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_save_current_text_object.ts diff --git a/src/plugins/console/public/application/hooks/use_send_current_request/index.ts b/src/platform/plugins/shared/console/public/application/hooks/use_send_current_request/index.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_send_current_request/index.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_send_current_request/index.ts diff --git a/src/plugins/console/public/application/hooks/use_send_current_request/send_request.test.ts b/src/platform/plugins/shared/console/public/application/hooks/use_send_current_request/send_request.test.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_send_current_request/send_request.test.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_send_current_request/send_request.test.ts diff --git a/src/plugins/console/public/application/hooks/use_send_current_request/send_request.ts b/src/platform/plugins/shared/console/public/application/hooks/use_send_current_request/send_request.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_send_current_request/send_request.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_send_current_request/send_request.ts diff --git a/src/plugins/console/public/application/hooks/use_set_input_editor.ts b/src/platform/plugins/shared/console/public/application/hooks/use_set_input_editor.ts similarity index 100% rename from src/plugins/console/public/application/hooks/use_set_input_editor.ts rename to src/platform/plugins/shared/console/public/application/hooks/use_set_input_editor.ts diff --git a/src/plugins/console/public/application/index.tsx b/src/platform/plugins/shared/console/public/application/index.tsx similarity index 100% rename from src/plugins/console/public/application/index.tsx rename to src/platform/plugins/shared/console/public/application/index.tsx diff --git a/src/plugins/console/public/application/lib/api.ts b/src/platform/plugins/shared/console/public/application/lib/api.ts similarity index 100% rename from src/plugins/console/public/application/lib/api.ts rename to src/platform/plugins/shared/console/public/application/lib/api.ts diff --git a/src/plugins/console/public/application/lib/es_host_service.ts b/src/platform/plugins/shared/console/public/application/lib/es_host_service.ts similarity index 100% rename from src/plugins/console/public/application/lib/es_host_service.ts rename to src/platform/plugins/shared/console/public/application/lib/es_host_service.ts diff --git a/src/plugins/console/public/application/lib/format_request.ts b/src/platform/plugins/shared/console/public/application/lib/format_request.ts similarity index 100% rename from src/plugins/console/public/application/lib/format_request.ts rename to src/platform/plugins/shared/console/public/application/lib/format_request.ts diff --git a/src/plugins/console/public/application/lib/index.ts b/src/platform/plugins/shared/console/public/application/lib/index.ts similarity index 100% rename from src/plugins/console/public/application/lib/index.ts rename to src/platform/plugins/shared/console/public/application/lib/index.ts diff --git a/src/plugins/console/public/application/lib/load_from.test.ts b/src/platform/plugins/shared/console/public/application/lib/load_from.test.ts similarity index 100% rename from src/plugins/console/public/application/lib/load_from.test.ts rename to src/platform/plugins/shared/console/public/application/lib/load_from.test.ts diff --git a/src/plugins/console/public/application/lib/load_from.ts b/src/platform/plugins/shared/console/public/application/lib/load_from.ts similarity index 100% rename from src/plugins/console/public/application/lib/load_from.ts rename to src/platform/plugins/shared/console/public/application/lib/load_from.ts diff --git a/src/plugins/console/public/application/logo.svg b/src/platform/plugins/shared/console/public/application/logo.svg similarity index 100% rename from src/plugins/console/public/application/logo.svg rename to src/platform/plugins/shared/console/public/application/logo.svg diff --git a/src/plugins/console/public/application/stores/editor.ts b/src/platform/plugins/shared/console/public/application/stores/editor.ts similarity index 100% rename from src/plugins/console/public/application/stores/editor.ts rename to src/platform/plugins/shared/console/public/application/stores/editor.ts diff --git a/src/plugins/console/public/application/stores/embeddable_console.ts b/src/platform/plugins/shared/console/public/application/stores/embeddable_console.ts similarity index 100% rename from src/plugins/console/public/application/stores/embeddable_console.ts rename to src/platform/plugins/shared/console/public/application/stores/embeddable_console.ts diff --git a/src/plugins/console/public/application/stores/request.ts b/src/platform/plugins/shared/console/public/application/stores/request.ts similarity index 100% rename from src/plugins/console/public/application/stores/request.ts rename to src/platform/plugins/shared/console/public/application/stores/request.ts diff --git a/src/plugins/console/public/index.scss b/src/platform/plugins/shared/console/public/index.scss similarity index 100% rename from src/plugins/console/public/index.scss rename to src/platform/plugins/shared/console/public/index.scss diff --git a/src/plugins/console/public/index.ts b/src/platform/plugins/shared/console/public/index.ts similarity index 100% rename from src/plugins/console/public/index.ts rename to src/platform/plugins/shared/console/public/index.ts diff --git a/src/plugins/console/public/lib/autocomplete/body_completer.js b/src/platform/plugins/shared/console/public/lib/autocomplete/body_completer.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/body_completer.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/body_completer.js diff --git a/src/plugins/console/public/lib/autocomplete/components/accept_endpoint_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/accept_endpoint_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/accept_endpoint_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/accept_endpoint_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/autocomplete_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/autocomplete_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/autocomplete_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/autocomplete_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/component_template_autocomplete_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/component_template_autocomplete_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/component_template_autocomplete_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/component_template_autocomplete_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/conditional_proxy.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/conditional_proxy.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/conditional_proxy.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/conditional_proxy.js diff --git a/src/plugins/console/public/lib/autocomplete/components/constant_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/constant_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/constant_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/constant_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/data_stream_autocomplete_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/data_stream_autocomplete_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/data_stream_autocomplete_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/data_stream_autocomplete_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/field_autocomplete_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/field_autocomplete_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/field_autocomplete_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/field_autocomplete_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/full_request_component.ts b/src/platform/plugins/shared/console/public/lib/autocomplete/components/full_request_component.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/full_request_component.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/full_request_component.ts diff --git a/src/plugins/console/public/lib/autocomplete/components/global_only_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/global_only_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/global_only_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/global_only_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/index.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/index.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/index.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/index.js diff --git a/src/plugins/console/public/lib/autocomplete/components/index_autocomplete_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/index_autocomplete_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/index_autocomplete_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/index_autocomplete_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/index_template_autocomplete_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/index_template_autocomplete_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/index_template_autocomplete_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/index_template_autocomplete_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/legacy/index.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/legacy/index.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/legacy/index.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/legacy/index.js diff --git a/src/plugins/console/public/lib/autocomplete/components/legacy/legacy_template_autocomplete_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/legacy/legacy_template_autocomplete_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/legacy/legacy_template_autocomplete_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/legacy/legacy_template_autocomplete_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/list_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/list_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/list_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/list_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/object_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/object_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/object_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/object_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/shared_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/shared_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/shared_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/shared_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/simple_param_component.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/simple_param_component.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/simple_param_component.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/simple_param_component.js diff --git a/src/plugins/console/public/lib/autocomplete/components/url_pattern_matcher.js b/src/platform/plugins/shared/console/public/lib/autocomplete/components/url_pattern_matcher.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/components/url_pattern_matcher.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/components/url_pattern_matcher.js diff --git a/src/plugins/console/public/lib/autocomplete/engine.js b/src/platform/plugins/shared/console/public/lib/autocomplete/engine.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/engine.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/engine.js diff --git a/src/plugins/console/public/lib/autocomplete/types.ts b/src/platform/plugins/shared/console/public/lib/autocomplete/types.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete/types.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete/types.ts diff --git a/src/plugins/console/public/lib/autocomplete/url_autocomplete.test.js b/src/platform/plugins/shared/console/public/lib/autocomplete/url_autocomplete.test.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/url_autocomplete.test.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/url_autocomplete.test.js diff --git a/src/plugins/console/public/lib/autocomplete/url_params.js b/src/platform/plugins/shared/console/public/lib/autocomplete/url_params.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/url_params.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/url_params.js diff --git a/src/plugins/console/public/lib/autocomplete/url_params.test.js b/src/platform/plugins/shared/console/public/lib/autocomplete/url_params.test.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete/url_params.test.js rename to src/platform/plugins/shared/console/public/lib/autocomplete/url_params.test.js diff --git a/src/plugins/console/public/lib/autocomplete_entities/alias.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/alias.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/alias.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/alias.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/autocomplete_entities.test.js b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/autocomplete_entities.test.js similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/autocomplete_entities.test.js rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/autocomplete_entities.test.js diff --git a/src/plugins/console/public/lib/autocomplete_entities/base_template.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/base_template.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/base_template.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/base_template.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/component_template.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/component_template.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/component_template.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/component_template.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/data_stream.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/data_stream.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/data_stream.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/data_stream.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/expand_aliases.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/expand_aliases.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/expand_aliases.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/expand_aliases.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/index.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/index.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/index.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/index.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/index_template.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/index_template.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/index_template.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/index_template.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/legacy/index.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/legacy/index.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/legacy/index.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/legacy/index.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/legacy/legacy_template.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/legacy/legacy_template.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/legacy/legacy_template.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/legacy/legacy_template.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/mapping.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/mapping.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/mapping.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/mapping.ts diff --git a/src/plugins/console/public/lib/autocomplete_entities/types.ts b/src/platform/plugins/shared/console/public/lib/autocomplete_entities/types.ts similarity index 100% rename from src/plugins/console/public/lib/autocomplete_entities/types.ts rename to src/platform/plugins/shared/console/public/lib/autocomplete_entities/types.ts diff --git a/src/plugins/console/public/lib/es/content_type.test.js b/src/platform/plugins/shared/console/public/lib/es/content_type.test.js similarity index 100% rename from src/plugins/console/public/lib/es/content_type.test.js rename to src/platform/plugins/shared/console/public/lib/es/content_type.test.js diff --git a/src/plugins/console/public/lib/es/es.ts b/src/platform/plugins/shared/console/public/lib/es/es.ts similarity index 100% rename from src/plugins/console/public/lib/es/es.ts rename to src/platform/plugins/shared/console/public/lib/es/es.ts diff --git a/src/plugins/console/public/lib/es/index.ts b/src/platform/plugins/shared/console/public/lib/es/index.ts similarity index 100% rename from src/plugins/console/public/lib/es/index.ts rename to src/platform/plugins/shared/console/public/lib/es/index.ts diff --git a/src/plugins/console/public/lib/kb/api.js b/src/platform/plugins/shared/console/public/lib/kb/api.js similarity index 100% rename from src/plugins/console/public/lib/kb/api.js rename to src/platform/plugins/shared/console/public/lib/kb/api.js diff --git a/src/plugins/console/public/lib/kb/index.js b/src/platform/plugins/shared/console/public/lib/kb/index.js similarity index 100% rename from src/plugins/console/public/lib/kb/index.js rename to src/platform/plugins/shared/console/public/lib/kb/index.js diff --git a/src/plugins/console/public/lib/kb/kb.js b/src/platform/plugins/shared/console/public/lib/kb/kb.js similarity index 100% rename from src/plugins/console/public/lib/kb/kb.js rename to src/platform/plugins/shared/console/public/lib/kb/kb.js diff --git a/src/plugins/console/public/lib/kb/kb.test.js b/src/platform/plugins/shared/console/public/lib/kb/kb.test.js similarity index 100% rename from src/plugins/console/public/lib/kb/kb.test.js rename to src/platform/plugins/shared/console/public/lib/kb/kb.test.js diff --git a/src/plugins/console/public/lib/local_storage_object_client/create.ts b/src/platform/plugins/shared/console/public/lib/local_storage_object_client/create.ts similarity index 100% rename from src/plugins/console/public/lib/local_storage_object_client/create.ts rename to src/platform/plugins/shared/console/public/lib/local_storage_object_client/create.ts diff --git a/src/plugins/console/public/lib/local_storage_object_client/index.ts b/src/platform/plugins/shared/console/public/lib/local_storage_object_client/index.ts similarity index 100% rename from src/plugins/console/public/lib/local_storage_object_client/index.ts rename to src/platform/plugins/shared/console/public/lib/local_storage_object_client/index.ts diff --git a/src/plugins/console/public/lib/local_storage_object_client/local_storage_object_client.ts b/src/platform/plugins/shared/console/public/lib/local_storage_object_client/local_storage_object_client.ts similarity index 100% rename from src/plugins/console/public/lib/local_storage_object_client/local_storage_object_client.ts rename to src/platform/plugins/shared/console/public/lib/local_storage_object_client/local_storage_object_client.ts diff --git a/src/plugins/console/public/lib/token_iterator/index.ts b/src/platform/plugins/shared/console/public/lib/token_iterator/index.ts similarity index 100% rename from src/plugins/console/public/lib/token_iterator/index.ts rename to src/platform/plugins/shared/console/public/lib/token_iterator/index.ts diff --git a/src/plugins/console/public/lib/token_iterator/token_iterator.test.ts b/src/platform/plugins/shared/console/public/lib/token_iterator/token_iterator.test.ts similarity index 100% rename from src/plugins/console/public/lib/token_iterator/token_iterator.test.ts rename to src/platform/plugins/shared/console/public/lib/token_iterator/token_iterator.test.ts diff --git a/src/plugins/console/public/lib/token_iterator/token_iterator.ts b/src/platform/plugins/shared/console/public/lib/token_iterator/token_iterator.ts similarity index 100% rename from src/plugins/console/public/lib/token_iterator/token_iterator.ts rename to src/platform/plugins/shared/console/public/lib/token_iterator/token_iterator.ts diff --git a/src/plugins/console/public/lib/utils/index.ts b/src/platform/plugins/shared/console/public/lib/utils/index.ts similarity index 100% rename from src/plugins/console/public/lib/utils/index.ts rename to src/platform/plugins/shared/console/public/lib/utils/index.ts diff --git a/src/plugins/console/public/lib/utils/utils.test.js b/src/platform/plugins/shared/console/public/lib/utils/utils.test.js similarity index 100% rename from src/plugins/console/public/lib/utils/utils.test.js rename to src/platform/plugins/shared/console/public/lib/utils/utils.test.js diff --git a/src/plugins/console/public/plugin.ts b/src/platform/plugins/shared/console/public/plugin.ts similarity index 100% rename from src/plugins/console/public/plugin.ts rename to src/platform/plugins/shared/console/public/plugin.ts diff --git a/src/plugins/console/public/services/api.ts b/src/platform/plugins/shared/console/public/services/api.ts similarity index 100% rename from src/plugins/console/public/services/api.ts rename to src/platform/plugins/shared/console/public/services/api.ts diff --git a/src/plugins/console/public/services/autocomplete.mock.ts b/src/platform/plugins/shared/console/public/services/autocomplete.mock.ts similarity index 100% rename from src/plugins/console/public/services/autocomplete.mock.ts rename to src/platform/plugins/shared/console/public/services/autocomplete.mock.ts diff --git a/src/plugins/console/public/services/autocomplete.ts b/src/platform/plugins/shared/console/public/services/autocomplete.ts similarity index 100% rename from src/plugins/console/public/services/autocomplete.ts rename to src/platform/plugins/shared/console/public/services/autocomplete.ts diff --git a/src/plugins/console/public/services/embeddable_console.test.ts b/src/platform/plugins/shared/console/public/services/embeddable_console.test.ts similarity index 100% rename from src/plugins/console/public/services/embeddable_console.test.ts rename to src/platform/plugins/shared/console/public/services/embeddable_console.test.ts diff --git a/src/plugins/console/public/services/embeddable_console.ts b/src/platform/plugins/shared/console/public/services/embeddable_console.ts similarity index 100% rename from src/plugins/console/public/services/embeddable_console.ts rename to src/platform/plugins/shared/console/public/services/embeddable_console.ts diff --git a/src/plugins/console/public/services/history.mock.ts b/src/platform/plugins/shared/console/public/services/history.mock.ts similarity index 100% rename from src/plugins/console/public/services/history.mock.ts rename to src/platform/plugins/shared/console/public/services/history.mock.ts diff --git a/src/plugins/console/public/services/history.ts b/src/platform/plugins/shared/console/public/services/history.ts similarity index 100% rename from src/plugins/console/public/services/history.ts rename to src/platform/plugins/shared/console/public/services/history.ts diff --git a/src/plugins/console/public/services/http.ts b/src/platform/plugins/shared/console/public/services/http.ts similarity index 100% rename from src/plugins/console/public/services/http.ts rename to src/platform/plugins/shared/console/public/services/http.ts diff --git a/src/plugins/console/public/services/index.ts b/src/platform/plugins/shared/console/public/services/index.ts similarity index 100% rename from src/plugins/console/public/services/index.ts rename to src/platform/plugins/shared/console/public/services/index.ts diff --git a/src/plugins/console/public/services/settings.mock.ts b/src/platform/plugins/shared/console/public/services/settings.mock.ts similarity index 100% rename from src/plugins/console/public/services/settings.mock.ts rename to src/platform/plugins/shared/console/public/services/settings.mock.ts diff --git a/src/plugins/console/public/services/settings.ts b/src/platform/plugins/shared/console/public/services/settings.ts similarity index 100% rename from src/plugins/console/public/services/settings.ts rename to src/platform/plugins/shared/console/public/services/settings.ts diff --git a/src/plugins/console/public/services/storage.mock.ts b/src/platform/plugins/shared/console/public/services/storage.mock.ts similarity index 100% rename from src/plugins/console/public/services/storage.mock.ts rename to src/platform/plugins/shared/console/public/services/storage.mock.ts diff --git a/src/plugins/console/public/services/storage.ts b/src/platform/plugins/shared/console/public/services/storage.ts similarity index 100% rename from src/plugins/console/public/services/storage.ts rename to src/platform/plugins/shared/console/public/services/storage.ts diff --git a/src/plugins/console/public/services/tracker.ts b/src/platform/plugins/shared/console/public/services/tracker.ts similarity index 100% rename from src/plugins/console/public/services/tracker.ts rename to src/platform/plugins/shared/console/public/services/tracker.ts diff --git a/src/plugins/console/public/services/use_request.ts b/src/platform/plugins/shared/console/public/services/use_request.ts similarity index 100% rename from src/plugins/console/public/services/use_request.ts rename to src/platform/plugins/shared/console/public/services/use_request.ts diff --git a/src/plugins/console/public/shared_imports.ts b/src/platform/plugins/shared/console/public/shared_imports.ts similarity index 100% rename from src/plugins/console/public/shared_imports.ts rename to src/platform/plugins/shared/console/public/shared_imports.ts diff --git a/src/plugins/console/public/styles/_app.scss b/src/platform/plugins/shared/console/public/styles/_app.scss similarity index 100% rename from src/plugins/console/public/styles/_app.scss rename to src/platform/plugins/shared/console/public/styles/_app.scss diff --git a/src/plugins/console/public/styles/_index.scss b/src/platform/plugins/shared/console/public/styles/_index.scss similarity index 100% rename from src/plugins/console/public/styles/_index.scss rename to src/platform/plugins/shared/console/public/styles/_index.scss diff --git a/src/plugins/console/public/styles/components/_history.scss b/src/platform/plugins/shared/console/public/styles/components/_history.scss similarity index 100% rename from src/plugins/console/public/styles/components/_history.scss rename to src/platform/plugins/shared/console/public/styles/components/_history.scss diff --git a/src/plugins/console/public/styles/components/_index.scss b/src/platform/plugins/shared/console/public/styles/components/_index.scss similarity index 100% rename from src/plugins/console/public/styles/components/_index.scss rename to src/platform/plugins/shared/console/public/styles/components/_index.scss diff --git a/src/plugins/console/public/types/common.ts b/src/platform/plugins/shared/console/public/types/common.ts similarity index 100% rename from src/plugins/console/public/types/common.ts rename to src/platform/plugins/shared/console/public/types/common.ts diff --git a/src/plugins/console/public/types/config.ts b/src/platform/plugins/shared/console/public/types/config.ts similarity index 100% rename from src/plugins/console/public/types/config.ts rename to src/platform/plugins/shared/console/public/types/config.ts diff --git a/src/plugins/console/public/types/core_editor.ts b/src/platform/plugins/shared/console/public/types/core_editor.ts similarity index 100% rename from src/plugins/console/public/types/core_editor.ts rename to src/platform/plugins/shared/console/public/types/core_editor.ts diff --git a/src/plugins/console/public/types/embeddable_console.ts b/src/platform/plugins/shared/console/public/types/embeddable_console.ts similarity index 100% rename from src/plugins/console/public/types/embeddable_console.ts rename to src/platform/plugins/shared/console/public/types/embeddable_console.ts diff --git a/src/plugins/console/public/types/index.ts b/src/platform/plugins/shared/console/public/types/index.ts similarity index 100% rename from src/plugins/console/public/types/index.ts rename to src/platform/plugins/shared/console/public/types/index.ts diff --git a/src/plugins/console/public/types/locator.ts b/src/platform/plugins/shared/console/public/types/locator.ts similarity index 100% rename from src/plugins/console/public/types/locator.ts rename to src/platform/plugins/shared/console/public/types/locator.ts diff --git a/src/plugins/console/public/types/plugin_dependencies.ts b/src/platform/plugins/shared/console/public/types/plugin_dependencies.ts similarity index 100% rename from src/plugins/console/public/types/plugin_dependencies.ts rename to src/platform/plugins/shared/console/public/types/plugin_dependencies.ts diff --git a/src/plugins/console/public/types/token.ts b/src/platform/plugins/shared/console/public/types/token.ts similarity index 100% rename from src/plugins/console/public/types/token.ts rename to src/platform/plugins/shared/console/public/types/token.ts diff --git a/src/plugins/console/public/types/tokens_provider.ts b/src/platform/plugins/shared/console/public/types/tokens_provider.ts similarity index 100% rename from src/plugins/console/public/types/tokens_provider.ts rename to src/platform/plugins/shared/console/public/types/tokens_provider.ts diff --git a/src/plugins/console/server/config.ts b/src/platform/plugins/shared/console/server/config.ts similarity index 100% rename from src/plugins/console/server/config.ts rename to src/platform/plugins/shared/console/server/config.ts diff --git a/src/plugins/console/server/index.ts b/src/platform/plugins/shared/console/server/index.ts similarity index 100% rename from src/plugins/console/server/index.ts rename to src/platform/plugins/shared/console/server/index.ts diff --git a/src/plugins/console/server/lib/elasticsearch_proxy_config.test.js b/src/platform/plugins/shared/console/server/lib/elasticsearch_proxy_config.test.js similarity index 99% rename from src/plugins/console/server/lib/elasticsearch_proxy_config.test.js rename to src/platform/plugins/shared/console/server/lib/elasticsearch_proxy_config.test.js index 0cca5f4bfc0da..70729147fd0b8 100644 --- a/src/plugins/console/server/lib/elasticsearch_proxy_config.test.js +++ b/src/platform/plugins/shared/console/server/lib/elasticsearch_proxy_config.test.js @@ -20,7 +20,7 @@ const getDefaultElasticsearchConfig = () => { }; }; -describe('plugins/console', function () { +describe('platform/plugins/shared/console', function () { describe('#getElasticsearchProxyConfig', function () { it('sets timeout', function () { const value = 1000; diff --git a/src/plugins/console/server/lib/elasticsearch_proxy_config.ts b/src/platform/plugins/shared/console/server/lib/elasticsearch_proxy_config.ts similarity index 100% rename from src/plugins/console/server/lib/elasticsearch_proxy_config.ts rename to src/platform/plugins/shared/console/server/lib/elasticsearch_proxy_config.ts diff --git a/src/plugins/console/server/lib/index.ts b/src/platform/plugins/shared/console/server/lib/index.ts similarity index 100% rename from src/plugins/console/server/lib/index.ts rename to src/platform/plugins/shared/console/server/lib/index.ts diff --git a/src/plugins/console/server/lib/proxy_config.test.js b/src/platform/plugins/shared/console/server/lib/proxy_config.test.js similarity index 100% rename from src/plugins/console/server/lib/proxy_config.test.js rename to src/platform/plugins/shared/console/server/lib/proxy_config.test.js diff --git a/src/plugins/console/server/lib/proxy_config.ts b/src/platform/plugins/shared/console/server/lib/proxy_config.ts similarity index 100% rename from src/plugins/console/server/lib/proxy_config.ts rename to src/platform/plugins/shared/console/server/lib/proxy_config.ts diff --git a/src/plugins/console/server/lib/proxy_config_collection.test.js b/src/platform/plugins/shared/console/server/lib/proxy_config_collection.test.js similarity index 100% rename from src/plugins/console/server/lib/proxy_config_collection.test.js rename to src/platform/plugins/shared/console/server/lib/proxy_config_collection.test.js diff --git a/src/plugins/console/server/lib/proxy_config_collection.ts b/src/platform/plugins/shared/console/server/lib/proxy_config_collection.ts similarity index 100% rename from src/plugins/console/server/lib/proxy_config_collection.ts rename to src/platform/plugins/shared/console/server/lib/proxy_config_collection.ts diff --git a/src/plugins/console/server/lib/proxy_request.test.ts b/src/platform/plugins/shared/console/server/lib/proxy_request.test.ts similarity index 100% rename from src/plugins/console/server/lib/proxy_request.test.ts rename to src/platform/plugins/shared/console/server/lib/proxy_request.test.ts diff --git a/src/plugins/console/server/lib/proxy_request.ts b/src/platform/plugins/shared/console/server/lib/proxy_request.ts similarity index 100% rename from src/plugins/console/server/lib/proxy_request.ts rename to src/platform/plugins/shared/console/server/lib/proxy_request.ts diff --git a/src/plugins/console/server/lib/set_headers.test.js b/src/platform/plugins/shared/console/server/lib/set_headers.test.js similarity index 100% rename from src/plugins/console/server/lib/set_headers.test.js rename to src/platform/plugins/shared/console/server/lib/set_headers.test.js diff --git a/src/plugins/console/server/lib/set_headers.ts b/src/platform/plugins/shared/console/server/lib/set_headers.ts similarity index 100% rename from src/plugins/console/server/lib/set_headers.ts rename to src/platform/plugins/shared/console/server/lib/set_headers.ts diff --git a/src/plugins/console/server/lib/spec_definitions/index.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/index.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/index.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/index.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/aggregations.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/aggregations.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/aggregations.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/aggregations.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/aliases.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/aliases.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/aliases.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/aliases.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/document.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/document.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/document.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/document.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/filter.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/filter.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/filter.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/filter.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/globals.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/globals.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/globals.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/globals.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/index.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/index.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/index.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/index.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/ingest.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/ingest.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/ingest.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/ingest.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/mappings.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/mappings.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/mappings.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/mappings.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/query/dsl.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/dsl.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/query/dsl.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/dsl.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/query/index.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/index.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/query/index.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/index.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/query/templates.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/templates.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/query/templates.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/query/templates.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/reindex.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/reindex.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/reindex.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/reindex.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/search.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/search.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/search.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/search.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/settings.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/settings.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/settings.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/settings.ts diff --git a/src/plugins/console/server/lib/spec_definitions/js/shared.ts b/src/platform/plugins/shared/console/server/lib/spec_definitions/js/shared.ts similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/js/shared.ts rename to src/platform/plugins/shared/console/server/lib/spec_definitions/js/shared.ts diff --git a/src/platform/plugins/shared/console/server/lib/spec_definitions/json/README.md b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/README.md new file mode 100644 index 0000000000000..9c7a777b370b4 --- /dev/null +++ b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/README.md @@ -0,0 +1 @@ +Please refer to this [README](https://github.com/elastic/kibana/blob/main/src/platform/plugins/shared/console/README.md#creating-definitions) file before adding/editing definitions files in this folder. \ No newline at end of file diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_balance.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_balance.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_balance.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_balance.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_nodes.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_nodes.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_nodes.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.delete_desired_nodes.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.get_desired_balance.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.get_desired_balance.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/_internal.get_desired_balance.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.get_desired_balance.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.get_desired_nodes.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.get_desired_nodes.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/_internal.get_desired_nodes.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.get_desired_nodes.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.prevalidate_node_removal.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.prevalidate_node_removal.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/_internal.prevalidate_node_removal.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.prevalidate_node_removal.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/_internal.update_desired_nodes.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.update_desired_nodes.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/_internal.update_desired_nodes.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/_internal.update_desired_nodes.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/async_search.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/async_search.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/async_search.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/async_search.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/async_search.status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/async_search.status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/async_search.submit.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.submit.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/async_search.submit.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/async_search.submit.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.delete_autoscaling_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.delete_autoscaling_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.delete_autoscaling_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.delete_autoscaling_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_capacity.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_capacity.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_capacity.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_capacity.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.get_autoscaling_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.put_autoscaling_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.put_autoscaling_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/autoscaling.put_autoscaling_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/autoscaling.put_autoscaling_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/bulk.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/bulk.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/bulk.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/bulk.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/capabilities.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/capabilities.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/capabilities.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/capabilities.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.aliases.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.aliases.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.aliases.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.aliases.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.allocation.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.allocation.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.allocation.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.allocation.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.component_templates.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.component_templates.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.component_templates.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.component_templates.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.count.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.count.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.count.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.count.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.fielddata.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.fielddata.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.fielddata.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.fielddata.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.health.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.health.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.health.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.health.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.help.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.help.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.help.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.help.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.indices.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.indices.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.indices.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.indices.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.master.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.master.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.master.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.master.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_datafeeds.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_datafeeds.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_datafeeds.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_datafeeds.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_jobs.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_jobs.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_jobs.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_jobs.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_trained_models.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_trained_models.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.ml_trained_models.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.ml_trained_models.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.nodeattrs.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.nodeattrs.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.nodeattrs.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.nodeattrs.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.nodes.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.nodes.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.nodes.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.nodes.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.pending_tasks.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.pending_tasks.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.pending_tasks.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.pending_tasks.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.plugins.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.plugins.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.plugins.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.plugins.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.recovery.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.recovery.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.recovery.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.recovery.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.repositories.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.repositories.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.repositories.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.repositories.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.segments.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.segments.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.segments.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.segments.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.shards.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.shards.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.shards.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.shards.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.snapshots.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.snapshots.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.snapshots.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.snapshots.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.tasks.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.tasks.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.tasks.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.tasks.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.templates.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.templates.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.templates.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.templates.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.thread_pool.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.thread_pool.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.thread_pool.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.thread_pool.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cat.transforms.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.transforms.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cat.transforms.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cat.transforms.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.delete_auto_follow_pattern.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.delete_auto_follow_pattern.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.delete_auto_follow_pattern.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.delete_auto_follow_pattern.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.follow.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.follow.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.follow.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.follow.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.follow_info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.follow_info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.follow_info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.follow_info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.follow_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.follow_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.follow_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.follow_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.forget_follower.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.forget_follower.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.forget_follower.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.forget_follower.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.get_auto_follow_pattern.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.get_auto_follow_pattern.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.get_auto_follow_pattern.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.get_auto_follow_pattern.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.pause_auto_follow_pattern.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.pause_auto_follow_pattern.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.pause_auto_follow_pattern.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.pause_auto_follow_pattern.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.pause_follow.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.pause_follow.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.pause_follow.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.pause_follow.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.put_auto_follow_pattern.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.put_auto_follow_pattern.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.put_auto_follow_pattern.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.put_auto_follow_pattern.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.resume_auto_follow_pattern.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.resume_auto_follow_pattern.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.resume_auto_follow_pattern.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.resume_auto_follow_pattern.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.resume_follow.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.resume_follow.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.resume_follow.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.resume_follow.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ccr.unfollow.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.unfollow.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ccr.unfollow.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ccr.unfollow.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/clear_scroll.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/clear_scroll.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/clear_scroll.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/clear_scroll.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/close_point_in_time.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/close_point_in_time.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/close_point_in_time.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/close_point_in_time.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.allocation_explain.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.allocation_explain.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.allocation_explain.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.allocation_explain.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.delete_component_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.delete_component_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.delete_component_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.delete_component_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.delete_voting_config_exclusions.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.delete_voting_config_exclusions.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.delete_voting_config_exclusions.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.delete_voting_config_exclusions.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.exists_component_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.exists_component_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.exists_component_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.exists_component_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.get_component_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.get_component_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.get_component_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.get_component_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.get_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.get_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.get_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.get_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.health.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.health.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.health.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.health.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.pending_tasks.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.pending_tasks.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.pending_tasks.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.pending_tasks.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.post_voting_config_exclusions.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.post_voting_config_exclusions.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.post_voting_config_exclusions.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.post_voting_config_exclusions.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.put_component_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.put_component_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.put_component_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.put_component_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.put_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.put_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.put_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.put_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.remote_info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.remote_info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.remote_info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.remote_info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.reroute.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.reroute.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.reroute.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.reroute.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.state.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.state.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.state.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.state.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/cluster.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/cluster.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/cluster.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.check_in.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.check_in.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.check_in.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.check_in.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.last_sync.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.last_sync.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.last_sync.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.last_sync.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.list.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.list.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.list.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.list.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.post.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.post.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.post.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.post.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.put.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.put.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.put.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.put.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_post.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_post.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_post.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_post.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_put.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_put.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.secret_put.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.secret_put.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_cancel.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_cancel.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_cancel.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_cancel.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_check_in.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_check_in.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_check_in.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_check_in.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_claim.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_claim.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_claim.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_claim.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_error.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_error.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_error.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_error.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_list.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_list.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_list.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_list.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_post.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_post.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_post.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_post.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_update_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_update_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.sync_job_update_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.sync_job_update_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_active_filtering.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_active_filtering.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_active_filtering.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_active_filtering.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_api_key_id.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_api_key_id.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_api_key_id.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_api_key_id.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_configuration.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_configuration.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_configuration.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_configuration.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_error.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_error.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_error.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_error.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_features.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_features.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_features.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_features.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_filtering.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_filtering.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_filtering.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_filtering.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_filtering_validation.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_filtering_validation.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_filtering_validation.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_filtering_validation.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_index_name.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_index_name.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_index_name.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_index_name.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_name.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_name.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_name.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_name.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_native.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_native.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_native.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_native.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_scheduling.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_scheduling.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_scheduling.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_scheduling.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_service_type.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_service_type.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_service_type.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_service_type.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/connector.update_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/connector.update_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/count.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/count.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/count.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/count.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/create.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/create.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/create.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/create.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/dangling_indices.delete_dangling_index.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/dangling_indices.delete_dangling_index.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/dangling_indices.delete_dangling_index.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/dangling_indices.delete_dangling_index.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/dangling_indices.import_dangling_index.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/dangling_indices.import_dangling_index.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/dangling_indices.import_dangling_index.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/dangling_indices.import_dangling_index.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/dangling_indices.list_dangling_indices.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/dangling_indices.list_dangling_indices.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/dangling_indices.list_dangling_indices.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/dangling_indices.list_dangling_indices.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/delete_by_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete_by_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/delete_by_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete_by_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/delete_by_query_rethrottle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete_by_query_rethrottle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/delete_by_query_rethrottle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete_by_query_rethrottle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/delete_script.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete_script.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/delete_script.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/delete_script.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/enrich.delete_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.delete_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/enrich.delete_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.delete_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/enrich.execute_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.execute_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/enrich.execute_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.execute_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/enrich.get_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.get_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/enrich.get_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.get_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/enrich.put_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.put_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/enrich.put_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.put_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/enrich.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/enrich.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/enrich.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/eql.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/eql.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/eql.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/eql.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/eql.get_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.get_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/eql.get_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.get_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/eql.search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/eql.search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/eql.search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/esql.async_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/esql.async_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/esql.async_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/esql.async_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/esql.async_query_get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/esql.async_query_get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/esql.async_query_get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/esql.async_query_get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/esql.query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/esql.query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/esql.query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/esql.query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/exists.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/exists.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/exists.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/exists.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/exists_source.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/exists_source.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/exists_source.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/exists_source.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/explain.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/explain.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/explain.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/explain.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/features.get_features.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/features.get_features.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/features.get_features.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/features.get_features.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/features.reset_features.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/features.reset_features.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/features.reset_features.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/features.reset_features.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/field_caps.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/field_caps.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/field_caps.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/field_caps.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/fleet.delete_secret.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.delete_secret.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/fleet.delete_secret.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.delete_secret.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/fleet.get_secret.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.get_secret.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/fleet.get_secret.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.get_secret.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/fleet.global_checkpoints.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.global_checkpoints.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/fleet.global_checkpoints.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.global_checkpoints.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/fleet.msearch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.msearch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/fleet.msearch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.msearch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/fleet.post_secret.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.post_secret.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/fleet.post_secret.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.post_secret.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/fleet.search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/fleet.search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/fleet.search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/get_script.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_script.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/get_script.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_script.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/get_script_context.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_script_context.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/get_script_context.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_script_context.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/get_script_languages.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_script_languages.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/get_script_languages.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_script_languages.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/get_source.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_source.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/get_source.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/get_source.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/graph.explore.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/graph.explore.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/graph.explore.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/graph.explore.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/health_report.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/health_report.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/health_report.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/health_report.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.delete_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.delete_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.delete_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.delete_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.explain_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.explain_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.explain_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.explain_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.get_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.get_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.get_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.get_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.get_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.get_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.get_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.get_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.migrate_to_data_tiers.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.migrate_to_data_tiers.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.migrate_to_data_tiers.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.migrate_to_data_tiers.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.move_to_step.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.move_to_step.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.move_to_step.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.move_to_step.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.put_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.put_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.put_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.put_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.remove_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.remove_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.remove_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.remove_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.retry.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.retry.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.retry.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.retry.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.start.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.start.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.start.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.start.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ilm.stop.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.stop.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ilm.stop.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ilm.stop.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/index.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/index.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/index.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/index.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.add_block.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.add_block.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.add_block.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.add_block.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.analyze.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.analyze.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.analyze.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.analyze.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.clear_cache.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.clear_cache.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.clear_cache.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.clear_cache.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.clone.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.clone.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.clone.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.clone.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.close.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.close.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.close.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.close.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.create.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.create.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.create.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.create.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.create_data_stream.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.create_data_stream.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.create_data_stream.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.create_data_stream.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.data_streams_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.data_streams_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.data_streams_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.data_streams_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_alias.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_alias.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_alias.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_alias.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_data_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_data_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_data_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_data_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_data_stream.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_data_stream.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_data_stream.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_data_stream.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_index_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_index_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_index_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_index_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.delete_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.delete_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.disk_usage.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.disk_usage.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.disk_usage.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.disk_usage.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.downsample.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.downsample.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.downsample.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.downsample.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists_alias.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists_alias.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists_alias.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists_alias.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists_index_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists_index_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists_index_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists_index_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.exists_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.exists_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.explain_data_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.explain_data_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.explain_data_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.explain_data_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.field_usage_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.field_usage_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.field_usage_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.field_usage_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.flush.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.flush.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.flush.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.flush.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.forcemerge.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.forcemerge.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.forcemerge.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.forcemerge.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_alias.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_alias.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_alias.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_alias.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_data_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_data_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_data_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_data_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_data_stream.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_data_stream.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_data_stream.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_data_stream.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_field_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_field_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_field_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_field_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_index_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_index_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_index_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_index_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.get_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.get_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.migrate_to_data_stream.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.migrate_to_data_stream.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.migrate_to_data_stream.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.migrate_to_data_stream.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.modify_data_stream.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.modify_data_stream.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.modify_data_stream.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.modify_data_stream.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.open.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.open.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.open.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.open.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.promote_data_stream.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.promote_data_stream.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.promote_data_stream.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.promote_data_stream.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_alias.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_alias.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_alias.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_alias.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_data_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_data_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_data_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_data_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_index_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_index_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_index_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_index_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.put_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.put_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.recovery.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.recovery.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.recovery.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.recovery.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.refresh.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.refresh.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.refresh.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.refresh.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.reload_search_analyzers.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.reload_search_analyzers.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.reload_search_analyzers.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.reload_search_analyzers.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.resolve_cluster.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.resolve_cluster.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.resolve_cluster.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.resolve_cluster.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.resolve_index.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.resolve_index.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.resolve_index.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.resolve_index.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.rollover.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.rollover.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.rollover.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.rollover.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.segments.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.segments.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.segments.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.segments.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.shard_stores.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.shard_stores.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.shard_stores.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.shard_stores.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.shrink.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.shrink.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.shrink.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.shrink.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_index_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.simulate_index_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_index_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.simulate_index_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.simulate_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.simulate_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.simulate_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.split.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.split.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.split.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.split.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.unfreeze.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.unfreeze.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.unfreeze.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.unfreeze.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.update_aliases.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.update_aliases.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.update_aliases.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.update_aliases.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/indices.validate_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.validate_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/indices.validate_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/indices.validate_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/inference.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/inference.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/inference.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/inference.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/inference.inference.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.inference.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/inference.inference.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.inference.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/inference.put.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.put.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/inference.put.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.put.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/inference.stream_inference.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.stream_inference.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/inference.stream_inference.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/inference.stream_inference.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.delete_geoip_database.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.delete_geoip_database.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.delete_geoip_database.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.delete_geoip_database.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.delete_ip_location_database.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.delete_ip_location_database.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.delete_ip_location_database.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.delete_ip_location_database.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.delete_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.delete_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.delete_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.delete_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.geo_ip_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.geo_ip_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.geo_ip_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.geo_ip_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.get_geoip_database.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.get_geoip_database.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.get_geoip_database.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.get_geoip_database.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.get_ip_location_database.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.get_ip_location_database.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.get_ip_location_database.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.get_ip_location_database.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.get_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.get_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.get_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.get_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.processor_grok.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.processor_grok.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.processor_grok.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.processor_grok.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.put_geoip_database.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.put_geoip_database.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.put_geoip_database.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.put_geoip_database.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.put_ip_location_database.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.put_ip_location_database.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.put_ip_location_database.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.put_ip_location_database.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.put_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.put_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.put_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.put_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ingest.simulate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.simulate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ingest.simulate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ingest.simulate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/knn_search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/knn_search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/knn_search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/knn_search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/license.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/license.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/license.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/license.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/license.get_basic_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.get_basic_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/license.get_basic_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.get_basic_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/license.get_trial_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.get_trial_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/license.get_trial_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.get_trial_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/license.post.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.post.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/license.post.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.post.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/license.post_start_basic.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.post_start_basic.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/license.post_start_basic.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.post_start_basic.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/license.post_start_trial.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.post_start_trial.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/license.post_start_trial.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/license.post_start_trial.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/logstash.delete_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/logstash.delete_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/logstash.delete_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/logstash.delete_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/logstash.get_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/logstash.get_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/logstash.get_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/logstash.get_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/logstash.put_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/logstash.put_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/logstash.put_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/logstash.put_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/mget.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/mget.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/mget.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/mget.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/migration.deprecations.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/migration.deprecations.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/migration.deprecations.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/migration.deprecations.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/migration.get_feature_upgrade_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/migration.get_feature_upgrade_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/migration.get_feature_upgrade_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/migration.get_feature_upgrade_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/migration.post_feature_upgrade.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/migration.post_feature_upgrade.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/migration.post_feature_upgrade.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/migration.post_feature_upgrade.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.clear_trained_model_deployment_cache.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.clear_trained_model_deployment_cache.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.clear_trained_model_deployment_cache.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.clear_trained_model_deployment_cache.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.close_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.close_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.close_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.close_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_calendar.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_calendar.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_calendar.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_calendar.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_event.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_event.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_event.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_event.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_calendar_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_expired_data.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_expired_data.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_expired_data.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_expired_data.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_filter.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_filter.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_filter.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_filter.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_forecast.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_forecast.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_forecast.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_forecast.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_model_snapshot.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_model_snapshot.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_model_snapshot.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_model_snapshot.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model_alias.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model_alias.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model_alias.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.delete_trained_model_alias.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.estimate_model_memory.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.estimate_model_memory.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.estimate_model_memory.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.estimate_model_memory.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.evaluate_data_frame.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.evaluate_data_frame.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.evaluate_data_frame.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.evaluate_data_frame.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.explain_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.explain_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.explain_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.explain_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.flush_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.flush_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.flush_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.flush_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.forecast.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.forecast.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.forecast.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.forecast.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_buckets.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_buckets.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_buckets.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_buckets.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_calendar_events.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_calendar_events.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_calendar_events.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_calendar_events.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_calendars.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_calendars.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_calendars.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_calendars.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_categories.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_categories.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_categories.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_categories.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_data_frame_analytics_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_datafeed_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_datafeed_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_datafeed_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_datafeed_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_datafeeds.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_datafeeds.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_datafeeds.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_datafeeds.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_filters.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_filters.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_filters.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_filters.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_influencers.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_influencers.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_influencers.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_influencers.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_job_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_job_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_job_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_job_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_jobs.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_jobs.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_jobs.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_jobs.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_memory_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_memory_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_memory_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_memory_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshot_upgrade_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshot_upgrade_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshot_upgrade_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshot_upgrade_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshots.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshots.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshots.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_model_snapshots.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_overall_buckets.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_overall_buckets.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_overall_buckets.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_overall_buckets.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_records.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_records.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_records.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_records.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_trained_models.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_trained_models.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_trained_models.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_trained_models.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_trained_models_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_trained_models_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.get_trained_models_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.get_trained_models_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.infer_trained_model.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.infer_trained_model.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.infer_trained_model.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.infer_trained_model.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.open_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.open_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.open_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.open_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.post_calendar_events.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.post_calendar_events.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.post_calendar_events.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.post_calendar_events.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.post_data.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.post_data.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.post_data.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.post_data.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.preview_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.preview_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.preview_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.preview_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.preview_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.preview_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.preview_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.preview_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_calendar.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_calendar.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_calendar.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_calendar.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_calendar_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_calendar_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_calendar_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_calendar_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_filter.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_filter.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_filter.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_filter.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_alias.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_alias.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_alias.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_alias.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_definition_part.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_definition_part.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_definition_part.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_definition_part.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_vocabulary.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_vocabulary.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_vocabulary.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.put_trained_model_vocabulary.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.reset_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.reset_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.reset_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.reset_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.revert_model_snapshot.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.revert_model_snapshot.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.revert_model_snapshot.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.revert_model_snapshot.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.set_upgrade_mode.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.set_upgrade_mode.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.set_upgrade_mode.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.set_upgrade_mode.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.start_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.start_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.start_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.start_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_trained_model_deployment.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.start_trained_model_deployment.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.start_trained_model_deployment.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.start_trained_model_deployment.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.stop_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.stop_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.stop_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.stop_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.stop_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.stop_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.stop_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.stop_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.stop_trained_model_deployment.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.stop_trained_model_deployment.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.stop_trained_model_deployment.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.stop_trained_model_deployment.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_filter.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_filter.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_filter.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_filter.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_model_snapshot.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_model_snapshot.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_model_snapshot.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_model_snapshot.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_trained_model_deployment.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_trained_model_deployment.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.update_trained_model_deployment.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.update_trained_model_deployment.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.upgrade_job_snapshot.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.upgrade_job_snapshot.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.upgrade_job_snapshot.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.upgrade_job_snapshot.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.validate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.validate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.validate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.validate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ml.validate_detector.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.validate_detector.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ml.validate_detector.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ml.validate_detector.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/monitoring.bulk.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/monitoring.bulk.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/monitoring.bulk.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/monitoring.bulk.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/msearch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/msearch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/msearch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/msearch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/msearch_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/msearch_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/msearch_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/msearch_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/mtermvectors.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/mtermvectors.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/mtermvectors.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/mtermvectors.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/nodes.clear_repositories_metering_archive.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.clear_repositories_metering_archive.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/nodes.clear_repositories_metering_archive.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.clear_repositories_metering_archive.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/nodes.get_repositories_metering_info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.get_repositories_metering_info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/nodes.get_repositories_metering_info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.get_repositories_metering_info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/nodes.hot_threads.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.hot_threads.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/nodes.hot_threads.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.hot_threads.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/nodes.info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/nodes.info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/nodes.reload_secure_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.reload_secure_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/nodes.reload_secure_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.reload_secure_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/nodes.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/nodes.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/nodes.usage.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.usage.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/nodes.usage.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/nodes.usage.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/open_point_in_time.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/open_point_in_time.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/open_point_in_time.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/open_point_in_time.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/profiling.flamegraph.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.flamegraph.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/profiling.flamegraph.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.flamegraph.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/profiling.stacktraces.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.stacktraces.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/profiling.stacktraces.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.stacktraces.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/profiling.status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/profiling.status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/profiling.topn_functions.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.topn_functions.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/profiling.topn_functions.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/profiling.topn_functions.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/put_script.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/put_script.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/put_script.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/put_script.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.delete_rule.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.delete_rule.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.delete_rule.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.delete_rule.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.delete_ruleset.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.delete_ruleset.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.delete_ruleset.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.delete_ruleset.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.get_rule.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.get_rule.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.get_rule.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.get_rule.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.get_ruleset.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.get_ruleset.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.get_ruleset.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.get_ruleset.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.list_rulesets.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.list_rulesets.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.list_rulesets.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.list_rulesets.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.put_rule.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.put_rule.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.put_rule.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.put_rule.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.put_ruleset.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.put_ruleset.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.put_ruleset.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.put_ruleset.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.test.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.test.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/query_rules.test.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/query_rules.test.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rank_eval.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rank_eval.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rank_eval.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rank_eval.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/reindex.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/reindex.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/reindex.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/reindex.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/reindex_rethrottle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/reindex_rethrottle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/reindex_rethrottle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/reindex_rethrottle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/render_search_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/render_search_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/render_search_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/render_search_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.delete_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.delete_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.delete_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.delete_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.get_jobs.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.get_jobs.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.get_jobs.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.get_jobs.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_caps.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_caps.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_caps.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_caps.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_index_caps.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_index_caps.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_index_caps.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.get_rollup_index_caps.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.put_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.put_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.put_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.put_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.rollup_search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.rollup_search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.rollup_search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.rollup_search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.start_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.start_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.start_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.start_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/rollup.stop_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.stop_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/rollup.stop_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/rollup.stop_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/scripts_painless_execute.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/scripts_painless_execute.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/scripts_painless_execute.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/scripts_painless_execute.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/scroll.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/scroll.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/scroll.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/scroll.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.delete_behavioral_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.delete_behavioral_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.delete_behavioral_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.delete_behavioral_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.get_behavioral_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.get_behavioral_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.get_behavioral_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.get_behavioral_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.list.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.list.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.list.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.list.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.post_behavioral_analytics_event.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.post_behavioral_analytics_event.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.post_behavioral_analytics_event.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.post_behavioral_analytics_event.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.put.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.put.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.put.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.put.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.put_behavioral_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.put_behavioral_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.put_behavioral_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.put_behavioral_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.render_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.render_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.render_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.render_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_application.search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_application.search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_application.search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_mvt.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_mvt.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_mvt.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_mvt.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_shards.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_shards.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_shards.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_shards.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/search_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/search_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/search_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.cache_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.cache_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.cache_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.cache_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.clear_cache.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.clear_cache.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.clear_cache.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.clear_cache.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.mount.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.mount.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.mount.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.mount.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/searchable_snapshots.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/searchable_snapshots.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.activate_user_profile.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.activate_user_profile.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.activate_user_profile.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.activate_user_profile.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.authenticate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.authenticate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.authenticate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.authenticate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.bulk_delete_role.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.bulk_delete_role.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.bulk_delete_role.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.bulk_delete_role.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.bulk_put_role.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.bulk_put_role.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.bulk_put_role.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.bulk_put_role.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.bulk_update_api_keys.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.bulk_update_api_keys.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.bulk_update_api_keys.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.bulk_update_api_keys.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.change_password.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.change_password.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.change_password.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.change_password.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_api_key_cache.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_api_key_cache.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_api_key_cache.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_api_key_cache.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_realms.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_realms.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_realms.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_realms.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_roles.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_roles.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_roles.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_roles.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_service_tokens.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_service_tokens.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.clear_cached_service_tokens.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.clear_cached_service_tokens.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.create_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.create_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.create_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.create_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.create_cross_cluster_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.create_cross_cluster_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.create_cross_cluster_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.create_cross_cluster_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.create_service_token.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.create_service_token.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.create_service_token.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.create_service_token.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_role.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_role.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_role.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_role.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_role_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_role_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_role_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_role_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_service_token.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_service_token.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_service_token.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_service_token.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_user.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_user.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.delete_user.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.delete_user.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.disable_user.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.disable_user.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.disable_user.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.disable_user.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.disable_user_profile.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.disable_user_profile.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.disable_user_profile.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.disable_user_profile.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.enable_user.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enable_user.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.enable_user.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enable_user.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.enable_user_profile.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enable_user_profile.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.enable_user_profile.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enable_user_profile.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.enroll_kibana.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enroll_kibana.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.enroll_kibana.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enroll_kibana.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.enroll_node.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enroll_node.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.enroll_node.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.enroll_node.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_builtin_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_builtin_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_builtin_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_builtin_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_role.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_role.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_role.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_role.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_role_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_role_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_role_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_role_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_service_accounts.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_service_accounts.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_service_accounts.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_service_accounts.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_service_credentials.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_service_credentials.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_service_credentials.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_service_credentials.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_token.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_token.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_token.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_token.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_user.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_user.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_user.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_user.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_user_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_user_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_user_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_user_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.get_user_profile.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_user_profile.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.get_user_profile.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.get_user_profile.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.grant_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.grant_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.grant_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.grant_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.has_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.has_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.has_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.has_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.has_privileges_user_profile.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.has_privileges_user_profile.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.has_privileges_user_profile.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.has_privileges_user_profile.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.invalidate_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.invalidate_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.invalidate_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.invalidate_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.invalidate_token.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.invalidate_token.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.invalidate_token.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.invalidate_token.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.oidc_authenticate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.oidc_authenticate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.oidc_authenticate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.oidc_authenticate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.oidc_logout.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.oidc_logout.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.oidc_logout.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.oidc_logout.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.oidc_prepare_authentication.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.oidc_prepare_authentication.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.oidc_prepare_authentication.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.oidc_prepare_authentication.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.put_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.put_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.put_role.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_role.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.put_role.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_role.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.put_role_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_role_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.put_role_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_role_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.put_user.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_user.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.put_user.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.put_user.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.query_api_keys.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.query_api_keys.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.query_api_keys.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.query_api_keys.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.query_role.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.query_role.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.query_role.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.query_role.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.query_user.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.query_user.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.query_user.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.query_user.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_authenticate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_authenticate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_authenticate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_authenticate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_complete_logout.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_complete_logout.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_complete_logout.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_complete_logout.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_invalidate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_invalidate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_invalidate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_invalidate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_logout.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_logout.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_logout.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_logout.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_prepare_authentication.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_prepare_authentication.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_prepare_authentication.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_prepare_authentication.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_service_provider_metadata.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_service_provider_metadata.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.saml_service_provider_metadata.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.saml_service_provider_metadata.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.suggest_user_profiles.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.suggest_user_profiles.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.suggest_user_profiles.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.suggest_user_profiles.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.update_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.update_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.update_cross_cluster_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_cross_cluster_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.update_cross_cluster_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_cross_cluster_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.update_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.update_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/security.update_user_profile_data.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_user_profile_data.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/security.update_user_profile_data.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/security.update_user_profile_data.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/shutdown.delete_node.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/shutdown.delete_node.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/shutdown.delete_node.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/shutdown.delete_node.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/shutdown.get_node.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/shutdown.get_node.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/shutdown.get_node.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/shutdown.get_node.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/shutdown.put_node.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/shutdown.put_node.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/shutdown.put_node.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/shutdown.put_node.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/simulate.ingest.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/simulate.ingest.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/simulate.ingest.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/simulate.ingest.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.delete_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.delete_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.delete_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.delete_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.execute_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.execute_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.execute_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.execute_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.execute_retention.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.execute_retention.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.execute_retention.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.execute_retention.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.get_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.get_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.get_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.get_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.get_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.get_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.get_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.get_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.get_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.get_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.get_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.get_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.put_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.put_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.put_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.put_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.start.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.start.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.start.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.start.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/slm.stop.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.stop.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/slm.stop.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/slm.stop.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.cleanup_repository.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.cleanup_repository.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.cleanup_repository.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.cleanup_repository.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.clone.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.clone.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.clone.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.clone.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.create.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.create.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.create.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.create.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.create_repository.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.create_repository.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.create_repository.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.create_repository.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.delete.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.delete.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.delete.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.delete.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.delete_repository.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.delete_repository.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.delete_repository.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.delete_repository.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.get_repository.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.get_repository.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.get_repository.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.get_repository.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.repository_analyze.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.repository_analyze.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.repository_analyze.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.repository_analyze.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.repository_verify_integrity.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.repository_verify_integrity.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.repository_verify_integrity.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.repository_verify_integrity.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.restore.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.restore.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.restore.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.restore.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.verify_repository.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.verify_repository.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/snapshot.verify_repository.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/snapshot.verify_repository.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/sql.clear_cursor.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.clear_cursor.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/sql.clear_cursor.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.clear_cursor.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/sql.delete_async.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.delete_async.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/sql.delete_async.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.delete_async.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/sql.get_async.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.get_async.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/sql.get_async.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.get_async.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/sql.get_async_status.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.get_async_status.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/sql.get_async_status.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.get_async_status.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/sql.query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/sql.query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/sql.translate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.translate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/sql.translate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/sql.translate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/ssl.certificates.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ssl.certificates.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/ssl.certificates.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/ssl.certificates.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym_rule.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym_rule.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym_rule.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.delete_synonym_rule.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym_rule.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym_rule.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym_rule.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.get_synonym_rule.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.get_synonyms_sets.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.get_synonyms_sets.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.get_synonyms_sets.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.get_synonyms_sets.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym_rule.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym_rule.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym_rule.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/synonyms.put_synonym_rule.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/tasks.cancel.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/tasks.cancel.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/tasks.cancel.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/tasks.cancel.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/tasks.get.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/tasks.get.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/tasks.get.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/tasks.get.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/tasks.list.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/tasks.list.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/tasks.list.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/tasks.list.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/terms_enum.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/terms_enum.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/terms_enum.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/terms_enum.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/termvectors.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/termvectors.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/termvectors.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/termvectors.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.find_field_structure.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.find_field_structure.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.find_field_structure.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.find_field_structure.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.find_message_structure.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.find_message_structure.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.find_message_structure.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.find_message_structure.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.find_structure.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.find_structure.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.find_structure.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.find_structure.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.test_grok_pattern.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.test_grok_pattern.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/text_structure.test_grok_pattern.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/text_structure.test_grok_pattern.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.delete_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.delete_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.delete_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.delete_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.get_node_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.get_node_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.get_node_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.get_node_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.get_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.get_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.get_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.get_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.get_transform_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.get_transform_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.get_transform_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.get_transform_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.preview_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.preview_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.preview_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.preview_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.put_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.put_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.put_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.put_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.reset_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.reset_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.reset_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.reset_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.schedule_now_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.schedule_now_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.schedule_now_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.schedule_now_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.start_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.start_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.start_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.start_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.stop_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.stop_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.stop_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.stop_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.update_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.update_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.update_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.update_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/transform.upgrade_transforms.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.upgrade_transforms.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/transform.upgrade_transforms.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/transform.upgrade_transforms.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/update.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/update.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/update.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/update.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/update_by_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/update_by_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/update_by_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/update_by_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/update_by_query_rethrottle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/update_by_query_rethrottle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/update_by_query_rethrottle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/update_by_query_rethrottle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.ack_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.ack_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.ack_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.ack_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.activate_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.activate_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.activate_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.activate_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.deactivate_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.deactivate_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.deactivate_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.deactivate_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.delete_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.delete_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.delete_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.delete_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.execute_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.execute_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.execute_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.execute_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.get_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.get_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.get_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.get_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.get_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.get_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.get_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.get_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.put_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.put_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.put_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.put_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.query_watches.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.query_watches.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.query_watches.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.query_watches.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.start.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.start.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.start.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.start.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.stop.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.stop.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.stop.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.stop.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/watcher.update_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.update_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/watcher.update_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/watcher.update_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/xpack.info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/xpack.info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/xpack.info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/xpack.info.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/xpack.usage.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/xpack.usage.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/generated/xpack.usage.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/generated/xpack.usage.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/manual/.empty b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/manual/.empty similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/manual/.empty rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/manual/.empty diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/async_search.submit.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/async_search.submit.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/async_search.submit.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/async_search.submit.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.follow.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.follow.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.follow.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.follow.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.forget_follower.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.forget_follower.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.forget_follower.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.forget_follower.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.put_auto_follow_pattern.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.put_auto_follow_pattern.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.put_auto_follow_pattern.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.put_auto_follow_pattern.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.resume_follow.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.resume_follow.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ccr.resume_follow.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ccr.resume_follow.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/clear_scroll.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/clear_scroll.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/clear_scroll.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/clear_scroll.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.health.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.health.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.health.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.health.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.put_component_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.put_component_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.put_component_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.put_component_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.put_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.put_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.put_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.put_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.reroute.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.reroute.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.reroute.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.reroute.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.state.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.state.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/cluster.state.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/cluster.state.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/count.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/count.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/count.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/count.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/delete_by_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/delete_by_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/delete_by_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/delete_by_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/enrich.put_policy.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/enrich.put_policy.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/enrich.put_policy.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/enrich.put_policy.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/esql.query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/esql.query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/esql.query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/esql.query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/graph.explore.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/graph.explore.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/graph.explore.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/graph.explore.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ilm.move_to_step.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ilm.move_to_step.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ilm.move_to_step.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ilm.move_to_step.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ilm.put_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ilm.put_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ilm.put_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ilm.put_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.clone.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.clone.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.clone.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.clone.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.create.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.create.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.create.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.create.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.delete_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.delete_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.delete_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.delete_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.exists_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.exists_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.exists_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.exists_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.get_field_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.get_field_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.get_field_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.get_field_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.get_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.get_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.get_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.get_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.get_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.get_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.get_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.get_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_alias.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_alias.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_alias.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_alias.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_index_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_index_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_index_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_index_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_settings.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_settings.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_settings.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_settings.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.put_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.put_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.rollover.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.rollover.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.rollover.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.rollover.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.update_aliases.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.update_aliases.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.update_aliases.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.update_aliases.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/indices.validate_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.validate_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/indices.validate_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/indices.validate_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/license.post.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/license.post.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/license.post.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/license.post.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/logstash.put_pipeline.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/logstash.put_pipeline.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/logstash.put_pipeline.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/logstash.put_pipeline.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.evaluate_data_frame.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.evaluate_data_frame.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.evaluate_data_frame.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.evaluate_data_frame.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.explain_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.explain_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.explain_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.explain_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_buckets.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_buckets.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_buckets.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_buckets.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_calendar_events.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_calendar_events.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_calendar_events.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_calendar_events.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_calendars.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_calendars.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_calendars.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_calendars.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_categories.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_categories.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_categories.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_categories.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_influencers.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_influencers.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_influencers.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_influencers.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_model_snapshots.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_model_snapshots.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_model_snapshots.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_model_snapshots.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_overall_buckets.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_overall_buckets.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_overall_buckets.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_overall_buckets.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_records.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_records.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.get_records.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.get_records.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.post_calendar_events.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.post_calendar_events.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.post_calendar_events.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.post_calendar_events.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_calendar.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_calendar.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_calendar.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_calendar.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_data_frame_analytics.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_data_frame_analytics.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_data_frame_analytics.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_data_frame_analytics.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_trained_model.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_trained_model.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.put_trained_model.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.put_trained_model.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.revert_model_snapshot.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.revert_model_snapshot.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.revert_model_snapshot.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.revert_model_snapshot.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.update_datafeed.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.update_datafeed.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.update_datafeed.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.update_datafeed.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.update_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.update_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.update_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.update_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/ml.update_model_snapshot.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.update_model_snapshot.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/ml.update_model_snapshot.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/ml.update_model_snapshot.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/nodes.stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/nodes.stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/nodes.stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/nodes.stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/nodes.usage.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/nodes.usage.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/nodes.usage.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/nodes.usage.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/query_rules.put_ruleset.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/query_rules.put_ruleset.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/query_rules.put_ruleset.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/query_rules.put_ruleset.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/rollup.delete_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/rollup.delete_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/rollup.delete_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/rollup.delete_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/rollup.put_job.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/rollup.put_job.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/rollup.put_job.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/rollup.put_job.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/rollup.rollup_search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/rollup.rollup_search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/rollup.rollup_search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/rollup.rollup_search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/search_application.post_behavioral_analytics_event.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_application.post_behavioral_analytics_event.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/search_application.post_behavioral_analytics_event.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_application.post_behavioral_analytics_event.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/search_application.put.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_application.put.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/search_application.put.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_application.put.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/search_application.search.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_application.search.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/search_application.search.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_application.search.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/search_template.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_template.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/search_template.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/search_template.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.authenticate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.authenticate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.authenticate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.authenticate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.change_password.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.change_password.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.change_password.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.change_password.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.create_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.create_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.create_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.create_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.get_token.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.get_token.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.get_token.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.get_token.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.has_privileges.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.has_privileges.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.has_privileges.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.has_privileges.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.invalidate_api_key.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.invalidate_api_key.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.invalidate_api_key.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.invalidate_api_key.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.invalidate_token.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.invalidate_token.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.invalidate_token.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.invalidate_token.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.put_role.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.put_role.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.put_role.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.put_role.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.put_role_mapping.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.put_role_mapping.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.put_role_mapping.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.put_role_mapping.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.put_user.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.put_user.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.put_user.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.put_user.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_authenticate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_authenticate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_authenticate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_authenticate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_complete_logout.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_complete_logout.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_complete_logout.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_complete_logout.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_invalidate.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_invalidate.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_invalidate.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_invalidate.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_logout.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_logout.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_logout.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_logout.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_prepare_authentication.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_prepare_authentication.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/security.saml_prepare_authentication.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/security.saml_prepare_authentication.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/slm.put_lifecycle.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/slm.put_lifecycle.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/slm.put_lifecycle.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/slm.put_lifecycle.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/slm.start.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/slm.start.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/slm.start.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/slm.start.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/slm.stop.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/slm.stop.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/slm.stop.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/slm.stop.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/snapshot.create.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/snapshot.create.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/snapshot.create.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/snapshot.create.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/snapshot.create_repository.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/snapshot.create_repository.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/snapshot.create_repository.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/snapshot.create_repository.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/snapshot.restore.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/snapshot.restore.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/snapshot.restore.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/snapshot.restore.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/sql.query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/sql.query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/sql.query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/sql.query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym_rule.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym_rule.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym_rule.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/synonyms.put_synonym_rule.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/terms_enum.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/terms_enum.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/terms_enum.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/terms_enum.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/transform.get_transform_stats.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.get_transform_stats.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/transform.get_transform_stats.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.get_transform_stats.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/transform.preview_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.preview_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/transform.preview_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.preview_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/transform.put_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.put_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/transform.put_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.put_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/transform.stop_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.stop_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/transform.stop_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.stop_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/transform.update_transform.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.update_transform.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/transform.update_transform.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/transform.update_transform.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/update_by_query.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/update_by_query.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/update_by_query.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/update_by_query.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/watcher.execute_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/watcher.execute_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/watcher.execute_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/watcher.execute_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/watcher.put_watch.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/watcher.put_watch.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/watcher.put_watch.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/watcher.put_watch.json diff --git a/src/plugins/console/server/lib/spec_definitions/json/overrides/xpack.info.json b/src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/xpack.info.json similarity index 100% rename from src/plugins/console/server/lib/spec_definitions/json/overrides/xpack.info.json rename to src/platform/plugins/shared/console/server/lib/spec_definitions/json/overrides/xpack.info.json diff --git a/src/plugins/console/server/lib/utils/encode_path.test.ts b/src/platform/plugins/shared/console/server/lib/utils/encode_path.test.ts similarity index 100% rename from src/plugins/console/server/lib/utils/encode_path.test.ts rename to src/platform/plugins/shared/console/server/lib/utils/encode_path.test.ts diff --git a/src/plugins/console/server/lib/utils/encode_path.ts b/src/platform/plugins/shared/console/server/lib/utils/encode_path.ts similarity index 100% rename from src/plugins/console/server/lib/utils/encode_path.ts rename to src/platform/plugins/shared/console/server/lib/utils/encode_path.ts diff --git a/src/plugins/console/server/lib/utils/index.ts b/src/platform/plugins/shared/console/server/lib/utils/index.ts similarity index 100% rename from src/plugins/console/server/lib/utils/index.ts rename to src/platform/plugins/shared/console/server/lib/utils/index.ts diff --git a/src/plugins/console/server/lib/utils/sanitize_hostname.test.ts b/src/platform/plugins/shared/console/server/lib/utils/sanitize_hostname.test.ts similarity index 100% rename from src/plugins/console/server/lib/utils/sanitize_hostname.test.ts rename to src/platform/plugins/shared/console/server/lib/utils/sanitize_hostname.test.ts diff --git a/src/plugins/console/server/lib/utils/sanitize_hostname.ts b/src/platform/plugins/shared/console/server/lib/utils/sanitize_hostname.ts similarity index 100% rename from src/plugins/console/server/lib/utils/sanitize_hostname.ts rename to src/platform/plugins/shared/console/server/lib/utils/sanitize_hostname.ts diff --git a/src/plugins/console/server/lib/utils/to_url.test.ts b/src/platform/plugins/shared/console/server/lib/utils/to_url.test.ts similarity index 100% rename from src/plugins/console/server/lib/utils/to_url.test.ts rename to src/platform/plugins/shared/console/server/lib/utils/to_url.test.ts diff --git a/src/plugins/console/server/lib/utils/to_url.ts b/src/platform/plugins/shared/console/server/lib/utils/to_url.ts similarity index 100% rename from src/plugins/console/server/lib/utils/to_url.ts rename to src/platform/plugins/shared/console/server/lib/utils/to_url.ts diff --git a/src/plugins/console/server/lib/wildcard_matcher.test.js b/src/platform/plugins/shared/console/server/lib/wildcard_matcher.test.js similarity index 100% rename from src/plugins/console/server/lib/wildcard_matcher.test.js rename to src/platform/plugins/shared/console/server/lib/wildcard_matcher.test.js diff --git a/src/plugins/console/server/lib/wildcard_matcher.ts b/src/platform/plugins/shared/console/server/lib/wildcard_matcher.ts similarity index 100% rename from src/plugins/console/server/lib/wildcard_matcher.ts rename to src/platform/plugins/shared/console/server/lib/wildcard_matcher.ts diff --git a/src/plugins/console/server/plugin.ts b/src/platform/plugins/shared/console/server/plugin.ts similarity index 100% rename from src/plugins/console/server/plugin.ts rename to src/platform/plugins/shared/console/server/plugin.ts diff --git a/src/plugins/console/server/routes/api/__mocks__/request.mock.ts b/src/platform/plugins/shared/console/server/routes/api/__mocks__/request.mock.ts similarity index 100% rename from src/plugins/console/server/routes/api/__mocks__/request.mock.ts rename to src/platform/plugins/shared/console/server/routes/api/__mocks__/request.mock.ts diff --git a/src/plugins/console/server/routes/api/__mocks__/routes.mock.ts b/src/platform/plugins/shared/console/server/routes/api/__mocks__/routes.mock.ts similarity index 100% rename from src/plugins/console/server/routes/api/__mocks__/routes.mock.ts rename to src/platform/plugins/shared/console/server/routes/api/__mocks__/routes.mock.ts diff --git a/src/plugins/console/server/routes/api/console/autocomplete_entities/index.ts b/src/platform/plugins/shared/console/server/routes/api/console/autocomplete_entities/index.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/autocomplete_entities/index.ts rename to src/platform/plugins/shared/console/server/routes/api/console/autocomplete_entities/index.ts diff --git a/src/plugins/console/server/routes/api/console/autocomplete_entities/validation_config.ts b/src/platform/plugins/shared/console/server/routes/api/console/autocomplete_entities/validation_config.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/autocomplete_entities/validation_config.ts rename to src/platform/plugins/shared/console/server/routes/api/console/autocomplete_entities/validation_config.ts diff --git a/src/plugins/console/server/routes/api/console/convert_request_to_language/convert_request_handler.test.ts b/src/platform/plugins/shared/console/server/routes/api/console/convert_request_to_language/convert_request_handler.test.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/convert_request_to_language/convert_request_handler.test.ts rename to src/platform/plugins/shared/console/server/routes/api/console/convert_request_to_language/convert_request_handler.test.ts diff --git a/src/plugins/console/server/routes/api/console/convert_request_to_language/index.ts b/src/platform/plugins/shared/console/server/routes/api/console/convert_request_to_language/index.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/convert_request_to_language/index.ts rename to src/platform/plugins/shared/console/server/routes/api/console/convert_request_to_language/index.ts diff --git a/src/plugins/console/server/routes/api/console/es_config/index.ts b/src/platform/plugins/shared/console/server/routes/api/console/es_config/index.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/es_config/index.ts rename to src/platform/plugins/shared/console/server/routes/api/console/es_config/index.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/body.test.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/body.test.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/body.test.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/body.test.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/create_handler.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/create_handler.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/create_handler.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/create_handler.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/headers.test.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/headers.test.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/headers.test.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/headers.test.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/index.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/index.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/index.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/index.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/mocks.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/mocks.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/mocks.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/mocks.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/params.test.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/params.test.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/params.test.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/params.test.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/proxy_fallback.test.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/proxy_fallback.test.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/proxy_fallback.test.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/proxy_fallback.test.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/query_string.test.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/query_string.test.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/query_string.test.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/query_string.test.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/route_validation.test.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/route_validation.test.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/route_validation.test.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/route_validation.test.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/stubs.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/stubs.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/stubs.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/stubs.ts diff --git a/src/plugins/console/server/routes/api/console/proxy/validation_config.ts b/src/platform/plugins/shared/console/server/routes/api/console/proxy/validation_config.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/proxy/validation_config.ts rename to src/platform/plugins/shared/console/server/routes/api/console/proxy/validation_config.ts diff --git a/src/plugins/console/server/routes/api/console/spec_definitions/index.ts b/src/platform/plugins/shared/console/server/routes/api/console/spec_definitions/index.ts similarity index 100% rename from src/plugins/console/server/routes/api/console/spec_definitions/index.ts rename to src/platform/plugins/shared/console/server/routes/api/console/spec_definitions/index.ts diff --git a/src/plugins/console/server/routes/index.ts b/src/platform/plugins/shared/console/server/routes/index.ts similarity index 100% rename from src/plugins/console/server/routes/index.ts rename to src/platform/plugins/shared/console/server/routes/index.ts diff --git a/src/plugins/console/server/services/es_legacy_config_service.ts b/src/platform/plugins/shared/console/server/services/es_legacy_config_service.ts similarity index 100% rename from src/plugins/console/server/services/es_legacy_config_service.ts rename to src/platform/plugins/shared/console/server/services/es_legacy_config_service.ts diff --git a/src/plugins/console/server/services/index.ts b/src/platform/plugins/shared/console/server/services/index.ts similarity index 100% rename from src/plugins/console/server/services/index.ts rename to src/platform/plugins/shared/console/server/services/index.ts diff --git a/src/plugins/console/server/services/spec_definitions_service.test.ts b/src/platform/plugins/shared/console/server/services/spec_definitions_service.test.ts similarity index 100% rename from src/plugins/console/server/services/spec_definitions_service.test.ts rename to src/platform/plugins/shared/console/server/services/spec_definitions_service.test.ts diff --git a/src/plugins/console/server/services/spec_definitions_service.ts b/src/platform/plugins/shared/console/server/services/spec_definitions_service.ts similarity index 100% rename from src/plugins/console/server/services/spec_definitions_service.ts rename to src/platform/plugins/shared/console/server/services/spec_definitions_service.ts diff --git a/src/plugins/console/server/shared_imports.ts b/src/platform/plugins/shared/console/server/shared_imports.ts similarity index 100% rename from src/plugins/console/server/shared_imports.ts rename to src/platform/plugins/shared/console/server/shared_imports.ts diff --git a/src/plugins/console/server/types.ts b/src/platform/plugins/shared/console/server/types.ts similarity index 100% rename from src/plugins/console/server/types.ts rename to src/platform/plugins/shared/console/server/types.ts diff --git a/src/platform/plugins/shared/console/tsconfig.json b/src/platform/plugins/shared/console/tsconfig.json new file mode 100644 index 0000000000000..1b296983f6169 --- /dev/null +++ b/src/platform/plugins/shared/console/tsconfig.json @@ -0,0 +1,39 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": ["common/**/*", "public/**/*", "server/**/*"], + "kbn_references": [ + "@kbn/core", + "@kbn/dev-tools-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/home-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/share-plugin", + "@kbn/usage-collection-plugin", + "@kbn/i18n", + "@kbn/analytics", + "@kbn/utility-types", + "@kbn/i18n-react", + "@kbn/shared-ux-utility", + "@kbn/core-http-browser", + "@kbn/config-schema", + "@kbn/core-http-router-server-internal", + "@kbn/core-elasticsearch-server", + "@kbn/core-http-browser-mocks", + "@kbn/react-kibana-context-theme", + "@kbn/code-editor", + "@kbn/monaco", + "@kbn/cloud-plugin", + "@kbn/core-notifications-browser", + "@kbn/react-kibana-context-render", + "@kbn/react-kibana-mount", + "@kbn/ui-theme", + "@kbn/core-doc-links-browser", + "@kbn/shared-ux-router", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/src/plugins/dev_tools/README.md b/src/platform/plugins/shared/dev_tools/README.md similarity index 100% rename from src/plugins/dev_tools/README.md rename to src/platform/plugins/shared/dev_tools/README.md diff --git a/src/plugins/dev_tools/common/constants.ts b/src/platform/plugins/shared/dev_tools/common/constants.ts similarity index 100% rename from src/plugins/dev_tools/common/constants.ts rename to src/platform/plugins/shared/dev_tools/common/constants.ts diff --git a/src/plugins/dev_tools/common/index.ts b/src/platform/plugins/shared/dev_tools/common/index.ts similarity index 100% rename from src/plugins/dev_tools/common/index.ts rename to src/platform/plugins/shared/dev_tools/common/index.ts diff --git a/src/plugins/dev_tools/kibana.jsonc b/src/platform/plugins/shared/dev_tools/kibana.jsonc similarity index 100% rename from src/plugins/dev_tools/kibana.jsonc rename to src/platform/plugins/shared/dev_tools/kibana.jsonc diff --git a/src/plugins/dev_tools/public/application.tsx b/src/platform/plugins/shared/dev_tools/public/application.tsx similarity index 100% rename from src/plugins/dev_tools/public/application.tsx rename to src/platform/plugins/shared/dev_tools/public/application.tsx diff --git a/src/plugins/dev_tools/public/constants/texts.ts b/src/platform/plugins/shared/dev_tools/public/constants/texts.ts similarity index 100% rename from src/plugins/dev_tools/public/constants/texts.ts rename to src/platform/plugins/shared/dev_tools/public/constants/texts.ts diff --git a/src/plugins/dev_tools/public/dev_tool.ts b/src/platform/plugins/shared/dev_tools/public/dev_tool.ts similarity index 100% rename from src/plugins/dev_tools/public/dev_tool.ts rename to src/platform/plugins/shared/dev_tools/public/dev_tool.ts diff --git a/src/plugins/dev_tools/public/index.scss b/src/platform/plugins/shared/dev_tools/public/index.scss similarity index 100% rename from src/plugins/dev_tools/public/index.scss rename to src/platform/plugins/shared/dev_tools/public/index.scss diff --git a/src/platform/plugins/shared/dev_tools/public/index.ts b/src/platform/plugins/shared/dev_tools/public/index.ts new file mode 100644 index 0000000000000..800e6f46df24f --- /dev/null +++ b/src/platform/plugins/shared/dev_tools/public/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +// TODO: https://github.com/elastic/kibana/issues/110892 + +import { DevToolsPlugin } from './plugin'; +export * from './plugin'; +export * from '../common/constants'; + +export function plugin() { + return new DevToolsPlugin(); +} diff --git a/src/plugins/dev_tools/public/plugin.ts b/src/platform/plugins/shared/dev_tools/public/plugin.ts similarity index 100% rename from src/plugins/dev_tools/public/plugin.ts rename to src/platform/plugins/shared/dev_tools/public/plugin.ts diff --git a/src/plugins/dev_tools/public/services/breadcrumb.ts b/src/platform/plugins/shared/dev_tools/public/services/breadcrumb.ts similarity index 100% rename from src/plugins/dev_tools/public/services/breadcrumb.ts rename to src/platform/plugins/shared/dev_tools/public/services/breadcrumb.ts diff --git a/src/plugins/dev_tools/public/services/doc_title.ts b/src/platform/plugins/shared/dev_tools/public/services/doc_title.ts similarity index 100% rename from src/plugins/dev_tools/public/services/doc_title.ts rename to src/platform/plugins/shared/dev_tools/public/services/doc_title.ts diff --git a/src/plugins/dev_tools/public/services/index.ts b/src/platform/plugins/shared/dev_tools/public/services/index.ts similarity index 100% rename from src/plugins/dev_tools/public/services/index.ts rename to src/platform/plugins/shared/dev_tools/public/services/index.ts diff --git a/src/plugins/dev_tools/public/types.ts b/src/platform/plugins/shared/dev_tools/public/types.ts similarity index 100% rename from src/plugins/dev_tools/public/types.ts rename to src/platform/plugins/shared/dev_tools/public/types.ts diff --git a/src/plugins/dev_tools/server/config.ts b/src/platform/plugins/shared/dev_tools/server/config.ts similarity index 100% rename from src/plugins/dev_tools/server/config.ts rename to src/platform/plugins/shared/dev_tools/server/config.ts diff --git a/src/plugins/dev_tools/server/index.ts b/src/platform/plugins/shared/dev_tools/server/index.ts similarity index 100% rename from src/plugins/dev_tools/server/index.ts rename to src/platform/plugins/shared/dev_tools/server/index.ts diff --git a/src/plugins/dev_tools/server/plugin.ts b/src/platform/plugins/shared/dev_tools/server/plugin.ts similarity index 100% rename from src/plugins/dev_tools/server/plugin.ts rename to src/platform/plugins/shared/dev_tools/server/plugin.ts diff --git a/src/plugins/dev_tools/server/ui_settings.ts b/src/platform/plugins/shared/dev_tools/server/ui_settings.ts similarity index 100% rename from src/plugins/dev_tools/server/ui_settings.ts rename to src/platform/plugins/shared/dev_tools/server/ui_settings.ts diff --git a/src/platform/plugins/shared/dev_tools/tsconfig.json b/src/platform/plugins/shared/dev_tools/tsconfig.json new file mode 100644 index 0000000000000..a80d3ddcea9f2 --- /dev/null +++ b/src/platform/plugins/shared/dev_tools/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": ["common/*", "public/**/*", "server/**/*"], + "kbn_references": [ + "@kbn/core", + "@kbn/url-forwarding-plugin", + "@kbn/management-plugin", + "@kbn/i18n", + "@kbn/ui-theme", + "@kbn/shared-ux-router", + "@kbn/deeplinks-devtools", + "@kbn/config-schema", + "@kbn/core-plugins-server", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/src/plugins/es_ui_shared/.storybook/main.ts b/src/platform/plugins/shared/es_ui_shared/.storybook/main.ts similarity index 100% rename from src/plugins/es_ui_shared/.storybook/main.ts rename to src/platform/plugins/shared/es_ui_shared/.storybook/main.ts diff --git a/src/platform/plugins/shared/es_ui_shared/.storybook/manager.ts b/src/platform/plugins/shared/es_ui_shared/.storybook/manager.ts new file mode 100644 index 0000000000000..566332bc6a3ed --- /dev/null +++ b/src/platform/plugins/shared/es_ui_shared/.storybook/manager.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { addons } from '@storybook/addons'; +import { create } from '@storybook/theming'; +import { PANEL_ID } from '@storybook/addon-actions'; + +addons.setConfig({ + theme: create({ + base: 'light', + brandTitle: 'Platform Deployment Management Storybook', + brandUrl: + 'https://github.com/elastic/kibana/tree/main/src/platform/plugins/shared/es_ui_shared', + }), + showPanel: () => true, + selectedPanel: PANEL_ID, +}); diff --git a/src/plugins/es_ui_shared/README.md b/src/platform/plugins/shared/es_ui_shared/README.md similarity index 100% rename from src/plugins/es_ui_shared/README.md rename to src/platform/plugins/shared/es_ui_shared/README.md diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/authorization_provider.tsx diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/index.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/index.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/index.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/index.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/not_authorized_section.tsx diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/page_error.tsx diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/section_error.tsx diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.test.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.test.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.test.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.test.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/components/with_privileges.tsx diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/index.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/index.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/index.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/index.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/authorization/types.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/authorization/types.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.test.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.test.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.test.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.test.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/es_error_parser.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.test.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.test.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.test.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.test.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/handle_es_error.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/errors/index.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/index.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/errors/index.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/errors/index.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/global_flyout/global_flyout.tsx b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/global_flyout/global_flyout.tsx similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/global_flyout/global_flyout.tsx rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/global_flyout/global_flyout.tsx diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/global_flyout/index.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/global_flyout/index.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/global_flyout/index.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/global_flyout/index.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/xjson/index.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/index.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/xjson/index.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/index.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_collapsing.txt b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_collapsing.txt similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_collapsing.txt rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_collapsing.txt diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_expanding.txt b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_expanding.txt similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_expanding.txt rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/__fixtures__/utils_string_expanding.txt diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/index.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/index.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/index.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/index.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/json_xjson_translation_tools.test.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/json_xjson_translation_tools.test.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/json_xjson_translation_tools.test.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/json_xjson_translation_tools.test.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/parser.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/parser.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/parser.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/json_xjson_translation_tools/parser.ts diff --git a/src/plugins/es_ui_shared/__packages_do_not_import__/xjson/use_xjson_mode.ts b/src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/use_xjson_mode.ts similarity index 100% rename from src/plugins/es_ui_shared/__packages_do_not_import__/xjson/use_xjson_mode.ts rename to src/platform/plugins/shared/es_ui_shared/__packages_do_not_import__/xjson/use_xjson_mode.ts diff --git a/src/plugins/es_ui_shared/common/index.ts b/src/platform/plugins/shared/es_ui_shared/common/index.ts similarity index 100% rename from src/plugins/es_ui_shared/common/index.ts rename to src/platform/plugins/shared/es_ui_shared/common/index.ts diff --git a/src/platform/plugins/shared/es_ui_shared/jest.config.js b/src/platform/plugins/shared/es_ui_shared/jest.config.js new file mode 100644 index 0000000000000..5deb0919362aa --- /dev/null +++ b/src/platform/plugins/shared/es_ui_shared/jest.config.js @@ -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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/plugins/shared/es_ui_shared'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/src/platform/plugins/shared/es_ui_shared', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/src/platform/plugins/shared/es_ui_shared/{__packages_do_not_import__,common,public,server,static}/**/*.{ts,tsx}', + ], +}; diff --git a/src/plugins/es_ui_shared/kibana.jsonc b/src/platform/plugins/shared/es_ui_shared/kibana.jsonc similarity index 100% rename from src/plugins/es_ui_shared/kibana.jsonc rename to src/platform/plugins/shared/es_ui_shared/kibana.jsonc diff --git a/src/plugins/es_ui_shared/public/authorization/index.ts b/src/platform/plugins/shared/es_ui_shared/public/authorization/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/authorization/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/authorization/index.ts diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/__snapshots__/cron_editor.test.tsx.snap b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/__snapshots__/cron_editor.test.tsx.snap similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/__snapshots__/cron_editor.test.tsx.snap rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/__snapshots__/cron_editor.test.tsx.snap diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/constants.ts b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/constants.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/constants.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/constants.ts diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_daily.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_daily.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/cron_daily.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_daily.tsx diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.test.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.test.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.test.tsx diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/cron_editor.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_editor.tsx diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_hourly.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_hourly.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/cron_hourly.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_hourly.tsx diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_monthly.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_monthly.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/cron_monthly.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_monthly.tsx diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_weekly.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_weekly.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/cron_weekly.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_weekly.tsx diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/cron_yearly.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_yearly.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/cron_yearly.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/cron_yearly.tsx diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/index.ts b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/index.ts diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/services/cron.ts b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/services/cron.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/services/cron.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/services/cron.ts diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/services/humanized_numbers.ts b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/services/humanized_numbers.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/services/humanized_numbers.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/services/humanized_numbers.ts diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/services/index.ts b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/services/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/services/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/services/index.ts diff --git a/src/plugins/es_ui_shared/public/components/cron_editor/types.ts b/src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/types.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/cron_editor/types.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/cron_editor/types.ts diff --git a/src/plugins/es_ui_shared/public/components/json_editor/index.ts b/src/platform/plugins/shared/es_ui_shared/public/components/json_editor/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/json_editor/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/json_editor/index.ts diff --git a/src/plugins/es_ui_shared/public/components/json_editor/json_editor.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/json_editor/json_editor.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/json_editor/json_editor.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/json_editor/json_editor.tsx diff --git a/src/plugins/es_ui_shared/public/components/json_editor/use_json.ts b/src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/json_editor/use_json.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/json_editor/use_json.ts diff --git a/src/plugins/es_ui_shared/public/components/page_loading/index.ts b/src/platform/plugins/shared/es_ui_shared/public/components/page_loading/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/page_loading/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/page_loading/index.ts diff --git a/src/plugins/es_ui_shared/public/components/page_loading/page_loading.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/page_loading/page_loading.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/page_loading/page_loading.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/page_loading/page_loading.tsx diff --git a/src/plugins/es_ui_shared/public/components/section_loading/index.ts b/src/platform/plugins/shared/es_ui_shared/public/components/section_loading/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/section_loading/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/section_loading/index.ts diff --git a/src/plugins/es_ui_shared/public/components/section_loading/section_loading.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/section_loading/section_loading.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/section_loading/section_loading.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/section_loading/section_loading.tsx diff --git a/src/plugins/es_ui_shared/public/components/view_api_request_flyout/__snapshots__/view_api_request_flyout.test.tsx.snap b/src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/__snapshots__/view_api_request_flyout.test.tsx.snap similarity index 100% rename from src/plugins/es_ui_shared/public/components/view_api_request_flyout/__snapshots__/view_api_request_flyout.test.tsx.snap rename to src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/__snapshots__/view_api_request_flyout.test.tsx.snap diff --git a/src/plugins/es_ui_shared/public/components/view_api_request_flyout/index.ts b/src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/components/view_api_request_flyout/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/index.ts diff --git a/src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.test.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.test.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.test.tsx diff --git a/src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx b/src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx rename to src/platform/plugins/shared/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx diff --git a/src/plugins/es_ui_shared/public/forms/form_wizard/README.md b/src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/README.md similarity index 100% rename from src/plugins/es_ui_shared/public/forms/form_wizard/README.md rename to src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/README.md diff --git a/src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard.tsx b/src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard.tsx rename to src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard.tsx diff --git a/src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_context.tsx b/src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard_context.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_context.tsx rename to src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard_context.tsx diff --git a/src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_nav.tsx b/src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard_nav.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_nav.tsx rename to src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard_nav.tsx diff --git a/src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_step.tsx b/src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard_step.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/forms/form_wizard/form_wizard_step.tsx rename to src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/form_wizard_step.tsx diff --git a/src/plugins/es_ui_shared/public/forms/form_wizard/index.ts b/src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/forms/form_wizard/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/forms/form_wizard/index.ts diff --git a/src/plugins/es_ui_shared/public/forms/index.ts b/src/platform/plugins/shared/es_ui_shared/public/forms/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/forms/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/forms/index.ts diff --git a/src/plugins/es_ui_shared/public/forms/multi_content/README.md b/src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/README.md similarity index 100% rename from src/plugins/es_ui_shared/public/forms/multi_content/README.md rename to src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/README.md diff --git a/src/plugins/es_ui_shared/public/forms/multi_content/index.ts b/src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/forms/multi_content/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/index.ts diff --git a/src/plugins/es_ui_shared/public/forms/multi_content/multi_content_context.tsx b/src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/multi_content_context.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/forms/multi_content/multi_content_context.tsx rename to src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/multi_content_context.tsx diff --git a/src/plugins/es_ui_shared/public/forms/multi_content/use_multi_content.ts b/src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/use_multi_content.ts similarity index 100% rename from src/plugins/es_ui_shared/public/forms/multi_content/use_multi_content.ts rename to src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/use_multi_content.ts diff --git a/src/plugins/es_ui_shared/public/forms/multi_content/with_multi_content.tsx b/src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/with_multi_content.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/forms/multi_content/with_multi_content.tsx rename to src/platform/plugins/shared/es_ui_shared/public/forms/multi_content/with_multi_content.tsx diff --git a/src/plugins/es_ui_shared/public/global_flyout/index.ts b/src/platform/plugins/shared/es_ui_shared/public/global_flyout/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/global_flyout/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/global_flyout/index.ts diff --git a/src/plugins/es_ui_shared/public/index.ts b/src/platform/plugins/shared/es_ui_shared/public/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/index.ts diff --git a/src/plugins/es_ui_shared/public/indices/constants/index.ts b/src/platform/plugins/shared/es_ui_shared/public/indices/constants/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/indices/constants/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/indices/constants/index.ts diff --git a/src/plugins/es_ui_shared/public/indices/index.ts b/src/platform/plugins/shared/es_ui_shared/public/indices/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/indices/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/indices/index.ts diff --git a/src/plugins/es_ui_shared/public/indices/validate/index.ts b/src/platform/plugins/shared/es_ui_shared/public/indices/validate/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/indices/validate/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/indices/validate/index.ts diff --git a/src/plugins/es_ui_shared/public/indices/validate/validate_index.test.ts b/src/platform/plugins/shared/es_ui_shared/public/indices/validate/validate_index.test.ts similarity index 100% rename from src/plugins/es_ui_shared/public/indices/validate/validate_index.test.ts rename to src/platform/plugins/shared/es_ui_shared/public/indices/validate/validate_index.test.ts diff --git a/src/plugins/es_ui_shared/public/indices/validate/validate_index.ts b/src/platform/plugins/shared/es_ui_shared/public/indices/validate/validate_index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/indices/validate/validate_index.ts rename to src/platform/plugins/shared/es_ui_shared/public/indices/validate/validate_index.ts diff --git a/src/plugins/es_ui_shared/public/request/index.ts b/src/platform/plugins/shared/es_ui_shared/public/request/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/request/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/request/index.ts diff --git a/src/plugins/es_ui_shared/public/request/send_request.test.helpers.ts b/src/platform/plugins/shared/es_ui_shared/public/request/send_request.test.helpers.ts similarity index 100% rename from src/plugins/es_ui_shared/public/request/send_request.test.helpers.ts rename to src/platform/plugins/shared/es_ui_shared/public/request/send_request.test.helpers.ts diff --git a/src/plugins/es_ui_shared/public/request/send_request.test.ts b/src/platform/plugins/shared/es_ui_shared/public/request/send_request.test.ts similarity index 100% rename from src/plugins/es_ui_shared/public/request/send_request.test.ts rename to src/platform/plugins/shared/es_ui_shared/public/request/send_request.test.ts diff --git a/src/plugins/es_ui_shared/public/request/send_request.ts b/src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts similarity index 100% rename from src/plugins/es_ui_shared/public/request/send_request.ts rename to src/platform/plugins/shared/es_ui_shared/public/request/send_request.ts diff --git a/src/plugins/es_ui_shared/public/request/use_request.test.helpers.tsx b/src/platform/plugins/shared/es_ui_shared/public/request/use_request.test.helpers.tsx similarity index 100% rename from src/plugins/es_ui_shared/public/request/use_request.test.helpers.tsx rename to src/platform/plugins/shared/es_ui_shared/public/request/use_request.test.helpers.tsx diff --git a/src/plugins/es_ui_shared/public/request/use_request.test.ts b/src/platform/plugins/shared/es_ui_shared/public/request/use_request.test.ts similarity index 100% rename from src/plugins/es_ui_shared/public/request/use_request.test.ts rename to src/platform/plugins/shared/es_ui_shared/public/request/use_request.test.ts diff --git a/src/plugins/es_ui_shared/public/request/use_request.ts b/src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts similarity index 100% rename from src/plugins/es_ui_shared/public/request/use_request.ts rename to src/platform/plugins/shared/es_ui_shared/public/request/use_request.ts diff --git a/src/plugins/es_ui_shared/public/url/attempt_to_uri_decode.test.ts b/src/platform/plugins/shared/es_ui_shared/public/url/attempt_to_uri_decode.test.ts similarity index 100% rename from src/plugins/es_ui_shared/public/url/attempt_to_uri_decode.test.ts rename to src/platform/plugins/shared/es_ui_shared/public/url/attempt_to_uri_decode.test.ts diff --git a/src/plugins/es_ui_shared/public/url/attempt_to_uri_decode.ts b/src/platform/plugins/shared/es_ui_shared/public/url/attempt_to_uri_decode.ts similarity index 100% rename from src/plugins/es_ui_shared/public/url/attempt_to_uri_decode.ts rename to src/platform/plugins/shared/es_ui_shared/public/url/attempt_to_uri_decode.ts diff --git a/src/plugins/es_ui_shared/public/url/extract_query_params.ts b/src/platform/plugins/shared/es_ui_shared/public/url/extract_query_params.ts similarity index 100% rename from src/plugins/es_ui_shared/public/url/extract_query_params.ts rename to src/platform/plugins/shared/es_ui_shared/public/url/extract_query_params.ts diff --git a/src/plugins/es_ui_shared/public/url/index.ts b/src/platform/plugins/shared/es_ui_shared/public/url/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/url/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/url/index.ts diff --git a/src/plugins/es_ui_shared/public/xjson/index.ts b/src/platform/plugins/shared/es_ui_shared/public/xjson/index.ts similarity index 100% rename from src/plugins/es_ui_shared/public/xjson/index.ts rename to src/platform/plugins/shared/es_ui_shared/public/xjson/index.ts diff --git a/src/plugins/es_ui_shared/server/errors/index.ts b/src/platform/plugins/shared/es_ui_shared/server/errors/index.ts similarity index 100% rename from src/plugins/es_ui_shared/server/errors/index.ts rename to src/platform/plugins/shared/es_ui_shared/server/errors/index.ts diff --git a/src/plugins/es_ui_shared/server/index.ts b/src/platform/plugins/shared/es_ui_shared/server/index.ts similarity index 100% rename from src/plugins/es_ui_shared/server/index.ts rename to src/platform/plugins/shared/es_ui_shared/server/index.ts diff --git a/src/platform/plugins/shared/es_ui_shared/static/forms/README.md b/src/platform/plugins/shared/es_ui_shared/static/forms/README.md new file mode 100644 index 0000000000000..98d3703ed57df --- /dev/null +++ b/src/platform/plugins/shared/es_ui_shared/static/forms/README.md @@ -0,0 +1,68 @@ +# Form lib + +## Documentation + +The documentation can be accessed at: https://docs.elastic.dev/form-lib/welcome + + +### Run locally + +In order to run the documentation locally + +1. Fork and clone the elastic docs repo https://github.com/elastic/docs.elastic.dev +2. `cp sources.json sources-dev.json` +3. Edit the "elastic/kibana" section inside `source-dev.json` + +``` +// From this +{ + "type": "github", + "location": "elastic/kibana" +} + +// to this +{ + "type": "file", + "location": "../../<root-kibana-repo>", + // optional, if you want a faster build you can only include the form lib docs + "subdirs": [ + "src/platform/plugins/shared/es_ui_shared/static/forms/docs" + ] +} +``` + +4. Follow the "Getting started" instructions (https://github.com/elastic/docs.elastic.dev#getting-started) +5. `yarn dev` to launch the docs server + +## Field value change sequence diagram + +```mermaid +sequenceDiagram +actor User +User ->> UseField: change <input /> value +UseField ->> useField: setValue() +useField ->> useField: run field formatters +useField ->> useField: update state: value +useField ->> useField: create new "field" (FieldHook) +useField ->> useField: useEffect(): "field" changed +useField ->> useForm: addField(path, field) +useForm ->> useForm: update "fieldsRef" map object +useForm ->> useForm: update "formData$" observable +useForm ->> useFormData: update state: formData +useFormData -->> User: onChange() (optional handler passed to useFormdata()) +par useEffect +useField ->> UseField: call "onChange" prop +and useEffect +useField ->> useField: update state: isPristine: false +useField ->> useField: update state: isChangingValue: true +useField ->> useForm: validateFields() +note right of useForm: Validate the current field + any other field<br>declared in the "fieldsToValidateOnChange" +useForm -->> useField: validate() +useField ->> useField: update state: isValid true|false +useField ->> useForm: update state: isValid undefined|true|false +useField ->> useField: update state: isChangingValue: false +and useEffect +useField ->> useField: update state: isModified: true|false +end +User ->> User: useEffect() -- >useFormData state update +``` \ No newline at end of file diff --git a/src/plugins/es_ui_shared/static/forms/components/field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/button_group_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/button_group_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/button_group_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/button_group_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/card_radio_group_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/card_radio_group_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/card_radio_group_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/card_radio_group_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/checkbox_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/checkbox_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/checkbox_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/checkbox_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/combobox_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/combobox_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/combobox_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/combobox_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/date_picker_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/date_picker_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/date_picker_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/date_picker_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/file_picker_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/file_picker_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/file_picker_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/file_picker_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/hidden_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/hidden_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/hidden_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/hidden_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/json_editor_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/json_editor_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/json_editor_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/json_editor_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/multi_button_group_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/multi_button_group_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/multi_button_group_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/multi_button_group_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/multi_select_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/multi_select_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/multi_select_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/multi_select_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/numeric_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/numeric_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/numeric_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/numeric_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/password_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/password_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/password_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/password_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/radio_group_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/radio_group_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/radio_group_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/radio_group_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/range_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/range_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/range_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/range_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/select_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/select_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/select_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/select_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/super_select_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/super_select_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/super_select_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/super_select_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/text_area_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/text_area_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/text_area_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/text_area_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/text_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/text_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/text_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/text_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/fields/toggle_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/toggle_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/fields/toggle_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/fields/toggle_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/form_row.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/components/form_row.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/form_row.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/form_row.tsx diff --git a/src/plugins/es_ui_shared/static/forms/components/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/components/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/components/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/components/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/default_value.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/default_value.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/default_value.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/default_value.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/field_hook.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/field_hook.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/field_hook.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/field_hook.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/form_component.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/form_component.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/form_component.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/form_component.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/form_hook.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/form_hook.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/form_hook.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/form_hook.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/form_lib_field_value_change.png b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/form_lib_field_value_change.png similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/form_lib_field_value_change.png rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/form_lib_field_value_change.png diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/fundamentals.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/fundamentals.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/fundamentals.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/fundamentals.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_array.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_array.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/use_array.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_array.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_behavior_subject.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_behavior_subject.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/use_behavior_subject.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_behavior_subject.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_field.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_field.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/use_field.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_field.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_form_data.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_form_data.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/use_form_data.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_form_data.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_form_hook.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_form_hook.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/use_form_hook.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_form_hook.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_form_is_modified.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_form_is_modified.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/use_form_is_modified.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_form_is_modified.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/core/use_multi_fields.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_multi_fields.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/core/use_multi_fields.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/core/use_multi_fields.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/dynamic_fields.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/dynamic_fields.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/examples/dynamic_fields.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/dynamic_fields.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/fields_composition.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/fields_composition.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/examples/fields_composition.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/fields_composition.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/listening_to_changes.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/listening_to_changes.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/examples/listening_to_changes.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/listening_to_changes.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/serializers_deserializers.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/serializers_deserializers.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/examples/serializers_deserializers.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/serializers_deserializers.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/style_fields.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/style_fields.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/examples/style_fields.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/style_fields.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/examples/validation.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/validation.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/examples/validation.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/examples/validation.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/helpers/components.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/helpers/components.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/helpers/components.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/helpers/components.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/helpers/validators.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/helpers/validators.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/helpers/validators.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/helpers/validators.mdx diff --git a/src/plugins/es_ui_shared/static/forms/docs/nav_form_lib.docnav.json b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/nav_form_lib.docnav.json similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/nav_form_lib.docnav.json rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/nav_form_lib.docnav.json diff --git a/src/plugins/es_ui_shared/static/forms/docs/welcome.mdx b/src/platform/plugins/shared/es_ui_shared/static/forms/docs/welcome.mdx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/docs/welcome.mdx rename to src/platform/plugins/shared/es_ui_shared/static/forms/docs/welcome.mdx diff --git a/src/plugins/es_ui_shared/static/forms/helpers/de_serializers.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/de_serializers.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/de_serializers.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/de_serializers.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_formatters.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_formatters.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_formatters.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_formatters.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/contains_char.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/contains_char.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/contains_char.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/contains_char.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/empty_field.test.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/empty_field.test.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/empty_field.test.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/empty_field.test.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/empty_field.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/empty_field.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/empty_field.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/empty_field.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/index_name.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/index_name.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/index_name.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/index_name.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/index_pattern_field.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/index_pattern_field.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/index_pattern_field.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/index_pattern_field.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_integer.test.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/is_integer.test.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_integer.test.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/is_integer.test.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_integer.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/is_integer.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_integer.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/is_integer.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_json.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/is_json.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/is_json.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/is_json.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/lowercase_string.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/lowercase_string.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/lowercase_string.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/lowercase_string.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/max_length.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/max_length.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/max_length.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/max_length.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/min_length.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/min_length.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/min_length.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/min_length.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/min_selectable_selection.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/min_selectable_selection.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/min_selectable_selection.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/min_selectable_selection.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/number_greater_than.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/number_greater_than.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/number_greater_than.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/number_greater_than.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/number_smaller_than.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/number_smaller_than.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/number_smaller_than.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/number_smaller_than.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/starts_with.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/starts_with.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/starts_with.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/starts_with.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/types.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/types.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/types.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/types.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/field_validators/url.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/url.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/field_validators/url.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/field_validators/url.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/serializers.test.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/serializers.test.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/serializers.test.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/serializers.test.ts diff --git a/src/plugins/es_ui_shared/static/forms/helpers/serializers.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/helpers/serializers.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/helpers/serializers.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/helpers/serializers.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/constants.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/constants.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/constants.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/constants.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_de_serializer.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_de_serializer.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_de_serializer.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_de_serializer.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_default_value.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_default_value.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_default_value.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_default_value.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_global_fields.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_global_fields.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_global_fields.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_global_fields.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_is_modified.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_is_modified.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_is_modified.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_is_modified.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_utils.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_utils.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_utils.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_utils.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_validation.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_validation.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_validation.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/form_validation.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/types.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/types.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/types.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/types.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_basic.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_basic.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_basic.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_basic.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_complex.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_complex.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_complex.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_complex.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_dynamic_data.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_dynamic_data.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_dynamic_data.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_dynamic_data.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_reorder.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_reorder.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_reorder.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_array_reorder.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_change_listeners.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_change_listeners.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_change_listeners.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_change_listeners.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_field_types.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_field_types.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_field_types.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_field_field_types.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_multi_field_basic.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_multi_field_basic.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_multi_field_basic.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/__stories__/use_multi_field_basic.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form.stories.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form.stories.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form.stories.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form.stories.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/form_data_provider.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.stories.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_array.stories.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.stories.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_array.stories.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_array.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_array.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_array.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_array.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_array.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.stories.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_field.stories.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.stories.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_field.stories.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_field.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_field.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_multi_field.stories.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_multi_field.stories.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_multi_field.stories.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_multi_field.stories.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/components/use_multi_fields.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/constants.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/constants.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/constants.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/constants.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/form_context.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/form_context.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/form_context.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/form_context.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/form_data_context.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/form_data_context.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/form_data_context.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/form_data_context.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/helpers.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/helpers.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/helpers.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/helpers.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_field.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field_from_props.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_field_from_props.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_field_from_props.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_field_from_props.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_data.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.test.tsx b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.test.tsx similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.test.tsx rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.test.tsx diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/use_form_is_modified.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/utils/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/utils/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/utils/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/utils/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/utils/use_behavior_subject.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/utils/use_behavior_subject.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/hooks/utils/use_behavior_subject.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/hooks/utils/use_behavior_subject.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/index.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/index.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/subject.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/subject.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/subject.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/subject.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/utils.test.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/utils.test.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/utils.test.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/utils.test.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/utils.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/utils.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/lib/utils.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/lib/utils.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/shared_imports.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/shared_imports.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/shared_imports.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/shared_imports.ts diff --git a/src/plugins/es_ui_shared/static/forms/hook_form_lib/types.ts b/src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/types.ts similarity index 100% rename from src/plugins/es_ui_shared/static/forms/hook_form_lib/types.ts rename to src/platform/plugins/shared/es_ui_shared/static/forms/hook_form_lib/types.ts diff --git a/src/plugins/es_ui_shared/static/validators/array/has_max_length.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/array/has_max_length.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/array/has_max_length.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/array/has_max_length.ts diff --git a/src/plugins/es_ui_shared/static/validators/array/has_min_length.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/array/has_min_length.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/array/has_min_length.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/array/has_min_length.ts diff --git a/src/plugins/es_ui_shared/static/validators/array/index.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/array/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/array/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/array/index.ts diff --git a/src/plugins/es_ui_shared/static/validators/array/is_empty.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/array/is_empty.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/array/is_empty.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/array/is_empty.ts diff --git a/src/plugins/es_ui_shared/static/validators/number/greater_than.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/number/greater_than.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/number/greater_than.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/number/greater_than.ts diff --git a/src/plugins/es_ui_shared/static/validators/number/index.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/number/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/number/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/number/index.ts diff --git a/src/plugins/es_ui_shared/static/validators/number/smaller_than.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/number/smaller_than.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/number/smaller_than.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/number/smaller_than.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/contains_chars.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/contains_chars.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/contains_chars.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/contains_chars.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/ends_with.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/ends_with.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/ends_with.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/ends_with.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/has_max_length.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/has_max_length.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/has_max_length.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/has_max_length.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/has_min_length.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/has_min_length.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/has_min_length.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/has_min_length.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/index.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/index.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/index.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/index.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/is_empty.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/is_empty.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/is_empty.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/is_empty.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/is_json.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/is_json.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/is_json.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/is_json.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/is_lowercase.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/is_lowercase.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/is_lowercase.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/is_lowercase.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/is_url.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/is_url.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/is_url.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/is_url.ts diff --git a/src/plugins/es_ui_shared/static/validators/string/starts_with.ts b/src/platform/plugins/shared/es_ui_shared/static/validators/string/starts_with.ts similarity index 100% rename from src/plugins/es_ui_shared/static/validators/string/starts_with.ts rename to src/platform/plugins/shared/es_ui_shared/static/validators/string/starts_with.ts diff --git a/src/platform/plugins/shared/es_ui_shared/tsconfig.json b/src/platform/plugins/shared/es_ui_shared/tsconfig.json new file mode 100644 index 0000000000000..2ec9524e4a111 --- /dev/null +++ b/src/platform/plugins/shared/es_ui_shared/tsconfig.json @@ -0,0 +1,32 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "__packages_do_not_import__/**/*", + "common/**/*", + "public/**/*", + "server/**/*", + "static/**/*", + "../../../../../typings/**/*", + ".storybook/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/data-views-plugin", + "@kbn/i18n", + "@kbn/shared-ux-page-kibana-template", + "@kbn/i18n-react", + "@kbn/test-jest-helpers", + "@kbn/share-plugin", + "@kbn/safer-lodash-set", + "@kbn/storybook", + "@kbn/shared-ux-link-redirect-app", + "@kbn/code-editor", + "@kbn/core-application-common", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/src/platform/plugins/shared/management/README.md b/src/platform/plugins/shared/management/README.md new file mode 100644 index 0000000000000..f3135cd9dd2da --- /dev/null +++ b/src/platform/plugins/shared/management/README.md @@ -0,0 +1,41 @@ +# Management Plugin + +This plugins contains the "Stack Management" page framework. It offers navigation and an API +to link individual management section into it. This plugin does not contain any individual +management section itself. + +## Cards navigation + +This plugin offers a special version of its landing page with a special feature called "cards navigation". +This feature can be enabled by calling the `setupCardsNavigation` method from the `management` plugin from +your plugin's `setup` method: + +``` + management.setupCardsNavigation({ enabled: true }); +``` + +The cards that will be shown are defined in the `src/platform/packages/shared/kbn-management/cards_navigation/src/consts.tsx` file +and they are grouped into categories. These cards are computed based on the `SectionsService` that is provided +in the `management` plugin. + +### Adding a new card to the navigation + +For adding a new item to the navigation all you have to do is edit the `src/platform/packages/shared/kbn-management/cards_navigation/src/consts.tsx` +file and add two things: + +* Add the app id into the `appIds` enum (make sure that the app_id value matches the one from the plugin) +* Add a new entry to the `appDefinitions` object. In here you can specify the category where you want it to be, icon and description. + + +### Removing an item from the navigation + +If card needs to be hidden from the navigation you can specify that by using the `hideLinksTo` prop: + +``` + management.setupCardsNavigation({ + enabled: true, + hideLinksTo: [appIds.MAINTENANCE_WINDOWS], + }); +``` + +More specifics about the `setupCardsNavigation` can be found in `src/platform/packages/shared/kbn-management/cards_navigation/readme.mdx`. diff --git a/src/plugins/management/common/contants.ts b/src/platform/plugins/shared/management/common/contants.ts similarity index 100% rename from src/plugins/management/common/contants.ts rename to src/platform/plugins/shared/management/common/contants.ts diff --git a/src/plugins/management/common/index.ts b/src/platform/plugins/shared/management/common/index.ts similarity index 100% rename from src/plugins/management/common/index.ts rename to src/platform/plugins/shared/management/common/index.ts diff --git a/src/plugins/management/common/locator.test.ts b/src/platform/plugins/shared/management/common/locator.test.ts similarity index 100% rename from src/plugins/management/common/locator.test.ts rename to src/platform/plugins/shared/management/common/locator.test.ts diff --git a/src/plugins/management/common/locator.ts b/src/platform/plugins/shared/management/common/locator.ts similarity index 100% rename from src/plugins/management/common/locator.ts rename to src/platform/plugins/shared/management/common/locator.ts diff --git a/src/platform/plugins/shared/management/jest.config.js b/src/platform/plugins/shared/management/jest.config.js new file mode 100644 index 0000000000000..bae14a396ffe1 --- /dev/null +++ b/src/platform/plugins/shared/management/jest.config.js @@ -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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/src/platform/plugins/shared/management'], + coverageDirectory: '<rootDir>/target/kibana-coverage/jest/src/platform/plugins/shared/management', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/src/platform/plugins/shared/management/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/src/plugins/management/kibana.jsonc b/src/platform/plugins/shared/management/kibana.jsonc similarity index 100% rename from src/plugins/management/kibana.jsonc rename to src/platform/plugins/shared/management/kibana.jsonc diff --git a/src/plugins/management/public/application.tsx b/src/platform/plugins/shared/management/public/application.tsx similarity index 100% rename from src/plugins/management/public/application.tsx rename to src/platform/plugins/shared/management/public/application.tsx diff --git a/src/plugins/management/public/components/index.ts b/src/platform/plugins/shared/management/public/components/index.ts similarity index 100% rename from src/plugins/management/public/components/index.ts rename to src/platform/plugins/shared/management/public/components/index.ts diff --git a/src/plugins/management/public/components/landing/classic_empty_prompt.tsx b/src/platform/plugins/shared/management/public/components/landing/classic_empty_prompt.tsx similarity index 100% rename from src/plugins/management/public/components/landing/classic_empty_prompt.tsx rename to src/platform/plugins/shared/management/public/components/landing/classic_empty_prompt.tsx diff --git a/src/plugins/management/public/components/landing/index.ts b/src/platform/plugins/shared/management/public/components/landing/index.ts similarity index 100% rename from src/plugins/management/public/components/landing/index.ts rename to src/platform/plugins/shared/management/public/components/landing/index.ts diff --git a/src/plugins/management/public/components/landing/landing.test.tsx b/src/platform/plugins/shared/management/public/components/landing/landing.test.tsx similarity index 100% rename from src/plugins/management/public/components/landing/landing.test.tsx rename to src/platform/plugins/shared/management/public/components/landing/landing.test.tsx diff --git a/src/plugins/management/public/components/landing/landing.tsx b/src/platform/plugins/shared/management/public/components/landing/landing.tsx similarity index 100% rename from src/plugins/management/public/components/landing/landing.tsx rename to src/platform/plugins/shared/management/public/components/landing/landing.tsx diff --git a/src/plugins/management/public/components/landing/solution_empty_prompt.tsx b/src/platform/plugins/shared/management/public/components/landing/solution_empty_prompt.tsx similarity index 100% rename from src/plugins/management/public/components/landing/solution_empty_prompt.tsx rename to src/platform/plugins/shared/management/public/components/landing/solution_empty_prompt.tsx diff --git a/src/plugins/management/public/components/management_app/index.ts b/src/platform/plugins/shared/management/public/components/management_app/index.ts similarity index 100% rename from src/plugins/management/public/components/management_app/index.ts rename to src/platform/plugins/shared/management/public/components/management_app/index.ts diff --git a/src/plugins/management/public/components/management_app/management_app.scss b/src/platform/plugins/shared/management/public/components/management_app/management_app.scss similarity index 100% rename from src/plugins/management/public/components/management_app/management_app.scss rename to src/platform/plugins/shared/management/public/components/management_app/management_app.scss diff --git a/src/plugins/management/public/components/management_app/management_app.tsx b/src/platform/plugins/shared/management/public/components/management_app/management_app.tsx similarity index 100% rename from src/plugins/management/public/components/management_app/management_app.tsx rename to src/platform/plugins/shared/management/public/components/management_app/management_app.tsx diff --git a/src/plugins/management/public/components/management_app/management_context.tsx b/src/platform/plugins/shared/management/public/components/management_app/management_context.tsx similarity index 100% rename from src/plugins/management/public/components/management_app/management_context.tsx rename to src/platform/plugins/shared/management/public/components/management_app/management_context.tsx diff --git a/src/plugins/management/public/components/management_app/management_router.tsx b/src/platform/plugins/shared/management/public/components/management_app/management_router.tsx similarity index 100% rename from src/plugins/management/public/components/management_app/management_router.tsx rename to src/platform/plugins/shared/management/public/components/management_app/management_router.tsx diff --git a/src/plugins/management/public/components/management_app_wrapper/index.tsx b/src/platform/plugins/shared/management/public/components/management_app_wrapper/index.tsx similarity index 100% rename from src/plugins/management/public/components/management_app_wrapper/index.tsx rename to src/platform/plugins/shared/management/public/components/management_app_wrapper/index.tsx diff --git a/src/plugins/management/public/components/management_app_wrapper/management_app_wrapper.tsx b/src/platform/plugins/shared/management/public/components/management_app_wrapper/management_app_wrapper.tsx similarity index 100% rename from src/plugins/management/public/components/management_app_wrapper/management_app_wrapper.tsx rename to src/platform/plugins/shared/management/public/components/management_app_wrapper/management_app_wrapper.tsx diff --git a/src/plugins/management/public/components/management_sections.tsx b/src/platform/plugins/shared/management/public/components/management_sections.tsx similarity index 100% rename from src/plugins/management/public/components/management_sections.tsx rename to src/platform/plugins/shared/management/public/components/management_sections.tsx diff --git a/src/plugins/management/public/components/management_sidebar_nav/index.ts b/src/platform/plugins/shared/management/public/components/management_sidebar_nav/index.ts similarity index 100% rename from src/plugins/management/public/components/management_sidebar_nav/index.ts rename to src/platform/plugins/shared/management/public/components/management_sidebar_nav/index.ts diff --git a/src/plugins/management/public/components/management_sidebar_nav/management_sidebar_nav.scss b/src/platform/plugins/shared/management/public/components/management_sidebar_nav/management_sidebar_nav.scss similarity index 100% rename from src/plugins/management/public/components/management_sidebar_nav/management_sidebar_nav.scss rename to src/platform/plugins/shared/management/public/components/management_sidebar_nav/management_sidebar_nav.scss diff --git a/src/plugins/management/public/components/management_sidebar_nav/management_sidebar_nav.tsx b/src/platform/plugins/shared/management/public/components/management_sidebar_nav/management_sidebar_nav.tsx similarity index 100% rename from src/plugins/management/public/components/management_sidebar_nav/management_sidebar_nav.tsx rename to src/platform/plugins/shared/management/public/components/management_sidebar_nav/management_sidebar_nav.tsx diff --git a/src/plugins/management/public/index.ts b/src/platform/plugins/shared/management/public/index.ts similarity index 100% rename from src/plugins/management/public/index.ts rename to src/platform/plugins/shared/management/public/index.ts diff --git a/src/plugins/management/public/management_sections_service.test.ts b/src/platform/plugins/shared/management/public/management_sections_service.test.ts similarity index 100% rename from src/plugins/management/public/management_sections_service.test.ts rename to src/platform/plugins/shared/management/public/management_sections_service.test.ts diff --git a/src/plugins/management/public/management_sections_service.ts b/src/platform/plugins/shared/management/public/management_sections_service.ts similarity index 100% rename from src/plugins/management/public/management_sections_service.ts rename to src/platform/plugins/shared/management/public/management_sections_service.ts diff --git a/src/plugins/management/public/mocks/index.ts b/src/platform/plugins/shared/management/public/mocks/index.ts similarity index 100% rename from src/plugins/management/public/mocks/index.ts rename to src/platform/plugins/shared/management/public/mocks/index.ts diff --git a/src/plugins/management/public/plugin.tsx b/src/platform/plugins/shared/management/public/plugin.tsx similarity index 100% rename from src/plugins/management/public/plugin.tsx rename to src/platform/plugins/shared/management/public/plugin.tsx diff --git a/src/plugins/management/public/types.ts b/src/platform/plugins/shared/management/public/types.ts similarity index 100% rename from src/plugins/management/public/types.ts rename to src/platform/plugins/shared/management/public/types.ts diff --git a/src/plugins/management/public/utils/breadcrumbs.ts b/src/platform/plugins/shared/management/public/utils/breadcrumbs.ts similarity index 100% rename from src/plugins/management/public/utils/breadcrumbs.ts rename to src/platform/plugins/shared/management/public/utils/breadcrumbs.ts diff --git a/src/plugins/management/public/utils/index.ts b/src/platform/plugins/shared/management/public/utils/index.ts similarity index 100% rename from src/plugins/management/public/utils/index.ts rename to src/platform/plugins/shared/management/public/utils/index.ts diff --git a/src/plugins/management/public/utils/management_app.ts b/src/platform/plugins/shared/management/public/utils/management_app.ts similarity index 100% rename from src/plugins/management/public/utils/management_app.ts rename to src/platform/plugins/shared/management/public/utils/management_app.ts diff --git a/src/plugins/management/public/utils/management_item.ts b/src/platform/plugins/shared/management/public/utils/management_item.ts similarity index 100% rename from src/plugins/management/public/utils/management_item.ts rename to src/platform/plugins/shared/management/public/utils/management_item.ts diff --git a/src/plugins/management/public/utils/management_section.test.ts b/src/platform/plugins/shared/management/public/utils/management_section.test.ts similarity index 100% rename from src/plugins/management/public/utils/management_section.test.ts rename to src/platform/plugins/shared/management/public/utils/management_section.test.ts diff --git a/src/plugins/management/public/utils/management_section.ts b/src/platform/plugins/shared/management/public/utils/management_section.ts similarity index 100% rename from src/plugins/management/public/utils/management_section.ts rename to src/platform/plugins/shared/management/public/utils/management_section.ts diff --git a/src/plugins/management/server/capabilities_provider.ts b/src/platform/plugins/shared/management/server/capabilities_provider.ts similarity index 100% rename from src/plugins/management/server/capabilities_provider.ts rename to src/platform/plugins/shared/management/server/capabilities_provider.ts diff --git a/src/plugins/management/server/config.ts b/src/platform/plugins/shared/management/server/config.ts similarity index 100% rename from src/plugins/management/server/config.ts rename to src/platform/plugins/shared/management/server/config.ts diff --git a/src/plugins/management/server/index.ts b/src/platform/plugins/shared/management/server/index.ts similarity index 100% rename from src/plugins/management/server/index.ts rename to src/platform/plugins/shared/management/server/index.ts diff --git a/src/plugins/management/server/plugin.ts b/src/platform/plugins/shared/management/server/plugin.ts similarity index 100% rename from src/plugins/management/server/plugin.ts rename to src/platform/plugins/shared/management/server/plugin.ts diff --git a/src/platform/plugins/shared/management/tsconfig.json b/src/platform/plugins/shared/management/tsconfig.json new file mode 100644 index 0000000000000..a32ec64ec1ee8 --- /dev/null +++ b/src/platform/plugins/shared/management/tsconfig.json @@ -0,0 +1,36 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/home-plugin", + "@kbn/kibana-react-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/utility-types", + "@kbn/share-plugin", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/shared-ux-page-kibana-template", + "@kbn/shared-ux-router", + "@kbn/management-cards-navigation", + "@kbn/shared-ux-link-redirect-app", + "@kbn/test-jest-helpers", + "@kbn/config-schema", + "@kbn/serverless", + "@kbn/shared-ux-error-boundary", + "@kbn/deeplinks-management", + "@kbn/react-kibana-context-render", + "@kbn/core-chrome-browser", + ], + "exclude": [ + "target/**/*" + ] +} diff --git a/src/plugins/advanced_settings/README.md b/src/plugins/advanced_settings/README.md index 5403974bfe686..0154d73c46f46 100644 --- a/src/plugins/advanced_settings/README.md +++ b/src/plugins/advanced_settings/README.md @@ -1,5 +1,5 @@ # Advanced Settings -This plugin registers the [management settings application](packages/kbn-management/settings/application/application.tsx) +This plugin registers the [management settings application](src/platform/packages/private/kbn-management/settings/application/application.tsx) allowing users to configure their advanced settings, also known as uiSettings within the code. \ No newline at end of file diff --git a/src/plugins/ai_assistant_management/selection/jest.config.js b/src/plugins/ai_assistant_management/selection/jest.config.js deleted file mode 100644 index 9106de820a29d..0000000000000 --- a/src/plugins/ai_assistant_management/selection/jest.config.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/src/plugins/ai_assistant_management/selection'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/src/plugins/ai_assistant_management/selection', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/src/plugins/ai_assistant_management/selection/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/src/plugins/ai_assistant_management/selection/tsconfig.json b/src/plugins/ai_assistant_management/selection/tsconfig.json deleted file mode 100644 index 6bd8efe0e80b8..0000000000000 --- a/src/plugins/ai_assistant_management/selection/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": ["common/**/*", "public/**/*", "server/**/*"], - "kbn_references": [ - "@kbn/core", - "@kbn/home-plugin", - "@kbn/kibana-react-plugin", - "@kbn/management-plugin", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/core-chrome-browser", - "@kbn/typed-react-router-config", - "@kbn/serverless", - "@kbn/config-schema", - "@kbn/core-plugins-server", - "@kbn/features-plugin", - "@kbn/config", - "@kbn/doc-links" - ], - "exclude": ["target/**/*"] -} diff --git a/src/plugins/chart_expressions/expression_metric/common/expression_functions/metric_vis_function.ts b/src/plugins/chart_expressions/expression_metric/common/expression_functions/metric_vis_function.ts index 5e4bd45c03f5d..0a00a0cbf73d0 100644 --- a/src/plugins/chart_expressions/expression_metric/common/expression_functions/metric_vis_function.ts +++ b/src/plugins/chart_expressions/expression_metric/common/expression_functions/metric_vis_function.ts @@ -212,7 +212,7 @@ export const metricVisFunction = (): MetricVisExpressionFunctionDefinition => ({ secondaryPrefix: args.secondaryPrefix, color: args.color, icon: args.icon, - palette: args.palette?.params, + palette: args.palette, progressDirection: args.progressDirection, titlesTextAlign: args.titlesTextAlign, valuesTextAlign: args.valuesTextAlign, diff --git a/src/plugins/chart_expressions/expression_metric/common/types/expression_renderers.ts b/src/plugins/chart_expressions/expression_metric/common/types/expression_renderers.ts index 2eae93f88c020..f07a8297540ed 100644 --- a/src/plugins/chart_expressions/expression_metric/common/types/expression_renderers.ts +++ b/src/plugins/chart_expressions/expression_metric/common/types/expression_renderers.ts @@ -10,6 +10,7 @@ import { ExpressionValueVisDimension } from '@kbn/visualizations-plugin/common'; import { CustomPaletteState } from '@kbn/charts-plugin/common'; import { LayoutDirection, MetricStyle } from '@elastic/charts'; +import { PaletteOutput } from '@kbn/coloring'; import { TrendlineResult } from './expression_functions'; export const visType = 'metric'; @@ -26,7 +27,7 @@ export interface MetricVisParam { secondaryPrefix?: string; color?: string; icon?: string; - palette?: CustomPaletteState; + palette?: PaletteOutput<CustomPaletteState>; progressDirection?: LayoutDirection; titlesTextAlign: MetricStyle['titlesTextAlign']; valuesTextAlign: MetricStyle['valuesTextAlign']; diff --git a/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.test.tsx b/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.test.tsx index 38d8e4d695c8d..db0a85f1f9f3a 100644 --- a/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.test.tsx +++ b/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.test.tsx @@ -27,6 +27,7 @@ import { CustomPaletteState } from '@kbn/charts-plugin/common/expressions/palett import { DimensionsVisParam, MetricVisParam } from '../../common'; import { euiThemeVars } from '@kbn/ui-theme'; import { DEFAULT_TRENDLINE_NAME } from '../../common/constants'; +import { PaletteOutput } from '@kbn/coloring'; import { faker } from '@faker-js/faker'; const mockDeserialize = jest.fn(({ id }: { id: string }) => { @@ -1160,12 +1161,16 @@ describe('MetricVisComponent', function () { // should be overridden color: 'static-color', palette: { - colors: [], - gradient: true, - stops: [], - range: 'number', - rangeMin: 2, - rangeMax: 10, + type: 'palette', + name: 'default', + params: { + colors: [], + gradient: true, + stops: [], + range: 'number', + rangeMin: 2, + rangeMax: 10, + }, }, }, }} @@ -1200,7 +1205,7 @@ describe('MetricVisComponent', function () { describe('percent-based', () => { const renderWithPalette = ( - palette: CustomPaletteState, + palette: PaletteOutput<CustomPaletteState>, dimensions: MetricVisComponentProps['config']['dimensions'] ) => shallow( @@ -1238,13 +1243,17 @@ describe('MetricVisComponent', function () { renderWithPalette( { - range: 'percent', - // the rest of these params don't matter - colors: [], - gradient: false, - stops: [], - rangeMin: 2, - rangeMax: 10, + type: 'palette', + name: 'default', + params: { + range: 'percent', + // the rest of these params don't matter + colors: [], + gradient: false, + stops: [], + rangeMin: 2, + rangeMax: 10, + }, }, dimensions as DimensionsVisParam ); diff --git a/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.tsx b/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.tsx index 4a75f5cdf7b00..00fe4ac948f05 100644 --- a/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.tsx +++ b/src/plugins/chart_expressions/expression_metric/public/components/metric_vis.tsx @@ -36,7 +36,7 @@ import { FieldFormatConvertFunction, SerializedFieldFormat, } from '@kbn/field-formats-plugin/common'; -import { CUSTOM_PALETTE } from '@kbn/coloring'; +import { CUSTOM_PALETTE, PaletteOutput } from '@kbn/coloring'; import { css } from '@emotion/react'; import { euiThemeVars } from '@kbn/ui-theme'; import { useResizeObserver, useEuiScrollBar, EuiIcon } from '@elastic/eui'; @@ -100,14 +100,14 @@ const getMetricFormatter = ( const getColor = ( value: number, - paletteParams: CustomPaletteState, + palette: PaletteOutput<CustomPaletteState>, accessors: { metric: string; max?: string; breakdownBy?: string }, data: Datatable, rowNumber: number ) => { const { min, max } = getDataBoundsForPalette(accessors, data, rowNumber); - return getPaletteService().get(CUSTOM_PALETTE)?.getColorForValue?.(value, paletteParams, { + return getPaletteService().get(CUSTOM_PALETTE)?.getColorForValue?.(value, palette.params, { min, max, }); @@ -236,7 +236,7 @@ export const MetricVis = ({ icon: config.metric?.icon ? getIcon(config.metric?.icon) : undefined, extra: renderSecondaryMetric(data.columns, row, config), color: - config.metric.palette && value != null + config.metric.palette?.params && value != null ? getColor( value, config.metric.palette, diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx b/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx index 816a10509b425..549742b7e3401 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx +++ b/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx @@ -41,6 +41,7 @@ import { } from '@kbn/expressions-plugin/public'; import type { FieldFormat } from '@kbn/field-formats-plugin/common'; import { getOverridesFor } from '@kbn/chart-expressions-common'; +import { useKbnPalettes } from '@kbn/palettes'; import { useAppFixedViewport } from '@kbn/core-rendering-browser'; import { consolidateMetricColumns } from '../../common/utils'; import { DEFAULT_PERCENT_DECIMALS } from '../../common/constants'; @@ -117,6 +118,7 @@ const PartitionVisComponent = (props: PartitionVisComponentProps) => { } = props; const visParams = useMemo(() => filterOutConfig(visType, preVisParams), [preVisParams, visType]); const chartBaseTheme = props.chartsThemeService.useChartsBaseTheme(); + const palettes = useKbnPalettes(); const { table: visData, @@ -312,6 +314,7 @@ const PartitionVisComponent = (props: PartitionVisComponentProps) => { { ...props.uiState?.get('vis.colors', {}), ...props.visParams.labels.colorOverrides }, visData.rows, props.palettesRegistry, + palettes, formatters, services.fieldFormats, syncColors, @@ -325,6 +328,7 @@ const PartitionVisComponent = (props: PartitionVisComponentProps) => { props.uiState, props.visParams.labels.colorOverrides, props.palettesRegistry, + palettes, formatters, services.fieldFormats, syncColors, diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/utils/colors/color_mapping_accessors.ts b/src/plugins/chart_expressions/expression_partition_vis/public/utils/colors/color_mapping_accessors.ts index dcfcccaa3b53e..8368e98b83715 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/utils/colors/color_mapping_accessors.ts +++ b/src/plugins/chart_expressions/expression_partition_vis/public/utils/colors/color_mapping_accessors.ts @@ -8,7 +8,7 @@ */ import { NodeColorAccessor, PATH_KEY } from '@elastic/charts'; -import { lightenColor } from '@kbn/charts-plugin/public'; +import { decreaseOpacity } from '@kbn/charts-plugin/public'; import { MultiFieldKey } from '@kbn/data-plugin/common'; import { getColorFactory } from '@kbn/coloring'; import { isMultiFieldKey } from '@kbn/data-plugin/common'; @@ -34,8 +34,8 @@ const getPieFillColor = // first two are: small multiple and pie whole center. const category = getCategoryKeys(path[2].value); const color = getColorFn(category); - // increase the lightness of the color on each layer. - return lightenColor(color, layerIndex + 1, numOfLayers); + // progressively decrease opacity of base color on each layer. + return decreaseOpacity(color, layerIndex + 1, numOfLayers); }; /** diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.ts b/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.ts index b6de7fc728ede..6bd8d188f78c5 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.ts +++ b/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.ts @@ -75,7 +75,7 @@ const getDistinctColor = ( isSplitChart: boolean, overwriteColors: { [key: string]: string } = {}, visParams: PartitionVisParams, - palettes: PaletteRegistry | null, + paletteService: PaletteRegistry | null, syncColors: boolean, { parentSeries, allSeries }: DistinctSeries, formattedCategoricalKey: string @@ -93,7 +93,7 @@ const getDistinctColor = ( const index = allSeries.findIndex((d) => isEqual(d, categoricalKey)); const isSplitParentLayer = isSplitChart && parentSeries.includes(categoricalKey); - return palettes?.get(visParams.palette.name).getCategoricalColor( + return paletteService?.get(visParams.palette.name).getCategoricalColor( [ { name: categoricalKey, @@ -207,7 +207,7 @@ export const getColor = ( distinctSeries: DistinctSeries, { columnsLength, rowsLength }: { columnsLength: number; rowsLength: number }, visParams: PartitionVisParams, - palettes: PaletteRegistry | null, + paletteService: PaletteRegistry | null, byDataPalette: ReturnType<typeof byDataColorPaletteMap> | undefined, syncColors: boolean, isDarkMode: boolean, @@ -230,7 +230,7 @@ export const getColor = ( isSplitChart, overwriteColors, visParams, - palettes, + paletteService, syncColors, distinctSeries, name @@ -271,7 +271,7 @@ export const getColor = ( } } - const outputColor = palettes?.get(visParams.palette.name).getCategoricalColor( + const outputColor = paletteService?.get(visParams.palette.name).getCategoricalColor( seriesLayers, { behindText: visParams.labels.show || isTreemapOrMosaicChart(chartType), diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts b/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts index d6c6e7d315924..eb211ad481899 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts +++ b/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts @@ -13,8 +13,11 @@ import { BucketColumns, ChartTypes } from '../../../common/types'; import { createMockPieParams, createMockVisData } from '../../mocks'; import { getPaletteRegistry } from '../../__mocks__/palettes'; import { getLayers } from './get_layers'; +import { getKbnPalettes } from '@kbn/palettes'; describe('getLayers', () => { + const palettes = getKbnPalettes({ name: 'amsterdam', darkMode: false }); + it('preserves slice order for multi-metric layer', () => { const visData = createMockVisData(); const columns: BucketColumns[] = [ @@ -43,6 +46,7 @@ describe('getLayers', () => { {}, [], getPaletteRegistry(), + palettes, {}, fieldFormatsMock, false, @@ -153,6 +157,7 @@ describe('getLayers', () => { {}, [], getPaletteRegistry(), + palettes, {}, fieldFormatsMock, false, diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.ts b/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.ts index c83353d4d8396..4346dd6ae4928 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.ts +++ b/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.ts @@ -8,19 +8,14 @@ */ import { Datum, PartitionLayer } from '@elastic/charts'; -import { - PaletteRegistry, - getColorFactory, - getPalette, - AVAILABLE_PALETTES, - NeutralPalette, -} from '@kbn/coloring'; +import { PaletteRegistry, getColorFactory } from '@kbn/coloring'; import { i18n } from '@kbn/i18n'; import { FieldFormat } from '@kbn/field-formats-plugin/common'; import type { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; import type { Datatable, DatatableRow } from '@kbn/expressions-plugin/public'; import { getColorCategories } from '@kbn/chart-expressions-common'; +import { KbnPalettes } from '@kbn/palettes'; import { getDistinctSeries } from '..'; import { BucketColumns, ChartTypes, PartitionVisParams } from '../../../common/types'; import { sortPredicateByType, sortPredicateSaveSourceOrder } from './sort_predicate'; @@ -41,7 +36,8 @@ export const getLayers = ( visData: Datatable, overwriteColors: { [key: string]: string } = {}, rows: DatatableRow[], - palettes: PaletteRegistry | null, + paletteService: PaletteRegistry | null, + palettes: KbnPalettes, formatters: Record<string, FieldFormat | undefined>, formatter: FieldFormatsStart, syncColors: boolean, @@ -59,11 +55,11 @@ export const getLayers = ( const isSplitChart = Boolean(visParams.dimensions.splitColumn || visParams.dimensions.splitRow); let byDataPalette: ReturnType<typeof byDataColorPaletteMap>; - if (!syncColors && columns[1]?.id && palettes && visParams.palette) { + if (!syncColors && columns[1]?.id && paletteService && visParams.palette) { byDataPalette = byDataColorPaletteMap( rows, columns[1], - palettes?.get(visParams.palette.name), + paletteService?.get(visParams.palette.name), visParams.palette, formatters, formatter @@ -79,8 +75,9 @@ export const getLayers = ( chartType, columns, rows, - isDarkMode, - visParams + palettes, + visParams, + isDarkMode ); return columns.map((col, layerIndex) => { @@ -110,7 +107,7 @@ export const getLayers = ( distinctSeries, { columnsLength: columns.length, rowsLength: rows.length }, visParams, - palettes, + paletteService, byDataPalette, syncColors, isDarkMode, @@ -131,8 +128,9 @@ function getColorFromMappingFactory( chartType: ChartTypes, columns: Array<Partial<BucketColumns>>, rows: DatatableRow[], - isDarkMode: boolean, - visParams: PartitionVisParams + palettes: KbnPalettes, + visParams: PartitionVisParams, + isDarkMode: boolean ): undefined | ((category: string | string[]) => string) { const { colorMapping, dimensions } = visParams; @@ -151,19 +149,14 @@ function getColorFromMappingFactory( } // the mosaic configures the main categories in the second column, instead of the first // as it happens in all the other partition types. - // Independentely from the bucket aggregation used, the categories will always be casted + // Independently from the bucket aggregation used, the categories will always be casted // as string to make it nicely working with a text input field, avoiding a field const categories = chartType === ChartTypes.MOSAIC && columns.length === 2 ? getColorCategories(rows, columns[1]?.id) : getColorCategories(rows, columns[0]?.id); - return getColorFactory( - JSON.parse(colorMapping), - getPalette(AVAILABLE_PALETTES, NeutralPalette), - isDarkMode, - { - type: 'categories', - categories, - } - ); + return getColorFactory(JSON.parse(colorMapping), palettes, isDarkMode, { + type: 'categories', + categories, + }); } diff --git a/src/plugins/chart_expressions/expression_partition_vis/tsconfig.json b/src/plugins/chart_expressions/expression_partition_vis/tsconfig.json index 1d8c4c4098728..ec1ac8ee94edc 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/tsconfig.json +++ b/src/plugins/chart_expressions/expression_partition_vis/tsconfig.json @@ -31,6 +31,7 @@ "@kbn/cell-actions", "@kbn/react-kibana-context-render", "@kbn/core-rendering-browser", + "@kbn/palettes", ], "exclude": [ "target/**/*", diff --git a/src/plugins/chart_expressions/expression_tagcloud/public/components/tagcloud_component.tsx b/src/plugins/chart_expressions/expression_tagcloud/public/components/tagcloud_component.tsx index 12a7991a68adf..46064ebd6b6e2 100644 --- a/src/plugins/chart_expressions/expression_tagcloud/public/components/tagcloud_component.tsx +++ b/src/plugins/chart_expressions/expression_tagcloud/public/components/tagcloud_component.tsx @@ -23,19 +23,13 @@ import { WordCloudElementEvent, } from '@elastic/charts'; import { EmptyPlaceholder } from '@kbn/charts-plugin/public'; -import { - PaletteRegistry, - PaletteOutput, - getColorFactory, - getPalette, - AVAILABLE_PALETTES, - NeutralPalette, -} from '@kbn/coloring'; +import { PaletteRegistry, PaletteOutput, getColorFactory } from '@kbn/coloring'; import { IInterpreterRenderHandlers, DatatableRow } from '@kbn/expressions-plugin/public'; import { getColorCategories, getOverridesFor } from '@kbn/chart-expressions-common'; import type { AllowedSettingsOverrides, AllowedChartOverrides } from '@kbn/charts-plugin/common'; import { getColumnByAccessor, getFormatByAccessor } from '@kbn/visualizations-plugin/common/utils'; import { isMultiFieldKey } from '@kbn/data-plugin/common'; +import { KbnPalettes, useKbnPalettes } from '@kbn/palettes'; import { getFormatService } from '../format_service'; import { TagcloudRendererConfig } from '../../common/types'; import { ScaleOptions, Orientation } from '../../common/constants'; @@ -56,13 +50,13 @@ const calculateWeight = (value: number, x1: number, y1: number, x2: number, y2: ((value - x1) * (y2 - x2)) / (y1 - x1) + x2; const getColor = ( - palettes: PaletteRegistry, + paletteService: PaletteRegistry, activePalette: PaletteOutput, text: string, values: string[], syncColors: boolean ) => { - return palettes?.get(activePalette?.name)?.getCategoricalColor( + return paletteService?.get(activePalette?.name)?.getCategoricalColor( [ { name: text, @@ -106,6 +100,7 @@ export const TagCloudChart = ({ isDarkMode, }: TagCloudChartProps) => { const [warning, setWarning] = useState(false); + const palettes = useKbnPalettes(); const { bucket, metric, scale, palette, showLabel, orientation, colorMapping } = visParams; const bucketFormatter = useMemo(() => { @@ -128,6 +123,7 @@ export const TagCloudChart = ({ const colorFromMappingFn = getColorFromMappingFactory( tagColumn, visData.rows, + palettes, isDarkMode, colorMapping ); @@ -149,15 +145,16 @@ export const TagCloudChart = ({ }); }, [ bucket, - bucketFormatter, - metric, - palette, - palettesRegistry, - syncColors, visData.columns, visData.rows, - colorMapping, + metric, + palettes, isDarkMode, + colorMapping, + bucketFormatter, + palettesRegistry, + palette, + syncColors, ]); useEffect(() => { @@ -320,6 +317,7 @@ export { TagCloudChart as default }; function getColorFromMappingFactory( tagColumn: string | undefined, rows: DatatableRow[], + palettes: KbnPalettes, isDarkMode: boolean, colorMapping?: string ): undefined | ((category: string | string[]) => string) { @@ -327,13 +325,8 @@ function getColorFromMappingFactory( // return undefined, we will use the legacy color mapping instead return undefined; } - return getColorFactory( - JSON.parse(colorMapping), - getPalette(AVAILABLE_PALETTES, NeutralPalette), - isDarkMode, - { - type: 'categories', - categories: getColorCategories(rows, tagColumn), - } - ); + return getColorFactory(JSON.parse(colorMapping), palettes, isDarkMode, { + type: 'categories', + categories: getColorCategories(rows, tagColumn), + }); } diff --git a/src/plugins/chart_expressions/expression_tagcloud/tsconfig.json b/src/plugins/chart_expressions/expression_tagcloud/tsconfig.json index 40caf4e3b00f0..485c561bda281 100644 --- a/src/plugins/chart_expressions/expression_tagcloud/tsconfig.json +++ b/src/plugins/chart_expressions/expression_tagcloud/tsconfig.json @@ -28,6 +28,7 @@ "@kbn/chart-icons", "@kbn/data-plugin", "@kbn/react-kibana-context-render", + "@kbn/palettes", ], "exclude": [ "target/**/*", diff --git a/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap b/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap index 5cfd34c6c8b5a..c01267bf3acd7 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap +++ b/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap @@ -1751,6 +1751,13 @@ exports[`XYChart component it renders area 1`] = ` "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -3306,6 +3313,13 @@ exports[`XYChart component it renders bar 1`] = ` "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -4861,6 +4875,13 @@ exports[`XYChart component it renders horizontal bar 1`] = ` "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -6416,6 +6437,13 @@ exports[`XYChart component it renders line 1`] = ` "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -7971,6 +7999,13 @@ exports[`XYChart component it renders stacked area 1`] = ` "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -9526,6 +9561,13 @@ exports[`XYChart component it renders stacked bar 1`] = ` "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -11081,6 +11123,13 @@ exports[`XYChart component it renders stacked horizontal bar 1`] = ` "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -12862,6 +12911,13 @@ exports[`XYChart component split chart should render split chart if both, splitR "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -14650,6 +14706,13 @@ exports[`XYChart component split chart should render split chart if splitColumnA "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" @@ -16436,6 +16499,13 @@ exports[`XYChart component split chart should render split chart if splitRowAcce "getAll": [MockFunction], } } + palettes={ + KbnPalettes { + "get": [Function], + "getAll": [Function], + "query": [Function], + } + } shouldShowValueLabels={true} syncColors={false} timeZone="UTC" diff --git a/src/plugins/chart_expressions/expression_xy/public/components/data_layers.tsx b/src/plugins/chart_expressions/expression_xy/public/components/data_layers.tsx index 3335f29029904..df51a0869ecea 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/data_layers.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/components/data_layers.tsx @@ -20,6 +20,7 @@ import { PaletteRegistry } from '@kbn/coloring'; import { FormatFactory } from '@kbn/field-formats-plugin/common'; import { getAccessorByDimension } from '@kbn/visualizations-plugin/common/utils'; import { PersistedState } from '@kbn/visualizations-plugin/public'; +import { KbnPalettes } from '@kbn/palettes'; import { CommonXYDataLayerConfig, EndValue, @@ -49,6 +50,7 @@ interface Props { fittingFunction?: FittingFunction; endValue?: EndValue | undefined; paletteService: PaletteRegistry; + palettes: KbnPalettes; formattedDatatables: DatatablesWithFormatInfo; syncColors: boolean; timeZone: string; @@ -75,6 +77,7 @@ export const DataLayers: FC<Props> = ({ minBarHeight, formatFactory, paletteService, + palettes, fittingFunction, emphasizeFitting, yAxesConfiguration, @@ -163,6 +166,7 @@ export const DataLayers: FC<Props> = ({ formatFactory, columnToLabelMap, paletteService, + palettes, formattedDatatableInfo, syncColors, yAxis, diff --git a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx index 349af46eb101a..3ebc9efcd6c0a 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx @@ -38,6 +38,7 @@ import { IconType } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { PaletteRegistry } from '@kbn/coloring'; import { RenderMode } from '@kbn/expressions-plugin/common'; +import { useKbnPalettes } from '@kbn/palettes'; import { ESQL_TABLE_TYPE } from '@kbn/data-plugin/common'; import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { EmptyPlaceholder, LegendToggle } from '@kbn/charts-plugin/public'; @@ -233,6 +234,7 @@ export function XYChart({ const chartRef = useRef<Chart>(null); const chartBaseTheme = chartsThemeService.useChartsBaseTheme(); const darkMode = chartsThemeService.useDarkMode(); + const palettes = useKbnPalettes(); const appFixedViewport = useAppFixedViewport(); const filteredLayers = getFilteredLayers(layers); const layersById = filteredLayers.reduce<Record<string, CommonXYLayerConfig>>( @@ -989,6 +991,7 @@ export function XYChart({ minBarHeight={args.minBarHeight} formatFactory={formatFactory} paletteService={paletteService} + palettes={palettes} fittingFunction={fittingFunction} emphasizeFitting={emphasizeFitting} yAxesConfiguration={yAxesConfiguration} diff --git a/src/plugins/chart_expressions/expression_xy/public/expression_renderers/index.ts b/src/plugins/chart_expressions/expression_xy/public/expression_renderers/index.ts index 650b8fba2a6d9..71b8bb35ac222 100644 --- a/src/plugins/chart_expressions/expression_xy/public/expression_renderers/index.ts +++ b/src/plugins/chart_expressions/expression_xy/public/expression_renderers/index.ts @@ -8,4 +8,4 @@ */ export { getXyChartRenderer } from './xy_chart_renderer'; -export type { GetStartDepsFn } from './xy_chart_renderer'; +export type { GetStartDeps } from './xy_chart_renderer'; diff --git a/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx b/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx index 57387a46388af..cb7a75fcdf691 100644 --- a/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx @@ -32,6 +32,7 @@ import { extractVisualizationType, } from '@kbn/chart-expressions-common'; +import { ThemeServiceSetup } from '@kbn/core/public'; import type { getDataLayers } from '../helpers'; import { LayerTypes, SeriesTypes } from '../../common/constants'; import type { CommonXYDataLayerConfig, XYChartProps } from '../../common'; @@ -43,10 +44,11 @@ import type { StartServices, } from '../types'; -export type GetStartDepsFn = () => Promise<{ +export interface GetStartDeps { data: DataPublicPluginStart; formatFactory: FormatFactory; theme: ChartsPluginStart['theme']; + kibanaTheme: ThemeServiceSetup; activeCursor: ChartsPluginStart['activeCursor']; paletteService: PaletteRegistry; timeZone: string; @@ -55,10 +57,10 @@ export type GetStartDepsFn = () => Promise<{ usageCollection?: UsageCollectionStart; timeFormat: string; startServices: StartServices; -}>; +} interface XyChartRendererDeps { - getStartDeps: GetStartDepsFn; + getStartDeps: () => Promise<GetStartDeps>; } export const extractCounterEvents = ( diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/color/color_mapping_accessor.ts b/src/plugins/chart_expressions/expression_xy/public/helpers/color/color_mapping_accessor.ts index 6923a9a2f5409..93b498f5b57e1 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/color/color_mapping_accessor.ts +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/color/color_mapping_accessor.ts @@ -10,13 +10,14 @@ import { SeriesColorAccessorFn } from '@elastic/charts'; import { getColorFactory, type ColorMapping, type ColorMappingInputData } from '@kbn/coloring'; import { MULTI_FIELD_KEY_SEPARATOR } from '@kbn/data-plugin/common'; +import { KbnPalettes } from '@kbn/palettes'; /** * Return a color accessor function for XY charts depending on the split accessors received. */ export function getColorSeriesAccessorFn( config: ColorMapping.Config, - getPaletteFn: (paletteId: string) => ColorMapping.CategoricalPalette, + palettes: KbnPalettes, isDarkMode: boolean, mappingData: ColorMappingInputData, fieldId: string, @@ -28,7 +29,7 @@ export function getColorSeriesAccessorFn( [...specialTokens.entries()].map((d) => [d[1], d[0]]) ); - const getColor = getColorFactory(config, getPaletteFn, isDarkMode, mappingData); + const getColor = getColorFactory(config, palettes, isDarkMode, mappingData); return ({ splitAccessors }) => { const splitValue = splitAccessors.get(fieldId); diff --git a/src/plugins/chart_expressions/expression_xy/public/helpers/data_layers.tsx b/src/plugins/chart_expressions/expression_xy/public/helpers/data_layers.tsx index 942909880f301..11cd6b05fc16b 100644 --- a/src/plugins/chart_expressions/expression_xy/public/helpers/data_layers.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/helpers/data_layers.tsx @@ -25,13 +25,9 @@ import { Datatable } from '@kbn/expressions-plugin/common'; import { getAccessorByDimension } from '@kbn/visualizations-plugin/common/utils'; import type { ExpressionValueVisDimension } from '@kbn/visualizations-plugin/common/expression_functions'; import { PaletteRegistry, SeriesLayer } from '@kbn/coloring'; -import { - getPalette, - AVAILABLE_PALETTES, - NeutralPalette, - SPECIAL_TOKENS_STRING_CONVERSION, -} from '@kbn/coloring'; +import { SPECIAL_TOKENS_STRING_CONVERSION } from '@kbn/coloring'; import { getColorCategories } from '@kbn/chart-expressions-common'; +import { KbnPalettes } from '@kbn/palettes'; import { isDataLayer } from '../../common/utils/layer_types_guards'; import { CommonXYDataLayerConfig, CommonXYLayerConfig, XScaleType } from '../../common'; import { AxisModes, SeriesTypes } from '../../common/constants'; @@ -54,6 +50,7 @@ type GetSeriesPropsFn = (config: { colorAssignments: ColorAssignments; columnToLabelMap: Record<string, string>; paletteService: PaletteRegistry; + palettes: KbnPalettes; yAxis?: GroupsConfiguration[number]; xAxis?: GroupsConfiguration[number]; syncColors: boolean; @@ -392,6 +389,7 @@ export const getSeriesProps: GetSeriesPropsFn = ({ formatFactory, columnToLabelMap, paletteService, + palettes, syncColors, yAxis, xAxis, @@ -490,7 +488,7 @@ export const getSeriesProps: GetSeriesPropsFn = ({ layer.colorMapping && splitColumnIds.length > 0 ? getColorSeriesAccessorFn( JSON.parse(layer.colorMapping), // the color mapping is at this point just a stringified JSON - getPalette(AVAILABLE_PALETTES, NeutralPalette), + palettes, isDarkMode, { type: 'categories', diff --git a/src/plugins/chart_expressions/expression_xy/public/plugin.ts b/src/plugins/chart_expressions/expression_xy/public/plugin.ts index 04ba0ac2b3bc2..8415e2bc7d04c 100755 --- a/src/plugins/chart_expressions/expression_xy/public/plugin.ts +++ b/src/plugins/chart_expressions/expression_xy/public/plugin.ts @@ -31,7 +31,7 @@ import { extendedAnnotationLayerFunction, referenceLineDecorationConfigFunction, } from '../common/expression_functions'; -import { GetStartDepsFn, getXyChartRenderer } from './expression_renderers'; +import { GetStartDeps, getXyChartRenderer } from './expression_renderers'; import { eventAnnotationsResult } from '../common/expression_functions/event_annotations_result'; export interface XYPluginStartDependencies { @@ -71,7 +71,7 @@ export class ExpressionXyPlugin { expressions.registerFunction(xyVisFunction); expressions.registerFunction(layeredXyVisFunction); - const getStartDeps: GetStartDepsFn = async () => { + const getStartDeps = async () => { const [coreStart, deps] = await core.getStartServices(); const { data, @@ -100,7 +100,7 @@ export class ExpressionXyPlugin { timeZone: getTimeZone(core.uiSettings), timeFormat: core.uiSettings.get('dateFormat'), startServices: coreStart, - }; + } satisfies GetStartDeps; }; expressions.registerRenderer(getXyChartRenderer({ getStartDeps })); diff --git a/src/plugins/chart_expressions/expression_xy/public/types.ts b/src/plugins/chart_expressions/expression_xy/public/types.ts index ed287da3801ec..0187df4564050 100755 --- a/src/plugins/chart_expressions/expression_xy/public/types.ts +++ b/src/plugins/chart_expressions/expression_xy/public/types.ts @@ -32,7 +32,7 @@ export interface StartDeps { expression: ExpressionsServiceStart; } -export type StartServices = Pick<CoreStart, 'analytics' | 'i18n' | 'theme'>; +export type StartServices = Pick<CoreStart, 'analytics' | 'i18n' | 'theme' | 'userProfile'>; export type ExpressionXyPluginSetup = void; export type ExpressionXyPluginStart = void; diff --git a/src/plugins/chart_expressions/expression_xy/tsconfig.json b/src/plugins/chart_expressions/expression_xy/tsconfig.json index cd8bd4db90b89..5ffa2904e04b4 100644 --- a/src/plugins/chart_expressions/expression_xy/tsconfig.json +++ b/src/plugins/chart_expressions/expression_xy/tsconfig.json @@ -36,6 +36,7 @@ "@kbn/cell-actions", "@kbn/react-kibana-context-render", "@kbn/core-rendering-browser", + "@kbn/palettes", ], "exclude": [ "target/**/*", diff --git a/src/plugins/charts/public/index.ts b/src/plugins/charts/public/index.ts index 6b70018ac5901..711f38b7d92f7 100644 --- a/src/plugins/charts/public/index.ts +++ b/src/plugins/charts/public/index.ts @@ -22,7 +22,8 @@ export const plugin = () => new ChartsPlugin(); export type { ChartsPluginSetup, ChartsPluginStart } from './plugin'; export * from './static'; -export { lightenColor } from './services/palettes/lighten_color'; +export * from './services/palettes/lighten_color'; +export * from './services/palettes/decrease_opacity'; export { useActiveCursor } from './services/active_cursor'; export interface ClickTriggerEvent { diff --git a/src/plugins/charts/public/mocks.ts b/src/plugins/charts/public/mocks.ts index aa7518d1df9f1..db6bd2bab4212 100644 --- a/src/plugins/charts/public/mocks.ts +++ b/src/plugins/charts/public/mocks.ts @@ -7,6 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import { createCoreSetupMock } from '@kbn/core-lifecycle-browser-mocks/src/core_setup.mock'; import { ChartsPlugin } from './plugin'; import { themeServiceMock } from './services/theme/mock'; import { activeCursorMock } from './services/active_cursor/mock'; @@ -19,13 +20,13 @@ export type Start = jest.Mocked<ReturnType<ChartsPlugin['start']>>; const createSetupContract = (): Setup => ({ theme: themeServiceMock, - palettes: paletteServiceMock.setup(), + palettes: paletteServiceMock.setup(createCoreSetupMock().theme.getTheme()), }); const createStartContract = (): Start => ({ theme: themeServiceMock, activeCursor: activeCursorMock, - palettes: paletteServiceMock.setup(), + palettes: paletteServiceMock.setup(createCoreSetupMock().theme.getTheme()), }); export const chartPluginMock = { diff --git a/src/plugins/charts/public/plugin.ts b/src/plugins/charts/public/plugin.ts index 4d058c3beea32..06a7236545aba 100644 --- a/src/plugins/charts/public/plugin.ts +++ b/src/plugins/charts/public/plugin.ts @@ -42,8 +42,8 @@ export class ChartsPlugin implements Plugin<ChartsPluginSetup, ChartsPluginStart dependencies.expressions.registerFunction(palette); dependencies.expressions.registerFunction(systemPalette); this.themeService.init(core.theme); - this.palettes = this.paletteService.setup(); - + // TODO: make this reactive to changes in $theme + this.palettes = this.paletteService.setup(core.theme.getTheme()); this.activeCursor.setup(); return { diff --git a/src/plugins/charts/public/services/palettes/decrease_opacity.test.ts b/src/plugins/charts/public/services/palettes/decrease_opacity.test.ts new file mode 100644 index 0000000000000..845021e768755 --- /dev/null +++ b/src/plugins/charts/public/services/palettes/decrease_opacity.test.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import chroma from 'chroma-js'; +import { decreaseOpacity } from './decrease_opacity'; + +describe('decrease_opacity', () => { + it('should keep existing color if there is a single color step', () => { + expect(decreaseOpacity('#FF0000', 1, 1)).toEqual('#FF0000'); + }); + + it('should keep existing color for the first step', () => { + expect(decreaseOpacity('#FF0000', 1, 10)).toEqual('#FF0000'); + }); + + it('should decrease color opacity', () => { + const baseColor = '#FF0000'; + + const color1 = chroma(decreaseOpacity(baseColor, 2, 4)); + const color2 = chroma(decreaseOpacity(baseColor, 3, 4)); + + expect(chroma(baseColor).luminance()).toBeLessThan(color1.luminance()); + expect(color1.luminance()).toBeLessThan(color2.luminance()); + }); + + it('should not exceed top luminance', () => { + const result = decreaseOpacity('#000', 12, 10); + + expect(chroma(result).luminance()).toBeLessThan(0.8); + }); +}); diff --git a/src/plugins/charts/public/services/palettes/decrease_opacity.ts b/src/plugins/charts/public/services/palettes/decrease_opacity.ts new file mode 100644 index 0000000000000..bd49ba66b1707 --- /dev/null +++ b/src/plugins/charts/public/services/palettes/decrease_opacity.ts @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import chroma from 'chroma-js'; +import { euiThemeVars } from '@kbn/ui-theme'; + +const MIN_OPACITY = 0.2; + +/** + * Reduces color opacity, by mixing color with background color. + * + * This is used when the resulting color needs to be opaque (i.e. alpha of 1). + */ +export function decreaseOpacity(baseColor: string, step: number, totalSteps: number) { + if (totalSteps === 1) { + return baseColor; + } + + const backgroundColor = euiThemeVars.euiColorEmptyShade; + const ratio = Math.min(0.2 * (step - 1), 1 - MIN_OPACITY); + const color = chroma(baseColor).mix(backgroundColor, ratio, 'lch'); + + return color.hex().toUpperCase(); +} diff --git a/src/plugins/charts/public/services/palettes/lighten_color.ts b/src/plugins/charts/public/services/palettes/lighten_color.ts index 80298f5c8b531..b7c1908375ebd 100644 --- a/src/plugins/charts/public/services/palettes/lighten_color.ts +++ b/src/plugins/charts/public/services/palettes/lighten_color.ts @@ -23,5 +23,6 @@ export function lightenColor(baseColor: string, step: number, totalSteps: number const currentLevelTargetLightness = outputColorLightness + lightnessSpace * ((step - 1) / (totalSteps - 1)); const lightenedColor = hslColor.lightness(currentLevelTargetLightness); + return lightenedColor.hex(); } diff --git a/src/plugins/charts/public/services/palettes/palettes.test.tsx b/src/plugins/charts/public/services/palettes/palettes.test.tsx index a9567b0c12179..a962da6776c4e 100644 --- a/src/plugins/charts/public/services/palettes/palettes.test.tsx +++ b/src/plugins/charts/public/services/palettes/palettes.test.tsx @@ -11,7 +11,7 @@ import { buildPalettes } from './palettes'; import { euiPaletteColorBlind, euiPaletteColorBlindBehindText } from '@elastic/eui'; describe('palettes', () => { - const palettes = buildPalettes(); + const palettes = buildPalettes({ name: 'amsterdam', darkMode: false }); describe('default palette', () => { describe('syncColors: false', () => { diff --git a/src/plugins/charts/public/services/palettes/palettes.tsx b/src/plugins/charts/public/services/palettes/palettes.tsx index fc9d2370694bf..4858bf0547d46 100644 --- a/src/plugins/charts/public/services/palettes/palettes.tsx +++ b/src/plugins/charts/public/services/palettes/palettes.tsx @@ -9,29 +9,19 @@ import chroma from 'chroma-js'; import { i18n } from '@kbn/i18n'; -import { - euiPaletteColorBlind, - euiPaletteCool, - euiPaletteGray, - euiPaletteRed, - euiPaletteGreen, - euiPaletteWarm, - euiPaletteForStatus, - euiPaletteForTemperature, - euiPaletteComplementary, - euiPaletteColorBlindBehindText, -} from '@elastic/eui'; +import { getKbnPalettes, KbnPalette, type IKbnPalette } from '@kbn/palettes'; import type { ChartColorConfiguration, PaletteDefinition, SeriesLayer } from '@kbn/coloring'; import { flatten, zip } from 'lodash'; +import { CoreTheme } from '@kbn/core/public'; import { createColorPalette as createLegacyColorPalette } from '../..'; -import { lightenColor } from './lighten_color'; import { MappedColors } from '../mapped_colors'; import { workoutColorForValue } from './helpers'; +import { decreaseOpacity } from './decrease_opacity'; function buildRoundRobinCategoricalWithMappedColors( - id = 'default', - colors = euiPaletteColorBlind({ rotations: 2 }), - behindTextColors = euiPaletteColorBlindBehindText({ rotations: 2 }) + id: string, + colors: string[], + behindTextColors?: string[] ): Omit<PaletteDefinition, 'title'> { const behindTextColorMap: Record<string, string> = Object.fromEntries( zip(colors, behindTextColors) @@ -50,21 +40,22 @@ function buildRoundRobinCategoricalWithMappedColors( const mappedColor = mappedColors.get(colorKey); outputColor = chartConfiguration.behindText ? behindTextColorMap[mappedColor] : mappedColor; } else { - outputColor = chartConfiguration.behindText - ? behindTextColors[series[0].rankAtDepth % behindTextColors.length] - : colors[series[0].rankAtDepth % colors.length]; + outputColor = + chartConfiguration.behindText && behindTextColors + ? behindTextColors[series[0].rankAtDepth % behindTextColors.length] + : colors[series[0].rankAtDepth % colors.length]; } if (!chartConfiguration.maxDepth || chartConfiguration.maxDepth === 1) { return outputColor; } - return lightenColor(outputColor, series.length, chartConfiguration.maxDepth); + return decreaseOpacity(outputColor, series.length, chartConfiguration.maxDepth); } return { id, getCategoricalColor: getColor, - getCategoricalColors: () => colors.slice(0, 10), + getCategoricalColors: (size: number) => colors.slice(0, size), toExpression: () => ({ type: 'expression', chain: [ @@ -80,29 +71,27 @@ function buildRoundRobinCategoricalWithMappedColors( }; } -function buildGradient( - id: string, - colors: (n: number) => string[] -): Omit<PaletteDefinition, 'title'> { +function buildGradient(id: string, palette: IKbnPalette): PaletteDefinition { function getColor( series: SeriesLayer[], chartConfiguration: ChartColorConfiguration = { behindText: false } ) { const totalSeriesAtDepth = series[0].totalSeriesAtDepth; const rankAtDepth = series[0].rankAtDepth; - const actualColors = colors(totalSeriesAtDepth); + const actualColors = palette.colors(totalSeriesAtDepth); const outputColor = actualColors[rankAtDepth]; if (!chartConfiguration.maxDepth || chartConfiguration.maxDepth === 1) { return outputColor; } - return lightenColor(outputColor, series.length, chartConfiguration.maxDepth); + return decreaseOpacity(outputColor, series.length, chartConfiguration.maxDepth); } return { id, + title: palette.name, getCategoricalColor: getColor, - getCategoricalColors: colors, + getCategoricalColors: palette.colors, canDynamicColoring: true, toExpression: () => ({ type: 'expression', @@ -153,7 +142,7 @@ function buildCustomPalette(): PaletteDefinition { return outputColor; } - return lightenColor(outputColor, series.length, chartConfiguration.maxDepth); + return decreaseOpacity(outputColor, series.length, chartConfiguration.maxDepth); }, internal: true, title: i18n.translate('charts.palettes.customLabel', { defaultMessage: 'Custom' }), @@ -220,50 +209,32 @@ function buildCustomPalette(): PaletteDefinition { } as PaletteDefinition<unknown>; } -export const buildPalettes = (): Record<string, PaletteDefinition> => ({ - default: { - title: i18n.translate('charts.palettes.defaultPaletteLabel', { defaultMessage: 'Default' }), - ...buildRoundRobinCategoricalWithMappedColors(), - }, - status: { - title: i18n.translate('charts.palettes.statusLabel', { defaultMessage: 'Status' }), - ...buildGradient('status', euiPaletteForStatus), - }, - temperature: { - title: i18n.translate('charts.palettes.temperatureLabel', { defaultMessage: 'Temperature' }), - ...buildGradient('temperature', euiPaletteForTemperature), - }, - complementary: { - title: i18n.translate('charts.palettes.complementaryLabel', { - defaultMessage: 'Complementary', - }), - ...buildGradient('complementary', euiPaletteComplementary), - }, - negative: { - title: i18n.translate('charts.palettes.negativeLabel', { defaultMessage: 'Negative' }), - ...buildGradient('negative', euiPaletteRed), - }, - positive: { - title: i18n.translate('charts.palettes.positiveLabel', { defaultMessage: 'Positive' }), - ...buildGradient('positive', euiPaletteGreen), - }, - cool: { - title: i18n.translate('charts.palettes.coolLabel', { defaultMessage: 'Cool' }), - ...buildGradient('cool', euiPaletteCool), - }, - warm: { - title: i18n.translate('charts.palettes.warmLabel', { defaultMessage: 'Warm' }), - ...buildGradient('warm', euiPaletteWarm), - }, - gray: { - title: i18n.translate('charts.palettes.grayLabel', { defaultMessage: 'Gray' }), - ...buildGradient('gray', euiPaletteGray), - }, - kibana_palette: { - title: i18n.translate('charts.palettes.kibanaPaletteLabel', { - defaultMessage: 'Compatibility', - }), - ...buildRoundRobinCategoricalWithMappedColors('kibana_palette', createLegacyColorPalette(20)), - }, - custom: buildCustomPalette() as PaletteDefinition<unknown>, -}); +export const buildPalettes = (theme: CoreTheme): Record<string, PaletteDefinition> => { + const kbnPalettes = getKbnPalettes(theme); + const defaultPalette = kbnPalettes.get(KbnPalette.Default); + return { + default: { + title: defaultPalette.name, + ...buildRoundRobinCategoricalWithMappedColors( + 'default', // needs to match key of palette definition + defaultPalette.colors(), + kbnPalettes.query(KbnPalette.Kibana7BehindText)?.colors() + ), + }, + status: buildGradient('status', kbnPalettes.get('status')), + temperature: buildGradient('temperature', kbnPalettes.get('temperature')), + complementary: buildGradient('complementary', kbnPalettes.get('complementary')), + negative: buildGradient('negative', kbnPalettes.get('red')), + positive: buildGradient('positive', kbnPalettes.get('green')), + cool: buildGradient('cool', kbnPalettes.get('cool')), + warm: buildGradient('warm', kbnPalettes.get('warm')), + gray: buildGradient('gray', kbnPalettes.get('gray')), + kibana_palette: { + title: i18n.translate('charts.palettes.kibanaPaletteLabel', { + defaultMessage: 'Compatibility', + }), + ...buildRoundRobinCategoricalWithMappedColors('kibana_palette', createLegacyColorPalette(20)), + }, + custom: buildCustomPalette(), + }; +}; diff --git a/src/plugins/charts/public/services/palettes/service.ts b/src/plugins/charts/public/services/palettes/service.ts index 30c58172ad429..5e66a5d9e650a 100644 --- a/src/plugins/charts/public/services/palettes/service.ts +++ b/src/plugins/charts/public/services/palettes/service.ts @@ -10,6 +10,7 @@ import type { PaletteRegistry, PaletteDefinition } from '@kbn/coloring'; import { getActivePaletteName } from '@kbn/coloring'; import type { ExpressionsSetup } from '@kbn/expressions-plugin/public'; +import { CoreTheme } from '@kbn/core/public'; import type { ChartsPluginSetup } from '../..'; export interface PaletteSetupPlugins { @@ -21,12 +22,12 @@ export class PaletteService { private palettes: Record<string, PaletteDefinition<unknown>> | undefined = undefined; constructor() {} - public setup() { + public setup(theme: CoreTheme) { return { getPalettes: async (): Promise<PaletteRegistry> => { if (!this.palettes) { const { buildPalettes } = await import('./palettes'); - this.palettes = buildPalettes(); + this.palettes = buildPalettes(theme); } return { get: (name: string) => { diff --git a/src/plugins/charts/public/services/theme/theme.test.tsx b/src/plugins/charts/public/services/theme/theme.test.tsx index da89ec475d577..df0acfbede1cf 100644 --- a/src/plugins/charts/public/services/theme/theme.test.tsx +++ b/src/plugins/charts/public/services/theme/theme.test.tsx @@ -82,19 +82,19 @@ describe('ThemeService', () => { const { useChartsBaseTheme } = themeService; const { result } = renderHook(() => useChartsBaseTheme()); - expect(result.current).toBe(LIGHT_THEME); + expect(result.current).toStrictEqual(LIGHT_THEME); act(() => { setUpMockTheme.theme$ = createTheme$Mock(true); themeService.init(setUpMockTheme); }); - expect(result.current).toBe(DARK_THEME); + expect(result.current).toStrictEqual(DARK_THEME); act(() => { setUpMockTheme.theme$ = createTheme$Mock(false); themeService.init(setUpMockTheme); }); // act(() => darkMode$.next(false)); - expect(result.current).toBe(LIGHT_THEME); + expect(result.current).toStrictEqual(LIGHT_THEME); }); it('should not rerender when emitting the same value', () => { diff --git a/src/plugins/charts/public/services/theme/theme.ts b/src/plugins/charts/public/services/theme/theme.ts index d7ec8c03e506c..765daf957e74d 100644 --- a/src/plugins/charts/public/services/theme/theme.ts +++ b/src/plugins/charts/public/services/theme/theme.ts @@ -12,6 +12,7 @@ import { Observable, BehaviorSubject } from 'rxjs'; import { CoreSetup, CoreTheme } from '@kbn/core/public'; import { DARK_THEME, LIGHT_THEME, PartialTheme, Theme } from '@elastic/charts'; +import { euiThemeVars } from '@kbn/ui-theme'; export class ThemeService { /** Returns default charts theme */ @@ -102,8 +103,21 @@ export class ThemeService { */ public init(theme: CoreSetup['theme']) { this.theme$ = theme.theme$; - this.theme$.subscribe(({ darkMode }) => { - this._chartsBaseTheme$.next(darkMode ? DARK_THEME : LIGHT_THEME); + this.theme$.subscribe((newTheme) => { + this._chartsBaseTheme$.next(getChartTheme(newTheme)); }); } } + +// TODO: define these overrides in elastic/charts when Borealis becomes default +function getChartTheme(theme: CoreTheme): Theme { + const chartTheme = theme.darkMode ? DARK_THEME : LIGHT_THEME; + + if (theme.name !== 'amsterdam') { + const backgroundColor = euiThemeVars.euiColorEmptyShade; + chartTheme.background.color = backgroundColor; + chartTheme.background.fallbackColor = backgroundColor; + } + + return chartTheme; +} diff --git a/src/plugins/charts/tsconfig.json b/src/plugins/charts/tsconfig.json index 8ad33a8517031..0bd9814e55579 100644 --- a/src/plugins/charts/tsconfig.json +++ b/src/plugins/charts/tsconfig.json @@ -16,6 +16,8 @@ "@kbn/shared-ux-utility", "@kbn/config-schema", "@kbn/data-plugin", + "@kbn/core-lifecycle-browser-mocks", + "@kbn/palettes", ], "exclude": [ "target/**/*", diff --git a/src/plugins/console/README.md b/src/plugins/console/README.md deleted file mode 100644 index 35921de334380..0000000000000 --- a/src/plugins/console/README.md +++ /dev/null @@ -1,320 +0,0 @@ -# Console - -## About - -Console provides the user with tools for storing and executing requests against Elasticsearch. - -## Features - -### `load_from` query parameter - -The `load_from` query parameter enables opening Console with prepopulated requests in two ways: from the elastic.co docs and from within other parts of Kibana. - -Plugins can open requests in Kibana by assigning this parameter a `data:text/plain` [lz-string](https://pieroxy.net/blog/pages/lz-string/index.html) encoded value. For example, navigating to `/dev_tools#/console?load_from=data:text/plain,OIUQKgBA+gzgpgQwE4GMAWAoA3gIgI4CucSAnjgFy4C2CALulAgDZMVYC+nQA` will prepopulate Console with the following request: - -``` -GET _search -{"query":{"match_all":{}}} -``` - -### Kibana API support ([#100253](https://github.com/elastic/kibana/pull/128562)) -Console plugin now supports Kibana API endpoints. `kbn:` prefix must be used in the request URL to send a request to Kibana API. For example, the following request sends a request to the Kibana API to retrieve the list of available spaces: -``` -GET kbn:api/spaces/space -``` - -### Request-body comments -Single-line and multiline comments can be added to the request body. The comments are displayed in the request editor, but are not sent to the cluster. The comments are useful for adding notes to the request body. For example, the following request body contains a single-line comment and a multiline comment: -``` -POST /_some_endpoint -{ - // This is a single-line comment - /* This is a multiline comment */ - "field": "value" -} -``` - -### Variables -Console plugin now supports variables. The variables can be used in the request body and in the request URL. The variables are defined in the `Variables` flyout in the Console UI and used in the request body and URL by wrapping the variable name with `${}`. For example, the following request body contains a variable: -``` -POST /_some_endpoint -{ - "field": "${variable}" -} -``` - -## Architecture -Console uses Monaco editor that is wrapped with [`kbn-monaco`](https://github.com/elastic/kibana/blob/main/packages/kbn-monaco/index.ts), so that if needed it can easily be replaced with another editor. -The autocomplete logic is located in [`autocomplete`](https://github.com/elastic/kibana/blob/main/src/plugins/console/public/lib/autocomplete) folder. Autocomplete rules are computed by classes in `components` sub-folder. - -## Autocomplete definitions -Kibana users benefit greatly from autocomplete suggestions since not all Elasticsearch APIs can be provided with a corresponding UI. Autocomplete suggestions improve usability of Console for any Elasticsearch API endpoint. -Autocomplete definitions are all created in the form of javascript objects loaded from `json` and `js` files. - -### Creating definitions -The [`generated`](https://github.com/elastic/kibana/blob/main/src/plugins/console/server/lib/spec_definitions/json/generated) folder contains definitions created automatically from Elasticsearch specifications. See this [README](https://github.com/elastic/kibana/blob/main/packages/kbn-generate-console-definitions/README.md) file for more information on the `generate-console-definitions` script. The AppEx/Management team (@elastic/kibana-management) regularly runs the script to update the definitions and is planning to automate this process. - -Manually created override files in the [`overrides`](https://github.com/elastic/kibana/blob/main/src/plugins/console/server/lib/spec_definitions/json/overrides) folder contain additions for request body parameters since those -are not created by the script. Any other fixes such as documentation links, request methods and patterns and url parameters -should be addressed at the source. That means this should be fixed in Elasticsearch specifications and then -autocomplete definitions can be re-generated with the script. - -If there are any endpoints missing completely from the `generated` folder, this should also be addressed at the source, i.e. -Elasticsearch specifications. If for some reason, that is not possible, then additional definitions files -can be placed in the folder [`manual`]((https://github.com/elastic/kibana/blob/main/src/plugins/console/server/lib/spec_definitions/json/manual)). - -### Top level keys -Use following top level keys in the definitions objects. - -#### `documentation` -Url to Elasticsearch REST API documentation for the endpoint (If the url contains `master` or `current` strings in the path, Console automatically replaces them with the `docLinkVersion` to always redirect the user to the correct version of the documentation). - -#### `methods` -Allowed http methods (`GET`, `POST` etc) - -#### `patterns` -Array of API endpoints that contain dynamic parameters like `{index}` or `{fields}`. For example, `{index}/_rollup/{rollup_index}`. Dynamic parameters used in patterns are not always defined. For example, a pattern `_ilm/policy/{policy}` indicates that any string can be used as policy name. -See the [Dynamic parameters](#dynamic-parameters) section below for more info about dynamic parameters defined in the autocomplete engine, such as `{index}`. - -#### `url_params` -Query url parameters and their values. See the [Query url parameters](#query-url-parameters) section below for more info. An example: -```json -{ - "url_params": { - "format": "", - "local": "__flag__", - "h": [], - "expand_wildcards": [ - "open", - "closed", - "hidden", - "none", - "all" - ] - } -} -``` - -#### `priority` -Value for selecting one autocomplete definition, if several configurations are loaded from the files. The highest number takes precedence. - -#### `availability` -A property that describes if an endpoint is available in stack and serverless environments. Endpoints with a `false` boolean value are filtered out in the corresponding environment. An example of an endpoint that is not available in the serverless environment: -```json -"availability": { - "stack": true, - "serverless": false -} -``` - -#### `data_autocomplete_rules` -Request body parameters and their values. Only used in `overrides` files because REST API specs don't contain any information about body request parameters. -Refer to Elasticsearch REST API documentation when configuring this object. See the [Request body parameters](#request-body-parameters) section below for more info. An example: -```json -{ - "data_autocomplete_rules": { - "text": [], - "field": "{field}", - "analyzer": "", - "explain": { "__one_of": [false, true] } - } -} -``` - -### Query url parameters -Query url parameters are configured in form of an object, for example: -```json -{ - "url_params": { - "local": "__flag__", - "scroll": "", - "expand_wildcards": [ - "open", - "closed", - "hidden", - "none", - "all" - ] - } -} -``` -This object specifies 3 query parameters: `local` (boolean value), `scroll` (no default value) and `expand_wildcards` (with a list of accepted values). - -When the user types in the url path into Console and at least 2 characters after `?`, all matching url parameters are displayed as autocomplete suggestions. In this example, after typing -``` -GET /_some_endpoint?ca -``` -"local" and "expand_wildcards" are displayed as suggestions. -When the user types at least 2 characters after `=`, all matching values for this parameter are displayed as autocomplete suggestions. In this example, after typing -``` -GET /_some_endpoint?expand_wildcards=hi -``` -"hidden" is displayed for autocompletion. - -Dynamic parameters such as `{index}` or `{fields}` are accepted both as an url parameter and its value in the configuration object. See the [Dynamic parameters](#dynamic-parameters) section below for more information. - -### Request body parameters -Request body parameters are configured in form of an object, for example: -```json -{ - "data_autocomplete_rules": { - "index_patterns": [], - "mappings": { "__scope_link": "put_mapping" }, - "version": 0, - "aliases": { - "__template": { - "NAME": {} - } - } - } -} -``` -Object's keys are parameters that will be displayed as autocomplete suggestions when the user starts typing request body. In this example, after typing -``` -PUT /_some_endpoint -{ - " -``` -"index_patterns", "mappings", "version" and "aliases" are displayed as autocomplete suggestions. -Object's values provide default or accepted values of request body parameters. For example, if "version" is selected from the suggestions list, value `0` is automatically filled, resulting in the following request: -``` -PUT /_some_endpoint -{ - "version": 0 -} -``` -Object's values can contain objects for nested configuration because the engine can work recursively while searching for autocomplete suggestions. - -Upper case strings are used to indicate that the property's name is a dynamic value that the user needs to define. For example, the autocomplete suggestion for aggregations displays the following object: -```json -{ - "aggs": { - "NAME": { - "AGG_TYPE": {} - } - } -} -``` -Both upper case strings `NAME` and `AGG_TYPE` indicate that those values need to be filled in by the user. - -**Following values can be used in the configuration object:** - -#### One value from the list (`__one_of: [..., ...]`) -Use this configuration for a parameter with a list of allowed values, for example types of snapshot repository: -``` -"type": {"__one_of": ["fs", "url", "s3", "hdfs", "azure"]} -``` -The first value in the list will be automatically filled as parameter value. For example, when "type" is selected from the suggestions list, the request body is autofilled as following: -``` -PUT /_some_endpoint -{ - "type": "fs" -} -``` -But if the value `fs` is deleted, all suggestions will be displayed: "fs", "url", "s3", "hdfs" and "azure". -Use `__one_of: [true, false]` for boolean values. - -#### Array of values (`[..., ... ]` or `__any_of: [..., ...]`) -Use this configuration for parameters which accept an array of values, for example actions parameter: -``` -"actions": { "__any_of": [ "add", "remove"]} -``` -When "actions" is selected from the suggestions list, it will be autocompleted with an empty array: -``` -POST /_some_endpoint -{ - "actions": [] -} -``` -All values in the array are displayed as suggestions for parameter values inside the array. - - -#### Default object structure (`__template: {...}`) -Use this configuration to insert an object with default values into the request body when the corresponding key is typed in. -For example, in this configuration -```json -{ - "terms": { - "__template": { - "field": "", - "size": 10 - }, - "field": "{field}", - "size": 10, - "shard_size": 10, - "min_doc_count": 10 - } -} -``` -the `terms` parameter has several properties, but only `field` and `size` are autocompleted in the request body when "terms" is selected from the suggestions list. -``` -POST /_some_endpoint -{ - terms: { - field: '', - size: 10, - } -} -``` -The rest of the properties are displayed as autocomplete suggestions, when the `terms` object is being edited. - -#### Scope link (`__scope_link`) -Use this type to copy a configuration object specified in a different endpoint definition. For example, the `put_settings` endpoint definition contains a configuration object that can be reused for `settings` parameter in a different endpoint: -```json -{ - "data_autocomplete_rules": { - "settings": { - "__scope_link": "put_settings" - } - } -} -``` -#### Global scope (`GLOBAL`) -Use `GLOBAL` keyword with `__scope_link` to refer to a reusable set of definitions created in the [`globals`](https://github.com/elastic/kibana/blob/main/src/plugins/console/server/lib/spec_definitions/js/globals.ts) file. -For example: -```json -{ - "data_autocomplete_rules": { - "query": { - "__scope_link": "GLOBAL.query" - } - } -} -``` -#### Conditional definition (`__condition: { lines_regex: ... }`) -To provide a different set of autocomplete suggestions based on the value configured in the request. For example, when creating a snapshot repository of different types (`fs`, `url` etc) different properties are displayed in the suggestions list based on the type. See [snapshot.create_repository.json](https://github.com/elastic/kibana/blob/main/src/plugins/console/server/lib/spec_definitions/json/overrides/snapshot.create_repository.json) for an example. - - -### Dynamic parameters -Some autocomplete definitions need to be configured with dynamic values that can't be hard coded into a json or js file, for example a list of indices in the cluster. -A list of dynamic parameters is defined in the `parametrizedComponentFactories` function in [`kb.js`](https://github.com/elastic/kibana/blob/main/src/plugins/console/public/lib/kb/kb.js) file. The values of these parameters are assigned dynamically for every cluster. -Use these dynamic parameters with curly braces, for example `{index}`, `{fields}`, `{template}` etc. - -Dynamic parameters can be used in url patterns, for example `{index}/_search`. Url patterns can also contain unknown parameters just to indicate that any value can be used in the url, for example in the url `/_ilm/policy/{policy}` the value for `{policy}` can be any accepted policy name and the dynamic parameter `{policy}` is not defined in the autocomplete engine. - -For request body parameters, only known dynamic properties are allowed. For example: -```json -{ - "data_autocomplete_rules": { - "query": { - "field": "{field}" - } - } -} -``` -If an unknown dynamic parameter (for example, `{my_param}`) is used in request body parameters, a warning will be logged in the browser: `[Console] no factory found for 'my_param'`. - -### Architecture changes in 8.3 release (timeline: 07-04-2022 - 19-06-2022) -One of the main changes in architecture is refactoring the retrieval of autocomplete suggestions. Console used to send a separate request to ES for each autocomplete entity (mappings, aliases, templates, data-streams etc) to retrieve the autocomplete suggestions via the original [hand-rolled ES proxy](https://github.com/elastic/kibana/blob/main/src/plugins/console/server/routes/api/console/proxy/create_handler.ts). This had a few drawbacks: -- The number of requests was dependent on the number of autocomplete entities, which was not scalable and could cause performance issues -- It added unnecessary dependencies on the ES proxy -- We risked fetching an enormous response payload for users who have a large number of mappings. - -To address these issues, we created a specific [route](https://github.com/elastic/kibana/blob/main/src/plugins/console/server/routes/api/console/autocomplete_entities/index.ts) in the Kibana server to retrieve all autocomplete entities in one request and send it to the client. The response for mappings capped to 10MB to avoid sending a huge payload. The client-side code was refactored to use the new response format. For more details, see [#130633](https://github.com/elastic/kibana/pull/130633). - -Another change is replacing jQuery with the core http client to communicate with the Kibana server. Console used a custom jQuery ajax [function](https://github.com/elastic/kibana/blob/8.0/src/plugins/console/public/lib/es/es.ts) to send requests to the Kibana server to have lower-level control over the requests, specifically controls like `crossDomain: true`. This is no longer needed since we are using the core http client. For more details, see [#127867](https://github.com/elastic/kibana/pull/127867). - -### Outstanding issues -#### Autocomplete suggestions for Kibana API endpoints -Console currently supports autocomplete suggestions for Elasticsearch API endpoints. The autocomplete suggestions for Kibana API endpoints are not supported yet. -Related issue: [#130661](https://github.com/elastic/kibana/issues/130661) \ No newline at end of file diff --git a/src/plugins/console/jest.config.js b/src/plugins/console/jest.config.js deleted file mode 100644 index 0a55da6792911..0000000000000 --- a/src/plugins/console/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/src/plugins/console'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/src/plugins/console', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/src/plugins/console/{common,public,server}/**/*.{js,ts,tsx}'], -}; diff --git a/src/plugins/console/server/lib/spec_definitions/json/README.md b/src/plugins/console/server/lib/spec_definitions/json/README.md deleted file mode 100644 index 9e9dc9fbec716..0000000000000 --- a/src/plugins/console/server/lib/spec_definitions/json/README.md +++ /dev/null @@ -1 +0,0 @@ -Please refer to this [README](https://github.com/elastic/kibana/blob/main/src/plugins/console/README.md#creating-definitions) file before adding/editing definitions files in this folder. \ No newline at end of file diff --git a/src/plugins/console/tsconfig.json b/src/plugins/console/tsconfig.json deleted file mode 100644 index 02e4e7a9b7689..0000000000000 --- a/src/plugins/console/tsconfig.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": ["common/**/*", "public/**/*", "server/**/*"], - "kbn_references": [ - "@kbn/core", - "@kbn/dev-tools-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/home-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/share-plugin", - "@kbn/usage-collection-plugin", - "@kbn/i18n", - "@kbn/analytics", - "@kbn/utility-types", - "@kbn/i18n-react", - "@kbn/shared-ux-utility", - "@kbn/core-http-browser", - "@kbn/config-schema", - "@kbn/core-http-router-server-internal", - "@kbn/core-elasticsearch-server", - "@kbn/core-http-browser-mocks", - "@kbn/react-kibana-context-theme", - "@kbn/code-editor", - "@kbn/monaco", - "@kbn/cloud-plugin", - "@kbn/core-notifications-browser", - "@kbn/react-kibana-context-render", - "@kbn/react-kibana-mount", - "@kbn/ui-theme", - "@kbn/core-doc-links-browser", - "@kbn/shared-ux-router", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/src/plugins/controls/public/control_group/open_edit_control_group_flyout.tsx b/src/plugins/controls/public/control_group/open_edit_control_group_flyout.tsx index 459913d98de0b..52a19aef8b1e0 100644 --- a/src/plugins/controls/public/control_group/open_edit_control_group_flyout.tsx +++ b/src/plugins/controls/public/control_group/open_edit_control_group_flyout.tsx @@ -92,10 +92,7 @@ export const openEditControlGroupFlyout = ( onDeleteAll={() => onDeleteAll(overlay)} onCancel={() => closeOverlay(overlay)} />, - { - theme: coreServices.theme, - i18n: coreServices.i18n, - } + coreServices ), { 'aria-label': i18n.translate('controls.controlGroup.manageControl', { diff --git a/src/plugins/controls/public/controls/data_controls/open_data_control_editor.tsx b/src/plugins/controls/public/controls/data_controls/open_data_control_editor.tsx index c01f9aa83cea9..c34af20001de8 100644 --- a/src/plugins/controls/public/controls/data_controls/open_data_control_editor.tsx +++ b/src/plugins/controls/public/controls/data_controls/open_data_control_editor.tsx @@ -91,10 +91,7 @@ export const openDataControlEditor = < onSave({ type: selectedControlType, state }); }} />, - { - theme: coreServices.theme, - i18n: coreServices.i18n, - } + coreServices ), { size: 'm', diff --git a/src/plugins/controls/public/controls/types.ts b/src/plugins/controls/public/controls/types.ts index dd5d38e96346b..8cc33b3513263 100644 --- a/src/plugins/controls/public/controls/types.ts +++ b/src/plugins/controls/public/controls/types.ts @@ -9,7 +9,7 @@ import { BehaviorSubject } from 'rxjs'; -import { SerializedPanelState } from '@kbn/presentation-containers'; +import { HasSerializableState } from '@kbn/presentation-containers'; import { PanelCompatibleComponent } from '@kbn/presentation-panel-plugin/public/panel_component/types'; import { HasParentApi, @@ -39,16 +39,12 @@ export type DefaultControlApi = PublishesDataLoading & CanClearSelections & HasType & HasUniqueId & + HasSerializableState<DefaultControlState> & HasParentApi<ControlGroupApi> & { setDataLoading: (loading: boolean) => void; setBlockingError: (error: Error | undefined) => void; grow: PublishingSubject<boolean | undefined>; width: PublishingSubject<ControlWidth | undefined>; - - // Can not use HasSerializableState interface - // HasSerializableState types serializeState as function returning 'MaybePromise' - // Controls serializeState is sync - serializeState: () => SerializedPanelState<DefaultControlState>; }; export type ControlApiRegistration<ControlApi extends DefaultControlApi = DefaultControlApi> = Omit< diff --git a/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_action.tsx b/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_action.tsx index 10b21fc36edcc..9b3e9a536a86a 100644 --- a/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_action.tsx +++ b/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_action.tsx @@ -83,12 +83,11 @@ export class CopyToDashboardAction implements Action<EmbeddableApiContext> { public async execute({ embeddable }: EmbeddableApiContext) { if (!apiIsCompatible(embeddable)) throw new IncompatibleActionError(); - const { theme, i18n } = coreServices; const session = coreServices.overlays.openModal( - toMountPoint(<CopyToDashboardModal closeModal={() => session.close()} api={embeddable} />, { - theme, - i18n, - }), + toMountPoint( + <CopyToDashboardModal closeModal={() => session.close()} api={embeddable} />, + coreServices + ), { maxWidth: 400, 'data-test-subj': 'copyToDashboardPanel', diff --git a/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx b/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx index 66b0ed367481d..858b241ad7e5c 100644 --- a/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx +++ b/src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_modal.tsx @@ -50,9 +50,9 @@ export function CopyToDashboardModal({ api, closeModal }: CopyToDashboardModalPr const dashboardId = api.parentApi.savedObjectId.value; - const onSubmit = useCallback(async () => { + const onSubmit = useCallback(() => { const dashboard = api.parentApi; - const panelToCopy = await dashboard.getDashboardPanelFromId(api.uuid); + const panelToCopy = dashboard.getDashboardPanelFromId(api.uuid); const runtimeSnapshot = apiHasSnapshottableState(api) ? api.snapshotRuntimeState() : undefined; if (!panelToCopy && !runtimeSnapshot) { diff --git a/src/plugins/dashboard/public/dashboard_api/get_dashboard_api.ts b/src/plugins/dashboard/public/dashboard_api/get_dashboard_api.ts index 2e2e6352f829a..8b29ed8b1d9f0 100644 --- a/src/plugins/dashboard/public/dashboard_api/get_dashboard_api.ts +++ b/src/plugins/dashboard/public/dashboard_api/get_dashboard_api.ts @@ -111,8 +111,8 @@ export function getDashboardApi({ viewModeManager, unifiedSearchManager, }); - async function getState() { - const { panels, references: panelReferences } = await panelsManager.internalApi.getState(); + function getState() { + const { panels, references: panelReferences } = panelsManager.internalApi.getState(); const dashboardState: DashboardState = { ...settingsManager.internalApi.getState(), ...unifiedSearchManager.internalApi.getState(), @@ -124,7 +124,7 @@ export function getDashboardApi({ let controlGroupReferences: Reference[] | undefined; if (controlGroupApi) { const { rawState: controlGroupSerializedState, references: extractedReferences } = - await controlGroupApi.serializeState(); + controlGroupApi.serializeState(); controlGroupReferences = extractedReferences; dashboardState.controlGroupInput = controlGroupSerializedState; } @@ -177,7 +177,7 @@ export function getDashboardApi({ isManaged, lastSavedId: savedObjectId$.value, viewMode: viewModeManager.api.viewMode.value, - ...(await getState()), + ...getState(), }); if (saveResult) { @@ -200,7 +200,7 @@ export function getDashboardApi({ }, runQuickSave: async () => { if (isManaged) return; - const { controlGroupReferences, dashboardState, panelReferences } = await getState(); + const { controlGroupReferences, dashboardState, panelReferences } = getState(); const saveResult = await getDashboardContentManagementService().saveDashboardState({ controlGroupReferences, currentState: dashboardState, diff --git a/src/plugins/dashboard/public/dashboard_api/panels_manager.ts b/src/plugins/dashboard/public/dashboard_api/panels_manager.ts index 4f082d1c0484f..5188a604631b4 100644 --- a/src/plugins/dashboard/public/dashboard_api/panels_manager.ts +++ b/src/plugins/dashboard/public/dashboard_api/panels_manager.ts @@ -13,11 +13,7 @@ import { v4 } from 'uuid'; import { asyncForEach } from '@kbn/std'; import type { Reference } from '@kbn/content-management-utils'; import { METRIC_TYPE } from '@kbn/analytics'; -import { - PanelPackage, - SerializedPanelState, - apiHasSerializableState, -} from '@kbn/presentation-containers'; +import { PanelPackage, apiHasSerializableState } from '@kbn/presentation-containers'; import { DefaultEmbeddableApi, EmbeddablePackageState, @@ -32,7 +28,6 @@ import { getPanelTitle, stateHasTitles, } from '@kbn/presentation-publishing'; -import { cloneDeep } from 'lodash'; import { apiHasSnapshottableState } from '@kbn/presentation-containers/interfaces/serialized_state'; import { i18n } from '@kbn/i18n'; import { coreServices, usageCollectionService } from '../services/kibana_services'; @@ -156,13 +151,11 @@ export function initializePanelsManager( }); } - async function getDashboardPanelFromId(panelId: string) { + function getDashboardPanelFromId(panelId: string) { const panel = panels$.value[panelId]; const child = children$.value[panelId]; if (!child || !panel) throw new PanelNotFoundError(); - const serialized = apiHasSerializableState(child) - ? await child.serializeState() - : { rawState: {} }; + const serialized = apiHasSerializableState(child) ? child.serializeState() : { rawState: {} }; return { type: panel.type, explicitInput: { ...panel.explicitInput, ...serialized.rawState }, @@ -181,7 +174,7 @@ export function initializePanelsManager( return titles; } - async function duplicateReactEmbeddableInput( + function duplicateReactEmbeddableInput( childApi: unknown, panelToClone: DashboardPanelState, panelTitles: string[] @@ -198,7 +191,7 @@ export function initializePanelsManager( * use in-place library transforms */ if (apiHasLibraryTransforms(childApi)) { - const byValueSerializedState = await childApi.getByValueState(); + const byValueSerializedState = childApi.getByValueState(); if (panelToClone.references) { pushReferences(prefixReferencesFromPanel(id, panelToClone.references)); } @@ -284,9 +277,9 @@ export function initializePanelsManager( canRemovePanels: () => trackPanel.expandedPanelId.value === undefined, children$, duplicatePanel: async (idToDuplicate: string) => { - const panelToClone = await getDashboardPanelFromId(idToDuplicate); + const panelToClone = getDashboardPanelFromId(idToDuplicate); - const duplicatedPanelState = await duplicateReactEmbeddableInput( + const duplicatedPanelState = duplicateReactEmbeddableInput( children$.value[idToDuplicate], panelToClone, await getPanelTitles() @@ -414,36 +407,23 @@ export function initializePanelsManager( } if (resetChangedPanelCount) children$.next(currentChildren); }, - getState: async (): Promise<{ + getState: (): { panels: DashboardState['panels']; references: Reference[]; - }> => { + } => { const references: Reference[] = []; - const panels = cloneDeep(panels$.value); - - const serializePromises: Array< - Promise<{ uuid: string; serialized: SerializedPanelState<object> }> - > = []; - for (const uuid of Object.keys(panels)) { - const api = children$.value[uuid]; - - if (apiHasSerializableState(api)) { - serializePromises.push( - (async () => { - const serialized = await api.serializeState(); - return { uuid, serialized }; - })() - ); - } - } - const serializeResults = await Promise.all(serializePromises); - for (const result of serializeResults) { - panels[result.uuid].explicitInput = { ...result.serialized.rawState, id: result.uuid }; - references.push( - ...prefixReferencesFromPanel(result.uuid, result.serialized.references ?? []) - ); - } + const panels = Object.keys(panels$.value).reduce((acc, id) => { + const childApi = children$.value[id]; + const serializeResult = apiHasSerializableState(childApi) + ? childApi.serializeState() + : { rawState: {} }; + acc[id] = { ...panels$.value[id], explicitInput: { ...serializeResult.rawState, id } }; + + references.push(...prefixReferencesFromPanel(id, serializeResult.references ?? [])); + + return acc; + }, {} as DashboardPanelMap); return { panels, references }; }, diff --git a/src/plugins/dashboard/public/dashboard_api/types.ts b/src/plugins/dashboard/public/dashboard_api/types.ts index 7a1fc5fed7e13..3805d31df1d22 100644 --- a/src/plugins/dashboard/public/dashboard_api/types.ts +++ b/src/plugins/dashboard/public/dashboard_api/types.ts @@ -153,7 +153,7 @@ export type DashboardApi = CanExpandPanels & focusedPanelId$: PublishingSubject<string | undefined>; forceRefresh: () => void; getSettings: () => DashboardStateFromSettingsFlyout; - getDashboardPanelFromId: (id: string) => Promise<DashboardPanelState>; + getDashboardPanelFromId: (id: string) => DashboardPanelState; hasOverlays$: PublishingSubject<boolean>; hasUnsavedChanges$: PublishingSubject<boolean>; highlightPanel: (panelRef: HTMLDivElement) => void; diff --git a/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx b/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx index 3ad35d34b7fd1..d68c4a76e9f78 100644 --- a/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx +++ b/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx @@ -49,7 +49,7 @@ export const DashboardNoMatch = ({ history }: { history: RouteComponentProps['hi /> </p> </EuiCallOut>, - { analytics: coreServices.analytics, i18n: coreServices.i18n, theme: coreServices.theme } + coreServices ) ); diff --git a/src/plugins/dashboard/public/dashboard_app/top_nav/editor_menu.tsx b/src/plugins/dashboard/public/dashboard_app/top_nav/editor_menu.tsx index cf7f9c65c6618..6d052225d6fba 100644 --- a/src/plugins/dashboard/public/dashboard_app/top_nav/editor_menu.tsx +++ b/src/plugins/dashboard/public/dashboard_app/top_nav/editor_menu.tsx @@ -57,7 +57,7 @@ export const EditorMenu = ({ createNewVisType, isDisabled }: EditorMenuProps) => /> ); }), - { analytics: coreServices.analytics, theme: coreServices.theme, i18n: coreServices.i18n } + coreServices ); dashboardApi.openOverlay( diff --git a/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid.test.tsx b/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid.test.tsx index 8700161711e17..543d6b7456270 100644 --- a/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid.test.tsx +++ b/src/plugins/dashboard/public/dashboard_container/component/grid/dashboard_grid.test.tsx @@ -10,7 +10,6 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; -import { CONTACT_CARD_EMBEDDABLE } from '@kbn/embeddable-plugin/public/lib/test_samples/embeddables'; import { DashboardGrid } from './dashboard_grid'; import { buildMockDashboardApi } from '../../../mocks'; @@ -50,12 +49,12 @@ jest.mock('./dashboard_grid_item', () => { const PANELS = { '1': { gridData: { x: 0, y: 0, w: 6, h: 6, i: '1' }, - type: CONTACT_CARD_EMBEDDABLE, + type: 'lens', explicitInput: { id: '1' }, }, '2': { gridData: { x: 6, y: 6, w: 6, h: 6, i: '2' }, - type: CONTACT_CARD_EMBEDDABLE, + type: 'lens', explicitInput: { id: '2' }, }, }; diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/api/open_settings_flyout.tsx b/src/plugins/dashboard/public/dashboard_container/embeddable/api/open_settings_flyout.tsx index 867e6ae9d0477..0f78bcc96a975 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/api/open_settings_flyout.tsx +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/api/open_settings_flyout.tsx @@ -27,7 +27,7 @@ export function openSettingsFlyout(dashboardApi: DashboardApi) { }} /> </DashboardContext.Provider>, - { analytics: coreServices.analytics, i18n: coreServices.i18n, theme: coreServices.theme } + coreServices ), { size: 's', diff --git a/src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx b/src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx index f3dac2e9bb624..a2adea2470abb 100644 --- a/src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx +++ b/src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx @@ -112,7 +112,7 @@ export const confirmCreateWithUnsaved = ( </div> </EuiOutsideClickDetector> </EuiFocusTrap>, - { analytics: coreServices.analytics, i18n: coreServices.i18n, theme: coreServices.theme } + coreServices ), { 'data-test-subj': 'dashboardCreateConfirmModal', diff --git a/src/plugins/data/public/search/search_interceptor/search_interceptor.ts b/src/plugins/data/public/search/search_interceptor/search_interceptor.ts index 8b312cd2fab87..068265943ecd7 100644 --- a/src/plugins/data/public/search/search_interceptor/search_interceptor.ts +++ b/src/plugins/data/public/search/search_interceptor/search_interceptor.ts @@ -47,6 +47,7 @@ import type { IUiSettingsClient, ThemeServiceStart, ToastsSetup, + UserProfileService, } from '@kbn/core/public'; import { toMountPoint } from '@kbn/react-kibana-mount'; @@ -127,6 +128,7 @@ export class SearchInterceptor { analytics: Pick<AnalyticsServiceStart, 'reportEvent'>; i18n: I18nStart; theme: Pick<ThemeServiceStart, 'theme$'>; + userProfile: UserProfileService; }; /* @@ -136,10 +138,10 @@ export class SearchInterceptor { this.deps.http.addLoadingCountSource(this.pendingCount$); this.deps.startServices.then(([coreStart, depsStart]) => { - const { application, docLinks, analytics, i18n: i18nStart, theme } = coreStart; + const { application, docLinks, ...startRenderServices } = coreStart; this.application = application; this.docLinks = docLinks; - this.startRenderServices = { analytics, i18n: i18nStart, theme }; + this.startRenderServices = startRenderServices; this.inspector = (depsStart as SearchServiceStartDependencies).inspector; }); diff --git a/src/plugins/data/public/search/search_service.ts b/src/plugins/data/public/search/search_service.ts index d1e5d02e5d840..6d2e09a5ef300 100644 --- a/src/plugins/data/public/search/search_service.ts +++ b/src/plugins/data/public/search/search_service.ts @@ -217,16 +217,7 @@ export class SearchService implements Plugin<ISearchSetup, ISearchStart> { } public start( - { - analytics, - http, - theme, - uiSettings, - chrome, - application, - notifications, - i18n: i18nStart, - }: CoreStart, + { http, uiSettings, chrome, application, notifications, ...startServices }: CoreStart, { fieldFormats, indexPatterns, @@ -245,11 +236,9 @@ export class SearchService implements Plugin<ISearchSetup, ISearchStart> { const aggs = this.aggsService.start({ fieldFormats, indexPatterns }); const warningsServices = { - analytics, - i18n: i18nStart, inspector, notifications, - theme, + ...startServices, }; const searchSourceDependencies: SearchSourceDependencies = { @@ -305,7 +294,7 @@ export class SearchService implements Plugin<ISearchSetup, ISearchStart> { tourDisabled: screenshotMode.isScreenshotMode(), }) ), - { analytics, i18n: i18nStart, theme } + startServices ), }); } diff --git a/src/plugins/data/public/search/session/sessions_mgmt/application/render.tsx b/src/plugins/data/public/search/session/sessions_mgmt/application/render.tsx index f786819044061..4c375be8534c4 100644 --- a/src/plugins/data/public/search/session/sessions_mgmt/application/render.tsx +++ b/src/plugins/data/public/search/session/sessions_mgmt/application/render.tsx @@ -16,7 +16,7 @@ import { SearchSessionsMgmtMain } from '../components/main'; export const renderApp = ( elem: HTMLElement | null, - { i18n, uiSettings, ...homeDeps }: AppDependencies + { uiSettings, ...homeDeps }: AppDependencies ) => { if (!elem) { return () => undefined; @@ -28,7 +28,7 @@ export const renderApp = ( }); render( - <KibanaRenderContextProvider theme={homeDeps.core.theme} i18n={i18n}> + <KibanaRenderContextProvider {...homeDeps.core}> <KibanaReactContextProvider> <SearchSessionsMgmtMain {...homeDeps} timezone={uiSettings.get('dateFormat:tz')} /> </KibanaReactContextProvider> diff --git a/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.ts b/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.ts index 9fb6fafb11dbb..ad03451bf8691 100644 --- a/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.ts +++ b/src/plugins/data/server/search/strategies/sql_search/sql_search_strategy.ts @@ -11,7 +11,7 @@ import type { IncomingHttpHeaders } from 'http'; import type { IScopedClusterClient, Logger } from '@kbn/core/server'; import { catchError, tap } from 'rxjs'; import type { DiagnosticResult } from '@elastic/transport'; -import { SqlQueryResponse } from '@elastic/elasticsearch/lib/api/types'; +import { SqlQueryResponse, type SqlQuerySqlFormat } from '@elastic/elasticsearch/lib/api/types'; import { getKbnServerError } from '@kbn/kibana-utils-plugin/server'; import { getKbnSearchError } from '../../report_search_error'; import type { ISearchStrategy, SearchStrategyDependencies } from '../../types'; @@ -61,9 +61,9 @@ export const sqlSearchStrategyProvider = ( } else { ({ headers, body, meta } = await client.sql.query( { - format: params.format ?? 'json', ...getDefaultAsyncSubmitParams(searchConfig, options), ...params, + format: (params.format ?? 'json') as SqlQuerySqlFormat, }, { ...options.transport, signal: options.abortSignal, meta: true } )); diff --git a/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/__snapshots__/color.test.tsx.snap b/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/__snapshots__/color.test.tsx.snap index 1e97b4a59ed0f..c0caa836b45c7 100644 --- a/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/__snapshots__/color.test.tsx.snap +++ b/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/__snapshots__/color.test.tsx.snap @@ -1,5 +1,99 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`ColorFormatEditor should render boolean type normally 1`] = ` +<Fragment> + <EuiBasicTable + columns={ + Array [ + Object { + "field": "boolean", + "name": <Memo(MemoizedFormattedMessage) + defaultMessage="Boolean" + id="indexPatternFieldEditor.color.booleanLabel" + />, + "render": [Function], + }, + Object { + "field": "text", + "name": <Memo(MemoizedFormattedMessage) + defaultMessage="Text color" + id="indexPatternFieldEditor.color.textColorLabel" + />, + "render": [Function], + }, + Object { + "field": "background", + "name": <Memo(MemoizedFormattedMessage) + defaultMessage="Background color" + id="indexPatternFieldEditor.color.backgroundLabel" + />, + "render": [Function], + }, + Object { + "name": <Memo(MemoizedFormattedMessage) + defaultMessage="Example" + id="indexPatternFieldEditor.color.exampleLabel" + />, + "render": [Function], + }, + Object { + "actions": Array [ + Object { + "available": [Function], + "color": "danger", + "data-test-subj": "colorEditorRemoveColor", + "description": "Delete color format", + "icon": "trash", + "name": "Delete", + "onClick": [Function], + "type": "icon", + }, + ], + "field": "actions", + "name": "Actions", + }, + ] + } + items={ + Array [ + Object { + "background": "#ffffff", + "boolean": "true", + "index": 0, + "range": "-Infinity:Infinity", + "regex": "<insert regex>", + "text": "#000000", + }, + ] + } + noItemsMessage={ + <EuiI18n + default="No items found" + token="euiBasicTable.noItemsMessage" + /> + } + tableLayout="fixed" + /> + <EuiSpacer + size="m" + /> + <EuiButton + data-test-subj="colorEditorAddColor" + iconType="plusInCircle" + onClick={[Function]} + size="s" + > + <MemoizedFormattedMessage + defaultMessage="Add color" + id="indexPatternFieldEditor.color.addColorButton" + /> + </EuiButton> + <EuiSpacer + size="l" + /> +</Fragment> +`; + exports[`ColorFormatEditor should render multiple colors 1`] = ` <Fragment> <EuiBasicTable @@ -58,6 +152,7 @@ exports[`ColorFormatEditor should render multiple colors 1`] = ` Array [ Object { "background": "#ffffff", + "boolean": "true", "index": 0, "range": "-Infinity:Infinity", "regex": "<insert regex>", @@ -65,6 +160,7 @@ exports[`ColorFormatEditor should render multiple colors 1`] = ` }, Object { "background": "#ffffff", + "boolean": "true", "index": 1, "range": "-Infinity:Infinity", "regex": "<insert regex>", @@ -158,6 +254,7 @@ exports[`ColorFormatEditor should render other type normally (range field) 1`] = Array [ Object { "background": "#ffffff", + "boolean": "true", "index": 0, "range": "-Infinity:Infinity", "regex": "<insert regex>", @@ -251,6 +348,7 @@ exports[`ColorFormatEditor should render string type normally (regex field) 1`] Array [ Object { "background": "#ffffff", + "boolean": "true", "index": 0, "range": "-Infinity:Infinity", "regex": "<insert regex>", diff --git a/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.test.tsx b/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.test.tsx index a44845ad93f06..7b75c38aa02aa 100644 --- a/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.test.tsx +++ b/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.test.tsx @@ -57,6 +57,20 @@ describe('ColorFormatEditor', () => { expect(component).toMatchSnapshot(); }); + it('should render boolean type normally', async () => { + const component = shallowWithI18nProvider( + <ColorFormatEditor + fieldType={'boolean'} + format={format as unknown as FieldFormat} + formatParams={formatParams} + onChange={onChange} + onError={onError} + /> + ); + + expect(component).toMatchSnapshot(); + }); + it('should render other type normally (range field)', async () => { const component = shallowWithI18nProvider( <ColorFormatEditor diff --git a/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.tsx b/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.tsx index 9ed18eb7f8bdc..85343826a58f3 100644 --- a/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.tsx +++ b/src/plugins/data_view_field_editor/public/components/field_format_editor/editors/color/color.tsx @@ -15,6 +15,7 @@ import { EuiColorPicker, EuiIcon, EuiFieldText, + EuiSelect, EuiSpacer, } from '@elastic/eui'; @@ -29,6 +30,7 @@ import { FormatEditorProps } from '../types'; interface Color { range?: string; regex?: string; + boolean?: string; text: string; background: string; } @@ -76,6 +78,90 @@ export class ColorFormatEditor extends DefaultFormatEditor<ColorFormatEditorForm }); }; + getFirstColumn = (fieldType: string) => { + if (fieldType === 'boolean') + return { + field: 'boolean', + name: ( + <FormattedMessage + id="indexPatternFieldEditor.color.booleanLabel" + defaultMessage="Boolean" + /> + ), + render: (value: string, item: IndexedColor) => { + return ( + <EuiSelect + options={[ + { value: 'true', text: 'true' }, + { value: 'false', text: 'false' }, + ]} + value={value} + data-test-subj={`colorEditorKeyBoolean ${item.index}`} + onChange={(e) => { + this.onColorChange( + { + boolean: e.target.value, + }, + item.index + ); + }} + /> + ); + }, + }; + if (fieldType === 'string') + return { + field: 'regex', + name: ( + <FormattedMessage + id="indexPatternFieldEditor.color.patternLabel" + defaultMessage="Pattern (regular expression)" + /> + ), + render: (value: string, item: IndexedColor) => { + return ( + <EuiFieldText + value={value} + data-test-subj={`colorEditorKeyPattern ${item.index}`} + onChange={(e) => { + this.onColorChange( + { + regex: e.target.value, + }, + item.index + ); + }} + /> + ); + }, + }; + return { + field: 'range', + name: ( + <FormattedMessage + id="indexPatternFieldEditor.color.rangeLabel" + defaultMessage="Range (min:max)" + /> + ), + render: (value: string, item: IndexedColor) => { + return ( + <EuiFieldText + value={value} + data-test-subj={`colorEditorKeyRange ${item.index}`} + onChange={(e) => { + this.onColorChange( + { + range: e.target.value, + }, + item.index + ); + }} + /> + ); + }, + }; + }; + render() { const { formatParams, fieldType } = this.props; @@ -91,57 +177,7 @@ export class ColorFormatEditor extends DefaultFormatEditor<ColorFormatEditorForm []; const columns = [ - fieldType === 'string' - ? { - field: 'regex', - name: ( - <FormattedMessage - id="indexPatternFieldEditor.color.patternLabel" - defaultMessage="Pattern (regular expression)" - /> - ), - render: (value: string, item: IndexedColor) => { - return ( - <EuiFieldText - value={value} - data-test-subj={`colorEditorKeyPattern ${item.index}`} - onChange={(e) => { - this.onColorChange( - { - regex: e.target.value, - }, - item.index - ); - }} - /> - ); - }, - } - : { - field: 'range', - name: ( - <FormattedMessage - id="indexPatternFieldEditor.color.rangeLabel" - defaultMessage="Range (min:max)" - /> - ), - render: (value: string, item: IndexedColor) => { - return ( - <EuiFieldText - value={value} - data-test-subj={`colorEditorKeyRange ${item.index}`} - onChange={(e) => { - this.onColorChange( - { - range: e.target.value, - }, - item.index - ); - }} - /> - ); - }, - }, + this.getFirstColumn(fieldType), { field: 'text', name: ( diff --git a/src/plugins/data_view_field_editor/server/routes/field_preview.ts b/src/plugins/data_view_field_editor/server/routes/field_preview.ts index 8d585a7688714..a7df6a9f4e2ac 100644 --- a/src/plugins/data_view_field_editor/server/routes/field_preview.ts +++ b/src/plugins/data_view_field_editor/server/routes/field_preview.ts @@ -81,9 +81,8 @@ export const registerFieldPreviewRoute = ({ router }: RouteDependencies): void = }; try { - // client types need to be update to support this request format + // client types need to be updated to support this request format // when it does, supply response types - // @ts-expect-error const { result } = await client.asCurrentUser.scriptsPainlessExecute(body); return res.ok({ body: { values: result } }); diff --git a/src/plugins/data_view_management/public/types.ts b/src/plugins/data_view_management/public/types.ts index 161ee3b1e21de..eaee8b28d6145 100644 --- a/src/plugins/data_view_management/public/types.ts +++ b/src/plugins/data_view_management/public/types.ts @@ -33,7 +33,7 @@ import { SharePluginStart } from '@kbn/share-plugin/public'; import type { IndexPatternManagementStart } from '.'; import type { DataViewMgmtService } from './management_app/data_view_management_service'; -export type StartServices = Pick<CoreStart, 'analytics' | 'i18n' | 'theme'>; +export type StartServices = Pick<CoreStart, 'analytics' | 'i18n' | 'theme' | 'userProfile'>; export interface IndexPatternManagmentContext extends StartServices { dataViewMgmtService: DataViewMgmtService; diff --git a/src/plugins/dev_tools/public/index.ts b/src/plugins/dev_tools/public/index.ts deleted file mode 100644 index ebe346160b9be..0000000000000 --- a/src/plugins/dev_tools/public/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -// TODO: https://github.com/elastic/kibana/issues/110892 -/* eslint-disable @kbn/eslint/no_export_all */ - -import { DevToolsPlugin } from './plugin'; -export * from './plugin'; -export * from '../common/constants'; - -export function plugin() { - return new DevToolsPlugin(); -} diff --git a/src/plugins/dev_tools/tsconfig.json b/src/plugins/dev_tools/tsconfig.json deleted file mode 100644 index 102e44488a7eb..0000000000000 --- a/src/plugins/dev_tools/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": ["common/*", "public/**/*", "server/**/*"], - "kbn_references": [ - "@kbn/core", - "@kbn/url-forwarding-plugin", - "@kbn/management-plugin", - "@kbn/i18n", - "@kbn/ui-theme", - "@kbn/shared-ux-router", - "@kbn/deeplinks-devtools", - "@kbn/config-schema", - "@kbn/core-plugins-server", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/src/plugins/discover/public/application/main/discover_main_route.tsx b/src/plugins/discover/public/application/main/discover_main_route.tsx index 205926cf4943b..c88774d6f9e11 100644 --- a/src/plugins/discover/public/application/main/discover_main_route.tsx +++ b/src/plugins/discover/public/application/main/discover_main_route.tsx @@ -206,7 +206,7 @@ export function DiscoverMainRoute({ onBeforeRedirect() { services.urlTracker.setTrackedUrl('/'); }, - theme: core.theme, + ...core, })(e); } else { setError(e); @@ -222,8 +222,7 @@ export function DiscoverMainRoute({ services, chrome.recentlyAccessed, history, - core.application.navigateToApp, - core.theme, + core, basePath, toastNotifications, ] diff --git a/src/plugins/discover/public/application/main/hooks/use_url_tracking.ts b/src/plugins/discover/public/application/main/hooks/use_url_tracking.ts index e9afd3ed60349..e5f368b99b8ab 100644 --- a/src/plugins/discover/public/application/main/hooks/use_url_tracking.ts +++ b/src/plugins/discover/public/application/main/hooks/use_url_tracking.ts @@ -8,6 +8,7 @@ */ import { useEffect } from 'react'; +import { isOfAggregateQueryType } from '@kbn/es-query'; import { DiscoverSavedSearchContainer } from '../state_management/discover_saved_search_container'; import { useDiscoverServices } from '../../../hooks/use_discover_services'; @@ -23,7 +24,12 @@ export function useUrlTracking(savedSearchContainer: DiscoverSavedSearchContaine if (!dataView) { return; } - const trackingEnabled = Boolean(dataView.isPersisted() || savedSearch.id); + const trackingEnabled = + // Disable for ad-hoc data views as it can't be restored after a page refresh + Boolean(dataView.isPersisted() || savedSearch.id) || + // Enable for ES|QL, although it uses ad-hoc data views + isOfAggregateQueryType(savedSearch.searchSource.getField('query')); + urlTracker.setTrackingEnabled(trackingEnabled); }); diff --git a/src/plugins/discover/public/build_services.ts b/src/plugins/discover/public/build_services.ts index df194bc03fa0f..0aef34338c374 100644 --- a/src/plugins/discover/public/build_services.ts +++ b/src/plugins/discover/public/build_services.ts @@ -23,6 +23,8 @@ import type { AnalyticsServiceStart, AppMountParameters, ScopedHistory, + ThemeServiceStart, + UserProfileService, } from '@kbn/core/public'; import type { FilterManager, @@ -96,7 +98,8 @@ export interface DiscoverServices { history: History<HistoryLocationState>; getScopedHistory: <T>() => ScopedHistory<T | undefined> | undefined; setHeaderActionMenu: AppMountParameters['setHeaderActionMenu']; - theme: CoreStart['theme']; + theme: ThemeServiceStart; + userProfile: UserProfileService; filterManager: FilterManager; fieldFormats: FieldFormatsStart; dataViews: DataViewsContract; @@ -185,6 +188,7 @@ export const buildServices = memoize( embeddable: plugins.embeddable, i18n: core.i18n, theme: core.theme, + userProfile: core.userProfile, fieldFormats: plugins.fieldFormats, filterManager: plugins.data.query.filterManager, history, diff --git a/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/consts.ts b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/consts.ts new file mode 100644 index 0000000000000..1e6e0b1b2e9db --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/consts.ts @@ -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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export const DEPRECATION_LOGS_PROFILE_ID = 'deprecation-logs-profile'; +export const DEPRECATION_LOGS_PATTERN_PREFIX = '.logs-deprecation'; diff --git a/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/index.ts b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/index.ts new file mode 100644 index 0000000000000..8110f3371ce81 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/index.ts @@ -0,0 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export { createDeprecationLogsDataSourceProfileProvider } from './profile'; diff --git a/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/profile.test.ts b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/profile.test.ts new file mode 100644 index 0000000000000..c961f310f6e5a --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/profile.test.ts @@ -0,0 +1,73 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { createStubIndexPattern } from '@kbn/data-views-plugin/common/data_view.stub'; +import { createDataViewDataSource } from '../../../../../common/data_sources'; +import { DataSourceCategory, RootContext, SolutionType } from '../../../profiles'; +import { createDeprecationLogsDataSourceProfileProvider } from './profile'; +import type { ContextWithProfileId } from '../../../profile_service'; +import { DEPRECATION_LOGS_PROFILE_ID } from './consts'; + +describe('deprecationLogsProfileProvider', () => { + const deprecationLogsProfileProvider = createDeprecationLogsDataSourceProfileProvider(); + const VALID_INDEX_PATTERN = '.logs-deprecation.elasticsearch-default'; + const VALID_MIXED_INDEX_PATTERN = + '.logs-deprecation.elasticsearch-default,.logs-deprecation.abc,.logs-deprecation.def'; + const INVALID_MIXED_INDEX_PATTERN = '.logs-deprecation.elasticsearch-default,metrics-*'; + const INVALID_INDEX_PATTERN = 'my_source-access-*'; + const ROOT_CONTEXT: ContextWithProfileId<RootContext> = { + profileId: DEPRECATION_LOGS_PROFILE_ID, + solutionType: SolutionType.Default, + }; + const RESOLUTION_MATCH = { + isMatch: true, + context: { + category: DataSourceCategory.Logs, + }, + }; + const RESOLUTION_MISMATCH = { + isMatch: false, + }; + + it('should match data view sources with an allowed index pattern', () => { + const result = deprecationLogsProfileProvider.resolve({ + rootContext: ROOT_CONTEXT, + dataSource: createDataViewDataSource({ dataViewId: VALID_INDEX_PATTERN }), + dataView: createStubIndexPattern({ spec: { title: VALID_INDEX_PATTERN } }), + }); + expect(result).toEqual(RESOLUTION_MATCH); + }); + + it('should match data view sources with a mixed pattern containing allowed index patterns', () => { + const result = deprecationLogsProfileProvider.resolve({ + rootContext: ROOT_CONTEXT, + dataSource: createDataViewDataSource({ dataViewId: VALID_MIXED_INDEX_PATTERN }), + dataView: createStubIndexPattern({ spec: { title: VALID_MIXED_INDEX_PATTERN } }), + }); + expect(result).toEqual(RESOLUTION_MATCH); + }); + + it('should NOT match data view sources with not allowed index pattern', () => { + const result = deprecationLogsProfileProvider.resolve({ + rootContext: ROOT_CONTEXT, + dataSource: createDataViewDataSource({ dataViewId: INVALID_INDEX_PATTERN }), + dataView: createStubIndexPattern({ spec: { title: INVALID_INDEX_PATTERN } }), + }); + expect(result).toEqual(RESOLUTION_MISMATCH); + }); + + it('should NOT match data view sources with a mixed pattern containing not allowed index patterns', () => { + const result = deprecationLogsProfileProvider.resolve({ + rootContext: ROOT_CONTEXT, + dataSource: createDataViewDataSource({ dataViewId: INVALID_MIXED_INDEX_PATTERN }), + dataView: createStubIndexPattern({ spec: { title: INVALID_MIXED_INDEX_PATTERN } }), + }); + expect(result).toEqual(RESOLUTION_MISMATCH); + }); +}); diff --git a/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/profile.ts b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/profile.ts new file mode 100644 index 0000000000000..4d220892aea29 --- /dev/null +++ b/src/plugins/discover/public/context_awareness/profile_providers/common/deprecation_logs/profile.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { DataSourceCategory } from '../../../profiles'; +import { type DataSourceProfileProvider } from '../../../profiles'; +import { DEPRECATION_LOGS_PATTERN_PREFIX, DEPRECATION_LOGS_PROFILE_ID } from './consts'; +import { extractIndexPatternFrom } from '../../extract_index_pattern_from'; + +export const createDeprecationLogsDataSourceProfileProvider = + (): DataSourceProfileProvider<{}> => ({ + profileId: DEPRECATION_LOGS_PROFILE_ID, + profile: { + getDefaultAppState: () => () => ({ + columns: [ + { name: 'log.level', width: 150 }, + { name: 'message' }, + { name: 'elasticsearch.http.request.x_opaque_id', width: 250 }, + { name: 'elasticsearch.cluster.name', width: 250 }, + { name: 'elasticsearch.event.category', width: 250 }, + ], + }), + }, + resolve: (params) => { + const indexPattern = extractIndexPatternFrom(params); + + if (!checkAllIndicesInPatternAreDeprecationLogs(indexPattern)) { + return { isMatch: false }; + } + + return { + isMatch: true, + context: { + category: DataSourceCategory.Logs, + }, + }; + }, + }); + +/* + This function returns true if the index pattern belongs to deprecation logs. + It also considers multiple patterns separated by commas. +*/ +const checkAllIndicesInPatternAreDeprecationLogs = (indexPattern: string | null): boolean => { + if (!indexPattern) { + return false; + } + const indexPatternArray = indexPattern.split(','); + const result = indexPatternArray.reduce( + (acc, val) => acc && val.startsWith(DEPRECATION_LOGS_PATTERN_PREFIX), + true + ); + return result; +}; diff --git a/src/plugins/discover/public/context_awareness/profile_providers/register_profile_providers.ts b/src/plugins/discover/public/context_awareness/profile_providers/register_profile_providers.ts index b0ee4318dde2e..88c7628e9273a 100644 --- a/src/plugins/discover/public/context_awareness/profile_providers/register_profile_providers.ts +++ b/src/plugins/discover/public/context_awareness/profile_providers/register_profile_providers.ts @@ -28,6 +28,7 @@ import { } from './profile_provider_services'; import type { DiscoverServices } from '../../build_services'; import { createObservabilityRootProfileProvider } from './observability/observability_root_profile'; +import { createDeprecationLogsDataSourceProfileProvider } from './common/deprecation_logs'; /** * Register profile providers for root, data source, and document contexts to the profile profile services @@ -133,6 +134,7 @@ const createRootProfileProviders = (providerServices: ProfileProviderServices) = */ const createDataSourceProfileProviders = (providerServices: ProfileProviderServices) => [ createExampleDataSourceProfileProvider(), + createDeprecationLogsDataSourceProfileProvider(), ...createObservabilityLogsDataSourceProfileProviders(providerServices), ]; diff --git a/src/plugins/discover/public/context_awareness/profiles_manager.test.ts b/src/plugins/discover/public/context_awareness/profiles_manager.test.ts index 006b1c9e0da32..d12b56de911b8 100644 --- a/src/plugins/discover/public/context_awareness/profiles_manager.test.ts +++ b/src/plugins/discover/public/context_awareness/profiles_manager.test.ts @@ -26,6 +26,7 @@ describe('ProfilesManager', () => { jest.clearAllMocks(); mocks = createContextAwarenessMocks(); jest.spyOn(mocks.ebtManagerMock, 'updateProfilesContextWith'); + jest.spyOn(mocks.ebtManagerMock, 'trackContextualProfileResolvedEvent'); }); it('should return default profiles', () => { @@ -74,6 +75,15 @@ describe('ProfilesManager', () => { 'root-profile', 'data-source-profile', ]); + + expect(mocks.ebtManagerMock.trackContextualProfileResolvedEvent).toHaveBeenNthCalledWith(1, { + profileId: 'root-profile', + contextLevel: 'rootLevel', + }); + expect(mocks.ebtManagerMock.trackContextualProfileResolvedEvent).toHaveBeenNthCalledWith(2, { + profileId: 'data-source-profile', + contextLevel: 'dataSourceLevel', + }); }); it('should expose profiles as an observable', async () => { @@ -152,7 +162,7 @@ describe('ProfilesManager', () => { resolveSpy.mockRejectedValue(new Error('Failed to resolve')); await mocks.profilesManagerMock.resolveRootProfile({ solutionNavId: 'newSolutionNavId' }); expect(addLog).toHaveBeenCalledWith( - '[ProfilesManager] root context resolution failed with params: {\n "solutionNavId": "newSolutionNavId"\n}', + '[ProfilesManager] rootLevel context resolution failed with params: {\n "solutionNavId": "newSolutionNavId"\n}', new Error('Failed to resolve') ); profiles = mocks.profilesManagerMock.getProfiles(); @@ -177,7 +187,7 @@ describe('ProfilesManager', () => { query: { esql: 'from logs-*' }, }); expect(addLog).toHaveBeenCalledWith( - '[ProfilesManager] data source context resolution failed with params: {\n "esqlQuery": "from logs-*"\n}', + '[ProfilesManager] dataSourceLevel context resolution failed with params: {\n "esqlQuery": "from logs-*"\n}', new Error('Failed to resolve') ); profiles = mocks.profilesManagerMock.getProfiles(); @@ -199,10 +209,14 @@ describe('ProfilesManager', () => { }); profiles = mocks.profilesManagerMock.getProfiles({ record: record2 }); expect(addLog).toHaveBeenCalledWith( - '[ProfilesManager] document context resolution failed with params: {\n "recordId": "logstash-2014.09.09::388::"\n}', + '[ProfilesManager] documentLevel context resolution failed with params: {\n "recordId": "logstash-2014.09.09::388::"\n}', new Error('Failed to resolve') ); expect(profiles).toEqual([{}, {}, {}]); + expect(mocks.ebtManagerMock.trackContextualProfileResolvedEvent).toHaveBeenCalledWith({ + profileId: 'document-profile', + contextLevel: 'documentLevel', + }); }); it('should cancel existing root profile resolution when another is triggered', async () => { diff --git a/src/plugins/discover/public/context_awareness/profiles_manager.ts b/src/plugins/discover/public/context_awareness/profiles_manager.ts index d5714565dacd2..fefbe7b5c08fe 100644 --- a/src/plugins/discover/public/context_awareness/profiles_manager.ts +++ b/src/plugins/discover/public/context_awareness/profiles_manager.ts @@ -51,6 +51,12 @@ export interface GetProfilesOptions { record?: DataTableRecord; } +export enum ContextualProfileLevel { + rootLevel = 'rootLevel', + dataSourceLevel = 'dataSourceLevel', + documentLevel = 'documentLevel', +} + export class ProfilesManager { private readonly rootContext$: BehaviorSubject<ContextWithProfileId<RootContext>>; private readonly dataSourceContext$: BehaviorSubject<ContextWithProfileId<DataSourceContext>>; @@ -104,7 +110,7 @@ export class ProfilesManager { try { context = await this.rootProfileService.resolve(params); } catch (e) { - logResolutionError(ContextType.Root, serializedParams, e); + logResolutionError(ContextualProfileLevel.rootLevel, serializedParams, e); } if (abortController.signal.aborted) { @@ -142,7 +148,7 @@ export class ProfilesManager { rootContext: this.rootContext$.getValue(), }); } catch (e) { - logResolutionError(ContextType.DataSource, serializedParams, e); + logResolutionError(ContextualProfileLevel.dataSourceLevel, serializedParams, e); } if (abortController.signal.aborted) { @@ -179,11 +185,20 @@ export class ProfilesManager { dataSourceContext: this.dataSourceContext$.getValue(), }); } catch (e) { - logResolutionError(ContextType.Document, { recordId: params.record.id }, e); + logResolutionError( + ContextualProfileLevel.documentLevel, + { recordId: params.record.id }, + e + ); context = this.documentProfileService.defaultContext; } } + this.ebtManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.documentLevel, + profileId: context.profileId, + }); + return context; }, }); @@ -223,6 +238,15 @@ export class ProfilesManager { private trackActiveProfiles(rootContextProfileId: string, dataSourceContextProfileId: string) { const dscProfiles = [rootContextProfileId, dataSourceContextProfileId]; + this.ebtManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: rootContextProfileId, + }); + this.ebtManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.dataSourceLevel, + profileId: dataSourceContextProfileId, + }); + this.ebtManager.updateProfilesContextWith(dscProfiles); } } @@ -256,19 +280,13 @@ const recordHasContext = ( return Boolean(record && 'context' in record); }; -enum ContextType { - Root = 'root', - DataSource = 'data source', - Document = 'document', -} - const logResolutionError = <TParams, TError>( - profileType: ContextType, + profileLevel: ContextualProfileLevel, params: TParams, error: TError ) => { addLog( - `[ProfilesManager] ${profileType} context resolution failed with params: ${JSON.stringify( + `[ProfilesManager] ${profileLevel} context resolution failed with params: ${JSON.stringify( params, null, 2 diff --git a/src/plugins/discover/public/embeddable/get_search_embeddable_factory.tsx b/src/plugins/discover/public/embeddable/get_search_embeddable_factory.tsx index c1b5cf9f7695f..1f97e2de66390 100644 --- a/src/plugins/discover/public/embeddable/get_search_embeddable_factory.tsx +++ b/src/plugins/discover/public/embeddable/get_search_embeddable_factory.tsx @@ -20,6 +20,7 @@ import { i18n } from '@kbn/i18n'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { FetchContext, + getUnchangingComparator, initializeTimeRange, initializeTitles, useBatchedPublishingSubjects, @@ -186,7 +187,7 @@ export const getSearchEmbeddableFactory = ({ defaultPanelTitle$.next(undefined); defaultPanelDescription$.next(undefined); }, - serializeState: async () => + serializeState: () => serializeState({ uuid, initialState, @@ -194,7 +195,6 @@ export const getSearchEmbeddableFactory = ({ serializeTitles, serializeTimeRange: timeRange.serialize, savedObjectId: savedObjectId$.getValue(), - discoverServices, }), getInspectorAdapters: () => searchEmbeddable.stateManager.inspectorAdapters.getValue(), }, @@ -202,6 +202,7 @@ export const getSearchEmbeddableFactory = ({ ...titleComparators, ...timeRange.comparators, ...searchEmbeddable.comparators, + rawSavedObjectAttributes: getUnchangingComparator(), savedObjectId: [savedObjectId$, (value) => savedObjectId$.next(value)], savedObjectTitle: [defaultPanelTitle$, (value) => defaultPanelTitle$.next(value)], savedObjectDescription: [ diff --git a/src/plugins/discover/public/embeddable/types.ts b/src/plugins/discover/public/embeddable/types.ts index 94d0b10cc3f64..0443801ec7245 100644 --- a/src/plugins/discover/public/embeddable/types.ts +++ b/src/plugins/discover/public/embeddable/types.ts @@ -68,9 +68,13 @@ export interface NonPersistedDisplayOptions { enableFilters?: boolean; } +export type EditableSavedSearchAttributes = Partial< + Pick<SavedSearchAttributes, (typeof EDITABLE_SAVED_SEARCH_KEYS)[number]> +>; + export type SearchEmbeddableSerializedState = SerializedTitles & SerializedTimeRange & - Partial<Pick<SavedSearchAttributes, (typeof EDITABLE_SAVED_SEARCH_KEYS)[number]>> & { + EditableSavedSearchAttributes & { // by value attributes?: SavedSearchAttributes & { references: SavedSearch['references'] }; // by reference @@ -81,6 +85,7 @@ export type SearchEmbeddableSerializedState = SerializedTitles & export type SearchEmbeddableRuntimeState = SearchEmbeddableSerializedAttributes & SerializedTitles & SerializedTimeRange & { + rawSavedObjectAttributes?: EditableSavedSearchAttributes; savedObjectTitle?: string; savedObjectId?: string; savedObjectDescription?: string; diff --git a/src/plugins/discover/public/embeddable/utils/serialization_utils.test.ts b/src/plugins/discover/public/embeddable/utils/serialization_utils.test.ts index c91aacb89aff6..2a7a23b3600a7 100644 --- a/src/plugins/discover/public/embeddable/utils/serialization_utils.test.ts +++ b/src/plugins/discover/public/embeddable/utils/serialization_utils.test.ts @@ -121,7 +121,6 @@ describe('Serialization utils', () => { savedSearch, serializeTitles: jest.fn(), serializeTimeRange: jest.fn(), - discoverServices: discoverServiceMock, }); expect(serializedState).toEqual({ @@ -148,19 +147,16 @@ describe('Serialization utils', () => { searchSource, }; - beforeAll(() => { - discoverServiceMock.savedSearch.get = jest.fn().mockResolvedValue(savedSearch); - }); - - test('equal state', async () => { - const serializedState = await serializeState({ + test('equal state', () => { + const serializedState = serializeState({ uuid, - initialState: {}, + initialState: { + rawSavedObjectAttributes: savedSearch, + }, savedSearch, serializeTitles: jest.fn(), serializeTimeRange: jest.fn(), savedObjectId: 'test-id', - discoverServices: discoverServiceMock, }); expect(serializedState).toEqual({ @@ -171,15 +167,16 @@ describe('Serialization utils', () => { }); }); - test('overwrite state', async () => { - const serializedState = await serializeState({ + test('overwrite state', () => { + const serializedState = serializeState({ uuid, - initialState: {}, + initialState: { + rawSavedObjectAttributes: savedSearch, + }, savedSearch: { ...savedSearch, sampleSize: 500, sort: [['order_date', 'asc']] }, serializeTitles: jest.fn(), serializeTimeRange: jest.fn(), savedObjectId: 'test-id', - discoverServices: discoverServiceMock, }); expect(serializedState).toEqual({ diff --git a/src/plugins/discover/public/embeddable/utils/serialization_utils.ts b/src/plugins/discover/public/embeddable/utils/serialization_utils.ts index f193d52054a3c..397d078dba3e3 100644 --- a/src/plugins/discover/public/embeddable/utils/serialization_utils.ts +++ b/src/plugins/discover/public/embeddable/utils/serialization_utils.ts @@ -43,6 +43,7 @@ export const deserializeState = async ({ const { get } = discoverServices.savedSearch; const so = await get(savedObjectId, true); + const rawSavedObjectAttributes = pick(so, EDITABLE_SAVED_SEARCH_KEYS); const savedObjectOverride = pick(serializedState.rawState, EDITABLE_SAVED_SEARCH_KEYS); return { // ignore the time range from the saved object - only global time range + panel time range matter @@ -53,6 +54,9 @@ export const deserializeState = async ({ // Overwrite SO state with dashboard state for title, description, columns, sort, etc. ...panelState, ...savedObjectOverride, + + // back up the original saved object attributes for comparison + rawSavedObjectAttributes, }; } else { // by value @@ -72,14 +76,13 @@ export const deserializeState = async ({ } }; -export const serializeState = async ({ +export const serializeState = ({ uuid, initialState, savedSearch, serializeTitles, serializeTimeRange, savedObjectId, - discoverServices, }: { uuid: string; initialState: SearchEmbeddableRuntimeState; @@ -87,19 +90,17 @@ export const serializeState = async ({ serializeTitles: () => SerializedTitles; serializeTimeRange: () => SerializedTimeRange; savedObjectId?: string; - discoverServices: DiscoverServices; -}): Promise<SerializedPanelState<SearchEmbeddableSerializedState>> => { +}): SerializedPanelState<SearchEmbeddableSerializedState> => { const searchSource = savedSearch.searchSource; const { searchSourceJSON, references: originalReferences } = searchSource.serialize(); const savedSearchAttributes = toSavedSearchAttributes(savedSearch, searchSourceJSON); if (savedObjectId) { - const { get } = discoverServices.savedSearch; - const so = await get(savedObjectId); + const editableAttributesBackup = initialState.rawSavedObjectAttributes ?? {}; // only save the current state that is **different** than the saved object state const overwriteState = EDITABLE_SAVED_SEARCH_KEYS.reduce((prev, key) => { - if (deepEqual(savedSearchAttributes[key], so[key])) { + if (deepEqual(savedSearchAttributes[key], editableAttributesBackup[key])) { return prev; } return { ...prev, [key]: savedSearchAttributes[key] }; diff --git a/src/plugins/discover/public/plugin.tsx b/src/plugins/discover/public/plugin.tsx index 959ea78d50ecb..2529b48246105 100644 --- a/src/plugins/discover/public/plugin.tsx +++ b/src/plugins/discover/public/plugin.tsx @@ -179,7 +179,7 @@ export class DiscoverPlugin window.dispatchEvent(new HashChangeEvent('hashchange')); }); - ebtManager.enableContext(); + ebtManager.onDiscoverAppMounted(); const services = buildServices({ core: coreStart, @@ -228,7 +228,7 @@ export class DiscoverPlugin }); return () => { - ebtManager.disableAndResetContext(); + ebtManager.onDiscoverAppUnmounted(); unlistenParentHistory(); unmount(); appUnMounted(); diff --git a/src/plugins/discover/public/services/discover_ebt_manager.test.ts b/src/plugins/discover/public/services/discover_ebt_manager.test.ts index 0ed20dacdb0ce..cfc5fa9fbc24c 100644 --- a/src/plugins/discover/public/services/discover_ebt_manager.test.ts +++ b/src/plugins/discover/public/services/discover_ebt_manager.test.ts @@ -11,6 +11,7 @@ import { BehaviorSubject } from 'rxjs'; import { coreMock } from '@kbn/core/public/mocks'; import { DiscoverEBTManager } from './discover_ebt_manager'; import { FieldsMetadataPublicStart } from '@kbn/fields-metadata-plugin/public'; +import { ContextualProfileLevel } from '../context_awareness/profiles_manager'; describe('DiscoverEBTManager', () => { let discoverEBTContextManager: DiscoverEBTManager; @@ -31,6 +32,7 @@ describe('DiscoverEBTManager', () => { beforeEach(() => { discoverEBTContextManager = new DiscoverEBTManager(); + (coreSetupMock.analytics.reportEvent as jest.Mock).mockClear(); }); describe('register', () => { @@ -95,7 +97,7 @@ describe('DiscoverEBTManager', () => { shouldInitializeCustomContext: true, shouldInitializeCustomEvents: false, }); - discoverEBTContextManager.enableContext(); + discoverEBTContextManager.onDiscoverAppMounted(); discoverEBTContextManager.updateProfilesContextWith(dscProfiles); expect(discoverEBTContextManager.getProfilesContext()).toBe(dscProfiles); @@ -112,7 +114,7 @@ describe('DiscoverEBTManager', () => { shouldInitializeCustomContext: true, shouldInitializeCustomEvents: false, }); - discoverEBTContextManager.enableContext(); + discoverEBTContextManager.onDiscoverAppMounted(); discoverEBTContextManager.updateProfilesContextWith(dscProfiles); expect(discoverEBTContextManager.getProfilesContext()).toBe(dscProfiles); @@ -140,14 +142,14 @@ describe('DiscoverEBTManager', () => { shouldInitializeCustomContext: true, shouldInitializeCustomEvents: false, }); - discoverEBTContextManager.enableContext(); + discoverEBTContextManager.onDiscoverAppMounted(); discoverEBTContextManager.updateProfilesContextWith(dscProfiles); expect(discoverEBTContextManager.getProfilesContext()).toBe(dscProfiles); - discoverEBTContextManager.disableAndResetContext(); + discoverEBTContextManager.onDiscoverAppUnmounted(); expect(discoverEBTContextManager.getProfilesContext()).toEqual([]); discoverEBTContextManager.updateProfilesContextWith(dscProfiles); expect(discoverEBTContextManager.getProfilesContext()).toEqual([]); - discoverEBTContextManager.enableContext(); + discoverEBTContextManager.onDiscoverAppMounted(); discoverEBTContextManager.updateProfilesContextWith(dscProfiles); expect(discoverEBTContextManager.getProfilesContext()).toBe(dscProfiles); }); @@ -239,4 +241,117 @@ describe('DiscoverEBTManager', () => { }); }); }); + + describe('trackContextualProfileResolvedEvent', () => { + it('should track the event when a next contextual profile is resolved', async () => { + discoverEBTContextManager.initialize({ + core: coreSetupMock, + shouldInitializeCustomContext: false, + shouldInitializeCustomEvents: true, + }); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: 'test', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenNthCalledWith( + 1, + 'discover_profile_resolved', + { + contextLevel: 'rootLevel', + profileId: 'test', + } + ); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.dataSourceLevel, + profileId: 'data-source-test', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenNthCalledWith( + 2, + 'discover_profile_resolved', + { + contextLevel: 'dataSourceLevel', + profileId: 'data-source-test', + } + ); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.documentLevel, + profileId: 'document-test', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenNthCalledWith( + 3, + 'discover_profile_resolved', + { + contextLevel: 'documentLevel', + profileId: 'document-test', + } + ); + }); + + it('should not trigger duplicate requests', async () => { + discoverEBTContextManager.initialize({ + core: coreSetupMock, + shouldInitializeCustomContext: false, + shouldInitializeCustomEvents: true, + }); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: 'test1', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenCalledTimes(1); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: 'test1', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenCalledTimes(1); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: 'test2', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenCalledTimes(2); + }); + + it('should trigger similar requests after remount', async () => { + discoverEBTContextManager.initialize({ + core: coreSetupMock, + shouldInitializeCustomContext: false, + shouldInitializeCustomEvents: true, + }); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: 'test1', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenCalledTimes(1); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: 'test1', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenCalledTimes(1); + + discoverEBTContextManager.onDiscoverAppUnmounted(); + discoverEBTContextManager.onDiscoverAppMounted(); + + discoverEBTContextManager.trackContextualProfileResolvedEvent({ + contextLevel: ContextualProfileLevel.rootLevel, + profileId: 'test1', + }); + + expect(coreSetupMock.analytics.reportEvent).toHaveBeenCalledTimes(2); + }); + }); }); diff --git a/src/plugins/discover/public/services/discover_ebt_manager.ts b/src/plugins/discover/public/services/discover_ebt_manager.ts index 420eb6c244444..afa93f4d55743 100644 --- a/src/plugins/discover/public/services/discover_ebt_manager.ts +++ b/src/plugins/discover/public/services/discover_ebt_manager.ts @@ -11,7 +11,11 @@ import { BehaviorSubject } from 'rxjs'; import { isEqual } from 'lodash'; import type { CoreSetup } from '@kbn/core-lifecycle-browser'; import type { FieldsMetadataPublicStart } from '@kbn/fields-metadata-plugin/public'; +import { ContextualProfileLevel } from '../context_awareness/profiles_manager'; +/** + * Field usage events i.e. when a field is selected in the data table, removed from the data table, or a filter is added + */ const FIELD_USAGE_EVENT_TYPE = 'discover_field_usage'; const FIELD_USAGE_EVENT_NAME = 'eventName'; const FIELD_USAGE_FIELD_NAME = 'fieldName'; @@ -30,6 +34,19 @@ interface FieldUsageEventData { [FIELD_USAGE_FILTER_OPERATION]?: FilterOperation; } +/** + * Contextual profile resolved event i.e. when a different contextual profile is resolved at root, data source, or document level + * Duplicated events for the same profile level will not be sent. + */ +const CONTEXTUAL_PROFILE_RESOLVED_EVENT_TYPE = 'discover_profile_resolved'; +const CONTEXTUAL_PROFILE_LEVEL = 'contextLevel'; +const CONTEXTUAL_PROFILE_ID = 'profileId'; + +interface ContextualProfileResolvedEventData { + [CONTEXTUAL_PROFILE_LEVEL]: ContextualProfileLevel; + [CONTEXTUAL_PROFILE_ID]: string; +} + export interface DiscoverEBTContextProps { discoverProfiles: string[]; // Discover Context Awareness Profiles } @@ -39,8 +56,19 @@ export class DiscoverEBTManager { private isCustomContextEnabled: boolean = false; private customContext$: DiscoverEBTContext | undefined; private reportEvent: CoreSetup['analytics']['reportEvent'] | undefined; + private lastResolvedContextProfiles: { + [ContextualProfileLevel.rootLevel]: string | undefined; + [ContextualProfileLevel.dataSourceLevel]: string | undefined; + [ContextualProfileLevel.documentLevel]: string | undefined; + }; - constructor() {} + constructor() { + this.lastResolvedContextProfiles = { + [ContextualProfileLevel.rootLevel]: undefined, + [ContextualProfileLevel.dataSourceLevel]: undefined, + [ContextualProfileLevel.documentLevel]: undefined, + }; + } // https://docs.elastic.dev/telemetry/collection/event-based-telemetry public initialize({ @@ -104,17 +132,40 @@ export class DiscoverEBTManager { }, }, }); + core.analytics.registerEventType({ + eventType: CONTEXTUAL_PROFILE_RESOLVED_EVENT_TYPE, + schema: { + [CONTEXTUAL_PROFILE_LEVEL]: { + type: 'keyword', + _meta: { + description: + 'The context level at which it was resolved i.e. rootLevel, dataSourceLevel, documentLevel', + }, + }, + [CONTEXTUAL_PROFILE_ID]: { + type: 'keyword', + _meta: { + description: 'The resolved name of the active profile', + }, + }, + }, + }); this.reportEvent = core.analytics.reportEvent; } } - public enableContext() { + public onDiscoverAppMounted() { this.isCustomContextEnabled = true; } - public disableAndResetContext() { + public onDiscoverAppUnmounted() { this.updateProfilesContextWith([]); this.isCustomContextEnabled = false; + this.lastResolvedContextProfiles = { + [ContextualProfileLevel.rootLevel]: undefined, + [ContextualProfileLevel.dataSourceLevel]: undefined, + [ContextualProfileLevel.documentLevel]: undefined, + }; } public updateProfilesContextWith(discoverProfiles: DiscoverEBTContextProps['discoverProfiles']) { @@ -216,4 +267,30 @@ export class DiscoverEBTManager { filterOperation, }); } + + public trackContextualProfileResolvedEvent({ + contextLevel, + profileId, + }: { + contextLevel: ContextualProfileLevel; + profileId: string; + }) { + if (!this.reportEvent) { + return; + } + + if (this.lastResolvedContextProfiles[contextLevel] === profileId) { + // avoid sending duplicate events to EBT + return; + } + + this.lastResolvedContextProfiles[contextLevel] = profileId; + + const eventData: ContextualProfileResolvedEventData = { + [CONTEXTUAL_PROFILE_LEVEL]: contextLevel, + [CONTEXTUAL_PROFILE_ID]: profileId, + }; + + this.reportEvent(CONTEXTUAL_PROFILE_RESOLVED_EVENT_TYPE, eventData); + } } diff --git a/src/plugins/discover/public/utils/initialize_kbn_url_tracking.ts b/src/plugins/discover/public/utils/initialize_kbn_url_tracking.ts index 480ada838581d..5119d51a69ce1 100644 --- a/src/plugins/discover/public/utils/initialize_kbn_url_tracking.ts +++ b/src/plugins/discover/public/utils/initialize_kbn_url_tracking.ts @@ -35,7 +35,7 @@ export function initializeKbnUrlTracking({ }) { /** * Store the setting of enabling / disabling url - * it's should be disabled for ad-hoc data views to omit error messages + * it's should be disabled for ad-hoc data views (but enabled for ES|QL) to omit error messages * - When you've added an ad hoc data view in Discover * - Continued your work in different parts of Kibana * - You've closed the Kibana tab diff --git a/src/plugins/embeddable/kibana.jsonc b/src/plugins/embeddable/kibana.jsonc index ea198de6386a3..8a012aefbc30b 100644 --- a/src/plugins/embeddable/kibana.jsonc +++ b/src/plugins/embeddable/kibana.jsonc @@ -18,7 +18,7 @@ "contentManagement" ], "optionalPlugins": ["savedObjectsTaggingOss", "usageCollection"], - "requiredBundles": ["savedObjects", "kibanaUtils", "presentationPanel"], + "requiredBundles": ["kibanaUtils", "presentationPanel"], "extraPublicDirs": ["common"] } } diff --git a/src/plugins/embeddable/public/index.ts b/src/plugins/embeddable/public/index.ts index 19d3bd76c1a77..22d845be9c933 100644 --- a/src/plugins/embeddable/public/index.ts +++ b/src/plugins/embeddable/public/index.ts @@ -82,7 +82,6 @@ export type { SelfStyledEmbeddable, ValueClickContext, } from './lib'; -export { AttributeService, ATTRIBUTE_SERVICE_KEY } from './lib/attribute_service'; export type { EmbeddableSetup, EmbeddableSetupDependencies, diff --git a/src/plugins/embeddable/public/lib/attribute_service/attribute_service.mock.tsx b/src/plugins/embeddable/public/lib/attribute_service/attribute_service.mock.tsx deleted file mode 100644 index 0500ca563593f..0000000000000 --- a/src/plugins/embeddable/public/lib/attribute_service/attribute_service.mock.tsx +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { EmbeddableInput, SavedObjectEmbeddableInput } from '..'; -import { coreMock } from '@kbn/core/public/mocks'; -import { AttributeServiceOptions } from './attribute_service'; -import { CoreStart } from '@kbn/core/public'; -import { AttributeService, ATTRIBUTE_SERVICE_KEY } from '.'; - -export const mockAttributeService = < - A extends { title: string }, - V extends EmbeddableInput & { [ATTRIBUTE_SERVICE_KEY]: A } = EmbeddableInput & { - [ATTRIBUTE_SERVICE_KEY]: A; - }, - R extends SavedObjectEmbeddableInput = SavedObjectEmbeddableInput, - M extends unknown = unknown ->( - type: string, - options: AttributeServiceOptions<A, M>, - customCore?: jest.Mocked<CoreStart> -): AttributeService<A, V, R, M> => { - const core = customCore ? customCore : coreMock.createStart(); - return new AttributeService<A, V, R, M>( - type, - core.notifications.toasts, - options, - jest.fn().mockReturnValue(() => ({ getDisplayName: () => type })) - ); -}; diff --git a/src/plugins/embeddable/public/lib/attribute_service/attribute_service.test.ts b/src/plugins/embeddable/public/lib/attribute_service/attribute_service.test.ts deleted file mode 100644 index 3b86bdfb7d664..0000000000000 --- a/src/plugins/embeddable/public/lib/attribute_service/attribute_service.test.ts +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ATTRIBUTE_SERVICE_KEY, AttributeServiceUnwrapResult } from './attribute_service'; -import { mockAttributeService } from './attribute_service.mock'; -import { coreMock } from '@kbn/core/public/mocks'; -import { OnSaveProps } from '@kbn/saved-objects-plugin/public/save_modal'; - -interface TestAttributes { - title: string; - testAttr1?: string; - testAttr2?: { array: unknown[]; testAttr3: string }; -} - -interface TestByValueInput { - id: string; - [ATTRIBUTE_SERVICE_KEY]: TestAttributes; -} - -describe('attributeService', () => { - const defaultTestType = 'defaultTestType'; - let attributes: TestAttributes; - let byValueInput: TestByValueInput; - let byReferenceInput: { id: string; savedObjectId: string }; - const defaultSaveMethod = ( - testAttributes: TestAttributes, - savedObjectId?: string - ): Promise<{ id: string }> => { - return new Promise(() => { - return { id: '123' }; - }); - }; - - const defaultUnwrapMethod = ( - savedObjectId: string - ): Promise<AttributeServiceUnwrapResult<TestAttributes>> => { - return new Promise(() => { - return { ...attributes }; - }); - }; - const defaultCheckForDuplicateTitle = (props: OnSaveProps): Promise<true> => { - return new Promise(() => { - return true; - }); - }; - const options = { - saveMethod: defaultSaveMethod, - unwrapMethod: defaultUnwrapMethod, - checkForDuplicateTitle: defaultCheckForDuplicateTitle, - }; - - beforeEach(() => { - attributes = { - title: 'ultra title', - testAttr1: 'neat first attribute', - testAttr2: { array: [1, 2, 3], testAttr3: 'super attribute' }, - }; - byValueInput = { - id: '456', - attributes, - }; - byReferenceInput = { - id: '456', - savedObjectId: '123', - }; - }); - - describe('determining input type', () => { - const defaultAttributeService = mockAttributeService<TestAttributes>(defaultTestType, options); - const customAttributeService = mockAttributeService<TestAttributes, TestByValueInput>( - defaultTestType, - options - ); - - it('can determine input type given default types', () => { - expect( - defaultAttributeService.inputIsRefType({ id: '456', savedObjectId: '123' }) - ).toBeTruthy(); - expect( - defaultAttributeService.inputIsRefType({ - id: '456', - attributes: { title: 'wow I am by value' }, - }) - ).toBeFalsy(); - }); - it('can determine input type given custom types', () => { - expect( - customAttributeService.inputIsRefType({ id: '456', savedObjectId: '123' }) - ).toBeTruthy(); - expect( - customAttributeService.inputIsRefType({ - id: '456', - [ATTRIBUTE_SERVICE_KEY]: { title: 'wow I am by value' }, - }) - ).toBeFalsy(); - }); - }); - - describe('unwrapping attributes', () => { - it('does not throw error when given reference type input with no unwrap method', async () => { - const attributeService = mockAttributeService<TestAttributes>(defaultTestType, { - saveMethod: defaultSaveMethod, - checkForDuplicateTitle: jest.fn(), - }); - expect(await attributeService.unwrapAttributes(byReferenceInput)).toEqual({ - attributes: byReferenceInput, - }); - }); - - it('returns attributes when when given value type input', async () => { - const attributeService = mockAttributeService<TestAttributes>(defaultTestType, options); - expect(await attributeService.unwrapAttributes(byValueInput)).toEqual({ attributes }); - }); - - it('runs attributes through a custom unwrap method', async () => { - const attributeService = mockAttributeService<TestAttributes>(defaultTestType, { - saveMethod: defaultSaveMethod, - unwrapMethod: (savedObjectId) => { - return new Promise((resolve) => { - return resolve({ - attributes: { - ...attributes, - testAttr2: { array: [1, 2, 3, 4, 5], testAttr3: 'kibanana' }, - }, - }); - }); - }, - checkForDuplicateTitle: jest.fn(), - }); - expect(await attributeService.unwrapAttributes(byReferenceInput)).toEqual({ - attributes: { - ...attributes, - testAttr2: { array: [1, 2, 3, 4, 5], testAttr3: 'kibanana' }, - }, - }); - }); - }); - - describe('wrapping attributes', () => { - it('returns given attributes when use ref type is false', async () => { - const attributeService = mockAttributeService<TestAttributes>(defaultTestType, options); - expect(await attributeService.wrapAttributes(attributes, false)).toEqual({ attributes }); - }); - - it('calls saveMethod with appropriate parameters', async () => { - const core = coreMock.createStart(); - const saveMethod = jest.fn(); - saveMethod.mockReturnValueOnce({}); - const attributeService = mockAttributeService<TestAttributes>( - defaultTestType, - { - saveMethod, - unwrapMethod: defaultUnwrapMethod, - checkForDuplicateTitle: defaultCheckForDuplicateTitle, - }, - core - ); - expect(await attributeService.wrapAttributes(attributes, true, byReferenceInput)).toEqual( - byReferenceInput - ); - expect(saveMethod).toHaveBeenCalledWith(attributes, '123'); - }); - - it('uses custom save method when given an id', async () => { - const saveMethod = jest.fn().mockReturnValue({ id: '123' }); - const attributeService = mockAttributeService<TestAttributes>(defaultTestType, { - saveMethod, - unwrapMethod: defaultUnwrapMethod, - checkForDuplicateTitle: defaultCheckForDuplicateTitle, - }); - expect(await attributeService.wrapAttributes(attributes, true, byReferenceInput)).toEqual( - byReferenceInput - ); - expect(saveMethod).toHaveBeenCalledWith(attributes, byReferenceInput.savedObjectId); - }); - - it('uses custom save method given no id', async () => { - const saveMethod = jest.fn().mockReturnValue({ id: '678' }); - const attributeService = mockAttributeService<TestAttributes>(defaultTestType, { - saveMethod, - unwrapMethod: defaultUnwrapMethod, - checkForDuplicateTitle: defaultCheckForDuplicateTitle, - }); - expect(await attributeService.wrapAttributes(attributes, true)).toEqual({ - savedObjectId: '678', - }); - expect(saveMethod).toHaveBeenCalledWith(attributes, undefined); - }); - }); -}); diff --git a/src/plugins/embeddable/public/lib/attribute_service/index.ts b/src/plugins/embeddable/public/lib/attribute_service/index.ts deleted file mode 100644 index 7e41bfc6ceec6..0000000000000 --- a/src/plugins/embeddable/public/lib/attribute_service/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export { AttributeService, ATTRIBUTE_SERVICE_KEY } from './attribute_service'; diff --git a/src/plugins/embeddable/public/lib/containers/container.ts b/src/plugins/embeddable/public/lib/containers/container.ts index 8e7487323cf44..a160c469f05c3 100644 --- a/src/plugins/embeddable/public/lib/containers/container.ts +++ b/src/plugins/embeddable/public/lib/containers/container.ts @@ -44,7 +44,6 @@ import { IContainer, PanelState, } from './i_container'; -import { reactEmbeddableRegistryHasKey } from '../../react_embeddable_system'; const getKeys = <T extends {}>(o: T): Array<keyof T> => Object.keys(o) as Array<keyof T>; @@ -548,17 +547,6 @@ export abstract class Container< } private async onPanelAdded(panel: PanelState) { - // do nothing if this panel's type is in the new Embeddable registry. - if (reactEmbeddableRegistryHasKey(panel.type)) { - this.updateOutput({ - embeddableLoaded: { - ...this.output.embeddableLoaded, - [panel.explicitInput.id]: true, - }, - } as Partial<TContainerOutput>); - return; - } - this.updateOutput({ embeddableLoaded: { ...this.output.embeddableLoaded, diff --git a/src/plugins/embeddable/public/lib/embeddable_placement/embeddable_placement_registry.ts b/src/plugins/embeddable/public/lib/embeddable_placement/embeddable_placement_registry.ts deleted file mode 100644 index de54efd2db6fb..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddable_placement/embeddable_placement_registry.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -type GetPanelPlacementSettings<StateType> = (serializedState: StateType) => { - width?: number; - height?: number; - strategy?: string; -}; - -const registry: Map<string, GetPanelPlacementSettings<any>> = new Map(); - -export const registerEmbeddablePlacementStrategy = <StateType>( - panelType: string, - getPanelPlacementSettings: GetPanelPlacementSettings<StateType> -) => { - if (registry.has(panelType)) { - throw new Error(`Embeddable placement for embeddable type ${panelType} already exists`); - } - - registry.set(panelType, getPanelPlacementSettings); -}; - -export const getEmbeddablePlacementStrategy = (panelType: string) => { - return registry.get(panelType); -}; diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/edit_legacy_embeddable.test.tsx b/src/plugins/embeddable/public/lib/embeddables/compatibility/edit_legacy_embeddable.test.tsx deleted file mode 100644 index 4def23c8801c6..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/edit_legacy_embeddable.test.tsx +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { of } from 'rxjs'; - -import { embeddablePluginMock } from '../../../mocks'; -import { applicationServiceMock } from '@kbn/core/public/mocks'; -import { Embeddable, EmbeddableInput, ViewMode } from '../..'; -import { canEditEmbeddable, editLegacyEmbeddable } from './edit_legacy_embeddable'; -import { ContactCardEmbeddable } from '../../test_samples'; -import { core, embeddableStart } from '../../../kibana_services'; - -const applicationMock = applicationServiceMock.createStartContract(); -const stateTransferMock = embeddablePluginMock.createStartContract().getStateTransfer(); - -// mock app id -core.application.currentAppId$ = of('superCoolCurrentApp'); - -class EditableEmbeddable extends Embeddable { - public readonly type = 'EDITABLE_EMBEDDABLE'; - - constructor(input: EmbeddableInput, editable: boolean) { - super(input, { - editUrl: 'www.google.com', - editable, - }); - } - - public reload() {} -} - -test('canEditEmbeddable returns true when edit url is available, in edit mode and editable', () => { - expect( - canEditEmbeddable(new EditableEmbeddable({ id: '123', viewMode: ViewMode.EDIT }, true)) - ).toBe(true); -}); - -test('canEditEmbeddable returns false when edit url is not available', async () => { - const embeddable = new ContactCardEmbeddable( - { - id: '123', - firstName: 'sue', - viewMode: ViewMode.EDIT, - }, - { - execAction: () => Promise.resolve(undefined), - } - ); - expect(canEditEmbeddable(embeddable)).toBe(false); -}); - -test('canEditEmbeddable returns false when edit url is available but in view mode', async () => { - expect( - canEditEmbeddable( - new EditableEmbeddable( - { - id: '123', - viewMode: ViewMode.VIEW, - }, - true - ) - ) - ).toBe(false); -}); - -test('canEditEmbeddable returns false when edit url is available, in edit mode, but not editable', async () => { - expect( - canEditEmbeddable( - new EditableEmbeddable( - { - id: '123', - viewMode: ViewMode.EDIT, - }, - false - ) - ) - ).toBe(false); -}); - -test('getEditHref returns the edit url', async () => { - const embeddable = new EditableEmbeddable({ id: '123', viewMode: ViewMode.EDIT }, true); - expect(await embeddable.getEditHref()).toBe(embeddable.getOutput().editUrl); -}); - -test('redirects to app using state transfer', async () => { - embeddableStart.getStateTransfer = jest.fn().mockReturnValue(stateTransferMock); - - applicationMock.currentAppId$ = of('superCoolCurrentApp'); - const testPath = '/test-path'; - const embeddable = new EditableEmbeddable( - { - id: '123', - viewMode: ViewMode.EDIT, - coolInput1: 1, - coolInput2: 2, - } as unknown as EmbeddableInput, - true - ); - embeddable.getOutput = jest.fn(() => ({ editApp: 'ultraVisualize', editPath: '/123' })); - embeddable.getAppContext = jest.fn().mockReturnValue({ - getCurrentPath: () => testPath, - }); - await editLegacyEmbeddable(embeddable); - expect(stateTransferMock.navigateToEditor).toHaveBeenCalledWith('ultraVisualize', { - path: '/123', - state: { - originatingApp: 'superCoolCurrentApp', - embeddableId: '123', - valueInput: { - id: '123', - viewMode: ViewMode.EDIT, - coolInput1: 1, - coolInput2: 2, - }, - originatingPath: testPath, - searchSessionId: undefined, - }, - }); -}); diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/edit_legacy_embeddable.tsx b/src/plugins/embeddable/public/lib/embeddables/compatibility/edit_legacy_embeddable.tsx deleted file mode 100644 index e99bbcfca22ef..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/edit_legacy_embeddable.tsx +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { firstValueFrom } from 'rxjs'; -import { LegacyCompatibleEmbeddable } from '../../../embeddable_panel/types'; -import { core, embeddableStart } from '../../../kibana_services'; -import { Container } from '../../containers'; -import { EmbeddableFactoryNotFoundError } from '../../errors'; -import { EmbeddableEditorState } from '../../state_transfer'; -import { isExplicitInputWithAttributes } from '../embeddable_factory'; -import { EmbeddableInput } from '../i_embeddable'; - -const getExplicitInput = (embeddable: LegacyCompatibleEmbeddable) => - (embeddable.getRoot() as Container)?.getInput()?.panels?.[embeddable.id]?.explicitInput ?? - embeddable.getInput(); - -const getAppTarget = async (embeddable: LegacyCompatibleEmbeddable) => { - const app = embeddable ? embeddable.getOutput().editApp : undefined; - const path = embeddable ? embeddable.getOutput().editPath : undefined; - if (!app || !path) return; - - const currentAppId = await firstValueFrom(core.application.currentAppId$); - if (!currentAppId) return { app, path }; - - const state: EmbeddableEditorState = { - originatingApp: currentAppId, - valueInput: getExplicitInput(embeddable), - embeddableId: embeddable.id, - searchSessionId: embeddable.getInput().searchSessionId, - originatingPath: embeddable.getAppContext()?.getCurrentPath?.(), - }; - return { app, path, state }; -}; - -export const editLegacyEmbeddable = async (embeddable: LegacyCompatibleEmbeddable) => { - const { editableWithExplicitInput } = embeddable.getOutput(); - - if (editableWithExplicitInput) { - const factory = embeddableStart.getEmbeddableFactory(embeddable.type); - if (!factory) { - throw new EmbeddableFactoryNotFoundError(embeddable.type); - } - - const oldExplicitInput = embeddable.getExplicitInput(); - let newExplicitInput: Partial<EmbeddableInput>; - try { - const explicitInputReturn = await factory.getExplicitInput( - oldExplicitInput, - embeddable.parent - ); - newExplicitInput = isExplicitInputWithAttributes(explicitInputReturn) - ? explicitInputReturn.newInput - : explicitInputReturn; - } catch (e) { - // error likely means user canceled editing - return; - } - embeddable.parent?.replaceEmbeddable(embeddable.id, newExplicitInput); - return; - } - - const appTarget = await getAppTarget(embeddable); - const stateTransfer = embeddableStart.getStateTransfer(); - if (appTarget) { - if (stateTransfer && appTarget.state) { - await stateTransfer.navigateToEditor(appTarget.app, { - path: appTarget.path, - state: appTarget.state, - }); - } else { - await core.application.navigateToApp(appTarget.app, { path: appTarget.path }); - } - return; - } - - const href = embeddable.getOutput().editUrl; - if (href) { - window.location.href = href; - return; - } -}; - -export const canEditEmbeddable = (embeddable: LegacyCompatibleEmbeddable) => { - return Boolean( - embeddable && - embeddable.getInput().viewMode === 'edit' && - embeddable.getOutput().editable && - !embeddable.getOutput().inlineEditable && - (embeddable.getOutput().editUrl || - (embeddable.getOutput().editApp && embeddable.getOutput().editPath) || - embeddable.getOutput().editableWithExplicitInput) - ); -}; diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/legacy_embeddable_to_api.ts b/src/plugins/embeddable/public/lib/embeddables/compatibility/legacy_embeddable_to_api.ts index daab774d7f35d..63c1a6593478b 100644 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/legacy_embeddable_to_api.ts +++ b/src/plugins/embeddable/public/lib/embeddables/compatibility/legacy_embeddable_to_api.ts @@ -37,14 +37,11 @@ import { IEmbeddable, LegacyEmbeddableAPI, } from '../i_embeddable'; -import { canEditEmbeddable, editLegacyEmbeddable } from './edit_legacy_embeddable'; import { embeddableInputToSubject, embeddableOutputToSubject, viewModeToSubject, } from './embeddable_compatibility_utils'; -import { canLinkLegacyEmbeddable, linkLegacyEmbeddable } from './link_legacy_embeddable'; -import { canUnlinkLegacyEmbeddable, unlinkLegacyEmbeddable } from './unlink_legacy_embeddable'; export type CommonLegacyInput = EmbeddableInput & { savedObjectId?: string; timeRange: TimeRange }; export type CommonLegacyOutput = EmbeddableOutput & { indexPatterns: DataView[] }; @@ -93,13 +90,15 @@ export const legacyEmbeddableToApi = ( /** * Support editing of legacy embeddables */ - const onEdit = () => editLegacyEmbeddable(embeddable); + const onEdit = () => { + throw new Error('Edit legacy embeddable not supported'); + }; const getTypeDisplayName = () => embeddableStart.getEmbeddableFactory(embeddable.type)?.getDisplayName() ?? i18n.translate('embeddableApi.compatibility.defaultTypeDisplayName', { defaultMessage: 'chart', }); - const isEditingEnabled = () => canEditEmbeddable(embeddable); + const isEditingEnabled = () => false; /** * Performance tracking @@ -286,11 +285,15 @@ export const legacyEmbeddableToApi = ( panelDescription, defaultPanelDescription, - canLinkToLibrary: () => canLinkLegacyEmbeddable(embeddable), - linkToLibrary: () => linkLegacyEmbeddable(embeddable), + canLinkToLibrary: async () => false, + linkToLibrary: () => { + throw new Error('Link to library not supported for legacy embeddable'); + }, - canUnlinkFromLibrary: () => canUnlinkLegacyEmbeddable(embeddable), - unlinkFromLibrary: () => unlinkLegacyEmbeddable(embeddable), + canUnlinkFromLibrary: async () => false, + unlinkFromLibrary: () => { + throw new Error('Unlink from library not supported for legacy embeddable'); + }, savedObjectId, }, diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/link_legacy_embeddable.test.ts b/src/plugins/embeddable/public/lib/embeddables/compatibility/link_legacy_embeddable.test.ts deleted file mode 100644 index e0a546a18969d..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/link_legacy_embeddable.test.ts +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { EmbeddableInput, ErrorEmbeddable, IContainer, SavedObjectEmbeddableInput } from '../..'; -import { core } from '../../../kibana_services'; -import { embeddablePluginMock } from '../../../mocks'; -import { createHelloWorldContainerAndEmbeddable } from '../../../tests/helpers'; -import { ReferenceOrValueEmbeddable } from '../../reference_or_value_embeddable'; -import { - ContactCardEmbeddable, - ContactCardEmbeddableFactory, - ContactCardEmbeddableInput, -} from '../../test_samples'; -import { ViewMode } from '../../types'; -import { CommonLegacyEmbeddable } from './legacy_embeddable_to_api'; -import { canLinkLegacyEmbeddable, linkLegacyEmbeddable } from './link_legacy_embeddable'; - -let container: IContainer; -let embeddable: ContactCardEmbeddable & ReferenceOrValueEmbeddable; -const embeddableFactory = new ContactCardEmbeddableFactory((() => null) as any, {} as any); - -const defaultCapabilities = { - advancedSettings: {}, - visualize: { save: true }, - maps: { save: true }, - navLinks: {}, -}; - -beforeEach(async () => { - const result = await createHelloWorldContainerAndEmbeddable(); - container = result.container; - embeddable = embeddablePluginMock.mockRefOrValEmbeddable< - ContactCardEmbeddable, - ContactCardEmbeddableInput - >(result.embeddable, { - mockedByReferenceInput: { savedObjectId: 'testSavedObjectId', id: result.embeddable.id }, - mockedByValueInput: { firstName: 'Kibanana', id: result.embeddable.id }, - }); - embeddable.updateInput({ viewMode: ViewMode.EDIT }); -}); - -const assignDefaultCapabilities = () => { - Object.defineProperty(core.application, 'capabilities', { - value: defaultCapabilities, - }); -}; - -test('Cannot link an Error Embeddable to the library', async () => { - assignDefaultCapabilities(); - const errorEmbeddable = new ErrorEmbeddable( - 'Wow what an awful error', - { id: ' 404' }, - embeddable.getRoot() as IContainer - ); - expect(await canLinkLegacyEmbeddable(errorEmbeddable as unknown as CommonLegacyEmbeddable)).toBe( - false - ); -}); - -test('Cannot link an ES|QL Embeddable to the library', async () => { - assignDefaultCapabilities(); - const filterableEmbeddable = embeddablePluginMock.mockFilterableEmbeddable(embeddable, { - getFilters: () => [], - getQuery: () => ({ - esql: 'from logstash-* | limit 10', - }), - }); - expect( - await canLinkLegacyEmbeddable(filterableEmbeddable as unknown as CommonLegacyEmbeddable) - ).toBe(false); -}); - -test('Cannot link a visualize embeddable to the library without visualize save permissions', async () => { - Object.defineProperty(core.application, 'capabilities', { - value: { ...defaultCapabilities, visualize: { save: false } }, - }); - expect(await canLinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe( - false - ); -}); - -test('Can link an embeddable to the library when it has value type input', async () => { - assignDefaultCapabilities(); - embeddable.updateInput(await embeddable.getInputAsValueType()); - expect(await canLinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe(true); -}); - -test('Cannot link an embedable when its input is by reference', async () => { - assignDefaultCapabilities(); - embeddable.updateInput(await embeddable.getInputAsRefType()); - expect(await canLinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe( - false - ); -}); - -test('Cannot link an embedable when view mode is set to view', async () => { - assignDefaultCapabilities(); - embeddable.updateInput(await embeddable.getInputAsRefType()); - embeddable.updateInput({ viewMode: ViewMode.VIEW }); - expect(await canLinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe( - false - ); -}); - -test('Cannot link an embedable when it is not a child of a Dashboard container', async () => { - assignDefaultCapabilities(); - let orphanContactCard = await embeddableFactory.create({ - id: 'orphanContact', - firstName: 'Orphan', - }); - - orphanContactCard = embeddablePluginMock.mockRefOrValEmbeddable< - ContactCardEmbeddable, - ContactCardEmbeddableInput - >(orphanContactCard, { - mockedByReferenceInput: { savedObjectId: 'test', id: orphanContactCard.id }, - mockedByValueInput: { firstName: 'Kibanana', id: orphanContactCard.id }, - }); - expect( - await canLinkLegacyEmbeddable(orphanContactCard as unknown as CommonLegacyEmbeddable) - ).toBe(false); -}); - -test('Linking an embeddable replaces embeddableId and retains panel count', async () => { - assignDefaultCapabilities(); - const dashboard = embeddable.getRoot() as IContainer; - const originalPanelCount = Object.keys(dashboard.getInput().panels).length; - const originalPanelKeySet = new Set(Object.keys(dashboard.getInput().panels)); - - await linkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable); - expect(Object.keys(container.getInput().panels).length).toEqual(originalPanelCount); - - const newPanelId = Object.keys(container.getInput().panels).find( - (key) => !originalPanelKeySet.has(key) - ); - expect(newPanelId).toBeDefined(); - const newPanel = container.getInput().panels[newPanelId!]; - expect(newPanel.type).toEqual(embeddable.type); -}); - -test('Link legacy embeddable returns reference type input', async () => { - assignDefaultCapabilities(); - const complicatedAttributes = { - attribute1: 'The best attribute', - attribute2: 22, - attribute3: ['array', 'of', 'strings'], - attribute4: { nestedattribute: 'hello from the nest' }, - }; - - embeddable = embeddablePluginMock.mockRefOrValEmbeddable<ContactCardEmbeddable>(embeddable, { - mockedByReferenceInput: { savedObjectId: 'testSavedObjectId', id: embeddable.id }, - mockedByValueInput: { attributes: complicatedAttributes, id: embeddable.id } as EmbeddableInput, - }); - const dashboard = embeddable.getRoot() as IContainer; - const originalPanelKeySet = new Set(Object.keys(dashboard.getInput().panels)); - await linkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable); - const newPanelId = Object.keys(container.getInput().panels).find( - (key) => !originalPanelKeySet.has(key) - ); - expect(newPanelId).toBeDefined(); - const newPanel = container.getInput().panels[newPanelId!]; - expect(newPanel.type).toEqual(embeddable.type); - expect((newPanel.explicitInput as unknown as { attributes: unknown }).attributes).toBeUndefined(); - expect((newPanel.explicitInput as SavedObjectEmbeddableInput).savedObjectId).toBe( - 'testSavedObjectId' - ); -}); diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/link_legacy_embeddable.ts b/src/plugins/embeddable/public/lib/embeddables/compatibility/link_legacy_embeddable.ts deleted file mode 100644 index 2126d1eff764e..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/link_legacy_embeddable.ts +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import type { AggregateQuery } from '@kbn/es-query'; -import { IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; -import { apiIsPresentationContainer } from '@kbn/presentation-containers'; -import { core } from '../../../kibana_services'; -import { PanelNotFoundError } from '../../errors'; -import { isFilterableEmbeddable } from '../../filterable_embeddable'; -import { isReferenceOrValueEmbeddable } from '../../reference_or_value_embeddable'; -import { isErrorEmbeddable } from '../is_error_embeddable'; -import { CommonLegacyEmbeddable } from './legacy_embeddable_to_api'; -import { IContainer } from '../../containers'; - -export const canLinkLegacyEmbeddable = async (embeddable: CommonLegacyEmbeddable) => { - // linking and unlinking legacy embeddables is only supported on Dashboard - if ( - isErrorEmbeddable(embeddable) || - !(embeddable.getRoot() && embeddable.getRoot().isContainer) || - !isReferenceOrValueEmbeddable(embeddable) - ) { - return false; - } - - const { visualize } = core.application.capabilities; - const canSave = visualize.save; - - const { isOfAggregateQueryType } = await import('@kbn/es-query'); - const query = isFilterableEmbeddable(embeddable) && embeddable.getQuery(); - - // Textbased panels (i.e. ES|QL) should not save to library - const isTextBasedEmbeddable = isOfAggregateQueryType(query as AggregateQuery); - - return Boolean( - canSave && - isReferenceOrValueEmbeddable(embeddable) && - !embeddable.inputIsRefType(embeddable.getInput()) && - !isTextBasedEmbeddable - ); -}; - -export const linkLegacyEmbeddable = async (embeddable: CommonLegacyEmbeddable) => { - const root = embeddable.getRoot() as IContainer; - if (!isReferenceOrValueEmbeddable(embeddable) || !apiIsPresentationContainer(root)) { - throw new IncompatibleActionError(); - } - - // Link to library - const newInput = await embeddable.getInputAsRefType(); - embeddable.updateInput(newInput); - - // Replace panel in parent. - const panelToReplace = root.getInput().panels[embeddable.id]; - if (!panelToReplace) { - throw new PanelNotFoundError(); - } - await root.replacePanel(panelToReplace.explicitInput.id, { - panelType: embeddable.type, - initialState: { ...newInput }, - }); -}; diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/unlink_legacy_embeddable.test.ts b/src/plugins/embeddable/public/lib/embeddables/compatibility/unlink_legacy_embeddable.test.ts deleted file mode 100644 index 50c44f2c1b253..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/unlink_legacy_embeddable.test.ts +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ErrorEmbeddable, IContainer, PanelState, SavedObjectEmbeddableInput } from '../..'; -import { embeddablePluginMock } from '../../../mocks'; -import { createHelloWorldContainerAndEmbeddable } from '../../../tests/helpers'; -import { ReferenceOrValueEmbeddable } from '../../reference_or_value_embeddable'; -import { - ContactCardEmbeddable, - ContactCardEmbeddableFactory, - ContactCardEmbeddableInput, -} from '../../test_samples'; -import { ViewMode } from '../../types'; -import { CommonLegacyEmbeddable } from './legacy_embeddable_to_api'; -import { canLinkLegacyEmbeddable } from './link_legacy_embeddable'; -import { canUnlinkLegacyEmbeddable, unlinkLegacyEmbeddable } from './unlink_legacy_embeddable'; - -let container: IContainer; -let embeddable: ContactCardEmbeddable & ReferenceOrValueEmbeddable; - -const embeddableFactory = new ContactCardEmbeddableFactory((() => null) as any, {} as any); - -beforeEach(async () => { - const result = await createHelloWorldContainerAndEmbeddable(); - container = result.container; - embeddable = embeddablePluginMock.mockRefOrValEmbeddable< - ContactCardEmbeddable, - ContactCardEmbeddableInput - >(result.embeddable, { - mockedByReferenceInput: { savedObjectId: 'testSavedObjectId', id: result.embeddable.id }, - mockedByValueInput: { firstName: 'Kibanana', id: result.embeddable.id }, - }); - embeddable.updateInput({ viewMode: ViewMode.EDIT }); -}); - -test('Can unlink returns false when given an Error Embeddable', async () => { - const errorEmbeddable = new ErrorEmbeddable( - 'Wow what an awful error', - { id: ' 404' }, - embeddable.getRoot() as IContainer - ); - expect( - await canUnlinkLegacyEmbeddable(errorEmbeddable as unknown as CommonLegacyEmbeddable) - ).toBe(false); -}); - -test('Can unlink returns true when embeddable on dashboard has reference type input', async () => { - embeddable.updateInput(await embeddable.getInputAsRefType()); - expect(await canUnlinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe( - true - ); -}); - -test('Can unlink returns false when embeddable input is by value', async () => { - embeddable.updateInput(await embeddable.getInputAsValueType()); - expect(await canUnlinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe( - false - ); -}); - -test('Can unlink returns false when view mode is set to view', async () => { - embeddable.updateInput(await embeddable.getInputAsRefType()); - embeddable.updateInput({ viewMode: ViewMode.VIEW }); - expect(await canUnlinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe( - false - ); -}); - -test('Can unlink returns false when embeddable is not in a dashboard container', async () => { - let orphanContactCard = await embeddableFactory.create({ - id: 'orphanContact', - firstName: 'Orphan', - }); - - orphanContactCard = embeddablePluginMock.mockRefOrValEmbeddable< - ContactCardEmbeddable, - ContactCardEmbeddableInput - >(orphanContactCard, { - mockedByReferenceInput: { savedObjectId: 'test', id: orphanContactCard.id }, - mockedByValueInput: { firstName: 'Kibanana', id: orphanContactCard.id }, - }); - expect( - await canLinkLegacyEmbeddable(orphanContactCard as unknown as CommonLegacyEmbeddable) - ).toBe(false); - expect(await canUnlinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable)).toBe( - false - ); -}); - -test('Unlink replaces embeddableId and retains panel count', async () => { - const dashboard = embeddable.getRoot() as IContainer; - const originalPanelCount = Object.keys(dashboard.getInput().panels).length; - const originalPanelKeySet = new Set(Object.keys(dashboard.getInput().panels)); - await unlinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable); - expect(Object.keys(container.getInput().panels).length).toEqual(originalPanelCount); - - const newPanelId = Object.keys(container.getInput().panels).find( - (key) => !originalPanelKeySet.has(key) - ); - expect(newPanelId).toBeDefined(); - const newPanel = container.getInput().panels[newPanelId!]; - expect(newPanel.type).toEqual(embeddable.type); -}); - -test('Unlink unwraps all attributes from savedObject', async () => { - const complicatedAttributes = { - attribute1: 'The best attribute', - attribute2: 22, - attribute3: ['array', 'of', 'strings'], - attribute4: { nestedattribute: 'hello from the nest' }, - }; - - embeddable = embeddablePluginMock.mockRefOrValEmbeddable< - ContactCardEmbeddable, - { attributes: unknown; id: string }, - SavedObjectEmbeddableInput - >(embeddable, { - mockedByReferenceInput: { savedObjectId: 'testSavedObjectId', id: embeddable.id }, - mockedByValueInput: { attributes: complicatedAttributes, id: embeddable.id }, - }); - const dashboard = embeddable.getRoot() as IContainer; - const originalPanelKeySet = new Set(Object.keys(dashboard.getInput().panels)); - await unlinkLegacyEmbeddable(embeddable as unknown as CommonLegacyEmbeddable); - const newPanelId = Object.keys(container.getInput().panels).find( - (key) => !originalPanelKeySet.has(key) - ); - expect(newPanelId).toBeDefined(); - const newPanel = container.getInput().panels[newPanelId!] as PanelState & { - explicitInput: { attributes: unknown }; - }; - expect(newPanel.type).toEqual(embeddable.type); - expect((newPanel.explicitInput as { attributes: unknown }).attributes).toEqual( - complicatedAttributes - ); -}); diff --git a/src/plugins/embeddable/public/lib/embeddables/compatibility/unlink_legacy_embeddable.ts b/src/plugins/embeddable/public/lib/embeddables/compatibility/unlink_legacy_embeddable.ts deleted file mode 100644 index f4d0a3e0ac08a..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddables/compatibility/unlink_legacy_embeddable.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; -import { apiIsPresentationContainer } from '@kbn/presentation-containers'; -import { IContainer, PanelState } from '../../containers'; -import { PanelNotFoundError } from '../../errors'; -import { isReferenceOrValueEmbeddable } from '../../reference_or_value_embeddable'; -import { ViewMode } from '../../types'; -import { isErrorEmbeddable } from '../is_error_embeddable'; -import { EmbeddableInput } from '../i_embeddable'; -import { CommonLegacyEmbeddable } from './legacy_embeddable_to_api'; - -export const canUnlinkLegacyEmbeddable = async (embeddable: CommonLegacyEmbeddable) => { - return Boolean( - isReferenceOrValueEmbeddable(embeddable) && - !isErrorEmbeddable(embeddable) && - embeddable.getInput()?.viewMode !== ViewMode.VIEW && - embeddable.getRoot() && - embeddable.getRoot().isContainer && - embeddable.inputIsRefType(embeddable.getInput()) - ); -}; - -export const unlinkLegacyEmbeddable = async (embeddable: CommonLegacyEmbeddable) => { - const root = embeddable.getRoot() as IContainer; - if (!isReferenceOrValueEmbeddable(embeddable) || !apiIsPresentationContainer(root)) { - throw new IncompatibleActionError(); - } - - // unlink and update input. - const newInput = await embeddable.getInputAsValueType(); - embeddable.updateInput(newInput); - - // replace panel in parent. - const panelToReplace = root.getInput().panels[embeddable.id] as PanelState<EmbeddableInput>; - if (!panelToReplace) { - throw new PanelNotFoundError(); - } - await root.replacePanel(panelToReplace.explicitInput.id, { - panelType: embeddable.type, - initialState: { ...newInput, title: embeddable.getTitle() }, - }); -}; diff --git a/src/plugins/embeddable/public/lib/embeddables/embeddable.test.tsx b/src/plugins/embeddable/public/lib/embeddables/embeddable.test.tsx deleted file mode 100644 index 84160c9b391aa..0000000000000 --- a/src/plugins/embeddable/public/lib/embeddables/embeddable.test.tsx +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -/* eslint-disable max-classes-per-file */ - -import { skip, take } from 'rxjs'; -import { Embeddable } from './embeddable'; -import { EmbeddableOutput, EmbeddableInput } from './i_embeddable'; -import { ViewMode } from '../types'; -import { ContactCardEmbeddable } from '../test_samples/embeddables/contact_card/contact_card_embeddable'; -import { - MockFilter, - FilterableEmbeddable, -} from '../test_samples/embeddables/filterable_embeddable'; - -class TestClass { - constructor() {} -} - -interface Output extends EmbeddableOutput { - testClass: TestClass; - inputUpdatedTimes: number; -} - -class OutputTestEmbeddable extends Embeddable<EmbeddableInput, Output> { - public readonly type = 'test'; - constructor() { - super( - { id: 'test', viewMode: ViewMode.VIEW }, - { testClass: new TestClass(), inputUpdatedTimes: 0 } - ); - - this.getInput$().subscribe(() => { - this.updateOutput({ inputUpdatedTimes: this.getOutput().inputUpdatedTimes + 1 }); - }); - } - - reload() {} -} - -class PhaseTestEmbeddable extends Embeddable<EmbeddableInput, EmbeddableOutput> { - public readonly type = 'phaseTest'; - constructor() { - super({ id: 'phaseTest', viewMode: ViewMode.VIEW }, {}); - } - public reportsEmbeddableLoad(): boolean { - return true; - } - reload() {} -} - -test('Embeddable calls input subscribers when changed', (done) => { - const hello = new ContactCardEmbeddable( - { id: '123', firstName: 'Brienne', lastName: 'Tarth' }, - { execAction: (() => null) as any } - ); - - const subscription = hello - .getInput$() - .pipe(skip(1)) - .subscribe((input) => { - expect(input.nameTitle).toEqual('Sir'); - done(); - subscription.unsubscribe(); - }); - - hello.updateInput({ nameTitle: 'Sir' }); -}); - -test('Embeddable reload is called if lastReloadRequest input time changes', async () => { - const hello = new FilterableEmbeddable({ id: '123', filters: [], lastReloadRequestTime: 0 }); - - hello.reload = jest.fn(); - - hello.updateInput({ lastReloadRequestTime: 1 }); - - expect(hello.reload).toBeCalledTimes(1); -}); - -test('Embeddable reload is called if lastReloadRequest input time changed and new input is used', async () => { - const hello = new FilterableEmbeddable({ id: '123', filters: [], lastReloadRequestTime: 0 }); - - const aFilter = {} as unknown as MockFilter; - hello.reload = jest.fn(() => { - // when reload is called embeddable already has new input - expect(hello.getInput().filters).toEqual([aFilter]); - }); - - hello.updateInput({ lastReloadRequestTime: 1, filters: [aFilter] }); - - expect(hello.reload).toBeCalledTimes(1); -}); - -test('Embeddable reload is not called if lastReloadRequest input time does not change', async () => { - const hello = new FilterableEmbeddable({ id: '123', filters: [], lastReloadRequestTime: 1 }); - - hello.reload = jest.fn(); - - hello.updateInput({ lastReloadRequestTime: 1 }); - - expect(hello.reload).toBeCalledTimes(0); -}); - -test('updating output state retains instance information', async () => { - const outputTest = new OutputTestEmbeddable(); - expect(outputTest.getOutput().testClass).toBeInstanceOf(TestClass); - expect(outputTest.getOutput().inputUpdatedTimes).toBe(1); - outputTest.updateInput({ viewMode: ViewMode.EDIT }); - expect(outputTest.getOutput().inputUpdatedTimes).toBe(2); - expect(outputTest.getOutput().testClass).toBeInstanceOf(TestClass); -}); - -test('fires phase events when output changes', async () => { - const phaseEventTest = new PhaseTestEmbeddable(); - let phaseEventCount = 0; - phaseEventTest.phase$.subscribe((event) => { - if (event) { - phaseEventCount++; - } - }); - expect(phaseEventCount).toBe(1); // loading is true by default which fires an event. - phaseEventTest.updateOutput({ loading: false }); - expect(phaseEventCount).toBe(2); - phaseEventTest.updateOutput({ rendered: true }); - expect(phaseEventCount).toBe(3); -}); - -test('updated$ called after reload and batches input/output changes', async () => { - const hello = new ContactCardEmbeddable( - { id: '123', firstName: 'Brienne', lastName: 'Tarth' }, - { execAction: (() => null) as any } - ); - - const reloadSpy = jest.spyOn(hello, 'reload'); - - const input$ = hello.getInput$().pipe(skip(1)); - let inputEmittedTimes = 0; - input$.subscribe(() => { - inputEmittedTimes++; - }); - - const updated$ = hello.getUpdated$(); - let updatedEmittedTimes = 0; - updated$.subscribe(() => { - updatedEmittedTimes++; - }); - const updatedPromise = updated$.pipe(take(1)).toPromise(); - - hello.updateInput({ nameTitle: 'Sir', lastReloadRequestTime: Date.now() }); - expect(reloadSpy).toHaveBeenCalledTimes(1); - expect(inputEmittedTimes).toBe(1); - expect(updatedEmittedTimes).toBe(0); - - await updatedPromise; - - expect(updatedEmittedTimes).toBe(1); -}); diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card.tsx deleted file mode 100644 index 2f725881a6a4b..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card.tsx +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { EuiCard, EuiFlexItem, EuiFlexGroup, EuiFormRow } from '@elastic/eui'; - -import { Subscription } from 'rxjs'; -import { EuiButton } from '@elastic/eui'; -import * as Rx from 'rxjs'; -import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; -import { ContactCardEmbeddable, CONTACT_USER_TRIGGER } from './contact_card_embeddable'; - -interface Props { - embeddable: ContactCardEmbeddable; - execTrigger: UiActionsStart['executeTriggerActions']; -} - -interface State { - fullName: string; - firstName: string; -} - -export class ContactCardEmbeddableComponent extends React.Component<Props, State> { - private subscription?: Subscription; - private mounted: boolean = false; - - constructor(props: Props) { - super(props); - this.state = { - fullName: this.props.embeddable.getOutput().fullName, - firstName: this.props.embeddable.getInput().firstName, - }; - } - - componentDidMount() { - this.mounted = true; - this.subscription = Rx.merge( - this.props.embeddable.getOutput$(), - this.props.embeddable.getInput$() - ).subscribe(() => { - if (this.mounted) { - this.setState({ - fullName: this.props.embeddable.getOutput().fullName, - firstName: this.props.embeddable.getInput().firstName, - }); - } - }); - } - - componentWillUnmount() { - if (this.subscription) { - this.subscription.unsubscribe(); - } - this.mounted = false; - } - - emitContactTrigger = () => { - this.props.execTrigger(CONTACT_USER_TRIGGER, { - embeddable: this.props.embeddable, - }); - }; - - getCardFooterContent = () => ( - <EuiFlexGroup justifyContent="flexEnd"> - <EuiFlexItem grow={false}> - <EuiFormRow label=""> - <EuiButton - onClick={this.emitContactTrigger} - >{`Contact ${this.state.firstName}`}</EuiButton> - </EuiFormRow> - </EuiFlexItem> - </EuiFlexGroup> - ); - - render() { - return ( - <EuiCard - textAlign="left" - title={this.state.fullName} - footer={this.getCardFooterContent()} - description="" - /> - ); - } -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable.tsx deleted file mode 100644 index bb3dff9631fb6..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable.tsx +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import ReactDom from 'react-dom'; -import { Subscription } from 'rxjs'; -import type { ErrorLike } from '@kbn/expressions-plugin/common'; -import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; -import { Container } from '../../../containers'; -import { EmbeddableOutput, Embeddable, EmbeddableInput } from '../../../embeddables'; -import { CONTACT_CARD_EMBEDDABLE } from './contact_card_embeddable_factory'; -import { ContactCardEmbeddableComponent } from './contact_card'; - -export interface ContactCardEmbeddableInput extends EmbeddableInput { - firstName: string; - lastName?: string; - nameTitle?: string; -} - -export interface ContactCardEmbeddableOutput extends EmbeddableOutput { - fullName: string; - originalLastName?: string; -} - -export interface ContactCardEmbeddableOptions { - execAction: UiActionsStart['executeTriggerActions']; - outputOverrides?: Partial<ContactCardEmbeddableOutput>; -} - -function getFullName(input: ContactCardEmbeddableInput) { - const { nameTitle, firstName, lastName } = input; - const nameParts = [nameTitle, firstName, lastName].filter((name) => name !== undefined); - return nameParts.join(' '); -} - -export class ContactCardEmbeddable extends Embeddable< - ContactCardEmbeddableInput, - ContactCardEmbeddableOutput -> { - private subscription: Subscription; - private node?: Element; - public readonly type: string = CONTACT_CARD_EMBEDDABLE; - - constructor( - initialInput: ContactCardEmbeddableInput, - protected readonly options: ContactCardEmbeddableOptions, - parent?: Container - ) { - super( - initialInput, - { - fullName: getFullName(initialInput), - originalLastName: initialInput.lastName, - defaultTitle: `Hello ${getFullName(initialInput)}`, - ...options.outputOverrides, - }, - parent - ); - - this.subscription = this.getInput$().subscribe(() => { - const fullName = getFullName(this.input); - this.updateOutput({ - fullName, - defaultTitle: `Hello ${fullName}`, - }); - }); - } - - public render(node: HTMLElement) { - this.node = node; - ReactDom.render( - <ContactCardEmbeddableComponent embeddable={this} execTrigger={this.options.execAction} />, - node - ); - } - - public catchError?(error: ErrorLike, node: HTMLElement) { - ReactDom.render(<div data-test-subj="error">{error.message}</div>, node); - - return () => ReactDom.unmountComponentAtNode(node); - } - - public destroy() { - super.destroy(); - this.subscription.unsubscribe(); - if (this.node) { - ReactDom.unmountComponentAtNode(this.node); - } - } - - public reload() {} - - public triggerError(error: ErrorLike, fatal = false) { - if (fatal) { - this.onFatalError(error); - } else { - this.updateOutput({ error }); - } - } -} - -export const CONTACT_USER_TRIGGER = 'CONTACT_USER_TRIGGER'; diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory.tsx deleted file mode 100644 index 79e0824b0275f..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory.tsx +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; - -import { CoreStart } from '@kbn/core/public'; -import { toMountPoint } from '@kbn/react-kibana-mount'; -import { EmbeddableFactoryDefinition } from '../../../embeddables'; -import { Container } from '../../../containers'; -import { ContactCardEmbeddable, ContactCardEmbeddableInput } from './contact_card_embeddable'; -import { ContactCardInitializer } from './contact_card_initializer'; - -export const CONTACT_CARD_EMBEDDABLE = 'CONTACT_CARD_EMBEDDABLE'; - -export class ContactCardEmbeddableFactory - implements EmbeddableFactoryDefinition<ContactCardEmbeddableInput> -{ - public readonly type = CONTACT_CARD_EMBEDDABLE; - savedObjectMetaData = { - name: 'Contact card', - type: CONTACT_CARD_EMBEDDABLE, - getIconForSavedObject: () => 'document', - }; - - constructor( - protected readonly execTrigger: UiActionsStart['executeTriggerActions'], - private readonly core: CoreStart - ) {} - - public async isEditable() { - return true; - } - - public getDisplayName() { - return i18n.translate('embeddableApi.samples.contactCard.displayName', { - defaultMessage: 'contact card', - }); - } - - public getDefaultInput() { - return {}; - } - - public getExplicitInput = (): Promise<Partial<ContactCardEmbeddableInput>> => { - return new Promise((resolve) => { - const modalSession = this.core.overlays.openModal( - toMountPoint( - <ContactCardInitializer - onCancel={() => { - modalSession.close(); - // @ts-expect-error - resolve(undefined); - }} - onCreate={(input: { firstName: string; lastName?: string }) => { - modalSession.close(); - resolve(input); - }} - />, - this.core - ), - { - 'data-test-subj': 'createContactCardEmbeddable', - } - ); - }); - }; - - public create = async (initialInput: ContactCardEmbeddableInput, parent?: Container) => { - return new ContactCardEmbeddable( - initialInput, - { - execAction: this.execTrigger, - }, - parent - ); - }; -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_react.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_react.tsx deleted file mode 100644 index e2cc363b6ec3a..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_react.tsx +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { ContactCardEmbeddableComponent } from './contact_card'; -import { ContactCardEmbeddable } from './contact_card_embeddable'; - -export class ContactCardEmbeddableReact extends ContactCardEmbeddable { - public render() { - return ( - <ContactCardEmbeddableComponent embeddable={this} execTrigger={this.options.execAction} /> - ); - } -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_react_factory.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_react_factory.ts deleted file mode 100644 index 28e651cd14d02..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_react_factory.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { Container } from '../../../containers'; -import { ContactCardEmbeddableInput } from './contact_card_embeddable'; -import { ContactCardEmbeddableFactory } from './contact_card_embeddable_factory'; -import { ContactCardEmbeddableReact } from './contact_card_embeddable_react'; - -export const CONTACT_CARD_EMBEDDABLE_REACT = 'CONTACT_CARD_EMBEDDABLE_REACT'; - -export class ContactCardEmbeddableReactFactory extends ContactCardEmbeddableFactory { - public readonly type = CONTACT_CARD_EMBEDDABLE_REACT as ContactCardEmbeddableFactory['type']; - - public create = async (initialInput: ContactCardEmbeddableInput, parent?: Container) => { - return new ContactCardEmbeddableReact( - initialInput, - { - execAction: this.execTrigger, - }, - parent - ); - }; -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable.tsx deleted file mode 100644 index eaeeb592d9eb3..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable.tsx +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { ContactCardEmbeddable } from './contact_card_embeddable'; - -export class ContactCardExportableEmbeddable extends ContactCardEmbeddable { - public getInspectorAdapters = () => { - return { - tables: { - allowCsvExport: true, - tables: { - layer1: { - type: 'datatable', - columns: [ - { id: 'firstName', name: 'First Name' }, - { id: 'originalLastName', name: 'Last Name' }, - ], - rows: [ - { - firstName: this.getInput().firstName, - orignialLastName: this.getInput().lastName, - }, - ], - }, - }, - }, - }; - }; -} - -export const CONTACT_EXPORTABLE_USER_TRIGGER = 'CONTACT_EXPORTABLE_USER_TRIGGER'; diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable_factory.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable_factory.tsx deleted file mode 100644 index 7ddf5f1711b61..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable_factory.tsx +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; - -import { CoreStart } from '@kbn/core/public'; -import { toMountPoint } from '@kbn/react-kibana-mount'; -import { EmbeddableFactoryDefinition } from '../../../embeddables'; -import { Container } from '../../../containers'; -import { ContactCardEmbeddableInput } from './contact_card_embeddable'; -import { ContactCardExportableEmbeddable } from './contact_card_exportable_embeddable'; -import { ContactCardInitializer } from './contact_card_initializer'; - -export const CONTACT_CARD_EXPORTABLE_EMBEDDABLE = 'CONTACT_CARD_EXPORTABLE_EMBEDDABLE'; - -export class ContactCardExportableEmbeddableFactory - implements EmbeddableFactoryDefinition<ContactCardEmbeddableInput> -{ - public readonly type = CONTACT_CARD_EXPORTABLE_EMBEDDABLE; - - constructor( - private readonly execTrigger: UiActionsStart['executeTriggerActions'], - private readonly core: CoreStart - ) {} - - public async isEditable() { - return true; - } - - public getDefaultInput() { - return {}; - } - - public getDisplayName() { - return i18n.translate('embeddableApi.samples.contactCard.displayName', { - defaultMessage: 'contact card', - }); - } - - public getExplicitInput = (): Promise<Partial<ContactCardEmbeddableInput>> => { - return new Promise((resolve) => { - const modalSession = this.core.overlays.openModal( - toMountPoint( - <ContactCardInitializer - onCancel={() => { - modalSession.close(); - // @ts-expect-error - resolve(undefined); - }} - onCreate={(input: { firstName: string; lastName?: string }) => { - modalSession.close(); - resolve(input); - }} - />, - this.core - ), - { - 'data-test-subj': 'createContactCardEmbeddable', - } - ); - }); - }; - - public create = async (initialInput: ContactCardEmbeddableInput, parent?: Container) => { - return new ContactCardExportableEmbeddable( - initialInput, - { - execAction: this.execTrigger, - }, - parent - ); - }; -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_initializer.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_initializer.tsx deleted file mode 100644 index 10c07ef5d5aad..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_initializer.tsx +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { - EuiForm, - EuiFormRow, - EuiFieldText, - EuiModalHeader, - EuiModalHeaderTitle, - EuiModalBody, - EuiButton, - EuiModalFooter, - EuiButtonEmpty, -} from '@elastic/eui'; -import React, { Component } from 'react'; - -export interface ContactCardInitializerProps { - onCreate: (name: { lastName?: string; firstName: string }) => void; - onCancel: () => void; -} - -interface State { - firstName?: string; - lastName?: string; -} - -export class ContactCardInitializer extends Component<ContactCardInitializerProps, State> { - constructor(props: ContactCardInitializerProps) { - super(props); - this.state = {}; - } - - render() { - return ( - <div> - <EuiModalHeader> - <EuiModalHeaderTitle>Create a new greeting card</EuiModalHeaderTitle> - </EuiModalHeader> - - <EuiModalBody> - <EuiForm> - <EuiFormRow label="First name"> - <EuiFieldText - name="popfirst" - value={this.state.firstName} - onChange={(e) => this.setState({ firstName: e.target.value })} - /> - </EuiFormRow> - - <EuiFormRow label="Last name"> - <EuiFieldText - name="popfirst" - value={this.state.lastName} - placeholder="optional" - onChange={(e) => this.setState({ lastName: e.target.value })} - /> - </EuiFormRow> - </EuiForm> - </EuiModalBody> - - <EuiModalFooter> - <EuiButtonEmpty onClick={this.props.onCancel}>Cancel</EuiButtonEmpty> - - <EuiButton - isDisabled={!this.state.firstName} - onClick={() => { - if (this.state.firstName) { - this.props.onCreate({ - firstName: this.state.firstName, - ...(this.state.lastName ? { lastName: this.state.lastName } : {}), - }); - } - }} - fill - > - Create - </EuiButton> - </EuiModalFooter> - </div> - ); - } -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/descriptive_contact_card_embeddable_factory.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/descriptive_contact_card_embeddable_factory.ts deleted file mode 100644 index fa251fc7cdb04..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/descriptive_contact_card_embeddable_factory.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; - -import { Container, EmbeddableFactoryDefinition } from '../../..'; -import { ContactCardEmbeddable, ContactCardEmbeddableInput } from './contact_card_embeddable'; - -export const DESCRIPTIVE_CONTACT_CARD_EMBEDDABLE = 'DESCRIPTIVE_CONTACT_CARD_EMBEDDABLE'; - -export class DescriptiveContactCardEmbeddableFactory - implements EmbeddableFactoryDefinition<ContactCardEmbeddableInput> -{ - public readonly type = DESCRIPTIVE_CONTACT_CARD_EMBEDDABLE; - - constructor(protected readonly execTrigger: UiActionsStart['executeTriggerActions']) {} - - public async isEditable() { - return true; - } - - public getDisplayName() { - return 'descriptive contact card'; - } - - public create = async (initialInput: ContactCardEmbeddableInput, parent?: Container) => { - return new ContactCardEmbeddable( - initialInput, - { - execAction: this.execTrigger, - outputOverrides: { - defaultDescription: 'This is a family friend', - }, - }, - parent - ); - }; -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/index.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/index.ts deleted file mode 100644 index 5344e74647c2f..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export * from './contact_card'; -export * from './contact_card_embeddable'; -export * from './contact_card_embeddable_factory'; -export * from './contact_card_exportable_embeddable'; -export * from './contact_card_exportable_embeddable_factory'; -export * from './contact_card_embeddable_react'; -export * from './contact_card_embeddable_react_factory'; -export * from './contact_card_initializer'; -export * from './slow_contact_card_embeddable_factory'; diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/slow_contact_card_embeddable_factory.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/slow_contact_card_embeddable_factory.ts deleted file mode 100644 index aeb8714332521..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/slow_contact_card_embeddable_factory.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; -import { Container, EmbeddableFactoryDefinition } from '../../..'; -import { ContactCardEmbeddable, ContactCardEmbeddableInput } from './contact_card_embeddable'; -import { CONTACT_CARD_EMBEDDABLE } from './contact_card_embeddable_factory'; - -interface SlowContactCardEmbeddableFactoryOptions { - execAction: UiActionsStart['executeTriggerActions']; - loadTickCount?: number; -} - -export class SlowContactCardEmbeddableFactory - implements EmbeddableFactoryDefinition<ContactCardEmbeddableInput> -{ - private loadTickCount = 0; - public readonly type = CONTACT_CARD_EMBEDDABLE; - - constructor(private readonly options: SlowContactCardEmbeddableFactoryOptions) { - if (options.loadTickCount) { - this.loadTickCount = options.loadTickCount; - } - } - - public async isEditable() { - return true; - } - - public getDisplayName() { - return 'slow to load contact card'; - } - - public create = async (initialInput: ContactCardEmbeddableInput, parent?: Container) => { - for (let i = 0; i < this.loadTickCount; i++) { - await Promise.resolve(); - } - return new ContactCardEmbeddable(initialInput, { execAction: this.options.execAction }, parent); - }; -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/empty_embeddable.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/empty_embeddable.tsx deleted file mode 100644 index f05f4f8153e8c..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/empty_embeddable.tsx +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { Embeddable, EmbeddableInput, EmbeddableOutput } from '../..'; - -export const EMPTY_EMBEDDABLE = 'EMPTY_EMBEDDABLE'; - -export class EmptyEmbeddable extends Embeddable<EmbeddableInput, EmbeddableOutput> { - public readonly type = EMPTY_EMBEDDABLE; - constructor(initialInput: EmbeddableInput) { - super(initialInput, {}); - } - public render() {} - public reload() {} -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_container.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_container.tsx deleted file mode 100644 index 3dc9952d6da42..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_container.tsx +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { Container, ContainerInput } from '../../containers'; -import { EmbeddableStart } from '../../../plugin'; -import { MockFilter } from './filterable_embeddable'; - -export const FILTERABLE_CONTAINER = 'FILTERABLE_CONTAINER'; - -export interface FilterableContainerInput extends ContainerInput { - filters: MockFilter[]; -} - -/** - * interfaces are not allowed to specify a sub-set of the required types until - * https://github.com/microsoft/TypeScript/issues/15300 is fixed so we use a type - * here instead - */ -type InheritedChildrenInput = { - filters: MockFilter[]; - id?: string; -}; - -export class FilterableContainer extends Container< - InheritedChildrenInput, - FilterableContainerInput -> { - public readonly type = FILTERABLE_CONTAINER; - - constructor( - initialInput: FilterableContainerInput, - getFactory: EmbeddableStart['getEmbeddableFactory'], - parent?: Container - ) { - super(initialInput, { embeddableLoaded: {} }, getFactory, parent); - } - - public getInheritedInput() { - return { - filters: this.input.filters, - viewMode: this.input.viewMode, - }; - } - - public render() {} -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_container_factory.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_container_factory.ts deleted file mode 100644 index b394f905d3378..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_container_factory.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { i18n } from '@kbn/i18n'; -import { Container, EmbeddableFactoryDefinition } from '../..'; -import { - FilterableContainer, - FilterableContainerInput, - FILTERABLE_CONTAINER, -} from './filterable_container'; -import { EmbeddableStart } from '../../../plugin'; - -export class FilterableContainerFactory - implements EmbeddableFactoryDefinition<FilterableContainerInput> -{ - public readonly type = FILTERABLE_CONTAINER; - - constructor( - private readonly getFactory: () => Promise<EmbeddableStart['getEmbeddableFactory']> - ) {} - - public getDisplayName() { - return i18n.translate('embeddableApi.samples.filterableContainer.displayName', { - defaultMessage: 'filterable dashboard', - }); - } - - public async isEditable() { - return true; - } - - public create = async (initialInput: FilterableContainerInput, parent?: Container) => { - const getEmbeddableFactory = await this.getFactory(); - return new FilterableContainer(initialInput, getEmbeddableFactory, parent); - }; -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_embeddable.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_embeddable.tsx deleted file mode 100644 index ee32fa6e2642f..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_embeddable.tsx +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { IContainer } from '../../containers'; -import { EmbeddableOutput, EmbeddableInput, Embeddable } from '../../embeddables'; - -/** @internal */ -export interface MockFilter { - $state?: {}; - meta: {}; - query?: {}; -} - -export const FILTERABLE_EMBEDDABLE = 'FILTERABLE_EMBEDDABLE'; - -export interface FilterableEmbeddableInput extends EmbeddableInput { - filters: MockFilter[]; -} - -export class FilterableEmbeddable extends Embeddable<FilterableEmbeddableInput, EmbeddableOutput> { - public readonly type = FILTERABLE_EMBEDDABLE; - constructor(initialInput: FilterableEmbeddableInput, parent?: IContainer) { - super(initialInput, {}, parent); - } - - public getInspectorAdapters(): Record<string, string> { - const inspectorAdapters: Record<string, string> = { - filters: `My filters are ${JSON.stringify(this.input.filters)}`, - }; - return inspectorAdapters; - } - - public render() {} - - public reload() {} -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_embeddable_factory.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_embeddable_factory.ts deleted file mode 100644 index cba773effb9ed..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/filterable_embeddable_factory.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { i18n } from '@kbn/i18n'; -import { - FilterableEmbeddable, - FilterableEmbeddableInput, - FILTERABLE_EMBEDDABLE, -} from './filterable_embeddable'; -import { EmbeddableFactoryDefinition } from '../../embeddables'; -import { IContainer } from '../../containers'; - -export class FilterableEmbeddableFactory - implements EmbeddableFactoryDefinition<FilterableEmbeddableInput> -{ - public readonly type = FILTERABLE_EMBEDDABLE; - - public async isEditable() { - return true; - } - - public getDisplayName() { - return i18n.translate('embeddableApi.samples.filterableEmbeddable.displayName', { - defaultMessage: 'filterable', - }); - } - - public async create(initialInput: FilterableEmbeddableInput, parent?: IContainer) { - return new FilterableEmbeddable(initialInput, parent); - } -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container.tsx deleted file mode 100644 index fe772a1f9a007..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container.tsx +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React from 'react'; -import ReactDOM from 'react-dom'; -import { I18nProvider } from '@kbn/i18n-react'; -import { Container, ViewMode, ContainerInput } from '../..'; -import { HelloWorldContainerComponent } from './hello_world_container_component'; -import { EmbeddableStart } from '../../../plugin'; -import { EmbeddableContainerSettings } from '../../containers/i_container'; - -export const HELLO_WORLD_CONTAINER = 'HELLO_WORLD_CONTAINER'; - -/** - * interfaces are not allowed to specify a sub-set of the required types until - * https://github.com/microsoft/TypeScript/issues/15300 is fixed so we use a type - * here instead - */ -type InheritedInput = { - id: string; - viewMode: ViewMode; - lastName: string; -}; - -interface HelloWorldContainerInput extends ContainerInput { - lastName?: string; -} - -interface HelloWorldContainerOptions { - getEmbeddableFactory?: EmbeddableStart['getEmbeddableFactory']; -} - -export class HelloWorldContainer extends Container<InheritedInput, HelloWorldContainerInput> { - public readonly type = HELLO_WORLD_CONTAINER; - - constructor( - input: ContainerInput<{ firstName: string; lastName: string }>, - options: HelloWorldContainerOptions, - initializeSettings?: EmbeddableContainerSettings - ) { - super( - input, - { embeddableLoaded: {} }, - options.getEmbeddableFactory || (() => undefined), - undefined, - initializeSettings - ); - } - - public getInheritedInput(id: string) { - return { - id, - viewMode: this.input.viewMode || ViewMode.EDIT, - lastName: this.input.lastName || 'foo', - }; - } - - public render(node: HTMLElement) { - ReactDOM.render( - <I18nProvider> - <HelloWorldContainerComponent container={this} /> - </I18nProvider>, - node - ); - } -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container_component.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container_component.tsx deleted file mode 100644 index 7bc322c3a1dde..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container_component.tsx +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import React, { Component, RefObject } from 'react'; -import { Subscription } from 'rxjs'; - -import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; - -import { IContainer, PanelState } from '../..'; -import { EmbeddablePanel } from '../../../embeddable_panel'; - -interface Props { - container: IContainer; -} - -interface State { - panels: { [key: string]: PanelState }; - loaded: { [key: string]: boolean }; -} - -export class HelloWorldContainerComponent extends Component<Props, State> { - private roots: { [key: string]: RefObject<HTMLDivElement> } = {}; - private mounted: boolean = false; - private inputSubscription?: Subscription; - private outputSubscription?: Subscription; - - constructor(props: Props) { - super(props); - - Object.values(this.props.container.getInput().panels).forEach((panelState) => { - this.roots[panelState.explicitInput.id] = React.createRef(); - }); - - this.state = { - loaded: this.props.container.getOutput().embeddableLoaded, - panels: this.props.container.getInput().panels, - }; - } - - public async componentDidMount() { - this.mounted = true; - - this.inputSubscription = this.props.container.getInput$().subscribe(() => { - if (this.mounted) { - this.setState({ panels: this.props.container.getInput().panels }); - } - }); - - this.outputSubscription = this.props.container.getOutput$().subscribe(() => { - if (this.mounted) { - this.setState({ loaded: this.props.container.getOutput().embeddableLoaded }); - } - }); - } - - public componentWillUnmount() { - this.mounted = false; - this.props.container.destroy(); - - if (this.inputSubscription) { - this.inputSubscription.unsubscribe(); - } - - if (this.outputSubscription) { - this.outputSubscription.unsubscribe(); - } - } - - public render() { - return ( - <div> - <h2>HELLO WORLD! These are my precious embeddable children:</h2> - <EuiSpacer size="l" /> - <EuiFlexGroup>{this.renderList()}</EuiFlexGroup> - </div> - ); - } - - private renderList() { - const list = Object.values(this.state.panels).map((panelState) => { - const item = ( - <EuiFlexItem key={panelState.explicitInput.id}> - <EmbeddablePanel - embeddable={() => - this.props.container.untilEmbeddableLoaded(panelState.explicitInput.id) - } - /> - </EuiFlexItem> - ); - return item; - }); - return list; - } -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/index.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/index.ts deleted file mode 100644 index 97f6d31622283..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export * from './contact_card'; -export * from './empty_embeddable'; -export * from './filterable_container'; -export * from './filterable_container_factory'; -export * from './filterable_embeddable'; -export * from './filterable_embeddable_factory'; -export * from './hello_world_container'; -export * from './hello_world_container_component'; -export * from './time_range_container'; -export * from './time_range_embeddable_factory'; -export * from './time_range_embeddable'; diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_container.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_container.ts deleted file mode 100644 index a7d306c86ed8c..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_container.ts +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import type { TimeRange } from '@kbn/es-query'; -import { ContainerInput, Container, ContainerOutput, EmbeddableStart } from '../../..'; - -/** - * interfaces are not allowed to specify a sub-set of the required types until - * https://github.com/microsoft/TypeScript/issues/15300 is fixed so we use a type - * here instead - */ -type InheritedChildrenInput = { - timeRange: TimeRange; - id?: string; -}; - -interface ContainerTimeRangeInput extends ContainerInput<InheritedChildrenInput> { - timeRange: TimeRange; -} - -const TIME_RANGE_CONTAINER = 'TIME_RANGE_CONTAINER'; - -export class TimeRangeContainer extends Container< - InheritedChildrenInput, - ContainerTimeRangeInput, - ContainerOutput -> { - public readonly type = TIME_RANGE_CONTAINER; - constructor( - initialInput: ContainerTimeRangeInput, - getFactory: EmbeddableStart['getEmbeddableFactory'], - parent?: Container - ) { - super(initialInput, { embeddableLoaded: {} }, getFactory, parent); - } - - public getAllDataViews() { - return []; - } - - public getInheritedInput() { - return { timeRange: this.input.timeRange }; - } - - public render() {} - - public reload() {} -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_embeddable.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_embeddable.ts deleted file mode 100644 index fa9dca4071bbb..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_embeddable.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import type { TimeRange } from '@kbn/es-query'; -import { EmbeddableOutput, Embeddable, EmbeddableInput, IContainer } from '../../..'; - -export interface EmbeddableTimeRangeInput extends EmbeddableInput { - timeRange: TimeRange; -} - -export const TIME_RANGE_EMBEDDABLE = 'TIME_RANGE_EMBEDDABLE'; - -export class TimeRangeEmbeddable extends Embeddable<EmbeddableTimeRangeInput, EmbeddableOutput> { - public readonly type = TIME_RANGE_EMBEDDABLE; - - constructor(initialInput: EmbeddableTimeRangeInput, parent?: IContainer) { - const { title: defaultTitle, description: defaultDescription } = initialInput; - super( - initialInput, - { - defaultTitle, - defaultDescription, - }, - parent - ); - } - - public render() {} - - public reload() {} -} diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_embeddable_factory.ts b/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_embeddable_factory.ts deleted file mode 100644 index fefbfd5df95d1..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/time_range_embeddable_factory.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { IContainer, EmbeddableFactoryDefinition } from '../../..'; -import { - TIME_RANGE_EMBEDDABLE, - TimeRangeEmbeddable, - EmbeddableTimeRangeInput, -} from './time_range_embeddable'; - -export class TimeRangeEmbeddableFactory - implements EmbeddableFactoryDefinition<EmbeddableTimeRangeInput> -{ - public readonly type = TIME_RANGE_EMBEDDABLE; - - public async isEditable() { - return true; - } - - public async create(initialInput: EmbeddableTimeRangeInput, parent?: IContainer) { - return new TimeRangeEmbeddable(initialInput, parent); - } - - public getDisplayName() { - return 'time range'; - } -} diff --git a/src/plugins/embeddable/public/lib/test_samples/index.ts b/src/plugins/embeddable/public/lib/test_samples/index.ts deleted file mode 100644 index b27497d8d8d23..0000000000000 --- a/src/plugins/embeddable/public/lib/test_samples/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export * from './embeddables'; diff --git a/src/plugins/embeddable/public/mocks.tsx b/src/plugins/embeddable/public/mocks.tsx index fcabaa7cdb6c7..7db4efd34e48e 100644 --- a/src/plugins/embeddable/public/mocks.tsx +++ b/src/plugins/embeddable/public/mocks.tsx @@ -35,13 +35,9 @@ import { import { setKibanaServices } from './kibana_services'; import { SelfStyledOptions } from './lib/self_styled_embeddable/types'; import { EmbeddablePublicPlugin } from './plugin'; -import { - reactEmbeddableRegistryHasKey, - registerReactEmbeddableFactory, -} from './react_embeddable_system'; +import { registerReactEmbeddableFactory } from './react_embeddable_system'; import { registerAddFromLibraryType } from './add_from_library/registry'; -export { mockAttributeService } from './lib/attribute_service/attribute_service.mock'; export type Setup = jest.Mocked<EmbeddableSetup>; export type Start = jest.Mocked<EmbeddableStart>; @@ -103,14 +99,12 @@ const createSetupContract = (): Setup => { registerReactEmbeddableFactory: jest.fn().mockImplementation(registerReactEmbeddableFactory), registerEmbeddableFactory: jest.fn(), registerEnhancement: jest.fn(), - setCustomEmbeddableFactoryProvider: jest.fn(), }; return setupContract; }; const createStartContract = (): Start => { const startContract: Start = { - reactEmbeddableRegistryHasKey: jest.fn().mockImplementation(reactEmbeddableRegistryHasKey), getEmbeddableFactories: jest.fn(), getEmbeddableFactory: jest.fn(), telemetry: jest.fn(), @@ -118,7 +112,6 @@ const createStartContract = (): Start => { inject: jest.fn(), getAllMigrations: jest.fn(), getStateTransfer: jest.fn(() => createEmbeddableStateTransferMock() as EmbeddableStateTransfer), - getAttributeService: jest.fn(), }; return startContract; }; diff --git a/src/plugins/embeddable/public/plugin.test.ts b/src/plugins/embeddable/public/plugin.test.ts index b51b7e7488a68..00a19f8e9f561 100644 --- a/src/plugins/embeddable/public/plugin.test.ts +++ b/src/plugins/embeddable/public/plugin.test.ts @@ -9,83 +9,6 @@ import { coreMock } from '@kbn/core/public/mocks'; import { testPlugin } from './tests/test_plugin'; -import { EmbeddableFactoryProvider } from './types'; -import { defaultEmbeddableFactoryProvider } from './lib'; -import { HelloWorldEmbeddable } from './tests/fixtures'; - -test('can set custom embeddable factory provider', async () => { - const coreSetup = coreMock.createSetup(); - const coreStart = coreMock.createStart(); - const { setup, doStart } = testPlugin(coreSetup, coreStart); - - const customProvider: EmbeddableFactoryProvider = (def) => ({ - ...defaultEmbeddableFactoryProvider(def), - getDisplayName: () => 'Intercepted!', - }); - - setup.setCustomEmbeddableFactoryProvider(customProvider); - setup.registerEmbeddableFactory('test', { - type: 'test', - latestVersion: '1.0.0', - create: () => Promise.resolve(undefined), - getDisplayName: () => 'Test', - isEditable: () => Promise.resolve(true), - }); - - const start = doStart(); - const factory = start.getEmbeddableFactory('test'); - expect(factory!.getDisplayName()).toEqual('Intercepted!'); -}); - -test('custom embeddable factory provider test for intercepting embeddable creation and destruction', async () => { - const coreSetup = coreMock.createSetup(); - const coreStart = coreMock.createStart(); - const { setup, doStart } = testPlugin(coreSetup, coreStart); - - let updateCount = 0; - const customProvider: EmbeddableFactoryProvider = (def) => { - return { - ...defaultEmbeddableFactoryProvider(def), - create: async (input, parent) => { - const embeddable = await defaultEmbeddableFactoryProvider(def).create(input, parent); - if (embeddable) { - const subscription = embeddable.getInput$().subscribe( - () => { - updateCount++; - }, - () => {}, - () => { - subscription.unsubscribe(); - updateCount = 0; - } - ); - } - return embeddable; - }, - }; - }; - - setup.setCustomEmbeddableFactoryProvider(customProvider); - setup.registerEmbeddableFactory('test', { - type: 'test', - latestVersion: '1.0.0', - create: (input, parent) => Promise.resolve(new HelloWorldEmbeddable(input, parent)), - getDisplayName: () => 'Test', - isEditable: () => Promise.resolve(true), - }); - - const start = doStart(); - const factory = start.getEmbeddableFactory('test'); - - const embeddable = await factory?.create({ id: '123' }); - embeddable!.updateInput({ title: 'boo' }); - // initial subscription, plus the second update. - expect(updateCount).toEqual(2); - - embeddable!.destroy(); - await new Promise((resolve) => process.nextTick(resolve)); - expect(updateCount).toEqual(0); -}); describe('embeddable factory', () => { const coreSetup = coreMock.createSetup(); diff --git a/src/plugins/embeddable/public/plugin.tsx b/src/plugins/embeddable/public/plugin.tsx index 801b518a0bd01..ef339e5bacc2c 100644 --- a/src/plugins/embeddable/public/plugin.tsx +++ b/src/plugins/embeddable/public/plugin.tsx @@ -27,7 +27,6 @@ import type { ContentManagementPublicStart } from '@kbn/content-management-plugi import type { SavedObjectTaggingOssPluginStart } from '@kbn/saved-objects-tagging-oss-plugin/public'; import { EmbeddableFactoryRegistry, - EmbeddableFactoryProvider, EnhancementsRegistry, EnhancementRegistryDefinition, EnhancementRegistryItem, @@ -39,12 +38,9 @@ import { EmbeddableOutput, defaultEmbeddableFactoryProvider, IEmbeddable, - SavedObjectEmbeddableInput, } from './lib'; import { EmbeddableFactoryDefinition } from './lib/embeddables/embeddable_factory_definition'; import { EmbeddableStateTransfer } from './lib/state_transfer'; -import { ATTRIBUTE_SERVICE_KEY, AttributeService } from './lib/attribute_service'; -import { AttributeServiceOptions } from './lib/attribute_service/attribute_service'; import { EmbeddableStateWithType, CommonEmbeddableStartContract } from '../common/types'; import { getExtractFunction, @@ -54,10 +50,7 @@ import { } from '../common/lib'; import { getAllMigrations } from '../common/lib/get_all_migrations'; import { setKibanaServices } from './kibana_services'; -import { - reactEmbeddableRegistryHasKey, - registerReactEmbeddableFactory, -} from './react_embeddable_system'; +import { registerReactEmbeddableFactory } from './react_embeddable_system'; import { registerAddFromLibraryType } from './add_from_library/registry'; export interface EmbeddableSetupDependencies { @@ -114,18 +107,9 @@ export interface EmbeddableSetup { * @deprecated */ registerEnhancement: (enhancement: EnhancementRegistryDefinition) => void; - /** - * @deprecated - */ - setCustomEmbeddableFactoryProvider: (customProvider: EmbeddableFactoryProvider) => void; } export interface EmbeddableStart extends PersistableStateService<EmbeddableStateWithType> { - /** - * Checks if a {@link ReactEmbeddableFactory} has been registered using {@link registerReactEmbeddableFactory} - */ - reactEmbeddableRegistryHasKey: (type: string) => boolean; - /** * @deprecated use {@link registerReactEmbeddableFactory} instead. */ @@ -142,26 +126,12 @@ export interface EmbeddableStart extends PersistableStateService<EmbeddableState */ getEmbeddableFactories: () => IterableIterator<EmbeddableFactory>; getStateTransfer: (storage?: Storage) => EmbeddableStateTransfer; - getAttributeService: < - A extends { title: string }, - V extends EmbeddableInput & { - [ATTRIBUTE_SERVICE_KEY]: A; - } = EmbeddableInput & { - [ATTRIBUTE_SERVICE_KEY]: A; - }, - R extends SavedObjectEmbeddableInput = SavedObjectEmbeddableInput, - M extends unknown = unknown - >( - type: string, - options: AttributeServiceOptions<A, M> - ) => AttributeService<A, V, R, M>; } export class EmbeddablePublicPlugin implements Plugin<EmbeddableSetup, EmbeddableStart> { private readonly embeddableFactoryDefinitions: Map<string, EmbeddableFactoryDefinition> = new Map(); private readonly embeddableFactories: EmbeddableFactoryRegistry = new Map(); private readonly enhancements: EnhancementsRegistry = new Map(); - private customEmbeddableFactoryProvider?: EmbeddableFactoryProvider; private stateTransferService: EmbeddableStateTransfer = {} as EmbeddableStateTransfer; private isRegistryReady = false; private appList?: ReadonlyMap<string, PublicAppInfo>; @@ -178,25 +148,12 @@ export class EmbeddablePublicPlugin implements Plugin<EmbeddableSetup, Embeddabl registerEmbeddableFactory: this.registerEmbeddableFactory, registerEnhancement: this.registerEnhancement, - setCustomEmbeddableFactoryProvider: (provider: EmbeddableFactoryProvider) => { - if (this.customEmbeddableFactoryProvider) { - throw new Error( - 'Custom embeddable factory provider is already set, and can only be set once' - ); - } - this.customEmbeddableFactoryProvider = provider; - }, }; } public start(core: CoreStart, deps: EmbeddableStartDependencies): EmbeddableStart { this.embeddableFactoryDefinitions.forEach((def) => { - this.embeddableFactories.set( - def.type, - this.customEmbeddableFactoryProvider - ? this.customEmbeddableFactoryProvider(def) - : defaultEmbeddableFactoryProvider(def) - ); + this.embeddableFactories.set(def.type, defaultEmbeddableFactoryProvider(def)); }); this.appListSubscription = core.application.applications$.subscribe((appList) => { @@ -224,12 +181,8 @@ export class EmbeddablePublicPlugin implements Plugin<EmbeddableSetup, Embeddabl ); const embeddableStart: EmbeddableStart = { - reactEmbeddableRegistryHasKey, - getEmbeddableFactory: this.getEmbeddableFactory, getEmbeddableFactories: this.getEmbeddableFactories, - getAttributeService: (type: string, options) => - new AttributeService(type, core.notifications.toasts, options, this.getEmbeddableFactory), getStateTransfer: (storage?: Storage) => storage ? new EmbeddableStateTransfer( @@ -339,12 +292,7 @@ export class EmbeddablePublicPlugin implements Plugin<EmbeddableSetup, Embeddabl if (!this.embeddableFactories.get(type)) { const def = this.embeddableFactoryDefinitions.get(type); if (!def) return; - this.embeddableFactories.set( - type, - this.customEmbeddableFactoryProvider - ? this.customEmbeddableFactoryProvider(def) - : defaultEmbeddableFactoryProvider(def) - ); + this.embeddableFactories.set(type, defaultEmbeddableFactoryProvider(def)); } }; } diff --git a/src/plugins/embeddable/public/react_embeddable_system/index.ts b/src/plugins/embeddable/public/react_embeddable_system/index.ts index d0bd95e32e10e..8b1b59da6767b 100644 --- a/src/plugins/embeddable/public/react_embeddable_system/index.ts +++ b/src/plugins/embeddable/public/react_embeddable_system/index.ts @@ -7,9 +7,6 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export { - reactEmbeddableRegistryHasKey, - registerReactEmbeddableFactory, -} from './react_embeddable_registry'; +export { registerReactEmbeddableFactory } from './react_embeddable_registry'; export { ReactEmbeddableRenderer } from './react_embeddable_renderer'; export type { DefaultEmbeddableApi, ReactEmbeddableFactory } from './types'; diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.test.tsx b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.test.tsx index aa3e9b0e99675..43f8541fbab7f 100644 --- a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.test.tsx +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.test.tsx @@ -9,7 +9,6 @@ import { registerReactEmbeddableFactory, - reactEmbeddableRegistryHasKey, getReactEmbeddableFactory, } from './react_embeddable_registry'; import { ReactEmbeddableFactory } from './types'; @@ -33,9 +32,4 @@ describe('react embeddable registry', () => { registerReactEmbeddableFactory('test', getTestEmbeddableFactory); expect(getReactEmbeddableFactory('test')).toEqual(returnedFactory); }); - - it('can check if a factory is registered', () => { - expect(reactEmbeddableRegistryHasKey('test')).toBe(true); - expect(reactEmbeddableRegistryHasKey('notRegistered')).toBe(false); - }); }); diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts index 0d007f85f7977..046b63d5531ab 100644 --- a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_registry.ts @@ -40,8 +40,6 @@ export const registerReactEmbeddableFactory = < registry[type] = getFactory; }; -export const reactEmbeddableRegistryHasKey = (key: string) => registry[key] !== undefined; - export const getReactEmbeddableFactory = async < SerializedState extends object = object, RuntimeState extends object = SerializedState, diff --git a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx index a9c4821d71a53..2119e6de03a8a 100644 --- a/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx +++ b/src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx @@ -18,7 +18,7 @@ import { import { PresentationPanel, PresentationPanelProps } from '@kbn/presentation-panel-plugin/public'; import { ComparatorDefinition, StateComparators } from '@kbn/presentation-publishing'; import React, { useEffect, useImperativeHandle, useMemo, useRef } from 'react'; -import { BehaviorSubject, combineLatest, debounceTime, skip, Subscription, switchMap } from 'rxjs'; +import { BehaviorSubject, combineLatest, debounceTime, map, skip, Subscription } from 'rxjs'; import { v4 as generateId } from 'uuid'; import { getReactEmbeddableFactory } from './react_embeddable_registry'; import { @@ -142,15 +142,7 @@ export const ReactEmbeddableRenderer = < .pipe( skip(1), debounceTime(ON_STATE_CHANGE_DEBOUNCE), - switchMap(() => { - const isAsync = - apiRegistration.serializeState.prototype?.name === 'AsyncFunction'; - return isAsync - ? (apiRegistration.serializeState() as Promise< - SerializedPanelState<SerializedState> - >) - : Promise.resolve(apiRegistration.serializeState()); - }) + map(() => apiRegistration.serializeState()) ) .subscribe((nextSerializedState) => { onAnyStateChange(nextSerializedState); diff --git a/src/plugins/embeddable/public/tests/container.test.ts b/src/plugins/embeddable/public/tests/container.test.ts deleted file mode 100644 index 1209f54fb8866..0000000000000 --- a/src/plugins/embeddable/public/tests/container.test.ts +++ /dev/null @@ -1,817 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { coreMock } from '@kbn/core/public/mocks'; -import * as Rx from 'rxjs'; -import { skip } from 'rxjs'; -import { EmbeddableOutput, isErrorEmbeddable, SavedObjectEmbeddableInput, ViewMode } from '../lib'; -import { ERROR_EMBEDDABLE_TYPE } from '../lib/embeddables/error_embeddable'; -import { - ContactCardEmbeddable, - ContactCardEmbeddableInput, - ContactCardEmbeddableOutput, -} from '../lib/test_samples/embeddables/contact_card/contact_card_embeddable'; -import { CONTACT_CARD_EMBEDDABLE } from '../lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory'; -import { SlowContactCardEmbeddableFactory } from '../lib/test_samples/embeddables/contact_card/slow_contact_card_embeddable_factory'; -import { - FilterableContainer, - FilterableContainerInput, -} from '../lib/test_samples/embeddables/filterable_container'; -import { - FilterableEmbeddable, - FilterableEmbeddableInput, - FILTERABLE_EMBEDDABLE, - MockFilter, -} from '../lib/test_samples/embeddables/filterable_embeddable'; -import { HelloWorldContainer } from '../lib/test_samples/embeddables/hello_world_container'; -import { HelloWorldEmbeddableFactoryDefinition, HELLO_WORLD_EMBEDDABLE } from './fixtures'; -import { createHelloWorldContainerAndEmbeddable, of } from './helpers'; -import { testPlugin } from './test_plugin'; - -describe('container initialization', () => { - const panels = { - '123': { - explicitInput: { id: '123' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - '456': { - explicitInput: { id: '456' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - '789': { - explicitInput: { id: '789' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - }; - - const expectEmbeddableLoaded = (container: HelloWorldContainer, id: string) => { - expect(container.getOutput().embeddableLoaded['123']).toBe(true); - const embeddable = container.getChild<ContactCardEmbeddable>('123'); - expect(embeddable).toBeDefined(); - expect(embeddable.id).toBe('123'); - }; - - it('initializes embeddables', async () => { - const { container } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels, - }); - - expectEmbeddableLoaded(container, '123'); - expectEmbeddableLoaded(container, '456'); - expectEmbeddableLoaded(container, '789'); - }); - - it('initializes embeddables once and only once with multiple input updates', async () => { - const { container, contactCardCreateSpy } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels, - }); - container.updateInput({ lastReloadRequestTime: 1 }); - container.updateInput({ lastReloadRequestTime: 2 }); - expect(contactCardCreateSpy).toHaveBeenCalledTimes(4); - }); - - it('initializes embeddables in order', async () => { - const childIdInitializeOrder = ['456', '123', '789']; - const { contactCardCreateSpy } = await createHelloWorldContainerAndEmbeddable( - { - id: 'hello', - panels, - }, - {}, - { childIdInitializeOrder } - ); - - await new Promise((r) => setTimeout(r, 1)); - for (const [index, orderedId] of childIdInitializeOrder.entries()) { - expect(contactCardCreateSpy).toHaveBeenNthCalledWith( - index + 1, - expect.objectContaining({ id: orderedId }), - expect.anything() // parent passed into create method - ); - } - }); - - it('initializes embeddables in order with partial order arg', async () => { - const childIdInitializeOrder = ['789', 'idontexist']; - const { contactCardCreateSpy } = await createHelloWorldContainerAndEmbeddable( - { - id: 'hello', - panels, - }, - {}, - { childIdInitializeOrder } - ); - const expectedInitializeOrder = ['789', '123', '456']; - - await new Promise((r) => setTimeout(r, 1)); - for (const [index, orderedId] of expectedInitializeOrder.entries()) { - expect(contactCardCreateSpy).toHaveBeenNthCalledWith( - index + 1, - expect.objectContaining({ id: orderedId }), - expect.anything() // parent passed into create method - ); - } - }); - - it('initializes embeddables in order, awaiting each', async () => { - const childIdInitializeOrder = ['456', '123', '789']; - const { container, contactCardCreateSpy } = await createHelloWorldContainerAndEmbeddable( - { - id: 'hello', - panels, - }, - {}, - { childIdInitializeOrder, initializeSequentially: true } - ); - - const untilEmbeddableLoadedMock = jest.spyOn(container, 'untilEmbeddableLoaded'); - - await new Promise((r) => setTimeout(r, 10)); - - for (const [index, orderedId] of childIdInitializeOrder.entries()) { - await container.untilEmbeddableLoaded(orderedId); - expect(contactCardCreateSpy).toHaveBeenNthCalledWith( - index + 1, - expect.objectContaining({ id: orderedId }), - expect.anything() // parent passed into create method - ); - expect(untilEmbeddableLoadedMock).toHaveBeenCalledWith(orderedId); - } - }); -}); - -test('Container.addNewEmbeddable', async () => { - const { container, embeddable } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {} }, - { - firstName: 'Susy', - } - ); - expect(embeddable).toBeDefined(); - - if (!isErrorEmbeddable(embeddable)) { - expect(embeddable.getInput().firstName).toBe('Susy'); - } else { - expect(false).toBe(true); - } - - const embeddableInContainer = container.getChild<ContactCardEmbeddable>(embeddable.id); - expect(embeddableInContainer).toBeDefined(); - expect(embeddableInContainer.id).toBe(embeddable.id); -}); - -test('Container.removeEmbeddable removes and cleans up', async () => { - const { start } = await createHelloWorldContainerAndEmbeddable(); - - const container = new HelloWorldContainer( - { - id: 'hello', - panels: { - '123': { - explicitInput: { id: '123', firstName: 'Sam', lastName: 'Tarley' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - }, - }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - const embeddable = await container.addNewEmbeddable< - ContactCardEmbeddableInput, - ContactCardEmbeddableOutput, - ContactCardEmbeddable - >(CONTACT_CARD_EMBEDDABLE, { - firstName: 'Susy', - lastName: 'Q', - }); - - if (isErrorEmbeddable(embeddable)) { - expect(false).toBe(true); - return; - } - - embeddable.updateInput({ lastName: 'Z' }); - - container - .getOutput$() - .pipe(skip(1)) - .subscribe(() => { - const noFind = container.getChild<ContactCardEmbeddable>(embeddable.id); - expect(noFind).toBeUndefined(); - - expect(container.getInput().panels[embeddable.id]).toBeUndefined(); - if (isErrorEmbeddable(embeddable)) { - expect(false).toBe(true); - } - - expect(() => embeddable.updateInput({ nameTitle: 'Sir' })).toThrowError(); - expect(container.getOutput().embeddableLoaded[embeddable.id]).toBeUndefined(); - }); - - container.removeEmbeddable(embeddable.id); -}); - -test('Container.input$ is notified when child embeddable input is updated', async () => { - const { container, embeddable } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {} }, - { - firstName: 'Susy', - lastName: 'Q', - } - ); - - expect(isErrorEmbeddable(embeddable)).toBe(false); - - const changes = jest.fn(); - - expect(changes).toHaveBeenCalledTimes(0); - - const subscription = container.getInput$().subscribe(changes); - - expect(changes).toHaveBeenCalledTimes(1); - - embeddable.updateInput({ lastName: 'Z' }); - - expect(changes).toHaveBeenCalledTimes(2); - - expect(embeddable.getInput().lastName === 'Z'); - - embeddable.updateInput({ lastName: embeddable.getOutput().originalLastName }); - - expect(embeddable.getInput().lastName === 'Q'); - - expect(changes).toBeCalledTimes(3); - - subscription.unsubscribe(); - - embeddable.updateInput({ nameTitle: 'Dr.' }); - - expect(changes).toBeCalledTimes(3); -}); - -test('Container.input$', async () => { - const { container, embeddable } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {} }, - { - firstName: 'Susy', - id: 'Susy', - } - ); - - expect(isErrorEmbeddable(embeddable)).toBe(false); - - const changes = jest.fn(); - const input = container.getInput(); - expect(input.panels[embeddable.id].explicitInput).toEqual({ firstName: 'Susy', id: 'Susy' }); - - const subscription = container.getInput$().subscribe(changes); - embeddable.updateInput({ nameTitle: 'Dr.' }); - expect(container.getInput().panels[embeddable.id].explicitInput).toEqual({ - nameTitle: 'Dr.', - firstName: 'Susy', - id: 'Susy', - }); - subscription.unsubscribe(); -}); - -test('Container.getInput$ not triggered if state is the same', async () => { - const { container, embeddable } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {} }, - { - firstName: 'Susy', - id: 'Susy', - } - ); - - expect(isErrorEmbeddable(embeddable)).toBe(false); - - const changes = jest.fn(); - const input = container.getInput(); - expect(input.panels[embeddable.id].explicitInput).toEqual({ - id: 'Susy', - firstName: 'Susy', - }); - const subscription = container.getInput$().subscribe(changes); - embeddable.updateInput({ nameTitle: 'Dr.' }); - expect(changes).toBeCalledTimes(2); - embeddable.updateInput({ nameTitle: 'Dr.' }); - expect(changes).toBeCalledTimes(2); - subscription.unsubscribe(); -}); - -test('Container view mode change propagates to children', async () => { - const { container, embeddable } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {}, viewMode: ViewMode.VIEW }, - { - firstName: 'Susy', - id: 'Susy', - } - ); - - expect(embeddable.getInput().viewMode).toBe(ViewMode.VIEW); - - container.updateInput({ viewMode: ViewMode.EDIT }); - - expect(embeddable.getInput().viewMode).toBe(ViewMode.EDIT); -}); - -test(`Container updates its state when a child's input is updated`, async () => { - const { container, embeddable, start } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {}, viewMode: ViewMode.VIEW }, - { - id: '123', - firstName: 'Susy', - } - ); - - expect(isErrorEmbeddable(embeddable)).toBe(false); - - const containerSubscription = Rx.merge(container.getInput$(), container.getOutput$()).subscribe( - () => { - const child = container.getChild<ContactCardEmbeddable>(embeddable.id); - if ( - container.getOutput().embeddableLoaded[embeddable.id] && - child.getInput().nameTitle === 'Dr.' - ) { - containerSubscription.unsubscribe(); - - // Make sure a brand new container built off the output of container also creates an embeddable - // with "Dr.", not the default the embeddable was first added with. Makes sure changed input - // is preserved with the container. - const containerClone = new HelloWorldContainer(container.getInput(), { - getEmbeddableFactory: start.getEmbeddableFactory, - }); - const cloneSubscription = Rx.merge( - containerClone.getOutput$(), - containerClone.getInput$() - ).subscribe(() => { - const childClone = containerClone.getChild<ContactCardEmbeddable>(embeddable.id); - - if ( - containerClone.getOutput().embeddableLoaded[embeddable.id] && - childClone.getInput().nameTitle === 'Dr.' - ) { - cloneSubscription.unsubscribe(); - } - }); - } - } - ); - - embeddable.updateInput({ nameTitle: 'Dr.' }); -}); - -test(`Derived container state passed to children`, async () => { - const { container, embeddable } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {}, viewMode: ViewMode.VIEW }, - { - firstName: 'Susy', - } - ); - - let subscription = embeddable - .getInput$() - .pipe(skip(1)) - .subscribe((changes: Partial<ContactCardEmbeddableInput>) => { - expect(changes.viewMode).toBe(ViewMode.EDIT); - }); - container.updateInput({ viewMode: ViewMode.EDIT }); - - subscription.unsubscribe(); - subscription = embeddable - .getInput$() - .pipe(skip(1)) - .subscribe((changes: Partial<ContactCardEmbeddableInput>) => { - expect(changes.viewMode).toBe(ViewMode.VIEW); - }); - container.updateInput({ viewMode: ViewMode.VIEW }); - subscription.unsubscribe(); -}); - -test(`Can subscribe to children embeddable updates`, async () => { - const { embeddable } = await createHelloWorldContainerAndEmbeddable( - { - id: 'hello container', - panels: {}, - viewMode: ViewMode.VIEW, - }, - { - firstName: 'Susy', - } - ); - - expect(isErrorEmbeddable(embeddable)).toBe(false); - - const subscription = embeddable.getInput$().subscribe((input: ContactCardEmbeddableInput) => { - if (input.nameTitle === 'Dr.') { - subscription.unsubscribe(); - } - }); - embeddable.updateInput({ nameTitle: 'Dr.' }); -}); - -test('Test nested reactions', async () => { - const { container, embeddable } = await createHelloWorldContainerAndEmbeddable( - { id: 'hello', panels: {}, viewMode: ViewMode.VIEW }, - { - firstName: 'Susy', - } - ); - - expect(isErrorEmbeddable(embeddable)).toBe(false); - - const containerSubscription = container.getInput$().subscribe((input: any) => { - const embeddableNameTitle = embeddable.getInput().nameTitle; - const viewMode = input.viewMode; - const nameTitleFromContainer = container.getInputForChild<ContactCardEmbeddableInput>( - embeddable.id - ).nameTitle; - if ( - embeddableNameTitle === 'Dr.' && - nameTitleFromContainer === 'Dr.' && - viewMode === ViewMode.EDIT - ) { - containerSubscription.unsubscribe(); - embeddableSubscription.unsubscribe(); - } - }); - - const embeddableSubscription = embeddable.getInput$().subscribe(() => { - if (embeddable.getInput().nameTitle === 'Dr.') { - container.updateInput({ viewMode: ViewMode.EDIT }); - } - }); - - embeddable.updateInput({ nameTitle: 'Dr.' }); -}); - -test('Explicit embeddable input mapped to undefined will default to inherited', async () => { - const { start } = await createHelloWorldContainerAndEmbeddable(); - const derivedFilter: MockFilter = { - $state: { store: 'appState' }, - meta: { disabled: false, alias: 'name', negate: false }, - query: { match: {} }, - }; - const container = new FilterableContainer( - { id: 'hello', panels: {}, filters: [derivedFilter] }, - start.getEmbeddableFactory - ); - const embeddable = await container.addNewEmbeddable< - FilterableEmbeddableInput, - EmbeddableOutput, - FilterableEmbeddable - >(FILTERABLE_EMBEDDABLE, {}); - - if (isErrorEmbeddable(embeddable)) { - throw new Error('Error adding embeddable'); - } - - embeddable.updateInput({ filters: [] }); - - expect(container.getInputForChild<FilterableEmbeddableInput>(embeddable.id).filters).toEqual([]); - - embeddable.updateInput({ filters: undefined }); - - expect(container.getInputForChild<FilterableEmbeddableInput>(embeddable.id).filters).toEqual([ - derivedFilter, - ]); -}); - -test('Explicit embeddable input mapped to undefined with no inherited value will get passed to embeddable', async () => { - const { container } = await createHelloWorldContainerAndEmbeddable({ id: 'hello', panels: {} }); - - const embeddable = await container.addNewEmbeddable< - FilterableEmbeddableInput, - EmbeddableOutput, - FilterableEmbeddable - >(FILTERABLE_EMBEDDABLE, {}); - - if (isErrorEmbeddable(embeddable)) { - throw new Error('Error adding embeddable'); - } - - embeddable.updateInput({ filters: [] }); - - expect(container.getInputForChild<FilterableEmbeddableInput>(embeddable.id).filters).toEqual([]); - - const subscription = embeddable - .getInput$() - .pipe(skip(1)) - .subscribe(() => { - if (embeddable.getInput().filters === undefined) { - subscription.unsubscribe(); - } - }); - - embeddable.updateInput({ filters: undefined }); -}); - -test('Panel removed from input state', async () => { - const { container } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels: {}, - }); - - const embeddable = await container.addNewEmbeddable< - FilterableEmbeddableInput, - EmbeddableOutput, - FilterableEmbeddable - >(FILTERABLE_EMBEDDABLE, {}); - - const filteredPanels = { ...container.getInput().panels }; - delete filteredPanels[embeddable.id]; - const newInput: Partial<FilterableContainerInput> = { - ...container.getInput(), - panels: filteredPanels, - }; - - container.updateInput(newInput); - await new Promise((r) => setTimeout(r, 1)); - - expect(container.getChild(embeddable.id)).toBeUndefined(); - expect(container.getOutput().embeddableLoaded[embeddable.id]).toBeUndefined(); -}); - -test('Panel added to input state', async () => { - const { container, start } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels: {}, - }); - - const embeddable = await container.addNewEmbeddable< - FilterableEmbeddableInput, - EmbeddableOutput, - FilterableEmbeddable - >(FILTERABLE_EMBEDDABLE, {}); - - const embeddable2 = await container.addNewEmbeddable< - FilterableEmbeddableInput, - EmbeddableOutput, - FilterableEmbeddable - >(FILTERABLE_EMBEDDABLE, {}); - - const container2 = new FilterableContainer( - { id: 'hello', panels: {}, filters: [] }, - start.getEmbeddableFactory - ); - - container2.updateInput(container.getInput()); - await new Promise((r) => setTimeout(r, 1)); - - expect(container.getChild(embeddable.id)).toBeDefined(); - expect(container.getOutput().embeddableLoaded[embeddable.id]).toBe(true); - expect(container.getChild(embeddable2.id)).toBeDefined(); - expect(container.getOutput().embeddableLoaded[embeddable2.id]).toBe(true); -}); - -test('Container changes made directly after adding a new embeddable are propagated', async () => { - const coreSetup = coreMock.createSetup(); - const coreStart = coreMock.createStart(); - const { setup, doStart, uiActions } = testPlugin(coreSetup, coreStart); - - const factory = new SlowContactCardEmbeddableFactory({ - loadTickCount: 3, - execAction: uiActions.executeTriggerActions, - }); - setup.registerEmbeddableFactory(factory.type, factory); - - const start = doStart(); - - const container = new HelloWorldContainer( - { - id: 'hello', - panels: {}, - viewMode: ViewMode.EDIT, - }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - - const subscription = Rx.merge(container.getOutput$(), container.getInput$()) - .pipe(skip(2)) - .subscribe(() => { - expect(Object.keys(container.getOutput().embeddableLoaded).length).toBe(1); - if (Object.keys(container.getOutput().embeddableLoaded).length > 0) { - const embeddableId = Object.keys(container.getOutput().embeddableLoaded)[0]; - - if (container.getOutput().embeddableLoaded[embeddableId] === true) { - const embeddable = container.getChild(embeddableId); - if (embeddable.getInput().viewMode === ViewMode.VIEW) { - subscription.unsubscribe(); - } - } - } - }); - - container.addNewEmbeddable<ContactCardEmbeddableInput>(CONTACT_CARD_EMBEDDABLE, { - firstName: 'A girl', - lastName: 'has no name', - }); - - container.updateInput({ viewMode: ViewMode.VIEW }); -}); - -test('container stores ErrorEmbeddables when a factory for a child cannot be found (so the panel can be removed)', async () => { - const { container } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels: { - '123': { - type: 'IDontExist', - explicitInput: { id: '123' }, - }, - }, - viewMode: ViewMode.EDIT, - }); - - container.getOutput$().subscribe(() => { - if (container.getOutput().embeddableLoaded['123']) { - const child = container.getChild('123'); - expect(child.type).toBe(ERROR_EMBEDDABLE_TYPE); - } - }); -}); - -test('container stores ErrorEmbeddables when a saved object cannot be found', async () => { - const { container } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels: { - '123': { - type: 'vis', - explicitInput: { id: '123', savedObjectId: '456' } as SavedObjectEmbeddableInput, - }, - }, - viewMode: ViewMode.EDIT, - }); - - container.getOutput$().subscribe(() => { - if (container.getOutput().embeddableLoaded['123']) { - const child = container.getChild('123'); - expect(child.type).toBe(ERROR_EMBEDDABLE_TYPE); - } - }); -}); - -test('ErrorEmbeddables get updated when parent does', async () => { - const { container } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels: { - '123': { - type: 'vis', - explicitInput: { id: '123', savedObjectId: '456' } as SavedObjectEmbeddableInput, - }, - }, - viewMode: ViewMode.EDIT, - }); - - container.getOutput$().subscribe(() => { - if (container.getOutput().embeddableLoaded['123']) { - const embeddable = container.getChild('123'); - - expect(embeddable.getInput().viewMode).toBe(ViewMode.EDIT); - - container.updateInput({ viewMode: ViewMode.VIEW }); - - expect(embeddable.getInput().viewMode).toBe(ViewMode.VIEW); - } - }); -}); - -test('untilEmbeddableLoaded() throws an error if there is no such child panel in the container', async () => { - const { container } = await createHelloWorldContainerAndEmbeddable({ - id: 'hello', - panels: {}, - }); - - expect(container.untilEmbeddableLoaded('idontexist')).rejects.toThrowError(); -}); - -test('untilEmbeddableLoaded() throws an error if there is no such child panel in the container - 2', async () => { - const { doStart } = testPlugin(coreMock.createSetup(), coreMock.createStart()); - const start = doStart(); - const container = new HelloWorldContainer( - { - id: 'hello', - panels: {}, - }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - - const [, error] = await of(container.untilEmbeddableLoaded('123')); - expect(error).toBeInstanceOf(Error); - expect((error as Error).message).toMatchInlineSnapshot(`"Panel not found"`); -}); - -test('untilEmbeddableLoaded() resolves if child is loaded in the container', async () => { - const { setup, doStart } = testPlugin(coreMock.createSetup(), coreMock.createStart()); - const factory = new HelloWorldEmbeddableFactoryDefinition(); - setup.registerEmbeddableFactory(factory.type, factory); - const start = doStart(); - const container = new HelloWorldContainer( - { - id: 'hello', - panels: { - '123': { - type: HELLO_WORLD_EMBEDDABLE, - explicitInput: { id: '123' }, - }, - }, - }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - - const child = await container.untilEmbeddableLoaded('123'); - expect(child).toBeDefined(); - expect(child.type).toBe(HELLO_WORLD_EMBEDDABLE); -}); - -test('untilEmbeddableLoaded resolves with undefined if child is subsequently removed', async () => { - const { doStart, setup, uiActions } = testPlugin(coreMock.createSetup(), coreMock.createStart()); - const factory = new SlowContactCardEmbeddableFactory({ - loadTickCount: 3, - execAction: uiActions.executeTriggerActions, - }); - setup.registerEmbeddableFactory(factory.type, factory); - - const start = doStart(); - const container = new HelloWorldContainer( - { - id: 'hello', - panels: { - '123': { - explicitInput: { id: '123', firstName: 'Sam', lastName: 'Tarley' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - }, - }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - - container.untilEmbeddableLoaded('123').then((embed) => { - expect(embed).toBeUndefined(); - }); - - container.updateInput({ panels: {} }); -}); - -test('adding a panel then subsequently removing it before its loaded removes the panel', (done) => { - const { doStart, uiActions, setup } = testPlugin(coreMock.createSetup(), coreMock.createStart()); - const factory = new SlowContactCardEmbeddableFactory({ - loadTickCount: 1, - execAction: uiActions.executeTriggerActions, - }); - setup.registerEmbeddableFactory(factory.type, factory); - const start = doStart(); - const container = new HelloWorldContainer( - { - id: 'hello', - panels: { - '123': { - explicitInput: { id: '123', firstName: 'Sam', lastName: 'Tarley' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - }, - }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - - // Final state should be that the panel is removed. - Rx.merge(container.getInput$(), container.getOutput$()).subscribe(() => { - if ( - container.getInput().panels['123'] === undefined && - container.getOutput().embeddableLoaded['123'] === undefined && - container.getInput().panels['456'] !== undefined && - container.getOutput().embeddableLoaded['456'] === true - ) { - done(); - } - }); - - container.updateInput({ panels: {} }); - - container.updateInput({ - panels: { - '456': { - explicitInput: { id: '456' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - }, - }); -}); diff --git a/src/plugins/embeddable/public/tests/explicit_input.test.ts b/src/plugins/embeddable/public/tests/explicit_input.test.ts deleted file mode 100644 index 60ed8378b4f8f..0000000000000 --- a/src/plugins/embeddable/public/tests/explicit_input.test.ts +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { skip } from 'rxjs'; -import { testPlugin } from './test_plugin'; -import { - MockFilter, - FILTERABLE_EMBEDDABLE, - FilterableEmbeddableInput, -} from '../lib/test_samples/embeddables/filterable_embeddable'; -import { FilterableEmbeddableFactory } from '../lib/test_samples/embeddables/filterable_embeddable_factory'; -import { CONTACT_CARD_EMBEDDABLE } from '../lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory'; -import { SlowContactCardEmbeddableFactory } from '../lib/test_samples/embeddables/contact_card/slow_contact_card_embeddable_factory'; -import { HELLO_WORLD_EMBEDDABLE, HelloWorldEmbeddableFactoryDefinition } from './fixtures'; -import { FilterableContainer } from '../lib/test_samples/embeddables/filterable_container'; -import { isErrorEmbeddable } from '../lib'; -import { HelloWorldContainer } from '../lib/test_samples/embeddables/hello_world_container'; -import { coreMock } from '@kbn/core/public/mocks'; - -const { setup, doStart, uiActions } = testPlugin(coreMock.createSetup(), coreMock.createStart()); - -setup.registerEmbeddableFactory(FILTERABLE_EMBEDDABLE, new FilterableEmbeddableFactory()); -const factory = new SlowContactCardEmbeddableFactory({ - loadTickCount: 2, - execAction: uiActions.executeTriggerActions, -}); -setup.registerEmbeddableFactory(CONTACT_CARD_EMBEDDABLE, factory); -setup.registerEmbeddableFactory( - HELLO_WORLD_EMBEDDABLE, - new HelloWorldEmbeddableFactoryDefinition() -); - -const start = doStart(); - -test('Explicit embeddable input mapped to undefined will default to inherited', async () => { - const derivedFilter: MockFilter = { - $state: { store: 'appState' }, - meta: { disabled: false, alias: 'name', negate: false }, - query: { match: {} }, - }; - const container = new FilterableContainer( - { id: 'hello', panels: {}, filters: [derivedFilter] }, - start.getEmbeddableFactory - ); - const embeddable = await container.addNewEmbeddable<any, any, any>(FILTERABLE_EMBEDDABLE, {}); - - if (isErrorEmbeddable(embeddable)) { - throw new Error('Error adding embeddable'); - } - - embeddable.updateInput({ filters: [] }); - - expect(container.getInputForChild<FilterableEmbeddableInput>(embeddable.id).filters).toEqual([]); - - embeddable.updateInput({ filters: undefined }); - - expect(container.getInputForChild<FilterableEmbeddableInput>(embeddable.id).filters).toEqual([ - derivedFilter, - ]); -}); - -test('Explicit embeddable input mapped to undefined with no inherited value will get passed to embeddable', async () => { - const container = new HelloWorldContainer( - { id: 'hello', panels: {} }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - - const embeddable = await container.addNewEmbeddable<any, any, any>(FILTERABLE_EMBEDDABLE, {}); - - if (isErrorEmbeddable(embeddable)) { - throw new Error('Error adding embeddable'); - } - - embeddable.updateInput({ filters: [] }); - - expect(container.getInputForChild<FilterableEmbeddableInput>(embeddable.id).filters).toEqual([]); - - const subscription = await embeddable - .getInput$() - .pipe(skip(1)) - .subscribe(() => { - if (embeddable.getInput().filters === undefined) { - subscription.unsubscribe(); - } - }); - - embeddable.updateInput({ filters: undefined }); -}); - -// The goal is to make sure that if the container input changes after `onPanelAdded` is called -// but before the embeddable factory returns the embeddable, that the `inheritedChildInput` and -// embeddable input comparisons won't cause explicit input to be set when it shouldn't. -test('Explicit input tests in async situations', (done: () => void) => { - const container = new HelloWorldContainer( - { - id: 'hello', - panels: { - '123': { - explicitInput: { firstName: 'Sam', id: '123' }, - type: CONTACT_CARD_EMBEDDABLE, - }, - }, - }, - { - getEmbeddableFactory: start.getEmbeddableFactory, - } - ); - - container.updateInput({ lastName: 'lolol' }); - - const subscription = container.getOutput$().subscribe(() => { - if (container.getOutput().embeddableLoaded['123']) { - const embeddable = container.getChild<any>('123'); - expect(embeddable).toBeDefined(); - expect(embeddable.getInput().lastName).toBe('lolol'); - subscription.unsubscribe(); - done(); - } - }); -}); diff --git a/src/plugins/embeddable/public/tests/get_embeddable_factories.test.ts b/src/plugins/embeddable/public/tests/get_embeddable_factories.test.ts deleted file mode 100644 index 6b7794958ad54..0000000000000 --- a/src/plugins/embeddable/public/tests/get_embeddable_factories.test.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { testPlugin } from './test_plugin'; -import { FilterableContainerFactory } from '../lib/test_samples/embeddables/filterable_container_factory'; -import { ContactCardEmbeddableFactory } from '../lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory'; - -test('exports getEmbeddableFactories() function', () => { - const { doStart } = testPlugin(); - expect(typeof doStart().getEmbeddableFactories).toBe('function'); -}); - -test('returns empty list if there are no embeddable factories', () => { - const { doStart } = testPlugin(); - const start = doStart(); - const list = [...start.getEmbeddableFactories()]; - expect(list).toEqual([]); -}); - -test('returns existing embeddable factories', () => { - const { setup, doStart } = testPlugin(); - - const factory1 = new FilterableContainerFactory(async () => await start.getEmbeddableFactory); - const factory2 = new ContactCardEmbeddableFactory((() => null) as any, {} as any); - setup.registerEmbeddableFactory(factory1.type, factory1); - setup.registerEmbeddableFactory(factory2.type, factory2); - - const start = doStart(); - - const list = [...start.getEmbeddableFactories()]; - expect(list.length).toBe(2); - expect(!!list.find(({ type }) => factory1.type === type)).toBe(true); - expect(!!list.find(({ type }) => factory2.type === type)).toBe(true); -}); diff --git a/src/plugins/embeddable/public/tests/helpers.ts b/src/plugins/embeddable/public/tests/helpers.ts deleted file mode 100644 index d7fee9d13dec8..0000000000000 --- a/src/plugins/embeddable/public/tests/helpers.ts +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { coreMock } from '@kbn/core/public/mocks'; -import { ContainerInput, EmbeddableContainerSettings, isErrorEmbeddable } from '../lib'; -import { - ContactCardEmbeddable, - ContactCardEmbeddableInput, - ContactCardEmbeddableOutput, - CONTACT_CARD_EMBEDDABLE, - FilterableEmbeddableFactory, - HelloWorldContainer, - SlowContactCardEmbeddableFactory, -} from '../lib/test_samples'; -import { HelloWorldEmbeddableFactoryDefinition } from './fixtures'; -import { testPlugin } from './test_plugin'; - -export async function createHelloWorldContainerAndEmbeddable( - containerInput: ContainerInput = { id: 'hello', panels: {} }, - embeddableInput = {}, - settings?: EmbeddableContainerSettings -) { - const coreSetup = coreMock.createSetup(); - const coreStart = coreMock.createStart(); - const { setup, doStart, uiActions } = testPlugin(coreSetup, coreStart); - const filterableFactory = new FilterableEmbeddableFactory(); - const slowContactCardFactory = new SlowContactCardEmbeddableFactory({ - execAction: uiActions.executeTriggerActions, - }); - const contactCardCreateSpy = jest.spyOn(slowContactCardFactory, 'create'); - - const helloWorldFactory = new HelloWorldEmbeddableFactoryDefinition(); - - setup.registerEmbeddableFactory(filterableFactory.type, filterableFactory); - setup.registerEmbeddableFactory(slowContactCardFactory.type, slowContactCardFactory); - setup.registerEmbeddableFactory(helloWorldFactory.type, helloWorldFactory); - - const start = doStart(); - - const container = new HelloWorldContainer( - containerInput, - { - getEmbeddableFactory: start.getEmbeddableFactory, - }, - settings - ); - - const embeddable = await container.addNewEmbeddable< - ContactCardEmbeddableInput, - ContactCardEmbeddableOutput, - ContactCardEmbeddable - >(CONTACT_CARD_EMBEDDABLE, embeddableInput); - - if (isErrorEmbeddable(embeddable)) { - throw new Error('Error adding embeddable'); - } - - return { - setup, - start, - coreSetup, - coreStart, - container, - uiActions, - embeddable, - contactCardCreateSpy, - }; -} - -export const expectErrorAsync = (fn: (...args: unknown[]) => Promise<unknown>): Promise<Error> => { - return fn() - .then(() => { - throw new Error('Expected an error throw.'); - }) - .catch((error) => { - if (error.message === 'Expected an error throw.') { - throw error; - } - return error; - }); -}; - -export const expectError = (fn: (...args: unknown[]) => unknown): Error => { - try { - fn(); - throw new Error('Expected an error throw.'); - } catch (error) { - if (error.message === 'Expected an error throw.') { - throw error; - } - return error; - } -}; - -export const of = async <T, P extends Promise<T>>( - promise: P -): Promise<[T | undefined, Error | unknown]> => { - try { - return [await promise, undefined]; - } catch (error) { - return [, error]; - } -}; diff --git a/src/plugins/embeddable/tsconfig.json b/src/plugins/embeddable/tsconfig.json index c3b5925e33233..bf97096d1484b 100644 --- a/src/plugins/embeddable/tsconfig.json +++ b/src/plugins/embeddable/tsconfig.json @@ -7,10 +7,8 @@ "kbn_references": [ "@kbn/core", "@kbn/inspector-plugin", - "@kbn/saved-objects-plugin", "@kbn/kibana-utils-plugin", "@kbn/ui-actions-plugin", - "@kbn/i18n-react", "@kbn/utility-types", "@kbn/es-query", "@kbn/i18n", diff --git a/src/plugins/es_ui_shared/.storybook/manager.ts b/src/plugins/es_ui_shared/.storybook/manager.ts deleted file mode 100644 index bfeeb1b14c88e..0000000000000 --- a/src/plugins/es_ui_shared/.storybook/manager.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { addons } from '@storybook/addons'; -import { create } from '@storybook/theming'; -import { PANEL_ID } from '@storybook/addon-actions'; - -addons.setConfig({ - theme: create({ - base: 'light', - brandTitle: 'Platform Deployment Management Storybook', - brandUrl: 'https://github.com/elastic/kibana/tree/main/src/plugins/es_ui_shared', - }), - showPanel: () => true, - selectedPanel: PANEL_ID, -}); diff --git a/src/plugins/es_ui_shared/jest.config.js b/src/plugins/es_ui_shared/jest.config.js deleted file mode 100644 index e120ae9b0ef8c..0000000000000 --- a/src/plugins/es_ui_shared/jest.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/src/plugins/es_ui_shared'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/src/plugins/es_ui_shared', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/src/plugins/es_ui_shared/{__packages_do_not_import__,common,public,server,static}/**/*.{ts,tsx}', - ], -}; diff --git a/src/plugins/es_ui_shared/static/forms/README.md b/src/plugins/es_ui_shared/static/forms/README.md deleted file mode 100644 index e3e64faf0ddbc..0000000000000 --- a/src/plugins/es_ui_shared/static/forms/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# Form lib - -## Documentation - -The documentation can be accessed at: https://docs.elastic.dev/form-lib/welcome - - -### Run locally - -In order to run the documentation locally - -1. Fork and clone the elastic docs repo https://github.com/elastic/docs.elastic.dev -2. `cp sources.json sources-dev.json` -3. Edit the "elastic/kibana" section inside `source-dev.json` - -``` -// From this -{ - "type": "github", - "location": "elastic/kibana" -} - -// to this -{ - "type": "file", - "location": "../../<root-kibana-repo>", - // optional, if you want a faster build you can only include the form lib docs - "subdirs": [ - "src/plugins/es_ui_shared/static/forms/docs" - ] -} -``` - -4. Follow the "Getting started" instructions (https://github.com/elastic/docs.elastic.dev#getting-started) -5. `yarn dev` to launch the docs server - -## Field value change sequence diagram - -```mermaid -sequenceDiagram -actor User -User ->> UseField: change <input /> value -UseField ->> useField: setValue() -useField ->> useField: run field formatters -useField ->> useField: update state: value -useField ->> useField: create new "field" (FieldHook) -useField ->> useField: useEffect(): "field" changed -useField ->> useForm: addField(path, field) -useForm ->> useForm: update "fieldsRef" map object -useForm ->> useForm: update "formData$" observable -useForm ->> useFormData: update state: formData -useFormData -->> User: onChange() (optional handler passed to useFormdata()) -par useEffect -useField ->> UseField: call "onChange" prop -and useEffect -useField ->> useField: update state: isPristine: false -useField ->> useField: update state: isChangingValue: true -useField ->> useForm: validateFields() -note right of useForm: Validate the current field + any other field<br>declared in the "fieldsToValidateOnChange" -useForm -->> useField: validate() -useField ->> useField: update state: isValid true|false -useField ->> useForm: update state: isValid undefined|true|false -useField ->> useField: update state: isChangingValue: false -and useEffect -useField ->> useField: update state: isModified: true|false -end -User ->> User: useEffect() -- >useFormData state update -``` \ No newline at end of file diff --git a/src/plugins/es_ui_shared/tsconfig.json b/src/plugins/es_ui_shared/tsconfig.json deleted file mode 100644 index 2747f41b0f370..0000000000000 --- a/src/plugins/es_ui_shared/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "__packages_do_not_import__/**/*", - "common/**/*", - "public/**/*", - "server/**/*", - "static/**/*", - "../../../typings/**/*", - ".storybook/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/data-views-plugin", - "@kbn/i18n", - "@kbn/shared-ux-page-kibana-template", - "@kbn/i18n-react", - "@kbn/test-jest-helpers", - "@kbn/share-plugin", - "@kbn/safer-lodash-set", - "@kbn/storybook", - "@kbn/shared-ux-link-redirect-app", - "@kbn/code-editor", - "@kbn/core-application-common", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/src/plugins/expression_error/public/expression_renderers/__stories__/error_renderer.stories.tsx b/src/plugins/expression_error/public/expression_renderers/__stories__/error_renderer.stories.tsx index b7f789f873de3..ea28ff903582c 100644 --- a/src/plugins/expression_error/public/expression_renderers/__stories__/error_renderer.stories.tsx +++ b/src/plugins/expression_error/public/expression_renderers/__stories__/error_renderer.stories.tsx @@ -19,7 +19,5 @@ storiesOf('renderers/error', module).add('default', () => { error: thrownError, }; - return ( - <Render renderer={getErrorRenderer(coreMock.createStart().theme.theme$)} config={config} /> - ); + return <Render renderer={getErrorRenderer(coreMock.createStart())} config={config} />; }); diff --git a/src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx b/src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx index 29fa69aa736b4..e26aa7c4a5160 100644 --- a/src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx +++ b/src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx @@ -9,9 +9,8 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { ExpressionRenderDefinition } from '@kbn/expressions-plugin/common'; import { i18n } from '@kbn/i18n'; import { withSuspense } from '@kbn/presentation-util-plugin/public'; @@ -36,25 +35,24 @@ const strings = { }), }; -export const getDebugRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<any> => ({ - name: 'debug', - displayName: strings.getDisplayName(), - help: strings.getHelpDescription(), - reuseDomNode: true, - render(domNode, config, handlers) { - handlers.onDestroy(() => unmountComponentAtNode(domNode)); - render( - <KibanaErrorBoundaryProvider analytics={undefined}> - <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> - <Debug parentNode={domNode} payload={config} onLoaded={handlers.done} /> - </KibanaThemeProvider> - </KibanaErrorBoundary> - </KibanaErrorBoundaryProvider>, - domNode - ); - }, - }); +export const getDebugRenderer = (core: CoreStart) => (): ExpressionRenderDefinition<any> => ({ + name: 'debug', + displayName: strings.getDisplayName(), + help: strings.getHelpDescription(), + reuseDomNode: true, + render(domNode, config, handlers) { + handlers.onDestroy(() => unmountComponentAtNode(domNode)); + render( + <KibanaErrorBoundaryProvider analytics={undefined}> + <KibanaErrorBoundary> + <KibanaThemeProvider {...core}> + <Debug parentNode={domNode} payload={config} onLoaded={handlers.done} /> + </KibanaThemeProvider> + </KibanaErrorBoundary> + </KibanaErrorBoundaryProvider>, + domNode + ); + }, +}); -export const debugRendererFactory = (core: CoreSetup) => getDebugRenderer(core.theme.theme$); +export const debugRendererFactory = (core: CoreStart) => getDebugRenderer(core); diff --git a/src/plugins/expression_error/public/expression_renderers/error_renderer.tsx b/src/plugins/expression_error/public/expression_renderers/error_renderer.tsx index 4ba3daa15d08c..9d352926bd9d4 100644 --- a/src/plugins/expression_error/public/expression_renderers/error_renderer.tsx +++ b/src/plugins/expression_error/public/expression_renderers/error_renderer.tsx @@ -9,9 +9,8 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { I18nProvider } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { @@ -38,7 +37,7 @@ const errorStrings = { const ErrorComponent = withSuspense(LazyErrorRenderComponent); export const getErrorRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<ErrorRendererConfig> => ({ + (core: CoreStart) => (): ExpressionRenderDefinition<ErrorRendererConfig> => ({ name: 'error', displayName: errorStrings.getDisplayName(), help: errorStrings.getHelpDescription(), @@ -55,7 +54,7 @@ export const getErrorRenderer = render( <KibanaErrorBoundaryProvider analytics={undefined}> <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> + <KibanaThemeProvider {...core}> <I18nProvider> <ErrorComponent onLoaded={handlers.done} {...config} parentNode={domNode} /> </I18nProvider> @@ -67,4 +66,4 @@ export const getErrorRenderer = }, }); -export const errorRendererFactory = (core: CoreSetup) => getErrorRenderer(core.theme.theme$); +export const errorRendererFactory = (core: CoreStart) => getErrorRenderer(core); diff --git a/src/plugins/expression_error/public/plugin.ts b/src/plugins/expression_error/public/plugin.ts index 66b5209267599..180a6209f4da5 100755 --- a/src/plugins/expression_error/public/plugin.ts +++ b/src/plugins/expression_error/public/plugin.ts @@ -26,8 +26,10 @@ export class ExpressionErrorPlugin implements Plugin<ExpressionErrorPluginSetup, ExpressionErrorPluginStart, SetupDeps, StartDeps> { public setup(core: CoreSetup, { expressions }: SetupDeps): ExpressionErrorPluginSetup { - expressions.registerRenderer(errorRendererFactory(core)); - expressions.registerRenderer(debugRendererFactory(core)); + core.getStartServices().then(([start]) => { + expressions.registerRenderer(errorRendererFactory(start)); + expressions.registerRenderer(debugRendererFactory(start)); + }); } public start(core: CoreStart): ExpressionErrorPluginStart {} diff --git a/src/plugins/expression_image/public/expression_renderers/__stories__/image_renderer.stories.tsx b/src/plugins/expression_image/public/expression_renderers/__stories__/image_renderer.stories.tsx index 07fb4db558bd5..1577ee8b7fabf 100644 --- a/src/plugins/expression_image/public/expression_renderers/__stories__/image_renderer.stories.tsx +++ b/src/plugins/expression_image/public/expression_renderers/__stories__/image_renderer.stories.tsx @@ -23,7 +23,7 @@ const Renderer = ({ elasticLogo }: { elasticLogo: string }) => { return ( <Render - renderer={getImageRenderer(coreMock.createStart().theme.theme$)} + renderer={getImageRenderer(coreMock.createStart())} config={config} width="500px" height="500px" diff --git a/src/plugins/expression_image/public/expression_renderers/image_renderer.tsx b/src/plugins/expression_image/public/expression_renderers/image_renderer.tsx index e80281fc10f42..c5d1d201e1c9d 100644 --- a/src/plugins/expression_image/public/expression_renderers/image_renderer.tsx +++ b/src/plugins/expression_image/public/expression_renderers/image_renderer.tsx @@ -9,9 +9,8 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { ExpressionRenderDefinition, IInterpreterRenderHandlers, @@ -34,7 +33,7 @@ const strings = { }; export const getImageRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<ImageRendererConfig> => ({ + (core: CoreStart) => (): ExpressionRenderDefinition<ImageRendererConfig> => ({ name: 'image', displayName: strings.getDisplayName(), help: strings.getHelpDescription(), @@ -62,7 +61,7 @@ export const getImageRenderer = render( <KibanaErrorBoundaryProvider analytics={undefined}> <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> + <KibanaThemeProvider {...core}> <div style={style} /> </KibanaThemeProvider> </KibanaErrorBoundary> @@ -73,4 +72,4 @@ export const getImageRenderer = }, }); -export const imageRendererFactory = (core: CoreSetup) => getImageRenderer(core.theme.theme$); +export const imageRendererFactory = (core: CoreStart) => getImageRenderer(core); diff --git a/src/plugins/expression_image/public/plugin.ts b/src/plugins/expression_image/public/plugin.ts index 4ee0b457b4f61..e9fac6f9215c6 100755 --- a/src/plugins/expression_image/public/plugin.ts +++ b/src/plugins/expression_image/public/plugin.ts @@ -27,8 +27,10 @@ export class ExpressionImagePlugin implements Plugin<ExpressionImagePluginSetup, ExpressionImagePluginStart, SetupDeps, StartDeps> { public setup(core: CoreSetup, { expressions }: SetupDeps): ExpressionImagePluginSetup { - expressions.registerFunction(imageFunction); - expressions.registerRenderer(imageRendererFactory(core)); + core.getStartServices().then(([start]) => { + expressions.registerFunction(imageFunction); + expressions.registerRenderer(imageRendererFactory(start)); + }); } public start(core: CoreStart): ExpressionImagePluginStart {} diff --git a/src/plugins/expression_metric/public/expression_renderers/__stories__/metric_renderer.stories.tsx b/src/plugins/expression_metric/public/expression_renderers/__stories__/metric_renderer.stories.tsx index 5438bb4b4287a..9c8e5d17dc3bb 100644 --- a/src/plugins/expression_metric/public/expression_renderers/__stories__/metric_renderer.stories.tsx +++ b/src/plugins/expression_metric/public/expression_renderers/__stories__/metric_renderer.stories.tsx @@ -38,7 +38,7 @@ const metricFontSpec: CSSProperties = { color: '#b83c6f', }; -const theme$ = coreMock.createStart().theme.theme$; +const core = coreMock.createStart(); storiesOf('renderers/Metric', module) .add('with null metric', () => { @@ -49,7 +49,7 @@ storiesOf('renderers/Metric', module) label: '', metricFormat: '', }; - return <Render renderer={getMetricRenderer(theme$)} config={config} />; + return <Render renderer={getMetricRenderer(core)} config={config} />; }) .add('with number metric', () => { const config: MetricRendererConfig = { @@ -59,7 +59,7 @@ storiesOf('renderers/Metric', module) label: '', metricFormat: '', }; - return <Render renderer={getMetricRenderer(theme$)} config={config} />; + return <Render renderer={getMetricRenderer(core)} config={config} />; }) .add('with string metric', () => { const config: MetricRendererConfig = { @@ -69,7 +69,7 @@ storiesOf('renderers/Metric', module) label: '', metricFormat: '', }; - return <Render renderer={getMetricRenderer(theme$)} config={config} />; + return <Render renderer={getMetricRenderer(core)} config={config} />; }) .add('with label', () => { const config: MetricRendererConfig = { @@ -79,7 +79,7 @@ storiesOf('renderers/Metric', module) label: 'Average price', metricFormat: '', }; - return <Render renderer={getMetricRenderer(theme$)} config={config} />; + return <Render renderer={getMetricRenderer(core)} config={config} />; }) .add('with number metric and a specified format', () => { const config: MetricRendererConfig = { @@ -89,7 +89,7 @@ storiesOf('renderers/Metric', module) label: 'Average price', metricFormat: '0.00%', }; - return <Render renderer={getMetricRenderer(theme$)} config={config} />; + return <Render renderer={getMetricRenderer(core)} config={config} />; }) .add('with formatted string metric and a specified format', () => { const config: MetricRendererConfig = { @@ -99,7 +99,7 @@ storiesOf('renderers/Metric', module) label: 'Total Revenue', metricFormat: '$0a', }; - return <Render renderer={getMetricRenderer(theme$)} config={config} />; + return <Render renderer={getMetricRenderer(core)} config={config} />; }) .add('with invalid metricFont', () => { const config: MetricRendererConfig = { @@ -109,5 +109,5 @@ storiesOf('renderers/Metric', module) label: 'Total Revenue', metricFormat: '$0a', }; - return <Render renderer={getMetricRenderer(theme$)} config={config} />; + return <Render renderer={getMetricRenderer(core)} config={config} />; }); diff --git a/src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx b/src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx index db4b8575d5e26..315cf1fca32a2 100644 --- a/src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx +++ b/src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx @@ -9,9 +9,8 @@ import React, { CSSProperties } from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { ExpressionRenderDefinition, IInterpreterRenderHandlers, @@ -33,7 +32,7 @@ const strings = { }; export const getMetricRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<MetricRendererConfig> => ({ + (core: CoreStart) => (): ExpressionRenderDefinition<MetricRendererConfig> => ({ name: 'metric', displayName: strings.getDisplayName(), help: strings.getHelpDescription(), @@ -51,7 +50,7 @@ export const getMetricRenderer = render( <KibanaErrorBoundaryProvider analytics={undefined}> <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> + <KibanaThemeProvider {...core}> <MetricComponent label={config.label} labelFont={config.labelFont ? (config.labelFont.spec as CSSProperties) : {}} @@ -68,4 +67,4 @@ export const getMetricRenderer = }, }); -export const metricRendererFactory = (core: CoreSetup) => getMetricRenderer(core.theme.theme$); +export const metricRendererFactory = (core: CoreStart) => getMetricRenderer(core); diff --git a/src/plugins/expression_metric/public/plugin.ts b/src/plugins/expression_metric/public/plugin.ts index ce5bd9069ca21..0bcf71a93b484 100755 --- a/src/plugins/expression_metric/public/plugin.ts +++ b/src/plugins/expression_metric/public/plugin.ts @@ -27,8 +27,10 @@ export class ExpressionMetricPlugin implements Plugin<ExpressionMetricPluginSetup, ExpressionMetricPluginStart, SetupDeps, StartDeps> { public setup(core: CoreSetup, { expressions }: SetupDeps): ExpressionMetricPluginSetup { - expressions.registerFunction(metricFunction); - expressions.registerRenderer(metricRendererFactory(core)); + core.getStartServices().then(([start]) => { + expressions.registerFunction(metricFunction); + expressions.registerRenderer(metricRendererFactory(start)); + }); } public start(core: CoreStart): ExpressionMetricPluginStart {} diff --git a/src/plugins/expression_repeat_image/public/expression_renderers/__stories__/repeat_image_renderer.stories.tsx b/src/plugins/expression_repeat_image/public/expression_renderers/__stories__/repeat_image_renderer.stories.tsx index a5f58b97970cf..31ae794d234a4 100644 --- a/src/plugins/expression_repeat_image/public/expression_renderers/__stories__/repeat_image_renderer.stories.tsx +++ b/src/plugins/expression_repeat_image/public/expression_renderers/__stories__/repeat_image_renderer.stories.tsx @@ -32,7 +32,7 @@ const Renderer = ({ return ( <Render - renderer={getRepeatImageRenderer(coreMock.createStart().theme.theme$)} + renderer={getRepeatImageRenderer(coreMock.createStart())} config={config} width="400px" /> diff --git a/src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx b/src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx index 9a35459880889..9aed56e999c3f 100644 --- a/src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx +++ b/src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx @@ -9,9 +9,8 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { ExpressionRenderDefinition, IInterpreterRenderHandlers, @@ -35,7 +34,7 @@ const strings = { }; export const getRepeatImageRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<RepeatImageRendererConfig> => ({ + (core: CoreStart) => (): ExpressionRenderDefinition<RepeatImageRendererConfig> => ({ name: 'repeatImage', displayName: strings.getDisplayName(), help: strings.getHelpDescription(), @@ -60,7 +59,7 @@ export const getRepeatImageRenderer = render( <KibanaErrorBoundaryProvider analytics={undefined}> <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> + <KibanaThemeProvider {...core}> <I18nProvider> <RepeatImageComponent onLoaded={handlers.done} {...settings} parentNode={domNode} /> </I18nProvider> @@ -72,5 +71,4 @@ export const getRepeatImageRenderer = }, }); -export const repeatImageRendererFactory = (core: CoreSetup) => - getRepeatImageRenderer(core.theme.theme$); +export const repeatImageRendererFactory = (core: CoreStart) => getRepeatImageRenderer(core); diff --git a/src/plugins/expression_repeat_image/public/plugin.ts b/src/plugins/expression_repeat_image/public/plugin.ts index c9421c76895ba..f66ae96a8b7c1 100755 --- a/src/plugins/expression_repeat_image/public/plugin.ts +++ b/src/plugins/expression_repeat_image/public/plugin.ts @@ -33,8 +33,10 @@ export class ExpressionRepeatImagePlugin > { public setup(core: CoreSetup, { expressions }: SetupDeps): ExpressionRepeatImagePluginSetup { - expressions.registerFunction(repeatImageFunction); - expressions.registerRenderer(repeatImageRendererFactory(core)); + core.getStartServices().then(([start]) => { + expressions.registerFunction(repeatImageFunction); + expressions.registerRenderer(repeatImageRendererFactory(start)); + }); } public start(core: CoreStart): ExpressionRepeatImagePluginStart {} diff --git a/src/plugins/expression_reveal_image/public/expression_renderers/__stories__/reveal_image_renderer.stories.tsx b/src/plugins/expression_reveal_image/public/expression_renderers/__stories__/reveal_image_renderer.stories.tsx index 664cc97117791..32ea7edd04765 100644 --- a/src/plugins/expression_reveal_image/public/expression_renderers/__stories__/reveal_image_renderer.stories.tsx +++ b/src/plugins/expression_reveal_image/public/expression_renderers/__stories__/reveal_image_renderer.stories.tsx @@ -29,12 +29,7 @@ const Renderer = ({ percent: 0.45, }; - return ( - <Render - renderer={getRevealImageRenderer(coreMock.createStart().theme.theme$)} - config={config} - /> - ); + return <Render renderer={getRevealImageRenderer(coreMock.createStart())} config={config} />; }; storiesOf('renderers/revealImage', module).add( diff --git a/src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx b/src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx index fbfe479225ece..3190a7c90c112 100644 --- a/src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx +++ b/src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx @@ -9,9 +9,8 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { ExpressionRenderDefinition, IInterpreterRenderHandlers, @@ -34,7 +33,7 @@ export const strings = { }; export const getRevealImageRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<RevealImageRendererConfig> => ({ + (core: CoreStart) => (): ExpressionRenderDefinition<RevealImageRendererConfig> => ({ name: 'revealImage', displayName: strings.getDisplayName(), help: strings.getHelpDescription(), @@ -52,7 +51,7 @@ export const getRevealImageRenderer = render( <KibanaErrorBoundaryProvider analytics={undefined}> <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> + <KibanaThemeProvider {...core}> <I18nProvider> <RevealImageComponent onLoaded={handlers.done} {...config} parentNode={domNode} /> </I18nProvider> @@ -64,5 +63,4 @@ export const getRevealImageRenderer = }, }); -export const revealImageRendererFactory = (core: CoreSetup) => - getRevealImageRenderer(core.theme.theme$); +export const revealImageRendererFactory = (core: CoreStart) => getRevealImageRenderer(core); diff --git a/src/plugins/expression_reveal_image/public/plugin.ts b/src/plugins/expression_reveal_image/public/plugin.ts index e41fea42bf1e2..66e802f4cf448 100755 --- a/src/plugins/expression_reveal_image/public/plugin.ts +++ b/src/plugins/expression_reveal_image/public/plugin.ts @@ -33,8 +33,10 @@ export class ExpressionRevealImagePlugin > { public setup(core: CoreSetup, { expressions }: SetupDeps): ExpressionRevealImagePluginSetup { - expressions.registerFunction(revealImageFunction); - expressions.registerRenderer(revealImageRendererFactory(core)); + core.getStartServices().then(([start]) => { + expressions.registerFunction(revealImageFunction); + expressions.registerRenderer(revealImageRendererFactory(start)); + }); } public start(core: CoreStart): ExpressionRevealImagePluginStart {} diff --git a/src/plugins/expression_shape/public/expression_renderers/__stories__/progress_renderer.stories.tsx b/src/plugins/expression_shape/public/expression_renderers/__stories__/progress_renderer.stories.tsx index 0f93314ee0816..79e975bf2d46e 100644 --- a/src/plugins/expression_shape/public/expression_renderers/__stories__/progress_renderer.stories.tsx +++ b/src/plugins/expression_shape/public/expression_renderers/__stories__/progress_renderer.stories.tsx @@ -31,7 +31,5 @@ storiesOf('renderers/progress', module).add('default', () => { valueWeight: 15, }; - return ( - <Render renderer={getProgressRenderer(coreMock.createStart().theme.theme$)} config={config} /> - ); + return <Render renderer={getProgressRenderer(coreMock.createStart())} config={config} />; }); diff --git a/src/plugins/expression_shape/public/expression_renderers/__stories__/shape_renderer.stories.tsx b/src/plugins/expression_shape/public/expression_renderers/__stories__/shape_renderer.stories.tsx index d089174c60325..f69f5d765484c 100644 --- a/src/plugins/expression_shape/public/expression_renderers/__stories__/shape_renderer.stories.tsx +++ b/src/plugins/expression_shape/public/expression_renderers/__stories__/shape_renderer.stories.tsx @@ -24,7 +24,5 @@ storiesOf('renderers/shape', module).add('default', () => { maintainAspect: true, }; - return ( - <Render renderer={getShapeRenderer(coreMock.createStart().theme.theme$)} config={config} /> - ); + return <Render renderer={getShapeRenderer(coreMock.createStart())} config={config} />; }); diff --git a/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx b/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx index ed7629a7d87a0..17118625e9157 100644 --- a/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx +++ b/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx @@ -9,9 +9,8 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { ExpressionRenderDefinition, IInterpreterRenderHandlers, @@ -34,7 +33,7 @@ const strings = { }; export const getProgressRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<ProgressRendererConfig> => ({ + (core: CoreStart) => (): ExpressionRenderDefinition<ProgressRendererConfig> => ({ name: 'progress', displayName: strings.getDisplayName(), help: strings.getHelpDescription(), @@ -52,7 +51,7 @@ export const getProgressRenderer = render( <KibanaErrorBoundaryProvider analytics={undefined}> <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> + <KibanaThemeProvider {...core}> <I18nProvider> <ProgressComponent {...config} parentNode={domNode} onLoaded={handlers.done} /> </I18nProvider> @@ -64,4 +63,4 @@ export const getProgressRenderer = }, }); -export const progressRendererFactory = (core: CoreSetup) => getProgressRenderer(core.theme.theme$); +export const progressRendererFactory = (core: CoreStart) => getProgressRenderer(core); diff --git a/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx b/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx index 650033aa4542d..a41e359eec00d 100644 --- a/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx +++ b/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx @@ -9,9 +9,8 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; -import { Observable } from 'rxjs'; -import { CoreSetup, CoreTheme } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { ExpressionRenderDefinition, IInterpreterRenderHandlers, @@ -34,7 +33,7 @@ const strings = { }; export const getShapeRenderer = - (theme$: Observable<CoreTheme>) => (): ExpressionRenderDefinition<ShapeRendererConfig> => ({ + (core: CoreStart) => (): ExpressionRenderDefinition<ShapeRendererConfig> => ({ name: 'shape', displayName: strings.getDisplayName(), help: strings.getHelpDescription(), @@ -52,7 +51,7 @@ export const getShapeRenderer = render( <KibanaErrorBoundaryProvider analytics={undefined}> <KibanaErrorBoundary> - <KibanaThemeProvider theme={{ theme$ }}> + <KibanaThemeProvider {...core}> <I18nProvider> <ShapeComponent onLoaded={handlers.done} {...config} parentNode={domNode} /> </I18nProvider> @@ -65,4 +64,4 @@ export const getShapeRenderer = }, }); -export const shapeRendererFactory = (core: CoreSetup) => getShapeRenderer(core.theme.theme$); +export const shapeRendererFactory = (core: CoreStart) => getShapeRenderer(core); diff --git a/src/plugins/expression_shape/public/plugin.ts b/src/plugins/expression_shape/public/plugin.ts index 0acb611d363d6..4d4ea8d9b35cb 100755 --- a/src/plugins/expression_shape/public/plugin.ts +++ b/src/plugins/expression_shape/public/plugin.ts @@ -27,10 +27,12 @@ export class ExpressionShapePlugin implements Plugin<ExpressionShapePluginSetup, ExpressionShapePluginStart, SetupDeps, StartDeps> { public setup(core: CoreSetup, { expressions }: SetupDeps): ExpressionShapePluginSetup { - expressions.registerFunction(shapeFunction); - expressions.registerFunction(progressFunction); - expressions.registerRenderer(shapeRendererFactory(core)); - expressions.registerRenderer(progressRendererFactory(core)); + core.getStartServices().then(([start]) => { + expressions.registerFunction(shapeFunction); + expressions.registerFunction(progressFunction); + expressions.registerRenderer(shapeRendererFactory(start)); + expressions.registerRenderer(progressRendererFactory(start)); + }); } public start(core: CoreStart): ExpressionShapePluginStart {} diff --git a/src/plugins/field_formats/common/constants/color_default.ts b/src/plugins/field_formats/common/constants/color_default.ts index 689791d3ae4c8..8133d4611d1f8 100644 --- a/src/plugins/field_formats/common/constants/color_default.ts +++ b/src/plugins/field_formats/common/constants/color_default.ts @@ -12,4 +12,5 @@ export const DEFAULT_CONVERTER_COLOR = { regex: '<insert regex>', text: '#000000', background: '#ffffff', + boolean: 'true', }; diff --git a/src/plugins/field_formats/common/converters/color.test.ts b/src/plugins/field_formats/common/converters/color.test.ts index 392e3d677e66a..bf1afb24fe18e 100644 --- a/src/plugins/field_formats/common/converters/color.test.ts +++ b/src/plugins/field_formats/common/converters/color.test.ts @@ -56,6 +56,29 @@ describe('Color Format', () => { }); }); + describe('field is a boolean', () => { + test('should add colors if the value is true or false', () => { + const colorer = new ColorFormat( + { + fieldType: 'boolean', + colors: [ + { + boolean: 'true', + text: 'blue', + background: 'yellow', + }, + ], + }, + jest.fn() + ); + + expect(colorer.convert(true, HTML_CONTEXT_TYPE)).toBe( + '<span style="color:blue;background-color:yellow">true</span>' + ); + expect(colorer.convert(false, HTML_CONTEXT_TYPE)).toBe('false'); + }); + }); + describe('field is a string', () => { test('should add colors if the regex matches', () => { const colorer = new ColorFormat( diff --git a/src/plugins/field_formats/common/converters/color.tsx b/src/plugins/field_formats/common/converters/color.tsx index c05003a01954d..e8a1d2b696644 100644 --- a/src/plugins/field_formats/common/converters/color.tsx +++ b/src/plugins/field_formats/common/converters/color.tsx @@ -23,7 +23,7 @@ export class ColorFormat extends FieldFormat { static title = i18n.translate('fieldFormats.color.title', { defaultMessage: 'Color', }); - static fieldType = [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.STRING]; + static fieldType = [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.STRING, KBN_FIELD_TYPES.BOOLEAN]; getParamDefaults() { return { @@ -32,7 +32,7 @@ export class ColorFormat extends FieldFormat { }; } - findColorRuleForVal(val: string | number) { + findColorRuleForVal(val: string | number | boolean) { switch (this.param('fieldType')) { case 'string': return findLast(this.param('colors'), (colorParam: typeof DEFAULT_CONVERTER_COLOR) => { @@ -50,6 +50,10 @@ export class ColorFormat extends FieldFormat { // @ts-expect-error upgrade typescript v5.1.6 return val >= Number(start) && val <= Number(end); }); + case 'boolean': + return findLast(this.param('colors'), ({ boolean }) => { + return boolean === val.toString(); + }); default: return null; diff --git a/src/plugins/field_formats/common/converters/url.test.ts b/src/plugins/field_formats/common/converters/url.test.ts index d1c89575b2d4d..9a1fcb7cbef6e 100644 --- a/src/plugins/field_formats/common/converters/url.test.ts +++ b/src/plugins/field_formats/common/converters/url.test.ts @@ -139,7 +139,7 @@ describe('UrlFormat', () => { expect(url.convert('url', TEXT_CONTEXT_TYPE)).toBe('external url'); }); - test('can use the raw value', () => { + test('can use the raw value with {{value}}', () => { const url = new UrlFormat({ labelTemplate: 'external {{value}}', }); @@ -147,6 +147,14 @@ describe('UrlFormat', () => { expect(url.convert('url?', TEXT_CONTEXT_TYPE)).toBe('external url?'); }); + test('can use the raw value with {{rawValue}}', () => { + const url = new UrlFormat({ + labelTemplate: 'external {{rawValue}}', + }); + + expect(url.convert('url?', TEXT_CONTEXT_TYPE)).toBe('external url?'); + }); + test('can use the url', () => { const url = new UrlFormat({ urlTemplate: 'http://google.com/{{value}}', diff --git a/src/plugins/field_formats/common/converters/url.ts b/src/plugins/field_formats/common/converters/url.ts index a0b423a737f08..ffa6973de27a4 100644 --- a/src/plugins/field_formats/common/converters/url.ts +++ b/src/plugins/field_formats/common/converters/url.ts @@ -86,6 +86,7 @@ export class UrlFormat extends FieldFormat { return this.compileTemplate(template)({ value, url, + rawValue: value, }); } diff --git a/src/plugins/guided_onboarding/README.md b/src/plugins/guided_onboarding/README.md index a7d1447d6da8b..8190ee82c2008 100755 --- a/src/plugins/guided_onboarding/README.md +++ b/src/plugins/guided_onboarding/README.md @@ -125,7 +125,7 @@ To use the API service, you need to know a guide ID (currently one of `appSearch The guided onboarding exposes a function `registerGuideConfig(guideId: GuideId, guideConfig: GuideConfig)` function in its setup contract. This function allows consumers to register a guide config for a specified guide ID. The function throws an error if a config already exists for the guide ID. See code examples in following plugins: - enterprise search: `x-pack/plugins/enterprise_search/server/plugin.ts` -- observability: `x-pack/plugins/observability_solution/observability/server/plugin.ts` +- observability: `x-pack/solutions/observability/plugins/observability/server/plugin.ts` - security solution: `x-pack/plugins/security_solution/server/plugin.ts` ## Adding a new guide diff --git a/src/plugins/guided_onboarding/public/components/guide_button.tsx b/src/plugins/guided_onboarding/public/components/guide_button.tsx index 7df5d03049f1f..32d78c1af545a 100644 --- a/src/plugins/guided_onboarding/public/components/guide_button.tsx +++ b/src/plugins/guided_onboarding/public/components/guide_button.tsx @@ -58,7 +58,7 @@ export const GuideButton = ({ <EuiButton isLoading={isLoading} onClick={toggleGuidePanel} - color="success" + color="accent" fill size="s" data-test-subj="guideButton" @@ -97,7 +97,7 @@ export const GuideButton = ({ return ( <EuiButton onClick={navigateToLandingPage} - color="success" + color="accent" fill size="s" data-test-subj="guideButtonRedirect" diff --git a/src/plugins/guided_onboarding/public/components/guide_panel_step.styles.ts b/src/plugins/guided_onboarding/public/components/guide_panel_step.styles.ts index 2fc0d8afb111b..f8ca12a9fd1f1 100644 --- a/src/plugins/guided_onboarding/public/components/guide_panel_step.styles.ts +++ b/src/plugins/guided_onboarding/public/components/guide_panel_step.styles.ts @@ -17,17 +17,21 @@ export const getGuidePanelStepStyles = (euiTheme: EuiThemeComputed, stepStatus: height: 24px; border-radius: 50%; border: 2px solid - ${stepStatus === 'inactive' ? euiTheme.colors.lightShade : euiTheme.colors.success}; + ${stepStatus === 'inactive' ? euiTheme.colors.borderBasePlain : euiTheme.colors.success}; font-weight: ${euiTheme.font.weight.medium}; text-align: center; line-height: 1.4; - color: ${stepStatus === 'inactive' ? euiTheme.colors.subduedText : euiTheme.colors.text}; + color: ${stepStatus === 'inactive' + ? euiTheme.colors.textSubdued + : euiTheme.colors.textParagraph}; `, stepTitle: css` font-weight: ${euiTheme.font.weight.semiBold}; - color: ${stepStatus === 'inactive' ? euiTheme.colors.subduedText : euiTheme.colors.text}; + color: ${stepStatus === 'inactive' + ? euiTheme.colors.textSubdued + : euiTheme.colors.textParagraph}; .euiAccordion-isOpen & { - color: ${euiTheme.colors.title}; + color: ${euiTheme.colors.textHeading}; } `, description: css` diff --git a/src/plugins/guided_onboarding/public/components/quit_guide_modal.tsx b/src/plugins/guided_onboarding/public/components/quit_guide_modal.tsx index bdaf8b710ac4d..f29beaad2acf8 100644 --- a/src/plugins/guided_onboarding/public/components/quit_guide_modal.tsx +++ b/src/plugins/guided_onboarding/public/components/quit_guide_modal.tsx @@ -94,7 +94,7 @@ export const QuitGuideModal = ({ onClick={deactivateGuide} isLoading={isLoading} fill - color="warning" + color="primary" > {i18n.translate('guidedOnboarding.quitGuideModal.quitButtonLabel', { defaultMessage: 'Quit guide', diff --git a/src/plugins/home/public/application/components/tutorial/instruction_set.js b/src/plugins/home/public/application/components/tutorial/instruction_set.js index a4c64894bea95..41104b6269895 100644 --- a/src/plugins/home/public/application/components/tutorial/instruction_set.js +++ b/src/plugins/home/public/application/components/tutorial/instruction_set.js @@ -28,7 +28,7 @@ import { import * as StatusCheckStates from './status_check_states'; import { injectI18n, FormattedMessage } from '@kbn/i18n-react'; -import { euiThemeVars } from '@kbn/ui-theme'; +import { euiThemeVars } from '@kbn/ui-theme'; // FIXME: remove this, and access style variables from EUI context class InstructionSetUi extends React.Component { constructor(props) { diff --git a/src/plugins/home/server/services/sample_data/data_sets/ecommerce/saved_objects.ts b/src/plugins/home/server/services/sample_data/data_sets/ecommerce/saved_objects.ts index 491664ef3fda7..6c53f7479789e 100644 --- a/src/plugins/home/server/services/sample_data/data_sets/ecommerce/saved_objects.ts +++ b/src/plugins/home/server/services/sample_data/data_sets/ecommerce/saved_objects.ts @@ -148,7 +148,7 @@ export const getSavedObjects = (): SavedObject[] => [ optionsJSON: '{"useMargins":true,"syncColors":false,"syncCursor":true,"syncTooltips":false,"hidePanelTitles":false}', panelsJSON: - '[{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":21,"w":24,"h":10,"i":"5"},"panelIndex":"5","embeddableConfig":{"attributes":{"title":"[eCommerce] Promotion Tracking (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-e3b3cb5c-e3b1-497f-a5d5-fddb0dabc94e"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-1d08a43c-8913-4692-a3e0-8d77902f6e46"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-9725cdbd-a9f3-479f-a349-0f11244e5239"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-2031d0f8-01fc-4009-b1ad-a7b7ca9266c0"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"xy-visualization-layer-192ad2e4-2bb7-44a9-b345-e96045fa6ccd"}],"state":{"visualization":{"legend":{"isVisible":true,"showSingleSeries":true,"position":"bottom","shouldTruncate":true,"maxLines":1},"valueLabels":"hide","fittingFunction":"None","fillOpacity":0,"yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":0},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"seriesType":"line","layerType":"data","layerId":"e3b3cb5c-e3b1-497f-a5d5-fddb0dabc94e","accessors":["a69956c9-43cd-4756-a3c0-e93cb1502a0b"],"yConfig":[{"forAccessor":"a69956c9-43cd-4756-a3c0-e93cb1502a0b","color":"rgba(211,96,134,1)","axisMode":"left"}],"xAccessor":"f3cc8168-6360-4727-a410-a57f5a325091","palette":{"name":"default","type":"palette"}},{"seriesType":"line","layerType":"data","layerId":"1d08a43c-8913-4692-a3e0-8d77902f6e46","accessors":["9a3d8abd-81a5-40ae-9616-020d5a5b2ee2"],"yConfig":[{"forAccessor":"9a3d8abd-81a5-40ae-9616-020d5a5b2ee2","color":"rgba(84,179,153,1)","axisMode":"left"}],"xAccessor":"644b06ea-73a3-47b1-9b40-3035844c4621","palette":{"name":"default","type":"palette"}},{"seriesType":"line","layerType":"data","layerId":"9725cdbd-a9f3-479f-a349-0f11244e5239","accessors":["b5588228-9c46-4a4b-92ee-d140c327bca0"],"yConfig":[{"forAccessor":"b5588228-9c46-4a4b-92ee-d140c327bca0","color":"rgba(96,146,192,1)","axisMode":"left"}],"xAccessor":"6749b404-4784-4fd6-8bf6-5712e84c7310","palette":{"name":"default","type":"palette"}},{"seriesType":"line","layerType":"data","layerId":"2031d0f8-01fc-4009-b1ad-a7b7ca9266c0","accessors":["985e05c0-3a0b-4e55-84bb-1f02128388a9"],"yConfig":[{"forAccessor":"985e05c0-3a0b-4e55-84bb-1f02128388a9","color":"rgba(202,142,174,1)","axisMode":"left"}],"xAccessor":"1b199cb1-b47f-48e6-b209-74eb81b303f5","palette":{"name":"default","type":"palette"}},{"layerId":"192ad2e4-2bb7-44a9-b345-e96045fa6ccd","layerType":"annotations","ignoreGlobalFilters":true,"annotations":[{"type":"query","id":"c8c30be0-b88f-11e8-a451-f37365e9f268","label":"Event","key":{"type":"point_in_time"},"color":"#194D33","timeField":"order_date","icon":"bell","filter":{"type":"kibana_query","query":"taxful_total_price:>250","language":"lucene"},"extraFields":["taxful_total_price"]}]}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"e3b3cb5c-e3b1-497f-a5d5-fddb0dabc94e":{"columns":{"f3cc8168-6360-4727-a410-a57f5a325091":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"a69956c9-43cd-4756-a3c0-e93cb1502a0b":{"label":"Revenue Trousers","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*trouser*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["f3cc8168-6360-4727-a410-a57f5a325091","a69956c9-43cd-4756-a3c0-e93cb1502a0b"],"incompleteColumns":{}},"1d08a43c-8913-4692-a3e0-8d77902f6e46":{"columns":{"644b06ea-73a3-47b1-9b40-3035844c4621":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"9a3d8abd-81a5-40ae-9616-020d5a5b2ee2":{"label":"Revenue Watches","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*watch*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["644b06ea-73a3-47b1-9b40-3035844c4621","9a3d8abd-81a5-40ae-9616-020d5a5b2ee2"],"incompleteColumns":{}},"9725cdbd-a9f3-479f-a349-0f11244e5239":{"columns":{"6749b404-4784-4fd6-8bf6-5712e84c7310":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"b5588228-9c46-4a4b-92ee-d140c327bca0":{"label":"Revenue Bags","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*bag*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["6749b404-4784-4fd6-8bf6-5712e84c7310","b5588228-9c46-4a4b-92ee-d140c327bca0"],"incompleteColumns":{}},"2031d0f8-01fc-4009-b1ad-a7b7ca9266c0":{"columns":{"1b199cb1-b47f-48e6-b209-74eb81b303f5":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"985e05c0-3a0b-4e55-84bb-1f02128388a9":{"label":"Revenue Cocktail Dresses","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*cocktail dress*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["1b199cb1-b47f-48e6-b209-74eb81b303f5","985e05c0-3a0b-4e55-84bb-1f02128388a9"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":false,"enhancements":{}},"title":"[eCommerce] Promotion Tracking"},{"version":"8.11.0","type":"lens","gridData":{"x":36,"y":7,"w":12,"h":7,"i":"7"},"panelIndex":"7","embeddableConfig":{"attributes":{"title":"Sold Products per Day","description":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-037375ae-9e23-4dd5-a4f0-5f117bb7dac1"}],"state":{"visualization":{"layerId":"037375ae-9e23-4dd5-a4f0-5f117bb7dac1","layerType":"data","metricAccessor":"c27bd77c-68e2-4d75-8fda-41c45d22f8d4","maxAccessor":"ce816876-e92d-4b1a-bbb0-ed7637fc0eea","showBar":true,"color":"#68BC00"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"037375ae-9e23-4dd5-a4f0-5f117bb7dac1":{"ignoreGlobalFilters":false,"columns":{"c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0":{"label":"Part of count() / (time_range() / 1000 / 60 / 60 / 24)","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":false},"customLabel":true},"c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1":{"label":"Part of count() / (time_range() / 1000 / 60 / 60 / 24)","dataType":"number","operationType":"time_range","isBucketed":false,"scale":"ratio","references":[],"customLabel":true},"c27bd77c-68e2-4d75-8fda-41c45d22f8d4X2":{"label":"Part of count() / (time_range() / 1000 / 60 / 60 / 24)","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0",{"type":"function","name":"divide","args":[{"type":"function","name":"divide","args":[{"type":"function","name":"divide","args":[{"type":"function","name":"divide","args":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1",1000]},60]},60]},24],"location":{"min":11,"max":45},"text":"time_range() / 1000 / 60 / 60 / 24"}],"location":{"min":0,"max":46},"text":"count() / (time_range() / 1000 / 60 / 60 / 24)"}},"references":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0","c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1"],"customLabel":true},"c27bd77c-68e2-4d75-8fda-41c45d22f8d4":{"label":"Trxns / day","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"format":{"id":"number"},"formula":"count() / (time_range() / 1000 / 60 / 60 / 24)","isFormulaBroken":false},"references":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X2"],"customLabel":true},"ce816876-e92d-4b1a-bbb0-ed7637fc0eea":{"label":"Static value: 300","dataType":"number","operationType":"static_value","isStaticValue":true,"isBucketed":false,"scale":"ratio","params":{"value":"300"},"references":[]}},"columnOrder":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0","c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1","c27bd77c-68e2-4d75-8fda-41c45d22f8d4X2","c27bd77c-68e2-4d75-8fda-41c45d22f8d4","ce816876-e92d-4b1a-bbb0-ed7637fc0eea"],"incompleteColumns":{}}}},"indexpattern":{"layers":{}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"timeRange":{"from":"now-7d","to":"now"},"enhancements":{}}},{"version":"8.11.0","type":"search","gridData":{"x":0,"y":54,"w":48,"h":18,"i":"10"},"panelIndex":"10","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_10"},{"version":"8.11.0","type":"map","gridData":{"x":0,"y":31,"w":24,"h":14,"i":"11"},"panelIndex":"11","embeddableConfig":{"isLayerTOCOpen":false,"hiddenLayers":[],"mapCenter":{"lat":45.88578,"lon":-15.07605,"zoom":2.11},"openTOCDetails":[],"enhancements":{}},"panelRefName":"panel_11"},{"version":"8.11.0","type":"visualization","gridData":{"x":0,"y":0,"w":24,"h":7,"i":"a71cf076-6895-491c-8878-63592e429ed5"},"panelIndex":"a71cf076-6895-491c-8878-63592e429ed5","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_a71cf076-6895-491c-8878-63592e429ed5"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":0,"w":12,"h":7,"i":"75283285-dffd-48a7-a0c2-2235184b5282"},"panelIndex":"75283285-dffd-48a7-a0c2-2235184b5282","embeddableConfig":{"enhancements":{},"attributes":{"visualizationType":"lnsMetric","state":{"visualization":{"layerId":"c7478794-6767-4286-9d65-1c0ecd909dd8","layerType":"data","metricAccessor":"041db33b-5c9c-47f3-a5d3-ef5e255d1663"},"query":{"language":"kuery","query":""},"filters":[],"datasourceStates":{"formBased":{"layers":{"c7478794-6767-4286-9d65-1c0ecd909dd8":{"columnOrder":["041db33b-5c9c-47f3-a5d3-ef5e255d1663"],"columns":{"041db33b-5c9c-47f3-a5d3-ef5e255d1663":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Sum of revenue","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price","params":{}}},"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}},"references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-c7478794-6767-4286-9d65-1c0ecd909dd8"}]},"hidePanelTitles":true},"title":"Sum of revenue"},{"version":"8.11.0","type":"lens","gridData":{"x":36,"y":0,"w":12,"h":7,"i":"58774330-b1b3-42dd-a04c-fbce9cc4d288"},"panelIndex":"58774330-b1b3-42dd-a04c-fbce9cc4d288","embeddableConfig":{"enhancements":{},"attributes":{"title":"Median spending","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-4fb42a8e-b133-43c8-805c-a38472053938"}],"state":{"visualization":{"layerId":"4fb42a8e-b133-43c8-805c-a38472053938","layerType":"data","metricAccessor":"020bbfdf-9ef8-4802-aa9e-342d2ea0bebf"},"query":{"language":"kuery","query":""},"filters":[],"datasourceStates":{"formBased":{"layers":{"4fb42a8e-b133-43c8-805c-a38472053938":{"columnOrder":["020bbfdf-9ef8-4802-aa9e-342d2ea0bebf"],"columns":{"020bbfdf-9ef8-4802-aa9e-342d2ea0bebf":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Median spending","operationType":"median","scale":"ratio","sourceField":"taxful_total_price","params":{}}},"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":true},"title":"Median spending"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":7,"w":12,"h":7,"i":"b63ec47d-aace-4980-b928-6be8adafa5a4"},"panelIndex":"b63ec47d-aace-4980-b928-6be8adafa5a4","embeddableConfig":{"enhancements":{},"attributes":{"visualizationType":"lnsMetric","state":{"visualization":{"layerId":"667067a2-7cdf-4f0e-a9fe-eb4f4f1f2f17","layerType":"data","metricAccessor":"c52c2003-ae58-4604-bae7-52ba0fb38a01"},"query":{"language":"kuery","query":""},"filters":[],"datasourceStates":{"formBased":{"layers":{"667067a2-7cdf-4f0e-a9fe-eb4f4f1f2f17":{"columnOrder":["c52c2003-ae58-4604-bae7-52ba0fb38a01"],"columns":{"c52c2003-ae58-4604-bae7-52ba0fb38a01":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Avg. items sold","operationType":"average","params":{"format":{"id":"number","params":{"decimals":1,"compact":true}}},"scale":"ratio","sourceField":"total_quantity"}},"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}},"references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-667067a2-7cdf-4f0e-a9fe-eb4f4f1f2f17"}]},"hidePanelTitles":true},"title":"Avg. items sold"},{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":14,"w":24,"h":7,"i":"d9495793-80ba-4a9a-b0e3-d1155ec99b09"},"panelIndex":"d9495793-80ba-4a9a-b0e3-d1155ec99b09","embeddableConfig":{"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"b6093a53-884f-42c2-9fcc-ba56cfb66c53":{"columnOrder":["15c45f89-a149-443a-a830-aa8c3a9317db","2b41b3d8-2f62-407a-a866-960f254c679d","eadae280-2da3-4d1d-a0e1-f9733f89c15b","ddc92e50-4d5c-413e-b91b-3e504889fa65","5e31e5d3-2aaa-4475-a130-3b69bf2f748a"],"columns":{"15c45f89-a149-443a-a830-aa8c3a9317db":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"},"2b41b3d8-2f62-407a-a866-960f254c679d":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Total items","operationType":"sum","scale":"ratio","sourceField":"products.quantity"},"5e31e5d3-2aaa-4475-a130-3b69bf2f748a":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Tx. last week","operationType":"count","scale":"ratio","sourceField":"___records___","timeShift":"1w"},"ddc92e50-4d5c-413e-b91b-3e504889fa65":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Transactions","operationType":"count","scale":"ratio","sourceField":"___records___"},"eadae280-2da3-4d1d-a0e1-f9733f89c15b":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Last week","operationType":"sum","scale":"ratio","sourceField":"products.quantity","timeShift":"1w"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"curveType":"LINEAR","fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["2b41b3d8-2f62-407a-a866-960f254c679d","eadae280-2da3-4d1d-a0e1-f9733f89c15b","5e31e5d3-2aaa-4475-a130-3b69bf2f748a","ddc92e50-4d5c-413e-b91b-3e504889fa65"],"layerId":"b6093a53-884f-42c2-9fcc-ba56cfb66c53","position":"top","seriesType":"line","showGridlines":false,"xAccessor":"15c45f89-a149-443a-a830-aa8c3a9317db","yConfig":[{"color":"#b6e0d5","forAccessor":"eadae280-2da3-4d1d-a0e1-f9733f89c15b"},{"color":"#edafc4","forAccessor":"5e31e5d3-2aaa-4475-a130-3b69bf2f748a"}],"layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"line","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-b6093a53-884f-42c2-9fcc-ba56cfb66c53","type":"index-pattern"}]}},"title":"Transactions per day"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":31,"w":24,"h":14,"i":"bda054f7-2d06-4936-b461-365d1be621fa"},"panelIndex":"bda054f7-2d06-4936-b461-365d1be621fa","embeddableConfig":{"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"0731ee8b-31c5-4be9-92d9-69ee760465d7":{"columnOrder":["7bf8f089-1542-40bd-b349-45fdfc309ac6","826b2f39-b616-40b2-a222-972fdc1d7596","cfd45c47-fc41-430c-9e7a-b71dc0c916b0","bf51c1af-443e-49f4-a21f-54c87bfc5677","bf51c1af-443e-49f4-a21f-54c87bfc5677X0","bf51c1af-443e-49f4-a21f-54c87bfc5677X1","bf51c1af-443e-49f4-a21f-54c87bfc5677X2"],"columns":{"7bf8f089-1542-40bd-b349-45fdfc309ac6":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"},"826b2f39-b616-40b2-a222-972fdc1d7596":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"This week","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price"},"bf51c1af-443e-49f4-a21f-54c87bfc5677":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Difference","operationType":"formula","params":{"format":{"id":"number","params":{"decimals":2}},"formula":"sum(taxful_total_price) - sum(taxful_total_price, shift=\'1w\')","isFormulaBroken":false},"references":["bf51c1af-443e-49f4-a21f-54c87bfc5677X2"],"scale":"ratio"},"bf51c1af-443e-49f4-a21f-54c87bfc5677X0":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Difference","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price"},"bf51c1af-443e-49f4-a21f-54c87bfc5677X1":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Difference","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price","timeShift":"1w"},"bf51c1af-443e-49f4-a21f-54c87bfc5677X2":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Difference","operationType":"math","params":{"tinymathAst":{"args":["bf51c1af-443e-49f4-a21f-54c87bfc5677X0","bf51c1af-443e-49f4-a21f-54c87bfc5677X1"],"location":{"max":61,"min":0},"name":"subtract","text":"sum(taxful_total_price) - sum(taxful_total_price, shift=\'1w\')","type":"function"}},"references":["bf51c1af-443e-49f4-a21f-54c87bfc5677X0","bf51c1af-443e-49f4-a21f-54c87bfc5677X1"],"scale":"ratio"},"cfd45c47-fc41-430c-9e7a-b71dc0c916b0":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"1 week ago","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price","timeShift":"1w"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"columns":[{"columnId":"7bf8f089-1542-40bd-b349-45fdfc309ac6"},{"alignment":"left","columnId":"826b2f39-b616-40b2-a222-972fdc1d7596"},{"columnId":"cfd45c47-fc41-430c-9e7a-b71dc0c916b0"},{"colorMode":"text","columnId":"bf51c1af-443e-49f4-a21f-54c87bfc5677","isTransposed":false,"palette":{"name":"custom","params":{"colorStops":[{"color":"#D36086","stop":-10000},{"color":"#209280","stop":0}],"continuity":"above","name":"custom","rangeMax":0,"rangeMin":-10000,"rangeType":"number","steps":5,"stops":[{"color":"#D36086","stop":0},{"color":"#209280","stop":2249.03125}]},"type":"palette"}}],"layerId":"0731ee8b-31c5-4be9-92d9-69ee760465d7","layerType":"data","rowHeight":"single","rowHeightLines":1}},"visualizationType":"lnsDatatable","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-0731ee8b-31c5-4be9-92d9-69ee760465d7","type":"index-pattern"}]}},"title":"Daily comparison"},{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":45,"w":24,"h":9,"i":"d68e91dd-1539-48b0-9279-b43bba2054fe"},"panelIndex":"d68e91dd-1539-48b0-9279-b43bba2054fe","embeddableConfig":{"hidePanelTitles":false,"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"5ed846c2-a70b-4d9c-a244-f254bef763b8":{"columnOrder":["d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","7ac31901-277a-46e2-8128-8d684b2c1127"],"columns":{"7ac31901-277a-46e2-8128-8d684b2c1127":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Items","operationType":"count","scale":"ratio","sourceField":"___records___"},"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46":{"customLabel":true,"dataType":"string","isBucketed":true,"label":"Product name","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"7ac31901-277a-46e2-8128-8d684b2c1127","type":"column"},"orderDirection":"desc","otherBucket":false,"size":5,"parentFormat":{"id":"terms"}},"scale":"ordinal","sourceField":"products.product_name.keyword"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["7ac31901-277a-46e2-8128-8d684b2c1127"],"layerId":"5ed846c2-a70b-4d9c-a244-f254bef763b8","position":"top","seriesType":"bar_horizontal","showGridlines":false,"xAccessor":"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_horizontal","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"show","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-5ed846c2-a70b-4d9c-a244-f254bef763b8","type":"index-pattern"}]}},"title":"Top products this week"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":45,"w":24,"h":9,"i":"39d96714-152f-414b-992c-ce2492fc69f3"},"panelIndex":"39d96714-152f-414b-992c-ce2492fc69f3","embeddableConfig":{"timeRange":{"from":"now-2w","to":"now-1w"},"hidePanelTitles":false,"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"5ed846c2-a70b-4d9c-a244-f254bef763b8":{"columnOrder":["d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","7ac31901-277a-46e2-8128-8d684b2c1127"],"columns":{"7ac31901-277a-46e2-8128-8d684b2c1127":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Items","operationType":"count","scale":"ratio","sourceField":"___records___"},"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46":{"customLabel":true,"dataType":"string","isBucketed":true,"label":"Product name","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"7ac31901-277a-46e2-8128-8d684b2c1127","type":"column"},"orderDirection":"desc","otherBucket":false,"size":5,"parentFormat":{"id":"terms"}},"scale":"ordinal","sourceField":"products.product_name.keyword"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["7ac31901-277a-46e2-8128-8d684b2c1127"],"layerId":"5ed846c2-a70b-4d9c-a244-f254bef763b8","position":"top","seriesType":"bar_horizontal","showGridlines":false,"xAccessor":"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_horizontal","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"show","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-5ed846c2-a70b-4d9c-a244-f254bef763b8","type":"index-pattern"}]}},"title":"Top products last week"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":14,"w":24,"h":17,"i":"cd47b7cb-0ac0-43e0-b8c6-53489648bdef"},"panelIndex":"cd47b7cb-0ac0-43e0-b8c6-53489648bdef","embeddableConfig":{"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"97c63ea6-9305-4755-97d1-0f26817c6f9a":{"columnOrder":["9f61a7df-198e-4754-b34c-81ed544136ba","ebcb19af-0900-4439-949f-d8cd9bccde19","5575214b-7f21-4b6c-8bc1-34433c6a0c58"],"columns":{"5575214b-7f21-4b6c-8bc1-34433c6a0c58":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"___records___"},"9f61a7df-198e-4754-b34c-81ed544136ba":{"dataType":"string","isBucketed":true,"label":"Top values of category.keyword","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"5575214b-7f21-4b6c-8bc1-34433c6a0c58","type":"column"},"orderDirection":"desc","otherBucket":true,"size":10,"parentFormat":{"id":"terms"}},"scale":"ordinal","sourceField":"category.keyword"},"ebcb19af-0900-4439-949f-d8cd9bccde19":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["5575214b-7f21-4b6c-8bc1-34433c6a0c58"],"layerId":"97c63ea6-9305-4755-97d1-0f26817c6f9a","position":"top","seriesType":"bar_percentage_stacked","showGridlines":false,"splitAccessor":"9f61a7df-198e-4754-b34c-81ed544136ba","xAccessor":"ebcb19af-0900-4439-949f-d8cd9bccde19","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_percentage_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"show","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-97c63ea6-9305-4755-97d1-0f26817c6f9a","type":"index-pattern"}]}},"title":"Breakdown by category"},{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":7,"w":24,"h":7,"i":"bdb525ab-270b-46f1-a847-dd29be19aadb"},"panelIndex":"bdb525ab-270b-46f1-a847-dd29be19aadb","embeddableConfig":{"enhancements":{},"hidePanelTitles":false,"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"c7478794-6767-4286-9d65-1c0ecd909dd8":{"columnOrder":["8289349e-6d1b-4abf-b164-0208183d2c34","041db33b-5c9c-47f3-a5d3-ef5e255d1663","041db33b-5c9c-47f3-a5d3-ef5e255d1663X0","041db33b-5c9c-47f3-a5d3-ef5e255d1663X1"],"columns":{"041db33b-5c9c-47f3-a5d3-ef5e255d1663":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"% of target ($10k)","operationType":"formula","params":{"format":{"id":"percent","params":{"decimals":0}},"formula":"sum(taxful_total_price) / 10000 - 1","isFormulaBroken":false},"references":["041db33b-5c9c-47f3-a5d3-ef5e255d1663X1"],"scale":"ratio"},"041db33b-5c9c-47f3-a5d3-ef5e255d1663X0":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Weekly revenue","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price"},"041db33b-5c9c-47f3-a5d3-ef5e255d1663X1":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Weekly revenue","operationType":"math","params":{"tinymathAst":{"args":[{"args":["041db33b-5c9c-47f3-a5d3-ef5e255d1663X0",10000],"location":{"max":32,"min":0},"name":"divide","text":"sum(taxful_total_price) / 10000 ","type":"function"},1],"location":{"max":35,"min":0},"name":"subtract","text":"sum(taxful_total_price) / 10000 - 1","type":"function"}},"references":["041db33b-5c9c-47f3-a5d3-ef5e255d1663X0"],"scale":"ratio"},"8289349e-6d1b-4abf-b164-0208183d2c34":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["041db33b-5c9c-47f3-a5d3-ef5e255d1663"],"layerId":"c7478794-6767-4286-9d65-1c0ecd909dd8","seriesType":"bar_stacked","xAccessor":"8289349e-6d1b-4abf-b164-0208183d2c34","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-c7478794-6767-4286-9d65-1c0ecd909dd8","type":"index-pattern"}]}},"title":"% of target revenue ($10k)"}]', + '[{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":21,"w":24,"h":10,"i":"5"},"panelIndex":"5","embeddableConfig":{"attributes":{"title":"[eCommerce] Promotion Tracking (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-e3b3cb5c-e3b1-497f-a5d5-fddb0dabc94e"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-1d08a43c-8913-4692-a3e0-8d77902f6e46"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-9725cdbd-a9f3-479f-a349-0f11244e5239"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-2031d0f8-01fc-4009-b1ad-a7b7ca9266c0"},{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"xy-visualization-layer-192ad2e4-2bb7-44a9-b345-e96045fa6ccd"}],"state":{"visualization":{"legend":{"isVisible":true,"showSingleSeries":true,"position":"bottom","shouldTruncate":true,"maxLines":1},"valueLabels":"hide","fittingFunction":"None","fillOpacity":0,"yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":0},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"seriesType":"line","layerType":"data","layerId":"e3b3cb5c-e3b1-497f-a5d5-fddb0dabc94e","accessors":["a69956c9-43cd-4756-a3c0-e93cb1502a0b"],"yConfig":[{"forAccessor":"a69956c9-43cd-4756-a3c0-e93cb1502a0b","axisMode":"left"}],"xAccessor":"f3cc8168-6360-4727-a410-a57f5a325091","palette":{"name":"default","type":"palette"}},{"seriesType":"line","layerType":"data","layerId":"1d08a43c-8913-4692-a3e0-8d77902f6e46","accessors":["9a3d8abd-81a5-40ae-9616-020d5a5b2ee2"],"yConfig":[{"forAccessor":"9a3d8abd-81a5-40ae-9616-020d5a5b2ee2","axisMode":"left"}],"xAccessor":"644b06ea-73a3-47b1-9b40-3035844c4621","palette":{"name":"default","type":"palette"}},{"seriesType":"line","layerType":"data","layerId":"9725cdbd-a9f3-479f-a349-0f11244e5239","accessors":["b5588228-9c46-4a4b-92ee-d140c327bca0"],"yConfig":[{"forAccessor":"b5588228-9c46-4a4b-92ee-d140c327bca0","axisMode":"left"}],"xAccessor":"6749b404-4784-4fd6-8bf6-5712e84c7310","palette":{"name":"default","type":"palette"}},{"seriesType":"line","layerType":"data","layerId":"2031d0f8-01fc-4009-b1ad-a7b7ca9266c0","accessors":["985e05c0-3a0b-4e55-84bb-1f02128388a9"],"yConfig":[{"forAccessor":"985e05c0-3a0b-4e55-84bb-1f02128388a9","axisMode":"left"}],"xAccessor":"1b199cb1-b47f-48e6-b209-74eb81b303f5","palette":{"name":"default","type":"palette"}},{"layerId":"192ad2e4-2bb7-44a9-b345-e96045fa6ccd","layerType":"annotations","ignoreGlobalFilters":true,"annotations":[{"type":"query","id":"c8c30be0-b88f-11e8-a451-f37365e9f268","label":"Event","key":{"type":"point_in_time"},"color":"#194D33","timeField":"order_date","icon":"bell","filter":{"type":"kibana_query","query":"taxful_total_price:>250","language":"lucene"},"extraFields":["taxful_total_price"]}]}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"e3b3cb5c-e3b1-497f-a5d5-fddb0dabc94e":{"columns":{"f3cc8168-6360-4727-a410-a57f5a325091":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"a69956c9-43cd-4756-a3c0-e93cb1502a0b":{"label":"Revenue Trousers","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*trouser*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["f3cc8168-6360-4727-a410-a57f5a325091","a69956c9-43cd-4756-a3c0-e93cb1502a0b"],"incompleteColumns":{}},"1d08a43c-8913-4692-a3e0-8d77902f6e46":{"columns":{"644b06ea-73a3-47b1-9b40-3035844c4621":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"9a3d8abd-81a5-40ae-9616-020d5a5b2ee2":{"label":"Revenue Watches","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*watch*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["644b06ea-73a3-47b1-9b40-3035844c4621","9a3d8abd-81a5-40ae-9616-020d5a5b2ee2"],"incompleteColumns":{}},"9725cdbd-a9f3-479f-a349-0f11244e5239":{"columns":{"6749b404-4784-4fd6-8bf6-5712e84c7310":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"b5588228-9c46-4a4b-92ee-d140c327bca0":{"label":"Revenue Bags","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*bag*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["6749b404-4784-4fd6-8bf6-5712e84c7310","b5588228-9c46-4a4b-92ee-d140c327bca0"],"incompleteColumns":{}},"2031d0f8-01fc-4009-b1ad-a7b7ca9266c0":{"columns":{"1b199cb1-b47f-48e6-b209-74eb81b303f5":{"label":"order_date","dataType":"date","operationType":"date_histogram","sourceField":"order_date","isBucketed":true,"scale":"interval","params":{"interval":"12h","includeEmptyRows":true,"dropPartials":false}},"985e05c0-3a0b-4e55-84bb-1f02128388a9":{"label":"Revenue Cocktail Dresses","dataType":"number","operationType":"sum","sourceField":"taxful_total_price","isBucketed":false,"scale":"ratio","filter":{"query":"products.product_name:*cocktail dress*","language":"lucene"},"params":{"format":{"id":"number"},"emptyAsNull":true},"customLabel":true}},"columnOrder":["1b199cb1-b47f-48e6-b209-74eb81b303f5","985e05c0-3a0b-4e55-84bb-1f02128388a9"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":false,"enhancements":{}},"title":"[eCommerce] Promotion Tracking"},{"version":"8.11.0","type":"lens","gridData":{"x":36,"y":7,"w":12,"h":7,"i":"7"},"panelIndex":"7","embeddableConfig":{"attributes":{"title":"Sold Products per Day","description":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-037375ae-9e23-4dd5-a4f0-5f117bb7dac1"}],"state":{"visualization":{"layerId":"037375ae-9e23-4dd5-a4f0-5f117bb7dac1","layerType":"data","metricAccessor":"c27bd77c-68e2-4d75-8fda-41c45d22f8d4","maxAccessor":"ce816876-e92d-4b1a-bbb0-ed7637fc0eea","showBar":true,"palette":{"type":"palette","name":"status","params":{"name":"status","reverse":true,"rangeType":"percent","rangeMin":0,"rangeMax":100,"progression":"fixed","stops":[{"color":"#23be8f","stop":33.33},{"color":"#fcd279","stop":66.66},{"color":"#f66d64","stop":100}],"steps":3,"colorStops":[],"continuity":"all","maxSteps":5}}},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"037375ae-9e23-4dd5-a4f0-5f117bb7dac1":{"ignoreGlobalFilters":false,"columns":{"c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0":{"label":"Part of count() / (time_range() / 1000 / 60 / 60 / 24)","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":false},"customLabel":true},"c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1":{"label":"Part of count() / (time_range() / 1000 / 60 / 60 / 24)","dataType":"number","operationType":"time_range","isBucketed":false,"scale":"ratio","references":[],"customLabel":true},"c27bd77c-68e2-4d75-8fda-41c45d22f8d4X2":{"label":"Part of count() / (time_range() / 1000 / 60 / 60 / 24)","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0",{"type":"function","name":"divide","args":[{"type":"function","name":"divide","args":[{"type":"function","name":"divide","args":[{"type":"function","name":"divide","args":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1",1000]},60]},60]},24],"location":{"min":11,"max":45},"text":"time_range() / 1000 / 60 / 60 / 24"}],"location":{"min":0,"max":46},"text":"count() / (time_range() / 1000 / 60 / 60 / 24)"}},"references":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0","c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1"],"customLabel":true},"c27bd77c-68e2-4d75-8fda-41c45d22f8d4":{"label":"Trxns / day","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"format":{"id":"number"},"formula":"count() / (time_range() / 1000 / 60 / 60 / 24)","isFormulaBroken":false},"references":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X2"],"customLabel":true},"ce816876-e92d-4b1a-bbb0-ed7637fc0eea":{"label":"Static value: 300","dataType":"number","operationType":"static_value","isStaticValue":true,"isBucketed":false,"scale":"ratio","params":{"value":"300"},"references":[]}},"columnOrder":["c27bd77c-68e2-4d75-8fda-41c45d22f8d4X0","c27bd77c-68e2-4d75-8fda-41c45d22f8d4X1","c27bd77c-68e2-4d75-8fda-41c45d22f8d4X2","c27bd77c-68e2-4d75-8fda-41c45d22f8d4","ce816876-e92d-4b1a-bbb0-ed7637fc0eea"],"incompleteColumns":{}}}},"indexpattern":{"layers":{}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"timeRange":{"from":"now-7d","to":"now"},"enhancements":{}}},{"version":"8.11.0","type":"search","gridData":{"x":0,"y":54,"w":48,"h":18,"i":"10"},"panelIndex":"10","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_10"},{"version":"8.11.0","type":"map","gridData":{"x":0,"y":31,"w":24,"h":14,"i":"11"},"panelIndex":"11","embeddableConfig":{"isLayerTOCOpen":false,"hiddenLayers":[],"mapCenter":{"lat":45.88578,"lon":-15.07605,"zoom":2.11},"openTOCDetails":[],"enhancements":{}},"panelRefName":"panel_11"},{"version":"8.11.0","type":"visualization","gridData":{"x":0,"y":0,"w":24,"h":7,"i":"a71cf076-6895-491c-8878-63592e429ed5"},"panelIndex":"a71cf076-6895-491c-8878-63592e429ed5","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_a71cf076-6895-491c-8878-63592e429ed5"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":0,"w":12,"h":7,"i":"75283285-dffd-48a7-a0c2-2235184b5282"},"panelIndex":"75283285-dffd-48a7-a0c2-2235184b5282","embeddableConfig":{"enhancements":{},"attributes":{"visualizationType":"lnsMetric","state":{"visualization":{"layerId":"c7478794-6767-4286-9d65-1c0ecd909dd8","layerType":"data","metricAccessor":"041db33b-5c9c-47f3-a5d3-ef5e255d1663"},"query":{"language":"kuery","query":""},"filters":[],"datasourceStates":{"formBased":{"layers":{"c7478794-6767-4286-9d65-1c0ecd909dd8":{"columnOrder":["041db33b-5c9c-47f3-a5d3-ef5e255d1663"],"columns":{"041db33b-5c9c-47f3-a5d3-ef5e255d1663":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Sum of revenue","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price","params":{}}},"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}},"references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-c7478794-6767-4286-9d65-1c0ecd909dd8"}]},"hidePanelTitles":true},"title":"Sum of revenue"},{"version":"8.11.0","type":"lens","gridData":{"x":36,"y":0,"w":12,"h":7,"i":"58774330-b1b3-42dd-a04c-fbce9cc4d288"},"panelIndex":"58774330-b1b3-42dd-a04c-fbce9cc4d288","embeddableConfig":{"enhancements":{},"attributes":{"title":"Median spending","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-4fb42a8e-b133-43c8-805c-a38472053938"}],"state":{"visualization":{"layerId":"4fb42a8e-b133-43c8-805c-a38472053938","layerType":"data","metricAccessor":"020bbfdf-9ef8-4802-aa9e-342d2ea0bebf"},"query":{"language":"kuery","query":""},"filters":[],"datasourceStates":{"formBased":{"layers":{"4fb42a8e-b133-43c8-805c-a38472053938":{"columnOrder":["020bbfdf-9ef8-4802-aa9e-342d2ea0bebf"],"columns":{"020bbfdf-9ef8-4802-aa9e-342d2ea0bebf":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Median spending","operationType":"median","scale":"ratio","sourceField":"taxful_total_price","params":{}}},"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":true},"title":"Median spending"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":7,"w":12,"h":7,"i":"b63ec47d-aace-4980-b928-6be8adafa5a4"},"panelIndex":"b63ec47d-aace-4980-b928-6be8adafa5a4","embeddableConfig":{"enhancements":{},"attributes":{"visualizationType":"lnsMetric","state":{"visualization":{"layerId":"667067a2-7cdf-4f0e-a9fe-eb4f4f1f2f17","layerType":"data","metricAccessor":"c52c2003-ae58-4604-bae7-52ba0fb38a01"},"query":{"language":"kuery","query":""},"filters":[],"datasourceStates":{"formBased":{"layers":{"667067a2-7cdf-4f0e-a9fe-eb4f4f1f2f17":{"columnOrder":["c52c2003-ae58-4604-bae7-52ba0fb38a01"],"columns":{"c52c2003-ae58-4604-bae7-52ba0fb38a01":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Avg. items sold","operationType":"average","params":{"format":{"id":"number","params":{"decimals":1,"compact":true}}},"scale":"ratio","sourceField":"total_quantity"}},"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}},"references":[{"type":"index-pattern","id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-667067a2-7cdf-4f0e-a9fe-eb4f4f1f2f17"}]},"hidePanelTitles":true},"title":"Avg. items sold"},{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":14,"w":24,"h":7,"i":"d9495793-80ba-4a9a-b0e3-d1155ec99b09"},"panelIndex":"d9495793-80ba-4a9a-b0e3-d1155ec99b09","embeddableConfig":{"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"b6093a53-884f-42c2-9fcc-ba56cfb66c53":{"columnOrder":["15c45f89-a149-443a-a830-aa8c3a9317db","2b41b3d8-2f62-407a-a866-960f254c679d","eadae280-2da3-4d1d-a0e1-f9733f89c15b","ddc92e50-4d5c-413e-b91b-3e504889fa65","5e31e5d3-2aaa-4475-a130-3b69bf2f748a"],"columns":{"15c45f89-a149-443a-a830-aa8c3a9317db":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"},"2b41b3d8-2f62-407a-a866-960f254c679d":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Total items","operationType":"sum","scale":"ratio","sourceField":"products.quantity"},"5e31e5d3-2aaa-4475-a130-3b69bf2f748a":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Tx. last week","operationType":"count","scale":"ratio","sourceField":"___records___","timeShift":"1w"},"ddc92e50-4d5c-413e-b91b-3e504889fa65":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Transactions","operationType":"count","scale":"ratio","sourceField":"___records___"},"eadae280-2da3-4d1d-a0e1-f9733f89c15b":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Last week","operationType":"sum","scale":"ratio","sourceField":"products.quantity","timeShift":"1w"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"curveType":"LINEAR","fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["2b41b3d8-2f62-407a-a866-960f254c679d","eadae280-2da3-4d1d-a0e1-f9733f89c15b","5e31e5d3-2aaa-4475-a130-3b69bf2f748a","ddc92e50-4d5c-413e-b91b-3e504889fa65"],"layerId":"b6093a53-884f-42c2-9fcc-ba56cfb66c53","position":"top","seriesType":"line","showGridlines":false,"xAccessor":"15c45f89-a149-443a-a830-aa8c3a9317db","yConfig":[],"layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"line","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-b6093a53-884f-42c2-9fcc-ba56cfb66c53","type":"index-pattern"}]}},"title":"Transactions per day"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":31,"w":24,"h":14,"i":"bda054f7-2d06-4936-b461-365d1be621fa"},"panelIndex":"bda054f7-2d06-4936-b461-365d1be621fa","embeddableConfig":{"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"0731ee8b-31c5-4be9-92d9-69ee760465d7":{"columnOrder":["7bf8f089-1542-40bd-b349-45fdfc309ac6","826b2f39-b616-40b2-a222-972fdc1d7596","cfd45c47-fc41-430c-9e7a-b71dc0c916b0","bf51c1af-443e-49f4-a21f-54c87bfc5677","bf51c1af-443e-49f4-a21f-54c87bfc5677X0","bf51c1af-443e-49f4-a21f-54c87bfc5677X1","bf51c1af-443e-49f4-a21f-54c87bfc5677X2"],"columns":{"7bf8f089-1542-40bd-b349-45fdfc309ac6":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"},"826b2f39-b616-40b2-a222-972fdc1d7596":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"This week","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price"},"bf51c1af-443e-49f4-a21f-54c87bfc5677":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Difference","operationType":"formula","params":{"format":{"id":"number","params":{"decimals":2}},"formula":"sum(taxful_total_price) - sum(taxful_total_price, shift=\'1w\')","isFormulaBroken":false},"references":["bf51c1af-443e-49f4-a21f-54c87bfc5677X2"],"scale":"ratio"},"bf51c1af-443e-49f4-a21f-54c87bfc5677X0":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Difference","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price"},"bf51c1af-443e-49f4-a21f-54c87bfc5677X1":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Difference","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price","timeShift":"1w"},"bf51c1af-443e-49f4-a21f-54c87bfc5677X2":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Difference","operationType":"math","params":{"tinymathAst":{"args":["bf51c1af-443e-49f4-a21f-54c87bfc5677X0","bf51c1af-443e-49f4-a21f-54c87bfc5677X1"],"location":{"max":61,"min":0},"name":"subtract","text":"sum(taxful_total_price) - sum(taxful_total_price, shift=\'1w\')","type":"function"}},"references":["bf51c1af-443e-49f4-a21f-54c87bfc5677X0","bf51c1af-443e-49f4-a21f-54c87bfc5677X1"],"scale":"ratio"},"cfd45c47-fc41-430c-9e7a-b71dc0c916b0":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"1 week ago","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price","timeShift":"1w"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"columns":[{"columnId":"7bf8f089-1542-40bd-b349-45fdfc309ac6"},{"alignment":"left","columnId":"826b2f39-b616-40b2-a222-972fdc1d7596"},{"columnId":"cfd45c47-fc41-430c-9e7a-b71dc0c916b0"},{"colorMode":"text","columnId":"bf51c1af-443e-49f4-a21f-54c87bfc5677","isTransposed":false,"palette":{"type":"palette","name":"status","params":{"continuity":"above","name":"status","rangeMax":null,"rangeMin":-2284.2265625,"rangeType":"percent","steps":5,"stops":[{"color":"#23be8f","stop":0},{"color":"#9dedce","stop":20},{"color":"#fcd279","stop":40},{"color":"#ffc0b8","stop":60},{"color":"#f66d64","stop":80}],"reverse":true}}}],"layerId":"0731ee8b-31c5-4be9-92d9-69ee760465d7","layerType":"data","rowHeight":"single","rowHeightLines":1}},"visualizationType":"lnsDatatable","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-0731ee8b-31c5-4be9-92d9-69ee760465d7","type":"index-pattern"}]}},"title":"Daily comparison"},{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":45,"w":24,"h":9,"i":"d68e91dd-1539-48b0-9279-b43bba2054fe"},"panelIndex":"d68e91dd-1539-48b0-9279-b43bba2054fe","embeddableConfig":{"hidePanelTitles":false,"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"5ed846c2-a70b-4d9c-a244-f254bef763b8":{"columnOrder":["d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","7ac31901-277a-46e2-8128-8d684b2c1127"],"columns":{"7ac31901-277a-46e2-8128-8d684b2c1127":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Items","operationType":"count","scale":"ratio","sourceField":"___records___"},"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46":{"customLabel":true,"dataType":"string","isBucketed":true,"label":"Product name","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"7ac31901-277a-46e2-8128-8d684b2c1127","type":"column"},"orderDirection":"desc","otherBucket":false,"size":5,"parentFormat":{"id":"terms"}},"scale":"ordinal","sourceField":"products.product_name.keyword"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["7ac31901-277a-46e2-8128-8d684b2c1127"],"layerId":"5ed846c2-a70b-4d9c-a244-f254bef763b8","position":"top","seriesType":"bar_horizontal","showGridlines":false,"xAccessor":"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_horizontal","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"show","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-5ed846c2-a70b-4d9c-a244-f254bef763b8","type":"index-pattern"}]}},"title":"Top products this week"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":45,"w":24,"h":9,"i":"39d96714-152f-414b-992c-ce2492fc69f3"},"panelIndex":"39d96714-152f-414b-992c-ce2492fc69f3","embeddableConfig":{"timeRange":{"from":"now-2w","to":"now-1w"},"hidePanelTitles":false,"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"5ed846c2-a70b-4d9c-a244-f254bef763b8":{"columnOrder":["d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","7ac31901-277a-46e2-8128-8d684b2c1127"],"columns":{"7ac31901-277a-46e2-8128-8d684b2c1127":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Items","operationType":"count","scale":"ratio","sourceField":"___records___"},"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46":{"customLabel":true,"dataType":"string","isBucketed":true,"label":"Product name","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"7ac31901-277a-46e2-8128-8d684b2c1127","type":"column"},"orderDirection":"desc","otherBucket":false,"size":5,"parentFormat":{"id":"terms"}},"scale":"ordinal","sourceField":"products.product_name.keyword"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":true,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["7ac31901-277a-46e2-8128-8d684b2c1127"],"layerId":"5ed846c2-a70b-4d9c-a244-f254bef763b8","position":"top","seriesType":"bar_horizontal","showGridlines":false,"xAccessor":"d77cdd24-dedc-48dd-9a4b-d34c6f1a6c46","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_horizontal","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"show","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-5ed846c2-a70b-4d9c-a244-f254bef763b8","type":"index-pattern"}]}},"title":"Top products last week"},{"version":"8.11.0","type":"lens","gridData":{"x":24,"y":14,"w":24,"h":17,"i":"cd47b7cb-0ac0-43e0-b8c6-53489648bdef"},"panelIndex":"cd47b7cb-0ac0-43e0-b8c6-53489648bdef","embeddableConfig":{"enhancements":{},"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"97c63ea6-9305-4755-97d1-0f26817c6f9a":{"columnOrder":["9f61a7df-198e-4754-b34c-81ed544136ba","ebcb19af-0900-4439-949f-d8cd9bccde19","5575214b-7f21-4b6c-8bc1-34433c6a0c58"],"columns":{"5575214b-7f21-4b6c-8bc1-34433c6a0c58":{"dataType":"number","isBucketed":false,"label":"Count of records","operationType":"count","scale":"ratio","sourceField":"___records___"},"9f61a7df-198e-4754-b34c-81ed544136ba":{"dataType":"string","isBucketed":true,"label":"Top values of category.keyword","operationType":"terms","params":{"missingBucket":false,"orderBy":{"columnId":"5575214b-7f21-4b6c-8bc1-34433c6a0c58","type":"column"},"orderDirection":"desc","otherBucket":true,"size":10,"parentFormat":{"id":"terms"}},"scale":"ordinal","sourceField":"category.keyword"},"ebcb19af-0900-4439-949f-d8cd9bccde19":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["5575214b-7f21-4b6c-8bc1-34433c6a0c58"],"layerId":"97c63ea6-9305-4755-97d1-0f26817c6f9a","position":"top","seriesType":"bar_percentage_stacked","showGridlines":false,"splitAccessor":"9f61a7df-198e-4754-b34c-81ed544136ba","xAccessor":"ebcb19af-0900-4439-949f-d8cd9bccde19","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_percentage_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"show","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-97c63ea6-9305-4755-97d1-0f26817c6f9a","type":"index-pattern"}]}},"title":"Breakdown by category"},{"version":"8.11.0","type":"lens","gridData":{"x":0,"y":7,"w":24,"h":7,"i":"bdb525ab-270b-46f1-a847-dd29be19aadb"},"panelIndex":"bdb525ab-270b-46f1-a847-dd29be19aadb","embeddableConfig":{"enhancements":{},"hidePanelTitles":false,"attributes":{"state":{"datasourceStates":{"formBased":{"layers":{"c7478794-6767-4286-9d65-1c0ecd909dd8":{"columnOrder":["8289349e-6d1b-4abf-b164-0208183d2c34","041db33b-5c9c-47f3-a5d3-ef5e255d1663","041db33b-5c9c-47f3-a5d3-ef5e255d1663X0","041db33b-5c9c-47f3-a5d3-ef5e255d1663X1"],"columns":{"041db33b-5c9c-47f3-a5d3-ef5e255d1663":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"% of target ($10k)","operationType":"formula","params":{"format":{"id":"percent","params":{"decimals":0}},"formula":"sum(taxful_total_price) / 10000 - 1","isFormulaBroken":false},"references":["041db33b-5c9c-47f3-a5d3-ef5e255d1663X1"],"scale":"ratio"},"041db33b-5c9c-47f3-a5d3-ef5e255d1663X0":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Weekly revenue","operationType":"sum","scale":"ratio","sourceField":"taxful_total_price"},"041db33b-5c9c-47f3-a5d3-ef5e255d1663X1":{"customLabel":true,"dataType":"number","isBucketed":false,"label":"Part of Weekly revenue","operationType":"math","params":{"tinymathAst":{"args":[{"args":["041db33b-5c9c-47f3-a5d3-ef5e255d1663X0",10000],"location":{"max":32,"min":0},"name":"divide","text":"sum(taxful_total_price) / 10000 ","type":"function"},1],"location":{"max":35,"min":0},"name":"subtract","text":"sum(taxful_total_price) / 10000 - 1","type":"function"}},"references":["041db33b-5c9c-47f3-a5d3-ef5e255d1663X0"],"scale":"ratio"},"8289349e-6d1b-4abf-b164-0208183d2c34":{"dataType":"date","isBucketed":true,"label":"order_date","operationType":"date_histogram","params":{"interval":"1d","includeEmptyRows":true},"scale":"interval","sourceField":"order_date"}},"incompleteColumns":{}}}}},"filters":[],"query":{"language":"kuery","query":""},"visualization":{"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"fittingFunction":"None","gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"layers":[{"accessors":["041db33b-5c9c-47f3-a5d3-ef5e255d1663"],"layerId":"c7478794-6767-4286-9d65-1c0ecd909dd8","seriesType":"bar_stacked","xAccessor":"8289349e-6d1b-4abf-b164-0208183d2c34","layerType":"data"}],"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"preferredSeriesType":"bar_stacked","tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"valueLabels":"hide","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"}}},"visualizationType":"lnsXY","references":[{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"ff959d40-b880-11e8-a6d9-e546fe2bba5f","name":"indexpattern-datasource-layer-c7478794-6767-4286-9d65-1c0ecd909dd8","type":"index-pattern"}]}},"title":"% of target revenue ($10k)"}]', timeFrom: 'now-7d', title: '[eCommerce] Revenue Dashboard', timeTo: 'now', diff --git a/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts b/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts index 0b072bd1a4389..3f4d7e2bc6ada 100644 --- a/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts +++ b/src/plugins/home/server/services/sample_data/data_sets/flights/saved_objects.ts @@ -148,7 +148,7 @@ export const getSavedObjects = (): SavedObject[] => [ optionsJSON: '{"useMargins":true,"syncColors":false,"syncCursor":true,"syncTooltips":false,"hidePanelTitles":false}', panelsJSON: - '[{"version":"8.8.0","type":"search","gridData":{"x":0,"y":69,"w":48,"h":15,"i":"4"},"panelIndex":"4","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_4"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":16,"w":24,"h":9,"i":"7"},"panelIndex":"7","embeddableConfig":{"attributes":{"title":"[Flights] Delays & Cancellations (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-dc8cf715-b56b-4dd7-a624-7c3ef9e2f2ce"},{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"xy-visualization-layer-10fed425-accd-411b-a773-ee825bc3945b"}],"state":{"visualization":{"legend":{"isVisible":false,"showSingleSeries":false,"position":"bottom","shouldTruncate":true,"maxLines":1},"valueLabels":"hide","fittingFunction":"None","fillOpacity":0.5,"yLeftExtent":{"upperBound":1,"mode":"custom"},"yRightExtent":{"mode":"full"},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":0},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"seriesType":"area","layerType":"data","layerId":"dc8cf715-b56b-4dd7-a624-7c3ef9e2f2ce","accessors":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4a"],"yConfig":[{"forAccessor":"b9d6187b-8a7e-4c49-bffd-7a60cc075a4a","color":"rgba(0,156,224,1)","axisMode":"left"}],"xAccessor":"6944431b-f90a-4dab-a282-0961cb97edd1","palette":{"name":"default","type":"palette"}},{"layerId":"10fed425-accd-411b-a773-ee825bc3945b","layerType":"annotations","ignoreGlobalFilters":true,"annotations":[{"type":"query","id":"53b7dff0-4c89-11e8-a66a-6989ad5a0a39","label":"Event","key":{"type":"point_in_time"},"timeField":"timestamp","color":"#0062B1","icon":"alert","filter":{"type":"kibana_query","query":"FlightDelay:true AND Cancelled:true","language":"lucene"},"extraFields":["FlightDelay","Cancelled","Carrier"]}]}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"dc8cf715-b56b-4dd7-a624-7c3ef9e2f2ce":{"columns":{"6944431b-f90a-4dab-a282-0961cb97edd1":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true,"dropPartials":false}},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0":{"label":"Part of count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"FlightDelay:true","language":"lucene"},"params":{"emptyAsNull":false},"customLabel":true},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1":{"label":"Part of count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"*","language":"kuery"},"params":{"emptyAsNull":false},"customLabel":true},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX2":{"label":"Part of count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1"],"location":{"min":0,"max":49},"text":"count(lucene=\'FlightDelay:true\') / count(kql=\'*\')"}},"references":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1"],"customLabel":true},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4a":{"label":"Percent Delays","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"format":{"id":"percent"},"formula":"count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","isFormulaBroken":false},"references":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX2"],"customLabel":true}},"columnOrder":["6944431b-f90a-4dab-a282-0961cb97edd1","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX2","b9d6187b-8a7e-4c49-bffd-7a60cc075a4a"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Delays & Cancellations"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":58,"w":24,"h":11,"i":"10"},"panelIndex":"10","embeddableConfig":{"attributes":{"title":"[Flights] Delay Buckets (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-247b176d-e81d-47dc-bbd1-4de85d098961"},{"type":"index-pattern","name":"c61f29fc-1ff3-4d46-a6c2-bde8a5b97f4a","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d"}],"state":{"visualization":{"legend":{"isVisible":false,"position":"right","legendSize":"auto","shouldTruncate":true,"maxLines":1,"showSingleSeries":true},"valueLabels":"hide","curveType":"LINEAR","yTitle":"Count","yLeftExtent":{"mode":"full","enforce":true},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":-90},"gridlinesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"layerId":"247b176d-e81d-47dc-bbd1-4de85d098961","accessors":["c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da"],"layerType":"data","seriesType":"bar_stacked","xAccessor":"c7936be7-e59b-424e-a912-69ba820d8e24","simpleView":false,"palette":{"type":"palette","name":"default"},"yConfig":[{"forAccessor":"c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da","axisMode":"left","color":"#1F78C1"}],"xScaleType":"linear","isHistogram":true}]},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"negate":true,"disabled":false,"alias":null,"type":"phrase","key":"FlightDelayMin","value":"0","params":{"query":0,"type":"phrase"},"index":"c61f29fc-1ff3-4d46-a6c2-bde8a5b97f4a"},"query":{"match":{"FlightDelayMin":{"query":0,"type":"phrase"}}},"$state":{"store":"appState"}}],"datasourceStates":{"formBased":{"layers":{"247b176d-e81d-47dc-bbd1-4de85d098961":{"columns":{"c7936be7-e59b-424e-a912-69ba820d8e24":{"label":"Flight Delay Minutes","dataType":"number","operationType":"range","sourceField":"FlightDelayMin","isBucketed":true,"scale":"interval","params":{"includeEmptyRows":false,"type":"histogram","ranges":[{"from":0,"to":1000,"label":""}],"maxBars":"auto"},"customLabel":true},"c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da":{"label":"Count","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":true},"customLabel":true}},"columnOrder":["c7936be7-e59b-424e-a912-69ba820d8e24","c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Delay Buckets"},{"version":"8.8.0","type":"map","gridData":{"x":0,"y":36,"w":24,"h":22,"i":"23"},"panelIndex":"23","embeddableConfig":{"isLayerTOCOpen":true,"hiddenLayers":[],"mapCenter":{"lat":48.72307,"lon":-115.18171,"zoom":4.28},"openTOCDetails":[],"enhancements":{}},"panelRefName":"panel_23"},{"version":"8.8.0","type":"visualization","gridData":{"x":24,"y":36,"w":24,"h":22,"i":"31"},"panelIndex":"31","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_31"},{"version":"8.8.0","type":"visualization","gridData":{"x":0,"y":0,"w":24,"h":8,"i":"6afc61f7-e2d5-45a3-9e7a-281160ad3eb9"},"panelIndex":"6afc61f7-e2d5-45a3-9e7a-281160ad3eb9","embeddableConfig":{"savedVis":{"title":"[Flights] Markdown Instructions","description":"","type":"markdown","params":{"fontSize":10,"openLinksInNewTab":true,"markdown":"## Sample Flight data\\nThis dashboard contains sample data for you to play with. You can view it, search it, and interact with the visualizations. For more information about Kibana, check our [docs](https://www.elastic.co/guide/en/kibana/current/index.html)."},"uiState":{},"data":{"aggs":[],"searchSource":{}}},"hidePanelTitles":true,"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":0,"w":8,"h":8,"i":"392b4936-f753-47bc-a98d-a4e41a0a4cd4"},"panelIndex":"392b4936-f753-47bc-a98d-a4e41a0a4cd4","embeddableConfig":{"enhancements":{},"attributes":{"title":"[Flights] Total Flights","description":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-8fa993db-c147-4954-adf7-4ff264d42576"}],"state":{"visualization":{"layerId":"8fa993db-c147-4954-adf7-4ff264d42576","layerType":"data","metricAccessor":"81124c45-6ab6-42f4-8859-495d55eb8065"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"8fa993db-c147-4954-adf7-4ff264d42576":{"columns":{"81124c45-6ab6-42f4-8859-495d55eb8065":{"label":"Total flights","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true}},"columnOrder":["81124c45-6ab6-42f4-8859-495d55eb8065"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":true}},{"version":"8.8.0","type":"lens","gridData":{"x":32,"y":0,"w":8,"h":4,"i":"9271deff-5a61-4665-83fc-f9fdc6bf0c0b"},"panelIndex":"9271deff-5a61-4665-83fc-f9fdc6bf0c0b","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"7e8fe9b1-f45c-4f3d-9561-30febcd357ec"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"7e8fe9b1-f45c-4f3d-9561-30febcd357ec":{"label":"Delayed","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'FlightDelay : true\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0":{"label":"Part of count(kql=\'FlightDelay : true\') / count()","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"FlightDelay : true","language":"kuery"},"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1":{"label":"Part of count(kql=\'FlightDelay : true\') / count()","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2":{"label":"Part of count(kql=\'FlightDelay : true\') / count()","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"location":{"min":0,"max":41},"text":"count(kql=\'FlightDelay : true\') / count()"}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"customLabel":true}},"columnOrder":["7e8fe9b1-f45c-4f3d-9561-30febcd357ec","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":40,"y":0,"w":8,"h":4,"i":"aa591c29-1a31-4ee1-a71d-b829c06fd162"},"panelIndex":"aa591c29-1a31-4ee1-a71d-b829c06fd162","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"},{"type":"index-pattern","name":"c804c161-375f-4d52-a1cc-2e98b966957d","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"c7851241-5526-499a-960b-357af8c2ce5b"},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"alias":null,"negate":false,"disabled":false,"type":"phrase","key":"FlightDelay","params":{"query":true},"index":"c804c161-375f-4d52-a1cc-2e98b966957d"},"query":{"match_phrase":{"FlightDelay":true}},"$state":{"store":"appState"}}],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"c7851241-5526-499a-960b-357af8c2ce5b":{"label":"Delayed vs 1 week earlier","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count() / count(shift=\'1w\') - 1","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX2"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX2":{"label":"Part of Delayed","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"subtract","args":[{"type":"function","name":"divide","args":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"location":{"min":0,"max":28},"text":"count() / count(shift=\'1w\') "},1],"location":{"min":0,"max":31},"text":"count() / count(shift=\'1w\') - 1"}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX0":{"label":"Part of Delayed","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX1":{"label":"Part of Delayed","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","timeShift":"1w","customLabel":true}},"columnOrder":["c7851241-5526-499a-960b-357af8c2ce5b","c7851241-5526-499a-960b-357af8c2ce5bX2","c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":32,"y":4,"w":8,"h":4,"i":"b766e3b8-4544-46ed-99e6-9ecc4847e2a2"},"panelIndex":"b766e3b8-4544-46ed-99e6-9ecc4847e2a2","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"7e8fe9b1-f45c-4f3d-9561-30febcd357ec"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"7e8fe9b1-f45c-4f3d-9561-30febcd357ec":{"label":"Cancelled","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'Cancelled : true\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0":{"label":"Part of Cancelled","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"Cancelled : true","language":"kuery"},"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1":{"label":"Part of Cancelled","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2":{"label":"Part of Cancelled","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"location":{"min":0,"max":39},"text":"count(kql=\'Cancelled : true\') / count()"}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"customLabel":true}},"columnOrder":["7e8fe9b1-f45c-4f3d-9561-30febcd357ec","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":40,"y":4,"w":8,"h":4,"i":"2e33ade5-96e5-40b4-b460-493e5d4fa834"},"panelIndex":"2e33ade5-96e5-40b4-b460-493e5d4fa834","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"},{"type":"index-pattern","name":"14cea722-a629-4c69-a06d-94a4a4c9a718","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"c7851241-5526-499a-960b-357af8c2ce5b"},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"alias":null,"negate":false,"disabled":false,"type":"phrase","key":"Cancelled","params":{"query":true},"index":"14cea722-a629-4c69-a06d-94a4a4c9a718"},"query":{"match_phrase":{"Cancelled":true}},"$state":{"store":"appState"}}],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"c7851241-5526-499a-960b-357af8c2ce5b":{"label":"Cancelled vs 1 week earlier","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count() / count(shift=\'1w\') - 1","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX2"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX2":{"label":"Part of Delayed vs 1 week earlier","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"subtract","args":[{"type":"function","name":"divide","args":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"location":{"min":0,"max":28},"text":"count() / count(shift=\'1w\') "},1],"location":{"min":0,"max":31},"text":"count() / count(shift=\'1w\') - 1"}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX0":{"label":"Part of Delayed vs 1 week earlier","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX1":{"label":"Part of Delayed vs 1 week earlier","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","timeShift":"1w","customLabel":true}},"columnOrder":["c7851241-5526-499a-960b-357af8c2ce5b","c7851241-5526-499a-960b-357af8c2ce5bX2","c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":8,"w":24,"h":8,"i":"086ac2e9-dd16-4b45-92b8-1e43ff7e3f65"},"panelIndex":"086ac2e9-dd16-4b45-92b8-1e43ff7e3f65","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsXY","state":{"datasourceStates":{"formBased":{"layers":{"03c34665-471c-49c7-acf1-5a11f517421c":{"columns":{"a5b94e30-4e77-4b0a-9187-1d8b13de1456":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true}},"3e267327-7317-4310-aee3-320e0f7c1e70":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___"}},"columnOrder":["a5b94e30-4e77-4b0a-9187-1d8b13de1456","3e267327-7317-4310-aee3-320e0f7c1e70"],"incompleteColumns":{}}}}},"visualization":{"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"valueLabels":"hide","fittingFunction":"None","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"custom","lowerBound":0,"upperBound":1},"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"layerId":"03c34665-471c-49c7-acf1-5a11f517421c","accessors":["3e267327-7317-4310-aee3-320e0f7c1e70"],"position":"top","seriesType":"bar_stacked","showGridlines":false,"xAccessor":"a5b94e30-4e77-4b0a-9187-1d8b13de1456","layerType":"data"}]},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-03c34665-471c-49c7-acf1-5a11f517421c","type":"index-pattern"}]},"hidePanelTitles":false,"enhancements":{}},"title":"[Flights] Flight count"},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":8,"w":24,"h":28,"i":"fb86b32f-fb7a-45cf-9511-f366fef51bbd"},"panelIndex":"fb86b32f-fb7a-45cf-9511-f366fef51bbd","embeddableConfig":{"attributes":{"title":"Cities by delay, cancellation","type":"lens","visualizationType":"lnsDatatable","state":{"datasourceStates":{"formBased":{"layers":{"f26e8f7a-4118-4227-bea0-5c02d8b270f7":{"columns":{"3dd24cb4-45ef-4dd8-b22a-d7b802cb6da0":{"label":"Top values of OriginCityName","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"OriginCityName","isBucketed":true,"params":{"size":1000,"orderBy":{"type":"alphabetical","fallback":true},"orderDirection":"asc","otherBucket":true,"missingBucket":false}},"52f6f2e9-6242-4c44-be63-b799150e7e60X0":{"label":"Part of Delay %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"FlightDelay : true ","language":"kuery"},"customLabel":true},"52f6f2e9-6242-4c44-be63-b799150e7e60X1":{"label":"Part of Delay %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"52f6f2e9-6242-4c44-be63-b799150e7e60X2":{"label":"Part of Delay %","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["52f6f2e9-6242-4c44-be63-b799150e7e60X0","52f6f2e9-6242-4c44-be63-b799150e7e60X1"],"location":{"min":0,"max":42},"text":"count(kql=\'FlightDelay : true \') / count()"}},"references":["52f6f2e9-6242-4c44-be63-b799150e7e60X0","52f6f2e9-6242-4c44-be63-b799150e7e60X1"],"customLabel":true},"52f6f2e9-6242-4c44-be63-b799150e7e60":{"label":"Delay %","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'FlightDelay : true \') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":0}}},"references":["52f6f2e9-6242-4c44-be63-b799150e7e60X2"],"customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0":{"label":"Part of Cancel %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"Cancelled: true","language":"kuery"},"customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1":{"label":"Part of Cancel %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X2":{"label":"Part of Cancel %","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1"],"location":{"min":0,"max":38},"text":"count(kql=\'Cancelled: true\') / count()"}},"references":["7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1"],"customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6":{"label":"Cancel %","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'Cancelled: true\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":0}}},"references":["7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X2"],"customLabel":true}},"columnOrder":["3dd24cb4-45ef-4dd8-b22a-d7b802cb6da0","52f6f2e9-6242-4c44-be63-b799150e7e60","52f6f2e9-6242-4c44-be63-b799150e7e60X0","52f6f2e9-6242-4c44-be63-b799150e7e60X1","52f6f2e9-6242-4c44-be63-b799150e7e60X2","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X2","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6"],"incompleteColumns":{}}}}},"visualization":{"columns":[{"isTransposed":false,"columnId":"3dd24cb4-45ef-4dd8-b22a-d7b802cb6da0","width":262.75},{"columnId":"52f6f2e9-6242-4c44-be63-b799150e7e60","isTransposed":false,"width":302.5,"colorMode":"cell","palette":{"name":"custom","type":"palette","params":{"steps":5,"stops":[{"color":"#f7e0b8","stop":0.6},{"color":"#e7664c","stop":1}],"name":"custom","colorStops":[{"color":"#f7e0b8","stop":0.2},{"color":"#e7664c","stop":0.6}],"rangeType":"number","rangeMin":0.2,"rangeMax":0.6}},"alignment":"center"},{"columnId":"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6","isTransposed":false,"alignment":"center","colorMode":"cell","palette":{"name":"custom","type":"palette","params":{"steps":5,"stops":[{"color":"#f7e0b8","stop":0.6},{"color":"#e7664c","stop":0.6666666666666666}],"rangeType":"number","name":"custom","colorStops":[{"color":"#f7e0b8","stop":0.2},{"color":"#e7664c","stop":0.6}],"rangeMin":0.2,"rangeMax":0.6}}}],"layerId":"f26e8f7a-4118-4227-bea0-5c02d8b270f7","sorting":{"columnId":"52f6f2e9-6242-4c44-be63-b799150e7e60","direction":"desc"},"layerType":"data","rowHeight":"single","rowHeightLines":1},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-f26e8f7a-4118-4227-bea0-5c02d8b270f7","type":"index-pattern"}]},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Most delayed cities"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":25,"w":24,"h":11,"i":"0cc42484-16f7-42ec-b38c-9bf8be69cde7"},"panelIndex":"0cc42484-16f7-42ec-b38c-9bf8be69cde7","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsXY","state":{"datasourceStates":{"formBased":{"layers":{"e80cc05e-c52a-4e5f-ac71-4b37274867f5":{"columns":{"caf7421e-93a3-439e-ab0a-fbdead93c21c":{"label":"Top values of FlightDelayType","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"FlightDelayType","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"0233d302-ec81-4fbe-96cb-7fac84cf035c"},"orderDirection":"desc","otherBucket":true,"missingBucket":false}},"13ec79e3-9d73-4536-9056-3d92802bb30a":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true}},"0233d302-ec81-4fbe-96cb-7fac84cf035c":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___"}},"columnOrder":["caf7421e-93a3-439e-ab0a-fbdead93c21c","13ec79e3-9d73-4536-9056-3d92802bb30a","0233d302-ec81-4fbe-96cb-7fac84cf035c"],"incompleteColumns":{}}}}},"visualization":{"legend":{"isVisible":true,"position":"bottom","legendSize":"auto"},"valueLabels":"hide","fittingFunction":"None","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"},"axisTitlesVisibilitySettings":{"x":true,"yLeft":false,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_percentage_stacked","layers":[{"layerId":"e80cc05e-c52a-4e5f-ac71-4b37274867f5","accessors":["0233d302-ec81-4fbe-96cb-7fac84cf035c"],"position":"top","seriesType":"bar_percentage_stacked","showGridlines":false,"palette":{"type":"palette","name":"cool"},"xAccessor":"13ec79e3-9d73-4536-9056-3d92802bb30a","splitAccessor":"caf7421e-93a3-439e-ab0a-fbdead93c21c","layerType":"data"}]},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-e80cc05e-c52a-4e5f-ac71-4b37274867f5","type":"index-pattern"}]},"hidePanelTitles":false,"enhancements":{}},"title":"[Flights] Delay Type"},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":58,"w":12,"h":11,"i":"5d53db36-2d5a-4adc-af7b-cec4c1a294e0"},"panelIndex":"5d53db36-2d5a-4adc-af7b-cec4c1a294e0","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsPie","state":{"datasourceStates":{"formBased":{"layers":{"0c8e136b-a822-4fb3-836d-e06cbea4eea4":{"columns":{"d1cee8bf-34cf-4141-99d7-ff043ee77b56":{"label":"Top values of FlightDelayType","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"FlightDelayType","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"aa152ace-ee2d-447b-b86d-459bef4d7880"},"orderDirection":"desc","otherBucket":true,"missingBucket":false}},"aa152ace-ee2d-447b-b86d-459bef4d7880":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___"}},"columnOrder":["d1cee8bf-34cf-4141-99d7-ff043ee77b56","aa152ace-ee2d-447b-b86d-459bef4d7880"],"incompleteColumns":{}}}}},"visualization":{"shape":"pie","palette":{"type":"palette","name":"cool"},"layers":[{"layerId":"0c8e136b-a822-4fb3-836d-e06cbea4eea4","numberDisplay":"percent","categoryDisplay":"default","legendDisplay":"default","nestedLegend":false,"layerType":"data","legendSize":"auto","primaryGroups":["d1cee8bf-34cf-4141-99d7-ff043ee77b56"],"metrics":["aa152ace-ee2d-447b-b86d-459bef4d7880"]}]},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"type":"phrase","key":"FlightDelayType","params":{"query":"No Delay"},"disabled":false,"negate":true,"alias":null,"index":"filter-index-pattern-0"},"query":{"match_phrase":{"FlightDelayType":"No Delay"}},"$state":{"store":"appState"}}]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-0c8e136b-a822-4fb3-836d-e06cbea4eea4","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"filter-index-pattern-0","type":"index-pattern"}]},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Delay Type"},{"version":"8.8.0","type":"lens","gridData":{"x":36,"y":58,"w":12,"h":11,"i":"ecd89a7c-9124-4472-bdc6-9bdbd70d45d5"},"panelIndex":"ecd89a7c-9124-4472-bdc6-9bdbd70d45d5","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-dffd86e7-01a9-4990-b974-3706608b5532"}],"state":{"visualization":{"title":"Empty XY chart","legend":{"isVisible":true,"position":"right"},"valueLabels":"hide","preferredSeriesType":"bar_horizontal","layers":[{"layerId":"dffd86e7-01a9-4990-b974-3706608b5532","accessors":["9d212159-afac-41f5-9303-5fb62ff04ba3"],"position":"top","seriesType":"bar_horizontal","showGridlines":false,"layerType":"data","splitAccessor":"d99ad4d7-26ff-4d65-a8ce-34656fdafa0a","palette":{"type":"palette","name":"temperature"}}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"dffd86e7-01a9-4990-b974-3706608b5532":{"columns":{"9d212159-afac-41f5-9303-5fb62ff04ba3":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":true}},"d99ad4d7-26ff-4d65-a8ce-34656fdafa0a":{"label":"Top 10 values of DestWeather","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"DestWeather","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"9d212159-afac-41f5-9303-5fb62ff04ba3"},"orderDirection":"desc","otherBucket":true,"missingBucket":false,"parentFormat":{"id":"terms"},"include":[],"exclude":[],"includeIsRegex":false,"excludeIsRegex":false}}},"columnOrder":["d99ad4d7-26ff-4d65-a8ce-34656fdafa0a","9d212159-afac-41f5-9303-5fb62ff04ba3"],"sampling":1,"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}}]', + '[{"version":"8.8.0","type":"search","gridData":{"x":0,"y":69,"w":48,"h":15,"i":"4"},"panelIndex":"4","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_4"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":16,"w":24,"h":9,"i":"7"},"panelIndex":"7","embeddableConfig":{"attributes":{"title":"[Flights] Delays & Cancellations (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-dc8cf715-b56b-4dd7-a624-7c3ef9e2f2ce"},{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"xy-visualization-layer-10fed425-accd-411b-a773-ee825bc3945b"}],"state":{"visualization":{"legend":{"isVisible":false,"showSingleSeries":false,"position":"bottom","shouldTruncate":true,"maxLines":1},"valueLabels":"hide","fittingFunction":"None","fillOpacity":0.5,"yLeftExtent":{"upperBound":1,"mode":"custom"},"yRightExtent":{"mode":"full"},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":0},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"seriesType":"area","layerType":"data","layerId":"dc8cf715-b56b-4dd7-a624-7c3ef9e2f2ce","accessors":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4a"],"yConfig":[{"forAccessor":"b9d6187b-8a7e-4c49-bffd-7a60cc075a4a","axisMode":"left"}],"xAccessor":"6944431b-f90a-4dab-a282-0961cb97edd1","palette":{"name":"default","type":"palette"}},{"layerId":"10fed425-accd-411b-a773-ee825bc3945b","layerType":"annotations","ignoreGlobalFilters":true,"annotations":[{"type":"query","id":"53b7dff0-4c89-11e8-a66a-6989ad5a0a39","label":"Event","key":{"type":"point_in_time"},"timeField":"timestamp","color":"#0062B1","icon":"alert","filter":{"type":"kibana_query","query":"FlightDelay:true AND Cancelled:true","language":"lucene"},"extraFields":["FlightDelay","Cancelled","Carrier"]}]}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"dc8cf715-b56b-4dd7-a624-7c3ef9e2f2ce":{"columns":{"6944431b-f90a-4dab-a282-0961cb97edd1":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true,"dropPartials":false}},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0":{"label":"Part of count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"FlightDelay:true","language":"lucene"},"params":{"emptyAsNull":false},"customLabel":true},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1":{"label":"Part of count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"*","language":"kuery"},"params":{"emptyAsNull":false},"customLabel":true},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX2":{"label":"Part of count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1"],"location":{"min":0,"max":49},"text":"count(lucene=\'FlightDelay:true\') / count(kql=\'*\')"}},"references":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1"],"customLabel":true},"b9d6187b-8a7e-4c49-bffd-7a60cc075a4a":{"label":"Percent Delays","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"format":{"id":"percent"},"formula":"count(lucene=\'FlightDelay:true\') / count(kql=\'*\')","isFormulaBroken":false},"references":["b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX2"],"customLabel":true}},"columnOrder":["6944431b-f90a-4dab-a282-0961cb97edd1","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX0","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX1","b9d6187b-8a7e-4c49-bffd-7a60cc075a4aX2","b9d6187b-8a7e-4c49-bffd-7a60cc075a4a"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Delays & Cancellations"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":58,"w":24,"h":11,"i":"10"},"panelIndex":"10","embeddableConfig":{"attributes":{"title":"[Flights] Delay Buckets (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-247b176d-e81d-47dc-bbd1-4de85d098961"},{"type":"index-pattern","name":"c61f29fc-1ff3-4d46-a6c2-bde8a5b97f4a","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d"}],"state":{"visualization":{"legend":{"isVisible":false,"position":"right","legendSize":"auto","shouldTruncate":true,"maxLines":1,"showSingleSeries":true},"valueLabels":"hide","curveType":"LINEAR","yTitle":"Count","yLeftExtent":{"mode":"full","enforce":true},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":-90},"gridlinesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"layerId":"247b176d-e81d-47dc-bbd1-4de85d098961","accessors":["c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da"],"layerType":"data","seriesType":"bar_stacked","xAccessor":"c7936be7-e59b-424e-a912-69ba820d8e24","simpleView":false,"palette":{"type":"palette","name":"default"},"yConfig":[{"forAccessor":"c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da","axisMode":"left","color":"#1F78C1"}],"xScaleType":"linear","isHistogram":true}]},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"negate":true,"disabled":false,"alias":null,"type":"phrase","key":"FlightDelayMin","value":"0","params":{"query":0,"type":"phrase"},"index":"c61f29fc-1ff3-4d46-a6c2-bde8a5b97f4a"},"query":{"match":{"FlightDelayMin":{"query":0,"type":"phrase"}}},"$state":{"store":"appState"}}],"datasourceStates":{"formBased":{"layers":{"247b176d-e81d-47dc-bbd1-4de85d098961":{"columns":{"c7936be7-e59b-424e-a912-69ba820d8e24":{"label":"Flight Delay Minutes","dataType":"number","operationType":"range","sourceField":"FlightDelayMin","isBucketed":true,"scale":"interval","params":{"includeEmptyRows":false,"type":"histogram","ranges":[{"from":0,"to":1000,"label":""}],"maxBars":"auto"},"customLabel":true},"c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da":{"label":"Count","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":true},"customLabel":true}},"columnOrder":["c7936be7-e59b-424e-a912-69ba820d8e24","c84f9fa9-e2a1-4845-8fcf-f5a34f5f92da"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Delay Buckets"},{"version":"8.8.0","type":"map","gridData":{"x":0,"y":36,"w":24,"h":22,"i":"23"},"panelIndex":"23","embeddableConfig":{"isLayerTOCOpen":true,"hiddenLayers":[],"mapCenter":{"lat":48.72307,"lon":-115.18171,"zoom":4.28},"openTOCDetails":[],"enhancements":{}},"panelRefName":"panel_23"},{"version":"8.8.0","type":"visualization","gridData":{"x":24,"y":36,"w":24,"h":22,"i":"31"},"panelIndex":"31","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_31"},{"version":"8.8.0","type":"visualization","gridData":{"x":0,"y":0,"w":24,"h":8,"i":"6afc61f7-e2d5-45a3-9e7a-281160ad3eb9"},"panelIndex":"6afc61f7-e2d5-45a3-9e7a-281160ad3eb9","embeddableConfig":{"savedVis":{"title":"[Flights] Markdown Instructions","description":"","type":"markdown","params":{"fontSize":10,"openLinksInNewTab":true,"markdown":"## Sample Flight data\\nThis dashboard contains sample data for you to play with. You can view it, search it, and interact with the visualizations. For more information about Kibana, check our [docs](https://www.elastic.co/guide/en/kibana/current/index.html)."},"uiState":{},"data":{"aggs":[],"searchSource":{}}},"hidePanelTitles":true,"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":0,"w":8,"h":8,"i":"392b4936-f753-47bc-a98d-a4e41a0a4cd4"},"panelIndex":"392b4936-f753-47bc-a98d-a4e41a0a4cd4","embeddableConfig":{"enhancements":{},"attributes":{"title":"[Flights] Total Flights","description":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-8fa993db-c147-4954-adf7-4ff264d42576"}],"state":{"visualization":{"layerId":"8fa993db-c147-4954-adf7-4ff264d42576","layerType":"data","metricAccessor":"81124c45-6ab6-42f4-8859-495d55eb8065"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"8fa993db-c147-4954-adf7-4ff264d42576":{"columns":{"81124c45-6ab6-42f4-8859-495d55eb8065":{"label":"Total flights","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true}},"columnOrder":["81124c45-6ab6-42f4-8859-495d55eb8065"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":true}},{"version":"8.8.0","type":"lens","gridData":{"x":32,"y":0,"w":8,"h":4,"i":"9271deff-5a61-4665-83fc-f9fdc6bf0c0b"},"panelIndex":"9271deff-5a61-4665-83fc-f9fdc6bf0c0b","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"7e8fe9b1-f45c-4f3d-9561-30febcd357ec"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"7e8fe9b1-f45c-4f3d-9561-30febcd357ec":{"label":"Delayed","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'FlightDelay : true\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0":{"label":"Part of count(kql=\'FlightDelay : true\') / count()","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"FlightDelay : true","language":"kuery"},"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1":{"label":"Part of count(kql=\'FlightDelay : true\') / count()","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2":{"label":"Part of count(kql=\'FlightDelay : true\') / count()","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"location":{"min":0,"max":41},"text":"count(kql=\'FlightDelay : true\') / count()"}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"customLabel":true}},"columnOrder":["7e8fe9b1-f45c-4f3d-9561-30febcd357ec","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":40,"y":0,"w":8,"h":4,"i":"aa591c29-1a31-4ee1-a71d-b829c06fd162"},"panelIndex":"aa591c29-1a31-4ee1-a71d-b829c06fd162","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"},{"type":"index-pattern","name":"c804c161-375f-4d52-a1cc-2e98b966957d","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"c7851241-5526-499a-960b-357af8c2ce5b"},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"alias":null,"negate":false,"disabled":false,"type":"phrase","key":"FlightDelay","params":{"query":true},"index":"c804c161-375f-4d52-a1cc-2e98b966957d"},"query":{"match_phrase":{"FlightDelay":true}},"$state":{"store":"appState"}}],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"c7851241-5526-499a-960b-357af8c2ce5b":{"label":"Delayed vs 1 week earlier","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count() / count(shift=\'1w\') - 1","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX2"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX2":{"label":"Part of Delayed","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"subtract","args":[{"type":"function","name":"divide","args":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"location":{"min":0,"max":28},"text":"count() / count(shift=\'1w\') "},1],"location":{"min":0,"max":31},"text":"count() / count(shift=\'1w\') - 1"}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX0":{"label":"Part of Delayed","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX1":{"label":"Part of Delayed","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","timeShift":"1w","customLabel":true}},"columnOrder":["c7851241-5526-499a-960b-357af8c2ce5b","c7851241-5526-499a-960b-357af8c2ce5bX2","c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":32,"y":4,"w":8,"h":4,"i":"b766e3b8-4544-46ed-99e6-9ecc4847e2a2"},"panelIndex":"b766e3b8-4544-46ed-99e6-9ecc4847e2a2","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"7e8fe9b1-f45c-4f3d-9561-30febcd357ec"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"7e8fe9b1-f45c-4f3d-9561-30febcd357ec":{"label":"Cancelled","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'Cancelled : true\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0":{"label":"Part of Cancelled","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"Cancelled : true","language":"kuery"},"customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1":{"label":"Part of Cancelled","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2":{"label":"Part of Cancelled","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"location":{"min":0,"max":39},"text":"count(kql=\'Cancelled : true\') / count()"}},"references":["7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1"],"customLabel":true}},"columnOrder":["7e8fe9b1-f45c-4f3d-9561-30febcd357ec","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX0","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX1","7e8fe9b1-f45c-4f3d-9561-30febcd357ecX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":40,"y":4,"w":8,"h":4,"i":"2e33ade5-96e5-40b4-b460-493e5d4fa834"},"panelIndex":"2e33ade5-96e5-40b4-b460-493e5d4fa834","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-b4712d43-1e84-4f5b-878d-8e38ba748317"},{"type":"index-pattern","name":"14cea722-a629-4c69-a06d-94a4a4c9a718","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d"}],"state":{"visualization":{"layerId":"b4712d43-1e84-4f5b-878d-8e38ba748317","layerType":"data","metricAccessor":"c7851241-5526-499a-960b-357af8c2ce5b"},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"alias":null,"negate":false,"disabled":false,"type":"phrase","key":"Cancelled","params":{"query":true},"index":"14cea722-a629-4c69-a06d-94a4a4c9a718"},"query":{"match_phrase":{"Cancelled":true}},"$state":{"store":"appState"}}],"datasourceStates":{"formBased":{"layers":{"b4712d43-1e84-4f5b-878d-8e38ba748317":{"columns":{"c7851241-5526-499a-960b-357af8c2ce5b":{"label":"Cancelled vs 1 week earlier","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count() / count(shift=\'1w\') - 1","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX2"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX2":{"label":"Part of Delayed vs 1 week earlier","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"subtract","args":[{"type":"function","name":"divide","args":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"location":{"min":0,"max":28},"text":"count() / count(shift=\'1w\') "},1],"location":{"min":0,"max":31},"text":"count() / count(shift=\'1w\') - 1"}},"references":["c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX0":{"label":"Part of Delayed vs 1 week earlier","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"c7851241-5526-499a-960b-357af8c2ce5bX1":{"label":"Part of Delayed vs 1 week earlier","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","timeShift":"1w","customLabel":true}},"columnOrder":["c7851241-5526-499a-960b-357af8c2ce5b","c7851241-5526-499a-960b-357af8c2ce5bX2","c7851241-5526-499a-960b-357af8c2ce5bX0","c7851241-5526-499a-960b-357af8c2ce5bX1"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":8,"w":24,"h":8,"i":"086ac2e9-dd16-4b45-92b8-1e43ff7e3f65"},"panelIndex":"086ac2e9-dd16-4b45-92b8-1e43ff7e3f65","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsXY","state":{"datasourceStates":{"formBased":{"layers":{"03c34665-471c-49c7-acf1-5a11f517421c":{"columns":{"a5b94e30-4e77-4b0a-9187-1d8b13de1456":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true}},"3e267327-7317-4310-aee3-320e0f7c1e70":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___"}},"columnOrder":["a5b94e30-4e77-4b0a-9187-1d8b13de1456","3e267327-7317-4310-aee3-320e0f7c1e70"],"incompleteColumns":{}}}}},"visualization":{"legend":{"isVisible":true,"position":"right","legendSize":"auto"},"valueLabels":"hide","fittingFunction":"None","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"custom","lowerBound":0,"upperBound":1},"axisTitlesVisibilitySettings":{"x":false,"yLeft":false,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"layerId":"03c34665-471c-49c7-acf1-5a11f517421c","accessors":["3e267327-7317-4310-aee3-320e0f7c1e70"],"position":"top","seriesType":"bar_stacked","showGridlines":false,"xAccessor":"a5b94e30-4e77-4b0a-9187-1d8b13de1456","layerType":"data"}]},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-03c34665-471c-49c7-acf1-5a11f517421c","type":"index-pattern"}]},"hidePanelTitles":false,"enhancements":{}},"title":"[Flights] Flight count"},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":8,"w":24,"h":28,"i":"fb86b32f-fb7a-45cf-9511-f366fef51bbd"},"panelIndex":"fb86b32f-fb7a-45cf-9511-f366fef51bbd","embeddableConfig":{"attributes":{"title":"Cities by delay, cancellation","type":"lens","visualizationType":"lnsDatatable","state":{"datasourceStates":{"formBased":{"layers":{"f26e8f7a-4118-4227-bea0-5c02d8b270f7":{"columns":{"3dd24cb4-45ef-4dd8-b22a-d7b802cb6da0":{"label":"Top values of OriginCityName","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"OriginCityName","isBucketed":true,"params":{"size":1000,"orderBy":{"type":"alphabetical","fallback":true},"orderDirection":"asc","otherBucket":true,"missingBucket":false}},"52f6f2e9-6242-4c44-be63-b799150e7e60X0":{"label":"Part of Delay %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"FlightDelay : true ","language":"kuery"},"customLabel":true},"52f6f2e9-6242-4c44-be63-b799150e7e60X1":{"label":"Part of Delay %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"52f6f2e9-6242-4c44-be63-b799150e7e60X2":{"label":"Part of Delay %","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["52f6f2e9-6242-4c44-be63-b799150e7e60X0","52f6f2e9-6242-4c44-be63-b799150e7e60X1"],"location":{"min":0,"max":42},"text":"count(kql=\'FlightDelay : true \') / count()"}},"references":["52f6f2e9-6242-4c44-be63-b799150e7e60X0","52f6f2e9-6242-4c44-be63-b799150e7e60X1"],"customLabel":true},"52f6f2e9-6242-4c44-be63-b799150e7e60":{"label":"Delay %","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'FlightDelay : true \') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":0}}},"references":["52f6f2e9-6242-4c44-be63-b799150e7e60X2"],"customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0":{"label":"Part of Cancel %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"Cancelled: true","language":"kuery"},"customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1":{"label":"Part of Cancel %","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X2":{"label":"Part of Cancel %","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1"],"location":{"min":0,"max":38},"text":"count(kql=\'Cancelled: true\') / count()"}},"references":["7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1"],"customLabel":true},"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6":{"label":"Cancel %","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'Cancelled: true\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":0}}},"references":["7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X2"],"customLabel":true}},"columnOrder":["3dd24cb4-45ef-4dd8-b22a-d7b802cb6da0","52f6f2e9-6242-4c44-be63-b799150e7e60","52f6f2e9-6242-4c44-be63-b799150e7e60X0","52f6f2e9-6242-4c44-be63-b799150e7e60X1","52f6f2e9-6242-4c44-be63-b799150e7e60X2","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X0","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X1","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6X2","7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6"],"incompleteColumns":{}}}}},"visualization":{"columns":[{"isTransposed":false,"columnId":"3dd24cb4-45ef-4dd8-b22a-d7b802cb6da0","width":262.75},{"columnId":"52f6f2e9-6242-4c44-be63-b799150e7e60","isTransposed":false,"width":302.5,"colorMode":"cell","palette":{"type":"palette","name":"negative","params":{"steps":5,"stops":[{"color":"#fcdedc","stop":0},{"color":"#fec3bd","stop":0.2},{"color":"#fea79e","stop":0.4},{"color":"#fb8b81","stop":0.6},{"color":"#f66d64","stop":0.8}],"name":"negative","rangeType":"number","rangeMin":0,"rangeMax":null,"continuity":"above","reverse":false}},"alignment":"center"},{"columnId":"7b9f3ece-9da3-4c27-b582-d3f8e8cc31d6","isTransposed":false,"alignment":"center","colorMode":"cell","palette":{"type":"palette","name":"negative","params":{"steps":5,"stops":[{"color":"#fcdedc","stop":0},{"color":"#fec3bd","stop":0.2},{"color":"#fea79e","stop":0.4},{"color":"#fb8b81","stop":0.6},{"color":"#f66d64","stop":0.8}],"name":"negative","rangeType":"number","rangeMin":0,"rangeMax":null,"continuity":"above","reverse":false}}}],"layerId":"f26e8f7a-4118-4227-bea0-5c02d8b270f7","sorting":{"columnId":"52f6f2e9-6242-4c44-be63-b799150e7e60","direction":"desc"},"layerType":"data","rowHeight":"single","rowHeightLines":1},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-f26e8f7a-4118-4227-bea0-5c02d8b270f7","type":"index-pattern"}]},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Most delayed cities"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":25,"w":24,"h":11,"i":"0cc42484-16f7-42ec-b38c-9bf8be69cde7"},"panelIndex":"0cc42484-16f7-42ec-b38c-9bf8be69cde7","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsXY","state":{"datasourceStates":{"formBased":{"layers":{"e80cc05e-c52a-4e5f-ac71-4b37274867f5":{"columns":{"caf7421e-93a3-439e-ab0a-fbdead93c21c":{"label":"Top values of FlightDelayType","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"FlightDelayType","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"0233d302-ec81-4fbe-96cb-7fac84cf035c"},"orderDirection":"desc","otherBucket":true,"missingBucket":false}},"13ec79e3-9d73-4536-9056-3d92802bb30a":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true}},"0233d302-ec81-4fbe-96cb-7fac84cf035c":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___"}},"columnOrder":["caf7421e-93a3-439e-ab0a-fbdead93c21c","13ec79e3-9d73-4536-9056-3d92802bb30a","0233d302-ec81-4fbe-96cb-7fac84cf035c"],"incompleteColumns":{}}}}},"visualization":{"legend":{"isVisible":true,"position":"bottom","legendSize":"auto"},"valueLabels":"hide","fittingFunction":"None","yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"},"axisTitlesVisibilitySettings":{"x":true,"yLeft":false,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_percentage_stacked","layers":[{"layerId":"e80cc05e-c52a-4e5f-ac71-4b37274867f5","accessors":["0233d302-ec81-4fbe-96cb-7fac84cf035c"],"position":"top","seriesType":"bar_percentage_stacked","showGridlines":false,"palette":{"type":"palette","name":"cool"},"xAccessor":"13ec79e3-9d73-4536-9056-3d92802bb30a","splitAccessor":"caf7421e-93a3-439e-ab0a-fbdead93c21c","layerType":"data"}]},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-e80cc05e-c52a-4e5f-ac71-4b37274867f5","type":"index-pattern"}]},"hidePanelTitles":false,"enhancements":{}},"title":"[Flights] Delay Type"},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":58,"w":12,"h":11,"i":"5d53db36-2d5a-4adc-af7b-cec4c1a294e0"},"panelIndex":"5d53db36-2d5a-4adc-af7b-cec4c1a294e0","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsPie","state":{"datasourceStates":{"formBased":{"layers":{"0c8e136b-a822-4fb3-836d-e06cbea4eea4":{"columns":{"d1cee8bf-34cf-4141-99d7-ff043ee77b56":{"label":"Top values of FlightDelayType","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"FlightDelayType","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"aa152ace-ee2d-447b-b86d-459bef4d7880"},"orderDirection":"desc","otherBucket":true,"missingBucket":false}},"aa152ace-ee2d-447b-b86d-459bef4d7880":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___"}},"columnOrder":["d1cee8bf-34cf-4141-99d7-ff043ee77b56","aa152ace-ee2d-447b-b86d-459bef4d7880"],"incompleteColumns":{}}}}},"visualization":{"shape":"pie","palette":{"type":"palette","name":"cool"},"layers":[{"layerId":"0c8e136b-a822-4fb3-836d-e06cbea4eea4","numberDisplay":"percent","categoryDisplay":"default","legendDisplay":"default","nestedLegend":false,"layerType":"data","legendSize":"auto","primaryGroups":["d1cee8bf-34cf-4141-99d7-ff043ee77b56"],"metrics":["aa152ace-ee2d-447b-b86d-459bef4d7880"]}]},"query":{"query":"","language":"kuery"},"filters":[{"meta":{"type":"phrase","key":"FlightDelayType","params":{"query":"No Delay"},"disabled":false,"negate":true,"alias":null,"index":"filter-index-pattern-0"},"query":{"match_phrase":{"FlightDelayType":"No Delay"}},"$state":{"store":"appState"}}]},"references":[{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-0c8e136b-a822-4fb3-836d-e06cbea4eea4","type":"index-pattern"},{"id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"filter-index-pattern-0","type":"index-pattern"}]},"enhancements":{},"hidePanelTitles":false},"title":"[Flights] Delay Type"},{"version":"8.8.0","type":"lens","gridData":{"x":36,"y":58,"w":12,"h":11,"i":"ecd89a7c-9124-4472-bdc6-9bdbd70d45d5"},"panelIndex":"ecd89a7c-9124-4472-bdc6-9bdbd70d45d5","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"d3d7af60-4c81-11e8-b3d7-01146121b73d","name":"indexpattern-datasource-layer-dffd86e7-01a9-4990-b974-3706608b5532"}],"state":{"visualization":{"title":"Empty XY chart","legend":{"isVisible":true,"position":"right"},"valueLabels":"hide","preferredSeriesType":"bar_horizontal","layers":[{"layerId":"dffd86e7-01a9-4990-b974-3706608b5532","accessors":["9d212159-afac-41f5-9303-5fb62ff04ba3"],"position":"top","seriesType":"bar_horizontal","showGridlines":false,"layerType":"data","splitAccessor":"d99ad4d7-26ff-4d65-a8ce-34656fdafa0a","palette":{"type":"palette","name":"temperature"}}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"dffd86e7-01a9-4990-b974-3706608b5532":{"columns":{"9d212159-afac-41f5-9303-5fb62ff04ba3":{"label":"Count of records","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":true}},"d99ad4d7-26ff-4d65-a8ce-34656fdafa0a":{"label":"Top 10 values of DestWeather","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"DestWeather","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"9d212159-afac-41f5-9303-5fb62ff04ba3"},"orderDirection":"desc","otherBucket":true,"missingBucket":false,"parentFormat":{"id":"terms"},"include":[],"exclude":[],"includeIsRegex":false,"excludeIsRegex":false}}},"columnOrder":["d99ad4d7-26ff-4d65-a8ce-34656fdafa0a","9d212159-afac-41f5-9303-5fb62ff04ba3"],"sampling":1,"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}}]', timeFrom: 'now-7d', title: '[Flights] Global Flight Dashboard', timeTo: 'now', diff --git a/src/plugins/home/server/services/sample_data/data_sets/logs/saved_objects.ts b/src/plugins/home/server/services/sample_data/data_sets/logs/saved_objects.ts index a73979c88cb2e..19d59c35523f4 100644 --- a/src/plugins/home/server/services/sample_data/data_sets/logs/saved_objects.ts +++ b/src/plugins/home/server/services/sample_data/data_sets/logs/saved_objects.ts @@ -313,7 +313,7 @@ export const getSavedObjects = (): SavedObject[] => [ optionsJSON: '{"useMargins":true,"syncColors":false,"syncCursor":true,"syncTooltips":false,"hidePanelTitles":false}', panelsJSON: - '[{"version":"8.8.0","type":"map","gridData":{"x":0,"y":14,"w":24,"h":18,"i":"4"},"panelIndex":"4","embeddableConfig":{"isLayerTOCOpen":false,"hiddenLayers":[],"mapCenter":{"lat":42.16337,"lon":-88.92107,"zoom":3.64},"openTOCDetails":[],"enhancements":{}},"panelRefName":"panel_4"},{"version":"8.8.0","type":"lens","gridData":{"x":36,"y":0,"w":12,"h":7,"i":"11"},"panelIndex":"11","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-28b89898-3feb-415a-8dd9-74d755ac7c2a"}],"state":{"visualization":{"layerId":"28b89898-3feb-415a-8dd9-74d755ac7c2a","layerType":"data","metricAccessor":"f92c482e-1eee-4c2a-9338-64fb3eec286a","palette":{"name":"custom","type":"palette","params":{"steps":3,"name":"custom","reverse":false,"rangeType":"number","rangeMin":0,"rangeMax":null,"progression":"fixed","stops":[{"color":"#D23115","stop":500},{"color":"#FCC400","stop":1000},{"color":"#68BC00","stop":1658}],"colorStops":[{"color":"#D23115","stop":0},{"color":"#FCC400","stop":500},{"color":"#68BC00","stop":1000}],"continuity":"above","maxSteps":5}}},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"28b89898-3feb-415a-8dd9-74d755ac7c2a":{"columns":{"f92c482e-1eee-4c2a-9338-64fb3eec286a":{"label":"Unique Visitors","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"params":{"emptyAsNull":true},"customLabel":true}},"columnOrder":["f92c482e-1eee-4c2a-9338-64fb3eec286a"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":true,"enhancements":{}}},{"version":"8.8.0","type":"visualization","gridData":{"x":24,"y":14,"w":24,"h":33,"i":"14"},"panelIndex":"14","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_14"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":7,"w":24,"h":7,"i":"15"},"panelIndex":"15","embeddableConfig":{"attributes":{"title":"[Logs] Response Codes Over Time + Annotations (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-b38fe501-4b47-4de8-a423-6656d1162174"},{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"xy-visualization-layer-f265e722-ae38-495c-903c-48aa7931fa82"}],"state":{"visualization":{"legend":{"isVisible":true,"showSingleSeries":true,"position":"bottom","shouldTruncate":true,"maxLines":1},"valueLabels":"hide","fittingFunction":"None","fillOpacity":0.5,"yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":0},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"seriesType":"area_percentage_stacked","layerType":"data","layerId":"b38fe501-4b47-4de8-a423-6656d1162174","accessors":["896c5eb2-81c5-44f1-a4a1-57344161ea62"],"yConfig":[{"forAccessor":"896c5eb2-81c5-44f1-a4a1-57344161ea62","color":"rgba(115,216,255,1)","axisMode":"left"}],"xAccessor":"8986e393-d24f-49b0-96ca-118fd66d75e5","splitAccessor":"43f5bb0f-c6da-43a0-8a0a-50e9838ed34b","palette":{"name":"default","type":"palette"}},{"layerId":"f265e722-ae38-495c-903c-48aa7931fa82","layerType":"annotations","ignoreGlobalFilters":true,"annotations":[{"type":"query","id":"bd7548a0-2223-11e8-832f-d5027f3c8a47","label":"Event","key":{"type":"point_in_time"},"color":"#D33115","timeField":"timestamp","icon":"asterisk","filter":{"type":"kibana_query","query":"tags:error AND tags:security","language":"lucene"},"extraFields":["geo.src"]}]}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"b38fe501-4b47-4de8-a423-6656d1162174":{"columns":{"8986e393-d24f-49b0-96ca-118fd66d75e5":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true,"dropPartials":false}},"43f5bb0f-c6da-43a0-8a0a-50e9838ed34b":{"label":"Filters","dataType":"string","operationType":"filters","scale":"ordinal","isBucketed":true,"params":{"filters":[{"input":{"query":"response.keyword >= 200 and response.keyword < 400","language":"kuery"},"label":"HTTP 2xx and 3xx"},{"input":{"query":"response.keyword >= 400 and response.keyword < 500","language":"kuery"},"label":"HTTP 4xx"},{"input":{"query":"response.keyword >= 500","language":"kuery"},"label":"HTTP 5xx"}]}},"896c5eb2-81c5-44f1-a4a1-57344161ea62":{"label":"Response Code Count","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":true},"customLabel":true}},"columnOrder":["8986e393-d24f-49b0-96ca-118fd66d75e5","43f5bb0f-c6da-43a0-8a0a-50e9838ed34b","896c5eb2-81c5-44f1-a4a1-57344161ea62"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{},"hidePanelTitles":false},"title":"[Logs] Response Codes Over Time + Annotations"},{"version":"8.8.0","type":"visualization","gridData":{"x":0,"y":0,"w":24,"h":7,"i":"343f0bef-0b19-452e-b1c8-59beb18b6f0c"},"panelIndex":"343f0bef-0b19-452e-b1c8-59beb18b6f0c","embeddableConfig":{"savedVis":{"title":"[Logs] Markdown Instructions","description":"","type":"markdown","params":{"fontSize":12,"openLinksInNewTab":true,"markdown":"## Sample Logs Data\\nThis dashboard contains sample data for you to play with. You can view it, search it, and interact with the visualizations. For more information about Kibana, check our [docs](https://www.elastic.co/guide/en/kibana/current/index.html)."},"uiState":{},"data":{"aggs":[],"searchSource":{"query":{"query":"","language":"kuery"},"filter":[]}}},"enhancements":{},"hidePanelTitles":true}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":0,"w":12,"h":7,"i":"bb94016e-f4a6-49ca-87a9-296a2869d570"},"panelIndex":"bb94016e-f4a6-49ca-87a9-296a2869d570","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-483defd2-775b-4a62-bdef-496c819bb8ed"}],"state":{"visualization":{"layerId":"483defd2-775b-4a62-bdef-496c819bb8ed","layerType":"data","metricAccessor":"37430d12-7452-4cc9-b035-5cfd4061edf0"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"483defd2-775b-4a62-bdef-496c819bb8ed":{"columns":{"37430d12-7452-4cc9-b035-5cfd4061edf0":{"label":"Visits","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true}},"columnOrder":["37430d12-7452-4cc9-b035-5cfd4061edf0"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":36,"y":7,"w":12,"h":7,"i":"8c1456d4-1993-4ba2-b701-04aca02c9fef"},"panelIndex":"8c1456d4-1993-4ba2-b701-04aca02c9fef","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-f3793bb7-3971-4753-866d-4008e77a9f9a"}],"state":{"visualization":{"layerId":"f3793bb7-3971-4753-866d-4008e77a9f9a","layerType":"data","metricAccessor":"71c076a6-e782-4866-b8df-5fd85a41f08b"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"f3793bb7-3971-4753-866d-4008e77a9f9a":{"columns":{"71c076a6-e782-4866-b8df-5fd85a41f08bX0":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 500","language":"kuery"},"params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX1":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX2":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"location":{"min":0,"max":46},"text":"count(kql=\'response.keyword >= 500\') / count()"}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08b":{"label":"HTTP 5xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"customLabel":true}},"columnOrder":["71c076a6-e782-4866-b8df-5fd85a41f08b","71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1","71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":7,"w":12,"h":7,"i":"01d8e435-91c0-484f-a11e-856747050b0a"},"panelIndex":"01d8e435-91c0-484f-a11e-856747050b0a","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-f3793bb7-3971-4753-866d-4008e77a9f9a"}],"state":{"visualization":{"layerId":"f3793bb7-3971-4753-866d-4008e77a9f9a","layerType":"data","metricAccessor":"71c076a6-e782-4866-b8df-5fd85a41f08b"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"f3793bb7-3971-4753-866d-4008e77a9f9a":{"columns":{"71c076a6-e782-4866-b8df-5fd85a41f08bX0":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 400 and response.keyword < 500","language":"kuery"},"params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX1":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX2":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"location":{"min":0,"max":73},"text":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()"}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08b":{"label":"HTTP 4xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"customLabel":true}},"columnOrder":["71c076a6-e782-4866-b8df-5fd85a41f08b","71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1","71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"visualization","gridData":{"x":0,"y":32,"w":24,"h":15,"i":"8e59c7cf-6e42-4343-a113-c4a255fcf2ce"},"panelIndex":"8e59c7cf-6e42-4343-a113-c4a255fcf2ce","embeddableConfig":{"savedVis":{"title":"","description":"","type":"vega","params":{"spec":"{\\n $schema: https://vega.github.io/schema/vega-lite/v5.json\\n data: {\\n url: {\\n %context%: true\\n %timefield%: @timestamp\\n index: kibana_sample_data_logs\\n body: {\\n aggs: {\\n countries: {\\n terms: {\\n field: geo.src\\n size: 25\\n }\\n aggs: {\\n hours: {\\n histogram: {\\n field: hour_of_day\\n interval: 1\\n }\\n aggs: {\\n unique: {\\n cardinality: {\\n field: clientip\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n size: 0\\n }\\n }\\n format: {property: \\"aggregations.countries.buckets\\"}\\n }\\n \\n transform: [\\n {\\n flatten: [\\"hours.buckets\\"],\\n as: [\\"buckets\\"]\\n }\\n ]\\n\\n mark: {\\n type: rect\\n tooltip: true\\n }\\n\\n encoding: {\\n x: {\\n field: buckets.key\\n type: ordinal\\n axis: {\\n title: false\\n labelAngle: 0\\n }\\n }\\n y: {\\n field: key\\n type: nominal\\n sort: {\\n field: -buckets.unique.value\\n }\\n axis: {title: false}\\n }\\n color: {\\n field: buckets.unique.value\\n type: quantitative\\n axis: {title: false}\\n scale: {\\n scheme: reds\\n }\\n }\\n }\\n}\\n"},"uiState":{},"data":{"aggs":[],"searchSource":{"query":{"query":"","language":"kuery"},"filter":[]}}},"enhancements":{}},"panelRefName":"panel_8e59c7cf-6e42-4343-a113-c4a255fcf2ce"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":47,"w":24,"h":13,"i":"21bb0939-ee09-4021-8848-6552b3a6a788"},"panelIndex":"21bb0939-ee09-4021-8848-6552b3a6a788","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsDatatable","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-c840e93e-2949-4723-ad35-6bdb2d724404"}],"state":{"visualization":{"columns":[{"columnId":"4e64d6d7-4f92-4d5e-abbb-13796604db30","isTransposed":false},{"columnId":"fb9a848d-76f3-4005-a067-4259a50b5621","isTransposed":false},{"columnId":"a2760bc2-9a6e-46a1-8595-86f61573c7cf","isTransposed":false},{"columnId":"2c8bd8d5-35ff-4386-8d27-3ba882b13e43","isTransposed":false,"colorMode":"text","palette":{"name":"custom","type":"palette","params":{"steps":5,"stops":[{"color":"#d23115","stop":1000},{"color":"#fcc400","stop":1500},{"color":"#68bc00","stop":1501}],"rangeType":"number","rangeMin":0,"rangeMax":null,"continuity":"above","colorStops":[{"color":"#d23115","stop":0},{"color":"#fcc400","stop":1000},{"color":"#68bc00","stop":1500}],"name":"custom"}}},{"columnId":"defa6f97-b874-4556-8438-056fb437787b","isTransposed":false,"colorMode":"text","palette":{"name":"custom","type":"palette","params":{"steps":5,"stops":[{"color":"#D23115","stop":10},{"color":"#FCC400","stop":25},{"color":"#68bc00","stop":26}],"rangeType":"number","rangeMin":0,"rangeMax":null,"continuity":"above","colorStops":[{"color":"#D23115","stop":0},{"color":"#FCC400","stop":10},{"color":"#68bc00","stop":25}],"name":"custom"}}}],"layerId":"c840e93e-2949-4723-ad35-6bdb2d724404","layerType":"data"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"c840e93e-2949-4723-ad35-6bdb2d724404":{"columns":{"4e64d6d7-4f92-4d5e-abbb-13796604db30":{"label":"Type","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"extension.keyword","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"fb9a848d-76f3-4005-a067-4259a50b5621"},"orderDirection":"desc","otherBucket":true,"missingBucket":false,"parentFormat":{"id":"terms"},"include":[],"exclude":[],"includeIsRegex":false,"excludeIsRegex":false},"customLabel":true},"fb9a848d-76f3-4005-a067-4259a50b5621":{"label":"Bytes (Total)","dataType":"number","operationType":"sum","sourceField":"bytes","isBucketed":false,"scale":"ratio","params":{"emptyAsNull":true,"format":{"id":"bytes","params":{"decimals":2}}},"customLabel":true},"a2760bc2-9a6e-46a1-8595-86f61573c7cf":{"label":"Bytes (Last Hour)","dataType":"number","operationType":"sum","sourceField":"bytes","isBucketed":false,"scale":"ratio","reducedTimeRange":"1h","params":{"emptyAsNull":true,"format":{"id":"bytes","params":{"decimals":2}}},"customLabel":true},"2c8bd8d5-35ff-4386-8d27-3ba882b13e43":{"label":"Unique Visits (Total)","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"params":{"emptyAsNull":true},"customLabel":true},"defa6f97-b874-4556-8438-056fb437787b":{"label":"Unique count of clientip","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"reducedTimeRange":"1h","params":{"emptyAsNull":true}}},"columnOrder":["4e64d6d7-4f92-4d5e-abbb-13796604db30","fb9a848d-76f3-4005-a067-4259a50b5621","a2760bc2-9a6e-46a1-8595-86f61573c7cf","2c8bd8d5-35ff-4386-8d27-3ba882b13e43","defa6f97-b874-4556-8438-056fb437787b"],"sampling":1,"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":47,"w":24,"h":13,"i":"cbca842c-b9fa-4523-9ce0-14e350866e33"},"panelIndex":"cbca842c-b9fa-4523-9ce0-14e350866e33","embeddableConfig":{"hidePanelTitles":false,"enhancements":{}},"title":"[Logs] Bytes distribution","panelRefName":"panel_cbca842c-b9fa-4523-9ce0-14e350866e33"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":60,"w":48,"h":19,"i":"1d5f0b3f-d9d2-4b26-997b-83bc5ca3090b"},"panelIndex":"1d5f0b3f-d9d2-4b26-997b-83bc5ca3090b","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsDatatable","state":{"datasourceStates":{"formBased":{"layers":{"c35dc8ee-50d1-4ef7-8b4b-9c21a7e7d3b0":{"columns":{"42783ad7-dbcf-4310-bc06-f21f4eaaac96":{"label":"URL","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"url.keyword","isBucketed":true,"params":{"size":1000,"orderBy":{"type":"column","columnId":"f7835375-4d5b-4839-95ea-41928192a319"},"orderDirection":"desc","otherBucket":true,"missingBucket":false},"customLabel":true},"f7835375-4d5b-4839-95ea-41928192a319":{"label":"Visits","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1daX0":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 400 and response.keyword < 500","language":"kuery"},"customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1daX1":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1daX2":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["07fc84ca-4147-4ba9-879e-d1b4e086e1daX0","07fc84ca-4147-4ba9-879e-d1b4e086e1daX1"],"location":{"min":0,"max":73},"text":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()"}},"references":["07fc84ca-4147-4ba9-879e-d1b4e086e1daX0","07fc84ca-4147-4ba9-879e-d1b4e086e1daX1"],"customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1da":{"label":"HTTP 4xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["07fc84ca-4147-4ba9-879e-d1b4e086e1daX2"],"customLabel":true},"791d5a5b-a7ba-4e9e-b533-51b33c7d7747":{"label":"Unique","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"customLabel":true},"611e3509-e834-4fdd-b573-44e959e95d27":{"label":"95th percentile of bytes","dataType":"number","operationType":"percentile","sourceField":"bytes","isBucketed":false,"scale":"ratio","params":{"percentile":95,"format":{"id":"bytes","params":{"decimals":0}}}},"9f79ecca-123f-4098-a658-6b0e998da003":{"label":"Median of bytes","dataType":"number","operationType":"median","sourceField":"bytes","isBucketed":false,"scale":"ratio","params":{"format":{"id":"bytes","params":{"decimals":0}}}},"491285fd-0196-402c-9b7f-4660fdc1c22aX0":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 500","language":"kuery"},"customLabel":true},"491285fd-0196-402c-9b7f-4660fdc1c22aX1":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"491285fd-0196-402c-9b7f-4660fdc1c22aX2":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["491285fd-0196-402c-9b7f-4660fdc1c22aX0","491285fd-0196-402c-9b7f-4660fdc1c22aX1"],"location":{"min":0,"max":46},"text":"count(kql=\'response.keyword >= 500\') / count()"}},"references":["491285fd-0196-402c-9b7f-4660fdc1c22aX0","491285fd-0196-402c-9b7f-4660fdc1c22aX1"],"customLabel":true},"491285fd-0196-402c-9b7f-4660fdc1c22a":{"label":"HTTP 5xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["491285fd-0196-402c-9b7f-4660fdc1c22aX2"],"customLabel":true}},"columnOrder":["42783ad7-dbcf-4310-bc06-f21f4eaaac96","f7835375-4d5b-4839-95ea-41928192a319","791d5a5b-a7ba-4e9e-b533-51b33c7d7747","07fc84ca-4147-4ba9-879e-d1b4e086e1da","491285fd-0196-402c-9b7f-4660fdc1c22a","491285fd-0196-402c-9b7f-4660fdc1c22aX0","491285fd-0196-402c-9b7f-4660fdc1c22aX1","491285fd-0196-402c-9b7f-4660fdc1c22aX2","07fc84ca-4147-4ba9-879e-d1b4e086e1daX0","07fc84ca-4147-4ba9-879e-d1b4e086e1daX1","07fc84ca-4147-4ba9-879e-d1b4e086e1daX2","611e3509-e834-4fdd-b573-44e959e95d27","9f79ecca-123f-4098-a658-6b0e998da003"],"incompleteColumns":{}}}}},"visualization":{"layerId":"c35dc8ee-50d1-4ef7-8b4b-9c21a7e7d3b0","columns":[{"columnId":"42783ad7-dbcf-4310-bc06-f21f4eaaac96","width":650.6666666666666},{"columnId":"f7835375-4d5b-4839-95ea-41928192a319"},{"columnId":"491285fd-0196-402c-9b7f-4660fdc1c22a","isTransposed":false,"width":81.66666666666669,"colorMode":"cell","palette":{"name":"custom","type":"palette","params":{"steps":5,"stops":[{"color":"#fbddd6","stop":0.1},{"color":"#CC5642","stop":1}],"rangeType":"number","name":"custom","colorStops":[{"color":"#fbddd6","stop":0.05},{"color":"#CC5642","stop":0.1}],"rangeMin":0.05,"rangeMax":0.1}}},{"columnId":"07fc84ca-4147-4ba9-879e-d1b4e086e1da","isTransposed":false,"colorMode":"cell","palette":{"name":"custom","type":"palette","params":{"steps":5,"stops":[{"color":"#fbddd6","stop":0.1},{"color":"#cc5642","stop":1.1}],"name":"custom","colorStops":[{"color":"#fbddd6","stop":0.05},{"color":"#cc5642","stop":0.1}],"rangeType":"number","rangeMin":0.05,"rangeMax":0.1}}},{"columnId":"791d5a5b-a7ba-4e9e-b533-51b33c7d7747","isTransposed":false},{"columnId":"611e3509-e834-4fdd-b573-44e959e95d27","isTransposed":false},{"columnId":"9f79ecca-123f-4098-a658-6b0e998da003","isTransposed":false}],"sorting":{"columnId":"491285fd-0196-402c-9b7f-4660fdc1c22a","direction":"desc"},"layerType":"data","rowHeight":"single","rowHeightLines":1},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-c35dc8ee-50d1-4ef7-8b4b-9c21a7e7d3b0","type":"index-pattern"}]},"enhancements":{"dynamicActions":{"events":[]}},"hidePanelTitles":false},"title":"[Logs] Errors by host"}]', + '[{"version":"8.8.0","type":"map","gridData":{"x":0,"y":14,"w":24,"h":18,"i":"4"},"panelIndex":"4","embeddableConfig":{"isLayerTOCOpen":false,"hiddenLayers":[],"mapCenter":{"lat":42.16337,"lon":-88.92107,"zoom":3.64},"openTOCDetails":[],"enhancements":{}},"panelRefName":"panel_4"},{"version":"8.8.0","type":"lens","gridData":{"x":36,"y":0,"w":12,"h":7,"i":"11"},"panelIndex":"11","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-28b89898-3feb-415a-8dd9-74d755ac7c2a"}],"state":{"visualization":{"layerId":"28b89898-3feb-415a-8dd9-74d755ac7c2a","layerType":"data","metricAccessor":"f92c482e-1eee-4c2a-9338-64fb3eec286a","palette":{"type":"palette","name":"status","params":{"steps":3,"rangeType":"number","rangeMin":0,"rangeMax":null,"progression":"fixed","stops":[{"color":"#23be8f","stop":0},{"color":"#fcd279","stop":608.66},{"color":"#f66d64","stop":1217.33}],"continuity":"above","maxSteps":5}}},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"28b89898-3feb-415a-8dd9-74d755ac7c2a":{"columns":{"f92c482e-1eee-4c2a-9338-64fb3eec286a":{"label":"Unique Visitors","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"params":{"emptyAsNull":true},"customLabel":true}},"columnOrder":["f92c482e-1eee-4c2a-9338-64fb3eec286a"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"hidePanelTitles":true,"enhancements":{}}},{"version":"8.8.0","type":"visualization","gridData":{"x":24,"y":14,"w":24,"h":33,"i":"14"},"panelIndex":"14","embeddableConfig":{"enhancements":{}},"panelRefName":"panel_14"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":7,"w":24,"h":7,"i":"15"},"panelIndex":"15","embeddableConfig":{"attributes":{"title":"[Logs] Response Codes Over Time + Annotations (converted)","visualizationType":"lnsXY","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-b38fe501-4b47-4de8-a423-6656d1162174"},{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"xy-visualization-layer-f265e722-ae38-495c-903c-48aa7931fa82"}],"state":{"visualization":{"legend":{"isVisible":true,"showSingleSeries":true,"position":"bottom","shouldTruncate":true,"maxLines":1},"valueLabels":"hide","fittingFunction":"None","fillOpacity":0.5,"yLeftExtent":{"mode":"full"},"yRightExtent":{"mode":"full"},"yLeftScale":"linear","yRightScale":"linear","axisTitlesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"tickLabelsVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"labelsOrientation":{"x":0,"yLeft":0,"yRight":0},"gridlinesVisibilitySettings":{"x":true,"yLeft":true,"yRight":true},"preferredSeriesType":"bar_stacked","layers":[{"seriesType":"area_percentage_stacked","layerType":"data","layerId":"b38fe501-4b47-4de8-a423-6656d1162174","accessors":["896c5eb2-81c5-44f1-a4a1-57344161ea62"],"yConfig":[{"forAccessor":"896c5eb2-81c5-44f1-a4a1-57344161ea62","color":"rgba(115,216,255,1)","axisMode":"left"}],"xAccessor":"8986e393-d24f-49b0-96ca-118fd66d75e5","splitAccessor":"43f5bb0f-c6da-43a0-8a0a-50e9838ed34b","palette":{"name":"default","type":"palette"}},{"layerId":"f265e722-ae38-495c-903c-48aa7931fa82","layerType":"annotations","ignoreGlobalFilters":true,"annotations":[{"type":"query","id":"bd7548a0-2223-11e8-832f-d5027f3c8a47","label":"Event","key":{"type":"point_in_time"},"color":"#D33115","timeField":"timestamp","icon":"asterisk","filter":{"type":"kibana_query","query":"tags:error AND tags:security","language":"lucene"},"extraFields":["geo.src"]}]}]},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"b38fe501-4b47-4de8-a423-6656d1162174":{"columns":{"8986e393-d24f-49b0-96ca-118fd66d75e5":{"label":"timestamp","dataType":"date","operationType":"date_histogram","sourceField":"timestamp","isBucketed":true,"scale":"interval","params":{"interval":"auto","includeEmptyRows":true,"dropPartials":false}},"43f5bb0f-c6da-43a0-8a0a-50e9838ed34b":{"label":"Filters","dataType":"string","operationType":"filters","scale":"ordinal","isBucketed":true,"params":{"filters":[{"input":{"query":"response.keyword >= 200 and response.keyword < 400","language":"kuery"},"label":"HTTP 2xx and 3xx"},{"input":{"query":"response.keyword >= 400 and response.keyword < 500","language":"kuery"},"label":"HTTP 4xx"},{"input":{"query":"response.keyword >= 500","language":"kuery"},"label":"HTTP 5xx"}]}},"896c5eb2-81c5-44f1-a4a1-57344161ea62":{"label":"Response Code Count","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":true},"customLabel":true}},"columnOrder":["8986e393-d24f-49b0-96ca-118fd66d75e5","43f5bb0f-c6da-43a0-8a0a-50e9838ed34b","896c5eb2-81c5-44f1-a4a1-57344161ea62"],"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{},"hidePanelTitles":false},"title":"[Logs] Response Codes Over Time + Annotations"},{"version":"8.8.0","type":"visualization","gridData":{"x":0,"y":0,"w":24,"h":7,"i":"343f0bef-0b19-452e-b1c8-59beb18b6f0c"},"panelIndex":"343f0bef-0b19-452e-b1c8-59beb18b6f0c","embeddableConfig":{"savedVis":{"title":"[Logs] Markdown Instructions","description":"","type":"markdown","params":{"fontSize":12,"openLinksInNewTab":true,"markdown":"## Sample Logs Data\\nThis dashboard contains sample data for you to play with. You can view it, search it, and interact with the visualizations. For more information about Kibana, check our [docs](https://www.elastic.co/guide/en/kibana/current/index.html)."},"uiState":{},"data":{"aggs":[],"searchSource":{"query":{"query":"","language":"kuery"},"filter":[]}}},"enhancements":{},"hidePanelTitles":true}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":0,"w":12,"h":7,"i":"bb94016e-f4a6-49ca-87a9-296a2869d570"},"panelIndex":"bb94016e-f4a6-49ca-87a9-296a2869d570","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-483defd2-775b-4a62-bdef-496c819bb8ed"}],"state":{"visualization":{"layerId":"483defd2-775b-4a62-bdef-496c819bb8ed","layerType":"data","metricAccessor":"37430d12-7452-4cc9-b035-5cfd4061edf0"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"483defd2-775b-4a62-bdef-496c819bb8ed":{"columns":{"37430d12-7452-4cc9-b035-5cfd4061edf0":{"label":"Visits","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true}},"columnOrder":["37430d12-7452-4cc9-b035-5cfd4061edf0"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":36,"y":7,"w":12,"h":7,"i":"8c1456d4-1993-4ba2-b701-04aca02c9fef"},"panelIndex":"8c1456d4-1993-4ba2-b701-04aca02c9fef","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-f3793bb7-3971-4753-866d-4008e77a9f9a"}],"state":{"visualization":{"layerId":"f3793bb7-3971-4753-866d-4008e77a9f9a","layerType":"data","metricAccessor":"71c076a6-e782-4866-b8df-5fd85a41f08b"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"f3793bb7-3971-4753-866d-4008e77a9f9a":{"columns":{"71c076a6-e782-4866-b8df-5fd85a41f08bX0":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 500","language":"kuery"},"params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX1":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX2":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"location":{"min":0,"max":46},"text":"count(kql=\'response.keyword >= 500\') / count()"}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08b":{"label":"HTTP 5xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"customLabel":true}},"columnOrder":["71c076a6-e782-4866-b8df-5fd85a41f08b","71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1","71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":7,"w":12,"h":7,"i":"01d8e435-91c0-484f-a11e-856747050b0a"},"panelIndex":"01d8e435-91c0-484f-a11e-856747050b0a","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsMetric","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-f3793bb7-3971-4753-866d-4008e77a9f9a"}],"state":{"visualization":{"layerId":"f3793bb7-3971-4753-866d-4008e77a9f9a","layerType":"data","metricAccessor":"71c076a6-e782-4866-b8df-5fd85a41f08b"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"f3793bb7-3971-4753-866d-4008e77a9f9a":{"columns":{"71c076a6-e782-4866-b8df-5fd85a41f08bX0":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 400 and response.keyword < 500","language":"kuery"},"params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX1":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","params":{"emptyAsNull":false},"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08bX2":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"location":{"min":0,"max":73},"text":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()"}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1"],"customLabel":true},"71c076a6-e782-4866-b8df-5fd85a41f08b":{"label":"HTTP 4xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"customLabel":true}},"columnOrder":["71c076a6-e782-4866-b8df-5fd85a41f08b","71c076a6-e782-4866-b8df-5fd85a41f08bX0","71c076a6-e782-4866-b8df-5fd85a41f08bX1","71c076a6-e782-4866-b8df-5fd85a41f08bX2"],"incompleteColumns":{}}}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"visualization","gridData":{"x":0,"y":32,"w":24,"h":15,"i":"8e59c7cf-6e42-4343-a113-c4a255fcf2ce"},"panelIndex":"8e59c7cf-6e42-4343-a113-c4a255fcf2ce","embeddableConfig":{"savedVis":{"title":"","description":"","type":"vega","params":{"spec":"{\\n $schema: https://vega.github.io/schema/vega-lite/v5.json\\n data: {\\n url: {\\n %context%: true\\n %timefield%: @timestamp\\n index: kibana_sample_data_logs\\n body: {\\n aggs: {\\n countries: {\\n terms: {\\n field: geo.src\\n size: 25\\n }\\n aggs: {\\n hours: {\\n histogram: {\\n field: hour_of_day\\n interval: 1\\n }\\n aggs: {\\n unique: {\\n cardinality: {\\n field: clientip\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n size: 0\\n }\\n }\\n format: {property: \\"aggregations.countries.buckets\\"}\\n }\\n \\n transform: [\\n {\\n flatten: [\\"hours.buckets\\"],\\n as: [\\"buckets\\"]\\n }\\n ]\\n\\n mark: {\\n type: rect\\n tooltip: true\\n }\\n\\n encoding: {\\n x: {\\n field: buckets.key\\n type: ordinal\\n axis: {\\n title: false\\n labelAngle: 0\\n }\\n }\\n y: {\\n field: key\\n type: nominal\\n sort: {\\n field: -buckets.unique.value\\n }\\n axis: {title: false}\\n }\\n color: {\\n field: buckets.unique.value\\n type: quantitative\\n axis: {title: false}\\n scale: {\\n scheme: reds\\n }\\n }\\n }\\n}\\n"},"uiState":{},"data":{"aggs":[],"searchSource":{"query":{"query":"","language":"kuery"},"filter":[]}}},"enhancements":{}},"panelRefName":"panel_8e59c7cf-6e42-4343-a113-c4a255fcf2ce"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":47,"w":24,"h":13,"i":"21bb0939-ee09-4021-8848-6552b3a6a788"},"panelIndex":"21bb0939-ee09-4021-8848-6552b3a6a788","embeddableConfig":{"attributes":{"title":"","visualizationType":"lnsDatatable","type":"lens","references":[{"type":"index-pattern","id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-c840e93e-2949-4723-ad35-6bdb2d724404"}],"state":{"visualization":{"columns":[{"columnId":"4e64d6d7-4f92-4d5e-abbb-13796604db30","isTransposed":false},{"columnId":"fb9a848d-76f3-4005-a067-4259a50b5621","isTransposed":false},{"columnId":"a2760bc2-9a6e-46a1-8595-86f61573c7cf","isTransposed":false},{"columnId":"2c8bd8d5-35ff-4386-8d27-3ba882b13e43","isTransposed":false,"colorMode":"text","palette":{"type":"palette","name":"status","params":{"steps":5,"stops":[{"color":"#23be8f","stop":20},{"color":"#9dedce","stop":40},{"color":"#fcd279","stop":60},{"color":"#ffc0b8","stop":80},{"color":"#f66d64","stop":100}],"rangeType":"percent","rangeMin":20,"rangeMax":null,"continuity":"above","reverse":false}}},{"columnId":"defa6f97-b874-4556-8438-056fb437787b","isTransposed":false,"colorMode":"text","palette":{"type":"palette","name":"status","params":{"steps":5,"stops":[{"color":"#23be8f","stop":20},{"color":"#9dedce","stop":40},{"color":"#fcd279","stop":60},{"color":"#ffc0b8","stop":80},{"color":"#f66d64","stop":100}],"rangeType":"percent","rangeMin":20,"rangeMax":null,"continuity":"above","reverse":false}}}],"layerId":"c840e93e-2949-4723-ad35-6bdb2d724404","layerType":"data"},"query":{"query":"","language":"kuery"},"filters":[],"datasourceStates":{"formBased":{"layers":{"c840e93e-2949-4723-ad35-6bdb2d724404":{"columns":{"4e64d6d7-4f92-4d5e-abbb-13796604db30":{"label":"Type","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"extension.keyword","isBucketed":true,"params":{"size":10,"orderBy":{"type":"column","columnId":"fb9a848d-76f3-4005-a067-4259a50b5621"},"orderDirection":"desc","otherBucket":true,"missingBucket":false,"parentFormat":{"id":"terms"},"include":[],"exclude":[],"includeIsRegex":false,"excludeIsRegex":false},"customLabel":true},"fb9a848d-76f3-4005-a067-4259a50b5621":{"label":"Bytes (Total)","dataType":"number","operationType":"sum","sourceField":"bytes","isBucketed":false,"scale":"ratio","params":{"emptyAsNull":true,"format":{"id":"bytes","params":{"decimals":2}}},"customLabel":true},"a2760bc2-9a6e-46a1-8595-86f61573c7cf":{"label":"Bytes (Last Hour)","dataType":"number","operationType":"sum","sourceField":"bytes","isBucketed":false,"scale":"ratio","reducedTimeRange":"1h","params":{"emptyAsNull":true,"format":{"id":"bytes","params":{"decimals":2}}},"customLabel":true},"2c8bd8d5-35ff-4386-8d27-3ba882b13e43":{"label":"Unique Visits (Total)","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"params":{"emptyAsNull":true},"customLabel":true},"defa6f97-b874-4556-8438-056fb437787b":{"label":"Unique count of clientip","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"reducedTimeRange":"1h","params":{"emptyAsNull":true}}},"columnOrder":["4e64d6d7-4f92-4d5e-abbb-13796604db30","fb9a848d-76f3-4005-a067-4259a50b5621","a2760bc2-9a6e-46a1-8595-86f61573c7cf","2c8bd8d5-35ff-4386-8d27-3ba882b13e43","defa6f97-b874-4556-8438-056fb437787b"],"sampling":1,"incompleteColumns":{}}}},"textBased":{"layers":{}}},"internalReferences":[],"adHocDataViews":{}}},"enhancements":{}}},{"version":"8.8.0","type":"lens","gridData":{"x":24,"y":47,"w":24,"h":13,"i":"cbca842c-b9fa-4523-9ce0-14e350866e33"},"panelIndex":"cbca842c-b9fa-4523-9ce0-14e350866e33","embeddableConfig":{"hidePanelTitles":false,"enhancements":{}},"title":"[Logs] Bytes distribution","panelRefName":"panel_cbca842c-b9fa-4523-9ce0-14e350866e33"},{"version":"8.8.0","type":"lens","gridData":{"x":0,"y":60,"w":48,"h":19,"i":"1d5f0b3f-d9d2-4b26-997b-83bc5ca3090b"},"panelIndex":"1d5f0b3f-d9d2-4b26-997b-83bc5ca3090b","embeddableConfig":{"attributes":{"title":"","type":"lens","visualizationType":"lnsDatatable","state":{"datasourceStates":{"formBased":{"layers":{"c35dc8ee-50d1-4ef7-8b4b-9c21a7e7d3b0":{"columns":{"42783ad7-dbcf-4310-bc06-f21f4eaaac96":{"label":"URL","dataType":"string","operationType":"terms","scale":"ordinal","sourceField":"url.keyword","isBucketed":true,"params":{"size":1000,"orderBy":{"type":"column","columnId":"f7835375-4d5b-4839-95ea-41928192a319"},"orderDirection":"desc","otherBucket":true,"missingBucket":false},"customLabel":true},"f7835375-4d5b-4839-95ea-41928192a319":{"label":"Visits","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1daX0":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 400 and response.keyword < 500","language":"kuery"},"customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1daX1":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1daX2":{"label":"Part of HTTP 4xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["07fc84ca-4147-4ba9-879e-d1b4e086e1daX0","07fc84ca-4147-4ba9-879e-d1b4e086e1daX1"],"location":{"min":0,"max":73},"text":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()"}},"references":["07fc84ca-4147-4ba9-879e-d1b4e086e1daX0","07fc84ca-4147-4ba9-879e-d1b4e086e1daX1"],"customLabel":true},"07fc84ca-4147-4ba9-879e-d1b4e086e1da":{"label":"HTTP 4xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 400 and response.keyword < 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["07fc84ca-4147-4ba9-879e-d1b4e086e1daX2"],"customLabel":true},"791d5a5b-a7ba-4e9e-b533-51b33c7d7747":{"label":"Unique","dataType":"number","operationType":"unique_count","scale":"ratio","sourceField":"clientip","isBucketed":false,"customLabel":true},"611e3509-e834-4fdd-b573-44e959e95d27":{"label":"95th percentile of bytes","dataType":"number","operationType":"percentile","sourceField":"bytes","isBucketed":false,"scale":"ratio","params":{"percentile":95,"format":{"id":"bytes","params":{"decimals":0}}}},"9f79ecca-123f-4098-a658-6b0e998da003":{"label":"Median of bytes","dataType":"number","operationType":"median","sourceField":"bytes","isBucketed":false,"scale":"ratio","params":{"format":{"id":"bytes","params":{"decimals":0}}}},"491285fd-0196-402c-9b7f-4660fdc1c22aX0":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","filter":{"query":"response.keyword >= 500","language":"kuery"},"customLabel":true},"491285fd-0196-402c-9b7f-4660fdc1c22aX1":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"count","isBucketed":false,"scale":"ratio","sourceField":"___records___","customLabel":true},"491285fd-0196-402c-9b7f-4660fdc1c22aX2":{"label":"Part of HTTP 5xx","dataType":"number","operationType":"math","isBucketed":false,"scale":"ratio","params":{"tinymathAst":{"type":"function","name":"divide","args":["491285fd-0196-402c-9b7f-4660fdc1c22aX0","491285fd-0196-402c-9b7f-4660fdc1c22aX1"],"location":{"min":0,"max":46},"text":"count(kql=\'response.keyword >= 500\') / count()"}},"references":["491285fd-0196-402c-9b7f-4660fdc1c22aX0","491285fd-0196-402c-9b7f-4660fdc1c22aX1"],"customLabel":true},"491285fd-0196-402c-9b7f-4660fdc1c22a":{"label":"HTTP 5xx","dataType":"number","operationType":"formula","isBucketed":false,"scale":"ratio","params":{"formula":"count(kql=\'response.keyword >= 500\') / count()","isFormulaBroken":false,"format":{"id":"percent","params":{"decimals":1}}},"references":["491285fd-0196-402c-9b7f-4660fdc1c22aX2"],"customLabel":true}},"columnOrder":["42783ad7-dbcf-4310-bc06-f21f4eaaac96","f7835375-4d5b-4839-95ea-41928192a319","791d5a5b-a7ba-4e9e-b533-51b33c7d7747","07fc84ca-4147-4ba9-879e-d1b4e086e1da","491285fd-0196-402c-9b7f-4660fdc1c22a","491285fd-0196-402c-9b7f-4660fdc1c22aX0","491285fd-0196-402c-9b7f-4660fdc1c22aX1","491285fd-0196-402c-9b7f-4660fdc1c22aX2","07fc84ca-4147-4ba9-879e-d1b4e086e1daX0","07fc84ca-4147-4ba9-879e-d1b4e086e1daX1","07fc84ca-4147-4ba9-879e-d1b4e086e1daX2","611e3509-e834-4fdd-b573-44e959e95d27","9f79ecca-123f-4098-a658-6b0e998da003"],"incompleteColumns":{}}}}},"visualization":{"layerId":"c35dc8ee-50d1-4ef7-8b4b-9c21a7e7d3b0","columns":[{"columnId":"42783ad7-dbcf-4310-bc06-f21f4eaaac96","width":650.6666666666666},{"columnId":"f7835375-4d5b-4839-95ea-41928192a319"},{"columnId":"491285fd-0196-402c-9b7f-4660fdc1c22a","isTransposed":false,"width":81.66666666666669,"colorMode":"cell","palette":{"type":"palette","name":"negative","params":{"steps":5,"stops":[{"color":"#fcdedc","stop":20},{"color":"#fec3bd","stop":40},{"color":"#fea79e","stop":60},{"color":"#fb8b81","stop":80},{"color":"#f66d64","stop":100}],"rangeType":"percent","rangeMin":20,"rangeMax":null,"continuity":"above","reverse":false}}},{"columnId":"07fc84ca-4147-4ba9-879e-d1b4e086e1da","isTransposed":false,"colorMode":"cell","palette":{"type":"palette","name":"negative","params":{"steps":5,"stops":[{"color":"#fcdedc","stop":20},{"color":"#fec3bd","stop":40},{"color":"#fea79e","stop":60},{"color":"#fb8b81","stop":80},{"color":"#f66d64","stop":100}],"rangeType":"percent","rangeMin":20,"rangeMax":null,"continuity":"above","reverse":false}}},{"columnId":"791d5a5b-a7ba-4e9e-b533-51b33c7d7747","isTransposed":false},{"columnId":"611e3509-e834-4fdd-b573-44e959e95d27","isTransposed":false},{"columnId":"9f79ecca-123f-4098-a658-6b0e998da003","isTransposed":false}],"sorting":{"columnId":"491285fd-0196-402c-9b7f-4660fdc1c22a","direction":"desc"},"layerType":"data","rowHeight":"single","rowHeightLines":1},"query":{"query":"","language":"kuery"},"filters":[]},"references":[{"id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-current-indexpattern","type":"index-pattern"},{"id":"90943e30-9a47-11e8-b64d-95841ca0b247","name":"indexpattern-datasource-layer-c35dc8ee-50d1-4ef7-8b4b-9c21a7e7d3b0","type":"index-pattern"}]},"enhancements":{"dynamicActions":{"events":[]}},"hidePanelTitles":false},"title":"[Logs] Errors by host"}]', timeFrom: 'now-7d/d', title: '[Logs] Web Traffic', timeTo: 'now', diff --git a/src/plugins/image_embeddable/public/components/image_editor/open_image_editor.tsx b/src/plugins/image_embeddable/public/components/image_editor/open_image_editor.tsx index f730147cb0d2c..9454dab4b9236 100644 --- a/src/plugins/image_embeddable/public/components/image_editor/open_image_editor.tsx +++ b/src/plugins/image_embeddable/public/components/image_editor/open_image_editor.tsx @@ -28,7 +28,7 @@ export const openImageEditor = async ({ }): Promise<ImageConfig> => { const { ImageEditorFlyout } = await import('./image_editor_flyout'); - const { overlays, theme, i18n, http, security } = coreServices; + const { overlays, http, security, ...startServices } = coreServices; const user = await security.authc.getCurrentUser(); const filesClient = filesService.filesClientFactory.asUnscoped<FileImageMetadata>(); @@ -73,7 +73,7 @@ export const openImageEditor = async ({ /> </ImageViewerContext.Provider> </FilesContext>, - { theme, i18n } + startServices ), { onClose: () => { diff --git a/src/plugins/kibana_overview/public/components/_overview.scss b/src/plugins/kibana_overview/public/components/_overview.scss index 85eebd7da2959..10b4b5a099dab 100644 --- a/src/plugins/kibana_overview/public/components/_overview.scss +++ b/src/plugins/kibana_overview/public/components/_overview.scss @@ -48,7 +48,7 @@ } &.securitySolution { .euiCard__image { - background-color: $euiColorSuccess; + background-color: $euiColorAccentSecondary; } } } diff --git a/src/plugins/links/public/editor/open_editor_flyout.tsx b/src/plugins/links/public/editor/open_editor_flyout.tsx index 87b1ab4e21ff8..32e9cc92be849 100644 --- a/src/plugins/links/public/editor/open_editor_flyout.tsx +++ b/src/plugins/links/public/editor/open_editor_flyout.tsx @@ -133,7 +133,7 @@ export async function openEditorFlyout({ parentDashboardId={parentDashboardId} isByReference={Boolean(initialState?.savedObjectId)} />, - { theme: coreServices.theme, i18n: coreServices.i18n } + coreServices ), { id: flyoutId, diff --git a/src/plugins/links/public/embeddable/links_embeddable.tsx b/src/plugins/links/public/embeddable/links_embeddable.tsx index 685f0a6c46a3b..a1bff3702c6ce 100644 --- a/src/plugins/links/public/embeddable/links_embeddable.tsx +++ b/src/plugins/links/public/embeddable/links_embeddable.tsx @@ -121,7 +121,7 @@ export const getLinksEmbeddableFactory = () => { delete snapshot.savedObjectId; return snapshot; }, - serializeState: async (): Promise<SerializedPanelState<LinksSerializedState>> => { + serializeState: (): SerializedPanelState<LinksSerializedState> => { if (savedObjectId$.value !== undefined) { const linksByReferenceState: LinksByReferenceSerializedState = { savedObjectId: savedObjectId$.value, diff --git a/src/plugins/management/README.md b/src/plugins/management/README.md deleted file mode 100644 index 15974f6d4814d..0000000000000 --- a/src/plugins/management/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Management Plugin - -This plugins contains the "Stack Management" page framework. It offers navigation and an API -to link individual management section into it. This plugin does not contain any individual -management section itself. - -## Cards navigation - -This plugin offers a special version of its landing page with a special feature called "cards navigation". -This feature can be enabled by calling the `setupCardsNavigation` method from the `management` plugin from -your plugin's `setup` method: - -``` - management.setupCardsNavigation({ enabled: true }); -``` - -The cards that will be shown are defined in the `packages/kbn-management/cards_navigation/src/consts.tsx` file -and they are grouped into categories. These cards are computed based on the `SectionsService` that is provided -in the `management` plugin. - -### Adding a new card to the navigation - -For adding a new item to the navigation all you have to do is edit the `packages/kbn-management/cards_navigation/src/consts.tsx` -file and add two things: - -* Add the app id into the `appIds` enum (make sure that the app_id value matches the one from the plugin) -* Add a new entry to the `appDefinitions` object. In here you can specify the category where you want it to be, icon and description. - - -### Removing an item from the navigation - -If card needs to be hidden from the navigation you can specify that by using the `hideLinksTo` prop: - -``` - management.setupCardsNavigation({ - enabled: true, - hideLinksTo: [appIds.MAINTENANCE_WINDOWS], - }); -``` - -More specifics about the `setupCardsNavigation` can be found in `packages/kbn-management/cards_navigation/readme.mdx`. diff --git a/src/plugins/management/jest.config.js b/src/plugins/management/jest.config.js deleted file mode 100644 index df990c44e36c1..0000000000000 --- a/src/plugins/management/jest.config.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/src/plugins/management'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/src/plugins/management', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/src/plugins/management/{common,public,server}/**/*.{ts,tsx}'], -}; diff --git a/src/plugins/management/tsconfig.json b/src/plugins/management/tsconfig.json deleted file mode 100644 index 01b1f62b3ba15..0000000000000 --- a/src/plugins/management/tsconfig.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/home-plugin", - "@kbn/kibana-react-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/utility-types", - "@kbn/share-plugin", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/shared-ux-page-kibana-template", - "@kbn/shared-ux-router", - "@kbn/management-cards-navigation", - "@kbn/shared-ux-link-redirect-app", - "@kbn/test-jest-helpers", - "@kbn/config-schema", - "@kbn/serverless", - "@kbn/shared-ux-error-boundary", - "@kbn/deeplinks-management", - "@kbn/react-kibana-context-render", - "@kbn/core-chrome-browser", - ], - "exclude": [ - "target/**/*" - ] -} diff --git a/src/plugins/navigation/public/side_navigation/index.tsx b/src/plugins/navigation/public/side_navigation/index.tsx index c6659ef1af6f2..5d476b09d1da5 100644 --- a/src/plugins/navigation/public/side_navigation/index.tsx +++ b/src/plugins/navigation/public/side_navigation/index.tsx @@ -8,34 +8,34 @@ */ import { css } from '@emotion/react'; -import { euiThemeVars } from '@kbn/ui-theme'; import React, { Suspense, type FC } from 'react'; -import { EuiSkeletonRectangle } from '@elastic/eui'; +import { EuiSkeletonRectangle, useEuiTheme } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import type { Props as NavigationProps } from './side_navigation'; const SideNavComponentLazy = React.lazy(() => import('./side_navigation')); -export const SideNavComponent: FC<NavigationProps> = (props) => ( - <Suspense - fallback={ - <EuiSkeletonRectangle - css={css` - margin: ${euiThemeVars.euiSize}; - `} - width={16} - height={16} - borderRadius="s" - contentAriaLabel={i18n.translate( - 'navigation.sideNavigation.loadingSolutionNavigationLabel', - { - defaultMessage: 'Loading solution navigation', - } - )} - /> - } - > - <SideNavComponentLazy {...props} /> - </Suspense> -); +export const SideNavComponent: FC<NavigationProps> = (props) => { + const { euiTheme } = useEuiTheme(); + return ( + <Suspense + fallback={ + <EuiSkeletonRectangle + css={css` + margin: ${euiTheme.size.base}; + `} + width={16} + height={16} + borderRadius="s" + contentAriaLabel={i18n.translate( + 'navigation.sideNavigation.loadingSolutionNavigationLabel', + { defaultMessage: 'Loading solution navigation' } + )} + /> + } + > + <SideNavComponentLazy {...props} /> + </Suspense> + ); +}; diff --git a/src/plugins/navigation/tsconfig.json b/src/plugins/navigation/tsconfig.json index 00b5186670cf1..1ee0462330954 100644 --- a/src/plugins/navigation/tsconfig.json +++ b/src/plugins/navigation/tsconfig.json @@ -27,7 +27,6 @@ "@kbn/config-schema", "@kbn/i18n", "@kbn/std", - "@kbn/ui-theme", ], "exclude": [ "target/**/*", diff --git a/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/open_customize_panel.tsx b/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/open_customize_panel.tsx index 8fa2fd0658e56..b33a1f6014ea8 100644 --- a/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/open_customize_panel.tsx +++ b/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/open_customize_panel.tsx @@ -42,7 +42,7 @@ export const openCustomizePanelFlyout = ({ }} /> </KibanaReactContextProvider>, - { theme: core.theme, i18n: core.i18n } + core ), { size: 's', diff --git a/src/plugins/saved_objects/public/save_modal/saved_object_save_modal.tsx b/src/plugins/saved_objects/public/save_modal/saved_object_save_modal.tsx index a3e6d1cc22b2a..f56091a407fae 100644 --- a/src/plugins/saved_objects/public/save_modal/saved_object_save_modal.tsx +++ b/src/plugins/saved_objects/public/save_modal/saved_object_save_modal.tsx @@ -32,7 +32,6 @@ import { FormattedMessage } from '@kbn/i18n-react'; import React from 'react'; import { EuiText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { euiThemeVars } from '@kbn/ui-theme'; export interface OnSaveProps { newTitle: string; @@ -405,7 +404,10 @@ export class SavedObjectSaveModal extends React.Component<Props, SaveModalState> /> </EuiFlexItem> {this.props.mustCopyOnSaveMessage && ( - <EuiFlexItem css={{ marginLeft: `-${euiThemeVars.euiSize}` }} grow={false}> + <EuiFlexItem + css={({ euiTheme }) => ({ marginLeft: `-${euiTheme.size.base}` })} + grow={false} + > <EuiIconTip type="iInCircle" content={this.props.mustCopyOnSaveMessage} /> </EuiFlexItem> )} diff --git a/src/plugins/saved_objects/tsconfig.json b/src/plugins/saved_objects/tsconfig.json index 83e113a7e4e17..167a6e1c7551e 100644 --- a/src/plugins/saved_objects/tsconfig.json +++ b/src/plugins/saved_objects/tsconfig.json @@ -1,20 +1,25 @@ { "extends": "../../../tsconfig.base.json", "compilerOptions": { - "outDir": "target/types", + "outDir": "target/types" }, - "include": ["common/**/*", "public/**/*", "server/**/*"], + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + // Emotion theme typing + "../../../typings/emotion.d.ts" + ], "kbn_references": [ "@kbn/core", "@kbn/data-plugin", "@kbn/i18n", "@kbn/data-views-plugin", "@kbn/i18n-react", - "@kbn/ui-theme", "@kbn/react-kibana-mount", - "@kbn/test-jest-helpers", + "@kbn/test-jest-helpers" ], "exclude": [ - "target/**/*", + "target/**/*" ] } diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/table.test.tsx.snap b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/table.test.tsx.snap index bc0eda7e6d5a5..a3bcf4da52544 100644 --- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/table.test.tsx.snap +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/__snapshots__/table.test.tsx.snap @@ -1,239 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Table prevents hidden saved objects from being deleted 1`] = ` -<Fragment> - <EuiSearchBar - box={ - Object { - "data-test-subj": "savedObjectSearchBar", - "schema": Object { - "recognizedFields": Array [ - "type", - "tag", - ], - }, - } - } - filters={ - Array [ - Object { - "field": "type", - "multiSelect": "or", - "name": "Type", - "options": Array [ - Object { - "value": 2, - }, - ], - "type": "field_value_selection", - }, - ] - } - onChange={[Function]} - toolsRight={ - Array [ - <EuiToolTip - content={ - <Memo(MemoizedFormattedMessage) - defaultMessage="Selected objects can’t be deleted because they are hidden objects." - id="savedObjectsManagement.objectsTable.table.deleteDisabledTooltip" - /> - } - delay="regular" - display="inlineBlock" - position="top" - > - <EuiButton - color="danger" - data-test-subj="savedObjectsManagementDelete" - iconType="trash" - isDisabled={true} - onClick={[Function]} - title="Unable to delete saved objects" - > - <Memo(MemoizedFormattedMessage) - defaultMessage="Delete" - id="savedObjectsManagement.objectsTable.table.deleteButtonLabel" - /> - </EuiButton> - </EuiToolTip>, - <EuiPopover - anchorPosition="downCenter" - button={ - <EuiButton - iconSide="right" - iconType="arrowDown" - isDisabled={false} - onClick={[Function]} - > - <Memo(MemoizedFormattedMessage) - defaultMessage="Export" - id="savedObjectsManagement.objectsTable.table.exportPopoverButtonLabel" - /> - </EuiButton> - } - closePopover={[Function]} - display="inline-block" - hasArrow={true} - isOpen={false} - ownFocus={true} - panelPaddingSize="m" - repositionToCrossAxis={true} - > - <EuiFormRow - label={ - <Memo(MemoizedFormattedMessage) - defaultMessage="Options" - id="savedObjectsManagement.objectsTable.exportObjectsConfirmModal.exportOptionsLabel" - /> - } - > - <EuiSwitch - checked={true} - label={ - <Memo(MemoizedFormattedMessage) - defaultMessage="Include related objects" - id="savedObjectsManagement.objectsTable.exportObjectsConfirmModal.includeReferencesDeepLabel" - /> - } - name="includeReferencesDeep" - onChange={[Function]} - /> - </EuiFormRow> - <EuiFormRow> - <EuiButton - fill={true} - iconType="exportAction" - onClick={[Function]} - > - <Memo(MemoizedFormattedMessage) - defaultMessage="Export" - id="savedObjectsManagement.objectsTable.table.exportButtonLabel" - /> - </EuiButton> - </EuiFormRow> - </EuiPopover>, - ] - } - /> - <EuiSpacer /> - <div - data-test-subj="savedObjectsTable" - > - <EuiBasicTable - columns={ - Array [ - Object { - "align": "center", - "data-test-subj": "savedObjectsTableRowType", - "description": "Type of the saved object", - "field": "type", - "name": "Type", - "render": [Function], - "sortable": true, - "width": "65px", - }, - Object { - "data-test-subj": "savedObjectsTableRowTitle", - "dataType": "string", - "description": "Title of the saved object", - "field": "meta.title", - "name": "Title", - "render": [Function], - "sortable": false, - }, - Object { - "field": "updated_at", - "name": "Last updated", - "render": [Function], - "sortable": true, - "width": "150px", - }, - Object { - "actions": Array [ - Object { - "data-test-subj": "savedObjectsTableAction-inspect", - "description": "Inspect this saved object", - "icon": "inspect", - "name": "Inspect", - "onClick": [Function], - "type": "icon", - }, - Object { - "data-test-subj": "savedObjectsTableAction-relationships", - "description": "View the relationships this saved object has to other saved objects", - "icon": "kqlSelector", - "name": "Relationships", - "onClick": [Function], - "type": "icon", - }, - ], - "name": "Actions", - "width": "80px", - }, - ] - } - itemId="id" - items={ - Array [ - Object { - "attributes": Object {}, - "id": "1", - "meta": Object { - "editUrl": "#/management/kibana/dataViews/dataView/1", - "icon": "indexPatternApp", - "inAppUrl": Object { - "path": "/management/kibana/dataViews/dataView/1", - "uiCapabilitiesPath": "management.kibana.indexPatterns", - }, - "title": "MyIndexPattern*", - }, - "references": Array [], - "type": "index-pattern", - }, - ] - } - loading={false} - noItemsMessage={ - <EuiI18n - default="No items found" - token="euiBasicTable.noItemsMessage" - /> - } - onChange={[Function]} - pagination={ - Object { - "pageIndex": 1, - "pageSize": 2, - "pageSizeOptions": Array [ - 5, - 10, - 20, - 50, - ], - "totalItemCount": 3, - } - } - rowProps={[Function]} - selection={ - Object { - "onSelectionChange": [Function], - } - } - sorting={ - Object { - "sort": Object { - "direction": "desc", - "field": "updated_at", - }, - } - } - tableLayout="fixed" - /> - </div> -</Fragment> -`; - exports[`Table should render normally 1`] = ` <Fragment> <EuiSearchBar @@ -267,6 +33,7 @@ exports[`Table should render normally 1`] = ` toolsRight={ Array [ <EuiToolTip + data-test-subj="deleteSOToolTip" delay="regular" display="inlineBlock" position="top" diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx b/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx index 4c2ce7cfcef6e..3e7d1df19e470 100644 --- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.test.tsx @@ -113,7 +113,7 @@ describe('Table', () => { expect(component.state().isSearchTextValid).toBe(true); }); - it(`prevents hidden saved objects from being deleted`, () => { + it(`prevents hidden saved objects from being deleted`, async () => { const selectedSavedObjects = [ { type: 'visualization', meta: { hiddenType: true } }, { type: 'search', meta: { hiddenType: true } }, @@ -124,9 +124,33 @@ describe('Table', () => { selectedSavedObjects, capabilities: { savedObjectsManagement: { delete: false } } as any, }; - const component = shallowWithI18nProvider(<Table {...customizedProps} />); + render( + <I18nProvider> + <Table {...customizedProps} /> + </I18nProvider> + ); - expect(component).toMatchSnapshot(); + await waitFor(() => { + expect(screen.getByTestId('savedObjectsManagementDelete')).toBeDisabled(); + }); + }); + + it(`disables delete when no objects are selected `, async () => { + const selectedSavedObjects = [] as any; + const customizedProps = { + ...defaultProps, + selectedSavedObjects, + capabilities: { savedObjectsManagement: { delete: true } } as any, + }; + render( + <I18nProvider> + <Table {...customizedProps} /> + </I18nProvider> + ); + + await waitFor(() => { + expect(screen.getByTestId('savedObjectsManagementDelete')).toBeDisabled(); + }); }); it(`allows for automatic refreshing after an action`, () => { diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.tsx b/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.tsx index a32a1e9e958e1..73e6e2978429b 100644 --- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.tsx +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/table.tsx @@ -386,8 +386,9 @@ export class Table extends PureComponent<TableProps, TableState> { const activeActionContents = this.state.activeAction?.render() ?? null; const exceededResultCount = totalItemCount > MAX_PAGINATED_ITEM; - const allHidden = selectedSavedObjects.every(({ meta: { hiddenType } }) => hiddenType); - + const anySelected = selectedSavedObjects.length > 0; + const allHidden = + anySelected && selectedSavedObjects.every(({ meta: { hiddenType } }) => hiddenType); return ( <Fragment> {activeActionContents} @@ -403,6 +404,8 @@ export class Table extends PureComponent<TableProps, TableState> { defaultQuery={this.props.initialQuery} toolsRight={[ <EuiToolTip + data-test-subj="deleteSOToolTip" + key="deleteSOToolTip" content={ allHidden ? ( <FormattedMessage @@ -417,7 +420,9 @@ export class Table extends PureComponent<TableProps, TableState> { iconType="trash" color="danger" onClick={onDelete} - isDisabled={allHidden || !capabilities.savedObjectsManagement.delete} + isDisabled={ + !anySelected || allHidden || !capabilities.savedObjectsManagement.delete + } title={ capabilities.savedObjectsManagement.delete ? undefined diff --git a/src/plugins/saved_search/public/services/saved_searches/to_saved_search.test.ts b/src/plugins/saved_search/public/services/saved_searches/to_saved_search.test.ts index defb0e1a79986..b17eadf7e9571 100644 --- a/src/plugins/saved_search/public/services/saved_searches/to_saved_search.test.ts +++ b/src/plugins/saved_search/public/services/saved_searches/to_saved_search.test.ts @@ -8,9 +8,7 @@ */ import { contentManagementMock } from '@kbn/content-management-plugin/public/mocks'; -import { coreMock } from '@kbn/core/public/mocks'; import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; -import { AttributeService, type EmbeddableStart } from '@kbn/embeddable-plugin/public'; import { spacesPluginMock } from '@kbn/spaces-plugin/public/mocks'; import { SavedSearchByValueAttributes, byValueToSavedSearch } from '.'; @@ -18,11 +16,6 @@ const mockServices = { contentManagement: contentManagementMock.createStartContract().client, search: dataPluginMock.createStartContract().search, spaces: spacesPluginMock.createStartContract(), - embeddable: { - getAttributeService: jest.fn( - (_, opts) => new AttributeService('search', coreMock.createStart().notifications.toasts, opts) - ), - } as unknown as EmbeddableStart, }; describe('toSavedSearch', () => { diff --git a/src/plugins/telemetry/server/telemetry_collection/get_cluster_stats.ts b/src/plugins/telemetry/server/telemetry_collection/get_cluster_stats.ts index 35afcacc3d0b5..317066c46720b 100644 --- a/src/plugins/telemetry/server/telemetry_collection/get_cluster_stats.ts +++ b/src/plugins/telemetry/server/telemetry_collection/get_cluster_stats.ts @@ -20,8 +20,6 @@ export async function getClusterStats(esClient: ElasticsearchClient) { return await esClient.cluster.stats( { timeout: CLUSTER_STAT_TIMEOUT, - - // @ts-expect-error include_remotes: true, }, { diff --git a/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/logs_overview_degraded_fields.tsx b/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/logs_overview_degraded_fields.tsx index 3a244dcd5eb3c..90e9b1bcb0658 100644 --- a/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/logs_overview_degraded_fields.tsx +++ b/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/logs_overview_degraded_fields.tsx @@ -228,7 +228,7 @@ const getDegradedFieldsColumns = (): Array<EuiBasicTableColumn<DegradedField>> = sortable: true, field: 'values', render: (values: string[]) => { - return values.map((value, idx) => <EuiBadge key={idx}>{value}</EuiBadge>); + return values.map((value, idx) => <EuiBadge key={idx}>{JSON.stringify(value)}</EuiBadge>); }, }, ]; diff --git a/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/sub_components/highlight_field.tsx b/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/sub_components/highlight_field.tsx index 0c5356b7f1659..88a431beeabd4 100644 --- a/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/sub_components/highlight_field.tsx +++ b/src/plugins/unified_doc_viewer/public/components/doc_viewer_logs_overview/sub_components/highlight_field.tsx @@ -8,10 +8,8 @@ */ import { EuiBadge, EuiFlexGroup, EuiText, EuiTitle } from '@elastic/eui'; -import { css } from '@emotion/react'; import React, { ReactNode } from 'react'; import { dynamic } from '@kbn/shared-ux-utility'; -import { euiThemeVars } from '@kbn/ui-theme'; import { PartialFieldMetadataPlain } from '@kbn/fields-metadata-plugin/common'; import { HoverActionPopover } from './hover_popover_action'; @@ -44,7 +42,7 @@ export function HighlightField({ return formattedValue && value ? ( <div {...props}> <EuiFlexGroup responsive={false} alignItems="center" gutterSize="xs"> - <EuiTitle css={fieldNameStyle} size="xxxs"> + <EuiTitle size="xxxs"> <span>{label}</span> </EuiTitle> {hasFieldDescription ? <HighlightFieldDescription fieldMetadata={fieldMetadata} /> : null} @@ -80,7 +78,3 @@ const FormattedValue = ({ value }: { value: string }) => ( dangerouslySetInnerHTML={{ __html: value }} /> ); - -const fieldNameStyle = css` - color: ${euiThemeVars.euiColorDarkShade}; -`; diff --git a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss index 348c8c9784ad8..9775bf6b2ac58 100644 --- a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss +++ b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss @@ -3,7 +3,6 @@ word-wrap: break-word; white-space: pre-wrap; line-height: $euiLineHeight; - color: $euiColorFullShade; vertical-align: top; &--highlighted { diff --git a/src/plugins/unified_doc_viewer/tsconfig.json b/src/plugins/unified_doc_viewer/tsconfig.json index 212fcb0335c75..fb896fdace3e7 100644 --- a/src/plugins/unified_doc_viewer/tsconfig.json +++ b/src/plugins/unified_doc_viewer/tsconfig.json @@ -28,7 +28,6 @@ "@kbn/code-editor-mock", "@kbn/custom-icons", "@kbn/react-field", - "@kbn/ui-theme", "@kbn/discover-shared-plugin", "@kbn/fields-metadata-plugin", "@kbn/core-notifications-browser", diff --git a/src/plugins/unified_search/public/actions/apply_filter_action.ts b/src/plugins/unified_search/public/actions/apply_filter_action.ts index 9106e091ee506..96d760eb560dc 100644 --- a/src/plugins/unified_search/public/actions/apply_filter_action.ts +++ b/src/plugins/unified_search/public/actions/apply_filter_action.ts @@ -14,7 +14,7 @@ import { IncompatibleActionError, UiActionsActionDefinition } from '@kbn/ui-acti // for cleanup esFilters need to fix the issue https://github.com/elastic/kibana/issues/131292 import { FilterManager, TimefilterContract } from '@kbn/data-plugin/public'; import type { Filter, RangeFilter } from '@kbn/es-query'; -import { getOverlays, getIndexPatterns } from '../services'; +import { getIndexPatterns } from '../services'; import { applyFiltersPopover } from '../apply_filters'; export const ACTION_GLOBAL_APPLY_FILTER = 'ACTION_GLOBAL_APPLY_FILTER'; @@ -74,7 +74,7 @@ export function createFilterAction( ); const filterSelectionPromise: Promise<Filter[]> = new Promise((resolve) => { - const overlay = getOverlays().openModal( + const overlay = coreStart.overlays.openModal( toMountPoint( applyFiltersPopover( filters, diff --git a/src/plugins/unified_search/public/plugin.ts b/src/plugins/unified_search/public/plugin.ts index 151b8f6d6fabb..ae2813e790e55 100755 --- a/src/plugins/unified_search/public/plugin.ts +++ b/src/plugins/unified_search/public/plugin.ts @@ -14,7 +14,7 @@ import { APPLY_FILTER_TRIGGER } from '@kbn/data-plugin/public'; import { createQueryStringInput } from './query_string_input/get_query_string_input'; import { UPDATE_FILTER_REFERENCES_TRIGGER, updateFilterReferencesTrigger } from './triggers'; import type { ConfigSchema } from '../server/config'; -import { setIndexPatterns, setTheme, setOverlays, setAnalytics, setI18n } from './services'; +import { setCoreStart, setIndexPatterns } from './services'; import { AutocompleteService } from './autocomplete/autocomplete_service'; import { createSearchBar } from './search_bar/create_search_bar'; import { createIndexPatternSelect } from './index_pattern_select'; @@ -72,10 +72,7 @@ export class UnifiedSearchPublicPlugin core: CoreStart, { data, dataViews, uiActions, screenshotMode }: UnifiedSearchStartDependencies ): UnifiedSearchPublicPluginStart { - setAnalytics(core.analytics); - setI18n(core.i18n); - setTheme(core.theme); - setOverlays(core.overlays); + setCoreStart(core); setIndexPatterns(dataViews); const autocompleteStart = this.autocomplete.start(); diff --git a/src/plugins/unified_search/public/query_string_input/query_string_input.scss b/src/plugins/unified_search/public/query_string_input/query_string_input.scss index 46473af849c9b..89af2e8e9911a 100644 --- a/src/plugins/unified_search/public/query_string_input/query_string_input.scss +++ b/src/plugins/unified_search/public/query_string_input/query_string_input.scss @@ -51,7 +51,7 @@ &.kbnQueryBar__textarea--autoHeight { overflow-x: auto; overflow-y: auto; - white-space: normal; + white-space: pre; max-height: calc(35vh - 100px); min-height: $euiFormControlHeight; } diff --git a/src/plugins/unified_search/public/query_string_input/query_string_input.tsx b/src/plugins/unified_search/public/query_string_input/query_string_input.tsx index 2e76341ae6071..2c5469ef306d7 100644 --- a/src/plugins/unified_search/public/query_string_input/query_string_input.tsx +++ b/src/plugins/unified_search/public/query_string_input/query_string_input.tsx @@ -56,7 +56,7 @@ import { SuggestionsComponent } from '../typeahead'; import { onRaf } from '../utils'; import { FilterButtonGroup } from '../filter_bar/filter_button_group/filter_button_group'; import { AutocompleteService, QuerySuggestion, QuerySuggestionTypes } from '../autocomplete'; -import { getAnalytics, getI18n, getTheme } from '../services'; +import { getCoreStart } from '../services'; import './query_string_input.scss'; export const strings = { @@ -568,7 +568,7 @@ export default class QueryStringInputUI extends PureComponent<QueryStringInputPr </EuiFlexItem> </EuiFlexGroup> </div>, - { analytics: getAnalytics(), i18n: getI18n(), theme: getTheme() } + getCoreStart() ), }); } diff --git a/src/plugins/unified_search/public/services.ts b/src/plugins/unified_search/public/services.ts index 152c987d84e6e..3b3636c660094 100644 --- a/src/plugins/unified_search/public/services.ts +++ b/src/plugins/unified_search/public/services.ts @@ -7,22 +7,11 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { - ThemeServiceStart, - OverlayStart, - AnalyticsServiceStart, - I18nStart, -} from '@kbn/core/public'; -import { createGetterSetter } from '@kbn/kibana-utils-plugin/public'; +import { CoreStart } from '@kbn/core/public'; import { DataViewsContract } from '@kbn/data-views-plugin/public'; +import { createGetterSetter } from '@kbn/kibana-utils-plugin/public'; + +export const [getCoreStart, setCoreStart] = createGetterSetter<CoreStart>('CoreStart'); export const [getIndexPatterns, setIndexPatterns] = createGetterSetter<DataViewsContract>('IndexPatterns'); - -export const [getAnalytics, setAnalytics] = createGetterSetter<AnalyticsServiceStart>('Analytics'); - -export const [getI18n, setI18n] = createGetterSetter<I18nStart>('I18n'); - -export const [getTheme, setTheme] = createGetterSetter<ThemeServiceStart>('Theme'); - -export const [getOverlays, setOverlays] = createGetterSetter<OverlayStart>('Overlays'); diff --git a/src/plugins/unified_search/public/types.ts b/src/plugins/unified_search/public/types.ts index 08c8b282d23b9..f9d0556447778 100755 --- a/src/plugins/unified_search/public/types.ts +++ b/src/plugins/unified_search/public/types.ts @@ -96,6 +96,7 @@ export interface IUnifiedSearchPluginServices extends Partial<CoreStart> { analytics: CoreStart['analytics']; i18n: CoreStart['i18n']; theme: CoreStart['theme']; + userProfile: CoreStart['userProfile']; storage: IStorageWrapper; docLinks: DocLinksStart; data: DataPublicPluginStart; diff --git a/src/plugins/vis_default_editor/public/default_editor_controller.tsx b/src/plugins/vis_default_editor/public/default_editor_controller.tsx index 5b141282b9a1e..7f95da7e2c75b 100644 --- a/src/plugins/vis_default_editor/public/default_editor_controller.tsx +++ b/src/plugins/vis_default_editor/public/default_editor_controller.tsx @@ -15,7 +15,7 @@ import { EuiErrorBoundary, EuiLoadingChart } from '@elastic/eui'; import { Vis, VisualizeEmbeddableContract } from '@kbn/visualizations-plugin/public'; import { IEditorController, EditorRenderProps } from '@kbn/visualizations-plugin/public'; import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; -import { getAnalytics, getI18n, getTheme } from './services'; +import { getCoreStart } from './services'; // @ts-ignore const DefaultEditor = lazy(() => import('./default_editor')); @@ -30,7 +30,7 @@ class DefaultEditorController implements IEditorController { render(props: EditorRenderProps) { render( - <KibanaRenderContextProvider analytics={getAnalytics()} i18n={getI18n()} theme={getTheme()}> + <KibanaRenderContextProvider {...getCoreStart()}> <EuiErrorBoundary> <Suspense fallback={ diff --git a/src/plugins/vis_default_editor/public/plugin.ts b/src/plugins/vis_default_editor/public/plugin.ts index d3b6479189a69..192504864cf64 100644 --- a/src/plugins/vis_default_editor/public/plugin.ts +++ b/src/plugins/vis_default_editor/public/plugin.ts @@ -11,7 +11,7 @@ import { CoreSetup, CoreStart, Plugin } from '@kbn/core/public'; import type { VisualizationsSetup } from '@kbn/visualizations-plugin/public'; import { DefaultEditorController } from './default_editor_controller'; -import { setAnalytics, setI18n, setTheme } from './services'; +import { setAnalytics, setCoreStart, setTheme } from './services'; export interface VisDefaultEditorSetupDependencies { visualizations: VisualizationsSetup; @@ -29,7 +29,7 @@ export class VisDefaultEditorPlugin } public start(core: CoreStart) { - setI18n(core.i18n); + setCoreStart(core); } stop() {} diff --git a/src/plugins/vis_default_editor/public/services.ts b/src/plugins/vis_default_editor/public/services.ts index 0652b8ba742ee..23b4594174c50 100644 --- a/src/plugins/vis_default_editor/public/services.ts +++ b/src/plugins/vis_default_editor/public/services.ts @@ -7,10 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { AnalyticsServiceStart, I18nStart, ThemeServiceStart } from '@kbn/core/public'; +import { AnalyticsServiceStart, CoreStart, ThemeServiceStart } from '@kbn/core/public'; import { createGetterSetter } from '@kbn/kibana-utils-plugin/common'; export const [getAnalytics, setAnalytics] = createGetterSetter<AnalyticsServiceStart>('AnalyticsService'); -export const [getI18n, setI18n] = createGetterSetter<I18nStart>('I18nService'); export const [getTheme, setTheme] = createGetterSetter<ThemeServiceStart>('ThemeService'); +export const [getCoreStart, setCoreStart] = createGetterSetter<CoreStart>('CoreStart'); diff --git a/src/plugins/vis_types/vega/public/__snapshots__/vega_visualization.test.tsx.snap b/src/plugins/vis_types/vega/public/__snapshots__/vega_visualization.test.tsx.snap index dad12b304efdf..f9afbdc899113 100644 --- a/src/plugins/vis_types/vega/public/__snapshots__/vega_visualization.test.tsx.snap +++ b/src/plugins/vis_types/vega/public/__snapshots__/vega_visualization.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`VegaVisualizations VegaVisualization - basics should show vega graph (may fail in dev env) 1`] = `"<div class=\\"vgaVis__view\\" role=\\"graphics-document\\" aria-roledescription=\\"visualization\\" aria-label=\\"Vega visualization\\" style=\\"cursor: default;\\"><svg xmlns=\\"http://www.w3.org/2000/svg\\" xmlns:xlink=\\"http://www.w3.org/1999/xlink\\" version=\\"1.1\\" class=\\"marks\\" width=\\"512\\" height=\\"512\\" viewBox=\\"0 0 512 512\\" style=\\"background-color: transparent;\\"><g fill=\\"none\\" stroke-miterlimit=\\"10\\" transform=\\"translate(0,0)\\"><g class=\\"mark-group role-frame root\\" role=\\"graphics-object\\" aria-roledescription=\\"group mark container\\"><g transform=\\"translate(0,0)\\"><path class=\\"background\\" aria-hidden=\\"true\\" d=\\"M0,0h512v512h-512Z\\"></path><g><g class=\\"mark-group role-scope\\" role=\\"graphics-object\\" aria-roledescription=\\"group mark container\\"><g transform=\\"translate(0,0)\\"><path class=\\"background\\" aria-hidden=\\"true\\" d=\\"M0,0h0v0h0Z\\"></path><g><g class=\\"mark-area role-mark\\" role=\\"graphics-symbol\\" aria-roledescription=\\"area mark container\\"><path d=\\"M0,512C18.963,512,37.926,512,56.889,512C75.852,512,94.815,512,113.778,512C132.741,512,151.704,512,170.667,512C189.63,512,208.593,512,227.556,512C246.519,512,265.481,512,284.444,512C303.407,512,322.37,512,341.333,512C360.296,512,379.259,512,398.222,512C417.185,512,436.148,512,455.111,512C474.074,512,493.037,512,512,512L512,355.2C493.037,324.8,474.074,294.4,455.111,294.4C436.148,294.4,417.185,457.6,398.222,457.6C379.259,457.6,360.296,233.6,341.333,233.6C322.37,233.6,303.407,435.2,284.444,435.2C265.481,435.2,246.519,345.6,227.556,345.6C208.593,345.6,189.63,451.2,170.667,451.2C151.704,451.2,132.741,252.8,113.778,252.8C94.815,252.8,75.852,346.133,56.889,374.4C37.926,402.667,18.963,412.533,0,422.4Z\\" fill=\\"#54B399\\" fill-opacity=\\"1\\"></path></g></g><path class=\\"foreground\\" aria-hidden=\\"true\\" d=\\"\\" display=\\"none\\"></path></g><g transform=\\"translate(0,0)\\"><path class=\\"background\\" aria-hidden=\\"true\\" d=\\"M0,0h0v0h0Z\\"></path><g><g class=\\"mark-area role-mark\\" role=\\"graphics-symbol\\" aria-roledescription=\\"area mark container\\"><path d=\\"M0,422.4C18.963,412.533,37.926,402.667,56.889,374.4C75.852,346.133,94.815,252.8,113.778,252.8C132.741,252.8,151.704,451.2,170.667,451.2C189.63,451.2,208.593,345.6,227.556,345.6C246.519,345.6,265.481,435.2,284.444,435.2C303.407,435.2,322.37,233.6,341.333,233.6C360.296,233.6,379.259,457.6,398.222,457.6C417.185,457.6,436.148,294.4,455.111,294.4C474.074,294.4,493.037,324.8,512,355.2L512,307.2C493.037,275.2,474.074,243.2,455.111,243.2C436.148,243.2,417.185,371.2,398.222,371.2C379.259,371.2,360.296,22.4,341.333,22.4C322.37,22.4,303.407,278.4,284.444,278.4C265.481,278.4,246.519,204.8,227.556,192C208.593,179.2,189.63,185.6,170.667,172.8C151.704,160,132.741,83.2,113.778,83.2C94.815,83.2,75.852,83.2,56.889,83.2C37.926,83.2,18.963,164.8,0,246.4Z\\" fill=\\"#6092C0\\" fill-opacity=\\"1\\"></path></g></g><path class=\\"foreground\\" aria-hidden=\\"true\\" d=\\"\\" display=\\"none\\"></path></g></g></g><path class=\\"foreground\\" aria-hidden=\\"true\\" d=\\"\\" display=\\"none\\"></path></g></g></g></svg></div><div class=\\"vgaVis__controls vgaVis__controls--column\\"></div>"`; +exports[`VegaVisualizations VegaVisualization - basics should show vega graph (may fail in dev env) 1`] = `"<div class=\\"vgaVis__view\\" role=\\"graphics-document\\" aria-roledescription=\\"visualization\\" aria-label=\\"Vega visualization\\" style=\\"cursor: default;\\"><svg xmlns=\\"http://www.w3.org/2000/svg\\" xmlns:xlink=\\"http://www.w3.org/1999/xlink\\" version=\\"1.1\\" class=\\"marks\\" width=\\"512\\" height=\\"512\\" viewBox=\\"0 0 512 512\\" style=\\"background-color: transparent;\\"><g fill=\\"none\\" stroke-miterlimit=\\"10\\" transform=\\"translate(0,0)\\"><g class=\\"mark-group role-frame root\\" role=\\"graphics-object\\" aria-roledescription=\\"group mark container\\"><g transform=\\"translate(0,0)\\"><path class=\\"background\\" aria-hidden=\\"true\\" d=\\"M0,0h512v512h-512Z\\"></path><g><g class=\\"mark-group role-scope\\" role=\\"graphics-object\\" aria-roledescription=\\"group mark container\\"><g transform=\\"translate(0,0)\\"><path class=\\"background\\" aria-hidden=\\"true\\" d=\\"M0,0h0v0h0Z\\"></path><g><g class=\\"mark-area role-mark\\" role=\\"graphics-symbol\\" aria-roledescription=\\"area mark container\\"><path d=\\"M0,512C18.963,512,37.926,512,56.889,512C75.852,512,94.815,512,113.778,512C132.741,512,151.704,512,170.667,512C189.63,512,208.593,512,227.556,512C246.519,512,265.481,512,284.444,512C303.407,512,322.37,512,341.333,512C360.296,512,379.259,512,398.222,512C417.185,512,436.148,512,455.111,512C474.074,512,493.037,512,512,512L512,355.2C493.037,324.8,474.074,294.4,455.111,294.4C436.148,294.4,417.185,457.6,398.222,457.6C379.259,457.6,360.296,233.6,341.333,233.6C322.37,233.6,303.407,435.2,284.444,435.2C265.481,435.2,246.519,345.6,227.556,345.6C208.593,345.6,189.63,451.2,170.667,451.2C151.704,451.2,132.741,252.8,113.778,252.8C94.815,252.8,75.852,346.133,56.889,374.4C37.926,402.667,18.963,412.533,0,422.4Z\\" fill=\\"blue\\" fill-opacity=\\"1\\"></path></g></g><path class=\\"foreground\\" aria-hidden=\\"true\\" d=\\"\\" display=\\"none\\"></path></g><g transform=\\"translate(0,0)\\"><path class=\\"background\\" aria-hidden=\\"true\\" d=\\"M0,0h0v0h0Z\\"></path><g><g class=\\"mark-area role-mark\\" role=\\"graphics-symbol\\" aria-roledescription=\\"area mark container\\"><path d=\\"M0,422.4C18.963,412.533,37.926,402.667,56.889,374.4C75.852,346.133,94.815,252.8,113.778,252.8C132.741,252.8,151.704,451.2,170.667,451.2C189.63,451.2,208.593,345.6,227.556,345.6C246.519,345.6,265.481,435.2,284.444,435.2C303.407,435.2,322.37,233.6,341.333,233.6C360.296,233.6,379.259,457.6,398.222,457.6C417.185,457.6,436.148,294.4,455.111,294.4C474.074,294.4,493.037,324.8,512,355.2L512,307.2C493.037,275.2,474.074,243.2,455.111,243.2C436.148,243.2,417.185,371.2,398.222,371.2C379.259,371.2,360.296,22.4,341.333,22.4C322.37,22.4,303.407,278.4,284.444,278.4C265.481,278.4,246.519,204.8,227.556,192C208.593,179.2,189.63,185.6,170.667,172.8C151.704,160,132.741,83.2,113.778,83.2C94.815,83.2,75.852,83.2,56.889,83.2C37.926,83.2,18.963,164.8,0,246.4Z\\" fill=\\"yellow\\" fill-opacity=\\"1\\"></path></g></g><path class=\\"foreground\\" aria-hidden=\\"true\\" d=\\"\\" display=\\"none\\"></path></g></g></g><path class=\\"foreground\\" aria-hidden=\\"true\\" d=\\"\\" display=\\"none\\"></path></g></g></g></svg></div><div class=\\"vgaVis__controls vgaVis__controls--column\\"></div>"`; exports[`VegaVisualizations VegaVisualization - basics should show vegalite graph and update on resize (may fail in dev env) 1`] = `"<ul class=\\"vgaVis__messages\\"><li class=\\"vgaVis__message vgaVis__message--warn\\"><pre class=\\"vgaVis__messageCode\\">\\"width\\" and \\"height\\" params are ignored because \\"autosize\\" is enabled. Set \\"autosize\\": \\"none\\" to disable</pre></li></ul><div class=\\"vgaVis__view\\" role=\\"graphics-document\\" aria-roledescription=\\"visualization\\" aria-label=\\"Vega visualization\\" style=\\"cursor: default;\\"><svg xmlns=\\"http://www.w3.org/2000/svg\\" xmlns:xlink=\\"http://www.w3.org/1999/xlink\\" version=\\"1.1\\" class=\\"marks\\" width=\\"512\\" height=\\"512\\" viewBox=\\"0 0 512 512\\" style=\\"background-color: transparent;\\"><g fill=\\"none\\" stroke-miterlimit=\\"10\\" transform=\\"translate(7,5)\\"><g class=\\"mark-group role-frame root\\" role=\\"graphics-object\\" aria-roledescription=\\"group mark container\\"><g transform=\\"translate(0,0)\\"><path class=\\"background\\" aria-hidden=\\"true\\" d=\\"M0.5,0.5h498v500h-498Z\\" fill=\\"transparent\\" stroke=\\"#ddd\\"></path><g><g class=\\"mark-line role-mark marks\\" role=\\"graphics-object\\" aria-roledescription=\\"line mark container\\"><path aria-label=\\"key: Dec 11, 2017; doc_count: 0\\" role=\\"graphics-symbol\\" aria-roledescription=\\"line mark\\" d=\\"M0,500L55.333,500L110.667,500L166,45.5L221.333,33.3L276.667,34L332,486.7L387.333,500L442.667,500L498,500\\" stroke=\\"#54B399\\" stroke-width=\\"2\\"></path></g></g><path class=\\"foreground\\" aria-hidden=\\"true\\" d=\\"\\" display=\\"none\\"></path></g></g></g></svg></div><div class=\\"vgaVis__controls vgaVis__controls--column\\"></div>"`; diff --git a/src/plugins/vis_types/vega/public/plugin.ts b/src/plugins/vis_types/vega/public/plugin.ts index e3d92425281b7..d36a547a9d6ed 100644 --- a/src/plugins/vis_types/vega/public/plugin.ts +++ b/src/plugins/vis_types/vega/public/plugin.ts @@ -16,6 +16,7 @@ import { Setup as InspectorSetup } from '@kbn/inspector-plugin/public'; import type { MapsEmsPluginPublicStart } from '@kbn/maps-ems-plugin/public'; import { UsageCollectionStart } from '@kbn/usage-collection-plugin/public'; +import { KbnPalette, getKbnPalettes } from '@kbn/palettes'; import { setNotifications, setData, @@ -98,6 +99,17 @@ export class VegaPlugin implements Plugin<void, void> { core: CoreStart, { data, mapsEms, dataViews, usageCollection }: VegaPluginStartDependencies ) { + core.theme.theme$ + .subscribe({ + async next(theme) { + const { scheme } = await import('vega'); + + const palettes = getKbnPalettes(theme); + scheme('elastic', palettes.get(KbnPalette.Default).colors()); + }, + }) + .unsubscribe(); + setNotifications(core.notifications); setData(data); setDataViews(dataViews); diff --git a/src/plugins/vis_types/vega/public/vega_view/vega_base_view.js b/src/plugins/vis_types/vega/public/vega_view/vega_base_view.js index d517e593e2227..89c2fbe8848c5 100644 --- a/src/plugins/vis_types/vega/public/vega_view/vega_base_view.js +++ b/src/plugins/vis_types/vega/public/vega_view/vega_base_view.js @@ -9,11 +9,10 @@ import moment from 'moment'; import dateMath from '@kbn/datemath'; -import { scheme, loader, logger, Warn, version as vegaVersion, expressionFunction } from 'vega'; +import { loader, logger, Warn, version as vegaVersion, expressionFunction } from 'vega'; import { expressionInterpreter } from 'vega-interpreter'; import { version as vegaLiteVersion } from 'vega-lite'; import { Utils } from '../data_model/utils'; -import { euiPaletteColorBlind } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { buildQueryFilter, compareFilters } from '@kbn/es-query'; import { TooltipHandler } from './vega_tooltip'; @@ -22,8 +21,6 @@ import { getEnableExternalUrls, getDataViews } from '../services'; import { extractIndexPatternsFromSpec } from '../lib/extract_index_pattern'; import { normalizeDate, normalizeString, normalizeObject } from './utils'; -scheme('elastic', euiPaletteColorBlind()); - // Vega's extension functions are global. When called, // we forward execution to the instance-specific handler // This functions must be declared in the VegaBaseView class diff --git a/src/plugins/vis_types/vega/public/vega_visualization.test.tsx b/src/plugins/vis_types/vega/public/vega_visualization.test.tsx index ab51db562f4f2..bd1e8d1b12b34 100644 --- a/src/plugins/vis_types/vega/public/vega_visualization.test.tsx +++ b/src/plugins/vis_types/vega/public/vega_visualization.test.tsx @@ -25,6 +25,7 @@ import { dataViewPluginMocks } from '@kbn/data-views-plugin/public/mocks'; import { VegaVisualizationDependencies } from './plugin'; import React from 'react'; import { TimeCache } from './data_model/time_cache'; +import { scheme } from 'vega'; jest.mock('./default_spec', () => ({ getDefaultSpec: () => jest.requireActual('./test_utils/default.spec.json'), @@ -122,6 +123,7 @@ describe('VegaVisualizations', () => { test('should show vega graph (may fail in dev env)', async () => { let vegaVis; try { + scheme('elastic', ['blue', 'yellow']); vegaVis = new VegaVisualization(domNode, jest.fn()); const vegaParser = new VegaParser( JSON.stringify(vegaGraph), diff --git a/src/plugins/vis_types/vega/tsconfig.json b/src/plugins/vis_types/vega/tsconfig.json index 172dd4c60fea7..3c980d413b1c5 100644 --- a/src/plugins/vis_types/vega/tsconfig.json +++ b/src/plugins/vis_types/vega/tsconfig.json @@ -41,6 +41,7 @@ "@kbn/code-editor", "@kbn/react-kibana-context-render", "@kbn/search-types", + "@kbn/palettes", ], "exclude": [ "target/**/*", diff --git a/src/plugins/vis_types/vislib/public/plugin.ts b/src/plugins/vis_types/vislib/public/plugin.ts index 47ba0306b5393..5a9419e1721e3 100644 --- a/src/plugins/vis_types/vislib/public/plugin.ts +++ b/src/plugins/vis_types/vislib/public/plugin.ts @@ -18,11 +18,15 @@ import type { UsageCollectionStart } from '@kbn/usage-collection-plugin/public'; import { LEGACY_HEATMAP_CHARTS_LIBRARY } from '@kbn/vis-type-heatmap-plugin/common'; import { LEGACY_GAUGE_CHARTS_LIBRARY } from '@kbn/vis-type-gauge-plugin/common'; import type { VislibPublicConfig } from '../server/config'; -import { setAnalytics, setI18n, setUsageCollectionStart } from './services'; +import { + setFormatService, + setDataActions, + setCoreStart, + setUsageCollectionStart, +} from './services'; import { heatmapVisTypeDefinition } from './heatmap'; import { createVisTypeVislibVisFn } from './vis_type_vislib_vis_fn'; -import { setFormatService, setDataActions, setTheme } from './services'; import { getVislibVisRenderer } from './vis_renderer'; import { gaugeVisTypeDefinition } from './gauge'; import { goalVisTypeDefinition } from './goal'; @@ -87,11 +91,9 @@ export class VisTypeVislibPlugin core: CoreStart, { data, usageCollection, fieldFormats }: VisTypeVislibPluginStartDependencies ) { + setCoreStart(core); setFormatService(fieldFormats); setDataActions(data.actions); - setAnalytics(core.analytics); - setI18n(core.i18n); - setTheme(core.theme); if (usageCollection) { setUsageCollectionStart(usageCollection); } diff --git a/src/plugins/vis_types/vislib/public/services.ts b/src/plugins/vis_types/vislib/public/services.ts index 4193af3329fc0..37c971236de3f 100644 --- a/src/plugins/vis_types/vislib/public/services.ts +++ b/src/plugins/vis_types/vislib/public/services.ts @@ -7,22 +7,19 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { AnalyticsServiceStart, I18nStart, ThemeServiceStart } from '@kbn/core/public'; +import { CoreStart } from '@kbn/core/public'; import { createGetterSetter } from '@kbn/kibana-utils-plugin/public'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; import { UsageCollectionStart } from '@kbn/usage-collection-plugin/public'; +export const [getCoreStart, setCoreStart] = createGetterSetter<CoreStart>('CoreStart'); + export const [getDataActions, setDataActions] = createGetterSetter<DataPublicPluginStart['actions']>('vislib data.actions'); export const [getFormatService, setFormatService] = createGetterSetter<FieldFormatsStart>('FieldFormats'); -export const [getAnalytics, setAnalytics] = - createGetterSetter<AnalyticsServiceStart>('vislib theme service'); -export const [getI18n, setI18n] = createGetterSetter<I18nStart>('vislib theme service'); -export const [getTheme, setTheme] = createGetterSetter<ThemeServiceStart>('vislib theme service'); - export const [getUsageCollectionStart, setUsageCollectionStart] = createGetterSetter<UsageCollectionStart>('UsageCollection', false); diff --git a/src/plugins/vis_types/vislib/public/vis_controller.tsx b/src/plugins/vis_types/vislib/public/vis_controller.tsx index 89a7a4125d3c2..380d61713c253 100644 --- a/src/plugins/vis_types/vislib/public/vis_controller.tsx +++ b/src/plugins/vis_types/vislib/public/vis_controller.tsx @@ -136,7 +136,7 @@ export const createVislibVisController = ( } mountLegend( - startServices: Pick<CoreStart, 'analytics' | 'i18n' | 'theme'>, + startServices: Pick<CoreStart, 'analytics' | 'i18n' | 'theme' | 'userProfile'>, visData: unknown, visParams: BasicVislibParams, fireEvent: IInterpreterRenderHandlers['event'], diff --git a/src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx b/src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx index 0ceca90442e2f..f71f192907e4c 100644 --- a/src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx +++ b/src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx @@ -11,7 +11,7 @@ import React from 'react'; import ReactDOM from 'react-dom/server'; import { EuiIcon } from '@elastic/eui'; import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; -import { getAnalytics, getI18n, getTheme } from '../../services'; +import { getCoreStart } from '../../services'; interface Props { wholeBucket: boolean; @@ -19,7 +19,7 @@ interface Props { export const touchdownTemplate = ({ wholeBucket }: Props) => { return ReactDOM.renderToStaticMarkup( - <KibanaRenderContextProvider analytics={getAnalytics()} i18n={getI18n()} theme={getTheme()}> + <KibanaRenderContextProvider {...getCoreStart()}> <p className="visTooltip__header"> <EuiIcon type="iInCircle" className="visTooltip__headerIcon" /> <span className="visTooltip__headerText"> diff --git a/src/plugins/visualizations/public/actions/edit_in_lens_action.tsx b/src/plugins/visualizations/public/actions/edit_in_lens_action.tsx index 8995b2abf7385..f8ed7a6294dbf 100644 --- a/src/plugins/visualizations/public/actions/edit_in_lens_action.tsx +++ b/src/plugins/visualizations/public/actions/edit_in_lens_action.tsx @@ -26,7 +26,10 @@ import { import { Action } from '@kbn/ui-actions-plugin/public'; import React from 'react'; import { take } from 'rxjs'; -import { apiHasVisualizeConfig, HasVisualizeConfig } from '../legacy/embeddable'; +import { + apiHasVisualizeConfig, + type HasVisualizeConfig, +} from '../embeddable/interfaces/has_visualize_config'; import { apiHasExpressionVariables, HasExpressionVariables, diff --git a/src/plugins/visualizations/public/embeddable/save_to_library.ts b/src/plugins/visualizations/public/embeddable/save_to_library.ts index ae92252565aaa..416eda1f277a3 100644 --- a/src/plugins/visualizations/public/embeddable/save_to_library.ts +++ b/src/plugins/visualizations/public/embeddable/save_to_library.ts @@ -9,7 +9,7 @@ import { Reference } from '../../common/content_management'; import { PersistedState } from '../persisted_state'; -import { getAnalytics, getI18n, getOverlays, getTheme } from '../services'; +import { getAnalytics, getI18n, getOverlays, getTheme, getUserProfile } from '../services'; import { saveVisualization } from '../utils/saved_visualize_utils'; import { VisualizeOutputState } from './types'; @@ -63,6 +63,7 @@ export const saveToLibrary = async ({ i18n: getI18n(), overlays: getOverlays(), theme: getTheme(), + userProfile: getUserProfile(), }, references ?? [] ); diff --git a/src/plugins/visualizations/public/embeddable/state.ts b/src/plugins/visualizations/public/embeddable/state.ts index 52641703e04b6..79a3bc841a999 100644 --- a/src/plugins/visualizations/public/embeddable/state.ts +++ b/src/plugins/visualizations/public/embeddable/state.ts @@ -22,6 +22,7 @@ import { getSearch, getSpaces, getTheme, + getUserProfile, } from '../services'; import { deserializeReferences, @@ -137,6 +138,7 @@ export const deserializeSavedObjectState = async ({ overlays: getOverlays(), analytics: getAnalytics(), theme: getTheme(), + userProfile: getUserProfile(), }, savedObjectId ); diff --git a/src/plugins/visualizations/public/embeddable/types.ts b/src/plugins/visualizations/public/embeddable/types.ts index 80e7e2d9179e8..767f911d5bd52 100644 --- a/src/plugins/visualizations/public/embeddable/types.ts +++ b/src/plugins/visualizations/public/embeddable/types.ts @@ -23,7 +23,7 @@ import { SerializedTitles, } from '@kbn/presentation-publishing'; import { DeepPartial } from '@kbn/utility-types'; -import { HasVisualizeConfig } from '../legacy/embeddable'; +import type { HasVisualizeConfig } from './interfaces/has_visualize_config'; import type { Vis, VisParams, VisSavedObject } from '../types'; import type { SerializedVis } from '../vis'; diff --git a/src/plugins/visualizations/public/index.ts b/src/plugins/visualizations/public/index.ts index 3de1bfc01f2ef..54b37b0a237e1 100644 --- a/src/plugins/visualizations/public/index.ts +++ b/src/plugins/visualizations/public/index.ts @@ -19,7 +19,8 @@ export function plugin(initializerContext: PluginInitializerContext) { /** @public static code */ export { TypesService } from './vis_types/types_service'; export { VIS_EVENT_TO_TRIGGER } from './embeddable'; -export { apiHasVisualizeConfig, COMMON_VISUALIZATION_GROUPING } from './legacy/embeddable'; +export { apiHasVisualizeConfig } from './embeddable/interfaces/has_visualize_config'; +export { COMMON_VISUALIZATION_GROUPING } from './legacy/embeddable/constants'; export { VisualizationContainer } from './components'; export { getVisSchemas } from './vis_schemas'; @@ -41,7 +42,8 @@ export type VisualizeEmbeddableFactoryContract = PublicContract<VisualizeEmbedda export type VisualizeEmbeddableContract = PublicContract<VisualizeEmbeddable>; export type { SchemaConfig } from '../common/types'; export { updateOldState } from './legacy/vis_update_state'; -export type { VisualizeInput, VisualizeEmbeddable, HasVisualizeConfig } from './legacy/embeddable'; +export type { VisualizeInput, VisualizeEmbeddable } from './legacy/embeddable'; +export type { HasVisualizeConfig } from './embeddable/interfaces/has_visualize_config'; export type { PersistedState } from './persisted_state'; export type { ISavedVis, diff --git a/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx b/src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx similarity index 90% rename from src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx rename to src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx index 05aa8a3d0059a..49703371ac783 100644 --- a/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx +++ b/src/plugins/visualizations/public/legacy/embeddable/attribute_service.tsx @@ -10,7 +10,6 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { get, omit } from 'lodash'; -import { NotificationsStart } from '@kbn/core/public'; import { SavedObjectSaveModal, OnSaveProps, @@ -21,8 +20,8 @@ import { EmbeddableInput, SavedObjectEmbeddableInput, isSavedObjectEmbeddableInput, - EmbeddableFactory, -} from '..'; +} from '@kbn/embeddable-plugin/public'; +import { getNotifications } from '../../services'; /** * The attribute service is a shared, generic service that embeddables can use to provide the functionality @@ -64,20 +63,10 @@ export class AttributeService< RefType extends SavedObjectEmbeddableInput = SavedObjectEmbeddableInput, MetaInfo extends unknown = unknown > { - private embeddableFactory; - constructor( private type: string, - private toasts: NotificationsStart['toasts'], - private options: AttributeServiceOptions<SavedObjectAttributes, MetaInfo>, - getEmbeddableFactory?: (embeddableFactoryId: string) => EmbeddableFactory - ) { - if (getEmbeddableFactory) { - const factory = getEmbeddableFactory(this.type); - - this.embeddableFactory = factory; - } - } + private options: AttributeServiceOptions<SavedObjectAttributes, MetaInfo> + ) {} private async defaultUnwrapMethod( input: RefType @@ -116,8 +105,8 @@ export class AttributeService< } return { ...originalInput } as RefType; } catch (error) { - this.toasts.addDanger({ - title: i18n.translate('embeddableApi.attributeService.saveToLibraryError', { + getNotifications().toasts.addDanger({ + title: i18n.translate('visualizations.attributeService.saveToLibraryError', { defaultMessage: `An error occurred while saving. Error: {errorMessage}`, values: { errorMessage: error.message, @@ -187,9 +176,7 @@ export class AttributeService< (input as ValType)[ATTRIBUTE_SERVICE_KEY].title )} showCopyOnSave={false} - objectType={ - this.embeddableFactory ? this.embeddableFactory.getDisplayName() : this.type - } + objectType={this.type} showDescription={false} /> ); diff --git a/src/plugins/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts b/src/plugins/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts index 69ed12302f4ec..b684bd83402c5 100644 --- a/src/plugins/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts +++ b/src/plugins/visualizations/public/legacy/embeddable/create_vis_embeddable_from_object.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { IContainer, ErrorEmbeddable, AttributeService } from '@kbn/embeddable-plugin/public'; +import { IContainer, ErrorEmbeddable } from '@kbn/embeddable-plugin/public'; import type { DataView } from '@kbn/data-views-plugin/public'; import { Vis } from '../../types'; import type { @@ -21,6 +21,7 @@ import { getHttp, getTimeFilter, getCapabilities } from '../../services'; import { urlFor } from '../../utils/saved_visualize_utils'; import { VisualizeEmbeddableFactoryDeps } from './visualize_embeddable_factory'; import { createVisualizeEmbeddableAsync } from './visualize_embeddable_async'; +import { AttributeService } from './attribute_service'; /** @deprecated * VisualizeEmbeddable is no longer registered with the legacy embeddable system and is only diff --git a/src/plugins/visualizations/public/legacy/embeddable/index.ts b/src/plugins/visualizations/public/legacy/embeddable/index.ts index 6afee494e6f4f..979a631f8c665 100644 --- a/src/plugins/visualizations/public/legacy/embeddable/index.ts +++ b/src/plugins/visualizations/public/legacy/embeddable/index.ts @@ -12,7 +12,3 @@ export { VISUALIZE_EMBEDDABLE_TYPE, COMMON_VISUALIZATION_GROUPING } from './cons export { createVisEmbeddableFromObject } from './create_vis_embeddable_from_object'; export type { VisualizeEmbeddable, VisualizeInput } from './visualize_embeddable'; -export { - type HasVisualizeConfig, - apiHasVisualizeConfig, -} from '../../embeddable/interfaces/has_visualize_config'; diff --git a/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable.tsx b/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable.tsx index 196753d73b28c..bfd87435345e5 100644 --- a/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable.tsx +++ b/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable.tsx @@ -23,7 +23,6 @@ import { Warnings } from '@kbn/charts-plugin/public'; import { hasUnsupportedDownsampledAggregationFailure } from '@kbn/search-response-warnings'; import { Adapters, - AttributeService, Embeddable, EmbeddableInput, EmbeddableOutput, @@ -53,6 +52,7 @@ import { VisualizeEmbeddableFactoryDeps } from './visualize_embeddable_factory'; import { getSavedVisualization } from '../../utils/saved_visualize_utils'; import { VisSavedObject } from '../../types'; import { toExpressionAst } from '../../embeddable/to_ast'; +import { AttributeService } from './attribute_service'; export interface VisualizeEmbeddableConfiguration { vis: Vis; diff --git a/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx b/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx index 7594c8d42f2ea..112a8d3b7fd8c 100644 --- a/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx +++ b/src/plugins/visualizations/public/legacy/embeddable/visualize_embeddable_factory.tsx @@ -25,9 +25,9 @@ import { EmbeddableOutput, ErrorEmbeddable, IContainer, - AttributeService, } from '@kbn/embeddable-plugin/public'; import type { StartServicesGetter } from '@kbn/kibana-utils-plugin/public'; +import { AttributeService } from './attribute_service'; import { checkForDuplicateTitle } from '../../utils/saved_objects_utils/check_for_duplicate_title'; import type { VisualizeByReferenceInput, @@ -138,16 +138,10 @@ export class VisualizeEmbeddableFactory private async getAttributeService() { if (!this.attributeService) { - this.attributeService = this.deps - .start() - .plugins.embeddable.getAttributeService< - VisualizeSavedObjectAttributes, - VisualizeByValueInput, - VisualizeByReferenceInput - >(this.type, { - saveMethod: this.saveMethod.bind(this), - checkForDuplicateTitle: this.checkTitle.bind(this), - }); + this.attributeService = new AttributeService(this.type, { + saveMethod: this.saveMethod.bind(this), + checkForDuplicateTitle: this.checkTitle.bind(this), + }); } return this.attributeService!; } diff --git a/src/plugins/visualizations/public/plugin.ts b/src/plugins/visualizations/public/plugin.ts index 856c16104b6ca..0dcbf78c399da 100644 --- a/src/plugins/visualizations/public/plugin.ts +++ b/src/plugins/visualizations/public/plugin.ts @@ -105,6 +105,7 @@ import { setAnalytics, setI18n, setTheme, + setUserProfile, setExecutionContext, setFieldFormats, setSavedObjectTagging, @@ -115,6 +116,7 @@ import { setDataViews, setInspector, getTypes, + setNotifications, } from './services'; import { VisualizeConstants, VISUALIZE_EMBEDDABLE_TYPE } from '../common/constants'; import { EditInLensAction } from './actions/edit_in_lens_action'; @@ -464,6 +466,7 @@ export class VisualizationsPlugin const types = this.types.start(); setTypes(types); setI18n(core.i18n); + setUserProfile(core.userProfile); setEmbeddable(embeddable); setApplication(core.application); setCapabilities(core.application.capabilities); @@ -485,6 +488,7 @@ export class VisualizationsPlugin setSavedSearch(savedSearch); setDataViews(dataViews); setInspector(inspector); + setNotifications(core.notifications); if (spaces) { setSpaces(spaces); diff --git a/src/plugins/visualizations/public/services.ts b/src/plugins/visualizations/public/services.ts index 3b383abe52a35..b517082b8a2ba 100644 --- a/src/plugins/visualizations/public/services.ts +++ b/src/plugins/visualizations/public/services.ts @@ -21,6 +21,8 @@ import type { ExecutionContextSetup, AnalyticsServiceStart, I18nStart, + NotificationsStart, + UserProfileService, } from '@kbn/core/public'; import type { DataPublicPluginStart, TimefilterContract } from '@kbn/data-plugin/public'; import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; @@ -42,9 +44,14 @@ export const [getUISettings, setUISettings] = createGetterSetter<IUiSettingsClie export const [getAnalytics, setAnalytics] = createGetterSetter<AnalyticsServiceStart>('Analytics'); export const [getI18n, setI18n] = createGetterSetter<I18nStart>('I18n'); export const [getTheme, setTheme] = createGetterSetter<ThemeServiceStart>('Theme'); +export const [getNotifications, setNotifications] = + createGetterSetter<NotificationsStart>('Notifications'); export const [getCapabilities, setCapabilities] = createGetterSetter<Capabilities>('Capabilities'); +export const [getUserProfile, setUserProfile] = + createGetterSetter<UserProfileService>('UserProfile'); + export const [getHttp, setHttp] = createGetterSetter<HttpStart>('Http'); export const [getFieldsFormats, setFieldFormats] = diff --git a/src/plugins/visualizations/public/types.ts b/src/plugins/visualizations/public/types.ts index 2ccb5c648f79e..5ff4d462426f9 100644 --- a/src/plugins/visualizations/public/types.ts +++ b/src/plugins/visualizations/public/types.ts @@ -34,6 +34,7 @@ export type StartServices = Pick< | 'analytics' | 'i18n' | 'theme' + | 'userProfile' >; export type { Vis, SerializedVis, VisParams }; diff --git a/src/plugins/visualizations/public/visualize_app/utils/get_visualization_instance.ts b/src/plugins/visualizations/public/visualize_app/utils/get_visualization_instance.ts index 3a3898093a8eb..df7c7b5dda52d 100644 --- a/src/plugins/visualizations/public/visualize_app/utils/get_visualization_instance.ts +++ b/src/plugins/visualizations/public/visualize_app/utils/get_visualization_instance.ts @@ -16,7 +16,7 @@ import { createVisAsync } from '../../vis_async'; import { convertToSerializedVis, getSavedVisualization } from '../../utils/saved_visualize_utils'; import { SerializedVis, Vis, VisSavedObject, VisualizeEmbeddableContract } from '../..'; import type { VisInstance, VisualizeServices } from '../types'; -import { VisualizeInput } from '../../legacy/embeddable'; +import type { VisualizeInput } from '../../legacy/embeddable'; function isErrorRelatedToRuntimeFields(error: ExpressionValueError['error']) { const originalError = error.original || error; diff --git a/src/plugins/visualizations/public/visualize_app/utils/utils.ts b/src/plugins/visualizations/public/visualize_app/utils/utils.ts index b12c249284373..0af00b444f1d5 100644 --- a/src/plugins/visualizations/public/visualize_app/utils/utils.ts +++ b/src/plugins/visualizations/public/visualize_app/utils/utils.ts @@ -70,9 +70,7 @@ export const redirectToSavedObjectPage = ( savedVisualizationsId?: string ) => { const { - history, setActiveUrl, - toastNotifications, http: { basePath }, application: { navigateToApp }, } = services; @@ -81,9 +79,7 @@ export const redirectToSavedObjectPage = ( path: `kibana/objects/savedVisualizations/${savedVisualizationsId}`, }; redirectWhenMissing({ - history, navigateToApp, - toastNotifications, basePath, mapping: { visualization: VisualizeConstants.LANDING_PAGE_PATH, @@ -94,7 +90,7 @@ export const redirectToSavedObjectPage = ( onBeforeRedirect() { setActiveUrl(VisualizeConstants.LANDING_PAGE_PATH); }, - theme: services.theme, + ...services, })(error); }; diff --git a/src/plugins/visualizations/public/wizard/show_new_vis.tsx b/src/plugins/visualizations/public/wizard/show_new_vis.tsx index 64fe4cb07b9f9..251101519ea59 100644 --- a/src/plugins/visualizations/public/wizard/show_new_vis.tsx +++ b/src/plugins/visualizations/public/wizard/show_new_vis.tsx @@ -21,6 +21,7 @@ import { getTheme, getContentManagement, getUISettings, + getUserProfile, } from '../services'; import type { BaseVisType } from '../vis_types'; @@ -94,7 +95,7 @@ export function showNewVisModal({ </Suspense> ); }), - { analytics: getAnalytics(), i18n: getI18n(), theme: getTheme() } + { analytics: getAnalytics(), i18n: getI18n(), theme: getTheme(), userProfile: getUserProfile() } ); unmount = mount(container); diff --git a/test/functional/apps/discover/context_awareness/_telemetry.ts b/test/functional/apps/discover/context_awareness/_telemetry.ts index 587de698f9336..ba3294c3dd25a 100644 --- a/test/functional/apps/discover/context_awareness/_telemetry.ts +++ b/test/functional/apps/discover/context_awareness/_telemetry.ts @@ -121,7 +121,99 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); - describe('events', () => { + describe('contextual profiles', () => { + before(async () => { + await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); + }); + + after(async () => { + await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover'); + }); + + it('should send EBT events when a different data source profile gets resolved', async () => { + await common.navigateToApp('discover'); + await discover.selectTextBaseLang(); + await discover.waitUntilSearchingHasFinished(); + await monacoEditor.setCodeEditorValue('from my-example-logs | sort @timestamp desc'); + await ebtUIHelper.setOptIn(true); // starts the recording of events from this moment + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + let events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + // root profile stays the same as it's not changing after switching to ES|QL mode + + // but the data source profile should change because of the different data source + expect(events[0].properties).to.eql({ + contextLevel: 'dataSourceLevel', + profileId: 'example-data-source-profile', + }); + + // should not trigger any new events after a simple refresh + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events.length).to.be(1); + + // should detect a new data source profile when switching to a different data source + await monacoEditor.setCodeEditorValue('from my-example-* | sort @timestamp desc'); + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events[1].properties).to.eql({ + contextLevel: 'dataSourceLevel', + profileId: 'default-data-source-profile', + }); + + expect(events.length).to.be(2); + }); + + it('should send EBT events when a different document profile gets resolved', async () => { + await common.navigateToApp('discover'); + await discover.selectTextBaseLang(); + await monacoEditor.setCodeEditorValue('from my-example-* | sort @timestamp desc'); + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await ebtUIHelper.setOptIn(true); // starts the recording of events from this moment + + // should trigger a new event after opening the doc viewer + await dataGrid.clickRowToggle(); + await discover.isShowingDocViewer(); + + const events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events.length).to.be(1); + + expect(events[0].properties).to.eql({ + contextLevel: 'documentLevel', + profileId: 'default-document-profile', + }); + }); + }); + + describe('field usage events', () => { beforeEach(async () => { await common.navigateToApp('discover'); await header.waitUntilLoadingHasFinished(); diff --git a/test/functional/apps/discover/esql/_esql_columns.ts b/test/functional/apps/discover/esql/_esql_columns.ts index 59c4b8b816664..3ee6c9e4a3f56 100644 --- a/test/functional/apps/discover/esql/_esql_columns.ts +++ b/test/functional/apps/discover/esql/_esql_columns.ts @@ -181,14 +181,16 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('should reset columns if available fields or index pattern are different in transformational query', async () => { - await monacoEditor.setCodeEditorValue('from logstash-* | keep ip, @timestamp'); + await monacoEditor.setCodeEditorValue('from logstash-* | keep ip, @timestamp | limit 500'); await testSubjects.click('querySubmitButton'); await header.waitUntilLoadingHasFinished(); await discover.waitUntilSearchingHasFinished(); expect(await dataGrid.getHeaderFields()).to.eql(['ip', '@timestamp']); // reset columns if available fields are different - await monacoEditor.setCodeEditorValue('from logstash-* | keep ip, @timestamp, bytes'); + await monacoEditor.setCodeEditorValue( + 'from logstash-* | keep ip, @timestamp, bytes | limit 500' + ); await testSubjects.click('querySubmitButton'); await header.waitUntilLoadingHasFinished(); await discover.waitUntilSearchingHasFinished(); diff --git a/test/functional/apps/discover/group8/_sidenav_link.ts b/test/functional/apps/discover/group8/_sidenav_link.ts new file mode 100644 index 0000000000000..8919e7f32fef4 --- /dev/null +++ b/test/functional/apps/discover/group8/_sidenav_link.ts @@ -0,0 +1,156 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const esArchiver = getService('esArchiver'); + const { discover, timePicker, header, common } = getPageObjects([ + 'discover', + 'timePicker', + 'header', + 'common', + ]); + const kibanaServer = getService('kibanaServer'); + const security = getService('security'); + const retry = getService('retry'); + const queryBar = getService('queryBar'); + const appsMenu = getService('appsMenu'); + const monacoEditor = getService('monacoEditor'); + const testSubjects = getService('testSubjects'); + const dataViews = getService('dataViews'); + + describe('discover URL in side nav', function () { + before(async function () { + await security.testUser.setRoles(['kibana_admin', 'test_logstash_reader']); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); + await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.uiSettings.replace({ defaultIndex: 'logstash-*' }); + await timePicker.setDefaultAbsoluteRangeViaUiSettings(); + }); + + after(async () => { + await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover'); + await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.uiSettings.replace({}); + await kibanaServer.savedObjects.cleanStandardList(); + }); + + it('saves the last URL when in data view mode', async function () { + await common.navigateToApp('discover'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await queryBar.setQuery('response:200'); + await queryBar.submitQuery(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await appsMenu.openCollapsibleNav(); + await header.clickDashboard(); + await header.waitUntilLoadingHasFinished(); + + await appsMenu.openCollapsibleNav(); + await header.clickDiscover(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await retry.try(async () => { + expect(await queryBar.getQueryString()).to.be('response:200'); + expect(await discover.getHitCount()).to.be('12,891'); + }); + }); + + it('saves the last URL when in ES|QL mode', async function () { + await common.navigateToApp('discover'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await discover.selectTextBaseLang(); + + await monacoEditor.setCodeEditorValue('FROM logstash-* | LIMIT 30'); + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await appsMenu.openCollapsibleNav(); + await header.clickDashboard(); + await header.waitUntilLoadingHasFinished(); + + await appsMenu.openCollapsibleNav(); + await header.clickDiscover(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await retry.try(async () => { + expect(await monacoEditor.getCodeEditorValue()).to.be('FROM logstash-* | LIMIT 30'); + expect(await discover.getHitCount()).to.be('30'); + }); + }); + + it('should not save the last URL if it was an ad-hoc data view', async function () { + await common.navigateToApp('discover'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await queryBar.setQuery('response:200'); + await queryBar.submitQuery(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await dataViews.createFromSearchBar({ name: 'logs', hasTimeField: true, adHoc: true }); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await queryBar.setQuery('response:503'); + await queryBar.submitQuery(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await appsMenu.openCollapsibleNav(); + await header.clickDashboard(); + await header.waitUntilLoadingHasFinished(); + + await appsMenu.openCollapsibleNav(); + await header.clickDiscover(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await retry.try(async () => { + expect(await queryBar.getQueryString()).to.be('response:200'); + expect(await discover.getHitCount()).to.be('12,891'); + }); + }); + + it('saves the last URL if the session was saved', async function () { + await common.navigateToApp('discover'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await dataViews.createFromSearchBar({ name: 'logs', hasTimeField: true, adHoc: true }); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await queryBar.setQuery('response:404'); + await queryBar.submitQuery(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + await discover.saveSearch('test'); + + await appsMenu.openCollapsibleNav(); + await header.clickDashboard(); + await header.waitUntilLoadingHasFinished(); + + await appsMenu.openCollapsibleNav(); + await header.clickDiscover(); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + await retry.try(async () => { + expect(await queryBar.getQueryString()).to.be('response:404'); + expect(await discover.getHitCount()).to.be('696'); + expect(await discover.getSavedSearchTitle()).to.be('test'); + }); + }); + }); +} diff --git a/test/functional/apps/discover/group8/index.ts b/test/functional/apps/discover/group8/index.ts index 46d5040fee298..59b8a948b59f4 100644 --- a/test/functional/apps/discover/group8/index.ts +++ b/test/functional/apps/discover/group8/index.ts @@ -24,5 +24,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_default_route')); loadTestFile(require.resolve('./_flyouts')); + loadTestFile(require.resolve('./_sidenav_link')); }); } diff --git a/test/functional/apps/management/data_views/_field_formatter.ts b/test/functional/apps/management/data_views/_field_formatter.ts index bd88d96f9700a..94f0b671490f6 100644 --- a/test/functional/apps/management/data_views/_field_formatter.ts +++ b/test/functional/apps/management/data_views/_field_formatter.ts @@ -315,6 +315,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // check available formats for ES_FIELD_TYPES.BOOLEAN expectFormatterTypes: [ FIELD_FORMAT_IDS.BOOLEAN, + FIELD_FORMAT_IDS.COLOR, FIELD_FORMAT_IDS.STATIC_LOOKUP, FIELD_FORMAT_IDS.STRING, FIELD_FORMAT_IDS.URL, diff --git a/tsconfig.base.json b/tsconfig.base.json index 6daea879e4151..de3155031aadf 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -16,10 +16,12 @@ "@kbn/advanced-settings-plugin/*": ["src/plugins/advanced_settings/*"], "@kbn/ai-assistant": ["x-pack/packages/kbn-ai-assistant"], "@kbn/ai-assistant/*": ["x-pack/packages/kbn-ai-assistant/*"], - "@kbn/ai-assistant-common": ["x-pack/packages/kbn-ai-assistant-common"], - "@kbn/ai-assistant-common/*": ["x-pack/packages/kbn-ai-assistant-common/*"], - "@kbn/ai-assistant-management-plugin": ["src/plugins/ai_assistant_management/selection"], - "@kbn/ai-assistant-management-plugin/*": ["src/plugins/ai_assistant_management/selection/*"], + "@kbn/ai-assistant-common": ["x-pack/platform/packages/shared/ai-assistant/common"], + "@kbn/ai-assistant-common/*": ["x-pack/platform/packages/shared/ai-assistant/common/*"], + "@kbn/ai-assistant-icon": ["x-pack/platform/packages/shared/ai-assistant/icon"], + "@kbn/ai-assistant-icon/*": ["x-pack/platform/packages/shared/ai-assistant/icon/*"], + "@kbn/ai-assistant-management-plugin": ["src/platform/plugins/shared/ai_assistant_management/selection"], + "@kbn/ai-assistant-management-plugin/*": ["src/platform/plugins/shared/ai_assistant_management/selection/*"], "@kbn/aiops-change-point-detection": ["x-pack/platform/packages/private/ml/aiops_change_point_detection"], "@kbn/aiops-change-point-detection/*": ["x-pack/platform/packages/private/ml/aiops_change_point_detection/*"], "@kbn/aiops-common": ["x-pack/platform/packages/shared/ml/aiops_common"], @@ -100,8 +102,8 @@ "@kbn/asset-inventory-plugin/*": ["x-pack/plugins/asset_inventory/*"], "@kbn/audit-log-plugin": ["x-pack/test/security_api_integration/plugins/audit_log"], "@kbn/audit-log-plugin/*": ["x-pack/test/security_api_integration/plugins/audit_log/*"], - "@kbn/avc-banner": ["packages/kbn-avc-banner"], - "@kbn/avc-banner/*": ["packages/kbn-avc-banner/*"], + "@kbn/avc-banner": ["src/platform/packages/shared/kbn-avc-banner"], + "@kbn/avc-banner/*": ["src/platform/packages/shared/kbn-avc-banner/*"], "@kbn/axe-config": ["packages/kbn-axe-config"], "@kbn/axe-config/*": ["packages/kbn-axe-config/*"], "@kbn/babel-preset": ["packages/kbn-babel-preset"], @@ -136,8 +138,8 @@ "@kbn/cases-plugin/*": ["x-pack/plugins/cases/*"], "@kbn/cbor": ["packages/kbn-cbor"], "@kbn/cbor/*": ["packages/kbn-cbor/*"], - "@kbn/cell-actions": ["packages/kbn-cell-actions"], - "@kbn/cell-actions/*": ["packages/kbn-cell-actions/*"], + "@kbn/cell-actions": ["src/platform/packages/shared/kbn-cell-actions"], + "@kbn/cell-actions/*": ["src/platform/packages/shared/kbn-cell-actions/*"], "@kbn/chart-expressions-common": ["src/plugins/chart_expressions/common"], "@kbn/chart-expressions-common/*": ["src/plugins/chart_expressions/common/*"], "@kbn/chart-icons": ["packages/kbn-chart-icons"], @@ -162,8 +164,8 @@ "@kbn/cloud/*": ["packages/cloud/*"], "@kbn/cloud-chat-plugin": ["x-pack/plugins/cloud_integrations/cloud_chat"], "@kbn/cloud-chat-plugin/*": ["x-pack/plugins/cloud_integrations/cloud_chat/*"], - "@kbn/cloud-data-migration-plugin": ["x-pack/plugins/cloud_integrations/cloud_data_migration"], - "@kbn/cloud-data-migration-plugin/*": ["x-pack/plugins/cloud_integrations/cloud_data_migration/*"], + "@kbn/cloud-data-migration-plugin": ["x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration"], + "@kbn/cloud-data-migration-plugin/*": ["x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/*"], "@kbn/cloud-defend-plugin": ["x-pack/plugins/cloud_defend"], "@kbn/cloud-defend-plugin/*": ["x-pack/plugins/cloud_defend/*"], "@kbn/cloud-experiments-plugin": ["x-pack/plugins/cloud_integrations/cloud_experiments"], @@ -198,8 +200,8 @@ "@kbn/config-mocks/*": ["packages/kbn-config-mocks/*"], "@kbn/config-schema": ["packages/kbn-config-schema"], "@kbn/config-schema/*": ["packages/kbn-config-schema/*"], - "@kbn/console-plugin": ["src/plugins/console"], - "@kbn/console-plugin/*": ["src/plugins/console/*"], + "@kbn/console-plugin": ["src/platform/plugins/shared/console"], + "@kbn/console-plugin/*": ["src/platform/plugins/shared/console/*"], "@kbn/content-management-content-editor": ["packages/content-management/content_editor"], "@kbn/content-management-content-editor/*": ["packages/content-management/content_editor/*"], "@kbn/content-management-content-insights-public": ["packages/content-management/content_insights/content_insights_public"], @@ -680,8 +682,8 @@ "@kbn/core-user-settings-server-internal/*": ["packages/core/user-settings/core-user-settings-server-internal/*"], "@kbn/core-user-settings-server-mocks": ["packages/core/user-settings/core-user-settings-server-mocks"], "@kbn/core-user-settings-server-mocks/*": ["packages/core/user-settings/core-user-settings-server-mocks/*"], - "@kbn/cross-cluster-replication-plugin": ["x-pack/plugins/cross_cluster_replication"], - "@kbn/cross-cluster-replication-plugin/*": ["x-pack/plugins/cross_cluster_replication/*"], + "@kbn/cross-cluster-replication-plugin": ["x-pack/platform/plugins/private/cross_cluster_replication"], + "@kbn/cross-cluster-replication-plugin/*": ["x-pack/platform/plugins/private/cross_cluster_replication/*"], "@kbn/crypto": ["packages/kbn-crypto"], "@kbn/crypto/*": ["packages/kbn-crypto/*"], "@kbn/crypto-browser": ["packages/kbn-crypto-browser"], @@ -700,8 +702,8 @@ "@kbn/dashboard-enhanced-plugin/*": ["x-pack/plugins/dashboard_enhanced/*"], "@kbn/dashboard-plugin": ["src/plugins/dashboard"], "@kbn/dashboard-plugin/*": ["src/plugins/dashboard/*"], - "@kbn/data-forge": ["x-pack/packages/kbn-data-forge"], - "@kbn/data-forge/*": ["x-pack/packages/kbn-data-forge/*"], + "@kbn/data-forge": ["x-pack/platform/packages/shared/kbn-data-forge"], + "@kbn/data-forge/*": ["x-pack/platform/packages/shared/kbn-data-forge/*"], "@kbn/data-plugin": ["src/plugins/data"], "@kbn/data-plugin/*": ["src/plugins/data/*"], "@kbn/data-quality-plugin": ["x-pack/plugins/data_quality"], @@ -710,10 +712,10 @@ "@kbn/data-search-plugin/*": ["test/plugin_functional/plugins/data_search/*"], "@kbn/data-service": ["packages/kbn-data-service"], "@kbn/data-service/*": ["packages/kbn-data-service/*"], - "@kbn/data-stream-adapter": ["packages/kbn-data-stream-adapter"], - "@kbn/data-stream-adapter/*": ["packages/kbn-data-stream-adapter/*"], - "@kbn/data-usage-plugin": ["x-pack/plugins/data_usage"], - "@kbn/data-usage-plugin/*": ["x-pack/plugins/data_usage/*"], + "@kbn/data-stream-adapter": ["x-pack/solutions/security/packages/data-stream-adapter"], + "@kbn/data-stream-adapter/*": ["x-pack/solutions/security/packages/data-stream-adapter/*"], + "@kbn/data-usage-plugin": ["x-pack/platform/plugins/private/data_usage"], + "@kbn/data-usage-plugin/*": ["x-pack/platform/plugins/private/data_usage/*"], "@kbn/data-view-editor-plugin": ["src/plugins/data_view_editor"], "@kbn/data-view-editor-plugin/*": ["src/plugins/data_view_editor/*"], "@kbn/data-view-field-editor-example-plugin": ["examples/data_view_field_editor_example"], @@ -734,16 +736,16 @@ "@kbn/datemath/*": ["packages/kbn-datemath/*"], "@kbn/deeplinks-analytics": ["packages/deeplinks/analytics"], "@kbn/deeplinks-analytics/*": ["packages/deeplinks/analytics/*"], - "@kbn/deeplinks-devtools": ["packages/deeplinks/devtools"], - "@kbn/deeplinks-devtools/*": ["packages/deeplinks/devtools/*"], + "@kbn/deeplinks-devtools": ["src/platform/packages/shared/deeplinks/devtools"], + "@kbn/deeplinks-devtools/*": ["src/platform/packages/shared/deeplinks/devtools/*"], "@kbn/deeplinks-fleet": ["packages/deeplinks/fleet"], "@kbn/deeplinks-fleet/*": ["packages/deeplinks/fleet/*"], - "@kbn/deeplinks-management": ["packages/deeplinks/management"], - "@kbn/deeplinks-management/*": ["packages/deeplinks/management/*"], + "@kbn/deeplinks-management": ["src/platform/packages/shared/deeplinks/management"], + "@kbn/deeplinks-management/*": ["src/platform/packages/shared/deeplinks/management/*"], "@kbn/deeplinks-ml": ["src/platform/packages/shared/deeplinks/ml"], "@kbn/deeplinks-ml/*": ["src/platform/packages/shared/deeplinks/ml/*"], - "@kbn/deeplinks-observability": ["packages/deeplinks/observability"], - "@kbn/deeplinks-observability/*": ["packages/deeplinks/observability/*"], + "@kbn/deeplinks-observability": ["src/platform/packages/shared/deeplinks/observability"], + "@kbn/deeplinks-observability/*": ["src/platform/packages/shared/deeplinks/observability/*"], "@kbn/deeplinks-search": ["packages/deeplinks/search"], "@kbn/deeplinks-search/*": ["packages/deeplinks/search/*"], "@kbn/deeplinks-security": ["packages/deeplinks/security"], @@ -752,10 +754,10 @@ "@kbn/deeplinks-shared/*": ["packages/deeplinks/shared/*"], "@kbn/default-nav-analytics": ["packages/default-nav/analytics"], "@kbn/default-nav-analytics/*": ["packages/default-nav/analytics/*"], - "@kbn/default-nav-devtools": ["packages/default-nav/devtools"], - "@kbn/default-nav-devtools/*": ["packages/default-nav/devtools/*"], - "@kbn/default-nav-management": ["packages/default-nav/management"], - "@kbn/default-nav-management/*": ["packages/default-nav/management/*"], + "@kbn/default-nav-devtools": ["src/platform/packages/private/default-nav/devtools"], + "@kbn/default-nav-devtools/*": ["src/platform/packages/private/default-nav/devtools/*"], + "@kbn/default-nav-management": ["src/platform/packages/private/default-nav/management"], + "@kbn/default-nav-management/*": ["src/platform/packages/private/default-nav/management/*"], "@kbn/default-nav-ml": ["src/platform/packages/private/default-nav/ml"], "@kbn/default-nav-ml/*": ["src/platform/packages/private/default-nav/ml/*"], "@kbn/dependency-ownership": ["packages/kbn-dependency-ownership"], @@ -768,8 +770,8 @@ "@kbn/dev-cli-runner/*": ["packages/kbn-dev-cli-runner/*"], "@kbn/dev-proc-runner": ["packages/kbn-dev-proc-runner"], "@kbn/dev-proc-runner/*": ["packages/kbn-dev-proc-runner/*"], - "@kbn/dev-tools-plugin": ["src/plugins/dev_tools"], - "@kbn/dev-tools-plugin/*": ["src/plugins/dev_tools/*"], + "@kbn/dev-tools-plugin": ["src/platform/plugins/shared/dev_tools"], + "@kbn/dev-tools-plugin/*": ["src/platform/plugins/shared/dev_tools/*"], "@kbn/dev-utils": ["packages/kbn-dev-utils"], "@kbn/dev-utils/*": ["packages/kbn-dev-utils/*"], "@kbn/developer-examples-plugin": ["examples/developer_examples"], @@ -794,18 +796,18 @@ "@kbn/dom-drag-drop/*": ["packages/kbn-dom-drag-drop/*"], "@kbn/ebt-tools": ["packages/kbn-ebt-tools"], "@kbn/ebt-tools/*": ["packages/kbn-ebt-tools/*"], - "@kbn/ecs-data-quality-dashboard": ["x-pack/packages/security-solution/ecs_data_quality_dashboard"], - "@kbn/ecs-data-quality-dashboard/*": ["x-pack/packages/security-solution/ecs_data_quality_dashboard/*"], - "@kbn/ecs-data-quality-dashboard-plugin": ["x-pack/plugins/ecs_data_quality_dashboard"], - "@kbn/ecs-data-quality-dashboard-plugin/*": ["x-pack/plugins/ecs_data_quality_dashboard/*"], + "@kbn/ecs-data-quality-dashboard": ["x-pack/solutions/security/packages/ecs_data_quality_dashboard"], + "@kbn/ecs-data-quality-dashboard/*": ["x-pack/solutions/security/packages/ecs_data_quality_dashboard/*"], + "@kbn/ecs-data-quality-dashboard-plugin": ["x-pack/solutions/security/plugins/ecs_data_quality_dashboard"], + "@kbn/ecs-data-quality-dashboard-plugin/*": ["x-pack/solutions/security/plugins/ecs_data_quality_dashboard/*"], "@kbn/elastic-agent-utils": ["packages/kbn-elastic-agent-utils"], "@kbn/elastic-agent-utils/*": ["packages/kbn-elastic-agent-utils/*"], - "@kbn/elastic-assistant": ["x-pack/packages/kbn-elastic-assistant"], - "@kbn/elastic-assistant/*": ["x-pack/packages/kbn-elastic-assistant/*"], - "@kbn/elastic-assistant-common": ["x-pack/packages/kbn-elastic-assistant-common"], - "@kbn/elastic-assistant-common/*": ["x-pack/packages/kbn-elastic-assistant-common/*"], - "@kbn/elastic-assistant-plugin": ["x-pack/plugins/elastic_assistant"], - "@kbn/elastic-assistant-plugin/*": ["x-pack/plugins/elastic_assistant/*"], + "@kbn/elastic-assistant": ["x-pack/platform/packages/shared/kbn-elastic-assistant"], + "@kbn/elastic-assistant/*": ["x-pack/platform/packages/shared/kbn-elastic-assistant/*"], + "@kbn/elastic-assistant-common": ["x-pack/platform/packages/shared/kbn-elastic-assistant-common"], + "@kbn/elastic-assistant-common/*": ["x-pack/platform/packages/shared/kbn-elastic-assistant-common/*"], + "@kbn/elastic-assistant-plugin": ["x-pack/solutions/security/plugins/elastic_assistant"], + "@kbn/elastic-assistant-plugin/*": ["x-pack/solutions/security/plugins/elastic_assistant/*"], "@kbn/elasticsearch-client-plugin": ["test/plugin_functional/plugins/elasticsearch_client_plugin"], "@kbn/elasticsearch-client-plugin/*": ["test/plugin_functional/plugins/elasticsearch_client_plugin/*"], "@kbn/elasticsearch-client-xpack-plugin": ["x-pack/test/plugin_api_integration/plugins/elasticsearch_client"], @@ -844,8 +846,8 @@ "@kbn/es-query/*": ["packages/kbn-es-query/*"], "@kbn/es-types": ["packages/kbn-es-types"], "@kbn/es-types/*": ["packages/kbn-es-types/*"], - "@kbn/es-ui-shared-plugin": ["src/plugins/es_ui_shared"], - "@kbn/es-ui-shared-plugin/*": ["src/plugins/es_ui_shared/*"], + "@kbn/es-ui-shared-plugin": ["src/platform/plugins/shared/es_ui_shared"], + "@kbn/es-ui-shared-plugin/*": ["src/platform/plugins/shared/es_ui_shared/*"], "@kbn/eslint-config": ["packages/kbn-eslint-config"], "@kbn/eslint-config/*": ["packages/kbn-eslint-config/*"], "@kbn/eslint-plugin-disable": ["packages/kbn-eslint-plugin-disable"], @@ -892,14 +894,14 @@ "@kbn/event-log-fixture-plugin/*": ["x-pack/test/plugin_api_integration/plugins/event_log/*"], "@kbn/event-log-plugin": ["x-pack/plugins/event_log"], "@kbn/event-log-plugin/*": ["x-pack/plugins/event_log/*"], - "@kbn/expandable-flyout": ["packages/kbn-expandable-flyout"], - "@kbn/expandable-flyout/*": ["packages/kbn-expandable-flyout/*"], + "@kbn/expandable-flyout": ["x-pack/solutions/security/packages/expandable-flyout"], + "@kbn/expandable-flyout/*": ["x-pack/solutions/security/packages/expandable-flyout/*"], "@kbn/expect": ["packages/kbn-expect"], "@kbn/expect/*": ["packages/kbn-expect/*"], "@kbn/exploratory-view-example-plugin": ["x-pack/examples/exploratory_view_example"], "@kbn/exploratory-view-example-plugin/*": ["x-pack/examples/exploratory_view_example/*"], - "@kbn/exploratory-view-plugin": ["x-pack/plugins/observability_solution/exploratory_view"], - "@kbn/exploratory-view-plugin/*": ["x-pack/plugins/observability_solution/exploratory_view/*"], + "@kbn/exploratory-view-plugin": ["x-pack/solutions/observability/plugins/exploratory_view"], + "@kbn/exploratory-view-plugin/*": ["x-pack/solutions/observability/plugins/exploratory_view/*"], "@kbn/expression-error-plugin": ["src/plugins/expression_error"], "@kbn/expression-error-plugin/*": ["src/plugins/expression_error/*"], "@kbn/expression-gauge-plugin": ["src/plugins/chart_expressions/expression_gauge"], @@ -1008,8 +1010,8 @@ "@kbn/grid-example-plugin/*": ["examples/grid_example/*"], "@kbn/grid-layout": ["packages/kbn-grid-layout"], "@kbn/grid-layout/*": ["packages/kbn-grid-layout/*"], - "@kbn/grokdebugger-plugin": ["x-pack/plugins/grokdebugger"], - "@kbn/grokdebugger-plugin/*": ["x-pack/plugins/grokdebugger/*"], + "@kbn/grokdebugger-plugin": ["x-pack/platform/plugins/private/grokdebugger"], + "@kbn/grokdebugger-plugin/*": ["x-pack/platform/plugins/private/grokdebugger/*"], "@kbn/grouping": ["packages/kbn-grouping"], "@kbn/grouping/*": ["packages/kbn-grouping/*"], "@kbn/guided-onboarding": ["packages/kbn-guided-onboarding"], @@ -1048,16 +1050,16 @@ "@kbn/import-locator/*": ["packages/kbn-import-locator/*"], "@kbn/import-resolver": ["packages/kbn-import-resolver"], "@kbn/import-resolver/*": ["packages/kbn-import-resolver/*"], - "@kbn/index-adapter": ["packages/kbn-index-adapter"], - "@kbn/index-adapter/*": ["packages/kbn-index-adapter/*"], - "@kbn/index-lifecycle-management-common-shared": ["x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared"], - "@kbn/index-lifecycle-management-common-shared/*": ["x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/*"], - "@kbn/index-lifecycle-management-plugin": ["x-pack/plugins/index_lifecycle_management"], - "@kbn/index-lifecycle-management-plugin/*": ["x-pack/plugins/index_lifecycle_management/*"], + "@kbn/index-adapter": ["x-pack/solutions/security/packages/index-adapter"], + "@kbn/index-adapter/*": ["x-pack/solutions/security/packages/index-adapter/*"], + "@kbn/index-lifecycle-management-common-shared": ["x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared"], + "@kbn/index-lifecycle-management-common-shared/*": ["x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/*"], + "@kbn/index-lifecycle-management-plugin": ["x-pack/platform/plugins/private/index_lifecycle_management"], + "@kbn/index-lifecycle-management-plugin/*": ["x-pack/platform/plugins/private/index_lifecycle_management/*"], "@kbn/index-management-plugin": ["x-pack/plugins/index_management"], "@kbn/index-management-plugin/*": ["x-pack/plugins/index_management/*"], - "@kbn/index-management-shared-types": ["x-pack/packages/index-management/index_management_shared_types"], - "@kbn/index-management-shared-types/*": ["x-pack/packages/index-management/index_management_shared_types/*"], + "@kbn/index-management-shared-types": ["x-pack/platform/packages/shared/index-management/index_management_shared_types"], + "@kbn/index-management-shared-types/*": ["x-pack/platform/packages/shared/index-management/index_management_shared_types/*"], "@kbn/index-patterns-test-plugin": ["test/plugin_functional/plugins/index_patterns"], "@kbn/index-patterns-test-plugin/*": ["test/plugin_functional/plugins/index_patterns/*"], "@kbn/inference_integration_flyout": ["x-pack/platform/packages/private/ml/inference_integration_flyout"], @@ -1066,8 +1068,8 @@ "@kbn/inference-common/*": ["x-pack/platform/packages/shared/ai-infra/inference-common/*"], "@kbn/inference-plugin": ["x-pack/platform/plugins/shared/inference"], "@kbn/inference-plugin/*": ["x-pack/platform/plugins/shared/inference/*"], - "@kbn/infra-forge": ["x-pack/packages/kbn-infra-forge"], - "@kbn/infra-forge/*": ["x-pack/packages/kbn-infra-forge/*"], + "@kbn/infra-forge": ["x-pack/platform/packages/private/kbn-infra-forge"], + "@kbn/infra-forge/*": ["x-pack/platform/packages/private/kbn-infra-forge/*"], "@kbn/infra-plugin": ["x-pack/plugins/observability_solution/infra"], "@kbn/infra-plugin/*": ["x-pack/plugins/observability_solution/infra/*"], "@kbn/ingest-pipelines-plugin": ["x-pack/plugins/ingest_pipelines"], @@ -1076,8 +1078,8 @@ "@kbn/input-control-vis-plugin/*": ["src/plugins/input_control_vis/*"], "@kbn/inspector-plugin": ["src/plugins/inspector"], "@kbn/inspector-plugin/*": ["src/plugins/inspector/*"], - "@kbn/integration-assistant-plugin": ["x-pack/plugins/integration_assistant"], - "@kbn/integration-assistant-plugin/*": ["x-pack/plugins/integration_assistant/*"], + "@kbn/integration-assistant-plugin": ["x-pack/platform/plugins/shared/integration_assistant"], + "@kbn/integration-assistant-plugin/*": ["x-pack/platform/plugins/shared/integration_assistant/*"], "@kbn/interactive-setup-plugin": ["src/plugins/interactive_setup"], "@kbn/interactive-setup-plugin/*": ["src/plugins/interactive_setup/*"], "@kbn/interactive-setup-test-endpoints-plugin": ["test/interactive_setup_api_integration/plugins/test_endpoints"], @@ -1088,14 +1090,14 @@ "@kbn/inventory-e2e/*": ["x-pack/plugins/observability_solution/inventory/e2e/*"], "@kbn/inventory-plugin": ["x-pack/plugins/observability_solution/inventory"], "@kbn/inventory-plugin/*": ["x-pack/plugins/observability_solution/inventory/*"], - "@kbn/investigate-app-plugin": ["x-pack/plugins/observability_solution/investigate_app"], - "@kbn/investigate-app-plugin/*": ["x-pack/plugins/observability_solution/investigate_app/*"], - "@kbn/investigate-plugin": ["x-pack/plugins/observability_solution/investigate"], - "@kbn/investigate-plugin/*": ["x-pack/plugins/observability_solution/investigate/*"], - "@kbn/investigation-shared": ["packages/kbn-investigation-shared"], - "@kbn/investigation-shared/*": ["packages/kbn-investigation-shared/*"], - "@kbn/io-ts-utils": ["packages/kbn-io-ts-utils"], - "@kbn/io-ts-utils/*": ["packages/kbn-io-ts-utils/*"], + "@kbn/investigate-app-plugin": ["x-pack/solutions/observability/plugins/investigate_app"], + "@kbn/investigate-app-plugin/*": ["x-pack/solutions/observability/plugins/investigate_app/*"], + "@kbn/investigate-plugin": ["x-pack/solutions/observability/plugins/investigate"], + "@kbn/investigate-plugin/*": ["x-pack/solutions/observability/plugins/investigate/*"], + "@kbn/investigation-shared": ["x-pack/solutions/observability/packages/kbn-investigation-shared"], + "@kbn/investigation-shared/*": ["x-pack/solutions/observability/packages/kbn-investigation-shared/*"], + "@kbn/io-ts-utils": ["src/platform/packages/shared/kbn-io-ts-utils"], + "@kbn/io-ts-utils/*": ["src/platform/packages/shared/kbn-io-ts-utils/*"], "@kbn/ipynb": ["packages/kbn-ipynb"], "@kbn/ipynb/*": ["packages/kbn-ipynb/*"], "@kbn/item-buffer": ["packages/kbn-item-buffer"], @@ -1132,8 +1134,8 @@ "@kbn/kibana-utils-plugin/*": ["src/plugins/kibana_utils/*"], "@kbn/kubernetes-security-plugin": ["x-pack/plugins/kubernetes_security"], "@kbn/kubernetes-security-plugin/*": ["x-pack/plugins/kubernetes_security/*"], - "@kbn/langchain": ["x-pack/packages/kbn-langchain"], - "@kbn/langchain/*": ["x-pack/packages/kbn-langchain/*"], + "@kbn/langchain": ["x-pack/platform/packages/shared/kbn-langchain"], + "@kbn/langchain/*": ["x-pack/platform/packages/shared/kbn-langchain/*"], "@kbn/language-documentation": ["src/platform/packages/private/kbn-language-documentation"], "@kbn/language-documentation/*": ["src/platform/packages/private/kbn-language-documentation/*"], "@kbn/lens-config-builder-example-plugin": ["x-pack/examples/lens_config_builder_example"], @@ -1146,10 +1148,10 @@ "@kbn/lens-inline-editing-example-plugin/*": ["x-pack/examples/lens_embeddable_inline_editing_example/*"], "@kbn/lens-plugin": ["x-pack/plugins/lens"], "@kbn/lens-plugin/*": ["x-pack/plugins/lens/*"], - "@kbn/license-api-guard-plugin": ["x-pack/plugins/license_api_guard"], - "@kbn/license-api-guard-plugin/*": ["x-pack/plugins/license_api_guard/*"], - "@kbn/license-management-plugin": ["x-pack/plugins/license_management"], - "@kbn/license-management-plugin/*": ["x-pack/plugins/license_management/*"], + "@kbn/license-api-guard-plugin": ["x-pack/platform/plugins/private/license_api_guard"], + "@kbn/license-api-guard-plugin/*": ["x-pack/platform/plugins/private/license_api_guard/*"], + "@kbn/license-management-plugin": ["x-pack/platform/plugins/shared/license_management"], + "@kbn/license-management-plugin/*": ["x-pack/platform/plugins/shared/license_management/*"], "@kbn/licensing-plugin": ["x-pack/plugins/licensing"], "@kbn/licensing-plugin/*": ["x-pack/plugins/licensing/*"], "@kbn/links-plugin": ["src/plugins/links"], @@ -1184,30 +1186,30 @@ "@kbn/managed-vscode-config/*": ["packages/kbn-managed-vscode-config/*"], "@kbn/managed-vscode-config-cli": ["packages/kbn-managed-vscode-config-cli"], "@kbn/managed-vscode-config-cli/*": ["packages/kbn-managed-vscode-config-cli/*"], - "@kbn/management-cards-navigation": ["packages/kbn-management/cards_navigation"], - "@kbn/management-cards-navigation/*": ["packages/kbn-management/cards_navigation/*"], - "@kbn/management-plugin": ["src/plugins/management"], - "@kbn/management-plugin/*": ["src/plugins/management/*"], - "@kbn/management-settings-application": ["packages/kbn-management/settings/application"], - "@kbn/management-settings-application/*": ["packages/kbn-management/settings/application/*"], - "@kbn/management-settings-components-field-category": ["packages/kbn-management/settings/components/field_category"], - "@kbn/management-settings-components-field-category/*": ["packages/kbn-management/settings/components/field_category/*"], - "@kbn/management-settings-components-field-input": ["packages/kbn-management/settings/components/field_input"], - "@kbn/management-settings-components-field-input/*": ["packages/kbn-management/settings/components/field_input/*"], - "@kbn/management-settings-components-field-row": ["packages/kbn-management/settings/components/field_row"], - "@kbn/management-settings-components-field-row/*": ["packages/kbn-management/settings/components/field_row/*"], - "@kbn/management-settings-components-form": ["packages/kbn-management/settings/components/form"], - "@kbn/management-settings-components-form/*": ["packages/kbn-management/settings/components/form/*"], - "@kbn/management-settings-field-definition": ["packages/kbn-management/settings/field_definition"], - "@kbn/management-settings-field-definition/*": ["packages/kbn-management/settings/field_definition/*"], + "@kbn/management-cards-navigation": ["src/platform/packages/shared/kbn-management/cards_navigation"], + "@kbn/management-cards-navigation/*": ["src/platform/packages/shared/kbn-management/cards_navigation/*"], + "@kbn/management-plugin": ["src/platform/plugins/shared/management"], + "@kbn/management-plugin/*": ["src/platform/plugins/shared/management/*"], + "@kbn/management-settings-application": ["src/platform/packages/private/kbn-management/settings/application"], + "@kbn/management-settings-application/*": ["src/platform/packages/private/kbn-management/settings/application/*"], + "@kbn/management-settings-components-field-category": ["src/platform/packages/private/kbn-management/settings/components/field_category"], + "@kbn/management-settings-components-field-category/*": ["src/platform/packages/private/kbn-management/settings/components/field_category/*"], + "@kbn/management-settings-components-field-input": ["src/platform/packages/shared/kbn-management/settings/components/field_input"], + "@kbn/management-settings-components-field-input/*": ["src/platform/packages/shared/kbn-management/settings/components/field_input/*"], + "@kbn/management-settings-components-field-row": ["src/platform/packages/shared/kbn-management/settings/components/field_row"], + "@kbn/management-settings-components-field-row/*": ["src/platform/packages/shared/kbn-management/settings/components/field_row/*"], + "@kbn/management-settings-components-form": ["src/platform/packages/private/kbn-management/settings/components/form"], + "@kbn/management-settings-components-form/*": ["src/platform/packages/private/kbn-management/settings/components/form/*"], + "@kbn/management-settings-field-definition": ["src/platform/packages/shared/kbn-management/settings/field_definition"], + "@kbn/management-settings-field-definition/*": ["src/platform/packages/shared/kbn-management/settings/field_definition/*"], "@kbn/management-settings-ids": ["packages/kbn-management/settings/setting_ids"], "@kbn/management-settings-ids/*": ["packages/kbn-management/settings/setting_ids/*"], "@kbn/management-settings-section-registry": ["packages/kbn-management/settings/section_registry"], "@kbn/management-settings-section-registry/*": ["packages/kbn-management/settings/section_registry/*"], - "@kbn/management-settings-types": ["packages/kbn-management/settings/types"], - "@kbn/management-settings-types/*": ["packages/kbn-management/settings/types/*"], - "@kbn/management-settings-utilities": ["packages/kbn-management/settings/utilities"], - "@kbn/management-settings-utilities/*": ["packages/kbn-management/settings/utilities/*"], + "@kbn/management-settings-types": ["src/platform/packages/shared/kbn-management/settings/types"], + "@kbn/management-settings-types/*": ["src/platform/packages/shared/kbn-management/settings/types/*"], + "@kbn/management-settings-utilities": ["src/platform/packages/shared/kbn-management/settings/utilities"], + "@kbn/management-settings-utilities/*": ["src/platform/packages/shared/kbn-management/settings/utilities/*"], "@kbn/management-storybook-config": ["packages/kbn-management/storybook/config"], "@kbn/management-storybook-config/*": ["packages/kbn-management/storybook/config/*"], "@kbn/management-test-plugin": ["test/plugin_functional/plugins/management_test_plugin"], @@ -1316,22 +1318,26 @@ "@kbn/object-versioning/*": ["packages/kbn-object-versioning/*"], "@kbn/object-versioning-utils": ["packages/kbn-object-versioning-utils"], "@kbn/object-versioning-utils/*": ["packages/kbn-object-versioning-utils/*"], - "@kbn/observability-ai-assistant-app-plugin": ["x-pack/plugins/observability_solution/observability_ai_assistant_app"], - "@kbn/observability-ai-assistant-app-plugin/*": ["x-pack/plugins/observability_solution/observability_ai_assistant_app/*"], - "@kbn/observability-ai-assistant-management-plugin": ["x-pack/plugins/observability_solution/observability_ai_assistant_management"], - "@kbn/observability-ai-assistant-management-plugin/*": ["x-pack/plugins/observability_solution/observability_ai_assistant_management/*"], - "@kbn/observability-ai-assistant-plugin": ["x-pack/plugins/observability_solution/observability_ai_assistant"], - "@kbn/observability-ai-assistant-plugin/*": ["x-pack/plugins/observability_solution/observability_ai_assistant/*"], - "@kbn/observability-alert-details": ["x-pack/packages/observability/alert_details"], - "@kbn/observability-alert-details/*": ["x-pack/packages/observability/alert_details/*"], - "@kbn/observability-alerting-rule-utils": ["x-pack/packages/observability/alerting_rule_utils"], - "@kbn/observability-alerting-rule-utils/*": ["x-pack/packages/observability/alerting_rule_utils/*"], - "@kbn/observability-alerting-test-data": ["x-pack/packages/observability/alerting_test_data"], - "@kbn/observability-alerting-test-data/*": ["x-pack/packages/observability/alerting_test_data/*"], + "@kbn/observability-ai-assistant-app-plugin": ["x-pack/solutions/observability/plugins/observability_ai_assistant_app"], + "@kbn/observability-ai-assistant-app-plugin/*": ["x-pack/solutions/observability/plugins/observability_ai_assistant_app/*"], + "@kbn/observability-ai-assistant-management-plugin": ["x-pack/solutions/observability/plugins/observability_ai_assistant_management"], + "@kbn/observability-ai-assistant-management-plugin/*": ["x-pack/solutions/observability/plugins/observability_ai_assistant_management/*"], + "@kbn/observability-ai-assistant-plugin": ["x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant"], + "@kbn/observability-ai-assistant-plugin/*": ["x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/*"], + "@kbn/observability-ai-common": ["x-pack/solutions/observability/packages/observability_ai/observability_ai_common"], + "@kbn/observability-ai-common/*": ["x-pack/solutions/observability/packages/observability_ai/observability_ai_common/*"], + "@kbn/observability-ai-server": ["x-pack/solutions/observability/packages/observability_ai/observability_ai_server"], + "@kbn/observability-ai-server/*": ["x-pack/solutions/observability/packages/observability_ai/observability_ai_server/*"], + "@kbn/observability-alert-details": ["x-pack/solutions/observability/packages/alert_details"], + "@kbn/observability-alert-details/*": ["x-pack/solutions/observability/packages/alert_details/*"], + "@kbn/observability-alerting-rule-utils": ["x-pack/platform/packages/shared/observability/alerting_rule_utils"], + "@kbn/observability-alerting-rule-utils/*": ["x-pack/platform/packages/shared/observability/alerting_rule_utils/*"], + "@kbn/observability-alerting-test-data": ["x-pack/solutions/observability/packages/alerting_test_data"], + "@kbn/observability-alerting-test-data/*": ["x-pack/solutions/observability/packages/alerting_test_data/*"], "@kbn/observability-fixtures-plugin": ["x-pack/test/cases_api_integration/common/plugins/observability"], "@kbn/observability-fixtures-plugin/*": ["x-pack/test/cases_api_integration/common/plugins/observability/*"], - "@kbn/observability-get-padded-alert-time-range-util": ["x-pack/packages/observability/get_padded_alert_time_range_util"], - "@kbn/observability-get-padded-alert-time-range-util/*": ["x-pack/packages/observability/get_padded_alert_time_range_util/*"], + "@kbn/observability-get-padded-alert-time-range-util": ["x-pack/solutions/observability/packages/get_padded_alert_time_range_util"], + "@kbn/observability-get-padded-alert-time-range-util/*": ["x-pack/solutions/observability/packages/get_padded_alert_time_range_util/*"], "@kbn/observability-logs-explorer-plugin": ["x-pack/plugins/observability_solution/observability_logs_explorer"], "@kbn/observability-logs-explorer-plugin/*": ["x-pack/plugins/observability_solution/observability_logs_explorer/*"], "@kbn/observability-logs-overview": ["x-pack/packages/observability/logs_overview"], @@ -1340,12 +1346,12 @@ "@kbn/observability-onboarding-e2e/*": ["x-pack/plugins/observability_solution/observability_onboarding/e2e/*"], "@kbn/observability-onboarding-plugin": ["x-pack/plugins/observability_solution/observability_onboarding"], "@kbn/observability-onboarding-plugin/*": ["x-pack/plugins/observability_solution/observability_onboarding/*"], - "@kbn/observability-plugin": ["x-pack/plugins/observability_solution/observability"], - "@kbn/observability-plugin/*": ["x-pack/plugins/observability_solution/observability/*"], + "@kbn/observability-plugin": ["x-pack/solutions/observability/plugins/observability"], + "@kbn/observability-plugin/*": ["x-pack/solutions/observability/plugins/observability/*"], "@kbn/observability-shared-plugin": ["x-pack/plugins/observability_solution/observability_shared"], "@kbn/observability-shared-plugin/*": ["x-pack/plugins/observability_solution/observability_shared/*"], - "@kbn/observability-synthetics-test-data": ["x-pack/packages/observability/synthetics_test_data"], - "@kbn/observability-synthetics-test-data/*": ["x-pack/packages/observability/synthetics_test_data/*"], + "@kbn/observability-synthetics-test-data": ["x-pack/solutions/observability/packages/synthetics_test_data"], + "@kbn/observability-synthetics-test-data/*": ["x-pack/solutions/observability/packages/synthetics_test_data/*"], "@kbn/observability-utils-browser": ["x-pack/packages/observability/observability_utils/observability_utils_browser"], "@kbn/observability-utils-browser/*": ["x-pack/packages/observability/observability_utils/observability_utils_browser/*"], "@kbn/observability-utils-common": ["x-pack/packages/observability/observability_utils/observability_utils_common"], @@ -1368,12 +1374,14 @@ "@kbn/optimizer-webpack-helpers/*": ["packages/kbn-optimizer-webpack-helpers/*"], "@kbn/osquery-io-ts-types": ["src/platform/packages/shared/kbn-osquery-io-ts-types"], "@kbn/osquery-io-ts-types/*": ["src/platform/packages/shared/kbn-osquery-io-ts-types/*"], - "@kbn/osquery-plugin": ["x-pack/plugins/osquery"], - "@kbn/osquery-plugin/*": ["x-pack/plugins/osquery/*"], + "@kbn/osquery-plugin": ["x-pack/platform/plugins/shared/osquery"], + "@kbn/osquery-plugin/*": ["x-pack/platform/plugins/shared/osquery/*"], "@kbn/paertial-results-example-plugin": ["examples/partial_results_example"], "@kbn/paertial-results-example-plugin/*": ["examples/partial_results_example/*"], - "@kbn/painless-lab-plugin": ["x-pack/plugins/painless_lab"], - "@kbn/painless-lab-plugin/*": ["x-pack/plugins/painless_lab/*"], + "@kbn/painless-lab-plugin": ["x-pack/platform/plugins/private/painless_lab"], + "@kbn/painless-lab-plugin/*": ["x-pack/platform/plugins/private/painless_lab/*"], + "@kbn/palettes": ["packages/kbn-palettes"], + "@kbn/palettes/*": ["packages/kbn-palettes/*"], "@kbn/panel-loader": ["packages/kbn-panel-loader"], "@kbn/panel-loader/*": ["packages/kbn-panel-loader/*"], "@kbn/peggy": ["packages/kbn-peggy"], @@ -1436,8 +1444,10 @@ "@kbn/react-mute-legacy-root-warning/*": ["packages/kbn-react-mute-legacy-root-warning/*"], "@kbn/recently-accessed": ["packages/kbn-recently-accessed"], "@kbn/recently-accessed/*": ["packages/kbn-recently-accessed/*"], - "@kbn/remote-clusters-plugin": ["x-pack/plugins/remote_clusters"], - "@kbn/remote-clusters-plugin/*": ["x-pack/plugins/remote_clusters/*"], + "@kbn/relocate": ["packages/kbn-relocate"], + "@kbn/relocate/*": ["packages/kbn-relocate/*"], + "@kbn/remote-clusters-plugin": ["x-pack/platform/plugins/private/remote_clusters"], + "@kbn/remote-clusters-plugin/*": ["x-pack/platform/plugins/private/remote_clusters/*"], "@kbn/rendering-plugin": ["test/plugin_functional/plugins/rendering_plugin"], "@kbn/rendering-plugin/*": ["test/plugin_functional/plugins/rendering_plugin/*"], "@kbn/repo-file-maps": ["packages/kbn-repo-file-maps"], @@ -1494,10 +1504,10 @@ "@kbn/response-stream-plugin/*": ["examples/response_stream/*"], "@kbn/rison": ["packages/kbn-rison"], "@kbn/rison/*": ["packages/kbn-rison/*"], - "@kbn/rollup": ["x-pack/packages/rollup"], - "@kbn/rollup/*": ["x-pack/packages/rollup/*"], - "@kbn/rollup-plugin": ["x-pack/plugins/rollup"], - "@kbn/rollup-plugin/*": ["x-pack/plugins/rollup/*"], + "@kbn/rollup": ["x-pack/platform/packages/private/rollup"], + "@kbn/rollup/*": ["x-pack/platform/packages/private/rollup/*"], + "@kbn/rollup-plugin": ["x-pack/platform/plugins/private/rollup"], + "@kbn/rollup-plugin/*": ["x-pack/platform/plugins/private/rollup/*"], "@kbn/router-to-openapispec": ["packages/kbn-router-to-openapispec"], "@kbn/router-to-openapispec/*": ["packages/kbn-router-to-openapispec/*"], "@kbn/router-utils": ["packages/kbn-router-utils"], @@ -1510,8 +1520,8 @@ "@kbn/rule-data-utils/*": ["packages/kbn-rule-data-utils/*"], "@kbn/rule-registry-plugin": ["x-pack/plugins/rule_registry"], "@kbn/rule-registry-plugin/*": ["x-pack/plugins/rule_registry/*"], - "@kbn/runtime-fields-plugin": ["x-pack/plugins/runtime_fields"], - "@kbn/runtime-fields-plugin/*": ["x-pack/plugins/runtime_fields/*"], + "@kbn/runtime-fields-plugin": ["x-pack/platform/plugins/private/runtime_fields"], + "@kbn/runtime-fields-plugin/*": ["x-pack/platform/plugins/private/runtime_fields/*"], "@kbn/safer-lodash-set": ["packages/kbn-safer-lodash-set"], "@kbn/safer-lodash-set/*": ["packages/kbn-safer-lodash-set/*"], "@kbn/saml-provider-plugin": ["x-pack/test/security_api_integration/plugins/saml_provider"], @@ -1598,8 +1608,8 @@ "@kbn/search-shared-ui/*": ["x-pack/packages/search/shared_ui/*"], "@kbn/search-types": ["packages/kbn-search-types"], "@kbn/search-types/*": ["packages/kbn-search-types/*"], - "@kbn/searchprofiler-plugin": ["x-pack/plugins/searchprofiler"], - "@kbn/searchprofiler-plugin/*": ["x-pack/plugins/searchprofiler/*"], + "@kbn/searchprofiler-plugin": ["x-pack/platform/plugins/shared/searchprofiler"], + "@kbn/searchprofiler-plugin/*": ["x-pack/platform/plugins/shared/searchprofiler/*"], "@kbn/security-api-integration-helpers": ["x-pack/test/security_api_integration/packages/helpers"], "@kbn/security-api-integration-helpers/*": ["x-pack/test/security_api_integration/packages/helpers/*"], "@kbn/security-api-key-management": ["x-pack/packages/security/api_key_management"], @@ -1622,36 +1632,36 @@ "@kbn/security-plugin-types-server/*": ["x-pack/packages/security/plugin_types_server/*"], "@kbn/security-role-management-model": ["x-pack/packages/security/role_management_model"], "@kbn/security-role-management-model/*": ["x-pack/packages/security/role_management_model/*"], - "@kbn/security-solution-distribution-bar": ["x-pack/packages/security-solution/distribution_bar"], - "@kbn/security-solution-distribution-bar/*": ["x-pack/packages/security-solution/distribution_bar/*"], + "@kbn/security-solution-distribution-bar": ["x-pack/solutions/security/packages/distribution_bar"], + "@kbn/security-solution-distribution-bar/*": ["x-pack/solutions/security/packages/distribution_bar/*"], "@kbn/security-solution-ess": ["x-pack/plugins/security_solution_ess"], "@kbn/security-solution-ess/*": ["x-pack/plugins/security_solution_ess/*"], - "@kbn/security-solution-features": ["x-pack/packages/security-solution/features"], - "@kbn/security-solution-features/*": ["x-pack/packages/security-solution/features/*"], + "@kbn/security-solution-features": ["x-pack/solutions/security/packages/features"], + "@kbn/security-solution-features/*": ["x-pack/solutions/security/packages/features/*"], "@kbn/security-solution-fixtures-plugin": ["x-pack/test/cases_api_integration/common/plugins/security_solution"], "@kbn/security-solution-fixtures-plugin/*": ["x-pack/test/cases_api_integration/common/plugins/security_solution/*"], - "@kbn/security-solution-navigation": ["x-pack/packages/security-solution/navigation"], - "@kbn/security-solution-navigation/*": ["x-pack/packages/security-solution/navigation/*"], + "@kbn/security-solution-navigation": ["x-pack/solutions/security/packages/navigation"], + "@kbn/security-solution-navigation/*": ["x-pack/solutions/security/packages/navigation/*"], "@kbn/security-solution-plugin": ["x-pack/plugins/security_solution"], "@kbn/security-solution-plugin/*": ["x-pack/plugins/security_solution/*"], "@kbn/security-solution-serverless": ["x-pack/plugins/security_solution_serverless"], "@kbn/security-solution-serverless/*": ["x-pack/plugins/security_solution_serverless/*"], - "@kbn/security-solution-side-nav": ["x-pack/packages/security-solution/side_nav"], - "@kbn/security-solution-side-nav/*": ["x-pack/packages/security-solution/side_nav/*"], - "@kbn/security-solution-storybook-config": ["x-pack/packages/security-solution/storybook/config"], - "@kbn/security-solution-storybook-config/*": ["x-pack/packages/security-solution/storybook/config/*"], - "@kbn/security-solution-upselling": ["x-pack/packages/security-solution/upselling"], - "@kbn/security-solution-upselling/*": ["x-pack/packages/security-solution/upselling/*"], + "@kbn/security-solution-side-nav": ["x-pack/solutions/security/packages/side_nav"], + "@kbn/security-solution-side-nav/*": ["x-pack/solutions/security/packages/side_nav/*"], + "@kbn/security-solution-storybook-config": ["x-pack/solutions/security/packages/storybook/config"], + "@kbn/security-solution-storybook-config/*": ["x-pack/solutions/security/packages/storybook/config/*"], + "@kbn/security-solution-upselling": ["x-pack/solutions/security/packages/upselling"], + "@kbn/security-solution-upselling/*": ["x-pack/solutions/security/packages/upselling/*"], "@kbn/security-test-endpoints-plugin": ["x-pack/test/security_functional/plugins/test_endpoints"], "@kbn/security-test-endpoints-plugin/*": ["x-pack/test/security_functional/plugins/test_endpoints/*"], "@kbn/security-ui-components": ["x-pack/packages/security/ui_components"], "@kbn/security-ui-components/*": ["x-pack/packages/security/ui_components/*"], "@kbn/securitysolution-autocomplete": ["packages/kbn-securitysolution-autocomplete"], "@kbn/securitysolution-autocomplete/*": ["packages/kbn-securitysolution-autocomplete/*"], - "@kbn/securitysolution-data-table": ["x-pack/packages/security-solution/data_table"], - "@kbn/securitysolution-data-table/*": ["x-pack/packages/security-solution/data_table/*"], - "@kbn/securitysolution-ecs": ["packages/kbn-securitysolution-ecs"], - "@kbn/securitysolution-ecs/*": ["packages/kbn-securitysolution-ecs/*"], + "@kbn/securitysolution-data-table": ["x-pack/solutions/security/packages/data_table"], + "@kbn/securitysolution-data-table/*": ["x-pack/solutions/security/packages/data_table/*"], + "@kbn/securitysolution-ecs": ["src/platform/packages/shared/kbn-securitysolution-ecs"], + "@kbn/securitysolution-ecs/*": ["src/platform/packages/shared/kbn-securitysolution-ecs/*"], "@kbn/securitysolution-endpoint-exceptions-common": ["packages/kbn-securitysolution-endpoint-exceptions-common"], "@kbn/securitysolution-endpoint-exceptions-common/*": ["packages/kbn-securitysolution-endpoint-exceptions-common/*"], "@kbn/securitysolution-es-utils": ["packages/kbn-securitysolution-es-utils"], @@ -1688,18 +1698,18 @@ "@kbn/securitysolution-utils/*": ["packages/kbn-securitysolution-utils/*"], "@kbn/server-http-tools": ["packages/kbn-server-http-tools"], "@kbn/server-http-tools/*": ["packages/kbn-server-http-tools/*"], - "@kbn/server-route-repository": ["packages/kbn-server-route-repository"], - "@kbn/server-route-repository/*": ["packages/kbn-server-route-repository/*"], - "@kbn/server-route-repository-client": ["packages/kbn-server-route-repository-client"], - "@kbn/server-route-repository-client/*": ["packages/kbn-server-route-repository-client/*"], - "@kbn/server-route-repository-utils": ["packages/kbn-server-route-repository-utils"], - "@kbn/server-route-repository-utils/*": ["packages/kbn-server-route-repository-utils/*"], + "@kbn/server-route-repository": ["src/platform/packages/shared/kbn-server-route-repository"], + "@kbn/server-route-repository/*": ["src/platform/packages/shared/kbn-server-route-repository/*"], + "@kbn/server-route-repository-client": ["src/platform/packages/shared/kbn-server-route-repository-client"], + "@kbn/server-route-repository-client/*": ["src/platform/packages/shared/kbn-server-route-repository-client/*"], + "@kbn/server-route-repository-utils": ["src/platform/packages/shared/kbn-server-route-repository-utils"], + "@kbn/server-route-repository-utils/*": ["src/platform/packages/shared/kbn-server-route-repository-utils/*"], "@kbn/serverless": ["x-pack/plugins/serverless"], "@kbn/serverless/*": ["x-pack/plugins/serverless/*"], "@kbn/serverless-common-settings": ["packages/serverless/settings/common"], "@kbn/serverless-common-settings/*": ["packages/serverless/settings/common/*"], - "@kbn/serverless-observability": ["x-pack/plugins/serverless_observability"], - "@kbn/serverless-observability/*": ["x-pack/plugins/serverless_observability/*"], + "@kbn/serverless-observability": ["x-pack/solutions/observability/plugins/serverless_observability"], + "@kbn/serverless-observability/*": ["x-pack/solutions/observability/plugins/serverless_observability/*"], "@kbn/serverless-observability-settings": ["packages/serverless/settings/observability_project"], "@kbn/serverless-observability-settings/*": ["packages/serverless/settings/observability_project/*"], "@kbn/serverless-project-switcher": ["packages/serverless/project_switcher"], @@ -1828,10 +1838,10 @@ "@kbn/shared-ux-utility/*": ["packages/kbn-shared-ux-utility/*"], "@kbn/slo-plugin": ["x-pack/plugins/observability_solution/slo"], "@kbn/slo-plugin/*": ["x-pack/plugins/observability_solution/slo/*"], - "@kbn/slo-schema": ["x-pack/packages/kbn-slo-schema"], - "@kbn/slo-schema/*": ["x-pack/packages/kbn-slo-schema/*"], - "@kbn/snapshot-restore-plugin": ["x-pack/plugins/snapshot_restore"], - "@kbn/snapshot-restore-plugin/*": ["x-pack/plugins/snapshot_restore/*"], + "@kbn/slo-schema": ["x-pack/platform/packages/shared/kbn-slo-schema"], + "@kbn/slo-schema/*": ["x-pack/platform/packages/shared/kbn-slo-schema/*"], + "@kbn/snapshot-restore-plugin": ["x-pack/platform/plugins/private/snapshot_restore"], + "@kbn/snapshot-restore-plugin/*": ["x-pack/platform/plugins/private/snapshot_restore/*"], "@kbn/some-dev-log": ["packages/kbn-some-dev-log"], "@kbn/some-dev-log/*": ["packages/kbn-some-dev-log/*"], "@kbn/sort-package-json": ["packages/kbn-sort-package-json"], @@ -1842,12 +1852,12 @@ "@kbn/spaces-plugin/*": ["x-pack/plugins/spaces/*"], "@kbn/spaces-test-plugin": ["x-pack/test/spaces_api_integration/common/plugins/spaces_test_plugin"], "@kbn/spaces-test-plugin/*": ["x-pack/test/spaces_api_integration/common/plugins/spaces_test_plugin/*"], - "@kbn/sse-utils": ["packages/kbn-sse-utils"], - "@kbn/sse-utils/*": ["packages/kbn-sse-utils/*"], - "@kbn/sse-utils-client": ["packages/kbn-sse-utils-client"], - "@kbn/sse-utils-client/*": ["packages/kbn-sse-utils-client/*"], - "@kbn/sse-utils-server": ["packages/kbn-sse-utils-server"], - "@kbn/sse-utils-server/*": ["packages/kbn-sse-utils-server/*"], + "@kbn/sse-utils": ["src/platform/packages/shared/kbn-sse-utils"], + "@kbn/sse-utils/*": ["src/platform/packages/shared/kbn-sse-utils/*"], + "@kbn/sse-utils-client": ["src/platform/packages/shared/kbn-sse-utils-client"], + "@kbn/sse-utils-client/*": ["src/platform/packages/shared/kbn-sse-utils-client/*"], + "@kbn/sse-utils-server": ["src/platform/packages/shared/kbn-sse-utils-server"], + "@kbn/sse-utils-server/*": ["src/platform/packages/shared/kbn-sse-utils-server/*"], "@kbn/stack-alerts-plugin": ["x-pack/plugins/stack_alerts"], "@kbn/stack-alerts-plugin/*": ["x-pack/plugins/stack_alerts/*"], "@kbn/stack-connectors-plugin": ["x-pack/plugins/stack_connectors"], @@ -1870,10 +1880,10 @@ "@kbn/streams-app-plugin/*": ["x-pack/solutions/observability/plugins/streams_app/*"], "@kbn/streams-plugin": ["x-pack/solutions/observability/plugins/streams"], "@kbn/streams-plugin/*": ["x-pack/solutions/observability/plugins/streams/*"], - "@kbn/synthetics-e2e": ["x-pack/plugins/observability_solution/synthetics/e2e"], - "@kbn/synthetics-e2e/*": ["x-pack/plugins/observability_solution/synthetics/e2e/*"], - "@kbn/synthetics-plugin": ["x-pack/plugins/observability_solution/synthetics"], - "@kbn/synthetics-plugin/*": ["x-pack/plugins/observability_solution/synthetics/*"], + "@kbn/synthetics-e2e": ["x-pack/solutions/observability/plugins/synthetics/e2e"], + "@kbn/synthetics-e2e/*": ["x-pack/solutions/observability/plugins/synthetics/e2e/*"], + "@kbn/synthetics-plugin": ["x-pack/solutions/observability/plugins/synthetics"], + "@kbn/synthetics-plugin/*": ["x-pack/solutions/observability/plugins/synthetics/*"], "@kbn/synthetics-private-location": ["x-pack/packages/kbn-synthetics-private-location"], "@kbn/synthetics-private-location/*": ["x-pack/packages/kbn-synthetics-private-location/*"], "@kbn/task-manager-fixture-plugin": ["x-pack/test/alerting_api_integration/common/plugins/task_manager_fixture"], @@ -1918,10 +1928,10 @@ "@kbn/third-party-lens-navigation-prompt-plugin/*": ["x-pack/examples/third_party_lens_navigation_prompt/*"], "@kbn/third-party-vis-lens-example-plugin": ["x-pack/examples/third_party_vis_lens_example"], "@kbn/third-party-vis-lens-example-plugin/*": ["x-pack/examples/third_party_vis_lens_example/*"], - "@kbn/threat-intelligence-plugin": ["x-pack/plugins/threat_intelligence"], - "@kbn/threat-intelligence-plugin/*": ["x-pack/plugins/threat_intelligence/*"], - "@kbn/timelines-plugin": ["x-pack/plugins/timelines"], - "@kbn/timelines-plugin/*": ["x-pack/plugins/timelines/*"], + "@kbn/threat-intelligence-plugin": ["x-pack/solutions/security/plugins/threat_intelligence"], + "@kbn/threat-intelligence-plugin/*": ["x-pack/solutions/security/plugins/threat_intelligence/*"], + "@kbn/timelines-plugin": ["x-pack/solutions/security/plugins/timelines"], + "@kbn/timelines-plugin/*": ["x-pack/solutions/security/plugins/timelines/*"], "@kbn/timelion-grammar": ["packages/kbn-timelion-grammar"], "@kbn/timelion-grammar/*": ["packages/kbn-timelion-grammar/*"], "@kbn/timerange": ["packages/kbn-timerange"], @@ -1948,8 +1958,8 @@ "@kbn/ts-projects/*": ["packages/kbn-ts-projects/*"], "@kbn/ts-type-check-cli": ["packages/kbn-ts-type-check-cli"], "@kbn/ts-type-check-cli/*": ["packages/kbn-ts-type-check-cli/*"], - "@kbn/typed-react-router-config": ["packages/kbn-typed-react-router-config"], - "@kbn/typed-react-router-config/*": ["packages/kbn-typed-react-router-config/*"], + "@kbn/typed-react-router-config": ["src/platform/packages/shared/kbn-typed-react-router-config"], + "@kbn/typed-react-router-config/*": ["src/platform/packages/shared/kbn-typed-react-router-config/*"], "@kbn/ui-actions-browser": ["packages/kbn-ui-actions-browser"], "@kbn/ui-actions-browser/*": ["packages/kbn-ui-actions-browser/*"], "@kbn/ui-actions-enhanced-examples-plugin": ["x-pack/examples/ui_actions_enhanced_examples"], @@ -1988,12 +1998,12 @@ "@kbn/unified-search-plugin/*": ["src/plugins/unified_search/*"], "@kbn/unsaved-changes-badge": ["packages/kbn-unsaved-changes-badge"], "@kbn/unsaved-changes-badge/*": ["packages/kbn-unsaved-changes-badge/*"], - "@kbn/unsaved-changes-prompt": ["packages/kbn-unsaved-changes-prompt"], - "@kbn/unsaved-changes-prompt/*": ["packages/kbn-unsaved-changes-prompt/*"], + "@kbn/unsaved-changes-prompt": ["src/platform/packages/shared/kbn-unsaved-changes-prompt"], + "@kbn/unsaved-changes-prompt/*": ["src/platform/packages/shared/kbn-unsaved-changes-prompt/*"], "@kbn/upgrade-assistant-plugin": ["x-pack/plugins/upgrade_assistant"], "@kbn/upgrade-assistant-plugin/*": ["x-pack/plugins/upgrade_assistant/*"], - "@kbn/uptime-plugin": ["x-pack/plugins/observability_solution/uptime"], - "@kbn/uptime-plugin/*": ["x-pack/plugins/observability_solution/uptime/*"], + "@kbn/uptime-plugin": ["x-pack/solutions/observability/plugins/uptime"], + "@kbn/uptime-plugin/*": ["x-pack/solutions/observability/plugins/uptime/*"], "@kbn/url-drilldown-plugin": ["x-pack/plugins/drilldowns/url_drilldown"], "@kbn/url-drilldown-plugin/*": ["x-pack/plugins/drilldowns/url_drilldown/*"], "@kbn/url-forwarding-plugin": ["src/plugins/url_forwarding"], @@ -2016,8 +2026,8 @@ "@kbn/utility-types-jest/*": ["packages/kbn-utility-types-jest/*"], "@kbn/utils": ["packages/kbn-utils"], "@kbn/utils/*": ["packages/kbn-utils/*"], - "@kbn/ux-plugin": ["x-pack/plugins/observability_solution/ux"], - "@kbn/ux-plugin/*": ["x-pack/plugins/observability_solution/ux/*"], + "@kbn/ux-plugin": ["x-pack/solutions/observability/plugins/ux"], + "@kbn/ux-plugin/*": ["x-pack/solutions/observability/plugins/ux/*"], "@kbn/v8-profiler-examples-plugin": ["examples/v8_profiler_examples"], "@kbn/v8-profiler-examples-plugin/*": ["examples/v8_profiler_examples/*"], "@kbn/validate-next-docs-cli": ["packages/kbn-validate-next-docs-cli"], @@ -2054,8 +2064,8 @@ "@kbn/visualization-utils/*": ["packages/kbn-visualization-utils/*"], "@kbn/visualizations-plugin": ["src/plugins/visualizations"], "@kbn/visualizations-plugin/*": ["src/plugins/visualizations/*"], - "@kbn/watcher-plugin": ["x-pack/plugins/watcher"], - "@kbn/watcher-plugin/*": ["x-pack/plugins/watcher/*"], + "@kbn/watcher-plugin": ["x-pack/platform/plugins/private/watcher"], + "@kbn/watcher-plugin/*": ["x-pack/platform/plugins/private/watcher/*"], "@kbn/web-worker-stub": ["packages/kbn-web-worker-stub"], "@kbn/web-worker-stub/*": ["packages/kbn-web-worker-stub/*"], "@kbn/whereis-pkg-cli": ["packages/kbn-whereis-pkg-cli"], diff --git a/versions.json b/versions.json index 30b013e25cd2b..126e39ed0bad2 100644 --- a/versions.json +++ b/versions.json @@ -14,7 +14,7 @@ "previousMinor": true }, { - "version": "8.17.0", + "version": "8.17.1", "branch": "8.17", "previousMajor": true }, @@ -23,11 +23,6 @@ "branch": "8.16", "previousMajor": true }, - { - "version": "8.15.6", - "branch": "8.15", - "previousMajor": true - }, { "version": "7.17.27", "branch": "7.17" diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json index c6eab5697fd29..f5b38ebec0769 100644 --- a/x-pack/.i18nrc.json +++ b/x-pack/.i18nrc.json @@ -22,7 +22,7 @@ "xpack.cloud": "plugins/cloud", "xpack.cloudDefend": "plugins/cloud_defend", "xpack.cloudLinks": "plugins/cloud_integrations/cloud_links", - "xpack.cloudDataMigration": "plugins/cloud_integrations/cloud_data_migration", + "xpack.cloudDataMigration": "platform/plugins/private/cloud_integrations/cloud_data_migration", "xpack.csp": [ "plugins/cloud_security_posture", "packages/kbn-cloud-security-posture-common", @@ -32,19 +32,19 @@ "xpack.dashboard": "plugins/dashboard_enhanced", "xpack.dataQuality": "plugins/data_quality", "xpack.datasetQuality": "plugins/observability_solution/dataset_quality", - "xpack.dataUsage": "plugins/data_usage", + "xpack.dataUsage": "platform/plugins/private/data_usage", "xpack.discover": "plugins/discover_enhanced", - "xpack.crossClusterReplication": "plugins/cross_cluster_replication", - "xpack.elasticAssistant": "packages/kbn-elastic-assistant", - "xpack.elasticAssistantCommon": "packages/kbn-elastic-assistant-common", - "xpack.elasticAssistantPlugin": "plugins/elastic_assistant", - "xpack.ecsDataQualityDashboard": "plugins/ecs_data_quality_dashboard", + "xpack.crossClusterReplication": "platform/plugins/private/cross_cluster_replication", + "xpack.elasticAssistant": "platform/packages/shared/kbn-elastic-assistant", + "xpack.elasticAssistantCommon": "platform/packages/shared/kbn-elastic-assistant-common", + "xpack.elasticAssistantPlugin": "solutions/security/plugins/elastic_assistant", + "xpack.ecsDataQualityDashboard": "solutions/security/plugins/ecs_data_quality_dashboard", "xpack.embeddableEnhanced": "plugins/embeddable_enhanced", "xpack.endpoint": "plugins/endpoint", "xpack.enterpriseSearch": "plugins/enterprise_search", "xpack.features": "plugins/features", "xpack.dataVisualizer": "platform/plugins/private/data_visualizer", - "xpack.exploratoryView": "plugins/observability_solution/exploratory_view", + "xpack.exploratoryView": "solutions/observability/plugins/exploratory_view", "xpack.fileUpload": "plugins/file_upload", "xpack.globalSearch": [ "plugins/global_search" @@ -55,25 +55,25 @@ "xpack.graph": [ "plugins/graph" ], - "xpack.grokDebugger": "plugins/grokdebugger", + "xpack.grokDebugger": "platform/plugins/private/grokdebugger", "xpack.idxMgmt": "plugins/index_management", "xpack.idxMgmtPackage": "packages/index-management", - "xpack.indexLifecycleMgmt": "plugins/index_lifecycle_management", + "xpack.indexLifecycleMgmt": "platform/plugins/private/index_lifecycle_management", "xpack.infra": "plugins/observability_solution/infra", "xpack.logsDataAccess": "plugins/observability_solution/logs_data_access", "xpack.logsExplorer": "plugins/observability_solution/logs_explorer", "xpack.logsShared": "plugins/observability_solution/logs_shared", "xpack.fleet": "plugins/fleet", "xpack.ingestPipelines": "plugins/ingest_pipelines", - "xpack.integrationAssistant": "plugins/integration_assistant", + "xpack.integrationAssistant": "platform/plugins/shared/integration_assistant", "xpack.inference": "platform/plugins/shared/inference", "xpack.inventory": "plugins/observability_solution/inventory", - "xpack.investigate": "plugins/observability_solution/investigate", - "xpack.investigateApp": "plugins/observability_solution/investigate_app", + "xpack.investigate": "solutions/observability/plugins/investigate", + "xpack.investigateApp": "solutions/observability/plugins/investigate_app", "xpack.kubernetesSecurity": "plugins/kubernetes_security", "xpack.lens": "plugins/lens", - "xpack.licenseApiGuard": "plugins/license_api_guard", - "xpack.licenseMgmt": "plugins/license_management", + "xpack.licenseApiGuard": "platform/plugins/private/license_api_guard", + "xpack.licenseMgmt": "platform/plugins/shared/license_management", "xpack.licensing": "plugins/licensing", "xpack.lists": "plugins/lists", "xpack.logstash": [ @@ -100,12 +100,12 @@ "xpack.monitoring": [ "plugins/monitoring" ], - "xpack.observability": "plugins/observability_solution/observability", + "xpack.observability": "solutions/observability/plugins/observability", "xpack.observabilityAiAssistant": [ - "plugins/observability_solution/observability_ai_assistant", - "plugins/observability_solution/observability_ai_assistant_app" + "platform/plugins/shared/observability_solution/observability_ai_assistant", + "solutions/observability/plugins/observability_ai_assistant_app" ], - "xpack.observabilityAiAssistantManagement": "plugins/observability_solution/observability_ai_assistant_management", + "xpack.observabilityAiAssistantManagement": "solutions/observability/plugins/observability_ai_assistant_management", "xpack.observabilityLogsExplorer": "plugins/observability_solution/observability_logs_explorer", "xpack.observability_onboarding": "plugins/observability_solution/observability_onboarding", "xpack.observabilityShared": "plugins/observability_solution/observability_shared", @@ -113,21 +113,21 @@ "packages/observability/logs_overview/src/components" ], "xpack.osquery": [ - "plugins/osquery" + "platform/plugins/shared/osquery" ], - "xpack.painlessLab": "plugins/painless_lab", + "xpack.painlessLab": "platform/plugins/private/painless_lab", "xpack.profiling": [ "plugins/observability_solution/profiling" ], - "xpack.remoteClusters": "plugins/remote_clusters", + "xpack.remoteClusters": "platform/plugins/private/remote_clusters", "xpack.reporting": [ "plugins/reporting" ], "xpack.rollupJobs": [ - "packages/rollup", - "plugins/rollup" + "platform/packages/private/rollup", + "platform/plugins/private/rollup" ], - "xpack.runtimeFields": "plugins/runtime_fields", + "xpack.runtimeFields": "platform/plugins/private/runtime_fields", "xpack.screenshotting": "plugins/screenshotting", "xpack.searchSharedUI": "packages/search/shared_ui", "xpack.searchHomepage": "plugins/search_homepage", @@ -137,7 +137,7 @@ "xpack.searchPlayground": "plugins/search_playground", "xpack.searchInferenceEndpoints": "plugins/search_inference_endpoints", "xpack.searchAssistant": "plugins/search_assistant", - "xpack.searchProfiler": "plugins/searchprofiler", + "xpack.searchProfiler": "platform/plugins/shared/searchprofiler", "xpack.security": [ "plugins/security", "packages/security" @@ -145,7 +145,7 @@ "xpack.server": "legacy/server", "xpack.serverless": "plugins/serverless", "xpack.serverlessSearch": "plugins/serverless_search", - "xpack.serverlessObservability": "plugins/serverless_observability", + "xpack.serverlessObservability": "solutions/observability/plugins/serverless_observability", "xpack.securitySolution": "plugins/security_solution", "xpack.securitySolutionEss": "plugins/security_solution_ess", "xpack.securitySolutionServerless": "plugins/security_solution_serverless", @@ -154,28 +154,28 @@ "solutions/observability/plugins/streams_app" ], "xpack.slo": "plugins/observability_solution/slo", - "xpack.snapshotRestore": "plugins/snapshot_restore", + "xpack.snapshotRestore": "platform/plugins/private/snapshot_restore", "xpack.spaces": "plugins/spaces", "xpack.savedObjectsTagging": [ "plugins/saved_objects_tagging" ], "xpack.taskManager": "legacy/plugins/task_manager", - "xpack.threatIntelligence": "plugins/threat_intelligence", - "xpack.timelines": "plugins/timelines", + "xpack.threatIntelligence": "solutions/security/plugins/threat_intelligence", + "xpack.timelines": "solutions/security/plugins/timelines", "xpack.transform": "platform/plugins/private/transform", "xpack.triggersActionsUI": "plugins/triggers_actions_ui", "xpack.upgradeAssistant": "plugins/upgrade_assistant", "xpack.uptime": [ - "plugins/observability_solution/uptime" + "solutions/observability/plugins/uptime" ], "xpack.synthetics": [ - "plugins/observability_solution/synthetics" + "solutions/observability/plugins/synthetics" ], "xpack.ux": [ - "plugins/observability_solution/ux" + "solutions/observability/plugins/ux" ], "xpack.urlDrilldown": "plugins/drilldowns/url_drilldown", - "xpack.watcher": "plugins/watcher" + "xpack.watcher": "platform/plugins/private/watcher" }, "exclude": [ "examples" diff --git a/x-pack/examples/embedded_lens_example/public/mount.tsx b/x-pack/examples/embedded_lens_example/public/mount.tsx index 6ff43709d3f89..f791c115be636 100644 --- a/x-pack/examples/embedded_lens_example/public/mount.tsx +++ b/x-pack/examples/embedded_lens_example/public/mount.tsx @@ -22,11 +22,8 @@ export const mount = const defaultDataView = await plugins.data.indexPatterns.getDefault(); const { formula } = await plugins.lens.stateHelperApi(); - const { analytics, i18n, theme } = core; - const startServices = { analytics, i18n, theme }; - const reactElement = ( - <KibanaRenderContextProvider {...startServices}> + <KibanaRenderContextProvider {...core}> {defaultDataView && defaultDataView.isTimeBased() ? ( <App core={core} plugins={plugins} defaultDataView={defaultDataView} formula={formula} /> ) : ( diff --git a/x-pack/examples/triggers_actions_ui_example/public/application.tsx b/x-pack/examples/triggers_actions_ui_example/public/application.tsx index 74b99fc2dece3..638233dd47a88 100644 --- a/x-pack/examples/triggers_actions_ui_example/public/application.tsx +++ b/x-pack/examples/triggers_actions_ui_example/public/application.tsx @@ -45,6 +45,7 @@ export interface TriggersActionsUiExampleComponentParams { docLinks: CoreStart['docLinks']; i18n: CoreStart['i18n']; theme: CoreStart['theme']; + userProfile: CoreStart['userProfile']; settings: CoreStart['settings']; history: ScopedHistory; triggersActionsUi: TriggersAndActionsUIPublicPluginStart; @@ -63,12 +64,11 @@ const TriggersActionsUiExampleApp = ({ notifications, settings, docLinks, - i18n, - theme, data, charts, dataViews, unifiedSearch, + ...startServices }: TriggersActionsUiExampleComponentParams) => { return ( <Router history={history}> @@ -193,8 +193,6 @@ const TriggersActionsUiExampleApp = ({ application, notifications, docLinks, - i18n, - theme, charts, data, dataViews, @@ -202,6 +200,7 @@ const TriggersActionsUiExampleApp = ({ settings, ruleTypeRegistry: triggersActionsUi.ruleTypeRegistry, actionTypeRegistry: triggersActionsUi.actionTypeRegistry, + ...startServices, }} /> </Page> @@ -218,8 +217,6 @@ const TriggersActionsUiExampleApp = ({ application, notifications, docLinks, - theme, - i18n, charts, data, dataViews, @@ -227,6 +224,7 @@ const TriggersActionsUiExampleApp = ({ settings, ruleTypeRegistry: triggersActionsUi.ruleTypeRegistry, actionTypeRegistry: triggersActionsUi.actionTypeRegistry, + ...startServices, }} /> </Page> @@ -245,7 +243,6 @@ export const renderApp = ( deps: TriggersActionsUiExamplePublicStartDeps, { appBasePath, element, history }: AppMountParameters ) => { - const { http, notifications, docLinks, application, i18n, theme, settings } = core; const { triggersActionsUi } = deps; const { ruleTypeRegistry, actionTypeRegistry } = triggersActionsUi; @@ -263,19 +260,13 @@ export const renderApp = ( <IntlProvider locale="en"> <TriggersActionsUiExampleApp history={history} - http={http} - notifications={notifications} - application={application} - docLinks={docLinks} - i18n={i18n} - theme={theme} - settings={settings} triggersActionsUi={deps.triggersActionsUi} data={deps.data} charts={deps.charts} dataViews={deps.dataViews} dataViewsEditor={deps.dataViewsEditor} unifiedSearch={deps.unifiedSearch} + {...core} /> </IntlProvider> </QueryClientProvider> diff --git a/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/tsconfig.json b/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/tsconfig.json deleted file mode 100644 index 12a691a15cc4f..0000000000000 --- a/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - ] -} diff --git a/x-pack/packages/index-management/index_management_shared_types/jest.config.js b/x-pack/packages/index-management/index_management_shared_types/jest.config.js deleted file mode 100644 index c9238a37a56ab..0000000000000 --- a/x-pack/packages/index-management/index_management_shared_types/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/index-management/index_management_shared_types'], -}; diff --git a/x-pack/packages/index-management/index_management_shared_types/tsconfig.json b/x-pack/packages/index-management/index_management_shared_types/tsconfig.json deleted file mode 100644 index 8e9142a838322..0000000000000 --- a/x-pack/packages/index-management/index_management_shared_types/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/core-application-browser", - "@kbn/utility-types", - "@kbn/share-plugin", - ] -} diff --git a/x-pack/packages/kbn-ai-assistant-common/jest.config.js b/x-pack/packages/kbn-ai-assistant-common/jest.config.js deleted file mode 100644 index 6682c06e5e764..0000000000000 --- a/x-pack/packages/kbn-ai-assistant-common/jest.config.js +++ /dev/null @@ -1,19 +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. - */ - -module.exports = { - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_ai_assistant_common_src', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/packages/kbn-ai-assistant-common/src/**/*.{ts,tsx}', - '!<rootDir>/x-pack/packages/kbn-ai-assistant-common/src/*.test.{ts,tsx}', - ], - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/kbn-ai-assistant-common'], -}; diff --git a/x-pack/packages/kbn-ai-assistant-common/tsconfig.json b/x-pack/packages/kbn-ai-assistant-common/tsconfig.json deleted file mode 100644 index 35c604906821d..0000000000000 --- a/x-pack/packages/kbn-ai-assistant-common/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - ] -} diff --git a/x-pack/packages/kbn-ai-assistant/.storybook/main.ts b/x-pack/packages/kbn-ai-assistant/.storybook/main.ts new file mode 100644 index 0000000000000..a20131369d328 --- /dev/null +++ b/x-pack/packages/kbn-ai-assistant/.storybook/main.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 { defaultConfig } from '@kbn/storybook'; + +module.exports = { + ...defaultConfig, + stories: [ + '../**/*.stories.tsx', + '../../../platform/packages/shared/ai-assistant/**/*.stories.tsx', + ], + reactOptions: { + strictMode: true, + }, +}; diff --git a/x-pack/packages/kbn-ai-assistant/.storybook/manager.ts b/x-pack/packages/kbn-ai-assistant/.storybook/manager.ts new file mode 100644 index 0000000000000..548bd62b3779c --- /dev/null +++ b/x-pack/packages/kbn-ai-assistant/.storybook/manager.ts @@ -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 { addons } from '@storybook/addons'; +import { create } from '@storybook/theming'; +import { PANEL_ID } from '@storybook/addon-actions'; + +addons.setConfig({ + theme: create({ + base: 'light', + brandTitle: 'AI Assistant Storybook', + brandUrl: 'https://github.com/elastic/kibana/tree/main/x-pack/packages/kbn-ai-assistant', + }), + showPanel: true.valueOf, + selectedPanel: PANEL_ID, +}); diff --git a/x-pack/packages/kbn-ai-assistant/src/buttons/ask_assistant_button.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/buttons/ask_assistant_button.stories.tsx deleted file mode 100644 index 9c0d19e3c4b75..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/buttons/ask_assistant_button.stories.tsx +++ /dev/null @@ -1,51 +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 React from 'react'; -import { ComponentStory } from '@storybook/react'; -import { EuiButtonSize } from '@elastic/eui'; - -import { AskAssistantButton as Component, AskAssistantButtonProps } from './ask_assistant_button'; - -export default { - component: Component, - title: 'app/Atoms/AskAiAssistantButton', - argTypes: { - size: { - options: ['xs', 's', 'm'] as EuiButtonSize[], - control: { type: 'radio' }, - }, - fill: { - control: { - type: 'boolean', - }, - }, - flush: { - control: { - type: 'boolean', - if: { arg: 'variant', eq: 'empty' }, - }, - }, - variant: { - options: ['basic', 'empty', 'iconOnly'], - control: { type: 'radio' }, - }, - }, -}; - -const Template: ComponentStory<typeof Component> = (props: AskAssistantButtonProps) => ( - <Component {...props} /> -); - -const defaultProps = { - fill: true, - size: 'm' as EuiButtonSize, - variant: 'basic' as const, -}; - -export const AskAiAssistantButton = Template.bind({}); -AskAiAssistantButton.args = defaultProps; diff --git a/x-pack/packages/kbn-ai-assistant/src/buttons/hide_expand_conversation_list_button.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/buttons/hide_expand_conversation_list_button.stories.tsx deleted file mode 100644 index d49ccdfb3823d..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/buttons/hide_expand_conversation_list_button.stories.tsx +++ /dev/null @@ -1,37 +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 React from 'react'; -import { ComponentStory } from '@storybook/react'; - -import { - HideExpandConversationListButton as Component, - HideExpandConversationListButtonProps, -} from './hide_expand_conversation_list_button'; - -export default { - component: Component, - title: 'app/Atoms/HideExpandConversationListButton', - argTypes: { - isExpanded: { - control: { - type: 'boolean', - }, - }, - }, -}; - -const Template: ComponentStory<typeof Component> = ( - props: HideExpandConversationListButtonProps -) => <Component {...props} />; - -const defaultProps = { - isExpanded: true, -}; - -export const HideExpandConversationListButton = Template.bind({}); -HideExpandConversationListButton.args = defaultProps; diff --git a/x-pack/packages/kbn-ai-assistant/src/buttons/new_chat_button.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/buttons/new_chat_button.stories.tsx deleted file mode 100644 index f4e0cae677ef0..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/buttons/new_chat_button.stories.tsx +++ /dev/null @@ -1,19 +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 { ComponentMeta, ComponentStoryObj } from '@storybook/react'; -import { NewChatButton as Component } from './new_chat_button'; - -const meta: ComponentMeta<typeof Component> = { - component: Component, - title: 'app/Atoms/NewChatButton', -}; - -export default meta; - -export const NewChatButton: ComponentStoryObj<typeof Component> = { - args: {}, -}; diff --git a/x-pack/packages/kbn-ai-assistant/src/chat/chat_body.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/chat/chat_body.stories.tsx deleted file mode 100644 index 3809e97f059b6..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/chat/chat_body.stories.tsx +++ /dev/null @@ -1,81 +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 { ComponentMeta, ComponentStoryObj } from '@storybook/react'; -import React from 'react'; -import { MessageRole } from '@kbn/observability-ai-assistant-plugin/public'; -import { buildSystemMessage } from '../utils/builders'; -import { KibanaReactStorybookDecorator } from '../utils/storybook_decorator.stories'; -import { ChatBody as Component } from './chat_body'; - -const meta: ComponentMeta<typeof Component> = { - component: Component, - title: 'app/Organisms/ChatBody', - decorators: [KibanaReactStorybookDecorator], -}; - -export default meta; -const defaultProps: ComponentStoryObj<typeof Component> = { - args: { - initialTitle: 'My Conversation', - initialMessages: [ - buildSystemMessage(), - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.User, - content: `{"entries":[{"@timestamp":"2023-08-04T06:31:15.160Z","public":false,"confidence":"high","is_correction":false,"namespace":"default","text":"The user's name is Dario.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:53:21.848Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The RENAME command in ES|QL is used to rename a column. The syntax is 'RENAME <new-name> = <old-name>'. For example, 'FROM employees | KEEP first_name, last_name, still_hired | RENAME employed = still_hired' will rename the 'still_hired' column to 'employed'. If a column with the new name already exists, it will be replaced by the new column. Multiple columns can be renamed with a single RENAME command.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:52:02.052Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The KEEP command in ES|QL is used to specify what columns are returned and the order in which they are returned. To limit the columns that are returned, a comma-separated list of column names is used. The columns are then returned in the specified order. Wildcards can also be used to return all columns with a name that matches a pattern. For example, 'FROM employees | KEEP h*' will return all columns with a name that starts with an 'h'. The asterisk wildcard (*) by itself translates to all columns that do not match the other arguments.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:55:18.984Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The WHERE command in ES|QL is used to produce a table that contains all the rows from the input table for which the provided condition evaluates to true. For example, 'FROM employees | KEEP first_name, last_name, still_hired | WHERE still_hired == true' will return only the rows where 'still_hired' is true. WHERE supports various operators and functions for calculating values.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:53:57.401Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The SORT command in ES|QL is used to sort rows on one or more fields. The default sort order is ascending, but this can be explicitly set using ASC or DESC. For example, 'FROM employees | KEEP first_name, last_name, height | SORT height DESC' will sort the rows in descending order of height. Additional sort expressions can be provided to act as tie breakers. By default, null values are treated as being larger than any other value, meaning they are sorted last in an ascending order and first in a descending order. This can be changed by providing NULLS FIRST or NULLS LAST.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:50:09.345Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The EVAL command in ES|QL is used to append new columns to a table. For example, 'FROM employees | KEEP first_name, last_name, height | EVAL height_feet = height * 3.281, height_cm = height * 100' will append new columns 'height_feet' and 'height_cm' to the 'employees' table. If the specified column already exists, the existing column will be dropped, and the new column will be appended to the table. EVAL supports various functions for calculating values.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:49:37.882Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The ENRICH command in ES|QL is used to add data from existing indices to incoming records at query time. It requires an enrich policy to be executed, which defines a match field and a set of enrich fields. ENRICH looks for records in the enrich index based on the match field value. The matching key in the input dataset can be defined using 'ON <field-name>'. If it’s not specified, the match will be performed on a field with the same name as the match field defined in the enrich policy. You can specify which attributes to be added to the result using 'WITH <field1>, <field2>...' syntax. Attributes can also be renamed using 'WITH new_name=<field1>'. By default, ENRICH will add all the enrich fields defined in the enrich policy to the result. In case of name collisions, the newly created fields will override the existing fields.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:50:45.339Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The GROK command in ES|QL enables you to extract structured data out of a string. GROK matches the string against patterns, based on regular expressions, and extracts the specified patterns as columns. For example, 'ROW a = "1953-01-23T12:15:00Z 127.0.0.1 some.email@foo.com 42" | GROK a "%{TIMESTAMP_ISO8601:date} %{IP:ip} %{EMAILADDRESS:email} %{NUMBER:num:int}" | KEEP date, ip, email, num' will extract the date, IP, email, and number from the string into separate columns. Refer to the grok processor documentation for the syntax of grok patterns.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:44:22.647Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"The FROM source command in ES|QL returns a table with up to 10,000 documents from a data stream, index, or alias. Each row in the table represents a document, and each column corresponds to a field, which can be accessed by the name of that field. Date math can be used to refer to indices, aliases and data streams, which is useful for time series data. Comma-separated lists or wildcards can be used to query multiple data streams, indices, or aliases.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}},{"@timestamp":"2023-08-03T16:42:52.832Z","public":true,"confidence":"high","is_correction":false,"namespace":"default","text":"ES|QL, the Elasticsearch Query Language, is a query language designed for iterative data exploration. An ES|QL query consists of a series of commands, separated by pipes. Each query starts with a source command that produces a table, typically with data from Elasticsearch. This can be followed by one or more processing commands that modify the input table by adding, removing, or changing rows and columns. Processing commands can be chained together, with each command working on the output table of the previous command. The result of a query is the table produced by the final processing command. ES|QL can be used via the _esql endpoint, and results are returned as JSON by default. It can also be used in Kibana's Discover and Lens features for data exploration and visualization. Currently, ES|QL supports field types such as alias, boolean, date, ip, keyword family, double/float/half_float, long int/short/byte, and version.","user":{"name":"elastic","id":"u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0"},"ml":{"model_id":".elser_model_1"}}]}`, - }, - }, - ], - knowledgeBase: { - status: { - loading: false, - value: { - ready: true, - enabled: true, - }, - refresh: () => {}, - }, - isInstalling: false, - install: async () => {}, - }, - connectors: { - connectors: [ - { - id: 'foo', - referencedByCount: 1, - actionTypeId: 'foo', - name: 'GPT-v8-ultra', - isPreconfigured: true, - isDeprecated: false, - isSystemAction: false, - }, - ], - loading: false, - error: undefined, - selectedConnector: 'foo', - selectConnector: () => {}, - reloadConnectors: () => {}, - }, - currentUser: { - username: 'elastic', - full_name: '', - }, - }, - render: (props) => { - return ( - <div style={{ height: '100vh', display: 'flex', maxWidth: 600 }}> - <Component {...props} /> - </div> - ); - }, -}; - -export const ChatBody: ComponentStoryObj<typeof Component> = { - ...defaultProps, -}; diff --git a/x-pack/packages/kbn-ai-assistant/src/chat/chat_flyout.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/chat/chat_flyout.stories.tsx deleted file mode 100644 index 72546d770e6a6..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/chat/chat_flyout.stories.tsx +++ /dev/null @@ -1,40 +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 { ComponentStory } from '@storybook/react'; -import React from 'react'; -import { buildSystemMessage } from '../utils/builders'; -import { KibanaReactStorybookDecorator } from '../utils/storybook_decorator.stories'; -import { ChatFlyout as Component, FlyoutPositionMode } from './chat_flyout'; - -export default { - component: Component, - title: 'app/Organisms/ChatFlyout', - decorators: [KibanaReactStorybookDecorator], -}; - -type ChatFlyoutProps = React.ComponentProps<typeof Component>; - -const Template: ComponentStory<typeof Component> = (props: ChatFlyoutProps) => { - return ( - <div style={{ display: 'flex', minHeight: 800, maxWidth: 600 }}> - <Component {...props} /> - </div> - ); -}; - -const defaultProps: ChatFlyoutProps = { - isOpen: true, - initialTitle: 'How is this working', - initialMessages: [buildSystemMessage()], - initialFlyoutPositionMode: FlyoutPositionMode.OVERLAY, - onClose: () => {}, - navigateToConversation: () => {}, -}; - -export const ChatFlyout = Template.bind({}); -ChatFlyout.args = defaultProps; diff --git a/x-pack/packages/kbn-ai-assistant/src/chat/chat_header.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/chat/chat_header.stories.tsx deleted file mode 100644 index 0a61e16070232..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/chat/chat_header.stories.tsx +++ /dev/null @@ -1,41 +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 React from 'react'; -import { ComponentMeta, ComponentStoryObj } from '@storybook/react'; -import { FindActionResult } from '@kbn/actions-plugin/server'; -import { EuiPanel } from '@elastic/eui'; -import { ChatHeader as Component } from './chat_header'; - -const meta: ComponentMeta<typeof Component> = { - component: Component, - title: 'app/Molecules/ChatHeader', -}; - -export default meta; - -export const ChatHeaderLoaded: ComponentStoryObj<typeof Component> = { - args: { - title: 'My conversation', - connectors: { - loading: false, - selectedConnector: 'gpt-4', - connectors: [ - { id: 'gpt-4', name: 'OpenAI GPT-4' }, - { id: 'gpt-3.5-turbo', name: 'OpenAI GPT-3.5 Turbo' }, - ] as FindActionResult[], - selectConnector: () => {}, - reloadConnectors: () => {}, - }, - }, - render: (props) => { - return ( - <EuiPanel hasBorder hasShadow={false}> - <Component {...props} /> - </EuiPanel> - ); - }, -}; diff --git a/x-pack/packages/kbn-ai-assistant/src/chat/chat_timeline.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/chat/chat_timeline.stories.tsx deleted file mode 100644 index 7c04c3ad0bae7..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/chat/chat_timeline.stories.tsx +++ /dev/null @@ -1,134 +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 { EuiButton, EuiSpacer } from '@elastic/eui'; -import type { ComponentStory } from '@storybook/react'; -import React, { type ComponentProps, useState } from 'react'; -import { - MessageRole, - type ObservabilityAIAssistantChatService, -} from '@kbn/observability-ai-assistant-plugin/public'; -import { ChatState } from '@kbn/observability-ai-assistant-plugin/public'; -import { - buildAssistantMessage, - buildFunctionResponseMessage, - buildSystemMessage, - buildUserMessage, -} from '../utils/builders'; -import { ChatTimeline as Component, type ChatTimelineProps } from './chat_timeline'; - -export default { - component: Component, - title: 'app/Organisms/ChatTimeline', - parameters: { - backgrounds: { - default: 'white', - values: [{ name: 'white', value: '#fff' }], - }, - }, - argTypes: {}, -}; - -const Template: ComponentStory<typeof Component> = (props: ChatTimelineProps) => { - const [count, setCount] = useState(props.messages.length - 1); - - return ( - <> - <Component {...props} messages={props.messages.filter((_, index) => index <= count)} /> - - <EuiSpacer /> - - <EuiButton - data-test-subj="observabilityAiAssistantTemplateAddMessageButton" - onClick={() => setCount(count >= 0 && count < props.messages.length - 1 ? count + 1 : 0)} - > - Add message - </EuiButton> - </> - ); -}; - -const defaultProps: ComponentProps<typeof Component> = { - knowledgeBase: { - status: { - loading: false, - value: { - ready: true, - enabled: true, - }, - refresh: () => {}, - }, - isInstalling: false, - installError: undefined, - install: async () => {}, - }, - chatService: { - hasRenderFunction: () => false, - } as unknown as ObservabilityAIAssistantChatService, - chatState: ChatState.Ready, - hasConnector: true, - currentUser: { - full_name: 'John Doe', - username: 'johndoe', - }, - messages: [ - buildSystemMessage(), - buildUserMessage(), - buildAssistantMessage(), - buildUserMessage({ message: { content: 'How does it work?' } }), - buildAssistantMessage({ - message: { - content: `The way functions work depends on whether we are talking about mathematical functions or programming functions. Let's explore both: - - Mathematical Functions: - In mathematics, a function maps input values to corresponding output values based on a specific rule or expression. The general process of how a mathematical function works can be summarized as follows: - Step 1: Input - You provide an input value to the function, denoted as 'x' in the notation f(x). This value represents the independent variable. - - Step 2: Processing - The function takes the input value and applies a specific rule or algorithm to it. This rule is defined by the function itself and varies depending on the function's expression. - - Step 3: Output - After processing the input, the function produces an output value, denoted as 'f(x)' or 'y'. This output represents the dependent variable and is the result of applying the function's rule to the input. - - Step 4: Uniqueness - A well-defined mathematical function ensures that each input value corresponds to exactly one output value. In other words, the function should yield the same output for the same input whenever it is called.`, - }, - }), - buildUserMessage({ - message: { content: 'Can you execute a function?' }, - }), - buildAssistantMessage({ - message: { - content: 'Sure, I can do that.', - function_call: { - name: 'a_function', - arguments: '{ "foo": "bar" }', - trigger: MessageRole.Assistant, - }, - }, - }), - buildFunctionResponseMessage({ - message: { content: '{ "message": "The arguments are wrong" }' }, - }), - buildAssistantMessage({ - message: { - content: '', - function_call: { - name: 'a_function', - arguments: '{ "bar": "foo" }', - trigger: MessageRole.Assistant, - }, - }, - }), - ], - onActionClick: async () => {}, - onEdit: async () => {}, - onFeedback: () => {}, - onRegenerate: () => {}, - onSendTelemetry: () => {}, - onStopGenerating: () => {}, -}; - -export const ChatTimeline = Template.bind({}); -ChatTimeline.args = defaultProps; diff --git a/x-pack/packages/kbn-ai-assistant/src/chat/conversation_list.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/chat/conversation_list.stories.tsx deleted file mode 100644 index 7405b477647fd..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/chat/conversation_list.stories.tsx +++ /dev/null @@ -1,93 +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 { ComponentMeta, ComponentStoryObj } from '@storybook/react'; -import React from 'react'; -import { buildConversation } from '../utils/builders'; -import { KibanaReactStorybookDecorator } from '../utils/storybook_decorator.stories'; -import { ConversationList as Component } from './conversation_list'; - -type ConversationListProps = React.ComponentProps<typeof Component>; - -const meta: ComponentMeta<typeof Component> = { - component: Component, - title: 'app/Organisms/ConversationList', - decorators: [KibanaReactStorybookDecorator], -}; - -export default meta; - -const Wrapper = (props: ConversationListProps) => { - return ( - <div style={{ minHeight: 800, maxWidth: 240, display: 'flex' }}> - <Component {...props} /> - </div> - ); -}; - -export const ConversationListLoading: ComponentStoryObj<typeof Component> = { - args: { - conversations: { - loading: true, - error: undefined, - value: { conversations: [] }, - refresh: () => {}, - }, - isLoading: true, - }, - render: Wrapper, -}; - -export const ConversationListError: ComponentStoryObj<typeof Component> = { - args: { - conversations: { - loading: false, - error: new Error('Failed to load conversations'), - value: { conversations: [] }, - refresh: () => {}, - }, - isLoading: false, - }, - render: Wrapper, -}; - -export const ConversationListLoaded: ComponentStoryObj<typeof Component> = { - args: { - conversations: { - loading: false, - error: undefined, - value: { - conversations: [ - buildConversation({ - conversation: { - id: 'foo', - title: 'Why is database service responding with errors after I did rm -rf /postgres', - last_updated: '', - }, - }), - ], - }, - refresh: () => {}, - }, - selectedConversationId: '', - }, - render: Wrapper, -}; - -export const ConversationListEmpty: ComponentStoryObj<typeof Component> = { - args: { - conversations: { - loading: false, - error: undefined, - value: { conversations: [] }, - refresh: () => {}, - }, - isLoading: false, - selectedConversationId: '', - }, - render: Wrapper, -}; diff --git a/x-pack/packages/kbn-ai-assistant/src/chat/function_list_popover.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/chat/function_list_popover.stories.tsx deleted file mode 100644 index 62da0b2d14ff8..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/chat/function_list_popover.stories.tsx +++ /dev/null @@ -1,33 +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 { ComponentStory } from '@storybook/react'; -import React from 'react'; -import { KibanaReactStorybookDecorator } from '../utils/storybook_decorator.stories'; -import { FunctionListPopover as Component } from './function_list_popover'; - -export default { - component: Component, - title: 'app/Organisms/FunctionListPopover', - decorators: [KibanaReactStorybookDecorator], -}; - -type FunctionListPopover = React.ComponentProps<typeof Component>; - -const Template: ComponentStory<typeof Component> = (props: FunctionListPopover) => { - return <Component {...props} />; -}; - -const defaultProps: FunctionListPopover = { - onSelectFunction: () => {}, - disabled: false, - mode: 'function', - selectedFunctionName: '', -}; - -export const FunctionListPopover = Template.bind({}); -FunctionListPopover.args = defaultProps; diff --git a/x-pack/packages/kbn-ai-assistant/src/chat/knowledge_base_callout.stories.tsx b/x-pack/packages/kbn-ai-assistant/src/chat/knowledge_base_callout.stories.tsx deleted file mode 100644 index 84c730129348e..0000000000000 --- a/x-pack/packages/kbn-ai-assistant/src/chat/knowledge_base_callout.stories.tsx +++ /dev/null @@ -1,74 +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 { ComponentMeta, ComponentStoryObj } from '@storybook/react'; -import { merge } from 'lodash'; -import { KibanaReactStorybookDecorator } from '../utils/storybook_decorator.stories'; -import { KnowledgeBaseCallout as Component } from './knowledge_base_callout'; - -const meta: ComponentMeta<typeof Component> = { - component: Component, - title: 'app/Molecules/KnowledgeBaseCallout', - decorators: [KibanaReactStorybookDecorator], -}; - -export default meta; -const defaultProps: ComponentStoryObj<typeof Component> = { - args: { - knowledgeBase: { - status: { - loading: false, - value: { - ready: false, - enabled: true, - }, - refresh: () => {}, - }, - isInstalling: false, - installError: undefined, - install: async () => {}, - }, - }, -}; - -export const StatusError: ComponentStoryObj<typeof Component> = merge({}, defaultProps, { - args: { knowledgeBase: { status: { loading: false, error: new Error() } } }, -}); - -export const Loading: ComponentStoryObj<typeof Component> = merge({}, defaultProps, { - args: { knowledgeBase: { status: { loading: true } } }, -}); - -export const NotInstalled: ComponentStoryObj<typeof Component> = merge({}, defaultProps, { - args: { knowledgeBase: { status: { loading: false, value: { ready: false, enabled: true } } } }, -}); - -export const Installing: ComponentStoryObj<typeof Component> = merge({}, defaultProps, { - args: { - knowledgeBase: { - status: { loading: false, value: { ready: false, enabled: true } }, - isInstalling: true, - }, - }, -}); - -export const InstallError: ComponentStoryObj<typeof Component> = merge({}, defaultProps, { - args: { - knowledgeBase: { - status: { - loading: false, - value: { ready: false, enabled: true }, - }, - isInstalling: false, - installError: new Error(), - }, - }, -}); - -export const Installed: ComponentStoryObj<typeof Component> = merge({}, defaultProps, { - args: { knowledgeBase: { status: { loading: false, value: { ready: true, enabled: true } } } }, -}); diff --git a/x-pack/packages/kbn-ai-assistant/tsconfig.json b/x-pack/packages/kbn-ai-assistant/tsconfig.json index 5ba1b161bccba..159a38f67f426 100644 --- a/x-pack/packages/kbn-ai-assistant/tsconfig.json +++ b/x-pack/packages/kbn-ai-assistant/tsconfig.json @@ -12,6 +12,8 @@ "include": [ "**/*.ts", "**/*.tsx", + ".storybook/**/*.ts", + ".storybook/**/*.tsx", ], "exclude": [ "target/**/*" @@ -35,5 +37,6 @@ "@kbn/ml-plugin", "@kbn/share-plugin", "@kbn/ai-assistant-common", + "@kbn/storybook", ] } diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/index.ts b/x-pack/packages/kbn-cloud-security-posture/graph/index.ts index c50969cfd6402..45575316b29d9 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/index.ts +++ b/x-pack/packages/kbn-cloud-security-posture/graph/index.ts @@ -6,3 +6,4 @@ */ export * from './src/components'; +export { useFetchGraphData } from './src/hooks'; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/jest.config.js b/x-pack/packages/kbn-cloud-security-posture/graph/jest.config.js index 3b8fbbd9384a4..3f600bebb30f7 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/jest.config.js +++ b/x-pack/packages/kbn-cloud-security-posture/graph/jest.config.js @@ -9,6 +9,10 @@ module.exports = { preset: '@kbn/test', roots: ['<rootDir>/x-pack/packages/kbn-cloud-security-posture/graph'], rootDir: '../../../..', + transform: { + '^.+\\.(js|tsx?)$': + '<rootDir>/x-pack/packages/kbn-cloud-security-posture/storybook/config/babel_with_emotion.ts', + }, setupFiles: ['jest-canvas-mock'], setupFilesAfterEnv: ['<rootDir>/x-pack/packages/kbn-cloud-security-posture/graph/setup_tests.ts'], }; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/common/constants.ts b/x-pack/packages/kbn-cloud-security-posture/graph/src/common/constants.ts new file mode 100644 index 0000000000000..307cbd65123e4 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/common/constants.ts @@ -0,0 +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. + */ + +export const EVENT_GRAPH_VISUALIZATION_API = '/internal/cloud_security_posture/graph' as const; + +export const RELATED_ENTITY = 'related.entity' as const; +export const ACTOR_ENTITY_ID = 'actor.entity.id' as const; +export const TARGET_ENTITY_ID = 'target.entity.id' as const; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx index 0b956cb19e10d..a97a1c74698ca 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/graph.tsx @@ -174,7 +174,7 @@ export const Graph: React.FC<GraphProps> = ({ minZoom={0.1} > {interactive && <Controls onInteractiveChange={onInteractiveStateChange} />} - <Background id={backgroundId} />{' '} + <Background id={backgroundId} /> </ReactFlow> </div> ); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/layout_graph.ts b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/layout_graph.ts index 868461f99cdee..d0cf9f0f150cd 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/layout_graph.ts +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/layout_graph.ts @@ -50,6 +50,10 @@ export const layoutGraph = ( nodesById[node.id] = node; } + if (node.parentId) { + return; + } + g.setNode(node.id, { ...node, ...size, @@ -59,6 +63,14 @@ export const layoutGraph = ( Dagre.layout(g); const layoutedNodes = nodes.map((node) => { + // For grouped nodes, we want to keep the original position relative to the parent + if (node.data.shape === 'label' && node.data.parentId) { + return { + ...node, + position: nodesById[node.data.id].position, + }; + } + const dagreNode = g.node(node.data.id); // We are shifting the dagre node position (anchor=center center) to the top left @@ -66,13 +78,7 @@ export const layoutGraph = ( const x = dagreNode.x - (dagreNode.width ?? 0) / 2; const y = dagreNode.y - (dagreNode.height ?? 0) / 2; - // For grouped nodes, we want to keep the original position relative to the parent - if (node.data.shape === 'label' && node.data.parentId) { - return { - ...node, - position: nodesById[node.data.id].position, - }; - } else if (node.data.shape === 'group') { + if (node.data.shape === 'group') { return { ...node, position: { x, y }, @@ -130,7 +136,7 @@ const layoutGroupChildren = ( const childSize = calcLabelSize(child.data.label); child.position = { x: groupNodeWidth / 2 - childSize.width / 2, - y: index * (childSize.height * 2 + space), + y: index * (childSize.height + space), }; }); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/use_graph_popover.tsx b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/use_graph_popover.tsx index f5bca30d1e5ae..dd8a5f0c56a72 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/use_graph_popover.tsx +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph/use_graph_popover.tsx @@ -46,12 +46,9 @@ export const useGraphPopover = (id: string): GraphPopoverState => { const state: PopoverState = useMemo(() => ({ isOpen, anchorElement }), [isOpen, anchorElement]); - return useMemo( - () => ({ - id, - actions, - state, - }), - [id, actions, state] - ); + return { + id, + actions, + state, + }; }; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_investigation.tsx b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_investigation.tsx new file mode 100644 index 0000000000000..081b4ec28c6a5 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_investigation.tsx @@ -0,0 +1,258 @@ +/* + * 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, { memo, useCallback, useMemo, useState } from 'react'; +import { SearchBar } from '@kbn/unified-search-plugin/public'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import { + BooleanRelation, + buildEsQuery, + isCombinedFilter, + buildCombinedFilter, + isFilter, + FilterStateStore, +} from '@kbn/es-query'; +import type { Filter, Query, TimeRange, PhraseFilter } from '@kbn/es-query'; +import { css } from '@emotion/react'; +import { getEsQueryConfig } from '@kbn/data-service'; +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { Graph } from '../../..'; +import { useGraphNodeExpandPopover } from './use_graph_node_expand_popover'; +import { useFetchGraphData } from '../../hooks/use_fetch_graph_data'; +import { GRAPH_INVESTIGATION_TEST_ID } from '../test_ids'; +import { ACTOR_ENTITY_ID, RELATED_ENTITY, TARGET_ENTITY_ID } from '../../common/constants'; + +const CONTROLLED_BY_GRAPH_INVESTIGATION_FILTER = 'graph-investigation'; + +const buildPhraseFilter = (field: string, value: string, dataViewId?: string): PhraseFilter => ({ + meta: { + key: field, + index: dataViewId, + negate: false, + disabled: false, + type: 'phrase', + field, + controlledBy: CONTROLLED_BY_GRAPH_INVESTIGATION_FILTER, + params: { + query: value, + }, + }, + query: { + match_phrase: { + [field]: value, + }, + }, +}); + +/** + * Adds a filter to the existing list of filters based on the provided key and value. + * It will always use the first filter in the list to build a combined filter with the new filter. + * + * @param dataViewId - The ID of the data view to which the filter belongs. + * @param prev - The previous list of filters. + * @param key - The key for the filter. + * @param value - The value for the filter. + * @returns A new list of filters with the added filter. + */ +const addFilter = (dataViewId: string, prev: Filter[], key: string, value: string) => { + const [firstFilter, ...otherFilters] = prev; + + if (isCombinedFilter(firstFilter) && firstFilter?.meta?.relation === BooleanRelation.OR) { + return [ + { + ...firstFilter, + meta: { + ...firstFilter.meta, + params: [ + ...(Array.isArray(firstFilter.meta.params) ? firstFilter.meta.params : []), + buildPhraseFilter(key, value), + ], + }, + }, + ...otherFilters, + ]; + } else if (isFilter(firstFilter) && firstFilter.meta?.type !== 'custom') { + return [ + buildCombinedFilter(BooleanRelation.OR, [firstFilter, buildPhraseFilter(key, value)], { + id: dataViewId, + }), + ...otherFilters, + ]; + } else { + return [ + { + $state: { + store: FilterStateStore.APP_STATE, + }, + ...buildPhraseFilter(key, value, dataViewId), + }, + ...prev, + ]; + } +}; + +const useGraphPopovers = ( + dataViewId: string, + setSearchFilters: React.Dispatch<React.SetStateAction<Filter[]>> +) => { + const nodeExpandPopover = useGraphNodeExpandPopover({ + onExploreRelatedEntitiesClick: (node) => { + setSearchFilters((prev) => addFilter(dataViewId, prev, RELATED_ENTITY, node.id)); + }, + onShowActionsByEntityClick: (node) => { + setSearchFilters((prev) => addFilter(dataViewId, prev, ACTOR_ENTITY_ID, node.id)); + }, + onShowActionsOnEntityClick: (node) => { + setSearchFilters((prev) => addFilter(dataViewId, prev, TARGET_ENTITY_ID, node.id)); + }, + }); + + const openPopoverCallback = useCallback( + (cb: Function, ...args: unknown[]) => { + [nodeExpandPopover].forEach(({ actions: { closePopover } }) => { + closePopover(); + }); + cb(...args); + }, + [nodeExpandPopover] + ); + + return { nodeExpandPopover, openPopoverCallback }; +}; + +interface GraphInvestigationProps { + dataView: DataView; + eventIds: string[]; + timestamp: string | null; +} + +/** + * Graph investigation view allows the user to expand nodes and view related entities. + */ +export const GraphInvestigation: React.FC<GraphInvestigationProps> = memo( + ({ dataView, eventIds, timestamp = new Date().toISOString() }: GraphInvestigationProps) => { + const [searchFilters, setSearchFilters] = useState<Filter[]>(() => []); + const [timeRange, setTimeRange] = useState<TimeRange>({ + from: `${timestamp}||-30m`, + to: `${timestamp}||+30m`, + }); + + const { + services: { uiSettings }, + } = useKibana(); + const query = useMemo( + () => + buildEsQuery( + dataView, + [], + [...searchFilters], + getEsQueryConfig(uiSettings as Parameters<typeof getEsQueryConfig>[0]) + ), + [searchFilters, dataView, uiSettings] + ); + + const { nodeExpandPopover, openPopoverCallback } = useGraphPopovers( + dataView?.id ?? '', + setSearchFilters + ); + const expandButtonClickHandler = (...args: unknown[]) => + openPopoverCallback(nodeExpandPopover.onNodeExpandButtonClick, ...args); + const isPopoverOpen = [nodeExpandPopover].some(({ state: { isOpen } }) => isOpen); + const { data, refresh, isFetching } = useFetchGraphData({ + req: { + query: { + eventIds, + esQuery: query, + start: timeRange.from, + end: timeRange.to, + }, + }, + options: { + refetchOnWindowFocus: false, + keepPreviousData: true, + }, + }); + + const nodes = useMemo(() => { + return ( + data?.nodes.map((node) => { + const nodeHandlers = + node.shape !== 'label' && node.shape !== 'group' + ? { + expandButtonClick: expandButtonClickHandler, + } + : undefined; + return { ...node, ...nodeHandlers }; + }) ?? [] + ); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [data?.nodes]); + + return ( + <> + <EuiFlexGroup + data-test-subj={GRAPH_INVESTIGATION_TEST_ID} + direction="column" + gutterSize="none" + css={css` + height: 100%; + `} + > + {dataView && ( + <EuiFlexItem grow={false}> + <SearchBar<Query> + {...{ + appName: 'graph-investigation', + intl: null, + showFilterBar: true, + showDatePicker: true, + showAutoRefreshOnly: false, + showSaveQuery: false, + showQueryInput: false, + isLoading: isFetching, + isAutoRefreshDisabled: true, + dateRangeFrom: timeRange.from, + dateRangeTo: timeRange.to, + query: { query: '', language: 'kuery' }, + indexPatterns: [dataView], + filters: searchFilters, + submitButtonStyle: 'iconOnly', + onFiltersUpdated: (newFilters) => { + setSearchFilters(newFilters); + }, + onQuerySubmit: (payload, isUpdate) => { + if (isUpdate) { + setTimeRange({ ...payload.dateRange }); + } else { + refresh(); + } + }, + }} + /> + </EuiFlexItem> + )} + <EuiFlexItem> + <Graph + css={css` + height: 100%; + width: 100%; + `} + nodes={nodes} + edges={data?.edges ?? []} + interactive={true} + isLocked={isPopoverOpen} + /> + </EuiFlexItem> + </EuiFlexGroup> + <nodeExpandPopover.PopoverComponent /> + </> + ); + } +); + +GraphInvestigation.displayName = 'GraphInvestigation'; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_node_expand_popover.tsx b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_node_expand_popover.tsx new file mode 100644 index 0000000000000..c22f8dbe51ace --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/graph_node_expand_popover.tsx @@ -0,0 +1,78 @@ +/* + * 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, { memo } from 'react'; +import { EuiListGroup } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { ExpandPopoverListItem } from '../styles'; +import { GraphPopover } from '../../..'; +import { + GRAPH_NODE_EXPAND_POPOVER_TEST_ID, + GRAPH_NODE_POPOVER_SHOW_RELATED_ITEM_ID, + GRAPH_NODE_POPOVER_SHOW_ACTIONS_BY_ITEM_ID, + GRAPH_NODE_POPOVER_SHOW_ACTIONS_ON_ITEM_ID, +} from '../test_ids'; + +interface GraphNodeExpandPopoverProps { + isOpen: boolean; + anchorElement: HTMLElement | null; + closePopover: () => void; + onShowRelatedEntitiesClick: () => void; + onShowActionsByEntityClick: () => void; + onShowActionsOnEntityClick: () => void; +} + +export const GraphNodeExpandPopover: React.FC<GraphNodeExpandPopoverProps> = memo( + ({ + isOpen, + anchorElement, + closePopover, + onShowRelatedEntitiesClick, + onShowActionsByEntityClick, + onShowActionsOnEntityClick, + }) => { + return ( + <GraphPopover + panelPaddingSize="s" + anchorPosition="rightCenter" + isOpen={isOpen} + anchorElement={anchorElement} + closePopover={closePopover} + data-test-subj={GRAPH_NODE_EXPAND_POPOVER_TEST_ID} + > + <EuiListGroup gutterSize="none" bordered={false} flush={true}> + <ExpandPopoverListItem + iconType="users" + label={i18n.translate('xpack.csp.graph.graphNodeExpandPopover.showActionsByEntity', { + defaultMessage: 'Show actions by this entity', + })} + onClick={onShowActionsByEntityClick} + data-test-subj={GRAPH_NODE_POPOVER_SHOW_ACTIONS_BY_ITEM_ID} + /> + <ExpandPopoverListItem + iconType="storage" + label={i18n.translate('xpack.csp.graph.graphNodeExpandPopover.showActionsOnEntity', { + defaultMessage: 'Show actions on this entity', + })} + onClick={onShowActionsOnEntityClick} + data-test-subj={GRAPH_NODE_POPOVER_SHOW_ACTIONS_ON_ITEM_ID} + /> + <ExpandPopoverListItem + iconType="visTagCloud" + label={i18n.translate('xpack.csp.graph.graphNodeExpandPopover.showRelatedEvents', { + defaultMessage: 'Show related events', + })} + onClick={onShowRelatedEntitiesClick} + data-test-subj={GRAPH_NODE_POPOVER_SHOW_RELATED_ITEM_ID} + /> + </EuiListGroup> + </GraphPopover> + ); + } +); + +GraphNodeExpandPopover.displayName = 'GraphNodeExpandPopover'; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/use_graph_node_expand_popover.tsx b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/use_graph_node_expand_popover.tsx new file mode 100644 index 0000000000000..90e8f66510cc0 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_investigation/use_graph_node_expand_popover.tsx @@ -0,0 +1,107 @@ +/* + * 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, { memo, useCallback, useRef, useState } from 'react'; +import { useGraphPopover } from '../../..'; +import type { ExpandButtonClickCallback, NodeProps } from '../types'; +import { GraphNodeExpandPopover } from './graph_node_expand_popover'; + +interface UseGraphNodeExpandPopoverArgs { + onExploreRelatedEntitiesClick: (node: NodeProps) => void; + onShowActionsByEntityClick: (node: NodeProps) => void; + onShowActionsOnEntityClick: (node: NodeProps) => void; +} + +export const useGraphNodeExpandPopover = ({ + onExploreRelatedEntitiesClick, + onShowActionsByEntityClick, + onShowActionsOnEntityClick, +}: UseGraphNodeExpandPopoverArgs) => { + const { id, state, actions } = useGraphPopover('node-expand-popover'); + const { openPopover, closePopover } = actions; + + const selectedNode = useRef<NodeProps | null>(null); + const unToggleCallbackRef = useRef<(() => void) | null>(null); + const [pendingOpen, setPendingOpen] = useState<{ + node: NodeProps; + el: HTMLElement; + unToggleCallback: () => void; + } | null>(null); + + // Handler to close the popover, reset selected node and unToggle callback + const closePopoverHandler = useCallback(() => { + selectedNode.current = null; + unToggleCallbackRef.current?.(); + unToggleCallbackRef.current = null; + closePopover(); + }, [closePopover]); + + /** + * Handles the click event on the node expand button. + * Closes the current popover if open and sets the pending open state + * if the clicked node is different from the currently selected node. + */ + const onNodeExpandButtonClick: ExpandButtonClickCallback = useCallback( + (e, node, unToggleCallback) => { + // Close the current popover if open + closePopoverHandler(); + + if (selectedNode.current?.id !== node.id) { + // Set the pending open state + setPendingOpen({ node, el: e.currentTarget, unToggleCallback }); + } + }, + [closePopoverHandler] + ); + + // PopoverComponent is a memoized component that renders the GraphNodeExpandPopover + // It handles the display of the popover and the actions that can be performed on the node + const PopoverComponent = memo(() => ( + <GraphNodeExpandPopover + isOpen={state.isOpen} + anchorElement={state.anchorElement} + closePopover={closePopoverHandler} + onShowRelatedEntitiesClick={() => { + onExploreRelatedEntitiesClick(selectedNode.current as NodeProps); + closePopoverHandler(); + }} + onShowActionsByEntityClick={() => { + onShowActionsByEntityClick(selectedNode.current as NodeProps); + closePopoverHandler(); + }} + onShowActionsOnEntityClick={() => { + onShowActionsOnEntityClick(selectedNode.current as NodeProps); + closePopoverHandler(); + }} + /> + )); + + // Open pending popover if the popover is not open + // This block checks if there is a pending popover to be opened. + // If the popover is not currently open and there is a pending popover, + // it sets the selected node, stores the unToggle callback, and opens the popover. + if (!state.isOpen && pendingOpen) { + const { node, el, unToggleCallback } = pendingOpen; + + selectedNode.current = node; + unToggleCallbackRef.current = unToggleCallback; + openPopover(el); + + setPendingOpen(null); + } + + return { + onNodeExpandButtonClick, + PopoverComponent, + id, + actions: { + ...actions, + closePopover: closePopoverHandler, + }, + state, + }; +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.test.tsx b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.test.tsx new file mode 100644 index 0000000000000..77da232f27bd3 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.test.tsx @@ -0,0 +1,93 @@ +/* + * 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 { composeStories } from '@storybook/testing-react'; +import { render } from '@testing-library/react'; +import React from 'react'; +import * as stories from './graph_layout.stories'; + +const { GraphLargeStackedEdgeCases } = composeStories(stories); + +const TRANSLATE_XY_REGEX = + /translate\(\s*([+-]?\d+(\.\d+)?)(px|%)?\s*,\s*([+-]?\d+(\.\d+)?)(px|%)?\s*\)/; + +interface Rect { + left: number; + top: number; + right: number; + bottom: number; +} + +const getLabelRect = (el: HTMLElement): Rect | undefined => { + const match = el.style.transform.match(TRANSLATE_XY_REGEX); + + if (!match || match.length < 5) { + return; + } + + return { + left: Number(match[1]), + right: Number(match[1]) + 120, + top: Number(match[4]), + bottom: Number(match[4]) + 32, + }; +}; + +const rectIntersect = (rect1: Rect, rect2: Rect) => { + return !( + rect1.top > rect2.bottom || + rect1.right < rect2.left || + rect1.bottom < rect2.top || + rect1.left > rect2.right + ); +}; + +describe('GraphLargeStackedEdgeCases story', () => { + it('all labels should be visible', async () => { + const { getAllByText } = render(<GraphLargeStackedEdgeCases />); + + const labels = GraphLargeStackedEdgeCases.args?.nodes?.filter((node) => node.shape === 'label'); + + // With JSDOM toBeVisible can't check if elements are visually obscured by other overlapping elements + // This is a workaround which gives a rough estimation of a label's bounding rectangle and check for intersections + const labelsBoundingRect: Rect[] = []; + const labelElements: Set<string> = new Set(); + + for (const { label } of labels ?? []) { + // Get all label nodes that contains the label's text + const allLabelElements = getAllByText( + (_content, element) => element?.textContent === `${label!}`, + { + exact: true, + selector: 'div.react-flow__node-label', + } + ); + expect(allLabelElements.length).toBeGreaterThan(0); + + for (const labelElm of allLabelElements) { + const id = labelElm.getAttribute('data-id'); + + // Same label can appear more than once in the graph, so we skip them if already scanned + if (labelElements.has(id!)) { + continue; + } + labelElements.add(id!); + + expect(labelElm).toBeVisible(); + const labelRect = getLabelRect(labelElm); + expect(labelRect).not.toBeUndefined(); + + // Checks if current rect intersects with other labels + for (const currRect of labelsBoundingRect) { + expect(rectIntersect(currRect, labelRect!)).toBeFalsy(); + } + + labelsBoundingRect.push(labelRect!); + } + } + }); +}); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.tsx b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.tsx index 140e81238d390..e576a5abf030e 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.tsx +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/graph_layout.stories.tsx @@ -503,3 +503,31 @@ GraphStackedEdgeCases.args = { }, ]), }; + +export const GraphLargeStackedEdgeCases = Template.bind({}); + +GraphLargeStackedEdgeCases.args = { + ...extractEdges([ + ...baseGraph, + ...Array(10) + .fill(0) + .map<EnhancedNodeViewModel>((_v, idx) => ({ + id: 'a(oktauser)-b(hackeruser)', + source: 'oktauser', + target: 'hackeruser', + label: 'CreateUser' + idx, + color: 'primary', + shape: 'label', + })), + ...Array(10) + .fill(0) + .map<EnhancedNodeViewModel>((_v, idx) => ({ + id: 'a(siem-windows)-b(user)', + source: 'siem-windows', + target: 'user', + label: 'User login to OKTA' + idx, + color: 'danger', + shape: 'label', + })), + ]), +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/index.ts b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/index.ts index 2b050aa55429f..d3cd397764e60 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/index.ts +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/index.ts @@ -6,6 +6,7 @@ */ export { Graph } from './graph/graph'; +export { GraphInvestigation } from './graph_investigation/graph_investigation'; export { GraphPopover } from './graph/graph_popover'; export { useGraphPopover } from './graph/use_graph_popover'; export type { GraphProps } from './graph/graph'; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/node_expand_button.tsx b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/node_expand_button.tsx index 522b7d1b5d45b..07581c1e3d3dd 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/node_expand_button.tsx +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/node/node_expand_button.tsx @@ -35,6 +35,7 @@ export const NodeExpandButton = ({ x, y, onClick }: NodeExpandButtonProps) => { onClick={onClickHandler} iconSize="m" aria-label="Open or close node actions" + data-test-subj="nodeExpandButton" /> </StyledNodeExpandButton> ); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/styles.tsx b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/styles.tsx index 0efff1c88456c..be776d57be12a 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/styles.tsx +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/styles.tsx @@ -6,13 +6,16 @@ */ import React from 'react'; +import type { + EuiIconProps, + _EuiBackgroundColor, + CommonProps, + EuiListGroupItemProps, +} from '@elastic/eui'; import { - EuiIcon, useEuiBackgroundColor, useEuiTheme, - type EuiIconProps, - type _EuiBackgroundColor, - EuiListGroupItemProps, + EuiIcon, EuiListGroupItem, EuiText, } from '@elastic/eui'; @@ -59,22 +62,24 @@ const RoundedEuiIcon: React.FC<RoundedEuiIconProps> = ({ color, background, ...r ); export const ExpandPopoverListItem: React.FC< - Pick<EuiListGroupItemProps, 'iconType' | 'label' | 'onClick'> + CommonProps & Pick<EuiListGroupItemProps, 'iconType' | 'label' | 'onClick'> > = (props) => { + const { iconType, label, onClick, ...rest } = props; const { euiTheme } = useEuiTheme(); return ( <EuiListGroupItem + {...rest} icon={ - props.iconType ? ( - <RoundedEuiIcon color="primary" background="primary" type={props.iconType} size="s" /> + iconType ? ( + <RoundedEuiIcon color="primary" background="primary" type={iconType} size="s" /> ) : undefined } label={ <EuiText size="s" color={euiTheme.colors.primaryText}> - {props.label} + {label} </EuiText> } - onClick={props.onClick} + onClick={onClick} /> ); }; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/components/test_ids.ts b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/test_ids.ts new file mode 100644 index 0000000000000..96e399d670907 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/components/test_ids.ts @@ -0,0 +1,18 @@ +/* + * 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 PREFIX = 'cloudSecurityGraph' as const; + +export const GRAPH_INVESTIGATION_TEST_ID = `${PREFIX}GraphInvestigation` as const; +export const GRAPH_NODE_EXPAND_POPOVER_TEST_ID = + `${GRAPH_INVESTIGATION_TEST_ID}GraphNodeExpandPopover` as const; +export const GRAPH_NODE_POPOVER_SHOW_RELATED_ITEM_ID = + `${GRAPH_INVESTIGATION_TEST_ID}ExploreRelatedEntities` as const; +export const GRAPH_NODE_POPOVER_SHOW_ACTIONS_BY_ITEM_ID = + `${GRAPH_INVESTIGATION_TEST_ID}ShowActionsByEntity` as const; +export const GRAPH_NODE_POPOVER_SHOW_ACTIONS_ON_ITEM_ID = + `${GRAPH_INVESTIGATION_TEST_ID}ShowActionsOnEntity` as const; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/hooks/index.ts b/x-pack/packages/kbn-cloud-security-posture/graph/src/hooks/index.ts new file mode 100644 index 0000000000000..6d75dc8beefee --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/hooks/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 { useFetchGraphData } from './use_fetch_graph_data'; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.test.tsx b/x-pack/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.test.tsx new file mode 100644 index 0000000000000..e494ff0957ecb --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.test.tsx @@ -0,0 +1,118 @@ +/* + * 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 { renderHook } from '@testing-library/react-hooks'; +import { useFetchGraphData } from './use_fetch_graph_data'; + +const mockUseQuery = jest.fn(); + +jest.mock('@tanstack/react-query', () => { + return { + useQuery: (...args: unknown[]) => mockUseQuery(...args), + useQueryClient: jest.fn(), + }; +}); + +const defaultOptions = { + enabled: true, + refetchOnWindowFocus: true, + keepPreviousData: false, +}; + +describe('useFetchGraphData', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should pass default options when options are not provided', () => { + renderHook(() => { + return useFetchGraphData({ + req: { + query: { + eventIds: [], + start: '2021-09-01T00:00:00.000Z', + end: '2021-09-01T23:59:59.999Z', + }, + }, + }); + }); + + expect(mockUseQuery.mock.calls).toHaveLength(1); + expect(mockUseQuery.mock.calls[0][2]).toEqual({ + ...defaultOptions, + }); + }); + + it('should not be enabled when enabled set to false', () => { + renderHook(() => { + return useFetchGraphData({ + req: { + query: { + eventIds: [], + start: '2021-09-01T00:00:00.000Z', + end: '2021-09-01T23:59:59.999Z', + }, + }, + options: { + enabled: false, + }, + }); + }); + + expect(mockUseQuery.mock.calls).toHaveLength(1); + expect(mockUseQuery.mock.calls[0][2]).toEqual({ + ...defaultOptions, + enabled: false, + }); + }); + + it('should not be refetchOnWindowFocus when refetchOnWindowFocus set to false', () => { + renderHook(() => { + return useFetchGraphData({ + req: { + query: { + eventIds: [], + start: '2021-09-01T00:00:00.000Z', + end: '2021-09-01T23:59:59.999Z', + }, + }, + options: { + refetchOnWindowFocus: false, + }, + }); + }); + + expect(mockUseQuery.mock.calls).toHaveLength(1); + expect(mockUseQuery.mock.calls[0][2]).toEqual({ + ...defaultOptions, + refetchOnWindowFocus: false, + }); + }); + + it('should keepPreviousData when keepPreviousData set to true', () => { + renderHook(() => { + return useFetchGraphData({ + req: { + query: { + eventIds: [], + start: '2021-09-01T00:00:00.000Z', + end: '2021-09-01T23:59:59.999Z', + }, + }, + options: { + keepPreviousData: true, + }, + }); + }); + + expect(mockUseQuery.mock.calls).toHaveLength(1); + expect(mockUseQuery.mock.calls[0][2]).toEqual({ + ...defaultOptions, + keepPreviousData: true, + }); + }); +}); diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.ts b/x-pack/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.ts new file mode 100644 index 0000000000000..74cca4693e801 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/graph/src/hooks/use_fetch_graph_data.ts @@ -0,0 +1,121 @@ +/* + * 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 { useMemo } from 'react'; +import { useQuery, useQueryClient } from '@tanstack/react-query'; +import type { + GraphRequest, + GraphResponse, +} from '@kbn/cloud-security-posture-common/types/graph/latest'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { EVENT_GRAPH_VISUALIZATION_API } from '../common/constants'; + +/** + * Interface for the input parameters of the useFetchGraphData hook. + */ +export interface UseFetchGraphDataParams { + /** + * The request object containing the query parameters for the graph data. + */ + req: GraphRequest; + /** + * Optional configuration options for the query. + */ + options?: { + /** + * If false, the query will not automatically run. + * Defaults to true. + */ + enabled?: boolean; + /** + * If true, the query will refetch on window focus. + * Defaults to true. + */ + refetchOnWindowFocus?: boolean; + /** + * If true, the query will keep previous data till new data received. + * Defaults to false. + */ + keepPreviousData?: boolean; + }; +} + +/** + * Interface for the result of the useFetchGraphData hook. + */ +export interface UseFetchGraphDataResult { + /** + * Indicates if the query is currently being fetched for the first time. + */ + isLoading: boolean; + /** + * Indicates if the query is currently being fetched. Regardless of whether it is the initial fetch or a refetch. + */ + isFetching: boolean; + /** + * Indicates if there was an error during the query. + */ + isError: boolean; + /** + * The data returned from the query. + */ + data?: GraphResponse; + /** + * Function to manually refresh the query. + */ + refresh: () => void; +} + +/** + * Hook to fetch event's graph visualization data. + * + * @param params - The input parameters for the hook. + * @returns The result of the hook. + */ +export const useFetchGraphData = ({ + req, + options, +}: UseFetchGraphDataParams): UseFetchGraphDataResult => { + const queryClient = useQueryClient(); + const { esQuery, eventIds, start, end } = req.query; + const { + services: { http }, + } = useKibana(); + const QUERY_KEY = useMemo( + () => ['useFetchGraphData', eventIds, start, end, esQuery], + [end, esQuery, eventIds, start] + ); + + const { isLoading, isError, data, isFetching } = useQuery<GraphResponse>( + QUERY_KEY, + () => { + if (!http) { + return Promise.reject(new Error('Http service is not available')); + } + + return http.post<GraphResponse>(EVENT_GRAPH_VISUALIZATION_API, { + version: '1', + body: JSON.stringify(req), + }); + }, + { + enabled: options?.enabled ?? true, + refetchOnWindowFocus: options?.refetchOnWindowFocus ?? true, + keepPreviousData: options?.keepPreviousData ?? false, + } + ); + + return { + isLoading, + isFetching, + isError, + data, + refresh: () => { + queryClient.invalidateQueries(QUERY_KEY); + }, + }; +}; diff --git a/x-pack/packages/kbn-cloud-security-posture/graph/tsconfig.json b/x-pack/packages/kbn-cloud-security-posture/graph/tsconfig.json index d0056e29e6784..e56b9aabf16a9 100644 --- a/x-pack/packages/kbn-cloud-security-posture/graph/tsconfig.json +++ b/x-pack/packages/kbn-cloud-security-posture/graph/tsconfig.json @@ -12,7 +12,13 @@ ], "kbn_references": [ "@kbn/cloud-security-posture-common", - "@kbn/utility-types", + "@kbn/data-views-plugin", + "@kbn/kibana-react-plugin", "@kbn/ui-theme", + "@kbn/utility-types", + "@kbn/unified-search-plugin", + "@kbn/es-query", + "@kbn/data-service", + "@kbn/i18n", ] } diff --git a/x-pack/packages/kbn-cloud-security-posture/storybook/config/babel_with_emotion.ts b/x-pack/packages/kbn-cloud-security-posture/storybook/config/babel_with_emotion.ts new file mode 100644 index 0000000000000..7512a5bba8737 --- /dev/null +++ b/x-pack/packages/kbn-cloud-security-posture/storybook/config/babel_with_emotion.ts @@ -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 babelJest from 'babel-jest'; + +// eslint-disable-next-line import/no-default-export +export default babelJest.createTransformer({ + presets: [ + [ + require.resolve('@kbn/babel-preset/node_preset'), + { + '@babel/preset-env': { + // disable built-in filtering, which is more performant but strips the import of `regenerator-runtime` required by EUI + useBuiltIns: false, + corejs: false, + }, + }, + ], + ], + plugins: ['@emotion'], +}); diff --git a/x-pack/packages/kbn-data-forge/jest.config.js b/x-pack/packages/kbn-data-forge/jest.config.js deleted file mode 100644 index d1a6e79c73a62..0000000000000 --- a/x-pack/packages/kbn-data-forge/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/kbn-data-forge'], -}; diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generate.sh b/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generate.sh deleted file mode 100755 index 76221bba3ad34..0000000000000 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generate.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -cd ../../../../../../../../ecs - -BASE=../kibana/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts -ECS=$BASE/ecs - -python3 ./scripts/generator.py --ref v8.0.0 \ - --subset $ECS/fields/subset.yml \ - --include $ECS/fields/custom \ - --out $ECS/ \ - --template-settings-legacy $ECS/fields/template-settings-legacy.json \ - --template-settings $ECS/fields/template-settings.json \ - --mapping-settings $ECS/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generate.sh b/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generate.sh deleted file mode 100755 index da992a32c79d6..0000000000000 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generate.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -cd ../../../../../../../../ecs - -BASE=../kibana/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs -ECS=$BASE/ecs - -python3 ./scripts/generator.py --ref v8.0.0 \ - --subset $ECS/fields/subset.yml \ - --include $ECS/fields/custom \ - --out $ECS/ \ - --template-settings-legacy $ECS/fields/template-settings-legacy.json \ - --template-settings $ECS/fields/template-settings.json \ - --mapping-settings $ECS/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generate.sh b/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generate.sh deleted file mode 100755 index 8cfa4b8956f2b..0000000000000 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generate.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -cd ../../../../../../../../../ecs -NAME=admin_console - -BASE=../kibana/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/$NAME -ECS=$BASE/ecs - -python3 ./scripts/generator.py --ref v8.0.0 \ - --subset $ECS/fields/subset.yml \ - --out $ECS/ \ - --template-settings-legacy $ECS/fields/template-settings-legacy.json \ - --template-settings $ECS/fields/template-settings.json \ - --mapping-settings $ECS/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generate.sh b/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generate.sh deleted file mode 100755 index dcbf7e9be9de7..0000000000000 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generate.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -cd ../../../../../../../../../ecs -NAME=heartbeat - -BASE=../kibana/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/$NAME -ECS=$BASE/ecs - -python3 ./scripts/generator.py --ref v8.0.0 \ - --subset $ECS/fields/subset.yml \ - --out $ECS/ \ - --template-settings-legacy $ECS/fields/template-settings-legacy.json \ - --template-settings $ECS/fields/template-settings.json \ - --mapping-settings $ECS/fields/mapping-settings.json - diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generate.sh b/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generate.sh deleted file mode 100755 index 8e2778b740f0d..0000000000000 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generate.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -cd ../../../../../../../../../ecs -NAME=message_processor - -BASE=../kibana/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/$NAME -ECS=$BASE/ecs - -python3 ./scripts/generator.py --ref v8.0.0 \ - --subset $ECS/fields/subset.yml \ - --include $ECS/fields/custom \ - --out $ECS/ \ - --template-settings-legacy $ECS/fields/template-settings-legacy.json \ - --template-settings $ECS/fields/template-settings.json \ - --mapping-settings $ECS/fields/mapping-settings.json - diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generate.sh b/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generate.sh deleted file mode 100755 index af8cbb8ec6252..0000000000000 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generate.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -cd ../../../../../../../../../ecs -NAME=mongodb - -BASE=../kibana/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/$NAME -ECS=$BASE/ecs - -python3 ./scripts/generator.py --ref v8.0.0 \ - --subset $ECS/fields/subset.yml \ - --include $ECS/fields/custom \ - --out $ECS/ \ - --template-settings-legacy $ECS/fields/template-settings-legacy.json \ - --template-settings $ECS/fields/template-settings.json \ - --mapping-settings $ECS/fields/mapping-settings.json - diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generate.sh b/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generate.sh deleted file mode 100755 index 151e98b97fed3..0000000000000 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generate.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -cd ../../../../../../../../../ecs -NAME=nginx_proxy - -BASE=../kibana/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/$NAME -ECS=$BASE/ecs - -python3 ./scripts/generator.py --ref v8.0.0 \ - --subset $ECS/fields/subset.yml \ - --out $ECS/ \ - --template-settings-legacy $ECS/fields/template-settings-legacy.json \ - --template-settings $ECS/fields/template-settings.json \ - --mapping-settings $ECS/fields/mapping-settings.json - diff --git a/x-pack/packages/kbn-data-forge/tsconfig.json b/x-pack/packages/kbn-data-forge/tsconfig.json deleted file mode 100644 index ba7e509700917..0000000000000 --- a/x-pack/packages/kbn-data-forge/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - "./src/**/*.json" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/tooling-log", - "@kbn/datemath", - "@kbn/safer-lodash-set", - "@kbn/dev-utils" - ] -} diff --git a/x-pack/packages/kbn-elastic-assistant-common/README.md b/x-pack/packages/kbn-elastic-assistant-common/README.md deleted file mode 100644 index 973bc975c7da6..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant-common/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# @kbn/elastic-assistant-common - -This package provides common code consumed in both the browser, i.e. the -`packages/kbn-elastic-assistant` package and `plugins/security_solution` plugin, and on the server, i.e. the -`plugins/elastic_assistant` plugin. - -For example, the data anonymization functions exported by this package -are be used in both the browser, and on the server. - -## Maintainers - -Maintained by the Security Solution team - -## Running unit tests with code coverage - -To (interactively) run unit tests with code coverage, run the following command: - -```sh -cd $KIBANA_HOME && node scripts/jest --watch x-pack/packages/kbn-elastic-assistant-common --coverage -``` - -## OpenAPI Codegen - -Implemented using the new OpenAPI codegen and bundle packages: -* Includes OpenAPI codegen script and CI action as detailed in: https://github.com/elastic/kibana/pull/166269 -* Includes OpenAPI docs bundling script as detailed in: https://github.com/elastic/kibana/pull/171526 - -To run codegen/bundling locally, cd to `x-pack/packages/kbn-elastic-assistant-common/` and run any of the following commands: - -```bash -yarn openapi:generate -yarn openapi:generate:debug -yarn openapi:bundle -``` - -Codegen is configured to run on CI by means of the `.buildkite/scripts/steps/code_generation/elastic_assistant_codegen.sh` script, which is run as part of the `checks` pipeline, and is registered in `.buildkite/scripts/steps/checks.sh`. diff --git a/x-pack/packages/kbn-elastic-assistant-common/env/README.md b/x-pack/packages/kbn-elastic-assistant-common/env/README.md deleted file mode 100644 index b90d83aaca812..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant-common/env/README.md +++ /dev/null @@ -1,33 +0,0 @@ -With https://github.com/elastic/kibana/pull/186566, we've introduced a few sample `*.http` files for easier development/testing. These files are supported out of the box in JetBrains IDE's or in VSCode with the [httpyac](https://httpyac.github.io/) (and many other) extensions. Since the configuration for these files includes a `-` in the name, a few @elastic/kibana-operations files have been updated to exclude them from checks and being included in the distribution. - -You can read more about `http` files [here](https://www.jetbrains.com/help/webstorm/http-client-in-product-code-editor.html) and for the spec see this repo [here](https://github.com/JetBrains/http-request-in-editor-spec/blob/master/spec.md). If we find these useful, we could add support to our [OpenAPI Generator](https://openapi-generator.tech/docs/generators/jetbrains-http-client) to create these automatically. They currently live co-located next to the OAS and generated schema files here: - -``` -x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.http -x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.http -``` - -and the main config here in this directory: - -``` -x-pack/packages/kbn-elastic-assistant-common/env/http-client.env.json -``` - -The `x-pack/packages/kbn-elastic-assistant-common/.gitignore` has been updated to ignore `http-client.private.env.json` files locally, which is how you can override the config as you'd like. This is helpful to add variables like `basePath` as below: - -``` -{ - "dev": { - "basePath": "/kbn" - } -} -``` - -To use them, just open the corresponding `*.http` for the API you want to test, and click `Send`, and the response will open in another tab. Here is what that looks like for creating one of the new `IndexEntry` KB documents that have been introduced in the initial PR: - -<p align="center"> - <img width="500" src="https://github.com/user-attachments/assets/c9e70d1a-28d2-4eb3-9853-ab6d8e1c7acf" /> -</p> - - -For continuing this effort, https://github.com/elastic/kibana/issues/192386 has been created. diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/README.md b/x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/README.md deleted file mode 100644 index 5a471245e0449..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/README.md +++ /dev/null @@ -1,51 +0,0 @@ -### Feature Capabilities - -Feature capabilities are an object describing specific capabilities of the assistant, like whether a feature like streaming is enabled, and are defined in the sibling `./index.ts` file within this `kbn-elastic-assistant-common` package. These capabilities can be registered for a given plugin through the assistant server, and so do not need to be plumbed through the `ElasticAssistantProvider`. - -Storage and accessor functions are made available via the `AppContextService`, and exposed to clients via the`/internal/elastic_assistant/capabilities` route, which can be fetched by clients using the `useCapabilities()` UI hook. - -### Registering Capabilities - -To register a capability on plugin start, add the following in the consuming plugin's `start()`, specifying any number of capabilities you would like to explicitly declare: - -```ts -plugins.elasticAssistant.registerFeatures(APP_UI_ID, { - assistantModelEvaluation: config.experimentalFeatures.assistantModelEvaluation, - assistantStreamingEnabled: config.experimentalFeatures.assistantStreamingEnabled, -}); -``` - -### Declaring Feature Capabilities -Default feature capabilities are declared in `x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/index.ts`: - -```ts -export type AssistantFeatures = { [K in keyof typeof defaultAssistantFeatures]: boolean }; - -export const defaultAssistantFeatures = Object.freeze({ - assistantModelEvaluation: false, - assistantStreamingEnabled: false, -}); -``` - -### Using Capabilities Client Side -Capabilities can be fetched client side using the `useCapabilities()` hook ala: - -```ts -const { data: capabilities } = useCapabilities({ http, toasts }); -const { assistantModelEvaluation: modelEvaluatorEnabled, assistantStreamingEnabled } = capabilities ?? defaultAssistantFeatures; -``` - -### Using Capabilities Server Side -Or server side within a route (or elsewhere) via the `assistantContext`: - -```ts -const assistantContext = await context.elasticAssistant; -const pluginName = getPluginNameFromRequest({ request, logger }); -const registeredFeatures = assistantContext.getRegisteredFeatures(pluginName); -if (!registeredFeatures.assistantModelEvaluation) { - return response.notFound(); -} -``` - -> [!NOTE] -> Note, just as with [registering arbitrary tools](https://github.com/elastic/kibana/pull/172234), features are registered for a specific plugin, where the plugin name that corresponds to your application is defined in the `x-kbn-context` header of requests made from your application, which may be different than your plugin's registered `APP_ID`. diff --git a/x-pack/packages/kbn-elastic-assistant-common/jest.config.js b/x-pack/packages/kbn-elastic-assistant-common/jest.config.js deleted file mode 100644 index 1da38998cc4d2..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant-common/jest.config.js +++ /dev/null @@ -1,23 +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. - */ - -module.exports = { - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_elastic_assistant_common_impl', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/packages/kbn-elastic-assistant-common/impl/**/*.{ts,tsx}', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant-common/impl/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant-common/impl/*mock*.{ts,tsx}', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant-common/impl/*.test.{ts,tsx}', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant-common/impl/*.d.ts', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant-common/impl/*.config.ts', - ], - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/kbn-elastic-assistant-common'], -}; diff --git a/x-pack/packages/kbn-elastic-assistant-common/scripts/openapi/bundle.js b/x-pack/packages/kbn-elastic-assistant-common/scripts/openapi/bundle.js deleted file mode 100644 index b06776be03a4b..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant-common/scripts/openapi/bundle.js +++ /dev/null @@ -1,63 +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. - */ - -require('../../../../../src/setup_node_env'); -const { bundle } = require('@kbn/openapi-bundler'); -// eslint-disable-next-line import/no-nodejs-modules -const { join, resolve } = require('path'); - -const ELASTIC_ASSISTANT_ROOT = resolve(__dirname, '../..'); - -(async () => { - await bundle({ - sourceGlob: join(ELASTIC_ASSISTANT_ROOT, 'impl/schemas/**/*.schema.yaml'), - outputFilePath: join( - ELASTIC_ASSISTANT_ROOT, - 'docs/openapi/serverless/elastic_assistant_api_{version}.bundled.schema.yaml' - ), - options: { - includeLabels: ['serverless'], - prototypeDocument: { - info: { - title: 'Security AI Assistant API (Elastic Cloud Serverless)', - description: 'Manage and interact with Security Assistant resources.', - }, - tags: [ - { - name: 'Security AI Assistant API', - 'x-displayName': 'Security AI assistant', - description: 'Manage and interact with Security Assistant resources.', - }, - ], - }, - }, - }); - - await bundle({ - sourceGlob: join(ELASTIC_ASSISTANT_ROOT, 'impl/schemas/**/*.schema.yaml'), - outputFilePath: join( - ELASTIC_ASSISTANT_ROOT, - 'docs/openapi/ess/elastic_assistant_api_{version}.bundled.schema.yaml' - ), - options: { - includeLabels: ['ess'], - prototypeDocument: { - info: { - title: 'Security AI Assistant API (Elastic Cloud & self-hosted)', - description: 'Manage and interact with Security Assistant resources.', - }, - tags: [ - { - name: 'Security AI Assistant API', - 'x-displayName': 'Security AI assistant', - description: 'Manage and interact with Security Assistant resources.', - }, - ], - }, - }, - }); -})(); diff --git a/x-pack/packages/kbn-elastic-assistant-common/scripts/openapi/generate.js b/x-pack/packages/kbn-elastic-assistant-common/scripts/openapi/generate.js deleted file mode 100644 index dd17ecef2fb31..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant-common/scripts/openapi/generate.js +++ /dev/null @@ -1,19 +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. - */ - -require('../../../../../src/setup_node_env'); -const { generate } = require('@kbn/openapi-generator'); -// eslint-disable-next-line import/no-nodejs-modules -const { resolve } = require('path'); - -const ELASTIC_ASSISTANT_ROOT = resolve(__dirname, '../..'); - -generate({ - rootDir: ELASTIC_ASSISTANT_ROOT, - sourceGlob: './impl/schemas/**/*.schema.yaml', - templateName: 'zod_operation_schema', -}); diff --git a/x-pack/packages/kbn-elastic-assistant-common/tsconfig.json b/x-pack/packages/kbn-elastic-assistant-common/tsconfig.json deleted file mode 100644 index b9f4da3d1f1dc..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant-common/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/zod-helpers", - "@kbn/securitysolution-io-ts-utils", - "@kbn/core", - "@kbn/logging", - "@kbn/zod", - ] -} diff --git a/x-pack/packages/kbn-elastic-assistant/README.md b/x-pack/packages/kbn-elastic-assistant/README.md deleted file mode 100644 index 0d0a848e536c7..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# @kbn/elastic-assistant - -The `Elastic Assistant` is a user interface for interacting with generative AIs, like `ChatGPT`. - -This package provides: - -- Components for rendering the `Elastic Assistant` -- Hooks for passing context (for example, fields in an alert) to the `Elastic Assistant`, enabling users to include this content in their queries - -## Maintainers - -Maintained by the Security Solution team - -## Running unit tests with code coverage - -To (interactively) run unit tests with code coverage, run the following command: - -```sh -cd $KIBANA_HOME && node scripts/jest --watch x-pack/packages/kbn-elastic-assistant --coverage -``` diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.test.tsx deleted file mode 100644 index 7e87ca79e88ab..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.test.tsx +++ /dev/null @@ -1,83 +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 { act, renderHook } from '@testing-library/react-hooks'; - -import { - DeleteConversationParams, - GetConversationByIdParams, - deleteConversation, - getConversationById, -} from './conversations'; -import { HttpSetupMock } from '@kbn/core-http-browser-mocks'; -import { coreMock } from '@kbn/core/public/mocks'; - -let http: HttpSetupMock = coreMock.createSetup().http; - -const toasts = { - addError: jest.fn(), -}; - -describe('conversations api', () => { - beforeEach(() => { - jest.clearAllMocks(); - http = coreMock.createSetup().http; - }); - - it('should call api to delete conversation', async () => { - await act(async () => { - const deleteProps = { http, toasts, id: 'test' } as unknown as DeleteConversationParams; - - const { waitForNextUpdate } = renderHook(() => deleteConversation(deleteProps)); - await waitForNextUpdate(); - - expect(deleteProps.http.fetch).toHaveBeenCalledWith( - '/api/security_ai_assistant/current_user/conversations/test', - { - method: 'DELETE', - signal: undefined, - version: '2023-10-31', - } - ); - expect(toasts.addError).not.toHaveBeenCalled(); - }); - }); - - it('should display error toast when delete api throws error', async () => { - http.fetch.mockRejectedValue(new Error('this is an error')); - const deleteProps = { http, toasts, id: 'test' } as unknown as DeleteConversationParams; - - await expect(deleteConversation(deleteProps)).rejects.toThrowError('this is an error'); - expect(toasts.addError).toHaveBeenCalled(); - }); - - it('should call api to get conversation', async () => { - await act(async () => { - const getProps = { http, toasts, id: 'test' } as unknown as GetConversationByIdParams; - const { waitForNextUpdate } = renderHook(() => getConversationById(getProps)); - await waitForNextUpdate(); - - expect(getProps.http.fetch).toHaveBeenCalledWith( - '/api/security_ai_assistant/current_user/conversations/test', - { - method: 'GET', - signal: undefined, - version: '2023-10-31', - } - ); - expect(toasts.addError).not.toHaveBeenCalled(); - }); - }); - - it('should display error toast when get api throws error', async () => { - http.fetch.mockRejectedValue(new Error('this is an error')); - const getProps = { http, toasts, id: 'test' } as unknown as GetConversationByIdParams; - - await expect(getConversationById(getProps)).rejects.toThrowError('this is an error'); - expect(toasts.addError).toHaveBeenCalled(); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.test.tsx deleted file mode 100644 index 83073b5770ba0..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.test.tsx +++ /dev/null @@ -1,103 +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 { act, renderHook } from '@testing-library/react-hooks'; -import { useKnowledgeBaseStatus, UseKnowledgeBaseStatusParams } from './use_knowledge_base_status'; -import { getKnowledgeBaseStatus as _getKnowledgeBaseStatus } from './api'; - -const getKnowledgeBaseStatusMock = _getKnowledgeBaseStatus as jest.Mock; - -jest.mock('./api', () => { - const actual = jest.requireActual('./api'); - return { - ...actual, - getKnowledgeBaseStatus: jest.fn((...args) => actual.getKnowledgeBaseStatus(...args)), - }; -}); - -jest.mock('@tanstack/react-query', () => ({ - useQuery: jest.fn().mockImplementation(async (queryKey, fn, opts) => { - try { - const res = await fn({}); - return Promise.resolve(res); - } catch (e) { - opts.onError(e); - } - }), -})); - -const statusResponse = { - elser_exists: true, - index_exists: true, - pipeline_exists: true, - security_labs_exists: true, -}; - -const http = { - fetch: jest.fn().mockResolvedValue(statusResponse), -}; -const toasts = { - addError: jest.fn(), -}; -const defaultProps = { http, toasts } as unknown as UseKnowledgeBaseStatusParams; -describe('useKnowledgeBaseStatus', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - it('should call api to get knowledge base status without resource arg', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useKnowledgeBaseStatus(defaultProps)); - await waitForNextUpdate(); - - expect(defaultProps.http.fetch).toHaveBeenCalledWith( - '/internal/elastic_assistant/knowledge_base/', - { - method: 'GET', - signal: undefined, - version: '1', - } - ); - expect(toasts.addError).not.toHaveBeenCalled(); - }); - }); - it('should call api to get knowledge base status with resource arg', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => - useKnowledgeBaseStatus({ ...defaultProps, resource: 'something' }) - ); - await waitForNextUpdate(); - - expect(defaultProps.http.fetch).toHaveBeenCalledWith( - '/internal/elastic_assistant/knowledge_base/something', - { - method: 'GET', - signal: undefined, - version: '1', - } - ); - }); - }); - - it('should return status response', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useKnowledgeBaseStatus(defaultProps)); - await waitForNextUpdate(); - - await expect(result.current).resolves.toStrictEqual(statusResponse); - }); - }); - - it('should display error toast when api throws error', async () => { - getKnowledgeBaseStatusMock.mockRejectedValue(new Error('this is an error')); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useKnowledgeBaseStatus(defaultProps)); - await waitForNextUpdate(); - - expect(toasts.addError).toHaveBeenCalled(); - }); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx deleted file mode 100644 index 0c66b412fc5d2..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx +++ /dev/null @@ -1,49 +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 React, { ReactNode } from 'react'; - -export interface AssistantAvatarProps { - size?: keyof typeof sizeMap; - // Required for EuiAvatar `iconType` prop - // eslint-disable-next-line react/no-unused-prop-types - children?: ReactNode; - className?: string; -} - -export const sizeMap = { - xl: 64, - l: 48, - m: 32, - s: 24, - xs: 16, - xxs: 12, -}; - -/** - * Default Elastic AI Assistant logo - * - * TODO: Can be removed once added to EUI - */ -export const AssistantAvatar = ({ className, size = 's' }: AssistantAvatarProps) => ( - <svg - className={className} - xmlns="http://www.w3.org/2000/svg" - width={sizeMap[size]} - height={sizeMap[size]} - viewBox="0 0 64 64" - fill="none" - > - <path fill="#F04E98" d="M36 28h24v36H36V28Z" /> - <path fill="#00BFB3" d="M4 46c0-9.941 8.059-18 18-18h6v36h-6c-9.941 0-18-8.059-18-18Z" /> - <path - fill="#343741" - d="M60 12c0 6.627-5.373 12-12 12s-12-5.373-12-12S41.373 0 48 0s12 5.373 12 12Z" - /> - <path fill="#FA744E" d="M6 23C6 10.85 15.85 1 28 1v22H6Z" /> - </svg> -); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx deleted file mode 100644 index b9457e5cfea68..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx +++ /dev/null @@ -1,147 +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 React, { useCallback, useEffect, useRef, useState } from 'react'; -import { EuiFlyoutResizable } from '@elastic/eui'; - -import useEvent from 'react-use/lib/useEvent'; -import { css } from '@emotion/react'; -// eslint-disable-next-line @kbn/eslint/module_migration -import { createGlobalStyle } from 'styled-components'; -import { ShowAssistantOverlayProps, useAssistantContext } from '../../assistant_context'; -import { Assistant, CONVERSATION_SIDE_PANEL_WIDTH } from '..'; - -const isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0; - -/** - * Modal container for Elastic AI Assistant conversations, receiving the page contents as context, plus whatever - * component currently has focus and any specific context it may provide through the SAssInterface. - */ - -export const UnifiedTimelineGlobalStyles = createGlobalStyle` - body:has(.timeline-portal-overlay-mask) .euiOverlayMask { - z-index: 1003 !important; - } -`; - -export const AssistantOverlay = React.memo(() => { - const [isModalVisible, setIsModalVisible] = useState(false); - // Why is this named Title and not Id? - const [conversationTitle, setConversationTitle] = useState<string | undefined>(undefined); - const [promptContextId, setPromptContextId] = useState<string | undefined>(); - const { assistantTelemetry, setShowAssistantOverlay, getLastConversationId } = - useAssistantContext(); - - const [chatHistoryVisible, setChatHistoryVisible] = useState(false); - - // Bind `showAssistantOverlay` in SecurityAssistantContext to this modal instance - const showOverlay = useCallback( - () => - ({ - showOverlay: so, - promptContextId: pid, - conversationTitle: cTitle, - }: ShowAssistantOverlayProps) => { - const conversationId = getLastConversationId(cTitle); - if (so) assistantTelemetry?.reportAssistantInvoked({ conversationId, invokedBy: 'click' }); - - setIsModalVisible(so); - setPromptContextId(pid); - setConversationTitle(conversationId); - }, - [assistantTelemetry, getLastConversationId] - ); - useEffect(() => { - setShowAssistantOverlay(showOverlay); - }, [setShowAssistantOverlay, showOverlay]); - - // Called whenever platform specific shortcut for assistant is pressed - const handleShortcutPress = useCallback(() => { - // Try to restore the last conversation on shortcut pressed - if (!isModalVisible) { - setConversationTitle(getLastConversationId()); - assistantTelemetry?.reportAssistantInvoked({ - invokedBy: 'shortcut', - conversationId: getLastConversationId(), - }); - } - - setIsModalVisible(!isModalVisible); - }, [isModalVisible, getLastConversationId, assistantTelemetry]); - - // Register keyboard listener to show the modal when cmd + ; is pressed - const onKeyDown = useCallback( - (event: KeyboardEvent) => { - if (event.key === ';' && (isMac ? event.metaKey : event.ctrlKey)) { - event.preventDefault(); - handleShortcutPress(); - } - }, - [handleShortcutPress] - ); - useEvent('keydown', onKeyDown); - - // Modal control functions - const cleanupAndCloseModal = useCallback(() => { - setIsModalVisible(false); - setPromptContextId(undefined); - setConversationTitle(conversationTitle); - }, [conversationTitle]); - - const handleCloseModal = useCallback(() => { - cleanupAndCloseModal(); - }, [cleanupAndCloseModal]); - - const toggleChatHistory = useCallback(() => { - setChatHistoryVisible((prev) => { - if (flyoutRef?.current) { - const currentValue = parseInt(flyoutRef.current.style.inlineSize.split('px')[0], 10); - flyoutRef.current.style.inlineSize = `${ - prev - ? currentValue - CONVERSATION_SIDE_PANEL_WIDTH - : currentValue + CONVERSATION_SIDE_PANEL_WIDTH - }px`; - } - - return !prev; - }); - }, []); - - const flyoutRef = useRef<HTMLDivElement>(); - - if (!isModalVisible) return null; - - return ( - <> - <EuiFlyoutResizable - ref={flyoutRef} - css={css` - max-inline-size: calc(100% - 20px); - min-inline-size: 400px; - > div { - height: 100%; - } - `} - onClose={handleCloseModal} - data-test-subj="ai-assistant-flyout" - paddingSize="none" - hideCloseButton - > - <Assistant - conversationTitle={conversationTitle} - promptContextId={promptContextId} - onCloseFlyout={handleCloseModal} - chatHistoryVisible={chatHistoryVisible} - setChatHistoryVisible={toggleChatHistory} - /> - </EuiFlyoutResizable> - <UnifiedTimelineGlobalStyles /> - </> - ); -}); - -AssistantOverlay.displayName = 'AssistantOverlay'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.test.tsx deleted file mode 100644 index e3a6ab1fc75b5..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.test.tsx +++ /dev/null @@ -1,281 +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 { act, renderHook } from '@testing-library/react-hooks'; - -import { DEFAULT_LATEST_ALERTS } from '../../../assistant_context/constants'; -import { alertConvo, welcomeConvo } from '../../../mock/conversation'; -import { useSettingsUpdater } from './use_settings_updater'; -import { defaultQuickPrompt, mockSystemPrompt } from '../../../mock/system_prompt'; -import { HttpSetup } from '@kbn/core/public'; -import { PromptResponse } from '@kbn/elastic-assistant-common'; - -const mockConversations = { - [alertConvo.title]: alertConvo, - [welcomeConvo.title]: welcomeConvo, -}; -const conversationsLoaded = false; -const promptsLoaded = false; - -const mockHttp = { - fetch: jest.fn(), -} as unknown as HttpSetup; - -const mockSystemPrompts: PromptResponse[] = [mockSystemPrompt]; -const mockQuickPrompts: PromptResponse[] = [defaultQuickPrompt]; - -const anonymizationFields = { - total: 2, - page: 1, - perPage: 1000, - data: [ - { id: 'allow1', field: 'allow1', allowed: true, anonymized: false }, - { id: 'replacement1', field: 'replacement1', allowed: false, anonymized: true }, - ], -}; - -const setAssistantStreamingEnabled = jest.fn(); -const setKnowledgeBaseMock = jest.fn(); -const reportAssistantSettingToggled = jest.fn(); -const setUpdatedAnonymizationData = jest.fn(); -const mockValues = { - assistantStreamingEnabled: true, - setAssistantStreamingEnabled, - assistantTelemetry: { reportAssistantSettingToggled }, - allSystemPrompts: mockSystemPrompts, - allQuickPrompts: mockQuickPrompts, - knowledgeBase: { - latestAlerts: DEFAULT_LATEST_ALERTS, - }, - baseConversations: {}, - setKnowledgeBase: setKnowledgeBaseMock, - http: mockHttp, - anonymizationFieldsBulkActions: {}, -}; - -const updatedValues = { - conversations: { ...mockConversations }, - allSystemPrompts: [mockSystemPrompt], - allQuickPrompts: [ - { - consumer: 'securitySolutionUI', - content: - 'You are a helpful, expert assistant who answers questions about Elastic Security. Do not answer questions unrelated to Elastic Security.\nIf you answer a question related to KQL or EQL, it should be immediately usable within an Elastic Security timeline; please always format the output correctly with back ticks. Any answer provided for Query DSL should also be usable in a security timeline. This means you should only ever include the "filter" portion of the query.\nUse the following context to answer questions:', - id: 'default-system-prompt', - name: 'Default system prompt', - promptType: 'quick', - color: 'red', - }, - ], - updatedAnonymizationData: { - total: 2, - page: 1, - perPage: 1000, - data: [ - { id: 'allow2', field: 'allow2', allowed: true, anonymized: false }, - { id: 'replacement2', field: 'replacement2', allowed: false, anonymized: true }, - ], - }, - knowledgeBase: { - latestAlerts: DEFAULT_LATEST_ALERTS + 10, - }, - assistantStreamingEnabled: false, -}; - -jest.mock('../../../assistant_context', () => { - const original = jest.requireActual('../../../assistant_context'); - return { - ...original, - useAssistantContext: jest.fn().mockImplementation(() => mockValues), - }; -}); - -describe('useSettingsUpdater', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - it('should set all state variables to their initial values when resetSettings is called', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => - useSettingsUpdater( - mockConversations, - { - data: [...mockSystemPrompts, ...mockQuickPrompts], - page: 1, - perPage: 100, - total: 10, - }, - conversationsLoaded, - promptsLoaded, - anonymizationFields - ) - ); - await waitForNextUpdate(); - const { - setConversationSettings, - setConversationsSettingsBulkActions, - setUpdatedKnowledgeBaseSettings, - setUpdatedAssistantStreamingEnabled, - resetSettings, - setPromptsBulkActions, - } = result.current; - - setConversationSettings(updatedValues.conversations); - setConversationsSettingsBulkActions({}); - setPromptsBulkActions({}); - setUpdatedAnonymizationData(updatedValues.updatedAnonymizationData); - setUpdatedKnowledgeBaseSettings(updatedValues.knowledgeBase); - setUpdatedAssistantStreamingEnabled(updatedValues.assistantStreamingEnabled); - - expect(result.current.conversationSettings).toEqual(updatedValues.conversations); - expect(result.current.quickPromptSettings).toEqual(updatedValues.allQuickPrompts); - expect(result.current.systemPromptSettings).toEqual(updatedValues.allSystemPrompts); - expect(result.current.updatedAnonymizationData).toEqual(anonymizationFields); - expect(result.current.knowledgeBase).toEqual(updatedValues.knowledgeBase); - expect(result.current.assistantStreamingEnabled).toEqual( - updatedValues.assistantStreamingEnabled - ); - - resetSettings(); - - expect(result.current.conversationSettings).toEqual(mockConversations); - expect(result.current.quickPromptSettings).toEqual(mockValues.allQuickPrompts); - expect(result.current.systemPromptSettings).toEqual(mockValues.allSystemPrompts); - expect(result.current.anonymizationFieldsBulkActions).toEqual( - mockValues.anonymizationFieldsBulkActions - ); - expect(result.current.knowledgeBase).toEqual(mockValues.knowledgeBase); - expect(result.current.assistantStreamingEnabled).toEqual( - mockValues.assistantStreamingEnabled - ); - }); - }); - - it('should update all state variables to their updated values when saveSettings is called', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => - useSettingsUpdater( - mockConversations, - { - data: mockSystemPrompts, - page: 1, - perPage: 100, - total: 10, - }, - conversationsLoaded, - promptsLoaded, - anonymizationFields - ) - ); - await waitForNextUpdate(); - const { - setConversationSettings, - setConversationsSettingsBulkActions, - setAnonymizationFieldsBulkActions, - setUpdatedKnowledgeBaseSettings, - setPromptsBulkActions, - } = result.current; - - setConversationSettings(updatedValues.conversations); - setConversationsSettingsBulkActions({ delete: { ids: ['1'] } }); - setAnonymizationFieldsBulkActions({ delete: { ids: ['1'] } }); - setPromptsBulkActions({}); - setUpdatedAnonymizationData(updatedValues.updatedAnonymizationData); - setUpdatedKnowledgeBaseSettings(updatedValues.knowledgeBase); - - await result.current.saveSettings(); - - expect(mockHttp.fetch).toHaveBeenCalledWith( - '/internal/elastic_assistant/current_user/conversations/_bulk_action', - { - method: 'POST', - version: '1', - body: '{"delete":{"ids":["1"]}}', - } - ); - expect(setUpdatedAnonymizationData).toHaveBeenCalledWith( - updatedValues.updatedAnonymizationData - ); - expect(setKnowledgeBaseMock).toHaveBeenCalledWith(updatedValues.knowledgeBase); - }); - }); - it('should track when alerts count is updated', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => - useSettingsUpdater( - mockConversations, - { - data: mockSystemPrompts, - page: 1, - perPage: 100, - total: 10, - }, - conversationsLoaded, - promptsLoaded, - anonymizationFields - ) - ); - await waitForNextUpdate(); - const { setUpdatedKnowledgeBaseSettings } = result.current; - - setUpdatedKnowledgeBaseSettings({ - ...updatedValues.knowledgeBase, - }); - await result.current.saveSettings(); - expect(reportAssistantSettingToggled).toHaveBeenCalledWith({ alertsCountUpdated: true }); - }); - }); - it('should track when streaming is updated', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => - useSettingsUpdater( - mockConversations, - { - data: mockSystemPrompts, - page: 1, - perPage: 100, - total: 10, - }, - conversationsLoaded, - promptsLoaded, - anonymizationFields - ) - ); - await waitForNextUpdate(); - const { setUpdatedAssistantStreamingEnabled } = result.current; - - setUpdatedAssistantStreamingEnabled(false); - await result.current.saveSettings(); - expect(reportAssistantSettingToggled).toHaveBeenCalledWith({ - assistantStreamingEnabled: false, - }); - }); - }); - it('if no settings update, do not track anything', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => - useSettingsUpdater( - mockConversations, - { - data: mockSystemPrompts, - page: 1, - perPage: 100, - total: 10, - }, - conversationsLoaded, - promptsLoaded, - anonymizationFields - ) - ); - await waitForNextUpdate(); - const { setUpdatedKnowledgeBaseSettings } = result.current; - - setUpdatedKnowledgeBaseSettings(mockValues.knowledgeBase); - await result.current.saveSettings(); - expect(reportAssistantSettingToggled).not.toHaveBeenCalledWith(); - }); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.test.tsx deleted file mode 100644 index 780ffcbd9a323..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.test.tsx +++ /dev/null @@ -1,238 +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 { act, renderHook } from '@testing-library/react-hooks'; -import { DefinedUseQueryResult } from '@tanstack/react-query'; - -import { useAssistantOverlay } from '.'; -import { waitFor } from '@testing-library/react'; -import { useFetchCurrentUserConversations } from '../api'; -import { Conversation } from '../../assistant_context/types'; -import { mockConnectors } from '../../mock/connectors'; - -const mockUseAssistantContext = { - registerPromptContext: jest.fn(), - showAssistantOverlay: jest.fn(), - unRegisterPromptContext: jest.fn(), -}; -jest.mock('../../assistant_context', () => { - const original = jest.requireActual('../../assistant_context'); - - return { - ...original, - useAssistantContext: () => mockUseAssistantContext, - }; -}); -jest.mock('../api/conversations/use_fetch_current_user_conversations'); -const mockCreateConversation = jest.fn().mockResolvedValue({ id: 'conversation-id' }); -jest.mock('../use_conversation', () => { - return { - useConversation: jest.fn(() => ({ - createConversation: mockCreateConversation, - currentConversation: { id: 'conversation-id' }, - })), - }; -}); - -jest.mock('../../connectorland/helpers'); -jest.mock('../../connectorland/use_load_connectors', () => { - return { - useLoadConnectors: jest.fn(() => ({ - data: mockConnectors, - error: null, - isSuccess: true, - })), - }; -}); - -const mockData = { - welcome_id: { - id: 'welcome_id', - title: 'Welcome', - category: 'assistant', - messages: [], - apiConfig: { connectorId: '123' }, - replacements: {}, - }, - electric_sheep_id: { - id: 'electric_sheep_id', - category: 'assistant', - title: 'electric sheep', - messages: [], - apiConfig: { connectorId: '123' }, - replacements: {}, - }, -}; - -describe('useAssistantOverlay', () => { - beforeEach(() => { - jest.clearAllMocks(); - jest.mocked(useFetchCurrentUserConversations).mockReturnValue({ - data: mockData, - isLoading: false, - refetch: jest.fn().mockResolvedValue({ - isLoading: false, - data: { - ...mockData, - welcome_id: { - ...mockData.welcome_id, - apiConfig: { newProp: true }, - }, - }, - }), - isFetched: true, - } as unknown as DefinedUseQueryResult<Record<string, Conversation>, unknown>); - }); - - it('calls registerPromptContext with the expected context', async () => { - const category = 'event'; - const description = 'test description'; - const getPromptContext = jest.fn(() => Promise.resolve('test data')); - const id = 'test-id'; - const suggestedUserPrompt = 'test user prompt'; - const tooltip = 'test tooltip'; - const isAssistantAvailable = true; - - renderHook(() => - useAssistantOverlay( - category, - null, - description, - getPromptContext, - id, - suggestedUserPrompt, - tooltip, - isAssistantAvailable - ) - ); - - await waitFor(() => { - expect(mockUseAssistantContext.registerPromptContext).toHaveBeenCalledWith({ - category, - description, - getPromptContext, - id, - suggestedUserPrompt, - tooltip, - }); - }); - }); - - it('calls unRegisterPromptContext on unmount', () => { - const isAssistantAvailable = true; - const { unmount } = renderHook(() => - useAssistantOverlay( - 'event', - null, - 'description', - () => Promise.resolve('data'), - 'id', - null, - 'tooltip', - isAssistantAvailable - ) - ); - - unmount(); - - expect(mockUseAssistantContext.unRegisterPromptContext).toHaveBeenCalledWith('id'); - }); - - it('calls `showAssistantOverlay` from the assistant context', () => { - const isAssistantAvailable = true; - const { result } = renderHook(() => - useAssistantOverlay( - 'event', - 'conversation-id', - 'description', - () => Promise.resolve('data'), - 'id', - null, - 'tooltip', - isAssistantAvailable - ) - ); - - act(() => { - result.current.showAssistantOverlay(true); - }); - - expect(mockCreateConversation).not.toHaveBeenCalled(); - expect(mockUseAssistantContext.showAssistantOverlay).toHaveBeenCalledWith({ - showOverlay: true, - promptContextId: 'id', - conversationTitle: 'conversation-id', - }); - }); - - it('calls `showAssistantOverlay` and creates a new conversation when shouldCreateConversation: true and the conversation does not exist', async () => { - const isAssistantAvailable = true; - const { result } = renderHook(() => - useAssistantOverlay( - 'event', - 'conversation-id', - 'description', - () => Promise.resolve('data'), - 'id', - null, - 'tooltip', - isAssistantAvailable - ) - ); - - act(() => { - result.current.showAssistantOverlay(true, true); - }); - - expect(mockCreateConversation).toHaveBeenCalledWith({ - title: 'conversation-id', - apiConfig: { - actionTypeId: '.gen-ai', - connectorId: 'connectorId', - }, - category: 'assistant', - }); - - await waitFor(() => { - expect(mockUseAssistantContext.showAssistantOverlay).toHaveBeenCalledWith({ - showOverlay: true, - promptContextId: 'id', - conversationTitle: 'conversation-id', - }); - }); - }); - - it('calls `showAssistantOverlay` and does not create a new conversation when shouldCreateConversation: true and the conversation exists', async () => { - const isAssistantAvailable = true; - const { result } = renderHook(() => - useAssistantOverlay( - 'event', - 'electric sheep', - 'description', - () => Promise.resolve('data'), - 'id', - null, - 'tooltip', - isAssistantAvailable - ) - ); - - act(() => { - result.current.showAssistantOverlay(true, true); - }); - - expect(mockCreateConversation).not.toHaveBeenCalled(); - - await waitFor(() => { - expect(mockUseAssistantContext.showAssistantOverlay).toHaveBeenCalledWith({ - showOverlay: true, - promptContextId: 'id', - conversationTitle: 'electric sheep', - }); - }); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx deleted file mode 100644 index 696a2e41b37c2..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx +++ /dev/null @@ -1,132 +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 { useConversation } from '.'; -import { act, renderHook } from '@testing-library/react-hooks'; -import { TestProviders } from '../../mock/test_providers/test_providers'; -import React from 'react'; -import { MessageRole } from '@kbn/elastic-assistant-common'; -import { httpServiceMock } from '@kbn/core/public/mocks'; -import { WELCOME_CONVERSATION } from './sample_conversations'; -import { - deleteConversation, - getConversationById as _getConversationById, - createConversation as _createConversationApi, -} from '../api/conversations'; - -jest.mock('../api/conversations'); -const message = { - content: 'You are a robot', - role: 'user' as MessageRole, - timestamp: '10/04/2023, 1:00:36 PM', -}; -const anotherMessage = { - content: 'I am a robot', - role: 'assistant' as MessageRole, - timestamp: '10/04/2023, 1:00:46 PM', -}; - -const mockConvo = { - id: 'new-convo', - title: 'new-convo', - messages: [message, anotherMessage], - apiConfig: { - connectorId: '123', - actionTypeId: '.gen-ai', - defaultSystemPromptId: 'default-system-prompt', - }, -}; - -const getConversationById = _getConversationById as jest.Mock; -const createConversation = _createConversationApi as jest.Mock; - -describe('useConversation', () => { - let httpMock: ReturnType<typeof httpServiceMock.createSetupContract>; - - beforeEach(() => { - httpMock = httpServiceMock.createSetupContract(); - - jest.clearAllMocks(); - }); - - it('should create a new conversation when called with valid conversationId and message', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useConversation(), { - wrapper: ({ children }: React.PropsWithChildren<{}>) => ( - <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> - ), - }); - await waitForNextUpdate(); - createConversation.mockResolvedValue(mockConvo); - - const createResult = await result.current.createConversation({ - ...mockConvo, - replacements: {}, - title: mockConvo.title, - category: 'assistant', - }); - - expect(createResult).toEqual(mockConvo); - }); - }); - - it('should delete an existing conversation when called with valid conversationId', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useConversation(), { - wrapper: ({ children }: React.PropsWithChildren<{}>) => ( - <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> - ), - }); - await waitForNextUpdate(); - - await result.current.deleteConversation('new-convo'); - - expect(deleteConversation).toHaveBeenCalledWith({ - http: httpMock, - id: 'new-convo', - }); - }); - }); - - it('should update the apiConfig for an existing conversation when called with a valid conversationId and apiConfig', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useConversation(), { - wrapper: ({ children }: React.PropsWithChildren<{}>) => ( - <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> - ), - }); - await waitForNextUpdate(); - - await result.current.setApiConfig({ - conversation: WELCOME_CONVERSATION, - apiConfig: mockConvo.apiConfig, - }); - - expect(createConversation).toHaveBeenCalledWith({ - http: httpMock, - conversation: { ...WELCOME_CONVERSATION, apiConfig: mockConvo.apiConfig, id: '' }, - }); - }); - }); - - it('should remove the last message from a conversation when called with valid conversationId', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useConversation(), { - wrapper: ({ children }: React.PropsWithChildren<{}>) => ( - <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> - ), - }); - await waitForNextUpdate(); - - getConversationById.mockResolvedValue(mockConvo); - - const removeResult = await result.current.removeLastMessage('new-convo'); - - expect(removeResult).toEqual([message]); - }); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.test.tsx deleted file mode 100644 index 0f04068a89ca2..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.test.tsx +++ /dev/null @@ -1,376 +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 { renderHook, act } from '@testing-library/react-hooks'; -import { useCurrentConversation, Props } from '.'; -import { useConversation } from '../use_conversation'; -import deepEqual from 'fast-deep-equal'; -import { Conversation } from '../../..'; -import { find } from 'lodash'; - -// Mock dependencies -jest.mock('../use_conversation'); -jest.mock('../helpers'); -jest.mock('fast-deep-equal'); -jest.mock('lodash'); -const mockData = { - welcome_id: { - id: 'welcome_id', - title: 'Welcome', - category: 'assistant', - messages: [], - apiConfig: { - connectorId: '123', - actionTypeId: '.gen-ai', - defaultSystemPromptId: 'system-prompt-id', - }, - replacements: {}, - }, - electric_sheep_id: { - id: 'electric_sheep_id', - category: 'assistant', - title: 'electric sheep', - messages: [], - apiConfig: { connectorId: '123', actionTypeId: '.gen-ai' }, - replacements: {}, - }, -}; -describe('useCurrentConversation', () => { - const mockUseConversation = { - createConversation: jest.fn(), - deleteConversation: jest.fn(), - getConversation: jest.fn(), - getDefaultConversation: jest.fn(), - setApiConfig: jest.fn(), - }; - - beforeEach(() => { - jest.clearAllMocks(); - (useConversation as jest.Mock).mockReturnValue(mockUseConversation); - (deepEqual as jest.Mock).mockReturnValue(false); - (find as jest.Mock).mockReturnValue(undefined); - }); - - const defaultProps: Props = { - // @ts-ignore not exact system prompt type, ok for test - allSystemPrompts: [{ id: 'system-prompt-id' }, { id: 'something-crazy' }], - conversationId: '', - conversations: {}, - mayUpdateConversations: true, - refetchCurrentUserConversations: jest.fn().mockResolvedValue({ data: mockData }), - }; - - const setupHook = (props: Partial<Props> = {}) => { - return renderHook(() => useCurrentConversation({ ...defaultProps, ...props })); - }; - - it('should initialize with correct default values', () => { - const { result } = setupHook(); - - expect(result.current.currentConversation).toBeUndefined(); - expect(result.current.currentSystemPrompt).toBeUndefined(); - }); - - it('should set the current system prompt ID when the prompt selection changes', async () => { - const conversationId = 'welcome_id'; - const conversation = mockData.welcome_id; - mockUseConversation.getConversation.mockResolvedValue(conversation); - - const { result } = setupHook({ - conversationId, - conversations: { [conversationId]: conversation }, - }); - - await act(async () => { - await result.current.setCurrentSystemPromptId('prompt-id'); - }); - - expect(mockUseConversation.setApiConfig).toHaveBeenCalledWith({ - conversation, - apiConfig: { - ...conversation.apiConfig, - defaultSystemPromptId: 'prompt-id', - }, - }); - expect(defaultProps.refetchCurrentUserConversations).toHaveBeenCalled(); - }); - - it('should fetch and set the current conversation', async () => { - const conversationId = 'welcome_id'; - const conversation = mockData.welcome_id; - mockUseConversation.getConversation.mockResolvedValue(conversation); - - const { result } = setupHook({ - conversationId, - conversations: { [conversationId]: conversation }, - }); - - await act(async () => { - await result.current.refetchCurrentConversation({ cId: conversationId }); - }); - - expect(result.current.currentConversation).toEqual(conversation); - }); - - it('should handle conversation selection', async () => { - const conversationId = 'test-id'; - const conversationTitle = 'Test Conversation'; - const conversation = { - ...mockData.welcome_id, - id: conversationId, - title: conversationTitle, - apiConfig: { - ...mockData.welcome_id.apiConfig, - defaultSystemPromptId: 'something-crazy', - }, - } as Conversation; - const mockConversations = { - ...mockData, - [conversationId]: conversation, - }; - (find as jest.Mock).mockReturnValue(conversation); - - const { result } = setupHook({ - conversationId: mockData.welcome_id.id, - conversations: mockConversations, - refetchCurrentUserConversations: jest.fn().mockResolvedValue({ - data: mockConversations, - }), - }); - - await act(async () => { - await result.current.handleOnConversationSelected({ - cId: conversationId, - cTitle: conversationTitle, - }); - }); - - expect(result.current.currentConversation).toEqual(conversation); - expect(result.current.currentSystemPrompt?.id).toBe('something-crazy'); - }); - - it('should non-existing handle conversation selection', async () => { - const conversationId = 'test-id'; - const conversationTitle = 'Test Conversation'; - const conversation = { - ...mockData.welcome_id, - id: conversationId, - title: conversationTitle, - } as Conversation; - const mockConversations = { - ...mockData, - [conversationId]: conversation, - }; - (find as jest.Mock).mockReturnValue(conversation); - - const { result } = setupHook({ - conversationId: mockData.welcome_id.id, - conversations: mockConversations, - refetchCurrentUserConversations: jest.fn().mockResolvedValue({ - data: mockConversations, - }), - }); - - await act(async () => { - await result.current.handleOnConversationSelected({ - cId: 'bad', - cTitle: 'bad', - }); - }); - - expect(result.current.currentConversation).toEqual(mockData.welcome_id); - expect(result.current.currentSystemPrompt?.id).toBe('system-prompt-id'); - }); - - it('should create a new conversation', async () => { - const newConversation = { - ...mockData.welcome_id, - id: 'new-id', - title: 'NEW_CHAT', - messages: [], - } as Conversation; - mockUseConversation.createConversation.mockResolvedValue(newConversation); - - const { result } = setupHook({ - conversations: { - 'old-id': { - ...mockData.welcome_id, - id: 'old-id', - title: 'Old Chat', - messages: [], - } as Conversation, - }, - refetchCurrentUserConversations: jest.fn().mockResolvedValue({ - data: { - 'old-id': { - ...mockData.welcome_id, - id: 'old-id', - title: 'Old Chat', - messages: [], - } as Conversation, - [newConversation.id]: newConversation, - }, - }), - }); - - await act(async () => { - await result.current.handleCreateConversation(); - }); - - expect(mockUseConversation.createConversation).toHaveBeenCalled(); - }); - - it('should create a new conversation using the connector portion of the apiConfig of the current conversation', async () => { - const newConversation = { - ...mockData.welcome_id, - id: 'new-id', - title: 'NEW_CHAT', - messages: [], - } as Conversation; - mockUseConversation.createConversation.mockResolvedValue(newConversation); - - const { result } = setupHook({ - conversations: { - 'old-id': { - ...mockData.welcome_id, - id: 'old-id', - title: 'Old Chat', - messages: [], - } as Conversation, - }, - conversationId: 'old-id', - refetchCurrentUserConversations: jest.fn().mockResolvedValue({ - data: { - 'old-id': { - ...mockData.welcome_id, - id: 'old-id', - title: 'Old Chat', - messages: [], - } as Conversation, - [newConversation.id]: newConversation, - }, - }), - }); - - await act(async () => { - await result.current.handleCreateConversation(); - }); - const { defaultSystemPromptId: _, ...everythingExceptSystemPromptId } = - mockData.welcome_id.apiConfig; - - expect(mockUseConversation.createConversation).toHaveBeenCalledWith({ - apiConfig: everythingExceptSystemPromptId, - title: 'New chat', - }); - }); - - it('should create a new conversation with correct isNewConversationDefault: true system prompt', async () => { - const newConversation = { - ...mockData.welcome_id, - id: 'new-id', - title: 'NEW_CHAT', - messages: [], - } as Conversation; - mockUseConversation.createConversation.mockResolvedValue(newConversation); - - const { result } = setupHook({ - conversations: { - 'old-id': { - ...mockData.welcome_id, - id: 'old-id', - title: 'Old Chat', - messages: [], - } as Conversation, - }, - allSystemPrompts: [ - { - timestamp: '2024-09-10T15:52:24.761Z', - users: [ - { - id: 'u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0', - name: 'elastic', - }, - ], - content: 'Address the user as Mr Orange in each response', - isNewConversationDefault: true, - updatedAt: '2024-09-10T22:07:44.915Z', - id: 'LBOi3JEBy3uD9EGi1d_G', - name: 'Call me Orange', - promptType: 'system', - consumer: 'securitySolutionUI', - }, - ], - conversationId: 'old-id', - refetchCurrentUserConversations: jest.fn().mockResolvedValue({ - data: { - 'old-id': { - ...mockData.welcome_id, - id: 'old-id', - title: 'Old Chat', - messages: [], - } as Conversation, - [newConversation.id]: newConversation, - }, - }), - }); - - await act(async () => { - await result.current.handleCreateConversation(); - }); - const { defaultSystemPromptId: _, ...everythingExceptSystemPromptId } = - mockData.welcome_id.apiConfig; - - expect(mockUseConversation.createConversation).toHaveBeenCalledWith({ - apiConfig: { - ...everythingExceptSystemPromptId, - defaultSystemPromptId: 'LBOi3JEBy3uD9EGi1d_G', - }, - title: 'New chat', - }); - }); - - it('should delete a conversation', async () => { - const conversationTitle = 'Test Conversation'; - const conversation = { - ...mockData.welcome_id, - id: 'test-id', - title: conversationTitle, - messages: [], - } as Conversation; - - const { result } = setupHook({ - conversations: { ...mockData, 'test-id': conversation }, - }); - - await act(async () => { - await result.current.handleOnConversationDeleted('test-id'); - }); - - expect(mockUseConversation.deleteConversation).toHaveBeenCalledWith('test-id'); - expect(result.current.currentConversation).toBeUndefined(); - }); - - it('should refetch the conversation multiple times if isStreamRefetch is true', async () => { - const conversationId = 'test-id'; - const conversation = { id: conversationId, messages: [{ role: 'user' }] } as Conversation; - mockUseConversation.getConversation.mockResolvedValue(conversation); - - const { result } = setupHook({ - conversationId, - conversations: { [conversationId]: conversation }, - }); - - await act(async () => { - await result.current.refetchCurrentConversation({ - cId: conversationId, - isStreamRefetch: true, - }); - }); - - expect(mockUseConversation.getConversation).toHaveBeenCalledTimes(6); // initial + 5 retries - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.tsx deleted file mode 100644 index d599190ca5623..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.tsx +++ /dev/null @@ -1,304 +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 { Dispatch, SetStateAction, useCallback, useEffect, useMemo, useState } from 'react'; -import { QueryObserverResult } from '@tanstack/react-query'; -import { PromptResponse } from '@kbn/elastic-assistant-common'; -import { find } from 'lodash'; -import deepEqual from 'fast-deep-equal'; -import { AIConnector } from '../../connectorland/connector_selector'; -import { getGenAiConfig } from '../../connectorland/helpers'; -import { NEW_CHAT } from '../conversations/conversation_sidepanel/translations'; -import { getDefaultNewSystemPrompt, getDefaultSystemPrompt } from '../use_conversation/helpers'; -import { useConversation } from '../use_conversation'; -import { sleep } from '../helpers'; -import { Conversation, WELCOME_CONVERSATION_TITLE } from '../../..'; - -export interface Props { - allSystemPrompts: PromptResponse[]; - conversationId: string; - conversations: Record<string, Conversation>; - defaultConnector?: AIConnector; - mayUpdateConversations: boolean; - refetchCurrentUserConversations: () => Promise< - QueryObserverResult<Record<string, Conversation>, unknown> - >; -} - -interface UseCurrentConversation { - currentConversation: Conversation | undefined; - currentSystemPrompt: PromptResponse | undefined; - handleCreateConversation: () => Promise<void>; - handleOnConversationDeleted: (cTitle: string) => Promise<void>; - handleOnConversationSelected: ({ cId, cTitle }: { cId: string; cTitle: string }) => Promise<void>; - refetchCurrentConversation: (options?: { - cId?: string; - cTitle?: string; - isStreamRefetch?: boolean; - }) => Promise<Conversation | undefined>; - setCurrentConversation: Dispatch<SetStateAction<Conversation | undefined>>; - setCurrentSystemPromptId: (promptId: string | undefined) => void; -} - -/** - * Manages the current conversation state. Interacts with the conversation API and keeps local state up to date. - * Manages system prompt as that is per conversation - * Provides methods to handle conversation selection, creation, deletion, and system prompt selection. - */ -export const useCurrentConversation = ({ - allSystemPrompts, - conversationId, - conversations, - defaultConnector, - mayUpdateConversations, - refetchCurrentUserConversations, -}: Props): UseCurrentConversation => { - const { - createConversation, - deleteConversation, - getConversation, - getDefaultConversation, - setApiConfig, - } = useConversation(); - const [currentConversation, setCurrentConversation] = useState<Conversation | undefined>(); - const [currentConversationId, setCurrentConversationId] = useState<string | undefined>( - conversationId - ); - useEffect(() => { - setCurrentConversationId(conversationId); - }, [conversationId]); - /** - * START SYSTEM PROMPT - */ - const currentSystemPrompt = useMemo( - () => - getDefaultSystemPrompt({ - allSystemPrompts, - conversation: currentConversation, - }), - [allSystemPrompts, currentConversation] - ); - - // Write the selected system prompt to the conversation config - const setCurrentSystemPromptId = useCallback( - async (promptId?: string) => { - if (currentConversation && currentConversation.apiConfig) { - await setApiConfig({ - conversation: currentConversation, - apiConfig: { - ...currentConversation.apiConfig, - defaultSystemPromptId: promptId, - }, - }); - await refetchCurrentUserConversations(); - } - }, - [currentConversation, refetchCurrentUserConversations, setApiConfig] - ); - - /** - * END SYSTEM PROMPT - */ - - /** - * Refetches the current conversation, optionally by conversation ID or title. - * @param cId - The conversation ID to refetch. - * @param cTitle - The conversation title to refetch. - * @param isStreamRefetch - Are we refetching because stream completed? If so retry several times to ensure the message has updated on the server - */ - const refetchCurrentConversation = useCallback( - async ({ - cId, - cTitle, - isStreamRefetch = false, - }: { cId?: string; cTitle?: string; isStreamRefetch?: boolean } = {}) => { - if (cId === '' || (cTitle && !conversations[cTitle])) { - return; - } - - const cConversationId = - cId ?? (cTitle && conversations[cTitle].id) ?? currentConversation?.id; - - if (cConversationId) { - let updatedConversation = await getConversation(cConversationId); - let retries = 0; - const maxRetries = 5; - - // this retry is a workaround for the stream not YET being persisted to the stored conversation - while ( - isStreamRefetch && - updatedConversation && - updatedConversation.messages[updatedConversation.messages.length - 1].role !== - 'assistant' && - retries < maxRetries - ) { - retries++; - await sleep(2000); - updatedConversation = await getConversation(cConversationId); - } - - if (updatedConversation) { - setCurrentConversation(updatedConversation); - } - - return updatedConversation; - } - }, - [conversations, currentConversation?.id, getConversation] - ); - - const initializeDefaultConversationWithConnector = useCallback( - async (defaultConvo: Conversation): Promise<Conversation> => { - const apiConfig = getGenAiConfig(defaultConnector); - const updatedConvo = - (await setApiConfig({ - conversation: defaultConvo, - apiConfig: { - ...defaultConvo?.apiConfig, - connectorId: (defaultConnector?.id as string) ?? '', - actionTypeId: (defaultConnector?.actionTypeId as string) ?? '.gen-ai', - provider: apiConfig?.apiProvider, - model: apiConfig?.defaultModel, - defaultSystemPromptId: allSystemPrompts.find((sp) => sp.isNewConversationDefault)?.id, - }, - })) ?? defaultConvo; - await refetchCurrentUserConversations(); - return updatedConvo; - }, - [allSystemPrompts, defaultConnector, refetchCurrentUserConversations, setApiConfig] - ); - - const handleOnConversationSelected = useCallback( - async ({ cId, cTitle }: { cId: string; cTitle: string }) => { - const allConversations = await refetchCurrentUserConversations(); - - // This is a default conversation that has not yet been initialized - // add the default connector config - if (cId === '' && allConversations?.data?.[cTitle]) { - const updatedConvo = await initializeDefaultConversationWithConnector( - allConversations.data[cTitle] - ); - setCurrentConversationId(updatedConvo.id); - } else if (allConversations?.data?.[cId]) { - setCurrentConversationId(cId); - } - }, - [ - initializeDefaultConversationWithConnector, - refetchCurrentUserConversations, - setCurrentConversationId, - ] - ); - - // update currentConversation when conversations or currentConversationId update - useEffect(() => { - if (!mayUpdateConversations) return; - const updateConversation = async () => { - const nextConversation: Conversation = - (currentConversationId && conversations[currentConversationId]) || - // if currentConversationId is not an id, it should be a title from a - // default conversation that has not yet been initialized - find(conversations, ['title', currentConversationId]) || - find(conversations, ['title', WELCOME_CONVERSATION_TITLE]) || - // if no Welcome convo exists, create one - getDefaultConversation({ cTitle: WELCOME_CONVERSATION_TITLE }); - - if (nextConversation && nextConversation.id === '') { - // This is a default conversation that has not yet been initialized - const conversation = await initializeDefaultConversationWithConnector(nextConversation); - return setCurrentConversation(conversation); - } - setCurrentConversation((prev) => { - if (deepEqual(prev, nextConversation)) return prev; - - if ( - prev && - prev.id === nextConversation.id && - // if the conversation id has not changed and the previous conversation has more messages - // it is because the local conversation has a readable stream running - // and it has not yet been persisted to the stored conversation - prev.messages.length > nextConversation.messages.length - ) { - return { - ...nextConversation, - messages: prev.messages, - }; - } - - return nextConversation; - }); - }; - updateConversation(); - }, [ - currentConversationId, - conversations, - getDefaultConversation, - initializeDefaultConversationWithConnector, - mayUpdateConversations, - ]); - - const handleOnConversationDeleted = useCallback( - async (cTitle: string) => { - await deleteConversation(conversations[cTitle].id); - await refetchCurrentUserConversations(); - }, - [conversations, deleteConversation, refetchCurrentUserConversations] - ); - - const handleCreateConversation = useCallback(async () => { - const newChatExists = find(conversations, ['title', NEW_CHAT]); - if (newChatExists && !newChatExists.messages.length) { - handleOnConversationSelected({ - cId: newChatExists.id, - cTitle: newChatExists.title, - }); - return; - } - const newSystemPrompt = getDefaultNewSystemPrompt(allSystemPrompts); - - const newConversation = await createConversation({ - title: NEW_CHAT, - ...(currentConversation?.apiConfig != null && - currentConversation?.apiConfig?.actionTypeId != null - ? { - apiConfig: { - connectorId: currentConversation.apiConfig.connectorId, - actionTypeId: currentConversation.apiConfig.actionTypeId, - ...(newSystemPrompt?.id != null ? { defaultSystemPromptId: newSystemPrompt.id } : {}), - }, - } - : {}), - }); - - if (newConversation) { - handleOnConversationSelected({ - cId: newConversation.id, - cTitle: newConversation.title, - }); - } else { - await refetchCurrentUserConversations(); - } - }, [ - allSystemPrompts, - conversations, - createConversation, - currentConversation?.apiConfig, - handleOnConversationSelected, - refetchCurrentUserConversations, - ]); - - return { - currentConversation, - currentSystemPrompt, - handleCreateConversation, - handleOnConversationDeleted, - handleOnConversationSelected, - refetchCurrentConversation, - setCurrentConversation, - setCurrentSystemPromptId, - }; -}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.test.tsx deleted file mode 100644 index 4e877e1886fb4..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.test.tsx +++ /dev/null @@ -1,55 +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 { renderHook } from '@testing-library/react-hooks'; - -import { useAssistantContext } from '.'; -import useLocalStorage from 'react-use/lib/useLocalStorage'; -import { TestProviders } from '../mock/test_providers/test_providers'; - -jest.mock('react-use/lib/useLocalStorage', () => jest.fn().mockReturnValue(['456', jest.fn()])); -jest.mock('react-use/lib/useSessionStorage', () => jest.fn().mockReturnValue(['456', jest.fn()])); - -describe('AssistantContext', () => { - beforeEach(() => jest.clearAllMocks()); - - test('it throws an error when useAssistantContext hook is used without a SecurityAssistantContext', () => { - const { result } = renderHook(useAssistantContext); - - expect(result.error).toEqual( - new Error('useAssistantContext must be used within a AssistantProvider') - ); - }); - - test('it should return the httpFetch function', async () => { - const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); - - const path = '/path/to/resource'; - await result.current.http.fetch(path); - - expect(result.current.http.fetch).toBeCalledWith(path); - }); - - test('getLastConversationId defaults to provided id', async () => { - const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); - const id = result.current.getLastConversationId('123'); - expect(id).toEqual('123'); - }); - - test('getLastConversationId uses local storage id when no id is provided ', async () => { - const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); - const id = result.current.getLastConversationId(); - expect(id).toEqual('456'); - }); - - test('getLastConversationId defaults to Welcome when no local storage id and no id is provided ', async () => { - (useLocalStorage as jest.Mock).mockReturnValue([undefined, jest.fn()]); - const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); - const id = result.current.getLastConversationId(); - expect(id).toEqual('Welcome'); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx deleted file mode 100644 index 50d3a73797413..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx +++ /dev/null @@ -1,69 +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 { act, renderHook } from '@testing-library/react-hooks'; -import { useLoadActionTypes, Props } from '.'; -import { mockActionTypes } from '../../mock/connectors'; - -jest.mock('@tanstack/react-query', () => ({ - useQuery: jest.fn().mockImplementation(async (queryKey, fn, opts) => { - try { - const res = await fn(); - return Promise.resolve(res); - } catch (e) { - opts.onError(e); - } - }), -})); - -const http = { - get: jest.fn().mockResolvedValue(mockActionTypes), -}; -const toasts = { - addError: jest.fn(), -}; -const defaultProps = { http, toasts } as unknown as Props; -describe('useLoadActionTypes', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - it('should call api to load action types', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useLoadActionTypes(defaultProps)); - await waitForNextUpdate(); - - expect(defaultProps.http.get).toHaveBeenCalledWith('/api/actions/connector_types', { - query: { feature_id: 'generativeAIForSecurity' }, - }); - expect(toasts.addError).not.toHaveBeenCalled(); - }); - }); - - it('should return sorted action types', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useLoadActionTypes(defaultProps)); - await waitForNextUpdate(); - - await expect(result.current).resolves.toStrictEqual( - mockActionTypes.sort((a, b) => a.name.localeCompare(b.name)) - ); - }); - }); - it('should display error toast when api throws error', async () => { - await act(async () => { - const mockHttp = { - get: jest.fn().mockRejectedValue(new Error('this is an error')), - } as unknown as Props['http']; - const { waitForNextUpdate } = renderHook(() => - useLoadActionTypes({ ...defaultProps, http: mockHttp }) - ); - await waitForNextUpdate(); - - expect(toasts.addError).toHaveBeenCalled(); - }); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.test.tsx b/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.test.tsx deleted file mode 100644 index b29274efb19c0..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.test.tsx +++ /dev/null @@ -1,104 +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 { act, renderHook } from '@testing-library/react-hooks'; -import { useLoadConnectors, Props } from '.'; -import { mockConnectors } from '../../mock/connectors'; - -const mockConnectorsAndExtras = [ - ...mockConnectors, - { - ...mockConnectors[0], - id: 'connector-missing-secrets', - name: 'Connector Missing Secrets', - isMissingSecrets: true, - }, - { - ...mockConnectors[0], - - id: 'connector-wrong-action-type', - name: 'Connector Wrong Action Type', - isMissingSecrets: true, - actionTypeId: '.d3', - }, -]; - -const connectorsApiResponse = mockConnectorsAndExtras.map((c) => ({ - ...c, - connector_type_id: c.actionTypeId, - is_preconfigured: false, - is_deprecated: false, - referenced_by_count: 0, - is_missing_secrets: c.isMissingSecrets, - is_system_action: false, -})); - -const loadConnectorsResult = mockConnectors.map((c) => ({ - ...c, - isPreconfigured: false, - isDeprecated: false, - referencedByCount: 0, - isSystemAction: false, -})); - -jest.mock('@tanstack/react-query', () => ({ - useQuery: jest.fn().mockImplementation(async (queryKey, fn, opts) => { - try { - const res = await fn(); - return Promise.resolve(res); - } catch (e) { - opts.onError(e); - } - }), -})); - -const http = { - get: jest.fn().mockResolvedValue(connectorsApiResponse), -}; -const toasts = { - addError: jest.fn(), -}; -const defaultProps = { http, toasts } as unknown as Props; -describe('useLoadConnectors', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - it('should call api to load action types', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useLoadConnectors(defaultProps)); - await waitForNextUpdate(); - - expect(defaultProps.http.get).toHaveBeenCalledWith('/api/actions/connectors'); - expect(toasts.addError).not.toHaveBeenCalled(); - }); - }); - - it('should return sorted action types, removing isMissingSecrets and wrong action type ids', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useLoadConnectors(defaultProps)); - await waitForNextUpdate(); - - await expect(result.current).resolves.toStrictEqual( - // @ts-ignore ts does not like config, but we define it in the mock data - loadConnectorsResult.map((c) => ({ ...c, apiProvider: c.config.apiProvider })) - ); - }); - }); - it('should display error toast when api throws error', async () => { - await act(async () => { - const mockHttp = { - get: jest.fn().mockRejectedValue(new Error('this is an error')), - } as unknown as Props['http']; - const { waitForNextUpdate } = renderHook(() => - useLoadConnectors({ ...defaultProps, http: mockHttp }) - ); - await waitForNextUpdate(); - - expect(toasts.addError).toHaveBeenCalled(); - }); - }); -}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx deleted file mode 100644 index cc08b0a68ab89..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx +++ /dev/null @@ -1,126 +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 { EuiBasicTableColumn, EuiButtonEmpty, EuiCode, EuiSwitch, EuiText } from '@elastic/eui'; -import React from 'react'; -// eslint-disable-next-line @kbn/eslint/module_migration -import styled from 'styled-components'; - -import { BulkActions } from '../bulk_actions'; -import * as i18n from '../translations'; -import { BatchUpdateListItem, ContextEditorRow, FIELDS } from '../types'; - -const AnonymizedButton = styled(EuiButtonEmpty)` - max-height: 24px; -`; - -export const getColumns = ({ - compressed = true, - hasUpdateAIAssistantAnonymization, - onListUpdated, - rawData, -}: { - compressed?: boolean; - hasUpdateAIAssistantAnonymization: boolean; - onListUpdated: (updates: BatchUpdateListItem[]) => void; - rawData: Record<string, string[]> | null; -}): Array<EuiBasicTableColumn<ContextEditorRow>> => { - const actionsColumn: EuiBasicTableColumn<ContextEditorRow> = { - field: FIELDS.ACTIONS, - name: '', - render: (_, row) => { - return ( - <BulkActions - appliesTo="singleRow" - disabled={false} - disableAllow={row.allowed} - disableDeny={!row.allowed} - disableAnonymize={!row.allowed || (row.allowed && row.anonymized)} - disableUnanonymize={!row.allowed || (row.allowed && !row.anonymized)} - onListUpdated={onListUpdated} - selected={[row]} - /> - ); - }, - sortable: false, - width: '36px', - }; - - const valuesColumn: EuiBasicTableColumn<ContextEditorRow> = { - field: FIELDS.RAW_VALUES, - name: i18n.VALUES, - render: (rawValues: ContextEditorRow['rawValues']) => ( - <EuiCode data-test-subj="rawValues">{rawValues.join(',')}</EuiCode> - ), - sortable: false, - }; - - const baseColumns: Array<EuiBasicTableColumn<ContextEditorRow>> = [ - { - field: FIELDS.ALLOWED, - name: i18n.ALLOWED, - render: (_, { allowed, field }) => ( - <EuiSwitch - data-test-subj="allowed" - checked={allowed} - disabled={!hasUpdateAIAssistantAnonymization} - label="" - showLabel={false} - compressed={compressed} - onChange={() => { - onListUpdated([ - { - field, - operation: allowed ? 'remove' : 'add', - update: rawData == null ? 'defaultAllow' : 'allow', - }, - ]); - }} - /> - ), - sortable: true, - width: '75px', - }, - { - field: FIELDS.ANONYMIZED, - name: i18n.ANONYMIZED, - render: (_, { allowed, anonymized, field }) => ( - <AnonymizedButton - data-test-subj="anonymized" - disabled={!allowed || !hasUpdateAIAssistantAnonymization} - color={anonymized ? 'primary' : 'text'} - flush="both" - iconType={anonymized ? 'eyeClosed' : 'eye'} - isSelected={anonymized ? true : false} - onClick={() => - onListUpdated([ - { - field, - operation: anonymized ? 'remove' : 'add', - update: rawData == null ? 'defaultAllowReplacement' : 'allowReplacement', - }, - ]) - } - > - <EuiText size="xs">{anonymized ? i18n.YES : i18n.NO}</EuiText> - </AnonymizedButton> - ), - sortable: true, - width: '102px', - }, - { - field: FIELDS.FIELD, - name: i18n.FIELD, - sortable: true, - width: '260px', - }, - ]; - - return rawData == null - ? [...baseColumns, ...(hasUpdateAIAssistantAnonymization ? [actionsColumn] : [])] - : [...baseColumns, valuesColumn, ...(hasUpdateAIAssistantAnonymization ? [actionsColumn] : [])]; -}; diff --git a/x-pack/packages/kbn-elastic-assistant/jest.config.js b/x-pack/packages/kbn-elastic-assistant/jest.config.js deleted file mode 100644 index 46d4ca8b91eb4..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/jest.config.js +++ /dev/null @@ -1,23 +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. - */ - -module.exports = { - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_elastic_assistant_impl', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/packages/kbn-elastic-assistant/impl/**/*.{ts,tsx}', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant/impl/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant/impl/*mock*.{ts,tsx}', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant/impl/*.test.{ts,tsx}', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant/impl/*.d.ts', - '!<rootDir>/x-pack/packages/kbn-elastic-assistant/impl/*.config.ts', - ], - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/kbn-elastic-assistant'], -}; diff --git a/x-pack/packages/kbn-elastic-assistant/tsconfig.json b/x-pack/packages/kbn-elastic-assistant/tsconfig.json deleted file mode 100644 index 1a23097b2271e..0000000000000 --- a/x-pack/packages/kbn-elastic-assistant/tsconfig.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@kbn/ambient-ui-types" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - "../../../typings/emotion.d.ts" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/elastic-assistant-common", - "@kbn/core-http-browser", - "@kbn/i18n", - "@kbn/stack-connectors-plugin", - "@kbn/triggers-actions-ui-plugin", - "@kbn/core-http-browser-mocks", - "@kbn/cases-plugin", - "@kbn/actions-plugin", - "@kbn/core-notifications-browser", - "@kbn/i18n-react", - "@kbn/ui-theme", - "@kbn/core-doc-links-browser", - "@kbn/core", - "@kbn/zod", - "@kbn/data-views-plugin", - "@kbn/user-profile-components", - ] -} diff --git a/x-pack/packages/kbn-infra-forge/jest.config.js b/x-pack/packages/kbn-infra-forge/jest.config.js deleted file mode 100644 index d5bd842dee334..0000000000000 --- a/x-pack/packages/kbn-infra-forge/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test/jest_node', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/kbn-infra-forge'], -}; diff --git a/x-pack/packages/kbn-infra-forge/tsconfig.json b/x-pack/packages/kbn-infra-forge/tsconfig.json deleted file mode 100644 index 09420c85fcfd7..0000000000000 --- a/x-pack/packages/kbn-infra-forge/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - "./src/data_sources/composable/component/base.json", - "./src/data_sources/composable/component/event.json", - "./src/data_sources/composable/component/host.json", - "./src/data_sources/composable/component/metricset.json", - "./src/data_sources/composable/component/system.json", - "./src/data_sources/composable/template.json" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/tooling-log", - "@kbn/datemath" - ] -} diff --git a/x-pack/packages/kbn-langchain/jest.config.js b/x-pack/packages/kbn-langchain/jest.config.js deleted file mode 100644 index f436e6a9edbe6..0000000000000 --- a/x-pack/packages/kbn-langchain/jest.config.js +++ /dev/null @@ -1,22 +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. - */ - -module.exports = { - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_langchain', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/packages/kbn-langchain/server/**/*.{ts}', - '!<rootDir>/x-pack/packages/kbn-langchain/server/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', - '!<rootDir>/x-pack/packages/kbn-langchain/server/*mock*.{ts}', - '!<rootDir>/x-pack/packages/kbn-langchain/server/*.test.{ts}', - '!<rootDir>/x-pack/packages/kbn-langchain/server/*.d.ts', - '!<rootDir>/x-pack/packages/kbn-langchain/server/*.config.ts', - ], - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/kbn-langchain'], -}; diff --git a/x-pack/packages/kbn-langchain/tsconfig.json b/x-pack/packages/kbn-langchain/tsconfig.json deleted file mode 100644 index e775b1a4ad50d..0000000000000 --- a/x-pack/packages/kbn-langchain/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/logging", - "@kbn/actions-plugin", - "@kbn/logging-mocks", - "@kbn/utility-types", - "@kbn/tooling-log" - ] -} diff --git a/x-pack/packages/kbn-slo-schema/jest.config.js b/x-pack/packages/kbn-slo-schema/jest.config.js deleted file mode 100644 index 915ccf489264a..0000000000000 --- a/x-pack/packages/kbn-slo-schema/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/kbn-slo-schema'], -}; diff --git a/x-pack/packages/kbn-slo-schema/tsconfig.json b/x-pack/packages/kbn-slo-schema/tsconfig.json deleted file mode 100644 index cd411fff0db4a..0000000000000 --- a/x-pack/packages/kbn-slo-schema/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts" - ], - "kbn_references": [ - "@kbn/std", - "@kbn/io-ts-utils", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/packages/observability/alert_details/jest.config.js b/x-pack/packages/observability/alert_details/jest.config.js deleted file mode 100644 index 746e2af6257c9..0000000000000 --- a/x-pack/packages/observability/alert_details/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/observability/alert_details'], -}; diff --git a/x-pack/packages/observability/alert_details/tsconfig.json b/x-pack/packages/observability/alert_details/tsconfig.json deleted file mode 100644 index d1b4c3fb2ce23..0000000000000 --- a/x-pack/packages/observability/alert_details/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/rule-data-utils", - "@kbn/core", - "@kbn/rule-registry-plugin", - "@kbn/core-http-browser-mocks" - ] -} diff --git a/x-pack/packages/observability/alerting_rule_utils/jest.config.js b/x-pack/packages/observability/alerting_rule_utils/jest.config.js deleted file mode 100644 index 605fe2b4fcdcf..0000000000000 --- a/x-pack/packages/observability/alerting_rule_utils/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/observability/alerting_rule_utils'], -}; diff --git a/x-pack/packages/observability/alerting_rule_utils/tsconfig.json b/x-pack/packages/observability/alerting_rule_utils/tsconfig.json deleted file mode 100644 index baf441402ea8c..0000000000000 --- a/x-pack/packages/observability/alerting_rule_utils/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/alerts-as-data-utils" - ] -} diff --git a/x-pack/packages/observability/alerting_test_data/jest.config.js b/x-pack/packages/observability/alerting_test_data/jest.config.js deleted file mode 100644 index 05b0dbe613054..0000000000000 --- a/x-pack/packages/observability/alerting_test_data/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/observability/alerting_test_data'], -}; diff --git a/x-pack/packages/observability/alerting_test_data/tsconfig.json b/x-pack/packages/observability/alerting_test_data/tsconfig.json deleted file mode 100644 index 109b0dfbcf1a4..0000000000000 --- a/x-pack/packages/observability/alerting_test_data/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/observability-plugin", - "@kbn/rule-data-utils", - "@kbn/alerting-comparators", - ] -} diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/jest.config.js b/x-pack/packages/observability/get_padded_alert_time_range_util/jest.config.js deleted file mode 100644 index 2e476b09b3c4c..0000000000000 --- a/x-pack/packages/observability/get_padded_alert_time_range_util/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/observability/get_padded_alert_time_range_util'], -}; diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/tsconfig.json b/x-pack/packages/observability/get_padded_alert_time_range_util/tsconfig.json deleted file mode 100644 index 0d78dace105e1..0000000000000 --- a/x-pack/packages/observability/get_padded_alert_time_range_util/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node" - ] - }, - "include": [ - "**/*.ts", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [] -} diff --git a/x-pack/packages/observability/observability_utils/observability_utils_server/entities/get_entities_by_fuzzy_search.ts b/x-pack/packages/observability/observability_utils/observability_utils_server/entities/get_entities_by_fuzzy_search.ts new file mode 100644 index 0000000000000..aedf89b2ab97d --- /dev/null +++ b/x-pack/packages/observability/observability_utils/observability_utils_server/entities/get_entities_by_fuzzy_search.ts @@ -0,0 +1,50 @@ +/* + * 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 { castArray, orderBy } from 'lodash'; +import Fuse from 'fuse.js'; +import { ObservabilityElasticsearchClient } from '../es/client/create_observability_es_client'; + +export async function getEntitiesByFuzzySearch({ + esClient, + entity, + start, + end, + index, +}: { + esClient: ObservabilityElasticsearchClient; + entity: Record<string, string>; + start: number; + end: number; + index: string | string[]; +}): Promise<string[]> { + if (Object.keys(entity).length > 1) { + return []; + } + + const [field, value] = Object.entries(entity)[0]; + + const { terms } = await esClient.client.termsEnum({ + index: castArray(index).join(','), + field, + index_filter: { + range: { + '@timestamp': { + gte: new Date(start).toISOString(), + lte: new Date(end).toISOString(), + }, + }, + }, + size: 10_000, + }); + + const results = new Fuse(terms, { includeScore: true, threshold: 0.75 }).search(value); + + return orderBy(results, (result) => result.score, 'asc') + .slice(0, 5) + .map((result) => result.item); +} diff --git a/x-pack/packages/observability/observability_utils/observability_utils_server/entities/get_log_patterns.ts b/x-pack/packages/observability/observability_utils/observability_utils_server/entities/get_log_patterns.ts new file mode 100644 index 0000000000000..b4071d665f383 --- /dev/null +++ b/x-pack/packages/observability/observability_utils/observability_utils_server/entities/get_log_patterns.ts @@ -0,0 +1,405 @@ +/* + * 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 { + AggregationsCategorizeTextAggregation, + AggregationsDateHistogramAggregation, + AggregationsMaxAggregation, + AggregationsMinAggregation, + AggregationsTopHitsAggregation, + QueryDslQueryContainer, +} from '@elastic/elasticsearch/lib/api/types'; +import { categorizationAnalyzer } from '@kbn/aiops-log-pattern-analysis/categorization_analyzer'; +import { ChangePointType } from '@kbn/es-types/src'; +import { pValueToLabel } from '@kbn/observability-utils-common/ml/p_value_to_label'; +import { calculateAuto } from '@kbn/calculate-auto'; +import { omit, orderBy, uniqBy } from 'lodash'; +import moment from 'moment'; +import { ObservabilityElasticsearchClient } from '../es/client/create_observability_es_client'; +import { kqlQuery } from '../es/queries/kql_query'; +import { rangeQuery } from '../es/queries/range_query'; + +interface FieldPatternResultBase { + field: string; + count: number; + pattern: string; + regex: string; + sample: string; + firstOccurrence: string; + lastOccurrence: string; + highlight: Record<string, string[]>; + metadata: Record<string, unknown[]>; +} + +interface FieldPatternResultChanges { + timeseries: Array<{ x: number; y: number }>; + change: { + timestamp?: string; + significance: 'high' | 'medium' | 'low' | null; + type: ChangePointType; + change_point?: number; + p_value?: number; + }; +} + +export type FieldPatternResult<TChanges extends boolean | undefined = undefined> = + FieldPatternResultBase & (TChanges extends true ? FieldPatternResultChanges : {}); + +export type FieldPatternResultWithChanges = FieldPatternResult<true>; + +interface CategorizeTextOptions { + query: QueryDslQueryContainer; + metadata: string[]; + esClient: ObservabilityElasticsearchClient; + samplingProbability: number; + fields: string[]; + index: string | string[]; + useMlStandardTokenizer: boolean; + size: number; + start: number; + end: number; +} +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +type CategorizeTextSubAggregations = { + sample: { top_hits: AggregationsTopHitsAggregation }; + minTimestamp: { min: AggregationsMinAggregation }; + maxTimestamp: { max: AggregationsMaxAggregation }; +}; + +interface CategorizeTextAggregationResult { + categorize_text: AggregationsCategorizeTextAggregation; + aggs: CategorizeTextSubAggregations & + ( + | {} + | { + timeseries: { date_histogram: AggregationsDateHistogramAggregation }; + changes: { change_point: { buckets_path: string } }; + } + ); +} + +export async function runCategorizeTextAggregation< + TChanges extends boolean | undefined = undefined +>( + options: CategorizeTextOptions & { includeChanges?: TChanges } +): Promise<Array<FieldPatternResult<TChanges>>>; + +export async function runCategorizeTextAggregation({ + esClient, + fields, + metadata, + index, + query, + samplingProbability, + useMlStandardTokenizer, + includeChanges, + size, + start, + end, +}: CategorizeTextOptions & { includeChanges?: boolean }): Promise< + Array<FieldPatternResult<boolean>> +> { + const aggs = Object.fromEntries( + fields.map((field): [string, CategorizeTextAggregationResult] => [ + field, + { + categorize_text: { + field, + min_doc_count: 1, + size, + categorization_analyzer: useMlStandardTokenizer + ? { + tokenizer: 'ml_standard', + char_filter: [ + { + type: 'pattern_replace', + pattern: '\\\\n', + replacement: '', + } as unknown as string, + ], + } + : categorizationAnalyzer, + }, + aggs: { + minTimestamp: { + min: { + field: '@timestamp', + }, + }, + maxTimestamp: { + max: { + field: '@timestamp', + }, + }, + ...(includeChanges + ? { + timeseries: { + date_histogram: { + field: '@timestamp', + min_doc_count: 0, + extended_bounds: { + min: start, + max: end, + }, + fixed_interval: `${calculateAuto + .atLeast(30, moment.duration(end - start, 'ms'))! + .asMilliseconds()}ms`, + }, + }, + changes: { + change_point: { + buckets_path: 'timeseries>_count', + }, + }, + } + : {}), + sample: { + top_hits: { + size: 1, + _source: false, + fields: [field, ...metadata], + sort: { + _score: { + order: 'desc', + }, + }, + highlight: { + fields: { + '*': {}, + }, + }, + }, + }, + }, + }, + ]) + ); + + const response = await esClient.search('get_log_patterns', { + index, + size: 0, + track_total_hits: false, + query: { + bool: { + filter: [query, ...rangeQuery(start, end)], + }, + }, + aggregations: { + sampler: { + random_sampler: { + probability: samplingProbability, + }, + aggs, + }, + }, + }); + + if (!response.aggregations) { + return []; + } + + const fieldAggregates = omit(response.aggregations.sampler, 'seed', 'doc_count', 'probability'); + + return Object.entries(fieldAggregates).flatMap(([fieldName, aggregate]) => { + const buckets = aggregate.buckets; + + return buckets.map((bucket) => { + return { + field: fieldName, + count: bucket.doc_count, + pattern: bucket.key, + regex: bucket.regex, + sample: bucket.sample.hits.hits[0].fields![fieldName][0] as string, + highlight: bucket.sample.hits.hits[0].highlight ?? {}, + metadata: bucket.sample.hits.hits[0].fields!, + firstOccurrence: new Date(bucket.minTimestamp.value!).toISOString(), + lastOccurrence: new Date(bucket.maxTimestamp.value!).toISOString(), + ...('timeseries' in bucket + ? { + timeseries: bucket.timeseries.buckets.map((dateBucket) => ({ + x: dateBucket.key, + y: dateBucket.doc_count, + })), + change: Object.entries(bucket.changes.type).map( + ([changePointType, change]): FieldPatternResultChanges['change'] => { + return { + type: changePointType as ChangePointType, + significance: + change.p_value !== undefined ? pValueToLabel(change.p_value) : null, + change_point: change.change_point, + p_value: change.p_value, + timestamp: + change.change_point !== undefined + ? bucket.timeseries.buckets[change.change_point].key_as_string + : undefined, + }; + } + )[0], + } + : {}), + }; + }); + }); +} + +interface LogPatternOptions { + esClient: ObservabilityElasticsearchClient; + start: number; + end: number; + index: string | string[]; + kuery: string; + metadata?: string[]; + fields: string[]; +} + +export async function getLogPatterns<TChanges extends boolean | undefined = undefined>( + options: LogPatternOptions & { includeChanges?: TChanges } +): Promise<Array<FieldPatternResult<TChanges>>>; + +export async function getLogPatterns({ + esClient, + start, + end, + index, + kuery, + includeChanges, + metadata = [], + fields, +}: LogPatternOptions & { includeChanges?: boolean }): Promise<Array<FieldPatternResult<boolean>>> { + const fieldCapsResponse = await esClient.fieldCaps('get_field_caps_for_log_pattern_analysis', { + fields, + index_filter: { + bool: { + filter: [...rangeQuery(start, end)], + }, + }, + index, + types: ['text', 'match_only_text'], + }); + + const fieldsInFieldCaps = Object.keys(fieldCapsResponse.fields); + + if (!fieldsInFieldCaps.length) { + return []; + } + + const totalDocsResponse = await esClient.search('get_total_docs_for_log_pattern_analysis', { + index, + size: 0, + track_total_hits: true, + query: { + bool: { + filter: [...kqlQuery(kuery), ...rangeQuery(start, end)], + }, + }, + }); + + const totalHits = totalDocsResponse.hits.total.value; + + if (totalHits === 0) { + return []; + } + + let samplingProbability = 100_000 / totalHits; + + if (samplingProbability >= 0.5) { + samplingProbability = 1; + } + + const fieldGroups = includeChanges + ? fieldsInFieldCaps.map((field) => [field]) + : [fieldsInFieldCaps]; + + const allPatterns = await Promise.all( + fieldGroups.map(async (fieldGroup) => { + const topMessagePatterns = await runCategorizeTextAggregation({ + esClient, + index, + fields: fieldGroup, + query: { + bool: { + filter: kqlQuery(kuery), + }, + }, + samplingProbability, + useMlStandardTokenizer: false, + size: 100, + start, + end, + includeChanges, + metadata, + }); + + if (topMessagePatterns.length === 0) { + return []; + } + + const patternsToExclude = topMessagePatterns.filter((pattern) => { + // elasticsearch will barf because the query is too complex. this measures + // the # of groups to capture for a measure of complexity. + const complexity = pattern.regex.match(/(\.\+\?)|(\.\*\?)/g)?.length ?? 0; + return ( + complexity <= 25 && + // anything less than 50 messages should be re-processed with the ml_standard tokenizer + pattern.count > 50 + ); + }); + + const rareMessagePatterns = await runCategorizeTextAggregation({ + esClient, + index, + fields: fieldGroup, + start, + end, + query: { + bool: { + filter: kqlQuery(kuery), + must_not: [ + ...patternsToExclude.map((pattern) => { + return { + bool: { + filter: [ + { + regexp: { + [pattern.field]: { + value: pattern.regex, + }, + }, + }, + { + match: { + [pattern.field]: { + query: pattern.pattern, + fuzziness: 0, + operator: 'and' as const, + auto_generate_synonyms_phrase_query: false, + }, + }, + }, + ], + }, + }; + }), + ], + }, + }, + size: 1000, + includeChanges, + samplingProbability: 1, + useMlStandardTokenizer: true, + metadata, + }); + + return [...patternsToExclude, ...rareMessagePatterns]; + }) + ); + + return uniqBy( + orderBy(allPatterns.flat(), (pattern) => pattern.count, 'desc'), + (pattern) => pattern.sample + ); +} diff --git a/x-pack/packages/observability/observability_utils/observability_utils_server/tsconfig.json b/x-pack/packages/observability/observability_utils/observability_utils_server/tsconfig.json index f6dd781184b86..33d7e75322f00 100644 --- a/x-pack/packages/observability/observability_utils/observability_utils_server/tsconfig.json +++ b/x-pack/packages/observability/observability_utils/observability_utils_server/tsconfig.json @@ -24,6 +24,8 @@ "@kbn/alerting-plugin", "@kbn/rule-registry-plugin", "@kbn/rule-data-utils", + "@kbn/aiops-log-pattern-analysis", + "@kbn/calculate-auto", "@kbn/utility-types", "@kbn/task-manager-plugin", ] diff --git a/x-pack/packages/observability/synthetics_test_data/index.ts b/x-pack/packages/observability/synthetics_test_data/index.ts deleted file mode 100644 index d1fe1034d7b1e..0000000000000 --- a/x-pack/packages/observability/synthetics_test_data/index.ts +++ /dev/null @@ -1,8 +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. - */ - -export { makeUpSummary, makeDownSummary } from './src/make_summaries'; diff --git a/x-pack/packages/observability/synthetics_test_data/jest.config.js b/x-pack/packages/observability/synthetics_test_data/jest.config.js deleted file mode 100644 index 62001f4072246..0000000000000 --- a/x-pack/packages/observability/synthetics_test_data/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/observability/synthetics_test_data'], -}; diff --git a/x-pack/packages/observability/synthetics_test_data/tsconfig.json b/x-pack/packages/observability/synthetics_test_data/tsconfig.json deleted file mode 100644 index 86d57b8d692f7..0000000000000 --- a/x-pack/packages/observability/synthetics_test_data/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - ] -} diff --git a/x-pack/packages/rollup/jest.config.js b/x-pack/packages/rollup/jest.config.js deleted file mode 100644 index 05a65766c9222..0000000000000 --- a/x-pack/packages/rollup/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/packages/rollup'], -}; diff --git a/x-pack/packages/rollup/tsconfig.json b/x-pack/packages/rollup/tsconfig.json deleted file mode 100644 index 4ef55e499d329..0000000000000 --- a/x-pack/packages/rollup/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": ["@kbn/i18n"] -} diff --git a/x-pack/packages/security-solution/README.mdx b/x-pack/packages/security-solution/README.mdx deleted file mode 100644 index 8f46e37529f9d..0000000000000 --- a/x-pack/packages/security-solution/README.mdx +++ /dev/null @@ -1,10 +0,0 @@ -## Security Solution package - -This package compiles components used by Security Solution - -### Lazy by default - -All components are exported to be lazily-loaded with a default `React.Suspense` default most appropriate to its nature. - -If a page needs to alter the `React.Suspense` behavior, (e.g. a different "loading" component), one can import the `Lazy[ComponentName]` version and surround it with a custom `React.Suspense` component. - diff --git a/x-pack/packages/security-solution/data_table/jest.config.js b/x-pack/packages/security-solution/data_table/jest.config.js deleted file mode 100644 index 38f769e20277c..0000000000000 --- a/x-pack/packages/security-solution/data_table/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - roots: ['<rootDir>/x-pack/packages/security-solution/data_table'], - rootDir: '../../../..', -}; diff --git a/x-pack/packages/security-solution/data_table/tsconfig.json b/x-pack/packages/security-solution/data_table/tsconfig.json deleted file mode 100644 index 9fab7f29b9aab..0000000000000 --- a/x-pack/packages/security-solution/data_table/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": ["jest", "node", "react"] - }, - "include": ["**/*.ts", "**/*.tsx"], - "exclude": ["target/**/*"], - "kbn_references": [ - "@kbn/cell-actions", - "@kbn/timelines-plugin", - "@kbn/es-query", - "@kbn/triggers-actions-ui-plugin", - "@kbn/securitysolution-ecs", - "@kbn/safer-lodash-set", - "@kbn/i18n", - "@kbn/ui-theme", - "@kbn/kibana-react-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/i18n-react", - "@kbn/ui-actions-plugin", - "@kbn/data-views-plugin", - "@kbn/field-formats-plugin", - "@kbn/data-plugin" - ] -} diff --git a/x-pack/packages/security-solution/distribution_bar/jest.config.js b/x-pack/packages/security-solution/distribution_bar/jest.config.js deleted file mode 100644 index efe091d25afdd..0000000000000 --- a/x-pack/packages/security-solution/distribution_bar/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - roots: ['<rootDir>/x-pack/packages/security-solution/distribution_bar'], - rootDir: '../../../..', -}; diff --git a/x-pack/packages/security-solution/distribution_bar/tsconfig.json b/x-pack/packages/security-solution/distribution_bar/tsconfig.json deleted file mode 100644 index b87424ce11016..0000000000000 --- a/x-pack/packages/security-solution/distribution_bar/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@emotion/react/types/css-prop", - "@testing-library/jest-dom", - "@testing-library/react", - ] - }, - "include": ["**/*.ts", "**/*.tsx"], - "kbn_references": [ - "@kbn/ui-theme", - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/jest.config.js b/x-pack/packages/security-solution/ecs_data_quality_dashboard/jest.config.js deleted file mode 100644 index 5f6f7ab9bce1f..0000000000000 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/jest.config.js +++ /dev/null @@ -1,26 +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. - */ - -module.exports = { - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/packages/security-solution/ecs_data_quality_dashboard_impl', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/**/*.{ts,tsx}', - '!<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/**/{__test__,__snapshots__,__examples__,*mock*,stub,tests,test_helpers,integration_tests,types}/**/*', - '!<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/**/*mock*.{ts,tsx}', - '!<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/**/*.test.{ts,tsx}', - '!<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/**/*.d.ts', - '!<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/**/*.config.ts', - ], - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard'], - setupFilesAfterEnv: [ - '<rootDir>/x-pack/packages/security-solution/ecs_data_quality_dashboard/setup_tests.ts', - ], -}; diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/tsconfig.json b/x-pack/packages/security-solution/ecs_data_quality_dashboard/tsconfig.json deleted file mode 100644 index e42a916396971..0000000000000 --- a/x-pack/packages/security-solution/ecs_data_quality_dashboard/tsconfig.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx", - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/ui-theme", - "@kbn/core-http-browser", - "@kbn/core-http-browser-mocks", - "@kbn/elastic-assistant", - "@kbn/triggers-actions-ui-plugin", - "@kbn/core", - "@kbn/core-notifications-browser", - "@kbn/core-notifications-browser-mocks", - ] -} diff --git a/x-pack/packages/security-solution/features/jest.config.js b/x-pack/packages/security-solution/features/jest.config.js deleted file mode 100644 index 47da21e7adff0..0000000000000 --- a/x-pack/packages/security-solution/features/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/security-solution/features'], -}; diff --git a/x-pack/packages/security-solution/features/tsconfig.json b/x-pack/packages/security-solution/features/tsconfig.json deleted file mode 100644 index 2c153f831721d..0000000000000 --- a/x-pack/packages/security-solution/features/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - ] - }, - "include": ["**/*.ts", "**/*.tsx"], - "kbn_references": [ - "@kbn/features-plugin", - "@kbn/utility-types", - "@kbn/i18n", - "@kbn/core-application-common", - "@kbn/cases-plugin", - "@kbn/securitysolution-rules", - "@kbn/securitysolution-list-constants", - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/packages/security-solution/navigation/jest.config.js b/x-pack/packages/security-solution/navigation/jest.config.js deleted file mode 100644 index a150e2a7b4c9c..0000000000000 --- a/x-pack/packages/security-solution/navigation/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/security-solution/navigation'], -}; diff --git a/x-pack/packages/security-solution/navigation/src/constants.ts b/x-pack/packages/security-solution/navigation/src/constants.ts deleted file mode 100644 index d05d6c26807b5..0000000000000 --- a/x-pack/packages/security-solution/navigation/src/constants.ts +++ /dev/null @@ -1,104 +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. - */ - -export const SECURITY_UI_APP_ID = 'securitySolutionUI' as const; - -export { SecurityPageName } from '@kbn/deeplinks-security'; - -export enum LinkCategoryType { - title = 'title', - collapsibleTitle = 'collapsibleTitle', - accordion = 'accordion', - separator = 'separator', -} - -/** - * External (non-Security) page names that need to be linked in the Security navigation. - * Format: `<pluginId>:<deepLinkId>/<path>`. - * - * `pluginId`: is the id of the plugin that owns the deep link - * - * `deepLinkId`: is the id of the deep link inside the plugin. - * Keep empty for the root page of the plugin, e.g. `osquery:` - * - * `path`: is the path to append to the plugin and deep link. - * This is optional and only needed if the path is not registered in the plugin's `deepLinks`. e.g. `integrations:/browse/security` - * The path should not be used for links displayed in the main left navigation, since highlighting won't work. - **/ -export enum ExternalPageName { - // Discover - discover = 'discover:', - // Osquery - osquery = 'osquery:', - // Analytics - maps = 'maps:', - visualize = 'visualize:', - // Machine Learning - // Ref: src/platform/packages/private/default-nav/ml/default_navigation.ts - mlOverview = 'ml:overview', - mlNotifications = 'ml:notifications', - mlMemoryUsage = 'ml:memoryUsage', - mlAnomalyDetection = 'ml:anomalyDetection', - mlAnomalyExplorer = 'ml:anomalyExplorer', - mlSingleMetricViewer = 'ml:singleMetricViewer', - mlSuppliedConfigurations = 'ml:suppliedConfigurations', - mlSettings = 'ml:settings', - mlDataFrameAnalytics = 'ml:dataFrameAnalytics', - mlResultExplorer = 'ml:resultExplorer', - mlAnalyticsMap = 'ml:analyticsMap', - mlNodesOverview = 'ml:nodesOverview', - mlNodes = 'ml:nodes', - mlFileUpload = 'ml:fileUpload', - mlIndexDataVisualizer = 'ml:indexDataVisualizer', - mlESQLdataVisualizer = 'ml:esqlDataVisualizer', - mlDataDrift = 'ml:dataDrift', - mlExplainLogRateSpikes = 'ml:logRateAnalysis', - mlLogPatternAnalysis = 'ml:logPatternAnalysis', - mlChangePointDetections = 'ml:changePointDetections', - // Dev Tools - // Ref: packages/default-nav/devtools/default_navigation.ts - devTools = 'dev_tools:', - // Fleet - // Ref: x-pack/plugins/fleet/public/deep_links.ts - fleet = 'fleet:', - fleetAgents = 'fleet:agents', - fleetPolicies = 'fleet:policies', - fleetEnrollmentTokens = 'fleet:enrollment_tokens', - fleetUninstallTokens = 'fleet:uninstall_tokens', - fleetDataStreams = 'fleet:data_streams', - fleetSettings = 'fleet:settings', - // Integrations - // No deepLinkId registered, using path for the security search - integrationsSecurity = 'integrations:/browse/security', - // Management - // Ref: packages/default-nav/management/default_navigation.ts - management = 'management:', - managementIngestPipelines = 'management:ingest_pipelines', - managementPipelines = 'management:pipelines', - managementIndexManagement = 'management:index_management', - managementTransforms = 'management:transform', - managementMaintenanceWindows = 'management:maintenanceWindows', - managementTriggersActions = 'management:triggersActions', - managementCases = 'management:cases', - managementTriggersActionsConnectors = 'management:triggersActionsConnectors', - managementReporting = 'management:reporting', - managementJobsListLink = 'management:jobsListLink', - managementDataViews = 'management:dataViews', - managementObjects = 'management:objects', - managementApiKeys = 'management:api_keys', - managementTags = 'management:tags', - managementFiles = 'management:filesManagement', - managementSpaces = 'management:spaces', - managementSettings = 'management:settings', - // Cloud UI - // These are links to Cloud UI outside Kibana - // Special Format: <cloud>:<cloudUrlKey> - // cloudUrlKey Ref: x-pack/plugins/security_solution_serverless/public/navigation/links/util.ts - cloudUsersAndRoles = 'cloud:usersAndRoles', - cloudBilling = 'cloud:billing', - cloudPerformance = 'cloud:performance', -} diff --git a/x-pack/packages/security-solution/navigation/tsconfig.json b/x-pack/packages/security-solution/navigation/tsconfig.json deleted file mode 100644 index a0ba8fb180bfb..0000000000000 --- a/x-pack/packages/security-solution/navigation/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@emotion/react/types/css-prop", - "@testing-library/jest-dom", - "@testing-library/react" - ] - }, - "include": ["**/*.ts", "**/*.tsx"], - "kbn_references": [ - "@kbn/i18n", - "@kbn/core", - "@kbn/deeplinks-security" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/packages/security-solution/side_nav/jest.config.js b/x-pack/packages/security-solution/side_nav/jest.config.js deleted file mode 100644 index 89a16e7fff05e..0000000000000 --- a/x-pack/packages/security-solution/side_nav/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/security-solution/side_nav'], -}; diff --git a/x-pack/packages/security-solution/side_nav/tsconfig.json b/x-pack/packages/security-solution/side_nav/tsconfig.json deleted file mode 100644 index 4468c671f4351..0000000000000 --- a/x-pack/packages/security-solution/side_nav/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@emotion/react/types/css-prop", - "@testing-library/jest-dom", - "@testing-library/react", - "@kbn/ambient-ui-types" - ] - }, - "include": ["**/*.ts", "**/*.tsx"], - "kbn_references": [ - "@kbn/i18n", - "@kbn/analytics", - "@kbn/shared-ux-page-solution-nav", - "@kbn/security-solution-navigation", - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/packages/security-solution/storybook/config/kibana.jsonc b/x-pack/packages/security-solution/storybook/config/kibana.jsonc deleted file mode 100644 index cc52a3074f250..0000000000000 --- a/x-pack/packages/security-solution/storybook/config/kibana.jsonc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "type": "shared-common", - "id": "@kbn/security-solution-storybook-config", - "owner": "@elastic/security-threat-hunting-explore" -} diff --git a/x-pack/packages/security-solution/storybook/config/main.ts b/x-pack/packages/security-solution/storybook/config/main.ts deleted file mode 100644 index 4e7fca030c2f6..0000000000000 --- a/x-pack/packages/security-solution/storybook/config/main.ts +++ /dev/null @@ -1,16 +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 { defaultConfig } from '@kbn/storybook'; - -module.exports = { - ...defaultConfig, - stories: ['../../**/*.stories.+(tsx|mdx)'], - reactOptions: { - strictMode: true, - }, -}; diff --git a/x-pack/packages/security-solution/storybook/config/tsconfig.json b/x-pack/packages/security-solution/storybook/config/tsconfig.json deleted file mode 100644 index 1f8b2275f5191..0000000000000 --- a/x-pack/packages/security-solution/storybook/config/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "@kbn/ambient-storybook-types", - ] - }, - "include": [ - "**/*.ts" - ], - "kbn_references": [ - "@kbn/storybook", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/packages/security-solution/upselling/jest.config.js b/x-pack/packages/security-solution/upselling/jest.config.js deleted file mode 100644 index 014db69e5a69d..0000000000000 --- a/x-pack/packages/security-solution/upselling/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/packages/security-solution/upselling'], -}; diff --git a/x-pack/packages/security-solution/upselling/sections/attack_discovery/assistant_avatar/assistant_avatar.tsx b/x-pack/packages/security-solution/upselling/sections/attack_discovery/assistant_avatar/assistant_avatar.tsx deleted file mode 100644 index 626c3a4126334..0000000000000 --- a/x-pack/packages/security-solution/upselling/sections/attack_discovery/assistant_avatar/assistant_avatar.tsx +++ /dev/null @@ -1,47 +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 React from 'react'; - -interface Props { - className?: string; - size?: keyof typeof sizeMap; -} - -export const sizeMap = { - xl: 64, - l: 48, - m: 32, - s: 24, - xs: 16, - xxs: 12, -}; - -/** - * Default Elastic AI Assistant logo - * - * TODO: This may be removed when the logo is added to EUI - */ -export const AssistantAvatar = ({ className, size = 's' }: Props) => ( - <svg - className={className} - fill="none" - height={sizeMap[size]} - role="img" - viewBox="0 0 64 64" - width={sizeMap[size]} - xmlns="http://www.w3.org/2000/svg" - > - <path fill="#F04E98" d="M36 28h24v36H36V28Z" /> - <path fill="#00BFB3" d="M4 46c0-9.941 8.059-18 18-18h6v36h-6c-9.941 0-18-8.059-18-18Z" /> - <path - fill="#343741" - d="M60 12c0 6.627-5.373 12-12 12s-12-5.373-12-12S41.373 0 48 0s12 5.373 12 12Z" - /> - <path fill="#FA744E" d="M6 23C6 10.85 15.85 1 28 1v22H6Z" /> - </svg> -); diff --git a/x-pack/packages/security-solution/upselling/tsconfig.json b/x-pack/packages/security-solution/upselling/tsconfig.json deleted file mode 100644 index 70b145ed91b7d..0000000000000 --- a/x-pack/packages/security-solution/upselling/tsconfig.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "react", - "@emotion/react/types/css-prop", - "@testing-library/jest-dom", - "@testing-library/react", - "@kbn/ambient-ui-types" - ] - }, - "include": [ - "**/*.ts", - "**/*.tsx" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/security-solution-navigation", - "@kbn/shared-ux-page-kibana-template", - ], - "exclude": [ - "target/**/*" - ] -} diff --git a/x-pack/packages/security/api_key_management/src/components/token_field.tsx b/x-pack/packages/security/api_key_management/src/components/token_field.tsx index ccda03a2315c2..fa3454bfae0bf 100644 --- a/x-pack/packages/security/api_key_management/src/components/token_field.tsx +++ b/x-pack/packages/security/api_key_management/src/components/token_field.tsx @@ -52,7 +52,7 @@ export const TokenField: FunctionComponent<TokenFieldProps> = ({ value, ...props defaultMessage: 'Copy to clipboard', })} iconType="copyClipboard" - color="success" + color="accentSecondary" style={{ backgroundColor: 'transparent' }} onClick={copyText} /> diff --git a/x-pack/packages/security/plugin_types_server/index.ts b/x-pack/packages/security/plugin_types_server/index.ts index 2b46fa0146a2a..4f213fc6c9920 100644 --- a/x-pack/packages/security/plugin_types_server/index.ts +++ b/x-pack/packages/security/plugin_types_server/index.ts @@ -50,6 +50,7 @@ export type { CheckUserProfilesPrivileges, AuthorizationMode, AuthorizationServiceSetup, + EsSecurityConfig, } from './src/authorization'; export type { SecurityPluginSetup, SecurityPluginStart } from './src/plugin'; export type { diff --git a/x-pack/packages/security/plugin_types_server/src/authorization/es_security_config.ts b/x-pack/packages/security/plugin_types_server/src/authorization/es_security_config.ts new file mode 100644 index 0000000000000..3f4d244d5fb9c --- /dev/null +++ b/x-pack/packages/security/plugin_types_server/src/authorization/es_security_config.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 type { Client } from '@elastic/elasticsearch'; + +type XpackUsageResponse = Awaited<ReturnType<Client['xpack']['usage']>>; +type XpackUsageSecurity = XpackUsageResponse['security']; + +export type EsSecurityConfig = Pick<XpackUsageSecurity, 'operator_privileges'>; diff --git a/x-pack/packages/security/plugin_types_server/src/authorization/index.ts b/x-pack/packages/security/plugin_types_server/src/authorization/index.ts index c48e797dc1d1b..0ffa0900fa2d3 100644 --- a/x-pack/packages/security/plugin_types_server/src/authorization/index.ts +++ b/x-pack/packages/security/plugin_types_server/src/authorization/index.ts @@ -43,6 +43,7 @@ export type { PrivilegeDeprecationsRolesByFeatureIdResponse, } from './deprecations'; export type { AuthorizationMode } from './mode'; +export type { EsSecurityConfig } from './es_security_config'; export { GLOBAL_RESOURCE } from './constants'; export { elasticsearchRoleSchema, getKibanaRoleSchema } from './role_schema'; diff --git a/x-pack/packages/kbn-infra-forge/README.md b/x-pack/platform/packages/private/kbn-infra-forge/README.md similarity index 100% rename from x-pack/packages/kbn-infra-forge/README.md rename to x-pack/platform/packages/private/kbn-infra-forge/README.md diff --git a/x-pack/packages/kbn-infra-forge/index.ts b/x-pack/platform/packages/private/kbn-infra-forge/index.ts similarity index 100% rename from x-pack/packages/kbn-infra-forge/index.ts rename to x-pack/platform/packages/private/kbn-infra-forge/index.ts diff --git a/x-pack/platform/packages/private/kbn-infra-forge/jest.config.js b/x-pack/platform/packages/private/kbn-infra-forge/jest.config.js new file mode 100644 index 0000000000000..ca4dd781d58f8 --- /dev/null +++ b/x-pack/platform/packages/private/kbn-infra-forge/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/private/kbn-infra-forge'], +}; diff --git a/x-pack/packages/kbn-infra-forge/kibana.jsonc b/x-pack/platform/packages/private/kbn-infra-forge/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-infra-forge/kibana.jsonc rename to x-pack/platform/packages/private/kbn-infra-forge/kibana.jsonc diff --git a/x-pack/packages/kbn-infra-forge/package.json b/x-pack/platform/packages/private/kbn-infra-forge/package.json similarity index 100% rename from x-pack/packages/kbn-infra-forge/package.json rename to x-pack/platform/packages/private/kbn-infra-forge/package.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/base.json b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/base.json rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/base.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/event.json b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/event.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/event.json rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/event.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/host.json b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/host.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/host.json rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/host.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/metricset.json b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/metricset.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/metricset.json rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/metricset.json diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/system.json b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/system.json similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/system.json rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/component/system.json diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/composable/template.json b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/template.json similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/composable/template.json rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/composable/template.json diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/fake_hosts/index.ts b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/fake_hosts/index.ts similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/fake_hosts/index.ts rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/fake_hosts/index.ts diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/fake_hosts/index_template_def.ts b/x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/fake_hosts/index_template_def.ts similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/fake_hosts/index_template_def.ts rename to x-pack/platform/packages/private/kbn-infra-forge/src/data_sources/fake_hosts/index_template_def.ts diff --git a/x-pack/packages/kbn-infra-forge/src/lib/manage_template.ts b/x-pack/platform/packages/private/kbn-infra-forge/src/lib/manage_template.ts similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/lib/manage_template.ts rename to x-pack/platform/packages/private/kbn-infra-forge/src/lib/manage_template.ts diff --git a/x-pack/packages/kbn-infra-forge/src/lib/queue.ts b/x-pack/platform/packages/private/kbn-infra-forge/src/lib/queue.ts similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/lib/queue.ts rename to x-pack/platform/packages/private/kbn-infra-forge/src/lib/queue.ts diff --git a/x-pack/packages/kbn-infra-forge/src/run.ts b/x-pack/platform/packages/private/kbn-infra-forge/src/run.ts similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/run.ts rename to x-pack/platform/packages/private/kbn-infra-forge/src/run.ts diff --git a/x-pack/platform/packages/private/kbn-infra-forge/tsconfig.json b/x-pack/platform/packages/private/kbn-infra-forge/tsconfig.json new file mode 100644 index 0000000000000..44527346cbd92 --- /dev/null +++ b/x-pack/platform/packages/private/kbn-infra-forge/tsconfig.json @@ -0,0 +1,26 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + "./src/data_sources/composable/component/base.json", + "./src/data_sources/composable/component/event.json", + "./src/data_sources/composable/component/host.json", + "./src/data_sources/composable/component/metricset.json", + "./src/data_sources/composable/component/system.json", + "./src/data_sources/composable/template.json" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/tooling-log", + "@kbn/datemath" + ] +} diff --git a/x-pack/packages/rollup/README.md b/x-pack/platform/packages/private/rollup/README.md similarity index 100% rename from x-pack/packages/rollup/README.md rename to x-pack/platform/packages/private/rollup/README.md diff --git a/x-pack/packages/rollup/index.ts b/x-pack/platform/packages/private/rollup/index.ts similarity index 100% rename from x-pack/packages/rollup/index.ts rename to x-pack/platform/packages/private/rollup/index.ts diff --git a/x-pack/platform/packages/private/rollup/jest.config.js b/x-pack/platform/packages/private/rollup/jest.config.js new file mode 100644 index 0000000000000..5975f0f68097b --- /dev/null +++ b/x-pack/platform/packages/private/rollup/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/private/rollup'], +}; diff --git a/x-pack/packages/rollup/kibana.jsonc b/x-pack/platform/packages/private/rollup/kibana.jsonc similarity index 100% rename from x-pack/packages/rollup/kibana.jsonc rename to x-pack/platform/packages/private/rollup/kibana.jsonc diff --git a/x-pack/packages/rollup/package.json b/x-pack/platform/packages/private/rollup/package.json similarity index 100% rename from x-pack/packages/rollup/package.json rename to x-pack/platform/packages/private/rollup/package.json diff --git a/x-pack/packages/rollup/src/constants/index.ts b/x-pack/platform/packages/private/rollup/src/constants/index.ts similarity index 100% rename from x-pack/packages/rollup/src/constants/index.ts rename to x-pack/platform/packages/private/rollup/src/constants/index.ts diff --git a/x-pack/packages/rollup/src/index.ts b/x-pack/platform/packages/private/rollup/src/index.ts similarity index 100% rename from x-pack/packages/rollup/src/index.ts rename to x-pack/platform/packages/private/rollup/src/index.ts diff --git a/x-pack/packages/rollup/src/rollup_deprecation_tooltip/index.ts b/x-pack/platform/packages/private/rollup/src/rollup_deprecation_tooltip/index.ts similarity index 100% rename from x-pack/packages/rollup/src/rollup_deprecation_tooltip/index.ts rename to x-pack/platform/packages/private/rollup/src/rollup_deprecation_tooltip/index.ts diff --git a/x-pack/packages/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx b/x-pack/platform/packages/private/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx similarity index 100% rename from x-pack/packages/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx rename to x-pack/platform/packages/private/rollup/src/rollup_deprecation_tooltip/rollup_deprecation_tooltip.tsx diff --git a/x-pack/platform/packages/private/rollup/tsconfig.json b/x-pack/platform/packages/private/rollup/tsconfig.json new file mode 100644 index 0000000000000..b396ea0bc88e0 --- /dev/null +++ b/x-pack/platform/packages/private/rollup/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": ["@kbn/i18n"] +} diff --git a/x-pack/packages/kbn-ai-assistant-common/README.md b/x-pack/platform/packages/shared/ai-assistant/common/README.md similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/README.md rename to x-pack/platform/packages/shared/ai-assistant/common/README.md diff --git a/x-pack/packages/kbn-ai-assistant-common/index.ts b/x-pack/platform/packages/shared/ai-assistant/common/index.ts similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/index.ts rename to x-pack/platform/packages/shared/ai-assistant/common/index.ts diff --git a/x-pack/platform/packages/shared/ai-assistant/common/jest.config.js b/x-pack/platform/packages/shared/ai-assistant/common/jest.config.js new file mode 100644 index 0000000000000..64fbdd9d6aee7 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/common/jest.config.js @@ -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. + */ + +module.exports = { + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_ai_assistant_common_src', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/packages/shared/ai-assistant/common/src/**/*.{ts,tsx}', + '!<rootDir>/x-pack/platform/packages/shared/ai-assistant/common/src/*.test.{ts,tsx}', + ], + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/ai-assistant/common'], +}; diff --git a/x-pack/packages/kbn-ai-assistant-common/kibana.jsonc b/x-pack/platform/packages/shared/ai-assistant/common/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/kibana.jsonc rename to x-pack/platform/packages/shared/ai-assistant/common/kibana.jsonc diff --git a/x-pack/packages/kbn-ai-assistant-common/package.json b/x-pack/platform/packages/shared/ai-assistant/common/package.json similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/package.json rename to x-pack/platform/packages/shared/ai-assistant/common/package.json diff --git a/x-pack/packages/kbn-ai-assistant-common/setup_tests.ts b/x-pack/platform/packages/shared/ai-assistant/common/setup_tests.ts similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/setup_tests.ts rename to x-pack/platform/packages/shared/ai-assistant/common/setup_tests.ts diff --git a/x-pack/packages/kbn-ai-assistant-common/src/index.ts b/x-pack/platform/packages/shared/ai-assistant/common/src/index.ts similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/src/index.ts rename to x-pack/platform/packages/shared/ai-assistant/common/src/index.ts diff --git a/x-pack/packages/kbn-ai-assistant-common/src/types/index.ts b/x-pack/platform/packages/shared/ai-assistant/common/src/types/index.ts similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/src/types/index.ts rename to x-pack/platform/packages/shared/ai-assistant/common/src/types/index.ts diff --git a/x-pack/packages/kbn-ai-assistant-common/src/utils/filter_scopes.ts b/x-pack/platform/packages/shared/ai-assistant/common/src/utils/filter_scopes.ts similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/src/utils/filter_scopes.ts rename to x-pack/platform/packages/shared/ai-assistant/common/src/utils/filter_scopes.ts diff --git a/x-pack/packages/kbn-ai-assistant-common/src/utils/index.ts b/x-pack/platform/packages/shared/ai-assistant/common/src/utils/index.ts similarity index 100% rename from x-pack/packages/kbn-ai-assistant-common/src/utils/index.ts rename to x-pack/platform/packages/shared/ai-assistant/common/src/utils/index.ts diff --git a/x-pack/platform/packages/shared/ai-assistant/common/tsconfig.json b/x-pack/platform/packages/shared/ai-assistant/common/tsconfig.json new file mode 100644 index 0000000000000..c214aaeb21c62 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/common/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [] +} diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/README.md b/x-pack/platform/packages/shared/ai-assistant/icon/README.md new file mode 100644 index 0000000000000..88c8421820fdc --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/README.md @@ -0,0 +1,3 @@ +# @kbn/ai-assistant-icon + +Empty package generated by @kbn/generate diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/avatar.stories.tsx b/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/avatar.stories.tsx new file mode 100644 index 0000000000000..829f18d138d5f --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/avatar.stories.tsx @@ -0,0 +1,34 @@ +/* + * 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 { ComponentMeta, ComponentStory } from '@storybook/react'; + +import { AssistantAvatar as Component } from '../avatar'; + +export default { + title: 'Assistant Icon/Avatar', + component: Component, + argTypes: { + iconSize: { + control: 'select', + options: ['original', 's', 'm', 'l', 'xl', 'xxl', undefined], + defaultValue: undefined, + }, + size: { + control: 'select', + options: ['s', 'm', 'l', 'xl', undefined], + defaultValue: undefined, + }, + name: { + control: 'text', + defaultValue: 'Elastic Assistant', + }, + }, +} as ComponentMeta<typeof Component>; + +export const Avatar: ComponentStory<typeof Component> = (args) => <Component {...args} />; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/beacon.stories.tsx b/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/beacon.stories.tsx new file mode 100644 index 0000000000000..b0a77f6cab3cb --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/beacon.stories.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 { ComponentMeta, ComponentStory } from '@storybook/react'; + +import { AssistantBeacon as Component } from '../beacon'; + +export default { + title: 'Assistant Icon/Beacon', + component: Component, + argTypes: { + size: { + control: 'select', + options: ['original', 's', 'm', 'l', 'xl', 'xxl'], + defaultValue: 'xxl', + }, + }, +} as ComponentMeta<typeof Component>; + +export const Beacon: ComponentStory<typeof Component> = (args) => <Component {...args} />; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/icon.stories.tsx b/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/icon.stories.tsx new file mode 100644 index 0000000000000..e27ec513e7aa8 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/__stories__/icon.stories.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 { ComponentMeta, ComponentStory } from '@storybook/react'; + +import { AssistantIcon as Component } from '../icon'; + +export default { + title: 'Assistant Icon/Icon', + component: Component, + argTypes: { + size: { + control: 'select', + options: ['original', 's', 'm', 'l', 'xl', 'xxl'], + defaultValue: 'xxl', + }, + }, +} as ComponentMeta<typeof Component>; + +export const Icon: ComponentStory<typeof Component> = (args) => <Component {...args} />; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/avatar.styles.ts b/x-pack/platform/packages/shared/ai-assistant/icon/avatar.styles.ts new file mode 100644 index 0000000000000..3b9d0b40ef274 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/avatar.styles.ts @@ -0,0 +1,22 @@ +/* + * 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 { useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/react'; + +export const useStyles = () => { + const { + euiTheme: { border, size }, + } = useEuiTheme(); + + const root = css` + border: ${border.thin}; + padding: ${size.xs}; + `; + + return { root }; +}; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/avatar.tsx b/x-pack/platform/packages/shared/ai-assistant/icon/avatar.tsx new file mode 100644 index 0000000000000..40142b8b30fa8 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/avatar.tsx @@ -0,0 +1,33 @@ +/* + * 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 { EuiAvatar, EuiAvatarProps } from '@elastic/eui'; + +import { AssistantIcon } from './icon'; +import { useStyles } from './avatar.styles'; + +/** + * Avatar component for the AI Assistant. + */ +export type AssistantAvatarProps = Omit< + EuiAvatarProps, + 'iconType' | 'initials' | 'initialsLength' | 'imageUrl' +>; + +/** + * A `EuiAvatar` component customized for the AI Assistant. + */ +export const AssistantAvatar = ({ + css, + color = 'plain', + size = 'm', + ...props +}: AssistantAvatarProps) => { + const { root } = useStyles(); + return <EuiAvatar {...{ ...props, color, size }} css={[root, css]} iconType={AssistantIcon} />; +}; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/beacon.styles.ts b/x-pack/platform/packages/shared/ai-assistant/icon/beacon.styles.ts new file mode 100644 index 0000000000000..5fff8e45f2031 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/beacon.styles.ts @@ -0,0 +1,138 @@ +/* + * 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 { useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/react'; +import { AssistantBeaconProps } from './beacon'; + +/** + * Returns contextually-relevant styles for the AI Assistant beacon. + */ +export const useStyles = ({ + backgroundColor = 'body', + size: iconSize = 'xxl', +}: AssistantBeaconProps) => { + const { + euiTheme: { colors, size }, + } = useEuiTheme(); + + const background = colors[backgroundColor]; + const rootSize = size[iconSize]; + + const root = css` + // Distance between the icon and the ring + --ring-padding: ${Math.max(parseInt(rootSize, 10) / 2, parseInt(size.m, 10))}px; + --ring-size: calc(${rootSize} + var(--ring-padding)); + + // Size of the mask that hides the ring at frame 0 + --mask-point: calc(var(--ring-size) + 1px); + + // Overall size of the icon, given the animation doubles the + // ring size at its end. + --root-size: calc(var(--ring-size) * 2); + + background-color: ${background}; + display: flex; + justify-content: center; + align-items: center; + position: relative; + width: var(--root-size); + height: var(--root-size); + + &:after { + content: ''; + position: absolute; + height: var(--mask-point); + width: var(--mask-point); + z-index: 2; + border: 2px solid ${background}; + border-radius: 50%; + } + `; + + const rings = css` + display: inline-block; + position: absolute; + height: var(--ring-size); + width: var(--ring-size); + + @keyframes outer { + 0% { + opacity: 1; + transform: scaleY(1) scaleX(1); + } + 20% { + opacity: 0.5; + } + 70% { + opacity: 0.2; + transform: scaleY(2) scaleX(2); + } + 80% { + opacity: 0; + transform: scaleY(2) scaleX(2); + } + 90% { + opacity: 0; + transform: scaleY(1) scaleX(1); + } + } + + @keyframes inner { + 0% { + opacity: 1; + transform: scaleY(1) scaleX(1); + } + 15% { + opacity: 1; + transform: scaleY(1) scaleX(1); + } + 40% { + opacity: 0.5; + } + 70% { + opacity: 0.2; + transform: scaleY(1.5) scaleX(1.5); + } + 80% { + opacity: 0; + transform: scaleY(1.5) scaleX(1.5); + } + 90% { + opacity: 0; + transform: scaleY(1) scaleX(1); + } + } + + &:before, + &:after { + content: ''; + position: absolute; + width: var(--ring-size); + height: var(--ring-size); + top: 0; + left: 0; + z-index: 0; + border: 1px solid ${colors.primary}; + border-radius: 50%; + animation: 4s cubic-bezier(0.42, 0, 0.37, 1) 0.5s infinite normal none running; + } + + &:before { + animation-name: inner; + } + + &:after { + animation-name: outer; + } + `; + + return { + root, + rings, + }; +}; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx b/x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx new file mode 100644 index 0000000000000..12594d97efa35 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/beacon.tsx @@ -0,0 +1,43 @@ +/* + * 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 { EuiIconProps, EuiThemeComputed } from '@elastic/eui'; + +import { AssistantIcon } from './icon'; +import { useStyles } from './beacon.styles'; + +type Size = keyof EuiThemeComputed['size'] & EuiIconProps['size']; + +/** + * Parameters for the styles for the AI Assistant beacon. + */ +export interface AssistantBeaconProps { + /** + * Background color for the beacon. + */ + backgroundColor?: keyof EuiThemeComputed['colors']; + /** + * Size of the beacon. + */ + size?: Size; +} + +/** + * An AI Assistant icon with a pulsing ring around it, used in "hero" areas promoting functionality or prompting interaction. + */ +export const AssistantBeacon = ({ backgroundColor, size = 'xxl' }: AssistantBeaconProps) => { + const { root, rings } = useStyles({ backgroundColor, size }); + + return ( + <div css={root}> + <AssistantIcon {...{ size }} /> + <span css={rings} /> + </div> + ); +}; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/icon.tsx b/x-pack/platform/packages/shared/ai-assistant/icon/icon.tsx new file mode 100644 index 0000000000000..39b4d9391df29 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/icon.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 React from 'react'; +import { EuiIcon, EuiIconProps } from '@elastic/eui'; +import { dynamic } from '@kbn/shared-ux-utility'; + +/** + * Props for the AI Assistant icon. + */ +export type AssistantIconProps = Omit<EuiIconProps, 'type'>; + +/** + * Default Elastic AI Assistant icon. + */ +export const AssistantIcon = ({ size = 'm', ...rest }: AssistantIconProps) => { + // TODO: can be removed once added to EUI. + const type = dynamic(() => import('./svg/assistant')); + return <EuiIcon {...{ type, size, ...rest }} />; +}; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/index.ts b/x-pack/platform/packages/shared/ai-assistant/icon/index.ts new file mode 100644 index 0000000000000..4cf6a0daacab3 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/index.ts @@ -0,0 +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. + */ + +export { AssistantAvatar, type AssistantAvatarProps } from './avatar'; +export { AssistantBeacon, type AssistantBeaconProps } from './beacon'; +export { AssistantIcon, type AssistantIconProps } from './icon'; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/jest.config.js b/x-pack/platform/packages/shared/ai-assistant/icon/jest.config.js new file mode 100644 index 0000000000000..fdfd796189ed9 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/ai-assistant/icon'], +}; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/kibana.jsonc b/x-pack/platform/packages/shared/ai-assistant/icon/kibana.jsonc new file mode 100644 index 0000000000000..35576a4c73158 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/kibana.jsonc @@ -0,0 +1,7 @@ +{ + "type": "shared-browser", + "id": "@kbn/ai-assistant-icon", + "owner": "@elastic/appex-sharedux", + "visibility": "shared", + "group": "platform" +} diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/package.json b/x-pack/platform/packages/shared/ai-assistant/icon/package.json new file mode 100644 index 0000000000000..c88a4d89d8945 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/ai-assistant-icon", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0" +} \ No newline at end of file diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/svg/assistant.svg b/x-pack/platform/packages/shared/ai-assistant/icon/svg/assistant.svg new file mode 100644 index 0000000000000..d4334388fd468 --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/svg/assistant.svg @@ -0,0 +1,9 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="100%" width="100%" viewBox="0 0 64 64" fill="none"> + <path fill="#F04E98" d="M36 28h24v36H36V28Z" /> + <path fill="#00BFB3" d="M4 46c0-9.941 8.059-18 18-18h6v36h-6c-9.941 0-18-8.059-18-18Z" /> + <path + fill="#343741" + d="M60 12c0 6.627-5.373 12-12 12s-12-5.373-12-12S41.373 0 48 0s12 5.373 12 12Z" + /> + <path fill="#FA744E" d="M6 23C6 10.85 15.85 1 28 1v22H6Z" /> +</svg> diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/svg/assistant.tsx b/x-pack/platform/packages/shared/ai-assistant/icon/svg/assistant.tsx new file mode 100644 index 0000000000000..9d47665d3e06e --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/svg/assistant.tsx @@ -0,0 +1,30 @@ +/* + * 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'; + +const AssistantLogo = (props: React.SVGProps<SVGSVGElement>) => ( + <svg + xmlns="http://www.w3.org/2000/svg" + height="100%" + width="100%" + viewBox="0 0 64 64" + fill="none" + {...props} + > + <path fill="#F04E98" d="M36 28h24v36H36V28Z" /> + <path fill="#00BFB3" d="M4 46c0-9.941 8.059-18 18-18h6v36h-6c-9.941 0-18-8.059-18-18Z" /> + <path + fill="#343741" + d="M60 12c0 6.627-5.373 12-12 12s-12-5.373-12-12S41.373 0 48 0s12 5.373 12 12Z" + /> + <path fill="#FA744E" d="M6 23C6 10.85 15.85 1 28 1v22H6Z" /> + </svg> +); + +// eslint-disable-next-line import/no-default-export +export { AssistantLogo as default }; diff --git a/x-pack/platform/packages/shared/ai-assistant/icon/tsconfig.json b/x-pack/platform/packages/shared/ai-assistant/icon/tsconfig.json new file mode 100644 index 0000000000000..59f40eee91e0d --- /dev/null +++ b/x-pack/platform/packages/shared/ai-assistant/icon/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@kbn/ambient-ui-types" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/shared-ux-utility", + ] +} diff --git a/x-pack/platform/packages/shared/ai-infra/inference-common/index.ts b/x-pack/platform/packages/shared/ai-infra/inference-common/index.ts index 4b5ef3a5cfda1..603192fb96db4 100644 --- a/x-pack/platform/packages/shared/ai-infra/inference-common/index.ts +++ b/x-pack/platform/packages/shared/ai-infra/inference-common/index.ts @@ -13,6 +13,9 @@ export { type AssistantMessage, type ToolMessage, type UserMessage, + type MessageOf, + type AssistantMessageOf, + type ToolMessageOf, type ToolSchemaType, type FromToolSchema, type ToolSchema, diff --git a/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/index.ts b/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/index.ts index 3daa898ab2e1a..cedc8297d75bc 100644 --- a/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/index.ts +++ b/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/index.ts @@ -33,6 +33,9 @@ export { type AssistantMessage, type UserMessage, type ToolMessage, + type AssistantMessageOf, + type MessageOf, + type ToolMessageOf, } from './messages'; export { type ToolSchema, type ToolSchemaType, type FromToolSchema } from './tool_schema'; export { diff --git a/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts b/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts index ca74b094e0a3b..43d03cf130c01 100644 --- a/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts +++ b/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/messages.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolCall } from './tools'; +import type { ToolCall, ToolCallsOf, ToolNamesOf, ToolOptions, ToolResponsesOf } from './tools'; /** * Enum for all possible {@link Message} roles. @@ -52,17 +52,32 @@ export type AssistantMessage = MessageBase<MessageRole.Assistant> & { /** * Represents a tool invocation result, following a request from the LLM to execute a tool. */ -export type ToolMessage<TToolResponse extends Record<string, any> | unknown> = - MessageBase<MessageRole.Tool> & { - /** - * The call id matching the {@link ToolCall} this tool message is for. - */ - toolCallId: string; - /** - * The response from the tool invocation. - */ - response: TToolResponse; - }; +export type ToolMessage< + TName extends string = string, + TToolResponse extends Record<string, any> | unknown = Record<string, any> | unknown, + TToolData extends Record<string, any> | undefined = Record<string, any> | undefined +> = MessageBase<MessageRole.Tool> & { + /* + * The name of the tool called. Used for refining the type of the response. + */ + name: TName; + /** + * The call id matching the {@link ToolCall} this tool message is for. + */ + toolCallId: string; + /** + * The response from the tool invocation. + */ + response: TToolResponse; +} & (TToolData extends undefined + ? {} + : { + /** + * Additional data from the tool invocation, that is not sent to the LLM + * but can be used to attach baggage (such as timeseries or debug data) + */ + data: TToolData; + }); /** * Mixin composed of all the possible types of messages in a chatComplete discussion. @@ -72,4 +87,30 @@ export type ToolMessage<TToolResponse extends Record<string, any> | unknown> = * - {@link AssistantMessage} * - {@link ToolMessage} */ -export type Message = UserMessage | AssistantMessage | ToolMessage<unknown>; +export type Message = UserMessage | AssistantMessage | ToolMessage; + +/** + * Utility type to get the Assistant message type of a {@link ToolOptions} type. + */ +export type AssistantMessageOf<TToolOptions extends ToolOptions> = Omit< + AssistantMessage, + 'toolCalls' +> & + ToolCallsOf<TToolOptions>; + +/** + * Utility type to get the Tool message type of a {@link ToolOptions} type. + */ + +export type ToolMessageOf<TToolOptions extends ToolOptions> = ToolMessage< + ToolNamesOf<TToolOptions>, + ToolResponsesOf<TToolOptions['tools']> +>; + +/** + * Utility type to get the mixin Message type of a {@link ToolOptions} type. + */ +export type MessageOf<TToolOptions extends ToolOptions> = + | UserMessage + | AssistantMessageOf<TToolOptions> + | ToolMessageOf<TToolOptions>; diff --git a/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts b/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts index 0c7d5c6755f31..5cd52d5f58883 100644 --- a/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts +++ b/x-pack/platform/packages/shared/ai-infra/inference-common/src/chat_complete/tools.ts @@ -8,24 +8,24 @@ import type { ValuesType } from 'utility-types'; import { FromToolSchema, ToolSchema } from './tool_schema'; -type Assert<TValue, TType> = TValue extends TType ? TValue & TType : never; - type ToolsOfChoice<TToolOptions extends ToolOptions> = TToolOptions['toolChoice'] extends { function: infer TToolName; } ? TToolName extends keyof TToolOptions['tools'] - ? Pick<TToolOptions['tools'], TToolName> + ? TToolName extends string + ? Pick<TToolOptions['tools'], TToolName> + : TToolOptions['tools'] : TToolOptions['tools'] : TToolOptions['tools']; /** * Utility type to infer the tool calls response shape. */ -type ToolResponsesOf<TTools extends Record<string, ToolDefinition> | undefined> = +export type ToolResponsesOf<TTools extends Record<string, ToolDefinition> | undefined> = TTools extends Record<string, ToolDefinition> ? Array< ValuesType<{ - [TName in keyof TTools]: ToolResponseOf<Assert<TName, string>, TTools[TName]>; + [TName in keyof TTools & string]: ToolCall<TName, ToolResponseOf<TTools[TName]>>; }> > : never[]; @@ -33,10 +33,11 @@ type ToolResponsesOf<TTools extends Record<string, ToolDefinition> | undefined> /** * Utility type to infer the tool call response shape. */ -type ToolResponseOf<TName extends string, TToolDefinition extends ToolDefinition> = ToolCall< - TName, - TToolDefinition extends { schema: ToolSchema } ? FromToolSchema<TToolDefinition['schema']> : {} ->; +export type ToolResponseOf<TToolDefinition extends ToolDefinition> = TToolDefinition extends { + schema: ToolSchema; +} + ? FromToolSchema<TToolDefinition['schema']> + : {}; /** * Tool invocation choice type. @@ -129,6 +130,10 @@ export interface ToolCall< name: TName; } & (TArguments extends Record<string, any> ? { arguments: TArguments } : {}); } +/** + * Utility type to get the tool names of ToolOptions + */ +export type ToolNamesOf<TToolOptions extends ToolOptions> = keyof TToolOptions['tools'] & string; /** * Tool-related parameters of {@link ChatCompleteAPI} diff --git a/x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts b/x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts index 3355042910a61..cd90394cd67d3 100644 --- a/x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts +++ b/x-pack/platform/packages/shared/ai-infra/inference-common/src/output/api.ts @@ -96,6 +96,17 @@ export interface OutputOptions< * Defaults to false. */ stream?: TStream; + + /** + * Optional configuration for retrying the call if an error occurs. + */ + retry?: { + /** + * Whether to retry on validation errors. Can be a number or retries, + * or a boolean, which means one retry. + */ + onValidationError?: boolean | number; + }; } /** diff --git a/x-pack/platform/packages/shared/ai-infra/product-doc-common/package.json b/x-pack/platform/packages/shared/ai-infra/product-doc-common/package.json index 839d411a2efb9..2d7c67f17728d 100644 --- a/x-pack/platform/packages/shared/ai-infra/product-doc-common/package.json +++ b/x-pack/platform/packages/shared/ai-infra/product-doc-common/package.json @@ -3,4 +3,4 @@ "private": true, "version": "1.0.0", "license": "Elastic License 2.0" -} \ No newline at end of file +} diff --git a/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/README.md b/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/README.md similarity index 100% rename from x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/README.md rename to x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/README.md diff --git a/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts b/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts similarity index 100% rename from x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts rename to x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/index.ts diff --git a/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/kibana.jsonc b/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/kibana.jsonc similarity index 100% rename from x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/kibana.jsonc rename to x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/kibana.jsonc diff --git a/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/package.json b/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/package.json similarity index 100% rename from x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/package.json rename to x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/package.json diff --git a/x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts b/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts similarity index 100% rename from x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts rename to x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/src/policies.ts diff --git a/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/tsconfig.json b/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/tsconfig.json new file mode 100644 index 0000000000000..0e4ba01c6d576 --- /dev/null +++ b/x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + ] +} diff --git a/x-pack/packages/index-management/index_management_shared_types/README.md b/x-pack/platform/packages/shared/index-management/index_management_shared_types/README.md similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/README.md rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/README.md diff --git a/x-pack/packages/index-management/index_management_shared_types/index.ts b/x-pack/platform/packages/shared/index-management/index_management_shared_types/index.ts similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/index.ts rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/index.ts diff --git a/x-pack/platform/packages/shared/index-management/index_management_shared_types/jest.config.js b/x-pack/platform/packages/shared/index-management/index_management_shared_types/jest.config.js new file mode 100644 index 0000000000000..2b8ce5014e57c --- /dev/null +++ b/x-pack/platform/packages/shared/index-management/index_management_shared_types/jest.config.js @@ -0,0 +1,14 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: [ + '<rootDir>/x-pack/platform/packages/shared/index-management/index_management_shared_types', + ], +}; diff --git a/x-pack/packages/index-management/index_management_shared_types/kibana.jsonc b/x-pack/platform/packages/shared/index-management/index_management_shared_types/kibana.jsonc similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/kibana.jsonc rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/kibana.jsonc diff --git a/x-pack/packages/index-management/index_management_shared_types/package.json b/x-pack/platform/packages/shared/index-management/index_management_shared_types/package.json similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/package.json rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/package.json diff --git a/x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts b/x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/src/home_sections.ts rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/src/home_sections.ts diff --git a/x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts b/x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/src/services/extensions_service.ts rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/extensions_service.ts diff --git a/x-pack/packages/index-management/index_management_shared_types/src/services/index.ts b/x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/index.ts similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/src/services/index.ts rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/index.ts diff --git a/x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts b/x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/src/services/public_api_service.ts rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/src/services/public_api_service.ts diff --git a/x-pack/packages/index-management/index_management_shared_types/src/types.ts b/x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts similarity index 100% rename from x-pack/packages/index-management/index_management_shared_types/src/types.ts rename to x-pack/platform/packages/shared/index-management/index_management_shared_types/src/types.ts diff --git a/x-pack/platform/packages/shared/index-management/index_management_shared_types/tsconfig.json b/x-pack/platform/packages/shared/index-management/index_management_shared_types/tsconfig.json new file mode 100644 index 0000000000000..b23a97fd4c854 --- /dev/null +++ b/x-pack/platform/packages/shared/index-management/index_management_shared_types/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/core-application-browser", + "@kbn/utility-types", + "@kbn/share-plugin", + ] +} diff --git a/x-pack/packages/kbn-data-forge/README.md b/x-pack/platform/packages/shared/kbn-data-forge/README.md similarity index 100% rename from x-pack/packages/kbn-data-forge/README.md rename to x-pack/platform/packages/shared/kbn-data-forge/README.md diff --git a/x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/change_point_detection.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/change_point_detection.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/change_point_detection.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/change_point_detection.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/concept_drift.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/concept_drift.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/concept_drift.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/concept_drift.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/contextual_anomaly.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/contextual_anomaly.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/contextual_anomaly.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/contextual_anomaly.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/point_anomaly.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/point_anomaly.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/anomalies_by_type/point_anomaly.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/anomalies_by_type/point_anomaly.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/changing_log_volume_example.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/changing_log_volume_example.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/changing_log_volume_example.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/changing_log_volume_example.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/fake_logs_sine.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/fake_logs_sine.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/fake_logs_sine.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/fake_logs_sine.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/fake_stack.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/fake_stack.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/fake_stack.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/fake_stack.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/full_example.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/full_example.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/full_example.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/full_example.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/future_example.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/future_example.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/future_example.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/future_example.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/good_to_bad_to_good.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/good_to_bad_to_good.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/good_to_bad_to_good.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/good_to_bad_to_good.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/log_drop.yml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/log_drop.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/log_drop.yml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/log_drop.yml diff --git a/x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario0_logs.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario0_logs.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario0_logs.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario0_logs.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario1_spike_logs.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario1_spike_logs.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario1_spike_logs.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario1_spike_logs.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario2_spike_logs_host.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario2_spike_logs_host.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario2_spike_logs_host.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario2_spike_logs_host.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario3_spike_errors.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario3_spike_errors.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario3_spike_errors.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario3_spike_errors.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario4_spike_errors_with_recovery.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario4_spike_errors_with_recovery.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario4_spike_errors_with_recovery.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario4_spike_errors_with_recovery.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario5_spike_logs_linear.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario5_spike_logs_linear.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/log_spike_scenarios/scenario5_spike_logs_linear.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/log_spike_scenarios/scenario5_spike_logs_linear.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/metric_example.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/metric_example.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/metric_example.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/metric_example.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/ramp_up_then_down.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/ramp_up_then_down.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/ramp_up_then_down.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/ramp_up_then_down.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario0_paralell_metrics_drop_step_change.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario0_paralell_metrics_drop_step_change.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario0_paralell_metrics_drop_step_change.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario0_paralell_metrics_drop_step_change.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario1_paralell_metrics_increase_step_change.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario1_paralell_metrics_increase_step_change.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario1_paralell_metrics_increase_step_change.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario1_paralell_metrics_increase_step_change.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario2_divergent_metrics.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario2_divergent_metrics.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario2_divergent_metrics.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario2_divergent_metrics.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario3_chained_metrics_change.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario3_chained_metrics_change.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/related_events_metrics/scenario3_chained_metrics_change.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/related_events_metrics/scenario3_chained_metrics_change.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_groupby.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_groupby.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_groupby.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_groupby.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_nodata.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_nodata.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_nodata.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_log_count_nodata.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_groupby.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_groupby.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_groupby.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_groupby.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_nodata.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_nodata.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_nodata.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/custom_threshold_metric_avg_nodata.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/rule_tests/slo_burn_rate.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/slo_burn_rate.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/rule_tests/slo_burn_rate.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/rule_tests/slo_burn_rate.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/transition_example.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/transition_example.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/transition_example.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/transition_example.yaml diff --git a/x-pack/packages/kbn-data-forge/example_config/transitioning_templates_example.yaml b/x-pack/platform/packages/shared/kbn-data-forge/example_config/transitioning_templates_example.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/example_config/transitioning_templates_example.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/example_config/transitioning_templates_example.yaml diff --git a/x-pack/packages/kbn-data-forge/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/index.ts diff --git a/x-pack/platform/packages/shared/kbn-data-forge/jest.config.js b/x-pack/platform/packages/shared/kbn-data-forge/jest.config.js new file mode 100644 index 0000000000000..2b75e2ad4d2b6 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/kbn-data-forge'], +}; diff --git a/x-pack/packages/kbn-data-forge/kibana.jsonc b/x-pack/platform/packages/shared/kbn-data-forge/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-data-forge/kibana.jsonc rename to x-pack/platform/packages/shared/kbn-data-forge/kibana.jsonc diff --git a/x-pack/packages/kbn-data-forge/package.json b/x-pack/platform/packages/shared/kbn-data-forge/package.json similarity index 100% rename from x-pack/packages/kbn-data-forge/package.json rename to x-pack/platform/packages/shared/kbn-data-forge/package.json diff --git a/x-pack/packages/kbn-data-forge/src/cleanup.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/cleanup.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/cleanup.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/cleanup.ts diff --git a/x-pack/packages/kbn-data-forge/src/cli.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/cli.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/cli.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/cli.ts diff --git a/x-pack/packages/kbn-data-forge/src/constants.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/constants.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/constants.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/metricset.yaml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/metricset.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/metricset.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/metricset.yaml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/system.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/system.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/system.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/custom/system.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/mapping-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/mapping-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/mapping-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/subset.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/subset.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/subset.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/subset.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings-legacy.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings-legacy.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings-legacy.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings-legacy.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/fields/template-settings.json diff --git a/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generate.sh b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generate.sh new file mode 100755 index 0000000000000..f4e90c0d0510f --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generate.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +cd ../../../../../../../../../../ecs + +BASE=../kibana/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts +ECS=$BASE/ecs + +python3 ./scripts/generator.py --ref v8.0.0 \ + --subset $ECS/fields/subset.yml \ + --include $ECS/fields/custom \ + --out $ECS/ \ + --template-settings-legacy $ECS/fields/template-settings-legacy.json \ + --template-settings $ECS/fields/template-settings.json \ + --mapping-settings $ECS/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/beats/fields.ecs.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/beats/fields.ecs.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/beats/fields.ecs.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/beats/fields.ecs.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/csv/fields.csv b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/csv/fields.csv similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/csv/fields.csv rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/csv/fields.csv diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/ecs/subset/fake_hosts/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/base.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/base.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/base.json diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/event.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/event.json similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/event.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/event.json diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/host.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/host.json similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/host.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/host.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/metricset.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/metricset.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/metricset.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/metricset.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/system.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/system.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/system.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/component/system.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/composable/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/legacy/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/legacy/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/legacy/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/generated/elasticsearch/legacy/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/ecs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/ecs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_hosts/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_hosts/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/custom/metricset.yaml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/custom/metricset.yaml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/custom/metricset.yaml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/custom/metricset.yaml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/mapping-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/mapping-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/mapping-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/subset.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/subset.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/subset.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/subset.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings-legacy.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings-legacy.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings-legacy.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings-legacy.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/fields/template-settings.json diff --git a/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generate.sh b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generate.sh new file mode 100755 index 0000000000000..2862d2e9acfea --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generate.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +cd ../../../../../../../../../../ecs + +BASE=../kibana/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs +ECS=$BASE/ecs + +python3 ./scripts/generator.py --ref v8.0.0 \ + --subset $ECS/fields/subset.yml \ + --include $ECS/fields/custom \ + --out $ECS/ \ + --template-settings-legacy $ECS/fields/template-settings-legacy.json \ + --template-settings $ECS/fields/template-settings.json \ + --mapping-settings $ECS/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/beats/fields.ecs.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/beats/fields.ecs.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/beats/fields.ecs.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/beats/fields.ecs.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/csv/fields.csv b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/csv/fields.csv similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/csv/fields.csv rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/csv/fields.csv diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/ecs/subset/admin_console/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/base.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/base.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/base.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/event.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/event.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/event.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/event.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/host.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/host.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/host.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/host.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/log.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/log.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/log.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/log.json diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/metricset.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/metricset.json similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/metricset.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/component/metricset.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/composable/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/legacy/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/legacy/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/legacy/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/generated/elasticsearch/legacy/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/ecs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/ecs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_logs/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_logs/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/assets/admin_console.ndjson b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/assets/admin_console.ndjson similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/assets/admin_console.ndjson rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/assets/admin_console.ndjson diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/mapping-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/mapping-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/mapping-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/subset.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/subset.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/subset.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/subset.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings-legacy.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings-legacy.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings-legacy.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings-legacy.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/fields/template-settings.json diff --git a/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generate.sh b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generate.sh new file mode 100755 index 0000000000000..da33b88d992e1 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generate.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +cd ../../../../../../../../../../../ecs +NAME=admin_console + +BASE=../kibana/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/$NAME +ECS=$BASE/ecs + +python3 ./scripts/generator.py --ref v8.0.0 \ + --subset $ECS/fields/subset.yml \ + --out $ECS/ \ + --template-settings-legacy $ECS/fields/template-settings-legacy.json \ + --template-settings $ECS/fields/template-settings.json \ + --mapping-settings $ECS/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/beats/fields.ecs.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/beats/fields.ecs.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/beats/fields.ecs.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/beats/fields.ecs.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/csv/fields.csv b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/csv/fields.csv similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/csv/fields.csv rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/csv/fields.csv diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/ecs/subset/admin_console/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/base.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/base.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/base.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/event.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/event.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/event.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/event.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/host.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/host.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/host.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/host.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/http.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/http.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/http.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/http.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/log.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/log.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/log.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/log.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/server.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/server.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/server.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/server.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/url.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/url.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/url.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/url.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user_agent.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user_agent.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user_agent.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/component/user_agent.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/composable/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/legacy/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/legacy/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/legacy/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/generated/elasticsearch/legacy/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/ecs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_base_event.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_base_event.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_base_event.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_base_event.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_user.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_user.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_user.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/create_user.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/delete_user.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/delete_user.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/delete_user.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/delete_user.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/edit_user.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/edit_user.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/edit_user.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/edit_user.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/internal_error.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/internal_error.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/internal_error.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/internal_error.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/list_customers.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/list_customers.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/list_customers.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/list_customers.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login_error.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login_error.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login_error.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/login_error.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_connection_error.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_connection_error.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_connection_error.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_connection_error.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_proxy_timeout.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_proxy_timeout.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_proxy_timeout.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/mongodb_proxy_timeout.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/qa_deployed_to_production.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/qa_deployed_to_production.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/qa_deployed_to_production.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/qa_deployed_to_production.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/startup.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/startup.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/startup.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/startup.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/view_user.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/view_user.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/view_user.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/events/view_user.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/login_cache.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/login_cache.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/login_cache.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/admin_console/lib/login_cache.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/assets/transaction_rates.ndjson b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/assets/transaction_rates.ndjson similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/assets/transaction_rates.ndjson rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/assets/transaction_rates.ndjson diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/common/constants.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/common/constants.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/common/constants.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/common/constants.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/common/weighted_sample.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/common/weighted_sample.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/common/weighted_sample.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/common/weighted_sample.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/assets/heartbeat.ndjson b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/assets/heartbeat.ndjson similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/assets/heartbeat.ndjson rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/assets/heartbeat.ndjson diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/mapping-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/mapping-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/mapping-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/subset.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/subset.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/subset.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/subset.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings-legacy.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings-legacy.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings-legacy.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings-legacy.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/fields/template-settings.json diff --git a/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generate.sh b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generate.sh new file mode 100755 index 0000000000000..4d366a307a40a --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generate.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +cd ../../../../../../../../../../../ecs +NAME=heartbeat + +BASE=../kibana/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/$NAME +ECS=$BASE/ecs + +python3 ./scripts/generator.py --ref v8.0.0 \ + --subset $ECS/fields/subset.yml \ + --out $ECS/ \ + --template-settings-legacy $ECS/fields/template-settings-legacy.json \ + --template-settings $ECS/fields/template-settings.json \ + --mapping-settings $ECS/fields/mapping-settings.json + diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/beats/fields.ecs.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/beats/fields.ecs.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/beats/fields.ecs.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/beats/fields.ecs.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/csv/fields.csv b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/csv/fields.csv similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/csv/fields.csv rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/csv/fields.csv diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/heartbeat/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/base.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/base.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/base.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/event.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/event.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/event.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/event.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/log.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/log.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/log.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/component/log.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/composable/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/legacy/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/legacy/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/legacy/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/generated/elasticsearch/legacy/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/ecs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/bad.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/bad.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/bad.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/bad.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/create_event.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/create_event.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/create_event.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/create_event.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/good.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/good.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/good.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/heartbeat/lib/events/good.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/assets/message_processor.ndjson b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/assets/message_processor.ndjson similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/assets/message_processor.ndjson rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/assets/message_processor.ndjson diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/custom/processor.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/custom/processor.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/custom/processor.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/custom/processor.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/mapping-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/mapping-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/mapping-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/subset.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/subset.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/subset.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/subset.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings-legacy.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings-legacy.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings-legacy.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings-legacy.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/fields/template-settings.json diff --git a/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generate.sh b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generate.sh new file mode 100755 index 0000000000000..642b35d36b06e --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generate.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +cd ../../../../../../../../../../../ecs +NAME=message_processor + +BASE=../kibana/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/$NAME +ECS=$BASE/ecs + +python3 ./scripts/generator.py --ref v8.0.0 \ + --subset $ECS/fields/subset.yml \ + --include $ECS/fields/custom \ + --out $ECS/ \ + --template-settings-legacy $ECS/fields/template-settings-legacy.json \ + --template-settings $ECS/fields/template-settings.json \ + --mapping-settings $ECS/fields/mapping-settings.json + diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/beats/fields.ecs.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/beats/fields.ecs.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/beats/fields.ecs.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/beats/fields.ecs.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/csv/fields.csv b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/csv/fields.csv similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/csv/fields.csv rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/csv/fields.csv diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/ecs/subset/message_processor/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/base.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/base.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/base.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/host.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/host.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/host.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/host.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/log.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/log.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/log.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/log.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/processor.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/processor.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/processor.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/component/processor.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/composable/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/legacy/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/legacy/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/legacy/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/generated/elasticsearch/legacy/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/ecs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad_host.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad_host.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad_host.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/bad_host.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_base_event.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_base_event.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_base_event.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_base_event.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_latency_histogram.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_latency_histogram.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_latency_histogram.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/create_latency_histogram.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_bytes_processed.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_bytes_processed.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_bytes_processed.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_bytes_processed.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_time_spent.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_time_spent.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_time_spent.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/generate_time_spent.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/good.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/good.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/good.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/good.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/startup.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/startup.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/startup.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/message_processor/lib/events/startup.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/assets/mongodb.ndjson b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/assets/mongodb.ndjson similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/assets/mongodb.ndjson rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/assets/mongodb.ndjson diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/custom/mongodb.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/custom/mongodb.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/custom/mongodb.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/custom/mongodb.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/mapping-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/mapping-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/mapping-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/subset.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/subset.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/subset.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/subset.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings-legacy.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings-legacy.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings-legacy.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings-legacy.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/fields/template-settings.json diff --git a/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generate.sh b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generate.sh new file mode 100755 index 0000000000000..50495c22bc22e --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generate.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +cd ../../../../../../../../../../../ecs +NAME=mongodb + +BASE=../kibana/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/$NAME +ECS=$BASE/ecs + +python3 ./scripts/generator.py --ref v8.0.0 \ + --subset $ECS/fields/subset.yml \ + --include $ECS/fields/custom \ + --out $ECS/ \ + --template-settings-legacy $ECS/fields/template-settings-legacy.json \ + --template-settings $ECS/fields/template-settings.json \ + --mapping-settings $ECS/fields/mapping-settings.json + diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/beats/fields.ecs.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/beats/fields.ecs.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/beats/fields.ecs.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/beats/fields.ecs.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/csv/fields.csv b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/csv/fields.csv similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/csv/fields.csv rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/csv/fields.csv diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/ecs/subset/mongodb/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/base.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/base.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/base.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/host.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/host.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/host.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/host.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/log.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/log.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/log.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/log.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/mongodb.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/mongodb.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/mongodb.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/component/mongodb.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/composable/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/legacy/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/legacy/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/legacy/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/generated/elasticsearch/legacy/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/create_base_event.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/create_base_event.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/create_base_event.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/create_base_event.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/mongo_actions.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/mongo_actions.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/mongo_actions.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/mongo_actions.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/startup.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/startup.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/startup.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/mongodb/lib/events/startup.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/assets/nginx_proxy.ndjson b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/assets/nginx_proxy.ndjson similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/assets/nginx_proxy.ndjson rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/assets/nginx_proxy.ndjson diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/mapping-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/mapping-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/mapping-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/mapping-settings.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/subset.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/subset.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/subset.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/subset.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings-legacy.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings-legacy.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings-legacy.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings-legacy.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/fields/template-settings.json diff --git a/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generate.sh b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generate.sh new file mode 100755 index 0000000000000..54a4230e3d9b8 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generate.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +cd ../../../../../../../../../../../ecs +NAME=nginx_proxy + +BASE=../kibana/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/$NAME +ECS=$BASE/ecs + +python3 ./scripts/generator.py --ref v8.0.0 \ + --subset $ECS/fields/subset.yml \ + --out $ECS/ \ + --template-settings-legacy $ECS/fields/template-settings-legacy.json \ + --template-settings $ECS/fields/template-settings.json \ + --mapping-settings $ECS/fields/mapping-settings.json + diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/beats/fields.ecs.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/beats/fields.ecs.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/beats/fields.ecs.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/beats/fields.ecs.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/csv/fields.csv b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/csv/fields.csv similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/csv/fields.csv rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/csv/fields.csv diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/ecs_nested.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_flat.yml diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/ecs/subset/nginx_proxy/ecs_nested.yml diff --git a/x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/base.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/base.json similarity index 100% rename from x-pack/packages/kbn-infra-forge/src/data_sources/composable/component/base.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/base.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/host.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/host.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/host.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/host.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/http.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/http.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/http.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/http.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/log.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/log.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/log.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/log.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/url.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/url.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/url.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/component/url.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/composable/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/legacy/template.json b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/legacy/template.json similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/legacy/template.json rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/generated/elasticsearch/legacy/template.json diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/ecs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/create_nginx_timestamp.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/create_nginx_timestamp.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/create_nginx_timestamp.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/create_nginx_timestamp.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_nginx_log.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_nginx_log.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_nginx_log.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_nginx_log.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_upstream_timedout.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_upstream_timedout.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_upstream_timedout.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/create_upstream_timedout.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/startup.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/startup.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/startup.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/fake_stack/nginx_proxy/lib/events/startup.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/service_logs/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/service_logs/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_cloud.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_cloud.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_cloud.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_cloud.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_host.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_host.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_host.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_host.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_log_message.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_log_message.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_log_message.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_log_message.ts diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_service.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_service.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/data_sources/service_logs/lib/generate_service.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/data_sources/service_logs/lib/generate_service.ts diff --git a/x-pack/packages/kbn-data-forge/src/generate.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/generate.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/generate.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/generate.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/add_ephemeral_project_id.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/add_ephemeral_project_id.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/add_ephemeral_project_id.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/add_ephemeral_project_id.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/cli_to_partial_config.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/cli_to_partial_config.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/cli_to_partial_config.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/cli_to_partial_config.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/create_config.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_config.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/create_config.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_config.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/create_events.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_events.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/create_events.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/create_events.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/data_shapes/create_exponetial_function.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/create_exponetial_function.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/data_shapes/create_exponetial_function.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/create_exponetial_function.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/data_shapes/create_linear_function.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/create_linear_function.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/data_shapes/create_linear_function.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/create_linear_function.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/data_shapes/create_sine_function.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/create_sine_function.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/data_shapes/create_sine_function.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/create_sine_function.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/data_shapes/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/data_shapes/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/data_shapes/index.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/delete_index_template.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/delete_index_template.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/delete_index_template.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/delete_index_template.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/elasticsearch_error_handler.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/elasticsearch_error_handler.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/elasticsearch_error_handler.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/elasticsearch_error_handler.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/generate_counter_data.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/generate_counter_data.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/generate_counter_data.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/generate_counter_data.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/get_es_client.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/get_es_client.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/get_es_client.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/get_es_client.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/index_schedule.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/index_schedule.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/index_schedule.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/index_schedule.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/indices.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/indices.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/indices.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/indices.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/install_assets.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_assets.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/install_assets.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_assets.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/install_default_component_template.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_default_component_template.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/install_default_component_template.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_default_component_template.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/install_default_ingest_pipeline.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_default_ingest_pipeline.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/install_default_ingest_pipeline.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_default_ingest_pipeline.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/install_index_template.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_index_template.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/install_index_template.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_index_template.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/install_kibana_assets.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_kibana_assets.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/install_kibana_assets.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/install_kibana_assets.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/is_weekend.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/is_weekend.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/is_weekend.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/is_weekend.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/parse_cli_options.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/parse_cli_options.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/parse_cli_options.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/parse_cli_options.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/queue.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/queue.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/queue.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/queue.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/replace_metrics_with_shapes.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/replace_metrics_with_shapes.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/replace_metrics_with_shapes.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/replace_metrics_with_shapes.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/setup_kibana_system_user.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/setup_kibana_system_user.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/setup_kibana_system_user.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/setup_kibana_system_user.ts diff --git a/x-pack/packages/kbn-data-forge/src/lib/wait.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/lib/wait.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/lib/wait.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/lib/wait.ts diff --git a/x-pack/packages/kbn-data-forge/src/run.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/run.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/run.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/run.ts diff --git a/x-pack/packages/kbn-data-forge/src/types/index.ts b/x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts similarity index 100% rename from x-pack/packages/kbn-data-forge/src/types/index.ts rename to x-pack/platform/packages/shared/kbn-data-forge/src/types/index.ts diff --git a/x-pack/platform/packages/shared/kbn-data-forge/tsconfig.json b/x-pack/platform/packages/shared/kbn-data-forge/tsconfig.json new file mode 100644 index 0000000000000..3c3d54da2f20d --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-data-forge/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + "./src/**/*.json" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/tooling-log", + "@kbn/datemath", + "@kbn/safer-lodash-set", + "@kbn/dev-utils" + ] +} diff --git a/x-pack/packages/kbn-elastic-assistant-common/.gitignore b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/.gitignore similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/.gitignore rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/.gitignore diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant-common/README.md b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/README.md new file mode 100644 index 0000000000000..94ab25c8279b7 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/README.md @@ -0,0 +1,36 @@ +# @kbn/elastic-assistant-common + +This package provides common code consumed in both the browser, i.e. the +`platform/packages/shared/kbn-elastic-assistant` package and `plugins/security_solution` plugin, and on the server, i.e. the +`solutions/security/plugins/elastic_assistant` plugin. + +For example, the data anonymization functions exported by this package +are be used in both the browser, and on the server. + +## Maintainers + +Maintained by the Security Solution team + +## Running unit tests with code coverage + +To (interactively) run unit tests with code coverage, run the following command: + +```sh +cd $KIBANA_HOME && node scripts/jest --watch x-pack/platform/packages/shared/kbn-elastic-assistant-common --coverage +``` + +## OpenAPI Codegen + +Implemented using the new OpenAPI codegen and bundle packages: +* Includes OpenAPI codegen script and CI action as detailed in: https://github.com/elastic/kibana/pull/166269 +* Includes OpenAPI docs bundling script as detailed in: https://github.com/elastic/kibana/pull/171526 + +To run codegen/bundling locally, cd to `x-pack/platform/packages/shared/kbn-elastic-assistant-common/` and run any of the following commands: + +```bash +yarn openapi:generate +yarn openapi:generate:debug +yarn openapi:bundle +``` + +Codegen is configured to run on CI by means of the `.buildkite/scripts/steps/code_generation/elastic_assistant_codegen.sh` script, which is run as part of the `checks` pipeline, and is registered in `.buildkite/scripts/steps/checks.sh`. diff --git a/x-pack/packages/kbn-elastic-assistant-common/constants.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/constants.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/constants.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/docs/openapi/ess/elastic_assistant_api_2023_10_31.bundled.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/docs/openapi/ess/elastic_assistant_api_2023_10_31.bundled.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/docs/openapi/ess/elastic_assistant_api_2023_10_31.bundled.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/docs/openapi/ess/elastic_assistant_api_2023_10_31.bundled.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/docs/openapi/serverless/elastic_assistant_api_2023_10_31.bundled.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/docs/openapi/serverless/elastic_assistant_api_2023_10_31.bundled.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/docs/openapi/serverless/elastic_assistant_api_2023_10_31.bundled.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/docs/openapi/serverless/elastic_assistant_api_2023_10_31.bundled.schema.yaml diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant-common/env/README.md b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/env/README.md new file mode 100644 index 0000000000000..25d3cac906882 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/env/README.md @@ -0,0 +1,33 @@ +With https://github.com/elastic/kibana/pull/186566, we've introduced a few sample `*.http` files for easier development/testing. These files are supported out of the box in JetBrains IDE's or in VSCode with the [httpyac](https://httpyac.github.io/) (and many other) extensions. Since the configuration for these files includes a `-` in the name, a few @elastic/kibana-operations files have been updated to exclude them from checks and being included in the distribution. + +You can read more about `http` files [here](https://www.jetbrains.com/help/webstorm/http-client-in-product-code-editor.html) and for the spec see this repo [here](https://github.com/JetBrains/http-request-in-editor-spec/blob/master/spec.md). If we find these useful, we could add support to our [OpenAPI Generator](https://openapi-generator.tech/docs/generators/jetbrains-http-client) to create these automatically. They currently live co-located next to the OAS and generated schema files here: + +``` +x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.http +x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.http +``` + +and the main config here in this directory: + +``` +x-pack/platform/packages/shared/kbn-elastic-assistant-common/env/http-client.env.json +``` + +The `x-pack/platform/packages/shared/kbn-elastic-assistant-common/.gitignore` has been updated to ignore `http-client.private.env.json` files locally, which is how you can override the config as you'd like. This is helpful to add variables like `basePath` as below: + +``` +{ + "dev": { + "basePath": "/kbn" + } +} +``` + +To use them, just open the corresponding `*.http` for the API you want to test, and click `Send`, and the response will open in another tab. Here is what that looks like for creating one of the new `IndexEntry` KB documents that have been introduced in the initial PR: + +<p align="center"> + <img width="500" src="https://github.com/user-attachments/assets/c9e70d1a-28d2-4eb3-9853-ab6d8e1c7acf" /> +</p> + + +For continuing this effort, https://github.com/elastic/kibana/issues/192386 has been created. diff --git a/x-pack/packages/kbn-elastic-assistant-common/env/http-client.env.json b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/env/http-client.env.json similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/env/http-client.env.json rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/env/http-client.env.json diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/get_open_and_acknowledged_alerts_query/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/get_raw_data_or_default/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/is_raw_data_valid/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/size_is_out_of_range/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/alerts/helpers/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/alerts/helpers/types.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/README.md b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/README.md new file mode 100644 index 0000000000000..da6991d422089 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/README.md @@ -0,0 +1,51 @@ +### Feature Capabilities + +Feature capabilities are an object describing specific capabilities of the assistant, like whether a feature like streaming is enabled, and are defined in the sibling `./index.ts` file within this `kbn-elastic-assistant-common` package. These capabilities can be registered for a given plugin through the assistant server, and so do not need to be plumbed through the `ElasticAssistantProvider`. + +Storage and accessor functions are made available via the `AppContextService`, and exposed to clients via the`/internal/elastic_assistant/capabilities` route, which can be fetched by clients using the `useCapabilities()` UI hook. + +### Registering Capabilities + +To register a capability on plugin start, add the following in the consuming plugin's `start()`, specifying any number of capabilities you would like to explicitly declare: + +```ts +plugins.elasticAssistant.registerFeatures(APP_UI_ID, { + assistantModelEvaluation: config.experimentalFeatures.assistantModelEvaluation, + assistantStreamingEnabled: config.experimentalFeatures.assistantStreamingEnabled, +}); +``` + +### Declaring Feature Capabilities +Default feature capabilities are declared in `x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/index.ts`: + +```ts +export type AssistantFeatures = { [K in keyof typeof defaultAssistantFeatures]: boolean }; + +export const defaultAssistantFeatures = Object.freeze({ + assistantModelEvaluation: false, + assistantStreamingEnabled: false, +}); +``` + +### Using Capabilities Client Side +Capabilities can be fetched client side using the `useCapabilities()` hook ala: + +```ts +const { data: capabilities } = useCapabilities({ http, toasts }); +const { assistantModelEvaluation: modelEvaluatorEnabled, assistantStreamingEnabled } = capabilities ?? defaultAssistantFeatures; +``` + +### Using Capabilities Server Side +Or server side within a route (or elsewhere) via the `assistantContext`: + +```ts +const assistantContext = await context.elasticAssistant; +const pluginName = getPluginNameFromRequest({ request, logger }); +const registeredFeatures = assistantContext.getRegisteredFeatures(pluginName); +if (!registeredFeatures.assistantModelEvaluation) { + return response.notFound(); +} +``` + +> [!NOTE] +> Note, just as with [registering arbitrary tools](https://github.com/elastic/kibana/pull/172234), features are registered for a specific plugin, where the plugin name that corresponds to your application is defined in the `x-kbn-context` header of requests made from your application, which may be different than your plugin's registered `APP_ID`. diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/capabilities/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/capabilities/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_data/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_value/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_anonymized_values/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/get_csv_from_data/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/helpers/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/transform_raw_data/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/data_anonymization/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/data_anonymization/types.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/mock/get_anonymized_value/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/mock/get_anonymized_value/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/mock/get_anonymized_value/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/mock/get_anonymized_value/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/actions_connector/post_actions_connector_execute_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/anonymization_fields/find_anonymization_fields_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/cancel_attack_discovery_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/common_attributes.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/get_attack_discovery_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/attack_discovery/post_attack_discovery_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/capabilities/get_capabilities_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/chat/post_chat_complete_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/common_attributes.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/common_attributes.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/append_message.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/bulk_crud_conversations_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/common_attributes.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/crud_conversation_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/conversations/find_conversations_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/common_attributes.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insight_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/get_defend_insights_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/defend_insights/post_defend_insights_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/get_evaluate_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/evaluation/post_evaluate_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/crud_kb_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.http b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.http similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.http rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.http diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/bulk_crud_knowledge_base_entries_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/common_attributes.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.http b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.http similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.http rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.http diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/crud_knowledge_base_entries_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.http b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.http similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.http rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.http diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/entries/find_knowledge_base_entries_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/knowledge_base/get_knowledge_base_indices_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/bulk_crud_prompts_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.gen.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.schema.yaml b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.schema.yaml similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.schema.yaml rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/schemas/prompts/find_prompts_route.schema.yaml diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/bedrock.ts diff --git a/x-pack/packages/kbn-elastic-assistant-common/impl/utils/spaces_roles_users_data.http b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/spaces_roles_users_data.http similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/impl/utils/spaces_roles_users_data.http rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/utils/spaces_roles_users_data.http diff --git a/x-pack/packages/kbn-elastic-assistant-common/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/index.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant-common/jest.config.js b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/jest.config.js new file mode 100644 index 0000000000000..cda35c6b34674 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/jest.config.js @@ -0,0 +1,23 @@ +/* + * 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. + */ + +module.exports = { + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_elastic_assistant_common_impl', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/**/*.{ts,tsx}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/*mock*.{ts,tsx}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/*.test.{ts,tsx}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/*.d.ts', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant-common/impl/*.config.ts', + ], + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant-common'], +}; diff --git a/x-pack/packages/kbn-elastic-assistant-common/kibana.jsonc b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/kibana.jsonc rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/kibana.jsonc diff --git a/x-pack/packages/kbn-elastic-assistant-common/package.json b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/package.json similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/package.json rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/package.json diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant-common/scripts/openapi/bundle.js b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/scripts/openapi/bundle.js new file mode 100644 index 0000000000000..1462a71785056 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/scripts/openapi/bundle.js @@ -0,0 +1,63 @@ +/* + * 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. + */ + +require('../../../../../../../src/setup_node_env'); +const { bundle } = require('@kbn/openapi-bundler'); +// eslint-disable-next-line import/no-nodejs-modules +const { join, resolve } = require('path'); + +const ELASTIC_ASSISTANT_ROOT = resolve(__dirname, '../..'); + +(async () => { + await bundle({ + sourceGlob: join(ELASTIC_ASSISTANT_ROOT, 'impl/schemas/**/*.schema.yaml'), + outputFilePath: join( + ELASTIC_ASSISTANT_ROOT, + 'docs/openapi/serverless/elastic_assistant_api_{version}.bundled.schema.yaml' + ), + options: { + includeLabels: ['serverless'], + prototypeDocument: { + info: { + title: 'Security AI Assistant API (Elastic Cloud Serverless)', + description: 'Manage and interact with Security Assistant resources.', + }, + tags: [ + { + name: 'Security AI Assistant API', + 'x-displayName': 'Security AI assistant', + description: 'Manage and interact with Security Assistant resources.', + }, + ], + }, + }, + }); + + await bundle({ + sourceGlob: join(ELASTIC_ASSISTANT_ROOT, 'impl/schemas/**/*.schema.yaml'), + outputFilePath: join( + ELASTIC_ASSISTANT_ROOT, + 'docs/openapi/ess/elastic_assistant_api_{version}.bundled.schema.yaml' + ), + options: { + includeLabels: ['ess'], + prototypeDocument: { + info: { + title: 'Security AI Assistant API (Elastic Cloud & self-hosted)', + description: 'Manage and interact with Security Assistant resources.', + }, + tags: [ + { + name: 'Security AI Assistant API', + 'x-displayName': 'Security AI assistant', + description: 'Manage and interact with Security Assistant resources.', + }, + ], + }, + }, + }); +})(); diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant-common/scripts/openapi/generate.js b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/scripts/openapi/generate.js new file mode 100644 index 0000000000000..a550523d6b060 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/scripts/openapi/generate.js @@ -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. + */ + +require('../../../../../../../src/setup_node_env'); +const { generate } = require('@kbn/openapi-generator'); +// eslint-disable-next-line import/no-nodejs-modules +const { resolve } = require('path'); + +const ELASTIC_ASSISTANT_ROOT = resolve(__dirname, '../..'); + +generate({ + rootDir: ELASTIC_ASSISTANT_ROOT, + sourceGlob: './impl/schemas/**/*.schema.yaml', + templateName: 'zod_operation_schema', +}); diff --git a/x-pack/packages/kbn-elastic-assistant-common/setup_tests.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/setup_tests.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant-common/setup_tests.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant-common/setup_tests.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant-common/tsconfig.json b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/tsconfig.json new file mode 100644 index 0000000000000..f002f81718b0d --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant-common/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/zod-helpers", + "@kbn/securitysolution-io-ts-utils", + "@kbn/core", + "@kbn/logging", + "@kbn/zod", + ] +} diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/README.md b/x-pack/platform/packages/shared/kbn-elastic-assistant/README.md new file mode 100644 index 0000000000000..ec40f4ca5f5e3 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/README.md @@ -0,0 +1,20 @@ +# @kbn/elastic-assistant + +The `Elastic Assistant` is a user interface for interacting with generative AIs, like `ChatGPT`. + +This package provides: + +- Components for rendering the `Elastic Assistant` +- Hooks for passing context (for example, fields in an alert) to the `Elastic Assistant`, enabling users to include this content in their queries + +## Maintainers + +Maintained by the Security Solution team + +## Running unit tests with code coverage + +To (interactively) run unit tests with code coverage, run the following command: + +```sh +cd $KIBANA_HOME && node scripts/jest --watch x-pack/platform/packages/shared/kbn-elastic-assistant --coverage +``` diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/bulk_update_anonymization_fields.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.test.tsx similarity index 89% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.test.tsx index 5352e60bcea45..35bf94bc1d1b3 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import type { ReactNode } from 'react'; @@ -41,9 +41,7 @@ describe('useFetchAnonymizationFields', () => { wrapper: createWrapper(), }); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useFetchAnonymizationFields()); - await waitForNextUpdate(); + await waitFor(() => { expect(http.fetch).toHaveBeenCalledWith( '/api/security_ai_assistant/anonymization_fields/_find', { diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/__mocks__/use_capabilities.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/__mocks__/use_capabilities.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/__mocks__/use_capabilities.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/__mocks__/use_capabilities.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/capabilities.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx similarity index 96% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx index 6101782ae43b1..cc5df8d0a44b7 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import type { ReactNode } from 'react'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/capabilities/use_capabilities.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/bulk_update_actions_conversations.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.test.tsx new file mode 100644 index 0000000000000..50ae344a78671 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.test.tsx @@ -0,0 +1,83 @@ +/* + * 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 { act, waitFor, renderHook } from '@testing-library/react'; + +import { + DeleteConversationParams, + GetConversationByIdParams, + deleteConversation, + getConversationById, +} from './conversations'; +import { HttpSetupMock } from '@kbn/core-http-browser-mocks'; +import { coreMock } from '@kbn/core/public/mocks'; + +let http: HttpSetupMock = coreMock.createSetup().http; + +const toasts = { + addError: jest.fn(), +}; + +describe('conversations api', () => { + beforeEach(() => { + jest.clearAllMocks(); + http = coreMock.createSetup().http; + }); + + it('should call api to delete conversation', async () => { + await act(async () => { + const deleteProps = { http, toasts, id: 'test' } as unknown as DeleteConversationParams; + + renderHook(() => deleteConversation(deleteProps)); + await waitFor(() => { + expect(deleteProps.http.fetch).toHaveBeenCalledWith( + '/api/security_ai_assistant/current_user/conversations/test', + { + method: 'DELETE', + signal: undefined, + version: '2023-10-31', + } + ); + expect(toasts.addError).not.toHaveBeenCalled(); + }); + }); + }); + + it('should display error toast when delete api throws error', async () => { + http.fetch.mockRejectedValue(new Error('this is an error')); + const deleteProps = { http, toasts, id: 'test' } as unknown as DeleteConversationParams; + + await expect(deleteConversation(deleteProps)).rejects.toThrowError('this is an error'); + expect(toasts.addError).toHaveBeenCalled(); + }); + + it('should call api to get conversation', async () => { + await act(async () => { + const getProps = { http, toasts, id: 'test' } as unknown as GetConversationByIdParams; + renderHook(() => getConversationById(getProps)); + await waitFor(() => { + expect(getProps.http.fetch).toHaveBeenCalledWith( + '/api/security_ai_assistant/current_user/conversations/test', + { + method: 'GET', + signal: undefined, + version: '2023-10-31', + } + ); + expect(toasts.addError).not.toHaveBeenCalled(); + }); + }); + }); + + it('should display error toast when get api throws error', async () => { + http.fetch.mockRejectedValue(new Error('this is an error')); + const getProps = { http, toasts, id: 'test' } as unknown as GetConversationByIdParams; + + await expect(getConversationById(getProps)).rejects.toThrowError('this is an error'); + expect(toasts.addError).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/conversations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.test.tsx similarity index 87% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.test.tsx index f10c7d07a35d6..cfe67c60324cc 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import type { ReactNode } from 'react'; @@ -41,11 +41,7 @@ describe('useFetchCurrentUserConversations', () => { wrapper: createWrapper(), }); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => - useFetchCurrentUserConversations(defaultProps) - ); - await waitForNextUpdate(); + await waitFor(() => { expect(defaultProps.http.fetch).toHaveBeenCalledWith( '/api/security_ai_assistant/current_user/conversations/_find', { diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/conversations/use_fetch_current_user_conversations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/evaluate.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_evaluation_data.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/use_evaluation_data.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_evaluation_data.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/use_evaluation_data.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx similarity index 77% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx index 6d1296fc9aa64..913dbaed3263b 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { usePerformEvaluation, UsePerformEvaluationParams } from './use_perform_evaluation'; import { postEvaluation as _postEvaluation } from './evaluate'; import { useMutation as _useMutation } from '@tanstack/react-query'; @@ -50,10 +50,8 @@ describe('usePerformEvaluation', () => { jest.clearAllMocks(); }); it('should call api with undefined evalParams', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => usePerformEvaluation(defaultProps)); - await waitForNextUpdate(); - + renderHook(() => usePerformEvaluation(defaultProps)); + await waitFor(() => { expect(defaultProps.http.post).toHaveBeenCalledWith('/internal/elastic_assistant/evaluate', { body: undefined, headers: { @@ -80,10 +78,9 @@ describe('usePerformEvaluation', () => { opts.onError(e); } }); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => usePerformEvaluation(defaultProps)); - await waitForNextUpdate(); + renderHook(() => usePerformEvaluation(defaultProps)); + await waitFor(() => expect(defaultProps.http.post).toHaveBeenCalledWith('/internal/elastic_assistant/evaluate', { body: '{"graphs":["d","c"],"datasetName":"kewl","connectorIds":["h","g"],"runName":"test run"}', headers: { @@ -91,26 +88,19 @@ describe('usePerformEvaluation', () => { }, signal: undefined, version: API_VERSIONS.internal.v1, - }); - }); + }) + ); }); it('should return evaluation response', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => usePerformEvaluation(defaultProps)); - await waitForNextUpdate(); - - await expect(result.current).resolves.toStrictEqual(statusResponse); - }); + const { result } = renderHook(() => usePerformEvaluation(defaultProps)); + await waitFor(() => expect(result.current).resolves.toStrictEqual(statusResponse)); }); it('should display error toast when api throws error', async () => { postEvaluationMock.mockRejectedValue(new Error('this is an error')); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => usePerformEvaluation(defaultProps)); - await waitForNextUpdate(); - expect(toasts.addError).toHaveBeenCalled(); - }); + renderHook(() => usePerformEvaluation(defaultProps)); + await waitFor(() => expect(toasts.addError).toHaveBeenCalled()); }); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/evaluate/use_perform_evaluation.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/api.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_create_knowledge_base_entry.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_delete_knowledge_base_entries.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_knowledge_base_entries.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/entries/use_update_knowledge_base_entries.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx similarity index 76% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx index 4f258aa3c1964..a77ab1d63aa6e 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { useKnowledgeBaseIndices, UseKnowledgeBaseIndicesParams, @@ -48,10 +48,8 @@ describe('useKnowledgeBaseIndices', () => { }); it('should call api to get knowledge base indices', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useKnowledgeBaseIndices(defaultProps)); - await waitForNextUpdate(); - + renderHook(() => useKnowledgeBaseIndices(defaultProps)); + await waitFor(() => { expect(defaultProps.http.fetch).toHaveBeenCalledWith( '/internal/elastic_assistant/knowledge_base/_indices', { @@ -65,20 +63,17 @@ describe('useKnowledgeBaseIndices', () => { }); it('should return indices response', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useKnowledgeBaseIndices(defaultProps)); - await waitForNextUpdate(); - - await expect(result.current).resolves.toStrictEqual(indicesResponse); + const { result } = renderHook(() => useKnowledgeBaseIndices(defaultProps)); + await waitFor(() => { + expect(result.current).resolves.toStrictEqual(indicesResponse); }); }); it('should display error toast when api throws error', async () => { getKnowledgeBaseIndicesMock.mockRejectedValue(new Error('this is an error')); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useKnowledgeBaseIndices(defaultProps)); - await waitForNextUpdate(); + renderHook(() => useKnowledgeBaseIndices(defaultProps)); + await waitFor(() => { expect(toasts.addError).toHaveBeenCalled(); }); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_indices.tsx diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.test.tsx new file mode 100644 index 0000000000000..69fccba092ee9 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.test.tsx @@ -0,0 +1,89 @@ +/* + * 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 { waitFor, renderHook } from '@testing-library/react'; +import { useKnowledgeBaseStatus, UseKnowledgeBaseStatusParams } from './use_knowledge_base_status'; +import { getKnowledgeBaseStatus as _getKnowledgeBaseStatus } from './api'; + +const getKnowledgeBaseStatusMock = _getKnowledgeBaseStatus as jest.Mock; + +jest.mock('./api', () => { + const actual = jest.requireActual('./api'); + return { + ...actual, + getKnowledgeBaseStatus: jest.fn((...args) => actual.getKnowledgeBaseStatus(...args)), + }; +}); + +jest.mock('@tanstack/react-query', () => ({ + useQuery: jest.fn().mockImplementation(async (queryKey, fn, opts) => { + try { + const res = await fn({}); + return Promise.resolve(res); + } catch (e) { + opts.onError(e); + } + }), +})); + +const statusResponse = { + elser_exists: true, + index_exists: true, + pipeline_exists: true, + security_labs_exists: true, +}; + +const http = { + fetch: jest.fn().mockResolvedValue(statusResponse), +}; +const toasts = { + addError: jest.fn(), +}; +const defaultProps = { http, toasts } as unknown as UseKnowledgeBaseStatusParams; +describe('useKnowledgeBaseStatus', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('should call api to get knowledge base status without resource arg', async () => { + renderHook(() => useKnowledgeBaseStatus(defaultProps)); + await waitFor(() => { + expect(defaultProps.http.fetch).toHaveBeenCalledWith( + '/internal/elastic_assistant/knowledge_base/', + { + method: 'GET', + signal: undefined, + version: '1', + } + ); + expect(toasts.addError).not.toHaveBeenCalled(); + }); + }); + it('should call api to get knowledge base status with resource arg', async () => { + renderHook(() => useKnowledgeBaseStatus({ ...defaultProps, resource: 'something' })); + await waitFor(() => + expect(defaultProps.http.fetch).toHaveBeenCalledWith( + '/internal/elastic_assistant/knowledge_base/something', + { + method: 'GET', + signal: undefined, + version: '1', + } + ) + ); + }); + + it('should return status response', async () => { + const { result } = renderHook(() => useKnowledgeBaseStatus(defaultProps)); + await waitFor(() => expect(result.current).resolves.toStrictEqual(statusResponse)); + }); + + it('should display error toast when api throws error', async () => { + getKnowledgeBaseStatusMock.mockRejectedValue(new Error('this is an error')); + renderHook(() => useKnowledgeBaseStatus(defaultProps)); + await waitFor(() => expect(toasts.addError).toHaveBeenCalled()); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_knowledge_base_status.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.test.tsx similarity index 75% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.test.tsx index c08f6f93617fc..802ddf74bdf72 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { useSetupKnowledgeBase, UseSetupKnowledgeBaseParams } from './use_setup_knowledge_base'; import { postKnowledgeBase as _postKnowledgeBase } from './api'; import { useMutation as _useMutation } from '@tanstack/react-query'; @@ -50,10 +50,8 @@ describe('useSetupKnowledgeBase', () => { jest.clearAllMocks(); }); it('should call api to post knowledge base setup', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useSetupKnowledgeBase(defaultProps)); - await waitForNextUpdate(); - + renderHook(() => useSetupKnowledgeBase(defaultProps)); + await waitFor(() => { expect(defaultProps.http.fetch).toHaveBeenCalledWith( '/internal/elastic_assistant/knowledge_base/', { @@ -73,36 +71,27 @@ describe('useSetupKnowledgeBase', () => { opts.onError(e); } }); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useSetupKnowledgeBase(defaultProps)); - await waitForNextUpdate(); + renderHook(() => useSetupKnowledgeBase(defaultProps)); + await waitFor(() => expect(defaultProps.http.fetch).toHaveBeenCalledWith( '/internal/elastic_assistant/knowledge_base/something', { method: 'POST', version: '1', } - ); - }); + ) + ); }); it('should return setup response', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook(() => useSetupKnowledgeBase(defaultProps)); - await waitForNextUpdate(); - - await expect(result.current).resolves.toStrictEqual(statusResponse); - }); + const { result } = renderHook(() => useSetupKnowledgeBase(defaultProps)); + await waitFor(() => expect(result.current).resolves.toStrictEqual(statusResponse)); }); it('should display error toast when api throws error', async () => { postKnowledgeBaseMock.mockRejectedValue(new Error('this is an error')); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useSetupKnowledgeBase(defaultProps)); - await waitForNextUpdate(); - - expect(toasts.addError).toHaveBeenCalled(); - }); + renderHook(() => useSetupKnowledgeBase(defaultProps)); + await waitFor(() => expect(toasts.addError).toHaveBeenCalled()); }); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/knowledge_base/use_setup_knowledge_base.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/bulk_update_prompts.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.test.tsx similarity index 89% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.test.tsx index 8e228d2787a36..8fb1f808f8df5 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import type { ReactNode } from 'react'; @@ -41,9 +41,7 @@ describe('useFetchPrompts', () => { wrapper: createWrapper(), }); - await act(async () => { - const { waitForNextUpdate } = renderHook(() => useFetchPrompts()); - await waitForNextUpdate(); + await waitFor(() => { expect(http.fetch).toHaveBeenCalledWith('/api/security_ai_assistant/prompts/_find', { method: 'GET', query: { diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/api/prompts/use_fetch_prompts.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_animated_icon.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_animated_icon.tsx similarity index 95% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_animated_icon.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_animated_icon.tsx index f569ca1450caf..f3990dd0b7362 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_animated_icon.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_animated_icon.tsx @@ -120,6 +120,9 @@ const AvatarWrapper = styled.span` } `; +/** + * @deprecated This component will soon be replaced by `AssistantBeacon` from `@kbn/ai-assistant-icon`. + */ export const AssistantAnimatedIcon = React.memo(() => ( <Container> <Animation /> diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx new file mode 100644 index 0000000000000..205a2c7b7bac3 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_avatar/assistant_avatar.tsx @@ -0,0 +1,49 @@ +/* + * 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, { ReactNode } from 'react'; + +export interface AssistantAvatarProps { + size?: keyof typeof sizeMap; + // Required for EuiAvatar `iconType` prop + // eslint-disable-next-line react/no-unused-prop-types + children?: ReactNode; + className?: string; +} + +export const sizeMap = { + xl: 64, + l: 48, + m: 32, + s: 24, + xs: 16, + xxs: 12, +}; + +/** + * Default Elastic AI Assistant logo + * + * @deprecated This component will soon be replaced by `AssistantIcon` from `@kbn/ai-assistant-icon`. + */ +export const AssistantAvatar = ({ className, size = 's' }: AssistantAvatarProps) => ( + <svg + className={className} + xmlns="http://www.w3.org/2000/svg" + width={sizeMap[size]} + height={sizeMap[size]} + viewBox="0 0 64 64" + fill="none" + > + <path fill="#F04E98" d="M36 28h24v36H36V28Z" /> + <path fill="#00BFB3" d="M4 46c0-9.941 8.059-18 18-18h6v36h-6c-9.941 0-18-8.059-18-18Z" /> + <path + fill="#343741" + d="M60 12c0 6.627-5.373 12-12 12s-12-5.373-12-12S41.373 0 48 0s12 5.373 12 12Z" + /> + <path fill="#FA744E" d="M6 23C6 10.85 15.85 1 28 1v22H6Z" /> + </svg> +); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_body/empty_convo.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/empty_convo.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_body/empty_convo.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/empty_convo.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_body/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_body/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_body/welcome_setup.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/welcome_setup.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_body/welcome_setup.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/welcome_setup.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_header/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_header/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_header/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_header/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_header/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_header/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_header/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_header/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_header/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_header/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_header/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_header/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/flyout_navigation.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/flyout_navigation.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/flyout_navigation.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/flyout_navigation.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.test.tsx diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx new file mode 100644 index 0000000000000..c80145dcef5b9 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.tsx @@ -0,0 +1,147 @@ +/* + * 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, { useCallback, useEffect, useRef, useState } from 'react'; +import { EuiFlyoutResizable } from '@elastic/eui'; + +import useEvent from 'react-use/lib/useEvent'; +import { css } from '@emotion/react'; + +import { createGlobalStyle } from 'styled-components'; +import { ShowAssistantOverlayProps, useAssistantContext } from '../../assistant_context'; +import { Assistant, CONVERSATION_SIDE_PANEL_WIDTH } from '..'; + +const isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0; + +/** + * Modal container for Elastic AI Assistant conversations, receiving the page contents as context, plus whatever + * component currently has focus and any specific context it may provide through the SAssInterface. + */ + +export const UnifiedTimelineGlobalStyles = createGlobalStyle` + body:has(.timeline-portal-overlay-mask) .euiOverlayMask { + z-index: 1003 !important; + } +`; + +export const AssistantOverlay = React.memo(() => { + const [isModalVisible, setIsModalVisible] = useState(false); + // Why is this named Title and not Id? + const [conversationTitle, setConversationTitle] = useState<string | undefined>(undefined); + const [promptContextId, setPromptContextId] = useState<string | undefined>(); + const { assistantTelemetry, setShowAssistantOverlay, getLastConversationId } = + useAssistantContext(); + + const [chatHistoryVisible, setChatHistoryVisible] = useState(false); + + // Bind `showAssistantOverlay` in SecurityAssistantContext to this modal instance + const showOverlay = useCallback( + () => + ({ + showOverlay: so, + promptContextId: pid, + conversationTitle: cTitle, + }: ShowAssistantOverlayProps) => { + const conversationId = getLastConversationId(cTitle); + if (so) assistantTelemetry?.reportAssistantInvoked({ conversationId, invokedBy: 'click' }); + + setIsModalVisible(so); + setPromptContextId(pid); + setConversationTitle(conversationId); + }, + [assistantTelemetry, getLastConversationId] + ); + useEffect(() => { + setShowAssistantOverlay(showOverlay); + }, [setShowAssistantOverlay, showOverlay]); + + // Called whenever platform specific shortcut for assistant is pressed + const handleShortcutPress = useCallback(() => { + // Try to restore the last conversation on shortcut pressed + if (!isModalVisible) { + setConversationTitle(getLastConversationId()); + assistantTelemetry?.reportAssistantInvoked({ + invokedBy: 'shortcut', + conversationId: getLastConversationId(), + }); + } + + setIsModalVisible(!isModalVisible); + }, [isModalVisible, getLastConversationId, assistantTelemetry]); + + // Register keyboard listener to show the modal when cmd + ; is pressed + const onKeyDown = useCallback( + (event: KeyboardEvent) => { + if (event.key === ';' && (isMac ? event.metaKey : event.ctrlKey)) { + event.preventDefault(); + handleShortcutPress(); + } + }, + [handleShortcutPress] + ); + useEvent('keydown', onKeyDown); + + // Modal control functions + const cleanupAndCloseModal = useCallback(() => { + setIsModalVisible(false); + setPromptContextId(undefined); + setConversationTitle(conversationTitle); + }, [conversationTitle]); + + const handleCloseModal = useCallback(() => { + cleanupAndCloseModal(); + }, [cleanupAndCloseModal]); + + const toggleChatHistory = useCallback(() => { + setChatHistoryVisible((prev) => { + if (flyoutRef?.current) { + const currentValue = parseInt(flyoutRef.current.style.inlineSize.split('px')[0], 10); + flyoutRef.current.style.inlineSize = `${ + prev + ? currentValue - CONVERSATION_SIDE_PANEL_WIDTH + : currentValue + CONVERSATION_SIDE_PANEL_WIDTH + }px`; + } + + return !prev; + }); + }, []); + + const flyoutRef = useRef<HTMLDivElement>(); + + if (!isModalVisible) return null; + + return ( + <> + <EuiFlyoutResizable + ref={flyoutRef} + css={css` + max-inline-size: calc(100% - 20px); + min-inline-size: 400px; + > div { + height: 100%; + } + `} + onClose={handleCloseModal} + data-test-subj="ai-assistant-flyout" + paddingSize="none" + hideCloseButton + > + <Assistant + conversationTitle={conversationTitle} + promptContextId={promptContextId} + onCloseFlyout={handleCloseModal} + chatHistoryVisible={chatHistoryVisible} + setChatHistoryVisible={toggleChatHistory} + /> + </EuiFlyoutResizable> + <UnifiedTimelineGlobalStyles /> + </> + ); +}); + +AssistantOverlay.displayName = 'AssistantOverlay'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_overlay/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_title/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_title/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_title/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_title/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_title/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_title/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/assistant_title/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_title/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_actions/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_actions/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_actions/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_actions/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_actions/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_actions/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_actions/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_actions/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_autosize_textarea.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/use_autosize_textarea.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_autosize_textarea.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/use_autosize_textarea.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.test.tsx similarity index 91% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.test.tsx index f72f85892d379..54fc610d405de 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.test.tsx @@ -10,8 +10,7 @@ import { useSendMessage } from '../use_send_message'; import { useConversation } from '../use_conversation'; import { emptyWelcomeConvo, welcomeConvo } from '../../mock/conversation'; import { useChatSend, UseChatSendProps } from './use_chat_send'; -import { act, renderHook } from '@testing-library/react-hooks'; -import { waitFor } from '@testing-library/react'; +import { waitFor, renderHook, act } from '@testing-library/react'; import { TestProviders } from '../../mock/test_providers/test_providers'; import { useAssistantContext } from '../../..'; @@ -64,10 +63,10 @@ describe('use chat send', () => { }); it('handleOnChatCleared clears the conversation', async () => { (clearConversation as jest.Mock).mockReturnValueOnce(testProps.currentConversation); - const { result, waitForNextUpdate } = renderHook(() => useChatSend(testProps), { + const { result } = renderHook(() => useChatSend(testProps), { wrapper: TestProviders, }); - await waitForNextUpdate(); + await waitFor(() => new Promise((resolve) => resolve(null))); act(() => { result.current.handleOnChatCleared(); }); @@ -99,7 +98,7 @@ describe('use chat send', () => { }); }); it('handleRegenerateResponse removes the last message of the conversation, resends the convo to GenAI, and appends the message received', async () => { - const { result, waitForNextUpdate } = renderHook( + const { result } = renderHook( () => useChatSend({ ...testProps, currentConversation: { ...welcomeConvo, id: 'welcome-id' } }), { @@ -107,7 +106,7 @@ describe('use chat send', () => { } ); - await waitForNextUpdate(); + await waitFor(() => new Promise((resolve) => resolve(null))); act(() => { result.current.handleRegenerateResponse(); }); @@ -121,10 +120,10 @@ describe('use chat send', () => { }); it('sends telemetry events for both user and assistant', async () => { const promptText = 'prompt text'; - const { result, waitForNextUpdate } = renderHook(() => useChatSend(testProps), { + const { result } = renderHook(() => useChatSend(testProps), { wrapper: TestProviders, }); - await waitForNextUpdate(); + await waitFor(() => new Promise((resolve) => resolve(null))); act(() => { result.current.handleChatSend(promptText); }); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/chat_send/use_chat_send.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/badges/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/badges/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/badges/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/badges/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/use_flyout_modal_visibility.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/use_flyout_modal_visibility.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/use_flyout_modal_visibility.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/flyout/use_flyout_modal_visibility.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/inline_actions/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/pagination/use_session_pagination.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/pagination/use_session_pagination.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/pagination/use_session_pagination.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/common/components/assistant_settings_management/pagination/use_session_pagination.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/constants.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/constants.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/constants.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/constants.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/context_pills/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/context_pills/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/context_pills/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/context_pills/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/context_pills/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_selector_settings/types.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings_editor.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings_editor.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings_editor.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_settings_editor.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_streaming_switch.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_streaming_switch.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_streaming_switch.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/conversation_streaming_switch.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conveersation_changed.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conveersation_changed.test.tsx similarity index 98% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conveersation_changed.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conveersation_changed.test.tsx index 091c691d8e324..0e088533ba1d8 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conveersation_changed.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conveersation_changed.test.tsx @@ -4,7 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { renderHook, act } from '@testing-library/react-hooks'; + +import { renderHook, act } from '@testing-library/react'; import { useConversationChanged } from './use_conversation_changed'; import { customConvo } from '../../../mock/conversation'; import { mockConnectors } from '../../../mock/connectors'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_changed.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_changed.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_changed.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_changed.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deleted.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deleted.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deleted.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deleted.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deletex.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deletex.test.tsx similarity index 98% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deletex.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deletex.test.tsx index f96de69b8ae7c..5210d76d05791 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deletex.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings/use_conversation_deletex.test.tsx @@ -4,7 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { renderHook, act } from '@testing-library/react-hooks'; + +import { renderHook, act } from '@testing-library/react'; import { useConversationDeleted } from './use_conversation_deleted'; import { customConvo, alertConvo, welcomeConvo } from '../../../mock/conversation'; import { Conversation, ConversationsBulkActions } from '../../../..'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.test.tsx similarity index 98% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.test.tsx index 797bde3466223..5a98d86b1b4a2 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.test.tsx @@ -4,7 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; + +import { renderHook } from '@testing-library/react'; import { useConversationsTable, GetConversationsListParams, diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_settings_management/use_conversations_table.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/conversations/conversation_sidepanel/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/get_anonymized_value/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/helpers.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/helpers.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/helpers.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/helpers.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/helpers.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt/helpers.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt/helpers.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_context/types.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/selected_prompt_contexts/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/helpers.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/select_system_prompt/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/conversation_multi_selector/conversation_multi_selector.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_editor.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_editor.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_editor.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_editor.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/system_prompt_selector.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_selector/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/system_prompt_settings.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/types.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.test.tsx similarity index 98% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.test.tsx index 009ee6c5a83cd..507c6773dd398 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.test.tsx @@ -4,7 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { renderHook, act } from '@testing-library/react-hooks'; + +import { renderHook, act } from '@testing-library/react'; import { useSystemPromptEditor } from './use_system_prompt_editor'; import { mockSystemPrompt, diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_modal/use_system_prompt_editor.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/default_conversations_column.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/default_conversations_column.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/default_conversations_column.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/default_conversations_column.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.test.tsx similarity index 98% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.test.tsx index 220e150ec8647..4fa17c80e5925 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useSystemPromptTable } from './use_system_prompt_table'; import { Conversation } from '../../../../assistant_context/types'; import { AIConnector } from '../../../../connectorland/connector_selector'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/use_system_prompt_table.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/system_prompt_settings_management/utils.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_editor/system_prompt/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_textarea/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_textarea/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_textarea/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_textarea/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_textarea/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_textarea/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/prompt_textarea/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/prompt_textarea/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/prompt_context_selector.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/prompt_context_selector/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/quick_prompt_selector.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_selector/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/helpers.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/helpers.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/helpers.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/helpers.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_editor.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_editor.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_editor.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_editor.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/quick_prompt_settings.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.test.tsx similarity index 98% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.test.tsx index 239b8a06293ed..3626249c9fe31 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook, act } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { useQuickPromptEditor } from './use_quick_prompt_editor'; import { mockAlertPromptContext } from '../../../mock/prompt_context'; import { MOCK_QUICK_PROMPTS } from '../../../mock/quick_prompt'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings/use_quick_prompt_editor.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.test.tsx similarity index 98% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.test.tsx index ae91a8bb971c6..9d957a77dd738 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.test.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useQuickPromptTable } from './use_quick_prompt_table'; import { EuiTableActionsColumnType, EuiTableComputedColumnType } from '@elastic/eui'; import { MOCK_QUICK_PROMPTS } from '../../../mock/quick_prompt'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompt_settings_management/use_quick_prompt_table.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/quick_prompts.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/quick_prompts/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/quick_prompts/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_management.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_management.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_management.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_management.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_modal.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_modal.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_modal.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/alerts_settings/alerts_settings_modal.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.tsx similarity index 99% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.tsx index cb78e98f205f2..04c5818118728 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.tsx +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings.tsx @@ -16,7 +16,6 @@ import { EuiSplitPanel, } from '@elastic/eui'; -// eslint-disable-next-line @kbn/eslint/module_migration import styled from 'styled-components'; import { css } from '@emotion/react'; import { PromptResponse } from '@kbn/elastic-assistant-common'; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_bottom_bar.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_bottom_bar.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_bottom_bar.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_bottom_bar.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_management.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/assistant_settings_modal.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/const.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/const.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/const.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/const.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/evaluation_settings.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/evaluation_settings.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/evaluation_settings.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/evaluation_settings.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/evaluation_settings/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/settings_context_menu/settings_context_menu.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/settings_context_menu/settings_context_menu.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/settings_context_menu/settings_context_menu.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/settings_context_menu/settings_context_menu.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/types.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.test.tsx new file mode 100644 index 0000000000000..8f68d99c3eaa5 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.test.tsx @@ -0,0 +1,306 @@ +/* + * 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 { act, waitFor, renderHook } from '@testing-library/react'; + +import { DEFAULT_LATEST_ALERTS } from '../../../assistant_context/constants'; +import { alertConvo, welcomeConvo } from '../../../mock/conversation'; +import { useSettingsUpdater } from './use_settings_updater'; +import { defaultQuickPrompt, mockSystemPrompt } from '../../../mock/system_prompt'; +import { HttpSetup } from '@kbn/core/public'; +import { PromptResponse } from '@kbn/elastic-assistant-common'; + +const mockConversations = { + [alertConvo.title]: alertConvo, + [welcomeConvo.title]: welcomeConvo, +}; +const conversationsLoaded = false; +const promptsLoaded = false; + +const mockHttp = { + fetch: jest.fn(), +} as unknown as HttpSetup; + +const mockSystemPrompts: PromptResponse[] = [mockSystemPrompt]; +const mockQuickPrompts: PromptResponse[] = [defaultQuickPrompt]; + +const anonymizationFields = { + total: 2, + page: 1, + perPage: 1000, + data: [ + { id: 'allow1', field: 'allow1', allowed: true, anonymized: false }, + { id: 'replacement1', field: 'replacement1', allowed: false, anonymized: true }, + ], +}; + +const setAssistantStreamingEnabled = jest.fn(); +const setKnowledgeBaseMock = jest.fn(); +const reportAssistantSettingToggled = jest.fn(); +const setUpdatedAnonymizationData = jest.fn(); +const mockValues = { + assistantStreamingEnabled: true, + setAssistantStreamingEnabled, + assistantTelemetry: { reportAssistantSettingToggled }, + allSystemPrompts: mockSystemPrompts, + allQuickPrompts: mockQuickPrompts, + knowledgeBase: { + latestAlerts: DEFAULT_LATEST_ALERTS, + }, + baseConversations: {}, + setKnowledgeBase: setKnowledgeBaseMock, + http: mockHttp, + anonymizationFieldsBulkActions: {}, +}; + +const updatedValues = { + conversations: { ...mockConversations }, + allSystemPrompts: [mockSystemPrompt], + allQuickPrompts: [ + { + consumer: 'securitySolutionUI', + content: + 'You are a helpful, expert assistant who answers questions about Elastic Security. Do not answer questions unrelated to Elastic Security.\nIf you answer a question related to KQL or EQL, it should be immediately usable within an Elastic Security timeline; please always format the output correctly with back ticks. Any answer provided for Query DSL should also be usable in a security timeline. This means you should only ever include the "filter" portion of the query.\nUse the following context to answer questions:', + id: 'default-system-prompt', + name: 'Default system prompt', + promptType: 'quick', + color: 'red', + }, + ], + updatedAnonymizationData: { + total: 2, + page: 1, + perPage: 1000, + data: [ + { id: 'allow2', field: 'allow2', allowed: true, anonymized: false }, + { id: 'replacement2', field: 'replacement2', allowed: false, anonymized: true }, + ], + }, + knowledgeBase: { + latestAlerts: DEFAULT_LATEST_ALERTS + 10, + }, + assistantStreamingEnabled: false, +}; + +jest.mock('../../../assistant_context', () => { + const original = jest.requireActual('../../../assistant_context'); + return { + ...original, + useAssistantContext: jest.fn().mockImplementation(() => mockValues), + }; +}); + +describe('useSettingsUpdater', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('should set all state variables to their initial values when resetSettings is called', async () => { + const { result } = renderHook(() => + useSettingsUpdater( + mockConversations, + { + data: [...mockSystemPrompts, ...mockQuickPrompts], + page: 1, + perPage: 100, + total: 10, + }, + conversationsLoaded, + promptsLoaded, + anonymizationFields + ) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + const { + setConversationSettings, + setConversationsSettingsBulkActions, + setUpdatedKnowledgeBaseSettings, + setUpdatedAssistantStreamingEnabled, + resetSettings, + setPromptsBulkActions, + } = result.current; + + act(() => { + setConversationSettings(updatedValues.conversations); + setConversationsSettingsBulkActions({}); + setPromptsBulkActions({}); + setUpdatedAnonymizationData(updatedValues.updatedAnonymizationData); + setUpdatedKnowledgeBaseSettings(updatedValues.knowledgeBase); + setUpdatedAssistantStreamingEnabled(updatedValues.assistantStreamingEnabled); + }); + + expect(result.current.conversationSettings).toEqual(updatedValues.conversations); + expect(result.current.quickPromptSettings).toEqual(updatedValues.allQuickPrompts); + expect(result.current.systemPromptSettings).toEqual(updatedValues.allSystemPrompts); + expect(result.current.updatedAnonymizationData).toEqual(anonymizationFields); + expect(result.current.knowledgeBase).toEqual(updatedValues.knowledgeBase); + expect(result.current.assistantStreamingEnabled).toEqual( + updatedValues.assistantStreamingEnabled + ); + + act(() => { + resetSettings(); + }); + + expect(result.current.conversationSettings).toEqual(mockConversations); + expect(result.current.quickPromptSettings).toEqual(mockValues.allQuickPrompts); + expect(result.current.systemPromptSettings).toEqual(mockValues.allSystemPrompts); + expect(result.current.anonymizationFieldsBulkActions).toEqual( + mockValues.anonymizationFieldsBulkActions + ); + expect(result.current.knowledgeBase).toEqual(mockValues.knowledgeBase); + expect(result.current.assistantStreamingEnabled).toEqual(mockValues.assistantStreamingEnabled); + }); + + it('should update all state variables to their updated values when saveSettings is called', async () => { + const { result } = renderHook(() => + useSettingsUpdater( + mockConversations, + { + data: mockSystemPrompts, + page: 1, + perPage: 100, + total: 10, + }, + conversationsLoaded, + promptsLoaded, + anonymizationFields + ) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + + const { + setConversationSettings, + setConversationsSettingsBulkActions, + setAnonymizationFieldsBulkActions, + setUpdatedKnowledgeBaseSettings, + setPromptsBulkActions, + } = result.current; + + act(() => { + setConversationSettings(updatedValues.conversations); + setConversationsSettingsBulkActions({ delete: { ids: ['1'] } }); + setAnonymizationFieldsBulkActions({ delete: { ids: ['1'] } }); + setPromptsBulkActions({}); + setUpdatedAnonymizationData(updatedValues.updatedAnonymizationData); + setUpdatedKnowledgeBaseSettings(updatedValues.knowledgeBase); + }); + + await act(async () => { + await result.current.saveSettings(); + }); + + await waitFor(() => { + expect(mockHttp.fetch).toHaveBeenCalledWith( + '/internal/elastic_assistant/current_user/conversations/_bulk_action', + { + method: 'POST', + version: '1', + body: '{"delete":{"ids":["1"]}}', + } + ); + expect(setUpdatedAnonymizationData).toHaveBeenCalledWith( + updatedValues.updatedAnonymizationData + ); + expect(setKnowledgeBaseMock).toHaveBeenCalledWith(updatedValues.knowledgeBase); + }); + }); + + it('should track when alerts count is updated', async () => { + const { result } = renderHook(() => + useSettingsUpdater( + mockConversations, + { + data: mockSystemPrompts, + page: 1, + perPage: 100, + total: 10, + }, + conversationsLoaded, + promptsLoaded, + anonymizationFields + ) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + const { setUpdatedKnowledgeBaseSettings } = result.current; + + act(() => { + setUpdatedKnowledgeBaseSettings({ + ...updatedValues.knowledgeBase, + }); + }); + + await act(async () => { + await result.current.saveSettings(); + }); + + await waitFor(() => + expect(reportAssistantSettingToggled).toHaveBeenCalledWith({ alertsCountUpdated: true }) + ); + }); + + it('should track when streaming is updated', async () => { + const { result } = renderHook(() => + useSettingsUpdater( + mockConversations, + { + data: mockSystemPrompts, + page: 1, + perPage: 100, + total: 10, + }, + conversationsLoaded, + promptsLoaded, + anonymizationFields + ) + ); + + await waitFor(() => new Promise((resolve) => resolve(null))); + + const { setUpdatedAssistantStreamingEnabled } = result.current; + + act(() => { + setUpdatedAssistantStreamingEnabled(false); + }); + + await act(async () => { + await result.current.saveSettings(); + }); + + await waitFor(() => + expect(reportAssistantSettingToggled).toHaveBeenCalledWith({ + assistantStreamingEnabled: false, + }) + ); + }); + + it('if no settings update, do not track anything', async () => { + const { result } = renderHook(() => + useSettingsUpdater( + mockConversations, + { + data: mockSystemPrompts, + page: 1, + perPage: 100, + total: 10, + }, + conversationsLoaded, + promptsLoaded, + anonymizationFields + ) + ); + + await waitFor(() => new Promise((resolve) => resolve(null))); + const { setUpdatedKnowledgeBaseSettings } = result.current; + + await act(async () => { + setUpdatedKnowledgeBaseSettings(mockValues.knowledgeBase); + await result.current.saveSettings(); + }); + + await waitFor(() => expect(reportAssistantSettingToggled).not.toHaveBeenCalledWith()); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/settings/use_settings_updater/use_settings_updater.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/streaming_text/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/streaming_text/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/streaming_text/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/streaming_text/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/streaming_text/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/streaming_text/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/streaming_text/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/streaming_text/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/types.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/upgrade_license_cta/translations.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.test.tsx new file mode 100644 index 0000000000000..7a142710d19ec --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.test.tsx @@ -0,0 +1,237 @@ +/* + * 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 { DefinedUseQueryResult } from '@tanstack/react-query'; + +import { useAssistantOverlay } from '.'; +import { waitFor, renderHook, act } from '@testing-library/react'; +import { useFetchCurrentUserConversations } from '../api'; +import { Conversation } from '../../assistant_context/types'; +import { mockConnectors } from '../../mock/connectors'; + +const mockUseAssistantContext = { + registerPromptContext: jest.fn(), + showAssistantOverlay: jest.fn(), + unRegisterPromptContext: jest.fn(), +}; +jest.mock('../../assistant_context', () => { + const original = jest.requireActual('../../assistant_context'); + + return { + ...original, + useAssistantContext: () => mockUseAssistantContext, + }; +}); +jest.mock('../api/conversations/use_fetch_current_user_conversations'); +const mockCreateConversation = jest.fn().mockResolvedValue({ id: 'conversation-id' }); +jest.mock('../use_conversation', () => { + return { + useConversation: jest.fn(() => ({ + createConversation: mockCreateConversation, + currentConversation: { id: 'conversation-id' }, + })), + }; +}); + +jest.mock('../../connectorland/helpers'); +jest.mock('../../connectorland/use_load_connectors', () => { + return { + useLoadConnectors: jest.fn(() => ({ + data: mockConnectors, + error: null, + isSuccess: true, + })), + }; +}); + +const mockData = { + welcome_id: { + id: 'welcome_id', + title: 'Welcome', + category: 'assistant', + messages: [], + apiConfig: { connectorId: '123' }, + replacements: {}, + }, + electric_sheep_id: { + id: 'electric_sheep_id', + category: 'assistant', + title: 'electric sheep', + messages: [], + apiConfig: { connectorId: '123' }, + replacements: {}, + }, +}; + +describe('useAssistantOverlay', () => { + beforeEach(() => { + jest.clearAllMocks(); + jest.mocked(useFetchCurrentUserConversations).mockReturnValue({ + data: mockData, + isLoading: false, + refetch: jest.fn().mockResolvedValue({ + isLoading: false, + data: { + ...mockData, + welcome_id: { + ...mockData.welcome_id, + apiConfig: { newProp: true }, + }, + }, + }), + isFetched: true, + } as unknown as DefinedUseQueryResult<Record<string, Conversation>, unknown>); + }); + + it('calls registerPromptContext with the expected context', async () => { + const category = 'event'; + const description = 'test description'; + const getPromptContext = jest.fn(() => Promise.resolve('test data')); + const id = 'test-id'; + const suggestedUserPrompt = 'test user prompt'; + const tooltip = 'test tooltip'; + const isAssistantAvailable = true; + + renderHook(() => + useAssistantOverlay( + category, + null, + description, + getPromptContext, + id, + suggestedUserPrompt, + tooltip, + isAssistantAvailable + ) + ); + + await waitFor(() => { + expect(mockUseAssistantContext.registerPromptContext).toHaveBeenCalledWith({ + category, + description, + getPromptContext, + id, + suggestedUserPrompt, + tooltip, + }); + }); + }); + + it('calls unRegisterPromptContext on unmount', () => { + const isAssistantAvailable = true; + const { unmount } = renderHook(() => + useAssistantOverlay( + 'event', + null, + 'description', + () => Promise.resolve('data'), + 'id', + null, + 'tooltip', + isAssistantAvailable + ) + ); + + unmount(); + + expect(mockUseAssistantContext.unRegisterPromptContext).toHaveBeenCalledWith('id'); + }); + + it('calls `showAssistantOverlay` from the assistant context', () => { + const isAssistantAvailable = true; + const { result } = renderHook(() => + useAssistantOverlay( + 'event', + 'conversation-id', + 'description', + () => Promise.resolve('data'), + 'id', + null, + 'tooltip', + isAssistantAvailable + ) + ); + + act(() => { + result.current.showAssistantOverlay(true); + }); + + expect(mockCreateConversation).not.toHaveBeenCalled(); + expect(mockUseAssistantContext.showAssistantOverlay).toHaveBeenCalledWith({ + showOverlay: true, + promptContextId: 'id', + conversationTitle: 'conversation-id', + }); + }); + + it('calls `showAssistantOverlay` and creates a new conversation when shouldCreateConversation: true and the conversation does not exist', async () => { + const isAssistantAvailable = true; + const { result } = renderHook(() => + useAssistantOverlay( + 'event', + 'conversation-id', + 'description', + () => Promise.resolve('data'), + 'id', + null, + 'tooltip', + isAssistantAvailable + ) + ); + + act(() => { + result.current.showAssistantOverlay(true, true); + }); + + expect(mockCreateConversation).toHaveBeenCalledWith({ + title: 'conversation-id', + apiConfig: { + actionTypeId: '.gen-ai', + connectorId: 'connectorId', + }, + category: 'assistant', + }); + + await waitFor(() => { + expect(mockUseAssistantContext.showAssistantOverlay).toHaveBeenCalledWith({ + showOverlay: true, + promptContextId: 'id', + conversationTitle: 'conversation-id', + }); + }); + }); + + it('calls `showAssistantOverlay` and does not create a new conversation when shouldCreateConversation: true and the conversation exists', async () => { + const isAssistantAvailable = true; + const { result } = renderHook(() => + useAssistantOverlay( + 'event', + 'electric sheep', + 'description', + () => Promise.resolve('data'), + 'id', + null, + 'tooltip', + isAssistantAvailable + ) + ); + + act(() => { + result.current.showAssistantOverlay(true, true); + }); + + expect(mockCreateConversation).not.toHaveBeenCalled(); + + await waitFor(() => { + expect(mockUseAssistantContext.showAssistantOverlay).toHaveBeenCalledWith({ + showOverlay: true, + promptContextId: 'id', + conversationTitle: 'electric sheep', + }); + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_assistant_overlay/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/helpers.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx new file mode 100644 index 0000000000000..9e4fc2ab1a2c6 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/index.test.tsx @@ -0,0 +1,139 @@ +/* + * 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 { useConversation } from '.'; +import { act, waitFor, renderHook } from '@testing-library/react'; +import { TestProviders } from '../../mock/test_providers/test_providers'; +import React from 'react'; +import { MessageRole } from '@kbn/elastic-assistant-common'; +import { httpServiceMock } from '@kbn/core/public/mocks'; +import { WELCOME_CONVERSATION } from './sample_conversations'; +import { + deleteConversation, + getConversationById as _getConversationById, + createConversation as _createConversationApi, +} from '../api/conversations'; + +jest.mock('../api/conversations'); +const message = { + content: 'You are a robot', + role: 'user' as MessageRole, + timestamp: '10/04/2023, 1:00:36 PM', +}; +const anotherMessage = { + content: 'I am a robot', + role: 'assistant' as MessageRole, + timestamp: '10/04/2023, 1:00:46 PM', +}; + +const mockConvo = { + id: 'new-convo', + title: 'new-convo', + messages: [message, anotherMessage], + apiConfig: { + connectorId: '123', + actionTypeId: '.gen-ai', + defaultSystemPromptId: 'default-system-prompt', + }, +}; + +const getConversationById = _getConversationById as jest.Mock; +const createConversation = _createConversationApi as jest.Mock; + +describe('useConversation', () => { + let httpMock: ReturnType<typeof httpServiceMock.createSetupContract>; + + beforeEach(() => { + httpMock = httpServiceMock.createSetupContract(); + + jest.clearAllMocks(); + }); + + it('should create a new conversation when called with valid conversationId and message', async () => { + const { result } = renderHook(() => useConversation(), { + wrapper: ({ children }: React.PropsWithChildren<{}>) => ( + <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> + ), + }); + + await waitFor(() => new Promise((resolve) => resolve(null))); + + createConversation.mockResolvedValue(mockConvo); + + let createResult; + + await act(async () => { + createResult = await result.current.createConversation({ + ...mockConvo, + replacements: {}, + title: mockConvo.title, + category: 'assistant', + }); + }); + + expect(createResult).toEqual(mockConvo); + }); + + it('should delete an existing conversation when called with valid conversationId', async () => { + const { result } = renderHook(() => useConversation(), { + wrapper: ({ children }: React.PropsWithChildren<{}>) => ( + <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> + ), + }); + + await waitFor(() => new Promise((resolve) => resolve(null))); + + await act(async () => { + await result.current.deleteConversation('new-convo'); + }); + + expect(deleteConversation).toHaveBeenCalledWith({ + http: httpMock, + id: 'new-convo', + }); + }); + + it('should update the apiConfig for an existing conversation when called with a valid conversationId and apiConfig', async () => { + const { result } = renderHook(() => useConversation(), { + wrapper: ({ children }: React.PropsWithChildren<{}>) => ( + <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> + ), + }); + await waitFor(() => new Promise((resolve) => resolve(null))); + + await act(async () => { + await result.current.setApiConfig({ + conversation: WELCOME_CONVERSATION, + apiConfig: mockConvo.apiConfig, + }); + }); + + expect(createConversation).toHaveBeenCalledWith({ + http: httpMock, + conversation: { ...WELCOME_CONVERSATION, apiConfig: mockConvo.apiConfig, id: '' }, + }); + }); + + it('should remove the last message from a conversation when called with valid conversationId', async () => { + const { result } = renderHook(() => useConversation(), { + wrapper: ({ children }: React.PropsWithChildren<{}>) => ( + <TestProviders providerContext={{ http: httpMock }}>{children}</TestProviders> + ), + }); + await waitFor(() => new Promise((resolve) => resolve(null))); + + getConversationById.mockResolvedValue(mockConvo); + + let removeResult; + + await act(async () => { + removeResult = await result.current.removeLastMessage('new-convo'); + }); + + expect(removeResult).toEqual([message]); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/sample_conversations.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_conversation/translations.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.test.tsx new file mode 100644 index 0000000000000..f5ea35983dd80 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.test.tsx @@ -0,0 +1,382 @@ +/* + * 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 { renderHook, act, waitFor } from '@testing-library/react'; +import { useCurrentConversation, Props } from '.'; +import { useConversation } from '../use_conversation'; +import deepEqual from 'fast-deep-equal'; +import { Conversation } from '../../..'; +import { find } from 'lodash'; + +// Mock dependencies +jest.mock('../use_conversation'); +jest.mock('../helpers'); +jest.mock('fast-deep-equal'); +jest.mock('lodash'); +const mockData = { + welcome_id: { + id: 'welcome_id', + title: 'Welcome', + category: 'assistant', + messages: [], + apiConfig: { + connectorId: '123', + actionTypeId: '.gen-ai', + defaultSystemPromptId: 'system-prompt-id', + }, + replacements: {}, + }, + electric_sheep_id: { + id: 'electric_sheep_id', + category: 'assistant', + title: 'electric sheep', + messages: [], + apiConfig: { connectorId: '123', actionTypeId: '.gen-ai' }, + replacements: {}, + }, +}; +describe('useCurrentConversation', () => { + const mockUseConversation = { + createConversation: jest.fn(), + deleteConversation: jest.fn(), + getConversation: jest.fn(), + getDefaultConversation: jest.fn(), + setApiConfig: jest.fn(), + }; + + beforeEach(() => { + (useConversation as jest.Mock).mockReturnValue(mockUseConversation); + (deepEqual as jest.Mock).mockReturnValue(false); + (find as jest.Mock).mockReturnValue(undefined); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + const defaultProps: Props = { + // @ts-ignore not exact system prompt type, ok for test + allSystemPrompts: [{ id: 'system-prompt-id' }, { id: 'something-crazy' }], + conversationId: '', + conversations: {}, + mayUpdateConversations: true, + refetchCurrentUserConversations: jest.fn().mockResolvedValue({ data: mockData }), + }; + + const setupHook = (props: Partial<Props> = {}) => { + return renderHook(() => useCurrentConversation({ ...defaultProps, ...props })); + }; + + it('should initialize with correct default values', () => { + const { result } = setupHook(); + + expect(result.current.currentConversation).toBeUndefined(); + expect(result.current.currentSystemPrompt).toBeUndefined(); + }); + + it('should set the current system prompt ID when the prompt selection changes', async () => { + const conversationId = 'welcome_id'; + const conversation = mockData.welcome_id; + mockUseConversation.getConversation.mockResolvedValue(conversation); + + const { result } = setupHook({ + conversationId, + conversations: { [conversationId]: conversation }, + }); + + await act(async () => { + await result.current.setCurrentSystemPromptId('prompt-id'); + }); + + expect(mockUseConversation.setApiConfig).toHaveBeenCalledWith({ + conversation, + apiConfig: { + ...conversation.apiConfig, + defaultSystemPromptId: 'prompt-id', + }, + }); + expect(defaultProps.refetchCurrentUserConversations).toHaveBeenCalled(); + }); + + it('should fetch and set the current conversation', async () => { + const conversationId = 'welcome_id'; + const conversation = mockData.welcome_id; + mockUseConversation.getConversation.mockResolvedValue(conversation); + + const { result } = setupHook({ + conversationId, + conversations: { [conversationId]: conversation }, + }); + + await act(async () => { + await result.current.refetchCurrentConversation({ cId: conversationId }); + }); + + expect(result.current.currentConversation).toEqual(conversation); + }); + + it('should handle conversation selection', async () => { + const conversationId = 'test-id'; + const conversationTitle = 'Test Conversation'; + const conversation = { + ...mockData.welcome_id, + id: conversationId, + title: conversationTitle, + apiConfig: { + ...mockData.welcome_id.apiConfig, + defaultSystemPromptId: 'something-crazy', + }, + } as Conversation; + const mockConversations = { + ...mockData, + [conversationId]: conversation, + }; + (find as jest.Mock).mockReturnValue(conversation); + + const { result } = setupHook({ + conversationId: mockData.welcome_id.id, + conversations: mockConversations, + refetchCurrentUserConversations: jest.fn().mockResolvedValue({ + data: mockConversations, + }), + }); + + await act(async () => { + await result.current.handleOnConversationSelected({ + cId: conversationId, + cTitle: conversationTitle, + }); + }); + + expect(result.current.currentConversation).toEqual(conversation); + expect(result.current.currentSystemPrompt?.id).toBe('something-crazy'); + }); + + it('should non-existing handle conversation selection', async () => { + const conversationId = 'test-id'; + const conversationTitle = 'Test Conversation'; + const conversation = { + ...mockData.welcome_id, + id: conversationId, + title: conversationTitle, + } as Conversation; + const mockConversations = { + ...mockData, + [conversationId]: conversation, + }; + (find as jest.Mock).mockReturnValue(conversation); + + const { result } = setupHook({ + conversationId: mockData.welcome_id.id, + conversations: mockConversations, + refetchCurrentUserConversations: jest.fn().mockResolvedValue({ + data: mockConversations, + }), + }); + + await act(async () => { + await result.current.handleOnConversationSelected({ + cId: 'bad', + cTitle: 'bad', + }); + }); + + expect(result.current.currentConversation).toEqual(mockData.welcome_id); + expect(result.current.currentSystemPrompt?.id).toBe('system-prompt-id'); + }); + + it('should create a new conversation', async () => { + const newConversation = { + ...mockData.welcome_id, + id: 'new-id', + title: 'NEW_CHAT', + messages: [], + } as Conversation; + mockUseConversation.createConversation.mockResolvedValue(newConversation); + + const { result } = setupHook({ + conversations: { + 'old-id': { + ...mockData.welcome_id, + id: 'old-id', + title: 'Old Chat', + messages: [], + } as Conversation, + }, + refetchCurrentUserConversations: jest.fn().mockResolvedValue({ + data: { + 'old-id': { + ...mockData.welcome_id, + id: 'old-id', + title: 'Old Chat', + messages: [], + } as Conversation, + [newConversation.id]: newConversation, + }, + }), + }); + + await act(async () => { + await result.current.handleCreateConversation(); + }); + + expect(mockUseConversation.createConversation).toHaveBeenCalled(); + }); + + it('should create a new conversation using the connector portion of the apiConfig of the current conversation', async () => { + const newConversation = { + ...mockData.welcome_id, + id: 'new-id', + title: 'NEW_CHAT', + messages: [], + } as Conversation; + mockUseConversation.createConversation.mockResolvedValue(newConversation); + + const { result } = setupHook({ + conversations: { + 'old-id': { + ...mockData.welcome_id, + id: 'old-id', + title: 'Old Chat', + messages: [], + } as Conversation, + }, + conversationId: 'old-id', + refetchCurrentUserConversations: jest.fn().mockResolvedValue({ + data: { + 'old-id': { + ...mockData.welcome_id, + id: 'old-id', + title: 'Old Chat', + messages: [], + } as Conversation, + [newConversation.id]: newConversation, + }, + }), + }); + + await act(async () => { + await result.current.handleCreateConversation(); + }); + const { defaultSystemPromptId: _, ...everythingExceptSystemPromptId } = + mockData.welcome_id.apiConfig; + + expect(mockUseConversation.createConversation).toHaveBeenCalledWith({ + apiConfig: everythingExceptSystemPromptId, + title: 'New chat', + }); + }); + + it('should create a new conversation with correct isNewConversationDefault: true system prompt', async () => { + const newConversation = { + ...mockData.welcome_id, + id: 'new-id', + title: 'NEW_CHAT', + messages: [], + } as Conversation; + mockUseConversation.createConversation.mockResolvedValue(newConversation); + + const { result } = setupHook({ + conversations: { + 'old-id': { + ...mockData.welcome_id, + id: 'old-id', + title: 'Old Chat', + messages: [], + } as Conversation, + }, + allSystemPrompts: [ + { + timestamp: '2024-09-10T15:52:24.761Z', + users: [ + { + id: 'u_mGBROF_q5bmFCATbLXAcCwKa0k8JvONAwSruelyKA5E_0', + name: 'elastic', + }, + ], + content: 'Address the user as Mr Orange in each response', + isNewConversationDefault: true, + updatedAt: '2024-09-10T22:07:44.915Z', + id: 'LBOi3JEBy3uD9EGi1d_G', + name: 'Call me Orange', + promptType: 'system', + consumer: 'securitySolutionUI', + }, + ], + conversationId: 'old-id', + refetchCurrentUserConversations: jest.fn().mockResolvedValue({ + data: { + 'old-id': { + ...mockData.welcome_id, + id: 'old-id', + title: 'Old Chat', + messages: [], + } as Conversation, + [newConversation.id]: newConversation, + }, + }), + }); + + await act(async () => { + await result.current.handleCreateConversation(); + }); + + const { defaultSystemPromptId: _, ...everythingExceptSystemPromptId } = + mockData.welcome_id.apiConfig; + + await waitFor(() => + expect(mockUseConversation.createConversation).toHaveBeenCalledWith({ + apiConfig: { + ...everythingExceptSystemPromptId, + defaultSystemPromptId: 'LBOi3JEBy3uD9EGi1d_G', + }, + title: 'New chat', + }) + ); + }); + + it('should delete a conversation', async () => { + const conversationTitle = 'Test Conversation'; + const conversation = { + ...mockData.welcome_id, + id: 'test-id', + title: conversationTitle, + messages: [], + } as Conversation; + + const { result } = setupHook({ + conversations: { ...mockData, 'test-id': conversation }, + }); + + await act(async () => { + await result.current.handleOnConversationDeleted('test-id'); + }); + + expect(mockUseConversation.deleteConversation).toHaveBeenCalledWith('test-id'); + expect(result.current.currentConversation).toBeUndefined(); + }); + + it('should refetch the conversation multiple times if isStreamRefetch is true', async () => { + const conversationId = 'test-id'; + const conversation = { id: conversationId, messages: [{ role: 'user' }] } as Conversation; + mockUseConversation.getConversation.mockResolvedValue(conversation); + + const { result } = setupHook({ + conversationId, + conversations: { [conversationId]: conversation }, + }); + + await act(async () => { + await result.current.refetchCurrentConversation({ + cId: conversationId, + isStreamRefetch: true, + }); + }); + + expect(mockUseConversation.getConversation).toHaveBeenCalledTimes(6); // initial + 5 retries + }); +}); diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.tsx new file mode 100644 index 0000000000000..ab5e5532a19cb --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_current_conversation/index.tsx @@ -0,0 +1,315 @@ +/* + * 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 { Dispatch, SetStateAction, useCallback, useEffect, useMemo, useState } from 'react'; +import { QueryObserverResult } from '@tanstack/react-query'; +import { PromptResponse } from '@kbn/elastic-assistant-common'; +import { find } from 'lodash'; +import deepEqual from 'fast-deep-equal'; +import { AIConnector } from '../../connectorland/connector_selector'; +import { getGenAiConfig } from '../../connectorland/helpers'; +import { NEW_CHAT } from '../conversations/conversation_sidepanel/translations'; +import { getDefaultNewSystemPrompt, getDefaultSystemPrompt } from '../use_conversation/helpers'; +import { useConversation } from '../use_conversation'; +import { sleep } from '../helpers'; +import { Conversation, WELCOME_CONVERSATION_TITLE } from '../../..'; + +export interface Props { + allSystemPrompts: PromptResponse[]; + conversationId: string; + conversations: Record<string, Conversation>; + defaultConnector?: AIConnector; + mayUpdateConversations: boolean; + refetchCurrentUserConversations: () => Promise< + QueryObserverResult<Record<string, Conversation>, unknown> + >; +} + +interface UseCurrentConversation { + currentConversation: Conversation | undefined; + currentSystemPrompt: PromptResponse | undefined; + handleCreateConversation: () => Promise<void>; + handleOnConversationDeleted: (cTitle: string) => Promise<void>; + handleOnConversationSelected: ({ cId, cTitle }: { cId: string; cTitle: string }) => Promise<void>; + refetchCurrentConversation: (options?: { + cId?: string; + cTitle?: string; + isStreamRefetch?: boolean; + }) => Promise<Conversation | undefined>; + setCurrentConversation: Dispatch<SetStateAction<Conversation | undefined>>; + setCurrentSystemPromptId: (promptId: string | undefined) => void; +} + +/** + * Manages the current conversation state. Interacts with the conversation API and keeps local state up to date. + * Manages system prompt as that is per conversation + * Provides methods to handle conversation selection, creation, deletion, and system prompt selection. + */ +export const useCurrentConversation = ({ + allSystemPrompts, + conversationId, + conversations, + defaultConnector, + mayUpdateConversations, + refetchCurrentUserConversations, +}: Props): UseCurrentConversation => { + const { + createConversation, + deleteConversation, + getConversation, + getDefaultConversation, + setApiConfig, + } = useConversation(); + const [currentConversation, setCurrentConversation] = useState<Conversation | undefined>(); + const [currentConversationId, setCurrentConversationId] = useState<string | undefined>( + conversationId + ); + useEffect(() => { + setCurrentConversationId(conversationId); + }, [conversationId]); + /** + * START SYSTEM PROMPT + */ + const currentSystemPrompt = useMemo( + () => + getDefaultSystemPrompt({ + allSystemPrompts, + conversation: currentConversation, + }), + [allSystemPrompts, currentConversation] + ); + + // Write the selected system prompt to the conversation config + const setCurrentSystemPromptId = useCallback( + async (promptId?: string) => { + if (currentConversation && currentConversation.apiConfig) { + await setApiConfig({ + conversation: currentConversation, + apiConfig: { + ...currentConversation.apiConfig, + defaultSystemPromptId: promptId, + }, + }); + await refetchCurrentUserConversations(); + } + }, + [currentConversation, refetchCurrentUserConversations, setApiConfig] + ); + + /** + * END SYSTEM PROMPT + */ + + /** + * Refetches the current conversation, optionally by conversation ID or title. + * @param cId - The conversation ID to refetch. + * @param cTitle - The conversation title to refetch. + * @param isStreamRefetch - Are we refetching because stream completed? If so retry several times to ensure the message has updated on the server + */ + const refetchCurrentConversation = useCallback( + async ({ + cId, + cTitle, + isStreamRefetch = false, + }: { cId?: string; cTitle?: string; isStreamRefetch?: boolean } = {}) => { + if (cId === '' || (cTitle && !conversations[cTitle])) { + return; + } + + const cConversationId = + cId ?? (cTitle && conversations[cTitle].id) ?? currentConversation?.id; + + if (cConversationId) { + let updatedConversation = await getConversation(cConversationId); + let retries = 0; + const maxRetries = 5; + + // this retry is a workaround for the stream not YET being persisted to the stored conversation + while ( + isStreamRefetch && + updatedConversation && + updatedConversation.messages[updatedConversation.messages.length - 1].role !== + 'assistant' && + retries < maxRetries + ) { + retries++; + await sleep(2000); + updatedConversation = await getConversation(cConversationId); + } + + if (updatedConversation) { + setCurrentConversation(updatedConversation); + } + + return updatedConversation; + } + }, + [conversations, currentConversation?.id, getConversation] + ); + + const initializeDefaultConversationWithConnector = useCallback( + async (defaultConvo: Conversation): Promise<Conversation> => { + const apiConfig = getGenAiConfig(defaultConnector); + const updatedConvo = + (await setApiConfig({ + conversation: defaultConvo, + apiConfig: { + ...defaultConvo?.apiConfig, + connectorId: (defaultConnector?.id as string) ?? '', + actionTypeId: (defaultConnector?.actionTypeId as string) ?? '.gen-ai', + provider: apiConfig?.apiProvider, + model: apiConfig?.defaultModel, + defaultSystemPromptId: allSystemPrompts.find((sp) => sp.isNewConversationDefault)?.id, + }, + })) ?? defaultConvo; + await refetchCurrentUserConversations(); + return updatedConvo; + }, + [allSystemPrompts, defaultConnector, refetchCurrentUserConversations, setApiConfig] + ); + + const handleOnConversationSelected = useCallback( + async ({ cId, cTitle }: { cId: string; cTitle: string }) => { + const allConversations = await refetchCurrentUserConversations(); + + // This is a default conversation that has not yet been initialized + // add the default connector config + if (cId === '' && allConversations?.data?.[cTitle]) { + const updatedConvo = await initializeDefaultConversationWithConnector( + allConversations.data[cTitle] + ); + setCurrentConversationId(updatedConvo.id); + } else if (allConversations?.data?.[cId]) { + setCurrentConversationId(cId); + } + }, + [ + initializeDefaultConversationWithConnector, + refetchCurrentUserConversations, + setCurrentConversationId, + ] + ); + + // update currentConversation when conversations or currentConversationId update + useEffect(() => { + if (!mayUpdateConversations) return; + const updateConversation = async () => { + const nextConversation: Conversation = + (currentConversationId && conversations[currentConversationId]) || + // if currentConversationId is not an id, it should be a title from a + // default conversation that has not yet been initialized + find(conversations, ['title', currentConversationId]) || + find(conversations, ['title', WELCOME_CONVERSATION_TITLE]) || + // if no Welcome convo exists, create one + getDefaultConversation({ cTitle: WELCOME_CONVERSATION_TITLE }); + + // on the off chance that the conversation is not found, return + if (!nextConversation) { + return; + } + + if (nextConversation && nextConversation.id === '') { + // This is a default conversation that has not yet been initialized + const conversation = await initializeDefaultConversationWithConnector(nextConversation); + return setCurrentConversation(conversation); + } + setCurrentConversation((prev) => { + if (deepEqual(prev, nextConversation)) return prev; + + if ( + prev && + prev.id === nextConversation.id && + // if the conversation id has not changed and the previous conversation has more messages + // it is because the local conversation has a readable stream running + // and it has not yet been persisted to the stored conversation + prev.messages.length > nextConversation.messages.length + ) { + return { + ...nextConversation, + messages: prev.messages, + }; + } + + return nextConversation; + }); + }; + updateConversation(); + }, [ + currentConversationId, + conversations, + getDefaultConversation, + initializeDefaultConversationWithConnector, + mayUpdateConversations, + ]); + + const handleOnConversationDeleted = useCallback( + async (cTitle: string) => { + await deleteConversation(conversations[cTitle].id); + await refetchCurrentUserConversations(); + }, + [conversations, deleteConversation, refetchCurrentUserConversations] + ); + + const handleCreateConversation = useCallback(async () => { + const newChatExists = find(conversations, ['title', NEW_CHAT]); + if (newChatExists && !newChatExists.messages.length) { + handleOnConversationSelected({ + cId: newChatExists.id, + cTitle: newChatExists.title, + }); + return; + } + const newSystemPrompt = getDefaultNewSystemPrompt(allSystemPrompts); + + let conversation: Partial<Conversation> = {}; + if (currentConversation?.apiConfig) { + const { defaultSystemPromptId: _, ...restApiConfig } = currentConversation?.apiConfig; + conversation = + restApiConfig.actionTypeId != null + ? { + apiConfig: { + ...restApiConfig, + ...(newSystemPrompt?.id != null + ? { defaultSystemPromptId: newSystemPrompt.id } + : {}), + }, + } + : {}; + } + const newConversation = await createConversation({ + title: NEW_CHAT, + ...conversation, + }); + + if (newConversation) { + handleOnConversationSelected({ + cId: newConversation.id, + cTitle: newConversation.title, + }); + } else { + await refetchCurrentUserConversations(); + } + }, [ + allSystemPrompts, + conversations, + createConversation, + currentConversation?.apiConfig, + handleOnConversationSelected, + refetchCurrentUserConversations, + ]); + + return { + currentConversation, + currentSystemPrompt, + handleCreateConversation, + handleOnConversationDeleted, + handleOnConversationSelected, + refetchCurrentConversation, + setCurrentConversation, + setCurrentSystemPromptId, + }; +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_data_stream_apis.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_data_stream_apis.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_data_stream_apis.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_data_stream_apis.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/helpers.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant/use_send_message/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/use_send_message/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant_context/constants.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/constants.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/helpers.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/helpers.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant_context/helpers.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/helpers.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.test.tsx new file mode 100644 index 0000000000000..94e7800450c5d --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.test.tsx @@ -0,0 +1,53 @@ +/* + * 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 { renderHook } from '@testing-library/react'; + +import { useAssistantContext } from '.'; +import useLocalStorage from 'react-use/lib/useLocalStorage'; +import { TestProviders } from '../mock/test_providers/test_providers'; + +jest.mock('react-use/lib/useLocalStorage', () => jest.fn().mockReturnValue(['456', jest.fn()])); +jest.mock('react-use/lib/useSessionStorage', () => jest.fn().mockReturnValue(['456', jest.fn()])); + +describe('AssistantContext', () => { + beforeEach(() => jest.clearAllMocks()); + + test('it throws an error when useAssistantContext hook is used without a SecurityAssistantContext', () => { + expect(() => renderHook(useAssistantContext)).toThrow( + /useAssistantContext must be used within a AssistantProvider/ + ); + }); + + test('it should return the httpFetch function', async () => { + const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); + + const path = '/path/to/resource'; + await result.current.http.fetch(path); + + expect(result.current.http.fetch).toBeCalledWith(path); + }); + + test('getLastConversationId defaults to provided id', async () => { + const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); + const id = result.current.getLastConversationId('123'); + expect(id).toEqual('123'); + }); + + test('getLastConversationId uses local storage id when no id is provided ', async () => { + const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); + const id = result.current.getLastConversationId(); + expect(id).toEqual('456'); + }); + + test('getLastConversationId defaults to Welcome when no local storage id and no id is provided ', async () => { + (useLocalStorage as jest.Mock).mockReturnValue([undefined, jest.fn()]); + const { result } = renderHook(useAssistantContext, { wrapper: TestProviders }); + const id = result.current.getLastConversationId(); + expect(id).toEqual('Welcome'); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant_context/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/assistant_context/types.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/add_connector_modal/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/add_connector_modal/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/add_connector_modal/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/add_connector_modal/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_button/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_button/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_button/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_button/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_missing_callout/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/attack_discovery_status_indicator.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/action_type_selector_modal.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_selector_inline/connector_selector_inline.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_settings_management/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_settings_management/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_settings_management/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_settings_management/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_settings_management/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_settings_management/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_settings_management/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_settings_management/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_setup/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_setup/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/connector_setup/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/helpers.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/helpers.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/helpers.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/helpers.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/models/model_selector/model_selector.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/models/model_selector/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/models/model_selector/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/models/model_selector/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/models/model_selector/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/translations.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx new file mode 100644 index 0000000000000..dd169c9e345e3 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.test.tsx @@ -0,0 +1,61 @@ +/* + * 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 { act, waitFor, renderHook } from '@testing-library/react'; +import { useLoadActionTypes, Props } from '.'; +import { mockActionTypes } from '../../mock/connectors'; + +jest.mock('@tanstack/react-query', () => ({ + useQuery: jest.fn().mockImplementation(async (queryKey, fn, opts) => { + try { + const res = await fn(); + return Promise.resolve(res); + } catch (e) { + opts.onError(e); + } + }), +})); + +const http = { + get: jest.fn().mockResolvedValue(mockActionTypes), +}; +const toasts = { + addError: jest.fn(), +}; +const defaultProps = { http, toasts } as unknown as Props; +describe('useLoadActionTypes', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('should call api to load action types', async () => { + renderHook(() => useLoadActionTypes(defaultProps)); + await waitFor(() => { + expect(defaultProps.http.get).toHaveBeenCalledWith('/api/actions/connector_types', { + query: { feature_id: 'generativeAIForSecurity' }, + }); + expect(toasts.addError).not.toHaveBeenCalled(); + }); + }); + + it('should return sorted action types', async () => { + const { result } = renderHook(() => useLoadActionTypes(defaultProps)); + await waitFor(() => + expect(result.current).resolves.toStrictEqual( + mockActionTypes.sort((a, b) => a.name.localeCompare(b.name)) + ) + ); + }); + it('should display error toast when api throws error', async () => { + await act(async () => { + const mockHttp = { + get: jest.fn().mockRejectedValue(new Error('this is an error')), + } as unknown as Props['http']; + renderHook(() => useLoadActionTypes({ ...defaultProps, http: mockHttp })); + await waitFor(() => expect(toasts.addError).toHaveBeenCalled()); + }); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_action_types/index.tsx diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.test.tsx new file mode 100644 index 0000000000000..685d01c988e0d --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.test.tsx @@ -0,0 +1,94 @@ +/* + * 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 { waitFor, renderHook } from '@testing-library/react'; +import { useLoadConnectors, Props } from '.'; +import { mockConnectors } from '../../mock/connectors'; + +const mockConnectorsAndExtras = [ + ...mockConnectors, + { + ...mockConnectors[0], + id: 'connector-missing-secrets', + name: 'Connector Missing Secrets', + isMissingSecrets: true, + }, + { + ...mockConnectors[0], + + id: 'connector-wrong-action-type', + name: 'Connector Wrong Action Type', + isMissingSecrets: true, + actionTypeId: '.d3', + }, +]; + +const connectorsApiResponse = mockConnectorsAndExtras.map((c) => ({ + ...c, + connector_type_id: c.actionTypeId, + is_preconfigured: false, + is_deprecated: false, + referenced_by_count: 0, + is_missing_secrets: c.isMissingSecrets, + is_system_action: false, +})); + +const loadConnectorsResult = mockConnectors.map((c) => ({ + ...c, + isPreconfigured: false, + isDeprecated: false, + referencedByCount: 0, + isSystemAction: false, +})); + +jest.mock('@tanstack/react-query', () => ({ + useQuery: jest.fn().mockImplementation(async (queryKey, fn, opts) => { + try { + const res = await fn(); + return Promise.resolve(res); + } catch (e) { + opts.onError(e); + } + }), +})); + +const http = { + get: jest.fn().mockResolvedValue(connectorsApiResponse), +}; +const toasts = { + addError: jest.fn(), +}; +const defaultProps = { http, toasts } as unknown as Props; +describe('useLoadConnectors', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('should call api to load action types', async () => { + renderHook(() => useLoadConnectors(defaultProps)); + await waitFor(() => { + expect(defaultProps.http.get).toHaveBeenCalledWith('/api/actions/connectors'); + expect(toasts.addError).not.toHaveBeenCalled(); + }); + }); + + it('should return sorted action types, removing isMissingSecrets and wrong action type ids', async () => { + const { result } = renderHook(() => useLoadConnectors(defaultProps)); + await waitFor(() => { + expect(result.current).resolves.toStrictEqual( + // @ts-ignore ts does not like config, but we define it in the mock data + loadConnectorsResult.map((c) => ({ ...c, apiProvider: c.config.apiProvider })) + ); + }); + }); + it('should display error toast when api throws error', async () => { + const mockHttp = { + get: jest.fn().mockRejectedValue(new Error('this is an error')), + } as unknown as Props['http']; + renderHook(() => useLoadConnectors({ ...defaultProps, http: mockHttp })); + await waitFor(() => expect(toasts.addError).toHaveBeenCalled()); + }); +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/connectorland/use_load_connectors/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/get_new_selected_prompt_context/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/use_anonymization_list_update.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/use_anonymization_list_update.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/use_anonymization_list_update.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings/use_anonymization_list_update.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_management/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_management/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_management/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization/settings/anonymization_settings_management/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/bulk_actions/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.test.tsx diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx new file mode 100644 index 0000000000000..94ecaeedc42e8 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_columns/index.tsx @@ -0,0 +1,126 @@ +/* + * 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 { EuiBasicTableColumn, EuiButtonEmpty, EuiCode, EuiSwitch, EuiText } from '@elastic/eui'; +import React from 'react'; + +import styled from 'styled-components'; + +import { BulkActions } from '../bulk_actions'; +import * as i18n from '../translations'; +import { BatchUpdateListItem, ContextEditorRow, FIELDS } from '../types'; + +const AnonymizedButton = styled(EuiButtonEmpty)` + max-height: 24px; +`; + +export const getColumns = ({ + compressed = true, + hasUpdateAIAssistantAnonymization, + onListUpdated, + rawData, +}: { + compressed?: boolean; + hasUpdateAIAssistantAnonymization: boolean; + onListUpdated: (updates: BatchUpdateListItem[]) => void; + rawData: Record<string, string[]> | null; +}): Array<EuiBasicTableColumn<ContextEditorRow>> => { + const actionsColumn: EuiBasicTableColumn<ContextEditorRow> = { + field: FIELDS.ACTIONS, + name: '', + render: (_, row) => { + return ( + <BulkActions + appliesTo="singleRow" + disabled={false} + disableAllow={row.allowed} + disableDeny={!row.allowed} + disableAnonymize={!row.allowed || (row.allowed && row.anonymized)} + disableUnanonymize={!row.allowed || (row.allowed && !row.anonymized)} + onListUpdated={onListUpdated} + selected={[row]} + /> + ); + }, + sortable: false, + width: '36px', + }; + + const valuesColumn: EuiBasicTableColumn<ContextEditorRow> = { + field: FIELDS.RAW_VALUES, + name: i18n.VALUES, + render: (rawValues: ContextEditorRow['rawValues']) => ( + <EuiCode data-test-subj="rawValues">{rawValues.join(',')}</EuiCode> + ), + sortable: false, + }; + + const baseColumns: Array<EuiBasicTableColumn<ContextEditorRow>> = [ + { + field: FIELDS.ALLOWED, + name: i18n.ALLOWED, + render: (_, { allowed, field }) => ( + <EuiSwitch + data-test-subj="allowed" + checked={allowed} + disabled={!hasUpdateAIAssistantAnonymization} + label="" + showLabel={false} + compressed={compressed} + onChange={() => { + onListUpdated([ + { + field, + operation: allowed ? 'remove' : 'add', + update: rawData == null ? 'defaultAllow' : 'allow', + }, + ]); + }} + /> + ), + sortable: true, + width: '75px', + }, + { + field: FIELDS.ANONYMIZED, + name: i18n.ANONYMIZED, + render: (_, { allowed, anonymized, field }) => ( + <AnonymizedButton + data-test-subj="anonymized" + disabled={!allowed || !hasUpdateAIAssistantAnonymization} + color={anonymized ? 'primary' : 'text'} + flush="both" + iconType={anonymized ? 'eyeClosed' : 'eye'} + isSelected={anonymized ? true : false} + onClick={() => + onListUpdated([ + { + field, + operation: anonymized ? 'remove' : 'add', + update: rawData == null ? 'defaultAllowReplacement' : 'allowReplacement', + }, + ]) + } + > + <EuiText size="xs">{anonymized ? i18n.YES : i18n.NO}</EuiText> + </AnonymizedButton> + ), + sortable: true, + width: '102px', + }, + { + field: FIELDS.FIELD, + name: i18n.FIELD, + sortable: true, + width: '260px', + }, + ]; + + return rawData == null + ? [...baseColumns, ...(hasUpdateAIAssistantAnonymization ? [actionsColumn] : [])] + : [...baseColumns, valuesColumn, ...(hasUpdateAIAssistantAnonymization ? [actionsColumn] : [])]; +}; diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_context_menu_panels/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/get_rows/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/toolbar/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/types.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/types.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/types.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor/types.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_flyout/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_flyout/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_flyout/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_flyout/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_modal/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_modal/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_modal/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_modal/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_preview.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_preview.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_preview.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/context_preview.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/get_stats/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/helpers/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/read_only_context_viewer/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/replacements_context_viewer/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/replacements_context_viewer/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/replacements_context_viewer/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/replacements_context_viewer/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/allowed_stat/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.test.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.test.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.test.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.test.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/helpers.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/anonymized_stat/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/available_stat/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/constants.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/constants.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/constants.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/constants.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/data_anonymization_editor/stats/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/alerts_range.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/alerts_range.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/alerts_range.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/alerts_range.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/alerts_range.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/add_entry_button.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/add_entry_button.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/add_entry_button.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/add_entry_button.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/document_entry_editor.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/document_entry_editor.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/document_entry_editor.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/document_entry_editor.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/helpers.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/helpers.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/helpers.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/helpers.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/index_entry_editor.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/use_knowledge_base_table.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/use_knowledge_base_table.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/use_knowledge_base_table.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/knowledge_base_settings_management/use_knowledge_base_table.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/setup_knowledge_base_button.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/setup_knowledge_base_button.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/setup_knowledge_base_button.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/setup_knowledge_base_button.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/knowledge_base/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/knowledge_base/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/connectors.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/connectors.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/mock/connectors.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/connectors.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/conversation.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/conversation.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/mock/conversation.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/conversation.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/get_anonymized_value/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/get_anonymized_value/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/mock/get_anonymized_value/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/get_anonymized_value/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/prompt_context/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/prompt_context/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/mock/prompt_context/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/prompt_context/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/quick_prompt.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/quick_prompt.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/mock/quick_prompt.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/quick_prompt.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/system_prompt/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/system_prompt/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/mock/system_prompt/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/system_prompt/index.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/mock/test_providers/test_providers.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/test_providers/test_providers.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/mock/test_providers/test_providers.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/mock/test_providers/test_providers.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/new_chat/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/new_chat/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/new_chat/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/new_chat/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/new_chat/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/new_chat/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/new_chat_by_title/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat_by_title/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/new_chat_by_title/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat_by_title/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/new_chat_by_title/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat_by_title/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/new_chat_by_title/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat_by_title/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/new_chat_by_title/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat_by_title/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/new_chat_by_title/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/new_chat_by_title/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/const.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/const.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/const.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/const.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/index.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/index.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/index.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/index.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/index.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/index.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/index.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/overview.gif b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/overview.gif similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/overview.gif rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/overview.gif diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/step_config.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/step_config.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/step_config.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/step_config.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.test.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.test.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.test.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/tour/knowledge_base/video_toast.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/impl/upgrade/translations.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/upgrade/translations.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/upgrade/translations.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/upgrade/translations.ts diff --git a/x-pack/packages/kbn-elastic-assistant/impl/upgrade/upgrade_buttons.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/upgrade/upgrade_buttons.tsx similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/impl/upgrade/upgrade_buttons.tsx rename to x-pack/platform/packages/shared/kbn-elastic-assistant/impl/upgrade/upgrade_buttons.tsx diff --git a/x-pack/packages/kbn-elastic-assistant/index.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/index.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/index.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/index.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/jest.config.js b/x-pack/platform/packages/shared/kbn-elastic-assistant/jest.config.js new file mode 100644 index 0000000000000..a073b71c8f750 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/jest.config.js @@ -0,0 +1,23 @@ +/* + * 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. + */ + +module.exports = { + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_elastic_assistant_impl', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/**/*.{ts,tsx}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/*mock*.{ts,tsx}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/*.test.{ts,tsx}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/*.d.ts', + '!<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/*.config.ts', + ], + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/kbn-elastic-assistant'], +}; diff --git a/x-pack/packages/kbn-elastic-assistant/kibana.jsonc b/x-pack/platform/packages/shared/kbn-elastic-assistant/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/kibana.jsonc rename to x-pack/platform/packages/shared/kbn-elastic-assistant/kibana.jsonc diff --git a/x-pack/packages/kbn-elastic-assistant/package.json b/x-pack/platform/packages/shared/kbn-elastic-assistant/package.json similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/package.json rename to x-pack/platform/packages/shared/kbn-elastic-assistant/package.json diff --git a/x-pack/packages/kbn-elastic-assistant/setup_tests.ts b/x-pack/platform/packages/shared/kbn-elastic-assistant/setup_tests.ts similarity index 100% rename from x-pack/packages/kbn-elastic-assistant/setup_tests.ts rename to x-pack/platform/packages/shared/kbn-elastic-assistant/setup_tests.ts diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/tsconfig.json b/x-pack/platform/packages/shared/kbn-elastic-assistant/tsconfig.json new file mode 100644 index 0000000000000..e060e8f3bed27 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/tsconfig.json @@ -0,0 +1,38 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@kbn/ambient-ui-types" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + "../../../../../typings/emotion.d.ts" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/elastic-assistant-common", + "@kbn/core-http-browser", + "@kbn/i18n", + "@kbn/stack-connectors-plugin", + "@kbn/triggers-actions-ui-plugin", + "@kbn/core-http-browser-mocks", + "@kbn/cases-plugin", + "@kbn/actions-plugin", + "@kbn/core-notifications-browser", + "@kbn/i18n-react", + "@kbn/ui-theme", + "@kbn/core-doc-links-browser", + "@kbn/core", + "@kbn/zod", + "@kbn/data-views-plugin", + "@kbn/user-profile-components", + ] +} diff --git a/x-pack/packages/kbn-langchain/README.md b/x-pack/platform/packages/shared/kbn-langchain/README.md similarity index 100% rename from x-pack/packages/kbn-langchain/README.md rename to x-pack/platform/packages/shared/kbn-langchain/README.md diff --git a/x-pack/platform/packages/shared/kbn-langchain/jest.config.js b/x-pack/platform/packages/shared/kbn-langchain/jest.config.js new file mode 100644 index 0000000000000..6ba981c7b745d --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-langchain/jest.config.js @@ -0,0 +1,22 @@ +/* + * 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. + */ + +module.exports = { + coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/packages/kbn_langchain', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/packages/shared/kbn-langchain/server/**/*.{ts}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-langchain/server/{__test__,__snapshots__,__examples__,*mock*,tests,test_helpers,integration_tests,types}/**/*', + '!<rootDir>/x-pack/platform/packages/shared/kbn-langchain/server/*mock*.{ts}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-langchain/server/*.test.{ts}', + '!<rootDir>/x-pack/platform/packages/shared/kbn-langchain/server/*.d.ts', + '!<rootDir>/x-pack/platform/packages/shared/kbn-langchain/server/*.config.ts', + ], + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/kbn-langchain'], +}; diff --git a/x-pack/packages/kbn-langchain/kibana.jsonc b/x-pack/platform/packages/shared/kbn-langchain/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-langchain/kibana.jsonc rename to x-pack/platform/packages/shared/kbn-langchain/kibana.jsonc diff --git a/x-pack/packages/kbn-langchain/package.json b/x-pack/platform/packages/shared/kbn-langchain/package.json similarity index 100% rename from x-pack/packages/kbn-langchain/package.json rename to x-pack/platform/packages/shared/kbn-langchain/package.json diff --git a/x-pack/packages/kbn-langchain/server/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/index.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/bedrock_chat.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/bedrock_chat.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/bedrock_chat.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/bedrock_chat.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_bedrock_converse/bedrock_runtime_client.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_bedrock_converse/bedrock_runtime_client.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_bedrock_converse/bedrock_runtime_client.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_bedrock_converse/bedrock_runtime_client.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_bedrock_converse/chat_bedrock_converse.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_bedrock_converse/chat_bedrock_converse.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_bedrock_converse/chat_bedrock_converse.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_bedrock_converse/chat_bedrock_converse.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_bedrock_converse/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_bedrock_converse/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_bedrock_converse/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_bedrock_converse/index.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_openai.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_openai.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_openai.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_openai.test.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_openai.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_openai.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_openai.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_openai.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_vertex/chat_vertex.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/chat_vertex.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_vertex/chat_vertex.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/chat_vertex.test.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_vertex/chat_vertex.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/chat_vertex.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_vertex/chat_vertex.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/chat_vertex.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_vertex/connection.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/connection.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_vertex/connection.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/connection.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/chat_vertex/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/chat_vertex/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/chat_vertex/index.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/constants.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/constants.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/constants.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/constants.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/gemini_chat.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/gemini_chat.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/gemini_chat.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/gemini_chat.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/helpers.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/helpers.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/helpers.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/helpers.test.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/helpers.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/helpers.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/helpers.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/helpers.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/index.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/llm.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/llm.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/llm.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/llm.test.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/llm.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/llm.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/llm.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/llm.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/mocks/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/mocks/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/mocks/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/mocks/index.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/simple_chat_model.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/simple_chat_model.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/simple_chat_model.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/simple_chat_model.test.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/simple_chat_model.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/simple_chat_model.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/simple_chat_model.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/simple_chat_model.ts diff --git a/x-pack/packages/kbn-langchain/server/language_models/types.ts b/x-pack/platform/packages/shared/kbn-langchain/server/language_models/types.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/language_models/types.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/language_models/types.ts diff --git a/x-pack/packages/kbn-langchain/server/tracers/README.mdx b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/README.mdx similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/README.mdx rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/README.mdx diff --git a/x-pack/packages/kbn-langchain/server/tracers/apm/apm_tracer.ts b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/apm/apm_tracer.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/apm/apm_tracer.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/apm/apm_tracer.ts diff --git a/x-pack/packages/kbn-langchain/server/tracers/apm/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/apm/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/apm/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/apm/index.ts diff --git a/x-pack/packages/kbn-langchain/server/tracers/langsmith/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/langsmith/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/langsmith/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/langsmith/index.ts diff --git a/x-pack/packages/kbn-langchain/server/tracers/langsmith/langsmith_tracer.ts b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/langsmith/langsmith_tracer.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/langsmith/langsmith_tracer.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/langsmith/langsmith_tracer.ts diff --git a/x-pack/packages/kbn-langchain/server/tracers/telemetry/index.ts b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/index.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/telemetry/index.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/index.ts diff --git a/x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.test.ts diff --git a/x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts b/x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/tracers/telemetry/telemetry_tracer.ts diff --git a/x-pack/packages/kbn-langchain/server/utils/bedrock.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/utils/bedrock.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/utils/bedrock.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/utils/bedrock.test.ts diff --git a/x-pack/packages/kbn-langchain/server/utils/bedrock.ts b/x-pack/platform/packages/shared/kbn-langchain/server/utils/bedrock.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/utils/bedrock.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/utils/bedrock.ts diff --git a/x-pack/packages/kbn-langchain/server/utils/gemini.test.ts b/x-pack/platform/packages/shared/kbn-langchain/server/utils/gemini.test.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/utils/gemini.test.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/utils/gemini.test.ts diff --git a/x-pack/packages/kbn-langchain/server/utils/gemini.ts b/x-pack/platform/packages/shared/kbn-langchain/server/utils/gemini.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/utils/gemini.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/utils/gemini.ts diff --git a/x-pack/packages/kbn-langchain/server/utils/types.ts b/x-pack/platform/packages/shared/kbn-langchain/server/utils/types.ts similarity index 100% rename from x-pack/packages/kbn-langchain/server/utils/types.ts rename to x-pack/platform/packages/shared/kbn-langchain/server/utils/types.ts diff --git a/x-pack/platform/packages/shared/kbn-langchain/tsconfig.json b/x-pack/platform/packages/shared/kbn-langchain/tsconfig.json new file mode 100644 index 0000000000000..a3ee2491f36d8 --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-langchain/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/logging", + "@kbn/actions-plugin", + "@kbn/logging-mocks", + "@kbn/utility-types", + "@kbn/tooling-log" + ] +} diff --git a/x-pack/packages/kbn-slo-schema/README.md b/x-pack/platform/packages/shared/kbn-slo-schema/README.md similarity index 100% rename from x-pack/packages/kbn-slo-schema/README.md rename to x-pack/platform/packages/shared/kbn-slo-schema/README.md diff --git a/x-pack/packages/kbn-slo-schema/index.ts b/x-pack/platform/packages/shared/kbn-slo-schema/index.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/index.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/index.ts diff --git a/x-pack/platform/packages/shared/kbn-slo-schema/jest.config.js b/x-pack/platform/packages/shared/kbn-slo-schema/jest.config.js new file mode 100644 index 0000000000000..caa876c76fafe --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-slo-schema/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/kbn-slo-schema'], +}; diff --git a/x-pack/packages/kbn-slo-schema/kibana.jsonc b/x-pack/platform/packages/shared/kbn-slo-schema/kibana.jsonc similarity index 100% rename from x-pack/packages/kbn-slo-schema/kibana.jsonc rename to x-pack/platform/packages/shared/kbn-slo-schema/kibana.jsonc diff --git a/x-pack/packages/kbn-slo-schema/package.json b/x-pack/platform/packages/shared/kbn-slo-schema/package.json similarity index 100% rename from x-pack/packages/kbn-slo-schema/package.json rename to x-pack/platform/packages/shared/kbn-slo-schema/package.json diff --git a/x-pack/packages/kbn-slo-schema/src/models/duration.test.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.test.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/models/duration.test.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.test.ts diff --git a/x-pack/packages/kbn-slo-schema/src/models/duration.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/models/duration.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/models/duration.ts diff --git a/x-pack/packages/kbn-slo-schema/src/models/index.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/models/index.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/models/index.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/models/index.ts diff --git a/x-pack/packages/kbn-slo-schema/src/models/pagination.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/models/pagination.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/models/pagination.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/common.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/common.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/common.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/common.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/index.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/index.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/index.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/index.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/indicators.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/create.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/create.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/create.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/delete_instance.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/fetch_historical_summary.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_definition.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_definition.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_definition.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_definition.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_group.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_group.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/find_group.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/find_group.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_burn_rates.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_overview.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_overview.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_overview.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_overview.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_preview_data.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_groupings.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_slo_health.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/get_suggestions.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/index.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/index.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/index.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/index.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/manage.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/manage.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/manage.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/manage.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/put_settings.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/put_settings.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/reset.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/reset.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/reset.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/reset.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/routes/update.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/routes/update.ts diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/slo.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/rest_specs/slo.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/common.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/common.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/common.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/duration.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/duration.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/duration.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/duration.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/health.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/health.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/health.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/health.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/index.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/index.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/index.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/index.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/indicators.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/indicators.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/indicators.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/schema.test.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/schema.test.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/schema.test.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/schema.test.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/settings.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/settings.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/settings.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/settings.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/slo.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/slo.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/slo.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/time_window.test.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.test.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/time_window.test.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.test.ts diff --git a/x-pack/packages/kbn-slo-schema/src/schema/time_window.ts b/x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts similarity index 100% rename from x-pack/packages/kbn-slo-schema/src/schema/time_window.ts rename to x-pack/platform/packages/shared/kbn-slo-schema/src/schema/time_window.ts diff --git a/x-pack/platform/packages/shared/kbn-slo-schema/tsconfig.json b/x-pack/platform/packages/shared/kbn-slo-schema/tsconfig.json new file mode 100644 index 0000000000000..47c1c65ecc3aa --- /dev/null +++ b/x-pack/platform/packages/shared/kbn-slo-schema/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts" + ], + "kbn_references": [ + "@kbn/std", + "@kbn/io-ts-utils", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis/categorization_analyzer.ts b/x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis/categorization_analyzer.ts new file mode 100644 index 0000000000000..3bdf8dea9ee60 --- /dev/null +++ b/x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis/categorization_analyzer.ts @@ -0,0 +1,72 @@ +/* + * 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 { AggregationsCustomCategorizeTextAnalyzer } from '@elastic/elasticsearch/lib/api/types'; + +// This is a copy of the default categorization analyzer but using the 'standard' tokenizer rather than the 'ml_standard' tokenizer. +// The 'ml_standard' tokenizer splits tokens in a way that was observed to give better categories in testing many years ago, however, +// the downside of these better categories is then a potential failure to match the original documents when creating a filter for Discover. +// A future enhancement would be to check which analyzer is specified in the mappings for the source field and to use +// that instead of unconditionally using 'standard'. +// However for an initial fix, using the standard analyzer will be more likely to match the results from the majority of searches. +export const categorizationAnalyzer: AggregationsCustomCategorizeTextAnalyzer = { + char_filter: ['first_line_with_letters'], + tokenizer: 'standard', + filter: [ + // @ts-expect-error filter type in AggregationsCustomCategorizeTextAnalyzer is incorrect + { + type: 'stop', + stopwords: [ + 'Monday', + 'Tuesday', + 'Wednesday', + 'Thursday', + 'Friday', + 'Saturday', + 'Sunday', + 'Mon', + 'Tue', + 'Wed', + 'Thu', + 'Fri', + 'Sat', + 'Sun', + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + 'GMT', + 'UTC', + ], + }, + // @ts-expect-error filter type in AggregationsCustomCategorizeTextAnalyzer is incorrect + { + type: 'limit', + max_token_count: '100', + }, + ], +}; diff --git a/x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis/create_category_request.ts b/x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis/create_category_request.ts index c1d6f82c9e582..4e8e2268fed5a 100644 --- a/x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis/create_category_request.ts +++ b/x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis/create_category_request.ts @@ -5,16 +5,14 @@ * 2.0. */ -import type { - QueryDslQueryContainer, - AggregationsCustomCategorizeTextAnalyzer, -} from '@elastic/elasticsearch/lib/api/types'; +import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; import type { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { isPopulatedObject } from '@kbn/ml-is-populated-object/src/is_populated_object'; import type { createRandomSamplerWrapper } from '@kbn/ml-random-sampler-utils'; import { createDefaultQuery } from '@kbn/aiops-common/create_default_query'; +import { categorizationAnalyzer } from './categorization_analyzer'; const CATEGORY_LIMIT = 1000; const EXAMPLE_LIMIT = 4; @@ -121,67 +119,3 @@ export function createCategoryRequest( }, }; } - -// This is a copy of the default categorization analyzer but using the 'standard' tokenizer rather than the 'ml_standard' tokenizer. -// The 'ml_standard' tokenizer splits tokens in a way that was observed to give better categories in testing many years ago, however, -// the downside of these better categories is then a potential failure to match the original documents when creating a filter for Discover. -// A future enhancement would be to check which analyzer is specified in the mappings for the source field and to use -// that instead of unconditionally using 'standard'. -// However for an initial fix, using the standard analyzer will be more likely to match the results from the majority of searches. -const categorizationAnalyzer: AggregationsCustomCategorizeTextAnalyzer = { - char_filter: ['first_line_with_letters'], - tokenizer: 'standard', - filter: [ - // @ts-expect-error filter type in AggregationsCustomCategorizeTextAnalyzer is incorrect - { - type: 'stop', - stopwords: [ - 'Monday', - 'Tuesday', - 'Wednesday', - 'Thursday', - 'Friday', - 'Saturday', - 'Sunday', - 'Mon', - 'Tue', - 'Wed', - 'Thu', - 'Fri', - 'Sat', - 'Sun', - 'January', - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December', - 'Jan', - 'Feb', - 'Mar', - 'Apr', - 'May', - 'Jun', - 'Jul', - 'Aug', - 'Sep', - 'Oct', - 'Nov', - 'Dec', - 'GMT', - 'UTC', - ], - }, - // @ts-expect-error filter type in AggregationsCustomCategorizeTextAnalyzer is incorrect - { - type: 'limit', - max_token_count: '100', - }, - ], -}; diff --git a/x-pack/packages/observability/alerting_rule_utils/README.md b/x-pack/platform/packages/shared/observability/alerting_rule_utils/README.md similarity index 100% rename from x-pack/packages/observability/alerting_rule_utils/README.md rename to x-pack/platform/packages/shared/observability/alerting_rule_utils/README.md diff --git a/x-pack/packages/observability/alerting_rule_utils/index.ts b/x-pack/platform/packages/shared/observability/alerting_rule_utils/index.ts similarity index 100% rename from x-pack/packages/observability/alerting_rule_utils/index.ts rename to x-pack/platform/packages/shared/observability/alerting_rule_utils/index.ts diff --git a/x-pack/platform/packages/shared/observability/alerting_rule_utils/jest.config.js b/x-pack/platform/packages/shared/observability/alerting_rule_utils/jest.config.js new file mode 100644 index 0000000000000..159f3ea52391a --- /dev/null +++ b/x-pack/platform/packages/shared/observability/alerting_rule_utils/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['<rootDir>/x-pack/platform/packages/shared/observability/alerting_rule_utils'], +}; diff --git a/x-pack/packages/observability/alerting_rule_utils/kibana.jsonc b/x-pack/platform/packages/shared/observability/alerting_rule_utils/kibana.jsonc similarity index 100% rename from x-pack/packages/observability/alerting_rule_utils/kibana.jsonc rename to x-pack/platform/packages/shared/observability/alerting_rule_utils/kibana.jsonc diff --git a/x-pack/packages/observability/alerting_rule_utils/package.json b/x-pack/platform/packages/shared/observability/alerting_rule_utils/package.json similarity index 100% rename from x-pack/packages/observability/alerting_rule_utils/package.json rename to x-pack/platform/packages/shared/observability/alerting_rule_utils/package.json diff --git a/x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.test.ts b/x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.test.ts similarity index 100% rename from x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.test.ts rename to x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.test.ts diff --git a/x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.ts b/x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.ts similarity index 100% rename from x-pack/packages/observability/alerting_rule_utils/src/get_ecs_groups.ts rename to x-pack/platform/packages/shared/observability/alerting_rule_utils/src/get_ecs_groups.ts diff --git a/x-pack/platform/packages/shared/observability/alerting_rule_utils/tsconfig.json b/x-pack/platform/packages/shared/observability/alerting_rule_utils/tsconfig.json new file mode 100644 index 0000000000000..04f886a74e0c3 --- /dev/null +++ b/x-pack/platform/packages/shared/observability/alerting_rule_utils/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/alerts-as-data-utils" + ] +} diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/README.md b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/README.md similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/README.md rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/README.md diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/common/index.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/common/index.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/common/index.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/common/index.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/i18nrc.json b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/i18nrc.json similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/i18nrc.json rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/i18nrc.json diff --git a/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/jest.config.js b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/jest.config.js new file mode 100644 index 0000000000000..d7156515657a3 --- /dev/null +++ b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../../', + roots: ['<rootDir>/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/{common,public}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/kibana.jsonc b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/kibana.jsonc similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/kibana.jsonc rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/kibana.jsonc diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/app.styles.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/app.styles.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/app.styles.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/app.styles.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/components/app.tsx b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/components/app.tsx similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/components/app.tsx rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/components/app.tsx diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/index.tsx b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/index.tsx similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/index.tsx rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/index.tsx diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/services/breadcrumb.mock.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/services/breadcrumb.mock.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/services/breadcrumb.mock.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/services/breadcrumb.mock.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/services/breadcrumbs.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/services/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/services/breadcrumbs.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/application/services/breadcrumbs.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/index.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/index.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/index.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/index.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/plugin.test.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/plugin.test.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/plugin.test.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/plugin.test.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/plugin.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/plugin.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/plugin.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/plugin.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/public/types.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/public/types.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/server/config.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/config.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/server/config.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/config.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/server/index.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/index.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/server/index.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/index.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/server/plugin.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/plugin.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/server/plugin.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/plugin.ts diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/server/types.ts b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/types.ts similarity index 100% rename from x-pack/plugins/cloud_integrations/cloud_data_migration/server/types.ts rename to x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/server/types.ts diff --git a/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/tsconfig.json b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/tsconfig.json new file mode 100644 index 0000000000000..baf9d6471c405 --- /dev/null +++ b/x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration/tsconfig.json @@ -0,0 +1,29 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + "../../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + // required plugins + "@kbn/cloud-plugin", + "@kbn/management-plugin", + "@kbn/features-plugin", + // required bundles + "@kbn/kibana-react-plugin", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/core-plugins-server", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/cross_cluster_replication/README.md b/x-pack/platform/plugins/private/cross_cluster_replication/README.md similarity index 100% rename from x-pack/plugins/cross_cluster_replication/README.md rename to x-pack/platform/plugins/private/cross_cluster_replication/README.md diff --git a/x-pack/plugins/cross_cluster_replication/common/constants/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/constants/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/constants/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/constants/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/common/services/__snapshots__/follower_index_serialization.test.ts.snap b/x-pack/platform/plugins/private/cross_cluster_replication/common/services/__snapshots__/follower_index_serialization.test.ts.snap similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/services/__snapshots__/follower_index_serialization.test.ts.snap rename to x-pack/platform/plugins/private/cross_cluster_replication/common/services/__snapshots__/follower_index_serialization.test.ts.snap diff --git a/x-pack/plugins/cross_cluster_replication/common/services/auto_follow_pattern_serialization.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/services/auto_follow_pattern_serialization.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/services/auto_follow_pattern_serialization.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/services/auto_follow_pattern_serialization.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/common/services/auto_follow_pattern_serialization.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/services/auto_follow_pattern_serialization.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/services/auto_follow_pattern_serialization.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/services/auto_follow_pattern_serialization.ts diff --git a/x-pack/plugins/cross_cluster_replication/common/services/follower_index_serialization.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/services/follower_index_serialization.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/services/follower_index_serialization.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/services/follower_index_serialization.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/common/services/follower_index_serialization.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/services/follower_index_serialization.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/services/follower_index_serialization.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/services/follower_index_serialization.ts diff --git a/x-pack/plugins/cross_cluster_replication/common/services/utils.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/services/utils.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/services/utils.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/services/utils.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/common/services/utils.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/services/utils.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/services/utils.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/services/utils.ts diff --git a/x-pack/plugins/cross_cluster_replication/common/types.ts b/x-pack/platform/plugins/private/cross_cluster_replication/common/types.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/common/types.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/common/types.ts diff --git a/x-pack/platform/plugins/private/cross_cluster_replication/jest.config.js b/x-pack/platform/plugins/private/cross_cluster_replication/jest.config.js new file mode 100644 index 0000000000000..24cfdf31fc8d2 --- /dev/null +++ b/x-pack/platform/plugins/private/cross_cluster_replication/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/cross_cluster_replication'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/cross_cluster_replication', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/cross_cluster_replication/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/cross_cluster_replication/kibana.jsonc b/x-pack/platform/plugins/private/cross_cluster_replication/kibana.jsonc similarity index 100% rename from x-pack/plugins/cross_cluster_replication/kibana.jsonc rename to x-pack/platform/plugins/private/cross_cluster_replication/kibana.jsonc diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_add.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_add.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_add.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_add.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_edit.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_edit.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_edit.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_edit.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_list.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_list.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_list.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/auto_follow_pattern_list.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/fixtures/auto_follow_pattern.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/fixtures/auto_follow_pattern.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/fixtures/auto_follow_pattern.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/fixtures/auto_follow_pattern.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/fixtures/follower_index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/fixtures/follower_index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/fixtures/follower_index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/fixtures/follower_index.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/follower_index_add.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/follower_index_add.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/follower_index_add.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/follower_index_add.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/follower_index_edit.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/follower_index_edit.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/follower_index_edit.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/follower_index_edit.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/follower_indices_list.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/follower_indices_list.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/follower_indices_list.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/follower_indices_list.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_add.helpers.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_add.helpers.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_add.helpers.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_add.helpers.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_edit.helpers.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_edit.helpers.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_edit.helpers.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_edit.helpers.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_list.helpers.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_list.helpers.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_list.helpers.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/auto_follow_pattern_list.helpers.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/constants.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/constants.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/constants.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/constants.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_add.helpers.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_add.helpers.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_add.helpers.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_add.helpers.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_edit.helpers.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_edit.helpers.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_edit.helpers.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_edit.helpers.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_list.helpers.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_list.helpers.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_list.helpers.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/follower_index_list.helpers.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/home.helpers.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/home.helpers.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/home.helpers.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/home.helpers.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/http_requests.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/http_requests.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/http_requests.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/http_requests.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/setup_environment.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/setup_environment.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/helpers/setup_environment.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/helpers/setup_environment.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/home.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/home.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/home.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/home.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/breadcrumbs.mock.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/breadcrumbs.mock.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/breadcrumbs.mock.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/breadcrumbs.mock.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/search_box.mock.tsx b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/search_box.mock.tsx similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/search_box.mock.tsx rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/search_box.mock.tsx diff --git a/x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/track_ui_metric.mock.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/track_ui_metric.mock.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/__jest__/client_integration/mocks/track_ui_metric.mock.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/__jest__/client_integration/mocks/track_ui_metric.mock.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/app.tsx b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/app.tsx similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/app.tsx rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/app.tsx diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/__snapshots__/auto_follow_pattern_form.test.js.snap b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/__snapshots__/auto_follow_pattern_form.test.js.snap similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/__snapshots__/auto_follow_pattern_form.test.js.snap rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/__snapshots__/auto_follow_pattern_form.test.js.snap diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.container.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.container.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.container.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.container.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.tsx b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.tsx similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.tsx rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/auto_follow_pattern_action_menu.tsx diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_action_menu/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.d.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.d.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.d.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.d.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_delete_provider.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_form.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_form.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_form.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_form.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_form.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_form.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_form.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_form.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_indices_preview.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_indices_preview.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_indices_preview.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_indices_preview.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_page_title.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_page_title.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_page_title.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_page_title.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_request_flyout.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_request_flyout.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/auto_follow_pattern_request_flyout.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/auto_follow_pattern_request_flyout.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_actions_provider.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_actions_provider.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_actions_provider.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_actions_provider.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_pause_provider.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_pause_provider.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_pause_provider.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_pause_provider.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_resume_provider.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_resume_provider.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_resume_provider.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_resume_provider.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_unfollow_provider.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_unfollow_provider.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_unfollow_provider.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/follower_index_unfollow_provider.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_actions_providers/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_actions_providers/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/__snapshots__/follower_index_form.test.js.snap b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/__snapshots__/follower_index_form.test.js.snap similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/__snapshots__/follower_index_form.test.js.snap rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/__snapshots__/follower_index_form.test.js.snap diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/advanced_settings_fields.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/advanced_settings_fields.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/advanced_settings_fields.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/advanced_settings_fields.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/follower_index_form.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/follower_index_request_flyout.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/follower_index_request_flyout.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/follower_index_request_flyout.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/follower_index_request_flyout.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_form/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_form/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_page_title.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_page_title.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/follower_index_page_title.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/follower_index_page_title.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/form_entry_row.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/form_entry_row.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/form_entry_row.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/form_entry_row.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/index.d.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/index.d.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/index.d.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/index.d.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/remote_clusters_form_field.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/remote_clusters_form_field.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/remote_clusters_form_field.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/remote_clusters_form_field.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/remote_clusters_provider.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/remote_clusters_provider.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/remote_clusters_provider.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/remote_clusters_provider.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/section_error.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/section_error.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/section_error.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/section_error.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/section_loading.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/section_loading.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/section_loading.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/section_loading.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/components/section_unauthorized.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/section_unauthorized.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/components/section_unauthorized.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/components/section_unauthorized.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/constants/api.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/api.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/constants/api.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/api.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/constants/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/constants/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/constants/sections.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/sections.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/constants/sections.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/sections.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/constants/ui_metric.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/ui_metric.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/constants/ui_metric.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/constants/ui_metric.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/index.tsx b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/index.tsx similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/index.tsx rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/index.tsx diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/auto_follow_pattern_add.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_add/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/auto_follow_pattern_edit.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/auto_follow_pattern_edit/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_add/follower_index_add.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_add/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_add/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_add/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_add/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_edit/follower_index_edit.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_edit/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_edit/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/follower_index_edit/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/follower_index_edit/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/auto_follow_pattern_list.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/auto_follow_pattern_table.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/auto_follow_pattern_table/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/detail_panel.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/detail_panel/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/components/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/auto_follow_pattern_list/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/context_menu.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/context_menu.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/context_menu.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/context_menu.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/context_menu/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/detail_panel.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/detail_panel/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/follower_indices_table.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/follower_indices_table/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/components/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/follower_indices_list.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/follower_indices_list/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/follower_indices_list/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/home.container.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/home.container.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/home.container.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/home.container.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/home.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/home.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/home.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/home.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/home/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/home/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/home/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/index.d.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/index.d.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/index.d.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/index.d.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/sections/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/sections/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/sections/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/__snapshots__/auto_follow_pattern_validators.test.js.snap b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/__snapshots__/auto_follow_pattern_validators.test.js.snap similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/__snapshots__/auto_follow_pattern_validators.test.js.snap rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/__snapshots__/auto_follow_pattern_validators.test.js.snap diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/api.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/api.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/api.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/api.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_errors.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_errors.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_errors.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_errors.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_errors.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_errors.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_errors.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_errors.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/auto_follow_pattern_validators.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/breadcrumbs.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/breadcrumbs.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/breadcrumbs.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/documentation_links.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/documentation_links.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/documentation_links.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/documentation_links.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/follower_index_default_settings.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/follower_index_default_settings.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/follower_index_default_settings.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/follower_index_default_settings.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/get_remote_cluster_name.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/get_remote_cluster_name.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/get_remote_cluster_name.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/get_remote_cluster_name.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/input_validation.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/input_validation.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/input_validation.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/input_validation.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/notifications.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/notifications.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/notifications.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/notifications.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/routing.d.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/routing.d.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/routing.d.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/routing.d.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/routing.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/routing.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/routing.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/routing.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/track_ui_metric.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/track_ui_metric.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/track_ui_metric.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/track_ui_metric.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/utils.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/utils.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/utils.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/utils.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/services/utils.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/utils.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/services/utils.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/services/utils.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/action_types.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/action_types.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/action_types.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/action_types.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/actions/api.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/api.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/actions/api.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/api.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/actions/auto_follow_pattern.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/auto_follow_pattern.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/actions/auto_follow_pattern.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/auto_follow_pattern.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/actions/ccr.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/ccr.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/actions/ccr.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/ccr.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/actions/follower_index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/follower_index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/actions/follower_index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/follower_index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/actions/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/actions/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/actions/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/index.d.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/index.d.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/index.d.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/index.d.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/reducers/api.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/api.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/reducers/api.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/api.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/reducers/api.test.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/api.test.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/reducers/api.test.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/api.test.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/reducers/auto_follow_pattern.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/auto_follow_pattern.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/reducers/auto_follow_pattern.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/auto_follow_pattern.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/reducers/follower_index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/follower_index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/reducers/follower_index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/follower_index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/reducers/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/reducers/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/reducers/stats.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/stats.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/reducers/stats.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/reducers/stats.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/selectors/index.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/selectors/index.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/selectors/index.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/selectors/index.js diff --git a/x-pack/plugins/cross_cluster_replication/public/app/store/store.js b/x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/store.js similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/app/store/store.js rename to x-pack/platform/plugins/private/cross_cluster_replication/public/app/store/store.js diff --git a/x-pack/plugins/cross_cluster_replication/public/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/plugin.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/plugin.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/plugin.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/plugin.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/shared_imports.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/shared_imports.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/shared_imports.ts diff --git a/x-pack/plugins/cross_cluster_replication/public/types.ts b/x-pack/platform/plugins/private/cross_cluster_replication/public/types.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/public/types.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/public/types.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/config.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/config.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/config.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/config.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/lib/__snapshots__/ccr_stats_serialization.test.ts.snap b/x-pack/platform/plugins/private/cross_cluster_replication/server/lib/__snapshots__/ccr_stats_serialization.test.ts.snap similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/lib/__snapshots__/ccr_stats_serialization.test.ts.snap rename to x-pack/platform/plugins/private/cross_cluster_replication/server/lib/__snapshots__/ccr_stats_serialization.test.ts.snap diff --git a/x-pack/plugins/cross_cluster_replication/server/lib/ccr_stats_serialization.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/lib/ccr_stats_serialization.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/lib/ccr_stats_serialization.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/lib/ccr_stats_serialization.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/lib/ccr_stats_serialization.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/lib/ccr_stats_serialization.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/lib/ccr_stats_serialization.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/lib/ccr_stats_serialization.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/plugin.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/plugin.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/plugin.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/plugin.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_create_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_delete_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_fetch_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_get_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_pause_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_resume_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/auto_follow_pattern/register_update_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_permissions_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_permissions_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_permissions_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_permissions_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_stats_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_stats_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_stats_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/cross_cluster_replication/register_stats_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_create_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_create_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_create_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_create_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_create_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_create_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_create_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_create_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_fetch_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_get_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_get_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_get_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_get_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_get_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_get_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_get_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_get_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_pause_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_resume_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_unfollow_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_update_route.test.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_update_route.test.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_update_route.test.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_update_route.test.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_update_route.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_update_route.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/follower_index/register_update_route.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/follower_index/register_update_route.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/api/test_lib.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/test_lib.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/api/test_lib.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/api/test_lib.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/routes/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/routes/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/routes/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/routes/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/services/add_base_path.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/services/add_base_path.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/services/add_base_path.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/services/add_base_path.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/services/index.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/services/index.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/services/index.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/services/index.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/shared_imports.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/shared_imports.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/shared_imports.ts diff --git a/x-pack/plugins/cross_cluster_replication/server/types.ts b/x-pack/platform/plugins/private/cross_cluster_replication/server/types.ts similarity index 100% rename from x-pack/plugins/cross_cluster_replication/server/types.ts rename to x-pack/platform/plugins/private/cross_cluster_replication/server/types.ts diff --git a/x-pack/platform/plugins/private/cross_cluster_replication/tsconfig.json b/x-pack/platform/plugins/private/cross_cluster_replication/tsconfig.json new file mode 100644 index 0000000000000..d6804765c1ef9 --- /dev/null +++ b/x-pack/platform/plugins/private/cross_cluster_replication/tsconfig.json @@ -0,0 +1,37 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + ], + "kbn_references": [ + "@kbn/core", + // required plugins + "@kbn/licensing-plugin", + "@kbn/management-plugin", + "@kbn/remote-clusters-plugin", + "@kbn/index-management-plugin", + "@kbn/features-plugin", + // optional plugins + "@kbn/usage-collection-plugin", + // required bundles + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/data-plugin", + "@kbn/license-api-guard-plugin", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/analytics", + "@kbn/test-jest-helpers", + "@kbn/config-schema", + "@kbn/shared-ux-router", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/data_usage/README.md b/x-pack/platform/plugins/private/data_usage/README.md similarity index 100% rename from x-pack/plugins/data_usage/README.md rename to x-pack/platform/plugins/private/data_usage/README.md diff --git a/x-pack/plugins/data_usage/common/constants.ts b/x-pack/platform/plugins/private/data_usage/common/constants.ts similarity index 100% rename from x-pack/plugins/data_usage/common/constants.ts rename to x-pack/platform/plugins/private/data_usage/common/constants.ts diff --git a/x-pack/plugins/data_usage/common/experimental_features.ts b/x-pack/platform/plugins/private/data_usage/common/experimental_features.ts similarity index 100% rename from x-pack/plugins/data_usage/common/experimental_features.ts rename to x-pack/platform/plugins/private/data_usage/common/experimental_features.ts diff --git a/x-pack/plugins/data_usage/common/index.ts b/x-pack/platform/plugins/private/data_usage/common/index.ts similarity index 100% rename from x-pack/plugins/data_usage/common/index.ts rename to x-pack/platform/plugins/private/data_usage/common/index.ts diff --git a/x-pack/plugins/data_usage/common/query_client.tsx b/x-pack/platform/plugins/private/data_usage/common/query_client.tsx similarity index 100% rename from x-pack/plugins/data_usage/common/query_client.tsx rename to x-pack/platform/plugins/private/data_usage/common/query_client.tsx diff --git a/x-pack/plugins/data_usage/common/rest_types/data_streams.ts b/x-pack/platform/plugins/private/data_usage/common/rest_types/data_streams.ts similarity index 100% rename from x-pack/plugins/data_usage/common/rest_types/data_streams.ts rename to x-pack/platform/plugins/private/data_usage/common/rest_types/data_streams.ts diff --git a/x-pack/plugins/data_usage/common/rest_types/index.ts b/x-pack/platform/plugins/private/data_usage/common/rest_types/index.ts similarity index 100% rename from x-pack/plugins/data_usage/common/rest_types/index.ts rename to x-pack/platform/plugins/private/data_usage/common/rest_types/index.ts diff --git a/x-pack/plugins/data_usage/common/rest_types/usage_metrics.test.ts b/x-pack/platform/plugins/private/data_usage/common/rest_types/usage_metrics.test.ts similarity index 100% rename from x-pack/plugins/data_usage/common/rest_types/usage_metrics.test.ts rename to x-pack/platform/plugins/private/data_usage/common/rest_types/usage_metrics.test.ts diff --git a/x-pack/plugins/data_usage/common/rest_types/usage_metrics.ts b/x-pack/platform/plugins/private/data_usage/common/rest_types/usage_metrics.ts similarity index 100% rename from x-pack/plugins/data_usage/common/rest_types/usage_metrics.ts rename to x-pack/platform/plugins/private/data_usage/common/rest_types/usage_metrics.ts index 07130c84b6fdf..3a53a141caf9d 100644 --- a/x-pack/plugins/data_usage/common/rest_types/usage_metrics.ts +++ b/x-pack/platform/plugins/private/data_usage/common/rest_types/usage_metrics.ts @@ -28,8 +28,8 @@ export const isDefaultMetricType = (metricType: string) => DEFAULT_METRIC_TYPES.includes(metricType); export const METRIC_TYPE_API_VALUES_TO_UI_OPTIONS_MAP = Object.freeze<Record<MetricTypes, string>>({ - storage_retained: 'Data Retained in Storage', ingest_rate: 'Data Ingested', + storage_retained: 'Data Retained in Storage', search_vcu: 'Search VCU', ingest_vcu: 'Ingest VCU', ml_vcu: 'ML VCU', @@ -40,8 +40,8 @@ export const METRIC_TYPE_API_VALUES_TO_UI_OPTIONS_MAP = Object.freeze<Record<Met }); export const METRIC_TYPE_UI_OPTIONS_VALUES_TO_API_MAP = Object.freeze<Record<string, MetricTypes>>({ - 'Data Retained in Storage': 'storage_retained', 'Data Ingested': 'ingest_rate', + 'Data Retained in Storage': 'storage_retained', 'Search VCU': 'search_vcu', 'Ingest VCU': 'ingest_vcu', 'ML VCU': 'ml_vcu', diff --git a/x-pack/plugins/data_usage/common/test_utils/index.ts b/x-pack/platform/plugins/private/data_usage/common/test_utils/index.ts similarity index 100% rename from x-pack/plugins/data_usage/common/test_utils/index.ts rename to x-pack/platform/plugins/private/data_usage/common/test_utils/index.ts diff --git a/x-pack/plugins/data_usage/common/test_utils/test_provider.tsx b/x-pack/platform/plugins/private/data_usage/common/test_utils/test_provider.tsx similarity index 100% rename from x-pack/plugins/data_usage/common/test_utils/test_provider.tsx rename to x-pack/platform/plugins/private/data_usage/common/test_utils/test_provider.tsx diff --git a/x-pack/plugins/data_usage/common/test_utils/test_query_client_options.ts b/x-pack/platform/plugins/private/data_usage/common/test_utils/test_query_client_options.ts similarity index 100% rename from x-pack/plugins/data_usage/common/test_utils/test_query_client_options.ts rename to x-pack/platform/plugins/private/data_usage/common/test_utils/test_query_client_options.ts diff --git a/x-pack/platform/plugins/private/data_usage/common/utils.test.ts b/x-pack/platform/plugins/private/data_usage/common/utils.test.ts new file mode 100644 index 0000000000000..c7ff57069e44e --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/common/utils.test.ts @@ -0,0 +1,34 @@ +/* + * 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 { isDateRangeValid } from './utils'; + +describe('isDateRangeValid', () => { + describe('Valid ranges', () => { + it.each([ + ['start date is `now-10s` and end date is `now`', { start: 'now-10s', end: 'now' }], + ['bounded within the min and max date range', { start: 'now-8d', end: 'now-4s' }], + ])('should return true if %s', (_, { start, end }) => { + expect(isDateRangeValid({ start, end })).toBe(true); + }); + }); + + describe('Invalid ranges', () => { + it.each([ + ['both start and end date is `now`', { start: 'now', end: 'now' }], + ['starts before the min date', { start: 'now-11d', end: 'now-5s' }], + ['ends after the max date in seconds', { start: 'now-9d', end: 'now+2s' }], + ['ends after the max date in days', { start: 'now-6d', end: 'now+6d' }], + [ + 'end date is before the start date even when both are within min and max date range', + { start: 'now-3s', end: 'now-10s' }, + ], + ])('should return false if the date range %s', (_, { start, end }) => { + expect(isDateRangeValid({ start, end })).toBe(false); + }); + }); +}); diff --git a/x-pack/platform/plugins/private/data_usage/common/utils.ts b/x-pack/platform/plugins/private/data_usage/common/utils.ts new file mode 100644 index 0000000000000..2fe683dc8310d --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/common/utils.ts @@ -0,0 +1,56 @@ +/* + * 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 dateMath from '@kbn/datemath'; + +export const DEFAULT_DATE_RANGE_OPTIONS = Object.freeze({ + autoRefreshOptions: { + enabled: false, + duration: 10000, + }, + startDate: 'now-24h/h', + endDate: 'now', + maxDate: 'now+1s', + minDate: 'now-9d', + recentlyUsedDateRanges: [], +}); + +export type ParsedDate = ReturnType<typeof momentDateParser>; +export const momentDateParser = (date: string) => dateMath.parse(date); +export const transformToUTCtime = ({ + start, + end, + isISOString = false, +}: { + start: string; + end: string; + isISOString?: boolean; +}) => { + const utcOffset = momentDateParser(start)?.utcOffset() ?? 0; + const utcStart = momentDateParser(start)?.utc().add(utcOffset, 'm'); + const utcEnd = momentDateParser(end)?.utc().add(utcOffset, 'm'); + return { + start: isISOString ? utcStart?.toISOString() : momentDateParser(start), + end: isISOString ? utcEnd?.toISOString() : momentDateParser(end), + }; +}; + +export const isDateRangeValid = ({ start, end }: { start: string; end: string }): boolean => { + const startDate = momentDateParser(start); + const endDate = momentDateParser(end); + + if (!startDate || !endDate) { + return false; + } + const minDate = momentDateParser(DEFAULT_DATE_RANGE_OPTIONS.minDate); + const maxDate = momentDateParser(DEFAULT_DATE_RANGE_OPTIONS.maxDate); + return ( + startDate.isSameOrAfter(minDate, 's') && + endDate.isSameOrBefore(maxDate, 's') && + startDate.isBefore(endDate, 's') + ); +}; diff --git a/x-pack/platform/plugins/private/data_usage/jest.config.js b/x-pack/platform/plugins/private/data_usage/jest.config.js new file mode 100644 index 0000000000000..cc8bf9953aded --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/jest.config.js @@ -0,0 +1,16 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/data_usage'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/data_usage', + coverageReporters: ['text', 'html'], + collectCoverageFrom: ['<rootDir>/x-pack/plugins/datas_usage/{common,public}/**/*.{ts,tsx}'], +}; diff --git a/x-pack/plugins/data_usage/kibana.jsonc b/x-pack/platform/plugins/private/data_usage/kibana.jsonc similarity index 100% rename from x-pack/plugins/data_usage/kibana.jsonc rename to x-pack/platform/plugins/private/data_usage/kibana.jsonc diff --git a/x-pack/plugins/data_usage/public/app/components/assets/illustration_product_no_results_magnifying_glass.svg b/x-pack/platform/plugins/private/data_usage/public/app/components/assets/illustration_product_no_results_magnifying_glass.svg similarity index 100% rename from x-pack/plugins/data_usage/public/app/components/assets/illustration_product_no_results_magnifying_glass.svg rename to x-pack/platform/plugins/private/data_usage/public/app/components/assets/illustration_product_no_results_magnifying_glass.svg diff --git a/x-pack/plugins/data_usage/public/app/components/chart_panel.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/chart_panel.tsx similarity index 97% rename from x-pack/plugins/data_usage/public/app/components/chart_panel.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/chart_panel.tsx index 208b1e576c0d7..9a7700a5de828 100644 --- a/x-pack/plugins/data_usage/public/app/components/chart_panel.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/chart_panel.tsx @@ -91,7 +91,7 @@ export const ChartPanel: React.FC<ChartPanelProps> = ({ return ( <EuiFlexItem grow={false} key={metricType}> - <EuiPanel hasShadow={false} hasBorder={true}> + <EuiPanel hasShadow={false} hasBorder={true} data-test-subj={`${metricType}-chart`}> <EuiTitle size="xs"> <h5>{chartKeyToTitleMap[metricType as ChartKey] || metricType}</h5> </EuiTitle> diff --git a/x-pack/plugins/data_usage/public/app/components/charts.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/charts.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/app/components/charts.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/charts.tsx diff --git a/x-pack/plugins/data_usage/public/app/components/charts_loading.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/charts_loading.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/app/components/charts_loading.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/charts_loading.tsx diff --git a/x-pack/plugins/data_usage/public/app/components/data_usage_metrics.test.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/data_usage_metrics.test.tsx similarity index 85% rename from x-pack/plugins/data_usage/public/app/components/data_usage_metrics.test.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/data_usage_metrics.test.tsx index befae95393e1c..90257e08ead01 100644 --- a/x-pack/plugins/data_usage/public/app/components/data_usage_metrics.test.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/data_usage_metrics.test.tsx @@ -12,6 +12,7 @@ import { DataUsageMetrics } from './data_usage_metrics'; import { useGetDataUsageMetrics } from '../../hooks/use_get_usage_metrics'; import { useGetDataUsageDataStreams } from '../../hooks/use_get_data_streams'; import { coreMock as mockCore } from '@kbn/core/public/mocks'; +import { mockUseKibana, generateDataStreams } from '../mocks'; jest.mock('../../utils/use_breadcrumbs', () => { return { @@ -60,60 +61,10 @@ jest.mock('@kbn/kibana-react-plugin/public', () => { const original = jest.requireActual('@kbn/kibana-react-plugin/public'); return { ...original, - useKibana: () => ({ - services: { - uiSettings: { - get: jest.fn().mockImplementation((key) => { - const get = (k: 'dateFormat' | 'timepicker:quickRanges') => { - const x = { - dateFormat: 'MMM D, YYYY @ HH:mm:ss.SSS', - 'timepicker:quickRanges': [ - { - from: 'now/d', - to: 'now/d', - display: 'Today', - }, - { - from: 'now/w', - to: 'now/w', - display: 'This week', - }, - { - from: 'now-15m', - to: 'now', - display: 'Last 15 minutes', - }, - { - from: 'now-30m', - to: 'now', - display: 'Last 30 minutes', - }, - { - from: 'now-1h', - to: 'now', - display: 'Last 1 hour', - }, - { - from: 'now-24h', - to: 'now', - display: 'Last 24 hours', - }, - { - from: 'now-7d', - to: 'now', - display: 'Last 7 days', - }, - ], - }; - return x[k]; - }; - return get(key); - }), - }, - }, - }), + useKibana: () => mockUseKibana, }; }); + const mockUseGetDataUsageMetrics = useGetDataUsageMetrics as jest.Mock; const mockUseGetDataUsageDataStreams = useGetDataUsageDataStreams as jest.Mock; const mockServices = mockCore.createStart(); @@ -131,13 +82,6 @@ const getBaseMockedDataUsageMetrics = () => ({ refetch: jest.fn(), }); -const generateDataStreams = (count: number) => { - return Array.from({ length: count }, (_, i) => ({ - name: `.ds-${i}`, - storageSizeBytes: 1024 ** 2 * (22 / 7), - })); -}; - describe('DataUsageMetrics', () => { let user: UserEvent; const testId = 'test'; @@ -228,14 +172,14 @@ describe('DataUsageMetrics', () => { expect(toggleFilterButton).toHaveTextContent('Data streams10'); await user.click(toggleFilterButton); const allFilterOptions = getAllByTestId('dataStreams-filter-option'); - // deselect 9 options - for (let i = 0; i < allFilterOptions.length; i++) { + // deselect 3 options + for (let i = 0; i < 3; i++) { await user.click(allFilterOptions[i]); } - expect(toggleFilterButton).toHaveTextContent('Data streams1'); + expect(toggleFilterButton).toHaveTextContent('Data streams7'); expect(within(toggleFilterButton).getByRole('marquee').getAttribute('aria-label')).toEqual( - '1 active filters' + '7 active filters' ); }); diff --git a/x-pack/plugins/data_usage/public/app/components/data_usage_metrics.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/data_usage_metrics.tsx similarity index 91% rename from x-pack/plugins/data_usage/public/app/components/data_usage_metrics.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/data_usage_metrics.tsx index efaa779dfe3c9..35ff42decef0e 100644 --- a/x-pack/plugins/data_usage/public/app/components/data_usage_metrics.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/data_usage_metrics.tsx @@ -17,13 +17,9 @@ import { PLUGIN_NAME } from '../../translations'; import { useGetDataUsageMetrics } from '../../hooks/use_get_usage_metrics'; import { useGetDataUsageDataStreams } from '../../hooks/use_get_data_streams'; import { useDataUsageMetricsUrlParams } from '../hooks/use_charts_url_params'; -import { - DEFAULT_DATE_RANGE_OPTIONS, - transformToUTCtime, - isDateRangeValid, -} from '../../../common/utils'; +import { DEFAULT_DATE_RANGE_OPTIONS, transformToUTCtime } from '../../../common/utils'; import { useDateRangePicker } from '../hooks/use_date_picker'; -import { ChartFilters, ChartFiltersProps } from './filters/charts_filters'; +import { ChartsFilters, ChartsFiltersProps } from './filters/charts_filters'; import { ChartsLoading } from './charts_loading'; import { NoDataCallout } from './no_data_callout'; import { useTestIdGenerator } from '../../hooks/use_test_id_generator'; @@ -80,7 +76,7 @@ export const DataUsageMetrics = memo( if (!metricTypesFromUrl && isFirstPageLoad) { setUrlMetricTypesFilter(metricsFilters.metricTypes.join(',')); } - if (!dataStreamsFromUrl && dataStreams && isFirstPageLoad) { + if (!dataStreamsFromUrl && !!dataStreams && dataStreams.length > 0 && isFirstPageLoad) { const hasMoreThan50 = dataStreams.length > 50; const _dataStreams = hasMoreThan50 ? dataStreams.slice(0, 50) : dataStreams; setUrlDataStreamsFilter(_dataStreams.map((ds) => ds.name).join(',')); @@ -114,16 +110,8 @@ export const DataUsageMetrics = memo( })); }, [metricTypesFromUrl, dataStreamsFromUrl, startDateFromUrl, endDateFromUrl]); - const { dateRangePickerState, onRefreshChange, onTimeChange } = useDateRangePicker(); - - const isValidDateRange = useMemo( - () => - isDateRangeValid({ - start: dateRangePickerState.startDate, - end: dateRangePickerState.endDate, - }), - [dateRangePickerState.endDate, dateRangePickerState.startDate] - ); + const { dateRangePickerState, isValidDateRange, onRefreshChange, onTimeChange } = + useDateRangePicker(); const enableFetchUsageMetricsData = useMemo( () => @@ -187,8 +175,10 @@ export const DataUsageMetrics = memo( [setMetricsFilters] ); - const filterOptions: ChartFiltersProps['filterOptions'] = useMemo(() => { - const dataStreamsOptions = dataStreams?.reduce<Record<string, number>>((acc, ds) => { + const filterOptions: ChartsFiltersProps['filterOptions'] = useMemo(() => { + const dataStreamsOptions = dataStreams?.reduce< + Required<ChartsFiltersProps['filterOptions']['dataStreams']>['appendOptions'] + >((acc, ds) => { acc[ds.name] = ds.storageSizeBytes; return acc; }, {}); @@ -239,10 +229,11 @@ export const DataUsageMetrics = memo( return ( <EuiFlexGroup alignItems="flexStart" direction="column" data-test-subj={getTestId()}> <FlexItemWithCss> - <ChartFilters + <ChartsFilters dateRangePickerState={dateRangePickerState} isDataLoading={isFetchingDataStreams} isUpdateDisabled={!enableFetchUsageMetricsData} + isValidDateRange={isValidDateRange} onClick={refetchDataUsageMetrics} onRefresh={onRefresh} onRefreshChange={onRefreshChange} diff --git a/x-pack/plugins/data_usage/public/app/components/dataset_quality_link.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/dataset_quality_link.tsx similarity index 90% rename from x-pack/plugins/data_usage/public/app/components/dataset_quality_link.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/dataset_quality_link.tsx index 8e81e6091156b..3b481565ae27c 100644 --- a/x-pack/plugins/data_usage/public/app/components/dataset_quality_link.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/dataset_quality_link.tsx @@ -41,7 +41,11 @@ export const DatasetQualityLink: React.FC<DatasetQualityLinkProps> = React.memo( } }; return ( - <LegendActionItem label={UX_LABELS.dataQualityPopup.view} onClick={onClickDataQuality} /> + <LegendActionItem + label={UX_LABELS.dataQualityPopup.view} + onClick={onClickDataQuality} + dataTestSubj="DatasetQualityAction" + /> ); } ); diff --git a/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter.test.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter.test.tsx new file mode 100644 index 0000000000000..4987654235d4e --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter.test.tsx @@ -0,0 +1,124 @@ +/* + * 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 { TestProvider } from '../../../../common/test_utils'; +import { render, type RenderResult } from '@testing-library/react'; +import userEvent, { type UserEvent } from '@testing-library/user-event'; +import { ChartsFilter, type ChartsFilterProps } from './charts_filter'; +import { FilterName } from '../../hooks'; +import { mockUseKibana, generateDataStreams } from '../../mocks'; + +const mockUseLocation = jest.fn(() => ({ pathname: '/' })); +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useLocation: () => mockUseLocation(), + useHistory: jest.fn().mockReturnValue({ + push: jest.fn(), + listen: jest.fn(), + location: { + search: '', + }, + }), +})); + +jest.mock('@kbn/kibana-react-plugin/public', () => { + const original = jest.requireActual('@kbn/kibana-react-plugin/public'); + return { + ...original, + useKibana: () => mockUseKibana, + }; +}); + +describe('Charts Filters', () => { + let user: UserEvent; + const testId = 'test'; + const testIdFilter = `${testId}-filter`; + + const defaultProps = { + filterOptions: { + filterName: 'dataStreams' as FilterName, + isFilterLoading: false, + appendOptions: {}, + selectedOptions: [], + options: generateDataStreams(8).map((ds) => ds.name), + onChangeFilterOptions: jest.fn(), + }, + }; + + let renderComponent: (props: ChartsFilterProps) => RenderResult; + + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(() => { + jest.clearAllMocks(); + renderComponent = (props: ChartsFilterProps) => + render( + <TestProvider> + <ChartsFilter data-test-subj={testIdFilter} {...props} /> + </TestProvider> + ); + user = userEvent.setup({ advanceTimers: jest.advanceTimersByTime, pointerEventsCheck: 0 }); + }); + + it('renders data streams filter with all options selected', async () => { + const { getByTestId, getAllByTestId } = renderComponent(defaultProps); + expect(getByTestId(`${testIdFilter}-dataStreams-popoverButton`)).toBeTruthy(); + + const filterButton = getByTestId(`${testIdFilter}-dataStreams-popoverButton`); + expect(filterButton).toBeTruthy(); + await user.click(filterButton); + const allFilterOptions = getAllByTestId('dataStreams-filter-option'); + + // checked options + const checkedOptions = allFilterOptions.filter( + (option) => option.getAttribute('aria-checked') === 'true' + ); + expect(checkedOptions).toHaveLength(8); + }); + + it('renders data streams filter with 50 options selected when more than 50 items in the filter', async () => { + const { getByTestId } = renderComponent({ + ...defaultProps, + filterOptions: { + ...defaultProps.filterOptions, + options: generateDataStreams(55).map((ds) => ds.name), + }, + }); + expect(getByTestId(`${testIdFilter}-dataStreams-popoverButton`)).toBeTruthy(); + + const toggleFilterButton = getByTestId(`${testIdFilter}-dataStreams-popoverButton`); + expect(toggleFilterButton).toBeTruthy(); + expect(toggleFilterButton).toHaveTextContent('Data streams50'); + expect( + toggleFilterButton.querySelector('.euiNotificationBadge')?.getAttribute('aria-label') + ).toBe('50 active filters'); + }); + + it('renders data streams filter with no options selected and select all is disabled', async () => { + const { getByTestId, queryByTestId } = renderComponent({ + ...defaultProps, + filterOptions: { + ...defaultProps.filterOptions, + options: [], + }, + }); + expect(getByTestId(`${testIdFilter}-dataStreams-popoverButton`)).toBeTruthy(); + + const filterButton = getByTestId(`${testIdFilter}-dataStreams-popoverButton`); + expect(filterButton).toBeTruthy(); + await user.click(filterButton); + expect(queryByTestId('dataStreams-filter-option')).toBeFalsy(); + expect(getByTestId('dataStreams-group-label')).toBeTruthy(); + expect(getByTestId(`${testIdFilter}-dataStreams-selectAllButton`)).toBeDisabled(); + }); +}); diff --git a/x-pack/plugins/data_usage/public/app/components/filters/charts_filter.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter.tsx similarity index 90% rename from x-pack/plugins/data_usage/public/app/components/filters/charts_filter.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter.tsx index 2e60561f3ed29..e041b262a7f44 100644 --- a/x-pack/plugins/data_usage/public/app/components/filters/charts_filter.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter.tsx @@ -81,6 +81,11 @@ export const ChartsFilter = memo<ChartsFilterProps>( }, }); + const isSelectAllDisabled = useMemo( + () => options.length === 0 || (hasActiveFilters && numFilters === 0), + [hasActiveFilters, numFilters, options.length] + ); + const addHeightToPopover = useMemo( () => isDataStreamsFilter && numFilters + numActiveFilters > 15, [isDataStreamsFilter, numFilters, numActiveFilters] @@ -107,7 +112,12 @@ export const ChartsFilter = memo<ChartsFilterProps>( const sortedDataStreamsFilterOptions = useMemo(() => { if (shouldPinSelectedDataStreams() || areDataStreamsSelectedOnMount) { // pin checked items to the top - return orderBy('checked', 'asc', items); + const sorted = orderBy( + 'checked', + 'asc', + items.filter((item) => !item.isGroupLabel) + ); + return [...items.filter((item) => item.isGroupLabel), ...sorted]; } // return options as are for other filters return items; @@ -155,14 +165,25 @@ export const ChartsFilter = memo<ChartsFilterProps>( ); const onSelectAll = useCallback(() => { - const allItems: FilterItems = items.map((item) => { - return { - ...item, - checked: 'on', - }; - }); + const allItems: FilterItems = items.reduce<FilterItems>((acc, item) => { + if (!item.isGroupLabel) { + acc.push({ + ...item, + checked: 'on', + }); + } else { + acc.push(item); + } + return acc; + }, []); + setItems(allItems); - const optionsToSelect = allItems.map((i) => i.label); + const optionsToSelect = allItems.reduce<string[]>((acc, i) => { + if (i.checked) { + acc.push(i.label); + } + return acc; + }, []); onChangeFilterOptions(optionsToSelect); if (isDataStreamsFilter) { @@ -260,7 +281,7 @@ export const ChartsFilter = memo<ChartsFilterProps>( data-test-subj={getTestId(`${filterName}-selectAllButton`)} icon="check" label={UX_LABELS.filterSelectAll} - isDisabled={hasActiveFilters && numFilters === 0} + isDisabled={isSelectAllDisabled} onClick={onSelectAll} /> </EuiFlexItem> diff --git a/x-pack/plugins/data_usage/public/app/components/filters/charts_filter_popover.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter_popover.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/app/components/filters/charts_filter_popover.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filter_popover.tsx diff --git a/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filters.test.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filters.test.tsx new file mode 100644 index 0000000000000..d4196abeaa268 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filters.test.tsx @@ -0,0 +1,180 @@ +/* + * 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 { TestProvider } from '../../../../common/test_utils'; +import { render, type RenderResult } from '@testing-library/react'; +import userEvent, { type UserEvent } from '@testing-library/user-event'; +import { ChartsFilters, type ChartsFiltersProps } from './charts_filters'; +import { FilterName } from '../../hooks'; +import { mockUseKibana } from '../../mocks'; +import { + METRIC_TYPE_VALUES, + METRIC_TYPE_UI_OPTIONS_VALUES_TO_API_MAP, +} from '../../../../common/rest_types/usage_metrics'; + +const mockUseLocation = jest.fn(() => ({ pathname: '/' })); +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useLocation: () => mockUseLocation(), + useHistory: jest.fn().mockReturnValue({ + push: jest.fn(), + listen: jest.fn(), + location: { + search: '', + }, + }), +})); + +jest.mock('@kbn/kibana-react-plugin/public', () => { + const original = jest.requireActual('@kbn/kibana-react-plugin/public'); + return { + ...original, + useKibana: () => mockUseKibana, + }; +}); + +describe('Charts Filters', () => { + let user: UserEvent; + const testId = 'test'; + const testIdFilter = `${testId}-filter`; + const onClick = jest.fn(); + const dateRangePickerState = { + startDate: 'now-15m', + endDate: 'now', + recentlyUsedDateRanges: [], + autoRefreshOptions: { + enabled: false, + duration: 0, + }, + }; + const defaultProps = { + dateRangePickerState, + isDataLoading: false, + isUpdateDisabled: false, + isValidDateRange: true, + filterOptions: { + dataStreams: { + filterName: 'dataStreams' as FilterName, + isFilterLoading: false, + options: ['.ds-1', '.ds-2'], + onChangeFilterOptions: jest.fn(), + }, + metricTypes: { + filterName: 'metricTypes' as FilterName, + isFilterLoading: false, + options: METRIC_TYPE_VALUES.slice(), + onChangeFilterOptions: jest.fn(), + }, + }, + onClick, + onRefresh: jest.fn(), + onRefreshChange: jest.fn(), + onTimeChange: jest.fn(), + }; + + let renderComponent: (props: ChartsFiltersProps) => RenderResult; + + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(() => { + jest.clearAllMocks(); + renderComponent = (props: ChartsFiltersProps) => + render( + <TestProvider> + <ChartsFilters data-test-subj={testIdFilter} {...props} /> + </TestProvider> + ); + user = userEvent.setup({ advanceTimers: jest.advanceTimersByTime, pointerEventsCheck: 0 }); + }); + + it('renders data streams filter, date range filter and refresh button', () => { + const { getByTestId } = renderComponent(defaultProps); + expect(getByTestId(`${testIdFilter}-dataStreams-popoverButton`)).toBeTruthy(); + expect(getByTestId(`${testIdFilter}-date-range`)).toBeTruthy(); + expect(getByTestId(`${testIdFilter}-super-refresh-button`)).toBeTruthy(); + }); + + it('renders metric filter', () => { + const { getByTestId } = renderComponent({ ...defaultProps, showMetricsTypesFilter: true }); + expect(getByTestId(`${testIdFilter}-metricTypes-popoverButton`)).toBeTruthy(); + expect(getByTestId(`${testIdFilter}-dataStreams-popoverButton`)).toBeTruthy(); + expect(getByTestId(`${testIdFilter}-date-range`)).toBeTruthy(); + expect(getByTestId(`${testIdFilter}-super-refresh-button`)).toBeTruthy(); + }); + + it('has default metrics selected if showing metrics filter', async () => { + const { getByTestId, getAllByTestId } = renderComponent({ + ...defaultProps, + showMetricsTypesFilter: true, + }); + const metricsFilterButton = getByTestId(`${testIdFilter}-metricTypes-popoverButton`); + expect(metricsFilterButton).toBeTruthy(); + await user.click(metricsFilterButton); + const allFilterOptions = getAllByTestId('metricTypes-filter-option'); + + // checked options + const checkedOptions = allFilterOptions.filter( + (option) => option.getAttribute('aria-checked') === 'true' + ); + expect(checkedOptions).toHaveLength(2); + expect(checkedOptions.map((option) => option.title)).toEqual( + Object.keys(METRIC_TYPE_UI_OPTIONS_VALUES_TO_API_MAP).slice(0, 2) + ); + + // unchecked options + const unCheckedOptions = allFilterOptions.filter( + (option) => option.getAttribute('aria-checked') === 'false' + ); + expect(unCheckedOptions).toHaveLength(7); + expect(unCheckedOptions.map((option) => option.title)).toEqual( + Object.keys(METRIC_TYPE_UI_OPTIONS_VALUES_TO_API_MAP).slice(2) + ); + }); + + it('should show invalid date range info', () => { + const { getByTestId } = renderComponent({ + ...defaultProps, + // using this prop to set invalid date range + isValidDateRange: false, + }); + expect(getByTestId(`${testIdFilter}-invalid-date-range`)).toBeTruthy(); + }); + + it('should not show invalid date range info', () => { + const { queryByTestId } = renderComponent(defaultProps); + expect(queryByTestId(`${testIdFilter}-invalid-date-range`)).toBeNull(); + }); + + it('should disable refresh button', () => { + const { getByTestId } = renderComponent({ + ...defaultProps, + isUpdateDisabled: true, + }); + expect(getByTestId(`${testIdFilter}-super-refresh-button`)).toBeDisabled(); + }); + + it('should show `updating` on refresh button', () => { + const { getByTestId } = renderComponent({ + ...defaultProps, + isDataLoading: true, + }); + expect(getByTestId(`${testIdFilter}-super-refresh-button`)).toBeDisabled(); + expect(getByTestId(`${testIdFilter}-super-refresh-button`).textContent).toEqual('Updating'); + }); + + it('should call onClick on refresh button click', () => { + const { getByTestId } = renderComponent(defaultProps); + getByTestId(`${testIdFilter}-super-refresh-button`).click(); + expect(onClick).toHaveBeenCalled(); + }); +}); diff --git a/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filters.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filters.tsx new file mode 100644 index 0000000000000..8b8b3f864cd7d --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/charts_filters.tsx @@ -0,0 +1,101 @@ +/* + * 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, { memo, useCallback, useMemo } from 'react'; +import { + EuiFilterGroup, + EuiFlexGroup, + EuiFlexItem, + EuiSuperUpdateButton, + EuiText, + EuiTextAlign, +} from '@elastic/eui'; + +import { UX_LABELS } from '../../../translations'; +import { useTestIdGenerator } from '../../../hooks/use_test_id_generator'; +import { useGetDataUsageMetrics } from '../../../hooks/use_get_usage_metrics'; +import { type UsageMetricsDateRangePickerProps, UsageMetricsDateRangePicker } from './date_picker'; +import { ChartsFilter, ChartsFilterProps } from './charts_filter'; +import { FilterName } from '../../hooks'; + +export interface ChartsFiltersProps extends UsageMetricsDateRangePickerProps { + isUpdateDisabled: boolean; + isValidDateRange: boolean; + filterOptions: Record<FilterName, ChartsFilterProps['filterOptions']>; + onClick: ReturnType<typeof useGetDataUsageMetrics>['refetch']; + showMetricsTypesFilter?: boolean; +} + +export const ChartsFilters = memo<ChartsFiltersProps>( + ({ + dateRangePickerState, + isDataLoading, + isUpdateDisabled, + isValidDateRange, + filterOptions, + onClick, + onRefresh, + onRefreshChange, + onTimeChange, + showMetricsTypesFilter = false, + 'data-test-subj': dataTestSubj, + }) => { + const getTestId = useTestIdGenerator(dataTestSubj); + + const filters = useMemo(() => { + return ( + <> + {showMetricsTypesFilter && ( + <ChartsFilter filterOptions={filterOptions.metricTypes} data-test-subj={dataTestSubj} /> + )} + {!filterOptions.dataStreams.isFilterLoading && ( + <ChartsFilter filterOptions={filterOptions.dataStreams} data-test-subj={dataTestSubj} /> + )} + </> + ); + }, [dataTestSubj, filterOptions, showMetricsTypesFilter]); + + const onClickRefreshButton = useCallback(() => onClick(), [onClick]); + + return ( + <EuiFlexGroup responsive gutterSize="m" justifyContent="flexStart"> + <EuiFlexItem grow={1}> + <EuiFilterGroup>{filters}</EuiFilterGroup> + </EuiFlexItem> + <EuiFlexItem grow={1}> + <UsageMetricsDateRangePicker + dateRangePickerState={dateRangePickerState} + isDataLoading={isDataLoading} + onRefresh={onRefresh} + onRefreshChange={onRefreshChange} + onTimeChange={onTimeChange} + data-test-subj={dataTestSubj} + /> + {!isValidDateRange && ( + <EuiText color="danger" size="s" data-test-subj={getTestId('invalid-date-range')}> + <EuiTextAlign textAlign="center"> + <p>{UX_LABELS.filters.invalidDateRange}</p> + </EuiTextAlign> + </EuiText> + )} + </EuiFlexItem> + <EuiFlexItem grow={false}> + <EuiSuperUpdateButton + data-test-subj={getTestId('super-refresh-button')} + fill={false} + isLoading={isDataLoading} + isDisabled={isUpdateDisabled} + onClick={onClickRefreshButton} + /> + </EuiFlexItem> + <EuiFlexItem grow={2} /> + </EuiFlexGroup> + ); + } +); + +ChartsFilters.displayName = 'ChartsFilters'; diff --git a/x-pack/plugins/data_usage/public/app/components/filters/date_picker.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/date_picker.tsx similarity index 98% rename from x-pack/plugins/data_usage/public/app/components/filters/date_picker.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/filters/date_picker.tsx index 1b04587b4245d..10fbb2ab399ce 100644 --- a/x-pack/plugins/data_usage/public/app/components/filters/date_picker.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/date_picker.tsx @@ -28,7 +28,7 @@ export interface DateRangePickerValues { recentlyUsedDateRanges: EuiSuperDatePickerRecentRange[]; } -interface UsageMetricsDateRangePickerProps { +export interface UsageMetricsDateRangePickerProps { dateRangePickerState: DateRangePickerValues; isDataLoading: boolean; onRefresh: () => void; diff --git a/x-pack/plugins/data_usage/public/app/components/filters/toggle_all_button.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/toggle_all_button.tsx similarity index 95% rename from x-pack/plugins/data_usage/public/app/components/filters/toggle_all_button.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/filters/toggle_all_button.tsx index 3d1c4080fcc9c..e6d4f6cd3c721 100644 --- a/x-pack/plugins/data_usage/public/app/components/filters/toggle_all_button.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/filters/toggle_all_button.tsx @@ -26,7 +26,6 @@ interface ToggleAllButtonProps { export const ToggleAllButton = memo<ToggleAllButtonProps>( ({ color, 'data-test-subj': dataTestSubj, icon, isDisabled, label, onClick }) => { - // const getTestId = useTestIdGenerator(dataTestSubj); return ( <EuiButtonEmpty color={color} diff --git a/x-pack/plugins/data_usage/public/app/components/legend_action.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/legend_action.tsx similarity index 93% rename from x-pack/plugins/data_usage/public/app/components/legend_action.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/legend_action.tsx index b748b77163245..1282bd43e863a 100644 --- a/x-pack/plugins/data_usage/public/app/components/legend_action.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/legend_action.tsx @@ -52,6 +52,7 @@ export const LegendAction: React.FC<LegendActionProps> = React.memo( return ( <EuiFlexGroup gutterSize="s" alignItems="center"> <EuiPopover + data-test-subj="legendActionPopover" button={ <EuiFlexGroup gutterSize="s" alignItems="center"> <EuiFlexItem grow={false}> @@ -59,6 +60,7 @@ export const LegendAction: React.FC<LegendActionProps> = React.memo( iconType="boxesHorizontal" aria-label={UX_LABELS.dataQualityPopup.open} onClick={() => togglePopover(uniqueStreamName)} + data-test-subj="legendActionButton" /> </EuiFlexItem> </EuiFlexGroup> @@ -71,11 +73,13 @@ export const LegendAction: React.FC<LegendActionProps> = React.memo( <LegendActionItem label={UX_LABELS.dataQualityPopup.copy} onClick={onCopyDataStreamName} + dataTestSubj="copyDataStreamNameAction" /> {hasIndexManagementFeature && ( <LegendActionItem label={UX_LABELS.dataQualityPopup.manage} onClick={onClickIndexManagement} + dataTestSubj="manageDataStreamAction" /> )} {hasDataSetQualityFeature && <DatasetQualityLink dataStreamName={label} />} diff --git a/x-pack/platform/plugins/private/data_usage/public/app/components/legend_action_item.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/legend_action_item.tsx new file mode 100644 index 0000000000000..542fff6902fb9 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/legend_action_item.tsx @@ -0,0 +1,23 @@ +/* + * 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, { memo } from 'react'; +import { EuiListGroupItem } from '@elastic/eui'; + +export const LegendActionItem = memo( + ({ + label, + onClick, + dataTestSubj, + }: { + label: string; + onClick: () => Promise<void> | void; + dataTestSubj: string; + }) => <EuiListGroupItem label={label} onClick={onClick} data-test-subj={dataTestSubj} size="s" /> +); + +LegendActionItem.displayName = 'LegendActionItem'; diff --git a/x-pack/plugins/data_usage/public/app/components/no_data_callout.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/no_data_callout.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/app/components/no_data_callout.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/components/no_data_callout.tsx diff --git a/x-pack/platform/plugins/private/data_usage/public/app/components/page.test.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/page.test.tsx new file mode 100644 index 0000000000000..debed5b12dde6 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/page.test.tsx @@ -0,0 +1,50 @@ +/* + * 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 { TestProvider } from '../../../common/test_utils'; +import { render, type RenderResult } from '@testing-library/react'; +import { DataUsagePage, type DataUsagePageProps } from './page'; + +describe('Page Component', () => { + const testId = 'test'; + let renderComponent: (props: DataUsagePageProps) => RenderResult; + + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(() => { + jest.clearAllMocks(); + renderComponent = (props: DataUsagePageProps) => + render( + <TestProvider> + <DataUsagePage data-test-subj={testId} {...props} /> + </TestProvider> + ); + }); + + it('renders', () => { + const { getByTestId } = renderComponent({ title: 'test' }); + expect(getByTestId(`${testId}-header`)).toBeTruthy(); + }); + + it('should show page title', () => { + const { getByTestId } = renderComponent({ title: 'test header' }); + expect(getByTestId(`${testId}-title`)).toBeTruthy(); + expect(getByTestId(`${testId}-title`)).toHaveTextContent('test header'); + }); + + it('should show page description', () => { + const { getByTestId } = renderComponent({ title: 'test', subtitle: 'test description' }); + expect(getByTestId(`${testId}-description`)).toBeTruthy(); + expect(getByTestId(`${testId}-description`)).toHaveTextContent('test description'); + }); +}); diff --git a/x-pack/platform/plugins/private/data_usage/public/app/components/page.tsx b/x-pack/platform/plugins/private/data_usage/public/app/components/page.tsx new file mode 100644 index 0000000000000..0a8f363b0a25f --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/components/page.tsx @@ -0,0 +1,81 @@ +/* + * 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 { PropsWithChildren } from 'react'; +import React, { memo, useMemo } from 'react'; +import type { CommonProps } from '@elastic/eui'; +import { + EuiPageHeader, + EuiPageSection, + EuiFlexGroup, + EuiFlexItem, + EuiTitle, + EuiSpacer, +} from '@elastic/eui'; +import { useTestIdGenerator } from '../../hooks/use_test_id_generator'; + +export interface DataUsagePageProps { + title: React.ReactNode; + subtitle?: React.ReactNode; + actions?: React.ReactNode; + restrictWidth?: boolean | number; + hasBottomBorder?: boolean; + hideHeader?: boolean; + 'data-test-subj'?: string; +} + +export const DataUsagePage = memo<PropsWithChildren<DataUsagePageProps & CommonProps>>( + ({ + title, + subtitle, + children, + restrictWidth = false, + hasBottomBorder = true, + 'data-test-subj': dataTestSubj, + ...otherProps + }) => { + const getTestId = useTestIdGenerator(dataTestSubj); + + const header = useMemo(() => { + return ( + <EuiFlexGroup direction="column" gutterSize="none" alignItems="flexStart"> + <EuiFlexItem grow={false}> + <EuiTitle size="l"> + <span data-test-subj={getTestId(`title`)}>{title}</span> + </EuiTitle> + </EuiFlexItem> + </EuiFlexGroup> + ); + }, [getTestId, title]); + + const description = useMemo(() => { + return subtitle ? ( + <span data-test-subj={getTestId(`description`)}>{subtitle}</span> + ) : undefined; + }, [getTestId, subtitle]); + + return ( + <div {...otherProps} data-test-subj={dataTestSubj}> + <> + <EuiPageHeader + pageTitle={header} + description={description} + bottomBorder={hasBottomBorder} + restrictWidth={restrictWidth} + data-test-subj={getTestId('header')} + /> + <EuiSpacer size="l" /> + </> + <EuiPageSection paddingSize="none" color="transparent" restrictWidth={restrictWidth}> + {children} + </EuiPageSection> + </div> + ); + } +); + +DataUsagePage.displayName = 'DataUsagePage'; diff --git a/x-pack/platform/plugins/private/data_usage/public/app/data_usage_metrics_page.test.tsx b/x-pack/platform/plugins/private/data_usage/public/app/data_usage_metrics_page.test.tsx new file mode 100644 index 0000000000000..18f49d8042e71 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/data_usage_metrics_page.test.tsx @@ -0,0 +1,111 @@ +/* + * 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 { TestProvider } from '../../common/test_utils'; +import { render, type RenderResult } from '@testing-library/react'; +import { DataUsageMetricsPage } from './data_usage_metrics_page'; +import { coreMock as mockCore } from '@kbn/core/public/mocks'; +import { useGetDataUsageMetrics } from '../hooks/use_get_usage_metrics'; +import { useGetDataUsageDataStreams } from '../hooks/use_get_data_streams'; +import { mockUseKibana } from './mocks'; + +jest.mock('../hooks/use_get_usage_metrics'); +jest.mock('../hooks/use_get_data_streams'); +const mockServices = mockCore.createStart(); +jest.mock('../utils/use_breadcrumbs', () => { + return { + useBreadcrumbs: jest.fn(), + }; +}); +jest.mock('../utils/use_kibana', () => { + return { + useKibanaContextForPlugin: () => ({ + services: mockServices, + }), + }; +}); + +const mockUseLocation = jest.fn(() => ({ pathname: '/' })); +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useLocation: () => mockUseLocation(), + useHistory: jest.fn().mockReturnValue({ + push: jest.fn(), + listen: jest.fn(), + location: { + search: '', + }, + }), +})); + +jest.mock('@kbn/kibana-react-plugin/public', () => { + const original = jest.requireActual('@kbn/kibana-react-plugin/public'); + return { + ...original, + useKibana: () => mockUseKibana, + }; +}); + +const mockUseGetDataUsageMetrics = useGetDataUsageMetrics as jest.Mock; +const mockUseGetDataUsageDataStreams = useGetDataUsageDataStreams as jest.Mock; + +const getBaseMockedDataStreams = () => ({ + error: undefined, + data: undefined, + isFetching: false, + refetch: jest.fn(), +}); +const getBaseMockedDataUsageMetrics = () => ({ + error: undefined, + data: undefined, + isFetching: false, + refetch: jest.fn(), +}); + +describe('DataUsageMetrics Page', () => { + const testId = 'test'; + let renderComponent: () => RenderResult; + + beforeAll(() => { + jest.useFakeTimers(); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(() => { + jest.clearAllMocks(); + renderComponent = () => + render( + <TestProvider> + <DataUsageMetricsPage data-test-subj={testId} /> + </TestProvider> + ); + mockUseGetDataUsageMetrics.mockReturnValue(getBaseMockedDataUsageMetrics); + mockUseGetDataUsageDataStreams.mockReturnValue(getBaseMockedDataStreams); + }); + + it('renders', () => { + const { getByTestId } = renderComponent(); + expect(getByTestId(`${testId}-page-header`)).toBeTruthy(); + }); + + it('should show page title', () => { + const { getByTestId } = renderComponent(); + expect(getByTestId(`${testId}-page-title`)).toBeTruthy(); + expect(getByTestId(`${testId}-page-title`)).toHaveTextContent('Data Usage'); + }); + + it('should show page description', () => { + const { getByTestId } = renderComponent(); + expect(getByTestId(`${testId}-page-description`)).toBeTruthy(); + expect(getByTestId(`${testId}-page-description`)).toHaveTextContent( + 'Monitor data ingested and retained by data streams over the past 10 days.' + ); + }); +}); diff --git a/x-pack/platform/plugins/private/data_usage/public/app/data_usage_metrics_page.tsx b/x-pack/platform/plugins/private/data_usage/public/app/data_usage_metrics_page.tsx new file mode 100644 index 0000000000000..7edc2b57e360c --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/data_usage_metrics_page.tsx @@ -0,0 +1,33 @@ +/* + * 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, { memo } from 'react'; +import { DataUsagePage } from './components/page'; +import { DATA_USAGE_PAGE } from '../translations'; +import { DataUsageMetrics } from './components/data_usage_metrics'; +import { useTestIdGenerator } from '../hooks/use_test_id_generator'; + +export interface DataUsageMetricsPageProps { + 'data-test-subj'?: string; +} +export const DataUsageMetricsPage = memo<DataUsageMetricsPageProps>( + ({ 'data-test-subj': dataTestSubj = 'data-usage' }) => { + const getTestId = useTestIdGenerator(dataTestSubj); + + return ( + <DataUsagePage + data-test-subj={getTestId('page')} + title={DATA_USAGE_PAGE.title} + subtitle={DATA_USAGE_PAGE.subTitle} + > + <DataUsageMetrics data-test-subj={getTestId('metrics')} /> + </DataUsagePage> + ); + } +); + +DataUsageMetricsPage.displayName = 'DataUsageMetricsPage'; diff --git a/x-pack/plugins/data_usage/public/app/hooks/index.tsx b/x-pack/platform/plugins/private/data_usage/public/app/hooks/index.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/app/hooks/index.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/hooks/index.tsx diff --git a/x-pack/platform/plugins/private/data_usage/public/app/hooks/use_charts_filter.tsx b/x-pack/platform/plugins/private/data_usage/public/app/hooks/use_charts_filter.tsx new file mode 100644 index 0000000000000..429ffab06637a --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/hooks/use_charts_filter.tsx @@ -0,0 +1,164 @@ +/* + * 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, { useState, useEffect, useMemo } from 'react'; +import { EuiIconTip } from '@elastic/eui'; +import { DEFAULT_SELECTED_OPTIONS } from '../../../common'; +import { + METRIC_TYPE_VALUES, + METRIC_TYPE_API_VALUES_TO_UI_OPTIONS_MAP, + isDefaultMetricType, +} from '../../../common/rest_types'; +import { FILTER_NAMES, UX_LABELS } from '../../translations'; +import { useDataUsageMetricsUrlParams } from './use_charts_url_params'; +import { formatBytes } from '../../utils/format_bytes'; +import { ChartsFilterProps } from '../components/filters/charts_filter'; + +export type FilterName = keyof typeof FILTER_NAMES; + +export type FilterItems = Array<{ + key?: string; + label: string; + isGroupLabel?: boolean; + checked?: 'on' | undefined; + 'data-test-subj'?: string; +}>; + +export const useChartsFilter = ({ + filterOptions, +}: { + filterOptions: ChartsFilterProps['filterOptions']; +}): { + areDataStreamsSelectedOnMount: boolean; + items: FilterItems; + setItems: React.Dispatch<React.SetStateAction<FilterItems>>; + hasActiveFilters: boolean; + numActiveFilters: number; + numFilters: number; + setAreDataStreamsSelectedOnMount: (value: React.SetStateAction<boolean>) => void; + setUrlDataStreamsFilter: ReturnType< + typeof useDataUsageMetricsUrlParams + >['setUrlDataStreamsFilter']; + setUrlMetricTypesFilter: ReturnType< + typeof useDataUsageMetricsUrlParams + >['setUrlMetricTypesFilter']; +} => { + const { + dataStreams: selectedDataStreamsFromUrl, + metricTypes: selectedMetricTypesFromUrl, + setUrlMetricTypesFilter, + setUrlDataStreamsFilter, + } = useDataUsageMetricsUrlParams(); + const isMetricTypesFilter = filterOptions.filterName === 'metricTypes'; + const isDataStreamsFilter = filterOptions.filterName === 'dataStreams'; + + // track the state of selected data streams via URL + // when the page is loaded via selected data streams on URL + const [areDataStreamsSelectedOnMount, setAreDataStreamsSelectedOnMount] = + useState<boolean>(false); + + useEffect(() => { + if (selectedDataStreamsFromUrl && selectedDataStreamsFromUrl.length > 0) { + setAreDataStreamsSelectedOnMount(true); + } + // don't sync with changes to further selectedDataStreamsFromUrl + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const initialSelectedOptions = useMemo(() => { + if (isMetricTypesFilter) { + return METRIC_TYPE_VALUES.map((metricType) => ({ + key: metricType, + label: METRIC_TYPE_API_VALUES_TO_UI_OPTIONS_MAP[metricType], + checked: selectedMetricTypesFromUrl + ? selectedMetricTypesFromUrl.includes(metricType) + ? 'on' + : undefined + : isDefaultMetricType(metricType) // default metrics are selected by default + ? 'on' + : undefined, + 'data-test-subj': `${filterOptions.filterName}-filter-option`, + })) as FilterItems; + } + let dataStreamOptions: FilterItems = []; + + if (isDataStreamsFilter && !!filterOptions.options.length) { + dataStreamOptions = filterOptions.options?.map((filterOption, i) => ({ + key: filterOption, + label: filterOption, + append: formatBytes(filterOptions.appendOptions?.[filterOption] ?? 0), + checked: selectedDataStreamsFromUrl + ? selectedDataStreamsFromUrl.includes(filterOption) + ? 'on' + : undefined + : i < DEFAULT_SELECTED_OPTIONS + ? 'on' + : undefined, + 'data-test-subj': `${filterOptions.filterName}-filter-option`, + truncationProps: { + truncation: 'start', + truncationOffset: 15, + }, + })); + } + + return [ + { + label: UX_LABELS.filters.dataStreams.label, + append: ( + <span css={{ display: 'flex', alignItems: 'flex-end', marginLeft: 'auto' }}> + {UX_LABELS.filters.dataStreams.append} + <EuiIconTip + content={UX_LABELS.filters.dataStreams.appendTooltip} + type="iInCircle" + color="subdued" + css={{ alignContent: 'flex-start', justifyContent: 'flex-start' }} + /> + </span> + ), + isGroupLabel: true, + 'data-test-subj': `${filterOptions.filterName}-group-label`, + }, + ...dataStreamOptions, + ]; + }, [ + filterOptions.appendOptions, + filterOptions.filterName, + filterOptions.options, + isDataStreamsFilter, + isMetricTypesFilter, + selectedDataStreamsFromUrl, + selectedMetricTypesFromUrl, + ]); + // filter options + const [items, setItems] = useState<FilterItems>(initialSelectedOptions); + + const hasActiveFilters = useMemo( + () => !!items.find((item) => !item.isGroupLabel && item.checked === 'on'), + [items] + ); + const numActiveFilters = useMemo( + () => items.filter((item) => !item.isGroupLabel && item.checked === 'on').length, + [items] + ); + const numFilters = useMemo( + () => items.filter((item) => item.key && item.checked !== 'on').length, + [items] + ); + + return { + areDataStreamsSelectedOnMount, + items, + setItems, + hasActiveFilters, + numActiveFilters, + numFilters, + setAreDataStreamsSelectedOnMount, + setUrlMetricTypesFilter, + setUrlDataStreamsFilter, + }; +}; diff --git a/x-pack/plugins/data_usage/public/app/hooks/use_charts_url_params.test.tsx b/x-pack/platform/plugins/private/data_usage/public/app/hooks/use_charts_url_params.test.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/app/hooks/use_charts_url_params.test.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/hooks/use_charts_url_params.test.tsx diff --git a/x-pack/plugins/data_usage/public/app/hooks/use_charts_url_params.tsx b/x-pack/platform/plugins/private/data_usage/public/app/hooks/use_charts_url_params.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/app/hooks/use_charts_url_params.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/hooks/use_charts_url_params.tsx diff --git a/x-pack/plugins/data_usage/public/app/hooks/use_date_picker.tsx b/x-pack/platform/plugins/private/data_usage/public/app/hooks/use_date_picker.tsx similarity index 85% rename from x-pack/plugins/data_usage/public/app/hooks/use_date_picker.tsx rename to x-pack/platform/plugins/private/data_usage/public/app/hooks/use_date_picker.tsx index 6b7e6f792b69b..ce5c70584946d 100644 --- a/x-pack/plugins/data_usage/public/app/hooks/use_date_picker.tsx +++ b/x-pack/platform/plugins/private/data_usage/public/app/hooks/use_date_picker.tsx @@ -5,14 +5,14 @@ * 2.0. */ -import { useCallback, useState } from 'react'; +import { useCallback, useMemo, useState } from 'react'; import type { DurationRange, OnRefreshChangeProps, } from '@elastic/eui/src/components/date_picker/types'; import { useDataUsageMetricsUrlParams } from './use_charts_url_params'; import { DateRangePickerValues } from '../components/filters/date_picker'; -import { DEFAULT_DATE_RANGE_OPTIONS } from '../../../common/utils'; +import { DEFAULT_DATE_RANGE_OPTIONS, isDateRangeValid } from '../../../common/utils'; export const useDateRangePicker = () => { const { @@ -85,5 +85,14 @@ export const useDateRangePicker = () => { ] ); - return { dateRangePickerState, onRefreshChange, onTimeChange }; + const isValidDateRange = useMemo( + () => + isDateRangeValid({ + start: dateRangePickerState.startDate, + end: dateRangePickerState.endDate, + }), + [dateRangePickerState.endDate, dateRangePickerState.startDate] + ); + + return { dateRangePickerState, isValidDateRange, onRefreshChange, onTimeChange }; }; diff --git a/x-pack/platform/plugins/private/data_usage/public/app/mocks.ts b/x-pack/platform/plugins/private/data_usage/public/app/mocks.ts new file mode 100644 index 0000000000000..eed86c4bc6dc2 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/app/mocks.ts @@ -0,0 +1,65 @@ +/* + * 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 mockUseKibana = { + services: { + uiSettings: { + get: jest.fn().mockImplementation((key) => { + const get = (k: 'dateFormat' | 'timepicker:quickRanges') => { + const x = { + dateFormat: 'MMM D, YYYY @ HH:mm:ss.SSS', + 'timepicker:quickRanges': [ + { + from: 'now/d', + to: 'now/d', + display: 'Today', + }, + { + from: 'now/w', + to: 'now/w', + display: 'This week', + }, + { + from: 'now-15m', + to: 'now', + display: 'Last 15 minutes', + }, + { + from: 'now-30m', + to: 'now', + display: 'Last 30 minutes', + }, + { + from: 'now-1h', + to: 'now', + display: 'Last 1 hour', + }, + { + from: 'now-24h', + to: 'now', + display: 'Last 24 hours', + }, + { + from: 'now-7d', + to: 'now', + display: 'Last 7 days', + }, + ], + }; + return x[k]; + }; + return get(key); + }), + }, + }, +}; + +export const generateDataStreams = (count: number) => { + return Array.from({ length: count }, (_, i) => ({ + name: `.ds-${i}`, + storageSizeBytes: 1024 ** 2 * (22 / 7), + })); +}; diff --git a/x-pack/plugins/data_usage/public/application.tsx b/x-pack/platform/plugins/private/data_usage/public/application.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/application.tsx rename to x-pack/platform/plugins/private/data_usage/public/application.tsx diff --git a/x-pack/plugins/data_usage/public/hooks/use_get_data_streams.test.tsx b/x-pack/platform/plugins/private/data_usage/public/hooks/use_get_data_streams.test.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/hooks/use_get_data_streams.test.tsx rename to x-pack/platform/plugins/private/data_usage/public/hooks/use_get_data_streams.test.tsx diff --git a/x-pack/platform/plugins/private/data_usage/public/hooks/use_get_data_streams.ts b/x-pack/platform/plugins/private/data_usage/public/hooks/use_get_data_streams.ts new file mode 100644 index 0000000000000..0dc9d7d535eb1 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/hooks/use_get_data_streams.ts @@ -0,0 +1,75 @@ +/* + * 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 { UseQueryOptions, UseQueryResult } from '@tanstack/react-query'; +import { useQuery } from '@tanstack/react-query'; +import type { IHttpFetchError } from '@kbn/core-http-browser'; +import { DataStreamsResponseBodySchemaBody } from '../../common/rest_types'; +import { DATA_USAGE_DATA_STREAMS_API_ROUTE, DEFAULT_SELECTED_OPTIONS } from '../../common'; +import { useKibanaContextForPlugin } from '../utils/use_kibana'; + +type GetDataUsageDataStreamsResponse = Array< + DataStreamsResponseBodySchemaBody[number] & { + selected: boolean; + } +>; + +export const useGetDataUsageDataStreams = ({ + selectedDataStreams, + options = { + enabled: false, + }, +}: { + selectedDataStreams?: string[]; + options?: UseQueryOptions<GetDataUsageDataStreamsResponse, IHttpFetchError>; +}): UseQueryResult<GetDataUsageDataStreamsResponse, IHttpFetchError> => { + const { http } = useKibanaContextForPlugin().services; + + return useQuery<GetDataUsageDataStreamsResponse, IHttpFetchError>({ + queryKey: ['get-data-usage-data-streams'], + ...options, + keepPreviousData: true, + queryFn: async ({ signal }) => { + return http + .get<GetDataUsageDataStreamsResponse>(DATA_USAGE_DATA_STREAMS_API_ROUTE, { + signal, + version: '1', + }) + .then((response) => { + const augmentedDataStreamsBasedOnSelectedItems = response.reduce<{ + selected: GetDataUsageDataStreamsResponse; + rest: GetDataUsageDataStreamsResponse; + }>( + (acc, ds, i) => { + const item = { + name: ds.name, + storageSizeBytes: ds.storageSizeBytes, + selected: ds.selected, + }; + + if (selectedDataStreams?.includes(ds.name) && i < DEFAULT_SELECTED_OPTIONS) { + acc.selected.push({ ...item, selected: true }); + } else { + acc.rest.push({ ...item, selected: false }); + } + + return acc; + }, + { selected: [], rest: [] } + ); + + return [ + ...augmentedDataStreamsBasedOnSelectedItems.selected, + ...augmentedDataStreamsBasedOnSelectedItems.rest, + ]; + }) + .catch((error) => { + throw error.body; + }); + }, + }); +}; diff --git a/x-pack/plugins/data_usage/public/hooks/use_get_usage_metrics.test.tsx b/x-pack/platform/plugins/private/data_usage/public/hooks/use_get_usage_metrics.test.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/hooks/use_get_usage_metrics.test.tsx rename to x-pack/platform/plugins/private/data_usage/public/hooks/use_get_usage_metrics.test.tsx diff --git a/x-pack/plugins/data_usage/public/hooks/use_get_usage_metrics.ts b/x-pack/platform/plugins/private/data_usage/public/hooks/use_get_usage_metrics.ts similarity index 100% rename from x-pack/plugins/data_usage/public/hooks/use_get_usage_metrics.ts rename to x-pack/platform/plugins/private/data_usage/public/hooks/use_get_usage_metrics.ts diff --git a/x-pack/plugins/data_usage/public/hooks/use_test_id_generator.ts b/x-pack/platform/plugins/private/data_usage/public/hooks/use_test_id_generator.ts similarity index 100% rename from x-pack/plugins/data_usage/public/hooks/use_test_id_generator.ts rename to x-pack/platform/plugins/private/data_usage/public/hooks/use_test_id_generator.ts diff --git a/x-pack/plugins/data_usage/public/hooks/use_url_params.ts b/x-pack/platform/plugins/private/data_usage/public/hooks/use_url_params.ts similarity index 100% rename from x-pack/plugins/data_usage/public/hooks/use_url_params.ts rename to x-pack/platform/plugins/private/data_usage/public/hooks/use_url_params.ts diff --git a/x-pack/plugins/data_usage/public/index.ts b/x-pack/platform/plugins/private/data_usage/public/index.ts similarity index 100% rename from x-pack/plugins/data_usage/public/index.ts rename to x-pack/platform/plugins/private/data_usage/public/index.ts diff --git a/x-pack/plugins/data_usage/public/plugin.ts b/x-pack/platform/plugins/private/data_usage/public/plugin.ts similarity index 100% rename from x-pack/plugins/data_usage/public/plugin.ts rename to x-pack/platform/plugins/private/data_usage/public/plugin.ts diff --git a/x-pack/platform/plugins/private/data_usage/public/translations.tsx b/x-pack/platform/plugins/private/data_usage/public/translations.tsx new file mode 100644 index 0000000000000..ba70f0cdc1787 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/public/translations.tsx @@ -0,0 +1,88 @@ +/* + * 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'; + +export const PLUGIN_NAME = i18n.translate('xpack.dataUsage.name', { + defaultMessage: 'Data Usage', +}); + +export const FILTER_NAMES = Object.freeze({ + metricTypes: i18n.translate('xpack.dataUsage.metrics.filter.metricTypes', { + defaultMessage: 'Metric types', + }), + dataStreams: i18n.translate('xpack.dataUsage.metrics.filter.dataStreams', { + defaultMessage: 'Data streams', + }), +}); + +export const CHART_TITLES = Object.freeze({ + ingest_rate: i18n.translate('xpack.dataUsage.charts.ingestedMax', { + defaultMessage: 'Data Ingested', + }), + storage_retained: i18n.translate('xpack.dataUsage.charts.retainedMax', { + defaultMessage: 'Data Retained in Storage', + }), +}); + +export const DATA_USAGE_PAGE = Object.freeze({ + title: i18n.translate('xpack.dataUsage.name', { + defaultMessage: 'Data Usage', + }), + subTitle: i18n.translate('xpack.dataUsage.pageSubtitle', { + defaultMessage: 'Monitor data ingested and retained by data streams over the past 10 days.', + }), +}); + +export const UX_LABELS = Object.freeze({ + filters: { + invalidDateRange: i18n.translate('xpack.dataUsage.metrics.filter.invalidDateRange', { + defaultMessage: 'The date range should be within 10 days from now.', + }), + dataStreams: { + label: i18n.translate('xpack.dataUsage.metrics.filter.dataStreams.label', { + defaultMessage: 'Name', + }), + append: i18n.translate('xpack.dataUsage.metrics.filter.dataStreams.append', { + defaultMessage: 'Size', + }), + appendTooltip: i18n.translate('xpack.dataUsage.metrics.filter.dataStreams.appendTooltip', { + defaultMessage: 'Storage size is not updated based on the selected date range.', + }), + }, + }, + filterSelectAll: i18n.translate('xpack.dataUsage.metrics.filter.selectAll', { + defaultMessage: 'Select all', + }), + filterClearAll: i18n.translate('xpack.dataUsage.metrics.filter.clearAll', { + defaultMessage: 'Clear all', + }), + filterSearchPlaceholder: (filterName: string) => + i18n.translate('xpack.dataUsage.metrics.filter.searchPlaceholder', { + defaultMessage: 'Search {filterName}', + values: { filterName }, + }), + filterEmptyMessage: (filterName: string) => + i18n.translate('xpack.dataUsage.metrics.filter.emptyMessage', { + defaultMessage: 'No {filterName} available', + values: { filterName }, + }), + dataQualityPopup: { + open: i18n.translate('xpack.dataUsage.metrics.dataQuality.open.actions', { + defaultMessage: 'Open data stream actions', + }), + copy: i18n.translate('xpack.dataUsage.metrics.dataQuality.copy.dataStream', { + defaultMessage: 'Copy data stream name', + }), + manage: i18n.translate('xpack.dataUsage.metrics.dataQuality.manage.dataStream', { + defaultMessage: 'Manage data stream', + }), + view: i18n.translate('xpack.dataUsage.metrics.dataQuality.view', { + defaultMessage: 'View data quality', + }), + }, +}); diff --git a/x-pack/plugins/data_usage/public/types.ts b/x-pack/platform/plugins/private/data_usage/public/types.ts similarity index 100% rename from x-pack/plugins/data_usage/public/types.ts rename to x-pack/platform/plugins/private/data_usage/public/types.ts diff --git a/x-pack/plugins/data_usage/public/utils/format_bytes.test.ts b/x-pack/platform/plugins/private/data_usage/public/utils/format_bytes.test.ts similarity index 100% rename from x-pack/plugins/data_usage/public/utils/format_bytes.test.ts rename to x-pack/platform/plugins/private/data_usage/public/utils/format_bytes.test.ts diff --git a/x-pack/plugins/data_usage/public/utils/format_bytes.ts b/x-pack/platform/plugins/private/data_usage/public/utils/format_bytes.ts similarity index 100% rename from x-pack/plugins/data_usage/public/utils/format_bytes.ts rename to x-pack/platform/plugins/private/data_usage/public/utils/format_bytes.ts diff --git a/x-pack/plugins/data_usage/public/utils/use_breadcrumbs.tsx b/x-pack/platform/plugins/private/data_usage/public/utils/use_breadcrumbs.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/utils/use_breadcrumbs.tsx rename to x-pack/platform/plugins/private/data_usage/public/utils/use_breadcrumbs.tsx diff --git a/x-pack/plugins/data_usage/public/utils/use_kibana.tsx b/x-pack/platform/plugins/private/data_usage/public/utils/use_kibana.tsx similarity index 100% rename from x-pack/plugins/data_usage/public/utils/use_kibana.tsx rename to x-pack/platform/plugins/private/data_usage/public/utils/use_kibana.tsx diff --git a/x-pack/plugins/data_usage/server/common/errors.ts b/x-pack/platform/plugins/private/data_usage/server/common/errors.ts similarity index 100% rename from x-pack/plugins/data_usage/server/common/errors.ts rename to x-pack/platform/plugins/private/data_usage/server/common/errors.ts diff --git a/x-pack/plugins/data_usage/server/config.ts b/x-pack/platform/plugins/private/data_usage/server/config.ts similarity index 100% rename from x-pack/plugins/data_usage/server/config.ts rename to x-pack/platform/plugins/private/data_usage/server/config.ts diff --git a/x-pack/plugins/data_usage/server/errors.ts b/x-pack/platform/plugins/private/data_usage/server/errors.ts similarity index 100% rename from x-pack/plugins/data_usage/server/errors.ts rename to x-pack/platform/plugins/private/data_usage/server/errors.ts diff --git a/x-pack/plugins/data_usage/server/index.ts b/x-pack/platform/plugins/private/data_usage/server/index.ts similarity index 100% rename from x-pack/plugins/data_usage/server/index.ts rename to x-pack/platform/plugins/private/data_usage/server/index.ts diff --git a/x-pack/plugins/data_usage/server/mocks/index.ts b/x-pack/platform/plugins/private/data_usage/server/mocks/index.ts similarity index 100% rename from x-pack/plugins/data_usage/server/mocks/index.ts rename to x-pack/platform/plugins/private/data_usage/server/mocks/index.ts diff --git a/x-pack/plugins/data_usage/server/plugin.ts b/x-pack/platform/plugins/private/data_usage/server/plugin.ts similarity index 100% rename from x-pack/plugins/data_usage/server/plugin.ts rename to x-pack/platform/plugins/private/data_usage/server/plugin.ts diff --git a/x-pack/plugins/data_usage/server/routes/error_handler.ts b/x-pack/platform/plugins/private/data_usage/server/routes/error_handler.ts similarity index 100% rename from x-pack/plugins/data_usage/server/routes/error_handler.ts rename to x-pack/platform/plugins/private/data_usage/server/routes/error_handler.ts diff --git a/x-pack/plugins/data_usage/server/routes/index.tsx b/x-pack/platform/plugins/private/data_usage/server/routes/index.tsx similarity index 100% rename from x-pack/plugins/data_usage/server/routes/index.tsx rename to x-pack/platform/plugins/private/data_usage/server/routes/index.tsx diff --git a/x-pack/plugins/data_usage/server/routes/internal/data_streams.test.ts b/x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.test.ts similarity index 79% rename from x-pack/plugins/data_usage/server/routes/internal/data_streams.test.ts rename to x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.test.ts index 9efe61bd75118..e7166baea59d3 100644 --- a/x-pack/plugins/data_usage/server/routes/internal/data_streams.test.ts +++ b/x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.test.ts @@ -127,6 +127,48 @@ describe('registerDataStreamsRoute', () => { }); }); + it('should not include `dot` indices/data streams that start with a `.`', async () => { + mockGetMeteringStats.mockResolvedValue({ + datastreams: [ + { + name: 'ds-1', + size_in_bytes: 100, + }, + { + name: '.ds-2', + size_in_bytes: 200, + }, + { + name: 'ds-3', + size_in_bytes: 500, + }, + { + name: '.ds-4', + size_in_bytes: 0, + }, + ], + }); + const mockRequest = httpServerMock.createKibanaRequest({ body: {} }); + const mockResponse = httpServerMock.createResponseFactory(); + const mockRouter = mockCore.http.createRouter.mock.results[0].value; + const [[, handler]] = mockRouter.versioned.get.mock.results[0].value.addVersion.mock.calls; + await handler(context, mockRequest, mockResponse); + + expect(mockResponse.ok).toHaveBeenCalledTimes(1); + expect(mockResponse.ok.mock.calls[0][0]).toEqual({ + body: [ + { + name: 'ds-3', + storageSizeBytes: 500, + }, + { + name: 'ds-1', + storageSizeBytes: 100, + }, + ], + }); + }); + it('should return correct error if metering stats request fails with an unknown error', async () => { // using custom error for test here to avoid having to import the actual error class mockGetMeteringStats.mockRejectedValue( @@ -178,9 +220,9 @@ describe('registerDataStreamsRoute', () => { }); it.each([ - ['no datastreams', {}, []], - ['empty array', { datastreams: [] }, []], - ['an empty element', { datastreams: [{}] }, []], + ['no datastreams key in response', { indices: [] }, []], + ['empty datastreams array', { indices: [], datastreams: [] }, []], + ['an empty element', { indices: [], datastreams: [{}] }, []], ])('should return empty array when no stats data with %s', async (_, stats, res) => { mockGetMeteringStats.mockResolvedValue(stats); const mockRequest = httpServerMock.createKibanaRequest({ body: {} }); @@ -189,9 +231,22 @@ describe('registerDataStreamsRoute', () => { const [[, handler]] = mockRouter.versioned.get.mock.results[0].value.addVersion.mock.calls; await handler(context, mockRequest, mockResponse); - expect(mockResponse.ok).toHaveBeenCalledTimes(1); - expect(mockResponse.ok.mock.calls[0][0]).toEqual({ - body: res, - }); + // @ts-expect-error + if (stats && stats.datastreams && stats.datastreams.length) { + expect(mockResponse.customError).toHaveBeenCalledTimes(1); + expect(mockResponse.customError).toHaveBeenCalledWith({ + body: new CustomHttpRequestError( + 'No relevant user defined data streams found with storage size greater than zero', + 404 + ), + statusCode: 404, + }); + } else { + expect(mockResponse.customError).toHaveBeenCalledTimes(1); + expect(mockResponse.customError).toHaveBeenCalledWith({ + body: new CustomHttpRequestError('No data streams found', 404), + statusCode: 404, + }); + } }); }); diff --git a/x-pack/plugins/data_usage/server/routes/internal/data_streams.ts b/x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.ts similarity index 100% rename from x-pack/plugins/data_usage/server/routes/internal/data_streams.ts rename to x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams.ts diff --git a/x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams_handler.ts b/x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams_handler.ts new file mode 100644 index 0000000000000..ccda00a9478dd --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/server/routes/internal/data_streams_handler.ts @@ -0,0 +1,90 @@ +/* + * 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 { RequestHandler } from '@kbn/core/server'; +import { DataUsageContext, DataUsageRequestHandlerContext } from '../../types'; +import { errorHandler } from '../error_handler'; +import { getMeteringStats } from '../../utils/get_metering_stats'; +import type { + DataStreamsRequestQuery, + DataStreamsResponseBodySchemaBody, +} from '../../../common/rest_types/data_streams'; +import { NoIndicesMeteringError, NoPrivilegeMeteringError } from '../../errors'; +import { CustomHttpRequestError } from '../../utils'; + +export const getDataStreamsHandler = ( + dataUsageContext: DataUsageContext +): RequestHandler<never, DataStreamsRequestQuery, unknown, DataUsageRequestHandlerContext> => { + const logger = dataUsageContext.logFactory.get('dataStreamsRoute'); + return async (context, request, response) => { + const { includeZeroStorage } = request.query; + + logger.debug('Retrieving user data streams'); + + try { + const core = await context.core; + const { datastreams: meteringStatsDataStreams } = await getMeteringStats( + core.elasticsearch.client.asSecondaryAuthUser + ); + + if (!meteringStatsDataStreams || !meteringStatsDataStreams.length) { + return errorHandler( + logger, + response, + new CustomHttpRequestError('No data streams found', 404) + ); + } + + const nonSystemDataStreams = meteringStatsDataStreams.filter((dataStream) => { + return !dataStream.name?.startsWith('.'); + }); + + if (!nonSystemDataStreams || !nonSystemDataStreams.length) { + return errorHandler( + logger, + response, + new CustomHttpRequestError('No user defined data streams found', 404) + ); + } + + const body = nonSystemDataStreams + .reduce<DataStreamsResponseBodySchemaBody>((acc, stat) => { + if (includeZeroStorage || stat.size_in_bytes > 0) { + acc.push({ + name: stat.name, + storageSizeBytes: stat.size_in_bytes, + }); + } + return acc; + }, []) + .sort((a, b) => b.storageSizeBytes - a.storageSizeBytes); + + if (!body || !body.length) { + return errorHandler( + logger, + response, + new CustomHttpRequestError( + 'No relevant user defined data streams found with storage size greater than zero', + 404 + ) + ); + } + + return response.ok({ + body, + }); + } catch (error) { + if (error.message.includes('security_exception')) { + return errorHandler(logger, response, new NoPrivilegeMeteringError()); + } else if (error.message.includes('index_not_found_exception')) { + return errorHandler(logger, response, new NoIndicesMeteringError()); + } + + return errorHandler(logger, response, error); + } + }; +}; diff --git a/x-pack/plugins/data_usage/server/routes/internal/index.tsx b/x-pack/platform/plugins/private/data_usage/server/routes/internal/index.tsx similarity index 100% rename from x-pack/plugins/data_usage/server/routes/internal/index.tsx rename to x-pack/platform/plugins/private/data_usage/server/routes/internal/index.tsx diff --git a/x-pack/plugins/data_usage/server/routes/internal/usage_metrics.test.ts b/x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics.test.ts similarity index 100% rename from x-pack/plugins/data_usage/server/routes/internal/usage_metrics.test.ts rename to x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics.test.ts diff --git a/x-pack/plugins/data_usage/server/routes/internal/usage_metrics.ts b/x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics.ts similarity index 100% rename from x-pack/plugins/data_usage/server/routes/internal/usage_metrics.ts rename to x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics.ts diff --git a/x-pack/plugins/data_usage/server/routes/internal/usage_metrics_handler.ts b/x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics_handler.ts similarity index 100% rename from x-pack/plugins/data_usage/server/routes/internal/usage_metrics_handler.ts rename to x-pack/platform/plugins/private/data_usage/server/routes/internal/usage_metrics_handler.ts diff --git a/x-pack/plugins/data_usage/server/services/app_context.ts b/x-pack/platform/plugins/private/data_usage/server/services/app_context.ts similarity index 100% rename from x-pack/plugins/data_usage/server/services/app_context.ts rename to x-pack/platform/plugins/private/data_usage/server/services/app_context.ts diff --git a/x-pack/plugins/data_usage/server/services/autoops_api.ts b/x-pack/platform/plugins/private/data_usage/server/services/autoops_api.ts similarity index 100% rename from x-pack/plugins/data_usage/server/services/autoops_api.ts rename to x-pack/platform/plugins/private/data_usage/server/services/autoops_api.ts diff --git a/x-pack/plugins/data_usage/server/services/index.ts b/x-pack/platform/plugins/private/data_usage/server/services/index.ts similarity index 100% rename from x-pack/plugins/data_usage/server/services/index.ts rename to x-pack/platform/plugins/private/data_usage/server/services/index.ts diff --git a/x-pack/plugins/data_usage/server/types/index.ts b/x-pack/platform/plugins/private/data_usage/server/types/index.ts similarity index 100% rename from x-pack/plugins/data_usage/server/types/index.ts rename to x-pack/platform/plugins/private/data_usage/server/types/index.ts diff --git a/x-pack/plugins/data_usage/server/types/types.ts b/x-pack/platform/plugins/private/data_usage/server/types/types.ts similarity index 100% rename from x-pack/plugins/data_usage/server/types/types.ts rename to x-pack/platform/plugins/private/data_usage/server/types/types.ts diff --git a/x-pack/plugins/data_usage/server/utils/custom_http_request_error.ts b/x-pack/platform/plugins/private/data_usage/server/utils/custom_http_request_error.ts similarity index 100% rename from x-pack/plugins/data_usage/server/utils/custom_http_request_error.ts rename to x-pack/platform/plugins/private/data_usage/server/utils/custom_http_request_error.ts diff --git a/x-pack/plugins/data_usage/server/utils/get_metering_stats.ts b/x-pack/platform/plugins/private/data_usage/server/utils/get_metering_stats.ts similarity index 100% rename from x-pack/plugins/data_usage/server/utils/get_metering_stats.ts rename to x-pack/platform/plugins/private/data_usage/server/utils/get_metering_stats.ts diff --git a/x-pack/plugins/data_usage/server/utils/index.ts b/x-pack/platform/plugins/private/data_usage/server/utils/index.ts similarity index 100% rename from x-pack/plugins/data_usage/server/utils/index.ts rename to x-pack/platform/plugins/private/data_usage/server/utils/index.ts diff --git a/x-pack/platform/plugins/private/data_usage/tsconfig.json b/x-pack/platform/plugins/private/data_usage/tsconfig.json new file mode 100644 index 0000000000000..6ebec73506c67 --- /dev/null +++ b/x-pack/platform/plugins/private/data_usage/tsconfig.json @@ -0,0 +1,40 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "index.ts", + "common/**/*", + "public/**/*", + "server/**/*", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/i18n", + "@kbn/data-plugin", + "@kbn/kibana-react-plugin", + "@kbn/management-plugin", + "@kbn/react-kibana-context-render", + "@kbn/shared-ux-router", + "@kbn/ebt-tools", + "@kbn/share-plugin", + "@kbn/config-schema", + "@kbn/logging", + "@kbn/deeplinks-observability", + "@kbn/unified-search-plugin", + "@kbn/core-http-browser", + "@kbn/core-chrome-browser", + "@kbn/features-plugin", + "@kbn/index-management-shared-types", + "@kbn/repo-info", + "@kbn/cloud-plugin", + "@kbn/server-http-tools", + "@kbn/utility-types-jest", + "@kbn/datemath", + "@kbn/ui-theme", + "@kbn/i18n-react", + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/grokdebugger/README.md b/x-pack/platform/plugins/private/grokdebugger/README.md similarity index 100% rename from x-pack/plugins/grokdebugger/README.md rename to x-pack/platform/plugins/private/grokdebugger/README.md diff --git a/x-pack/plugins/grokdebugger/common/constants/editor.js b/x-pack/platform/plugins/private/grokdebugger/common/constants/editor.js similarity index 100% rename from x-pack/plugins/grokdebugger/common/constants/editor.js rename to x-pack/platform/plugins/private/grokdebugger/common/constants/editor.js diff --git a/x-pack/plugins/grokdebugger/common/constants/index.js b/x-pack/platform/plugins/private/grokdebugger/common/constants/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/common/constants/index.js rename to x-pack/platform/plugins/private/grokdebugger/common/constants/index.js diff --git a/x-pack/plugins/grokdebugger/common/constants/plugin.js b/x-pack/platform/plugins/private/grokdebugger/common/constants/plugin.js similarity index 100% rename from x-pack/plugins/grokdebugger/common/constants/plugin.js rename to x-pack/platform/plugins/private/grokdebugger/common/constants/plugin.js diff --git a/x-pack/plugins/grokdebugger/common/constants/routes.js b/x-pack/platform/plugins/private/grokdebugger/common/constants/routes.js similarity index 100% rename from x-pack/plugins/grokdebugger/common/constants/routes.js rename to x-pack/platform/plugins/private/grokdebugger/common/constants/routes.js diff --git a/x-pack/platform/plugins/private/grokdebugger/jest.config.js b/x-pack/platform/plugins/private/grokdebugger/jest.config.js new file mode 100644 index 0000000000000..deb18f968e703 --- /dev/null +++ b/x-pack/platform/plugins/private/grokdebugger/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/grokdebugger'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/grokdebugger', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/grokdebugger/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/grokdebugger/kibana.jsonc b/x-pack/platform/plugins/private/grokdebugger/kibana.jsonc similarity index 100% rename from x-pack/plugins/grokdebugger/kibana.jsonc rename to x-pack/platform/plugins/private/grokdebugger/kibana.jsonc diff --git a/x-pack/plugins/grokdebugger/public/components/custom_patterns_input/custom_patterns_input.js b/x-pack/platform/plugins/private/grokdebugger/public/components/custom_patterns_input/custom_patterns_input.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/custom_patterns_input/custom_patterns_input.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/custom_patterns_input/custom_patterns_input.js diff --git a/x-pack/plugins/grokdebugger/public/components/custom_patterns_input/index.js b/x-pack/platform/plugins/private/grokdebugger/public/components/custom_patterns_input/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/custom_patterns_input/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/custom_patterns_input/index.js diff --git a/x-pack/plugins/grokdebugger/public/components/event_input/event_input.js b/x-pack/platform/plugins/private/grokdebugger/public/components/event_input/event_input.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/event_input/event_input.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/event_input/event_input.js diff --git a/x-pack/plugins/grokdebugger/public/components/event_input/index.js b/x-pack/platform/plugins/private/grokdebugger/public/components/event_input/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/event_input/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/event_input/index.js diff --git a/x-pack/plugins/grokdebugger/public/components/event_output/event_output.js b/x-pack/platform/plugins/private/grokdebugger/public/components/event_output/event_output.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/event_output/event_output.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/event_output/event_output.js diff --git a/x-pack/plugins/grokdebugger/public/components/event_output/index.js b/x-pack/platform/plugins/private/grokdebugger/public/components/event_output/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/event_output/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/event_output/index.js diff --git a/x-pack/plugins/grokdebugger/public/components/grok_debugger/grok_debugger.js b/x-pack/platform/plugins/private/grokdebugger/public/components/grok_debugger/grok_debugger.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/grok_debugger/grok_debugger.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/grok_debugger/grok_debugger.js diff --git a/x-pack/plugins/grokdebugger/public/components/grok_debugger/index.js b/x-pack/platform/plugins/private/grokdebugger/public/components/grok_debugger/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/grok_debugger/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/grok_debugger/index.js diff --git a/x-pack/plugins/grokdebugger/public/components/inactive_license.js b/x-pack/platform/plugins/private/grokdebugger/public/components/inactive_license.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/inactive_license.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/inactive_license.js diff --git a/x-pack/plugins/grokdebugger/public/components/pattern_input/index.js b/x-pack/platform/plugins/private/grokdebugger/public/components/pattern_input/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/pattern_input/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/pattern_input/index.js diff --git a/x-pack/plugins/grokdebugger/public/components/pattern_input/pattern_input.js b/x-pack/platform/plugins/private/grokdebugger/public/components/pattern_input/pattern_input.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/components/pattern_input/pattern_input.js rename to x-pack/platform/plugins/private/grokdebugger/public/components/pattern_input/pattern_input.js diff --git a/x-pack/plugins/grokdebugger/public/index.js b/x-pack/platform/plugins/private/grokdebugger/public/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/index.js diff --git a/x-pack/plugins/grokdebugger/public/models/grokdebugger_request/grokdebugger_request.js b/x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_request/grokdebugger_request.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/models/grokdebugger_request/grokdebugger_request.js rename to x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_request/grokdebugger_request.js diff --git a/x-pack/plugins/grokdebugger/public/models/grokdebugger_request/index.js b/x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_request/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/models/grokdebugger_request/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_request/index.js diff --git a/x-pack/plugins/grokdebugger/public/models/grokdebugger_response/grokdebugger_response.js b/x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_response/grokdebugger_response.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/models/grokdebugger_response/grokdebugger_response.js rename to x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_response/grokdebugger_response.js diff --git a/x-pack/plugins/grokdebugger/public/models/grokdebugger_response/index.js b/x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_response/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/models/grokdebugger_response/index.js rename to x-pack/platform/plugins/private/grokdebugger/public/models/grokdebugger_response/index.js diff --git a/x-pack/plugins/grokdebugger/public/plugin.js b/x-pack/platform/plugins/private/grokdebugger/public/plugin.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/plugin.js rename to x-pack/platform/plugins/private/grokdebugger/public/plugin.js diff --git a/x-pack/plugins/grokdebugger/public/register_feature.ts b/x-pack/platform/plugins/private/grokdebugger/public/register_feature.ts similarity index 100% rename from x-pack/plugins/grokdebugger/public/register_feature.ts rename to x-pack/platform/plugins/private/grokdebugger/public/register_feature.ts diff --git a/x-pack/plugins/grokdebugger/public/render_app.js b/x-pack/platform/plugins/private/grokdebugger/public/render_app.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/render_app.js rename to x-pack/platform/plugins/private/grokdebugger/public/render_app.js diff --git a/x-pack/plugins/grokdebugger/public/services/grokdebugger/grokdebugger_service.js b/x-pack/platform/plugins/private/grokdebugger/public/services/grokdebugger/grokdebugger_service.js similarity index 100% rename from x-pack/plugins/grokdebugger/public/services/grokdebugger/grokdebugger_service.js rename to x-pack/platform/plugins/private/grokdebugger/public/services/grokdebugger/grokdebugger_service.js diff --git a/x-pack/plugins/grokdebugger/public/shared_imports.ts b/x-pack/platform/plugins/private/grokdebugger/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/grokdebugger/public/shared_imports.ts rename to x-pack/platform/plugins/private/grokdebugger/public/shared_imports.ts diff --git a/x-pack/plugins/grokdebugger/server/index.js b/x-pack/platform/plugins/private/grokdebugger/server/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/index.js rename to x-pack/platform/plugins/private/grokdebugger/server/index.js diff --git a/x-pack/plugins/grokdebugger/server/lib/kibana_framework.ts b/x-pack/platform/plugins/private/grokdebugger/server/lib/kibana_framework.ts similarity index 100% rename from x-pack/plugins/grokdebugger/server/lib/kibana_framework.ts rename to x-pack/platform/plugins/private/grokdebugger/server/lib/kibana_framework.ts diff --git a/x-pack/plugins/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.js b/x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.js rename to x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.js diff --git a/x-pack/plugins/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.test.js b/x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.test.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.test.js rename to x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_request/grokdebugger_request.test.js diff --git a/x-pack/plugins/grokdebugger/server/models/grokdebugger_request/index.js b/x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_request/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/models/grokdebugger_request/index.js rename to x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_request/index.js diff --git a/x-pack/plugins/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.js b/x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.js rename to x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.js diff --git a/x-pack/plugins/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.test.js b/x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.test.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.test.js rename to x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_response/grokdebugger_response.test.js diff --git a/x-pack/plugins/grokdebugger/server/models/grokdebugger_response/index.js b/x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_response/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/models/grokdebugger_response/index.js rename to x-pack/platform/plugins/private/grokdebugger/server/models/grokdebugger_response/index.js diff --git a/x-pack/plugins/grokdebugger/server/plugin.js b/x-pack/platform/plugins/private/grokdebugger/server/plugin.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/plugin.js rename to x-pack/platform/plugins/private/grokdebugger/server/plugin.js diff --git a/x-pack/plugins/grokdebugger/server/routes/api/grokdebugger/index.js b/x-pack/platform/plugins/private/grokdebugger/server/routes/api/grokdebugger/index.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/routes/api/grokdebugger/index.js rename to x-pack/platform/plugins/private/grokdebugger/server/routes/api/grokdebugger/index.js diff --git a/x-pack/plugins/grokdebugger/server/routes/api/grokdebugger/register_grok_simulate_route.ts b/x-pack/platform/plugins/private/grokdebugger/server/routes/api/grokdebugger/register_grok_simulate_route.ts similarity index 100% rename from x-pack/plugins/grokdebugger/server/routes/api/grokdebugger/register_grok_simulate_route.ts rename to x-pack/platform/plugins/private/grokdebugger/server/routes/api/grokdebugger/register_grok_simulate_route.ts diff --git a/x-pack/plugins/grokdebugger/server/routes/api/grokdebugger/register_grokdebugger_routes.js b/x-pack/platform/plugins/private/grokdebugger/server/routes/api/grokdebugger/register_grokdebugger_routes.js similarity index 100% rename from x-pack/plugins/grokdebugger/server/routes/api/grokdebugger/register_grokdebugger_routes.js rename to x-pack/platform/plugins/private/grokdebugger/server/routes/api/grokdebugger/register_grokdebugger_routes.js diff --git a/x-pack/plugins/grokdebugger/server/shared_imports.ts b/x-pack/platform/plugins/private/grokdebugger/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/grokdebugger/server/shared_imports.ts rename to x-pack/platform/plugins/private/grokdebugger/server/shared_imports.ts diff --git a/x-pack/platform/plugins/private/grokdebugger/tsconfig.json b/x-pack/platform/plugins/private/grokdebugger/tsconfig.json new file mode 100644 index 0000000000000..a205cbe24b4d9 --- /dev/null +++ b/x-pack/platform/plugins/private/grokdebugger/tsconfig.json @@ -0,0 +1,27 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + "../../../../../typings/**/*", + ], + "kbn_references": [ + "@kbn/core", + "@kbn/home-plugin", + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/licensing-plugin", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/code-editor", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/index_lifecycle_management/README.md b/x-pack/platform/plugins/private/index_lifecycle_management/README.md similarity index 100% rename from x-pack/plugins/index_lifecycle_management/README.md rename to x-pack/platform/plugins/private/index_lifecycle_management/README.md diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap b/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap similarity index 100% rename from x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap rename to x-pack/platform/plugins/private/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/policy_flyout.test.tsx.snap b/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/__snapshots__/policy_flyout.test.tsx.snap similarity index 100% rename from x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/policy_flyout.test.tsx.snap rename to x-pack/platform/plugins/private/index_lifecycle_management/__jest__/__snapshots__/policy_flyout.test.tsx.snap diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/policy_table.test.tsx.snap b/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/__snapshots__/policy_table.test.tsx.snap similarity index 100% rename from x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/policy_table.test.tsx.snap rename to x-pack/platform/plugins/private/index_lifecycle_management/__jest__/__snapshots__/policy_table.test.tsx.snap diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/extend_index_management.test.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/extend_index_management.test.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/__jest__/extend_index_management.test.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/__jest__/extend_index_management.test.tsx diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/mocks.ts b/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/mocks.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/__jest__/mocks.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/__jest__/mocks.ts diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/policy_flyout.test.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/policy_flyout.test.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/__jest__/policy_flyout.test.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/__jest__/policy_flyout.test.tsx diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/policy_table.test.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/__jest__/policy_table.test.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/__jest__/policy_table.test.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/__jest__/policy_table.test.tsx diff --git a/x-pack/plugins/index_lifecycle_management/common/constants/data_tiers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/common/constants/data_tiers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/common/constants/data_tiers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/common/constants/data_tiers.ts diff --git a/x-pack/plugins/index_lifecycle_management/common/constants/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/common/constants/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/common/constants/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/common/constants/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/common/constants/license.ts b/x-pack/platform/plugins/private/index_lifecycle_management/common/constants/license.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/common/constants/license.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/common/constants/license.ts diff --git a/x-pack/plugins/index_lifecycle_management/common/types/api.ts b/x-pack/platform/plugins/private/index_lifecycle_management/common/types/api.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/common/types/api.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/common/types/api.ts diff --git a/x-pack/plugins/index_lifecycle_management/common/types/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/common/types/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/common/types/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/common/types/index.ts diff --git a/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/README.md b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/README.md new file mode 100644 index 0000000000000..0f8d23b70b45e --- /dev/null +++ b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/README.md @@ -0,0 +1,14 @@ +Most plugins of the deployment management team follow +the similar testing infrastructure where integration tests are located in `__jest__` and run as unit tests. + +The `index_lifecycle_management` tests [were refactored](https://github.com/elastic/kibana/pull/141750) to be run as integration tests because they [became flaky hitting the 5 seconds timeout](https://github.com/elastic/kibana/issues/115307#issuecomment-1238417474) for a jest unit test. + +Jest integration tests are just sit in a different directory and have two main differences: +- They never use parallelism, this allows them to access file system resources, launch services, etc. without needing to worry about conflicts with other tests +- They are allowed to take their sweet time, the default timeout is currently 10 minutes. + +To run these tests use: + +``` +node scripts/jest_integration x-pack/platform/plugins/private/index_lifecycle_management/ +``` \ No newline at end of file diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/app/app.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/app/app.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/app/app.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/app/app.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/app/app.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/app/app.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/app/app.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/app/app.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/constants.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/constants.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/constants.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/constants.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/delete_phase.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/downsample.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/downsample.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/downsample.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/downsample.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/downsample.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/downsample.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/downsample.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/downsample.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/edit_warning.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/edit_warning.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/edit_warning.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/edit_warning.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/frozen_phase.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/frozen_phase.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/frozen_phase.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/frozen_phase.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cloud_aware_behavior.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/cold_phase.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/general_behavior.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/node_allocation/warm_phase.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/request_flyout.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/rollover.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/rollover.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/rollover.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/rollover.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/rollover.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/rollover.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/rollover.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/rollover.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/searchable_snapshots.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timeline.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timeline.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timeline.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timeline.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timeline.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timeline.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timeline.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timeline.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timing.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timing.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timing.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timing.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timing.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timing.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/features/timing.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/features/timing.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/cold_phase_validation.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/cold_phase_validation.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/cold_phase_validation.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/cold_phase_validation.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/downsample_interval.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/downsample_interval.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/downsample_interval.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/downsample_interval.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/error_indicators.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/error_indicators.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/error_indicators.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/error_indicators.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/hot_phase_validation.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/hot_phase_validation.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/hot_phase_validation.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/hot_phase_validation.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/policy_name_validation.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/policy_name_validation.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/policy_name_validation.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/policy_name_validation.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/timing.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/timing.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/timing.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/timing.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/validation.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/validation.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/validation.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/validation.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/warm_phase_validation.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/warm_phase_validation.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/form_validation/warm_phase_validation.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/form_validation/warm_phase_validation.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/init_test_bed.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/init_test_bed.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/init_test_bed.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/init_test_bed.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.helpers.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.helpers.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.helpers.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.helpers.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/edit_policy/serialization/policy_serialization.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/delete_searchable_snapshot_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/delete_searchable_snapshot_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/delete_searchable_snapshot_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/delete_searchable_snapshot_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/downsample_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/downsample_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/downsample_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/downsample_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/errors_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/errors_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/errors_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/errors_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/forcemerge_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/forcemerge_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/forcemerge_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/forcemerge_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/form_set_value_action.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/form_set_value_action.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/form_set_value_action.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/form_set_value_action.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_action.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_action.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_action.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_action.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_and_set_value_action.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_and_set_value_action.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_and_set_value_action.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/form_toggle_and_set_value_action.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/index_priority_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/index_priority_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/index_priority_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/index_priority_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/min_age_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/min_age_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/min_age_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/min_age_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/node_allocation_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/node_allocation_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/node_allocation_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/node_allocation_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/phases.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/phases.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/phases.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/phases.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/readonly_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/readonly_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/readonly_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/readonly_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/replicas_action.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/replicas_action.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/replicas_action.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/replicas_action.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/request_flyout_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/request_flyout_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/request_flyout_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/request_flyout_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/rollover_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/rollover_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/rollover_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/rollover_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/save_policy_action.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/save_policy_action.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/save_policy_action.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/save_policy_action.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/searchable_snapshot_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/searchable_snapshot_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/searchable_snapshot_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/searchable_snapshot_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/shrink_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/shrink_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/shrink_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/shrink_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/snapshot_policy_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/snapshot_policy_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/snapshot_policy_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/snapshot_policy_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/toggle_phase_action.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/toggle_phase_action.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/actions/toggle_phase_action.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/actions/toggle_phase_action.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/global_mocks.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/global_mocks.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/global_mocks.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/global_mocks.tsx diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/http_requests.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/http_requests.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/http_requests.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/http_requests.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/helpers/setup_environment.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/setup_environment.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/integration_tests/helpers/setup_environment.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/integration_tests/helpers/setup_environment.tsx diff --git a/x-pack/platform/plugins/private/index_lifecycle_management/jest.config.js b/x-pack/platform/plugins/private/index_lifecycle_management/jest.config.js new file mode 100644 index 0000000000000..678335172509f --- /dev/null +++ b/x-pack/platform/plugins/private/index_lifecycle_management/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/index_lifecycle_management'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/index_lifecycle_management', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/index_lifecycle_management/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/platform/plugins/private/index_lifecycle_management/jest.integration.config.js b/x-pack/platform/plugins/private/index_lifecycle_management/jest.integration.config.js new file mode 100644 index 0000000000000..21f22c8543341 --- /dev/null +++ b/x-pack/platform/plugins/private/index_lifecycle_management/jest.integration.config.js @@ -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. + */ + +module.exports = { + preset: '@kbn/test/jest_integration', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/index_lifecycle_management'], + testMatch: ['/**/integration_tests/**/*.test.{js,mjs,ts,tsx}'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/index_lifecycle_management', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/index_lifecycle_management/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/index_lifecycle_management/kibana.jsonc b/x-pack/platform/plugins/private/index_lifecycle_management/kibana.jsonc similarity index 100% rename from x-pack/plugins/index_lifecycle_management/kibana.jsonc rename to x-pack/platform/plugins/private/index_lifecycle_management/kibana.jsonc diff --git a/x-pack/plugins/index_lifecycle_management/public/application/app.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/app.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/app.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/app.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/components/index_templates_flyout.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/components/index_templates_flyout.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/components/index_templates_flyout.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/components/index_templates_flyout.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/constants/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/constants/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/constants/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/constants/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/constants/policy.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/constants/policy.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/constants/policy.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/constants/policy.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/constants/ui_metric.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/constants/ui_metric.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/constants/ui_metric.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/constants/ui_metric.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/index.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/index.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/index.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/index.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/determine_allocation_type.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/determine_allocation_type.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/determine_allocation_type.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/determine_allocation_type.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/get_available_node_roles_for_phase.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/get_available_node_roles_for_phase.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/get_available_node_roles_for_phase.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/get_available_node_roles_for_phase.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/is_node_role_first_preference.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/is_node_role_first_preference.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/data_tiers/is_node_role_first_preference.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/data_tiers/is_node_role_first_preference.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/policies.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/policies.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/policies.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/policies.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/rollover.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/rollover.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/rollover.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/rollover.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/settings_local_storage.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/settings_local_storage.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/settings_local_storage.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/settings_local_storage.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/lib/use_is_read_only.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/use_is_read_only.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/lib/use_is_read_only.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/lib/use_is_read_only.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/described_form_row.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/described_form_row.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/described_form_row.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/described_form_row.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/toggle_field_with_described_form_row.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/toggle_field_with_described_form_row.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/toggle_field_with_described_form_row.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/described_form_row/toggle_field_with_described_form_row.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/edit_warning.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/edit_warning.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/edit_warning.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/edit_warning.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/field_loading_error.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/field_loading_error.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/field_loading_error.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/field_loading_error.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/form_errors_callout.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/form_errors_callout.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/form_errors_callout.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/form_errors_callout.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.svg.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.svg.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.svg.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.svg.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/infinity_icon/infinity_icon.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/learn_more_link.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/learn_more_link.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/learn_more_link.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/learn_more_link.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/optional_label.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/optional_label.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/optional_label.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/optional_label.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/phase_footer.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/phase_footer.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/phase_footer.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_footer/phase_footer.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phase_icon/phase_icon.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/cold_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/cold_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/cold_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/cold_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/cold_phase/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_searchable_snapshot_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_searchable_snapshot_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_searchable_snapshot_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/delete_searchable_snapshot_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/delete_phase/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/frozen_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/frozen_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/frozen_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/frozen_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/frozen_phase/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_age_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_age_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_age_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_age_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_document_count_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_document_count_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_document_count_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_document_count_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_index_size_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_index_size_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_index_size_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_index_size_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_docs_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_docs_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_docs_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_docs_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_size_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_size_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_size_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/components/max_primary_shard_size_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/hot_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/use_rollover_value_required_validation.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/use_rollover_value_required_validation.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/use_rollover_value_required_validation.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/hot_phase/use_rollover_value_required_validation.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/phase/phase_title.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/_data_tier_allocation.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/_data_tier_allocation.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/_data_tier_allocation.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/_data_tier_allocation.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/cloud_data_tier_callout.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/cloud_data_tier_callout.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/cloud_data_tier_callout.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/cloud_data_tier_callout.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_nodes_notice.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_nodes_notice.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_nodes_notice.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_nodes_notice.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_tiers_notice.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_tiers_notice.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_tiers_notice.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/default_to_data_tiers_notice.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/loading_error.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/loading_error.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/loading_error.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/loading_error.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_custom_attributes_messages.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_custom_attributes_messages.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_custom_attributes_messages.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_custom_attributes_messages.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_available_notice.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_available_notice.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_available_notice.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_available_notice.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_nodes_notice.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_nodes_notice.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_nodes_notice.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/no_tiers_nodes_notice.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_allocation.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_allocation.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_allocation.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_allocation.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_attrs_details.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_attrs_details.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_attrs_details.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_attrs_details.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_role_to_fallback_tier_map.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_role_to_fallback_tier_map.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_role_to_fallback_tier_map.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/node_role_to_fallback_tier_map.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/types.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/types.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/types.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/types.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_fallback_nodes_notice.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_fallback_nodes_notice.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_fallback_nodes_notice.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_fallback_nodes_notice.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_use_fallback_tier_notice.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_use_fallback_tier_notice.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_use_fallback_tier_notice.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/will_use_fallback_tier_notice.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/data_tier_allocation_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/data_tier_allocation_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/data_tier_allocation_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/data_tier_allocation_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/downsample_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/downsample_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/downsample_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/downsample_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/forcemerge_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/forcemerge_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/forcemerge_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/forcemerge_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index_priority_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index_priority_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index_priority_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/index_priority_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/min_age_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/min_age_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/min_age_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/min_age_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/util.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/util.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/util.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/min_age_field/util.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/readonly_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/readonly_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/readonly_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/readonly_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/replicas_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/replicas_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/replicas_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/replicas_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/_searchable_snapshot_field.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/_searchable_snapshot_field.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/_searchable_snapshot_field.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/_searchable_snapshot_field.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/repository_combobox_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/repository_combobox_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/repository_combobox_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/repository_combobox_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_data_provider.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_data_provider.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_data_provider.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_data_provider.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/searchable_snapshot_field/searchable_snapshot_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/shrink_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/shrink_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/shrink_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/shrink_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/snapshot_policies_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/unit_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/unit_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/unit_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/unit_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/warm_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/warm_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/warm_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/phases/warm_phase/warm_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/policy_json_flyout.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/policy_json_flyout.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/policy_json_flyout.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/policy_json_flyout.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/timeline_phase_text.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/timeline_phase_text.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/timeline_phase_text.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/components/timeline_phase_text.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.container.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.container.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.container.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.container.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/components/timeline/timeline.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/constants.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/constants.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/constants.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/constants.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.scss b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.scss similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.scss rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.scss diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/edit_policy_context.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/enhanced_use_field.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/components/enhanced_use_field.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/enhanced_use_field.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/components/enhanced_use_field.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/form.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/components/form.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/form.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/components/form.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/configuration_context.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/configuration_context.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/configuration_context.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/configuration_context.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/deserializer_and_serializer.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/form_errors_context.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/form_errors_context.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/form_errors_context.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/form_errors_context.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/global_fields_context.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/global_fields_context.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/global_fields_context.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/global_fields_context.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/phase_timings_context.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/phase_timings_context.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/phase_timings_context.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/phase_timings_context.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/schema.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/schema.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/schema.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/schema.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serialize_migrate_and_allocate_actions.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serialize_migrate_and_allocate_actions.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serialize_migrate_and_allocate_actions.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serialize_migrate_and_allocate_actions.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/serializer/serializer.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/validations.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/validations.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form/validations.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/form/validations.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/i18n_texts.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/i18n_texts.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/i18n_texts.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/i18n_texts.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/absolute_timing_to_relative_timing.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/get_default_repository.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/get_default_repository.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/get_default_repository.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/get_default_repository.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/lib/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/lib/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/save_policy.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/save_policy.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/save_policy.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/save_policy.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/types.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/types.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/types.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/edit_policy/types.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/add_policy_to_template_confirm_modal.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/add_policy_to_template_confirm_modal.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/add_policy_to_template_confirm_modal.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/add_policy_to_template_confirm_modal.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/confirm_delete.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/confirm_delete.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/confirm_delete.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/confirm_delete.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/deprecated_policy_badge.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/deprecated_policy_badge.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/deprecated_policy_badge.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/deprecated_policy_badge.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/list_action_handler.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/list_action_handler.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/list_action_handler.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/list_action_handler.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/managed_policy_badge.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/managed_policy_badge.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/managed_policy_badge.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/managed_policy_badge.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/policy_table.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/policy_table.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/components/policy_table.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/components/policy_table.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/cold_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/cold_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/cold_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/cold_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/action_description.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/action_description.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/action_description.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/action_description.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/data_allocation.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/data_allocation.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/data_allocation.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/data_allocation.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/delete_searchable_snapshot.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/delete_searchable_snapshot.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/delete_searchable_snapshot.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/delete_searchable_snapshot.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/downsample.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/downsample.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/downsample.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/downsample.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/forcemerge.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/forcemerge.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/forcemerge.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/forcemerge.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/i18n_texts.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/i18n_texts.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/i18n_texts.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/i18n_texts.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index_priority.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index_priority.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index_priority.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/index_priority.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/min_age.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/min_age.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/min_age.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/min_age.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/readonly.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/readonly.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/readonly.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/readonly.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/replicas.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/replicas.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/replicas.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/replicas.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/rollover.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/searchable_snapshot.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/searchable_snapshot.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/searchable_snapshot.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/searchable_snapshot.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/shrink.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/shrink.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/shrink.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/shrink.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/types.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/types.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/types.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/types.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/wait_for_snapshot.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/wait_for_snapshot.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/wait_for_snapshot.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/components/wait_for_snapshot.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/delete_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/delete_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/delete_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/delete_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/frozen_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/frozen_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/frozen_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/frozen_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/hot_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/hot_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/hot_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/hot_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_description.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_description.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_description.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_description.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_indicator.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_indicator.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_indicator.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/phase_indicator.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/timeline.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/timeline.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/timeline.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/timeline.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/view_policy_flyout.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/view_policy_flyout.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/view_policy_flyout.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/view_policy_flyout.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/warm_phase.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/warm_phase.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/warm_phase.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_flyout/warm_phase.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.container.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_list.container.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.container.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_list.container.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_list.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_list.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list_context.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_list_context.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list_context.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/sections/policy_list/policy_list_context.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/api.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/api.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/api.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/api.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/api_errors.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/api_errors.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/api_errors.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/api_errors.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/breadcrumbs.mock.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/breadcrumbs.mock.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/breadcrumbs.mock.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/breadcrumbs.mock.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/breadcrumbs.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/breadcrumbs.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/breadcrumbs.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/http.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/http.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/http.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/http.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/navigation.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/navigation.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/navigation.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/navigation.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/notification.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/notification.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/notification.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/notification.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/ui_metric.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/ui_metric.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/ui_metric.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/ui_metric.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/ui_metric.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/ui_metric.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/application/services/ui_metric.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/application/services/ui_metric.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/add_lifecycle_confirm_modal.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/components/add_lifecycle_confirm_modal.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/add_lifecycle_confirm_modal.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/components/add_lifecycle_confirm_modal.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/remove_lifecycle_confirm_modal.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/components/remove_lifecycle_confirm_modal.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/remove_lifecycle_confirm_modal.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/components/remove_lifecycle_confirm_modal.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/extend_index_management/index.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/index.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/extend_index_management/index.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/index.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/locator.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/locator.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/locator.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/locator.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/plugin.tsx b/x-pack/platform/plugins/private/index_lifecycle_management/public/plugin.tsx similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/plugin.tsx rename to x-pack/platform/plugins/private/index_lifecycle_management/public/plugin.tsx diff --git a/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/shared_imports.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/shared_imports.ts diff --git a/x-pack/plugins/index_lifecycle_management/public/types.ts b/x-pack/platform/plugins/private/index_lifecycle_management/public/types.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/public/types.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/public/types.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/config.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/config.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/config.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/config.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/plugin.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/plugin.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/plugin.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/plugin.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/index/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/index/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_add_policy_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_add_policy_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_add_policy_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_add_policy_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_remove_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_remove_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_remove_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_remove_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_retry_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_retry_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/index/register_retry_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/index/register_retry_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/__jest__/fixtures.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/__jest__/fixtures.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/__jest__/fixtures.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/__jest__/fixtures.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/__jest__/register_list_route.test.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/__jest__/register_list_route.test.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/__jest__/register_list_route.test.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/__jest__/register_list_route.test.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/register_details_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/register_details_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/register_details_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/register_details_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/register_list_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/register_list_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/nodes/register_list_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/nodes/register_list_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/policies/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_create_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_create_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_create_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_create_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_delete_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_delete_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_delete_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_delete_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_fetch_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_fetch_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/policies/register_fetch_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/policies/register_fetch_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_policies/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_policies/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_policies/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_policies/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_policies/register_fetch_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_policies/register_fetch_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_policies/register_fetch_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_policies/register_fetch_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_repositories/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_repositories/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/snapshot_repositories/register_fetch_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/templates/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/templates/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/templates/register_add_policy_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/register_add_policy_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/templates/register_add_policy_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/register_add_policy_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/api/templates/register_fetch_route.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/register_fetch_route.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/api/templates/register_fetch_route.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/api/templates/register_fetch_route.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/routes/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/routes/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/routes/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/routes/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/services/add_base_path.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/services/add_base_path.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/services/add_base_path.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/services/add_base_path.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/services/index.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/services/index.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/services/index.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/services/index.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/services/license.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/services/license.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/services/license.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/services/license.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/shared_imports.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/shared_imports.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/shared_imports.ts diff --git a/x-pack/plugins/index_lifecycle_management/server/types.ts b/x-pack/platform/plugins/private/index_lifecycle_management/server/types.ts similarity index 100% rename from x-pack/plugins/index_lifecycle_management/server/types.ts rename to x-pack/platform/plugins/private/index_lifecycle_management/server/types.ts diff --git a/x-pack/platform/plugins/private/index_lifecycle_management/tsconfig.json b/x-pack/platform/plugins/private/index_lifecycle_management/tsconfig.json new file mode 100644 index 0000000000000..5f061478f6a5d --- /dev/null +++ b/x-pack/platform/plugins/private/index_lifecycle_management/tsconfig.json @@ -0,0 +1,49 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "__jest__/**/*", + "integration_tests/**/*", + "common/**/*", + "public/**/*", + "server/**/*", + "../../../../../typings/**/*", + ], + "kbn_references": [ + "@kbn/core", + // required plugins + "@kbn/licensing-plugin", + "@kbn/management-plugin", + "@kbn/features-plugin", + "@kbn/share-plugin", + // optional plugins + "@kbn/cloud-plugin", + "@kbn/usage-collection-plugin", + "@kbn/index-management-plugin", + "@kbn/home-plugin", + // required bundles + "@kbn/kibana-react-plugin", + "@kbn/test-jest-helpers", + "@kbn/core-http-browser-mocks", + "@kbn/i18n", + "@kbn/utility-types", + "@kbn/analytics", + "@kbn/es-ui-shared-plugin", + "@kbn/i18n-react", + "@kbn/core-http-browser", + "@kbn/config-schema", + "@kbn/shared-ux-router", + "@kbn/ui-theme", + "@kbn/shared-ux-link-redirect-app", + "@kbn/index-management-shared-types", + "@kbn/react-kibana-context-render", + "@kbn/unsaved-changes-prompt", + "@kbn/shared-ux-table-persist", + "@kbn/index-lifecycle-management-common-shared", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/license_api_guard/README.md b/x-pack/platform/plugins/private/license_api_guard/README.md similarity index 100% rename from x-pack/plugins/license_api_guard/README.md rename to x-pack/platform/plugins/private/license_api_guard/README.md diff --git a/x-pack/platform/plugins/private/license_api_guard/jest.config.js b/x-pack/platform/plugins/private/license_api_guard/jest.config.js new file mode 100644 index 0000000000000..875bf3730a871 --- /dev/null +++ b/x-pack/platform/plugins/private/license_api_guard/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/license_api_guard'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/license_api_guard', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/license_api_guard/server/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/license_api_guard/kibana.jsonc b/x-pack/platform/plugins/private/license_api_guard/kibana.jsonc similarity index 100% rename from x-pack/plugins/license_api_guard/kibana.jsonc rename to x-pack/platform/plugins/private/license_api_guard/kibana.jsonc diff --git a/x-pack/plugins/license_api_guard/server/index.ts b/x-pack/platform/plugins/private/license_api_guard/server/index.ts similarity index 100% rename from x-pack/plugins/license_api_guard/server/index.ts rename to x-pack/platform/plugins/private/license_api_guard/server/index.ts diff --git a/x-pack/plugins/license_api_guard/server/license.test.ts b/x-pack/platform/plugins/private/license_api_guard/server/license.test.ts similarity index 100% rename from x-pack/plugins/license_api_guard/server/license.test.ts rename to x-pack/platform/plugins/private/license_api_guard/server/license.test.ts diff --git a/x-pack/plugins/license_api_guard/server/license.ts b/x-pack/platform/plugins/private/license_api_guard/server/license.ts similarity index 100% rename from x-pack/plugins/license_api_guard/server/license.ts rename to x-pack/platform/plugins/private/license_api_guard/server/license.ts diff --git a/x-pack/plugins/license_api_guard/server/shared_imports.ts b/x-pack/platform/plugins/private/license_api_guard/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/license_api_guard/server/shared_imports.ts rename to x-pack/platform/plugins/private/license_api_guard/server/shared_imports.ts diff --git a/x-pack/platform/plugins/private/license_api_guard/tsconfig.json b/x-pack/platform/plugins/private/license_api_guard/tsconfig.json new file mode 100644 index 0000000000000..0d837f888b530 --- /dev/null +++ b/x-pack/platform/plugins/private/license_api_guard/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "server/**/*" + ], + "kbn_references": [ + "@kbn/licensing-plugin", + "@kbn/core", + "@kbn/i18n", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/painless_lab/README.md b/x-pack/platform/plugins/private/painless_lab/README.md similarity index 100% rename from x-pack/plugins/painless_lab/README.md rename to x-pack/platform/plugins/private/painless_lab/README.md diff --git a/x-pack/plugins/painless_lab/common/constants.ts b/x-pack/platform/plugins/private/painless_lab/common/constants.ts similarity index 100% rename from x-pack/plugins/painless_lab/common/constants.ts rename to x-pack/platform/plugins/private/painless_lab/common/constants.ts diff --git a/x-pack/platform/plugins/private/painless_lab/jest.config.js b/x-pack/platform/plugins/private/painless_lab/jest.config.js new file mode 100644 index 0000000000000..9121bbc4df001 --- /dev/null +++ b/x-pack/platform/plugins/private/painless_lab/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/painless_lab'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/painless_lab', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/painless_lab/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/painless_lab/kibana.jsonc b/x-pack/platform/plugins/private/painless_lab/kibana.jsonc similarity index 100% rename from x-pack/plugins/painless_lab/kibana.jsonc rename to x-pack/platform/plugins/private/painless_lab/kibana.jsonc diff --git a/x-pack/plugins/painless_lab/public/application/components/editor.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/editor.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/editor.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/editor.tsx diff --git a/x-pack/plugins/painless_lab/public/application/components/main.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/main.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/main.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/main.tsx diff --git a/x-pack/plugins/painless_lab/public/application/components/main_controls.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/main_controls.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/main_controls.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/main_controls.tsx diff --git a/x-pack/plugins/painless_lab/public/application/components/output_pane/context_tab.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/context_tab.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/output_pane/context_tab.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/context_tab.tsx diff --git a/x-pack/plugins/painless_lab/public/application/components/output_pane/index.ts b/x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/index.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/output_pane/index.ts rename to x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/index.ts diff --git a/x-pack/plugins/painless_lab/public/application/components/output_pane/output_pane.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/output_pane.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/output_pane/output_pane.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/output_pane.tsx diff --git a/x-pack/plugins/painless_lab/public/application/components/output_pane/output_tab.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/output_tab.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/output_pane/output_tab.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/output_tab.tsx diff --git a/x-pack/plugins/painless_lab/public/application/components/output_pane/parameters_tab.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/parameters_tab.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/output_pane/parameters_tab.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/output_pane/parameters_tab.tsx diff --git a/x-pack/plugins/painless_lab/public/application/components/request_flyout.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/components/request_flyout.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/components/request_flyout.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/components/request_flyout.tsx diff --git a/x-pack/plugins/painless_lab/public/application/constants.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/constants.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/constants.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/constants.tsx diff --git a/x-pack/plugins/painless_lab/public/application/context/context.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/context/context.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/context/context.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/context/context.tsx diff --git a/x-pack/plugins/painless_lab/public/application/context/index.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/context/index.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/context/index.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/context/index.tsx diff --git a/x-pack/plugins/painless_lab/public/application/context/initial_payload.ts b/x-pack/platform/plugins/private/painless_lab/public/application/context/initial_payload.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/application/context/initial_payload.ts rename to x-pack/platform/plugins/private/painless_lab/public/application/context/initial_payload.ts diff --git a/x-pack/plugins/painless_lab/public/application/hooks/index.ts b/x-pack/platform/plugins/private/painless_lab/public/application/hooks/index.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/application/hooks/index.ts rename to x-pack/platform/plugins/private/painless_lab/public/application/hooks/index.ts diff --git a/x-pack/plugins/painless_lab/public/application/hooks/use_submit_code.ts b/x-pack/platform/plugins/private/painless_lab/public/application/hooks/use_submit_code.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/application/hooks/use_submit_code.ts rename to x-pack/platform/plugins/private/painless_lab/public/application/hooks/use_submit_code.ts diff --git a/x-pack/plugins/painless_lab/public/application/index.tsx b/x-pack/platform/plugins/private/painless_lab/public/application/index.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/application/index.tsx rename to x-pack/platform/plugins/private/painless_lab/public/application/index.tsx diff --git a/x-pack/plugins/painless_lab/public/application/lib/__snapshots__/format.test.ts.snap b/x-pack/platform/plugins/private/painless_lab/public/application/lib/__snapshots__/format.test.ts.snap similarity index 100% rename from x-pack/plugins/painless_lab/public/application/lib/__snapshots__/format.test.ts.snap rename to x-pack/platform/plugins/private/painless_lab/public/application/lib/__snapshots__/format.test.ts.snap diff --git a/x-pack/plugins/painless_lab/public/application/lib/format.test.ts b/x-pack/platform/plugins/private/painless_lab/public/application/lib/format.test.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/application/lib/format.test.ts rename to x-pack/platform/plugins/private/painless_lab/public/application/lib/format.test.ts diff --git a/x-pack/plugins/painless_lab/public/application/lib/format.ts b/x-pack/platform/plugins/private/painless_lab/public/application/lib/format.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/application/lib/format.ts rename to x-pack/platform/plugins/private/painless_lab/public/application/lib/format.ts diff --git a/x-pack/plugins/painless_lab/public/application/types.ts b/x-pack/platform/plugins/private/painless_lab/public/application/types.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/application/types.ts rename to x-pack/platform/plugins/private/painless_lab/public/application/types.ts diff --git a/x-pack/plugins/painless_lab/public/index.scss b/x-pack/platform/plugins/private/painless_lab/public/index.scss similarity index 100% rename from x-pack/plugins/painless_lab/public/index.scss rename to x-pack/platform/plugins/private/painless_lab/public/index.scss diff --git a/x-pack/plugins/painless_lab/public/index.ts b/x-pack/platform/plugins/private/painless_lab/public/index.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/index.ts rename to x-pack/platform/plugins/private/painless_lab/public/index.ts diff --git a/x-pack/plugins/painless_lab/public/links.ts b/x-pack/platform/plugins/private/painless_lab/public/links.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/links.ts rename to x-pack/platform/plugins/private/painless_lab/public/links.ts diff --git a/x-pack/plugins/painless_lab/public/plugin.tsx b/x-pack/platform/plugins/private/painless_lab/public/plugin.tsx similarity index 100% rename from x-pack/plugins/painless_lab/public/plugin.tsx rename to x-pack/platform/plugins/private/painless_lab/public/plugin.tsx diff --git a/x-pack/plugins/painless_lab/public/shared_imports.ts b/x-pack/platform/plugins/private/painless_lab/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/shared_imports.ts rename to x-pack/platform/plugins/private/painless_lab/public/shared_imports.ts diff --git a/x-pack/plugins/painless_lab/public/styles/_index.scss b/x-pack/platform/plugins/private/painless_lab/public/styles/_index.scss similarity index 94% rename from x-pack/plugins/painless_lab/public/styles/_index.scss rename to x-pack/platform/plugins/private/painless_lab/public/styles/_index.scss index 801f655fa7f4c..69c5c9a0c344d 100644 --- a/x-pack/plugins/painless_lab/public/styles/_index.scss +++ b/x-pack/platform/plugins/private/painless_lab/public/styles/_index.scss @@ -1,4 +1,4 @@ -@import '../../../../../src/core/public/mixins'; +@import '../../../../../../../src/core/public/mixins'; /** * This is a very brittle way of preventing the editor and other content from disappearing diff --git a/x-pack/plugins/painless_lab/public/types.ts b/x-pack/platform/plugins/private/painless_lab/public/types.ts similarity index 100% rename from x-pack/plugins/painless_lab/public/types.ts rename to x-pack/platform/plugins/private/painless_lab/public/types.ts diff --git a/x-pack/plugins/painless_lab/server/index.ts b/x-pack/platform/plugins/private/painless_lab/server/index.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/index.ts rename to x-pack/platform/plugins/private/painless_lab/server/index.ts diff --git a/x-pack/plugins/painless_lab/server/plugin.ts b/x-pack/platform/plugins/private/painless_lab/server/plugin.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/plugin.ts rename to x-pack/platform/plugins/private/painless_lab/server/plugin.ts diff --git a/x-pack/plugins/painless_lab/server/routes/api/execute.ts b/x-pack/platform/plugins/private/painless_lab/server/routes/api/execute.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/routes/api/execute.ts rename to x-pack/platform/plugins/private/painless_lab/server/routes/api/execute.ts diff --git a/x-pack/plugins/painless_lab/server/routes/api/index.ts b/x-pack/platform/plugins/private/painless_lab/server/routes/api/index.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/routes/api/index.ts rename to x-pack/platform/plugins/private/painless_lab/server/routes/api/index.ts diff --git a/x-pack/plugins/painless_lab/server/services/index.ts b/x-pack/platform/plugins/private/painless_lab/server/services/index.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/services/index.ts rename to x-pack/platform/plugins/private/painless_lab/server/services/index.ts diff --git a/x-pack/plugins/painless_lab/server/services/license.ts b/x-pack/platform/plugins/private/painless_lab/server/services/license.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/services/license.ts rename to x-pack/platform/plugins/private/painless_lab/server/services/license.ts diff --git a/x-pack/plugins/license_management/server/shared_imports.ts b/x-pack/platform/plugins/private/painless_lab/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/license_management/server/shared_imports.ts rename to x-pack/platform/plugins/private/painless_lab/server/shared_imports.ts diff --git a/x-pack/plugins/painless_lab/server/types.ts b/x-pack/platform/plugins/private/painless_lab/server/types.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/types.ts rename to x-pack/platform/plugins/private/painless_lab/server/types.ts diff --git a/x-pack/platform/plugins/private/painless_lab/tsconfig.json b/x-pack/platform/plugins/private/painless_lab/tsconfig.json new file mode 100644 index 0000000000000..5500aaa5ab492 --- /dev/null +++ b/x-pack/platform/plugins/private/painless_lab/tsconfig.json @@ -0,0 +1,28 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + ], + "kbn_references": [ + "@kbn/core", + "@kbn/dev-tools-plugin", + "@kbn/home-plugin", + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/licensing-plugin", + "@kbn/i18n", + "@kbn/monaco", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/code-editor", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/remote_clusters/README.md b/x-pack/platform/plugins/private/remote_clusters/README.md similarity index 100% rename from x-pack/plugins/remote_clusters/README.md rename to x-pack/platform/plugins/private/remote_clusters/README.md diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.helpers.tsx b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/add/remote_clusters_add.helpers.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.helpers.tsx rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/add/remote_clusters_add.helpers.tsx diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/add/special_characters.ts b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/add/special_characters.ts similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/add/special_characters.ts rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/add/special_characters.ts diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.helpers.tsx b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.helpers.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.helpers.tsx rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.helpers.tsx diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.test.tsx b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.test.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.test.tsx rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.test.tsx diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/http_requests.ts b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/http_requests.ts similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/http_requests.ts rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/http_requests.ts diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/index.ts b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/index.ts rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/index.ts diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/setup_environment.tsx b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/setup_environment.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/setup_environment.tsx rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/helpers/setup_environment.tsx diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/list/remote_clusters_list.helpers.js b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/list/remote_clusters_list.helpers.js similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/list/remote_clusters_list.helpers.js rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/list/remote_clusters_list.helpers.js diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/list/remote_clusters_list.test.js b/x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/list/remote_clusters_list.test.js similarity index 100% rename from x-pack/plugins/remote_clusters/__jest__/client_integration/list/remote_clusters_list.test.js rename to x-pack/platform/plugins/private/remote_clusters/__jest__/client_integration/list/remote_clusters_list.test.js diff --git a/x-pack/plugins/remote_clusters/common/constants.ts b/x-pack/platform/plugins/private/remote_clusters/common/constants.ts similarity index 100% rename from x-pack/plugins/remote_clusters/common/constants.ts rename to x-pack/platform/plugins/private/remote_clusters/common/constants.ts diff --git a/x-pack/plugins/remote_clusters/common/lib/cluster_serialization.test.ts b/x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/common/lib/cluster_serialization.test.ts rename to x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.test.ts diff --git a/x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts b/x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts similarity index 100% rename from x-pack/plugins/remote_clusters/common/lib/cluster_serialization.ts rename to x-pack/platform/plugins/private/remote_clusters/common/lib/cluster_serialization.ts diff --git a/x-pack/plugins/remote_clusters/common/lib/index.ts b/x-pack/platform/plugins/private/remote_clusters/common/lib/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/common/lib/index.ts rename to x-pack/platform/plugins/private/remote_clusters/common/lib/index.ts diff --git a/x-pack/plugins/remote_clusters/fixtures/remote_cluster.js b/x-pack/platform/plugins/private/remote_clusters/fixtures/remote_cluster.js similarity index 100% rename from x-pack/plugins/remote_clusters/fixtures/remote_cluster.js rename to x-pack/platform/plugins/private/remote_clusters/fixtures/remote_cluster.js diff --git a/x-pack/platform/plugins/private/remote_clusters/jest.config.js b/x-pack/platform/plugins/private/remote_clusters/jest.config.js new file mode 100644 index 0000000000000..8f206f2ba544d --- /dev/null +++ b/x-pack/platform/plugins/private/remote_clusters/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/remote_clusters'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/remote_clusters', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/remote_clusters/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/remote_clusters/kibana.jsonc b/x-pack/platform/plugins/private/remote_clusters/kibana.jsonc similarity index 100% rename from x-pack/plugins/remote_clusters/kibana.jsonc rename to x-pack/platform/plugins/private/remote_clusters/kibana.jsonc diff --git a/x-pack/plugins/remote_clusters/public/application/_hacks.scss b/x-pack/platform/plugins/private/remote_clusters/public/application/_hacks.scss similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/_hacks.scss rename to x-pack/platform/plugins/private/remote_clusters/public/application/_hacks.scss diff --git a/x-pack/plugins/remote_clusters/public/application/app.js b/x-pack/platform/plugins/private/remote_clusters/public/application/app.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/app.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/app.js diff --git a/x-pack/plugins/remote_clusters/public/application/app_context.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/app_context.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/app_context.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/app_context.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/constants/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/constants/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/constants/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/constants/index.ts diff --git a/x-pack/plugins/remote_clusters/public/application/constants/paths.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/constants/paths.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/constants/paths.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/constants/paths.ts diff --git a/x-pack/plugins/remote_clusters/public/application/constants/ui_metric.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/constants/ui_metric.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/constants/ui_metric.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/constants/ui_metric.ts diff --git a/x-pack/plugins/remote_clusters/public/application/index.d.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/index.d.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/index.d.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/index.d.ts diff --git a/x-pack/plugins/remote_clusters/public/application/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/configured_by_node_warning/configured_by_node_warning.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/configured_by_node_warning/configured_by_node_warning.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/configured_by_node_warning/configured_by_node_warning.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/configured_by_node_warning/configured_by_node_warning.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/configured_by_node_warning/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/configured_by_node_warning/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/configured_by_node_warning/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/configured_by_node_warning/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode_cloud.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode_cloud.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode_cloud.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode_cloud.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/index.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/proxy_connection.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/proxy_connection.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/proxy_connection.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/proxy_connection.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/sniff_connection.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/sniff_connection.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/sniff_connection.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/components/sniff_connection.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/index.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/remote_cluster_form.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/remote_cluster_form.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/remote_cluster_form.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/remote_cluster_form.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/request_flyout.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/request_flyout.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/request_flyout.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/request_flyout.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_name.test.ts.snap b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_name.test.ts.snap similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_name.test.ts.snap rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_name.test.ts.snap diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_node_connections.test.tsx.snap b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_node_connections.test.tsx.snap similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_node_connections.test.tsx.snap rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_node_connections.test.tsx.snap diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_proxy.test.ts.snap b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_proxy.test.ts.snap similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_proxy.test.ts.snap rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_proxy.test.ts.snap diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_seeds.test.ts.snap b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_seeds.test.ts.snap similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_seeds.test.ts.snap rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/__snapshots__/validate_seeds.test.ts.snap diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/index.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.test.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.test.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.test.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_address.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.test.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.test.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.test.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cluster.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cluster.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cluster.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cluster.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.test.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.test.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.test.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_name.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.test.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.test.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.test.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.test.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_node_connections.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.test.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.test.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.test.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_proxy.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.test.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.test.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.test.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seed.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.test.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.test.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.test.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_seeds.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_page_title/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_page_title/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_page_title/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_page_title/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_page_title/remote_cluster_page_title.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_page_title/remote_cluster_page_title.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_page_title/remote_cluster_page_title.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_page_title/remote_cluster_page_title.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/confirm_modal.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/confirm_modal.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/confirm_modal.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/confirm_modal.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/index.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/remote_cluster_setup_trust.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/remote_cluster_setup_trust.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/remote_cluster_setup_trust.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/components/remote_cluster_setup_trust/remote_cluster_setup_trust.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/index.d.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/index.d.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/index.d.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/index.d.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.container.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.container.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.container.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.container.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/remote_cluster_add.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/wizard_form.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/wizard_form.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_add/wizard_form.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_add/wizard_form.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_edit/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_edit/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_edit/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_edit/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.container.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.container.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.container.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.container.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_edit/remote_cluster_edit.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/connection_status.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/connection_status.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/connection_status.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/connection_status.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/connection_status/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.container.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.container.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.container.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.container.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/remove_cluster_button_provider/remove_cluster_button_provider.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/index.ts diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/security_model.tsx b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/security_model.tsx similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/security_model.tsx rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/components/security_model/security_model.tsx diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.container.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.container.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.container.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.container.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/detail_panel.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/detail_panel/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.container.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.container.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.container.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.container.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_list.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.container.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.container.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.container.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.container.js diff --git a/x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.js b/x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/sections/remote_cluster_list/remote_cluster_table/remote_cluster_table.js diff --git a/x-pack/plugins/remote_clusters/public/application/services/api.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/api.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/api.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/api.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/api_errors.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/api_errors.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/api_errors.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/api_errors.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/breadcrumb.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/breadcrumb.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/breadcrumb.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/breadcrumb.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/documentation.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/documentation.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/documentation.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/documentation.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/http.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/http.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/http.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/http.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/index.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/notification.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/notification.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/notification.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/notification.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/redirect.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/redirect.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/redirect.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/redirect.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/routing.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/routing.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/routing.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/routing.ts diff --git a/x-pack/plugins/remote_clusters/public/application/services/ui_metric.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/services/ui_metric.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/services/ui_metric.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/services/ui_metric.ts diff --git a/x-pack/plugins/remote_clusters/public/application/store/action_types.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/action_types.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/action_types.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/action_types.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/actions/add_cluster.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/add_cluster.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/actions/add_cluster.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/add_cluster.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/actions/detail_panel.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/detail_panel.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/actions/detail_panel.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/detail_panel.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/actions/edit_cluster.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/edit_cluster.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/actions/edit_cluster.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/edit_cluster.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/actions/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/actions/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/actions/load_clusters.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/load_clusters.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/actions/load_clusters.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/load_clusters.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/actions/refresh_clusters.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/refresh_clusters.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/actions/refresh_clusters.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/refresh_clusters.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/actions/remove_clusters.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/remove_clusters.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/actions/remove_clusters.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/actions/remove_clusters.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/index.d.ts b/x-pack/platform/plugins/private/remote_clusters/public/application/store/index.d.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/index.d.ts rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/index.d.ts diff --git a/x-pack/plugins/remote_clusters/public/application/store/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/middleware/detail_panel.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/middleware/detail_panel.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/middleware/detail_panel.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/middleware/detail_panel.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/middleware/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/middleware/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/middleware/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/middleware/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/reducers/add_cluster.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/add_cluster.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/reducers/add_cluster.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/add_cluster.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/reducers/clusters.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/clusters.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/reducers/clusters.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/clusters.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/reducers/detail_panel.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/detail_panel.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/reducers/detail_panel.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/detail_panel.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/reducers/edit_cluster.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/edit_cluster.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/reducers/edit_cluster.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/edit_cluster.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/reducers/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/reducers/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/reducers/remove_cluster.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/remove_cluster.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/reducers/remove_cluster.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/reducers/remove_cluster.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/selectors/index.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/selectors/index.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/selectors/index.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/selectors/index.js diff --git a/x-pack/plugins/remote_clusters/public/application/store/store.js b/x-pack/platform/plugins/private/remote_clusters/public/application/store/store.js similarity index 100% rename from x-pack/plugins/remote_clusters/public/application/store/store.js rename to x-pack/platform/plugins/private/remote_clusters/public/application/store/store.js diff --git a/x-pack/plugins/remote_clusters/public/assets/cloud_screenshot.png b/x-pack/platform/plugins/private/remote_clusters/public/assets/cloud_screenshot.png similarity index 100% rename from x-pack/plugins/remote_clusters/public/assets/cloud_screenshot.png rename to x-pack/platform/plugins/private/remote_clusters/public/assets/cloud_screenshot.png diff --git a/x-pack/plugins/remote_clusters/public/index.ts b/x-pack/platform/plugins/private/remote_clusters/public/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/index.ts rename to x-pack/platform/plugins/private/remote_clusters/public/index.ts diff --git a/x-pack/plugins/remote_clusters/public/locator.ts b/x-pack/platform/plugins/private/remote_clusters/public/locator.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/locator.ts rename to x-pack/platform/plugins/private/remote_clusters/public/locator.ts diff --git a/x-pack/plugins/remote_clusters/public/plugin.ts b/x-pack/platform/plugins/private/remote_clusters/public/plugin.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/plugin.ts rename to x-pack/platform/plugins/private/remote_clusters/public/plugin.ts diff --git a/x-pack/plugins/remote_clusters/public/shared_imports.ts b/x-pack/platform/plugins/private/remote_clusters/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/shared_imports.ts rename to x-pack/platform/plugins/private/remote_clusters/public/shared_imports.ts diff --git a/x-pack/plugins/remote_clusters/public/types.ts b/x-pack/platform/plugins/private/remote_clusters/public/types.ts similarity index 100% rename from x-pack/plugins/remote_clusters/public/types.ts rename to x-pack/platform/plugins/private/remote_clusters/public/types.ts diff --git a/x-pack/plugins/remote_clusters/server/config.ts b/x-pack/platform/plugins/private/remote_clusters/server/config.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/config.ts rename to x-pack/platform/plugins/private/remote_clusters/server/config.ts diff --git a/x-pack/plugins/remote_clusters/server/index.ts b/x-pack/platform/plugins/private/remote_clusters/server/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/index.ts rename to x-pack/platform/plugins/private/remote_clusters/server/index.ts diff --git a/x-pack/plugins/remote_clusters/server/lib/does_cluster_exist.ts b/x-pack/platform/plugins/private/remote_clusters/server/lib/does_cluster_exist.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/lib/does_cluster_exist.ts rename to x-pack/platform/plugins/private/remote_clusters/server/lib/does_cluster_exist.ts diff --git a/x-pack/plugins/remote_clusters/server/lib/license_pre_routing_factory/index.ts b/x-pack/platform/plugins/private/remote_clusters/server/lib/license_pre_routing_factory/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/lib/license_pre_routing_factory/index.ts rename to x-pack/platform/plugins/private/remote_clusters/server/lib/license_pre_routing_factory/index.ts diff --git a/x-pack/plugins/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.test.ts b/x-pack/platform/plugins/private/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.test.ts rename to x-pack/platform/plugins/private/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.test.ts diff --git a/x-pack/plugins/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.ts b/x-pack/platform/plugins/private/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.ts rename to x-pack/platform/plugins/private/remote_clusters/server/lib/license_pre_routing_factory/license_pre_routing_factory.ts diff --git a/x-pack/plugins/remote_clusters/server/plugin.ts b/x-pack/platform/plugins/private/remote_clusters/server/plugin.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/plugin.ts rename to x-pack/platform/plugins/private/remote_clusters/server/plugin.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/add_route.test.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/add_route.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/add_route.test.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/add_route.test.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/add_route.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/add_route.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/add_route.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/add_route.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/delete_route.test.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/delete_route.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/delete_route.test.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/delete_route.test.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/delete_route.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/delete_route.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/delete_route.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/delete_route.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/get_route.test.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/get_route.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/get_route.test.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/get_route.test.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/get_route.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/get_route.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/get_route.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/get_route.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/index.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/index.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/index.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/index.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/types.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/types.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/types.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/types.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/update_route.test.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/update_route.test.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/update_route.test.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/update_route.test.ts diff --git a/x-pack/plugins/remote_clusters/server/routes/api/update_route.ts b/x-pack/platform/plugins/private/remote_clusters/server/routes/api/update_route.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/routes/api/update_route.ts rename to x-pack/platform/plugins/private/remote_clusters/server/routes/api/update_route.ts diff --git a/x-pack/plugins/painless_lab/server/shared_imports.ts b/x-pack/platform/plugins/private/remote_clusters/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/painless_lab/server/shared_imports.ts rename to x-pack/platform/plugins/private/remote_clusters/server/shared_imports.ts diff --git a/x-pack/plugins/remote_clusters/server/types.ts b/x-pack/platform/plugins/private/remote_clusters/server/types.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/types.ts rename to x-pack/platform/plugins/private/remote_clusters/server/types.ts diff --git a/x-pack/platform/plugins/private/remote_clusters/tsconfig.json b/x-pack/platform/plugins/private/remote_clusters/tsconfig.json new file mode 100644 index 0000000000000..5676db4042f49 --- /dev/null +++ b/x-pack/platform/plugins/private/remote_clusters/tsconfig.json @@ -0,0 +1,42 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "__jest__/**/*", + "common/**/*", + "fixtures/**/*", + "public/**/*", + "server/**/*", + "../../../../../typings/**/*", + ], + "kbn_references": [ + "@kbn/core", + // required plugins + "@kbn/licensing-plugin", + "@kbn/management-plugin", + "@kbn/features-plugin", + // optional plugins + "@kbn/usage-collection-plugin", + "@kbn/cloud-plugin", + // required bundles + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/test-jest-helpers", + "@kbn/core-execution-context-browser-mocks", + "@kbn/i18n", + "@kbn/utility-types", + "@kbn/share-plugin", + "@kbn/core-http-browser", + "@kbn/analytics", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/expect", + "@kbn/shared-ux-router", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/rollup/README.md b/x-pack/platform/plugins/private/rollup/README.md similarity index 100% rename from x-pack/plugins/rollup/README.md rename to x-pack/platform/plugins/private/rollup/README.md diff --git a/x-pack/plugins/rollup/common/index.ts b/x-pack/platform/plugins/private/rollup/common/index.ts similarity index 100% rename from x-pack/plugins/rollup/common/index.ts rename to x-pack/platform/plugins/private/rollup/common/index.ts diff --git a/x-pack/plugins/rollup/common/ui_metric.ts b/x-pack/platform/plugins/private/rollup/common/ui_metric.ts similarity index 100% rename from x-pack/plugins/rollup/common/ui_metric.ts rename to x-pack/platform/plugins/private/rollup/common/ui_metric.ts diff --git a/x-pack/plugins/rollup/fixtures/index.js b/x-pack/platform/plugins/private/rollup/fixtures/index.js similarity index 100% rename from x-pack/plugins/rollup/fixtures/index.js rename to x-pack/platform/plugins/private/rollup/fixtures/index.js diff --git a/x-pack/plugins/rollup/fixtures/job.js b/x-pack/platform/plugins/private/rollup/fixtures/job.js similarity index 100% rename from x-pack/plugins/rollup/fixtures/job.js rename to x-pack/platform/plugins/private/rollup/fixtures/job.js diff --git a/x-pack/platform/plugins/private/rollup/jest.config.js b/x-pack/platform/plugins/private/rollup/jest.config.js new file mode 100644 index 0000000000000..59552e8149fcc --- /dev/null +++ b/x-pack/platform/plugins/private/rollup/jest.config.js @@ -0,0 +1,17 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/rollup'], + coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/rollup', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/rollup/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/rollup/kibana.jsonc b/x-pack/platform/plugins/private/rollup/kibana.jsonc similarity index 100% rename from x-pack/plugins/rollup/kibana.jsonc rename to x-pack/platform/plugins/private/rollup/kibana.jsonc diff --git a/x-pack/plugins/rollup/public/application.tsx b/x-pack/platform/plugins/private/rollup/public/application.tsx similarity index 100% rename from x-pack/plugins/rollup/public/application.tsx rename to x-pack/platform/plugins/private/rollup/public/application.tsx diff --git a/x-pack/plugins/rollup/public/crud_app/_crud_app.scss b/x-pack/platform/plugins/private/rollup/public/crud_app/_crud_app.scss similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/_crud_app.scss rename to x-pack/platform/plugins/private/rollup/public/crud_app/_crud_app.scss diff --git a/x-pack/plugins/rollup/public/crud_app/app.js b/x-pack/platform/plugins/private/rollup/public/crud_app/app.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/app.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/app.js diff --git a/x-pack/plugins/rollup/public/crud_app/constants/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/constants/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/constants/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/constants/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/constants/metrics_config.js b/x-pack/platform/plugins/private/rollup/public/crud_app/constants/metrics_config.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/constants/metrics_config.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/constants/metrics_config.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/deprecation_callout/deprecation_callout.tsx b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/deprecation_callout/deprecation_callout.tsx similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/deprecation_callout/deprecation_callout.tsx rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/deprecation_callout/deprecation_callout.tsx diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/deprecation_callout/index.ts b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/deprecation_callout/index.ts similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/deprecation_callout/index.ts rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/deprecation_callout/index.ts diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/field_list/field_list.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/field_list/field_list.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/field_list/field_list.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/field_list/field_list.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/field_list/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/field_list/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/field_list/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/field_list/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/confirm_delete_modal.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/confirm_delete_modal.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/confirm_delete_modal.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/confirm_delete_modal.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/confirm_delete_modal/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.container.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.container.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.container.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.container.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_action_menu/job_action_menu.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/job_details.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/job_details.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/job_details.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/job_details.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_histogram.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_histogram.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_histogram.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_histogram.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_json.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_json.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_json.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_json.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_metrics.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_metrics.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_metrics.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_metrics.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_request.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_request.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_request.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_request.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_summary.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_summary.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_summary.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_summary.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_terms.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_terms.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_details/tabs/tab_terms.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_details/tabs/tab_terms.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_status/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_status/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_status/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_status/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/components/job_status/job_status.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_status/job_status.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/components/job_status/job_status.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/components/job_status/job_status.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/job_create.container.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/job_create.container.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/job_create.container.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/job_create.container.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/job_create.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/job_create.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/job_create.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/job_create.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/navigation/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/navigation/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/navigation/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/navigation/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/navigation/navigation.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/navigation/navigation.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/navigation/navigation.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/navigation/navigation.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/components/field_chooser.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/components/field_chooser.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/components/field_chooser.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/components/field_chooser.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/components/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/components/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/components/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/components/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/components/step_error.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/components/step_error.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/components/step_error.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/components/step_error.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_date_histogram.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_date_histogram.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_date_histogram.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_date_histogram.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_histogram.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_histogram.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_histogram.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_histogram.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_logistics.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_logistics.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_logistics.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_logistics.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_metrics.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_metrics.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_metrics.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_metrics.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_review.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_review.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_review.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_review.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_terms.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_terms.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps/step_terms.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps/step_terms.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_field.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_field.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_field.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_field.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_interval.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_interval.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_interval.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_date_histogram_interval.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_histogram_interval.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_histogram_interval.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_histogram_interval.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_histogram_interval.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_id.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_id.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_id.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_id.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_index_pattern.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_index_pattern.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_index_pattern.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_index_pattern.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_metrics.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_metrics.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_metrics.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_metrics.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_cron.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_cron.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_cron.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_cron.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_delay.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_delay.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_delay.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_delay.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_page_size.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_page_size.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_page_size.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_create/steps_config/validate_rollup_page_size.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/deprecated_prompt.tsx b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/deprecated_prompt.tsx similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/deprecated_prompt.tsx rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/deprecated_prompt.tsx diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.container.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.container.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.container.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.container.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.test.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.test.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.test.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/detail_panel.test.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/detail_panel/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/detail_panel/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.container.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_list.container.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.container.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_list.container.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_list.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_list.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.test.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_list.test.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/job_list.test.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_list.test.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/job_table.container.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/job_table.container.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/job_table.container.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/job_table.container.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/job_table.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/job_table.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/job_table.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/job_table.js diff --git a/x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/job_table.test.js b/x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/job_table.test.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/sections/job_list/job_table/job_table.test.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/sections/job_list/job_table/job_table.test.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/api.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/api.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/api.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/api.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/api_errors.ts b/x-pack/platform/plugins/private/rollup/public/crud_app/services/api_errors.ts similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/api_errors.ts rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/api_errors.ts diff --git a/x-pack/plugins/rollup/public/crud_app/services/breadcrumbs.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/breadcrumbs.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/breadcrumbs.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/breadcrumbs.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/documentation_links.ts b/x-pack/platform/plugins/private/rollup/public/crud_app/services/documentation_links.ts similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/documentation_links.ts rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/documentation_links.ts diff --git a/x-pack/plugins/rollup/public/crud_app/services/filter_items.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/filter_items.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/filter_items.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/filter_items.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/flatten_panel_tree.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/flatten_panel_tree.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/flatten_panel_tree.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/flatten_panel_tree.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/format_fields.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/format_fields.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/format_fields.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/format_fields.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/http_provider.ts b/x-pack/platform/plugins/private/rollup/public/crud_app/services/http_provider.ts similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/http_provider.ts rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/http_provider.ts diff --git a/x-pack/plugins/rollup/public/crud_app/services/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/jobs.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/jobs.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/jobs.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/jobs.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/noticeable_delay.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/noticeable_delay.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/noticeable_delay.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/noticeable_delay.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/retype_metrics.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/retype_metrics.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/retype_metrics.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/retype_metrics.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/routing.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/routing.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/routing.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/routing.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/sort_table.js b/x-pack/platform/plugins/private/rollup/public/crud_app/services/sort_table.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/sort_table.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/sort_table.js diff --git a/x-pack/plugins/rollup/public/crud_app/services/track_ui_metric.ts b/x-pack/platform/plugins/private/rollup/public/crud_app/services/track_ui_metric.ts similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/services/track_ui_metric.ts rename to x-pack/platform/plugins/private/rollup/public/crud_app/services/track_ui_metric.ts diff --git a/x-pack/plugins/rollup/public/crud_app/store/action_types.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/action_types.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/action_types.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/action_types.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/change_job_status.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/change_job_status.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/change_job_status.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/change_job_status.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/clone_job.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/clone_job.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/clone_job.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/clone_job.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/create_job.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/create_job.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/create_job.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/create_job.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/delete_jobs.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/delete_jobs.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/delete_jobs.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/delete_jobs.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/detail_panel.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/detail_panel.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/detail_panel.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/detail_panel.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/load_jobs.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/load_jobs.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/load_jobs.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/load_jobs.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/refresh_jobs.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/refresh_jobs.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/refresh_jobs.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/refresh_jobs.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/actions/table_state.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/table_state.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/actions/table_state.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/actions/table_state.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/middleware/clone_job.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/middleware/clone_job.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/middleware/clone_job.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/middleware/clone_job.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/middleware/detail_panel.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/middleware/detail_panel.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/middleware/detail_panel.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/middleware/detail_panel.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/middleware/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/middleware/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/middleware/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/middleware/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/reducers/clone_job.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/clone_job.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/reducers/clone_job.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/clone_job.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/reducers/create_job.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/create_job.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/reducers/create_job.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/create_job.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/reducers/detail_panel.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/detail_panel.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/reducers/detail_panel.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/detail_panel.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/reducers/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/reducers/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/reducers/jobs.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/jobs.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/reducers/jobs.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/jobs.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/reducers/table_state.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/table_state.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/reducers/table_state.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/table_state.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/reducers/update_job.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/update_job.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/reducers/update_job.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/reducers/update_job.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/selectors/index.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/selectors/index.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/selectors/index.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/selectors/index.js diff --git a/x-pack/plugins/rollup/public/crud_app/store/store.js b/x-pack/platform/plugins/private/rollup/public/crud_app/store/store.js similarity index 100% rename from x-pack/plugins/rollup/public/crud_app/store/store.js rename to x-pack/platform/plugins/private/rollup/public/crud_app/store/store.js diff --git a/x-pack/plugins/rollup/public/extend_index_management/index.ts b/x-pack/platform/plugins/private/rollup/public/extend_index_management/index.ts similarity index 100% rename from x-pack/plugins/rollup/public/extend_index_management/index.ts rename to x-pack/platform/plugins/private/rollup/public/extend_index_management/index.ts diff --git a/x-pack/plugins/rollup/public/index.scss b/x-pack/platform/plugins/private/rollup/public/index.scss similarity index 100% rename from x-pack/plugins/rollup/public/index.scss rename to x-pack/platform/plugins/private/rollup/public/index.scss diff --git a/x-pack/plugins/rollup/public/index.ts b/x-pack/platform/plugins/private/rollup/public/index.ts similarity index 100% rename from x-pack/plugins/rollup/public/index.ts rename to x-pack/platform/plugins/private/rollup/public/index.ts diff --git a/x-pack/plugins/rollup/public/kibana_services.ts b/x-pack/platform/plugins/private/rollup/public/kibana_services.ts similarity index 100% rename from x-pack/plugins/rollup/public/kibana_services.ts rename to x-pack/platform/plugins/private/rollup/public/kibana_services.ts diff --git a/x-pack/plugins/rollup/public/plugin.ts b/x-pack/platform/plugins/private/rollup/public/plugin.ts similarity index 100% rename from x-pack/plugins/rollup/public/plugin.ts rename to x-pack/platform/plugins/private/rollup/public/plugin.ts diff --git a/x-pack/plugins/rollup/public/shared_imports.ts b/x-pack/platform/plugins/private/rollup/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/rollup/public/shared_imports.ts rename to x-pack/platform/plugins/private/rollup/public/shared_imports.ts diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/constants.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/constants.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/constants.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/constants.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/index.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/index.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/index.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/index.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/jest.mocks.tsx b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/jest.mocks.tsx similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/jest.mocks.tsx rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/jest.mocks.tsx diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/job_clone.helpers.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/job_clone.helpers.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/job_clone.helpers.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/job_clone.helpers.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/job_create.helpers.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/job_create.helpers.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/job_create.helpers.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/job_create.helpers.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/job_list.helpers.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/job_list.helpers.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/job_list.helpers.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/job_list.helpers.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/setup_context.tsx b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/setup_context.tsx similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/setup_context.tsx rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/setup_context.tsx diff --git a/x-pack/plugins/rollup/public/test/client_integration/helpers/setup_environment.ts b/x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/setup_environment.ts similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/helpers/setup_environment.ts rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/helpers/setup_environment.ts diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_clone.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_clone.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_create_clone.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_clone.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_date_histogram.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_date_histogram.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_create_date_histogram.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_date_histogram.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_histogram.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_histogram.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_create_histogram.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_histogram.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_logistics.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_logistics.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_create_logistics.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_logistics.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_metrics.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_metrics.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_create_metrics.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_metrics.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_review.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_review.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_create_review.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_review.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_create_terms.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_terms.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_create_terms.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_create_terms.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_list.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_list.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_list.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_list.test.js diff --git a/x-pack/plugins/rollup/public/test/client_integration/job_list_clone.test.js b/x-pack/platform/plugins/private/rollup/public/test/client_integration/job_list_clone.test.js similarity index 100% rename from x-pack/plugins/rollup/public/test/client_integration/job_list_clone.test.js rename to x-pack/platform/plugins/private/rollup/public/test/client_integration/job_list_clone.test.js diff --git a/x-pack/plugins/rollup/public/types.ts b/x-pack/platform/plugins/private/rollup/public/types.ts similarity index 100% rename from x-pack/plugins/rollup/public/types.ts rename to x-pack/platform/plugins/private/rollup/public/types.ts diff --git a/x-pack/plugins/rollup/server/collectors/helpers.test.ts b/x-pack/platform/plugins/private/rollup/server/collectors/helpers.test.ts similarity index 100% rename from x-pack/plugins/rollup/server/collectors/helpers.test.ts rename to x-pack/platform/plugins/private/rollup/server/collectors/helpers.test.ts diff --git a/x-pack/plugins/rollup/server/collectors/helpers.ts b/x-pack/platform/plugins/private/rollup/server/collectors/helpers.ts similarity index 100% rename from x-pack/plugins/rollup/server/collectors/helpers.ts rename to x-pack/platform/plugins/private/rollup/server/collectors/helpers.ts diff --git a/x-pack/plugins/rollup/server/collectors/index.ts b/x-pack/platform/plugins/private/rollup/server/collectors/index.ts similarity index 100% rename from x-pack/plugins/rollup/server/collectors/index.ts rename to x-pack/platform/plugins/private/rollup/server/collectors/index.ts diff --git a/x-pack/plugins/rollup/server/collectors/register.test.ts b/x-pack/platform/plugins/private/rollup/server/collectors/register.test.ts similarity index 100% rename from x-pack/plugins/rollup/server/collectors/register.test.ts rename to x-pack/platform/plugins/private/rollup/server/collectors/register.test.ts diff --git a/x-pack/plugins/rollup/server/collectors/register.ts b/x-pack/platform/plugins/private/rollup/server/collectors/register.ts similarity index 100% rename from x-pack/plugins/rollup/server/collectors/register.ts rename to x-pack/platform/plugins/private/rollup/server/collectors/register.ts diff --git a/x-pack/plugins/rollup/server/config.ts b/x-pack/platform/plugins/private/rollup/server/config.ts similarity index 100% rename from x-pack/plugins/rollup/server/config.ts rename to x-pack/platform/plugins/private/rollup/server/config.ts diff --git a/x-pack/plugins/rollup/server/index.ts b/x-pack/platform/plugins/private/rollup/server/index.ts similarity index 100% rename from x-pack/plugins/rollup/server/index.ts rename to x-pack/platform/plugins/private/rollup/server/index.ts diff --git a/x-pack/plugins/rollup/server/lib/format_es_error.ts b/x-pack/platform/plugins/private/rollup/server/lib/format_es_error.ts similarity index 100% rename from x-pack/plugins/rollup/server/lib/format_es_error.ts rename to x-pack/platform/plugins/private/rollup/server/lib/format_es_error.ts diff --git a/x-pack/plugins/rollup/server/plugin.ts b/x-pack/platform/plugins/private/rollup/server/plugin.ts similarity index 100% rename from x-pack/plugins/rollup/server/plugin.ts rename to x-pack/platform/plugins/private/rollup/server/plugin.ts diff --git a/x-pack/plugins/rollup/server/rollup_data_enricher.ts b/x-pack/platform/plugins/private/rollup/server/rollup_data_enricher.ts similarity index 100% rename from x-pack/plugins/rollup/server/rollup_data_enricher.ts rename to x-pack/platform/plugins/private/rollup/server/rollup_data_enricher.ts diff --git a/x-pack/plugins/rollup/server/routes/api/indices/index.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/indices/index.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/indices/index.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/indices/index.ts diff --git a/x-pack/plugins/rollup/server/routes/api/indices/register_get_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/indices/register_get_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/indices/register_get_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/indices/register_get_route.ts diff --git a/x-pack/plugins/rollup/server/routes/api/indices/register_validate_index_pattern_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/indices/register_validate_index_pattern_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/indices/register_validate_index_pattern_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/indices/register_validate_index_pattern_route.ts diff --git a/x-pack/plugins/rollup/server/routes/api/jobs/index.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/jobs/index.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/jobs/index.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/jobs/index.ts diff --git a/x-pack/plugins/rollup/server/routes/api/jobs/register_create_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_create_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/jobs/register_create_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_create_route.ts diff --git a/x-pack/plugins/rollup/server/routes/api/jobs/register_delete_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_delete_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/jobs/register_delete_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_delete_route.ts diff --git a/x-pack/plugins/rollup/server/routes/api/jobs/register_get_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_get_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/jobs/register_get_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_get_route.ts diff --git a/x-pack/plugins/rollup/server/routes/api/jobs/register_start_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_start_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/jobs/register_start_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_start_route.ts diff --git a/x-pack/plugins/rollup/server/routes/api/jobs/register_stop_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_stop_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/jobs/register_stop_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/jobs/register_stop_route.ts diff --git a/x-pack/plugins/rollup/server/routes/api/search/index.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/search/index.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/search/index.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/search/index.ts diff --git a/x-pack/plugins/rollup/server/routes/api/search/register_search_route.ts b/x-pack/platform/plugins/private/rollup/server/routes/api/search/register_search_route.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/api/search/register_search_route.ts rename to x-pack/platform/plugins/private/rollup/server/routes/api/search/register_search_route.ts diff --git a/x-pack/plugins/rollup/server/routes/index.ts b/x-pack/platform/plugins/private/rollup/server/routes/index.ts similarity index 100% rename from x-pack/plugins/rollup/server/routes/index.ts rename to x-pack/platform/plugins/private/rollup/server/routes/index.ts diff --git a/x-pack/plugins/rollup/server/services/add_base_path.ts b/x-pack/platform/plugins/private/rollup/server/services/add_base_path.ts similarity index 100% rename from x-pack/plugins/rollup/server/services/add_base_path.ts rename to x-pack/platform/plugins/private/rollup/server/services/add_base_path.ts diff --git a/x-pack/plugins/rollup/server/services/index.ts b/x-pack/platform/plugins/private/rollup/server/services/index.ts similarity index 100% rename from x-pack/plugins/rollup/server/services/index.ts rename to x-pack/platform/plugins/private/rollup/server/services/index.ts diff --git a/x-pack/plugins/rollup/server/services/license.ts b/x-pack/platform/plugins/private/rollup/server/services/license.ts similarity index 100% rename from x-pack/plugins/rollup/server/services/license.ts rename to x-pack/platform/plugins/private/rollup/server/services/license.ts diff --git a/x-pack/plugins/rollup/server/shared_imports.ts b/x-pack/platform/plugins/private/rollup/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/rollup/server/shared_imports.ts rename to x-pack/platform/plugins/private/rollup/server/shared_imports.ts diff --git a/x-pack/plugins/rollup/server/types.ts b/x-pack/platform/plugins/private/rollup/server/types.ts similarity index 100% rename from x-pack/plugins/rollup/server/types.ts rename to x-pack/platform/plugins/private/rollup/server/types.ts diff --git a/x-pack/platform/plugins/private/rollup/tsconfig.json b/x-pack/platform/plugins/private/rollup/tsconfig.json new file mode 100644 index 0000000000000..38d87b951a44d --- /dev/null +++ b/x-pack/platform/plugins/private/rollup/tsconfig.json @@ -0,0 +1,42 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "fixtures/**/*", + "public/**/*", + "server/**/*", + ], + "kbn_references": [ + "@kbn/core", + // required plugins + "@kbn/management-plugin", + "@kbn/licensing-plugin", + "@kbn/features-plugin", + // optional plugins + "@kbn/home-plugin", + "@kbn/index-management-plugin", + "@kbn/usage-collection-plugin", + // required bundles + "@kbn/kibana-utils-plugin", + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/data-plugin", + "@kbn/test-jest-helpers", + "@kbn/analytics", + "@kbn/i18n", + "@kbn/core-http-browser", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/shared-ux-router", + "@kbn/data-views-plugin", + "@kbn/react-kibana-context-render", + "@kbn/rollup", + + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/platform/plugins/private/runtime_fields/README.md b/x-pack/platform/plugins/private/runtime_fields/README.md new file mode 100644 index 0000000000000..c4e657fdb3b44 --- /dev/null +++ b/x-pack/platform/plugins/private/runtime_fields/README.md @@ -0,0 +1,239 @@ +# Runtime fields + +Welcome to the home of the runtime field editor and everything related to runtime fields! + +## The runtime field editor + +### Integration + +The recommended way to integrate the runtime fields editor is by adding a plugin dependency to the `"runtimeFields"` x-pack plugin. This way you will be able to lazy load the editor when it is required and it will not increment the bundle size of your plugin. + +```js +// 1. Add the plugin as a dependency in your kibana.json +{ + ... + "requiredBundles": [ + "runtimeFields", + ... + ] +} + +// 2. Access it in your plugin setup() +export class MyPlugin { + setup(core, { runtimeFields }) { + // logic to provide it to your app, probably through context + } +} + +// 3. Load the editor and open it anywhere in your app +const MyComponent = () => { + // Access the plugin through context + const { runtimeFields } = useAppPlugins(); + + // Ref of the handler to close the editor + const closeRuntimeFieldEditor = useRef(() => {}); + + const saveRuntimeField = (field: RuntimeField) => { + // Do something with the field + // See interface returned in @returns section below + }; + + const openRuntimeFieldsEditor = async() => { + // Lazy load the editor + const { openEditor } = await runtimeFields.loadEditor(); + + closeRuntimeFieldEditor.current = openEditor({ + onSave: saveRuntimeField, + /* defaultValue: optional field to edit */ + /* ctx: Context -- see section below */ + }); + }; + + useEffect(() => { + return () => { + // Make sure to remove the editor when the component unmounts + closeRuntimeFieldEditor.current(); + }; + }, []); + + return ( + <button onClick={openRuntimeFieldsEditor}>Add field</button> + ) +} +``` + +#### `@returns` + +You get back a `RuntimeField` object with the following interface + +```ts +interface RuntimeField { + name: string; + type: RuntimeType; // 'long' | 'boolean' ... + script: { + source: string; + }; +} +``` + +#### Context object + +You can provide a context object to the runtime field editor. It has the following interface + +```ts +interface Context { + /** An array of field name not allowed. You would probably provide an array of existing runtime fields + * to prevent the user creating a field with the same name. + */ + namesNotAllowed?: string[]; + /** + * An array of existing concrete fields. If the user gives a name to the runtime + * field that matches one of the concrete fields, a callout will be displayed + * to indicate that this runtime field will shadow the concrete field. + * This array is also used to provide the list of field autocomplete suggestions to the code editor + */ + existingConcreteFields?: Array<{ + name: string; + type: string; + }>; +} +``` + +#### Other type of integration + +The runtime field editor is also exported as static React component that you can import into your components. The editor is exported in 2 flavours: + +- As the content of a `<EuiFlyout />` (it contains a flyout header and footer) +- As a standalone component that you can inline anywhere + +**Note:** The runtime field editor uses the `<CodeEditor />` that has a dependency on the `Provider` from the `"kibana_react"` plugin. If your app is not already wrapped by this provider you will need to add it at least around the runtime field editor. You can see an example in the ["Using the core.overlays.openFlyout()"](#using-the-coreoverlaysopenflyout) example below. + +### Content of a `<EuiFlyout />` + +```js +import React, { useState } from 'react'; +import { EuiFlyoutBody, EuiButton } from '@elastic/eui'; +import { RuntimeFieldEditorFlyoutContent, RuntimeField } from '../runtime_fields/public'; + +const MyComponent = () => { + const { docLinksStart } = useCoreContext(); // access the core start service + const [isFlyoutVisilbe, setIsFlyoutVisible] = useState(false); + + const saveRuntimeField = useCallback((field: RuntimeField) => { + // Do something with the field + }, []); + + return ( + <> + <EuiButton onClick={() => setIsFlyoutVisible(true)}>Create field</EuiButton> + + {isFlyoutVisible && ( + <EuiFlyout onClose={() => setIsFlyoutVisible(false)}> + <RuntimeFieldEditorFlyoutContent + onSave={saveRuntimeField} + onCancel={() => setIsFlyoutVisible(false)} + docLinks={docLinksStart} + defaultValue={/*optional runtime field to edit*/} + ctx={/*optional context object -- see section above*/} + /> + </EuiFlyout> + )} + </> + ) +} +``` + +#### Using the `core.overlays.openFlyout()` + +As an alternative you can open the flyout with the `openFlyout()` helper from core. + +```js +import React, { useRef } from 'react'; +import { EuiButton } from '@elastic/eui'; +import { OverlayRef } from 'src/core/public'; + +import { createKibanaReactContext, toMountPoint } from '../../../../src/plugins/kibana_react/public'; +import { RuntimeFieldEditorFlyoutContent, RuntimeField } from '../runtime_fields/public'; + +const MyComponent = () => { + // Access the core start service + const { docLinksStart, theme, overlays, uiSettings } = useCoreContext(); + const flyoutEditor = useRef<OverlayRef | null>(null); + + const { openFlyout } = overlays; + + const saveRuntimeField = useCallback((field: RuntimeField) => { + // Do something with the field + }, []); + + const openRuntimeFieldEditor = useCallback(() => { + const { Provider: KibanaReactContextProvider } = createKibanaReactContext({ uiSettings }); + + flyoutEditor.current = openFlyout( + toMountPoint( + <KibanaReactContextProvider> + <RuntimeFieldEditorFlyoutContent + onSave={saveRuntimeField} + onCancel={() => flyoutEditor.current?.close()} + docLinks={docLinksStart} + defaultValue={defaultRuntimeField} + ctx={/*optional context object -- see section above*/} + /> + </KibanaReactContextProvider>, + { theme$: theme.theme$ } + ) + ); + }, [openFlyout, saveRuntimeField, uiSettings]); + + return ( + <> + <EuiButton onClick={openRuntimeFieldEditor}>Create field</EuiButton> + </> + ) +} +``` + +### Standalone component + +```js +import React, { useState } from 'react'; +import { EuiButton, EuiSpacer } from '@elastic/eui'; +import { RuntimeFieldEditor, RuntimeField, RuntimeFieldFormState } from '../runtime_fields/public'; + +const MyComponent = () => { + const { docLinksStart } = useCoreContext(); // access the core start service + const [runtimeFieldFormState, setRuntimeFieldFormState] = useState<RuntimeFieldFormState>({ + isSubmitted: false, + isValid: undefined, + submit: async() => Promise.resolve({ isValid: false, data: {} as RuntimeField }) + }); + + const { submit, isValid: isFormValid, isSubmitted } = runtimeFieldFormState; + + const saveRuntimeField = useCallback(async () => { + const { isValid, data } = await submit(); + if (isValid) { + // Do something with the field (data) + } + }, [submit]); + + return ( + <> + <RuntimeFieldEditor + onChange={setRuntimeFieldFormState} + docLinks={docLinksStart} + defaultValue={/*optional runtime field to edit*/} + ctx={/*optional context object -- see section above*/} + /> + + <EuiSpacer /> + + <EuiButton + onClick={saveRuntimeField} + disabled={isSubmitted && !isFormValid}> + Save field + </EuiButton> + </> + ) +} +``` diff --git a/x-pack/platform/plugins/private/runtime_fields/jest.config.js b/x-pack/platform/plugins/private/runtime_fields/jest.config.js new file mode 100644 index 0000000000000..b31a02448f969 --- /dev/null +++ b/x-pack/platform/plugins/private/runtime_fields/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/runtime_fields'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/runtime_fields', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/runtime_fields/public/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/runtime_fields/kibana.jsonc b/x-pack/platform/plugins/private/runtime_fields/kibana.jsonc similarity index 100% rename from x-pack/plugins/runtime_fields/kibana.jsonc rename to x-pack/platform/plugins/private/runtime_fields/kibana.jsonc diff --git a/x-pack/plugins/runtime_fields/public/__jest__/setup_environment.tsx b/x-pack/platform/plugins/private/runtime_fields/public/__jest__/setup_environment.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/__jest__/setup_environment.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/__jest__/setup_environment.tsx diff --git a/x-pack/plugins/runtime_fields/public/components/index.ts b/x-pack/platform/plugins/private/runtime_fields/public/components/index.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/index.ts rename to x-pack/platform/plugins/private/runtime_fields/public/components/index.ts diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_editor/index.ts b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/index.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_editor/index.ts rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/index.ts diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.test.tsx b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.test.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.test.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.test.tsx diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor/runtime_field_editor.tsx diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/index.ts b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/index.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/index.ts rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/index.ts diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.test.tsx b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.test.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.test.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.test.tsx diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_editor_flyout_content/runtime_field_editor_flyout_content.tsx diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_form/index.ts b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/index.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_form/index.ts rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/index.ts diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.test.tsx b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.test.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.test.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.test.tsx diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/runtime_field_form.tsx diff --git a/x-pack/plugins/runtime_fields/public/components/runtime_field_form/schema.ts b/x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/schema.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/components/runtime_field_form/schema.ts rename to x-pack/platform/plugins/private/runtime_fields/public/components/runtime_field_form/schema.ts diff --git a/x-pack/plugins/runtime_fields/public/constants.ts b/x-pack/platform/plugins/private/runtime_fields/public/constants.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/constants.ts rename to x-pack/platform/plugins/private/runtime_fields/public/constants.ts diff --git a/x-pack/plugins/runtime_fields/public/index.ts b/x-pack/platform/plugins/private/runtime_fields/public/index.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/index.ts rename to x-pack/platform/plugins/private/runtime_fields/public/index.ts diff --git a/x-pack/plugins/runtime_fields/public/lib/documentation.ts b/x-pack/platform/plugins/private/runtime_fields/public/lib/documentation.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/lib/documentation.ts rename to x-pack/platform/plugins/private/runtime_fields/public/lib/documentation.ts diff --git a/x-pack/plugins/runtime_fields/public/lib/index.ts b/x-pack/platform/plugins/private/runtime_fields/public/lib/index.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/lib/index.ts rename to x-pack/platform/plugins/private/runtime_fields/public/lib/index.ts diff --git a/x-pack/plugins/runtime_fields/public/load_editor.tsx b/x-pack/platform/plugins/private/runtime_fields/public/load_editor.tsx similarity index 100% rename from x-pack/plugins/runtime_fields/public/load_editor.tsx rename to x-pack/platform/plugins/private/runtime_fields/public/load_editor.tsx diff --git a/x-pack/plugins/runtime_fields/public/plugin.test.ts b/x-pack/platform/plugins/private/runtime_fields/public/plugin.test.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/plugin.test.ts rename to x-pack/platform/plugins/private/runtime_fields/public/plugin.test.ts diff --git a/x-pack/plugins/runtime_fields/public/plugin.ts b/x-pack/platform/plugins/private/runtime_fields/public/plugin.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/plugin.ts rename to x-pack/platform/plugins/private/runtime_fields/public/plugin.ts diff --git a/x-pack/plugins/runtime_fields/public/shared_imports.ts b/x-pack/platform/plugins/private/runtime_fields/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/shared_imports.ts rename to x-pack/platform/plugins/private/runtime_fields/public/shared_imports.ts diff --git a/x-pack/plugins/runtime_fields/public/test_utils.ts b/x-pack/platform/plugins/private/runtime_fields/public/test_utils.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/test_utils.ts rename to x-pack/platform/plugins/private/runtime_fields/public/test_utils.ts diff --git a/x-pack/plugins/runtime_fields/public/types.ts b/x-pack/platform/plugins/private/runtime_fields/public/types.ts similarity index 100% rename from x-pack/plugins/runtime_fields/public/types.ts rename to x-pack/platform/plugins/private/runtime_fields/public/types.ts diff --git a/x-pack/platform/plugins/private/runtime_fields/tsconfig.json b/x-pack/platform/plugins/private/runtime_fields/tsconfig.json new file mode 100644 index 0000000000000..1dd95411649aa --- /dev/null +++ b/x-pack/platform/plugins/private/runtime_fields/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "public/**/*", + "../../../../../typings/**/*", + ], + "kbn_references": [ + "@kbn/core", + "@kbn/es-ui-shared-plugin", + "@kbn/kibana-react-plugin", + "@kbn/test-jest-helpers", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/monaco", + "@kbn/code-editor", + "@kbn/code-editor-mock", + "@kbn/react-kibana-mount", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/snapshot_restore/README.md b/x-pack/platform/plugins/private/snapshot_restore/README.md similarity index 100% rename from x-pack/plugins/snapshot_restore/README.md rename to x-pack/platform/plugins/private/snapshot_restore/README.md diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/constant.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/constant.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/constant.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/constant.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/home.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/home.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/home.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/home.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/http_requests.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/http_requests.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/http_requests.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/http_requests.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/index.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/index.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/mocks.tsx b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/mocks.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/mocks.tsx rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/mocks.tsx diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_add.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_add.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_add.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_add.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_edit.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_edit.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_edit.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_edit.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_form.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_form.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_form.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_form.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_list.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_list.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/policy_list.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/policy_list.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/repository_add.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/repository_add.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/repository_add.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/repository_add.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/repository_edit.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/repository_edit.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/repository_edit.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/repository_edit.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/restore_snapshot.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/restore_snapshot.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/restore_snapshot.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/restore_snapshot.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/setup_environment.tsx b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/setup_environment.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/setup_environment.tsx rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/setup_environment.tsx diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/snapshot_list.helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/snapshot_list.helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/helpers/snapshot_list.helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/helpers/snapshot_list.helpers.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/home.test.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/home.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/home.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/home.test.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/policy_add.test.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/policy_add.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/policy_add.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/policy_add.test.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/policy_edit.test.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/policy_edit.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/policy_edit.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/policy_edit.test.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/policy_list.test.tsx b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/policy_list.test.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/policy_list.test.tsx rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/policy_list.test.tsx diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/repository_add.test.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/repository_add.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/repository_add.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/repository_add.test.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/repository_edit.test.tsx b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/repository_edit.test.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/repository_edit.test.tsx rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/repository_edit.test.tsx diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/restore_snapshot.test.ts b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/restore_snapshot.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/restore_snapshot.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/restore_snapshot.test.ts diff --git a/x-pack/plugins/snapshot_restore/__jest__/client_integration/snapshot_list.test.tsx b/x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/snapshot_list.test.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/__jest__/client_integration/snapshot_list.test.tsx rename to x-pack/platform/plugins/private/snapshot_restore/__jest__/client_integration/snapshot_list.test.tsx diff --git a/x-pack/plugins/snapshot_restore/common/constants.ts b/x-pack/platform/plugins/private/snapshot_restore/common/constants.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/constants.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/constants.ts diff --git a/x-pack/platform/plugins/private/snapshot_restore/common/index.ts b/x-pack/platform/plugins/private/snapshot_restore/common/index.ts new file mode 100644 index 0000000000000..4607eb0da935f --- /dev/null +++ b/x-pack/platform/plugins/private/snapshot_restore/common/index.ts @@ -0,0 +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. + */ + +// TODO: https://github.com/elastic/kibana/issues/110892 + +export * from './constants'; diff --git a/x-pack/plugins/snapshot_restore/common/lib/flatten.test.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/flatten.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/flatten.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/flatten.test.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/flatten.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/flatten.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/flatten.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/flatten.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/index.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/index.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/is_data_stream_backing_index.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/is_data_stream_backing_index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/is_data_stream_backing_index.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/is_data_stream_backing_index.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/policy_serialization.test.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/policy_serialization.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/policy_serialization.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/policy_serialization.test.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/policy_serialization.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/policy_serialization.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/policy_serialization.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/policy_serialization.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/restore_settings_serialization.test.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/restore_settings_serialization.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/restore_settings_serialization.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/restore_settings_serialization.test.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/restore_settings_serialization.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/restore_settings_serialization.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/restore_settings_serialization.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/restore_settings_serialization.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/snapshot_serialization.test.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/snapshot_serialization.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/snapshot_serialization.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/snapshot_serialization.test.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/snapshot_serialization.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/snapshot_serialization.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/snapshot_serialization.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/snapshot_serialization.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/time_serialization.test.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/time_serialization.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/time_serialization.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/time_serialization.test.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/time_serialization.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/time_serialization.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/time_serialization.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/time_serialization.ts diff --git a/x-pack/plugins/snapshot_restore/common/lib/utils.ts b/x-pack/platform/plugins/private/snapshot_restore/common/lib/utils.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/lib/utils.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/lib/utils.ts diff --git a/x-pack/plugins/snapshot_restore/common/types/index.ts b/x-pack/platform/plugins/private/snapshot_restore/common/types/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/types/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/types/index.ts diff --git a/x-pack/plugins/snapshot_restore/common/types/indices.ts b/x-pack/platform/plugins/private/snapshot_restore/common/types/indices.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/types/indices.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/types/indices.ts diff --git a/x-pack/plugins/snapshot_restore/common/types/policy.ts b/x-pack/platform/plugins/private/snapshot_restore/common/types/policy.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/types/policy.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/types/policy.ts diff --git a/x-pack/plugins/snapshot_restore/common/types/repository.ts b/x-pack/platform/plugins/private/snapshot_restore/common/types/repository.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/types/repository.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/types/repository.ts diff --git a/x-pack/plugins/snapshot_restore/common/types/restore.ts b/x-pack/platform/plugins/private/snapshot_restore/common/types/restore.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/types/restore.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/types/restore.ts diff --git a/x-pack/plugins/snapshot_restore/common/types/snapshot.ts b/x-pack/platform/plugins/private/snapshot_restore/common/types/snapshot.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/common/types/snapshot.ts rename to x-pack/platform/plugins/private/snapshot_restore/common/types/snapshot.ts diff --git a/x-pack/platform/plugins/private/snapshot_restore/jest.config.js b/x-pack/platform/plugins/private/snapshot_restore/jest.config.js new file mode 100644 index 0000000000000..6708784cd706d --- /dev/null +++ b/x-pack/platform/plugins/private/snapshot_restore/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/snapshot_restore'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/snapshot_restore', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/snapshot_restore/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/snapshot_restore/kibana.jsonc b/x-pack/platform/plugins/private/snapshot_restore/kibana.jsonc similarity index 100% rename from x-pack/plugins/snapshot_restore/kibana.jsonc rename to x-pack/platform/plugins/private/snapshot_restore/kibana.jsonc diff --git a/x-pack/plugins/snapshot_restore/public/application/app.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/app.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/app.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/app.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/app_context.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/app_context.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/app_context.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/app_context.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/app_providers.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/app_providers.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/app_providers.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/app_providers.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/collapsible_data_streams_list.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_data_streams_list.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/collapsible_data_streams_list.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_data_streams_list.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/collapsible_feature_states.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_feature_states.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/collapsible_feature_states.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_feature_states.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/collapsible_indices_list.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_indices_list.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/collapsible_indices_list.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/collapsible_indices_list.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.test.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.test.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/collapsible_lists/use_collapsible_list.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/data_placeholder.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/data_placeholder.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/data_placeholder.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/data_placeholder.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/data_stream_badge.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/data_stream_badge.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/data_stream_badge.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/data_stream_badge.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/disable_tooltip.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/disable_tooltip.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/disable_tooltip.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/disable_tooltip.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/feature_states_form_field/feature_states_form_field.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/feature_states_form_field/feature_states_form_field.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/feature_states_form_field/feature_states_form_field.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/feature_states_form_field/feature_states_form_field.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/feature_states_form_field/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/feature_states_form_field/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/feature_states_form_field/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/feature_states_form_field/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/formatted_date_time.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/formatted_date_time.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/formatted_date_time.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/formatted_date_time.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/lib/helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/lib/helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/lib/helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/lib/helpers.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/lib/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/lib/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/lib/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/lib/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/loading.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/loading.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/loading.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/loading.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_delete_provider.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_delete_provider.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_delete_provider.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_delete_provider.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_execute_provider.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_execute_provider.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_execute_provider.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_execute_provider.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/_policy_form.scss b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/_policy_form.scss similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/_policy_form.scss rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/_policy_form.scss diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/navigation.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/navigation.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/navigation.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/navigation.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/policy_form.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/policy_form.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/policy_form.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/policy_form.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_logistics.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_logistics.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_logistics.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_logistics.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_retention.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_retention.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_retention.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_retention.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_review.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_review.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_review.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_review.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/include_feature_states_field.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/include_feature_states_field.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/include_feature_states_field.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/include_feature_states_field.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_feature_states_field/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/include_global_state_field.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/include_global_state_field.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/include_global_state_field.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/include_global_state_field.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/include_global_state_field/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/data_streams_and_indices_list_help_text.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/data_streams_and_indices_list_help_text.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/data_streams_and_indices_list_help_text.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/data_streams_and_indices_list_help_text.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.test.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.test.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/helpers.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/indices_and_data_streams_field.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/indices_and_data_streams_field.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/indices_and_data_streams_field.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/fields/indices_and_data_streams_field/indices_and_data_streams_field.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/step_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/step_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/policy_form/steps/step_settings/step_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/policy_form/steps/step_settings/step_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_delete_provider.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_delete_provider.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_delete_provider.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_delete_provider.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/repository_form.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/repository_form.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/repository_form.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/repository_form.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/step_one.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/step_one.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/step_one.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/step_one.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/step_two.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/step_two.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/step_two.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/step_two.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/azure_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/azure_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/azure_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/azure_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/chunk_size.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/chunk_size.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/chunk_size.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/chunk_size.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/max_restore.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/max_restore.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/max_restore.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/max_restore.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/max_snapshots.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/max_snapshots.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/common/max_snapshots.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/common/max_snapshots.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/fs_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/fs_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/fs_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/fs_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/gcs_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/gcs_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/gcs_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/gcs_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/hdfs_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/hdfs_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/hdfs_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/hdfs_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/index.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/index.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/index.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/index.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/readonly_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/readonly_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/readonly_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/readonly_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/s3_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/s3_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_form/type_settings/s3_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_form/type_settings/s3_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_type_logo.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_type_logo.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_type_logo.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_type_logo.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/repository_verification_badge.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_verification_badge.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/repository_verification_badge.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/repository_verification_badge.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/_restore_snapshot_form.scss b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/_restore_snapshot_form.scss similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/_restore_snapshot_form.scss rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/_restore_snapshot_form.scss diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/navigation.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/navigation.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/navigation.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/navigation.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/restore_snapshot_form.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/restore_snapshot_form.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/restore_snapshot_form.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/restore_snapshot_form.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_and_indices_list_help_text.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_and_indices_list_help_text.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_and_indices_list_help_text.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_and_indices_list_help_text.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_global_state_call_out.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_global_state_call_out.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_global_state_call_out.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/data_streams_global_state_call_out.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/step_logistics.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/step_logistics.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/step_logistics.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/step_logistics.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/system_indices_overwritten_callout.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/system_indices_overwritten_callout.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/system_indices_overwritten_callout.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_logistics/system_indices_overwritten_callout.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_review.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_settings.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_settings.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_settings.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/restore_snapshot_form/steps/step_settings.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/retention_execute_modal_provider.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/retention_execute_modal_provider.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/retention_execute_modal_provider.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/retention_execute_modal_provider.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/retention_update_modal_provider.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/retention_update_modal_provider.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/retention_update_modal_provider.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/retention_update_modal_provider.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/snapshot_delete_provider.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/snapshot_delete_provider.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/snapshot_delete_provider.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/snapshot_delete_provider.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/summaries/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/summaries/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/summaries/policies/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/policies/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/summaries/policies/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/policies/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/summaries/policies/policy_feature_states_summary.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/policies/policy_feature_states_summary.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/summaries/policies/policy_feature_states_summary.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/policies/policy_feature_states_summary.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/components/summaries/snapshots/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/snapshots/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/summaries/snapshots/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/snapshots/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/components/summaries/snapshots/snapshot_feature_states_summary.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/snapshots/snapshot_feature_states_summary.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/components/summaries/snapshots/snapshot_feature_states_summary.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/components/summaries/snapshots/snapshot_feature_states_summary.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/constants/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/constants/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/constants/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/constants/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/index.scss b/x-pack/platform/plugins/private/snapshot_restore/public/application/index.scss similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/index.scss rename to x-pack/platform/plugins/private/snapshot_restore/public/application/index.scss diff --git a/x-pack/plugins/snapshot_restore/public/application/index.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/index.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/index.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/index.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/lib/attempt_to_uri_decode.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/lib/attempt_to_uri_decode.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/lib/attempt_to_uri_decode.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/lib/attempt_to_uri_decode.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/lib/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/lib/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/lib/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/lib/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/lib/snapshot_list_params.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/lib/snapshot_list_params.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/lib/snapshot_list_params.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/lib/snapshot_list_params.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/lib/type_to_doc_url.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/lib/type_to_doc_url.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/lib/type_to_doc_url.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/lib/type_to_doc_url.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/lib/use_decoded_params.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/lib/use_decoded_params.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/lib/use_decoded_params.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/lib/use_decoded_params.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/mount_management_section.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/mount_management_section.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/mount_management_section.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/mount_management_section.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/_home.scss b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/_home.scss similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/_home.scss rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/_home.scss diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/home.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/home.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/home.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/home.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/policy_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/policy_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/policy_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/policy_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_history.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_history.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_history.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_history.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_summary.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_summary.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_summary.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_details/tabs/tab_summary.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_list.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_list.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_list.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_list.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/policy_retention_schedule.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/policy_retention_schedule.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/policy_retention_schedule.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_retention_schedule/policy_retention_schedule.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_table/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_table/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_table/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_table/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_table/policy_table.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_table/policy_table.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/policy_list/policy_table/policy_table.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/policy_list/policy_table/policy_table.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/repository_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/repository_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/repository_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/repository_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/azure_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/azure_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/azure_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/azure_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/default_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/default_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/default_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/default_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/fs_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/fs_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/fs_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/fs_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/gcs_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/gcs_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/gcs_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/gcs_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/hdfs_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/hdfs_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/hdfs_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/hdfs_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/index.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/index.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/index.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/index.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/readonly_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/readonly_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/readonly_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/readonly_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/s3_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/s3_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/s3_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_details/type_details/s3_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_list.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_list.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_list.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_list.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_table/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_table/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_table/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_table/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_table/repository_table.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_table/repository_table.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/repository_list/repository_table/repository_table.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/repository_list/repository_table/repository_table.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_list.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_list.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_list.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_list.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/restore_table.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/shards_table.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/shards_table.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_table/shards_table.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/restore_list/restore_table/shards_table.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_empty_prompt.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_empty_prompt.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_empty_prompt.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_empty_prompt.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_error.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_error.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_error.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/repository_error.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_empty_prompt.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_empty_prompt.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_empty_prompt.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_empty_prompt.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_search_bar.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_search_bar.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_search_bar.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_search_bar.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_table.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_table.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_table.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/components/snapshot_table.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/snapshot_details.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/snapshot_details.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/snapshot_details.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/snapshot_details.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/snapshot_state.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/snapshot_state.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/snapshot_state.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/snapshot_state.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_failures.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_failures.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_failures.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_failures.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_summary.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_summary.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_summary.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_details/tabs/tab_summary.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_list.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_list.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_list.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/home/snapshot_list/snapshot_list.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/policy_add/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_add/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/policy_add/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_add/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/policy_add/policy_add.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_add/policy_add.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/policy_add/policy_add.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_add/policy_add.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/policy_edit/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_edit/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/policy_edit/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_edit/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/policy_edit/policy_edit.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_edit/policy_edit.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/policy_edit/policy_edit.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/policy_edit/policy_edit.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/repository_add/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_add/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/repository_add/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_add/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/repository_add/repository_add.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_add/repository_add.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/repository_add/repository_add.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_add/repository_add.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/repository_edit/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_edit/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/repository_edit/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_edit/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/repository_edit/repository_edit.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_edit/repository_edit.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/repository_edit/repository_edit.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/repository_edit/repository_edit.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/restore_snapshot/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/restore_snapshot/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/restore_snapshot/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/restore_snapshot/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/restore_snapshot/restore_snapshot.tsx b/x-pack/platform/plugins/private/snapshot_restore/public/application/sections/restore_snapshot/restore_snapshot.tsx similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/sections/restore_snapshot/restore_snapshot.tsx rename to x-pack/platform/plugins/private/snapshot_restore/public/application/sections/restore_snapshot/restore_snapshot.tsx diff --git a/x-pack/plugins/snapshot_restore/public/application/services/http/http.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/http.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/http/http.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/http.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/http/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/http/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/http/policy_requests.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/policy_requests.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/http/policy_requests.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/policy_requests.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/http/repository_requests.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/repository_requests.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/http/repository_requests.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/repository_requests.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/http/restore_requests.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/restore_requests.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/http/restore_requests.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/restore_requests.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/http/snapshot_requests.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/snapshot_requests.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/http/snapshot_requests.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/snapshot_requests.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/http/use_request.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/use_request.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/http/use_request.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/http/use_request.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/navigation/breadcrumb.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/breadcrumb.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/navigation/breadcrumb.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/breadcrumb.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/navigation/doc_title.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/doc_title.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/navigation/doc_title.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/doc_title.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/navigation/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/navigation/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/navigation/links.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/links.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/navigation/links.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/navigation/links.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/text/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/text/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/text/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/text/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/text/text.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/text/text.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/text/text.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/text/text.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/ui_metric/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/ui_metric/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/ui_metric/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/ui_metric/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/ui_metric/ui_metric.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/ui_metric/ui_metric.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/ui_metric/ui_metric.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/ui_metric/ui_metric.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/validation/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/validation/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/validation/validate_policy.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/validate_policy.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/validation/validate_policy.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/validate_policy.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/validation/validate_repository.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/validate_repository.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/validation/validate_repository.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/validate_repository.ts diff --git a/x-pack/plugins/snapshot_restore/public/application/services/validation/validate_restore.ts b/x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/validate_restore.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/application/services/validation/validate_restore.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/application/services/validation/validate_restore.ts diff --git a/x-pack/plugins/snapshot_restore/public/index.ts b/x-pack/platform/plugins/private/snapshot_restore/public/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/index.ts diff --git a/x-pack/plugins/snapshot_restore/public/locator.ts b/x-pack/platform/plugins/private/snapshot_restore/public/locator.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/locator.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/locator.ts diff --git a/x-pack/plugins/snapshot_restore/public/plugin.ts b/x-pack/platform/plugins/private/snapshot_restore/public/plugin.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/plugin.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/plugin.ts diff --git a/x-pack/plugins/snapshot_restore/public/shared_imports.ts b/x-pack/platform/plugins/private/snapshot_restore/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/shared_imports.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/shared_imports.ts diff --git a/x-pack/plugins/snapshot_restore/public/types.ts b/x-pack/platform/plugins/private/snapshot_restore/public/types.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/public/types.ts rename to x-pack/platform/plugins/private/snapshot_restore/public/types.ts diff --git a/x-pack/plugins/snapshot_restore/server/config.ts b/x-pack/platform/plugins/private/snapshot_restore/server/config.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/config.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/config.ts diff --git a/x-pack/plugins/snapshot_restore/server/index.ts b/x-pack/platform/plugins/private/snapshot_restore/server/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/index.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/clean_settings.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/clean_settings.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/clean_settings.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/clean_settings.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/get_managed_policy_names.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/get_managed_policy_names.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/get_managed_policy_names.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/get_managed_policy_names.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/get_managed_repository_name.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/get_managed_repository_name.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/get_managed_repository_name.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/get_managed_repository_name.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/get_snapshot_search_wildcard.test.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/get_snapshot_search_wildcard.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/get_snapshot_search_wildcard.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/get_snapshot_search_wildcard.test.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/get_snapshot_search_wildcard.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/get_snapshot_search_wildcard.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/get_snapshot_search_wildcard.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/get_snapshot_search_wildcard.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/index.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/index.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/repository_serialization.test.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/repository_serialization.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/repository_serialization.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/repository_serialization.test.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/repository_serialization.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/repository_serialization.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/repository_serialization.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/repository_serialization.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/restore_serialization.test.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/restore_serialization.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/restore_serialization.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/restore_serialization.test.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/restore_serialization.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/restore_serialization.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/restore_serialization.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/restore_serialization.ts diff --git a/x-pack/plugins/snapshot_restore/server/lib/wrap_es_error.ts b/x-pack/platform/plugins/private/snapshot_restore/server/lib/wrap_es_error.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/lib/wrap_es_error.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/lib/wrap_es_error.ts diff --git a/x-pack/plugins/snapshot_restore/server/plugin.ts b/x-pack/platform/plugins/private/snapshot_restore/server/plugin.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/plugin.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/plugin.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/app.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/app.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/app.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/app.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/policy.test.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/policy.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.test.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/policy.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/policy.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/policy.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/repositories.test.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/repositories.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.test.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/repositories.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/repositories.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/restore.test.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/restore.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/restore.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/restore.test.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/restore.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/restore.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/restore.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/restore.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/snapshots.test.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/snapshots.test.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/snapshots.test.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/snapshots.test.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/snapshots.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/snapshots.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/snapshots.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/snapshots.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/api/validate_schemas.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/api/validate_schemas.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/api/validate_schemas.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/api/validate_schemas.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/helpers.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/helpers.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/helpers.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/helpers.ts diff --git a/x-pack/plugins/snapshot_restore/server/routes/index.ts b/x-pack/platform/plugins/private/snapshot_restore/server/routes/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/routes/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/routes/index.ts diff --git a/x-pack/plugins/snapshot_restore/server/services/index.ts b/x-pack/platform/plugins/private/snapshot_restore/server/services/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/services/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/services/index.ts diff --git a/x-pack/plugins/snapshot_restore/server/services/license.ts b/x-pack/platform/plugins/private/snapshot_restore/server/services/license.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/services/license.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/services/license.ts diff --git a/x-pack/plugins/remote_clusters/server/shared_imports.ts b/x-pack/platform/plugins/private/snapshot_restore/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/remote_clusters/server/shared_imports.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/shared_imports.ts diff --git a/x-pack/plugins/snapshot_restore/server/test/helpers/index.ts b/x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/test/helpers/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/index.ts diff --git a/x-pack/plugins/snapshot_restore/server/test/helpers/route_dependencies.ts b/x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/route_dependencies.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/test/helpers/route_dependencies.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/route_dependencies.ts diff --git a/x-pack/plugins/snapshot_restore/server/test/helpers/router_mock.ts b/x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/router_mock.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/test/helpers/router_mock.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/test/helpers/router_mock.ts diff --git a/x-pack/plugins/snapshot_restore/server/types.ts b/x-pack/platform/plugins/private/snapshot_restore/server/types.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/types.ts rename to x-pack/platform/plugins/private/snapshot_restore/server/types.ts diff --git a/x-pack/plugins/snapshot_restore/test/fixtures/index.ts b/x-pack/platform/plugins/private/snapshot_restore/test/fixtures/index.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/test/fixtures/index.ts rename to x-pack/platform/plugins/private/snapshot_restore/test/fixtures/index.ts diff --git a/x-pack/plugins/snapshot_restore/test/fixtures/policy.ts b/x-pack/platform/plugins/private/snapshot_restore/test/fixtures/policy.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/test/fixtures/policy.ts rename to x-pack/platform/plugins/private/snapshot_restore/test/fixtures/policy.ts diff --git a/x-pack/plugins/snapshot_restore/test/fixtures/repository.ts b/x-pack/platform/plugins/private/snapshot_restore/test/fixtures/repository.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/test/fixtures/repository.ts rename to x-pack/platform/plugins/private/snapshot_restore/test/fixtures/repository.ts diff --git a/x-pack/plugins/snapshot_restore/test/fixtures/snapshot.ts b/x-pack/platform/plugins/private/snapshot_restore/test/fixtures/snapshot.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/test/fixtures/snapshot.ts rename to x-pack/platform/plugins/private/snapshot_restore/test/fixtures/snapshot.ts diff --git a/x-pack/platform/plugins/private/snapshot_restore/tsconfig.json b/x-pack/platform/plugins/private/snapshot_restore/tsconfig.json new file mode 100644 index 0000000000000..d4f277410f427 --- /dev/null +++ b/x-pack/platform/plugins/private/snapshot_restore/tsconfig.json @@ -0,0 +1,42 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "__jest__/**/*", + "common/**/*", + "public/**/*", + "server/**/*", + "test/**/*", + "../../../../../typings/**/*", + ], + "kbn_references": [ + "@kbn/core", + "@kbn/licensing-plugin", + "@kbn/features-plugin", + "@kbn/cloud-plugin", + "@kbn/security-plugin", + "@kbn/management-plugin", + "@kbn/usage-collection-plugin", + "@kbn/home-plugin", + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/test-jest-helpers", + "@kbn/i18n", + "@kbn/utility-types", + "@kbn/share-plugin", + "@kbn/i18n-react", + "@kbn/analytics", + "@kbn/config-schema", + "@kbn/shared-ux-router", + "@kbn/core-ui-settings-browser", + "@kbn/core-http-router-server-mocks", + "@kbn/code-editor", + "@kbn/code-editor-mock", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/platform/plugins/private/translations/translations/fr-FR.json b/x-pack/platform/plugins/private/translations/translations/fr-FR.json index 61963947d4ca3..b9fdd88d2d641 100644 --- a/x-pack/platform/plugins/private/translations/translations/fr-FR.json +++ b/x-pack/platform/plugins/private/translations/translations/fr-FR.json @@ -215,17 +215,8 @@ "charts.legend.toggleLegendButtonAriaLabel": "Afficher/Masquer la légende", "charts.legend.toggleLegendButtonTitle": "Afficher/Masquer la légende", "charts.noDataLabel": "Résultat introuvable", - "charts.palettes.complementaryLabel": "Complémentaire", - "charts.palettes.coolLabel": "Froide", "charts.palettes.customLabel": "Personnalisée", - "charts.palettes.defaultPaletteLabel": "Par défaut", - "charts.palettes.grayLabel": "Gris", "charts.palettes.kibanaPaletteLabel": "Compatibilité", - "charts.palettes.negativeLabel": "Négative", - "charts.palettes.positiveLabel": "Positive", - "charts.palettes.statusLabel": "Statut", - "charts.palettes.temperatureLabel": "Température", - "charts.palettes.warmLabel": "Chaude", "charts.partialData.bucketTooltipText": "La plage temporelle sélectionnée n'inclut pas ce compartiment en entier. Il se peut qu'elle contienne des données partielles.", "charts.warning.warningLabel": "{numberWarnings, number} {numberWarnings, plural, one {avertissement} other {avertissements}}", "cloud.connectionDetails.apiKeyFormat.beats.description": "Utilisé pour la configuration de Beats", @@ -2803,7 +2794,6 @@ "embeddableApi.addPanel.managedPanelTooltip": "Elastic gère ce panneau. Le fait de l'ajouter à un tableau de bord le dissocie de la bibliothèque.", "embeddableApi.addPanel.noMatchingObjectsMessage": "Aucun objet correspondant trouvé.", "embeddableApi.addPanel.Title": "Ajouter depuis la bibliothèque", - "embeddableApi.attributeService.saveToLibraryError": "Une erreur s'est produite lors de l'enregistrement. Erreur : {errorMessage}.", "embeddableApi.cellValueTrigger.description": "Les actions apparaissent dans les options de valeur de cellule dans la visualisation", "embeddableApi.cellValueTrigger.title": "Valeur de cellule", "embeddableApi.common.constants.grouping.annotations": "Annotations et Navigation", @@ -2826,9 +2816,6 @@ "embeddableApi.panelNotificationTrigger.title": "Notifications du panneau", "embeddableApi.reactEmbeddable.factoryAlreadyExistsError": "Une usine incorporable pour le type : {key} est déjà enregistrée.", "embeddableApi.reactEmbeddable.factoryNotFoundError": "Aucune usine incorporable n'a été trouvée pour le type : {key}", - "embeddableApi.samples.contactCard.displayName": "carte de visite", - "embeddableApi.samples.filterableContainer.displayName": "tableau de bord filtrable", - "embeddableApi.samples.filterableEmbeddable.displayName": "filtrable", "embeddableApi.selectRangeTrigger.description": "Une plage de valeurs sur la visualisation", "embeddableApi.selectRangeTrigger.title": "Sélection de la plage", "embeddableApi.valueClickTrigger.description": "Un point de données cliquable sur la visualisation", @@ -3135,17 +3122,6 @@ "exceptionList-components.wildcardWithWrongOperatorCallout.changeTheOperator": "Changer d'opérateur", "exceptionList-components.wildcardWithWrongOperatorCallout.matches": "correspond à", "exceptionList-components.wildcardWithWrongOperatorCallout.title": "Veuillez examiner vos entrées", - "expandableFlyout.previewSection.backButton": "Retour", - "expandableFlyout.previewSection.closeButton": "Fermer", - "expandableFlyout.renderMenu.flyoutResizeButton": "Réinitialiser la taille", - "expandableFlyout.renderMenu.flyoutResizeTitle": "Taille du menu volant", - "expandableFlyout.settingsMenu.flyoutTypeTitle": "Type de menu volant", - "expandableFlyout.settingsMenu.overlayMode": "Superposer", - "expandableFlyout.settingsMenu.overlayTooltip": "Affiche le menu volant sur la page", - "expandableFlyout.settingsMenu.popoverButton": "Paramètres du menu volant", - "expandableFlyout.settingsMenu.popoverTitle": "Paramètres du menu volant", - "expandableFlyout.settingsMenu.pushMode": "Déploiement", - "expandableFlyout.settingsMenu.pushTooltip": "Affiche le menu volant à côté de la page", "expressionError.errorComponent.description": "Échec de l'expression avec le message :", "expressionError.errorComponent.title": "Oups ! Échec de l'expression", "expressionError.renderer.debug.displayName": "Déboguer", @@ -15955,7 +15931,6 @@ "xpack.elasticAssistantPlugin.attackDiscovery.defaultAttackDiscoveryGraph.nodes.retriever.helpers.throwIfErrorCountsExceeded.maxGenerationAttemptsErrorMessage": "Nombre maximum de tentatives de génération ({generationAttempts}) atteint. Essayez d'envoyer un nombre d'alertes moins élevé à ce modèle.", "xpack.elasticAssistantPlugin.attackDiscovery.defaultAttackDiscoveryGraph.nodes.retriever.helpers.throwIfErrorCountsExceeded.maxHallucinationFailuresErrorMessage": "Nombre maximum d'échecs d'hallucinations ({hallucinationFailures}) atteint. Essayez d'envoyer un nombre d'alertes moins élevé à ce modèle.", "xpack.elasticAssistantPlugin.server.newChat": "Nouveau chat", - "xpack.embeddableEnhanced.Drilldowns": "Explorations", "xpack.enterpriseSearch.accessControlIndexSelector.p.accessControlSyncsAreLabel": "Les synchronisations de contrôle d'accès maintiennent les informations d'autorisation à jour pour assurer la sécurité au niveau du document (DLS)", "xpack.enterpriseSearch.actions.backButtonLabel": "Retour", "xpack.enterpriseSearch.actions.cancelButtonLabel": "Annuler", @@ -18326,7 +18301,6 @@ "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.pipelinesLabel": "Pipelines", "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.schedulingTitle": "Planification", "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.syncRulesLabel": "Règles de synchronisation", - "xpack.enterpriseSearch.nav.title": "Enterprise Search", "xpack.enterpriseSearch.navigation.applicationsSearchApplicationsLinkLabel": "Applications de recherche", "xpack.enterpriseSearch.navigation.appSearchEnginesLinkLabel": "Moteurs", "xpack.enterpriseSearch.navigation.contentConnectorsLinkLabel": "Connecteurs", @@ -18676,8 +18650,6 @@ "xpack.enterpriseSearch.searchNav.build.searchApplications": "Applications de recherche", "xpack.enterpriseSearch.searchNav.content": "Contenu", "xpack.enterpriseSearch.searchNav.devTools": "Outils de développement", - "xpack.enterpriseSearch.searchNav.entsearch": "Enterprise Search", - "xpack.enterpriseSearch.searchNav.entsearch.appSearch": "App Search", "xpack.enterpriseSearch.searchNav.headerSolutionSwitcher.searchSolutionTitle": "Recherche", "xpack.enterpriseSearch.searchNav.kibana": "Kibana", "xpack.enterpriseSearch.searchNav.management": "Gestion", @@ -25990,7 +25962,6 @@ "xpack.investigateApp.addObservationUI.h2.addAnObservationChartLabel": "Ajouter un graphique d'observation", "xpack.investigateApp.addObservationUI.p.selectADataSourceLabel": "Sélectionnez une source de données pour générer un graphique d'aperçu", "xpack.investigateApp.appTitle": "Investigations", - "xpack.investigateApp.assistantHypothesis.observabilityAIAssistantContextualInsight.helpMeInvestigateThisLabel": "Aidez-moi à résoudre la cause de cet échec", "xpack.investigateApp.defaultChart.error_equation.description": "Vérifiez l'équation.", "xpack.investigateApp.defaultChart.error_equation.title": "Une erreur s'est produite lors de l'affichage du graphique", "xpack.investigateApp.defaultChart.noData.title": "Aucune donnée graphique disponible", @@ -26154,9 +26125,9 @@ "xpack.lens.app.settingsAriaLabel": "Ouvrir le menu de paramètres Lens", "xpack.lens.app.share.defaultDashboardTitle": "Visualisation Lens [{date}]", "xpack.lens.app.shareButtonDisabledWarning": "La visualisation ne comprend aucune donnée à partager.", - "xpack.lens.app.shareModal.title": "Partager cette visualisation Lens", "xpack.lens.app.shareModal.draftModeCallout.link.warning": "Copiez le lien afin d’obtenir un lien temporaire. Enregistrez la visualisation Lens pour créer un lien permanent.", "xpack.lens.app.shareModal.draftModeCallout.title": "Modifications non enregistrées", + "xpack.lens.app.shareModal.title": "Partager cette visualisation Lens", "xpack.lens.app.shareTitle": "Partager", "xpack.lens.app.shareTitleAria": "Partager la visualisation", "xpack.lens.app.showUnderlyingDataMultipleLayers": "Impossible d’afficher les données sous-jacentes pour les visualisations avec plusieurs calques.", @@ -39068,7 +39039,6 @@ "xpack.securitySolution.detectionEngine.rules.updatePrebuiltRulesCalloutTitle": "Mises à jour disponibles pour les règles installées. Examinez et mettez à jour dans {link}.", "xpack.securitySolution.detectionEngine.rules.updatePrePackagedRulesAndTimelinesButton": "Mettez à jour {updateRules} {updateRules, plural, =1 {règle prédéfinie} other {règles prédéfinies}} d'Elastic et {updateTimelines} {updateTimelines, plural, =1 {chronologie prédéfinie} other {chronologies prédéfinies}} d'Elastic", "xpack.securitySolution.detectionEngine.rules.updatePrePackagedTimelinesButton": "Mettez à jour {updateTimelines} {updateTimelines, plural, =1 {chronologie prédéfinie} other {chronologies prédéfinies}} d'Elastic", - "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.dataSourceLabel": "Source de données", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.eqlQueryLabel": "Requête EQL", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.esqlQueryLabel": "Requête ESQL", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.kqlQueryLabel": "Requête KQL", @@ -39079,43 +39049,26 @@ "xpack.securitySolution.detectionEngine.rules.upgradeRules.comparisonSide.title": "Affichage différé", "xpack.securitySolution.detectionEngine.rules.upgradeRules.currentVersionDescriptionLabel": "Affiche la règle actuellement installée", "xpack.securitySolution.detectionEngine.rules.upgradeRules.currentVersionLabel": "Règle actuelle", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.fieldsWithUpdates": "La mise à niveau contient {count} {count, plural, one {champ} other {champs}}", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.numOfConflicts": "{count} {count, plural, one {conflit} other {conflits}}", "xpack.securitySolution.detectionEngine.rules.upgradeRules.editButtonLabel": "Modifier", "xpack.securitySolution.detectionEngine.rules.upgradeRules.elasticUpdateVersionLabel": "Mise à jour Elastic", "xpack.securitySolution.detectionEngine.rules.upgradeRules.expandHiddenDiffLinesLabel": "Développer {linesCount}{linesCount, plural, one {ligne} other {lignes}}", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldReadOnly.noteLabel": "Guide d'investigation", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflict": "Conflit résolu", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflictDescription": "Nous avons suggéré une mise à jour pour ce champ modifié, veuillez la consulter avant d'accepter.", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflicts": "{count} des champs {count, plural, one {a} other {ont}} un conflit non résolu. Veuillez en prendre connaissance et apporter les modifications appropriées.", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflictsDescription": "Veuillez apporter une contribution au conflit non résolu. Vous pouvez également conserver la version actuelle sans les mises à jour, ou accepter la mise à jour Elastic tout en perdant vos modifications.", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflicts": "{count} des champs {count, plural, one {a} other {ont}} un conflit de mise à jour. Veuillez examiner la mise à jour en cours suggérée.", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflictsDescription": "Veuillez consulter la version mise à jour recommandée avant de l'accepter. Vous pouvez modifier le champ, puis l'enregistrer, si nécessaire.", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgrade": "La mise à jour est prête à être appliquée.", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgradeDescription": "Tous les conflits ont maintenant été examinés et résolus, veuillez mettre à jour la règle.", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.separator": "-", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflict": "Conflit résolu", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflictDescription": "Nous avons suggéré une mise à jour pour ce champ modifié, veuillez la consulter avant d'accepter.", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAccepted": "Mise à jour acceptée", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAcceptedDescription": "Vous pouvez toujours apporter des modifications, veuillez consulter/accepter tous les autres conflits avant de mettre à jour la règle.", "xpack.securitySolution.detectionEngine.rules.upgradeRules.finalUpdate": "Mise à jour finale", "xpack.securitySolution.detectionEngine.rules.upgradeRules.noRulesBodyTitle": "Il n’y a actuellement aucune mise à jour disponible pour vos règles Elastic installées.", "xpack.securitySolution.detectionEngine.rules.upgradeRules.noRulesTitle": "Toutes les règles Elastic sont à jour", "xpack.securitySolution.detectionEngine.rules.upgradeRules.ruleUpgradeHelper": "Découvrez comment {docsLink}.", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.saveButtonLabel": "Enregistrer", "xpack.securitySolution.detectionEngine.rules.upgradeRules.searchBarPlaceholder": "Rechercher par nom de règle", "xpack.securitySolution.detectionEngine.rules.upgradeRules.updatedVersionDescriptionLabel": "Affiche la règle qui sera installée", "xpack.securitySolution.detectionEngine.rules.upgradeRules.updateYourRulesDocsLink": "mettre à jour vos règles", "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeAll": "Tout mettre à jour", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeHelpText": "Choisissez les valeurs de champ utilisées dans la règle mise à niveau.", "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeSelected": "Mettre à jour {numberOfSelectedRules} règle(s) sélectionnée(s)", "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.ariaLabel": "Sélectionnez les versions à comparer", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsCurrentLabel": "Base - Actuel", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsFinalLabel": "Base - Final", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsTargetLabel": "Base - Cible", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsFinalLabel": "Actuel - Final", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsTargetLabel": "Actuel - Cible", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.targetVsFinalLabel": "Actuel - Final", "xpack.securitySolution.detectionEngine.rulesSnoozeBadge.error.unableToFetch": "Impossible de récupérer les paramètres de répétition", "xpack.securitySolution.detectionEngine.ruleStatus.askAssistant": "Demander à l'assistant", "xpack.securitySolution.detectionEngine.ruleStatus.askAssistantDesc": "Message d'erreur de l'exécution de la règle", @@ -45196,7 +45149,6 @@ "xpack.stackConnectors.components.inference.taskTypeDetailsLabel": "Paramètres des tâches", "xpack.stackConnectors.components.inference.taskTypeFieldLabel": "Type de tâche", "xpack.stackConnectors.components.inference.taskTypeHelpLabel": "Configurer la tâche d'inférence. Ces paramètres sont spécifiques au service et au modèle sélectionnés.", - "xpack.stackConnectors.components.inference.taskTypeLabel": "Type de tâche", "xpack.stackConnectors.components.inference.unableToFindProvidersQueryMessage": "Impossible de trouver des fournisseurs", "xpack.stackConnectors.components.jira.apiTokenTextFieldLabel": "Token d'API", "xpack.stackConnectors.components.jira.apiUrlTextFieldLabel": "URL", @@ -48432,8 +48384,6 @@ "xpack.upgradeAssistant.checkupTab.reindexing.flyout.flyoutHeader": "Réindexer {index}", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.learnMoreLinkLabel": "En savoir plus", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.acceptChangesTitle": "Accepter les modifications", - "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.customTypeNameWarningDetail": "Les types de mapping ne sont plus pris en charge dans Elastic 8.x. Assurez-vous qu'aucun code d'application ou script n'utilise {mappingType}.", - "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.customTypeNameWarningTitle": "Remplacer le type de mapping {mappingType} par {defaultType}", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.deprecatedIndexSettingsWarningDetail": "Les paramètres d'index déclassés ont été détectés :", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.deprecatedIndexSettingsWarningTitle": "Retirer les paramètres d'index déclassés", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.destructiveCallout.calloutDetail": "Sauvegardez l'index avant de continuer. Pour poursuivre avec la réindexation, acceptez chaque modification.", @@ -48628,7 +48578,6 @@ "xpack.upgradeAssistant.overview.logsStep.title": "Traiter les déclassements d'API", "xpack.upgradeAssistant.overview.logsStep.viewLogsButtonLabel": "Afficher les logs", "xpack.upgradeAssistant.overview.observe.discoveryDescription": "Recherchez et filtrez les logs de déclassement pour comprendre les types de modifications que vous devez effectuer.", - "xpack.upgradeAssistant.overview.observe.observabilityDescription": "Obtenez des informations sur les API déclassées qui sont utilisées et les applications que vous devez mettre à jour.", "xpack.upgradeAssistant.overview.pageDescription": "Préparez-vous pour la prochaine version de la Suite Elastic !", "xpack.upgradeAssistant.overview.pageTitle": "Assistant de mise à niveau", "xpack.upgradeAssistant.overview.snapshotRestoreLink": "Créer un snapshot", @@ -48665,7 +48614,6 @@ "xpack.upgradeAssistant.overview.verifyChanges.resetCounterButton": "Réinitialiser le compteur", "xpack.upgradeAssistant.overview.verifyChanges.retryButton": "Réessayer", "xpack.upgradeAssistant.overview.viewDiscoverResultsAction": "Analyser les logs dans Discover", - "xpack.upgradeAssistant.overview.viewObservabilityResultsAction": "Afficher les logs d'obsolescence dans Logs Explorer", "xpack.upgradeAssistant.reindex.reindexPrivilegesErrorBatch": "Vous ne disposez pas des privilèges appropriés pour réindexer \"{indexName}\".", "xpack.upgradeAssistant.status.allDeprecationsResolvedMessage": "Tous les avertissements de déclassement ont été résolus.", "xpack.upgradeAssistant.status.deprecationsUnresolvedMessage": "Les problèmes suivants doivent être résolus avant la mise à niveau : {upgradeIssues}.", diff --git a/x-pack/platform/plugins/private/translations/translations/ja-JP.json b/x-pack/platform/plugins/private/translations/translations/ja-JP.json index 76f4ee66ee97d..caca8084d7902 100644 --- a/x-pack/platform/plugins/private/translations/translations/ja-JP.json +++ b/x-pack/platform/plugins/private/translations/translations/ja-JP.json @@ -215,17 +215,8 @@ "charts.legend.toggleLegendButtonAriaLabel": "凡例を切り替える", "charts.legend.toggleLegendButtonTitle": "凡例を切り替える", "charts.noDataLabel": "結果が見つかりませんでした", - "charts.palettes.complementaryLabel": "補完", - "charts.palettes.coolLabel": "Cool", "charts.palettes.customLabel": "カスタム", - "charts.palettes.defaultPaletteLabel": "デフォルト", - "charts.palettes.grayLabel": "グレー", "charts.palettes.kibanaPaletteLabel": "互換性", - "charts.palettes.negativeLabel": "負", - "charts.palettes.positiveLabel": "正", - "charts.palettes.statusLabel": "ステータス", - "charts.palettes.temperatureLabel": "温度", - "charts.palettes.warmLabel": "ウォーム", "charts.partialData.bucketTooltipText": "選択された時間範囲にはこのバケット全体は含まれていません。一部データが含まれている可能性があります。", "charts.warning.warningLabel": "{numberWarnings, number} {numberWarnings, plural, other {件の警告}}", "cloud.connectionDetails.apiKeyFormat.beats.description": "Beatsを構成するために使用", @@ -2798,7 +2789,6 @@ "embeddableApi.addPanel.managedPanelTooltip": "Elasticはこのパネルを管理します。ダッシュボードに追加すると、ライブラリからリンクが解除されます。", "embeddableApi.addPanel.noMatchingObjectsMessage": "一致するオブジェクトが見つかりませんでした。", "embeddableApi.addPanel.Title": "ライブラリから追加", - "embeddableApi.attributeService.saveToLibraryError": "保存中にエラーが発生しました。エラー:{errorMessage}", "embeddableApi.cellValueTrigger.description": "アクションはビジュアライゼーションのセル値オプションに表示されます", "embeddableApi.cellValueTrigger.title": "セル値", "embeddableApi.common.constants.grouping.annotations": "注釈とナビゲーション", @@ -2821,9 +2811,6 @@ "embeddableApi.panelNotificationTrigger.title": "パネル通知", "embeddableApi.reactEmbeddable.factoryAlreadyExistsError": "タイプ\"{key}\"の埋め込み可能ファクトリはすでに登録されています。", "embeddableApi.reactEmbeddable.factoryNotFoundError": "タイプ\"{key}\"の埋め込み可能ファクトリが見つかりません", - "embeddableApi.samples.contactCard.displayName": "連絡先カード", - "embeddableApi.samples.filterableContainer.displayName": "フィルター可能なダッシュボード", - "embeddableApi.samples.filterableEmbeddable.displayName": "フィルター可能", "embeddableApi.selectRangeTrigger.description": "ビジュアライゼーションでの値の範囲", "embeddableApi.selectRangeTrigger.title": "範囲選択", "embeddableApi.valueClickTrigger.description": "ビジュアライゼーションでデータポイントをクリック", @@ -3129,17 +3116,6 @@ "exceptionList-components.wildcardWithWrongOperatorCallout.changeTheOperator": "演算子を変更", "exceptionList-components.wildcardWithWrongOperatorCallout.matches": "一致", "exceptionList-components.wildcardWithWrongOperatorCallout.title": "エントリを確認してください", - "expandableFlyout.previewSection.backButton": "戻る", - "expandableFlyout.previewSection.closeButton": "閉じる", - "expandableFlyout.renderMenu.flyoutResizeButton": "サイズをリセット", - "expandableFlyout.renderMenu.flyoutResizeTitle": "フライアウトサイズ", - "expandableFlyout.settingsMenu.flyoutTypeTitle": "フライアウトタイプ", - "expandableFlyout.settingsMenu.overlayMode": "オーバーレイ", - "expandableFlyout.settingsMenu.overlayTooltip": "ページ上にフライアウトを表示します", - "expandableFlyout.settingsMenu.popoverButton": "フライアウト設定", - "expandableFlyout.settingsMenu.popoverTitle": "フライアウト設定", - "expandableFlyout.settingsMenu.pushMode": "プッシュ", - "expandableFlyout.settingsMenu.pushTooltip": "ページの横にフライアウトを表示します", "expressionError.errorComponent.description": "表現が失敗し次のメッセージが返されました:", "expressionError.errorComponent.title": "おっと!表現が失敗しました", "expressionError.renderer.debug.displayName": "デバッグ", @@ -15818,7 +15794,6 @@ "xpack.elasticAssistantPlugin.attackDiscovery.defaultAttackDiscoveryGraph.nodes.retriever.helpers.throwIfErrorCountsExceeded.maxGenerationAttemptsErrorMessage": "最大生成試行回数({generationAttempts})に達しました。このモデルに送信するアラートの数を減らしてください。", "xpack.elasticAssistantPlugin.attackDiscovery.defaultAttackDiscoveryGraph.nodes.retriever.helpers.throwIfErrorCountsExceeded.maxHallucinationFailuresErrorMessage": "最大ハルシネーション失敗回数({hallucinationFailures})に達しました。このモデルに送信するアラートの数を減らしてください。", "xpack.elasticAssistantPlugin.server.newChat": "新しいチャット", - "xpack.embeddableEnhanced.Drilldowns": "ドリルダウン", "xpack.enterpriseSearch.accessControlIndexSelector.p.accessControlSyncsAreLabel": "アクセス制御の同期により、ドキュメントレベルセキュリティ(DLS)の権限情報が最新の状態に保たれます。", "xpack.enterpriseSearch.actions.backButtonLabel": "戻る", "xpack.enterpriseSearch.actions.cancelButtonLabel": "キャンセル", @@ -18185,7 +18160,6 @@ "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.pipelinesLabel": "パイプライン", "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.schedulingTitle": "スケジュール", "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.syncRulesLabel": "同期ルール", - "xpack.enterpriseSearch.nav.title": "エンタープライズ サーチ", "xpack.enterpriseSearch.navigation.applicationsSearchApplicationsLinkLabel": "検索アプリケーション", "xpack.enterpriseSearch.navigation.appSearchEnginesLinkLabel": "エンジン", "xpack.enterpriseSearch.navigation.contentConnectorsLinkLabel": "コネクター", @@ -18534,8 +18508,6 @@ "xpack.enterpriseSearch.searchNav.build.searchApplications": "検索アプリケーション", "xpack.enterpriseSearch.searchNav.content": "コンテンツ", "xpack.enterpriseSearch.searchNav.devTools": "開発ツール", - "xpack.enterpriseSearch.searchNav.entsearch": "エンタープライズ サーチ", - "xpack.enterpriseSearch.searchNav.entsearch.appSearch": "App Search", "xpack.enterpriseSearch.searchNav.headerSolutionSwitcher.searchSolutionTitle": "検索", "xpack.enterpriseSearch.searchNav.kibana": "Kibana", "xpack.enterpriseSearch.searchNav.management": "管理", @@ -25849,7 +25821,6 @@ "xpack.investigateApp.addObservationUI.h2.addAnObservationChartLabel": "観測グラフを追加", "xpack.investigateApp.addObservationUI.p.selectADataSourceLabel": "データソースを選択して、プレビューグラフを生成", "xpack.investigateApp.appTitle": "調査", - "xpack.investigateApp.assistantHypothesis.observabilityAIAssistantContextualInsight.helpMeInvestigateThisLabel": "このエラーの調査を支援", "xpack.investigateApp.defaultChart.error_equation.description": "式を確認してください。", "xpack.investigateApp.defaultChart.error_equation.title": "グラフの表示中にエラーが発生しました", "xpack.investigateApp.defaultChart.noData.title": "グラフデータがありません", @@ -26013,9 +25984,9 @@ "xpack.lens.app.settingsAriaLabel": "Lens設定メニューを開く", "xpack.lens.app.share.defaultDashboardTitle": "Lensビジュアライゼーション[{date}]", "xpack.lens.app.shareButtonDisabledWarning": "ビジュアライゼーションには共有するデータがありません。", - "xpack.lens.app.shareModal.title": "このLensビジュアライゼーションを共有", "xpack.lens.app.shareModal.draftModeCallout.link.warning": "リンクをコピーして、一時リンクを取得します。Lensビジュアライゼーションを保存して、永続リンクを作成します。", "xpack.lens.app.shareModal.draftModeCallout.title": "保存されていない変更", + "xpack.lens.app.shareModal.title": "このLensビジュアライゼーションを共有", "xpack.lens.app.shareTitle": "共有", "xpack.lens.app.shareTitleAria": "ビジュアライゼーションを共有", "xpack.lens.app.showUnderlyingDataMultipleLayers": "複数レイヤーのビジュアライゼーションでは、基本データを表示できません", @@ -38925,7 +38896,6 @@ "xpack.securitySolution.detectionEngine.rules.updatePrebuiltRulesCalloutTitle": "インストールされたルールの更新が利用可能です。{link}で確認して更新してください。", "xpack.securitySolution.detectionEngine.rules.updatePrePackagedRulesAndTimelinesButton": "{updateRules} Elasticの事前構築済みの{updateRules, plural, other {個のルール}}と{updateTimelines} Elasticの事前構築済みの{updateTimelines, plural, other {個のタイムライン}}を更新", "xpack.securitySolution.detectionEngine.rules.updatePrePackagedTimelinesButton": "{updateTimelines} Elastic事前構築済み{updateTimelines, plural, other {タイムライン}}を更新", - "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.dataSourceLabel": "データソース", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.eqlQueryLabel": "EQL クエリ", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.esqlQueryLabel": "EQLクエリ", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.kqlQueryLabel": "KQLクエリ", @@ -38936,43 +38906,26 @@ "xpack.securitySolution.detectionEngine.rules.upgradeRules.comparisonSide.title": "差異ビュー", "xpack.securitySolution.detectionEngine.rules.upgradeRules.currentVersionDescriptionLabel": "現在インストールされているルールを表示します", "xpack.securitySolution.detectionEngine.rules.upgradeRules.currentVersionLabel": "現在のルール", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.fieldsWithUpdates": "アップグレードには{count} {count, plural, other {個のフィールド}}があります", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.numOfConflicts": "{count} {count, plural, other {件の競合}}", "xpack.securitySolution.detectionEngine.rules.upgradeRules.editButtonLabel": "編集", "xpack.securitySolution.detectionEngine.rules.upgradeRules.elasticUpdateVersionLabel": "Elastic更新", "xpack.securitySolution.detectionEngine.rules.upgradeRules.expandHiddenDiffLinesLabel": "変更されていない{linesCount} {linesCount, plural, other {行}}を展開", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldReadOnly.noteLabel": "調査ガイド", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflict": "解決された競合", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflictDescription": "この修正されたフィールドの更新を提案しました。承認する前に確認してください。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflicts": "{count}個のフィールド{count, plural, other {には}}未解決の競合があります。確認し、必要に応じて修正してください。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflictsDescription": "未解決の競合の情報を入力してください。更新を適用せずに現在の状態を維持することもできます。Elasticの更新を承認すると、修正内容は失われます。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflicts": "{count}個のフィールド{count, plural, other {には}}更新の競合があります。更新中の候補の更新を確認してください。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflictsDescription": "更新を承認する前に、提案された更新バージョンを確認してください。変更する場合は、編集してフィールドを保存できます。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgrade": "更新を適用できます。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgradeDescription": "すべての競合が確認され、解決されました。ルールを更新してください。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.separator": "-", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflict": "解決された競合", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflictDescription": "この修正されたフィールドの更新を提案しました。承認する前に確認してください。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAccepted": "更新が承認されました", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAcceptedDescription": "変更を行うことができます。ルールを更新する前に、他のすべての競合を確認/承認してください。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.finalUpdate": "最終更新", "xpack.securitySolution.detectionEngine.rules.upgradeRules.noRulesBodyTitle": "現在、インストールされているElasticルールに利用可能な更新はありません。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.noRulesTitle": "すべてのElasticルールが最新です", "xpack.securitySolution.detectionEngine.rules.upgradeRules.ruleUpgradeHelper": "{docsLink}方法を確認してください。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.saveButtonLabel": "保存", "xpack.securitySolution.detectionEngine.rules.upgradeRules.searchBarPlaceholder": "ルール名で検索", "xpack.securitySolution.detectionEngine.rules.upgradeRules.updatedVersionDescriptionLabel": "インストールされるルールを表示します", "xpack.securitySolution.detectionEngine.rules.upgradeRules.updateYourRulesDocsLink": "ルールを更新", "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeAll": "すべて更新", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeHelpText": "アップグレードされたルールで使用されるフィールド値を選択してください。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeSelected": "{numberOfSelectedRules}個の選択したルールを更新", "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.ariaLabel": "比較するバージョンを選択", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsCurrentLabel": "基本と現在", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsFinalLabel": "基本と最終", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsTargetLabel": "基本とターゲット", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsFinalLabel": "現在と最終", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsTargetLabel": "現在とターゲット", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.targetVsFinalLabel": "ターゲットと最終", "xpack.securitySolution.detectionEngine.rulesSnoozeBadge.error.unableToFetch": "スヌーズ設定を取得できません", "xpack.securitySolution.detectionEngine.ruleStatus.askAssistant": "アシスタントに聞く", "xpack.securitySolution.detectionEngine.ruleStatus.askAssistantDesc": "ルールの実行失敗メッセージ", @@ -45046,7 +44999,6 @@ "xpack.stackConnectors.components.inference.taskTypeDetailsLabel": "タスク設定", "xpack.stackConnectors.components.inference.taskTypeFieldLabel": "タスクタイプ", "xpack.stackConnectors.components.inference.taskTypeHelpLabel": "推論タスクを構成します。これらの設定は、選択したサービスおよびモデルに固有です。", - "xpack.stackConnectors.components.inference.taskTypeLabel": "タスクタイプ", "xpack.stackConnectors.components.inference.unableToFindProvidersQueryMessage": "プロバイダーが見つかりません", "xpack.stackConnectors.components.jira.apiTokenTextFieldLabel": "APIトークン", "xpack.stackConnectors.components.jira.apiUrlTextFieldLabel": "URL", @@ -48279,8 +48231,6 @@ "xpack.upgradeAssistant.checkupTab.reindexing.flyout.flyoutHeader": "再インデックス{index}", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.learnMoreLinkLabel": "詳細", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.acceptChangesTitle": "変更を承諾", - "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.customTypeNameWarningDetail": "マッピングタイプはElastic 8.xではサポートされていません。アプリケーションコードまたはスクリプトが{mappingType}に依存していないことを確認してください。", - "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.customTypeNameWarningTitle": "マッピングタイプ{mappingType}を{defaultType}で置き換えます", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.deprecatedIndexSettingsWarningDetail": "次の廃止予定のインデックス設定が検出されました。", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.deprecatedIndexSettingsWarningTitle": "廃止予定のインデックス設定を削除", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.destructiveCallout.calloutDetail": "続行する前に、インデックスをバックアップしてください。再インデックスを続行するには、各変更を承諾してください。", @@ -48476,7 +48426,6 @@ "xpack.upgradeAssistant.overview.logsStep.title": "API廃止予定に対処", "xpack.upgradeAssistant.overview.logsStep.viewLogsButtonLabel": "ログを表示", "xpack.upgradeAssistant.overview.observe.discoveryDescription": "廃止予定ログを検索およびフィルターし、必要な変更のタイプを把握します。", - "xpack.upgradeAssistant.overview.observe.observabilityDescription": "使用中のAPIのうち廃止予定のAPIと、更新が必要なアプリケーションを特定できます。", "xpack.upgradeAssistant.overview.pageDescription": "次のバージョンのElastic Stackをお待ちください。", "xpack.upgradeAssistant.overview.pageTitle": "アップグレードアシスタント", "xpack.upgradeAssistant.overview.snapshotRestoreLink": "スナップショットの作成", @@ -48513,7 +48462,6 @@ "xpack.upgradeAssistant.overview.verifyChanges.resetCounterButton": "カウンターのリセット", "xpack.upgradeAssistant.overview.verifyChanges.retryButton": "再試行", "xpack.upgradeAssistant.overview.viewDiscoverResultsAction": "Discoverでログを分析", - "xpack.upgradeAssistant.overview.viewObservabilityResultsAction": "Logs Explorerで廃止予定ログを表示", "xpack.upgradeAssistant.reindex.reindexPrivilegesErrorBatch": "「{indexName}」に再インデックスするための権限が不十分です。", "xpack.upgradeAssistant.status.allDeprecationsResolvedMessage": "すべての廃止予定の警告が解決されました。", "xpack.upgradeAssistant.status.deprecationsUnresolvedMessage": "アップグレード前に次の問題を解決する必要があります:{upgradeIssues}。", diff --git a/x-pack/platform/plugins/private/translations/translations/zh-CN.json b/x-pack/platform/plugins/private/translations/translations/zh-CN.json index 4d034d5c0fd3e..8fe52666e9601 100644 --- a/x-pack/platform/plugins/private/translations/translations/zh-CN.json +++ b/x-pack/platform/plugins/private/translations/translations/zh-CN.json @@ -241,17 +241,8 @@ "charts.legend.toggleLegendButtonAriaLabel": "切换图例", "charts.legend.toggleLegendButtonTitle": "切换图例", "charts.noDataLabel": "找不到结果", - "charts.palettes.complementaryLabel": "互补性", - "charts.palettes.coolLabel": "冷", "charts.palettes.customLabel": "定制", - "charts.palettes.defaultPaletteLabel": "默认", - "charts.palettes.grayLabel": "灰", "charts.palettes.kibanaPaletteLabel": "兼容性", - "charts.palettes.negativeLabel": "负", - "charts.palettes.positiveLabel": "正", - "charts.palettes.statusLabel": "状态", - "charts.palettes.temperatureLabel": "温度", - "charts.palettes.warmLabel": "暖", "charts.partialData.bucketTooltipText": "选定的时间范围不包括此整个存储桶。其可能包含部分数据。", "charts.warning.warningLabel": "{numberWarnings, number} 个{numberWarnings, plural, other {警告}}", "cloud.connectionDetails.apiKeyFormat.beats.description": "用于配置 Beats", @@ -2788,7 +2779,6 @@ "embeddableApi.addPanel.managedPanelTooltip": "Elastic 将管理此面板。将其添加到仪表板会取消其与库的链接。", "embeddableApi.addPanel.noMatchingObjectsMessage": "未找到任何匹配对象。", "embeddableApi.addPanel.Title": "从库中添加", - "embeddableApi.attributeService.saveToLibraryError": "保存时出错。错误:{errorMessage}", "embeddableApi.cellValueTrigger.description": "操作在可视化上的单元格值选项中显示", "embeddableApi.cellValueTrigger.title": "单元格值", "embeddableApi.common.constants.grouping.annotations": "标注和导航", @@ -2811,9 +2801,6 @@ "embeddableApi.panelNotificationTrigger.title": "面板通知", "embeddableApi.reactEmbeddable.factoryAlreadyExistsError": "已注册类型为 {key} 的可嵌入工厂。", "embeddableApi.reactEmbeddable.factoryNotFoundError": "未找到类型为 {key} 的可嵌入工厂", - "embeddableApi.samples.contactCard.displayName": "联系卡片", - "embeddableApi.samples.filterableContainer.displayName": "可筛选仪表板", - "embeddableApi.samples.filterableEmbeddable.displayName": "可筛选", "embeddableApi.selectRangeTrigger.description": "可视化上的值范围", "embeddableApi.selectRangeTrigger.title": "范围选择", "embeddableApi.valueClickTrigger.description": "可视化上的数据点单击", @@ -3119,17 +3106,6 @@ "exceptionList-components.wildcardWithWrongOperatorCallout.changeTheOperator": "更改运算符", "exceptionList-components.wildcardWithWrongOperatorCallout.matches": "匹配", "exceptionList-components.wildcardWithWrongOperatorCallout.title": "请复查您的条目", - "expandableFlyout.previewSection.backButton": "返回", - "expandableFlyout.previewSection.closeButton": "关闭", - "expandableFlyout.renderMenu.flyoutResizeButton": "重置大小", - "expandableFlyout.renderMenu.flyoutResizeTitle": "浮出控件大小", - "expandableFlyout.settingsMenu.flyoutTypeTitle": "浮出控件类型", - "expandableFlyout.settingsMenu.overlayMode": "覆盖", - "expandableFlyout.settingsMenu.overlayTooltip": "在页面上显示浮出控件", - "expandableFlyout.settingsMenu.popoverButton": "浮出控件设置", - "expandableFlyout.settingsMenu.popoverTitle": "浮出控件设置", - "expandableFlyout.settingsMenu.pushMode": "推送", - "expandableFlyout.settingsMenu.pushTooltip": "在页面旁显示浮出控件", "expressionError.errorComponent.description": "表达式失败,并显示消息:", "expressionError.errorComponent.title": "哎哟!表达式失败", "expressionError.renderer.debug.displayName": "故障排查", @@ -15538,7 +15514,6 @@ "xpack.elasticAssistantPlugin.attackDiscovery.defaultAttackDiscoveryGraph.nodes.retriever.helpers.throwIfErrorCountsExceeded.maxGenerationAttemptsErrorMessage": "已达到最大生成尝试次数 ({generationAttempts})。尝试向此模型发送更少的告警。", "xpack.elasticAssistantPlugin.attackDiscovery.defaultAttackDiscoveryGraph.nodes.retriever.helpers.throwIfErrorCountsExceeded.maxHallucinationFailuresErrorMessage": "已达到最大幻觉失败次数 ({hallucinationFailures})。尝试向此模型发送更少的告警。", "xpack.elasticAssistantPlugin.server.newChat": "新聊天", - "xpack.embeddableEnhanced.Drilldowns": "向下钻取", "xpack.enterpriseSearch.accessControlIndexSelector.p.accessControlSyncsAreLabel": "访问控制同步会使权限信息保持最新以实现文档级别安全性 (DLS)", "xpack.enterpriseSearch.actions.backButtonLabel": "返回", "xpack.enterpriseSearch.actions.cancelButtonLabel": "取消", @@ -17882,7 +17857,6 @@ "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.pipelinesLabel": "管道", "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.schedulingTitle": "正在计划", "xpack.enterpriseSearch.nav.searchIndicesTitle.nav.syncRulesLabel": "同步规则", - "xpack.enterpriseSearch.nav.title": "Enterprise Search", "xpack.enterpriseSearch.navigation.applicationsSearchApplicationsLinkLabel": "搜索应用程序", "xpack.enterpriseSearch.navigation.appSearchEnginesLinkLabel": "引擎", "xpack.enterpriseSearch.navigation.contentConnectorsLinkLabel": "连接器", @@ -18232,8 +18206,6 @@ "xpack.enterpriseSearch.searchNav.build.searchApplications": "搜索应用程序", "xpack.enterpriseSearch.searchNav.content": "内容", "xpack.enterpriseSearch.searchNav.devTools": "开发工具", - "xpack.enterpriseSearch.searchNav.entsearch": "Enterprise Search", - "xpack.enterpriseSearch.searchNav.entsearch.appSearch": "App Search", "xpack.enterpriseSearch.searchNav.headerSolutionSwitcher.searchSolutionTitle": "搜索", "xpack.enterpriseSearch.searchNav.kibana": "Kibana", "xpack.enterpriseSearch.searchNav.management": "管理", @@ -25412,7 +25384,6 @@ "xpack.investigateApp.addObservationUI.h2.addAnObservationChartLabel": "添加观察图表", "xpack.investigateApp.addObservationUI.p.selectADataSourceLabel": "选择数据源以生成预览图表", "xpack.investigateApp.appTitle": "调查", - "xpack.investigateApp.assistantHypothesis.observabilityAIAssistantContextualInsight.helpMeInvestigateThisLabel": "帮助我调查此故障", "xpack.investigateApp.defaultChart.error_equation.description": "检查方程。", "xpack.investigateApp.defaultChart.error_equation.title": "渲染图表时出错", "xpack.investigateApp.defaultChart.noData.title": "没有可用图表数据", @@ -25575,9 +25546,9 @@ "xpack.lens.app.settingsAriaLabel": "打开 Lens 设置菜单", "xpack.lens.app.share.defaultDashboardTitle": "Lens 可视化 [{date}]", "xpack.lens.app.shareButtonDisabledWarning": "此可视化没有可共享的数据。", - "xpack.lens.app.shareModal.title": "共享此 Lens 可视化", "xpack.lens.app.shareModal.draftModeCallout.link.warning": "复制链接以获取临时链接。保存 Lens 可视化以创建永久链接。", "xpack.lens.app.shareModal.draftModeCallout.title": "未保存的更改", + "xpack.lens.app.shareModal.title": "共享此 Lens 可视化", "xpack.lens.app.shareTitle": "共享", "xpack.lens.app.shareTitleAria": "共享可视化", "xpack.lens.app.showUnderlyingDataMultipleLayers": "无法显示具有多个图层的可视化的底层数据", @@ -38349,7 +38320,6 @@ "xpack.securitySolution.detectionEngine.rules.updatePrebuiltRulesCalloutTitle": "已安装规则有可用更新。在 {link} 中复查并更新。", "xpack.securitySolution.detectionEngine.rules.updatePrePackagedRulesAndTimelinesButton": "更新 {updateRules} 个 Elastic 预构建{updateRules, plural, other {规则}}及 {updateTimelines} 个 Elastic 预构建{updateTimelines, plural, other {时间线}}", "xpack.securitySolution.detectionEngine.rules.updatePrePackagedTimelinesButton": "更新 {updateTimelines} 个 Elastic 预构建{updateTimelines, plural, other {时间线}}", - "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.dataSourceLabel": "数据源", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.eqlQueryLabel": "EQL 查询", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.esqlQueryLabel": "ESQL 查询", "xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.kqlQueryLabel": "KQL 查询", @@ -38360,43 +38330,26 @@ "xpack.securitySolution.detectionEngine.rules.upgradeRules.comparisonSide.title": "差异视图", "xpack.securitySolution.detectionEngine.rules.upgradeRules.currentVersionDescriptionLabel": "显示当前安装的规则", "xpack.securitySolution.detectionEngine.rules.upgradeRules.currentVersionLabel": "当前规则", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.fieldsWithUpdates": "升级包含 {count} 个{count, plural, other {字段}}", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.numOfConflicts": "{count} 个{count, plural, other {冲突}}", "xpack.securitySolution.detectionEngine.rules.upgradeRules.editButtonLabel": "编辑", "xpack.securitySolution.detectionEngine.rules.upgradeRules.elasticUpdateVersionLabel": "Elastic 更新", "xpack.securitySolution.detectionEngine.rules.upgradeRules.expandHiddenDiffLinesLabel": "展开 {linesCount} 个未更改的{linesCount, plural, other {行}}", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldReadOnly.noteLabel": "调查指南", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflict": "已解决冲突", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflictDescription": "我们已为这个已修改字段推荐了更新,请在接受前进行复查。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflicts": "{count} 个字段{count, plural, other {存在}}未解决的冲突。请复查并做出相应更改。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflictsDescription": "请为未解决的冲突提供输入。您还可以保持现状而不进行更新,也可以接受 Elastic 更新但丢失修改。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflicts": "{count} 个字段{count, plural, other {存在}}更新冲突,请复查正在更新的建议更新。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflictsDescription": "在接受更新之前,请复查建议的已更新版本。如果希望更改字段,您可以编辑然后保存字段。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgrade": "更新已准备就绪,可以应用。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgradeDescription": "现已复查并解决所有冲突,请更新规则。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.separator": "-", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflict": "已解决冲突", "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflictDescription": "我们已为这个已修改字段推荐了更新,请在接受前进行复查。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAccepted": "已接受更新", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAcceptedDescription": "您仍然可以做出更改,在更新规则之前,请复查/接受所有其他冲突。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.finalUpdate": "最后更新", "xpack.securitySolution.detectionEngine.rules.upgradeRules.noRulesBodyTitle": "您已安装的 Elastic 规则当前没有可用更新。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.noRulesTitle": "所有 Elastic 规则均保持最新", "xpack.securitySolution.detectionEngine.rules.upgradeRules.ruleUpgradeHelper": "了解如何 {docsLink}。", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.saveButtonLabel": "保存", "xpack.securitySolution.detectionEngine.rules.upgradeRules.searchBarPlaceholder": "按规则名称搜索", "xpack.securitySolution.detectionEngine.rules.upgradeRules.updatedVersionDescriptionLabel": "显示将安装的规则", "xpack.securitySolution.detectionEngine.rules.upgradeRules.updateYourRulesDocsLink": "更新您的规则", "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeAll": "全部更新", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeHelpText": "选择用在已升级规则中的字段值。", "xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeSelected": "更新 {numberOfSelectedRules} 个选定规则", "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.ariaLabel": "选择要比较的版本", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsCurrentLabel": "基础与当前", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsFinalLabel": "基础与最终", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsTargetLabel": "基础与目标", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsFinalLabel": "当前与最终", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsTargetLabel": "当前与目标", - "xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.targetVsFinalLabel": "目标与最终", "xpack.securitySolution.detectionEngine.rulesSnoozeBadge.error.unableToFetch": "无法提取暂停设置", "xpack.securitySolution.detectionEngine.ruleStatus.askAssistant": "询问助手", "xpack.securitySolution.detectionEngine.ruleStatus.askAssistantDesc": "规则的执行失败消息", @@ -44377,7 +44330,6 @@ "xpack.stackConnectors.components.inference.taskTypeDetailsLabel": "任务设置", "xpack.stackConnectors.components.inference.taskTypeFieldLabel": "任务类型", "xpack.stackConnectors.components.inference.taskTypeHelpLabel": "配置推理任务。这些设置特定于选定服务和模型。", - "xpack.stackConnectors.components.inference.taskTypeLabel": "任务类型", "xpack.stackConnectors.components.inference.unableToFindProvidersQueryMessage": "找不到提供商", "xpack.stackConnectors.components.jira.apiTokenTextFieldLabel": "API 令牌", "xpack.stackConnectors.components.jira.apiUrlTextFieldLabel": "URL", @@ -47568,8 +47520,6 @@ "xpack.upgradeAssistant.checkupTab.reindexing.flyout.flyoutHeader": "重新索引 {index}", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.learnMoreLinkLabel": "了解详情", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.acceptChangesTitle": "接受更改", - "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.customTypeNameWarningDetail": "映射类型在 Elastic 8.x 中不再受支持。确保没有应用程序代码或脚本依赖 {mappingType}。", - "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.customTypeNameWarningTitle": "将映射类型 {mappingType} 替换为 {defaultType}", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.deprecatedIndexSettingsWarningDetail": "检测到以下弃用的索引设置:", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.deprecatedIndexSettingsWarningTitle": "移除弃用的索引设置", "xpack.upgradeAssistant.checkupTab.reindexing.flyout.warningsStep.destructiveCallout.calloutDetail": "继续前备份索引。要继续重新索引,请接受每个更改。", @@ -47765,7 +47715,6 @@ "xpack.upgradeAssistant.overview.logsStep.title": "解决 API 弃用", "xpack.upgradeAssistant.overview.logsStep.viewLogsButtonLabel": "查看日志", "xpack.upgradeAssistant.overview.observe.discoveryDescription": "搜索并筛选弃用日志以了解需要进行的更改类型。", - "xpack.upgradeAssistant.overview.observe.observabilityDescription": "深入了解正在使用哪些已弃用 API 以及需要更新哪些应用程序。", "xpack.upgradeAssistant.overview.pageDescription": "准备使用下一版 Elastic Stack!", "xpack.upgradeAssistant.overview.pageTitle": "升级助手", "xpack.upgradeAssistant.overview.snapshotRestoreLink": "创建快照", @@ -47802,7 +47751,6 @@ "xpack.upgradeAssistant.overview.verifyChanges.resetCounterButton": "重置计数器", "xpack.upgradeAssistant.overview.verifyChanges.retryButton": "重试", "xpack.upgradeAssistant.overview.viewDiscoverResultsAction": "在 Discover 中分析日志", - "xpack.upgradeAssistant.overview.viewObservabilityResultsAction": "在日志浏览器中查看弃用日志", "xpack.upgradeAssistant.status.allDeprecationsResolvedMessage": "所有弃用警告均已解决。", "xpack.upgradeAssistant.status.deprecationsUnresolvedMessage": "在升级之前必须解决以下问题:{upgradeIssues}。", "xpack.upgradeAssistant.status.esTotalCriticalDepsMessage": "{esTotalCriticalDeps} 个 Elasticsearch 弃用{esTotalCriticalDeps, plural, other {问题}}", diff --git a/x-pack/plugins/watcher/README.md b/x-pack/platform/plugins/private/watcher/README.md similarity index 100% rename from x-pack/plugins/watcher/README.md rename to x-pack/platform/plugins/private/watcher/README.md diff --git a/x-pack/plugins/watcher/__fixtures__/execute_details.ts b/x-pack/platform/plugins/private/watcher/__fixtures__/execute_details.ts similarity index 100% rename from x-pack/plugins/watcher/__fixtures__/execute_details.ts rename to x-pack/platform/plugins/private/watcher/__fixtures__/execute_details.ts diff --git a/x-pack/plugins/watcher/__fixtures__/get_watch_history.ts b/x-pack/platform/plugins/private/watcher/__fixtures__/get_watch_history.ts similarity index 100% rename from x-pack/plugins/watcher/__fixtures__/get_watch_history.ts rename to x-pack/platform/plugins/private/watcher/__fixtures__/get_watch_history.ts diff --git a/x-pack/plugins/watcher/__fixtures__/index.ts b/x-pack/platform/plugins/private/watcher/__fixtures__/index.ts similarity index 100% rename from x-pack/plugins/watcher/__fixtures__/index.ts rename to x-pack/platform/plugins/private/watcher/__fixtures__/index.ts diff --git a/x-pack/plugins/watcher/__fixtures__/watch.ts b/x-pack/platform/plugins/private/watcher/__fixtures__/watch.ts similarity index 100% rename from x-pack/plugins/watcher/__fixtures__/watch.ts rename to x-pack/platform/plugins/private/watcher/__fixtures__/watch.ts diff --git a/x-pack/plugins/watcher/__jest__/__snapshots__/license_prompt.test.tsx.snap b/x-pack/platform/plugins/private/watcher/__jest__/__snapshots__/license_prompt.test.tsx.snap similarity index 100% rename from x-pack/plugins/watcher/__jest__/__snapshots__/license_prompt.test.tsx.snap rename to x-pack/platform/plugins/private/watcher/__jest__/__snapshots__/license_prompt.test.tsx.snap diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/app_context.mock.tsx b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/app_context.mock.tsx similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/app_context.mock.tsx rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/app_context.mock.tsx diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/http_requests.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/http_requests.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/http_requests.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/http_requests.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/index.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/index.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/index.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/index.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/jest_constants.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/jest_constants.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/jest_constants.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/jest_constants.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/setup_environment.tsx b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/setup_environment.tsx similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/setup_environment.tsx rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/setup_environment.tsx diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_create_json_page.helpers.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_create_json_page.helpers.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_create_json_page.helpers.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_create_json_page.helpers.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_create_threshold_page.helpers.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_create_threshold_page.helpers.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_create_threshold_page.helpers.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_create_threshold_page.helpers.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_edit_page.helpers.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_edit_page.helpers.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_edit_page.helpers.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_edit_page.helpers.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_list_page.helpers.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_list_page.helpers.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_list_page.helpers.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_list_page.helpers.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_status_page.helpers.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_status_page.helpers.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_status_page.helpers.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/helpers/watch_status_page.helpers.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_create_json_page.test.tsx b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_create_json_page.test.tsx similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/watch_create_json_page.test.tsx rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_create_json_page.test.tsx diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_create_threshold_page.test.tsx b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_create_threshold_page.test.tsx similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/watch_create_threshold_page.test.tsx rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_create_threshold_page.test.tsx diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_edit_page.test.tsx b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_edit_page.test.tsx similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/watch_edit_page.test.tsx rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_edit_page.test.tsx diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_list_page.test.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_list_page.test.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/watch_list_page.test.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_list_page.test.ts diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_status_page.test.ts b/x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_status_page.test.ts similarity index 100% rename from x-pack/plugins/watcher/__jest__/client_integration/watch_status_page.test.ts rename to x-pack/platform/plugins/private/watcher/__jest__/client_integration/watch_status_page.test.ts diff --git a/x-pack/plugins/watcher/__jest__/license_prompt.test.tsx b/x-pack/platform/plugins/private/watcher/__jest__/license_prompt.test.tsx similarity index 100% rename from x-pack/plugins/watcher/__jest__/license_prompt.test.tsx rename to x-pack/platform/plugins/private/watcher/__jest__/license_prompt.test.tsx diff --git a/x-pack/plugins/watcher/common/constants/action_modes.ts b/x-pack/platform/plugins/private/watcher/common/constants/action_modes.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/action_modes.ts rename to x-pack/platform/plugins/private/watcher/common/constants/action_modes.ts diff --git a/x-pack/plugins/watcher/common/constants/action_states.ts b/x-pack/platform/plugins/private/watcher/common/constants/action_states.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/action_states.ts rename to x-pack/platform/plugins/private/watcher/common/constants/action_states.ts diff --git a/x-pack/plugins/watcher/common/constants/action_types.ts b/x-pack/platform/plugins/private/watcher/common/constants/action_types.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/action_types.ts rename to x-pack/platform/plugins/private/watcher/common/constants/action_types.ts diff --git a/x-pack/plugins/watcher/common/constants/agg_types.ts b/x-pack/platform/plugins/private/watcher/common/constants/agg_types.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/agg_types.ts rename to x-pack/platform/plugins/private/watcher/common/constants/agg_types.ts diff --git a/x-pack/plugins/watcher/common/constants/comparators.ts b/x-pack/platform/plugins/private/watcher/common/constants/comparators.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/comparators.ts rename to x-pack/platform/plugins/private/watcher/common/constants/comparators.ts diff --git a/x-pack/plugins/watcher/common/constants/error_codes.ts b/x-pack/platform/plugins/private/watcher/common/constants/error_codes.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/error_codes.ts rename to x-pack/platform/plugins/private/watcher/common/constants/error_codes.ts diff --git a/x-pack/plugins/watcher/common/constants/es_scroll_settings.ts b/x-pack/platform/plugins/private/watcher/common/constants/es_scroll_settings.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/es_scroll_settings.ts rename to x-pack/platform/plugins/private/watcher/common/constants/es_scroll_settings.ts diff --git a/x-pack/plugins/watcher/common/constants/index.ts b/x-pack/platform/plugins/private/watcher/common/constants/index.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/index.ts rename to x-pack/platform/plugins/private/watcher/common/constants/index.ts diff --git a/x-pack/plugins/watcher/common/constants/index_names.ts b/x-pack/platform/plugins/private/watcher/common/constants/index_names.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/index_names.ts rename to x-pack/platform/plugins/private/watcher/common/constants/index_names.ts diff --git a/x-pack/plugins/watcher/common/constants/lists.ts b/x-pack/platform/plugins/private/watcher/common/constants/lists.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/lists.ts rename to x-pack/platform/plugins/private/watcher/common/constants/lists.ts diff --git a/x-pack/plugins/watcher/common/constants/pagination.ts b/x-pack/platform/plugins/private/watcher/common/constants/pagination.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/pagination.ts rename to x-pack/platform/plugins/private/watcher/common/constants/pagination.ts diff --git a/x-pack/plugins/watcher/common/constants/plugin.ts b/x-pack/platform/plugins/private/watcher/common/constants/plugin.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/plugin.ts rename to x-pack/platform/plugins/private/watcher/common/constants/plugin.ts diff --git a/x-pack/plugins/watcher/common/constants/refresh_intervals.ts b/x-pack/platform/plugins/private/watcher/common/constants/refresh_intervals.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/refresh_intervals.ts rename to x-pack/platform/plugins/private/watcher/common/constants/refresh_intervals.ts diff --git a/x-pack/plugins/watcher/common/constants/routes.ts b/x-pack/platform/plugins/private/watcher/common/constants/routes.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/routes.ts rename to x-pack/platform/plugins/private/watcher/common/constants/routes.ts diff --git a/x-pack/plugins/watcher/common/constants/sort_orders.ts b/x-pack/platform/plugins/private/watcher/common/constants/sort_orders.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/sort_orders.ts rename to x-pack/platform/plugins/private/watcher/common/constants/sort_orders.ts diff --git a/x-pack/plugins/watcher/common/constants/time_units.ts b/x-pack/platform/plugins/private/watcher/common/constants/time_units.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/time_units.ts rename to x-pack/platform/plugins/private/watcher/common/constants/time_units.ts diff --git a/x-pack/plugins/watcher/common/constants/watch_history.ts b/x-pack/platform/plugins/private/watcher/common/constants/watch_history.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/watch_history.ts rename to x-pack/platform/plugins/private/watcher/common/constants/watch_history.ts diff --git a/x-pack/plugins/watcher/common/constants/watch_state_comments.ts b/x-pack/platform/plugins/private/watcher/common/constants/watch_state_comments.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/watch_state_comments.ts rename to x-pack/platform/plugins/private/watcher/common/constants/watch_state_comments.ts diff --git a/x-pack/plugins/watcher/common/constants/watch_states.ts b/x-pack/platform/plugins/private/watcher/common/constants/watch_states.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/watch_states.ts rename to x-pack/platform/plugins/private/watcher/common/constants/watch_states.ts diff --git a/x-pack/plugins/watcher/common/constants/watch_types.ts b/x-pack/platform/plugins/private/watcher/common/constants/watch_types.ts similarity index 100% rename from x-pack/plugins/watcher/common/constants/watch_types.ts rename to x-pack/platform/plugins/private/watcher/common/constants/watch_types.ts diff --git a/x-pack/plugins/watcher/common/lib/get_action_type/get_action_type.test.js b/x-pack/platform/plugins/private/watcher/common/lib/get_action_type/get_action_type.test.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/get_action_type/get_action_type.test.js rename to x-pack/platform/plugins/private/watcher/common/lib/get_action_type/get_action_type.test.js diff --git a/x-pack/plugins/watcher/common/lib/get_action_type/get_action_type.ts b/x-pack/platform/plugins/private/watcher/common/lib/get_action_type/get_action_type.ts similarity index 100% rename from x-pack/plugins/watcher/common/lib/get_action_type/get_action_type.ts rename to x-pack/platform/plugins/private/watcher/common/lib/get_action_type/get_action_type.ts diff --git a/x-pack/plugins/watcher/common/lib/get_action_type/index.ts b/x-pack/platform/plugins/private/watcher/common/lib/get_action_type/index.ts similarity index 100% rename from x-pack/plugins/watcher/common/lib/get_action_type/index.ts rename to x-pack/platform/plugins/private/watcher/common/lib/get_action_type/index.ts diff --git a/x-pack/plugins/watcher/common/lib/get_moment/get_moment.test.ts b/x-pack/platform/plugins/private/watcher/common/lib/get_moment/get_moment.test.ts similarity index 100% rename from x-pack/plugins/watcher/common/lib/get_moment/get_moment.test.ts rename to x-pack/platform/plugins/private/watcher/common/lib/get_moment/get_moment.test.ts diff --git a/x-pack/plugins/watcher/common/lib/get_moment/get_moment.ts b/x-pack/platform/plugins/private/watcher/common/lib/get_moment/get_moment.ts similarity index 100% rename from x-pack/plugins/watcher/common/lib/get_moment/get_moment.ts rename to x-pack/platform/plugins/private/watcher/common/lib/get_moment/get_moment.ts diff --git a/x-pack/plugins/watcher/common/lib/get_moment/index.ts b/x-pack/platform/plugins/private/watcher/common/lib/get_moment/index.ts similarity index 100% rename from x-pack/plugins/watcher/common/lib/get_moment/index.ts rename to x-pack/platform/plugins/private/watcher/common/lib/get_moment/index.ts diff --git a/x-pack/plugins/watcher/common/lib/serialization/index.d.ts b/x-pack/platform/plugins/private/watcher/common/lib/serialization/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/index.d.ts rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/index.d.ts diff --git a/x-pack/plugins/watcher/common/lib/serialization/index.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/index.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/index.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/index.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_actions.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_actions.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_actions.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_actions.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_condition.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_condition.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_condition.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_condition.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_input.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_input.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_input.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_input.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_metadata.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_metadata.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_metadata.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_metadata.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_transform.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_transform.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_transform.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_transform.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_trigger.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_trigger.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/build_trigger.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/build_trigger.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/index.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/index.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/index.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/index.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/single_line_script.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/single_line_script.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialization_helpers/single_line_script.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialization_helpers/single_line_script.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialize_json_watch.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_json_watch.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialize_json_watch.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_json_watch.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialize_json_watch.test.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_json_watch.test.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialize_json_watch.test.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_json_watch.test.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialize_threshold_watch.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_threshold_watch.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialize_threshold_watch.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_threshold_watch.js diff --git a/x-pack/plugins/watcher/common/lib/serialization/serialize_threshold_watch.test.js b/x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_threshold_watch.test.js similarity index 100% rename from x-pack/plugins/watcher/common/lib/serialization/serialize_threshold_watch.test.js rename to x-pack/platform/plugins/private/watcher/common/lib/serialization/serialize_threshold_watch.test.js diff --git a/x-pack/plugins/watcher/common/models/action/action.js b/x-pack/platform/plugins/private/watcher/common/models/action/action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/action.js diff --git a/x-pack/plugins/watcher/common/models/action/action.test.js b/x-pack/platform/plugins/private/watcher/common/models/action/action.test.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/action.test.js rename to x-pack/platform/plugins/private/watcher/common/models/action/action.test.js diff --git a/x-pack/plugins/watcher/common/models/action/base_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/base_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/base_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/base_action.js diff --git a/x-pack/plugins/watcher/common/models/action/email_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/email_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/email_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/email_action.js diff --git a/x-pack/plugins/watcher/common/models/action/index.js b/x-pack/platform/plugins/private/watcher/common/models/action/index.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/index.js rename to x-pack/platform/plugins/private/watcher/common/models/action/index.js diff --git a/x-pack/plugins/watcher/common/models/action/index_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/index_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/index_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/index_action.js diff --git a/x-pack/plugins/watcher/common/models/action/jira_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/jira_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/jira_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/jira_action.js diff --git a/x-pack/plugins/watcher/common/models/action/logging_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/logging_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/logging_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/logging_action.js diff --git a/x-pack/plugins/watcher/common/models/action/pagerduty_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/pagerduty_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/pagerduty_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/pagerduty_action.js diff --git a/x-pack/plugins/watcher/common/models/action/slack_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/slack_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/slack_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/slack_action.js diff --git a/x-pack/plugins/watcher/common/models/action/unknown_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/unknown_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/unknown_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/unknown_action.js diff --git a/x-pack/plugins/watcher/common/models/action/webhook_action.js b/x-pack/platform/plugins/private/watcher/common/models/action/webhook_action.js similarity index 100% rename from x-pack/plugins/watcher/common/models/action/webhook_action.js rename to x-pack/platform/plugins/private/watcher/common/models/action/webhook_action.js diff --git a/x-pack/plugins/watcher/common/types/action_types.ts b/x-pack/platform/plugins/private/watcher/common/types/action_types.ts similarity index 100% rename from x-pack/plugins/watcher/common/types/action_types.ts rename to x-pack/platform/plugins/private/watcher/common/types/action_types.ts diff --git a/x-pack/plugins/watcher/common/types/index.ts b/x-pack/platform/plugins/private/watcher/common/types/index.ts similarity index 100% rename from x-pack/plugins/watcher/common/types/index.ts rename to x-pack/platform/plugins/private/watcher/common/types/index.ts diff --git a/x-pack/plugins/watcher/common/types/license_status.ts b/x-pack/platform/plugins/private/watcher/common/types/license_status.ts similarity index 100% rename from x-pack/plugins/watcher/common/types/license_status.ts rename to x-pack/platform/plugins/private/watcher/common/types/license_status.ts diff --git a/x-pack/plugins/watcher/common/types/status_types.ts b/x-pack/platform/plugins/private/watcher/common/types/status_types.ts similarity index 100% rename from x-pack/plugins/watcher/common/types/status_types.ts rename to x-pack/platform/plugins/private/watcher/common/types/status_types.ts diff --git a/x-pack/plugins/watcher/common/types/watch_types.ts b/x-pack/platform/plugins/private/watcher/common/types/watch_types.ts similarity index 100% rename from x-pack/plugins/watcher/common/types/watch_types.ts rename to x-pack/platform/plugins/private/watcher/common/types/watch_types.ts diff --git a/x-pack/platform/plugins/private/watcher/jest.config.js b/x-pack/platform/plugins/private/watcher/jest.config.js new file mode 100644 index 0000000000000..ac6ccc83eea58 --- /dev/null +++ b/x-pack/platform/plugins/private/watcher/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/private/watcher'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/private/watcher', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/private/watcher/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/watcher/kibana.jsonc b/x-pack/platform/plugins/private/watcher/kibana.jsonc similarity index 100% rename from x-pack/plugins/watcher/kibana.jsonc rename to x-pack/platform/plugins/private/watcher/kibana.jsonc diff --git a/x-pack/plugins/watcher/public/application/app.tsx b/x-pack/platform/plugins/private/watcher/public/application/app.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/app.tsx rename to x-pack/platform/plugins/private/watcher/public/application/app.tsx diff --git a/x-pack/plugins/watcher/public/application/app_context.tsx b/x-pack/platform/plugins/private/watcher/public/application/app_context.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/app_context.tsx rename to x-pack/platform/plugins/private/watcher/public/application/app_context.tsx diff --git a/x-pack/plugins/watcher/public/application/components/action_state_badge.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/action_state_badge.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/action_state_badge.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/action_state_badge.tsx diff --git a/x-pack/plugins/watcher/public/application/components/confirm_watches_modal.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/confirm_watches_modal.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/confirm_watches_modal.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/confirm_watches_modal.tsx diff --git a/x-pack/plugins/watcher/public/application/components/delete_watches_modal.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/delete_watches_modal.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/delete_watches_modal.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/delete_watches_modal.tsx diff --git a/x-pack/plugins/watcher/public/application/components/form_errors.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/form_errors.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/form_errors.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/form_errors.tsx diff --git a/x-pack/plugins/watcher/public/application/components/index.ts b/x-pack/platform/plugins/private/watcher/public/application/components/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/components/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/components/index.ts diff --git a/x-pack/plugins/watcher/public/application/components/page_error/index.ts b/x-pack/platform/plugins/private/watcher/public/application/components/page_error/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/components/page_error/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/components/page_error/index.ts diff --git a/x-pack/plugins/watcher/public/application/components/page_error/page_error.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/page_error/page_error.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/page_error/page_error.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/page_error/page_error.tsx diff --git a/x-pack/plugins/watcher/public/application/components/page_error/page_error_forbidden.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/page_error/page_error_forbidden.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/page_error/page_error_forbidden.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/page_error/page_error_forbidden.tsx diff --git a/x-pack/plugins/watcher/public/application/components/page_error/page_error_not_exist.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/page_error/page_error_not_exist.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/page_error/page_error_not_exist.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/page_error/page_error_not_exist.tsx diff --git a/x-pack/plugins/watcher/public/application/components/section_error.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/section_error.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/section_error.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/section_error.tsx diff --git a/x-pack/plugins/watcher/public/application/components/section_loading.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/section_loading.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/section_loading.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/section_loading.tsx diff --git a/x-pack/plugins/watcher/public/application/components/watch_state_badge.tsx b/x-pack/platform/plugins/private/watcher/public/application/components/watch_state_badge.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/components/watch_state_badge.tsx rename to x-pack/platform/plugins/private/watcher/public/application/components/watch_state_badge.tsx diff --git a/x-pack/plugins/watcher/public/application/constants/base_path.ts b/x-pack/platform/plugins/private/watcher/public/application/constants/base_path.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/constants/base_path.ts rename to x-pack/platform/plugins/private/watcher/public/application/constants/base_path.ts diff --git a/x-pack/plugins/watcher/public/application/constants/index.ts b/x-pack/platform/plugins/private/watcher/public/application/constants/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/constants/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/constants/index.ts diff --git a/x-pack/plugins/watcher/public/application/index.tsx b/x-pack/platform/plugins/private/watcher/public/application/index.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/index.tsx rename to x-pack/platform/plugins/private/watcher/public/application/index.tsx diff --git a/x-pack/plugins/watcher/public/application/lib/api.ts b/x-pack/platform/plugins/private/watcher/public/application/lib/api.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/lib/api.ts rename to x-pack/platform/plugins/private/watcher/public/application/lib/api.ts diff --git a/x-pack/plugins/watcher/public/application/lib/breadcrumbs.ts b/x-pack/platform/plugins/private/watcher/public/application/lib/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/lib/breadcrumbs.ts rename to x-pack/platform/plugins/private/watcher/public/application/lib/breadcrumbs.ts diff --git a/x-pack/plugins/watcher/public/application/lib/format_date.ts b/x-pack/platform/plugins/private/watcher/public/application/lib/format_date.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/lib/format_date.ts rename to x-pack/platform/plugins/private/watcher/public/application/lib/format_date.ts diff --git a/x-pack/plugins/watcher/public/application/lib/get_search_value.ts b/x-pack/platform/plugins/private/watcher/public/application/lib/get_search_value.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/lib/get_search_value.ts rename to x-pack/platform/plugins/private/watcher/public/application/lib/get_search_value.ts diff --git a/x-pack/plugins/watcher/public/application/lib/get_time_unit_label.ts b/x-pack/platform/plugins/private/watcher/public/application/lib/get_time_unit_label.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/lib/get_time_unit_label.ts rename to x-pack/platform/plugins/private/watcher/public/application/lib/get_time_unit_label.ts diff --git a/x-pack/plugins/watcher/public/application/lib/navigation.ts b/x-pack/platform/plugins/private/watcher/public/application/lib/navigation.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/lib/navigation.ts rename to x-pack/platform/plugins/private/watcher/public/application/lib/navigation.ts diff --git a/x-pack/plugins/watcher/public/application/lib/use_request.ts b/x-pack/platform/plugins/private/watcher/public/application/lib/use_request.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/lib/use_request.ts rename to x-pack/platform/plugins/private/watcher/public/application/lib/use_request.ts diff --git a/x-pack/plugins/watcher/public/application/license_prompt.tsx b/x-pack/platform/plugins/private/watcher/public/application/license_prompt.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/license_prompt.tsx rename to x-pack/platform/plugins/private/watcher/public/application/license_prompt.tsx diff --git a/x-pack/plugins/watcher/public/application/models/action/action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/base_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/base_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/base_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/base_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/email_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/email_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/email_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/email_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/index.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/action/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/index.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/action/index.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/action/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/index.js diff --git a/x-pack/plugins/watcher/public/application/models/action/index_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/index_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/index_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/index_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/jira_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/jira_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/jira_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/jira_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/logging_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/logging_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/logging_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/logging_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/pagerduty_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/pagerduty_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/pagerduty_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/pagerduty_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/slack_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/slack_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/slack_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/slack_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/unknown_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/unknown_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/unknown_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/unknown_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action/webhook_action.js b/x-pack/platform/plugins/private/watcher/public/application/models/action/webhook_action.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action/webhook_action.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action/webhook_action.js diff --git a/x-pack/plugins/watcher/public/application/models/action_status/action_status.js b/x-pack/platform/plugins/private/watcher/public/application/models/action_status/action_status.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action_status/action_status.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action_status/action_status.js diff --git a/x-pack/plugins/watcher/public/application/models/action_status/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/action_status/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/action_status/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/action_status/index.js diff --git a/x-pack/plugins/watcher/public/application/models/execute_details/execute_details.js b/x-pack/platform/plugins/private/watcher/public/application/models/execute_details/execute_details.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/execute_details/execute_details.js rename to x-pack/platform/plugins/private/watcher/public/application/models/execute_details/execute_details.js diff --git a/x-pack/plugins/watcher/public/application/models/execute_details/index.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/execute_details/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/execute_details/index.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/execute_details/index.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/execute_details/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/execute_details/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/execute_details/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/execute_details/index.js diff --git a/x-pack/plugins/watcher/public/application/models/settings/index.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/settings/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/settings/index.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/settings/index.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/settings/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/settings/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/settings/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/settings/index.js diff --git a/x-pack/plugins/watcher/public/application/models/settings/settings.js b/x-pack/platform/plugins/private/watcher/public/application/models/settings/settings.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/settings/settings.js rename to x-pack/platform/plugins/private/watcher/public/application/models/settings/settings.js diff --git a/x-pack/plugins/watcher/public/application/models/visualize_options/index.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/visualize_options/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/visualize_options/index.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/visualize_options/index.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/visualize_options/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/visualize_options/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/visualize_options/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/visualize_options/index.js diff --git a/x-pack/plugins/watcher/public/application/models/visualize_options/visualize_options.js b/x-pack/platform/plugins/private/watcher/public/application/models/visualize_options/visualize_options.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/visualize_options/visualize_options.js rename to x-pack/platform/plugins/private/watcher/public/application/models/visualize_options/visualize_options.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/agg_types.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch/agg_types.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/agg_types.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/agg_types.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch/base_watch.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/base_watch.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/base_watch.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/base_watch.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/comparators.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch/comparators.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/comparators.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/comparators.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch/default_watch.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/default_watch.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/default_watch.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/default_watch.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/group_by_types.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch/group_by_types.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/group_by_types.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/group_by_types.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch/index.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/index.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/index.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/index.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/json_watch.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch/json_watch.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/json_watch.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/json_watch.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch/json_watch.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/json_watch.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/json_watch.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/json_watch.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/lib/check_action_id_collision/check_action_id_collision.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/check_action_id_collision/check_action_id_collision.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/lib/check_action_id_collision/check_action_id_collision.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/check_action_id_collision/check_action_id_collision.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/lib/check_action_id_collision/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/check_action_id_collision/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/lib/check_action_id_collision/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/check_action_id_collision/index.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/lib/create_action_id/create_action_id.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/create_action_id/create_action_id.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/lib/create_action_id/create_action_id.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/create_action_id/create_action_id.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/lib/create_action_id/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/create_action_id/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/lib/create_action_id/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/lib/create_action_id/index.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/monitoring_watch.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/monitoring_watch.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/monitoring_watch.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/monitoring_watch.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/threshold_watch.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch/threshold_watch.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/threshold_watch.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/threshold_watch.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch/threshold_watch.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/threshold_watch.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/threshold_watch.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/threshold_watch.js diff --git a/x-pack/plugins/watcher/public/application/models/watch/watch.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch/watch.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch/watch.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch/watch.js diff --git a/x-pack/plugins/watcher/public/application/models/watch_errors/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch_errors/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_errors/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_errors/index.js diff --git a/x-pack/plugins/watcher/public/application/models/watch_errors/watch_errors.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch_errors/watch_errors.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_errors/watch_errors.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_errors/watch_errors.js diff --git a/x-pack/plugins/watcher/public/application/models/watch_history_item/index.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch_history_item/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_history_item/index.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_history_item/index.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch_history_item/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch_history_item/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_history_item/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_history_item/index.js diff --git a/x-pack/plugins/watcher/public/application/models/watch_history_item/watch_history_item.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch_history_item/watch_history_item.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_history_item/watch_history_item.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_history_item/watch_history_item.js diff --git a/x-pack/plugins/watcher/public/application/models/watch_status/index.d.ts b/x-pack/platform/plugins/private/watcher/public/application/models/watch_status/index.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_status/index.d.ts rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_status/index.d.ts diff --git a/x-pack/plugins/watcher/public/application/models/watch_status/index.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch_status/index.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_status/index.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_status/index.js diff --git a/x-pack/plugins/watcher/public/application/models/watch_status/watch_status.js b/x-pack/platform/plugins/private/watcher/public/application/models/watch_status/watch_status.js similarity index 100% rename from x-pack/plugins/watcher/public/application/models/watch_status/watch_status.js rename to x-pack/platform/plugins/private/watcher/public/application/models/watch_status/watch_status.js diff --git a/x-pack/plugins/watcher/public/application/sections/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_form.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_form.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_form.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_form.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_simulate.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_simulate.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_simulate.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/json_watch_edit_simulate.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/simulate_watch_results_flyout.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/simulate_watch_results_flyout.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/simulate_watch_results_flyout.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/json_watch_edit/simulate_watch_results_flyout.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/monitoring_watch_edit.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/monitoring_watch_edit.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/monitoring_watch_edit.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/monitoring_watch_edit/monitoring_watch_edit.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/request_flyout.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/request_flyout.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/request_flyout.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/request_flyout.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/email_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/email_action_fields.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/email_action_fields.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/email_action_fields.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index_action_fields.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index_action_fields.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/index_action_fields.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/jira_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/jira_action_fields.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/jira_action_fields.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/jira_action_fields.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/logging_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/logging_action_fields.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/logging_action_fields.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/logging_action_fields.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/pagerduty_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/pagerduty_action_fields.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/pagerduty_action_fields.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/pagerduty_action_fields.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/slack_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/slack_action_fields.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/slack_action_fields.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/slack_action_fields.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/webhook_action_fields.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/webhook_action_fields.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/webhook_action_fields.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/action_fields/webhook_action_fields.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_accordion.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_accordion.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_accordion.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_accordion.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_dropdown.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_dropdown.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_dropdown.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_dropdown.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_panel.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_panel.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_panel.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_action_panel.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_edit.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_edit.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_edit.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/threshold_watch_edit.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/watch_visualization.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/watch_visualization.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/watch_visualization.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/components/threshold_watch_edit/watch_visualization.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/watch_context.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/watch_context.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/watch_context.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/watch_context.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/watch_edit_actions.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/watch_edit_actions.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/watch_edit_actions.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/watch_edit_actions.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_edit_page/watch_edit_page.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/watch_edit_page.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_edit_page/watch_edit_page.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_edit_page/watch_edit_page.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_list_page/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_list_page/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_list_page/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_list_page/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_list_page/watch_list_page.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_list_page/watch_list_page.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_list_page/watch_list_page.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_list_page/watch_list_page.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_status_page/components/action_statuses_panel.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/components/action_statuses_panel.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_status_page/components/action_statuses_panel.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/components/action_statuses_panel.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_status_page/components/execution_history_panel.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/components/execution_history_panel.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_status_page/components/execution_history_panel.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/components/execution_history_panel.tsx diff --git a/x-pack/plugins/watcher/public/application/sections/watch_status_page/components/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/components/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_status_page/components/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/components/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_status_page/index.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_status_page/index.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/index.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_status_page/watch_details_context.ts b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/watch_details_context.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_status_page/watch_details_context.ts rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/watch_details_context.ts diff --git a/x-pack/plugins/watcher/public/application/sections/watch_status_page/watch_status_page.tsx b/x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/watch_status_page.tsx similarity index 100% rename from x-pack/plugins/watcher/public/application/sections/watch_status_page/watch_status_page.tsx rename to x-pack/platform/plugins/private/watcher/public/application/sections/watch_status_page/watch_status_page.tsx diff --git a/x-pack/plugins/watcher/public/application/shared_imports.ts b/x-pack/platform/plugins/private/watcher/public/application/shared_imports.ts similarity index 100% rename from x-pack/plugins/watcher/public/application/shared_imports.ts rename to x-pack/platform/plugins/private/watcher/public/application/shared_imports.ts diff --git a/x-pack/plugins/watcher/public/index.scss b/x-pack/platform/plugins/private/watcher/public/index.scss similarity index 100% rename from x-pack/plugins/watcher/public/index.scss rename to x-pack/platform/plugins/private/watcher/public/index.scss diff --git a/x-pack/plugins/watcher/public/index.ts b/x-pack/platform/plugins/private/watcher/public/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/index.ts rename to x-pack/platform/plugins/private/watcher/public/index.ts diff --git a/x-pack/plugins/watcher/public/legacy/calc_auto_interval.ts b/x-pack/platform/plugins/private/watcher/public/legacy/calc_auto_interval.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/calc_auto_interval.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/calc_auto_interval.ts diff --git a/x-pack/plugins/watcher/public/legacy/calc_es_interval.ts b/x-pack/platform/plugins/private/watcher/public/legacy/calc_es_interval.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/calc_es_interval.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/calc_es_interval.ts diff --git a/x-pack/plugins/watcher/public/legacy/index.ts b/x-pack/platform/plugins/private/watcher/public/legacy/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/index.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/index.ts diff --git a/x-pack/plugins/watcher/public/legacy/parse_es_interval/index.ts b/x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/index.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/parse_es_interval/index.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/index.ts diff --git a/x-pack/plugins/watcher/public/legacy/parse_es_interval/invalid_es_calendar_interval_error.ts b/x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/invalid_es_calendar_interval_error.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/parse_es_interval/invalid_es_calendar_interval_error.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/invalid_es_calendar_interval_error.ts diff --git a/x-pack/plugins/watcher/public/legacy/parse_es_interval/invalid_es_interval_format_error.ts b/x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/invalid_es_interval_format_error.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/parse_es_interval/invalid_es_interval_format_error.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/invalid_es_interval_format_error.ts diff --git a/x-pack/plugins/watcher/public/legacy/parse_es_interval/is_valid_es_interval.ts b/x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/is_valid_es_interval.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/parse_es_interval/is_valid_es_interval.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/is_valid_es_interval.ts diff --git a/x-pack/plugins/watcher/public/legacy/parse_es_interval/parse_es_interval.test.ts b/x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/parse_es_interval.test.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/parse_es_interval/parse_es_interval.test.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/parse_es_interval.test.ts diff --git a/x-pack/plugins/watcher/public/legacy/parse_es_interval/parse_es_interval.ts b/x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/parse_es_interval.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/parse_es_interval/parse_es_interval.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/parse_es_interval/parse_es_interval.ts diff --git a/x-pack/plugins/watcher/public/legacy/time_buckets.d.ts b/x-pack/platform/plugins/private/watcher/public/legacy/time_buckets.d.ts similarity index 100% rename from x-pack/plugins/watcher/public/legacy/time_buckets.d.ts rename to x-pack/platform/plugins/private/watcher/public/legacy/time_buckets.d.ts diff --git a/x-pack/plugins/watcher/public/legacy/time_buckets.js b/x-pack/platform/plugins/private/watcher/public/legacy/time_buckets.js similarity index 100% rename from x-pack/plugins/watcher/public/legacy/time_buckets.js rename to x-pack/platform/plugins/private/watcher/public/legacy/time_buckets.js diff --git a/x-pack/plugins/watcher/public/plugin.ts b/x-pack/platform/plugins/private/watcher/public/plugin.ts similarity index 100% rename from x-pack/plugins/watcher/public/plugin.ts rename to x-pack/platform/plugins/private/watcher/public/plugin.ts diff --git a/x-pack/plugins/watcher/public/types.ts b/x-pack/platform/plugins/private/watcher/public/types.ts similarity index 100% rename from x-pack/plugins/watcher/public/types.ts rename to x-pack/platform/plugins/private/watcher/public/types.ts diff --git a/x-pack/plugins/watcher/server/index.ts b/x-pack/platform/plugins/private/watcher/server/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/index.ts rename to x-pack/platform/plugins/private/watcher/server/index.ts diff --git a/x-pack/plugins/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.test.js b/x-pack/platform/plugins/private/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.test.js similarity index 100% rename from x-pack/plugins/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.test.js rename to x-pack/platform/plugins/private/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.test.js diff --git a/x-pack/plugins/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.ts b/x-pack/platform/plugins/private/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.ts similarity index 100% rename from x-pack/plugins/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.ts rename to x-pack/platform/plugins/private/watcher/server/lib/fetch_all_from_scroll/fetch_all_from_scroll.ts diff --git a/x-pack/plugins/watcher/server/lib/fetch_all_from_scroll/index.ts b/x-pack/platform/plugins/private/watcher/server/lib/fetch_all_from_scroll/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/lib/fetch_all_from_scroll/index.ts rename to x-pack/platform/plugins/private/watcher/server/lib/fetch_all_from_scroll/index.ts diff --git a/x-pack/plugins/watcher/server/lib/normalized_field_types/index.ts b/x-pack/platform/plugins/private/watcher/server/lib/normalized_field_types/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/lib/normalized_field_types/index.ts rename to x-pack/platform/plugins/private/watcher/server/lib/normalized_field_types/index.ts diff --git a/x-pack/plugins/watcher/server/lib/normalized_field_types/normalized_field_types.ts b/x-pack/platform/plugins/private/watcher/server/lib/normalized_field_types/normalized_field_types.ts similarity index 100% rename from x-pack/plugins/watcher/server/lib/normalized_field_types/normalized_field_types.ts rename to x-pack/platform/plugins/private/watcher/server/lib/normalized_field_types/normalized_field_types.ts diff --git a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.state.test.ts b/x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model.state.test.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/action_status_model/action_status_model.state.test.ts rename to x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model.state.test.ts diff --git a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.test.ts b/x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model.test.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/action_status_model/action_status_model.test.ts rename to x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model.test.ts diff --git a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model.ts b/x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/action_status_model/action_status_model.ts rename to x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model.ts diff --git a/x-pack/plugins/watcher/server/models/action_status_model/action_status_model_utils.ts b/x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model_utils.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/action_status_model/action_status_model_utils.ts rename to x-pack/platform/plugins/private/watcher/server/models/action_status_model/action_status_model_utils.ts diff --git a/x-pack/plugins/watcher/server/models/action_status_model/index.ts b/x-pack/platform/plugins/private/watcher/server/models/action_status_model/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/action_status_model/index.ts rename to x-pack/platform/plugins/private/watcher/server/models/action_status_model/index.ts diff --git a/x-pack/plugins/watcher/server/models/execute_details/execute_details.js b/x-pack/platform/plugins/private/watcher/server/models/execute_details/execute_details.js similarity index 100% rename from x-pack/plugins/watcher/server/models/execute_details/execute_details.js rename to x-pack/platform/plugins/private/watcher/server/models/execute_details/execute_details.js diff --git a/x-pack/plugins/watcher/server/models/execute_details/execute_details.test.js b/x-pack/platform/plugins/private/watcher/server/models/execute_details/execute_details.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/execute_details/execute_details.test.js rename to x-pack/platform/plugins/private/watcher/server/models/execute_details/execute_details.test.js diff --git a/x-pack/plugins/watcher/server/models/execute_details/index.js b/x-pack/platform/plugins/private/watcher/server/models/execute_details/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/execute_details/index.js rename to x-pack/platform/plugins/private/watcher/server/models/execute_details/index.js diff --git a/x-pack/plugins/watcher/server/models/fields/fields.js b/x-pack/platform/plugins/private/watcher/server/models/fields/fields.js similarity index 100% rename from x-pack/plugins/watcher/server/models/fields/fields.js rename to x-pack/platform/plugins/private/watcher/server/models/fields/fields.js diff --git a/x-pack/plugins/watcher/server/models/fields/fields.test.js b/x-pack/platform/plugins/private/watcher/server/models/fields/fields.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/fields/fields.test.js rename to x-pack/platform/plugins/private/watcher/server/models/fields/fields.test.js diff --git a/x-pack/plugins/watcher/server/models/fields/index.js b/x-pack/platform/plugins/private/watcher/server/models/fields/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/fields/index.js rename to x-pack/platform/plugins/private/watcher/server/models/fields/index.js diff --git a/x-pack/plugins/watcher/server/models/settings/index.js b/x-pack/platform/plugins/private/watcher/server/models/settings/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/settings/index.js rename to x-pack/platform/plugins/private/watcher/server/models/settings/index.js diff --git a/x-pack/plugins/watcher/server/models/settings/settings.js b/x-pack/platform/plugins/private/watcher/server/models/settings/settings.js similarity index 100% rename from x-pack/plugins/watcher/server/models/settings/settings.js rename to x-pack/platform/plugins/private/watcher/server/models/settings/settings.js diff --git a/x-pack/plugins/watcher/server/models/settings/settings.test.js b/x-pack/platform/plugins/private/watcher/server/models/settings/settings.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/settings/settings.test.js rename to x-pack/platform/plugins/private/watcher/server/models/settings/settings.test.js diff --git a/x-pack/plugins/watcher/server/models/visualize_options/index.js b/x-pack/platform/plugins/private/watcher/server/models/visualize_options/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/visualize_options/index.js rename to x-pack/platform/plugins/private/watcher/server/models/visualize_options/index.js diff --git a/x-pack/plugins/watcher/server/models/visualize_options/visualize_options.js b/x-pack/platform/plugins/private/watcher/server/models/visualize_options/visualize_options.js similarity index 100% rename from x-pack/plugins/watcher/server/models/visualize_options/visualize_options.js rename to x-pack/platform/plugins/private/watcher/server/models/visualize_options/visualize_options.js diff --git a/x-pack/plugins/watcher/server/models/watch/base_watch.js b/x-pack/platform/plugins/private/watcher/server/models/watch/base_watch.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/base_watch.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/base_watch.js diff --git a/x-pack/plugins/watcher/server/models/watch/base_watch.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch/base_watch.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/base_watch.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/base_watch.test.js diff --git a/x-pack/plugins/watcher/server/models/watch/index.js b/x-pack/platform/plugins/private/watcher/server/models/watch/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/index.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/index.js diff --git a/x-pack/plugins/watcher/server/models/watch/json_watch.js b/x-pack/platform/plugins/private/watcher/server/models/watch/json_watch.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/json_watch.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/json_watch.js diff --git a/x-pack/plugins/watcher/server/models/watch/json_watch.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch/json_watch.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/json_watch.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/json_watch.test.js diff --git a/x-pack/plugins/watcher/server/models/watch/lib/get_interval_type/get_interval_type.test.ts b/x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_interval_type/get_interval_type.test.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/lib/get_interval_type/get_interval_type.test.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_interval_type/get_interval_type.test.ts diff --git a/x-pack/plugins/watcher/server/models/watch/lib/get_interval_type/get_interval_type.ts b/x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_interval_type/get_interval_type.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/lib/get_interval_type/get_interval_type.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_interval_type/get_interval_type.ts diff --git a/x-pack/plugins/watcher/server/models/watch/lib/get_interval_type/index.ts b/x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_interval_type/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/lib/get_interval_type/index.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_interval_type/index.ts diff --git a/x-pack/plugins/watcher/server/models/watch/lib/get_watch_type/get_watch_type.js b/x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_watch_type/get_watch_type.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/lib/get_watch_type/get_watch_type.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_watch_type/get_watch_type.js diff --git a/x-pack/plugins/watcher/server/models/watch/lib/get_watch_type/index.js b/x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_watch_type/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/lib/get_watch_type/index.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/lib/get_watch_type/index.js diff --git a/x-pack/plugins/watcher/server/models/watch/monitoring_watch.js b/x-pack/platform/plugins/private/watcher/server/models/watch/monitoring_watch.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/monitoring_watch.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/monitoring_watch.js diff --git a/x-pack/plugins/watcher/server/models/watch/monitoring_watch.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch/monitoring_watch.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/monitoring_watch.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/monitoring_watch.test.js diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/build_visualize_query.js b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/build_visualize_query.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/build_visualize_query.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/build_visualize_query.js diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count.query.date.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count.query.date.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count.query.date.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count.query.date.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count.query.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count.query.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count.query.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count.query.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count_terms.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count_terms.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count_terms.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count_terms.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.date.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.date.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.date.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.date.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/count_terms.query.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.date.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.date.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.date.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.date.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count.query.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.date.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.date.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.date.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.date.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.json b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.json similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.json rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/data_samples/non_count_terms.query.json diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/format_visualize_data.js b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/format_visualize_data.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/format_visualize_data.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/format_visualize_data.js diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/format_visualize_data.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/format_visualize_data.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/format_visualize_data.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/format_visualize_data.test.js diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/index.js b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/index.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/index.js diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/threshold_watch.js b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/threshold_watch.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/threshold_watch.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/threshold_watch.js diff --git a/x-pack/plugins/watcher/server/models/watch/threshold_watch/threshold_watch.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/threshold_watch.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/threshold_watch/threshold_watch.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/threshold_watch/threshold_watch.test.js diff --git a/x-pack/plugins/watcher/server/models/watch/watch.js b/x-pack/platform/plugins/private/watcher/server/models/watch/watch.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/watch.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/watch.js diff --git a/x-pack/plugins/watcher/server/models/watch/watch.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch/watch.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch/watch.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch/watch.test.js diff --git a/x-pack/plugins/watcher/server/models/watch_errors/index.js b/x-pack/platform/plugins/private/watcher/server/models/watch_errors/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_errors/index.js rename to x-pack/platform/plugins/private/watcher/server/models/watch_errors/index.js diff --git a/x-pack/plugins/watcher/server/models/watch_errors/watch_errors.js b/x-pack/platform/plugins/private/watcher/server/models/watch_errors/watch_errors.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_errors/watch_errors.js rename to x-pack/platform/plugins/private/watcher/server/models/watch_errors/watch_errors.js diff --git a/x-pack/plugins/watcher/server/models/watch_errors/watch_errors.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch_errors/watch_errors.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_errors/watch_errors.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch_errors/watch_errors.test.js diff --git a/x-pack/plugins/watcher/server/models/watch_history_item/index.js b/x-pack/platform/plugins/private/watcher/server/models/watch_history_item/index.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_history_item/index.js rename to x-pack/platform/plugins/private/watcher/server/models/watch_history_item/index.js diff --git a/x-pack/plugins/watcher/server/models/watch_history_item/watch_history_item.js b/x-pack/platform/plugins/private/watcher/server/models/watch_history_item/watch_history_item.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_history_item/watch_history_item.js rename to x-pack/platform/plugins/private/watcher/server/models/watch_history_item/watch_history_item.js diff --git a/x-pack/plugins/watcher/server/models/watch_history_item/watch_history_item.test.js b/x-pack/platform/plugins/private/watcher/server/models/watch_history_item/watch_history_item.test.js similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_history_item/watch_history_item.test.js rename to x-pack/platform/plugins/private/watcher/server/models/watch_history_item/watch_history_item.test.js diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/index.ts b/x-pack/platform/plugins/private/watcher/server/models/watch_status_model/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_status_model/index.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch_status_model/index.ts diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.test.ts b/x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model.test.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.test.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model.test.ts diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.ts b/x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model.ts diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model_utils.test.ts b/x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model_utils.test.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model_utils.test.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model_utils.test.ts diff --git a/x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model_utils.ts b/x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model_utils.ts similarity index 100% rename from x-pack/plugins/watcher/server/models/watch_status_model/watch_status_model_utils.ts rename to x-pack/platform/plugins/private/watcher/server/models/watch_status_model/watch_status_model_utils.ts diff --git a/x-pack/plugins/watcher/server/plugin.ts b/x-pack/platform/plugins/private/watcher/server/plugin.ts similarity index 100% rename from x-pack/plugins/watcher/server/plugin.ts rename to x-pack/platform/plugins/private/watcher/server/plugin.ts diff --git a/x-pack/plugins/watcher/server/routes/api/indices/index.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/indices/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/indices/index.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/indices/index.ts diff --git a/x-pack/plugins/watcher/server/routes/api/indices/register_get_index_patterns_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_get_index_patterns_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/indices/register_get_index_patterns_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_get_index_patterns_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/indices/register_get_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_get_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/indices/register_get_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_get_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/indices/register_indices_routes.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_indices_routes.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/indices/register_indices_routes.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_indices_routes.ts diff --git a/x-pack/plugins/watcher/server/routes/api/license/index.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/license/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/license/index.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/license/index.ts diff --git a/x-pack/plugins/watcher/server/routes/api/license/register_license_routes.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/license/register_license_routes.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/license/register_license_routes.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/license/register_license_routes.ts diff --git a/x-pack/plugins/watcher/server/routes/api/license/register_refresh_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/license/register_refresh_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/license/register_refresh_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/license/register_refresh_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/register_list_fields_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/register_list_fields_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/register_list_fields_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/register_list_fields_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/register_load_history_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/register_load_history_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/register_load_history_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/register_load_history_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/settings/index.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/settings/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/settings/index.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/settings/index.ts diff --git a/x-pack/plugins/watcher/server/routes/api/settings/register_load_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/settings/register_load_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/settings/register_load_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/settings/register_load_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/settings/register_settings_routes.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/settings/register_settings_routes.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/settings/register_settings_routes.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/settings/register_settings_routes.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/action/index.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/action/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/action/index.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/action/index.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/action/register_acknowledge_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/action/register_acknowledge_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/action/register_acknowledge_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/action/register_acknowledge_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/action/register_action_routes.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/action/register_action_routes.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/action/register_action_routes.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/action/register_action_routes.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/index.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/index.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/index.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_activate_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_activate_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_activate_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_activate_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_deactivate_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_deactivate_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_deactivate_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_deactivate_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_delete_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_delete_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_delete_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_delete_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_execute_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_execute_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_execute_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_execute_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_history_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_history_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_history_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_history_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_load_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_load_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_load_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_load_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_save_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_save_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_save_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_save_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_visualize_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_visualize_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_visualize_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_visualize_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watch/register_watch_routes.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_watch_routes.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watch/register_watch_routes.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watch/register_watch_routes.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watches/index.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watches/index.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watches/index.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watches/index.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watches/register_delete_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_delete_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watches/register_delete_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_delete_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watches/register_list_route.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_list_route.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watches/register_list_route.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_list_route.ts diff --git a/x-pack/plugins/watcher/server/routes/api/watches/register_watches_routes.ts b/x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_watches_routes.ts similarity index 100% rename from x-pack/plugins/watcher/server/routes/api/watches/register_watches_routes.ts rename to x-pack/platform/plugins/private/watcher/server/routes/api/watches/register_watches_routes.ts diff --git a/x-pack/plugins/watcher/server/shared_imports.ts b/x-pack/platform/plugins/private/watcher/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/watcher/server/shared_imports.ts rename to x-pack/platform/plugins/private/watcher/server/shared_imports.ts diff --git a/x-pack/plugins/watcher/server/types.ts b/x-pack/platform/plugins/private/watcher/server/types.ts similarity index 100% rename from x-pack/plugins/watcher/server/types.ts rename to x-pack/platform/plugins/private/watcher/server/types.ts diff --git a/x-pack/platform/plugins/private/watcher/tsconfig.json b/x-pack/platform/plugins/private/watcher/tsconfig.json new file mode 100644 index 0000000000000..3a040c75bb84a --- /dev/null +++ b/x-pack/platform/plugins/private/watcher/tsconfig.json @@ -0,0 +1,45 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "__jest__/**/*", + "server/**/*", + "public/**/*", + "common/**/*", + "__fixtures__/*", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/home-plugin", + "@kbn/management-plugin", + "@kbn/charts-plugin", + "@kbn/data-plugin", + "@kbn/kibana-react-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/license-api-guard-plugin", + "@kbn/licensing-plugin", + "@kbn/features-plugin", + "@kbn/core-doc-links-browser-mocks", + "@kbn/core-execution-context-browser-mocks", + "@kbn/test-jest-helpers", + "@kbn/i18n", + "@kbn/safer-lodash-set", + "@kbn/config-schema", + "@kbn/datemath", + "@kbn/field-formats-plugin", + "@kbn/i18n-react", + "@kbn/shared-ux-router", + "@kbn/license-management-plugin", + "@kbn/share-plugin", + "@kbn/core-ui-settings-browser", + "@kbn/core-ui-settings-browser-mocks", + "@kbn/code-editor", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/constants.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/constants.ts index 71d9369318225..9c0ea6bb30230 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/constants.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/constants.ts @@ -7,7 +7,7 @@ // Definitions index -export const DEFINITIONS_ALIAS = '.kibana-entities-definitions'; +export const DEFINITIONS_ALIAS = '.kibana_entities-definitions'; export const TEMPLATE_VERSION = 1; // Privileges diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/constants.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/constants.ts new file mode 100644 index 0000000000000..3982a91b8f671 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/constants.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 BUILT_IN_ID_PREFIX = 'built_in_'; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/containers_from_ecs_data.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/containers_from_ecs_data.ts new file mode 100644 index 0000000000000..244cfb82fc6d9 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/containers_from_ecs_data.ts @@ -0,0 +1,28 @@ +/* + * 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 { BuiltInDefinition } from '../../types'; +import { BUILT_IN_ID_PREFIX } from './constants'; + +export const builtInContainersFromEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}containers_from_ecs_data`, + display_name: 'Containers', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}containers_from_ecs_data_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}containers_from_ecs_data`, + index_patterns: ['filebeat-*', 'logs-*', 'metrics-*', 'metricbeat-*'], + identity_fields: ['container.id'], + display_name: 'container.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: [], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/hosts_from_ecs_data.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/hosts_from_ecs_data.ts new file mode 100644 index 0000000000000..a6aa14991c0d8 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/hosts_from_ecs_data.ts @@ -0,0 +1,28 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from './constants'; +import { BuiltInDefinition } from '../../types'; + +export const builtInHostsFromEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}hosts_from_ecs_data`, + display_name: 'Hosts', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}hosts_from_ecs_data_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}hosts_from_ecs_data`, + index_patterns: ['filebeat-*', 'logs-*', 'metrics-*', 'metricbeat-*'], + identity_fields: ['host.name'], + display_name: 'host.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: [], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/index.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/index.ts new file mode 100644 index 0000000000000..9f7b67469b6a4 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/index.ts @@ -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 { builtInServicesFromEcsEntityDefinition } from './services_from_ecs_data'; +import { builtInHostsFromEcsEntityDefinition } from './hosts_from_ecs_data'; +import { builtInContainersFromEcsEntityDefinition } from './containers_from_ecs_data'; +import { BuiltInDefinition } from '../../types'; + +import * as kubernetes from './kubernetes'; + +export const builtInDefinitions: BuiltInDefinition[] = [ + builtInServicesFromEcsEntityDefinition, + builtInHostsFromEcsEntityDefinition, + builtInContainersFromEcsEntityDefinition, + ...Object.values(kubernetes), +]; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/cluster.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/cluster.ts new file mode 100644 index 0000000000000..11d9059aeb021 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/cluster.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesClusterEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cluster_ecs`, + display_name: 'Kubernetes Clusters (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cluster_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_cluster_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['orchestrator.cluster.name'], + display_name: 'orchestrator.cluster.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['orchestrator.cluster.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/cron_job.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/cron_job.ts new file mode 100644 index 0000000000000..597ee54cd7b95 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/cron_job.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesCronJobEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cron_job_ecs`, + display_name: 'Kubernetes CronJobs (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cron_job_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_cron_job_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.cronjob.name'], + display_name: 'kubernetes.cronjob.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.cronjob.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/daemon_set.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/daemon_set.ts new file mode 100644 index 0000000000000..efe49291c7a8e --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/daemon_set.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesDaemonSetEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_daemon_set_ecs`, + display_name: 'Kubernetes DaemonSets (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_daemon_set_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_daemon_set_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.daemonset.name'], + display_name: 'kubernetes.daemonset.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.daemonset.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/deployment.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/deployment.ts new file mode 100644 index 0000000000000..e68ff1e0b047c --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/deployment.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesDeploymentEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_deployment_ecs`, + display_name: 'Kubernetes Deployments (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_deployment_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_deployment_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.deployment.name'], + display_name: 'kubernetes.deployment.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.deployment.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/ecs_index_patterns.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/ecs_index_patterns.ts new file mode 100644 index 0000000000000..14e2766cac2b2 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/ecs_index_patterns.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 commonEcsIndexPatterns = ['metrics-kubernetes*', 'logs-*']; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/index.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/index.ts new file mode 100644 index 0000000000000..ecfa67ff893ba --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/index.ts @@ -0,0 +1,17 @@ +/* + * 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 { builtInKubernetesClusterEcsEntityDefinition } from './cluster'; +export { builtInKubernetesNodeEcsEntityDefinition } from './node'; +export { builtInKubernetesPodEcsEntityDefinition } from './pod'; +export { builtInKubernetesReplicaSetEcsEntityDefinition } from './replica_set'; +export { builtInKubernetesDeploymentEcsEntityDefinition } from './deployment'; +export { builtInKubernetesStatefulSetEcsEntityDefinition } from './stateful_set'; +export { builtInKubernetesDaemonSetEcsEntityDefinition } from './daemon_set'; +export { builtInKubernetesJobEcsEntityDefinition } from './job'; +export { builtInKubernetesCronJobEcsEntityDefinition } from './cron_job'; +export { builtInKubernetesServiceEcsEntityDefinition } from './service'; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/job.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/job.ts new file mode 100644 index 0000000000000..17f7a6d6ea5f1 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/job.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesJobEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_job_ecs`, + display_name: 'Kubernetes Jobs (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_job_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_job_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.job.name'], + display_name: 'kubernetes.job.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.job.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/node.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/node.ts new file mode 100644 index 0000000000000..eaaf5e10d45b4 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/node.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesNodeEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_node_ecs`, + display_name: 'Kubernetes Nodes (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_node_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_node_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.node.name'], + display_name: 'kubernetes.node.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.node.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/pod.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/pod.ts new file mode 100644 index 0000000000000..d18c5d87fd53a --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/pod.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesPodEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_pod_ecs`, + display_name: 'Kubernetes Pods (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_pod_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_pod_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.pod.uid'], + display_name: 'kubernetes.pod.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.pod.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/replica_set.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/replica_set.ts new file mode 100644 index 0000000000000..c44514440dee1 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/replica_set.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesReplicaSetEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_replica_set_ecs`, + display_name: 'Kubernetes ReplicaSets (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_replica_set_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_replica_set_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.replicaset.name'], + display_name: 'kubernetes.replicaset.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.replicaset.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/service.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/service.ts new file mode 100644 index 0000000000000..4336cad1b0ea0 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/service.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesServiceEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_service_ecs`, + display_name: 'Kubernetes Services (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_service_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_service_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.service.name'], + display_name: 'kubernetes.service.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.service.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/stateful_set.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/stateful_set.ts new file mode 100644 index 0000000000000..5c3fc0df6070d --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/ecs/stateful_set.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonEcsIndexPatterns } from './ecs_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesStatefulSetEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_stateful_set_ecs`, + display_name: 'Kubernetes StatefulSets (ECS)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_stateful_set_ecs_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_stateful_set_ecs`, + index_patterns: commonEcsIndexPatterns, + identity_fields: ['kubernetes.statefulset.name'], + display_name: 'kubernetes.statefulset.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['kubernetes.statefulset.name: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/index.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/index.ts new file mode 100644 index 0000000000000..fa559fb86d9db --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/index.ts @@ -0,0 +1,9 @@ +/* + * 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 * from './ecs'; +export * from './semconv'; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/cluster.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/cluster.ts new file mode 100644 index 0000000000000..14371c4fe1871 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/cluster.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesClusterSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cluster_semconv`, + display_name: 'Kubernetes Clusters (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cluster_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_cluster_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.cluster.uid'], + display_name: 'k8s.cluster.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.cluster.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/cron_job.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/cron_job.ts new file mode 100644 index 0000000000000..35db4649b24d4 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/cron_job.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesCronJobSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cron_job_semconv`, + display_name: 'Kubernetes CronJobs (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_cron_job_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_cron_job_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.cronjob.uid'], + display_name: 'k8s.cronjob.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.cronjob.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/daemon_set.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/daemon_set.ts new file mode 100644 index 0000000000000..fa233fbeec4f9 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/daemon_set.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesDaemonSetSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_daemon_set_semconv`, + display_name: 'Kubernetes DaemonSets (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_daemon_set_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_daemon_set_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.daemonset.uid'], + display_name: 'k8s.daemonset.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.daemonset.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/deployment.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/deployment.ts new file mode 100644 index 0000000000000..13e29cf8b4e58 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/deployment.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesDeploymentSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_deployment_semconv`, + display_name: 'Kubernetes Deployments (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_deployment_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_deployment_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.deployment.uid'], + display_name: 'k8s.deployment.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.deployment.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/index.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/index.ts new file mode 100644 index 0000000000000..fbfcd9c5f9024 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/index.ts @@ -0,0 +1,16 @@ +/* + * 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 { builtInKubernetesClusterSemConvEntityDefinition } from './cluster'; +export { builtInKubernetesNodeSemConvEntityDefinition } from './node'; +export { builtInKubernetesPodSemConvEntityDefinition } from './pod'; +export { builtInKubernetesReplicaSetSemConvEntityDefinition } from './replica_set'; +export { builtInKubernetesDeploymentSemConvEntityDefinition } from './deployment'; +export { builtInKubernetesStatefulSetSemConvEntityDefinition } from './stateful_set'; +export { builtInKubernetesDaemonSetSemConvEntityDefinition } from './daemon_set'; +export { builtInKubernetesJobSemConvEntityDefinition } from './job'; +export { builtInKubernetesCronJobSemConvEntityDefinition } from './cron_job'; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/job.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/job.ts new file mode 100644 index 0000000000000..d830b33fae0e5 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/job.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesJobSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_job_semconv`, + display_name: 'Kubernetes Jobs (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_job_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_job_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.job.uid'], + display_name: 'k8s.job.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.job.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/node.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/node.ts new file mode 100644 index 0000000000000..a99e2fa88d8f0 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/node.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesNodeSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_node_semconv`, + display_name: 'Kubernetes Nodes (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_node_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_node_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.node.uid'], + display_name: 'k8s.node.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.node.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/otel_index_patterns.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/otel_index_patterns.ts new file mode 100644 index 0000000000000..9978f61efafab --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/otel_index_patterns.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 commonOtelIndexPatterns = ['metrics-*otel*', 'logs-*']; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/pod.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/pod.ts new file mode 100644 index 0000000000000..cb983201beede --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/pod.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesPodSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_pod_semconv`, + display_name: 'Kubernetes Pods (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_pod_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_pod_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.pod.uid'], + display_name: 'k8s.pod.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.pod.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/replica_set.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/replica_set.ts new file mode 100644 index 0000000000000..feba9f02383bc --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/replica_set.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesReplicaSetSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_replica_set_semconv`, + display_name: 'Kubernetes ReplicaSets (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_replica_set_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_replica_set_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.replicaset.uid'], + display_name: 'k8s.replicaset.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.replicaset.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/stateful_set.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/stateful_set.ts new file mode 100644 index 0000000000000..0776be72c4d1d --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/kubernetes/semconv/stateful_set.ts @@ -0,0 +1,29 @@ +/* + * 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 { BUILT_IN_ID_PREFIX } from '../../constants'; +import { commonOtelIndexPatterns } from './otel_index_patterns'; +import { BuiltInDefinition } from '../../../../types'; + +export const builtInKubernetesStatefulSetSemConvEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}kubernetes_stateful_set_semconv`, + display_name: 'Kubernetes StatefulSets (OTEL)', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}kubernetes_stateful_set_semconv_semconv`, + type_id: `${BUILT_IN_ID_PREFIX}kubernetes_stateful_set_semconv`, + index_patterns: commonOtelIndexPatterns, + identity_fields: ['k8s.statefulset.uid'], + display_name: 'k8s.statefulset.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: ['k8s.statefulset.uid: *'], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/services_from_ecs_data.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/services_from_ecs_data.ts new file mode 100644 index 0000000000000..cc4b665666bb0 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/built_in/services_from_ecs_data.ts @@ -0,0 +1,28 @@ +/* + * 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 { BuiltInDefinition } from '../../types'; +import { BUILT_IN_ID_PREFIX } from './constants'; + +export const builtInServicesFromEcsEntityDefinition: BuiltInDefinition = { + type: { + id: `${BUILT_IN_ID_PREFIX}services_from_ecs_data`, + display_name: 'Services', + }, + sources: [ + { + id: `${BUILT_IN_ID_PREFIX}services_from_ecs_data_ecs`, + type_id: `${BUILT_IN_ID_PREFIX}services_from_ecs_data`, + index_patterns: ['logs-*', 'filebeat*', 'traces-*'], + identity_fields: ['service.name'], + display_name: 'service.name', + timestamp_field: '@timestamp', + metadata_fields: [], + filters: [], + }, + ], +}; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/install_built_in_definitions.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/install_built_in_definitions.ts new file mode 100644 index 0000000000000..e5535d6e35f1a --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/install_built_in_definitions.ts @@ -0,0 +1,52 @@ +/* + * 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 { IClusterClient, Logger } from '@kbn/core/server'; +import { storeTypeDefinition } from './type_definition'; +import { storeSourceDefinition } from './source_definition'; +import { builtInDefinitions } from './built_in'; +import { EntitySourceDefinition, EntityTypeDefinition } from '../types'; + +export async function installBuiltInDefinitions(clusterClient: IClusterClient, logger: Logger) { + logger.info('Installing built in entity definitions'); + + const types: EntityTypeDefinition[] = []; + const sources: EntitySourceDefinition[] = []; + for (const definition of builtInDefinitions) { + types.push(definition.type); + sources.push(...definition.sources); + } + + const typeInstallations = await Promise.allSettled( + types.map((type) => storeTypeDefinition({ type, clusterClient, logger, replace: true })) + ); + + typeInstallations.forEach((installation) => { + if (installation.status === 'rejected') { + logger.error(installation.reason); + } + }); + + const sourceInstallations = await Promise.allSettled( + sources.map((source) => + storeSourceDefinition({ + source, + clusterClient, + logger, + replace: true, + }) + ) + ); + + // This may fail because the type installation failed and storeSourceDefinition verifies that the type exists first + // It may also fail for other reasons but we continue in case there are more sources for the same type that might succeed + sourceInstallations.forEach((installation) => { + if (installation.status === 'rejected') { + logger.error(installation.reason); + } + }); +} diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/setup_entity_definitions_index.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/setup_entity_definitions_index.ts index b9e3f39a3dd62..05d7b2de7cb97 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/setup_entity_definitions_index.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/setup_entity_definitions_index.ts @@ -6,8 +6,9 @@ */ import { errors } from '@elastic/elasticsearch'; -import { IClusterClient, Logger } from '@kbn/core/server'; +import { Logger } from '@kbn/core/server'; import { DEFINITIONS_ALIAS, TEMPLATE_VERSION } from '../constants'; +import { InternalClusterClient } from '../types'; const definitionsIndexTemplate = { name: `${DEFINITIONS_ALIAS}-template`, @@ -21,6 +22,8 @@ const definitionsIndexTemplate = { template: { settings: { hidden: true, + number_of_shards: 1, + auto_expand_replicas: '0-1', }, aliases: { [DEFINITIONS_ALIAS]: { @@ -51,7 +54,10 @@ const definitionsIndexTemplate = { const CURRENT_INDEX = `${DEFINITIONS_ALIAS}-${TEMPLATE_VERSION}` as const; -export async function setupEntityDefinitionsIndex(clusterClient: IClusterClient, logger: Logger) { +export async function setupEntityDefinitionsIndex( + clusterClient: InternalClusterClient, + logger: Logger +) { const esClient = clusterClient.asInternalUser; try { logger.debug(`Installing entity definitions index template for version ${TEMPLATE_VERSION}`); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/source_definition.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/source_definition.ts index 7ed1779708e54..eab219792295c 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/source_definition.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/source_definition.ts @@ -5,26 +5,53 @@ * 2.0. */ -import { IScopedClusterClient, Logger } from '@kbn/core/server'; +import { Logger } from '@kbn/core/server'; import { DEFINITIONS_ALIAS, TEMPLATE_VERSION } from '../constants'; -import { EntitySourceDefinition, StoredEntitySourceDefinition } from '../types'; +import { + EntitySourceDefinition, + InternalClusterClient, + StoredEntitySourceDefinition, +} from '../types'; import { SourceAs, runESQLQuery } from '../run_esql_query'; import { EntityDefinitionConflict } from '../errors/entity_definition_conflict'; +import { readTypeDefinitionById } from './type_definition'; +import { UnknownEntityType } from '../errors/unknown_entity_type'; -export async function storeSourceDefinition( - source: EntitySourceDefinition, - clusterClient: IScopedClusterClient, - logger: Logger -): Promise<EntitySourceDefinition> { +interface StoreSourceDefinitionOptions { + source: EntitySourceDefinition; + clusterClient: InternalClusterClient; + logger: Logger; + replace?: boolean; +} + +export async function storeSourceDefinition({ + source, + clusterClient, + logger, + replace = false, +}: StoreSourceDefinitionOptions): Promise<EntitySourceDefinition> { const esClient = clusterClient.asInternalUser; + try { + await readTypeDefinitionById(source.type_id, clusterClient, logger); + } catch (error) { + if (error instanceof UnknownEntityType) { + throw new UnknownEntityType( + `Type with ID ${source.type_id} not found, cannot attach source with ID ${source.id}` + ); + } + + throw error; + } + const sources = await runESQLQuery('fetch source definition for conflict check', { esClient, - query: `FROM ${DEFINITIONS_ALIAS} METADATA _id | WHERE definition_type == "source" AND _id == "source:${source.id}" | KEEP _id`, + query: `FROM ${DEFINITIONS_ALIAS} METADATA _id | WHERE definition_type == "source" AND _id == "${source.type_id}:${source.id}" | KEEP _id`, logger, }); - if (sources.length !== 0) { + if (sources.length !== 0 && replace === false) { + logger.debug(`Entity source definition with ID ${source.id} already exists`); throw new EntityDefinitionConflict('source', source.id); } @@ -34,10 +61,12 @@ export async function storeSourceDefinition( source, }; + logger.debug(`Installing entity source definition ${source.id} for type ${source.type_id}`); await esClient.index({ index: DEFINITIONS_ALIAS, - id: `source:${definition.source.id}`, + id: `${source.type_id}:${definition.source.id}`, document: definition, + refresh: 'wait_for', }); return definition.source; @@ -48,7 +77,7 @@ export interface ReadSourceDefinitionOptions { } export async function readSourceDefinitions( - clusterClient: IScopedClusterClient, + clusterClient: InternalClusterClient, logger: Logger, options?: ReadSourceDefinitionOptions ): Promise<EntitySourceDefinition[]> { diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/type_definition.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/type_definition.ts index 710e176a4a128..9b362a8df2b3e 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/type_definition.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/definitions/type_definition.ts @@ -5,26 +5,36 @@ * 2.0. */ -import { IScopedClusterClient, Logger } from '@kbn/core/server'; +import { Logger } from '@kbn/core/server'; import { DEFINITIONS_ALIAS, TEMPLATE_VERSION } from '../constants'; -import { EntityTypeDefinition, StoredEntityTypeDefinition } from '../types'; +import { EntityTypeDefinition, InternalClusterClient, StoredEntityTypeDefinition } from '../types'; import { SourceAs, runESQLQuery } from '../run_esql_query'; import { EntityDefinitionConflict } from '../errors/entity_definition_conflict'; +import { UnknownEntityType } from '../errors/unknown_entity_type'; -export async function storeTypeDefinition( - type: EntityTypeDefinition, - clusterClient: IScopedClusterClient, - logger: Logger -): Promise<EntityTypeDefinition> { +interface StoreTypeDefinitionOptions { + type: EntityTypeDefinition; + clusterClient: InternalClusterClient; + logger: Logger; + replace?: boolean; +} + +export async function storeTypeDefinition({ + type, + clusterClient, + logger, + replace = false, +}: StoreTypeDefinitionOptions): Promise<EntityTypeDefinition> { const esClient = clusterClient.asInternalUser; const types = await runESQLQuery('fetch type definition for conflict check', { esClient, - query: `FROM ${DEFINITIONS_ALIAS} METADATA _id | WHERE definition_type == "type" AND _id == "type:${type.id}" | KEEP _id`, + query: `FROM ${DEFINITIONS_ALIAS} METADATA _id | WHERE definition_type == "type" AND _id == "${type.id}" | KEEP _id`, logger, }); - if (types.length !== 0) { + if (types.length !== 0 && replace === false) { + logger.debug(`Entity type definition with ID ${type.id} already exists`); throw new EntityDefinitionConflict('type', type.id); } @@ -34,17 +44,19 @@ export async function storeTypeDefinition( type, }; + logger.debug(`Installing entity type definition ${type.id}`); await esClient.index({ index: DEFINITIONS_ALIAS, - id: `type:${definition.type.id}`, + id: `${definition.type.id}`, document: definition, + refresh: 'wait_for', }); return definition.type; } export async function readTypeDefinitions( - clusterClient: IScopedClusterClient, + clusterClient: InternalClusterClient, logger: Logger ): Promise<EntityTypeDefinition[]> { const esClient = clusterClient.asInternalUser; @@ -60,3 +72,26 @@ export async function readTypeDefinitions( return types.map((storedTypeDefinition) => storedTypeDefinition._source.type); } + +export async function readTypeDefinitionById( + id: string, + clusterClient: InternalClusterClient, + logger: Logger +): Promise<EntityTypeDefinition> { + const esClient = clusterClient.asInternalUser; + + const types = await runESQLQuery<SourceAs<StoredEntityTypeDefinition>>( + 'fetch type definition by ID', + { + esClient, + query: `FROM ${DEFINITIONS_ALIAS} METADATA _id,_source | WHERE definition_type == "type" AND _id == "${id}" | KEEP _source`, + logger, + } + ); + + if (types.length === 0) { + throw new UnknownEntityType(`Type with ID ${id} not found`); + } + + return types[0]._source.type; +} diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/entity_client.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/entity_client.ts index bb40fc2849a46..818a9b9b02df2 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/entity_client.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/entity_client.ts @@ -8,23 +8,29 @@ import { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import { IScopedClusterClient, Logger } from '@kbn/core/server'; import { EntityV2 } from '@kbn/entities-schema'; -import { without } from 'lodash'; import { ReadSourceDefinitionOptions, readSourceDefinitions, storeSourceDefinition, } from './definitions/source_definition'; import { readTypeDefinitions, storeTypeDefinition } from './definitions/type_definition'; -import { getEntityInstancesQuery } from './queries'; -import { mergeEntitiesList } from './queries/utils'; +import { getEntityInstancesQuery, getEntityCountQuery } from './queries'; +import { + isFulfilledResult, + isRejectedResult, + mergeEntitiesList, + sortEntitiesList, +} from './queries/utils'; import { EntitySourceDefinition, EntityTypeDefinition, SearchByType, SearchBySources, + CountByTypes, } from './types'; import { UnknownEntityType } from './errors/unknown_entity_type'; import { runESQLQuery } from './run_esql_query'; +import { validateFields } from './validate_fields'; export class EntityClient { constructor( @@ -59,76 +65,123 @@ export class EntityClient { sort, limit, }: SearchBySources) { - const entities = await Promise.all( - sources.map(async (source) => { - const mandatoryFields = [ - ...source.identity_fields, - ...(source.timestamp_field ? [source.timestamp_field] : []), - ...(source.display_name ? [source.display_name] : []), - ]; - const metaFields = [...metadataFields, ...source.metadata_fields]; - - // operations on an unmapped field result in a failing query so we verify - // field capabilities beforehand - const { fields } = await this.options.clusterClient.asCurrentUser.fieldCaps({ - index: source.index_patterns, - fields: [...mandatoryFields, ...metaFields], - }); + const searches = sources.map(async (source) => { + const availableMetadataFields = await validateFields({ + source, + metadataFields, + esClient: this.options.clusterClient.asCurrentUser, + logger: this.options.logger, + }); + + const { query, filter } = getEntityInstancesQuery({ + source: { + ...source, + metadata_fields: availableMetadataFields, + filters: [...source.filters, ...filters], + }, + start, + end, + sort, + limit, + }); + this.options.logger.debug( + () => `Entity instances query: ${query}\nfilter: ${JSON.stringify(filter, null, 2)}` + ); + + const rawEntities = await runESQLQuery<EntityV2>('resolve entities', { + query, + filter, + esClient: this.options.clusterClient.asCurrentUser, + logger: this.options.logger, + }); + + return rawEntities; + }); - const sourceHasMandatoryFields = mandatoryFields.every((field) => !!fields[field]); - if (!sourceHasMandatoryFields) { - // we can't build entities without id fields so we ignore the source. - // TODO filters should likely behave similarly. we should also throw - const missingFields = mandatoryFields.filter((field) => !fields[field]); - this.options.logger.info( - `Ignoring source for type [${source.type_id}] with index_patterns [${ - source.index_patterns - }] because some mandatory fields [${missingFields.join(', ')}] are not mapped` - ); - return []; - } + const { entities, errors } = await Promise.allSettled(searches).then((results) => ({ + entities: results.filter(isFulfilledResult).flatMap((result) => result.value), + errors: results.filter(isRejectedResult).map((result) => result.reason.message as string), + })); + + if (sources.length === 1) { + return { entities, errors }; + } + + // we have to manually merge, sort and limit entities since we run + // independant queries for each source + return { + errors, + entities: sortEntitiesList({ + sources, + sort, + entities: mergeEntitiesList({ entities, sources, metadataFields }), + }).slice(0, limit), + }; + } + + async countEntities({ start, end, types = [], filters = [] }: CountByTypes) { + if (types.length === 0) { + types = (await this.readTypeDefinitions()).map((definition) => definition.id); + } - // but metadata field not being available is fine - const availableMetadataFields = metaFields.filter((field) => fields[field]); - if (availableMetadataFields.length < metaFields.length) { - this.options.logger.info( - `Ignoring unmapped fields [${without(metaFields, ...availableMetadataFields).join( - ', ' - )}]` - ); + const counts = await Promise.all( + types.map(async (type) => { + const sources = await this.readSourceDefinitions({ type }); + if (sources.length === 0) { + return { type, value: 0, errors: [] }; } - const { query, filter } = getEntityInstancesQuery({ - source: { - ...source, - metadata_fields: availableMetadataFields, - filters: [...source.filters, ...filters], - }, + const { sources: validSources, errors } = await Promise.allSettled( + sources.map((source) => + validateFields({ + source, + esClient: this.options.clusterClient.asCurrentUser, + logger: this.options.logger, + }).then(() => source) + ) + ).then((results) => ({ + sources: results.filter(isFulfilledResult).flatMap((result) => result.value), + errors: results.filter(isRejectedResult).map((result) => result.reason.message as string), + })); + + const { query, filter } = getEntityCountQuery({ + sources: validSources, + filters, start, end, - sort, - limit, }); - this.options.logger.debug( - () => `Entity query: ${query}\nfilter: ${JSON.stringify(filter, null, 2)}` + this.options.logger.info( + `Entity count query: ${query}\nfilter: ${JSON.stringify(filter, null, 2)}` ); - const rawEntities = await runESQLQuery<EntityV2>('resolve entities', { + const [{ count }] = await runESQLQuery<{ count: number }>('count entities', { query, filter, esClient: this.options.clusterClient.asCurrentUser, logger: this.options.logger, }); - return rawEntities; + return { type, value: count, errors }; }) - ).then((results) => results.flat()); - - return mergeEntitiesList(sources, entities).slice(0, limit); + ); + + return counts.reduce( + (result, count) => { + result.types[count.type] = count.value; + result.total += count.value; + result.errors.push(...count.errors); + return result; + }, + { total: 0, types: {} as Record<string, number>, errors: [] as string[] } + ); } async storeTypeDefinition(type: EntityTypeDefinition) { - return storeTypeDefinition(type, this.options.clusterClient, this.options.logger); + return storeTypeDefinition({ + type, + clusterClient: this.options.clusterClient, + logger: this.options.logger, + }); } async readTypeDefinitions() { @@ -136,7 +189,11 @@ export class EntityClient { } async storeSourceDefinition(source: EntitySourceDefinition) { - return storeSourceDefinition(source, this.options.clusterClient, this.options.logger); + return storeSourceDefinition({ + source, + clusterClient: this.options.clusterClient, + logger: this.options.logger, + }); } async readSourceDefinitions(options?: ReadSourceDefinitionOptions) { diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_count.test.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_count.test.ts new file mode 100644 index 0000000000000..04a391ef0026f --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_count.test.ts @@ -0,0 +1,327 @@ +/* + * 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 { getEntityCountQuery } from './entity_count'; + +describe('getEntityCountQuery', () => { + it('generates a valid esql query for a single source', () => { + const { query, filter } = getEntityCountQuery({ + sources: [ + { + id: 'service_source', + type_id: 'service', + index_patterns: ['logs-*'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + ], + filters: [], + start: '2024-11-20T19:00:00.000Z', + end: '2024-11-20T20:00:00.000Z', + }); + + expect(query).toEqual('FROM logs-* | STATS BY service.name::keyword | STATS count = COUNT()'); + + expect(filter).toEqual({ + bool: { + filter: [ + { + bool: { + should: [ + { + exists: { + field: 'service.name', + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + filter: [ + { + bool: { + should: [ + { + range: { + '@timestamp': { + gte: '2024-11-20T19:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [ + { + range: { + '@timestamp': { + lte: '2024-11-20T20:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + { + bool: { + should: [ + { + bool: { + should: [ + { + match_phrase: { + _index: 'logs-**', + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [ + { + match_phrase: { + _index: '.ds-logs-**', + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }); + }); + + it('generates a valid esql query for multiple sources', () => { + const { query, filter } = getEntityCountQuery({ + sources: [ + { + id: 'service_source_1', + type_id: 'service', + index_patterns: ['metrics-*'], + identity_fields: ['service_name'], + metadata_fields: [], + filters: [], + timestamp_field: 'timestamp_field', + }, + { + id: 'service_source_2', + type_id: 'service', + index_patterns: ['logs-*'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + ], + filters: [], + start: '2024-11-20T19:00:00.000Z', + end: '2024-11-20T20:00:00.000Z', + }); + + expect(query).toEqual( + 'FROM metrics-*, logs-* METADATA _index | ' + + 'EVAL is_source_0 = _index LIKE "metrics-**" OR _index LIKE ".ds-metrics-**" | ' + + 'EVAL is_source_1 = _index LIKE "logs-**" OR _index LIKE ".ds-logs-**" | ' + + 'EVAL entity.id = CASE(is_source_0, service_name::keyword, is_source_1, service.name::keyword) | ' + + 'WHERE entity.id IS NOT NULL | ' + + 'STATS BY entity.id | ' + + 'STATS count = COUNT()' + ); + + expect(filter).toEqual({ + bool: { + should: [ + { + bool: { + filter: [ + { + bool: { + should: [ + { + exists: { + field: 'service_name', + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + filter: [ + { + bool: { + should: [ + { + range: { + timestamp_field: { + gte: '2024-11-20T19:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [ + { + range: { + timestamp_field: { + lte: '2024-11-20T20:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + { + bool: { + should: [ + { + bool: { + should: [ + { + match_phrase: { + _index: 'metrics-**', + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [ + { + match_phrase: { + _index: '.ds-metrics-**', + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + { + bool: { + filter: [ + { + bool: { + should: [ + { + exists: { + field: 'service.name', + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + filter: [ + { + bool: { + should: [ + { + range: { + '@timestamp': { + gte: '2024-11-20T19:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [ + { + range: { + '@timestamp': { + lte: '2024-11-20T20:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + { + bool: { + should: [ + { + bool: { + should: [ + { + match_phrase: { + _index: 'logs-**', + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [ + { + match_phrase: { + _index: '.ds-logs-**', + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + ], + minimum_should_match: 1, + }, + }); + }); +}); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_count.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_count.ts new file mode 100644 index 0000000000000..930ee15be61b8 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_count.ts @@ -0,0 +1,136 @@ +/* + * 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 { compact, last } from 'lodash'; +import { fromKueryExpression, toElasticsearchQuery } from '@kbn/es-query'; +import { EntitySourceDefinition } from '../types'; +import { asKeyword } from './utils'; + +const fromCommand = ({ sources }: { sources: EntitySourceDefinition[] }) => { + let command = `FROM ${sources.flatMap((source) => source.index_patterns).join(', ')}`; + if (sources.length > 1) { + command += ' METADATA _index'; + } + + return command; +}; + +const dslFilter = ({ + sources, + filters, + start, + end, +}: { + sources: EntitySourceDefinition[]; + filters: string[]; + start: string; + end: string; +}) => { + const sourcesFilters = sources + .map((source) => { + const sourceFilters = [ + ...source.filters, + ...source.identity_fields.map((field) => `${field}: *`), + ]; + + if (source.timestamp_field) { + sourceFilters.push( + `${source.timestamp_field} >= "${start}" AND ${source.timestamp_field} <= "${end}"` + ); + } + + sourceFilters.push( + source.index_patterns + .map((pattern) => `_index: "${pattern}*" OR _index: ".ds-${last(pattern.split(':'))}*"`) + .join(' OR ') + ); + + return '(' + sourceFilters.map((filter) => '(' + filter + ')').join(' AND ') + ')'; + }) + .join(' OR '); + + const additionalFilters = filters.map((filter) => '(' + filter + ')').join(' AND '); + + return toElasticsearchQuery( + fromKueryExpression(compact([`(${sourcesFilters})`, additionalFilters]).join(' AND ')) + ); +}; + +const statsCommand = ({ sources }: { sources: EntitySourceDefinition[] }) => { + const commands = [ + sources.length === 1 + ? `STATS BY ${sources[0].identity_fields.map(asKeyword).join(', ')}` + : `STATS BY entity.id`, + 'STATS count = COUNT()', + ]; + return commands.join(' | '); +}; + +const sourcesEvalCommand = ({ sources }: { sources: EntitySourceDefinition[] }) => { + if (sources.length === 1) { + return; + } + + const evals = sources.map((source, index) => { + const condition = source.index_patterns + .map( + (pattern) => `_index LIKE "${pattern}*" OR _index LIKE ".ds-${last(pattern.split(':'))}*"` + ) + .join(' OR '); + + return `EVAL is_source_${index} = ${condition}`; + }); + + return evals.join(' | '); +}; + +const idEvalCommand = ({ sources }: { sources: EntitySourceDefinition[] }) => { + if (sources.length === 1) { + return; + } + + const conditions = sources.flatMap((source, index) => { + return [ + `is_source_${index}`, + source.identity_fields.length === 1 + ? asKeyword(source.identity_fields[0]) + : `CONCAT(${source.identity_fields.map(asKeyword).join(', ":", ')})`, + ]; + }); + return `EVAL entity.id = CASE(${conditions.join(', ')})`; +}; + +const whereCommand = ({ sources }: { sources: EntitySourceDefinition[] }) => { + if (sources.length === 1) { + return; + } + + return 'WHERE entity.id IS NOT NULL'; +}; + +export function getEntityCountQuery({ + sources, + filters, + start, + end, +}: { + sources: EntitySourceDefinition[]; + filters: string[]; + start: string; + end: string; +}) { + const commands = compact([ + fromCommand({ sources }), + sourcesEvalCommand({ sources }), + idEvalCommand({ sources }), + whereCommand({ sources }), + statsCommand({ sources }), + ]); + + const filter = dslFilter({ sources, filters, start, end }); + return { query: commands.join(' | '), filter }; +} diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_instances.test.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_instances.test.ts new file mode 100644 index 0000000000000..e7fa8882bfcb9 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_instances.test.ts @@ -0,0 +1,91 @@ +/* + * 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 { getEntityInstancesQuery } from './entity_instances'; + +describe('getEntityInstancesQuery', () => { + it('generates a valid esql query', () => { + const { query, filter } = getEntityInstancesQuery({ + source: { + id: 'service_source', + type_id: 'service', + index_patterns: ['logs-*', 'metrics-*'], + identity_fields: ['service.name'], + metadata_fields: ['host.name'], + filters: [], + timestamp_field: 'custom_timestamp_field', + display_name: 'service.id', + }, + limit: 5, + start: '2024-11-20T19:00:00.000Z', + end: '2024-11-20T20:00:00.000Z', + sort: { field: 'entity.id', direction: 'DESC' }, + }); + + expect(query).toEqual( + 'FROM logs-*, metrics-* | ' + + 'STATS host.name = TOP(host.name::keyword, 10, "ASC"), entity.last_seen_timestamp = MAX(custom_timestamp_field), service.id = MAX(service.id::keyword) BY service.name::keyword | ' + + 'RENAME `service.name::keyword` AS service.name | ' + + 'EVAL entity.type = "service", entity.id = service.name, entity.display_name = COALESCE(service.id, entity.id) | ' + + 'SORT entity.id DESC | ' + + 'LIMIT 5' + ); + + expect(filter).toEqual({ + bool: { + filter: [ + { + bool: { + should: [ + { + exists: { + field: 'service.name', + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + filter: [ + { + bool: { + should: [ + { + range: { + custom_timestamp_field: { + gte: '2024-11-20T19:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + { + bool: { + should: [ + { + range: { + custom_timestamp_field: { + lte: '2024-11-20T20:00:00.000Z', + }, + }, + }, + ], + minimum_should_match: 1, + }, + }, + ], + }, + }, + ], + }, + }); + }); +}); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_instances.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_instances.ts new file mode 100644 index 0000000000000..dc79d815abd37 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/entity_instances.ts @@ -0,0 +1,122 @@ +/* + * 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 { fromKueryExpression, toElasticsearchQuery } from '@kbn/es-query'; +import { asKeyword } from './utils'; +import { EntitySourceDefinition, SortBy } from '../types'; + +const fromCommand = ({ source }: { source: EntitySourceDefinition }) => { + let query = `FROM ${source.index_patterns.join(', ')}`; + + const esMetadataFields = source.metadata_fields.filter((field) => + ['_index', '_id'].includes(field) + ); + if (esMetadataFields.length) { + query += ` METADATA ${esMetadataFields.join(', ')}`; + } + + return query; +}; + +const dslFilter = ({ + source, + start, + end, +}: { + source: EntitySourceDefinition; + start: string; + end: string; +}) => { + const filters = [...source.filters, ...source.identity_fields.map((field) => `${field}: *`)]; + + if (source.timestamp_field) { + filters.push( + `${source.timestamp_field} >= "${start}" AND ${source.timestamp_field} <= "${end}"` + ); + } + + const kuery = filters.map((filter) => '(' + filter + ')').join(' AND '); + return toElasticsearchQuery(fromKueryExpression(kuery)); +}; + +const statsCommand = ({ source }: { source: EntitySourceDefinition }) => { + const aggs = source.metadata_fields + .filter((field) => !source.identity_fields.some((idField) => idField === field)) + .map((field) => `${field} = TOP(${asKeyword(field)}, 10, "ASC")`); + + if (source.timestamp_field) { + aggs.push(`entity.last_seen_timestamp = MAX(${source.timestamp_field})`); + } + + if (source.display_name) { + // ideally we want the latest value but there's no command yet + // so we use MAX for now + aggs.push(`${source.display_name} = MAX(${asKeyword(source.display_name)})`); + } + + return `STATS ${aggs.join(', ')} BY ${source.identity_fields.map(asKeyword).join(', ')}`; +}; + +const renameCommand = ({ source }: { source: EntitySourceDefinition }) => { + const operations = source.identity_fields.map((field) => `\`${asKeyword(field)}\` AS ${field}`); + return `RENAME ${operations.join(', ')}`; +}; + +const evalCommand = ({ source }: { source: EntitySourceDefinition }) => { + const id = + source.identity_fields.length === 1 + ? source.identity_fields[0] + : `CONCAT(${source.identity_fields.join(', ":", ')})`; + + const displayName = source.display_name + ? `COALESCE(${source.display_name}, entity.id)` + : 'entity.id'; + + return `EVAL ${[ + `entity.type = "${source.type_id}"`, + `entity.id = ${id}`, + `entity.display_name = ${displayName}`, + ].join(', ')}`; +}; + +const sortCommand = ({ source, sort }: { source: EntitySourceDefinition; sort?: SortBy }) => { + if (sort) { + return `SORT ${sort.field} ${sort.direction}`; + } + + if (source.timestamp_field) { + return `SORT entity.last_seen_timestamp DESC`; + } + + return `SORT entity.id ASC`; +}; + +export function getEntityInstancesQuery({ + source, + limit, + start, + end, + sort, +}: { + source: EntitySourceDefinition; + limit: number; + start: string; + end: string; + sort?: SortBy; +}) { + const commands = [ + fromCommand({ source }), + statsCommand({ source }), + renameCommand({ source }), + evalCommand({ source }), + sortCommand({ source, sort }), + `LIMIT ${limit}`, + ]; + const filter = dslFilter({ source, start, end }); + + return { query: commands.join(' | '), filter }; +} diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/index.test.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/index.test.ts deleted file mode 100644 index 9bc475d031923..0000000000000 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/index.test.ts +++ /dev/null @@ -1,93 +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 { getEntityInstancesQuery } from '.'; - -describe('getEntityInstancesQuery', () => { - describe('getEntityInstancesQuery', () => { - it('generates a valid esql query', () => { - const { query, filter } = getEntityInstancesQuery({ - source: { - id: 'service_source', - type_id: 'service', - index_patterns: ['logs-*', 'metrics-*'], - identity_fields: ['service.name'], - metadata_fields: ['host.name'], - filters: [], - timestamp_field: 'custom_timestamp_field', - display_name: 'service.id', - }, - limit: 5, - start: '2024-11-20T19:00:00.000Z', - end: '2024-11-20T20:00:00.000Z', - sort: { field: 'entity.id', direction: 'DESC' }, - }); - - expect(query).toEqual( - 'FROM logs-*, metrics-* | ' + - 'STATS host.name = VALUES(host.name::keyword), entity.last_seen_timestamp = MAX(custom_timestamp_field), service.id = MAX(service.id::keyword) BY service.name::keyword | ' + - 'RENAME `service.name::keyword` AS service.name | ' + - 'EVAL entity.type = "service", entity.id = service.name, entity.display_name = COALESCE(service.id, entity.id) | ' + - 'SORT entity.id DESC | ' + - 'LIMIT 5' - ); - - expect(filter).toEqual({ - bool: { - filter: [ - { - bool: { - should: [ - { - exists: { - field: 'service.name', - }, - }, - ], - minimum_should_match: 1, - }, - }, - { - bool: { - filter: [ - { - bool: { - should: [ - { - range: { - custom_timestamp_field: { - gte: '2024-11-20T19:00:00.000Z', - }, - }, - }, - ], - minimum_should_match: 1, - }, - }, - { - bool: { - should: [ - { - range: { - custom_timestamp_field: { - lte: '2024-11-20T20:00:00.000Z', - }, - }, - }, - ], - minimum_should_match: 1, - }, - }, - ], - }, - }, - ], - }, - }); - }); - }); -}); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/index.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/index.ts index 5ce7a54eb1d1c..21e7d16be3442 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/index.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/index.ts @@ -5,118 +5,5 @@ * 2.0. */ -import { fromKueryExpression, toElasticsearchQuery } from '@kbn/es-query'; -import { asKeyword } from './utils'; -import { EntitySourceDefinition, SortBy } from '../types'; - -const sourceCommand = ({ source }: { source: EntitySourceDefinition }) => { - let query = `FROM ${source.index_patterns.join(', ')}`; - - const esMetadataFields = source.metadata_fields.filter((field) => - ['_index', '_id'].includes(field) - ); - if (esMetadataFields.length) { - query += ` METADATA ${esMetadataFields.join(', ')}`; - } - - return query; -}; - -const dslFilter = ({ - source, - start, - end, -}: { - source: EntitySourceDefinition; - start: string; - end: string; -}) => { - const filters = [...source.filters, ...source.identity_fields.map((field) => `${field}: *`)]; - - if (source.timestamp_field) { - filters.push( - `${source.timestamp_field} >= "${start}" AND ${source.timestamp_field} <= "${end}"` - ); - } - - const kuery = filters.map((filter) => '(' + filter + ')').join(' AND '); - return toElasticsearchQuery(fromKueryExpression(kuery)); -}; - -const statsCommand = ({ source }: { source: EntitySourceDefinition }) => { - const aggs = source.metadata_fields - .filter((field) => !source.identity_fields.some((idField) => idField === field)) - .map((field) => `${field} = VALUES(${asKeyword(field)})`); - - if (source.timestamp_field) { - aggs.push(`entity.last_seen_timestamp = MAX(${source.timestamp_field})`); - } - - if (source.display_name) { - // ideally we want the latest value but there's no command yet - // so we use MAX for now - aggs.push(`${source.display_name} = MAX(${asKeyword(source.display_name)})`); - } - - return `STATS ${aggs.join(', ')} BY ${source.identity_fields.map(asKeyword).join(', ')}`; -}; - -const renameCommand = ({ source }: { source: EntitySourceDefinition }) => { - const operations = source.identity_fields.map((field) => `\`${asKeyword(field)}\` AS ${field}`); - return `RENAME ${operations.join(', ')}`; -}; - -const evalCommand = ({ source }: { source: EntitySourceDefinition }) => { - const id = - source.identity_fields.length === 1 - ? source.identity_fields[0] - : `CONCAT(${source.identity_fields.join(', ":", ')})`; - - const displayName = source.display_name - ? `COALESCE(${source.display_name}, entity.id)` - : 'entity.id'; - - return `EVAL ${[ - `entity.type = "${source.type_id}"`, - `entity.id = ${id}`, - `entity.display_name = ${displayName}`, - ].join(', ')}`; -}; - -const sortCommand = ({ source, sort }: { source: EntitySourceDefinition; sort?: SortBy }) => { - if (sort) { - return `SORT ${sort.field} ${sort.direction}`; - } - - if (source.timestamp_field) { - return `SORT entity.last_seen_timestamp DESC`; - } - - return `SORT entity.id ASC`; -}; - -export function getEntityInstancesQuery({ - source, - limit, - start, - end, - sort, -}: { - source: EntitySourceDefinition; - limit: number; - start: string; - end: string; - sort?: SortBy; -}) { - const commands = [ - sourceCommand({ source }), - statsCommand({ source }), - renameCommand({ source }), - evalCommand({ source }), - sortCommand({ source, sort }), - `LIMIT ${limit}`, - ]; - const filter = dslFilter({ source, start, end }); - - return { query: commands.join(' | '), filter }; -} +export { getEntityInstancesQuery } from './entity_instances'; +export { getEntityCountQuery } from './entity_count'; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.test.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.test.ts index 295ab7796585c..d588811f2aa19 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.test.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.test.ts @@ -17,22 +17,32 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', }, { 'entity.id': 'foo', 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', }, ]; - const mergedEntities = mergeEntitiesList([], entities); + const mergedEntities = mergeEntitiesList({ + entities, + metadataFields: [], + sources: [ + { identity_fields: ['service.name'], metadata_fields: ['only_in_record_1'] }, + { identity_fields: ['service.name'], metadata_fields: ['only_in_record_2'] }, + ] as EntitySourceDefinition[], + }); expect(mergedEntities.length).toEqual(1); expect(mergedEntities[0]).toEqual({ 'entity.id': 'foo', 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', }); }); @@ -43,6 +53,7 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-1', 'agent.name': 'agent-1', 'service.environment': ['dev', 'staging'], @@ -53,6 +64,7 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': ['host-2', 'host-3'], 'agent.name': 'agent-2', 'service.environment': 'prod', @@ -60,23 +72,21 @@ describe('mergeEntitiesList', () => { }, ]; - const mergedEntities = mergeEntitiesList( - [ - { - metadata_fields: ['host.name', 'agent.name', 'service.environment', 'only_in_record_1'], - }, - { - metadata_fields: ['host.name', 'agent.name', 'service.environment', 'only_in_record_2'], - }, + const mergedEntities = mergeEntitiesList({ + entities, + metadataFields: ['host.name', 'agent.name', 'service.environment'], + sources: [ + { identity_fields: ['service.name'], metadata_fields: ['only_in_record_1'] }, + { identity_fields: ['service.name'], metadata_fields: ['only_in_record_2'] }, ] as EntitySourceDefinition[], - entities - ); + }); expect(mergedEntities.length).toEqual(1); expect(mergedEntities[0]).toEqual({ 'entity.id': 'foo', 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': ['host-1', 'host-2', 'host-3'], 'agent.name': ['agent-1', 'agent-2'], 'service.environment': ['dev', 'staging', 'prod'], @@ -92,6 +102,7 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-1', }, { @@ -99,6 +110,7 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T20:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-2', }, { @@ -106,33 +118,33 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T16:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-3', }, { 'entity.id': 'foo', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-3', }, ]; - const mergedEntities = mergeEntitiesList( - [ - { - metadata_fields: ['host.name'], - }, - { - metadata_fields: ['host.name'], - }, + const mergedEntities = mergeEntitiesList({ + entities, + metadataFields: ['host.name'], + sources: [ + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, ] as EntitySourceDefinition[], - entities - ); + }); expect(mergedEntities.length).toEqual(1); expect(mergedEntities[0]).toEqual({ 'entity.id': 'foo', 'entity.last_seen_timestamp': '2024-11-20T20:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': ['host-1', 'host-2', 'host-3'], }); }); @@ -143,28 +155,32 @@ describe('mergeEntitiesList', () => { 'entity.id': 'foo', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-1', }, { 'entity.id': 'foo', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-2', }, ]; - const mergedEntities = mergeEntitiesList( - [ - { metadata_fields: ['host.name'] }, - { metadata_fields: ['host.name'] }, + const mergedEntities = mergeEntitiesList({ + entities, + metadataFields: ['host.name'], + sources: [ + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, ] as EntitySourceDefinition[], - entities - ); + }); expect(mergedEntities.length).toEqual(1); expect(mergedEntities[0]).toEqual({ 'entity.id': 'foo', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': ['host-1', 'host-2'], }); }); @@ -176,6 +192,7 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-1', }, { @@ -183,6 +200,7 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T20:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': 'host-2', }, { @@ -190,29 +208,117 @@ describe('mergeEntitiesList', () => { 'entity.last_seen_timestamp': '2024-11-20T16:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': ['host-1', 'host-2'], }, ]; - const mergedEntities = mergeEntitiesList( - [ - { - metadata_fields: ['host.name'], - }, - { - metadata_fields: ['host.name'], - }, + const mergedEntities = mergeEntitiesList({ + entities, + metadataFields: ['host.name'], + sources: [ + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, ] as EntitySourceDefinition[], - entities - ); + }); expect(mergedEntities.length).toEqual(1); expect(mergedEntities[0]).toEqual({ 'entity.id': 'foo', 'entity.last_seen_timestamp': '2024-11-20T20:00:00.000Z', 'entity.type': 'service', 'entity.display_name': 'foo', + 'service.name': 'foo', 'host.name': ['host-1', 'host-2'], }); }); + + it('assigns all identity fields to the merged entity', () => { + const entities = [ + { + 'entity.id': 'foo', + 'entity.last_seen_timestamp': '2024-11-20T18:00:00.000Z', + 'entity.type': 'service', + 'entity.display_name': 'foo', + 'service.name': 'foo', + }, + { + 'entity.id': 'foo', + 'entity.last_seen_timestamp': '2024-11-20T20:00:00.000Z', + 'entity.type': 'service', + 'entity.display_name': 'foo', + servicename_field: 'foo', + }, + { + 'entity.id': 'foo', + 'entity.last_seen_timestamp': '2024-11-20T16:00:00.000Z', + 'entity.type': 'service', + 'entity.display_name': 'foo', + service_name: 'foo', + }, + ]; + + const mergedEntities = mergeEntitiesList({ + entities, + metadataFields: [], + sources: [ + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, + { identity_fields: ['servicename_field'], metadata_fields: [] as string[] }, + { identity_fields: ['service_name'], metadata_fields: [] as string[] }, + ] as EntitySourceDefinition[], + }); + expect(mergedEntities.length).toEqual(1); + expect(mergedEntities[0]).toEqual({ + 'entity.id': 'foo', + 'entity.last_seen_timestamp': '2024-11-20T20:00:00.000Z', + 'entity.type': 'service', + 'entity.display_name': 'foo', + 'service.name': 'foo', + servicename_field: 'foo', + service_name: 'foo', + }); + }); + + it('ignores null values when merging', () => { + const entities = [ + { + 'entity.id': 'foo', + 'entity.type': 'service', + 'entity.display_name': 'foo', + 'service.name': 'foo', + 'host.name': null, + }, + { + 'entity.id': 'foo', + 'entity.type': 'service', + 'entity.display_name': 'foo', + 'service.name': 'foo', + 'host.name': 'host-2', + }, + { + 'entity.id': 'foo', + 'entity.type': 'service', + 'entity.display_name': 'foo', + 'service.name': 'foo', + 'host.name': null, + }, + ]; + + const mergedEntities = mergeEntitiesList({ + entities, + metadataFields: ['host.name'], + sources: [ + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, + { identity_fields: ['service.name'], metadata_fields: [] as string[] }, + ] as EntitySourceDefinition[], + }); + expect(mergedEntities.length).toEqual(1); + expect(mergedEntities[0]).toEqual({ + 'entity.id': 'foo', + 'entity.type': 'service', + 'entity.display_name': 'foo', + 'service.name': 'foo', + 'host.name': 'host-2', + }); + }); }); }); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.ts index 5d1ebf3001434..969128fcf4088 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/queries/utils.ts @@ -6,8 +6,8 @@ */ import { EntityV2 } from '@kbn/entities-schema'; -import { compact, uniq } from 'lodash'; -import { EntitySourceDefinition } from '../types'; +import { orderBy, uniq } from 'lodash'; +import { EntitySourceDefinition, SortBy } from '../types'; function getLatestDate(date1?: string, date2?: string) { if (!date1 && !date2) return; @@ -17,7 +17,12 @@ function getLatestDate(date1?: string, date2?: string) { ).toISOString(); } -function mergeEntities(metadataFields: string[], entity1: EntityV2, entity2: EntityV2): EntityV2 { +function mergeEntities( + identityFields: string[], + mergeableFields: string[], + entity1: EntityV2, + entity2: EntityV2 +): EntityV2 { const merged: EntityV2 = { ...entity1 }; const latestTimestamp = getLatestDate( @@ -28,14 +33,18 @@ function mergeEntities(metadataFields: string[], entity1: EntityV2, entity2: Ent merged['entity.last_seen_timestamp'] = latestTimestamp; } - for (const [key, value] of Object.entries(entity2).filter(([_key]) => - metadataFields.includes(_key) + for (const [key, value] of Object.entries(entity2).filter( + ([_key]) => mergeableFields.includes(_key) && entity2[_key] )) { if (merged[key]) { - merged[key] = uniq([ - ...(Array.isArray(merged[key]) ? merged[key] : [merged[key]]), - ...(Array.isArray(value) ? value : [value]), - ]); + // we want to keep identity fields as single-value properties. + // this can happen if two sources group by the same identity + if (!identityFields.includes(key)) { + merged[key] = uniq([ + ...(Array.isArray(merged[key]) ? merged[key] : [merged[key]]), + ...(Array.isArray(value) ? value : [value]), + ]); + } } else { merged[key] = value; } @@ -43,13 +52,21 @@ function mergeEntities(metadataFields: string[], entity1: EntityV2, entity2: Ent return merged; } -export function mergeEntitiesList( - sources: EntitySourceDefinition[], - entities: EntityV2[] -): EntityV2[] { - const metadataFields = uniq( - sources.flatMap((source) => compact([source.timestamp_field, ...source.metadata_fields])) - ); +export function mergeEntitiesList({ + entities, + sources, + metadataFields, +}: { + entities: EntityV2[]; + sources: EntitySourceDefinition[]; + metadataFields: string[]; +}): EntityV2[] { + const identityFields = uniq([...sources.flatMap((source) => source.identity_fields)]); + const mergeableFields = uniq([ + ...identityFields, + ...metadataFields, + ...sources.flatMap((source) => source.metadata_fields), + ]); const instances: { [key: string]: EntityV2 } = {}; for (let i = 0; i < entities.length; i++) { @@ -57,7 +74,7 @@ export function mergeEntitiesList( const id = entity['entity.id']; if (instances[id]) { - instances[id] = mergeEntities(metadataFields, instances[id], entity); + instances[id] = mergeEntities(identityFields, mergeableFields, instances[id], entity); } else { instances[id] = entity; } @@ -66,6 +83,38 @@ export function mergeEntitiesList( return Object.values(instances); } +export function sortEntitiesList({ + entities, + sources, + sort, +}: { + entities: EntityV2[]; + sources: EntitySourceDefinition[]; + sort?: SortBy; +}) { + if (!sort) { + sort = defaultSort(sources); + } + + return orderBy(entities, sort.field, sort.direction.toLowerCase() as 'asc' | 'desc'); +} + export function asKeyword(field: string) { return `${field}::keyword`; } + +export function defaultSort(sources: EntitySourceDefinition[]): SortBy { + if (sources.some((source) => source.timestamp_field)) { + return { field: 'entity.last_seen_timestamp', direction: 'DESC' }; + } + + return { field: 'entity.id', direction: 'ASC' }; +} + +export const isRejectedResult = ( + input: PromiseSettledResult<unknown> +): input is PromiseRejectedResult => input.status === 'rejected'; + +export const isFulfilledResult = <T>( + input: PromiseSettledResult<T> +): input is PromiseFulfilledResult<T> => input.status === 'fulfilled'; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/types.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/types.ts index e9815942592de..9515a60d7eec2 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/types.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/types.ts @@ -5,13 +5,17 @@ * 2.0. */ +import { IClusterClient } from '@kbn/core/server'; import { z } from '@kbn/zod'; import moment from 'moment'; +export type InternalClusterClient = Pick<IClusterClient, 'asInternalUser'>; + // Definitions export const entityTypeDefinitionRt = z.object({ id: z.string(), + display_name: z.string(), }); export type EntityTypeDefinition = z.TypeOf<typeof entityTypeDefinitionRt>; @@ -29,6 +33,11 @@ export const entitySourceDefinitionRt = z.object({ export type EntitySourceDefinition = z.TypeOf<typeof entitySourceDefinitionRt>; +export interface BuiltInDefinition { + type: EntityTypeDefinition; + sources: EntitySourceDefinition[]; +} + // Stored definitions export type DefinitionType = 'type' | 'source'; @@ -74,6 +83,8 @@ const searchCommonRt = z.object({ filters: z.optional(z.array(z.string())).default([]), }); +export type SearchCommon = z.output<typeof searchCommonRt>; + export const searchByTypeRt = z.intersection( searchCommonRt, z.object({ @@ -91,3 +102,22 @@ export const searchBySourcesRt = z.intersection( ); export type SearchBySources = z.output<typeof searchBySourcesRt>; + +export const countByTypesRt = z.object({ + types: z.optional(z.array(z.string())), + filters: z.optional(z.array(z.string())), + start: z + .optional(z.string()) + .default(() => moment().subtract(5, 'minutes').toISOString()) + .refine((val) => moment(val).isValid(), { + message: '[start] should be a date in ISO format', + }), + end: z + .optional(z.string()) + .default(() => moment().toISOString()) + .refine((val) => moment(val).isValid(), { + message: '[end] should be a date in ISO format', + }), +}); + +export type CountByTypes = z.output<typeof countByTypesRt>; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/validate_fields.ts b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/validate_fields.ts new file mode 100644 index 0000000000000..ef5ae1bf783ac --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/lib/v2/validate_fields.ts @@ -0,0 +1,75 @@ +/* + * 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 { without } from 'lodash'; +import { Logger } from '@kbn/logging'; +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { EntitySourceDefinition } from './types'; + +// verifies field capabilities of the provided source. +// we map source fields in two categories: +// - mandatory: those are necessary for building entities according to the +// source definition (identity_fields, timestamp_field and display_name). +// unmapped mandatory field throws an error +// - optional: the requested metadata fields. unmapped metadata field is not +// fatal, we simply ignore it +// returns the available metadata fields. +export async function validateFields({ + esClient, + source, + logger, + metadataFields = [], +}: { + esClient: ElasticsearchClient; + source: EntitySourceDefinition; + logger: Logger; + metadataFields?: string[]; +}) { + const mandatoryFields = [ + ...source.identity_fields, + ...(source.timestamp_field ? [source.timestamp_field] : []), + ...(source.display_name ? [source.display_name] : []), + ]; + const metaFields = [...metadataFields, ...source.metadata_fields]; + + const { fields } = await esClient + .fieldCaps({ + index: source.index_patterns, + fields: [...mandatoryFields, ...metaFields], + }) + .catch((err) => { + if (err.meta?.statusCode === 404) { + throw new Error( + `No index found for source [source: ${source.id}, type: ${ + source.type_id + }] with index patterns [${source.index_patterns.join(', ')}]` + ); + } + throw err; + }); + + const sourceHasMandatoryFields = mandatoryFields.every((field) => !!fields[field]); + if (!sourceHasMandatoryFields) { + const missingFields = mandatoryFields.filter((field) => !fields[field]); + throw new Error( + `Mandatory fields [${missingFields.join(', ')}] are not mapped for source [source: ${ + source.id + }, type: ${source.type_id}] with index patterns [${source.index_patterns.join(', ')}]` + ); + } + + // operations on an unmapped field result in a failing query + const availableMetadataFields = metaFields.filter((field) => fields[field]); + if (availableMetadataFields.length < metaFields.length) { + logger.info( + `Ignoring unmapped metadata fields [${without(metaFields, ...availableMetadataFields).join( + ', ' + )}] for source [source: ${source.id}, type: ${source.type_id}]` + ); + } + return availableMetadataFields; +} diff --git a/x-pack/platform/plugins/shared/entity_manager/server/plugin.ts b/x-pack/platform/plugins/shared/entity_manager/server/plugin.ts index d2e9d12a33797..fed5b1c4df458 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/plugin.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/plugin.ts @@ -39,6 +39,7 @@ import { READ_ENTITY_SOURCE_DEFINITION_PRIVILEGE, READ_ENTITIES_PRIVILEGE, } from './lib/v2/constants'; +import { installBuiltInDefinitions } from './lib/v2/definitions/install_built_in_definitions'; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface EntityManagerServerPluginSetup {} @@ -165,10 +166,11 @@ export class EntityManagerServerPlugin this.server.encryptedSavedObjects = plugins.encryptedSavedObjects; } - const esClient = core.elasticsearch.client.asInternalUser; - // Setup v1 definitions index - installEntityManagerTemplates({ esClient, logger: this.logger }) + installEntityManagerTemplates({ + esClient: core.elasticsearch.client.asInternalUser, + logger: this.logger, + }) .then(async () => { // the api key validation requires a check against the cluster license // which is lazily loaded. we ensure it gets loaded before the update @@ -185,9 +187,11 @@ export class EntityManagerServerPlugin .catch((err) => this.logger.error(err)); // Setup v2 definitions index - setupEntityDefinitionsIndex(core.elasticsearch.client, this.logger).catch((error) => { - this.logger.error(error); - }); + setupEntityDefinitionsIndex(core.elasticsearch.client, this.logger) + .then(() => installBuiltInDefinitions(core.elasticsearch.client, this.logger)) + .catch((error) => { + this.logger.error(error); + }); return { getScopedClient: async ({ request }: { request: KibanaRequest }) => { diff --git a/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/count.ts b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/count.ts new file mode 100644 index 0000000000000..46ae3da330f25 --- /dev/null +++ b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/count.ts @@ -0,0 +1,29 @@ +/* + * 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 { z } from '@kbn/zod'; +import { createEntityManagerServerRoute } from '../create_entity_manager_server_route'; +import { READ_ENTITIES_PRIVILEGE } from '../../lib/v2/constants'; +import { countByTypesRt } from '../../lib/v2/types'; + +export const countEntitiesRoute = createEntityManagerServerRoute({ + endpoint: 'POST /internal/entities/v2/_count', + security: { + authz: { + requiredPrivileges: [READ_ENTITIES_PRIVILEGE], + }, + }, + params: z.object({ + body: countByTypesRt, + }), + handler: async ({ request, response, params, getScopedClient }) => { + const client = await getScopedClient({ request }); + const result = await client.v2.countEntities(params.body); + + return response.ok({ body: result }); + }, +}); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/index.ts b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/index.ts index c601ebe988a29..009393d44b634 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/index.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/index.ts @@ -8,9 +8,11 @@ import { searchRoutes } from './search'; import { typeDefinitionRoutes } from './type_definition_routes'; import { sourceDefinitionRoutes } from './source_definition_routes'; +import { countEntitiesRoute } from './count'; export const v2Routes = { ...searchRoutes, ...typeDefinitionRoutes, ...sourceDefinitionRoutes, + ...countEntitiesRoute, }; diff --git a/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/search.ts b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/search.ts index 82d0e5e84f2da..a2ebb26da715f 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/search.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/search.ts @@ -24,9 +24,9 @@ export const searchEntitiesRoute = createEntityManagerServerRoute({ handler: async ({ request, response, params, logger, getScopedClient }) => { try { const client = await getScopedClient({ request }); - const entities = await client.v2.searchEntities(params.body); + const result = await client.v2.searchEntities(params.body); - return response.ok({ body: { entities } }); + return response.ok({ body: result }); } catch (e) { logger.error(e); @@ -51,9 +51,9 @@ export const searchEntitiesPreviewRoute = createEntityManagerServerRoute({ }), handler: async ({ request, response, params, getScopedClient }) => { const client = await getScopedClient({ request }); - const entities = await client.v2.searchEntitiesBySources(params.body); + const result = await client.v2.searchEntitiesBySources(params.body); - return response.ok({ body: { entities } }); + return response.ok({ body: result }); }, }); diff --git a/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/source_definition_routes.ts b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/source_definition_routes.ts index 4fdfa281cfd72..c02627f889939 100644 --- a/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/source_definition_routes.ts +++ b/x-pack/platform/plugins/shared/entity_manager/server/routes/v2/source_definition_routes.ts @@ -13,6 +13,7 @@ import { import { entitySourceDefinitionRt } from '../../lib/v2/types'; import { createEntityManagerServerRoute } from '../create_entity_manager_server_route'; import { EntityDefinitionConflict } from '../../lib/v2/errors/entity_definition_conflict'; +import { UnknownEntityType } from '../../lib/v2/errors/unknown_entity_type'; const createSourceDefinitionRoute = createEntityManagerServerRoute({ endpoint: 'POST /internal/entities/v2/definitions/sources', @@ -40,8 +41,16 @@ const createSourceDefinitionRoute = createEntityManagerServerRoute({ }, }); } catch (error) { + if (error instanceof UnknownEntityType) { + return response.notFound({ + body: { + message: error.message, + }, + }); + } + if (error instanceof EntityDefinitionConflict) { - response.conflict({ + return response.conflict({ body: { message: error.message, }, diff --git a/x-pack/platform/plugins/shared/inference/common/output/create_output_api.test.ts b/x-pack/platform/plugins/shared/inference/common/output/create_output_api.test.ts index b5d380fa9aac6..c65720aae2e48 100644 --- a/x-pack/platform/plugins/shared/inference/common/output/create_output_api.test.ts +++ b/x-pack/platform/plugins/shared/inference/common/output/create_output_api.test.ts @@ -12,6 +12,7 @@ import { ChatCompletionEventType, } from '@kbn/inference-common'; import { createOutputApi } from './create_output_api'; +import { createToolValidationError } from '../../server/chat_complete/errors'; describe('createOutputApi', () => { let chatComplete: jest.Mock; @@ -119,4 +120,80 @@ describe('createOutputApi', () => { }, ]); }); + + describe('when using retry', () => { + const unvalidatedFailedToolCall = { + function: { + name: 'myFunction', + arguments: JSON.stringify({ foo: 'bar' }), + }, + toolCallId: 'foo', + }; + + const validationError = createToolValidationError('Validation failed', { + toolCalls: [unvalidatedFailedToolCall], + }); + + it('retries once when onValidationError is a boolean', async () => { + chatComplete.mockRejectedValueOnce(validationError); + chatComplete.mockResolvedValueOnce( + Promise.resolve({ content: 'retried content', toolCalls: [unvalidatedFailedToolCall] }) + ); + + const output = createOutputApi(chatComplete); + + const response = await output({ + id: 'retry-id', + stream: false, + connectorId: '.retry-connector', + input: 'input message', + retry: { + onValidationError: true, + }, + }); + + expect(chatComplete).toHaveBeenCalledTimes(2); + expect(response).toEqual({ + id: 'retry-id', + content: 'retried content', + output: unvalidatedFailedToolCall.function.arguments, + }); + }); + + it('retries the number of specified attempts', async () => { + chatComplete.mockRejectedValue(validationError); + + const output = createOutputApi(chatComplete); + + await expect( + output({ + id: 'retry-id', + stream: false, + connectorId: '.retry-connector', + input: 'input message', + retry: { + onValidationError: 2, + }, + }) + ).rejects.toThrow('Validation failed'); + + expect(chatComplete).toHaveBeenCalledTimes(3); + }); + + it('throws an error if retry is provided in streaming mode', () => { + const output = createOutputApi(chatComplete); + + expect(() => + output({ + id: 'stream-retry-id', + stream: true, + connectorId: '.stream-retry-connector', + input: 'input message', + retry: { + onValidationError: 1, + }, + }) + ).toThrowError('Retry options are not supported in streaming mode'); + }); + }); }); diff --git a/x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts b/x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts index d263f733bf4ee..3e65cb283dd45 100644 --- a/x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts +++ b/x-pack/platform/plugins/shared/inference/common/output/create_output_api.ts @@ -10,17 +10,22 @@ import { ChatCompletionEventType, MessageRole, OutputAPI, + OutputCompositeResponse, OutputEventType, OutputOptions, ToolSchema, + isToolValidationError, withoutTokenCountEvents, } from '@kbn/inference-common'; import { isObservable, map } from 'rxjs'; import { ensureMultiTurn } from '../utils/ensure_multi_turn'; +type DefaultOutputOptions = OutputOptions<string, ToolSchema | undefined, boolean>; + export function createOutputApi(chatCompleteApi: ChatCompleteAPI): OutputAPI; + export function createOutputApi(chatCompleteApi: ChatCompleteAPI) { - return ({ + return function callOutputApi({ id, connectorId, input, @@ -29,19 +34,26 @@ export function createOutputApi(chatCompleteApi: ChatCompleteAPI) { previousMessages, functionCalling, stream, - }: OutputOptions<string, ToolSchema | undefined, boolean>) => { + retry, + }: DefaultOutputOptions): OutputCompositeResponse<string, ToolSchema | undefined, boolean> { + if (stream && retry !== undefined) { + throw new Error(`Retry options are not supported in streaming mode`); + } + + const messages = ensureMultiTurn([ + ...(previousMessages || []), + { + role: MessageRole.User, + content: input, + }, + ]); + const response = chatCompleteApi({ connectorId, stream, functionCalling, system, - messages: ensureMultiTurn([ - ...(previousMessages || []), - { - role: MessageRole.User, - content: input, - }, - ]), + messages, ...(schema ? { tools: { @@ -79,16 +91,55 @@ export function createOutputApi(chatCompleteApi: ChatCompleteAPI) { }) ); } else { - return response.then((chatResponse) => { - return { - id, - content: chatResponse.content, - output: - chatResponse.toolCalls.length && 'arguments' in chatResponse.toolCalls[0].function - ? chatResponse.toolCalls[0].function.arguments - : undefined, - }; - }); + return response.then( + (chatResponse) => { + return { + id, + content: chatResponse.content, + output: + chatResponse.toolCalls.length && 'arguments' in chatResponse.toolCalls[0].function + ? chatResponse.toolCalls[0].function.arguments + : undefined, + }; + }, + (error: Error) => { + if (isToolValidationError(error) && retry?.onValidationError) { + const retriesLeft = + typeof retry.onValidationError === 'number' ? retry.onValidationError : 1; + + return callOutputApi({ + id, + connectorId, + input, + schema, + system, + previousMessages: messages.concat( + { + role: MessageRole.Assistant as const, + content: '', + toolCalls: error.meta.toolCalls!, + }, + ...(error.meta.toolCalls?.map((toolCall) => { + return { + name: toolCall.function.name, + role: MessageRole.Tool as const, + toolCallId: toolCall.toolCallId, + response: { + error: error.meta, + }, + }; + }) ?? []) + ), + functionCalling, + stream: false, + retry: { + onValidationError: retriesLeft - 1, + }, + }) as OutputCompositeResponse<string, ToolSchema | undefined, false>; + } + throw error; + } + ); } }; } diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/bedrock/bedrock_claude_adapter.test.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/bedrock/bedrock_claude_adapter.test.ts index ca6f60dd45a55..565727b7f57fe 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/bedrock/bedrock_claude_adapter.test.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/bedrock/bedrock_claude_adapter.test.ts @@ -170,6 +170,7 @@ describe('bedrockClaudeAdapter', () => { ], }, { + name: 'my_function', role: MessageRole.Tool, toolCallId: '0', response: { diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/gemini/gemini_adapter.test.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/gemini/gemini_adapter.test.ts index c3410b2af3623..95a46f73d5d1f 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/gemini/gemini_adapter.test.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/gemini/gemini_adapter.test.ts @@ -172,6 +172,7 @@ describe('geminiAdapter', () => { ], }, { + name: 'my_function', role: MessageRole.Tool, toolCallId: '0', response: { diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.test.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.test.ts index 2d0154313b632..48544f1bb0fb1 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.test.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.test.ts @@ -142,6 +142,7 @@ describe('openAIAdapter', () => { ], }, { + name: 'my_function', role: MessageRole.Tool, toolCallId: '0', response: { diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.ts index fa412f335800d..49b6bb5142023 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/adapters/openai/openai_adapter.ts @@ -58,7 +58,6 @@ export const openAIAdapter: InferenceConnectorAdapter = { request = { stream, messages: messagesToOpenAI({ system: wrapped.system, messages: wrapped.messages }), - temperature: 0, }; } else { request = { @@ -66,7 +65,6 @@ export const openAIAdapter: InferenceConnectorAdapter = { messages: messagesToOpenAI({ system, messages }), tool_choice: toolChoiceToOpenAI(toolChoice), tools: toolsToOpenAI(tools), - temperature: 0, }; } diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/api.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/api.ts index 13b1c8d87270c..e58c94759e165 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/api.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/api.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { last } from 'lodash'; +import { last, omit } from 'lodash'; import { defer, switchMap, throwError } from 'rxjs'; import type { Logger } from '@kbn/logging'; import type { KibanaRequest } from '@kbn/core-http-server'; @@ -51,14 +51,26 @@ export function createChatCompleteApi({ request, actions, logger }: CreateChatCo const connectorType = connector.type; const inferenceAdapter = getInferenceAdapter(connectorType); + const messagesWithoutData = messages.map((message) => omit(message, 'data')); + if (!inferenceAdapter) { return throwError(() => createInferenceRequestError(`Adapter for type ${connectorType} not implemented`, 400) ); } - logger.debug(() => `Sending request: ${JSON.stringify(last(messages))}`); - logger.trace(() => JSON.stringify({ messages, toolChoice, tools, system })); + logger.debug( + () => `Sending request, last message is: ${JSON.stringify(last(messagesWithoutData))}` + ); + + logger.trace(() => + JSON.stringify({ + messages: messagesWithoutData, + toolChoice, + tools, + system, + }) + ); return inferenceAdapter.chatComplete({ system, diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/errors.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/errors.ts index a830f57fec559..00ef2d90ca1f7 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/errors.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/errors.ts @@ -44,7 +44,7 @@ export function createToolValidationError( name?: string; arguments?: string; errorsText?: string; - toolCalls?: UnvalidatedToolCall[]; + toolCalls: UnvalidatedToolCall[]; } ): ChatCompletionToolValidationError { return new InferenceTaskError(ChatCompletionErrorCode.ToolValidationError, message, meta); diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/simulated_function_calling/wrap_with_simulated_function_calling.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/simulated_function_calling/wrap_with_simulated_function_calling.ts index 4eb6cfd8d50e1..d2cb0bfae4999 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/simulated_function_calling/wrap_with_simulated_function_calling.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/simulated_function_calling/wrap_with_simulated_function_calling.ts @@ -79,7 +79,7 @@ export function wrapWithSimulatedFunctionCalling({ }; } -const convertToolResponseMessage = (message: ToolMessage<unknown>): UserMessage => { +const convertToolResponseMessage = (message: ToolMessage): UserMessage => { return { role: MessageRole.User, content: JSON.stringify({ diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.test.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.test.ts index c6e5b032120a3..f7c1115305f57 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.test.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.test.ts @@ -183,7 +183,7 @@ describe('chunksIntoMessage', () => { } await expect(async () => getMessage()).rejects.toThrowErrorMatchingInlineSnapshot( - `"Tool call arguments for myFunction were invalid"` + `"Tool call arguments for myFunction (001) were invalid"` ); }); diff --git a/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.ts b/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.ts index fe9b745f442fc..77c4164348cc6 100644 --- a/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.ts +++ b/x-pack/platform/plugins/shared/inference/server/chat_complete/utils/chunks_into_message.ts @@ -5,17 +5,17 @@ * 2.0. */ -import { last, map, merge, OperatorFunction, scan, share } from 'rxjs'; -import type { Logger } from '@kbn/logging'; import { - UnvalidatedToolCall, - ToolOptions, ChatCompletionChunkEvent, ChatCompletionEventType, ChatCompletionMessageEvent, ChatCompletionTokenCountEvent, + ToolOptions, + UnvalidatedToolCall, withoutTokenCountEvents, } from '@kbn/inference-common'; +import type { Logger } from '@kbn/logging'; +import { OperatorFunction, map, merge, share, toArray } from 'rxjs'; import { validateToolCalls } from '../../util/validate_tool_calls'; export function chunksIntoMessage<TToolOptions extends ToolOptions>({ @@ -37,38 +37,36 @@ export function chunksIntoMessage<TToolOptions extends ToolOptions>({ shared$, shared$.pipe( withoutTokenCountEvents(), - scan( - (prev, chunk) => { - prev.content += chunk.content ?? ''; + toArray(), + map((chunks): ChatCompletionMessageEvent<TToolOptions> => { + const concatenatedChunk = chunks.reduce( + (prev, chunk) => { + prev.content += chunk.content ?? ''; + + chunk.tool_calls?.forEach((toolCall) => { + let prevToolCall = prev.tool_calls[toolCall.index]; + if (!prevToolCall) { + prev.tool_calls[toolCall.index] = { + function: { + name: '', + arguments: '', + }, + toolCallId: '', + }; - chunk.tool_calls?.forEach((toolCall) => { - let prevToolCall = prev.tool_calls[toolCall.index]; - if (!prevToolCall) { - prev.tool_calls[toolCall.index] = { - function: { - name: '', - arguments: '', - }, - toolCallId: '', - }; + prevToolCall = prev.tool_calls[toolCall.index]; + } - prevToolCall = prev.tool_calls[toolCall.index]; - } + prevToolCall.function.name += toolCall.function.name; + prevToolCall.function.arguments += toolCall.function.arguments; + prevToolCall.toolCallId += toolCall.toolCallId; + }); - prevToolCall.function.name += toolCall.function.name; - prevToolCall.function.arguments += toolCall.function.arguments; - prevToolCall.toolCallId += toolCall.toolCallId; - }); + return prev; + }, + { content: '', tool_calls: [] as UnvalidatedToolCall[] } + ); - return prev; - }, - { - content: '', - tool_calls: [] as UnvalidatedToolCall[], - } - ), - last(), - map((concatenatedChunk): ChatCompletionMessageEvent<TToolOptions> => { logger.debug(() => `Received completed message: ${JSON.stringify(concatenatedChunk)}`); const validatedToolCalls = validateToolCalls<TToolOptions>({ diff --git a/x-pack/platform/plugins/shared/inference/server/routes/chat_complete.ts b/x-pack/platform/plugins/shared/inference/server/routes/chat_complete.ts index 8b4cc49dfaa46..84e3dd57cded1 100644 --- a/x-pack/platform/plugins/shared/inference/server/routes/chat_complete.ts +++ b/x-pack/platform/plugins/shared/inference/server/routes/chat_complete.ts @@ -76,9 +76,11 @@ const chatCompleteBodySchema: Type<ChatCompleteRequestBody> = schema.object({ name: schema.maybe(schema.string()), }), schema.object({ + name: schema.string(), role: schema.literal(MessageRole.Tool), toolCallId: schema.string(), response: schema.recordOf(schema.string(), schema.any()), + data: schema.maybe(schema.recordOf(schema.string(), schema.any())), }), ]) ), diff --git a/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/actions/generate_esql.ts b/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/actions/generate_esql.ts index 3d8701eba72db..5c2612aa0a4d4 100644 --- a/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/actions/generate_esql.ts +++ b/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/actions/generate_esql.ts @@ -34,6 +34,7 @@ export const generateEsqlTask = <TToolOptions extends ToolOptions>({ docBase, functionCalling, logger, + system, }: { connectorId: string; systemMessage: string; @@ -43,6 +44,7 @@ export const generateEsqlTask = <TToolOptions extends ToolOptions>({ docBase: EsqlDocumentBase; functionCalling?: FunctionCallingMode; logger: Pick<Logger, 'debug'>; + system?: string; }) => { return function askLlmToRespond({ documentationRequest: { commands, functions }, @@ -97,7 +99,7 @@ export const generateEsqlTask = <TToolOptions extends ToolOptions>({ When converting queries from one language to ES|QL, make sure that the functions are available and documented in ES|QL. E.g., for SPL's LEN, use LENGTH. For IF, use CASE. - `, + ${system ? `## Additional instructions\n\n${system}` : ''}`, messages: [ ...messages, { @@ -106,6 +108,7 @@ export const generateEsqlTask = <TToolOptions extends ToolOptions>({ toolCalls: [fakeRequestDocsToolCall], }, { + name: fakeRequestDocsToolCall.function.name, role: MessageRole.Tool, response: { documentation: requestedDocumentation, diff --git a/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/task.ts b/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/task.ts index 56c48b73f4994..801d80a30174e 100644 --- a/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/task.ts +++ b/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/task.ts @@ -21,6 +21,7 @@ export function naturalLanguageToEsql<TToolOptions extends ToolOptions>({ toolChoice, logger, functionCalling, + system, ...rest }: NlToEsqlTaskParams<TToolOptions>): Observable<NlToEsqlTaskEvent<TToolOptions>> { return from(loadDocBase()).pipe( @@ -41,6 +42,7 @@ export function naturalLanguageToEsql<TToolOptions extends ToolOptions>({ tools, toolChoice, }, + system, }); return requestDocumentation({ diff --git a/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/types.ts b/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/types.ts index db3ac3b493481..5a1477524dbd4 100644 --- a/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/types.ts +++ b/x-pack/platform/plugins/shared/inference/server/tasks/nl_to_esql/types.ts @@ -29,5 +29,6 @@ export type NlToEsqlTaskParams<TToolOptions extends ToolOptions> = { connectorId: string; logger: Pick<Logger, 'debug'>; functionCalling?: FunctionCallingMode; + system?: string; } & TToolOptions & ({ input: string } | { messages: Message[] }); diff --git a/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.test.ts b/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.test.ts index 57b030771c6c0..8691a50cda207 100644 --- a/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.test.ts +++ b/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.test.ts @@ -108,7 +108,7 @@ describe('validateToolCalls', () => { }); } expect(() => validate()).toThrowErrorMatchingInlineSnapshot( - `"Tool call arguments for my_function were invalid"` + `"Tool call arguments for my_function (1) were invalid"` ); try { @@ -119,6 +119,15 @@ describe('validateToolCalls', () => { arguments: JSON.stringify({ foo: 'bar' }), errorsText: `data must have required property 'bar'`, name: 'my_function', + toolCalls: [ + { + function: { + arguments: JSON.stringify({ foo: 'bar' }), + name: 'my_function', + }, + toolCallId: '1', + }, + ], }); } else { fail('Expected toolValidationError'); diff --git a/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.ts b/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.ts index ffc2482774b23..3698a93206c07 100644 --- a/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.ts +++ b/x-pack/platform/plugins/shared/inference/server/util/validate_tool_calls.ts @@ -54,11 +54,12 @@ export function validateToolCalls<TToolOptions extends ToolOptions>({ if (!valid) { throw createToolValidationError( - `Tool call arguments for ${toolCall.function.name} were invalid`, + `Tool call arguments for ${toolCall.function.name} (${toolCall.toolCallId}) were invalid`, { name: toolCall.function.name, errorsText: validator.errorsText(), arguments: toolCall.function.arguments, + toolCalls, } ); } diff --git a/x-pack/platform/plugins/shared/integration_assistant/README.md b/x-pack/platform/plugins/shared/integration_assistant/README.md new file mode 100644 index 0000000000000..1b380bc2af8dd --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/README.md @@ -0,0 +1,90 @@ +# Integration Assistant + +## Overview + +Team owner: Security Integrations Scalability + +This is a new Kibana plugin created to help users with automatically generating integration packages based on provided log samples and relevant information + +## Features + +Exposes 4 API's that can be consumed by any frontend plugin, which are: + +- ECS Mapping API +- Categorization API +- Related Fields API +- Build Integration API +- Optional Test Pipeline API (Used to update pipeline results if the ingest pipeline is changed by a user in the UI). + +## Development + +### Backend + +#### Overview + +The backend part of the plugin utilizes langraph extensively to parse the provided log samples and generate the integration package. + +One instance of langraph is created that will include one or more `nodes` in which each node represents a step in the integration package generation process. + +Each node links to a specific function, usually a `handler` specified in its own file under each graph folder that will be executed when the node is reached. + +#### Structure + +**Graphs** + +The graph components are split into logical parts and are placed in separate folders for each graph under the `./server/graphs` directory. + +Each graph folder needs to contains at least one `graph.ts`, which exports a function that returns the compiled graph object. + +Each exported graph function is then linked up to one or more API routes. + +**Routes** + +All routes are defined under `./server/routes` in its own file, and then included in the `./server/routes/register_routes.ts` file. + +**Integration Builder** + +The integration builder is the last step in the expected API flow (ECS Mapping -> Categorization -> Related Fields -> Integration Builder). +With the provided package and data stream details, an optional logo and a list of sample logs, the API will build out the entire folder structure and files required for the integration package, archive it and return it as a `Buffer`. + +**Templates** + +Currently the templates are stored as `nunjucks` files as they were converted from `jinja2` templates, which use the exact same format. Longer term this will most likely be switched to the Kibana forked Handlebars templating engine. + +The templates are stored in the `./server/templates` directory and are used to generate the integration package files while running the Integration Builder API. + +One template (pipeline.yml.njk) is used by the ECS Mapping API to generate the boilerplate ingest pipeline structure we want to use for all generated integrations. + +#### Flows + +Generated by running `yarn draw-graphs` inside the root of the plugin folder. + +**First graph:** +**Log Format Detection:** +![!LogFormatDetectionGraph](./docs/img/log_detection_graph.png) + +**Second graph, main:** +**ECS Main:** +![ECSMappingGraph](./docs/img/ecs_graph.png) + +**Second graph, sub:** +**ECS Sub:** +![ECSMappingSubGraph](./docs/img/ecs_subgraph.png) + +**Third graph:** +**Categorization:** +![CategorizationGraph](./docs/img/categorization_graph.png) + +**Fourth graph:** +**Related:** +![RelatedGraph](./docs/img/related_graph.png) + +## Tests + +All mocks/fixtures are placed in the top `./__jest__` directory of the plugin. If many mocks/fixtures are required, try to split them up into separate file(s). + +Tests can be run with: + +```bash +node scripts/jest x-pack/platform/plugins/shared/integration_assistant/ --coverage +``` diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/build_integration.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/build_integration.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/build_integration.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/build_integration.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/categorization.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/categorization.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/categorization.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/categorization.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/cel.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/cel.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/cel.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/cel.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/ecs_mapping.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/ecs_mapping.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/ecs_mapping.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/ecs_mapping.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/index.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/index.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/kv.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/kv.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/kv.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/kv.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/log_type_detection.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/log_type_detection.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/log_type_detection.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/log_type_detection.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/related.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/related.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/related.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/related.ts diff --git a/x-pack/plugins/integration_assistant/__jest__/fixtures/unstructured.ts b/x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/unstructured.ts similarity index 100% rename from x-pack/plugins/integration_assistant/__jest__/fixtures/unstructured.ts rename to x-pack/platform/plugins/shared/integration_assistant/__jest__/fixtures/unstructured.ts diff --git a/x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.schema.yaml similarity index 97% rename from x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.schema.yaml index 298abbc1201ea..2be69571865e8 100644 --- a/x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.schema.yaml +++ b/x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.schema.yaml @@ -3,7 +3,7 @@ info: title: Auto Import Analyze Logs API endpoint version: "1" paths: - /api/integration_assistant/analyzelogs: + /internal/automatic_import/analyzelogs: post: summary: Analyzes log samples and processes them. operationId: AnalyzeLogs diff --git a/x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.test.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/analyze_logs/analyze_logs_route.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/analyze_logs/analyze_logs_route.test.ts diff --git a/x-pack/plugins/integration_assistant/common/api/build_integration/build_integration.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/build_integration/build_integration.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/build_integration/build_integration.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/build_integration/build_integration.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/build_integration/build_integration.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/build_integration/build_integration.schema.yaml similarity index 96% rename from x-pack/plugins/integration_assistant/common/api/build_integration/build_integration.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/build_integration/build_integration.schema.yaml index 7a5a994cff4df..cc210c53f1e70 100644 --- a/x-pack/plugins/integration_assistant/common/api/build_integration/build_integration.schema.yaml +++ b/x-pack/platform/plugins/shared/integration_assistant/common/api/build_integration/build_integration.schema.yaml @@ -3,7 +3,7 @@ info: title: Integration Assistatnt Build Integrarion API endpoint version: "1" paths: - /api/integration_assistant/build: + /internal/automatic_import/build: post: summary: Builds Integration with the given input samples operationId: BuildIntegration diff --git a/x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.schema.yaml similarity index 97% rename from x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.schema.yaml index 4a8a28abf3a7e..694eb80e852c4 100644 --- a/x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.schema.yaml +++ b/x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.schema.yaml @@ -3,7 +3,7 @@ info: title: Integration Assistatnt Categorization API endpoint version: "1" paths: - /api/integration_assistant/categorization: + /internal/automatic_import/categorization: post: summary: Builds Categorization processors based on the samples operationId: Categorization diff --git a/x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.test.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/categorization/categorization_route.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/categorization/categorization_route.test.ts diff --git a/x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.schema.yaml similarity index 97% rename from x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.schema.yaml index 18187959fe461..dc33d9ac69e3e 100644 --- a/x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.schema.yaml +++ b/x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.schema.yaml @@ -3,7 +3,7 @@ info: title: Automatic Import CEL Input API endpoint version: "1" paths: - /api/integration_assistant/cel: + /internal/automatic_import/cel: post: summary: Builds CEL input configuration operationId: CelInput diff --git a/x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.test.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/cel/cel_input_route.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/cel/cel_input_route.test.ts diff --git a/x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.schema.yaml similarity index 96% rename from x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.schema.yaml index b7f20616007ea..e592565c52b63 100644 --- a/x-pack/plugins/integration_assistant/common/api/check_pipeline/check_pipeline.schema.yaml +++ b/x-pack/platform/plugins/shared/integration_assistant/common/api/check_pipeline/check_pipeline.schema.yaml @@ -3,7 +3,7 @@ info: title: Integration Assistatnt Check Pipeline API endpoint version: "1" paths: - /api/integration_assistant/pipeline: + /internal/automatic_import/pipeline: post: summary: Checks if the pipeline is valid for the given samples operationId: CheckPipeline diff --git a/x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.schema.yaml similarity index 98% rename from x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.schema.yaml index 6bc125a74f52a..2534823b1d171 100644 --- a/x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.schema.yaml +++ b/x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.schema.yaml @@ -3,7 +3,7 @@ info: title: Integration Assistatnt ECS Mapping API endpoint version: "1" paths: - /api/integration_assistant/ecs: + /internal/automatic_import/ecs: post: summary: Builds ECS Mapping based on the input samples operationId: EcsMapping diff --git a/x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.test.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/ecs/ecs_route.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/ecs/ecs_route.test.ts diff --git a/x-pack/plugins/integration_assistant/common/api/generation_error.test.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/generation_error.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/generation_error.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/generation_error.test.ts diff --git a/x-pack/plugins/integration_assistant/common/api/generation_error.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/generation_error.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/generation_error.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/generation_error.ts diff --git a/x-pack/plugins/integration_assistant/common/api/model/api_test.mock.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/api_test.mock.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/api_test.mock.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/api_test.mock.ts diff --git a/x-pack/plugins/integration_assistant/common/api/model/cel_input_attributes.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/cel_input_attributes.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/cel_input_attributes.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/cel_input_attributes.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/model/cel_input_attributes.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/cel_input_attributes.schema.yaml similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/cel_input_attributes.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/cel_input_attributes.schema.yaml diff --git a/x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/common_attributes.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/model/common_attributes.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.schema.yaml similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/common_attributes.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/common_attributes.schema.yaml diff --git a/x-pack/plugins/integration_assistant/common/api/model/processor_attributes.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/processor_attributes.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/processor_attributes.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/processor_attributes.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/model/processor_attributes.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/processor_attributes.schema.yaml similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/processor_attributes.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/processor_attributes.schema.yaml diff --git a/x-pack/plugins/integration_assistant/common/api/model/response_schemas.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/response_schemas.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/response_schemas.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/response_schemas.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/model/response_schemas.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/model/response_schemas.schema.yaml similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/model/response_schemas.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/model/response_schemas.schema.yaml diff --git a/x-pack/plugins/integration_assistant/common/api/related/related_route.gen.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.gen.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/related/related_route.gen.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.gen.ts diff --git a/x-pack/plugins/integration_assistant/common/api/related/related_route.schema.yaml b/x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.schema.yaml similarity index 98% rename from x-pack/plugins/integration_assistant/common/api/related/related_route.schema.yaml rename to x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.schema.yaml index 9ca2f6ab7bae0..2d53b07d4f846 100644 --- a/x-pack/plugins/integration_assistant/common/api/related/related_route.schema.yaml +++ b/x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.schema.yaml @@ -3,7 +3,7 @@ info: title: Integration Assistatnt Related API endpoint version: "1" paths: - /api/integration_assistant/related: + /internal/automatic_import/related: post: summary: Builds related.* fields for integration with the given input samples operationId: Related diff --git a/x-pack/plugins/integration_assistant/common/api/related/related_route.test.ts b/x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/api/related/related_route.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/api/related/related_route.test.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/common/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/common/constants.ts new file mode 100644 index 0000000000000..2e5975a1d4074 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/common/constants.ts @@ -0,0 +1,47 @@ +/* + * 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 { LicenseType } from '@kbn/licensing-plugin/common/types'; + +// Plugin information +export const PLUGIN_ID = 'integrationAssistant'; + +// Public App Routes +export const INTEGRATION_ASSISTANT_APP_ROUTE = '/app/integration_assistant'; + +// Server API Routes +export const INTEGRATION_ASSISTANT_BASE_PATH = '/internal/automatic_import'; + +export const ECS_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/ecs`; +export const CATEGORIZATION_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/categorization`; +export const ANALYZE_LOGS_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/analyzelogs`; +export const RELATED_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/related`; +export const CEL_INPUT_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/cel`; +export const CHECK_PIPELINE_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/pipeline`; +export const INTEGRATION_BUILDER_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/build`; +export const FLEET_PACKAGES_PATH = `/api/fleet/epm/packages`; + +// License +export const MINIMUM_LICENSE_TYPE: LicenseType = 'enterprise'; + +// ErrorCodes + +export enum GenerationErrorCode { + RECURSION_LIMIT = 'recursion-limit', + RECURSION_LIMIT_ANALYZE_LOGS = 'recursion-limit-analyze-logs', + UNSUPPORTED_LOG_SAMPLES_FORMAT = 'unsupported-log-samples-format', + UNPARSEABLE_CSV_DATA = 'unparseable-csv-data', + CEF_ERROR = 'cef-not-supported', +} + +// Size limits +export const FRONTEND_SAMPLE_ROWS = 100; +export const LOG_FORMAT_DETECTION_SAMPLE_ROWS = 5; +export const CATEGORIZATION_INITIAL_BATCH_SIZE = 60; +export const CATEROGIZATION_REVIEW_BATCH_SIZE = 40; +export const CATEGORIZATION_REVIEW_MAX_CYCLES = 5; +export const CATEGORIZATION_RECURSION_LIMIT = 50; diff --git a/x-pack/plugins/integration_assistant/common/ecs.ts b/x-pack/platform/plugins/shared/integration_assistant/common/ecs.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/ecs.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/ecs.ts diff --git a/x-pack/plugins/integration_assistant/common/experimental_features.ts b/x-pack/platform/plugins/shared/integration_assistant/common/experimental_features.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/experimental_features.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/experimental_features.ts diff --git a/x-pack/plugins/integration_assistant/common/index.ts b/x-pack/platform/plugins/shared/integration_assistant/common/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/index.ts diff --git a/x-pack/plugins/integration_assistant/common/utils.test.ts b/x-pack/platform/plugins/shared/integration_assistant/common/utils.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/utils.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/utils.test.ts diff --git a/x-pack/plugins/integration_assistant/common/utils.ts b/x-pack/platform/plugins/shared/integration_assistant/common/utils.ts similarity index 100% rename from x-pack/plugins/integration_assistant/common/utils.ts rename to x-pack/platform/plugins/shared/integration_assistant/common/utils.ts diff --git a/x-pack/plugins/integration_assistant/docs/imgs/categorization_graph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/categorization_graph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/categorization_graph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/categorization_graph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/cel_graph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/cel_graph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/cel_graph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/cel_graph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/ecs_graph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/ecs_graph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/ecs_graph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/ecs_graph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/ecs_subgraph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/ecs_subgraph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/ecs_subgraph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/ecs_subgraph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/kv_graph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/kv_graph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/kv_graph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/kv_graph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/log_detection_graph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/log_detection_graph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/log_detection_graph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/log_detection_graph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/related_graph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/related_graph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/related_graph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/related_graph.png diff --git a/x-pack/plugins/integration_assistant/docs/imgs/unstructured_graph.png b/x-pack/platform/plugins/shared/integration_assistant/docs/imgs/unstructured_graph.png similarity index 100% rename from x-pack/plugins/integration_assistant/docs/imgs/unstructured_graph.png rename to x-pack/platform/plugins/shared/integration_assistant/docs/imgs/unstructured_graph.png diff --git a/x-pack/platform/plugins/shared/integration_assistant/jest.config.js b/x-pack/platform/plugins/shared/integration_assistant/jest.config.js new file mode 100644 index 0000000000000..9d35ce22d3231 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/jest.config.js @@ -0,0 +1,22 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/shared/integration_assistant'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/shared/integration_assistant', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/shared/integration_assistant/{common,server,public}/**/*.{ts,tsx}', + '!<rootDir>/x-pack/platform/plugins/shared/integration_assistant/{__jest__}/**/*', + '!<rootDir>/x-pack/platform/plugins/shared/integration_assistant/**/*.test.{ts,tsx}', + '!<rootDir>/x-pack/platform/plugins/shared/integration_assistant/**/*.config.ts', + ], + setupFiles: ['jest-canvas-mock'], +}; diff --git a/x-pack/plugins/integration_assistant/kibana.jsonc b/x-pack/platform/plugins/shared/integration_assistant/kibana.jsonc similarity index 100% rename from x-pack/plugins/integration_assistant/kibana.jsonc rename to x-pack/platform/plugins/shared/integration_assistant/kibana.jsonc diff --git a/x-pack/plugins/integration_assistant/package.json b/x-pack/platform/plugins/shared/integration_assistant/package.json similarity index 100% rename from x-pack/plugins/integration_assistant/package.json rename to x-pack/platform/plugins/shared/integration_assistant/package.json diff --git a/x-pack/plugins/integration_assistant/public/common/components/authorization/authorization_wrapper.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/authorization_wrapper.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/authorization/authorization_wrapper.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/authorization_wrapper.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/authorization/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/authorization/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/index.ts diff --git a/x-pack/plugins/integration_assistant/public/common/components/authorization/missing_privileges_description.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/missing_privileges_description.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/authorization/missing_privileges_description.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/missing_privileges_description.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/authorization/missing_privileges_tooltip.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/missing_privileges_tooltip.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/authorization/missing_privileges_tooltip.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/missing_privileges_tooltip.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/authorization/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/authorization/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/authorization/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/availability_wrapper.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/availability_wrapper.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/availability_wrapper.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/availability_wrapper.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/index.ts diff --git a/x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/license_paywall_card.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/license_paywall_card.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/license_paywall_card.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/license_paywall_card.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/availability_wrapper/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/availability_wrapper/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/common/components/buttons_footer.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/buttons_footer.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/buttons_footer.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/buttons_footer.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/integration_image_header.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/integration_image_header.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/integration_image_header.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/integration_image_header.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/section_title.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/section_title.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/section_title.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/section_title.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/section_wrapper.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/section_wrapper.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/section_wrapper.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/section_wrapper.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/success_section/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/success_section/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/success_section/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/success_section/index.ts diff --git a/x-pack/plugins/integration_assistant/public/common/components/success_section/success_section.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/success_section/success_section.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/success_section/success_section.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/success_section/success_section.tsx diff --git a/x-pack/plugins/integration_assistant/public/common/components/success_section/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/components/success_section/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/components/success_section/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/components/success_section/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/common/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/constants.ts diff --git a/x-pack/plugins/integration_assistant/public/common/hooks/__mocks__/use_authorization.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/__mocks__/use_authorization.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/hooks/__mocks__/use_authorization.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/__mocks__/use_authorization.ts diff --git a/x-pack/plugins/integration_assistant/public/common/hooks/__mocks__/use_availability.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/__mocks__/use_availability.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/hooks/__mocks__/use_availability.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/__mocks__/use_availability.ts diff --git a/x-pack/plugins/integration_assistant/public/common/hooks/use_authorization.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_authorization.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/hooks/use_authorization.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_authorization.ts diff --git a/x-pack/plugins/integration_assistant/public/common/hooks/use_availability.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_availability.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/hooks/use_availability.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_availability.ts diff --git a/x-pack/plugins/integration_assistant/public/common/hooks/use_kibana.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/hooks/use_kibana.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_kibana.ts diff --git a/x-pack/plugins/integration_assistant/public/common/hooks/use_navigate.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_navigate.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/hooks/use_navigate.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/hooks/use_navigate.ts diff --git a/x-pack/plugins/integration_assistant/public/common/images/integrations_light.svg b/x-pack/platform/plugins/shared/integration_assistant/public/common/images/integrations_light.svg similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/images/integrations_light.svg rename to x-pack/platform/plugins/shared/integration_assistant/public/common/images/integrations_light.svg diff --git a/x-pack/plugins/integration_assistant/public/common/lib/api.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/lib/api.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/lib/api.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/lib/api.ts diff --git a/x-pack/plugins/integration_assistant/public/common/lib/api_parsers.test.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/lib/api_parsers.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/lib/api_parsers.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/lib/api_parsers.test.ts diff --git a/x-pack/plugins/integration_assistant/public/common/lib/api_parsers.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/lib/api_parsers.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/lib/api_parsers.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/lib/api_parsers.ts diff --git a/x-pack/plugins/integration_assistant/public/common/lib/lang_smith.ts b/x-pack/platform/plugins/shared/integration_assistant/public/common/lib/lang_smith.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/common/lib/lang_smith.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/common/lib/lang_smith.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration.tsx diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.test.tsx new file mode 100644 index 0000000000000..133da383e4e99 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.test.tsx @@ -0,0 +1,855 @@ +/* + * 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 { render, act } from '@testing-library/react'; +import { TestProvider } from '../../../mocks/test_provider'; +import { CreateIntegrationAssistant } from './create_integration_assistant'; +import type { State } from './state'; +import { ExperimentalFeaturesService } from '../../../services'; +import { mockReportEvent } from '../../../services/telemetry/mocks/service'; +import { TelemetryEventType } from '../../../services/telemetry/types'; + +export const defaultInitialState: State = { + step: 1, + connector: undefined, + integrationSettings: undefined, + isGenerating: false, + hasCelInput: false, + result: undefined, +}; + +const mockInitialState = jest.fn((): State => defaultInitialState); +jest.mock('./state', () => ({ + ...jest.requireActual('./state'), + get initialState() { + return mockInitialState(); + }, +})); + +jest.mock('../../../services'); +const mockedExperimentalFeaturesService = jest.mocked(ExperimentalFeaturesService); + +const mockConnectorStep = jest.fn(() => <div data-test-subj="connectorStepMock" />); +const mockIntegrationStep = jest.fn(() => <div data-test-subj="integrationStepMock" />); +const mockDataStreamStep = jest.fn(() => <div data-test-subj="dataStreamStepMock" />); +const mockReviewStep = jest.fn(() => <div data-test-subj="reviewStepMock" />); +const mockCelInputStep = jest.fn(() => <div data-test-subj="celInputStepMock" />); +const mockReviewCelStep = jest.fn(() => <div data-test-subj="reviewCelStepMock" />); +const mockDeployStep = jest.fn(() => <div data-test-subj="deployStepMock" />); + +const mockIsConnectorStepReadyToComplete = jest.fn(); +const mockIsIntegrationStepReadyToComplete = jest.fn(); +const mockIsDataStreamStepReadyToComplete = jest.fn(); +const mockIsReviewStepReadyToComplete = jest.fn(); +const mockIsCelInputStepReadyToComplete = jest.fn(); +const mockIsCelReviewStepReadyToComplete = jest.fn(); + +jest.mock('./steps/connector_step', () => ({ + ConnectorStep: () => mockConnectorStep(), + isConnectorStepReadyToComplete: () => mockIsConnectorStepReadyToComplete(), +})); +jest.mock('./steps/integration_step', () => ({ + IntegrationStep: () => mockIntegrationStep(), + isIntegrationStepReadyToComplete: () => mockIsIntegrationStepReadyToComplete(), +})); +jest.mock('./steps/data_stream_step', () => ({ + DataStreamStep: () => mockDataStreamStep(), + isDataStreamStepReadyToComplete: () => mockIsDataStreamStepReadyToComplete(), +})); +jest.mock('./steps/review_step', () => ({ + ReviewStep: () => mockReviewStep(), + isReviewStepReadyToComplete: () => mockIsReviewStepReadyToComplete(), +})); +jest.mock('./steps/cel_input_step', () => ({ + CelInputStep: () => mockCelInputStep(), + isCelInputStepReadyToComplete: () => mockIsCelInputStepReadyToComplete(), +})); +jest.mock('./steps/review_cel_step', () => ({ + ReviewCelStep: () => mockReviewCelStep(), + isCelReviewStepReadyToComplete: () => mockIsCelReviewStepReadyToComplete(), +})); +jest.mock('./steps/deploy_step', () => ({ DeployStep: () => mockDeployStep() })); + +const mockNavigate = jest.fn(); +jest.mock('../../../common/hooks/use_navigate', () => ({ + ...jest.requireActual('../../../common/hooks/use_navigate'), + useNavigate: () => mockNavigate, +})); + +const renderIntegrationAssistant = () => + render(<CreateIntegrationAssistant />, { wrapper: TestProvider }); + +describe('CreateIntegration', () => { + beforeEach(() => { + jest.clearAllMocks(); + + mockedExperimentalFeaturesService.get.mockReturnValue({ + generateCel: false, + } as never); + }); + + describe('when step is 1', () => { + beforeEach(() => { + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 1 }); + }); + + it('shoud report telemetry for assistant open', () => { + renderIntegrationAssistant(); + expect(mockReportEvent).toHaveBeenCalledWith(TelemetryEventType.IntegrationAssistantOpen, { + sessionId: expect.any(String), + }); + }); + + it('should render connector step', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('connectorStepMock')).toBeInTheDocument(); + }); + + it('should call isConnectorStepReadyToComplete', () => { + renderIntegrationAssistant(); + expect(mockIsConnectorStepReadyToComplete).toHaveBeenCalled(); + }); + + it('should show "Next" on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toHaveTextContent('Next'); + }); + + describe('when connector step is not done', () => { + beforeEach(() => { + mockIsConnectorStepReadyToComplete.mockReturnValue(false); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeDisabled(); + }); + + it('should still enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should still enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + }); + + describe('when connector step is done', () => { + beforeEach(() => { + mockIsConnectorStepReadyToComplete.mockReturnValue(true); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + + it('should enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + describe('when next button is clicked', () => { + beforeEach(() => { + const result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-nextButton').click(); + }); + }); + + it('should report telemetry for connector step completion', () => { + expect(mockReportEvent).toHaveBeenCalledWith( + TelemetryEventType.IntegrationAssistantStepComplete, + { + sessionId: expect.any(String), + step: 1, + stepName: 'Connector Step', + durationMs: expect.any(Number), + sessionElapsedTime: expect.any(Number), + } + ); + }); + }); + }); + + describe('when back button is clicked', () => { + let result: ReturnType<typeof renderIntegrationAssistant>; + beforeEach(() => { + result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-backButton').click(); + }); + }); + + it('should not report telemetry', () => { + expect(mockReportEvent).not.toHaveBeenCalled(); + }); + + it('should navigate to the landing page', () => { + expect(mockNavigate).toHaveBeenCalledWith('landing'); + }); + }); + }); + + describe('when step is 2', () => { + beforeEach(() => { + mockIsConnectorStepReadyToComplete.mockReturnValue(true); + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 2 }); + }); + + it('should render integration', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('integrationStepMock')).toBeInTheDocument(); + }); + + it('should call isIntegrationStepReadyToComplete', () => { + renderIntegrationAssistant(); + expect(mockIsIntegrationStepReadyToComplete).toHaveBeenCalled(); + }); + + it('should show "Next" on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toHaveTextContent('Next'); + }); + + describe('when integration step is not done', () => { + beforeEach(() => { + mockIsIntegrationStepReadyToComplete.mockReturnValue(false); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeDisabled(); + }); + + it('should still enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should still enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + }); + + describe('when integration step is done', () => { + beforeEach(() => { + mockIsIntegrationStepReadyToComplete.mockReturnValue(true); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + + it('should enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + describe('when next button is clicked', () => { + beforeEach(() => { + const result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-nextButton').click(); + }); + }); + + it('should report telemetry for integration step completion', () => { + expect(mockReportEvent).toHaveBeenCalledWith( + TelemetryEventType.IntegrationAssistantStepComplete, + { + sessionId: expect.any(String), + step: 2, + stepName: 'Integration Step', + durationMs: expect.any(Number), + sessionElapsedTime: expect.any(Number), + } + ); + }); + }); + }); + + describe('when back button is clicked', () => { + let result: ReturnType<typeof renderIntegrationAssistant>; + beforeEach(() => { + result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-backButton').click(); + }); + }); + + it('should not report telemetry', () => { + expect(mockReportEvent).not.toHaveBeenCalled(); + }); + + it('should show connector step', () => { + expect(result.queryByTestId('connectorStepMock')).toBeInTheDocument(); + }); + + it('should enable the next button', () => { + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + }); + }); + + describe('when step is 3', () => { + beforeEach(() => { + mockIsConnectorStepReadyToComplete.mockReturnValue(true); + mockIsIntegrationStepReadyToComplete.mockReturnValue(true); + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 3 }); + }); + + it('should render data stream', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('dataStreamStepMock')).toBeInTheDocument(); + }); + + it('should call isDataStreamStepReadyToComplete', () => { + renderIntegrationAssistant(); + expect(mockIsDataStreamStepReadyToComplete).toHaveBeenCalled(); + }); + + it('should show "Analyze logs" on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toHaveTextContent('Analyze logs'); + }); + + describe('when data stream step is not done', () => { + beforeEach(() => { + mockIsDataStreamStepReadyToComplete.mockReturnValue(false); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeDisabled(); + }); + + it('should still enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should still enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + }); + + describe('when data stream step is done', () => { + beforeEach(() => { + mockIsDataStreamStepReadyToComplete.mockReturnValue(true); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + + it('should enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + describe('when next button is clicked', () => { + beforeEach(() => { + const result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-nextButton').click(); + }); + }); + + it('should report telemetry for data stream step completion', () => { + expect(mockReportEvent).toHaveBeenCalledWith( + TelemetryEventType.IntegrationAssistantStepComplete, + { + sessionId: expect.any(String), + step: 3, + stepName: 'DataStream Step', + durationMs: expect.any(Number), + sessionElapsedTime: expect.any(Number), + } + ); + }); + + it('should show loader on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('generatingLoader')).toBeInTheDocument(); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + // Not sure why there are two buttons when testing. + const nextButton = result + .getAllByTestId('buttonsFooter-nextButton') + .filter((button) => button.textContent !== 'Next')[0]; + expect(nextButton).toBeDisabled(); + }); + }); + }); + + describe('when back button is clicked', () => { + let result: ReturnType<typeof renderIntegrationAssistant>; + beforeEach(() => { + result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-backButton').click(); + }); + }); + + it('should not report telemetry', () => { + expect(mockReportEvent).not.toHaveBeenCalled(); + }); + + it('should show integration step', () => { + expect(result.queryByTestId('integrationStepMock')).toBeInTheDocument(); + }); + + it('should enable the next button', () => { + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + }); + }); + + describe('when step is 4', () => { + beforeEach(() => { + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 4 }); + }); + + it('should render review', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('reviewStepMock')).toBeInTheDocument(); + }); + + it('should call isReviewStepReadyToComplete', () => { + renderIntegrationAssistant(); + expect(mockIsReviewStepReadyToComplete).toHaveBeenCalled(); + }); + + it('should show the "Add to Elastic" on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toHaveTextContent('Add to Elastic'); + }); + + describe('when review step is not done', () => { + beforeEach(() => { + mockIsReviewStepReadyToComplete.mockReturnValue(false); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeDisabled(); + }); + + it('should still enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should still enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + }); + + describe('when review step is done', () => { + beforeEach(() => { + mockIsReviewStepReadyToComplete.mockReturnValue(true); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + + it('should enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + describe('when next button is clicked', () => { + beforeEach(() => { + const result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-nextButton').click(); + }); + }); + + it('should report telemetry for review step completion', () => { + expect(mockReportEvent).toHaveBeenCalledWith( + TelemetryEventType.IntegrationAssistantStepComplete, + { + sessionId: expect.any(String), + step: 4, + stepName: 'Review Step', + durationMs: expect.any(Number), + sessionElapsedTime: expect.any(Number), + } + ); + }); + + it('should show deploy step', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + }); + }); + }); + + describe('when step is 5', () => { + beforeEach(() => { + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 5 }); + }); + + it('should render deploy', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); + }); + + it('should hide the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('buttonsFooter-backButton')).toBe(null); + }); + + it('should hide the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('buttonsFooter-backButton')).toBe(null); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + it('should show "Close" on the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toHaveTextContent('Close'); + }); + }); +}); + +describe('CreateIntegration with generateCel enabled', () => { + beforeEach(() => { + jest.clearAllMocks(); + + mockedExperimentalFeaturesService.get.mockReturnValue({ + generateCel: true, + } as never); + }); + + describe('when step is 5 and has celInput', () => { + beforeEach(() => { + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 5, hasCelInput: true }); + }); + + it('should render cel input', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('celInputStepMock')).toBeInTheDocument(); + }); + + it('should call isCelInputStepReadyToComplete', () => { + renderIntegrationAssistant(); + expect(mockIsCelInputStepReadyToComplete).toHaveBeenCalled(); + }); + + it('should show "Generate CEL input configuration" on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toHaveTextContent( + 'Generate CEL input configuration' + ); + }); + + it('should enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + describe('when cel input step is not done', () => { + beforeEach(() => { + mockIsCelInputStepReadyToComplete.mockReturnValue(false); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + // Not sure why there are two buttons when testing. + const nextButton = result + .getAllByTestId('buttonsFooter-nextButton') + .filter((button) => button.textContent !== 'Next')[0]; + expect(nextButton).toBeDisabled(); + }); + }); + + describe('when cel input step is done', () => { + beforeEach(() => { + mockIsCelInputStepReadyToComplete.mockReturnValue(true); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + + describe('when next button is clicked', () => { + beforeEach(() => { + const result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-nextButton').click(); + }); + }); + + it('should report telemetry for cel input step completion', () => { + expect(mockReportEvent).toHaveBeenCalledWith( + TelemetryEventType.IntegrationAssistantStepComplete, + { + sessionId: expect.any(String), + step: 5, + stepName: 'CEL Input Step', + durationMs: expect.any(Number), + sessionElapsedTime: expect.any(Number), + } + ); + }); + + it('should show loader on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('generatingLoader')).toBeInTheDocument(); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + // Not sure why there are two buttons when testing. + const nextButton = result + .getAllByTestId('buttonsFooter-nextButton') + .filter((button) => button.textContent !== 'Next')[0]; + expect(nextButton).toBeDisabled(); + }); + }); + }); + + describe('when back button is clicked', () => { + let result: ReturnType<typeof renderIntegrationAssistant>; + beforeEach(() => { + result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-backButton').click(); + }); + }); + + it('should not report telemetry', () => { + expect(mockReportEvent).not.toHaveBeenCalled(); + }); + + it('should show review step', () => { + expect(result.queryByTestId('reviewStepMock')).toBeInTheDocument(); + }); + + it('should enable the next button', () => { + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + }); + }); + + describe('when step is 5 and does not have celInput', () => { + beforeEach(() => { + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 5 }); + }); + + it('should render deploy', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); + }); + + it('should hide the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('buttonsFooter-backButton')).toBe(null); + }); + + it('should hide the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('buttonsFooter-backButton')).toBe(null); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + it('should show "Close" on the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toHaveTextContent('Close'); + }); + }); + + describe('when step is 6', () => { + beforeEach(() => { + mockInitialState.mockReturnValueOnce({ + ...defaultInitialState, + step: 6, + celInputResult: { program: 'program', stateSettings: {}, redactVars: [] }, + }); + }); + + it('should render review', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('reviewCelStepMock')).toBeInTheDocument(); + }); + + it('should call isReviewCelStepReadyToComplete', () => { + renderIntegrationAssistant(); + expect(mockIsCelReviewStepReadyToComplete).toHaveBeenCalled(); + }); + + it('should show the "Add to Elastic" on the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toHaveTextContent('Add to Elastic'); + }); + + describe('when cel review step is not done', () => { + beforeEach(() => { + mockIsCelReviewStepReadyToComplete.mockReturnValue(false); + }); + + it('should disable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeDisabled(); + }); + + it('should still enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should still enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + }); + + describe('when cel review step is done', () => { + beforeEach(() => { + mockIsCelReviewStepReadyToComplete.mockReturnValue(true); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + + it('should enable the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-backButton')).toBeEnabled(); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + describe('when next button is clicked', () => { + beforeEach(() => { + const result = renderIntegrationAssistant(); + mockReportEvent.mockClear(); + act(() => { + result.getByTestId('buttonsFooter-nextButton').click(); + }); + }); + + it('should report telemetry for review step completion', () => { + expect(mockReportEvent).toHaveBeenCalledWith( + TelemetryEventType.IntegrationAssistantStepComplete, + { + sessionId: expect.any(String), + step: 6, + stepName: 'CEL Review Step', + durationMs: expect.any(Number), + sessionElapsedTime: expect.any(Number), + } + ); + }); + + it('should show deploy step', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); + }); + + it('should enable the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-nextButton')).toBeEnabled(); + }); + }); + }); + }); + + describe('when step is 7', () => { + beforeEach(() => { + mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 7 }); + }); + + it('should render deploy', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); + }); + + it('should hide the back button', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('buttonsFooter-backButton')).toBe(null); + }); + + it('should hide the next button', () => { + const result = renderIntegrationAssistant(); + expect(result.queryByTestId('buttonsFooter-backButton')).toBe(null); + }); + + it('should enable the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toBeEnabled(); + }); + + it('should show "Close" on the cancel button', () => { + const result = renderIntegrationAssistant(); + expect(result.getByTestId('buttonsFooter-cancelButton')).toHaveTextContent('Close'); + }); + }); +}); diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.tsx new file mode 100644 index 0000000000000..81cb5a9b3b137 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.tsx @@ -0,0 +1,184 @@ +/* + * 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, { useReducer, useMemo, useEffect, useCallback } from 'react'; +import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; +import { Header } from './header'; +import { Footer } from './footer'; +import { useNavigate, Page } from '../../../common/hooks/use_navigate'; +import { ConnectorStep, isConnectorStepReadyToComplete } from './steps/connector_step'; +import { IntegrationStep, isIntegrationStepReadyToComplete } from './steps/integration_step'; +import { DataStreamStep, isDataStreamStepReadyToComplete } from './steps/data_stream_step'; +import { ReviewStep, isReviewStepReadyToComplete } from './steps/review_step'; +import { CelInputStep, isCelInputStepReadyToComplete } from './steps/cel_input_step'; +import { ReviewCelStep, isCelReviewStepReadyToComplete } from './steps/review_cel_step'; +import { DeployStep } from './steps/deploy_step'; +import { reducer, initialState, ActionsProvider, type Actions } from './state'; +import { useTelemetry } from '../telemetry'; +import { ExperimentalFeaturesService } from '../../../services'; + +const stepNames: Record<number | string, string> = { + 1: 'Connector Step', + 2: 'Integration Step', + 3: 'DataStream Step', + 4: 'Review Step', + cel_input: 'CEL Input Step', + cel_review: 'CEL Review Step', + deploy: 'Deploy Step', +}; + +export const CreateIntegrationAssistant = React.memo(() => { + const [state, dispatch] = useReducer(reducer, initialState); + const navigate = useNavigate(); + const { generateCel: isGenerateCelEnabled } = ExperimentalFeaturesService.get(); + + const celInputStepIndex = isGenerateCelEnabled && state.hasCelInput ? 5 : null; + const celReviewStepIndex = isGenerateCelEnabled && state.celInputResult ? 6 : null; + const deployStepIndex = + celInputStepIndex !== null || celReviewStepIndex !== null || state.step === 7 ? 7 : 5; + + const stepName = + state.step === deployStepIndex + ? stepNames.deploy + : state.step === celReviewStepIndex + ? stepNames.cel_review + : state.step === celInputStepIndex + ? stepNames.cel_input + : state.step in stepNames + ? stepNames[state.step] + : 'Unknown Step'; + + const telemetry = useTelemetry(); + useEffect(() => { + telemetry.reportAssistantOpen(); + }, [telemetry]); + + const isThisStepReadyToComplete = useMemo(() => { + if (state.step === 1) { + return isConnectorStepReadyToComplete(state); + } else if (state.step === 2) { + return isIntegrationStepReadyToComplete(state); + } else if (state.step === 3) { + return isDataStreamStepReadyToComplete(state); + } else if (state.step === 4) { + return isReviewStepReadyToComplete(state); + } else if (isGenerateCelEnabled && state.step === 5) { + return isCelInputStepReadyToComplete(state); + } else if (isGenerateCelEnabled && state.step === 6) { + return isCelReviewStepReadyToComplete(state); + } + return false; + }, [state, isGenerateCelEnabled]); + + const goBackStep = useCallback(() => { + if (state.step === 1) { + navigate(Page.landing); + } else { + dispatch({ type: 'SET_STEP', payload: state.step - 1 }); + } + }, [navigate, dispatch, state.step]); + + const completeStep = useCallback(() => { + if (!isThisStepReadyToComplete) { + // If the user tries to navigate to the next step without completing the current step. + return; + } + telemetry.reportAssistantStepComplete({ step: state.step, stepName }); + if (state.step === 3 || state.step === celInputStepIndex) { + dispatch({ type: 'SET_IS_GENERATING', payload: true }); + } else { + dispatch({ type: 'SET_STEP', payload: state.step + 1 }); + } + }, [telemetry, state.step, stepName, celInputStepIndex, isThisStepReadyToComplete]); + + const actions = useMemo<Actions>( + () => ({ + setStep: (payload) => { + dispatch({ type: 'SET_STEP', payload }); + }, + setConnector: (payload) => { + dispatch({ type: 'SET_CONNECTOR', payload }); + }, + setIntegrationSettings: (payload) => { + dispatch({ type: 'SET_INTEGRATION_SETTINGS', payload }); + }, + setIsGenerating: (payload) => { + dispatch({ type: 'SET_IS_GENERATING', payload }); + }, + setHasCelInput: (payload) => { + dispatch({ type: 'SET_HAS_CEL_INPUT', payload }); + }, + setResult: (payload) => { + dispatch({ type: 'SET_GENERATED_RESULT', payload }); + }, + setCelInputResult: (payload) => { + dispatch({ type: 'SET_CEL_INPUT_RESULT', payload }); + }, + completeStep, + }), + [completeStep] + ); + + return ( + <ActionsProvider value={actions}> + <KibanaPageTemplate> + <Header currentStep={state.step} isGenerating={state.isGenerating} /> + <KibanaPageTemplate.Section grow paddingSize="l"> + {state.step === 1 && <ConnectorStep connector={state.connector} />} + {state.step === 2 && <IntegrationStep integrationSettings={state.integrationSettings} />} + {state.step === 3 && ( + <DataStreamStep + integrationSettings={state.integrationSettings} + connector={state.connector} + isGenerating={state.isGenerating} + /> + )} + {state.step === 4 && ( + <ReviewStep + integrationSettings={state.integrationSettings} + isGenerating={state.isGenerating} + result={state.result} + /> + )} + {state.step === celInputStepIndex && ( + <CelInputStep + integrationSettings={state.integrationSettings} + connector={state.connector} + isGenerating={state.isGenerating} + /> + )} + {state.step === celReviewStepIndex && ( + <ReviewCelStep + isGenerating={state.isGenerating} + celInputResult={state.celInputResult} + /> + )} + + {state.step === deployStepIndex && ( + <DeployStep + integrationSettings={state.integrationSettings} + result={state.result} + celInputResult={state.celInputResult} + connector={state.connector} + /> + )} + </KibanaPageTemplate.Section> + <Footer + isGenerating={state.isGenerating} + isAnalyzeStep={state.step === 3} + isAnalyzeCelStep={state.step === celInputStepIndex} + isLastStep={state.step === deployStepIndex} + isNextStepEnabled={isThisStepReadyToComplete && !state.isGenerating} + isNextAddingToElastic={state.step === deployStepIndex - 1} + onBack={goBackStep} + onNext={completeStep} + /> + </KibanaPageTemplate> + </ActionsProvider> + ); +}); +CreateIntegrationAssistant.displayName = 'CreateIntegrationAssistant'; diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.test.tsx new file mode 100644 index 0000000000000..1291507e3f62b --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.test.tsx @@ -0,0 +1,63 @@ +/* + * 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 { render, type RenderResult } from '@testing-library/react'; +import { TestProvider } from '../../../../mocks/test_provider'; +import { Footer } from './footer'; +import { ActionsProvider } from '../state'; +import { mockActions } from '../mocks/state'; +import { ExperimentalFeaturesService } from '../../../../services'; + +const mockNavigate = jest.fn(); +jest.mock('../../../../common/hooks/use_navigate', () => ({ + ...jest.requireActual('../../../../common/hooks/use_navigate'), + useNavigate: () => mockNavigate, +})); + +jest.mock('../../../../services'); +const mockedExperimentalFeaturesService = jest.mocked(ExperimentalFeaturesService); + +const wrapper: React.FC<React.PropsWithChildren<{}>> = ({ children }) => ( + <TestProvider> + <ActionsProvider value={mockActions}>{children}</ActionsProvider> + </TestProvider> +); + +describe('Footer', () => { + beforeEach(() => { + jest.clearAllMocks(); + + mockedExperimentalFeaturesService.get.mockReturnValue({ + generateCel: false, + } as never); + }); + + describe('when rendered for the most common case', () => { + let result: RenderResult; + beforeEach(() => { + result = render(<Footer isNextStepEnabled />, { + wrapper, + }); + }); + it('should render footer buttons component', () => { + expect(result.queryByTestId('buttonsFooter')).toBeInTheDocument(); + }); + + it('should render cancel button', () => { + expect(result.queryByTestId('buttonsFooter-cancelButton')).toBeInTheDocument(); + }); + + it('should render back button', () => { + expect(result.queryByTestId('buttonsFooter-backButton')).toBeInTheDocument(); + }); + + it('should render next button', () => { + expect(result.queryByTestId('buttonsFooter-nextButton')).toBeInTheDocument(); + }); + }); +}); diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.tsx new file mode 100644 index 0000000000000..dfd38517e1609 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.tsx @@ -0,0 +1,88 @@ +/* + * 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 { EuiLoadingSpinner } from '@elastic/eui'; +import React, { useMemo } from 'react'; +import { ButtonsFooter } from '../../../../common/components/buttons_footer'; +import { type State } from '../state'; +import * as i18n from './translations'; + +// Generation button for Step 3 +const AnalyzeButtonText = React.memo<{ isGenerating: boolean }>(({ isGenerating }) => { + if (!isGenerating) { + return <>{i18n.ANALYZE_LOGS}</>; + } + return ( + <> + <EuiLoadingSpinner size="s" data-test-subj="generatingLoader" /> + {i18n.LOADING} + </> + ); +}); +AnalyzeButtonText.displayName = 'AnalyzeButtonText'; + +// Generation button for Step 5 +const AnalyzeCelButtonText = React.memo<{ isGenerating: boolean }>(({ isGenerating }) => { + if (!isGenerating) { + return <>{i18n.ANALYZE_CEL}</>; + } + return ( + <> + <EuiLoadingSpinner size="s" data-test-subj="generatingLoader" /> + {i18n.LOADING} + </> + ); +}); +AnalyzeCelButtonText.displayName = 'AnalyzeCelButtonText'; + +interface FooterProps { + isGenerating?: State['isGenerating']; + isAnalyzeStep?: boolean; + isAnalyzeCelStep?: boolean; + isLastStep?: boolean; + isNextStepEnabled?: boolean; + isNextAddingToElastic?: boolean; + onBack?: () => void; + onNext?: () => void; +} + +export const Footer = React.memo<FooterProps>( + ({ + isGenerating = false, + isAnalyzeStep = false, + isAnalyzeCelStep = false, + isLastStep = false, + isNextStepEnabled = false, + isNextAddingToElastic = false, + onBack = () => {}, + onNext = () => {}, + }) => { + const nextButtonText = useMemo( + () => + isNextAddingToElastic ? ( + i18n.ADD_TO_ELASTIC + ) : isAnalyzeStep ? ( + <AnalyzeButtonText isGenerating={isGenerating} /> + ) : isAnalyzeCelStep ? ( + <AnalyzeCelButtonText isGenerating={isGenerating} /> + ) : null, + [isNextAddingToElastic, isAnalyzeStep, isGenerating, isAnalyzeCelStep] + ); + + return isLastStep ? ( + <ButtonsFooter cancelButtonText={i18n.CLOSE} /> + ) : ( + <ButtonsFooter + nextButtonText={nextButtonText} + isNextDisabled={!isNextStepEnabled} + onBack={onBack} + onNext={onNext} + /> + ); + } +); +Footer.displayName = 'Footer'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/index.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/footer/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/header.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/index.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/steps.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/steps.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/steps.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/steps.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/header/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/header/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/index.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/mocks/state.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/mocks/state.ts new file mode 100644 index 0000000000000..bdae762e83c2b --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/mocks/state.ts @@ -0,0 +1,439 @@ +/* + * 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 { Pipeline, Docs, SamplesFormat } from '../../../../../common'; +import type { Actions, State } from '../state'; +import type { AIConnector } from '../types'; + +const result: { pipeline: Pipeline; docs: Docs; samplesFormat: SamplesFormat } = { + pipeline: { + description: 'Pipeline to process my_integration my_data_stream_title logs', + processors: [ + { + set: { + field: 'ecs.version', + tag: 'set_ecs_version', + value: '8.11.0', + }, + }, + { + rename: { + field: 'message', + target_field: 'event.original', + tag: 'rename_message', + ignore_missing: true, + if: 'ctx.event?.original == null', + }, + }, + { + remove: { + field: 'message', + ignore_missing: true, + tag: 'remove_message', + if: 'ctx.event?.original != null', + }, + }, + { + json: { + field: 'event.original', + tag: 'json_original', + target_field: 'my_integration.my_data_stream_title', + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.event', + target_field: 'event.action', + ignore_missing: true, + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.uid', + target_field: 'event.id', + ignore_missing: true, + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.code', + target_field: 'event.code', + ignore_missing: true, + }, + }, + { + date: { + field: 'my_integration.my_data_stream_title.time', + target_field: '@timestamp', + formats: ['ISO8601'], + if: 'ctx.my_integration?.my_data_stream_title?.time != null', + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.user', + target_field: 'user.name', + ignore_missing: true, + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.user_agent', + target_field: 'user_agent.original', + ignore_missing: true, + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.addr.remote', + target_field: 'source.address', + ignore_missing: true, + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.server_hostname', + target_field: 'destination.domain', + ignore_missing: true, + }, + }, + { + rename: { + field: 'my_integration.my_data_stream_title.proto', + target_field: 'network.transport', + ignore_missing: true, + }, + }, + { + script: { + description: 'Drops null/empty values recursively.', + tag: 'script_drop_null_empty_values', + lang: 'painless', + source: + 'boolean dropEmptyFields(Object object) {\n if (object == null || object == "") {\n return true;\n } else if (object instanceof Map) {\n ((Map) object).values().removeIf(value -> dropEmptyFields(value));\n return (((Map) object).size() == 0);\n } else if (object instanceof List) {\n ((List) object).removeIf(value -> dropEmptyFields(value));\n return (((List) object).length == 0);\n }\n return false;\n}\ndropEmptyFields(ctx);\n', + }, + }, + { + geoip: { + field: 'source.ip', + tag: 'geoip_source_ip', + target_field: 'source.geo', + ignore_missing: true, + }, + }, + { + geoip: { + ignore_missing: true, + database_file: 'GeoLite2-ASN.mmdb', + field: 'source.ip', + tag: 'geoip_source_asn', + target_field: 'source.as', + properties: ['asn', 'organization_name'], + }, + }, + { + rename: { + field: 'source.as.asn', + tag: 'rename_source_as_asn', + target_field: 'source.as.number', + ignore_missing: true, + }, + }, + { + rename: { + field: 'source.as.organization_name', + tag: 'rename_source_as_organization_name', + target_field: 'source.as.organization.name', + ignore_missing: true, + }, + }, + { + geoip: { + field: 'destination.ip', + tag: 'geoip_destination_ip', + target_field: 'destination.geo', + ignore_missing: true, + }, + }, + { + geoip: { + database_file: 'GeoLite2-ASN.mmdb', + field: 'destination.ip', + tag: 'geoip_destination_asn', + target_field: 'destination.as', + properties: ['asn', 'organization_name'], + ignore_missing: true, + }, + }, + { + rename: { + field: 'destination.as.asn', + tag: 'rename_destination_as_asn', + target_field: 'destination.as.number', + ignore_missing: true, + }, + }, + { + append: { + field: 'event.type', + value: ['start'], + allow_duplicates: false, + if: "ctx.event?.action == 'user.login'", + }, + }, + { + append: { + field: 'event.category', + value: ['authentication'], + allow_duplicates: false, + if: "ctx.event?.action == 'user.login'", + }, + }, + { + append: { + field: 'event.type', + value: ['start'], + allow_duplicates: false, + if: "ctx.event?.action == 'session.start'", + }, + }, + { + append: { + field: 'event.category', + value: ['session'], + allow_duplicates: false, + if: "ctx.event?.action == 'session.start'", + }, + }, + { + append: { + field: 'event.type', + value: ['info'], + allow_duplicates: false, + if: 'ctx.my_integration?.my_data_stream_title?.mfa_device != null', + }, + }, + { + append: { + field: 'event.category', + value: ['authentication'], + allow_duplicates: false, + if: 'ctx.my_integration?.my_data_stream_title?.mfa_device != null', + }, + }, + { + append: { + field: 'related.ip', + value: ['{{{my_integration.my_data_stream_title.addr.remote}}}'], + if: 'ctx?.my_integration?.my_data_stream_title?.addr?.remote != null', + allow_duplicates: false, + }, + }, + { + append: { + field: 'related.user', + value: ['{{{user.name}}}'], + allow_duplicates: false, + }, + }, + { + append: { + field: 'related.hosts', + value: ['{{{destination.domain}}}'], + if: 'ctx?.destination?.domain != null', + allow_duplicates: false, + }, + }, + { + append: { + field: 'related.hosts', + value: ['{{{my_integration.my_data_stream_title.server_labels.hostname}}}'], + if: 'ctx?.my_integration?.my_data_stream_title?.server_labels?.hostname != null', + allow_duplicates: false, + }, + }, + { + rename: { + field: 'destination.as.organization_name', + tag: 'rename_destination_as_organization_name', + target_field: 'destination.as.organization.name', + ignore_missing: true, + }, + }, + { + remove: { + field: 'event.original', + tag: 'remove_original_event', + if: 'ctx?.tags == null || !(ctx.tags.contains("preserve_original_event"))', + ignore_failure: true, + ignore_missing: true, + }, + }, + ], + on_failure: [ + { + append: { + field: 'error.message', + value: + 'Processor {{{_ingest.on_failure_processor_type}}} with tag {{{_ingest.on_failure_processor_tag}}} in pipeline {{{_ingest.on_failure_pipeline}}} failed with message: {{{_ingest.on_failure_message}}}', + }, + }, + { + set: { + field: 'event.kind', + value: 'pipeline_error', + }, + }, + ], + }, + docs: [ + { + '@timestamp': '2024-02-23T18:56:50.628Z', + ecs: { + version: '8.11.0', + }, + my_integration: { + my_data_stream_title: { + cluster_name: 'teleport.ericbeahan.com', + 'addr.remote': '136.61.214.196:50332', + ei: 0, + method: 'local', + required_private_key_policy: 'none', + success: true, + time: '2024-02-23T18:56:50.628Z', + mfa_device: { + mfa_device_type: 'TOTP', + mfa_device_uuid: 'd07bf388-af49-4ec2-b8a4-c8a9e785b70b', + mfa_device_name: 'otp-device', + }, + }, + }, + related: { + user: ['teleport-admin'], + }, + event: { + action: 'user.login', + code: 'T1000I', + id: 'b675d102-fc25-4f7a-bf5d-96468cc176ea', + type: ['start', 'info'], + category: ['authentication'], + }, + user: { + name: 'teleport-admin', + }, + user_agent: { + original: + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36', + }, + tags: [ + '_geoip_database_unavailable_GeoLite2-City.mmdb', + '_geoip_database_unavailable_GeoLite2-ASN.mmdb', + '_geoip_database_unavailable_GeoLite2-City.mmdb', + '_geoip_database_unavailable_GeoLite2-ASN.mmdb', + ], + }, + { + '@timestamp': '2024-02-23T18:56:57.199Z', + ecs: { + version: '8.11.0', + }, + my_integration: { + my_data_stream_title: { + cluster_name: 'teleport.ericbeahan.com', + 'addr.remote': '136.61.214.196:50339', + ei: 0, + private_key_policy: 'none', + login: 'ec2-user', + server_id: 'face0091-2bf1-43fd-a16a-f1514b4119f4', + sid: '293fda2d-2266-4d4d-b9d1-bd5ea9dd9fc3', + user_kind: 1, + server_labels: { + 'teleport.internal/resource-id': 'dccb2999-9fb8-4169-aded-ec7a1c0a26de', + hostname: 'ip-172-31-8-163.us-east-2.compute.internal', + }, + size: '80:25', + namespace: 'default', + session_recording: 'node', + time: '2024-02-23T18:56:57.199Z', + }, + }, + related: { + user: ['teleport-admin'], + hosts: ['ip-172-31-8-163.us-east-2.compute.internal'], + }, + destination: { + domain: 'ip-172-31-8-163.us-east-2.compute.internal', + }, + event: { + action: 'session.start', + code: 'T2000I', + id: 'fff30583-13be-49e8-b159-32952c6ea34f', + type: ['start'], + category: ['session'], + }, + user: { + name: 'teleport-admin', + }, + network: { + transport: 'ssh', + }, + tags: [ + '_geoip_database_unavailable_GeoLite2-City.mmdb', + '_geoip_database_unavailable_GeoLite2-ASN.mmdb', + '_geoip_database_unavailable_GeoLite2-City.mmdb', + '_geoip_database_unavailable_GeoLite2-ASN.mmdb', + ], + }, + ], + samplesFormat: { name: 'json' }, +}; + +const rawSamples = [ + '{"ei":0,"event":"user.login","uid":"b675d102-fc25-4f7a-bf5d-96468cc176ea","code":"T1000I","time":"2024-02-23T18:56:50.628Z","cluster_name":"teleport.ericbeahan.com","user":"teleport-admin","required_private_key_policy":"none","success":true,"method":"local","mfa_device.mfa_device_name":"otp-device","mfa_device.mfa_device_uuid":"d07bf388-af49-4ec2-b8a4-c8a9e785b70b","mfa_device.mfa_device_type":"TOTP","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36","addr.remote":"136.61.214.196:50332"}', + '{"ei":0,"event":"cert.create","uid":"efd326fc-dd13-4df8-acef-3102c2d717d3","code":"TC000I","time":"2024-02-23T18:56:50.653Z","cluster_name":"teleport.ericbeahan.com","cert_type":"user","identity.user":"teleport-admin","identity.roles":["access","editor"],"identity.logins":["root","ubuntu","ec2-user","-teleport-internal-join"],"identity.expires":"2024-02-24T06:56:50.648137154Z","identity.route_to_cluster":"teleport.ericbeahan.com","identity.traits.aws_role_arns":null,"identity.traits.azure_identities":null,"identity.traits.db_names":null,"identity.traits.db_roles":null,"identity.traits.db_users":null,"identity.traits.gcp_service_accounts":null,"identity.traits.host_user_gid":[""],"identity.traits.host_user_uid":[""],"identity.traits.kubernetes_groups":null,"identity.traits.kubernetes_users":null,"identity.traits.logins":["root","ubuntu","ec2-user"],"identity.traits.windows_logins":null,"identity.teleport_cluster":"teleport.ericbeahan.com","identity.client_ip":"136.61.214.196","identity.prev_identity_expires":"0001-01-01T00:00:00Z","identity.private_key_policy":"none"}', + '{"ei":0,"event":"session.start","uid":"fff30583-13be-49e8-b159-32952c6ea34f","code":"T2000I","time":"2024-02-23T18:56:57.199Z","cluster_name":"teleport.ericbeahan.com","user":"teleport-admin","login":"ec2-user","user_kind":1,"sid":"293fda2d-2266-4d4d-b9d1-bd5ea9dd9fc3","private_key_policy":"none","namespace":"default","server_id":"face0091-2bf1-43fd-a16a-f1514b4119f4","server_hostname":"ip-172-31-8-163.us-east-2.compute.internal","server_labels.hostname":"ip-172-31-8-163.us-east-2.compute.internal","server_labels.teleport.internal/resource-id":"dccb2999-9fb8-4169-aded-ec7a1c0a26de","addr.remote":"136.61.214.196:50339","proto":"ssh","size":"80:25","initial_command":[""],"session_recording":"node"}', +]; +const logo = + 'PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzMyNjlfMjExOTMpIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC41IDExLjk5OTdMNC40MDQgMS42ODQyMUMzLjM4Nzc1IC0wLjAzNzA0MDIgMC43NSAwLjY4NDQ2IDAuNzUgMi42ODMyMVYyMS4zMTYyQzAuNzUgMjMuMzE1IDMuMzg3NzUgMjQuMDM2NSA0LjQwNCAyMi4zMTUyTDEwLjUgMTEuOTk5N1oiIGZpbGw9IiNGMDRFOTgiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy4xMTMzIDEyTDEyLjQzNzYgMTMuMTQ0NUw2LjM0MTU2IDIzLjQ2QzYuMjI2ODEgMjMuNjUzNSA2LjA5NzA2IDIzLjgzMDUgNS45NTgzMSAyNEgxMi44NDAzQzE0LjY1MDggMjQgMTYuMzMzMSAyMy4wNjc3IDE3LjI5MjMgMjEuNTMyNUwyMy4yNTAzIDEySDEzLjExMzNaIiBmaWxsPSIjRkE3NDRFIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuMjkyNCAyLjQ2NzVDMTYuMzMzMiAwLjkzMjI1IDE0LjY1MDkgMCAxMi44Mzk3IDBINS45NTg0NEM2LjA5NjQ0IDAuMTY5NSA2LjIyNjk0IDAuMzQ2NSA2LjM0MDk0IDAuNTRMMTIuNDM2OSAxMC44NTU1TDEzLjExMzQgMTJIMjMuMjQ5N0wxNy4yOTI0IDIuNDY3NVoiIGZpbGw9IiMzNDM3NDEiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8zMjY5XzIxMTkzIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo='; + +export const mockState: State = { + step: 4, + connector: { + id: 'claudeV3OpusUsWest2', + name: 'Claude 3 Opus US-WEST-2', + actionTypeId: '.bedrock', + config: { + apiUrl: 'https://bedrock-runtime.us-west-2.amazonaws.com', + defaultModel: 'anthropic.claude-3-opus-20240229-v1:0', + }, + } as AIConnector, + integrationSettings: { + title: 'Mocked Integration title', + name: 'mocked_integration', + logo, + description: 'Mocked Integration description', + dataStreamTitle: 'Mocked Data Stream Title', + dataStreamName: 'mocked_datastream_name', + dataStreamDescription: 'Mocked Data Stream Description', + inputTypes: ['filestream'], + logSamples: rawSamples, + }, + isGenerating: false, + hasCelInput: false, + result, +}; + +export const mockActions: Actions = { + setStep: jest.fn(), + setConnector: jest.fn(), + setIntegrationSettings: jest.fn(), + setIsGenerating: jest.fn(), + setHasCelInput: jest.fn(), + setResult: jest.fn(), + setCelInputResult: jest.fn(), + completeStep: jest.fn(), +}; diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/state.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/state.ts new file mode 100644 index 0000000000000..17ac3bdd9f90f --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/state.ts @@ -0,0 +1,92 @@ +/* + * 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 { createContext, useContext } from 'react'; +import type { Pipeline, Docs, SamplesFormat, CelInput } from '../../../../common'; +import type { AIConnector, IntegrationSettings } from './types'; + +export interface State { + step: number; + connector?: AIConnector; + integrationSettings?: IntegrationSettings; + isGenerating: boolean; + hasCelInput: boolean; + result?: { + pipeline: Pipeline; + docs: Docs; + samplesFormat?: SamplesFormat; + }; + celInputResult?: CelInput; +} + +export const initialState: State = { + step: 1, + connector: undefined, + integrationSettings: undefined, + isGenerating: false, + hasCelInput: false, + result: undefined, +}; + +type Action = + | { type: 'SET_STEP'; payload: State['step'] } + | { type: 'SET_CONNECTOR'; payload: State['connector'] } + | { type: 'SET_INTEGRATION_SETTINGS'; payload: State['integrationSettings'] } + | { type: 'SET_IS_GENERATING'; payload: State['isGenerating'] } + | { type: 'SET_HAS_CEL_INPUT'; payload: State['hasCelInput'] } + | { type: 'SET_GENERATED_RESULT'; payload: State['result'] } + | { type: 'SET_CEL_INPUT_RESULT'; payload: State['celInputResult'] }; + +export const reducer = (state: State, action: Action): State => { + switch (action.type) { + case 'SET_STEP': + return { + ...state, + step: action.payload, + isGenerating: false, + ...(action.payload < state.step && { result: undefined }), // reset the result when we go back + }; + case 'SET_CONNECTOR': + return { ...state, connector: action.payload }; + case 'SET_INTEGRATION_SETTINGS': + return { ...state, integrationSettings: action.payload }; + case 'SET_IS_GENERATING': + return { ...state, isGenerating: action.payload }; + case 'SET_HAS_CEL_INPUT': + return { ...state, hasCelInput: action.payload }; + case 'SET_GENERATED_RESULT': + return { + ...state, + // keep original result as the samplesFormat is not always included in the payload + result: state.result ? { ...state.result, ...action.payload } : action.payload, + }; + case 'SET_CEL_INPUT_RESULT': + return { ...state, celInputResult: action.payload }; + default: + return state; + } +}; + +export interface Actions { + setStep: (payload: State['step']) => void; + setConnector: (payload: State['connector']) => void; + setIntegrationSettings: (payload: State['integrationSettings']) => void; + setIsGenerating: (payload: State['isGenerating']) => void; + setHasCelInput: (payload: State['hasCelInput']) => void; + setResult: (payload: State['result']) => void; + setCelInputResult: (payload: State['celInputResult']) => void; + completeStep: () => void; +} + +const ActionsContext = createContext<Actions | undefined>(undefined); +export const ActionsProvider = ActionsContext.Provider; +export const useActions = () => { + const actions = useContext(ActionsContext); + if (!actions) { + throw new Error('useActions must be used within a ActionsProvider'); + } + return actions; +}; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/api_definition_input.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/api_definition_input.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/api_definition_input.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/api_definition_input.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/cel_input_step.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/cel_input_step.tsx similarity index 87% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/cel_input_step.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/cel_input_step.tsx index b0a0b3194ec33..851ea3f7e6a21 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/cel_input_step.tsx +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/cel_input_step.tsx @@ -22,7 +22,7 @@ interface CelInputStepProps { export const CelInputStep = React.memo<CelInputStepProps>( ({ integrationSettings, connector, isGenerating }) => { - const { setIsGenerating, setStep, setCelInputResult } = useActions(); + const { setIsGenerating, setStep, setCelInputResult, completeStep } = useActions(); const onGenerationCompleted = useCallback<OnComplete>( (result: State['celInputResult']) => { @@ -43,7 +43,14 @@ export const CelInputStep = React.memo<CelInputStepProps>( <EuiFlexItem> <StepContentWrapper title={i18n.CEL_INPUT_TITLE} subtitle={i18n.CEL_INPUT_DESCRIPTION}> <EuiPanel hasShadow={false} hasBorder> - <EuiForm component="form" fullWidth> + <EuiForm + component="form" + fullWidth + onSubmit={(e) => { + e.preventDefault(); + completeStep(); + }} + > <ApiDefinitionInput integrationSettings={integrationSettings} /> </EuiForm> </EuiPanel> diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/generation_modal.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/generation_modal.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/generation_modal.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/generation_modal.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/index.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/is_step_ready.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/is_step_ready.ts new file mode 100644 index 0000000000000..fa89ccc3882db --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/is_step_ready.ts @@ -0,0 +1,17 @@ +/* + * 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 { State } from '../../state'; + +export const isCelInputStepReadyToComplete = ({ integrationSettings }: State) => + Boolean( + integrationSettings?.name && + integrationSettings?.dataStreamTitle && + integrationSettings?.dataStreamDescription && + integrationSettings?.dataStreamName && + integrationSettings?.apiDefinition + ); +// TODO add support for not uploading a spec file diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/translations.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_selector.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_selector.tsx new file mode 100644 index 0000000000000..a5577ca961107 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_selector.tsx @@ -0,0 +1,102 @@ +/* + * 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 { + useEuiTheme, + EuiBadge, + EuiFlexGroup, + EuiFlexItem, + EuiPanel, + EuiRadio, + EuiFormFieldset, +} from '@elastic/eui'; +import { css } from '@emotion/react'; +import { useKibana } from '../../../../../common/hooks/use_kibana'; +import type { AIConnector } from '../../types'; + +const useRowCss = () => { + const { euiTheme } = useEuiTheme(); + return css` + &.euiPanel:hover, + &.euiPanel:focus { + box-shadow: none; + transform: none; + } + &.euiPanel:hover { + background-color: ${euiTheme.colors.lightestShade}; + } + .euiRadio { + color: ${euiTheme.colors.textPrimary}; + label.euiRadio__label { + padding-left: ${euiTheme.size.xl} !important; + } + } + `; +}; + +interface ConnectorSelectorProps { + connectors: AIConnector[]; + selectedConnectorId: string | undefined; + setConnector: (connector: AIConnector | undefined) => void; +} +export const ConnectorSelector = React.memo<ConnectorSelectorProps>( + ({ connectors, setConnector, selectedConnectorId }) => { + const { + triggersActionsUi: { actionTypeRegistry }, + } = useKibana().services; + const rowCss = useRowCss(); + return ( + <EuiFormFieldset> + <EuiFlexGroup + alignItems="stretch" + direction="column" + gutterSize="s" + data-test-subj="connectorSelector" + > + {connectors.map((connector) => ( + <EuiFlexItem key={connector.id}> + <EuiPanel + element="button" + type="button" // So that the enter button will not submit the form. + role="radio" + key={connector.id} + onClick={() => setConnector(connector)} + hasShadow={false} + hasBorder + paddingSize="l" + css={rowCss} + data-test-subj={`connectorSelector-${connector.id}`} + > + <EuiFlexGroup direction="row" alignItems="center" justifyContent="spaceBetween"> + <EuiFlexItem> + <EuiRadio + label={connector.name} + id={connector.id} + value={connector.id} + checked={selectedConnectorId === connector.id} + onChange={() => setConnector(connector)} + data-test-subj={`connectorSelectorRadio-${connector.id}${ + selectedConnectorId === connector.id ? '-selected' : '' + }`} + /> + </EuiFlexItem> + <EuiFlexItem grow={false}> + <EuiBadge color="hollow"> + {actionTypeRegistry.get(connector.actionTypeId).actionTypeTitle} + </EuiBadge> + </EuiFlexItem> + </EuiFlexGroup> + </EuiPanel> + </EuiFlexItem> + ))} + </EuiFlexGroup> + </EuiFormFieldset> + ); + } +); +ConnectorSelector.displayName = 'ConnectorSelector'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_setup.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_setup.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_setup.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_setup.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.test.tsx diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.tsx new file mode 100644 index 0000000000000..8c7fa66795c81 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.tsx @@ -0,0 +1,173 @@ +/* + * 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, { useCallback, useEffect, useState } from 'react'; +import { useLoadConnectors } from '@kbn/elastic-assistant'; +import { + EuiForm, + EuiFlexGroup, + EuiFlexItem, + EuiLoadingSpinner, + EuiPopover, + EuiLink, + EuiSpacer, + EuiText, + EuiIcon, + useEuiTheme, +} from '@elastic/eui'; +import { + AuthorizationWrapper, + MissingPrivilegesTooltip, +} from '../../../../../common/components/authorization'; +import { useAuthorization } from '../../../../../common/hooks/use_authorization'; +import { useKibana } from '../../../../../common/hooks/use_kibana'; +import { StepContentWrapper } from '../step_content_wrapper'; +import { ConnectorSelector } from './connector_selector'; +import { ConnectorSetup } from './connector_setup'; +import type { AIConnector } from '../../types'; +import { useActions } from '../../state'; +import * as i18n from './translations'; + +/** + * List of allowed action type IDs for the integrations assistant. + */ +const AllowedActionTypeIds = ['.bedrock', '.gen-ai', '.gemini']; + +interface ConnectorStepProps { + connector: AIConnector | undefined; +} +export const ConnectorStep = React.memo<ConnectorStepProps>(({ connector }) => { + const { euiTheme } = useEuiTheme(); + const { http, notifications } = useKibana().services; + const { setConnector, completeStep } = useActions(); + + const [connectors, setConnectors] = useState<AIConnector[]>(); + const { + isLoading, + data: aiConnectors, + refetch: refetchConnectors, + } = useLoadConnectors({ http, toasts: notifications.toasts }); + + useEffect(() => { + if (aiConnectors != null) { + // filter out connectors, this is temporary until we add support for more models + const filteredAiConnectors = aiConnectors.filter(({ actionTypeId }) => + AllowedActionTypeIds.includes(actionTypeId) + ); + setConnectors(filteredAiConnectors); + if (filteredAiConnectors && filteredAiConnectors.length === 1) { + // pre-select the connector if there is only one + setConnector(filteredAiConnectors[0]); + } + } + }, [aiConnectors, setConnector]); + + const onConnectorSaved = useCallback(() => refetchConnectors(), [refetchConnectors]); + + const hasConnectors = !isLoading && connectors?.length; + + return ( + <EuiForm + component="form" + fullWidth + onSubmit={(e) => { + e.preventDefault(); + completeStep(); + }} + > + <StepContentWrapper + title={i18n.TITLE} + subtitle={i18n.DESCRIPTION} + right={ + hasConnectors ? <CreateConnectorPopover onConnectorSaved={onConnectorSaved} /> : null + } + > + <EuiFlexGroup direction="column" alignItems="stretch"> + <EuiFlexItem> + {isLoading ? ( + <EuiLoadingSpinner /> + ) : ( + <> + {hasConnectors ? ( + <ConnectorSelector + connectors={connectors} + setConnector={setConnector} + selectedConnectorId={connector?.id} + /> + ) : ( + <AuthorizationWrapper canCreateConnectors> + <ConnectorSetup + actionTypeIds={AllowedActionTypeIds} + onConnectorSaved={onConnectorSaved} + /> + </AuthorizationWrapper> + )} + </> + )} + </EuiFlexItem> + </EuiFlexGroup> + <EuiSpacer size="m" /> + <EuiText size="s" color="subdued"> + <EuiFlexGroup direction="row" gutterSize="xs" alignItems="flexStart"> + <EuiFlexItem grow={false} css={{ margin: euiTheme.size.xxs }}> + <EuiIcon type="iInCircle" /> + </EuiFlexItem> + <EuiFlexItem>{i18n.SUPPORTED_MODELS_INFO}</EuiFlexItem> + </EuiFlexGroup> + </EuiText> + </StepContentWrapper> + </EuiForm> + ); +}); +ConnectorStep.displayName = 'ConnectorStep'; + +interface CreateConnectorPopoverProps { + onConnectorSaved: () => void; +} +const CreateConnectorPopover = React.memo<CreateConnectorPopoverProps>(({ onConnectorSaved }) => { + const { canCreateConnectors } = useAuthorization(); + const [isOpen, setIsPopoverOpen] = useState(false); + const openPopover = useCallback(() => setIsPopoverOpen(true), []); + const closePopover = useCallback(() => setIsPopoverOpen(false), []); + + const onConnectorSavedAndClose = useCallback(() => { + onConnectorSaved(); + closePopover(); + }, [onConnectorSaved, closePopover]); + + if (!canCreateConnectors) { + return ( + <MissingPrivilegesTooltip canCreateConnectors> + <EuiLink data-test-subj="createConnectorPopoverButtonDisabled" disabled> + {i18n.CREATE_CONNECTOR} + </EuiLink> + </MissingPrivilegesTooltip> + ); + } + return ( + <EuiPopover + button={ + <EuiText size="s"> + <EuiLink data-test-subj="createConnectorPopoverButton" onClick={openPopover}> + {i18n.CREATE_CONNECTOR} + </EuiLink> + </EuiText> + } + isOpen={isOpen} + closePopover={closePopover} + data-test-subj="createConnectorPopover" + > + <ConnectorSetup + actionTypeIds={AllowedActionTypeIds} + onConnectorSaved={onConnectorSavedAndClose} + onClose={closePopover} + compressed + /> + </EuiPopover> + ); +}); +CreateConnectorPopover.displayName = 'CreateConnectorPopover'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/index.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/is_step_ready.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/is_step_ready.ts new file mode 100644 index 0000000000000..cc09cd2a6c87b --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/is_step_ready.ts @@ -0,0 +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 { State } from '../../state'; + +export const isConnectorStepReadyToComplete = ({ connector }: State) => connector != null; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.tsx similarity index 86% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.tsx index 4b505fb7062d6..1bd7b92b2e0cb 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.tsx +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/data_stream_step.tsx @@ -53,8 +53,14 @@ interface DataStreamStepProps { } export const DataStreamStep = React.memo<DataStreamStepProps>( ({ integrationSettings, connector, isGenerating }) => { - const { setIntegrationSettings, setIsGenerating, setHasCelInput, setStep, setResult } = - useActions(); + const { + setIntegrationSettings, + setIsGenerating, + setHasCelInput, + setStep, + setResult, + completeStep, + } = useActions(); const { isLoading: isLoadingPackageNames, packageNames } = useLoadPackageNames(); // this is used to avoid duplicate names const [name, setName] = useState<string>(integrationSettings?.name ?? ''); @@ -150,14 +156,21 @@ export const DataStreamStep = React.memo<DataStreamStepProps>( ); return ( - <EuiFlexGroup direction="column" gutterSize="l" data-test-subj="dataStreamStep"> - <EuiFlexItem> - <StepContentWrapper - title={i18n.INTEGRATION_NAME_TITLE} - subtitle={i18n.INTEGRATION_NAME_DESCRIPTION} - > - <EuiPanel hasShadow={false} hasBorder> - <EuiForm component="form" fullWidth> + <EuiForm + component="form" + fullWidth + onSubmit={(e) => { + e.preventDefault(); + completeStep(); + }} + > + <EuiFlexGroup direction="column" gutterSize="l" data-test-subj="dataStreamStep"> + <EuiFlexItem> + <StepContentWrapper + title={i18n.INTEGRATION_NAME_TITLE} + subtitle={i18n.INTEGRATION_NAME_DESCRIPTION} + > + <EuiPanel hasShadow={false} hasBorder> <EuiFormRow label={i18n.INTEGRATION_NAME_LABEL} helpText={ @@ -176,18 +189,16 @@ export const DataStreamStep = React.memo<DataStreamStepProps>( disabled={isLoadingPackageNames} /> </EuiFormRow> - </EuiForm> - </EuiPanel> - </StepContentWrapper> - </EuiFlexItem> + </EuiPanel> + </StepContentWrapper> + </EuiFlexItem> - <EuiFlexItem> - <StepContentWrapper - title={i18n.DATA_STREAM_TITLE} - subtitle={i18n.DATA_STREAM_DESCRIPTION} - > - <EuiPanel hasShadow={false} hasBorder> - <EuiForm component="form" fullWidth> + <EuiFlexItem> + <StepContentWrapper + title={i18n.DATA_STREAM_TITLE} + subtitle={i18n.DATA_STREAM_DESCRIPTION} + > + <EuiPanel hasShadow={false} hasBorder> <EuiFormRow label={i18n.DATA_STREAM_TITLE_LABEL}> <EuiFieldText name="dataStreamTitle" @@ -228,19 +239,19 @@ export const DataStreamStep = React.memo<DataStreamStepProps>( /> </EuiFormRow> <SampleLogsInput integrationSettings={integrationSettings} /> - </EuiForm> - </EuiPanel> - </StepContentWrapper> - {isGenerating && ( - <GenerationModal - integrationSettings={integrationSettings} - connector={connector} - onComplete={onGenerationCompleted} - onClose={onGenerationClosed} - /> - )} - </EuiFlexItem> - </EuiFlexGroup> + </EuiPanel> + </StepContentWrapper> + {isGenerating && ( + <GenerationModal + integrationSettings={integrationSettings} + connector={connector} + onComplete={onGenerationCompleted} + onClose={onGenerationClosed} + /> + )} + </EuiFlexItem> + </EuiFlexGroup> + </EuiForm> ); } ); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/error_with_link.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/generation_modal.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/index.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/is_step_ready.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/is_step_ready.ts new file mode 100644 index 0000000000000..509ee99b4122f --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/is_step_ready.ts @@ -0,0 +1,16 @@ +/* + * 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 { State } from '../../state'; + +export const isDataStreamStepReadyToComplete = ({ integrationSettings }: State) => + Boolean( + integrationSettings?.name && + integrationSettings?.dataStreamTitle && + integrationSettings?.dataStreamDescription && + integrationSettings?.dataStreamName && + integrationSettings?.logSamples + ); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/sample_logs_input.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_generation.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_generation.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_generation.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_generation.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_load_package_names.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_load_package_names.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_load_package_names.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/use_load_package_names.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/deploy_step.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/index.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/use_deploy_integration.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/use_deploy_integration.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/use_deploy_integration.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/deploy_step/use_deploy_integration.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/index.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.tsx similarity index 94% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.tsx index dc27abd9529cd..928f4db5f065f 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.tsx +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/integration_step.tsx @@ -51,7 +51,7 @@ interface IntegrationStepProps { export const IntegrationStep = React.memo<IntegrationStepProps>(({ integrationSettings }) => { const styles = useLayoutStyles(); - const { setIntegrationSettings } = useActions(); + const { setIntegrationSettings, completeStep } = useActions(); const [logoError, setLogoError] = React.useState<string>(); const setIntegrationValues = useCallback( @@ -95,7 +95,14 @@ export const IntegrationStep = React.memo<IntegrationStepProps>(({ integrationSe <EuiPanel paddingSize="none" hasShadow={false} hasBorder data-test-subj="integrationStep"> <EuiFlexGroup direction="row" gutterSize="none"> <EuiFlexItem css={styles.left}> - <EuiForm component="form" fullWidth> + <EuiForm + component="form" + fullWidth + onSubmit={(e) => { + e.preventDefault(); + completeStep(); + }} + > <EuiFormRow label={i18n.TITLE_LABEL}> <EuiFieldText name="title" diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/is_step_ready.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/is_step_ready.ts new file mode 100644 index 0000000000000..4f40641311671 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/is_step_ready.ts @@ -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 type { State } from '../../state'; + +export const isIntegrationStepReadyToComplete = ({ integrationSettings }: State) => + Boolean(integrationSettings?.title && integrationSettings?.description); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/package_card_preview.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/package_card_preview.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/package_card_preview.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/package_card_preview.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/cel_config_results.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/cel_config_results.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/cel_config_results.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/cel_config_results.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/index.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/is_step_ready.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/is_step_ready.ts new file mode 100644 index 0000000000000..902cdea32d5e0 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/is_step_ready.ts @@ -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 type { State } from '../../state'; + +export const isCelReviewStepReadyToComplete = ({ isGenerating, celInputResult }: State) => + isGenerating === false && celInputResult != null; diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/review_cel_step.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/review_cel_step.tsx new file mode 100644 index 0000000000000..85b9980a4a5de --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/review_cel_step.tsx @@ -0,0 +1,43 @@ +/* + * 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 { EuiForm, EuiLoadingSpinner, EuiPanel } from '@elastic/eui'; +import React from 'react'; +import { useActions, type State } from '../../state'; +import { StepContentWrapper } from '../step_content_wrapper'; +import * as i18n from './translations'; +import { CelConfigResults } from './cel_config_results'; + +interface ReviewCelStepProps { + celInputResult: State['celInputResult']; + isGenerating: State['isGenerating']; +} + +export const ReviewCelStep = React.memo<ReviewCelStepProps>(({ isGenerating, celInputResult }) => { + const { completeStep } = useActions(); + + return ( + <StepContentWrapper title={i18n.TITLE} subtitle={i18n.DESCRIPTION}> + <EuiPanel hasShadow={false} hasBorder data-test-subj="reviewCelStep"> + {isGenerating ? ( + <EuiLoadingSpinner size="l" /> + ) : ( + <EuiForm + component="form" + fullWidth + onSubmit={(e) => { + e.preventDefault(); + completeStep(); + }} + > + <CelConfigResults celInputResult={celInputResult} /> + </EuiForm> + )} + </EuiPanel> + </StepContentWrapper> + ); +}); +ReviewCelStep.displayName = 'ReviewCelStep'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/fields_table.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/fields_table.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/fields_table.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/fields_table.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/index.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/is_step_ready.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/is_step_ready.ts new file mode 100644 index 0000000000000..91b9726e03a3e --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/is_step_ready.ts @@ -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 type { State } from '../../state'; + +export const isReviewStepReadyToComplete = ({ isGenerating, result }: State) => + isGenerating === false && result != null; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/review_step.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/use_check_pipeline.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/use_check_pipeline.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/use_check_pipeline.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/use_check_pipeline.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/step_content_wrapper.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/step_content_wrapper.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/step_content_wrapper.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/steps/step_content_wrapper.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/types.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_assistant/types.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/create_integration_landing.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/create_integration_landing.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/create_integration_landing.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/create_integration_landing.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/index.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/integration_assistant_card.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_landing/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_landing/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/create_integration_upload.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/create_integration_upload.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/create_integration_upload.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/create_integration_upload.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/docs_link_subtitle.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/docs_link_subtitle.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/docs_link_subtitle.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/docs_link_subtitle.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/index.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/translations.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/translations.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_upload/translations.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/create_integration_upload/translations.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/index.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/index.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/index.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/index.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/telemetry.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/telemetry.tsx similarity index 95% rename from x-pack/plugins/integration_assistant/public/components/create_integration/telemetry.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/telemetry.tsx index 39076726b7f9d..04d8a07cd1288 100644 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/telemetry.tsx +++ b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/telemetry.tsx @@ -15,20 +15,12 @@ import type { IntegrationSettings, } from './create_integration_assistant/types'; -const stepNames: Record<string, string> = { - '1': 'Connector Step', - '2': 'Integration Step', - '3': 'DataStream Step', - '4': 'Review Step', - '5': 'Deploy Step', -}; - type ReportUploadZipIntegrationComplete = (params: { integrationName?: string; error?: string; }) => void; type ReportAssistantOpen = () => void; -type ReportAssistantStepComplete = (params: { step: number }) => void; +type ReportAssistantStepComplete = (params: { step: number; stepName: string }) => void; type ReportGenerationComplete = (params: { connector: AIConnector; integrationSettings: IntegrationSettings; @@ -92,11 +84,11 @@ export const TelemetryContextProvider = React.memo<PropsWithChildren<{}>>(({ chi }, [telemetry]); const reportAssistantStepComplete = useCallback<ReportAssistantStepComplete>( - ({ step }) => { + ({ step, stepName }) => { telemetry.reportEvent(TelemetryEventType.IntegrationAssistantStepComplete, { sessionId: sessionData.current.sessionId, step, - stepName: stepNames[step.toString()] ?? 'Unknown Step', + stepName, durationMs: Date.now() - stepsData.current.startedAt, sessionElapsedTime: Date.now() - sessionData.current.startedAt, }); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/types.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration/types.ts diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.test.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.test.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.test.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.test.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/create_integration_card_button.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration_card_button/index.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/index.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration_card_button/index.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/index.tsx diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration_card_button/types.ts b/x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/components/create_integration_card_button/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/components/create_integration_card_button/types.ts diff --git a/x-pack/plugins/integration_assistant/public/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/index.ts diff --git a/x-pack/plugins/integration_assistant/public/mocks/test_provider.tsx b/x-pack/platform/plugins/shared/integration_assistant/public/mocks/test_provider.tsx similarity index 100% rename from x-pack/plugins/integration_assistant/public/mocks/test_provider.tsx rename to x-pack/platform/plugins/shared/integration_assistant/public/mocks/test_provider.tsx diff --git a/x-pack/plugins/integration_assistant/public/plugin.ts b/x-pack/platform/plugins/shared/integration_assistant/public/plugin.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/plugin.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/plugin.ts diff --git a/x-pack/plugins/integration_assistant/public/services/experimental_features_service.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/experimental_features_service.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/experimental_features_service.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/experimental_features_service.ts diff --git a/x-pack/plugins/integration_assistant/public/services/index.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/index.ts diff --git a/x-pack/plugins/integration_assistant/public/services/mocks/services.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/mocks/services.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/mocks/services.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/mocks/services.ts diff --git a/x-pack/plugins/integration_assistant/public/services/telemetry/events.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/events.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/telemetry/events.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/events.ts diff --git a/x-pack/plugins/integration_assistant/public/services/telemetry/mocks/service.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/mocks/service.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/telemetry/mocks/service.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/mocks/service.ts diff --git a/x-pack/plugins/integration_assistant/public/services/telemetry/service.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/service.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/telemetry/service.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/service.ts diff --git a/x-pack/plugins/integration_assistant/public/services/telemetry/types.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/telemetry/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/telemetry/types.ts diff --git a/x-pack/plugins/integration_assistant/public/services/types.ts b/x-pack/platform/plugins/shared/integration_assistant/public/services/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/services/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/services/types.ts diff --git a/x-pack/plugins/integration_assistant/public/types.ts b/x-pack/platform/plugins/shared/integration_assistant/public/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/public/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/public/types.ts diff --git a/x-pack/plugins/integration_assistant/scripts/draw_graphs.js b/x-pack/platform/plugins/shared/integration_assistant/scripts/draw_graphs.js similarity index 85% rename from x-pack/plugins/integration_assistant/scripts/draw_graphs.js rename to x-pack/platform/plugins/shared/integration_assistant/scripts/draw_graphs.js index be6fa41e29ac5..0ee794df84317 100644 --- a/x-pack/plugins/integration_assistant/scripts/draw_graphs.js +++ b/x-pack/platform/plugins/shared/integration_assistant/scripts/draw_graphs.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../src/setup_node_env'); +require('../../../../../../src/setup_node_env'); require('./draw_graphs_script').drawGraphs(); diff --git a/x-pack/plugins/integration_assistant/scripts/draw_graphs_script.ts b/x-pack/platform/plugins/shared/integration_assistant/scripts/draw_graphs_script.ts similarity index 100% rename from x-pack/plugins/integration_assistant/scripts/draw_graphs_script.ts rename to x-pack/platform/plugins/shared/integration_assistant/scripts/draw_graphs_script.ts diff --git a/x-pack/plugins/integration_assistant/server/__mocks__/mock_server.ts b/x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/mock_server.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/__mocks__/mock_server.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/mock_server.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/request.ts b/x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/request.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/request.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/request.ts diff --git a/x-pack/plugins/integration_assistant/server/__mocks__/request_context.ts b/x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/request_context.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/__mocks__/request_context.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/request_context.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/response.ts b/x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/response.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/response.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/response.ts diff --git a/x-pack/plugins/integration_assistant/server/__mocks__/test_adapters.ts b/x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/test_adapters.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/__mocks__/test_adapters.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/__mocks__/test_adapters.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/server/config.ts b/x-pack/platform/plugins/shared/integration_assistant/server/config.ts new file mode 100644 index 0000000000000..bd30cc844ebe7 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/server/config.ts @@ -0,0 +1,36 @@ +/* + * 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, type TypeOf } from '@kbn/config-schema'; +import type { PluginConfigDescriptor } from '@kbn/core/server'; + +export const configSchema = schema.object({ + enabled: schema.boolean({ defaultValue: true }), + /** + * For internal use. A list of string values (comma delimited) that will enable experimental + * type of functionality that is not yet released. Valid values for this settings need to + * be defined in: + * `x-pack/platform/plugins/shared/integration_assistant/common/experimental_features.ts` + * under the `allowedExperimentalValues` object + * + * @example + * xpack.integration_assistant.enableExperimental: + * - someCrazyFeature + * - someEvenCrazierFeature + */ + enableExperimental: schema.arrayOf(schema.string(), { + defaultValue: () => [], + }), +}); +export type IntegrationAssistantConfigType = TypeOf<typeof configSchema>; + +export const config: PluginConfigDescriptor<IntegrationAssistantConfigType> = { + exposeToBrowser: { + enableExperimental: true, + }, + schema: configSchema, +}; diff --git a/x-pack/plugins/integration_assistant/server/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/categorization.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/categorization.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/categorization.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/categorization.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/categorization.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/categorization.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/categorization.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/categorization.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/errors.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/errors.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/errors.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/errors.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/errors.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/errors.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/errors.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/errors.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/graph.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/graph.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/graph.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/graph.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/index.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/invalid.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/invalid.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/invalid.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/invalid.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/invalid.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/invalid.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/invalid.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/invalid.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/prompts.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/prompts.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/prompts.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/prompts.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/review.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/review.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/review.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/review.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/review.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/review.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/review.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/review.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/stable.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/stable.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/stable.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/stable.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/types.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/util.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/util.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/util.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/util.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/util.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/util.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/util.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/util.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/validate.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/validate.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/validate.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/validate.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/categorization/validate.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/validate.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/categorization/validate.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/categorization/validate.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/build_program.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/build_program.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/build_program.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/build_program.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/build_program.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/build_program.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/build_program.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/build_program.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/graph.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/graph.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/graph.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/graph.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/index.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/prompts.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/prompts.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/prompts.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/prompts.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_details.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_details.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_details.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_details.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_details.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_details.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_details.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_details.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_vars.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_vars.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_vars.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_vars.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_vars.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_vars.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/retrieve_state_vars.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/retrieve_state_vars.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/summarize_query.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/summarize_query.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/summarize_query.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/summarize_query.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/summarize_query.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/summarize_query.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/summarize_query.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/summarize_query.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/types.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/util.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/util.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/util.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/util.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/cel/util.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/util.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/cel/util.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/cel/util.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/csv/columns.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/csv/columns.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/csv/columns.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/csv/columns.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/csv/columns.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/csv/columns.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/csv/columns.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/csv/columns.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/csv/csv.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/csv/csv.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/csv/csv.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/csv/csv.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/chunk.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/chunk.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/chunk.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/chunk.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/chunk.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/chunk.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/chunk.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/chunk.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/duplicates.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/duplicates.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/duplicates.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/duplicates.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/duplicates.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/duplicates.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/duplicates.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/duplicates.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/graph.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/graph.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/graph.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/graph.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/index.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/invalid.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/invalid.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/invalid.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/invalid.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/invalid.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/invalid.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/invalid.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/invalid.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/mapping.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/mapping.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/mapping.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/mapping.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/mapping.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/mapping.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/mapping.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/mapping.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/missing.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/missing.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/missing.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/missing.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/missing.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/missing.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/missing.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/missing.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/model.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/model.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/model.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/model.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/pipeline.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/pipeline.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/pipeline.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/pipeline.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/pipeline.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/pipeline.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/pipeline.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/pipeline.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/prompts.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/prompts.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/prompts.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/prompts.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/state.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/state.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/state.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/state.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/types.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/validate.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/validate.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/validate.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/validate.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/ecs/validate.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/validate.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/ecs/validate.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/ecs/validate.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/error.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/error.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/error.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/error.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/graph.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/graph.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/graph.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/graph.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/header.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/header.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/header.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/header.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/header.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/header.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/header.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/header.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/index.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/kv.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/kv.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/kv.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/kv.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/kv.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/kv.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/kv.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/kv.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/prompts.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/prompts.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/prompts.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/prompts.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/types.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/kv/validate.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/validate.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/kv/validate.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/kv/validate.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/log_type_detection/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/detection.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/detection.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/detection.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/log_type_detection/detection.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/detection.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/graph.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/graph.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/log_type_detection/graph.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/graph.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/log_type_detection/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/prompts.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/prompts.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/log_type_detection/prompts.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/prompts.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/log_type_detection/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/log_type_detection/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/log_type_detection/types.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/errors.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/errors.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/errors.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/errors.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/errors.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/errors.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/errors.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/errors.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/graph.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/graph.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/graph.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/graph.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/index.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/prompts.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/prompts.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/prompts.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/prompts.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/related.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/related.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/related.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/related.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/related.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/related.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/related.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/related.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/review.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/review.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/review.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/review.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/review.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/review.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/review.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/review.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/types.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/util.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/util.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/util.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/util.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/related/util.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/util.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/related/util.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/related/util.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/error.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/error.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/error.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/error.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/errors.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/errors.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/errors.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/errors.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/graph.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/graph.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/graph.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/graph.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/index.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/prompts.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/prompts.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/prompts.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/prompts.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/types.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/unstructured.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/unstructured.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/unstructured.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/unstructured.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/unstructured.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/validate.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/validate.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/validate.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/validate.test.ts diff --git a/x-pack/plugins/integration_assistant/server/graphs/unstructured/validate.ts b/x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/validate.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/graphs/unstructured/validate.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/graphs/unstructured/validate.ts diff --git a/x-pack/plugins/integration_assistant/server/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/index.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/agent.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/agent.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/agent.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/agent.test.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/agent.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/agent.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/agent.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/agent.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/build_integration.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/build_integration.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/build_integration.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/build_integration.test.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/build_integration.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/build_integration.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/build_integration.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/build_integration.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/constants.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/constants.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/constants.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/constants.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/data_stream.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/data_stream.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/data_stream.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/data_stream.test.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/data_stream.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/data_stream.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/data_stream.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/data_stream.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/dev_folders.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/dev_folders.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/dev_folders.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/dev_folders.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/fields.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/fields.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/fields.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/fields.test.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/fields.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/fields.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/fields.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/fields.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/index.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/pipeline.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/pipeline.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/pipeline.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/pipeline.test.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/pipeline.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/pipeline.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/pipeline.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/pipeline.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/readme_files.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/readme_files.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/readme_files.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/readme_files.test.ts diff --git a/x-pack/plugins/integration_assistant/server/integration_builder/readme_files.ts b/x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/readme_files.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/integration_builder/readme_files.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/integration_builder/readme_files.ts diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/cef_error.ts b/x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/cef_error.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/lib/errors/cef_error.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/cef_error.ts diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/lib/errors/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/index.ts diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts b/x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/recursion_limit_error.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/lib/errors/recursion_limit_error.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/recursion_limit_error.ts diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/lib/errors/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/types.ts diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/unparseable_csv_error.ts b/x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/unparseable_csv_error.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/lib/errors/unparseable_csv_error.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/unparseable_csv_error.ts diff --git a/x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts b/x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/unsupported_error.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/lib/errors/unsupported_error.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/lib/errors/unsupported_error.ts diff --git a/x-pack/plugins/integration_assistant/server/plugin.ts b/x-pack/platform/plugins/shared/integration_assistant/server/plugin.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/plugin.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/plugin.ts diff --git a/x-pack/plugins/integration_assistant/server/processor_types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/processor_types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/processor_types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/processor_types.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/analyze_logs_routes.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/analyze_logs_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/analyze_logs_routes.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/build_integration_routes.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/build_integration_routes.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/build_integration_routes.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/build_integration_routes.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/build_integration_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/build_integration_routes.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/categorization_routes.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/categorization_routes.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/categorization_routes.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/categorization_routes.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/categorization_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/categorization_routes.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/cel_route.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/cel_route.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/cel_route.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/cel_route.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/cel_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/cel_routes.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/cel_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/cel_routes.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/ecs_routes.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/ecs_routes.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/ecs_routes.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/ecs_routes.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/ecs_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/ecs_routes.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/index.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/pipeline_routes.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/pipeline_routes.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/pipeline_routes.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/pipeline_routes.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/pipeline_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/pipeline_routes.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/pipeline_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/pipeline_routes.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/register_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/register_routes.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/register_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/register_routes.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/related_routes.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/related_routes.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/related_routes.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/related_routes.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/related_routes.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/related_routes.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/related_routes.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/related_routes.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/routes_util.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/routes_util.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/routes_util.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/routes_util.test.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/routes_util.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/routes_util.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/routes_util.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/routes_util.ts diff --git a/x-pack/plugins/integration_assistant/server/routes/with_availability.ts b/x-pack/platform/plugins/shared/integration_assistant/server/routes/with_availability.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/routes/with_availability.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/routes/with_availability.ts diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/aws_cloudwatch.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/aws_cloudwatch.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/aws_cloudwatch.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/aws_cloudwatch.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/aws_s3.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/aws_s3.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/aws_s3.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/aws_s3.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/azure_blob_storage.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/azure_blob_storage.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/azure_blob_storage.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/azure_blob_storage.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/azure_eventhub.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/azure_eventhub.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/azure_eventhub.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/azure_eventhub.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/cel.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/cel.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/cel.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/cel.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/cloudfoundry.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/cloudfoundry.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/cloudfoundry.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/cloudfoundry.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/common.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/common.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/common.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/common.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/filestream.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/filestream.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/filestream.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/filestream.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/gcp_pubsub.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/gcp_pubsub.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/gcp_pubsub.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/gcp_pubsub.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/gcs.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/gcs.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/gcs.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/gcs.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/http_endpoint.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/http_endpoint.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/http_endpoint.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/http_endpoint.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/journald.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/journald.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/journald.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/journald.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/kafka.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/kafka.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/kafka.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/kafka.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/logfile.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/logfile.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/logfile.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/logfile.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/tcp.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/tcp.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/tcp.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/tcp.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/agent/udp.yml.hbs b/x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/udp.yml.hbs similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/agent/udp.yml.hbs rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/agent/udp.yml.hbs diff --git a/x-pack/plugins/integration_assistant/server/templates/base_fields.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/base_fields.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/base_fields.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/base_fields.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/build.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/build.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/build.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/build.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/build_readme.md.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/build_readme.md.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/build_readme.md.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/build_readme.md.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/changelog.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/changelog.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/changelog.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/changelog.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/data_stream/fields/agent.yml b/x-pack/platform/plugins/shared/integration_assistant/server/templates/data_stream/fields/agent.yml similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/data_stream/fields/agent.yml rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/data_stream/fields/agent.yml diff --git a/x-pack/plugins/integration_assistant/server/templates/data_stream/fields/beats.yml b/x-pack/platform/plugins/shared/integration_assistant/server/templates/data_stream/fields/beats.yml similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/data_stream/fields/beats.yml rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/data_stream/fields/beats.yml diff --git a/x-pack/plugins/integration_assistant/server/templates/description_readme.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/description_readme.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/description_readme.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/description_readme.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/aws_cloudwatch_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/aws_cloudwatch_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/aws_cloudwatch_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/aws_cloudwatch_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/aws_s3_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/aws_s3_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/aws_s3_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/aws_s3_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/azure_blob_storage_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/azure_blob_storage_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/azure_blob_storage_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/azure_blob_storage_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/azure_eventhub_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/azure_eventhub_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/azure_eventhub_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/azure_eventhub_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/cel_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/cel_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/cel_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/cel_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/cloudfoundry_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/cloudfoundry_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/cloudfoundry_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/cloudfoundry_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/common_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/common_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/common_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/common_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/data_stream.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/data_stream.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/data_stream.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/data_stream.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/filestream_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/filestream_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/filestream_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/filestream_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/gcp_pubsub_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/gcp_pubsub_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/gcp_pubsub_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/gcp_pubsub_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/gcs_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/gcs_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/gcs_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/gcs_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/http_endpoint_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/http_endpoint_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/http_endpoint_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/http_endpoint_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/journald_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/journald_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/journald_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/journald_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/kafka_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/kafka_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/kafka_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/kafka_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/logfile_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/logfile_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/logfile_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/logfile_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/ssl_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/ssl_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/ssl_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/ssl_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/tcp_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/tcp_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/tcp_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/tcp_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/manifest/udp_manifest.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/udp_manifest.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/manifest/udp_manifest.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/manifest/udp_manifest.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/package_readme.md.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/package_readme.md.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/package_readme.md.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/package_readme.md.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/pipeline.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/pipeline.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/pipeline.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/pipeline.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/pipeline_tests/test_common_config.yml b/x-pack/platform/plugins/shared/integration_assistant/server/templates/pipeline_tests/test_common_config.yml similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/pipeline_tests/test_common_config.yml rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/pipeline_tests/test_common_config.yml diff --git a/x-pack/plugins/integration_assistant/server/templates/processors/append.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/processors/append.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/processors/append.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/processors/append.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/processors/grok.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/processors/grok.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/processors/grok.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/processors/grok.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/processors/kv.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/processors/kv.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/processors/kv.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/processors/kv.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/docker_compose.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/docker_compose.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/docker_compose.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/docker_compose.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/service_filestream.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_filestream.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/service_filestream.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_filestream.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/service_gcs.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_gcs.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/service_gcs.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_gcs.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/service_logfile.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_logfile.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/service_logfile.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_logfile.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/service_tcp.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_tcp.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/service_tcp.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_tcp.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/service_udp.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_udp.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/service_udp.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/service_udp.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/test_filestream_config.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_filestream_config.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/test_filestream_config.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_filestream_config.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/test_gcs_config.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_gcs_config.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/test_gcs_config.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_gcs_config.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/test_logfile_config.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_logfile_config.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/test_logfile_config.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_logfile_config.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/test_tcp_config.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_tcp_config.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/test_tcp_config.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_tcp_config.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/templates/system_tests/test_udp_config.yml.njk b/x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_udp_config.yml.njk similarity index 100% rename from x-pack/plugins/integration_assistant/server/templates/system_tests/test_udp_config.yml.njk rename to x-pack/platform/plugins/shared/integration_assistant/server/templates/system_tests/test_udp_config.yml.njk diff --git a/x-pack/plugins/integration_assistant/server/types.ts b/x-pack/platform/plugins/shared/integration_assistant/server/types.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/types.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/types.ts diff --git a/x-pack/plugins/integration_assistant/server/util/files.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/files.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/files.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/files.ts diff --git a/x-pack/plugins/integration_assistant/server/util/graph.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/graph.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/graph.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/graph.ts diff --git a/x-pack/plugins/integration_assistant/server/util/index.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/index.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/index.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/index.ts diff --git a/x-pack/plugins/integration_assistant/server/util/llm.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/llm.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/llm.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/llm.ts diff --git a/x-pack/plugins/integration_assistant/server/util/pipeline.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/pipeline.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/pipeline.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/pipeline.ts diff --git a/x-pack/plugins/integration_assistant/server/util/processors.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/processors.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/processors.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/processors.ts diff --git a/x-pack/plugins/integration_assistant/server/util/route_validation.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/route_validation.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/route_validation.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/route_validation.ts diff --git a/x-pack/plugins/integration_assistant/server/util/samples.test.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/samples.test.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/samples.test.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/samples.test.ts diff --git a/x-pack/plugins/integration_assistant/server/util/samples.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/samples.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/samples.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/samples.ts diff --git a/x-pack/plugins/integration_assistant/server/util/util.ts b/x-pack/platform/plugins/shared/integration_assistant/server/util/util.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/util/util.ts rename to x-pack/platform/plugins/shared/integration_assistant/server/util/util.ts diff --git a/x-pack/platform/plugins/shared/integration_assistant/tsconfig.json b/x-pack/platform/plugins/shared/integration_assistant/tsconfig.json new file mode 100644 index 0000000000000..56f8d6fa53383 --- /dev/null +++ b/x-pack/platform/plugins/shared/integration_assistant/tsconfig.json @@ -0,0 +1,46 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "index.ts", + "public/**/*", + "server/**/*.ts", + "common/**/*.ts", + "scripts/**/*.ts", + "__jest__/**/*", + "../../../../typings/**/*" + ], + "exclude": ["target/**/*"], + "kbn_references": [ + "@kbn/core", + "@kbn/config-schema", + "@kbn/langchain", + "@kbn/core-elasticsearch-server", + "@kbn/actions-plugin", + "@kbn/data-plugin", + "@kbn/i18n-react", + "@kbn/shared-ux-page-kibana-template", + "@kbn/i18n", + "@kbn/core-http-browser", + "@kbn/elastic-assistant", + "@kbn/kibana-react-plugin", + "@kbn/code-editor", + "@kbn/monaco", + "@kbn/triggers-actions-ui-plugin", + "@kbn/shared-ux-router", + "@kbn/zod-helpers", + "@kbn/stack-connectors-plugin", + "@kbn/core-analytics-browser", + "@kbn/logging-mocks", + "@kbn/licensing-plugin", + "@kbn/core-http-request-handler-context-server", + "@kbn/core-http-router-server-mocks", + "@kbn/core-http-server", + "@kbn/kibana-utils-plugin", + "@kbn/utils", + "@kbn/zod", + "@kbn/tooling-log" + ] +} diff --git a/x-pack/plugins/license_management/README.md b/x-pack/platform/plugins/shared/license_management/README.md similarity index 100% rename from x-pack/plugins/license_management/README.md rename to x-pack/platform/plugins/shared/license_management/README.md diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/add_license.test.js.snap b/x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/add_license.test.js.snap similarity index 100% rename from x-pack/plugins/license_management/__jest__/__snapshots__/add_license.test.js.snap rename to x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/add_license.test.js.snap diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/license_page_header.test.js.snap b/x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/license_page_header.test.js.snap similarity index 100% rename from x-pack/plugins/license_management/__jest__/__snapshots__/license_page_header.test.js.snap rename to x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/license_page_header.test.js.snap diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/request_trial_extension.test.js.snap b/x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/request_trial_extension.test.js.snap similarity index 100% rename from x-pack/plugins/license_management/__jest__/__snapshots__/request_trial_extension.test.js.snap rename to x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/request_trial_extension.test.js.snap diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/revert_to_basic.test.js.snap b/x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/revert_to_basic.test.js.snap similarity index 100% rename from x-pack/plugins/license_management/__jest__/__snapshots__/revert_to_basic.test.js.snap rename to x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/revert_to_basic.test.js.snap diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/start_trial.test.js.snap b/x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/start_trial.test.js.snap similarity index 100% rename from x-pack/plugins/license_management/__jest__/__snapshots__/start_trial.test.js.snap rename to x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/start_trial.test.js.snap diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/upload_license.test.tsx.snap b/x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/upload_license.test.tsx.snap similarity index 100% rename from x-pack/plugins/license_management/__jest__/__snapshots__/upload_license.test.tsx.snap rename to x-pack/platform/plugins/shared/license_management/__jest__/__snapshots__/upload_license.test.tsx.snap diff --git a/x-pack/plugins/license_management/__jest__/add_license.test.js b/x-pack/platform/plugins/shared/license_management/__jest__/add_license.test.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/add_license.test.js rename to x-pack/platform/plugins/shared/license_management/__jest__/add_license.test.js diff --git a/x-pack/plugins/license_management/__jest__/api_responses/index.js b/x-pack/platform/plugins/shared/license_management/__jest__/api_responses/index.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/api_responses/index.js rename to x-pack/platform/plugins/shared/license_management/__jest__/api_responses/index.js diff --git a/x-pack/plugins/license_management/__jest__/api_responses/upload_license.js b/x-pack/platform/plugins/shared/license_management/__jest__/api_responses/upload_license.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/api_responses/upload_license.js rename to x-pack/platform/plugins/shared/license_management/__jest__/api_responses/upload_license.js diff --git a/x-pack/plugins/license_management/__jest__/license_page_header.test.js b/x-pack/platform/plugins/shared/license_management/__jest__/license_page_header.test.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/license_page_header.test.js rename to x-pack/platform/plugins/shared/license_management/__jest__/license_page_header.test.js diff --git a/x-pack/plugins/license_management/__jest__/request_trial_extension.test.js b/x-pack/platform/plugins/shared/license_management/__jest__/request_trial_extension.test.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/request_trial_extension.test.js rename to x-pack/platform/plugins/shared/license_management/__jest__/request_trial_extension.test.js diff --git a/x-pack/plugins/license_management/__jest__/revert_to_basic.test.js b/x-pack/platform/plugins/shared/license_management/__jest__/revert_to_basic.test.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/revert_to_basic.test.js rename to x-pack/platform/plugins/shared/license_management/__jest__/revert_to_basic.test.js diff --git a/x-pack/plugins/license_management/__jest__/start_trial.test.js b/x-pack/platform/plugins/shared/license_management/__jest__/start_trial.test.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/start_trial.test.js rename to x-pack/platform/plugins/shared/license_management/__jest__/start_trial.test.js diff --git a/x-pack/plugins/license_management/__jest__/upload_license.test.tsx b/x-pack/platform/plugins/shared/license_management/__jest__/upload_license.test.tsx similarity index 100% rename from x-pack/plugins/license_management/__jest__/upload_license.test.tsx rename to x-pack/platform/plugins/shared/license_management/__jest__/upload_license.test.tsx diff --git a/x-pack/plugins/license_management/__jest__/util/index.js b/x-pack/platform/plugins/shared/license_management/__jest__/util/index.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/util/index.js rename to x-pack/platform/plugins/shared/license_management/__jest__/util/index.js diff --git a/x-pack/plugins/license_management/__jest__/util/util.js b/x-pack/platform/plugins/shared/license_management/__jest__/util/util.js similarity index 100% rename from x-pack/plugins/license_management/__jest__/util/util.js rename to x-pack/platform/plugins/shared/license_management/__jest__/util/util.js diff --git a/x-pack/plugins/license_management/__mocks__/focus-trap-react.js b/x-pack/platform/plugins/shared/license_management/__mocks__/focus-trap-react.js similarity index 100% rename from x-pack/plugins/license_management/__mocks__/focus-trap-react.js rename to x-pack/platform/plugins/shared/license_management/__mocks__/focus-trap-react.js diff --git a/x-pack/plugins/license_management/common/constants/base_path.ts b/x-pack/platform/plugins/shared/license_management/common/constants/base_path.ts similarity index 100% rename from x-pack/plugins/license_management/common/constants/base_path.ts rename to x-pack/platform/plugins/shared/license_management/common/constants/base_path.ts diff --git a/x-pack/plugins/license_management/common/constants/external_links.ts b/x-pack/platform/plugins/shared/license_management/common/constants/external_links.ts similarity index 100% rename from x-pack/plugins/license_management/common/constants/external_links.ts rename to x-pack/platform/plugins/shared/license_management/common/constants/external_links.ts diff --git a/x-pack/plugins/license_management/common/constants/index.ts b/x-pack/platform/plugins/shared/license_management/common/constants/index.ts similarity index 100% rename from x-pack/plugins/license_management/common/constants/index.ts rename to x-pack/platform/plugins/shared/license_management/common/constants/index.ts diff --git a/x-pack/plugins/license_management/common/constants/permissions.ts b/x-pack/platform/plugins/shared/license_management/common/constants/permissions.ts similarity index 100% rename from x-pack/plugins/license_management/common/constants/permissions.ts rename to x-pack/platform/plugins/shared/license_management/common/constants/permissions.ts diff --git a/x-pack/plugins/license_management/common/constants/plugin.ts b/x-pack/platform/plugins/shared/license_management/common/constants/plugin.ts similarity index 100% rename from x-pack/plugins/license_management/common/constants/plugin.ts rename to x-pack/platform/plugins/shared/license_management/common/constants/plugin.ts diff --git a/x-pack/platform/plugins/shared/license_management/jest.config.js b/x-pack/platform/plugins/shared/license_management/jest.config.js new file mode 100644 index 0000000000000..765ce55d2b948 --- /dev/null +++ b/x-pack/platform/plugins/shared/license_management/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/shared/license_management'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/shared/license_management', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/shared/license_management/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/license_management/kibana.jsonc b/x-pack/platform/plugins/shared/license_management/kibana.jsonc similarity index 100% rename from x-pack/plugins/license_management/kibana.jsonc rename to x-pack/platform/plugins/shared/license_management/kibana.jsonc diff --git a/x-pack/plugins/license_management/public/application/_license_management.scss b/x-pack/platform/plugins/shared/license_management/public/application/_license_management.scss similarity index 100% rename from x-pack/plugins/license_management/public/application/_license_management.scss rename to x-pack/platform/plugins/shared/license_management/public/application/_license_management.scss diff --git a/x-pack/plugins/license_management/public/application/app.container.js b/x-pack/platform/plugins/shared/license_management/public/application/app.container.js similarity index 100% rename from x-pack/plugins/license_management/public/application/app.container.js rename to x-pack/platform/plugins/shared/license_management/public/application/app.container.js diff --git a/x-pack/plugins/license_management/public/application/app.js b/x-pack/platform/plugins/shared/license_management/public/application/app.js similarity index 100% rename from x-pack/plugins/license_management/public/application/app.js rename to x-pack/platform/plugins/shared/license_management/public/application/app.js diff --git a/x-pack/plugins/license_management/public/application/app_context.tsx b/x-pack/platform/plugins/shared/license_management/public/application/app_context.tsx similarity index 100% rename from x-pack/plugins/license_management/public/application/app_context.tsx rename to x-pack/platform/plugins/shared/license_management/public/application/app_context.tsx diff --git a/x-pack/plugins/license_management/public/application/app_providers.tsx b/x-pack/platform/plugins/shared/license_management/public/application/app_providers.tsx similarity index 100% rename from x-pack/plugins/license_management/public/application/app_providers.tsx rename to x-pack/platform/plugins/shared/license_management/public/application/app_providers.tsx diff --git a/x-pack/plugins/license_management/public/application/breadcrumbs.ts b/x-pack/platform/plugins/shared/license_management/public/application/breadcrumbs.ts similarity index 100% rename from x-pack/plugins/license_management/public/application/breadcrumbs.ts rename to x-pack/platform/plugins/shared/license_management/public/application/breadcrumbs.ts diff --git a/x-pack/plugins/license_management/public/application/components/telemetry_opt_in/index.ts b/x-pack/platform/plugins/shared/license_management/public/application/components/telemetry_opt_in/index.ts similarity index 100% rename from x-pack/plugins/license_management/public/application/components/telemetry_opt_in/index.ts rename to x-pack/platform/plugins/shared/license_management/public/application/components/telemetry_opt_in/index.ts diff --git a/x-pack/plugins/license_management/public/application/components/telemetry_opt_in/telemetry_opt_in.tsx b/x-pack/platform/plugins/shared/license_management/public/application/components/telemetry_opt_in/telemetry_opt_in.tsx similarity index 100% rename from x-pack/plugins/license_management/public/application/components/telemetry_opt_in/telemetry_opt_in.tsx rename to x-pack/platform/plugins/shared/license_management/public/application/components/telemetry_opt_in/telemetry_opt_in.tsx diff --git a/x-pack/plugins/license_management/public/application/index.scss b/x-pack/platform/plugins/shared/license_management/public/application/index.scss similarity index 100% rename from x-pack/plugins/license_management/public/application/index.scss rename to x-pack/platform/plugins/shared/license_management/public/application/index.scss diff --git a/x-pack/plugins/license_management/public/application/index.tsx b/x-pack/platform/plugins/shared/license_management/public/application/index.tsx similarity index 100% rename from x-pack/plugins/license_management/public/application/index.tsx rename to x-pack/platform/plugins/shared/license_management/public/application/index.tsx diff --git a/x-pack/plugins/license_management/public/application/lib/es.ts b/x-pack/platform/plugins/shared/license_management/public/application/lib/es.ts similarity index 100% rename from x-pack/plugins/license_management/public/application/lib/es.ts rename to x-pack/platform/plugins/shared/license_management/public/application/lib/es.ts diff --git a/x-pack/plugins/license_management/public/application/lib/telemetry.ts b/x-pack/platform/plugins/shared/license_management/public/application/lib/telemetry.ts similarity index 100% rename from x-pack/plugins/license_management/public/application/lib/telemetry.ts rename to x-pack/platform/plugins/shared/license_management/public/application/lib/telemetry.ts diff --git a/x-pack/plugins/license_management/public/application/sections/index.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/index.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/add_license/add_license.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/add_license/add_license.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/add_license/add_license.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/add_license/add_license.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/add_license/index.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/add_license/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/add_license/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/add_license/index.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/index.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/index.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/license_dashboard.container.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_dashboard.container.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/license_dashboard.container.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_dashboard.container.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/license_dashboard.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_dashboard.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/license_dashboard.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_dashboard.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/license_page_header/index.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_page_header/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/license_page_header/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_page_header/index.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/license_page_header/license_page_header.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_page_header/license_page_header.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/license_page_header/license_page_header.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/license_page_header/license_page_header.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/request_trial_extension/index.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/request_trial_extension/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/request_trial_extension/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/request_trial_extension/index.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.container.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.container.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.container.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.container.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/request_trial_extension/request_trial_extension.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/revert_to_basic/index.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/revert_to_basic/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/revert_to_basic/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/revert_to_basic/index.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.container.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.container.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.container.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.container.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/revert_to_basic/revert_to_basic.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/start_trial/index.ts b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/start_trial/index.ts similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/start_trial/index.ts rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/start_trial/index.ts diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/start_trial/start_trial.container.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/start_trial/start_trial.container.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/start_trial/start_trial.container.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/start_trial/start_trial.container.js diff --git a/x-pack/plugins/license_management/public/application/sections/license_dashboard/start_trial/start_trial.tsx b/x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/start_trial/start_trial.tsx similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/license_dashboard/start_trial/start_trial.tsx rename to x-pack/platform/plugins/shared/license_management/public/application/sections/license_dashboard/start_trial/start_trial.tsx diff --git a/x-pack/plugins/license_management/public/application/sections/upload_license/index.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/upload_license/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/upload_license/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/upload_license/index.js diff --git a/x-pack/plugins/license_management/public/application/sections/upload_license/upload_license.container.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/upload_license/upload_license.container.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/upload_license/upload_license.container.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/upload_license/upload_license.container.js diff --git a/x-pack/plugins/license_management/public/application/sections/upload_license/upload_license.js b/x-pack/platform/plugins/shared/license_management/public/application/sections/upload_license/upload_license.js similarity index 100% rename from x-pack/plugins/license_management/public/application/sections/upload_license/upload_license.js rename to x-pack/platform/plugins/shared/license_management/public/application/sections/upload_license/upload_license.js diff --git a/x-pack/plugins/license_management/public/application/store/actions/add_error_message.js b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/add_error_message.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/add_error_message.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/add_error_message.js diff --git a/x-pack/plugins/license_management/public/application/store/actions/add_license.js b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/add_license.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/add_license.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/add_license.js diff --git a/x-pack/plugins/license_management/public/application/store/actions/index.js b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/index.js diff --git a/x-pack/plugins/license_management/public/application/store/actions/permissions.js b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/permissions.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/permissions.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/permissions.js diff --git a/x-pack/plugins/license_management/public/application/store/actions/set_breadcrumb.ts b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/set_breadcrumb.ts similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/set_breadcrumb.ts rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/set_breadcrumb.ts diff --git a/x-pack/plugins/license_management/public/application/store/actions/start_basic.js b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/start_basic.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/start_basic.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/start_basic.js diff --git a/x-pack/plugins/license_management/public/application/store/actions/start_trial.js b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/start_trial.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/start_trial.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/start_trial.js diff --git a/x-pack/plugins/license_management/public/application/store/actions/upload_license.js b/x-pack/platform/plugins/shared/license_management/public/application/store/actions/upload_license.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/actions/upload_license.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/actions/upload_license.js diff --git a/x-pack/plugins/license_management/public/application/store/index.js b/x-pack/platform/plugins/shared/license_management/public/application/store/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/index.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/index.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/index.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/index.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/index.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/license.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/license.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/license.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/license.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/license_management.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/license_management.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/license_management.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/license_management.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/permissions.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/permissions.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/permissions.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/permissions.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/start_basic_license_status.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/start_basic_license_status.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/start_basic_license_status.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/start_basic_license_status.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/trial_status.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/trial_status.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/trial_status.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/trial_status.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/upload_error_message.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/upload_error_message.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/upload_error_message.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/upload_error_message.js diff --git a/x-pack/plugins/license_management/public/application/store/reducers/upload_status.js b/x-pack/platform/plugins/shared/license_management/public/application/store/reducers/upload_status.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/reducers/upload_status.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/reducers/upload_status.js diff --git a/x-pack/plugins/license_management/public/application/store/store.js b/x-pack/platform/plugins/shared/license_management/public/application/store/store.js similarity index 100% rename from x-pack/plugins/license_management/public/application/store/store.js rename to x-pack/platform/plugins/shared/license_management/public/application/store/store.js diff --git a/x-pack/plugins/license_management/public/index.ts b/x-pack/platform/plugins/shared/license_management/public/index.ts similarity index 100% rename from x-pack/plugins/license_management/public/index.ts rename to x-pack/platform/plugins/shared/license_management/public/index.ts diff --git a/x-pack/plugins/license_management/public/locator.test.ts b/x-pack/platform/plugins/shared/license_management/public/locator.test.ts similarity index 100% rename from x-pack/plugins/license_management/public/locator.test.ts rename to x-pack/platform/plugins/shared/license_management/public/locator.test.ts diff --git a/x-pack/plugins/license_management/public/locator.ts b/x-pack/platform/plugins/shared/license_management/public/locator.ts similarity index 100% rename from x-pack/plugins/license_management/public/locator.ts rename to x-pack/platform/plugins/shared/license_management/public/locator.ts diff --git a/x-pack/plugins/license_management/public/plugin.ts b/x-pack/platform/plugins/shared/license_management/public/plugin.ts similarity index 100% rename from x-pack/plugins/license_management/public/plugin.ts rename to x-pack/platform/plugins/shared/license_management/public/plugin.ts diff --git a/x-pack/plugins/license_management/public/shared_imports.ts b/x-pack/platform/plugins/shared/license_management/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/license_management/public/shared_imports.ts rename to x-pack/platform/plugins/shared/license_management/public/shared_imports.ts diff --git a/x-pack/plugins/license_management/public/types.ts b/x-pack/platform/plugins/shared/license_management/public/types.ts similarity index 100% rename from x-pack/plugins/license_management/public/types.ts rename to x-pack/platform/plugins/shared/license_management/public/types.ts diff --git a/x-pack/plugins/license_management/server/config.ts b/x-pack/platform/plugins/shared/license_management/server/config.ts similarity index 100% rename from x-pack/plugins/license_management/server/config.ts rename to x-pack/platform/plugins/shared/license_management/server/config.ts diff --git a/x-pack/plugins/license_management/server/index.ts b/x-pack/platform/plugins/shared/license_management/server/index.ts similarity index 100% rename from x-pack/plugins/license_management/server/index.ts rename to x-pack/platform/plugins/shared/license_management/server/index.ts diff --git a/x-pack/plugins/license_management/server/lib/license.ts b/x-pack/platform/plugins/shared/license_management/server/lib/license.ts similarity index 100% rename from x-pack/plugins/license_management/server/lib/license.ts rename to x-pack/platform/plugins/shared/license_management/server/lib/license.ts diff --git a/x-pack/plugins/license_management/server/lib/permissions.ts b/x-pack/platform/plugins/shared/license_management/server/lib/permissions.ts similarity index 100% rename from x-pack/plugins/license_management/server/lib/permissions.ts rename to x-pack/platform/plugins/shared/license_management/server/lib/permissions.ts diff --git a/x-pack/plugins/license_management/server/lib/start_basic.ts b/x-pack/platform/plugins/shared/license_management/server/lib/start_basic.ts similarity index 100% rename from x-pack/plugins/license_management/server/lib/start_basic.ts rename to x-pack/platform/plugins/shared/license_management/server/lib/start_basic.ts diff --git a/x-pack/plugins/license_management/server/lib/start_trial.ts b/x-pack/platform/plugins/shared/license_management/server/lib/start_trial.ts similarity index 100% rename from x-pack/plugins/license_management/server/lib/start_trial.ts rename to x-pack/platform/plugins/shared/license_management/server/lib/start_trial.ts diff --git a/x-pack/plugins/license_management/server/plugin.ts b/x-pack/platform/plugins/shared/license_management/server/plugin.ts similarity index 100% rename from x-pack/plugins/license_management/server/plugin.ts rename to x-pack/platform/plugins/shared/license_management/server/plugin.ts diff --git a/x-pack/plugins/license_management/server/routes/api/license/index.ts b/x-pack/platform/plugins/shared/license_management/server/routes/api/license/index.ts similarity index 100% rename from x-pack/plugins/license_management/server/routes/api/license/index.ts rename to x-pack/platform/plugins/shared/license_management/server/routes/api/license/index.ts diff --git a/x-pack/plugins/license_management/server/routes/api/license/register_license_route.ts b/x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_license_route.ts similarity index 100% rename from x-pack/plugins/license_management/server/routes/api/license/register_license_route.ts rename to x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_license_route.ts diff --git a/x-pack/plugins/license_management/server/routes/api/license/register_permissions_route.ts b/x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_permissions_route.ts similarity index 100% rename from x-pack/plugins/license_management/server/routes/api/license/register_permissions_route.ts rename to x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_permissions_route.ts diff --git a/x-pack/plugins/license_management/server/routes/api/license/register_start_basic_route.ts b/x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_start_basic_route.ts similarity index 100% rename from x-pack/plugins/license_management/server/routes/api/license/register_start_basic_route.ts rename to x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_start_basic_route.ts diff --git a/x-pack/plugins/license_management/server/routes/api/license/register_start_trial_routes.ts b/x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_start_trial_routes.ts similarity index 100% rename from x-pack/plugins/license_management/server/routes/api/license/register_start_trial_routes.ts rename to x-pack/platform/plugins/shared/license_management/server/routes/api/license/register_start_trial_routes.ts diff --git a/x-pack/plugins/license_management/server/routes/helpers.ts b/x-pack/platform/plugins/shared/license_management/server/routes/helpers.ts similarity index 100% rename from x-pack/plugins/license_management/server/routes/helpers.ts rename to x-pack/platform/plugins/shared/license_management/server/routes/helpers.ts diff --git a/x-pack/plugins/license_management/server/routes/index.ts b/x-pack/platform/plugins/shared/license_management/server/routes/index.ts similarity index 100% rename from x-pack/plugins/license_management/server/routes/index.ts rename to x-pack/platform/plugins/shared/license_management/server/routes/index.ts diff --git a/x-pack/plugins/snapshot_restore/server/shared_imports.ts b/x-pack/platform/plugins/shared/license_management/server/shared_imports.ts similarity index 100% rename from x-pack/plugins/snapshot_restore/server/shared_imports.ts rename to x-pack/platform/plugins/shared/license_management/server/shared_imports.ts diff --git a/x-pack/plugins/license_management/server/types.ts b/x-pack/platform/plugins/shared/license_management/server/types.ts similarity index 100% rename from x-pack/plugins/license_management/server/types.ts rename to x-pack/platform/plugins/shared/license_management/server/types.ts diff --git a/x-pack/platform/plugins/shared/license_management/tsconfig.json b/x-pack/platform/plugins/shared/license_management/tsconfig.json new file mode 100644 index 0000000000000..053bd88b1912c --- /dev/null +++ b/x-pack/platform/plugins/shared/license_management/tsconfig.json @@ -0,0 +1,35 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "public/**/*", + "server/**/*", + "common/**/*", + "__jest__/**/*", + "__mocks__/*", + ], + "kbn_references": [ + "@kbn/core", + "@kbn/kibana-react-plugin", + "@kbn/telemetry-management-section-plugin", + "@kbn/management-plugin", + "@kbn/telemetry-plugin", + "@kbn/es-ui-shared-plugin", + "@kbn/licensing-plugin", + "@kbn/features-plugin", + "@kbn/security-plugin", + "@kbn/i18n-react", + "@kbn/i18n", + "@kbn/config-schema", + "@kbn/test-jest-helpers", + "@kbn/shared-ux-router", + "@kbn/utility-types", + "@kbn/share-plugin", + "@kbn/react-kibana-context-render", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/platform/plugins/shared/ml/common/types/management.ts b/x-pack/platform/plugins/shared/ml/common/types/management.ts index 51685435296d9..98d1fe166534d 100644 --- a/x-pack/platform/plugins/shared/ml/common/types/management.ts +++ b/x-pack/platform/plugins/shared/ml/common/types/management.ts @@ -29,7 +29,7 @@ export interface AnalyticsManagementItems { export interface TrainedModelsManagementItems { id: string; description: string; - state: estypes.MlDeploymentState | ''; + state: estypes.MlDeploymentAssignmentState | ''; type: Array<string | undefined>; spaces: string[]; } diff --git a/x-pack/platform/plugins/shared/ml/common/util/datafeed_utils.ts b/x-pack/platform/plugins/shared/ml/common/util/datafeed_utils.ts index 9f66ac143ffe1..31c526a8b1706 100644 --- a/x-pack/platform/plugins/shared/ml/common/util/datafeed_utils.ts +++ b/x-pack/platform/plugins/shared/ml/common/util/datafeed_utils.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { omit } from 'lodash'; import type { Aggregation, Datafeed } from '../types/anomaly_detection_jobs'; export function getAggregations<T>(obj: any): T | undefined { @@ -18,3 +19,10 @@ export const getDatafeedAggregations = ( ): Aggregation | undefined => { return getAggregations<Aggregation>(datafeedConfig); }; + +export function getIndicesOptions(datafeedConfig?: Datafeed) { + // remove ignore_throttled from indices_options to avoid deprecation warnings in the logs + return datafeedConfig?.indices_options + ? omit(datafeedConfig.indices_options, 'ignore_throttled') + : {}; +} diff --git a/x-pack/platform/plugins/shared/ml/public/application/components/model_snapshots/revert_model_snapshot_flyout/chart_loader.ts b/x-pack/platform/plugins/shared/ml/public/application/components/model_snapshots/revert_model_snapshot_flyout/chart_loader.ts index b18d3e444d73d..573b850fcd2a5 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/components/model_snapshots/revert_model_snapshot_flyout/chart_loader.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/components/model_snapshots/revert_model_snapshot_flyout/chart_loader.ts @@ -6,6 +6,7 @@ */ import { getSeverityType } from '@kbn/ml-anomaly-utils'; +import { getIndicesOptions } from '../../../../../common/util/datafeed_utils'; import type { MlResultsService } from '../../../services/results_service'; import type { CombinedJobWithStats } from '../../../../../common/types/anomaly_detection_jobs'; import type { Anomaly } from '../../../jobs/new_job/common/results_loader/results_loader'; @@ -32,7 +33,7 @@ export function chartLoaderProvider(mlResultsService: MlResultsService) { job.data_counts.latest_record_timestamp!, intervalMs, job.datafeed_config.runtime_mappings, - job.datafeed_config.indices_options + getIndicesOptions(job.datafeed_config) ); if (resp.error !== undefined) { throw resp.error; diff --git a/x-pack/platform/plugins/shared/ml/public/application/model_management/test_models/models/inference_base.ts b/x-pack/platform/plugins/shared/ml/public/application/model_management/test_models/models/inference_base.ts index b7ac57a5750a8..eee0a38e0731b 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/model_management/test_models/models/inference_base.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/model_management/test_models/models/inference_base.ts @@ -376,10 +376,10 @@ export abstract class InferenceBase<TInferResponse> { }; } - // @ts-expect-error error does not exist in type protected getDocFromResponse({ doc, error }: estypes.IngestSimulatePipelineSimulation) { if (doc === undefined) { if (error) { + // @ts-expect-error Error is now typed in estypes. However, I doubt that it doesn't get the HTTP wrapper expected. this.setFinishedWithErrors(error); throw Error(error.reason); } diff --git a/x-pack/platform/plugins/shared/ml/server/models/fields_service/fields_service.ts b/x-pack/platform/plugins/shared/ml/server/models/fields_service/fields_service.ts index 95e97ef01e3b3..f68a7b0c7560d 100644 --- a/x-pack/platform/plugins/shared/ml/server/models/fields_service/fields_service.ts +++ b/x-pack/platform/plugins/shared/ml/server/models/fields_service/fields_service.ts @@ -17,7 +17,7 @@ import { parseInterval } from '@kbn/ml-parse-interval'; import { initCardinalityFieldsCache } from './fields_aggs_cache'; import { isValidAggregationField } from '../../../common/util/validation_utils'; -import { getDatafeedAggregations } from '../../../common/util/datafeed_utils'; +import { getDatafeedAggregations, getIndicesOptions } from '../../../common/util/datafeed_utils'; import type { Datafeed, IndicesOptions } from '../../../common/types/anomaly_detection_jobs'; /** @@ -190,7 +190,7 @@ export function fieldsServiceProvider({ asCurrentUser }: IScopedClusterClient) { { index, body, - ...(datafeedConfig?.indices_options ?? {}), + ...getIndicesOptions(datafeedConfig), }, { maxRetries: 0 } ); @@ -418,7 +418,7 @@ export function fieldsServiceProvider({ asCurrentUser }: IScopedClusterClient) { { index, body, - ...(datafeedConfig?.indices_options ?? {}), + ...getIndicesOptions(datafeedConfig), }, { maxRetries: 0 } ); diff --git a/x-pack/platform/plugins/shared/ml/server/models/job_validation/job_validation.ts b/x-pack/platform/plugins/shared/ml/server/models/job_validation/job_validation.ts index fff24e7730f18..a44083df9f9f4 100644 --- a/x-pack/platform/plugins/shared/ml/server/models/job_validation/job_validation.ts +++ b/x-pack/platform/plugins/shared/ml/server/models/job_validation/job_validation.ts @@ -25,7 +25,7 @@ import { validateTimeRange, isValidTimeField } from './validate_time_range'; import type { validateJobSchema } from '../../routes/schemas/job_validation_schema'; import type { CombinedJob } from '../../../common/types/anomaly_detection_jobs'; import type { MlClient } from '../../lib/ml_client'; -import { getDatafeedAggregations } from '../../../common/util/datafeed_utils'; +import { getDatafeedAggregations, getIndicesOptions } from '../../../common/util/datafeed_utils'; import type { AuthorizationHeader } from '../../lib/request_authorization'; export type ValidateJobPayload = TypeOf<typeof validateJobSchema>; @@ -74,7 +74,7 @@ export async function validateJob( timeField, job.datafeed_config.query, job.datafeed_config.runtime_mappings, - job.datafeed_config.indices_options + getIndicesOptions(job.datafeed_config) ); } diff --git a/x-pack/platform/plugins/shared/ml/server/models/results_service/results_service.ts b/x-pack/platform/plugins/shared/ml/server/models/results_service/results_service.ts index bbf9c4def4722..a0a11bfcc912c 100644 --- a/x-pack/platform/plugins/shared/ml/server/models/results_service/results_service.ts +++ b/x-pack/platform/plugins/shared/ml/server/models/results_service/results_service.ts @@ -19,6 +19,7 @@ import { ML_JOB_ID, ML_PARTITION_FIELD_VALUE, } from '@kbn/ml-anomaly-utils'; +import { getIndicesOptions } from '../../../common/util/datafeed_utils'; import { buildAnomalyTableItems } from './build_anomaly_table_items'; import { ANOMALIES_TABLE_DEFAULT_QUERY_SIZE } from '../../../common/constants/search'; import { getPartitionFieldsValuesFactory } from './get_partition_fields_values'; @@ -727,7 +728,7 @@ export function resultsServiceProvider(mlClient: MlClient, client?: IScopedClust }, size: 0, }, - ...(datafeedConfig?.indices_options ?? {}), + ...getIndicesOptions(datafeedConfig), }; if (client) { diff --git a/x-pack/plugins/observability_solution/exploratory_view/.storybook/jest_setup.js b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook/jest_setup.js similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/.storybook/jest_setup.js rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook/jest_setup.js diff --git a/x-pack/plugins/observability_solution/exploratory_view/.storybook/main.js b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook/main.js similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/.storybook/main.js rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook/main.js diff --git a/x-pack/plugins/observability_solution/exploratory_view/.storybook/preview.js b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook/preview.js similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/.storybook/preview.js rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook/preview.js diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/README.md b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/README.md similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/README.md rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/README.md diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/TRACING.md b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/TRACING.md similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/TRACING.md rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/TRACING.md diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/capabilities.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/capabilities.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/capabilities.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/capabilities.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/connectors.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/connectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/connectors.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/connectors.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/conversation_complete.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/conversation_complete.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/convert_messages_for_inference.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/convert_messages_for_inference.ts similarity index 98% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/convert_messages_for_inference.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/convert_messages_for_inference.ts index 974b002ea93c6..229183ed142a7 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/common/convert_messages_for_inference.ts +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/convert_messages_for_inference.ts @@ -52,6 +52,7 @@ export function convertMessagesForInference(messages: Message[]): InferenceMessa } inferenceMessages.push({ + name: message.message.name!, role: InferenceMessageRole.Tool, response: JSON.parse(message.message.content ?? '{}'), toolCallId: toolCallRequest.toolCalls![0].toolCallId, diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/feature.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/feature.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/feature.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/feature.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/function_visibility.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/types.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/types.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/functions/visualize_esql.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/rule_connector.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/rule_connector.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/rule_connector.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/rule_connector.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/types.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/ui_settings/settings_keys.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/concatenate_chat_completion_chunks.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_request_message.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/create_function_response_message.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/emit_with_concatenated_message.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/emit_with_concatenated_message.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/emit_with_concatenated_message.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/emit_with_concatenated_message.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/filter_function_definitions.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/filter_function_definitions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/filter_function_definitions.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/filter_function_definitions.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/calculate_auto.js b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/calculate_auto.js similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/calculate_auto.js rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/calculate_auto.js diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/index.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/index.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/unit_to_seconds.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/unit_to_seconds.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_bucket_size/unit_to_seconds.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/unit_to_seconds.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/short_id_table.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/throw_serialized_chat_completion_errors.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/throw_serialized_chat_completion_errors.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/throw_serialized_chat_completion_errors.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/throw_serialized_chat_completion_errors.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/until_aborted.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/until_aborted.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/until_aborted.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/until_aborted.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/with_token_budget.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/with_token_budget.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/with_token_budget.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/with_token_budget.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/with_token_budget.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/with_token_budget.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/with_token_budget.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/with_token_budget.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/without_token_count_events.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/without_token_count_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/without_token_count_events.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common/utils/without_token_count_events.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/jest.config.js b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/jest.config.js new file mode 100644 index 0000000000000..4ff20cb91d531 --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/jest.config.js @@ -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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: [ + '<rootDir>/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public', + '<rootDir>/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/common', + '<rootDir>/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server', + ], + setupFiles: [ + '<rootDir>/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/.storybook/jest_setup.js', + ], + collectCoverage: true, + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/{common,public,server}/**/*.{js,ts,tsx}', + ], + + coverageReporters: ['html'], +}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/kibana.jsonc b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/kibana.jsonc rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/chat_feedback.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/chat_feedback.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/chat_feedback.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/chat_feedback.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/common.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/common.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/common.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_feedback.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_feedback.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_feedback.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_feedback.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_response.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_response.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_response.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/insight_response.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/user_sent_prompt.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/user_sent_prompt.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/schemas/user_sent_prompt.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/schemas/user_sent_prompt.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/telemetry_event_type.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/telemetry_event_type.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/analytics/telemetry_event_type.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/analytics/telemetry_event_type.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/api/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/api/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/api/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/api/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/assets/elastic_ai_assistant.png b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/assets/elastic_ai_assistant.png similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/assets/elastic_ai_assistant.png rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/assets/elastic_ai_assistant.png diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/assets/illustration.png b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/assets/illustration.png similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/assets/illustration.png rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/assets/illustration.png diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/assets/illustration.svg b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/assets/illustration.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/assets/illustration.svg rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/assets/illustration.svg diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/assistant_avatar.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/assistant_avatar.stories.tsx diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx new file mode 100644 index 0000000000000..083b97748bf7c --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx @@ -0,0 +1,49 @@ +/* + * 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 { useEuiTheme } from '@elastic/eui'; +import React, { ReactNode } from 'react'; + +export interface AssistantAvatarProps { + size?: keyof typeof sizeMap; + children?: ReactNode; + css?: React.SVGProps<SVGElement>['css']; + className?: string; +} + +export const sizeMap = { + xl: 64, + l: 48, + m: 32, + s: 24, + xs: 16, +}; + +/** @deprecated This component will soon be replaced by `AssistantIcon` from `@kbn/ai-assistant-icon`. */ +export function AssistantAvatar({ size = 's', css, className }: AssistantAvatarProps) { + const { euiTheme } = useEuiTheme(); + const sizePx = sizeMap[size]; + + return ( + <svg + xmlns="http://www.w3.org/2000/svg" + width={sizePx} + height={sizePx} + viewBox="0 0 64 64" + fill="none" + css={css} + className={className} + > + <path fill="#F04E98" d="M36 28h24v36H36V28Z" /> + <path fill="#00BFB3" d="M4 46c0-9.941 8.059-18 18-18h6v36h-6c-9.941 0-18-8.059-18-18Z" /> + <path + fill={euiTheme.colors.textParagraph} + d="M60 12c0 6.627-5.373 12-12 12s-12-5.373-12-12S41.373 0 48 0s12 5.373 12 12Z" + /> + <path fill="#FA744E" d="M6 23C6 10.85 15.85 1 28 1v22H6Z" /> + </svg> + ); +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/feedback_buttons.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/regenerate_response_button.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/start_chat_button.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/buttons/stop_generating_button.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/chat_item_controls.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/chat/types.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/chat/types.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/actions_menu.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/actions_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/actions_menu.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/actions_menu.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight_base.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight_base.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight_base.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight_base.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight_base.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight_base.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight_base.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight_base.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight_error.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/insight/insight_error.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/insight/insight_error.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/esql_code_block.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/failed_to_load_response.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/failed_to_load_response.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/failed_to_load_response.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/failed_to_load_response.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.stories.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.stories.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_panel.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx similarity index 96% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx index 85fa0f4609903..a473e34ba2a0c 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/message_panel/message_text.tsx @@ -156,7 +156,14 @@ export function MessageText({ loading, content, onActionClick }: Props) { }, table: (props) => ( <> - <EuiTable {...props} /> + <EuiTable + {...props} + className={css` + .euiTableCellContent__text { + white-space: normal; + } + `} + /> <EuiSpacer size="m" /> </> ), diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/missing_credentials_callout.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/missing_credentials_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/components/missing_credentials_callout.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/components/missing_credentials_callout.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_chat_service_context.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_chat_service_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_chat_service_context.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_chat_service_context.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_multipane_flyout_context.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_multipane_flyout_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_multipane_flyout_context.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_multipane_flyout_context.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_provider.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_provider.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_provider.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/context/observability_ai_assistant_provider.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_abortable_async.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_chat.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_flyout_state.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_flyout_state.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_flyout_state.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_flyout_state.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_genai_connectors.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_kibana.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_kibana.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_kibana.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant_chat_service.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant_chat_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant_chat_service.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_observability_ai_assistant_chat_service.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_once.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_once.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/hooks/use_once.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/hooks/use_once.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/mock.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/mock.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/mock.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/mock.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/plugin.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/plugin.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/plugin.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/plugin.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/complete.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/complete.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/service/complete.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/complete.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/complete.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/complete.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/service/complete.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/complete.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_chat_service.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_chat_service.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_chat_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_chat_service.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_chat_service.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_mock_chat_service.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_mock_chat_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_mock_chat_service.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_mock_chat_service.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_service.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/service/create_service.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/create_service.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/service/default_starter_prompts.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/default_starter_prompts.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/service/default_starter_prompts.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/service/default_starter_prompts.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/storybook_mock.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/storybook_mock.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/storybook_mock.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/storybook_mock.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/types.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/builders.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/builders.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/builders.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/builders.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_function_response_error.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_function_response_error.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_function_response_error.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_function_response_error.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/create_screen_context_action.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/get_connectors_management_href.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/get_connectors_management_href.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/get_connectors_management_href.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/get_connectors_management_href.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/get_contextual_insight_messages.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/get_contextual_insight_messages.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/get_contextual_insight_messages.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/get_contextual_insight_messages.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/get_models_management_href.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/get_models_management_href.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/get_models_management_href.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/get_models_management_href.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/readable_stream_reader_into_observable.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/readable_stream_reader_into_observable.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/readable_stream_reader_into_observable.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/readable_stream_reader_into_observable.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/storybook_decorator.tsx b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/storybook_decorator.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/public/utils/storybook_decorator.tsx rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/public/utils/storybook_decorator.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/analytics/recall_ranking.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/analytics/recall_ranking.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/analytics/recall_ranking.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/analytics/recall_ranking.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/config.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/config.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/config.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/context.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/context.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/context.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/context.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/elasticsearch.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/elasticsearch.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/elasticsearch.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/elasticsearch.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/execute_connector.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/execute_connector.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/execute_connector.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/execute_connector.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/get_relevant_field_names.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/get_relevant_field_names.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/get_relevant_field_names.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/get_relevant_field_names.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/get_dataset_info/index.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/index.ts new file mode 100644 index 0000000000000..244c867e7f644 --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/index.ts @@ -0,0 +1,153 @@ +/* + * 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 dedent from 'dedent'; +import { CONTEXT_FUNCTION_NAME, registerContextFunction } from './context'; +import { registerSummarizationFunction, SUMMARIZE_FUNCTION_NAME } from './summarize'; +import type { RegistrationCallback } from '../service/types'; +import { registerElasticsearchFunction } from './elasticsearch'; +import { GET_DATASET_INFO_FUNCTION_NAME, registerGetDatasetInfoFunction } from './get_dataset_info'; +import { registerKibanaFunction } from './kibana'; +import { registerExecuteConnectorFunction } from './execute_connector'; +import { GET_DATA_ON_SCREEN_FUNCTION_NAME } from '../service/chat_function_client'; + +// cannot be imported from x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/index.ts due to circular dependency +export const QUERY_FUNCTION_NAME = 'query'; + +export type FunctionRegistrationParameters = Omit< + Parameters<RegistrationCallback>[0], + 'registerContext' | 'hasFunction' +>; + +export const registerFunctions: RegistrationCallback = async ({ + client, + functions, + resources, + signal, + scopes, +}) => { + const registrationParameters: FunctionRegistrationParameters = { + client, + functions, + resources, + signal, + scopes, + }; + + const isServerless = !!resources.plugins.serverless; + if (scopes.includes('observability')) { + functions.registerInstruction(`You are a helpful assistant for Elastic Observability. Your goal is to help the Elastic Observability users to quickly assess what is happening in their observed systems. You can help them visualise and analyze data, investigate their systems, perform root cause analysis or identify optimisation opportunities. + + It's very important to not assume what the user is meaning. Ask them for clarification if needed. + + If you are unsure about which function should be used and with what arguments, ask the user for clarification or confirmation. + + In KQL ("kqlFilter")) escaping happens with double quotes, not single quotes. Some characters that need escaping are: ':()\\\ + /\". Always put a field value in double quotes. Best: service.name:\"opbeans-go\". Wrong: service.name:opbeans-go. This is very important! + + You can use Github-flavored Markdown in your responses. If a function returns an array, consider using a Markdown table to format the response. + + Note that ES|QL (the Elasticsearch Query Language which is a new piped language) is the preferred query language. + + If you want to call a function or tool, only call it a single time per message. Wait until the function has been executed and its results + returned to you, before executing the same tool or another tool again if needed. + + DO NOT UNDER ANY CIRCUMSTANCES USE ES|QL syntax (\`service.name == "foo"\`) with "kqlFilter" (\`service.name:"foo"\`). + + The user is able to change the language which they want you to reply in on the settings page of the AI Assistant for Observability and Search, which can be found in the ${ + isServerless ? `Project settings.` : `Stack Management app under the option AI Assistants` + }. + If the user asks how to change the language, reply in the same language the user asked in.`); + } + + if (scopes.length === 0 || (scopes.length === 1 && scopes[0] === 'all')) { + functions.registerInstruction( + `You are a helpful assistant for Elasticsearch. Your goal is to help Elasticsearch users accomplish tasks using Kibana and Elasticsearch. You can help them construct queries, index data, search data, use Elasticsearch APIs, generate sample data, visualise and analyze data. + + It's very important to not assume what the user means. Ask them for clarification if needed. + + If you are unsure about which function should be used and with what arguments, ask the user for clarification or confirmation. + + In KQL ("kqlFilter")) escaping happens with double quotes, not single quotes. Some characters that need escaping are: ':()\\\ + /\". Always put a field value in double quotes. Best: service.name:\"opbeans-go\". Wrong: service.name:opbeans-go. This is very important! + + You can use Github-flavored Markdown in your responses. If a function returns an array, consider using a Markdown table to format the response. + + If you want to call a function or tool, only call it a single time per message. Wait until the function has been executed and its results + returned to you, before executing the same tool or another tool again if needed. + + The user is able to change the language which they want you to reply in on the settings page of the AI Assistant for Observability and Search, which can be found in the ${ + isServerless ? `Project settings.` : `Stack Management app under the option AI Assistants` + }. + If the user asks how to change the language, reply in the same language the user asked in.` + ); + } + + const { ready: isKnowledgeBaseReady } = await client.getKnowledgeBaseStatus(); + + functions.registerInstruction(({ availableFunctionNames }) => { + const instructions: string[] = []; + + if ( + availableFunctionNames.includes(QUERY_FUNCTION_NAME) && + availableFunctionNames.includes(GET_DATASET_INFO_FUNCTION_NAME) + ) { + instructions.push(`You MUST use the "${GET_DATASET_INFO_FUNCTION_NAME}" ${ + functions.hasFunction('get_apm_dataset_info') ? 'or the get_apm_dataset_info' : '' + } function before calling the "${QUERY_FUNCTION_NAME}" or the "changes" functions. + + If a function requires an index, you MUST use the results from the dataset info functions.`); + } + + if (availableFunctionNames.includes(GET_DATA_ON_SCREEN_FUNCTION_NAME)) { + instructions.push(`You have access to data on the screen by calling the "${GET_DATA_ON_SCREEN_FUNCTION_NAME}" function. + Use it to help the user understand what they are looking at. A short summary of what they are looking at is available in the return of the "${CONTEXT_FUNCTION_NAME}" function. + Data that is compact enough automatically gets included in the response for the "${CONTEXT_FUNCTION_NAME}" function.`); + } + + if (isKnowledgeBaseReady) { + if (availableFunctionNames.includes(SUMMARIZE_FUNCTION_NAME)) { + instructions.push(`You can use the "${SUMMARIZE_FUNCTION_NAME}" function to store new information you have learned in a knowledge database. + Only use this function when the user asks for it. + All summaries MUST be created in English, even if the conversation was carried out in a different language.`); + } + + if (availableFunctionNames.includes(CONTEXT_FUNCTION_NAME)) { + instructions.push( + `Additionally, you can use the "${CONTEXT_FUNCTION_NAME}" function to retrieve relevant information from the knowledge database.` + ); + } + } else { + instructions.push( + `You do not have a working memory. If the user expects you to remember the previous conversations, tell them they can set up the knowledge base.` + ); + } + return instructions.map((instruction) => dedent(instruction)); + }); + + if (isKnowledgeBaseReady) { + registerSummarizationFunction(registrationParameters); + } + + registerContextFunction({ ...registrationParameters, isKnowledgeBaseReady }); + + registerElasticsearchFunction(registrationParameters); + const request = registrationParameters.resources.request; + + if ('id' in request) { + registerKibanaFunction({ + ...registrationParameters, + resources: { + ...registrationParameters.resources, + request, + }, + }); + } + registerGetDatasetInfoFunction(registrationParameters); + + registerExecuteConnectorFunction(registrationParameters); +}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/kibana.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/kibana.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/kibana.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/kibana.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/summarize.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/summarize.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/summarize.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/functions/summarize.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/index.ts new file mode 100644 index 0000000000000..b84234164f8c8 --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/index.ts @@ -0,0 +1,62 @@ +/* + * 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 { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; + +import type { ObservabilityAIAssistantConfig } from './config'; + +export type { ObservabilityAIAssistantServerRouteRepository } from './routes/get_global_observability_ai_assistant_route_repository'; + +import { config as configSchema } from './config'; +export type { RegistrationCallback } from './service/types'; +export type { + ObservabilityAIAssistantServerStart, + ObservabilityAIAssistantServerSetup, +} from './types'; + +export type { ObservabilityAIAssistantClient } from './service/client'; + +export { + aiAssistantLogsIndexPattern, + aiAssistantSimulatedFunctionCalling, + aiAssistantSearchConnectorIndexPattern, +} from '../common'; + +export { streamIntoObservable } from './service/util/stream_into_observable'; + +export { createFunctionRequestMessage } from '../common/utils/create_function_request_message'; +export { createFunctionResponseMessage } from '../common/utils/create_function_response_message'; + +export const config: PluginConfigDescriptor<ObservabilityAIAssistantConfig> = { + deprecations: ({ unusedFromRoot }) => [ + unusedFromRoot('xpack.observability.aiAssistant.enabled', { + level: 'warning', + }), + unusedFromRoot('xpack.observability.aiAssistant.provider.azureOpenAI.deploymentId', { + level: 'warning', + }), + unusedFromRoot('xpack.observability.aiAssistant.provider.azureOpenAI.resourceName', { + level: 'warning', + }), + unusedFromRoot('xpack.observability.aiAssistant.provider.azureOpenAI.apiKey', { + level: 'warning', + }), + unusedFromRoot('xpack.observability.aiAssistant.provider.openAI.apiKey', { + level: 'warning', + }), + unusedFromRoot('xpack.observability.aiAssistant.provider.openAI.model', { + level: 'warning', + }), + ], + exposeToBrowser: { scope: true }, + schema: configSchema, +}; + +export const plugin = async (ctx: PluginInitializerContext<ObservabilityAIAssistantConfig>) => { + const { ObservabilityAIAssistantPlugin } = await import('./plugin'); + return new ObservabilityAIAssistantPlugin(ctx); +}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/plugin.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/plugin.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/plugin.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/chat/route.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/chat/route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/chat/route.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/chat/route.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/connectors/route.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/connectors/route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/connectors/route.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/connectors/route.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/conversations/route.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/conversations/route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/conversations/route.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/conversations/route.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/create_observability_ai_assistant_server_route.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/create_observability_ai_assistant_server_route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/create_observability_ai_assistant_server_route.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/create_observability_ai_assistant_server_route.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/functions/route.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/functions/route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/functions/route.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/functions/route.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/knowledge_base/route.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/knowledge_base/route.ts new file mode 100644 index 0000000000000..6aa63c177c746 --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/knowledge_base/route.ts @@ -0,0 +1,331 @@ +/* + * 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 pLimit from 'p-limit'; +import { notImplemented } from '@hapi/boom'; +import { nonEmptyStringRt, toBooleanRt } from '@kbn/io-ts-utils'; +import * as t from 'io-ts'; +import { + InferenceInferenceEndpointInfo, + MlDeploymentAllocationState, + MlDeploymentAssignmentState, +} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import moment from 'moment'; +import { createObservabilityAIAssistantServerRoute } from '../create_observability_ai_assistant_server_route'; +import { Instruction, KnowledgeBaseEntry, KnowledgeBaseEntryRole } from '../../../common/types'; + +const getKnowledgeBaseStatus = createObservabilityAIAssistantServerRoute({ + endpoint: 'GET /internal/observability_ai_assistant/kb/status', + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async ({ + service, + request, + }): Promise<{ + errorMessage?: string; + ready: boolean; + enabled: boolean; + endpoint?: Partial<InferenceInferenceEndpointInfo>; + model_stats?: { + deployment_state: MlDeploymentAssignmentState | undefined; + allocation_state: MlDeploymentAllocationState | undefined; + }; + }> => { + const client = await service.getClient({ request }); + + if (!client) { + throw notImplemented(); + } + + return client.getKnowledgeBaseStatus(); + }, +}); + +const setupKnowledgeBase = createObservabilityAIAssistantServerRoute({ + endpoint: 'POST /internal/observability_ai_assistant/kb/setup', + params: t.partial({ + query: t.partial({ + model_id: t.string, + }), + }), + options: { + timeout: { + idleSocket: moment.duration(20, 'minutes').asMilliseconds(), + }, + }, + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise<InferenceInferenceEndpointInfo> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + const { model_id: modelId } = resources.params?.query ?? {}; + + return await client.setupKnowledgeBase(modelId); + }, +}); + +const resetKnowledgeBase = createObservabilityAIAssistantServerRoute({ + endpoint: 'POST /internal/observability_ai_assistant/kb/reset', + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise<{ result: string }> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + await client.resetKnowledgeBase(); + + return { result: 'success' }; + }, +}); + +const semanticTextMigrationKnowledgeBase = createObservabilityAIAssistantServerRoute({ + endpoint: 'POST /internal/observability_ai_assistant/kb/semantic_text_migration', + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise<void> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + return client.migrateKnowledgeBaseToSemanticText(); + }, +}); + +const getKnowledgeBaseUserInstructions = createObservabilityAIAssistantServerRoute({ + endpoint: 'GET /internal/observability_ai_assistant/kb/user_instructions', + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async ( + resources + ): Promise<{ + userInstructions: Array<Instruction & { public?: boolean }>; + }> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + return { + userInstructions: await client.getKnowledgeBaseUserInstructions(), + }; + }, +}); + +const saveKnowledgeBaseUserInstruction = createObservabilityAIAssistantServerRoute({ + endpoint: 'PUT /internal/observability_ai_assistant/kb/user_instructions', + params: t.type({ + body: t.type({ + id: t.string, + text: t.string, + public: toBooleanRt, + }), + }), + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise<void> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + const { id, text, public: isPublic } = resources.params.body; + return client.addUserInstruction({ + entry: { id, text, public: isPublic }, + }); + }, +}); + +const getKnowledgeBaseEntries = createObservabilityAIAssistantServerRoute({ + endpoint: 'GET /internal/observability_ai_assistant/kb/entries', + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + params: t.type({ + query: t.type({ + query: t.string, + sortBy: t.string, + sortDirection: t.union([t.literal('asc'), t.literal('desc')]), + }), + }), + handler: async ( + resources + ): Promise<{ + entries: KnowledgeBaseEntry[]; + }> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + const { query, sortBy, sortDirection } = resources.params.query; + + return await client.getKnowledgeBaseEntries({ query, sortBy, sortDirection }); + }, +}); + +const knowledgeBaseEntryRt = t.intersection([ + t.type({ + id: t.string, + title: t.string, + text: nonEmptyStringRt, + }), + t.partial({ + confidence: t.union([t.literal('low'), t.literal('medium'), t.literal('high')]), + is_correction: toBooleanRt, + public: toBooleanRt, + labels: t.record(t.string, t.string), + role: t.union([ + t.literal(KnowledgeBaseEntryRole.AssistantSummarization), + t.literal(KnowledgeBaseEntryRole.UserEntry), + t.literal(KnowledgeBaseEntryRole.Elastic), + ]), + }), +]); + +const saveKnowledgeBaseEntry = createObservabilityAIAssistantServerRoute({ + endpoint: 'POST /internal/observability_ai_assistant/kb/entries/save', + params: t.type({ + body: knowledgeBaseEntryRt, + }), + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise<void> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + const entry = resources.params.body; + return client.addKnowledgeBaseEntry({ + entry: { + confidence: 'high', + is_correction: false, + public: true, + labels: {}, + role: KnowledgeBaseEntryRole.UserEntry, + ...entry, + }, + }); + }, +}); + +const deleteKnowledgeBaseEntry = createObservabilityAIAssistantServerRoute({ + endpoint: 'DELETE /internal/observability_ai_assistant/kb/entries/{entryId}', + params: t.type({ + path: t.type({ + entryId: t.string, + }), + }), + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise<void> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + return client.deleteKnowledgeBaseEntry(resources.params.path.entryId); + }, +}); + +const importKnowledgeBaseEntries = createObservabilityAIAssistantServerRoute({ + endpoint: 'POST /internal/observability_ai_assistant/kb/entries/import', + params: t.type({ + body: t.type({ + entries: t.array(knowledgeBaseEntryRt), + }), + }), + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise<void> => { + const client = await resources.service.getClient({ request: resources.request }); + + if (!client) { + throw notImplemented(); + } + + const { ready } = await client.getKnowledgeBaseStatus(); + if (!ready) { + throw new Error('Knowledge base is not ready'); + } + + const limiter = pLimit(5); + + const promises = resources.params.body.entries.map(async (entry) => { + return limiter(async () => { + return client.addKnowledgeBaseEntry({ + entry: { + confidence: 'high', + is_correction: false, + public: true, + labels: {}, + role: KnowledgeBaseEntryRole.UserEntry, + ...entry, + }, + }); + }); + }); + + await Promise.all(promises); + }, +}); + +export const knowledgeBaseRoutes = { + ...semanticTextMigrationKnowledgeBase, + ...setupKnowledgeBase, + ...resetKnowledgeBase, + ...getKnowledgeBaseStatus, + ...getKnowledgeBaseEntries, + ...saveKnowledgeBaseUserInstruction, + ...importKnowledgeBaseEntries, + ...getKnowledgeBaseUserInstructions, + ...saveKnowledgeBaseEntry, + ...deleteKnowledgeBaseEntry, +}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/register_routes.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/register_routes.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/register_routes.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/register_routes.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/runtime_types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/runtime_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/runtime_types.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/runtime_types.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/types.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/routes/types.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/chat_function_client/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/get_context_function_request_if_needed.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/get_context_function_request_if_needed.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/get_context_function_request_if_needed.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/get_context_function_request_if_needed.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.test.ts new file mode 100644 index 0000000000000..199a6d8f1cbca --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.test.ts @@ -0,0 +1,1685 @@ +/* + * 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 { ActionsClient } from '@kbn/actions-plugin/server/actions_client'; +import type { CoreSetup, ElasticsearchClient, IUiSettingsClient, Logger } from '@kbn/core/server'; +import type { DeeplyMockedKeys } from '@kbn/utility-types-jest'; +import { waitFor } from '@testing-library/react'; +import { last, merge, repeat } from 'lodash'; +import { Subject, Observable } from 'rxjs'; +import { EventEmitter, type Readable } from 'stream'; +import { finished } from 'stream/promises'; +import { ObservabilityAIAssistantClient } from '.'; +import { MessageRole, type Message } from '../../../common'; +import { + ChatCompletionChunkEvent, + MessageAddEvent, + StreamingChatResponseEventType, +} from '../../../common/conversation_complete'; +import { ChatCompletionEventType as InferenceChatCompletionEventType } from '@kbn/inference-common'; +import { InferenceClient } from '@kbn/inference-plugin/server'; +import { createFunctionResponseMessage } from '../../../common/utils/create_function_response_message'; +import { CONTEXT_FUNCTION_NAME } from '../../functions/context'; +import { ChatFunctionClient } from '../chat_function_client'; +import type { KnowledgeBaseService } from '../knowledge_base_service'; +import { observableIntoStream } from '../util/observable_into_stream'; +import type { ObservabilityAIAssistantConfig } from '../../config'; +import type { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; + +interface ChunkDelta { + content?: string | undefined; + function_call?: + | { + name?: string | undefined; + arguments?: string | undefined; + } + | undefined; +} + +type LlmSimulator = ReturnType<typeof createLlmSimulator>; + +const EXPECTED_STORED_SYSTEM_MESSAGE = `system`; + +const nextTick = () => { + return new Promise(process.nextTick); +}; + +const waitForNextWrite = async (stream: Readable): Promise<any> => { + // this will fire before the client's internal write() promise is + // resolved + const response = await new Promise((resolve) => stream.once('data', resolve)); + // so we wait another tick to let the client move to the next step + await nextTick(); + + return response; +}; + +function createLlmSimulator(subscriber: any) { + return { + next: async (msg: ChunkDelta) => { + subscriber.next({ + type: InferenceChatCompletionEventType.ChatCompletionMessage, + content: msg.content, + toolCalls: msg.function_call ? [{ function: msg.function_call }] : [], + }); + }, + tokenCount: async ({ + completion, + prompt, + total, + }: { + completion: number; + prompt: number; + total: number; + }) => { + subscriber.next({ + type: InferenceChatCompletionEventType.ChatCompletionTokenCount, + tokens: { completion, prompt, total }, + }); + subscriber.complete(); + }, + chunk: async (msg: ChunkDelta) => { + subscriber.next({ + type: InferenceChatCompletionEventType.ChatCompletionChunk, + content: msg.content, + tool_calls: msg.function_call ? [{ function: msg.function_call }] : [], + }); + }, + complete: async () => { + subscriber.complete(); + }, + error: (error: Error) => { + subscriber.error(error); + }, + }; +} + +describe('Observability AI Assistant client', () => { + let client: ObservabilityAIAssistantClient; + + const actionsClientMock: DeeplyMockedKeys<ActionsClient> = { + execute: jest.fn(), + get: jest.fn(), + } as any; + + const inferenceClientMock: DeeplyMockedKeys<InferenceClient> = { + chatComplete: jest.fn(), + } as any; + + const uiSettingsClientMock: DeeplyMockedKeys<IUiSettingsClient> = { + get: jest.fn(), + } as any; + + const internalUserEsClientMock: DeeplyMockedKeys<ElasticsearchClient> = { + search: jest.fn(), + index: jest.fn(), + update: jest.fn(), + } as any; + + const currentUserEsClientMock: DeeplyMockedKeys<ElasticsearchClient> = { + search: jest.fn(), + fieldCaps: jest.fn(), + } as any; + + const knowledgeBaseServiceMock: DeeplyMockedKeys<KnowledgeBaseService> = { + recall: jest.fn(), + getUserInstructions: jest.fn(), + } as any; + + let loggerMock: DeeplyMockedKeys<Logger> = {} as any; + + const functionClientMock: DeeplyMockedKeys<ChatFunctionClient> = { + executeFunction: jest.fn(), + getFunctions: jest.fn(), + hasFunction: jest.fn(), + hasAction: jest.fn(), + getActions: jest.fn(), + validate: jest.fn(), + getInstructions: jest.fn(), + getAdhocInstructions: jest.fn(), + } as any; + + let llmSimulator: LlmSimulator; + + function createClient() { + jest.resetAllMocks(); + + // uncomment this line for debugging + // const consoleOrPassThrough = console.log.bind(console); + const consoleOrPassThrough = () => {}; + + loggerMock = { + log: jest.fn().mockImplementation(consoleOrPassThrough), + error: jest.fn().mockImplementation(consoleOrPassThrough), + debug: jest.fn().mockImplementation(consoleOrPassThrough), + trace: jest.fn().mockImplementation(consoleOrPassThrough), + isLevelEnabled: jest.fn().mockReturnValue(true), + } as any; + + functionClientMock.getFunctions.mockReturnValue([]); + functionClientMock.hasFunction.mockImplementation((name) => { + return name !== CONTEXT_FUNCTION_NAME; + }); + + functionClientMock.hasAction.mockReturnValue(false); + functionClientMock.getActions.mockReturnValue([]); + + currentUserEsClientMock.search.mockResolvedValue({ + hits: { + hits: [], + }, + } as any); + + currentUserEsClientMock.fieldCaps.mockResolvedValue({ + fields: [], + } as any); + + knowledgeBaseServiceMock.getUserInstructions.mockResolvedValue([]); + + functionClientMock.getInstructions.mockReturnValue(['system']); + functionClientMock.getAdhocInstructions.mockReturnValue([]); + + return new ObservabilityAIAssistantClient({ + config: {} as ObservabilityAIAssistantConfig, + core: {} as CoreSetup<ObservabilityAIAssistantPluginStartDependencies>, + actionsClient: actionsClientMock, + uiSettingsClient: uiSettingsClientMock, + esClient: { + asInternalUser: internalUserEsClientMock, + asCurrentUser: currentUserEsClientMock, + }, + inferenceClient: inferenceClientMock, + knowledgeBaseService: knowledgeBaseServiceMock, + logger: loggerMock, + namespace: 'default', + user: { + name: 'johndoe', + }, + scopes: ['all'], + }); + } + + function system(content: string | Omit<Message['message'], 'role'>): Message { + return merge( + { + '@timestamp': new Date().toString(), + message: { + role: MessageRole.System, + }, + }, + typeof content === 'string' ? { message: { content } } : content + ); + } + + function user(content: string | Omit<Message['message'], 'role'>): Message { + return merge( + { + '@timestamp': new Date().toString(), + message: { + role: MessageRole.User, + }, + }, + typeof content === 'string' ? { message: { content } } : content + ); + } + + beforeEach(() => { + jest.clearAllMocks(); + }); + + describe('when completing a conversation without an initial conversation id', () => { + let stream: Readable; + + let titleLlmPromiseResolve: (title: string) => void; + let titleLlmPromiseReject: Function; + + beforeEach(async () => { + client = createClient(); + + inferenceClientMock.chatComplete + .mockImplementationOnce(() => { + return new Observable((subscriber) => { + titleLlmPromiseResolve = (title: string) => { + const titleLlmSimulator = createLlmSimulator(subscriber); + titleLlmSimulator + .chunk({ content: title }) + .then(() => titleLlmSimulator.next({ content: title })) + .then(() => titleLlmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 })) + .then(() => titleLlmSimulator.complete()) + .catch((error) => titleLlmSimulator.error(error)); + }; + titleLlmPromiseReject = (error: Error) => { + subscriber.error(error); + }; + }); + }) + .mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + stream = observableIntoStream( + client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + persist: true, + }) + ); + }); + + describe('when streaming the response from the LLM', () => { + let dataHandler: jest.Mock; + + beforeEach(async () => { + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await llmSimulator.chunk({ content: 'Hello' }); + await llmSimulator.next({ content: 'Hello' }); + + await nextTick(); + }); + + it('calls the llm to generate a new title', () => { + expect(inferenceClientMock.chatComplete.mock.calls[0]).toEqual([ + expect.objectContaining({ + connectorId: 'foo', + stream: true, + functionCalling: 'native', + toolChoice: expect.objectContaining({ + function: 'title_conversation', + }), + tools: expect.objectContaining({ + title_conversation: { + description: + 'Use this function to title the conversation. Do not wrap the title in quotes', + schema: { + type: 'object', + properties: { + title: { type: 'string' }, + }, + required: ['title'], + }, + }, + }), + messages: expect.arrayContaining([ + { + role: 'user', + content: + 'Generate a title, using the title_conversation_function, based on the following conversation:\n\n user: How many alerts do I have?', + }, + ]), + }), + ]); + }); + + it('calls the llm again with the messages', () => { + expect(inferenceClientMock.chatComplete.mock.calls[1]).toEqual([ + { + connectorId: 'foo', + stream: true, + messages: expect.arrayContaining([ + { role: 'user', content: 'How many alerts do I have?' }, + ]), + functionCalling: 'native', + toolChoice: undefined, + tools: undefined, + }, + ]); + }); + + it('incrementally streams the response to the client', async () => { + expect(dataHandler).toHaveBeenCalledTimes(2); + + await new Promise((resolve) => setTimeout(resolve, 1000)); + + expect(JSON.parse(dataHandler.mock.calls[0])).toEqual({ + id: expect.any(String), + message: { + content: 'Hello', + }, + type: StreamingChatResponseEventType.ChatCompletionChunk, + }); + }); + + describe('after the LLM errors out', () => { + beforeEach(async () => { + await llmSimulator.next({ content: ' again' }); + + llmSimulator.error(new Error('Unexpected error')); + + await finished(stream); + }); + + it('adds an error to the stream and closes it', () => { + expect(dataHandler).toHaveBeenCalledTimes(4); + + expect(JSON.parse(dataHandler.mock.lastCall!)).toEqual({ + error: { + message: 'Unexpected error', + stack: expect.any(String), + }, + type: StreamingChatResponseEventType.ChatCompletionError, + }); + }); + }); + + describe('when generating a title fails', () => { + beforeEach(async () => { + titleLlmPromiseReject(new Error('Failed generating title')); + + await nextTick(); + await llmSimulator.tokenCount({ completion: 1, prompt: 33, total: 34 }); + await llmSimulator.complete(); + + await finished(stream); + }); + + it('falls back to the default title', () => { + expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ + conversation: { + title: 'New conversation', + id: expect.any(String), + last_updated: expect.any(String), + token_count: { + completion: 1, + prompt: 33, + total: 34, + }, + }, + type: StreamingChatResponseEventType.ConversationCreate, + }); + + expect(loggerMock.error).toHaveBeenCalled(); + }); + }); + + describe('after completing the response from the LLM', () => { + beforeEach(async () => { + await llmSimulator.chunk({ content: ' again' }); + + titleLlmPromiseResolve('An auto-generated title'); + await llmSimulator.tokenCount({ completion: 6, prompt: 210, total: 216 }); + await llmSimulator.complete(); + + await finished(stream); + }); + + it('adds the completed message to the stream', () => { + expect(JSON.parse(dataHandler.mock.calls[2])).toEqual({ + id: expect.any(String), + message: { + content: ' again', + }, + type: StreamingChatResponseEventType.ChatCompletionChunk, + }); + + expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + content: 'Hello again', + role: MessageRole.Assistant, + function_call: { + arguments: '', + name: '', + trigger: MessageRole.Assistant, + }, + }, + }, + type: StreamingChatResponseEventType.MessageAdd, + }); + }); + + it('creates a new conversation with the automatically generated title', () => { + expect(JSON.parse(dataHandler.mock.calls[4])).toEqual({ + conversation: { + title: 'An auto-generated title', + id: expect.any(String), + last_updated: expect.any(String), + token_count: { + completion: 6, + prompt: 210, + total: 216, + }, + }, + type: StreamingChatResponseEventType.ConversationCreate, + }); + + expect(internalUserEsClientMock.index).toHaveBeenCalledWith({ + index: '.kibana-observability-ai-assistant-conversations', + refresh: true, + document: { + '@timestamp': expect.any(String), + conversation: { + id: expect.any(String), + last_updated: expect.any(String), + title: 'An auto-generated title', + token_count: { + completion: 6, + prompt: 210, + total: 216, + }, + }, + labels: {}, + numeric_labels: {}, + public: false, + namespace: 'default', + user: { + name: 'johndoe', + }, + messages: [ + { + '@timestamp': expect.any(String), + message: { + content: EXPECTED_STORED_SYSTEM_MESSAGE, + role: MessageRole.System, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: 'How many alerts do I have?', + role: MessageRole.User, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: 'Hello again', + role: MessageRole.Assistant, + function_call: { + name: '', + arguments: '', + trigger: MessageRole.Assistant, + }, + }, + }, + ], + }, + }); + }); + }); + }); + }); + + describe('when completing a conversation with an initial conversation id', () => { + let stream: Readable; + + let dataHandler: jest.Mock; + + beforeEach(async () => { + client = createClient(); + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + internalUserEsClientMock.search.mockImplementation(async () => { + return { + hits: { + hits: [ + { + _id: 'my-es-document-id', + _index: '.kibana-observability-ai-assistant-conversations', + _source: { + '@timestamp': new Date().toISOString(), + conversation: { + id: 'my-conversation-id', + title: 'My stored conversation', + last_updated: new Date().toISOString(), + token_count: { + completion: 1, + prompt: 78, + total: 79, + }, + }, + labels: {}, + numeric_labels: {}, + public: false, + messages: [ + system('This is a system message'), + user('How many alerts do I have?'), + ], + }, + }, + ], + }, + } as any; + }); + + internalUserEsClientMock.update.mockImplementationOnce(async () => { + return {} as any; + }); + + stream = observableIntoStream( + await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + conversationId: 'my-conversation-id', + persist: true, + }) + ); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await nextTick(); + + await llmSimulator.chunk({ content: 'Hello' }); + await llmSimulator.next({ content: 'Hello' }); + await llmSimulator.tokenCount({ completion: 1, prompt: 33, total: 34 }); + await llmSimulator.complete(); + + await finished(stream); + }); + + it('updates the conversation', () => { + expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ + conversation: { + title: 'My stored conversation', + id: expect.any(String), + last_updated: expect.any(String), + token_count: { + completion: 2, + prompt: 111, + total: 113, + }, + }, + type: StreamingChatResponseEventType.ConversationUpdate, + }); + + expect(internalUserEsClientMock.update).toHaveBeenCalledWith({ + refresh: true, + index: '.kibana-observability-ai-assistant-conversations', + id: 'my-es-document-id', + doc: { + '@timestamp': expect.any(String), + conversation: { + id: expect.any(String), + last_updated: expect.any(String), + title: 'My stored conversation', + token_count: { + completion: 2, + prompt: 111, + total: 113, + }, + }, + labels: {}, + numeric_labels: {}, + public: false, + namespace: 'default', + user: { + name: 'johndoe', + }, + messages: [ + { + '@timestamp': expect.any(String), + message: { + content: EXPECTED_STORED_SYSTEM_MESSAGE, + role: MessageRole.System, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: 'How many alerts do I have?', + role: MessageRole.User, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: 'Hello', + role: MessageRole.Assistant, + function_call: { + name: '', + arguments: '', + trigger: MessageRole.Assistant, + }, + }, + }, + ], + }, + }); + }); + }); + + describe('when the LLM response fails', () => { + let stream: Readable; + + let dataHandler: jest.Mock; + + beforeEach(async () => { + client = createClient(); + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + stream = observableIntoStream( + await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + title: 'My predefined title', + persist: true, + }) + ); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await nextTick(); + + await llmSimulator.chunk({ content: 'Hello' }); + await llmSimulator.error(new Error('Connection unexpectedly closed')); + await llmSimulator.complete(); + + await finished(stream); + }); + + it('ends the stream and writes an error', async () => { + expect(JSON.parse(dataHandler.mock.calls[1])).toEqual({ + error: { + message: 'Connection unexpectedly closed', + stack: expect.any(String), + }, + type: StreamingChatResponseEventType.ChatCompletionError, + }); + }); + + it('does not create or update the conversation', async () => { + expect(internalUserEsClientMock.index).not.toHaveBeenCalled(); + expect(internalUserEsClientMock.update).not.toHaveBeenCalled(); + }); + }); + + describe('when the assistant answers with a function request', () => { + let stream: Readable; + + let dataHandler: jest.Mock; + + let respondFn: jest.Mock; + + let fnResponseResolve: (data: unknown) => void; + + let fnResponseReject: (error: Error) => void; + + beforeEach(async () => { + client = createClient(); + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + respondFn = jest.fn(); + + functionClientMock.getFunctions.mockImplementation(() => [ + { + definition: { + name: 'myFunction', + contexts: ['core'], + description: 'my-description', + descriptionForUser: '', + parameters: { + type: 'object', + properties: { + foo: { + type: 'string', + enum: ['bar'], + }, + }, + required: ['foo'], + }, + }, + respond: respondFn, + }, + ]); + + functionClientMock.executeFunction.mockImplementationOnce(() => { + return new Promise<any>((resolve, reject) => { + fnResponseResolve = resolve; + fnResponseReject = reject; + }); + }); + + stream = observableIntoStream( + await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + title: 'My predefined title', + persist: true, + }) + ); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await nextTick(); + + await llmSimulator.next({ content: 'Hello' }); + await llmSimulator.chunk({ + content: 'Hello', + function_call: { name: 'myFunction', arguments: JSON.stringify({ foo: 'bar' }) }, + }); + + const prevLlmSimulator = llmSimulator; + + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + await prevLlmSimulator.complete(); + + await waitForNextWrite(stream); + }); + + describe('while the function call is pending', () => { + it('appends the request message', async () => { + expect(JSON.parse(dataHandler.mock.calls[2])).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + content: 'Hello', + role: MessageRole.Assistant, + function_call: { + name: 'myFunction', + arguments: JSON.stringify({ foo: 'bar' }), + trigger: MessageRole.Assistant, + }, + }, + }, + }); + }); + + it('executes the function', () => { + expect(functionClientMock.executeFunction).toHaveBeenCalledWith({ + name: 'myFunction', + chat: expect.any(Function), + args: JSON.stringify({ foo: 'bar' }), + signal: expect.any(AbortSignal), + connectorId: 'foo', + messages: [ + { + '@timestamp': expect.any(String), + message: { + role: MessageRole.System, + content: EXPECTED_STORED_SYSTEM_MESSAGE, + }, + }, + { + '@timestamp': expect.any(String), + message: { + role: MessageRole.User, + content: 'How many alerts do I have?', + }, + }, + { + '@timestamp': expect.any(String), + message: { + role: MessageRole.Assistant, + content: 'Hello', + function_call: { + name: 'myFunction', + arguments: JSON.stringify({ foo: 'bar' }), + trigger: MessageRole.Assistant, + }, + }, + }, + ], + useSimulatedFunctionCalling: false, + }); + }); + + afterEach(async () => { + fnResponseResolve({ content: { my: 'content' } }); + + await waitForNextWrite(stream); + + await llmSimulator.complete(); + await finished(stream); + }); + }); + + describe('and the function succeeds', () => { + beforeEach(async () => { + fnResponseResolve({ content: { my: 'content' } }); + // await waitForNextWrite(stream); + }); + + it('appends the function response', () => { + expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + role: MessageRole.User, + name: 'myFunction', + content: JSON.stringify({ + my: 'content', + }), + }, + }, + }); + }); + + it('sends the function response back to the llm', () => { + expect(inferenceClientMock.chatComplete).toHaveBeenCalledTimes(2); + + expect(inferenceClientMock.chatComplete.mock.lastCall!).toEqual([ + { + connectorId: 'foo', + stream: true, + messages: expect.arrayContaining([ + { role: 'user', content: 'How many alerts do I have?' }, + ]), + functionCalling: 'native', + toolChoice: 'auto', + tools: expect.any(Object), + }, + ]); + }); + + describe('and the assistant replies without a function request', () => { + beforeEach(async () => { + await llmSimulator.chunk({ content: 'I am done here' }); + await llmSimulator.next({ content: 'I am done here' }); + await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); + await llmSimulator.complete(); + await waitForNextWrite(stream); + + await finished(stream); + }); + + it('appends the assistant reply', () => { + expect(JSON.parse(dataHandler.mock.calls[4])).toEqual({ + type: StreamingChatResponseEventType.ChatCompletionChunk, + id: expect.any(String), + message: { + content: 'I am done here', + }, + }); + expect(JSON.parse(dataHandler.mock.calls[6])).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + role: MessageRole.Assistant, + content: 'I am done here', + function_call: { + name: '', + arguments: '', + trigger: MessageRole.Assistant, + }, + }, + }, + }); + }); + + it('stores the conversation', () => { + expect(JSON.parse(dataHandler.mock.lastCall!)).toEqual({ + type: StreamingChatResponseEventType.ConversationCreate, + conversation: { + id: expect.any(String), + last_updated: expect.any(String), + title: 'My predefined title', + token_count: { + completion: expect.any(Number), + prompt: expect.any(Number), + total: expect.any(Number), + }, + }, + }); + + expect(internalUserEsClientMock.index).toHaveBeenCalled(); + + expect( + (internalUserEsClientMock.index.mock.lastCall![0] as any).document.messages + ).toEqual([ + { + '@timestamp': expect.any(String), + message: { + content: EXPECTED_STORED_SYSTEM_MESSAGE, + role: MessageRole.System, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: 'How many alerts do I have?', + role: MessageRole.User, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: 'Hello', + role: MessageRole.Assistant, + function_call: { + name: 'myFunction', + arguments: JSON.stringify({ foo: 'bar' }), + trigger: MessageRole.Assistant, + }, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: JSON.stringify({ + my: 'content', + }), + name: 'myFunction', + role: MessageRole.User, + }, + }, + { + '@timestamp': expect.any(String), + message: { + content: 'I am done here', + role: MessageRole.Assistant, + function_call: { + name: '', + arguments: '', + trigger: MessageRole.Assistant, + }, + }, + }, + ]); + }); + }); + }); + + describe('and the function fails', () => { + beforeEach(async () => { + fnResponseReject(new Error('Function failed')); + await waitForNextWrite(stream); + }); + + it('appends the function response', () => { + const parsed = JSON.parse(dataHandler.mock.lastCall!); + + parsed.message.message.content = JSON.parse(parsed.message.message.content); + parsed.message.message.data = JSON.parse(parsed.message.message.data); + + expect(parsed).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + role: MessageRole.User, + name: 'myFunction', + content: { + message: 'Function failed', + error: { + name: 'Error', + message: 'Function failed', + }, + }, + data: { + stack: expect.any(String), + }, + }, + }, + }); + }); + + it('sends the function response back to the llm', () => { + expect(inferenceClientMock.chatComplete).toHaveBeenCalledTimes(2); + expect(inferenceClientMock.chatComplete.mock.lastCall!).toEqual([ + { + connectorId: 'foo', + stream: true, + messages: expect.arrayContaining([ + { role: 'user', content: 'How many alerts do I have?' }, + ]), + functionCalling: 'native', + toolChoice: 'auto', + tools: expect.any(Object), + }, + ]); + }); + }); + + describe('and the function responds with an observable', () => { + let response$: Subject<ChatCompletionChunkEvent | MessageAddEvent>; + beforeEach(async () => { + response$ = new Subject(); + fnResponseResolve(response$); + + await nextTick(); + + response$.next(createFunctionResponseMessage({ name: 'myFunction', content: {} })); + }); + + it('appends the function response', async () => { + expect(JSON.parse(dataHandler.mock.calls[3]!)).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + role: MessageRole.User, + name: 'myFunction', + content: '{}', + }, + }, + }); + }); + + describe('if the observable completes', () => { + beforeEach(async () => { + response$.next({ + type: StreamingChatResponseEventType.ChatCompletionChunk, + message: { + content: 'Hello', + }, + id: 'my-id', + }); + + response$.next({ + type: StreamingChatResponseEventType.MessageAdd, + message: { + '@timestamp': new Date().toString(), + message: { + role: MessageRole.Assistant, + content: 'Hello', + }, + }, + id: 'my-id', + }); + + response$.complete(); + + await finished(stream); + }); + + it('emits a completion chunk', () => { + expect(JSON.parse(dataHandler.mock.calls[4])).toEqual({ + type: StreamingChatResponseEventType.ChatCompletionChunk, + id: expect.any(String), + message: { + content: 'Hello', + }, + }); + }); + + it('appends the observable response', () => { + expect(JSON.parse(dataHandler.mock.calls[5])).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + role: MessageRole.Assistant, + content: 'Hello', + }, + }, + }); + }); + }); + + describe('if the observable errors out', () => { + beforeEach(async () => { + response$.next({ + type: StreamingChatResponseEventType.ChatCompletionChunk, + message: { + content: 'Hello', + }, + id: 'my-id', + }); + response$.error(new Error('Unexpected error')); + + await finished(stream); + }); + + it('appends an error', () => { + expect(JSON.parse(dataHandler.mock.lastCall!)).toEqual({ + type: StreamingChatResponseEventType.ChatCompletionError, + error: { + message: 'Unexpected error', + stack: expect.any(String), + }, + }); + }); + }); + }); + }); + + describe('when context is available', () => { + let stream: Readable; + + let dataHandler: jest.Mock; + beforeEach(async () => { + client = createClient(); + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + functionClientMock.hasFunction.mockReturnValue(true); + + functionClientMock.executeFunction.mockImplementationOnce(async (body) => { + return { + content: [ + { + id: 'my_document', + text: 'My document', + }, + ], + }; + }); + + stream = observableIntoStream( + await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + persist: false, + }) + ); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await waitForNextWrite(stream); + + await llmSimulator.chunk({ content: 'Hello' }); + await llmSimulator.next({ content: 'Hello' }); + await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); + await llmSimulator.complete(); + + await finished(stream); + }); + + it('appends the context request message', () => { + expect(JSON.parse(dataHandler.mock.calls[0]!)).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + content: '', + role: MessageRole.Assistant, + function_call: { + name: CONTEXT_FUNCTION_NAME, + trigger: MessageRole.Assistant, + }, + }, + }, + }); + }); + + it('appends the context response', () => { + expect(JSON.parse(dataHandler.mock.calls[1]!)).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + content: JSON.stringify([{ id: 'my_document', text: 'My document' }]), + role: MessageRole.User, + name: CONTEXT_FUNCTION_NAME, + }, + }, + }); + }); + + it('appends the response from the LLM', () => { + expect(JSON.parse(dataHandler.mock.calls[2]!)).toEqual({ + type: StreamingChatResponseEventType.ChatCompletionChunk, + id: expect.any(String), + message: { + content: 'Hello', + }, + }); + + expect(JSON.parse(dataHandler.mock.calls[4]!)).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + content: 'Hello', + function_call: { + name: '', + arguments: '', + trigger: MessageRole.Assistant, + }, + role: MessageRole.Assistant, + }, + }, + }); + }); + }); + + describe('when the LLM keeps on calling a function and the limit has been exceeded', () => { + let stream: Readable; + + let dataHandler: jest.Mock; + const maxFunctionCalls = 8; + + beforeEach(async () => { + client = createClient(); + + const onLlmCall = new EventEmitter(); + + function waitForNextLlmCall() { + return new Promise<void>((resolve) => onLlmCall.addListener('next', resolve)); + } + + inferenceClientMock.chatComplete.mockImplementation(() => { + return new Observable((subscriber) => { + onLlmCall.emit('next'); + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + functionClientMock.getFunctions.mockImplementation(() => [ + { + definition: { + name: 'get_top_alerts', + contexts: ['core'], + description: '', + }, + respond: async () => { + return { content: 'Call this function again' }; + }, + }, + ]); + + functionClientMock.hasFunction.mockImplementation((name) => name === 'get_top_alerts'); + functionClientMock.executeFunction.mockImplementation(async () => ({ + content: 'Call this function again', + })); + + stream = observableIntoStream( + await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + title: 'My predefined title', + persist: true, + }) + ); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + async function requestAlertsFunctionCall() { + const body = inferenceClientMock.chatComplete.mock.lastCall![0]; + let nextLlmCallPromise: Promise<void>; + + if (Object.keys(body.tools ?? {}).length) { + nextLlmCallPromise = waitForNextLlmCall(); + await llmSimulator.chunk({ function_call: { name: 'get_top_alerts', arguments: '{}' } }); + } else { + nextLlmCallPromise = Promise.resolve(); + await llmSimulator.chunk({ content: 'Looks like we are done here' }); + } + + await llmSimulator.complete(); + await nextLlmCallPromise; + } + + await nextTick(); + + for (let i = 0; i <= maxFunctionCalls; i++) { + await requestAlertsFunctionCall(); + } + + await llmSimulator.complete(); + await finished(stream); + }); + + it(`executed the function no more than ${maxFunctionCalls} times`, () => { + expect(functionClientMock.executeFunction).toHaveBeenCalledTimes(maxFunctionCalls); + }); + + it('asks the LLM to suggest next steps', () => { + const firstBody = inferenceClientMock.chatComplete.mock.calls[0][0] as any; + const body = inferenceClientMock.chatComplete.mock.lastCall![0] as any; + + expect(Object.keys(firstBody.tools ?? {}).length).toEqual(1); + + expect(body.tools).toEqual(undefined); + }); + }); + + describe('when context has not been injected since last user message', () => { + let dataHandler: jest.Mock; + + beforeEach(async () => { + client = createClient(); + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + functionClientMock.hasFunction.mockReturnValue(true); + functionClientMock.executeFunction.mockImplementationOnce(async () => { + return { + content: [ + { + id: 'my_document', + text: 'My document', + }, + ], + }; + }); + + const stream = observableIntoStream( + await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + persist: false, + }) + ); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await waitForNextWrite(stream); + + await llmSimulator.next({ + content: 'Hello', + }); + + await llmSimulator.complete(); + + await finished(stream); + }); + + it('executes the context function', async () => { + expect(functionClientMock.executeFunction).toHaveBeenCalledWith( + expect.objectContaining({ name: CONTEXT_FUNCTION_NAME }) + ); + }); + + it('appends the context request message', async () => { + expect(JSON.parse(dataHandler.mock.calls[0])).toEqual({ + type: StreamingChatResponseEventType.MessageAdd, + id: expect.any(String), + message: { + '@timestamp': expect.any(String), + message: { + content: '', + role: MessageRole.Assistant, + function_call: { + name: CONTEXT_FUNCTION_NAME, + trigger: MessageRole.Assistant, + }, + }, + }, + }); + }); + }); + + describe('when the function response exceeds the max no of tokens for one', () => { + let stream: Readable; + + let dataHandler: jest.Mock; + + beforeEach(async () => { + client = createClient(); + + let functionResponsePromiseResolve: Function | undefined; + + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + functionClientMock.getFunctions.mockImplementation(() => [ + { + definition: { + name: 'get_top_alerts', + contexts: ['core'], + description: '', + parameters: {}, + }, + respond: async () => { + return { content: '' }; + }, + }, + ]); + + functionClientMock.hasFunction.mockImplementation((name) => name === 'get_top_alerts'); + + functionClientMock.executeFunction.mockImplementation(() => { + return new Promise((resolve) => { + functionResponsePromiseResolve = resolve; + }); + }); + + stream = observableIntoStream( + await client.complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('How many alerts do I have?')], + functionClient: functionClientMock, + signal: new AbortController().signal, + title: 'My predefined title', + persist: true, + }) + ); + + dataHandler = jest.fn(); + + stream.on('data', dataHandler); + + await nextTick(); + + await llmSimulator.chunk({ function_call: { name: 'get_top_alerts' } }); + await llmSimulator.next({ content: 'done' }); + await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); + await llmSimulator.complete(); + + await waitFor(() => functionResponsePromiseResolve !== undefined); + + functionResponsePromiseResolve!({ + content: repeat('word ', 10000), + }); + + await waitFor(() => inferenceClientMock.chatComplete.mock.calls.length > 1); + + await llmSimulator.next({ content: 'Looks like this was truncated' }); + + await llmSimulator.complete(); + + await finished(stream); + }); + + it('truncates the message', () => { + const body = inferenceClientMock.chatComplete.mock.lastCall![0]; + const parsed = last(body.messages); + + expect(parsed).toEqual({ + name: 'get_top_alerts', + role: 'tool', + response: { + message: 'Function response exceeded the maximum length allowed and was truncated', + truncated: expect.any(String), + }, + toolCallId: expect.any(String), + }); + + expect((parsed as any).response.truncated.includes('word ')).toBe(true); + }); + }); + + it('Adds the default language to the system prompt', async () => { + client = createClient(); + const chatSpy = jest.spyOn(client, 'chat'); + + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + client + .complete({ + connectorId: 'foo', + messages: [system('This is a system message'), user('A user message to cause completion')], + functionClient: functionClientMock, + signal: new AbortController().signal, + title: 'My predefined title', + persist: false, + }) + .subscribe(() => {}); // To trigger call to chat + await nextTick(); + + expect(chatSpy.mock.calls[0][1].messages[0].message.content).toEqual( + EXPECTED_STORED_SYSTEM_MESSAGE + ); + }); + + describe('when executing an action', () => { + let completePromise: Promise<Message[]>; + + beforeEach(async () => { + client = createClient(); + + inferenceClientMock.chatComplete.mockImplementationOnce(() => { + return new Observable((subscriber) => { + llmSimulator = createLlmSimulator(subscriber); + }); + }); + + const complete$ = await client.complete({ + connectorId: 'foo', + messages: [ + system('This is a system message'), + user('Can you call the my_action function?'), + ], + functionClient: new ChatFunctionClient([ + { + actions: [ + { + name: 'my_action', + description: 'My action description', + parameters: { + type: 'object', + properties: { + foo: { + type: 'string', + }, + }, + required: ['foo'], + }, + }, + ], + }, + ]), + signal: new AbortController().signal, + title: 'My predefined title', + persist: false, + }); + + const messages: Message[] = []; + + completePromise = new Promise<Message[]>((resolve, reject) => { + complete$.subscribe({ + next: (event) => { + if (event.type === StreamingChatResponseEventType.MessageAdd) { + messages.push(event.message); + } + }, + complete: () => resolve(messages), + }); + }); + }); + + describe('and validation succeeds', () => { + beforeEach(async () => { + await llmSimulator.chunk({ + function_call: { name: 'my_action', arguments: JSON.stringify({ foo: 'bar' }) }, + }); + await llmSimulator.next({ content: 'content' }); + await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); + await llmSimulator.complete(); + }); + + it('completes the observable function request being the last event', async () => { + const messages = await completePromise; + expect(messages.length).toBe(1); + + expect(messages[0].message.function_call).toEqual({ + name: 'my_action', + arguments: JSON.stringify({ foo: 'bar' }), + trigger: MessageRole.Assistant, + }); + }); + }); + + describe.skip('and validation fails', () => { + beforeEach(async () => { + await llmSimulator.chunk({ + function_call: { name: 'my_action', arguments: JSON.stringify({ bar: 'foo' }) }, + }); + + await waitFor(() => + inferenceClientMock.chatComplete.mock.calls.length === 3 + ? Promise.resolve() + : llmSimulator.error(new Error('Waiting until execute is called again')) + ); + + await llmSimulator.next({ + content: 'Looks like the function call failed', + }); + await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); + + await llmSimulator.complete(); + }); + + it('appends a function response error and sends it back to the LLM', async () => { + const messages = await completePromise; + expect(messages.length).toBe(2); + + expect(messages[0].message.function_call?.name).toBe('my_action'); + + expect(messages[1].message.name).toBe('my_action'); + + expect(JSON.parse(messages[1].message.content ?? '{}')).toHaveProperty('error'); + + expect(messages[2].message.content).toBe('Looks like the function call failed'); + }); + }); + }); +}); diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts new file mode 100644 index 0000000000000..8d1ee6138e54f --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/index.ts @@ -0,0 +1,765 @@ +/* + * 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 { SearchHit } from '@elastic/elasticsearch/lib/api/types'; +import { notFound } from '@hapi/boom'; +import type { ActionsClient } from '@kbn/actions-plugin/server'; +import type { CoreSetup, ElasticsearchClient, IUiSettingsClient } from '@kbn/core/server'; +import type { Logger } from '@kbn/logging'; +import type { PublicMethodsOf } from '@kbn/utility-types'; +import { context } from '@opentelemetry/api'; +import { last, merge, omit } from 'lodash'; +import { + catchError, + combineLatest, + defer, + filter, + forkJoin, + from, + map, + merge as mergeOperator, + Observable, + of, + shareReplay, + switchMap, + tap, + throwError, +} from 'rxjs'; +import { v4 } from 'uuid'; +import type { AssistantScope } from '@kbn/ai-assistant-common'; +import type { InferenceClient } from '@kbn/inference-plugin/server'; +import { ToolChoiceType } from '@kbn/inference-common'; + +import { resourceNames } from '..'; +import { + ChatCompletionChunkEvent, + ChatCompletionMessageEvent, + ChatCompletionErrorEvent, + ConversationCreateEvent, + ConversationUpdateEvent, + createConversationNotFoundError, + StreamingChatResponseEventType, + TokenCountEvent, + type StreamingChatResponseEvent, +} from '../../../common/conversation_complete'; +import { convertMessagesForInference } from '../../../common/convert_messages_for_inference'; +import { CompatibleJSONSchema } from '../../../common/functions/types'; +import { + type AdHocInstruction, + type Conversation, + type ConversationCreateRequest, + type ConversationUpdateRequest, + type KnowledgeBaseEntry, + type Message, + KnowledgeBaseType, + KnowledgeBaseEntryRole, + MessageRole, +} from '../../../common/types'; +import { withoutTokenCountEvents } from '../../../common/utils/without_token_count_events'; +import { CONTEXT_FUNCTION_NAME } from '../../functions/context'; +import type { ChatFunctionClient } from '../chat_function_client'; +import { KnowledgeBaseService, RecalledEntry } from '../knowledge_base_service'; +import { getAccessQuery } from '../util/get_access_query'; +import { getSystemMessageFromInstructions } from '../util/get_system_message_from_instructions'; +import { replaceSystemMessage } from '../util/replace_system_message'; +import { failOnNonExistingFunctionCall } from './operators/fail_on_non_existing_function_call'; +import { getContextFunctionRequestIfNeeded } from './get_context_function_request_if_needed'; +import { LangTracer } from './instrumentation/lang_tracer'; +import { continueConversation } from './operators/continue_conversation'; +import { convertInferenceEventsToStreamingEvents } from './operators/convert_inference_events_to_streaming_events'; +import { extractMessages } from './operators/extract_messages'; +import { extractTokenCount } from './operators/extract_token_count'; +import { getGeneratedTitle } from './operators/get_generated_title'; +import { instrumentAndCountTokens } from './operators/instrument_and_count_tokens'; +import { + runSemanticTextKnowledgeBaseMigration, + scheduleSemanticTextMigration, +} from '../task_manager_definitions/register_migrate_knowledge_base_entries_task'; +import { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; +import { ObservabilityAIAssistantConfig } from '../../config'; + +const MAX_FUNCTION_CALLS = 8; + +export class ObservabilityAIAssistantClient { + constructor( + private readonly dependencies: { + config: ObservabilityAIAssistantConfig; + core: CoreSetup<ObservabilityAIAssistantPluginStartDependencies>; + actionsClient: PublicMethodsOf<ActionsClient>; + uiSettingsClient: IUiSettingsClient; + namespace: string; + esClient: { + asInternalUser: ElasticsearchClient; + asCurrentUser: ElasticsearchClient; + }; + inferenceClient: InferenceClient; + logger: Logger; + user?: { + id?: string; + name: string; + }; + knowledgeBaseService: KnowledgeBaseService; + scopes: AssistantScope[]; + } + ) {} + + private getConversationWithMetaFields = async ( + conversationId: string + ): Promise<SearchHit<Conversation> | undefined> => { + const response = await this.dependencies.esClient.asInternalUser.search<Conversation>({ + index: resourceNames.aliases.conversations, + query: { + bool: { + filter: [ + ...getAccessQuery({ + user: this.dependencies.user, + namespace: this.dependencies.namespace, + }), + { term: { 'conversation.id': conversationId } }, + ], + }, + }, + size: 1, + terminate_after: 1, + }); + + return response.hits.hits[0]; + }; + + private getConversationUpdateValues = (lastUpdated: string) => { + return { + conversation: { + last_updated: lastUpdated, + }, + user: this.dependencies.user, + namespace: this.dependencies.namespace, + }; + }; + + get = async (conversationId: string): Promise<Conversation> => { + const conversation = await this.getConversationWithMetaFields(conversationId); + + if (!conversation) { + throw notFound(); + } + return conversation._source!; + }; + + delete = async (conversationId: string): Promise<void> => { + const conversation = await this.getConversationWithMetaFields(conversationId); + + if (!conversation) { + throw notFound(); + } + + await this.dependencies.esClient.asInternalUser.delete({ + id: conversation._id!, + index: conversation._index, + refresh: true, + }); + }; + + complete = ({ + functionClient, + connectorId, + simulateFunctionCalling = false, + instructions: adHocInstructions = [], + messages: initialMessages, + signal, + persist, + kibanaPublicUrl, + isPublic, + title: predefinedTitle, + conversationId: predefinedConversationId, + disableFunctions = false, + }: { + messages: Message[]; + connectorId: string; + signal: AbortSignal; + functionClient: ChatFunctionClient; + persist: boolean; + conversationId?: string; + title?: string; + isPublic?: boolean; + kibanaPublicUrl?: string; + instructions?: AdHocInstruction[]; + simulateFunctionCalling?: boolean; + disableFunctions?: + | boolean + | { + except: string[]; + }; + }): Observable<Exclude<StreamingChatResponseEvent, ChatCompletionErrorEvent>> => { + return new LangTracer(context.active()).startActiveSpan( + 'complete', + ({ tracer: completeTracer }) => { + const isConversationUpdate = persist && !!predefinedConversationId; + + const conversationId = persist ? predefinedConversationId || v4() : ''; + + if (persist && !isConversationUpdate && kibanaPublicUrl) { + adHocInstructions.push({ + instruction_type: 'application_instruction', + text: `This conversation will be persisted in Kibana and available at this url: ${ + kibanaPublicUrl + `/app/observabilityAIAssistant/conversations/${conversationId}` + }.`, + }); + } + + const userInstructions$ = from(this.getKnowledgeBaseUserInstructions()).pipe(shareReplay()); + + const registeredAdhocInstructions = functionClient.getAdhocInstructions(); + const allAdHocInstructions = adHocInstructions.concat(registeredAdhocInstructions); + + // from the initial messages, override any system message with + // the one that is based on the instructions (registered, request, kb) + const messagesWithUpdatedSystemMessage$ = userInstructions$.pipe( + map((userInstructions) => { + // this is what we eventually store in the conversation + const messagesWithUpdatedSystemMessage = replaceSystemMessage( + getSystemMessageFromInstructions({ + applicationInstructions: functionClient.getInstructions(), + userInstructions, + adHocInstructions: allAdHocInstructions, + availableFunctionNames: functionClient + .getFunctions() + .map((fn) => fn.definition.name), + }), + initialMessages + ); + + return messagesWithUpdatedSystemMessage; + }), + shareReplay() + ); + + // if it is: + // - a new conversation + // - no predefined title is given + // - we need to store the conversation + // we generate a title + // if not, we complete with an empty string + const title$ = + predefinedTitle || isConversationUpdate || !persist + ? of(predefinedTitle || '').pipe(shareReplay()) + : messagesWithUpdatedSystemMessage$.pipe( + switchMap((messages) => + getGeneratedTitle({ + messages, + logger: this.dependencies.logger, + chat: (name, chatParams) => { + return this.chat(name, { + ...chatParams, + simulateFunctionCalling, + connectorId, + signal, + }); + }, + tracer: completeTracer, + }) + ), + shareReplay() + ); + + // we continue the conversation here, after resolving both the materialized + // messages and the knowledge base instructions + const nextEvents$ = combineLatest([ + messagesWithUpdatedSystemMessage$, + userInstructions$, + ]).pipe( + switchMap(([messagesWithUpdatedSystemMessage, userInstructions]) => { + // if needed, inject a context function request here + const contextRequest = functionClient.hasFunction(CONTEXT_FUNCTION_NAME) + ? getContextFunctionRequestIfNeeded(messagesWithUpdatedSystemMessage) + : undefined; + + return mergeOperator( + // if we have added a context function request, also emit + // the messageAdd event for it, so we can notify the consumer + // and add it to the conversation + ...(contextRequest ? [of(contextRequest)] : []), + continueConversation({ + messages: [ + ...messagesWithUpdatedSystemMessage, + ...(contextRequest ? [contextRequest.message] : []), + ], + chat: (name, chatParams) => { + // inject a chat function with predefined parameters + return this.chat(name, { + ...chatParams, + signal, + simulateFunctionCalling, + connectorId, + }); + }, + // start out with the max number of function calls + functionCallsLeft: MAX_FUNCTION_CALLS, + functionClient, + userInstructions, + adHocInstructions, + signal, + logger: this.dependencies.logger, + disableFunctions, + tracer: completeTracer, + connectorId, + useSimulatedFunctionCalling: simulateFunctionCalling === true, + }) + ); + }), + shareReplay() + ); + + const output$ = mergeOperator( + // get all the events from continuing the conversation + nextEvents$, + // wait until all dependencies have completed + forkJoin([ + messagesWithUpdatedSystemMessage$, + // get just the new messages + nextEvents$.pipe(withoutTokenCountEvents(), extractMessages()), + // count all the token count events emitted during completion + mergeOperator( + nextEvents$, + title$.pipe(filter((value): value is TokenCountEvent => typeof value !== 'string')) + ).pipe(extractTokenCount()), + // get just the title, and drop the token count events + title$.pipe(filter((value): value is string => typeof value === 'string')), + ]).pipe( + switchMap( + ([messagesWithUpdatedSystemMessage, addedMessages, tokenCountResult, title]) => { + const initialMessagesWithAddedMessages = + messagesWithUpdatedSystemMessage.concat(addedMessages); + + const lastMessage = last(initialMessagesWithAddedMessages); + + // if a function request is at the very end, close the stream to consumer + // without persisting or updating the conversation. we need to wait + // on the function response to have a valid conversation + const isFunctionRequest = !!lastMessage?.message.function_call?.name; + + if (!persist || isFunctionRequest) { + return of(); + } + + if (isConversationUpdate) { + return from(this.getConversationWithMetaFields(conversationId)) + .pipe( + switchMap((conversation) => { + if (!conversation) { + return throwError(() => createConversationNotFoundError()); + } + + const persistedTokenCount = conversation._source?.conversation + .token_count ?? { + prompt: 0, + completion: 0, + total: 0, + }; + + return from( + this.update( + conversationId, + + merge( + {}, + + // base conversation without messages + omit(conversation._source, 'messages'), + + // update messages + { messages: initialMessagesWithAddedMessages }, + + // update token count + { + conversation: { + title: title || conversation._source?.conversation.title, + token_count: { + prompt: persistedTokenCount.prompt + tokenCountResult.prompt, + completion: + persistedTokenCount.completion + tokenCountResult.completion, + total: persistedTokenCount.total + tokenCountResult.total, + }, + }, + } + ) + ) + ); + }) + ) + .pipe( + map((conversation): ConversationUpdateEvent => { + return { + conversation: conversation.conversation, + type: StreamingChatResponseEventType.ConversationUpdate, + }; + }) + ); + } + + return from( + this.create({ + '@timestamp': new Date().toISOString(), + conversation: { + title, + id: conversationId, + token_count: tokenCountResult, + }, + public: !!isPublic, + labels: {}, + numeric_labels: {}, + messages: initialMessagesWithAddedMessages, + }) + ).pipe( + map((conversation): ConversationCreateEvent => { + return { + conversation: conversation.conversation, + type: StreamingChatResponseEventType.ConversationCreate, + }; + }) + ); + } + ) + ) + ); + + return output$.pipe( + instrumentAndCountTokens('complete'), + withoutTokenCountEvents(), + catchError((error) => { + this.dependencies.logger.error(error); + return throwError(() => error); + }), + tap((event) => { + if (this.dependencies.logger.isLevelEnabled('debug')) { + switch (event.type) { + case StreamingChatResponseEventType.MessageAdd: + this.dependencies.logger.debug( + () => `Added message: ${JSON.stringify(event.message)}` + ); + break; + + case StreamingChatResponseEventType.ConversationCreate: + this.dependencies.logger.debug( + () => `Created conversation: ${JSON.stringify(event.conversation)}` + ); + break; + + case StreamingChatResponseEventType.ConversationUpdate: + this.dependencies.logger.debug( + () => `Updated conversation: ${JSON.stringify(event.conversation)}` + ); + break; + } + } + }), + shareReplay() + ); + } + ); + }; + + chat = ( + name: string, + { + messages, + connectorId, + functions, + functionCall, + signal, + simulateFunctionCalling, + tracer, + }: { + messages: Message[]; + connectorId: string; + functions?: Array<{ name: string; description: string; parameters?: CompatibleJSONSchema }>; + functionCall?: string; + signal: AbortSignal; + simulateFunctionCalling?: boolean; + tracer: LangTracer; + } + ): Observable<ChatCompletionChunkEvent | TokenCountEvent | ChatCompletionMessageEvent> => { + let tools: Record<string, { description: string; schema: any }> | undefined; + let toolChoice: ToolChoiceType | { function: string } | undefined; + + if (functions?.length) { + tools = functions.reduce((acc, fn) => { + acc[fn.name] = { + description: fn.description, + schema: fn.parameters, + }; + return acc; + }, {} as Record<string, { description: string; schema: any }>); + + toolChoice = functionCall + ? { + function: functionCall, + } + : ToolChoiceType.auto; + } + + const chatComplete$ = defer(() => + this.dependencies.inferenceClient.chatComplete({ + connectorId, + stream: true, + messages: convertMessagesForInference( + messages.filter((message) => message.message.role !== MessageRole.System) + ), + functionCalling: simulateFunctionCalling ? 'simulated' : 'native', + toolChoice, + tools, + }) + ).pipe( + convertInferenceEventsToStreamingEvents(), + instrumentAndCountTokens(name), + failOnNonExistingFunctionCall({ functions }), + tap((event) => { + if ( + event.type === StreamingChatResponseEventType.ChatCompletionChunk && + this.dependencies.logger.isLevelEnabled('trace') + ) { + this.dependencies.logger.trace(`Received chunk: ${JSON.stringify(event.message)}`); + } + }), + shareReplay() + ); + + return chatComplete$; + }; + + find = async (options?: { query?: string }): Promise<{ conversations: Conversation[] }> => { + const response = await this.dependencies.esClient.asInternalUser.search<Conversation>({ + index: resourceNames.aliases.conversations, + allow_no_indices: true, + query: { + bool: { + filter: [ + ...getAccessQuery({ + user: this.dependencies.user, + namespace: this.dependencies.namespace, + }), + ], + }, + }, + sort: { + '@timestamp': 'desc', + }, + size: 100, + }); + + return { + conversations: response.hits.hits.map((hit) => hit._source!), + }; + }; + + update = async ( + conversationId: string, + conversation: ConversationUpdateRequest + ): Promise<Conversation> => { + const persistedConversation = await this.getConversationWithMetaFields(conversationId); + + if (!persistedConversation) { + throw notFound(); + } + + const updatedConversation: Conversation = merge( + {}, + conversation, + this.getConversationUpdateValues(new Date().toISOString()) + ); + + await this.dependencies.esClient.asInternalUser.update({ + id: persistedConversation._id!, + index: persistedConversation._index, + doc: updatedConversation, + refresh: true, + }); + + return updatedConversation; + }; + + setTitle = async ({ conversationId, title }: { conversationId: string; title: string }) => { + const document = await this.getConversationWithMetaFields(conversationId); + if (!document) { + throw notFound(); + } + + const conversation = await this.get(conversationId); + + if (!conversation) { + throw notFound(); + } + + const updatedConversation: Conversation = merge( + {}, + conversation, + { conversation: { title } }, + this.getConversationUpdateValues(new Date().toISOString()) + ); + + await this.dependencies.esClient.asInternalUser.update({ + id: document._id!, + index: document._index, + doc: { conversation: { title } }, + refresh: true, + }); + + return updatedConversation; + }; + + create = async (conversation: ConversationCreateRequest): Promise<Conversation> => { + const now = new Date().toISOString(); + + const createdConversation: Conversation = merge( + {}, + conversation, + { + '@timestamp': now, + conversation: { id: conversation.conversation.id || v4() }, + }, + this.getConversationUpdateValues(now) + ); + + await this.dependencies.esClient.asInternalUser.index({ + index: resourceNames.aliases.conversations, + document: createdConversation, + refresh: true, + }); + + return createdConversation; + }; + + recall = async ({ + queries, + categories, + limit, + }: { + queries: Array<{ text: string; boost?: number }>; + categories?: string[]; + limit?: { size?: number; tokenCount?: number }; + }): Promise<RecalledEntry[]> => { + return ( + this.dependencies.knowledgeBaseService?.recall({ + namespace: this.dependencies.namespace, + user: this.dependencies.user, + queries, + categories, + esClient: this.dependencies.esClient, + uiSettingsClient: this.dependencies.uiSettingsClient, + limit, + }) || [] + ); + }; + + getKnowledgeBaseStatus = () => { + return this.dependencies.knowledgeBaseService.getStatus(); + }; + + setupKnowledgeBase = async (modelId: string | undefined) => { + const { esClient, core, logger, knowledgeBaseService } = this.dependencies; + + // setup the knowledge base + const res = await knowledgeBaseService.setup(esClient, modelId); + + core + .getStartServices() + .then(([_, pluginsStart]) => { + logger.debug('Schedule semantic text migration task'); + return scheduleSemanticTextMigration(pluginsStart); + }) + .catch((error) => { + logger.error(`Failed to run semantic text migration task: ${error}`); + }); + + return res; + }; + + resetKnowledgeBase = () => { + const { esClient } = this.dependencies; + return this.dependencies.knowledgeBaseService.reset(esClient); + }; + + migrateKnowledgeBaseToSemanticText = () => { + return runSemanticTextKnowledgeBaseMigration({ + esClient: this.dependencies.esClient, + logger: this.dependencies.logger, + config: this.dependencies.config, + }); + }; + + addUserInstruction = async ({ + entry, + }: { + entry: Omit< + KnowledgeBaseEntry, + '@timestamp' | 'confidence' | 'is_correction' | 'type' | 'role' + >; + }): Promise<void> => { + // for now we want to limit the number of user instructions to 1 per user + // if a user instruction already exists for the user, we get the id and update it + this.dependencies.logger.debug('Adding user instruction entry'); + const existingId = await this.dependencies.knowledgeBaseService.getPersonalUserInstructionId({ + isPublic: entry.public, + namespace: this.dependencies.namespace, + user: this.dependencies.user, + }); + + if (existingId) { + entry.id = existingId; + this.dependencies.logger.debug(`Updating user instruction with id "${existingId}"`); + } + + return this.dependencies.knowledgeBaseService.addEntry({ + namespace: this.dependencies.namespace, + user: this.dependencies.user, + entry: { + ...entry, + confidence: 'high', + is_correction: false, + type: KnowledgeBaseType.UserInstruction, + labels: {}, + role: KnowledgeBaseEntryRole.UserEntry, + }, + }); + }; + + addKnowledgeBaseEntry = async ({ + entry, + }: { + entry: Omit<KnowledgeBaseEntry, '@timestamp' | 'type'>; + }): Promise<void> => { + return this.dependencies.knowledgeBaseService.addEntry({ + namespace: this.dependencies.namespace, + user: this.dependencies.user, + entry: { + ...entry, + type: KnowledgeBaseType.Contextual, + }, + }); + }; + + getKnowledgeBaseEntries = async ({ + query, + sortBy, + sortDirection, + }: { + query: string; + sortBy: string; + sortDirection: 'asc' | 'desc'; + }) => { + return this.dependencies.knowledgeBaseService.getEntries({ query, sortBy, sortDirection }); + }; + + deleteKnowledgeBaseEntry = async (id: string) => { + return this.dependencies.knowledgeBaseService.deleteEntry({ id }); + }; + + getKnowledgeBaseUserInstructions = async () => { + return this.dependencies.knowledgeBaseService.getUserInstructions( + this.dependencies.namespace, + this.dependencies.user + ); + }; +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_span_attributes.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_span_attributes.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_span_attributes.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_span_attributes.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_tracer.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_tracer.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_tracer.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/get_langtrace_tracer.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/init_langtrace.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/init_langtrace.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/init_langtrace.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/init_langtrace.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/instrumentation/lang_tracer.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/catch_function_not_found_error.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/catch_function_not_found_error.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/catch_function_not_found_error.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/catch_function_not_found_error.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/continue_conversation.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/continue_conversation.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/continue_conversation.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/continue_conversation.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/convert_inference_events_to_streaming_events.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/convert_inference_events_to_streaming_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/convert_inference_events_to_streaming_events.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/convert_inference_events_to_streaming_events.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/debug.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/debug.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/debug.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/debug.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/extract_messages.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/extract_messages.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/extract_messages.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/extract_messages.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/extract_token_count.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/extract_token_count.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/extract_token_count.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/extract_token_count.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/fail_on_non_existing_function_call.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/fail_on_non_existing_function_call.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/fail_on_non_existing_function_call.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/fail_on_non_existing_function_call.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/get_generated_title.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/hide_token_count_events.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/hide_token_count_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/hide_token_count_events.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/hide_token_count_events.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/instrument_and_count_tokens.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/instrument_and_count_tokens.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/operators/instrument_and_count_tokens.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/client/operators/instrument_and_count_tokens.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/conversation_component_template.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/conversation_component_template.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/conversation_component_template.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/conversation_component_template.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/index.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/inference_endpoint.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/inference_endpoint.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/inference_endpoint.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/inference_endpoint.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/kb_component_template.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/kb_component_template.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/kb_component_template.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/kb_component_template.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts new file mode 100644 index 0000000000000..bb77dfc768d95 --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts @@ -0,0 +1,447 @@ +/* + * 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 { serverUnavailable } from '@hapi/boom'; +import type { CoreSetup, ElasticsearchClient, IUiSettingsClient } from '@kbn/core/server'; +import type { Logger } from '@kbn/logging'; +import { orderBy } from 'lodash'; +import { encode } from 'gpt-tokenizer'; +import { resourceNames } from '..'; +import { + Instruction, + KnowledgeBaseEntry, + KnowledgeBaseEntryRole, + KnowledgeBaseType, +} from '../../../common/types'; +import { getAccessQuery } from '../util/get_access_query'; +import { getCategoryQuery } from '../util/get_category_query'; +import { + createInferenceEndpoint, + deleteInferenceEndpoint, + getElserModelStatus, + isInferenceEndpointMissingOrUnavailable, +} from '../inference_endpoint'; +import { recallFromSearchConnectors } from './recall_from_search_connectors'; +import { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; +import { ObservabilityAIAssistantConfig } from '../../config'; + +interface Dependencies { + core: CoreSetup<ObservabilityAIAssistantPluginStartDependencies>; + esClient: { + asInternalUser: ElasticsearchClient; + }; + logger: Logger; + config: ObservabilityAIAssistantConfig; +} + +export interface RecalledEntry { + id: string; + text: string; + score: number | null; + is_correction?: boolean; + labels?: Record<string, string>; +} + +function throwKnowledgeBaseNotReady(body: any) { + throw serverUnavailable(`Knowledge base is not ready yet`, body); +} + +export class KnowledgeBaseService { + constructor(private readonly dependencies: Dependencies) {} + + async setup( + esClient: { + asCurrentUser: ElasticsearchClient; + asInternalUser: ElasticsearchClient; + }, + modelId: string | undefined + ) { + await deleteInferenceEndpoint({ esClient }).catch((e) => {}); // ensure existing inference endpoint is deleted + return createInferenceEndpoint({ esClient, logger: this.dependencies.logger, modelId }); + } + + async reset(esClient: { asCurrentUser: ElasticsearchClient }) { + try { + await deleteInferenceEndpoint({ esClient }); + } catch (error) { + if (isInferenceEndpointMissingOrUnavailable(error)) { + return; + } + throw error; + } + } + + private async recallFromKnowledgeBase({ + queries, + categories, + namespace, + user, + }: { + queries: Array<{ text: string; boost?: number }>; + categories?: string[]; + namespace: string; + user?: { name: string }; + }): Promise<RecalledEntry[]> { + const response = await this.dependencies.esClient.asInternalUser.search< + Pick<KnowledgeBaseEntry, 'text' | 'is_correction' | 'labels' | 'title'> & { doc_id?: string } + >({ + index: [resourceNames.aliases.kb], + query: { + bool: { + should: queries.map(({ text, boost = 1 }) => ({ + semantic: { + field: 'semantic_text', + query: text, + boost, + }, + })), + filter: [ + ...getAccessQuery({ + user, + namespace, + }), + ...getCategoryQuery({ categories }), + + // exclude user instructions + { bool: { must_not: { term: { type: KnowledgeBaseType.UserInstruction } } } }, + ], + }, + }, + size: 20, + _source: { + includes: ['text', 'is_correction', 'labels', 'doc_id', 'title'], + }, + }); + + return response.hits.hits.map((hit) => ({ + text: hit._source?.text!, + is_correction: hit._source?.is_correction, + labels: hit._source?.labels, + title: hit._source?.title ?? hit._source?.doc_id, // use `doc_id` as fallback title for backwards compatibility + score: hit._score!, + id: hit._id!, + })); + } + + recall = async ({ + user, + queries, + categories, + namespace, + esClient, + uiSettingsClient, + limit = {}, + }: { + queries: Array<{ text: string; boost?: number }>; + categories?: string[]; + user?: { name: string }; + namespace: string; + esClient: { asCurrentUser: ElasticsearchClient; asInternalUser: ElasticsearchClient }; + uiSettingsClient: IUiSettingsClient; + limit?: { tokens?: number; size?: number }; + }): Promise<RecalledEntry[]> => { + if (!this.dependencies.config.enableKnowledgeBase) { + return []; + } + + this.dependencies.logger.debug( + () => `Recalling entries from KB for queries: "${JSON.stringify(queries)}"` + ); + + const [documentsFromKb, documentsFromConnectors] = await Promise.all([ + this.recallFromKnowledgeBase({ + user, + queries, + categories, + namespace, + }).catch((error) => { + if (isInferenceEndpointMissingOrUnavailable(error)) { + throwKnowledgeBaseNotReady(error.body); + } + throw error; + }), + recallFromSearchConnectors({ + esClient, + uiSettingsClient, + queries, + core: this.dependencies.core, + logger: this.dependencies.logger, + }).catch((error) => { + this.dependencies.logger.debug('Error getting data from search indices'); + this.dependencies.logger.debug(error); + return []; + }), + ]); + + this.dependencies.logger.debug( + `documentsFromKb: ${JSON.stringify(documentsFromKb.slice(0, 5), null, 2)}` + ); + this.dependencies.logger.debug( + `documentsFromConnectors: ${JSON.stringify(documentsFromConnectors.slice(0, 5), null, 2)}` + ); + + const sortedEntries = orderBy( + documentsFromKb.concat(documentsFromConnectors), + 'score', + 'desc' + ).slice(0, limit.size ?? 20); + + const maxTokens = limit.tokens ?? 4_000; + + let tokenCount = 0; + + const returnedEntries: RecalledEntry[] = []; + + for (const entry of sortedEntries) { + returnedEntries.push(entry); + tokenCount += encode(entry.text).length; + if (tokenCount >= maxTokens) { + break; + } + } + + const droppedEntries = sortedEntries.length - returnedEntries.length; + if (droppedEntries > 0) { + this.dependencies.logger.info(`Dropped ${droppedEntries} entries because of token limit`); + } + + return returnedEntries; + }; + + getUserInstructions = async ( + namespace: string, + user?: { name: string } + ): Promise<Array<Instruction & { public?: boolean }>> => { + if (!this.dependencies.config.enableKnowledgeBase) { + return []; + } + try { + const response = await this.dependencies.esClient.asInternalUser.search<KnowledgeBaseEntry>({ + index: resourceNames.aliases.kb, + query: { + bool: { + filter: [ + { + term: { + type: KnowledgeBaseType.UserInstruction, + }, + }, + ...getAccessQuery({ user, namespace }), + ], + }, + }, + size: 500, + _source: ['id', 'text', 'public'], + }); + + return response.hits.hits.map((hit) => ({ + id: hit._id!, + text: hit._source?.text ?? '', + public: hit._source?.public, + })); + } catch (error) { + this.dependencies.logger.error('Failed to load instructions from knowledge base'); + this.dependencies.logger.error(error); + return []; + } + }; + + getEntries = async ({ + query, + sortBy, + sortDirection, + }: { + query?: string; + sortBy?: string; + sortDirection?: 'asc' | 'desc'; + }): Promise<{ entries: KnowledgeBaseEntry[] }> => { + if (!this.dependencies.config.enableKnowledgeBase) { + return { entries: [] }; + } + try { + const response = await this.dependencies.esClient.asInternalUser.search< + KnowledgeBaseEntry & { doc_id?: string } + >({ + index: resourceNames.aliases.kb, + query: { + bool: { + filter: [ + // filter by search query + ...(query + ? [{ query_string: { query: `${query}*`, fields: ['doc_id', 'title'] } }] + : []), + { + // exclude user instructions + bool: { must_not: { term: { type: KnowledgeBaseType.UserInstruction } } }, + }, + ], + }, + }, + sort: + sortBy === 'title' + ? [ + { ['title.keyword']: { order: sortDirection } }, + { doc_id: { order: sortDirection } }, // sort by doc_id for backwards compatibility + ] + : [{ [String(sortBy)]: { order: sortDirection } }], + size: 500, + _source: { + includes: [ + 'title', + 'doc_id', + 'text', + 'is_correction', + 'labels', + 'confidence', + 'public', + '@timestamp', + 'role', + 'user.name', + 'type', + ], + }, + }); + + return { + entries: response.hits.hits.map((hit) => ({ + ...hit._source!, + title: hit._source!.title ?? hit._source!.doc_id, // use `doc_id` as fallback title for backwards compatibility + role: hit._source!.role ?? KnowledgeBaseEntryRole.UserEntry, + score: hit._score, + id: hit._id!, + })), + }; + } catch (error) { + if (isInferenceEndpointMissingOrUnavailable(error)) { + throwKnowledgeBaseNotReady(error.body); + } + throw error; + } + }; + + getPersonalUserInstructionId = async ({ + isPublic, + user, + namespace, + }: { + isPublic: boolean; + user?: { name: string; id?: string }; + namespace?: string; + }) => { + if (!this.dependencies.config.enableKnowledgeBase) { + return null; + } + const res = await this.dependencies.esClient.asInternalUser.search<KnowledgeBaseEntry>({ + index: resourceNames.aliases.kb, + query: { + bool: { + filter: [ + { term: { type: KnowledgeBaseType.UserInstruction } }, + { term: { public: isPublic } }, + ...getAccessQuery({ user, namespace }), + ], + }, + }, + size: 1, + _source: false, + }); + + return res.hits.hits[0]?._id; + }; + + getUuidFromDocId = async ({ + docId, + user, + namespace, + }: { + docId: string; + user?: { name: string; id?: string }; + namespace?: string; + }) => { + const query = { + bool: { + filter: [ + { term: { doc_id: docId } }, + + // exclude user instructions + { bool: { must_not: { term: { type: KnowledgeBaseType.UserInstruction } } } }, + + // restrict access to user's own entries + ...getAccessQuery({ user, namespace }), + ], + }, + }; + + const response = await this.dependencies.esClient.asInternalUser.search<KnowledgeBaseEntry>({ + size: 1, + index: resourceNames.aliases.kb, + query, + _source: false, + }); + + return response.hits.hits[0]?._id; + }; + + addEntry = async ({ + entry: { id, ...doc }, + user, + namespace, + }: { + entry: Omit<KnowledgeBaseEntry, '@timestamp'>; + user?: { name: string; id?: string }; + namespace?: string; + }): Promise<void> => { + if (!this.dependencies.config.enableKnowledgeBase) { + return; + } + + try { + await this.dependencies.esClient.asInternalUser.index({ + index: resourceNames.aliases.kb, + id, + document: { + '@timestamp': new Date().toISOString(), + ...doc, + ...(doc.text ? { semantic_text: doc.text } : {}), + user, + namespace, + }, + refresh: 'wait_for', + }); + } catch (error) { + if (isInferenceEndpointMissingOrUnavailable(error)) { + throwKnowledgeBaseNotReady(error.body); + } + throw error; + } + }; + + deleteEntry = async ({ id }: { id: string }): Promise<void> => { + try { + await this.dependencies.esClient.asInternalUser.delete({ + index: resourceNames.aliases.kb, + id, + refresh: 'wait_for', + }); + + return Promise.resolve(); + } catch (error) { + if (isInferenceEndpointMissingOrUnavailable(error)) { + throwKnowledgeBaseNotReady(error.body); + } + throw error; + } + }; + + getStatus = async () => { + return getElserModelStatus({ + esClient: this.dependencies.esClient, + logger: this.dependencies.logger, + config: this.dependencies.config, + }); + }; +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/recall_from_search_connectors.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/recall_from_search_connectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/recall_from_search_connectors.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/recall_from_search_connectors.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/setup_conversation_and_kb_index_assets.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/setup_conversation_and_kb_index_assets.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/setup_conversation_and_kb_index_assets.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/setup_conversation_and_kb_index_assets.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/task_manager_definitions/register_migrate_knowledge_base_entries_task.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/task_manager_definitions/register_migrate_knowledge_base_entries_task.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/task_manager_definitions/register_migrate_knowledge_base_entries_task.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/task_manager_definitions/register_migrate_knowledge_base_entries_task.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/types.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/types.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/catch_function_limit_exceeded_error.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/catch_function_limit_exceeded_error.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/catch_function_limit_exceeded_error.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/catch_function_limit_exceeded_error.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/create_server_side_function_response_error.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/create_server_side_function_response_error.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/create_server_side_function_response_error.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/create_server_side_function_response_error.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/flush_buffer.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/flush_buffer.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/flush_buffer.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/flush_buffer.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_access_query.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_access_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_access_query.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_access_query.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_category_query.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_category_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_category_query.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_category_query.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/get_system_message_from_instructions.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/observable_into_openai_stream.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/observable_into_openai_stream.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/observable_into_openai_stream.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/observable_into_openai_stream.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/observable_into_stream.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/observable_into_stream.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/observable_into_stream.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/observable_into_stream.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/replace_system_message.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/replace_system_message.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/replace_system_message.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/replace_system_message.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/stream_into_observable.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/with_assistant_span.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/with_assistant_span.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/service/util/with_assistant_span.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/service/util/with_assistant_span.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/types.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/types.ts new file mode 100644 index 0000000000000..3ee66bfaed664 --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/types.ts @@ -0,0 +1,68 @@ +/* + * 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 { FeaturesPluginStart, FeaturesPluginSetup } from '@kbn/features-plugin/server'; +import type { + PluginSetupContract as ActionsPluginSetup, + PluginStartContract as ActionsPluginStart, +} from '@kbn/actions-plugin/server'; +import type { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/server'; +import type { + TaskManagerSetupContract, + TaskManagerStartContract, +} from '@kbn/task-manager-plugin/server'; +import type { + DataViewsServerPluginSetup, + DataViewsServerPluginStart, +} from '@kbn/data-views-plugin/server'; +import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/server'; +import type { CloudSetup, CloudStart } from '@kbn/cloud-plugin/server'; +import type { ServerlessPluginSetup, ServerlessPluginStart } from '@kbn/serverless/server'; +import type { RuleRegistryPluginStartContract } from '@kbn/rule-registry-plugin/server'; +import type { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server'; +import type { InferenceServerSetup, InferenceServerStart } from '@kbn/inference-plugin/server'; +import type { ObservabilityAIAssistantService } from './service'; + +export interface ObservabilityAIAssistantServerSetup { + /** + * Returns a Observability AI Assistant service instance + */ + service: ObservabilityAIAssistantService; +} + +export interface ObservabilityAIAssistantServerStart { + /** + * Returns a Observability AI Assistant service instance + */ + service: ObservabilityAIAssistantService; +} + +export interface ObservabilityAIAssistantPluginSetupDependencies { + actions: ActionsPluginSetup; + security: SecurityPluginSetup; + features: FeaturesPluginSetup; + taskManager: TaskManagerSetupContract; + dataViews: DataViewsServerPluginSetup; + licensing: LicensingPluginSetup; + cloud?: CloudSetup; + serverless?: ServerlessPluginSetup; + alerting: AlertingServerSetup; + inference: InferenceServerSetup; +} + +export interface ObservabilityAIAssistantPluginStartDependencies { + actions: ActionsPluginStart; + security: SecurityPluginStart; + features: FeaturesPluginStart; + taskManager: TaskManagerStartContract; + dataViews: DataViewsServerPluginStart; + licensing: LicensingPluginStart; + ruleRegistry: RuleRegistryPluginStartContract; + cloud?: CloudStart; + serverless?: ServerlessPluginStart; + alerting: AlertingServerStart; + inference: InferenceServerStart; +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.test.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.test.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/parse_suggestion_scores.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/recall_and_score.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/score_suggestions.ts b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/score_suggestions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/server/utils/recall/score_suggestions.ts rename to x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/server/utils/recall/score_suggestions.ts diff --git a/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/tsconfig.json b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/tsconfig.json new file mode 100644 index 0000000000000..db9c1cddae90a --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant/tsconfig.json @@ -0,0 +1,55 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "../../../../../typings/**/*", + "common/**/*", + "public/**/*", + "scripts/**/*", + "typings/**/*", + "public/**/*.json", + "server/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/logging", + "@kbn/kibana-utils-plugin", + "@kbn/core-analytics-browser", + "@kbn/core", + "@kbn/server-route-repository", + "@kbn/server-route-repository-client", + "@kbn/actions-plugin", + "@kbn/licensing-plugin", + "@kbn/std", + "@kbn/utility-types-jest", + "@kbn/kibana-react-plugin", + "@kbn/shared-ux-utility", + "@kbn/security-plugin", + "@kbn/config-schema", + "@kbn/utility-types", + "@kbn/data-views-plugin", + "@kbn/io-ts-utils", + "@kbn/rule-registry-plugin", + "@kbn/alerting-plugin", + "@kbn/spaces-plugin", + "@kbn/task-manager-plugin", + "@kbn/core-elasticsearch-server", + "@kbn/core-ui-settings-server", + "@kbn/apm-utils", + "@kbn/features-plugin", + "@kbn/cloud-plugin", + "@kbn/serverless", + "@kbn/core-elasticsearch-server", + "@kbn/core-ui-settings-server", + "@kbn/management-settings-ids", + "@kbn/ai-assistant-common", + "@kbn/inference-common", + "@kbn/inference-plugin", + "@kbn/core-lifecycle-server", + "@kbn/server-route-repository-utils", + "@kbn/inference-plugin" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/osquery/.nycrc b/x-pack/platform/plugins/shared/osquery/.nycrc similarity index 100% rename from x-pack/plugins/osquery/.nycrc rename to x-pack/platform/plugins/shared/osquery/.nycrc diff --git a/x-pack/plugins/osquery/README.md b/x-pack/platform/plugins/shared/osquery/README.md similarity index 100% rename from x-pack/plugins/osquery/README.md rename to x-pack/platform/plugins/shared/osquery/README.md diff --git a/x-pack/plugins/osquery/common/api/asset/assets.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/asset/assets.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/asset/assets.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/asset/assets.gen.ts diff --git a/x-pack/plugins/osquery/common/api/asset/assets.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/asset/assets.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/asset/assets.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/asset/assets.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/asset/assets_status.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/asset/assets_status.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/asset/assets_status.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/asset/assets_status.gen.ts diff --git a/x-pack/plugins/osquery/common/api/asset/assets_status.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/asset/assets_status.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/asset/assets_status.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/asset/assets_status.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/asset/get_assets_status_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/asset/get_assets_status_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/asset/get_assets_status_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/asset/get_assets_status_route.ts diff --git a/x-pack/plugins/osquery/common/api/asset/update_assets_status_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/asset/update_assets_status_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/asset/update_assets_status_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/asset/update_assets_status_route.ts diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/fleet_wrapper.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/fleet_wrapper.gen.ts diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/fleet_wrapper.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/fleet_wrapper.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/fleet_wrapper.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policy_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_policy_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_policy_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_policy_route.ts diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_status.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_status.gen.ts diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_status.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_status.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status_for_agent_policy_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_status_for_agent_policy_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/get_agent_status_for_agent_policy_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agent_status_for_agent_policy_route.ts diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_agents_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agents_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/get_agents_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_agents_route.ts diff --git a/x-pack/plugins/osquery/common/api/fleet_wrapper/get_package_policies_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_package_policies_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/fleet_wrapper/get_package_policies_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/fleet_wrapper/get_package_policies_route.ts diff --git a/x-pack/plugins/osquery/common/api/index.ts b/x-pack/platform/plugins/shared/osquery/common/api/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/index.ts rename to x-pack/platform/plugins/shared/osquery/common/api/index.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/create_live_query.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/create_live_query.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/create_live_query.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/create_live_query.gen.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/create_live_query.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/live_query/create_live_query.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/create_live_query.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/create_live_query.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/live_query/create_live_query_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/create_live_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/create_live_query_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/create_live_query_route.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/find_live_query.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/find_live_query.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/find_live_query.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/find_live_query.gen.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/find_live_query.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/live_query/find_live_query.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/find_live_query.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/find_live_query.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/live_query/find_live_query_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/find_live_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/find_live_query_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/find_live_query_route.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/get_live_query_details_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_details_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/get_live_query_details_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_details_route.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/get_live_query_results.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_results.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/get_live_query_results.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_results.gen.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/get_live_query_results.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_results.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/get_live_query_results.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_results.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/live_query/get_live_query_results_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_results_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/get_live_query_results_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/get_live_query_results_route.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/live_queries.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/live_query/live_queries.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/live_queries.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/live_queries.gen.ts diff --git a/x-pack/plugins/osquery/common/api/live_query/live_queries.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/live_query/live_queries.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/live_query/live_queries.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/live_query/live_queries.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/model/default_uuid.test.ts b/x-pack/platform/plugins/shared/osquery/common/api/model/default_uuid.test.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/model/default_uuid.test.ts rename to x-pack/platform/plugins/shared/osquery/common/api/model/default_uuid.test.ts diff --git a/x-pack/plugins/osquery/common/api/model/default_uuid.ts b/x-pack/platform/plugins/shared/osquery/common/api/model/default_uuid.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/model/default_uuid.ts rename to x-pack/platform/plugins/shared/osquery/common/api/model/default_uuid.ts diff --git a/x-pack/plugins/osquery/common/api/model/non_empty_string.test.ts b/x-pack/platform/plugins/shared/osquery/common/api/model/non_empty_string.test.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/model/non_empty_string.test.ts rename to x-pack/platform/plugins/shared/osquery/common/api/model/non_empty_string.test.ts diff --git a/x-pack/plugins/osquery/common/api/model/non_empty_string.ts b/x-pack/platform/plugins/shared/osquery/common/api/model/non_empty_string.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/model/non_empty_string.ts rename to x-pack/platform/plugins/shared/osquery/common/api/model/non_empty_string.ts diff --git a/x-pack/plugins/osquery/common/api/model/schema/common_attributes.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/model/schema/common_attributes.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/model/schema/common_attributes.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/model/schema/common_attributes.gen.ts diff --git a/x-pack/plugins/osquery/common/api/model/schema/common_attributes.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/model/schema/common_attributes.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/model/schema/common_attributes.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/model/schema/common_attributes.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/packs/create_pack.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/create_pack.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/create_pack.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/create_pack.gen.ts diff --git a/x-pack/plugins/osquery/common/api/packs/create_pack.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/packs/create_pack.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/create_pack.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/packs/create_pack.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/packs/create_pack_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/create_pack_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/create_pack_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/create_pack_route.ts diff --git a/x-pack/plugins/osquery/common/api/packs/delete_packs_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/delete_packs_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/delete_packs_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/delete_packs_route.ts diff --git a/x-pack/plugins/osquery/common/api/packs/find_packs.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/find_packs.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/find_packs.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/find_packs.gen.ts diff --git a/x-pack/plugins/osquery/common/api/packs/find_packs.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/packs/find_packs.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/find_packs.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/packs/find_packs.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/packs/find_packs_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/find_packs_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/find_packs_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/find_packs_route.ts diff --git a/x-pack/plugins/osquery/common/api/packs/packs.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/packs.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/packs.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/packs.gen.ts diff --git a/x-pack/plugins/osquery/common/api/packs/packs.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/packs/packs.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/packs.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/packs/packs.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/packs/read_packs_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/read_packs_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/read_packs_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/read_packs_route.ts diff --git a/x-pack/plugins/osquery/common/api/packs/update_packs.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/update_packs.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/update_packs.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/update_packs.gen.ts diff --git a/x-pack/plugins/osquery/common/api/packs/update_packs.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/packs/update_packs.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/update_packs.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/packs/update_packs.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/packs/update_packs_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/packs/update_packs_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/packs/update_packs_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/packs/update_packs_route.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/create_saved_query.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/create_saved_query.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/create_saved_query.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/create_saved_query.gen.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/create_saved_query.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/create_saved_query.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/create_saved_query.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/create_saved_query.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/saved_query/create_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/create_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/create_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/create_saved_query_route.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/delete_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/delete_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/delete_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/delete_saved_query_route.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/find_saved_query.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/find_saved_query.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/find_saved_query.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/find_saved_query.gen.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/find_saved_query.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/find_saved_query.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/find_saved_query.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/find_saved_query.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/saved_query/find_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/find_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/find_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/find_saved_query_route.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/read_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/read_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/read_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/read_saved_query_route.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/saved_query.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/saved_query.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/saved_query.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/saved_query.gen.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/saved_query.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/saved_query.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/saved_query.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/saved_query.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/saved_query/update_saved_query.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/update_saved_query.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/update_saved_query.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/update_saved_query.gen.ts diff --git a/x-pack/plugins/osquery/common/api/saved_query/update_saved_query.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/update_saved_query.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/update_saved_query.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/update_saved_query.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/saved_query/update_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/common/api/saved_query/update_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/saved_query/update_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/common/api/saved_query/update_saved_query_route.ts diff --git a/x-pack/plugins/osquery/common/api/status/privileges_check.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/status/privileges_check.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/status/privileges_check.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/status/privileges_check.gen.ts diff --git a/x-pack/plugins/osquery/common/api/status/privileges_check.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/status/privileges_check.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/status/privileges_check.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/status/privileges_check.schema.yaml diff --git a/x-pack/plugins/osquery/common/api/status/status.gen.ts b/x-pack/platform/plugins/shared/osquery/common/api/status/status.gen.ts similarity index 100% rename from x-pack/plugins/osquery/common/api/status/status.gen.ts rename to x-pack/platform/plugins/shared/osquery/common/api/status/status.gen.ts diff --git a/x-pack/plugins/osquery/common/api/status/status.schema.yaml b/x-pack/platform/plugins/shared/osquery/common/api/status/status.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/common/api/status/status.schema.yaml rename to x-pack/platform/plugins/shared/osquery/common/api/status/status.schema.yaml diff --git a/x-pack/plugins/osquery/common/config.ts b/x-pack/platform/plugins/shared/osquery/common/config.ts similarity index 100% rename from x-pack/plugins/osquery/common/config.ts rename to x-pack/platform/plugins/shared/osquery/common/config.ts diff --git a/x-pack/plugins/osquery/common/constants.ts b/x-pack/platform/plugins/shared/osquery/common/constants.ts similarity index 100% rename from x-pack/plugins/osquery/common/constants.ts rename to x-pack/platform/plugins/shared/osquery/common/constants.ts diff --git a/x-pack/plugins/osquery/common/index.ts b/x-pack/platform/plugins/shared/osquery/common/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/index.ts rename to x-pack/platform/plugins/shared/osquery/common/index.ts diff --git a/x-pack/plugins/osquery/common/search_strategy/common/index.ts b/x-pack/platform/plugins/shared/osquery/common/search_strategy/common/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/search_strategy/common/index.ts rename to x-pack/platform/plugins/shared/osquery/common/search_strategy/common/index.ts diff --git a/x-pack/plugins/osquery/common/search_strategy/index.ts b/x-pack/platform/plugins/shared/osquery/common/search_strategy/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/search_strategy/index.ts rename to x-pack/platform/plugins/shared/osquery/common/search_strategy/index.ts diff --git a/x-pack/plugins/osquery/common/search_strategy/osquery/actions/index.ts b/x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/actions/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/search_strategy/osquery/actions/index.ts rename to x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/actions/index.ts diff --git a/x-pack/plugins/osquery/common/search_strategy/osquery/agents/index.ts b/x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/agents/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/search_strategy/osquery/agents/index.ts rename to x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/agents/index.ts diff --git a/x-pack/plugins/osquery/common/search_strategy/osquery/index.ts b/x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/search_strategy/osquery/index.ts rename to x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/index.ts diff --git a/x-pack/plugins/osquery/common/search_strategy/osquery/results/index.ts b/x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/results/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/search_strategy/osquery/results/index.ts rename to x-pack/platform/plugins/shared/osquery/common/search_strategy/osquery/results/index.ts diff --git a/x-pack/plugins/osquery/common/shared_imports.ts b/x-pack/platform/plugins/shared/osquery/common/shared_imports.ts similarity index 100% rename from x-pack/plugins/osquery/common/shared_imports.ts rename to x-pack/platform/plugins/shared/osquery/common/shared_imports.ts diff --git a/x-pack/plugins/osquery/common/translations/errors.ts b/x-pack/platform/plugins/shared/osquery/common/translations/errors.ts similarity index 100% rename from x-pack/plugins/osquery/common/translations/errors.ts rename to x-pack/platform/plugins/shared/osquery/common/translations/errors.ts diff --git a/x-pack/plugins/osquery/common/typed_json.ts b/x-pack/platform/plugins/shared/osquery/common/typed_json.ts similarity index 100% rename from x-pack/plugins/osquery/common/typed_json.ts rename to x-pack/platform/plugins/shared/osquery/common/typed_json.ts diff --git a/x-pack/plugins/osquery/common/types.ts b/x-pack/platform/plugins/shared/osquery/common/types.ts similarity index 100% rename from x-pack/plugins/osquery/common/types.ts rename to x-pack/platform/plugins/shared/osquery/common/types.ts diff --git a/x-pack/plugins/osquery/common/types/osquery_action.ts b/x-pack/platform/plugins/shared/osquery/common/types/osquery_action.ts similarity index 100% rename from x-pack/plugins/osquery/common/types/osquery_action.ts rename to x-pack/platform/plugins/shared/osquery/common/types/osquery_action.ts diff --git a/x-pack/plugins/osquery/common/utility_types.ts b/x-pack/platform/plugins/shared/osquery/common/utility_types.ts similarity index 100% rename from x-pack/plugins/osquery/common/utility_types.ts rename to x-pack/platform/plugins/shared/osquery/common/utility_types.ts diff --git a/x-pack/plugins/osquery/common/utils/aggregations.ts b/x-pack/platform/plugins/shared/osquery/common/utils/aggregations.ts similarity index 100% rename from x-pack/plugins/osquery/common/utils/aggregations.ts rename to x-pack/platform/plugins/shared/osquery/common/utils/aggregations.ts diff --git a/x-pack/plugins/osquery/common/utils/build_query/filters.ts b/x-pack/platform/plugins/shared/osquery/common/utils/build_query/filters.ts similarity index 100% rename from x-pack/plugins/osquery/common/utils/build_query/filters.ts rename to x-pack/platform/plugins/shared/osquery/common/utils/build_query/filters.ts diff --git a/x-pack/plugins/osquery/common/utils/build_query/index.ts b/x-pack/platform/plugins/shared/osquery/common/utils/build_query/index.ts similarity index 100% rename from x-pack/plugins/osquery/common/utils/build_query/index.ts rename to x-pack/platform/plugins/shared/osquery/common/utils/build_query/index.ts diff --git a/x-pack/plugins/osquery/common/utils/build_query/remove_multilines.ts b/x-pack/platform/plugins/shared/osquery/common/utils/build_query/remove_multilines.ts similarity index 100% rename from x-pack/plugins/osquery/common/utils/build_query/remove_multilines.ts rename to x-pack/platform/plugins/shared/osquery/common/utils/build_query/remove_multilines.ts diff --git a/x-pack/plugins/osquery/common/utils/converters.ts b/x-pack/platform/plugins/shared/osquery/common/utils/converters.ts similarity index 100% rename from x-pack/plugins/osquery/common/utils/converters.ts rename to x-pack/platform/plugins/shared/osquery/common/utils/converters.ts diff --git a/x-pack/plugins/osquery/common/utils/replace_params_query.test.ts b/x-pack/platform/plugins/shared/osquery/common/utils/replace_params_query.test.ts similarity index 100% rename from x-pack/plugins/osquery/common/utils/replace_params_query.test.ts rename to x-pack/platform/plugins/shared/osquery/common/utils/replace_params_query.test.ts diff --git a/x-pack/plugins/osquery/common/utils/replace_params_query.ts b/x-pack/platform/plugins/shared/osquery/common/utils/replace_params_query.ts similarity index 100% rename from x-pack/plugins/osquery/common/utils/replace_params_query.ts rename to x-pack/platform/plugins/shared/osquery/common/utils/replace_params_query.ts diff --git a/x-pack/plugins/osquery/cypress/.gitignore b/x-pack/platform/plugins/shared/osquery/cypress/.gitignore similarity index 100% rename from x-pack/plugins/osquery/cypress/.gitignore rename to x-pack/platform/plugins/shared/osquery/cypress/.gitignore diff --git a/x-pack/platform/plugins/shared/osquery/cypress/README.md b/x-pack/platform/plugins/shared/osquery/cypress/README.md new file mode 100644 index 0000000000000..fb8c3c609108b --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/cypress/README.md @@ -0,0 +1,138 @@ +# Cypress Tests + +The `osquery/cypress` directory contains functional UI tests that execute using [Cypress](https://www.cypress.io/). + +## Running the tests + +There are currently three ways to run the tests, comprised of two execution modes and two target environments, which will be detailed below. + +### Execution modes + +#### Interactive mode + +When you run Cypress in interactive mode, an interactive runner is displayed that allows you to see commands as they execute while also viewing the application under test. For more information, please see [cypress documentation](https://docs.cypress.io/guides/core-concepts/test-runner.html#Overview). + +#### Headless mode + +A headless browser is a browser simulation program that does not have a user interface. These programs operate like any other browser, but do not display any UI. This is why meanwhile you are executing the tests on this mode you are not going to see the application under test. Just the output of the test is displayed on the terminal once the execution is finished. + +### Target environments + +#### FTR (CI) + +This is the configuration used by CI. It uses the FTR to spawn both a Kibana instance (http://localhost:5620) and an Elasticsearch instance (http://localhost:9220) with a preloaded minimum set of data (see preceding "Test data" section), and then executes cypress against this stack. You can find this configuration in `x-pack/test/osquery_cypress` + +### Test Execution: Examples + +#### FTR + Headless (Chrome) + +Since this is how tests are run on CI, this will likely be the configuration you want to reproduce failures locally, etc. + +```shell +# bootstrap kibana from the project root +yarn kbn bootstrap + +# build the plugins/assets that cypress will execute against +node scripts/build_kibana_platform_plugins + +# launch the cypress test runner +cd x-pack/platform/plugins/shared/osquery +yarn cypress:run-as-ci +``` +#### FTR + Interactive + +This is the preferred mode for developing new tests. + +```shell +# bootstrap kibana from the project root +yarn kbn bootstrap + +# build the plugins/assets that cypress will execute against +node scripts/build_kibana_platform_plugins + +# launch the cypress test runner +cd x-pack/platform/plugins/shared/osquery +yarn cypress:open-as-ci +``` + +Note that you can select the browser you want to use on the top right side of the interactive runner. + +## Folder Structure + +### integration/ + +Cypress convention. Contains the specs that are going to be executed. + +### fixtures/ + +Cypress convention. Fixtures are used as external pieces of static data when we stub responses. + +### plugins/ + +Cypress convention. As a convenience, by default Cypress will automatically include the plugins file cypress/plugins/index.js before every single spec file it runs. + +### screens/ + +Contains the elements we want to interact with in our tests. + +Each file inside the screens folder represents a screen in our application. + +### tasks/ + +_Tasks_ are functions that may be reused across tests. + +Each file inside the tasks folder represents a screen of our application. + +## Test data + +The data the tests need: + +- Is generated on the fly using our application APIs (preferred way) +- Is ingested on the ELS instance using the `es_archive` utility + +### How to generate a new archive + +**Note:** As mentioned above, archives are only meant to contain external data, e.g. beats data. Due to the tendency for archived domain objects (rules, signals) to quickly become out of date, it is strongly suggested that you generate this data within the test, through interaction with either the UI or the API. + +We use es_archiver to manage the data that our Cypress tests need. + +1. Set up a clean instance of kibana and elasticsearch (if this is not possible, try to clean/minimize the data that you are going to archive). +2. With the kibana and elasticsearch instance up and running, create the data that you need for your test. +3. When you are sure that you have all the data you need run the following command from: `x-pack/platform/plugins/shared/osquery` + +```sh +node ../../../../../scripts/es_archiver save <nameOfTheFolderWhereDataIsSaved> <indexPatternsToBeSaved> --dir ../../test/osquery_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http://<elasticsearchUsername>:<elasticsearchPassword>@<elasticsearchHost>:<elasticsearchPort> +``` + +Example: + +```sh +node ../../../../../scripts/es_archiver save custom_rules ".kibana",".siem-signal*" --dir ../../test/osquery_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http://elastic:changeme@localhost:9220 +``` + +Note that the command will create the folder if it does not exist. + +## Development Best Practices + +### Clean up the state + +Remember to clean up the state of the test after its execution, typically with the `cleanKibana` function. Be mindful of failure scenarios, as well: if your test fails, will it leave the environment in a recoverable state? + +### Minimize the use of es_archive + +When possible, create all the data that you need for executing the tests using the application APIS or the UI. + +### Speed up test execution time + +Loading the web page takes a big amount of time, in order to minimize that impact, the following points should be +taken into consideration until another solution is implemented: + +- Group the tests that are similar in different contexts. +- For every context login only once, clean the state between tests if needed without re-loading the page. +- All tests in a spec file must be order-independent. + +Remember that minimizing the number of times the web page is loaded, we minimize as well the execution time. + +## Linting + +Optional linting rules for Cypress and linting setup can be found [here](https://github.com/cypress-io/eslint-plugin-cypress#usage) diff --git a/x-pack/plugins/osquery/cypress/cypress.config.ts b/x-pack/platform/plugins/shared/osquery/cypress/cypress.config.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/cypress.config.ts rename to x-pack/platform/plugins/shared/osquery/cypress/cypress.config.ts diff --git a/x-pack/plugins/osquery/cypress/cypress_base.config.ts b/x-pack/platform/plugins/shared/osquery/cypress/cypress_base.config.ts similarity index 86% rename from x-pack/plugins/osquery/cypress/cypress_base.config.ts rename to x-pack/platform/plugins/shared/osquery/cypress/cypress_base.config.ts index cea74dcd9ee60..7594d33496ddc 100644 --- a/x-pack/plugins/osquery/cypress/cypress_base.config.ts +++ b/x-pack/platform/plugins/shared/osquery/cypress/cypress_base.config.ts @@ -25,18 +25,18 @@ export const getCypressBaseConfig = ( ): Cypress.ConfigOptions => merge( { - reporter: '../../../node_modules/cypress-multi-reporters', + reporter: '../../../../../node_modules/cypress-multi-reporters', reporterOptions: { - configFile: './cypress/reporter_config.json', + configFile: './reporter_config.json', }, defaultCommandTimeout: 60000, execTimeout: 120000, pageLoadTimeout: 12000, - screenshotsFolder: '../../../target/kibana-osquery/cypress/screenshots', + screenshotsFolder: '../../../../../target/kibana-osquery/cypress/screenshots', trashAssetsBeforeRuns: false, video: true, - videosFolder: '../../../target/kibana-osquery/cypress/videos', + videosFolder: '../../../../../target/kibana-osquery/cypress/videos', retries: { runMode: 1, @@ -53,7 +53,7 @@ export const getCypressBaseConfig = ( }, e2e: { - specPattern: './cypress/e2e/**/*.cy.ts', + specPattern: './e2e/**/*.cy.ts', experimentalRunAllSpecs: true, experimentalMemoryManagement: true, numTestsKeptInMemory: 3, diff --git a/x-pack/plugins/osquery/cypress/e2e/all/add_integration.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/add_integration.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/add_integration.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/add_integration.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_automated_action_results.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_automated_action_results.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/alerts_automated_action_results.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_automated_action_results.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_cases.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_cases.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/alerts_cases.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_cases.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_linked_apps.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_linked_apps.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/alerts_linked_apps.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_linked_apps.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_multiple_agents.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_multiple_agents.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/alerts_multiple_agents.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_multiple_agents.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/cases.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/cases.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/cases.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/cases.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/custom_space.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/custom_space.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/custom_space.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/custom_space.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/ecs_mappings.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/ecs_mappings.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/ecs_mappings.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/ecs_mappings.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/edit_saved_queries.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/edit_saved_queries.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/edit_saved_queries.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/edit_saved_queries.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/live_query.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/live_query.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/live_query.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/live_query.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/live_query_packs.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/live_query_packs.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/live_query_packs.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/live_query_packs.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/live_query_run.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/live_query_run.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/live_query_run.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/live_query_run.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/metrics.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/metrics.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/metrics.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/metrics.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/packs_create_edit.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/packs_create_edit.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/packs_create_edit.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/packs_create_edit.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/packs_integration.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/packs_integration.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/packs_integration.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/packs_integration.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/saved_queries.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/saved_queries.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/saved_queries.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/saved_queries.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/all/timelines.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/all/timelines.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/all/timelines.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/all/timelines.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/api/live_query_results.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/api/live_query_results.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/api/live_query_results.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/api/live_query_results.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/api/packs.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/api/packs.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/api/packs.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/api/packs.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/roles/alert_test.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/roles/alert_test.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/roles/alert_test.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/roles/alert_test.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/roles/reader.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/roles/reader.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/roles/reader.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/roles/reader.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/roles/t1_and_t2_analyst.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/roles/t1_and_t2_analyst.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/roles/t1_and_t2_analyst.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/roles/t1_and_t2_analyst.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/tiers/endpoint_complete.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/endpoint_complete.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/tiers/endpoint_complete.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/endpoint_complete.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/tiers/endpoint_essentials.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/endpoint_essentials.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/tiers/endpoint_essentials.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/endpoint_essentials.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/tiers/security_complete.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/security_complete.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/tiers/security_complete.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/security_complete.cy.ts diff --git a/x-pack/plugins/osquery/cypress/e2e/tiers/security_essentials.cy.ts b/x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/security_essentials.cy.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/e2e/tiers/security_essentials.cy.ts rename to x-pack/platform/plugins/shared/osquery/cypress/e2e/tiers/security_essentials.cy.ts diff --git a/x-pack/plugins/osquery/cypress/plugins/index.ts b/x-pack/platform/plugins/shared/osquery/cypress/plugins/index.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/plugins/index.ts rename to x-pack/platform/plugins/shared/osquery/cypress/plugins/index.ts diff --git a/x-pack/platform/plugins/shared/osquery/cypress/reporter_config.json b/x-pack/platform/plugins/shared/osquery/cypress/reporter_config.json new file mode 100644 index 0000000000000..048881736ca5e --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/cypress/reporter_config.json @@ -0,0 +1,10 @@ +{ + "reporterEnabled": "mochawesome, mocha-junit-reporter", + "reporterOptions": { + "html": false, + "json": true, + "mochaFile": "../../../../../target/kibana-osquery/cypress/results/TEST-osquery-cypress-[hash].xml", + "overwrite": false, + "reportDir": "../../../../../target/kibana-osquery/cypress/results" + } +} diff --git a/x-pack/plugins/osquery/cypress/screens/fleet.ts b/x-pack/platform/plugins/shared/osquery/cypress/screens/fleet.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/screens/fleet.ts rename to x-pack/platform/plugins/shared/osquery/cypress/screens/fleet.ts diff --git a/x-pack/plugins/osquery/cypress/screens/integrations.ts b/x-pack/platform/plugins/shared/osquery/cypress/screens/integrations.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/screens/integrations.ts rename to x-pack/platform/plugins/shared/osquery/cypress/screens/integrations.ts diff --git a/x-pack/plugins/osquery/cypress/screens/live_query.ts b/x-pack/platform/plugins/shared/osquery/cypress/screens/live_query.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/screens/live_query.ts rename to x-pack/platform/plugins/shared/osquery/cypress/screens/live_query.ts diff --git a/x-pack/plugins/osquery/cypress/screens/navigation.ts b/x-pack/platform/plugins/shared/osquery/cypress/screens/navigation.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/screens/navigation.ts rename to x-pack/platform/plugins/shared/osquery/cypress/screens/navigation.ts diff --git a/x-pack/plugins/osquery/cypress/screens/osquery.ts b/x-pack/platform/plugins/shared/osquery/cypress/screens/osquery.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/screens/osquery.ts rename to x-pack/platform/plugins/shared/osquery/cypress/screens/osquery.ts diff --git a/x-pack/plugins/osquery/cypress/screens/packs.ts b/x-pack/platform/plugins/shared/osquery/cypress/screens/packs.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/screens/packs.ts rename to x-pack/platform/plugins/shared/osquery/cypress/screens/packs.ts diff --git a/x-pack/plugins/osquery/cypress/serverless_cypress.config.ts b/x-pack/platform/plugins/shared/osquery/cypress/serverless_cypress.config.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/serverless_cypress.config.ts rename to x-pack/platform/plugins/shared/osquery/cypress/serverless_cypress.config.ts diff --git a/x-pack/plugins/osquery/cypress/serverless_cypress_qa.config.ts b/x-pack/platform/plugins/shared/osquery/cypress/serverless_cypress_qa.config.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/serverless_cypress_qa.config.ts rename to x-pack/platform/plugins/shared/osquery/cypress/serverless_cypress_qa.config.ts diff --git a/x-pack/plugins/osquery/cypress/support/e2e.ts b/x-pack/platform/plugins/shared/osquery/cypress/support/e2e.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/support/e2e.ts rename to x-pack/platform/plugins/shared/osquery/cypress/support/e2e.ts diff --git a/x-pack/plugins/osquery/cypress/support/filter_videos.ts b/x-pack/platform/plugins/shared/osquery/cypress/support/filter_videos.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/support/filter_videos.ts rename to x-pack/platform/plugins/shared/osquery/cypress/support/filter_videos.ts diff --git a/x-pack/plugins/osquery/cypress/support/project_controller_osquery_roles.yml b/x-pack/platform/plugins/shared/osquery/cypress/support/project_controller_osquery_roles.yml similarity index 100% rename from x-pack/plugins/osquery/cypress/support/project_controller_osquery_roles.yml rename to x-pack/platform/plugins/shared/osquery/cypress/support/project_controller_osquery_roles.yml diff --git a/x-pack/plugins/osquery/cypress/support/roles.ts b/x-pack/platform/plugins/shared/osquery/cypress/support/roles.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/support/roles.ts rename to x-pack/platform/plugins/shared/osquery/cypress/support/roles.ts diff --git a/x-pack/plugins/osquery/cypress/support/setup_data_loader_tasks.ts b/x-pack/platform/plugins/shared/osquery/cypress/support/setup_data_loader_tasks.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/support/setup_data_loader_tasks.ts rename to x-pack/platform/plugins/shared/osquery/cypress/support/setup_data_loader_tasks.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/api_fixtures.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/api_fixtures.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/api_fixtures.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/api_fixtures.ts diff --git a/x-pack/platform/plugins/shared/osquery/cypress/tasks/archiver.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/archiver.ts new file mode 100644 index 0000000000000..2fb9381993084 --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/cypress/tasks/archiver.ts @@ -0,0 +1,28 @@ +/* + * 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 enum ArchiverMethod { + SAVE = 'save', + LOAD = 'load', + UNLOAD = 'unload', +} + +export const runKbnArchiverScript = ( + method: ArchiverMethod, + fileName: string, + space = 'default' +) => { + const { + ELASTICSEARCH_USERNAME, + ELASTICSEARCH_PASSWORD, + hostname: HOSTNAME, + configport: PORT, + } = Cypress.env(); + const script = `node ../../../../../scripts/kbn_archiver.js --space ${space} --kibana-url http://${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD}@${HOSTNAME}:${PORT} ${method} ./cypress/fixtures/saved_objects/${fileName}.ndjson`; + + cy.exec(script, { env: { NODE_TLS_REJECT_UNAUTHORIZED: 1 } }); +}; diff --git a/x-pack/plugins/osquery/cypress/tasks/common.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/common.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/common.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/common.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/integrations.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/integrations.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/integrations.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/integrations.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/inventory.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/inventory.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/inventory.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/inventory.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/live_query.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/live_query.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/live_query.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/live_query.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/login.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/login.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/login.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/login.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/navigation.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/navigation.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/navigation.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/navigation.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/packs.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/packs.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/packs.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/packs.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/response_actions.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/response_actions.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/response_actions.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/response_actions.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/serverless.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/serverless.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/serverless.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/serverless.ts diff --git a/x-pack/plugins/osquery/cypress/tasks/wait_until.ts b/x-pack/platform/plugins/shared/osquery/cypress/tasks/wait_until.ts similarity index 100% rename from x-pack/plugins/osquery/cypress/tasks/wait_until.ts rename to x-pack/platform/plugins/shared/osquery/cypress/tasks/wait_until.ts diff --git a/x-pack/platform/plugins/shared/osquery/cypress/tsconfig.json b/x-pack/platform/plugins/shared/osquery/cypress/tsconfig.json new file mode 100644 index 0000000000000..8a106ed78c34d --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/cypress/tsconfig.json @@ -0,0 +1,41 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "include": [ + "**/*", + "./cypress.config.ts", + "./serverless_cypress.config.ts", + "./serverless_cypress_qa.config.ts", + "../../../../../test_serverless/shared/lib", + ], + "exclude": [ + "target/**/*", + "../../../../../test_serverless/shared/lib/security/default_http_headers.ts" + ], + "compilerOptions": { + "outDir": "target/types", + "types": [ + "cypress", + "node", + ], + "resolveJsonModule": true, + }, + "kbn_references": [ + "@kbn/test-suites-serverless", + { + "path": "../../../../../test/security_solution_cypress/cypress/tsconfig.json" + }, + "@kbn/cypress-config", + // cypress projects that are nested inside of other ts project use code + // from the parent ts project in ways that can't be automatically deteceted + // at this time so we have to force the inclusion of this reference + { + "path": "../tsconfig.json", + "force": true + }, + "@kbn/security-solution-plugin", + "@kbn/fleet-plugin", + "@kbn/cases-plugin", + "@kbn/security-solution-plugin/public/management/cypress", + "@kbn/test-suites-xpack/security_solution_cypress/cypress", + ] +} diff --git a/x-pack/plugins/osquery/docs/openapi/ess/osquery_api_2023_10_31.bundled.schema.yaml b/x-pack/platform/plugins/shared/osquery/docs/openapi/ess/osquery_api_2023_10_31.bundled.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/docs/openapi/ess/osquery_api_2023_10_31.bundled.schema.yaml rename to x-pack/platform/plugins/shared/osquery/docs/openapi/ess/osquery_api_2023_10_31.bundled.schema.yaml diff --git a/x-pack/plugins/osquery/docs/openapi/serverless/osquery_api_2023_10_31.bundled.schema.yaml b/x-pack/platform/plugins/shared/osquery/docs/openapi/serverless/osquery_api_2023_10_31.bundled.schema.yaml similarity index 100% rename from x-pack/plugins/osquery/docs/openapi/serverless/osquery_api_2023_10_31.bundled.schema.yaml rename to x-pack/platform/plugins/shared/osquery/docs/openapi/serverless/osquery_api_2023_10_31.bundled.schema.yaml diff --git a/x-pack/platform/plugins/shared/osquery/jest.config.js b/x-pack/platform/plugins/shared/osquery/jest.config.js new file mode 100644 index 0000000000000..5214584e4ee5c --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/jest.config.js @@ -0,0 +1,17 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/shared/osquery'], + coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/shared/osquery', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/shared/osquery/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/osquery/kibana.jsonc b/x-pack/platform/plugins/shared/osquery/kibana.jsonc similarity index 100% rename from x-pack/plugins/osquery/kibana.jsonc rename to x-pack/platform/plugins/shared/osquery/kibana.jsonc diff --git a/x-pack/platform/plugins/shared/osquery/package.json b/x-pack/platform/plugins/shared/osquery/package.json new file mode 100644 index 0000000000000..20aa1af1c4314 --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/package.json @@ -0,0 +1,24 @@ +{ + "author": "Elastic", + "name": "@kbn/osquery-plugin", + "version": "1.0.0", + "private": true, + "license": "Elastic License 2.0", + "scripts": { + "cypress:burn": "yarn cypress:run --env burn=2 --headed", + "cypress:changed-specs-only": "yarn cypress:run --changed-specs-only --env burn=2", + "cypress": "NODE_OPTIONS=--openssl-legacy-provider node ../../../../plugins/security_solution/scripts/start_cypress_parallel --config-file ../../platform/plugins/shared/osquery/cypress/serverless_cypress.config.ts --ftr-config-file ../../../../../x-pack/test/osquery_cypress/cli_config", + "cypress:open": "yarn cypress open", + "cypress:run": "yarn cypress run", + "cypress:serverless": "NODE_OPTIONS=--openssl-legacy-provider node ../../../../plugins/security_solution/scripts/start_cypress_parallel --config-file ../../platform/plugins/shared/osquery/cypress/serverless_cypress.config.ts --ftr-config-file ../../../../../x-pack/test/osquery_cypress/serverless_cli_config", + "cypress:serverless:open": "yarn cypress:serverless open", + "cypress:serverless:run": "yarn cypress:serverless run", + "cypress:qa:serverless": "NODE_OPTIONS=--openssl-legacy-provider node ../../../../plugins/security_solution/scripts/start_cypress_parallel_serverless --config-file ../../platform/plugins/shared/osquery/cypress/serverless_cypress.config.ts --onBeforeHook ../../../../test/osquery_cypress/runner_qa.ts", + "cypress:qa:serverless:run": "yarn cypress:qa:serverless run", + "nyc": "../../../../../node_modules/.bin/nyc report --reporter=text-summary", + "junit:merge": "../../../../../node_modules/.bin/mochawesome-merge ../../../target/kibana-osquery/cypress/results/mochawesome*.json > ../../../target/kibana-osquery/cypress/results/output.json && ../../../node_modules/.bin/marge ../../../target/kibana-osquery/cypress/results/output.json --reportDir ../../../target/kibana-osquery/cypress/results && yarn junit:transform && mkdir -p ../../../target/junit && cp ../../../target/kibana-osquery/cypress/results/*.xml ../../../target/junit/", + "junit:transform": "node ../security_solution/scripts/junit_transformer --pathPattern '../../../../../target/kibana-osquery/cypress/results/*.xml' --rootDirectory ../../../ --reportName 'Osquery Cypress' --writeInPlace", + "openapi:generate": "node scripts/openapi/generate", + "openapi:bundle": "node scripts/openapi/bundle" + } +} diff --git a/x-pack/plugins/osquery/public/action_results/action_agents_status_badges.tsx b/x-pack/platform/plugins/shared/osquery/public/action_results/action_agents_status_badges.tsx similarity index 100% rename from x-pack/plugins/osquery/public/action_results/action_agents_status_badges.tsx rename to x-pack/platform/plugins/shared/osquery/public/action_results/action_agents_status_badges.tsx diff --git a/x-pack/plugins/osquery/public/action_results/action_agents_status_bar.tsx b/x-pack/platform/plugins/shared/osquery/public/action_results/action_agents_status_bar.tsx similarity index 100% rename from x-pack/plugins/osquery/public/action_results/action_agents_status_bar.tsx rename to x-pack/platform/plugins/shared/osquery/public/action_results/action_agents_status_bar.tsx diff --git a/x-pack/plugins/osquery/public/action_results/action_results_summary.tsx b/x-pack/platform/plugins/shared/osquery/public/action_results/action_results_summary.tsx similarity index 100% rename from x-pack/plugins/osquery/public/action_results/action_results_summary.tsx rename to x-pack/platform/plugins/shared/osquery/public/action_results/action_results_summary.tsx diff --git a/x-pack/plugins/osquery/public/action_results/services/agent_status.tsx b/x-pack/platform/plugins/shared/osquery/public/action_results/services/agent_status.tsx similarity index 100% rename from x-pack/plugins/osquery/public/action_results/services/agent_status.tsx rename to x-pack/platform/plugins/shared/osquery/public/action_results/services/agent_status.tsx diff --git a/x-pack/plugins/osquery/public/action_results/translations.ts b/x-pack/platform/plugins/shared/osquery/public/action_results/translations.ts similarity index 100% rename from x-pack/plugins/osquery/public/action_results/translations.ts rename to x-pack/platform/plugins/shared/osquery/public/action_results/translations.ts diff --git a/x-pack/plugins/osquery/public/action_results/types.ts b/x-pack/platform/plugins/shared/osquery/public/action_results/types.ts similarity index 100% rename from x-pack/plugins/osquery/public/action_results/types.ts rename to x-pack/platform/plugins/shared/osquery/public/action_results/types.ts diff --git a/x-pack/plugins/osquery/public/action_results/use_action_privileges.tsx b/x-pack/platform/plugins/shared/osquery/public/action_results/use_action_privileges.tsx similarity index 100% rename from x-pack/plugins/osquery/public/action_results/use_action_privileges.tsx rename to x-pack/platform/plugins/shared/osquery/public/action_results/use_action_privileges.tsx diff --git a/x-pack/plugins/osquery/public/action_results/use_action_results.ts b/x-pack/platform/plugins/shared/osquery/public/action_results/use_action_results.ts similarity index 100% rename from x-pack/plugins/osquery/public/action_results/use_action_results.ts rename to x-pack/platform/plugins/shared/osquery/public/action_results/use_action_results.ts diff --git a/x-pack/plugins/osquery/public/actions/actions_table.tsx b/x-pack/platform/plugins/shared/osquery/public/actions/actions_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/actions/actions_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/actions/actions_table.tsx diff --git a/x-pack/plugins/osquery/public/actions/translations.ts b/x-pack/platform/plugins/shared/osquery/public/actions/translations.ts similarity index 100% rename from x-pack/plugins/osquery/public/actions/translations.ts rename to x-pack/platform/plugins/shared/osquery/public/actions/translations.ts diff --git a/x-pack/plugins/osquery/public/actions/use_all_live_queries.ts b/x-pack/platform/plugins/shared/osquery/public/actions/use_all_live_queries.ts similarity index 100% rename from x-pack/plugins/osquery/public/actions/use_all_live_queries.ts rename to x-pack/platform/plugins/shared/osquery/public/actions/use_all_live_queries.ts diff --git a/x-pack/plugins/osquery/public/actions/use_live_query_details.ts b/x-pack/platform/plugins/shared/osquery/public/actions/use_live_query_details.ts similarity index 100% rename from x-pack/plugins/osquery/public/actions/use_live_query_details.ts rename to x-pack/platform/plugins/shared/osquery/public/actions/use_live_query_details.ts diff --git a/x-pack/plugins/osquery/public/agent_policies/agents_policy_link.tsx b/x-pack/platform/plugins/shared/osquery/public/agent_policies/agents_policy_link.tsx similarity index 100% rename from x-pack/plugins/osquery/public/agent_policies/agents_policy_link.tsx rename to x-pack/platform/plugins/shared/osquery/public/agent_policies/agents_policy_link.tsx diff --git a/x-pack/plugins/osquery/public/agent_policies/index.tsx b/x-pack/platform/plugins/shared/osquery/public/agent_policies/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/agent_policies/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/agent_policies/index.tsx diff --git a/x-pack/plugins/osquery/public/agent_policies/use_agent_policies.ts b/x-pack/platform/plugins/shared/osquery/public/agent_policies/use_agent_policies.ts similarity index 100% rename from x-pack/plugins/osquery/public/agent_policies/use_agent_policies.ts rename to x-pack/platform/plugins/shared/osquery/public/agent_policies/use_agent_policies.ts diff --git a/x-pack/plugins/osquery/public/agent_policies/use_agent_policy.ts b/x-pack/platform/plugins/shared/osquery/public/agent_policies/use_agent_policy.ts similarity index 100% rename from x-pack/plugins/osquery/public/agent_policies/use_agent_policy.ts rename to x-pack/platform/plugins/shared/osquery/public/agent_policies/use_agent_policy.ts diff --git a/x-pack/plugins/osquery/public/agents/agent_grouper.test.ts b/x-pack/platform/plugins/shared/osquery/public/agents/agent_grouper.test.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/agent_grouper.test.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/agent_grouper.test.ts diff --git a/x-pack/plugins/osquery/public/agents/agent_grouper.ts b/x-pack/platform/plugins/shared/osquery/public/agents/agent_grouper.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/agent_grouper.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/agent_grouper.ts diff --git a/x-pack/plugins/osquery/public/agents/agent_id_to_name.tsx b/x-pack/platform/plugins/shared/osquery/public/agents/agent_id_to_name.tsx similarity index 100% rename from x-pack/plugins/osquery/public/agents/agent_id_to_name.tsx rename to x-pack/platform/plugins/shared/osquery/public/agents/agent_id_to_name.tsx diff --git a/x-pack/plugins/osquery/public/agents/agents_table.tsx b/x-pack/platform/plugins/shared/osquery/public/agents/agents_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/agents/agents_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/agents/agents_table.tsx diff --git a/x-pack/plugins/osquery/public/agents/helpers.test.ts b/x-pack/platform/plugins/shared/osquery/public/agents/helpers.test.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/helpers.test.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/helpers.test.ts diff --git a/x-pack/plugins/osquery/public/agents/helpers.ts b/x-pack/platform/plugins/shared/osquery/public/agents/helpers.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/helpers.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/helpers.ts diff --git a/x-pack/plugins/osquery/public/agents/translations.ts b/x-pack/platform/plugins/shared/osquery/public/agents/translations.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/translations.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/translations.ts diff --git a/x-pack/plugins/osquery/public/agents/types.ts b/x-pack/platform/plugins/shared/osquery/public/agents/types.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/types.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/types.ts diff --git a/x-pack/plugins/osquery/public/agents/use_agent_details.ts b/x-pack/platform/plugins/shared/osquery/public/agents/use_agent_details.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/use_agent_details.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/use_agent_details.ts diff --git a/x-pack/plugins/osquery/public/agents/use_agent_policy_agent_ids.ts b/x-pack/platform/plugins/shared/osquery/public/agents/use_agent_policy_agent_ids.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/use_agent_policy_agent_ids.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/use_agent_policy_agent_ids.ts diff --git a/x-pack/plugins/osquery/public/agents/use_agent_status.ts b/x-pack/platform/plugins/shared/osquery/public/agents/use_agent_status.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/use_agent_status.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/use_agent_status.ts diff --git a/x-pack/plugins/osquery/public/agents/use_all_agents.ts b/x-pack/platform/plugins/shared/osquery/public/agents/use_all_agents.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/use_all_agents.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/use_all_agents.ts diff --git a/x-pack/plugins/osquery/public/agents/use_osquery_policies.ts b/x-pack/platform/plugins/shared/osquery/public/agents/use_osquery_policies.ts similarity index 100% rename from x-pack/plugins/osquery/public/agents/use_osquery_policies.ts rename to x-pack/platform/plugins/shared/osquery/public/agents/use_osquery_policies.ts diff --git a/x-pack/plugins/osquery/public/application.tsx b/x-pack/platform/plugins/shared/osquery/public/application.tsx similarity index 100% rename from x-pack/plugins/osquery/public/application.tsx rename to x-pack/platform/plugins/shared/osquery/public/application.tsx diff --git a/x-pack/plugins/osquery/public/assets/constants.ts b/x-pack/platform/plugins/shared/osquery/public/assets/constants.ts similarity index 100% rename from x-pack/plugins/osquery/public/assets/constants.ts rename to x-pack/platform/plugins/shared/osquery/public/assets/constants.ts diff --git a/x-pack/plugins/osquery/public/assets/use_assets_status.ts b/x-pack/platform/plugins/shared/osquery/public/assets/use_assets_status.ts similarity index 100% rename from x-pack/plugins/osquery/public/assets/use_assets_status.ts rename to x-pack/platform/plugins/shared/osquery/public/assets/use_assets_status.ts diff --git a/x-pack/plugins/osquery/public/assets/use_import_assets.ts b/x-pack/platform/plugins/shared/osquery/public/assets/use_import_assets.ts similarity index 100% rename from x-pack/plugins/osquery/public/assets/use_import_assets.ts rename to x-pack/platform/plugins/shared/osquery/public/assets/use_import_assets.ts diff --git a/x-pack/plugins/osquery/public/cases/add_to_cases.tsx b/x-pack/platform/plugins/shared/osquery/public/cases/add_to_cases.tsx similarity index 100% rename from x-pack/plugins/osquery/public/cases/add_to_cases.tsx rename to x-pack/platform/plugins/shared/osquery/public/cases/add_to_cases.tsx diff --git a/x-pack/plugins/osquery/public/cases/add_to_cases_button.tsx b/x-pack/platform/plugins/shared/osquery/public/cases/add_to_cases_button.tsx similarity index 100% rename from x-pack/plugins/osquery/public/cases/add_to_cases_button.tsx rename to x-pack/platform/plugins/shared/osquery/public/cases/add_to_cases_button.tsx diff --git a/x-pack/plugins/osquery/public/common/contexts.tsx b/x-pack/platform/plugins/shared/osquery/public/common/contexts.tsx similarity index 100% rename from x-pack/plugins/osquery/public/common/contexts.tsx rename to x-pack/platform/plugins/shared/osquery/public/common/contexts.tsx diff --git a/x-pack/plugins/osquery/public/common/helpers.ts b/x-pack/platform/plugins/shared/osquery/public/common/helpers.ts similarity index 100% rename from x-pack/plugins/osquery/public/common/helpers.ts rename to x-pack/platform/plugins/shared/osquery/public/common/helpers.ts diff --git a/x-pack/plugins/osquery/public/common/hooks/index.tsx b/x-pack/platform/plugins/shared/osquery/public/common/hooks/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/common/hooks/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/common/hooks/index.tsx diff --git a/x-pack/plugins/osquery/public/common/hooks/use_breadcrumbs.tsx b/x-pack/platform/plugins/shared/osquery/public/common/hooks/use_breadcrumbs.tsx similarity index 100% rename from x-pack/plugins/osquery/public/common/hooks/use_breadcrumbs.tsx rename to x-pack/platform/plugins/shared/osquery/public/common/hooks/use_breadcrumbs.tsx diff --git a/x-pack/plugins/osquery/public/common/hooks/use_discover_link.tsx b/x-pack/platform/plugins/shared/osquery/public/common/hooks/use_discover_link.tsx similarity index 100% rename from x-pack/plugins/osquery/public/common/hooks/use_discover_link.tsx rename to x-pack/platform/plugins/shared/osquery/public/common/hooks/use_discover_link.tsx diff --git a/x-pack/plugins/osquery/public/common/hooks/use_error_toast.tsx b/x-pack/platform/plugins/shared/osquery/public/common/hooks/use_error_toast.tsx similarity index 100% rename from x-pack/plugins/osquery/public/common/hooks/use_error_toast.tsx rename to x-pack/platform/plugins/shared/osquery/public/common/hooks/use_error_toast.tsx diff --git a/x-pack/plugins/osquery/public/common/hooks/use_logs_data_view.tsx b/x-pack/platform/plugins/shared/osquery/public/common/hooks/use_logs_data_view.tsx similarity index 100% rename from x-pack/plugins/osquery/public/common/hooks/use_logs_data_view.tsx rename to x-pack/platform/plugins/shared/osquery/public/common/hooks/use_logs_data_view.tsx diff --git a/x-pack/plugins/osquery/public/common/hooks/use_osquery_integration.tsx b/x-pack/platform/plugins/shared/osquery/public/common/hooks/use_osquery_integration.tsx similarity index 100% rename from x-pack/plugins/osquery/public/common/hooks/use_osquery_integration.tsx rename to x-pack/platform/plugins/shared/osquery/public/common/hooks/use_osquery_integration.tsx diff --git a/x-pack/plugins/osquery/public/common/lib/kibana/index.ts b/x-pack/platform/plugins/shared/osquery/public/common/lib/kibana/index.ts similarity index 100% rename from x-pack/plugins/osquery/public/common/lib/kibana/index.ts rename to x-pack/platform/plugins/shared/osquery/public/common/lib/kibana/index.ts diff --git a/x-pack/plugins/osquery/public/common/lib/kibana/kibana_react.ts b/x-pack/platform/plugins/shared/osquery/public/common/lib/kibana/kibana_react.ts similarity index 100% rename from x-pack/plugins/osquery/public/common/lib/kibana/kibana_react.ts rename to x-pack/platform/plugins/shared/osquery/public/common/lib/kibana/kibana_react.ts diff --git a/x-pack/plugins/osquery/public/common/page_paths.ts b/x-pack/platform/plugins/shared/osquery/public/common/page_paths.ts similarity index 100% rename from x-pack/plugins/osquery/public/common/page_paths.ts rename to x-pack/platform/plugins/shared/osquery/public/common/page_paths.ts diff --git a/x-pack/plugins/osquery/public/common/schemas/ecs/v8.12.0.json b/x-pack/platform/plugins/shared/osquery/public/common/schemas/ecs/v8.12.0.json similarity index 100% rename from x-pack/plugins/osquery/public/common/schemas/ecs/v8.12.0.json rename to x-pack/platform/plugins/shared/osquery/public/common/schemas/ecs/v8.12.0.json diff --git a/x-pack/plugins/osquery/public/common/schemas/osquery/v5.13.1.json b/x-pack/platform/plugins/shared/osquery/public/common/schemas/osquery/v5.13.1.json similarity index 100% rename from x-pack/plugins/osquery/public/common/schemas/osquery/v5.13.1.json rename to x-pack/platform/plugins/shared/osquery/public/common/schemas/osquery/v5.13.1.json diff --git a/x-pack/plugins/osquery/public/components/app.tsx b/x-pack/platform/plugins/shared/osquery/public/components/app.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/app.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/app.tsx diff --git a/x-pack/plugins/osquery/public/components/empty_state.tsx b/x-pack/platform/plugins/shared/osquery/public/components/empty_state.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/empty_state.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/empty_state.tsx diff --git a/x-pack/plugins/osquery/public/components/layouts/default.tsx b/x-pack/platform/plugins/shared/osquery/public/components/layouts/default.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/layouts/default.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/layouts/default.tsx diff --git a/x-pack/plugins/osquery/public/components/layouts/header.tsx b/x-pack/platform/plugins/shared/osquery/public/components/layouts/header.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/layouts/header.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/layouts/header.tsx diff --git a/x-pack/plugins/osquery/public/components/layouts/index.tsx b/x-pack/platform/plugins/shared/osquery/public/components/layouts/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/layouts/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/layouts/index.tsx diff --git a/x-pack/plugins/osquery/public/components/layouts/with_header.tsx b/x-pack/platform/plugins/shared/osquery/public/components/layouts/with_header.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/layouts/with_header.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/layouts/with_header.tsx diff --git a/x-pack/plugins/osquery/public/components/layouts/without_header.tsx b/x-pack/platform/plugins/shared/osquery/public/components/layouts/without_header.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/layouts/without_header.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/layouts/without_header.tsx diff --git a/x-pack/plugins/osquery/public/components/main_navigation.tsx b/x-pack/platform/plugins/shared/osquery/public/components/main_navigation.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/main_navigation.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/main_navigation.tsx diff --git a/x-pack/plugins/osquery/public/components/manage_integration_link.tsx b/x-pack/platform/plugins/shared/osquery/public/components/manage_integration_link.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/manage_integration_link.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/manage_integration_link.tsx diff --git a/x-pack/plugins/osquery/public/components/osquery_icon/index.tsx b/x-pack/platform/plugins/shared/osquery/public/components/osquery_icon/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/osquery_icon/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/osquery_icon/index.tsx diff --git a/x-pack/plugins/osquery/public/components/osquery_icon/osquery.svg b/x-pack/platform/plugins/shared/osquery/public/components/osquery_icon/osquery.svg similarity index 100% rename from x-pack/plugins/osquery/public/components/osquery_icon/osquery.svg rename to x-pack/platform/plugins/shared/osquery/public/components/osquery_icon/osquery.svg diff --git a/x-pack/plugins/osquery/public/components/osquery_schema_link.tsx b/x-pack/platform/plugins/shared/osquery/public/components/osquery_schema_link.tsx similarity index 100% rename from x-pack/plugins/osquery/public/components/osquery_schema_link.tsx rename to x-pack/platform/plugins/shared/osquery/public/components/osquery_schema_link.tsx diff --git a/x-pack/plugins/osquery/public/discover/pack_view_in_discover.tsx b/x-pack/platform/plugins/shared/osquery/public/discover/pack_view_in_discover.tsx similarity index 100% rename from x-pack/plugins/osquery/public/discover/pack_view_in_discover.tsx rename to x-pack/platform/plugins/shared/osquery/public/discover/pack_view_in_discover.tsx diff --git a/x-pack/plugins/osquery/public/discover/view_results_in_discover.tsx b/x-pack/platform/plugins/shared/osquery/public/discover/view_results_in_discover.tsx similarity index 100% rename from x-pack/plugins/osquery/public/discover/view_results_in_discover.tsx rename to x-pack/platform/plugins/shared/osquery/public/discover/view_results_in_discover.tsx diff --git a/x-pack/plugins/osquery/public/editor/index.tsx b/x-pack/platform/plugins/shared/osquery/public/editor/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/editor/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/editor/index.tsx diff --git a/x-pack/plugins/osquery/public/editor/osquery_highlight_rules.test.ts b/x-pack/platform/plugins/shared/osquery/public/editor/osquery_highlight_rules.test.ts similarity index 100% rename from x-pack/plugins/osquery/public/editor/osquery_highlight_rules.test.ts rename to x-pack/platform/plugins/shared/osquery/public/editor/osquery_highlight_rules.test.ts diff --git a/x-pack/plugins/osquery/public/editor/osquery_highlight_rules.ts b/x-pack/platform/plugins/shared/osquery/public/editor/osquery_highlight_rules.ts similarity index 100% rename from x-pack/plugins/osquery/public/editor/osquery_highlight_rules.ts rename to x-pack/platform/plugins/shared/osquery/public/editor/osquery_highlight_rules.ts diff --git a/x-pack/plugins/osquery/public/editor/osquery_tables.ts b/x-pack/platform/plugins/shared/osquery/public/editor/osquery_tables.ts similarity index 100% rename from x-pack/plugins/osquery/public/editor/osquery_tables.ts rename to x-pack/platform/plugins/shared/osquery/public/editor/osquery_tables.ts diff --git a/x-pack/plugins/osquery/public/fleet_integration/config_uploader.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/config_uploader.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/config_uploader.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/config_uploader.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/disabled_callout.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/disabled_callout.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/disabled_callout.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/disabled_callout.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/index.ts b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/index.ts similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/index.ts rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/index.ts diff --git a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_custom_button_extension.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/lazy_osquery_managed_custom_button_extension.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_custom_button_extension.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/lazy_osquery_managed_custom_button_extension.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_create_import_extension.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/lazy_osquery_managed_policy_create_import_extension.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_create_import_extension.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/lazy_osquery_managed_policy_create_import_extension.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_edit_extension.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/lazy_osquery_managed_policy_edit_extension.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/lazy_osquery_managed_policy_edit_extension.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/lazy_osquery_managed_policy_edit_extension.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/navigation_buttons.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/navigation_buttons.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/navigation_buttons.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/navigation_buttons.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_custom_button_extension.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/osquery_managed_custom_button_extension.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/osquery_managed_custom_button_extension.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/osquery_managed_custom_button_extension.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/osquery_managed_policy_create_import_extension.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/osquery_managed_policy_create_import_extension.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/osquery_managed_policy_create_import_extension.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/osquery_managed_policy_create_import_extension.tsx diff --git a/x-pack/plugins/osquery/public/fleet_integration/use_fetch_status.tsx b/x-pack/platform/plugins/shared/osquery/public/fleet_integration/use_fetch_status.tsx similarity index 100% rename from x-pack/plugins/osquery/public/fleet_integration/use_fetch_status.tsx rename to x-pack/platform/plugins/shared/osquery/public/fleet_integration/use_fetch_status.tsx diff --git a/x-pack/plugins/osquery/public/form/index.ts b/x-pack/platform/plugins/shared/osquery/public/form/index.ts similarity index 100% rename from x-pack/plugins/osquery/public/form/index.ts rename to x-pack/platform/plugins/shared/osquery/public/form/index.ts diff --git a/x-pack/plugins/osquery/public/form/interval_field.tsx b/x-pack/platform/plugins/shared/osquery/public/form/interval_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/form/interval_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/form/interval_field.tsx diff --git a/x-pack/plugins/osquery/public/form/query_description_field.tsx b/x-pack/platform/plugins/shared/osquery/public/form/query_description_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/form/query_description_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/form/query_description_field.tsx diff --git a/x-pack/plugins/osquery/public/form/query_id_field.tsx b/x-pack/platform/plugins/shared/osquery/public/form/query_id_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/form/query_id_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/form/query_id_field.tsx diff --git a/x-pack/plugins/osquery/public/form/results_type_field.tsx b/x-pack/platform/plugins/shared/osquery/public/form/results_type_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/form/results_type_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/form/results_type_field.tsx diff --git a/x-pack/plugins/osquery/public/form/timeout_field.tsx b/x-pack/platform/plugins/shared/osquery/public/form/timeout_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/form/timeout_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/form/timeout_field.tsx diff --git a/x-pack/plugins/osquery/public/form/types.ts b/x-pack/platform/plugins/shared/osquery/public/form/types.ts similarity index 100% rename from x-pack/plugins/osquery/public/form/types.ts rename to x-pack/platform/plugins/shared/osquery/public/form/types.ts diff --git a/x-pack/plugins/osquery/public/form/version_field.tsx b/x-pack/platform/plugins/shared/osquery/public/form/version_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/form/version_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/form/version_field.tsx diff --git a/x-pack/plugins/osquery/public/index.ts b/x-pack/platform/plugins/shared/osquery/public/index.ts similarity index 100% rename from x-pack/plugins/osquery/public/index.ts rename to x-pack/platform/plugins/shared/osquery/public/index.ts diff --git a/x-pack/plugins/osquery/public/lens/pack_view_in_lens.tsx b/x-pack/platform/plugins/shared/osquery/public/lens/pack_view_in_lens.tsx similarity index 100% rename from x-pack/plugins/osquery/public/lens/pack_view_in_lens.tsx rename to x-pack/platform/plugins/shared/osquery/public/lens/pack_view_in_lens.tsx diff --git a/x-pack/plugins/osquery/public/lens/view_results_in_lens.tsx b/x-pack/platform/plugins/shared/osquery/public/lens/view_results_in_lens.tsx similarity index 100% rename from x-pack/plugins/osquery/public/lens/view_results_in_lens.tsx rename to x-pack/platform/plugins/shared/osquery/public/lens/view_results_in_lens.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/agents_table_field.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/agents_table_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/agents_table_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/agents_table_field.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/index.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/index.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/live_query_query_field.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/live_query_query_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/live_query_query_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/live_query_query_field.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/pack_queries_status_table.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/pack_queries_status_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/pack_queries_status_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/pack_queries_status_table.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/pack_results_header.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/pack_results_header.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/pack_results_header.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/pack_results_header.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/packs_combobox_field.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/packs_combobox_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/packs_combobox_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/packs_combobox_field.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/query_details_flyout.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/query_details_flyout.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/query_details_flyout.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/query_details_flyout.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/form/query_pack_selectable.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/form/query_pack_selectable.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/form/query_pack_selectable.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/form/query_pack_selectable.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/index.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/index.tsx diff --git a/x-pack/plugins/osquery/public/live_queries/use_create_live_query_action.tsx b/x-pack/platform/plugins/shared/osquery/public/live_queries/use_create_live_query_action.tsx similarity index 100% rename from x-pack/plugins/osquery/public/live_queries/use_create_live_query_action.tsx rename to x-pack/platform/plugins/shared/osquery/public/live_queries/use_create_live_query_action.tsx diff --git a/x-pack/plugins/osquery/public/packs/active_state_switch.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/active_state_switch.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/active_state_switch.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/active_state_switch.tsx diff --git a/x-pack/plugins/osquery/public/packs/add_pack_button.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/add_pack_button.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/add_pack_button.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/add_pack_button.tsx diff --git a/x-pack/plugins/osquery/public/packs/constants.ts b/x-pack/platform/plugins/shared/osquery/public/packs/constants.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/constants.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/constants.ts diff --git a/x-pack/plugins/osquery/public/packs/form/confirmation_modal.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/confirmation_modal.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/confirmation_modal.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/confirmation_modal.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/description_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/description_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/description_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/description_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/index.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/index.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/name_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/name_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/name_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/name_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/pack_uploader.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/pack_uploader.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/pack_uploader.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/pack_uploader.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/policy_id_combobox_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/policy_id_combobox_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/policy_id_combobox_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/policy_id_combobox_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/queries_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/queries_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/queries_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/queries_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/shards/pack_shards_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/shards/pack_shards_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/shards/pack_shards_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/shards/pack_shards_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/shards/pack_type_selectable.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/shards/pack_type_selectable.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/shards/pack_type_selectable.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/shards/pack_type_selectable.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/shards/shards_form.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/shards/shards_form.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/shards/shards_form.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/shards/shards_form.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/shards/shards_percentage_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/shards/shards_percentage_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/shards/shards_percentage_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/shards/shards_percentage_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/shards/shards_policy_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/form/shards/shards_policy_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/shards/shards_policy_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/form/shards/shards_policy_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/form/translations.ts b/x-pack/platform/plugins/shared/osquery/public/packs/form/translations.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/translations.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/form/translations.ts diff --git a/x-pack/plugins/osquery/public/packs/form/utils.ts b/x-pack/platform/plugins/shared/osquery/public/packs/form/utils.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/form/utils.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/form/utils.ts diff --git a/x-pack/plugins/osquery/public/packs/index.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/index.tsx diff --git a/x-pack/plugins/osquery/public/packs/pack_queries_status_table.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/pack_queries_status_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_status_table.tsx diff --git a/x-pack/plugins/osquery/public/packs/pack_queries_table.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/pack_queries_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/pack_queries_table.tsx diff --git a/x-pack/plugins/osquery/public/packs/packs_table.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/packs_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/packs_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/packs_table.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/constants.ts b/x-pack/platform/plugins/shared/osquery/public/packs/queries/constants.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/constants.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/constants.ts diff --git a/x-pack/plugins/osquery/public/packs/queries/ecs_field_css.ts b/x-pack/platform/plugins/shared/osquery/public/packs/queries/ecs_field_css.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/ecs_field_css.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/ecs_field_css.ts diff --git a/x-pack/plugins/osquery/public/packs/queries/ecs_mapping_editor_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/ecs_mapping_editor_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/ecs_mapping_editor_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/ecs_mapping_editor_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/lazy_ecs_mapping_editor_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/lazy_ecs_mapping_editor_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/lazy_ecs_mapping_editor_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/lazy_ecs_mapping_editor_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/platform_checkbox_group_field.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platform_checkbox_group_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platform_checkbox_group_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platform_checkbox_group_field.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/constants.ts b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/constants.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/constants.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/constants.ts diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/helpers.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/helpers.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/helpers.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/helpers.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/index.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/index.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/logos/linux.svg b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/logos/linux.svg similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/logos/linux.svg rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/logos/linux.svg diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/logos/macos.svg b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/logos/macos.svg similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/logos/macos.svg rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/logos/macos.svg diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/logos/windows.svg b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/logos/windows.svg similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/logos/windows.svg rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/logos/windows.svg diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/platform_icon.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/platform_icon.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/platform_icon.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/platform_icon.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/platforms/types.ts b/x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/types.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/platforms/types.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/platforms/types.ts diff --git a/x-pack/plugins/osquery/public/packs/queries/query_flyout.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/query_flyout.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/query_flyout.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/query_flyout.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/use_pack_query_form.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/queries/use_pack_query_form.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/use_pack_query_form.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/use_pack_query_form.tsx diff --git a/x-pack/plugins/osquery/public/packs/queries/validations.test.ts b/x-pack/platform/plugins/shared/osquery/public/packs/queries/validations.test.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/validations.test.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/validations.test.ts diff --git a/x-pack/plugins/osquery/public/packs/queries/validations.ts b/x-pack/platform/plugins/shared/osquery/public/packs/queries/validations.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/queries/validations.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/queries/validations.ts diff --git a/x-pack/plugins/osquery/public/packs/scheduled_query_errors_table.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/scheduled_query_errors_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/scheduled_query_errors_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/scheduled_query_errors_table.tsx diff --git a/x-pack/plugins/osquery/public/packs/types.ts b/x-pack/platform/plugins/shared/osquery/public/packs/types.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/types.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/types.ts diff --git a/x-pack/plugins/osquery/public/packs/use_create_pack.ts b/x-pack/platform/plugins/shared/osquery/public/packs/use_create_pack.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/use_create_pack.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/use_create_pack.ts diff --git a/x-pack/plugins/osquery/public/packs/use_delete_pack.ts b/x-pack/platform/plugins/shared/osquery/public/packs/use_delete_pack.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/use_delete_pack.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/use_delete_pack.ts diff --git a/x-pack/plugins/osquery/public/packs/use_pack.ts b/x-pack/platform/plugins/shared/osquery/public/packs/use_pack.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/use_pack.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/use_pack.ts diff --git a/x-pack/plugins/osquery/public/packs/use_pack_query_errors.ts b/x-pack/platform/plugins/shared/osquery/public/packs/use_pack_query_errors.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/use_pack_query_errors.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/use_pack_query_errors.ts diff --git a/x-pack/plugins/osquery/public/packs/use_pack_query_last_results.ts b/x-pack/platform/plugins/shared/osquery/public/packs/use_pack_query_last_results.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/use_pack_query_last_results.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/use_pack_query_last_results.ts diff --git a/x-pack/plugins/osquery/public/packs/use_packs.ts b/x-pack/platform/plugins/shared/osquery/public/packs/use_packs.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/use_packs.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/use_packs.ts diff --git a/x-pack/plugins/osquery/public/packs/use_update_pack.ts b/x-pack/platform/plugins/shared/osquery/public/packs/use_update_pack.ts similarity index 100% rename from x-pack/plugins/osquery/public/packs/use_update_pack.ts rename to x-pack/platform/plugins/shared/osquery/public/packs/use_update_pack.ts diff --git a/x-pack/plugins/osquery/public/packs/utils.tsx b/x-pack/platform/plugins/shared/osquery/public/packs/utils.tsx similarity index 100% rename from x-pack/plugins/osquery/public/packs/utils.tsx rename to x-pack/platform/plugins/shared/osquery/public/packs/utils.tsx diff --git a/x-pack/plugins/osquery/public/plugin.ts b/x-pack/platform/plugins/shared/osquery/public/plugin.ts similarity index 100% rename from x-pack/plugins/osquery/public/plugin.ts rename to x-pack/platform/plugins/shared/osquery/public/plugin.ts diff --git a/x-pack/plugins/osquery/public/query_client.ts b/x-pack/platform/plugins/shared/osquery/public/query_client.ts similarity index 100% rename from x-pack/plugins/osquery/public/query_client.ts rename to x-pack/platform/plugins/shared/osquery/public/query_client.ts diff --git a/x-pack/plugins/osquery/public/results/results_table.tsx b/x-pack/platform/plugins/shared/osquery/public/results/results_table.tsx similarity index 100% rename from x-pack/plugins/osquery/public/results/results_table.tsx rename to x-pack/platform/plugins/shared/osquery/public/results/results_table.tsx diff --git a/x-pack/plugins/osquery/public/results/translations.ts b/x-pack/platform/plugins/shared/osquery/public/results/translations.ts similarity index 100% rename from x-pack/plugins/osquery/public/results/translations.ts rename to x-pack/platform/plugins/shared/osquery/public/results/translations.ts diff --git a/x-pack/plugins/osquery/public/results/use_all_results.ts b/x-pack/platform/plugins/shared/osquery/public/results/use_all_results.ts similarity index 100% rename from x-pack/plugins/osquery/public/results/use_all_results.ts rename to x-pack/platform/plugins/shared/osquery/public/results/use_all_results.ts diff --git a/x-pack/plugins/osquery/public/routes/components/empty_prompt.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/components/empty_prompt.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/components/empty_prompt.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/components/empty_prompt.tsx diff --git a/x-pack/plugins/osquery/public/routes/components/index.ts b/x-pack/platform/plugins/shared/osquery/public/routes/components/index.ts similarity index 100% rename from x-pack/plugins/osquery/public/routes/components/index.ts rename to x-pack/platform/plugins/shared/osquery/public/routes/components/index.ts diff --git a/x-pack/plugins/osquery/public/routes/components/missing_privileges.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/components/missing_privileges.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/components/missing_privileges.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/components/missing_privileges.tsx diff --git a/x-pack/plugins/osquery/public/routes/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/live_queries/details/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/live_queries/details/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/live_queries/details/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/live_queries/details/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/live_queries/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/live_queries/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/live_queries/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/live_queries/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/live_queries/list/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/live_queries/list/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/live_queries/list/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/live_queries/list/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/live_queries/new/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/live_queries/new/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/live_queries/new/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/live_queries/new/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/add/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/packs/add/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/add/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/add/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/details/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/packs/details/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/details/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/details/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/edit/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/packs/edit/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/edit/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/edit/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/packs/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/list/empty_state.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/packs/list/empty_state.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/list/empty_state.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/list/empty_state.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/list/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/packs/list/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/list/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/list/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/list/load_integration_assets.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/packs/list/load_integration_assets.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/list/load_integration_assets.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/list/load_integration_assets.tsx diff --git a/x-pack/plugins/osquery/public/routes/packs/list/translations.ts b/x-pack/platform/plugins/shared/osquery/public/routes/packs/list/translations.ts similarity index 100% rename from x-pack/plugins/osquery/public/routes/packs/list/translations.ts rename to x-pack/platform/plugins/shared/osquery/public/routes/packs/list/translations.ts diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/edit/form.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/edit/form.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/saved_queries/edit/form.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/edit/form.tsx diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/edit/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/edit/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/saved_queries/edit/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/edit/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/edit/tabs.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/edit/tabs.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/saved_queries/edit/tabs.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/edit/tabs.tsx diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/saved_queries/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/list/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/list/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/saved_queries/list/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/list/index.tsx diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/new/form.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/new/form.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/saved_queries/new/form.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/new/form.tsx diff --git a/x-pack/plugins/osquery/public/routes/saved_queries/new/index.tsx b/x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/new/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/routes/saved_queries/new/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/routes/saved_queries/new/index.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/constants.ts b/x-pack/platform/plugins/shared/osquery/public/saved_queries/constants.ts similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/constants.ts rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/constants.ts diff --git a/x-pack/plugins/osquery/public/saved_queries/form/code_editor_field.tsx b/x-pack/platform/plugins/shared/osquery/public/saved_queries/form/code_editor_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/form/code_editor_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/form/code_editor_field.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/form/index.tsx b/x-pack/platform/plugins/shared/osquery/public/saved_queries/form/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/form/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/form/index.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/form/playground_flyout.tsx b/x-pack/platform/plugins/shared/osquery/public/saved_queries/form/playground_flyout.tsx similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/form/playground_flyout.tsx rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/form/playground_flyout.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/form/use_saved_query_form.tsx b/x-pack/platform/plugins/shared/osquery/public/saved_queries/form/use_saved_query_form.tsx similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/form/use_saved_query_form.tsx rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/form/use_saved_query_form.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/index.tsx b/x-pack/platform/plugins/shared/osquery/public/saved_queries/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/index.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/saved_queries_dropdown.tsx b/x-pack/platform/plugins/shared/osquery/public/saved_queries/saved_queries_dropdown.tsx similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/saved_queries_dropdown.tsx rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/saved_queries_dropdown.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/saved_query_flyout.tsx b/x-pack/platform/plugins/shared/osquery/public/saved_queries/saved_query_flyout.tsx similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/saved_query_flyout.tsx rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/saved_query_flyout.tsx diff --git a/x-pack/plugins/osquery/public/saved_queries/use_create_saved_query.ts b/x-pack/platform/plugins/shared/osquery/public/saved_queries/use_create_saved_query.ts similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/use_create_saved_query.ts rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/use_create_saved_query.ts diff --git a/x-pack/plugins/osquery/public/saved_queries/use_delete_saved_query.ts b/x-pack/platform/plugins/shared/osquery/public/saved_queries/use_delete_saved_query.ts similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/use_delete_saved_query.ts rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/use_delete_saved_query.ts diff --git a/x-pack/plugins/osquery/public/saved_queries/use_saved_queries.ts b/x-pack/platform/plugins/shared/osquery/public/saved_queries/use_saved_queries.ts similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/use_saved_queries.ts rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/use_saved_queries.ts diff --git a/x-pack/plugins/osquery/public/saved_queries/use_saved_query.ts b/x-pack/platform/plugins/shared/osquery/public/saved_queries/use_saved_query.ts similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/use_saved_query.ts rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/use_saved_query.ts diff --git a/x-pack/plugins/osquery/public/saved_queries/use_update_saved_query.ts b/x-pack/platform/plugins/shared/osquery/public/saved_queries/use_update_saved_query.ts similarity index 100% rename from x-pack/plugins/osquery/public/saved_queries/use_update_saved_query.ts rename to x-pack/platform/plugins/shared/osquery/public/saved_queries/use_update_saved_query.ts diff --git a/x-pack/plugins/osquery/public/shared_components/attachments/external_reference.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/external_reference.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/attachments/external_reference.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/external_reference.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/attachments/external_references_content.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/external_references_content.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/attachments/external_references_content.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/external_references_content.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/attachments/lazy_external_reference_content.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/lazy_external_reference_content.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/attachments/lazy_external_reference_content.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/lazy_external_reference_content.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/attachments/pack_queries_attachment_wrapper.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/pack_queries_attachment_wrapper.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/attachments/pack_queries_attachment_wrapper.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/attachments/pack_queries_attachment_wrapper.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/index.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/index.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/lazy_live_query_field.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_live_query_field.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/lazy_live_query_field.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_live_query_field.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/lazy_osquery_action.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_action.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/lazy_osquery_action.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_action.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/lazy_osquery_action_params_form.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_action_params_form.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/lazy_osquery_action_params_form.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_action_params_form.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/lazy_osquery_result.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_result.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/lazy_osquery_result.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_result.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/lazy_osquery_results.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_results.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/lazy_osquery_results.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/lazy_osquery_results.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_action/index.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_action/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/index.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_action/osquery_action.test.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/osquery_action.test.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_action/osquery_action.test.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/osquery_action.test.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_action/translations.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/translations.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_action/translations.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/translations.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.test.ts b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.test.ts similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.test.ts rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.test.ts diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_action/use_is_osquery_available_simple.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_response_action_type/index.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_response_action_type/index.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_response_action_type/index.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_response_action_type/index.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_response_action_type/pack_field_wrapper.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_response_action_type/pack_field_wrapper.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_response_action_type/pack_field_wrapper.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_response_action_type/pack_field_wrapper.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result_wrapper.test.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result_wrapper.test.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result_wrapper.test.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result_wrapper.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result_wrapper.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result_wrapper.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_result_wrapper.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_results.test.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_results.test.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_results.test.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_results.test.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_results.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_results.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_results.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/osquery_results.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_results/test_utils.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/test_utils.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_results/test_utils.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/test_utils.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/osquery_results/types.ts b/x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/types.ts similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/osquery_results/types.ts rename to x-pack/platform/plugins/shared/osquery/public/shared_components/osquery_results/types.ts diff --git a/x-pack/plugins/osquery/public/shared_components/prompts.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/prompts.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/prompts.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/prompts.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/services_wrapper.tsx b/x-pack/platform/plugins/shared/osquery/public/shared_components/services_wrapper.tsx similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/services_wrapper.tsx rename to x-pack/platform/plugins/shared/osquery/public/shared_components/services_wrapper.tsx diff --git a/x-pack/plugins/osquery/public/shared_components/use_is_osquery_available.ts b/x-pack/platform/plugins/shared/osquery/public/shared_components/use_is_osquery_available.ts similarity index 100% rename from x-pack/plugins/osquery/public/shared_components/use_is_osquery_available.ts rename to x-pack/platform/plugins/shared/osquery/public/shared_components/use_is_osquery_available.ts diff --git a/x-pack/plugins/osquery/public/shared_imports.ts b/x-pack/platform/plugins/shared/osquery/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/osquery/public/shared_imports.ts rename to x-pack/platform/plugins/shared/osquery/public/shared_imports.ts diff --git a/x-pack/plugins/osquery/public/timelines/add_to_timeline_button.tsx b/x-pack/platform/plugins/shared/osquery/public/timelines/add_to_timeline_button.tsx similarity index 100% rename from x-pack/plugins/osquery/public/timelines/add_to_timeline_button.tsx rename to x-pack/platform/plugins/shared/osquery/public/timelines/add_to_timeline_button.tsx diff --git a/x-pack/plugins/osquery/public/types.ts b/x-pack/platform/plugins/shared/osquery/public/types.ts similarity index 100% rename from x-pack/plugins/osquery/public/types.ts rename to x-pack/platform/plugins/shared/osquery/public/types.ts diff --git a/x-pack/platform/plugins/shared/osquery/scripts/openapi/bundle.js b/x-pack/platform/plugins/shared/osquery/scripts/openapi/bundle.js new file mode 100644 index 0000000000000..d951852cf68b3 --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/scripts/openapi/bundle.js @@ -0,0 +1,60 @@ +/* + * 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. + */ + +require('../../../../../../../src/setup_node_env'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { bundle } = require('@kbn/openapi-bundler'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { resolve } = require('path'); + +const ELASTIC_ASSISTANT_ROOT = resolve(__dirname, '../..'); + +(async () => { + await bundle({ + rootDir: ELASTIC_ASSISTANT_ROOT, + sourceGlob: 'common/api/**/*.schema.yaml', + outputFilePath: 'docs/openapi/serverless/osquery_api_{version}.bundled.schema.yaml', + options: { + includeLabels: ['serverless'], + prototypeDocument: { + info: { + title: 'Security Osquery API (Elastic Cloud Serverless)', + description: 'Run live queries, manage packs and saved queries.', + }, + tags: [ + { + name: 'Security Osquery API', + 'x-displayName': 'Security Osquery', + description: 'Run live queries, manage packs and saved queries.', + }, + ], + }, + }, + }); + + await bundle({ + rootDir: ELASTIC_ASSISTANT_ROOT, + sourceGlob: 'common/api/**/*.schema.yaml', + outputFilePath: 'docs/openapi/ess/osquery_api_{version}.bundled.schema.yaml', + options: { + includeLabels: ['ess'], + prototypeDocument: { + info: { + title: 'Security Osquery API (Elastic Cloud and self-hosted)', + description: 'Run live queries, manage packs and saved queries.', + }, + tags: [ + { + name: 'Security Osquery API', + 'x-displayName': 'Security Osquery', + description: 'Run live queries, manage packs and saved queries.', + }, + ], + }, + }, + }); +})(); diff --git a/x-pack/platform/plugins/shared/osquery/scripts/openapi/generate.js b/x-pack/platform/plugins/shared/osquery/scripts/openapi/generate.js new file mode 100644 index 0000000000000..0aec6d9a93fae --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/scripts/openapi/generate.js @@ -0,0 +1,39 @@ +/* + * 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. + */ + +require('../../../../../../../src/setup_node_env'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { generate } = require('@kbn/openapi-generator'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { REPO_ROOT } = require('@kbn/repo-info'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { join, resolve } = require('path'); + +const OSQUERY_ROOT = resolve(__dirname, '../..'); + +(async () => { + await generate({ + title: 'API route schemas', + rootDir: OSQUERY_ROOT, + sourceGlob: 'common/api/**/*.schema.yaml', + templateName: 'zod_operation_schema', + }); + + await generate({ + title: 'API client for tests', + rootDir: OSQUERY_ROOT, + sourceGlob: 'common/api/**/*.schema.yaml', + templateName: 'api_client_supertest', + skipLinting: true, + bundle: { + outFile: join( + REPO_ROOT, + 'x-pack/test/api_integration/services/security_solution_osquery_api.gen.ts' + ), + }, + }); +})(); diff --git a/x-pack/plugins/osquery/scripts/readme.md b/x-pack/platform/plugins/shared/osquery/scripts/readme.md similarity index 100% rename from x-pack/plugins/osquery/scripts/readme.md rename to x-pack/platform/plugins/shared/osquery/scripts/readme.md diff --git a/x-pack/plugins/osquery/scripts/schema_formatter/ecs.js b/x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/ecs.js similarity index 84% rename from x-pack/plugins/osquery/scripts/schema_formatter/ecs.js rename to x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/ecs.js index 4628b0d452c37..8b931fc2ce440 100644 --- a/x-pack/plugins/osquery/scripts/schema_formatter/ecs.js +++ b/x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/ecs.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./ecs_formatter'); diff --git a/x-pack/plugins/osquery/scripts/schema_formatter/ecs_formatter.ts b/x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/ecs_formatter.ts similarity index 100% rename from x-pack/plugins/osquery/scripts/schema_formatter/ecs_formatter.ts rename to x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/ecs_formatter.ts diff --git a/x-pack/plugins/osquery/scripts/schema_formatter/osquery.js b/x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/osquery.js similarity index 84% rename from x-pack/plugins/osquery/scripts/schema_formatter/osquery.js rename to x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/osquery.js index bac972aa2b22a..85216597d2a2e 100644 --- a/x-pack/plugins/osquery/scripts/schema_formatter/osquery.js +++ b/x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/osquery.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../../src/setup_node_env'); +require('../../../../../../../src/setup_node_env'); require('./osquery_formatter'); diff --git a/x-pack/plugins/osquery/scripts/schema_formatter/osquery_formatter.ts b/x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/osquery_formatter.ts similarity index 100% rename from x-pack/plugins/osquery/scripts/schema_formatter/osquery_formatter.ts rename to x-pack/platform/plugins/shared/osquery/scripts/schema_formatter/osquery_formatter.ts diff --git a/x-pack/plugins/osquery/server/common/error.ts b/x-pack/platform/plugins/shared/osquery/server/common/error.ts similarity index 100% rename from x-pack/plugins/osquery/server/common/error.ts rename to x-pack/platform/plugins/shared/osquery/server/common/error.ts diff --git a/x-pack/plugins/osquery/server/common/types.ts b/x-pack/platform/plugins/shared/osquery/server/common/types.ts similarity index 100% rename from x-pack/plugins/osquery/server/common/types.ts rename to x-pack/platform/plugins/shared/osquery/server/common/types.ts diff --git a/x-pack/plugins/osquery/server/create_config.ts b/x-pack/platform/plugins/shared/osquery/server/create_config.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_config.ts rename to x-pack/platform/plugins/shared/osquery/server/create_config.ts diff --git a/x-pack/plugins/osquery/server/create_data_views/index.ts b/x-pack/platform/plugins/shared/osquery/server/create_data_views/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_data_views/index.ts rename to x-pack/platform/plugins/shared/osquery/server/create_data_views/index.ts diff --git a/x-pack/plugins/osquery/server/create_indices/action_responses_mapping.ts b/x-pack/platform/plugins/shared/osquery/server/create_indices/action_responses_mapping.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_indices/action_responses_mapping.ts rename to x-pack/platform/plugins/shared/osquery/server/create_indices/action_responses_mapping.ts diff --git a/x-pack/plugins/osquery/server/create_indices/actions_mapping.ts b/x-pack/platform/plugins/shared/osquery/server/create_indices/actions_mapping.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_indices/actions_mapping.ts rename to x-pack/platform/plugins/shared/osquery/server/create_indices/actions_mapping.ts diff --git a/x-pack/plugins/osquery/server/create_indices/create_transforms_indices.ts b/x-pack/platform/plugins/shared/osquery/server/create_indices/create_transforms_indices.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_indices/create_transforms_indices.ts rename to x-pack/platform/plugins/shared/osquery/server/create_indices/create_transforms_indices.ts diff --git a/x-pack/plugins/osquery/server/create_transforms/action_responses_transform.ts b/x-pack/platform/plugins/shared/osquery/server/create_transforms/action_responses_transform.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_transforms/action_responses_transform.ts rename to x-pack/platform/plugins/shared/osquery/server/create_transforms/action_responses_transform.ts diff --git a/x-pack/plugins/osquery/server/create_transforms/create_transforms.test.ts b/x-pack/platform/plugins/shared/osquery/server/create_transforms/create_transforms.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_transforms/create_transforms.test.ts rename to x-pack/platform/plugins/shared/osquery/server/create_transforms/create_transforms.test.ts diff --git a/x-pack/plugins/osquery/server/create_transforms/create_transforms.ts b/x-pack/platform/plugins/shared/osquery/server/create_transforms/create_transforms.ts similarity index 100% rename from x-pack/plugins/osquery/server/create_transforms/create_transforms.ts rename to x-pack/platform/plugins/shared/osquery/server/create_transforms/create_transforms.ts diff --git a/x-pack/plugins/osquery/server/handlers/action/create_action_handler.ts b/x-pack/platform/plugins/shared/osquery/server/handlers/action/create_action_handler.ts similarity index 100% rename from x-pack/plugins/osquery/server/handlers/action/create_action_handler.ts rename to x-pack/platform/plugins/shared/osquery/server/handlers/action/create_action_handler.ts diff --git a/x-pack/plugins/osquery/server/handlers/action/create_action_service.ts b/x-pack/platform/plugins/shared/osquery/server/handlers/action/create_action_service.ts similarity index 100% rename from x-pack/plugins/osquery/server/handlers/action/create_action_service.ts rename to x-pack/platform/plugins/shared/osquery/server/handlers/action/create_action_service.ts diff --git a/x-pack/plugins/osquery/server/handlers/action/create_queries.test.ts b/x-pack/platform/plugins/shared/osquery/server/handlers/action/create_queries.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/handlers/action/create_queries.test.ts rename to x-pack/platform/plugins/shared/osquery/server/handlers/action/create_queries.test.ts diff --git a/x-pack/plugins/osquery/server/handlers/action/create_queries.ts b/x-pack/platform/plugins/shared/osquery/server/handlers/action/create_queries.ts similarity index 100% rename from x-pack/plugins/osquery/server/handlers/action/create_queries.ts rename to x-pack/platform/plugins/shared/osquery/server/handlers/action/create_queries.ts diff --git a/x-pack/plugins/osquery/server/handlers/action/index.ts b/x-pack/platform/plugins/shared/osquery/server/handlers/action/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/handlers/action/index.ts rename to x-pack/platform/plugins/shared/osquery/server/handlers/action/index.ts diff --git a/x-pack/plugins/osquery/server/handlers/action/validate_license.ts b/x-pack/platform/plugins/shared/osquery/server/handlers/action/validate_license.ts similarity index 100% rename from x-pack/plugins/osquery/server/handlers/action/validate_license.ts rename to x-pack/platform/plugins/shared/osquery/server/handlers/action/validate_license.ts diff --git a/x-pack/plugins/osquery/server/handlers/index.ts b/x-pack/platform/plugins/shared/osquery/server/handlers/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/handlers/index.ts rename to x-pack/platform/plugins/shared/osquery/server/handlers/index.ts diff --git a/x-pack/plugins/osquery/server/index.ts b/x-pack/platform/plugins/shared/osquery/server/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/index.ts rename to x-pack/platform/plugins/shared/osquery/server/index.ts diff --git a/x-pack/plugins/osquery/server/lib/fleet_integration.ts b/x-pack/platform/plugins/shared/osquery/server/lib/fleet_integration.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/fleet_integration.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/fleet_integration.ts diff --git a/x-pack/plugins/osquery/server/lib/osquery_app_context_services.ts b/x-pack/platform/plugins/shared/osquery/server/lib/osquery_app_context_services.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/osquery_app_context_services.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/osquery_app_context_services.ts diff --git a/x-pack/plugins/osquery/server/lib/parse_agent_groups.test.ts b/x-pack/platform/plugins/shared/osquery/server/lib/parse_agent_groups.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/parse_agent_groups.test.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/parse_agent_groups.test.ts diff --git a/x-pack/plugins/osquery/server/lib/parse_agent_groups.ts b/x-pack/platform/plugins/shared/osquery/server/lib/parse_agent_groups.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/parse_agent_groups.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/parse_agent_groups.ts diff --git a/x-pack/plugins/osquery/server/lib/saved_query/saved_object_mappings.ts b/x-pack/platform/plugins/shared/osquery/server/lib/saved_query/saved_object_mappings.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/saved_query/saved_object_mappings.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/saved_query/saved_object_mappings.ts diff --git a/x-pack/plugins/osquery/server/lib/saved_query/saved_object_model_versions.ts b/x-pack/platform/plugins/shared/osquery/server/lib/saved_query/saved_object_model_versions.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/saved_query/saved_object_model_versions.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/saved_query/saved_object_model_versions.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/__mocks__/index.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/__mocks__/index.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/__mocks__/index.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/constants.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/constants.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/constants.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/constants.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/filters.test.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/filters.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/filters.test.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/filters.test.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/filters.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/filters.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/filters.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/filters.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/helpers.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/helpers.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/helpers.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/helpers.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/receiver.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/receiver.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/receiver.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/receiver.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/sender.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/sender.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/sender.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/task.test.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/task.test.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task.test.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/task.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/task.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/task_state.test.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task_state.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/task_state.test.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task_state.test.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/task_state.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task_state.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/task_state.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/task_state.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/tasks/configs.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/configs.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/tasks/configs.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/configs.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/tasks/index.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/tasks/index.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/index.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/tasks/packs.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/packs.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/tasks/packs.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/packs.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/tasks/saved_queries.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/saved_queries.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/tasks/saved_queries.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/tasks/saved_queries.ts diff --git a/x-pack/plugins/osquery/server/lib/telemetry/types.ts b/x-pack/platform/plugins/shared/osquery/server/lib/telemetry/types.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/telemetry/types.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/telemetry/types.ts diff --git a/x-pack/plugins/osquery/server/lib/update_global_packs.ts b/x-pack/platform/plugins/shared/osquery/server/lib/update_global_packs.ts similarity index 100% rename from x-pack/plugins/osquery/server/lib/update_global_packs.ts rename to x-pack/platform/plugins/shared/osquery/server/lib/update_global_packs.ts diff --git a/x-pack/plugins/osquery/server/plugin.ts b/x-pack/platform/plugins/shared/osquery/server/plugin.ts similarity index 100% rename from x-pack/plugins/osquery/server/plugin.ts rename to x-pack/platform/plugins/shared/osquery/server/plugin.ts diff --git a/x-pack/plugins/osquery/server/routes/asset/get_assets_status_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/asset/get_assets_status_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/asset/get_assets_status_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/asset/get_assets_status_route.ts diff --git a/x-pack/plugins/osquery/server/routes/asset/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/asset/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/asset/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/asset/index.ts diff --git a/x-pack/plugins/osquery/server/routes/asset/update_assets_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/asset/update_assets_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/asset/update_assets_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/asset/update_assets_route.ts diff --git a/x-pack/plugins/osquery/server/routes/asset/utils.ts b/x-pack/platform/plugins/shared/osquery/server/routes/asset/utils.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/asset/utils.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/asset/utils.ts diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_details.ts b/x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_details.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_details.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_details.ts diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policies.ts b/x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_policies.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policies.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_policies.ts diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policy.ts b/x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_policy.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_policy.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_policy.ts diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_status_for_agent_policy.ts b/x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_status_for_agent_policy.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agent_status_for_agent_policy.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agent_status_for_agent_policy.ts diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agents.ts b/x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agents.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agents.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_agents.ts diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_package_policies.ts b/x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_package_policies.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/fleet_wrapper/get_package_policies.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/get_package_policies.ts diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/fleet_wrapper/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/fleet_wrapper/index.ts diff --git a/x-pack/plugins/osquery/server/routes/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/index.ts diff --git a/x-pack/plugins/osquery/server/routes/live_query/create_live_query_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/live_query/create_live_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/live_query/create_live_query_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/live_query/create_live_query_route.ts diff --git a/x-pack/plugins/osquery/server/routes/live_query/find_live_query_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/live_query/find_live_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/live_query/find_live_query_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/live_query/find_live_query_route.ts diff --git a/x-pack/plugins/osquery/server/routes/live_query/get_live_query_details_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/live_query/get_live_query_details_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/live_query/get_live_query_details_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/live_query/get_live_query_details_route.ts diff --git a/x-pack/plugins/osquery/server/routes/live_query/get_live_query_results_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/live_query/get_live_query_results_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/live_query/get_live_query_results_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/live_query/get_live_query_results_route.ts diff --git a/x-pack/plugins/osquery/server/routes/live_query/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/live_query/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/live_query/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/live_query/index.ts diff --git a/x-pack/plugins/osquery/server/routes/live_query/osquery_parser.ts b/x-pack/platform/plugins/shared/osquery/server/routes/live_query/osquery_parser.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/live_query/osquery_parser.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/live_query/osquery_parser.ts diff --git a/x-pack/plugins/osquery/server/routes/live_query/utils.ts b/x-pack/platform/plugins/shared/osquery/server/routes/live_query/utils.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/live_query/utils.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/live_query/utils.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/create_pack_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/create_pack_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/create_pack_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/create_pack_route.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/delete_pack_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/delete_pack_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/delete_pack_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/delete_pack_route.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/find_pack_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/find_pack_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/find_pack_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/find_pack_route.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/index.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/read_pack_route.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/types.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/types.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/types.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/types.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/update_pack_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/update_pack_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/update_pack_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/update_pack_route.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/utils.test.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/utils.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/utils.test.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/utils.test.ts diff --git a/x-pack/plugins/osquery/server/routes/pack/utils.ts b/x-pack/platform/plugins/shared/osquery/server/routes/pack/utils.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/pack/utils.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/pack/utils.ts diff --git a/x-pack/plugins/osquery/server/routes/privileges_check/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/privileges_check/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/privileges_check/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/privileges_check/index.ts diff --git a/x-pack/plugins/osquery/server/routes/privileges_check/privileges_check_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/privileges_check/privileges_check_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/privileges_check/privileges_check_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/privileges_check/privileges_check_route.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/create_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/create_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/create_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/create_saved_query_route.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/delete_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/delete_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/delete_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/delete_saved_query_route.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/find_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/find_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/find_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/find_saved_query_route.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/index.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/read_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/read_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/read_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/read_saved_query_route.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/types.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/types.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/types.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/types.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/update_saved_query_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/update_saved_query_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/update_saved_query_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/update_saved_query_route.ts diff --git a/x-pack/plugins/osquery/server/routes/saved_query/utils.ts b/x-pack/platform/plugins/shared/osquery/server/routes/saved_query/utils.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/saved_query/utils.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/saved_query/utils.ts diff --git a/x-pack/plugins/osquery/server/routes/status/create_status_route.ts b/x-pack/platform/plugins/shared/osquery/server/routes/status/create_status_route.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/status/create_status_route.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/status/create_status_route.ts diff --git a/x-pack/plugins/osquery/server/routes/status/index.ts b/x-pack/platform/plugins/shared/osquery/server/routes/status/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/status/index.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/status/index.ts diff --git a/x-pack/plugins/osquery/server/routes/utils.ts b/x-pack/platform/plugins/shared/osquery/server/routes/utils.ts similarity index 100% rename from x-pack/plugins/osquery/server/routes/utils.ts rename to x-pack/platform/plugins/shared/osquery/server/routes/utils.ts diff --git a/x-pack/plugins/osquery/server/saved_objects.ts b/x-pack/platform/plugins/shared/osquery/server/saved_objects.ts similarity index 100% rename from x-pack/plugins/osquery/server/saved_objects.ts rename to x-pack/platform/plugins/shared/osquery/server/saved_objects.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/all/index.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/all/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/all/index.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/all/index.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/all/query.all_actions.dsl.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/all/query.all_actions.dsl.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/all/query.all_actions.dsl.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/all/query.all_actions.dsl.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/details/index.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/details/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/details/index.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/details/index.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/details/query.action_details.dsl.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/details/query.action_details.dsl.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/details/query.action_details.dsl.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/details/query.action_details.dsl.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/index.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/index.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/index.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/results/index.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/results/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/results/index.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/results/index.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/results/query.action_results.dsl.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/results/query.action_results.dsl.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/actions/results/query.action_results.dsl.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/actions/results/query.action_results.dsl.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/index.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/index.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/index.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/results/index.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/results/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/results/index.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/results/index.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/results/query.all_results.dsl.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/results/query.all_results.dsl.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/results/query.all_results.dsl.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/results/query.all_results.dsl.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/factory/types.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/types.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/factory/types.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/factory/types.ts diff --git a/x-pack/plugins/osquery/server/search_strategy/osquery/index.ts b/x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/index.ts similarity index 100% rename from x-pack/plugins/osquery/server/search_strategy/osquery/index.ts rename to x-pack/platform/plugins/shared/osquery/server/search_strategy/osquery/index.ts diff --git a/x-pack/plugins/osquery/server/types.ts b/x-pack/platform/plugins/shared/osquery/server/types.ts similarity index 100% rename from x-pack/plugins/osquery/server/types.ts rename to x-pack/platform/plugins/shared/osquery/server/types.ts diff --git a/x-pack/plugins/osquery/server/utils/build_query.ts b/x-pack/platform/plugins/shared/osquery/server/utils/build_query.ts similarity index 100% rename from x-pack/plugins/osquery/server/utils/build_query.ts rename to x-pack/platform/plugins/shared/osquery/server/utils/build_query.ts diff --git a/x-pack/plugins/osquery/server/utils/build_validation/route_validation.test.ts b/x-pack/platform/plugins/shared/osquery/server/utils/build_validation/route_validation.test.ts similarity index 100% rename from x-pack/plugins/osquery/server/utils/build_validation/route_validation.test.ts rename to x-pack/platform/plugins/shared/osquery/server/utils/build_validation/route_validation.test.ts diff --git a/x-pack/plugins/osquery/server/utils/build_validation/route_validation.ts b/x-pack/platform/plugins/shared/osquery/server/utils/build_validation/route_validation.ts similarity index 100% rename from x-pack/plugins/osquery/server/utils/build_validation/route_validation.ts rename to x-pack/platform/plugins/shared/osquery/server/utils/build_validation/route_validation.ts diff --git a/x-pack/plugins/osquery/server/utils/register_features.ts b/x-pack/platform/plugins/shared/osquery/server/utils/register_features.ts similarity index 100% rename from x-pack/plugins/osquery/server/utils/register_features.ts rename to x-pack/platform/plugins/shared/osquery/server/utils/register_features.ts diff --git a/x-pack/plugins/osquery/server/utils/runtime_types.ts b/x-pack/platform/plugins/shared/osquery/server/utils/runtime_types.ts similarity index 100% rename from x-pack/plugins/osquery/server/utils/runtime_types.ts rename to x-pack/platform/plugins/shared/osquery/server/utils/runtime_types.ts diff --git a/x-pack/plugins/osquery/server/utils/upgrade_integration.ts b/x-pack/platform/plugins/shared/osquery/server/utils/upgrade_integration.ts similarity index 100% rename from x-pack/plugins/osquery/server/utils/upgrade_integration.ts rename to x-pack/platform/plugins/shared/osquery/server/utils/upgrade_integration.ts diff --git a/x-pack/platform/plugins/shared/osquery/tsconfig.json b/x-pack/platform/plugins/shared/osquery/tsconfig.json new file mode 100644 index 0000000000000..848f946e38a2c --- /dev/null +++ b/x-pack/platform/plugins/shared/osquery/tsconfig.json @@ -0,0 +1,82 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "exclude": ["target/**/*"], + "include": [ + // add all the folders contains files to be compiled + "common/**/*", + "public/**/*", + "scripts/**/*", + "scripts/**/**.json", + "server/**/*", + "../../../../../typings/**/*", + // ECS and Osquery schema files + "public/common/schemas/*/**.json" + ], + "kbn_references": [ + "@kbn/core", + { "path": "../../../../../src/setup_node_env/tsconfig.json" }, + // add references to other TypeScript projects the plugin depends on + + // requiredPlugins from ./kibana.json + "@kbn/data-plugin", + "@kbn/navigation-plugin", + "@kbn/fleet-plugin", + + // optionalPlugins from ./kibana.json + "@kbn/cases-plugin", + + // requiredBundles from ./kibana.json + "@kbn/es-ui-shared-plugin", + "@kbn/kibana-react-plugin", + "@kbn/kibana-utils-plugin", + + // packages + "@kbn/config-schema", + "@kbn/es-query", + "@kbn/utility-types", + "@kbn/securitysolution-io-ts-utils", + "@kbn/osquery-io-ts-types", + "@kbn/i18n-react", + "@kbn/discover-plugin", + "@kbn/lens-plugin", + "@kbn/security-plugin", + "@kbn/triggers-actions-ui-plugin", + "@kbn/timelines-plugin", + "@kbn/spaces-plugin", + "@kbn/i18n", + "@kbn/rison", + "@kbn/react-field", + "@kbn/dev-cli-runner", + "@kbn/telemetry-plugin", + "@kbn/actions-plugin", + "@kbn/features-plugin", + "@kbn/task-manager-plugin", + "@kbn/data-views-plugin", + "@kbn/rule-registry-plugin", + "@kbn/securitysolution-es-utils", + "@kbn/core-elasticsearch-client-server-mocks", + "@kbn/std", + "@kbn/core-elasticsearch-server", + "@kbn/core-saved-objects-api-server", + "@kbn/logging", + "@kbn/safer-lodash-set", + "@kbn/shared-ux-router", + "@kbn/licensing-plugin", + "@kbn/core-lifecycle-browser", + "@kbn/core-saved-objects-server", + "@kbn/monaco", + "@kbn/io-ts-utils", + "@kbn/shared-ux-page-kibana-template", + "@kbn/openapi-generator", + "@kbn/code-editor", + "@kbn/search-types", + "@kbn/react-kibana-context-render", + "@kbn/zod-helpers", + "@kbn/openapi-bundler", + "@kbn/repo-info", + "@kbn/zod" + ] +} diff --git a/x-pack/plugins/searchprofiler/README.md b/x-pack/platform/plugins/shared/searchprofiler/README.md similarity index 100% rename from x-pack/plugins/searchprofiler/README.md rename to x-pack/platform/plugins/shared/searchprofiler/README.md diff --git a/x-pack/plugins/searchprofiler/common/constants.ts b/x-pack/platform/plugins/shared/searchprofiler/common/constants.ts similarity index 100% rename from x-pack/plugins/searchprofiler/common/constants.ts rename to x-pack/platform/plugins/shared/searchprofiler/common/constants.ts diff --git a/x-pack/plugins/searchprofiler/common/index.ts b/x-pack/platform/plugins/shared/searchprofiler/common/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/common/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/common/index.ts diff --git a/x-pack/plugins/searchprofiler/common/types.ts b/x-pack/platform/plugins/shared/searchprofiler/common/types.ts similarity index 100% rename from x-pack/plugins/searchprofiler/common/types.ts rename to x-pack/platform/plugins/shared/searchprofiler/common/types.ts diff --git a/x-pack/platform/plugins/shared/searchprofiler/jest.config.js b/x-pack/platform/plugins/shared/searchprofiler/jest.config.js new file mode 100644 index 0000000000000..1f362b8d96def --- /dev/null +++ b/x-pack/platform/plugins/shared/searchprofiler/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['<rootDir>/x-pack/platform/plugins/shared/searchprofiler'], + coverageDirectory: + '<rootDir>/target/kibana-coverage/jest/x-pack/platform/plugins/shared/searchprofiler', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '<rootDir>/x-pack/platform/plugins/shared/searchprofiler/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/searchprofiler/kibana.jsonc b/x-pack/platform/plugins/shared/searchprofiler/kibana.jsonc similarity index 100% rename from x-pack/plugins/searchprofiler/kibana.jsonc rename to x-pack/platform/plugins/shared/searchprofiler/kibana.jsonc diff --git a/x-pack/plugins/searchprofiler/public/application/_app.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/_app.scss similarity index 94% rename from x-pack/plugins/searchprofiler/public/application/_app.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/_app.scss index 617aa21c6777e..22bea38e0ccff 100644 --- a/x-pack/plugins/searchprofiler/public/application/_app.scss +++ b/x-pack/platform/plugins/shared/searchprofiler/public/application/_app.scss @@ -1,4 +1,4 @@ -@import '../../../../../src/core/public/mixins'; +@import '../../../../../../../src/core/public/mixins'; .prfDevTool__page { flex: 1 1 auto; diff --git a/x-pack/plugins/searchprofiler/public/application/_index.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/_index.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/_index.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/_index.scss diff --git a/x-pack/plugins/searchprofiler/public/application/app.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/app.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/app.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/app.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/_index.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/_index.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/_index.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/_index.scss diff --git a/x-pack/plugins/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.test.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.test.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.test.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.test.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/empty_tree_placeholder/empty_tree_placeholder.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/empty_tree_placeholder/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/empty_tree_placeholder/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/empty_tree_placeholder/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/empty_tree_placeholder/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/_highlight_details_flyout.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/_highlight_details_flyout.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/_highlight_details_flyout.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/_highlight_details_flyout.scss diff --git a/x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.test.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.test.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.test.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.test.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_flyout.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_table.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_table.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_table.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/highlight_details_table.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/highlight_details_flyout/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/highlight_details_flyout/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/_license_warning_notice.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/_license_warning_notice.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/_license_warning_notice.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/_license_warning_notice.scss diff --git a/x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/license_warning_notice/license_warning_notice.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/percentage_badge/_percentage_badge.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/percentage_badge/_percentage_badge.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/percentage_badge/_percentage_badge.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/percentage_badge/_percentage_badge.scss diff --git a/x-pack/plugins/searchprofiler/public/application/components/percentage_badge/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/percentage_badge/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/percentage_badge/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/percentage_badge/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/percentage_badge/percentage_badge.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/percentage_badge/percentage_badge.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/percentage_badge/percentage_badge.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/percentage_badge/percentage_badge.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_loading_placeholder/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_loading_placeholder/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_loading_placeholder/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_loading_placeholder/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.test.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.test.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.test.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.test.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_loading_placeholder/profile_loading_placeholder.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/editor/editor.test.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/editor/editor.test.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/editor/editor.test.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/editor/editor.test.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/editor/editor.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/editor/editor.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/editor/editor.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/editor/editor.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/editor/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/editor/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/editor/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/editor/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/profile_query_editor.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/profile_query_editor.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_query_editor/profile_query_editor.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_query_editor/profile_query_editor.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/breakdown.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/breakdown.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/breakdown.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/breakdown.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_indices.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_indices.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_indices.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_indices.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_times.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_times.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_times.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/normalize_times.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/processed_search_response.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/processed_search_response.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/processed_search_response.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/processed_search_response.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/search_response.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/search_response.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/search_response.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/fixtures/search_response.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/init_data.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/init_data.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/init_data.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/init_data.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/profile_tree.test.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/profile_tree.test.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/profile_tree.test.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/profile_tree.test.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/unsafe_utils.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/unsafe_utils.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/unsafe_utils.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/unsafe_utils.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/utils.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/utils.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/__jest__/utils.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/__jest__/utils.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/_index.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/_index.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/_index.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/_index.scss diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/_profile_tree.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/_profile_tree.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/_profile_tree.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/_profile_tree.scss diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/constants.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/constants.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/constants.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/constants.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/highlight_context.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/highlight_context.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/highlight_context.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/highlight_context.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/index_details.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/index_details.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/index_details.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/index_details.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/init_data.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/init_data.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/init_data.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/init_data.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/profile_tree.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/profile_tree.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/profile_tree.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/profile_tree.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/_shard_details.scss b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/_shard_details.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/_shard_details.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/_shard_details.scss diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/shard_details.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/shard_details.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree_node.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree_node.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree_node.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/shard_details/shard_details_tree_node.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/types.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/types.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/types.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/types.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/unsafe_utils.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/unsafe_utils.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/unsafe_utils.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/unsafe_utils.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/use_highlight_tree_node.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/use_highlight_tree_node.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/use_highlight_tree_node.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/use_highlight_tree_node.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/profile_tree/utils.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/utils.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/profile_tree/utils.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/profile_tree/utils.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/searchprofiler_tabs/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/searchprofiler_tabs/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/components/searchprofiler_tabs/searchprofiler_tabs.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/contexts/app_context.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/contexts/app_context.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/contexts/app_context.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/contexts/app_context.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/contexts/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/contexts/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/contexts/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/contexts/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/contexts/profiler_context.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/contexts/profiler_context.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/contexts/profiler_context.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/contexts/profiler_context.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/hooks/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/hooks/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/hooks/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/hooks/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/hooks/use_has_indices.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/hooks/use_has_indices.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/hooks/use_has_indices.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/hooks/use_has_indices.ts diff --git a/x-pack/plugins/searchprofiler/public/application/hooks/use_request_profile.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/hooks/use_request_profile.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/hooks/use_request_profile.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/hooks/use_request_profile.ts diff --git a/x-pack/plugins/searchprofiler/public/application/index.tsx b/x-pack/platform/plugins/shared/searchprofiler/public/application/index.tsx similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/index.tsx rename to x-pack/platform/plugins/shared/searchprofiler/public/application/index.tsx diff --git a/x-pack/plugins/searchprofiler/public/application/lib/check_for_json_errors.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/check_for_json_errors.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/check_for_json_errors.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/check_for_json_errors.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/lib/check_for_json_errors.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/check_for_json_errors.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/check_for_json_errors.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/check_for_json_errors.ts diff --git a/x-pack/plugins/searchprofiler/public/application/lib/has_aggregations.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/has_aggregations.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/has_aggregations.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/has_aggregations.ts diff --git a/x-pack/plugins/searchprofiler/public/application/lib/has_searches.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/has_searches.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/has_searches.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/has_searches.ts diff --git a/x-pack/plugins/searchprofiler/public/application/lib/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/lib/ms_to_pretty.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/ms_to_pretty.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/ms_to_pretty.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/ms_to_pretty.ts diff --git a/x-pack/plugins/searchprofiler/public/application/lib/ns_to_pretty.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/ns_to_pretty.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/ns_to_pretty.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/ns_to_pretty.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/lib/ns_to_pretty.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/lib/ns_to_pretty.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/lib/ns_to_pretty.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/lib/ns_to_pretty.ts diff --git a/x-pack/plugins/searchprofiler/public/application/store/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/store/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/store/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/store/index.ts diff --git a/x-pack/plugins/searchprofiler/public/application/store/reducer.test.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/store/reducer.test.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/store/reducer.test.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/store/reducer.test.ts diff --git a/x-pack/plugins/searchprofiler/public/application/store/reducer.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/store/reducer.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/store/reducer.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/store/reducer.ts diff --git a/x-pack/plugins/searchprofiler/public/application/store/store.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/store/store.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/store/store.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/store/store.ts diff --git a/x-pack/plugins/searchprofiler/public/application/types.ts b/x-pack/platform/plugins/shared/searchprofiler/public/application/types.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/application/types.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/application/types.ts diff --git a/x-pack/plugins/searchprofiler/public/index.scss b/x-pack/platform/plugins/shared/searchprofiler/public/index.scss similarity index 100% rename from x-pack/plugins/searchprofiler/public/index.scss rename to x-pack/platform/plugins/shared/searchprofiler/public/index.scss diff --git a/x-pack/plugins/searchprofiler/public/index.ts b/x-pack/platform/plugins/shared/searchprofiler/public/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/index.ts diff --git a/x-pack/plugins/searchprofiler/public/locator.ts b/x-pack/platform/plugins/shared/searchprofiler/public/locator.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/locator.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/locator.ts diff --git a/x-pack/plugins/searchprofiler/public/plugin.ts b/x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/plugin.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/plugin.ts diff --git a/x-pack/plugins/searchprofiler/public/shared_imports.ts b/x-pack/platform/plugins/shared/searchprofiler/public/shared_imports.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/shared_imports.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/shared_imports.ts diff --git a/x-pack/plugins/searchprofiler/public/types.ts b/x-pack/platform/plugins/shared/searchprofiler/public/types.ts similarity index 100% rename from x-pack/plugins/searchprofiler/public/types.ts rename to x-pack/platform/plugins/shared/searchprofiler/public/types.ts diff --git a/x-pack/plugins/searchprofiler/server/index.ts b/x-pack/platform/plugins/shared/searchprofiler/server/index.ts similarity index 100% rename from x-pack/plugins/searchprofiler/server/index.ts rename to x-pack/platform/plugins/shared/searchprofiler/server/index.ts diff --git a/x-pack/plugins/searchprofiler/server/plugin.ts b/x-pack/platform/plugins/shared/searchprofiler/server/plugin.ts similarity index 100% rename from x-pack/plugins/searchprofiler/server/plugin.ts rename to x-pack/platform/plugins/shared/searchprofiler/server/plugin.ts diff --git a/x-pack/plugins/searchprofiler/server/routes/profile.ts b/x-pack/platform/plugins/shared/searchprofiler/server/routes/profile.ts similarity index 100% rename from x-pack/plugins/searchprofiler/server/routes/profile.ts rename to x-pack/platform/plugins/shared/searchprofiler/server/routes/profile.ts diff --git a/x-pack/plugins/searchprofiler/server/types.ts b/x-pack/platform/plugins/shared/searchprofiler/server/types.ts similarity index 100% rename from x-pack/plugins/searchprofiler/server/types.ts rename to x-pack/platform/plugins/shared/searchprofiler/server/types.ts diff --git a/x-pack/platform/plugins/shared/searchprofiler/tsconfig.json b/x-pack/platform/plugins/shared/searchprofiler/tsconfig.json new file mode 100644 index 0000000000000..658512193b1ed --- /dev/null +++ b/x-pack/platform/plugins/shared/searchprofiler/tsconfig.json @@ -0,0 +1,31 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + ], + "kbn_references": [ + "@kbn/core", + "@kbn/es-ui-shared-plugin", + "@kbn/dev-tools-plugin", + "@kbn/home-plugin", + "@kbn/licensing-plugin", + "@kbn/i18n", + "@kbn/share-plugin", + "@kbn/utility-types", + "@kbn/expect", + "@kbn/test-jest-helpers", + "@kbn/i18n-react", + "@kbn/config-schema", + "@kbn/react-kibana-context-render", + "@kbn/code-editor", + "@kbn/monaco", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/plugins/actions/server/routes/connector/create/create.ts b/x-pack/plugins/actions/server/routes/connector/create/create.ts index cd5073506c03f..d828c7339dc26 100644 --- a/x-pack/plugins/actions/server/routes/connector/create/create.ts +++ b/x-pack/plugins/actions/server/routes/connector/create/create.ts @@ -17,6 +17,7 @@ import { createConnectorRequestBodySchemaV1, } from '../../../../common/routes/connector/apis/create'; import { transformCreateConnectorBodyV1 } from './transforms'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from '../../constants'; export const createConnectorRoute = ( router: IRouter<ActionsRequestHandlerContext>, @@ -25,6 +26,7 @@ export const createConnectorRoute = ( router.post( { path: `${BASE_ACTION_API_PATH}/connector/{id?}`, + security: DEFAULT_ACTION_ROUTE_SECURITY, options: { access: 'public', summary: 'Create a connector', diff --git a/x-pack/plugins/actions/server/routes/connector/delete/delete.ts b/x-pack/plugins/actions/server/routes/connector/delete/delete.ts index 38f7c41d6037b..acb9b64b754c8 100644 --- a/x-pack/plugins/actions/server/routes/connector/delete/delete.ts +++ b/x-pack/plugins/actions/server/routes/connector/delete/delete.ts @@ -14,6 +14,7 @@ import { deleteConnectorRequestParamsSchemaV1, DeleteConnectorRequestParamsV1, } from '../../../../common/routes/connector/apis/delete'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from '../../constants'; export const deleteConnectorRoute = ( router: IRouter<ActionsRequestHandlerContext>, @@ -22,6 +23,7 @@ export const deleteConnectorRoute = ( router.delete( { path: `${BASE_ACTION_API_PATH}/connector/{id}`, + security: DEFAULT_ACTION_ROUTE_SECURITY, options: { access: 'public', summary: `Delete a connector`, diff --git a/x-pack/plugins/actions/server/routes/connector/execute/execute.ts b/x-pack/plugins/actions/server/routes/connector/execute/execute.ts index ab5ed25ff5f78..bbcb4f6a5a39c 100644 --- a/x-pack/plugins/actions/server/routes/connector/execute/execute.ts +++ b/x-pack/plugins/actions/server/routes/connector/execute/execute.ts @@ -20,6 +20,7 @@ import { ExecuteConnectorRequestParamsV1, } from '../../../../common/routes/connector/apis/execute'; import { transformExecuteConnectorResponseV1 } from './transforms'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from '../../constants'; export const executeConnectorRoute = ( router: IRouter<ActionsRequestHandlerContext>, @@ -28,6 +29,7 @@ export const executeConnectorRoute = ( router.post( { path: `${BASE_ACTION_API_PATH}/connector/{id}/_execute`, + security: DEFAULT_ACTION_ROUTE_SECURITY, options: { access: 'public', summary: `Run a connector`, diff --git a/x-pack/plugins/actions/server/routes/connector/get/get.ts b/x-pack/plugins/actions/server/routes/connector/get/get.ts index eaab31594ba1b..e5777d6ab08ff 100644 --- a/x-pack/plugins/actions/server/routes/connector/get/get.ts +++ b/x-pack/plugins/actions/server/routes/connector/get/get.ts @@ -16,6 +16,7 @@ import { ILicenseState } from '../../../lib'; import { BASE_ACTION_API_PATH } from '../../../../common'; import { ActionsRequestHandlerContext } from '../../../types'; import { verifyAccessAndContext } from '../../verify_access_and_context'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from '../../constants'; export const getConnectorRoute = ( router: IRouter<ActionsRequestHandlerContext>, @@ -24,6 +25,7 @@ export const getConnectorRoute = ( router.get( { path: `${BASE_ACTION_API_PATH}/connector/{id}`, + security: DEFAULT_ACTION_ROUTE_SECURITY, options: { access: 'public', summary: `Get connector information`, diff --git a/x-pack/plugins/actions/server/routes/connector/get_all/get_all.ts b/x-pack/plugins/actions/server/routes/connector/get_all/get_all.ts index 27f43a75eb151..945e878d445bd 100644 --- a/x-pack/plugins/actions/server/routes/connector/get_all/get_all.ts +++ b/x-pack/plugins/actions/server/routes/connector/get_all/get_all.ts @@ -12,6 +12,7 @@ import { ActionsRequestHandlerContext } from '../../../types'; import { BASE_ACTION_API_PATH } from '../../../../common'; import { ILicenseState } from '../../../lib'; import { verifyAccessAndContext } from '../../verify_access_and_context'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from '../../constants'; export const getAllConnectorsRoute = ( router: IRouter<ActionsRequestHandlerContext>, @@ -20,6 +21,7 @@ export const getAllConnectorsRoute = ( router.get( { path: `${BASE_ACTION_API_PATH}/connectors`, + security: DEFAULT_ACTION_ROUTE_SECURITY, options: { access: 'public', summary: `Get all connectors`, diff --git a/x-pack/plugins/actions/server/routes/connector/get_all_system/get_all_system.ts b/x-pack/plugins/actions/server/routes/connector/get_all_system/get_all_system.ts index 747d97e5ba8a3..4259f113a4456 100644 --- a/x-pack/plugins/actions/server/routes/connector/get_all_system/get_all_system.ts +++ b/x-pack/plugins/actions/server/routes/connector/get_all_system/get_all_system.ts @@ -12,6 +12,7 @@ import { INTERNAL_BASE_ACTION_API_PATH } from '../../../../common'; import { ILicenseState } from '../../../lib'; import { verifyAccessAndContext } from '../../verify_access_and_context'; import { transformGetAllConnectorsResponseV1 } from '../get_all/transforms'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from '../../constants'; export const getAllConnectorsIncludingSystemRoute = ( router: IRouter<ActionsRequestHandlerContext>, @@ -20,6 +21,7 @@ export const getAllConnectorsIncludingSystemRoute = ( router.get( { path: `${INTERNAL_BASE_ACTION_API_PATH}/connectors`, + security: DEFAULT_ACTION_ROUTE_SECURITY, validate: {}, options: { access: 'internal', diff --git a/x-pack/plugins/actions/server/routes/connector/list_types/list_types.ts b/x-pack/plugins/actions/server/routes/connector/list_types/list_types.ts index 20ca0d9343608..3078b9438d875 100644 --- a/x-pack/plugins/actions/server/routes/connector/list_types/list_types.ts +++ b/x-pack/plugins/actions/server/routes/connector/list_types/list_types.ts @@ -24,6 +24,12 @@ export const listTypesRoute = ( router.get( { path: `${BASE_ACTION_API_PATH}/connector_types`, + security: { + authz: { + enabled: false, + reason: 'This API does not require any Kibana feature privileges.', + }, + }, options: { access: 'public', summary: `Get connector types`, diff --git a/x-pack/plugins/actions/server/routes/connector/list_types_system/list_types_system.ts b/x-pack/plugins/actions/server/routes/connector/list_types_system/list_types_system.ts index c43912ecbc7e4..892ded96bbded 100644 --- a/x-pack/plugins/actions/server/routes/connector/list_types_system/list_types_system.ts +++ b/x-pack/plugins/actions/server/routes/connector/list_types_system/list_types_system.ts @@ -24,6 +24,12 @@ export const listTypesWithSystemRoute = ( router.get( { path: `${INTERNAL_BASE_ACTION_API_PATH}/connector_types`, + security: { + authz: { + enabled: false, + reason: 'This internal API does not require any Kibana feature privileges.', + }, + }, validate: { query: connectorTypesQuerySchemaV1, }, diff --git a/x-pack/plugins/actions/server/routes/connector/update/update.ts b/x-pack/plugins/actions/server/routes/connector/update/update.ts index 888cdee9b0e3a..8686ff2d7efd0 100644 --- a/x-pack/plugins/actions/server/routes/connector/update/update.ts +++ b/x-pack/plugins/actions/server/routes/connector/update/update.ts @@ -18,6 +18,7 @@ import { updateConnectorParamsSchemaV1, } from '../../../../common/routes/connector/apis/update'; import { transformUpdateConnectorResponseV1 } from './transforms'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from '../../constants'; export const updateConnectorRoute = ( router: IRouter<ActionsRequestHandlerContext>, @@ -26,6 +27,7 @@ export const updateConnectorRoute = ( router.put( { path: `${BASE_ACTION_API_PATH}/connector/{id}`, + security: DEFAULT_ACTION_ROUTE_SECURITY, options: { access: 'public', summary: `Update a connector`, diff --git a/x-pack/plugins/actions/server/routes/constants.ts b/x-pack/plugins/actions/server/routes/constants.ts new file mode 100644 index 0000000000000..2c71110b92833 --- /dev/null +++ b/x-pack/plugins/actions/server/routes/constants.ts @@ -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 type { RouteSecurity } from '@kbn/core-http-server'; + +/** + * This constant is used as the default value for the security object in routes + * where a reason for opting out needs to be provided. + */ +export const DEFAULT_ACTION_ROUTE_SECURITY: RouteSecurity = { + authz: { + enabled: false, + reason: + 'This route is opted out from authorization because actions use their own authorization model inside the actions client.', + }, +}; diff --git a/x-pack/plugins/actions/server/routes/get_global_execution_kpi.ts b/x-pack/plugins/actions/server/routes/get_global_execution_kpi.ts index 93034745584a7..a82cee84082bf 100644 --- a/x-pack/plugins/actions/server/routes/get_global_execution_kpi.ts +++ b/x-pack/plugins/actions/server/routes/get_global_execution_kpi.ts @@ -15,6 +15,7 @@ import { verifyAccessAndContext } from './verify_access_and_context'; import { ActionsRequestHandlerContext } from '../types'; import { ILicenseState } from '../lib'; import { rewriteNamespaces } from './rewrite_namespaces'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from './constants'; const bodySchema = schema.object({ date_start: schema.string(), @@ -42,6 +43,7 @@ export const getGlobalExecutionKPIRoute = ( router.post( { path: `${INTERNAL_BASE_ACTION_API_PATH}/_global_connector_execution_kpi`, + security: DEFAULT_ACTION_ROUTE_SECURITY, validate: { body: bodySchema, }, diff --git a/x-pack/plugins/actions/server/routes/get_global_execution_logs.ts b/x-pack/plugins/actions/server/routes/get_global_execution_logs.ts index d42ce07a814cf..2dc6bffa8f6f0 100644 --- a/x-pack/plugins/actions/server/routes/get_global_execution_logs.ts +++ b/x-pack/plugins/actions/server/routes/get_global_execution_logs.ts @@ -16,6 +16,7 @@ import { } from '../../common'; import { verifyAccessAndContext } from './verify_access_and_context'; import { rewriteNamespaces } from './rewrite_namespaces'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from './constants'; const sortOrderSchema = schema.oneOf([schema.literal('asc'), schema.literal('desc')]); @@ -54,6 +55,7 @@ export const getGlobalExecutionLogRoute = ( router.post( { path: `${INTERNAL_BASE_ACTION_API_PATH}/_global_connector_execution_logs`, + security: DEFAULT_ACTION_ROUTE_SECURITY, validate: { body: bodySchema, }, diff --git a/x-pack/plugins/actions/server/routes/get_oauth_access_token.ts b/x-pack/plugins/actions/server/routes/get_oauth_access_token.ts index b703c0de220f1..0d296fe55070b 100644 --- a/x-pack/plugins/actions/server/routes/get_oauth_access_token.ts +++ b/x-pack/plugins/actions/server/routes/get_oauth_access_token.ts @@ -12,6 +12,7 @@ import { INTERNAL_BASE_ACTION_API_PATH } from '../../common'; import { ActionsRequestHandlerContext } from '../types'; import { verifyAccessAndContext } from './verify_access_and_context'; import { ActionsConfigurationUtilities } from '../actions_config'; +import { DEFAULT_ACTION_ROUTE_SECURITY } from './constants'; const oauthJwtBodySchema = schema.object({ tokenUrl: schema.string(), @@ -63,6 +64,7 @@ export const getOAuthAccessToken = ( router.post( { path: `${INTERNAL_BASE_ACTION_API_PATH}/connector/_oauth_access_token`, + security: DEFAULT_ACTION_ROUTE_SECURITY, validate: { body: bodySchema, }, diff --git a/x-pack/plugins/alerting/public/application/maintenance_windows.tsx b/x-pack/plugins/alerting/public/application/maintenance_windows.tsx index 5f4b81bb716f7..9ac8245cd8288 100644 --- a/x-pack/plugins/alerting/public/application/maintenance_windows.tsx +++ b/x-pack/plugins/alerting/public/application/maintenance_windows.tsx @@ -78,12 +78,11 @@ export const renderApp = ({ kibanaVersion: string; }) => { const { element, history } = mountParams; - const { i18n, theme } = core; const queryClient = new QueryClient(); ReactDOM.render( - <KibanaRenderContextProvider i18n={i18n} theme={theme}> + <KibanaRenderContextProvider {...core}> <KibanaContextProvider services={{ ...core, diff --git a/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts b/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts index 5b32cf507c815..ec78cb5ea9cd7 100644 --- a/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts +++ b/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts @@ -102,6 +102,7 @@ const GetDataStreamResponse: IndicesGetDataStreamResponse = { template: 'ignored', next_generation_managed_by: 'Index Lifecycle Management', prefer_ilm: false, + rollover_on_write: false, }, ], }; diff --git a/x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.ts b/x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.ts index 66d90671ac1bd..0f9b62db62d79 100644 --- a/x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.ts +++ b/x-pack/plugins/alerting/server/routes/backfill/apis/delete/delete_backfill_route.ts @@ -12,6 +12,7 @@ import { import { ILicenseState } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const deleteBackfillRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -20,6 +21,7 @@ export const deleteBackfillRoute = ( router.delete( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/backfill/{id}`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/backfill/apis/find/find_backfill_route.ts b/x-pack/plugins/alerting/server/routes/backfill/apis/find/find_backfill_route.ts index be1ff25ef5932..bc092b8bf9cc6 100644 --- a/x-pack/plugins/alerting/server/routes/backfill/apis/find/find_backfill_route.ts +++ b/x-pack/plugins/alerting/server/routes/backfill/apis/find/find_backfill_route.ts @@ -17,6 +17,7 @@ import { INTERNAL_ALERTING_BACKFILL_FIND_API_PATH, } from '../../../../types'; import { transformRequestV1, transformResponseV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const findBackfillRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -25,6 +26,7 @@ export const findBackfillRoute = ( router.post( { path: `${INTERNAL_ALERTING_BACKFILL_FIND_API_PATH}`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, validate: { query: findQuerySchemaV1, }, diff --git a/x-pack/plugins/alerting/server/routes/backfill/apis/get/get_backfill_route.ts b/x-pack/plugins/alerting/server/routes/backfill/apis/get/get_backfill_route.ts index 5758bb6ba805f..8bd306931b867 100644 --- a/x-pack/plugins/alerting/server/routes/backfill/apis/get/get_backfill_route.ts +++ b/x-pack/plugins/alerting/server/routes/backfill/apis/get/get_backfill_route.ts @@ -14,6 +14,7 @@ import { ILicenseState } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; import { transformBackfillToBackfillResponseV1 } from '../../transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const getBackfillRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -22,6 +23,7 @@ export const getBackfillRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/backfill/{id}`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/backfill/apis/schedule/schedule_backfill_route.ts b/x-pack/plugins/alerting/server/routes/backfill/apis/schedule/schedule_backfill_route.ts index 77eb5c9355cfb..e73e0dd83ec8d 100644 --- a/x-pack/plugins/alerting/server/routes/backfill/apis/schedule/schedule_backfill_route.ts +++ b/x-pack/plugins/alerting/server/routes/backfill/apis/schedule/schedule_backfill_route.ts @@ -14,6 +14,7 @@ import { ILicenseState } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; import { transformRequestV1, transformResponseV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const scheduleBackfillRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -22,6 +23,7 @@ export const scheduleBackfillRoute = ( router.post( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/backfill/_schedule`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: scheduleBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/constants.ts b/x-pack/plugins/alerting/server/routes/constants.ts new file mode 100644 index 0000000000000..4c119f6c1c288 --- /dev/null +++ b/x-pack/plugins/alerting/server/routes/constants.ts @@ -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 type { RouteSecurity } from '@kbn/core-http-server'; + +/** + * This constant is used as the default value for the security object in routes + * where a reason for opting out needs to be provided. + */ +export const DEFAULT_ALERTING_ROUTE_SECURITY: RouteSecurity = { + authz: { + enabled: false, + reason: + "This route is opted out from authorization because alerting uses it's own authorization model inside the alerts client.", + }, +}; diff --git a/x-pack/plugins/alerting/server/routes/framework/apis/health/health.ts b/x-pack/plugins/alerting/server/routes/framework/apis/health/health.ts index 4daf510b6a64f..df926820e2af8 100644 --- a/x-pack/plugins/alerting/server/routes/framework/apis/health/health.ts +++ b/x-pack/plugins/alerting/server/routes/framework/apis/health/health.ts @@ -17,6 +17,7 @@ import { } from '../../../../types'; import { getSecurityHealth } from '../../../../lib/get_security_health'; import { transformHealthBodyResponse } from './transforms/transform_health_response/v1'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const healthRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -26,6 +27,7 @@ export const healthRoute = ( router.get( { path: `${BASE_ALERTING_API_PATH}/_health`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Get the alerting framework health`, diff --git a/x-pack/plugins/alerting/server/routes/get_action_error_log.ts b/x-pack/plugins/alerting/server/routes/get_action_error_log.ts index 7406d07c3fa24..39d10ccab4a63 100644 --- a/x-pack/plugins/alerting/server/routes/get_action_error_log.ts +++ b/x-pack/plugins/alerting/server/routes/get_action_error_log.ts @@ -11,6 +11,7 @@ import { ILicenseState } from '../lib'; import { GetActionErrorLogByIdParams } from '../rules_client'; import { RewriteRequestCase, verifyAccessAndContext } from './lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const paramSchema = schema.object({ id: schema.string(), @@ -59,6 +60,7 @@ export const getActionErrorLogRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_action_error_log`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, validate: { params: paramSchema, query: querySchema, diff --git a/x-pack/plugins/alerting/server/routes/get_global_execution_kpi.ts b/x-pack/plugins/alerting/server/routes/get_global_execution_kpi.ts index 48ea073369d2b..2a0c61617f8eb 100644 --- a/x-pack/plugins/alerting/server/routes/get_global_execution_kpi.ts +++ b/x-pack/plugins/alerting/server/routes/get_global_execution_kpi.ts @@ -10,6 +10,7 @@ import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from ' import { RewriteRequestCase, verifyAccessAndContext, rewriteNamespaces } from './lib'; import { GetGlobalExecutionKPIParams } from '../rules_client'; import { ILicenseState } from '../lib'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const querySchema = schema.object({ date_start: schema.string(), @@ -37,6 +38,7 @@ export const getGlobalExecutionKPIRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/_global_execution_kpi`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/get_global_execution_logs.ts b/x-pack/plugins/alerting/server/routes/get_global_execution_logs.ts index 13ea133e21a82..a6457185c4bd8 100644 --- a/x-pack/plugins/alerting/server/routes/get_global_execution_logs.ts +++ b/x-pack/plugins/alerting/server/routes/get_global_execution_logs.ts @@ -11,6 +11,7 @@ import { ILicenseState } from '../lib'; import { GetGlobalExecutionLogParams } from '../rules_client'; import { RewriteRequestCase, verifyAccessAndContext, rewriteNamespaces } from './lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const sortOrderSchema = schema.oneOf([schema.literal('asc'), schema.literal('desc')]); @@ -62,6 +63,7 @@ export const getGlobalExecutionLogRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/_global_execution_logs`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/get_rule_alert_summary.ts b/x-pack/plugins/alerting/server/routes/get_rule_alert_summary.ts index 937db706199e2..fa6222ed80cbc 100644 --- a/x-pack/plugins/alerting/server/routes/get_rule_alert_summary.ts +++ b/x-pack/plugins/alerting/server/routes/get_rule_alert_summary.ts @@ -15,6 +15,7 @@ import { INTERNAL_BASE_ALERTING_API_PATH, AlertSummary, } from '../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const paramSchema = schema.object({ id: schema.string(), @@ -65,6 +66,7 @@ export const getRuleAlertSummaryRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_alert_summary`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/get_rule_execution_kpi.ts b/x-pack/plugins/alerting/server/routes/get_rule_execution_kpi.ts index 302ac0293a444..9ade33c563e92 100644 --- a/x-pack/plugins/alerting/server/routes/get_rule_execution_kpi.ts +++ b/x-pack/plugins/alerting/server/routes/get_rule_execution_kpi.ts @@ -10,6 +10,7 @@ import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from ' import { RewriteRequestCase, verifyAccessAndContext } from './lib'; import { GetRuleExecutionKPIParams } from '../rules_client'; import { ILicenseState } from '../lib'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const paramSchema = schema.object({ id: schema.string(), @@ -38,6 +39,7 @@ export const getRuleExecutionKPIRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_execution_kpi`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/get_rule_execution_log.ts b/x-pack/plugins/alerting/server/routes/get_rule_execution_log.ts index 4eccefd171f0e..a81d68f7f4e3d 100644 --- a/x-pack/plugins/alerting/server/routes/get_rule_execution_log.ts +++ b/x-pack/plugins/alerting/server/routes/get_rule_execution_log.ts @@ -11,6 +11,7 @@ import { ILicenseState } from '../lib'; import { GetExecutionLogByIdParams } from '../rules_client'; import { RewriteRequestCase, verifyAccessAndContext } from './lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const paramSchema = schema.object({ id: schema.string(), @@ -63,6 +64,7 @@ export const getRuleExecutionLogRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_execution_log`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/get_rule_state.ts b/x-pack/plugins/alerting/server/routes/get_rule_state.ts index 1a2b17b8f6747..347b21faf8934 100644 --- a/x-pack/plugins/alerting/server/routes/get_rule_state.ts +++ b/x-pack/plugins/alerting/server/routes/get_rule_state.ts @@ -14,6 +14,7 @@ import { INTERNAL_BASE_ALERTING_API_PATH, RuleTaskState, } from '../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const paramSchema = schema.object({ id: schema.string(), @@ -38,6 +39,7 @@ export const getRuleStateRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/state`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/index.ts b/x-pack/plugins/alerting/server/routes/index.ts index d1fc9989be5e7..d9692dec9c0f8 100644 --- a/x-pack/plugins/alerting/server/routes/index.ts +++ b/x-pack/plugins/alerting/server/routes/index.ts @@ -94,7 +94,10 @@ export function defineRoutes(opts: RouteOptions) { getAlertIndicesAlias, } = opts; + // Legacy APIs defineLegacyRoutes(opts); + + // Rule APIs createRuleRoute(opts); getRuleRoute(router, licenseState); getInternalRuleRoute(router, licenseState); @@ -108,17 +111,11 @@ export function defineRoutes(opts: RouteOptions) { findInternalRulesRoute(router, licenseState, usageCounter); getRuleAlertSummaryRoute(router, licenseState); getRuleExecutionLogRoute(router, licenseState); - getGlobalExecutionLogRoute(router, licenseState); - getActionErrorLogRoute(router, licenseState); getRuleExecutionKPIRoute(router, licenseState); - getGlobalExecutionKPIRoute(router, licenseState); getRuleStateRoute(router, licenseState); - healthRoute(router, licenseState, encryptedSavedObjects); ruleTypesRoute(router, licenseState); muteAllRuleRoute(router, licenseState, usageCounter); - muteAlertRoute(router, licenseState); unmuteAllRuleRoute(router, licenseState); - unmuteAlertRoute(router, licenseState); updateRuleApiKeyRoute(router, licenseState); bulkEditInternalRulesRoute(router, licenseState); bulkDeleteRulesRoute({ router, licenseState }); @@ -126,11 +123,18 @@ export function defineRoutes(opts: RouteOptions) { bulkDisableRulesRoute({ router, licenseState }); snoozeRuleRoute(router, licenseState); unsnoozeRuleRoute(router, licenseState); - runSoonRoute(router, licenseState); cloneRuleRoute(router, licenseState); - getFlappingSettingsRoute(router, licenseState); - updateFlappingSettingsRoute(router, licenseState); getRuleTagsRoute(router, licenseState); + registerRulesValueSuggestionsRoute(router, licenseState, config$!); + + // Alert APIs + registerAlertsValueSuggestionsRoute(router, licenseState, config$!, getAlertIndicesAlias); + bulkUntrackAlertsRoute(router, licenseState); + bulkUntrackAlertsByQueryRoute(router, licenseState); + muteAlertRoute(router, licenseState); + unmuteAlertRoute(router, licenseState); + + // Maintenance Window APIs createMaintenanceWindowRoute(router, licenseState); getMaintenanceWindowRoute(router, licenseState); updateMaintenanceWindowRoute(router, licenseState); @@ -139,19 +143,24 @@ export function defineRoutes(opts: RouteOptions) { archiveMaintenanceWindowRoute(router, licenseState); finishMaintenanceWindowRoute(router, licenseState); getActiveMaintenanceWindowsRoute(router, licenseState); - registerAlertsValueSuggestionsRoute(router, licenseState, config$!, getAlertIndicesAlias); - registerRulesValueSuggestionsRoute(router, licenseState, config$!); - registerFieldsRoute(router, licenseState); bulkGetMaintenanceWindowRoute(router, licenseState); - getScheduleFrequencyRoute(router, licenseState); - bulkUntrackAlertsRoute(router, licenseState); - bulkUntrackAlertsByQueryRoute(router, licenseState); - getQueryDelaySettingsRoute(router, licenseState); - updateQueryDelaySettingsRoute(router, licenseState); // backfill APIs scheduleBackfillRoute(router, licenseState); getBackfillRoute(router, licenseState); findBackfillRoute(router, licenseState); deleteBackfillRoute(router, licenseState); + + // Other APIs + registerFieldsRoute(router, licenseState); + getScheduleFrequencyRoute(router, licenseState); + getQueryDelaySettingsRoute(router, licenseState); + updateQueryDelaySettingsRoute(router, licenseState); + getGlobalExecutionLogRoute(router, licenseState); + getActionErrorLogRoute(router, licenseState); + getFlappingSettingsRoute(router, licenseState); + updateFlappingSettingsRoute(router, licenseState); + runSoonRoute(router, licenseState); + healthRoute(router, licenseState, encryptedSavedObjects); + getGlobalExecutionKPIRoute(router, licenseState); } diff --git a/x-pack/plugins/alerting/server/routes/legacy/create.ts b/x-pack/plugins/alerting/server/routes/legacy/create.ts index 8346ec37edf9c..7e18897554431 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/create.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/create.ts @@ -20,6 +20,7 @@ import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; import { RouteOptions } from '..'; import { countUsageOfPredefinedIds } from '../lib'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; export const bodySchema = schema.object({ name: schema.string(), @@ -62,6 +63,7 @@ export const createAlertRoute = ({ ), body: bodySchema, }, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Create an alert', diff --git a/x-pack/plugins/alerting/server/routes/legacy/delete.ts b/x-pack/plugins/alerting/server/routes/legacy/delete.ts index 738633c61f745..6afa7474d81e6 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/delete.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/delete.ts @@ -13,6 +13,7 @@ import { ILicenseState } from '../../lib/license_state'; import { verifyApiAccess } from '../../lib/license_api_access'; import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const paramSchema = schema.object({ id: schema.string(), @@ -31,6 +32,7 @@ export const deleteAlertRoute = ( validate: { params: paramSchema, }, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Delete an alert', diff --git a/x-pack/plugins/alerting/server/routes/legacy/disable.ts b/x-pack/plugins/alerting/server/routes/legacy/disable.ts index e69a176776e0c..77fe548d06dac 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/disable.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/disable.ts @@ -14,6 +14,7 @@ import { verifyApiAccess } from '../../lib/license_api_access'; import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const paramSchema = schema.object({ id: schema.string(), @@ -32,6 +33,7 @@ export const disableAlertRoute = ( validate: { params: paramSchema, }, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Disable an alert', diff --git a/x-pack/plugins/alerting/server/routes/legacy/enable.ts b/x-pack/plugins/alerting/server/routes/legacy/enable.ts index 289b4050e059b..954c8bc727174 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/enable.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/enable.ts @@ -15,6 +15,7 @@ import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; import { handleDisabledApiKeysError } from '../lib/error_handler'; import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const paramSchema = schema.object({ id: schema.string(), @@ -33,6 +34,7 @@ export const enableAlertRoute = ( validate: { params: paramSchema, }, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Enable an alert', diff --git a/x-pack/plugins/alerting/server/routes/legacy/find.ts b/x-pack/plugins/alerting/server/routes/legacy/find.ts index de1e5f8c226a1..ece93d082f785 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/find.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/find.ts @@ -19,6 +19,7 @@ import { renameKeys } from '../lib/rename_keys'; import { IndexType } from '../../rules_client'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; import { trackLegacyTerminology } from '../lib/track_legacy_terminology'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; export interface FindOptions extends IndexType { perPage?: number; @@ -75,6 +76,7 @@ export const findAlertRoute = ( validate: { query: querySchema, }, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Find alerts', diff --git a/x-pack/plugins/alerting/server/routes/legacy/get.ts b/x-pack/plugins/alerting/server/routes/legacy/get.ts index 19fc0f7ff49e6..f1f83a5084c44 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/get.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/get.ts @@ -13,6 +13,7 @@ import { verifyApiAccess } from '../../lib/license_api_access'; import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; import type { AlertingRouter } from '../../types'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const paramSchema = schema.object({ id: schema.string(), @@ -31,6 +32,7 @@ export const getAlertRoute = ( validate: { params: paramSchema, }, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Get an alert', diff --git a/x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.ts b/x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.ts index 0e50601a1fd4d..918cdabc25a34 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/get_alert_instance_summary.ts @@ -13,6 +13,7 @@ import { ILicenseState } from '../../lib/license_state'; import { verifyApiAccess } from '../../lib/license_api_access'; import { AlertSummary, LEGACY_BASE_ALERT_API_PATH } from '../../../common'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const paramSchema = schema.object({ id: schema.string(), @@ -42,6 +43,7 @@ export const getAlertInstanceSummaryRoute = ( params: paramSchema, query: querySchema, }, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Get an alert summary', diff --git a/x-pack/plugins/alerting/server/routes/legacy/get_alert_state.ts b/x-pack/plugins/alerting/server/routes/legacy/get_alert_state.ts index f9db44c1e9a0c..fbc82e560a45e 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/get_alert_state.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/get_alert_state.ts @@ -13,6 +13,7 @@ import { ILicenseState } from '../../lib/license_state'; import { verifyApiAccess } from '../../lib/license_api_access'; import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const paramSchema = schema.object({ id: schema.string(), @@ -31,6 +32,7 @@ export const getAlertStateRoute = ( validate: { params: paramSchema, }, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Get the state of an alert', diff --git a/x-pack/plugins/alerting/server/routes/legacy/health.ts b/x-pack/plugins/alerting/server/routes/legacy/health.ts index b463298837f4e..8b8a64df14cd1 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/health.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/health.ts @@ -14,6 +14,7 @@ import { verifyApiAccess } from '../../lib/license_api_access'; import { AlertingFrameworkHealth } from '../../types'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; import { getSecurityHealth } from '../../lib/get_security_health'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; export function healthRoute( router: AlertingRouter, @@ -27,6 +28,7 @@ export function healthRoute( { path: '/api/alerts/_health', validate: false, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Get the alerting framework health', diff --git a/x-pack/plugins/alerting/server/routes/legacy/list_alert_types.ts b/x-pack/plugins/alerting/server/routes/legacy/list_alert_types.ts index f4f2bc7936b3d..6e6b4e3499f72 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/list_alert_types.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/list_alert_types.ts @@ -11,6 +11,7 @@ import { ILicenseState } from '../../lib/license_state'; import { verifyApiAccess } from '../../lib/license_api_access'; import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; export const listAlertTypesRoute = ( router: AlertingRouter, @@ -23,6 +24,7 @@ export const listAlertTypesRoute = ( { path: `${LEGACY_BASE_ALERT_API_PATH}/list_alert_types`, validate: {}, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Get the alert types', diff --git a/x-pack/plugins/alerting/server/routes/legacy/mute_all.ts b/x-pack/plugins/alerting/server/routes/legacy/mute_all.ts index 75c860167f21c..b978cc223b88b 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/mute_all.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/mute_all.ts @@ -14,6 +14,7 @@ import { verifyApiAccess } from '../../lib/license_api_access'; import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const paramSchema = schema.object({ id: schema.string(), @@ -32,6 +33,7 @@ export const muteAllAlertRoute = ( validate: { params: paramSchema, }, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Mute all alert instances', diff --git a/x-pack/plugins/alerting/server/routes/legacy/mute_instance.ts b/x-pack/plugins/alerting/server/routes/legacy/mute_instance.ts index 23225c387ccaa..155086ebc247d 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/mute_instance.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/mute_instance.ts @@ -16,6 +16,7 @@ import { renameKeys } from '../lib/rename_keys'; import { MuteOptions } from '../../rules_client'; import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const paramSchema = schema.object({ alert_id: schema.string(), @@ -35,6 +36,7 @@ export const muteAlertInstanceRoute = ( validate: { params: paramSchema, }, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Mute an alert', diff --git a/x-pack/plugins/alerting/server/routes/legacy/unmute_all.ts b/x-pack/plugins/alerting/server/routes/legacy/unmute_all.ts index 2684ea60d7336..5ae7dedcc8666 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/unmute_all.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/unmute_all.ts @@ -14,6 +14,7 @@ import { verifyApiAccess } from '../../lib/license_api_access'; import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const paramSchema = schema.object({ id: schema.string(), @@ -32,6 +33,7 @@ export const unmuteAllAlertRoute = ( validate: { params: paramSchema, }, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Unmute all alert instances', diff --git a/x-pack/plugins/alerting/server/routes/legacy/unmute_instance.ts b/x-pack/plugins/alerting/server/routes/legacy/unmute_instance.ts index e6122a92509b0..85cf06df83387 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/unmute_instance.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/unmute_instance.ts @@ -14,6 +14,7 @@ import { verifyApiAccess } from '../../lib/license_api_access'; import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const paramSchema = schema.object({ alertId: schema.string(), @@ -33,6 +34,7 @@ export const unmuteAlertInstanceRoute = ( validate: { params: paramSchema, }, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Unmute an alert', diff --git a/x-pack/plugins/alerting/server/routes/legacy/update.ts b/x-pack/plugins/alerting/server/routes/legacy/update.ts index 3e3d3b5a480f0..95bb1bd651761 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/update.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/update.ts @@ -20,6 +20,7 @@ import { LEGACY_BASE_ALERT_API_PATH, validateNotifyWhenType, } from '../../../common'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const paramSchema = schema.object({ id: schema.string(), @@ -59,6 +60,7 @@ export const updateAlertRoute = ( body: bodySchema, params: paramSchema, }, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Update an alert', diff --git a/x-pack/plugins/alerting/server/routes/legacy/update_api_key.ts b/x-pack/plugins/alerting/server/routes/legacy/update_api_key.ts index 603a321768573..45a3d35e7e5d3 100644 --- a/x-pack/plugins/alerting/server/routes/legacy/update_api_key.ts +++ b/x-pack/plugins/alerting/server/routes/legacy/update_api_key.ts @@ -15,6 +15,7 @@ import { LEGACY_BASE_ALERT_API_PATH } from '../../../common'; import { handleDisabledApiKeysError } from '../lib/error_handler'; import { RuleTypeDisabledError } from '../../lib/errors/rule_type_disabled'; import { trackLegacyRouteUsage } from '../../lib/track_legacy_route_usage'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const paramSchema = schema.object({ id: schema.string(), @@ -33,6 +34,7 @@ export const updateApiKeyRoute = ( validate: { params: paramSchema, }, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: isServerless ? 'internal' : 'public', summary: 'Update the API key for an alert', diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/aggregate/aggregate_rules_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/aggregate/aggregate_rules_route.ts index 05c5fc2167e11..13cc8fb7d816c 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/aggregate/aggregate_rules_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/aggregate/aggregate_rules_route.ts @@ -21,6 +21,7 @@ import { import { formatDefaultAggregationResult } from './transforms'; import { transformAggregateQueryRequestV1, transformAggregateBodyResponseV1 } from './transforms'; import { DefaultRuleAggregationResult } from './types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const aggregateRulesRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -30,6 +31,7 @@ export const aggregateRulesRoute = ( router.post( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/_aggregate`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: aggregateRulesRequestBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_delete/bulk_delete_rules_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_delete/bulk_delete_rules_route.ts index 8548464d44812..8dc14d5d7cba0 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_delete/bulk_delete_rules_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_delete/bulk_delete_rules_route.ts @@ -17,6 +17,7 @@ import { import type { RuleParamsV1 } from '../../../../../common/routes/rule/response'; import { transformRuleToRuleResponseV1 } from '../../transforms'; import { Rule } from '../../../../application/rule/types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const bulkDeleteRulesRoute = ({ router, @@ -28,6 +29,7 @@ export const bulkDeleteRulesRoute = ({ router.patch( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/_bulk_delete`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: bulkDeleteRulesRequestBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_disable/bulk_disable_rules_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_disable/bulk_disable_rules_route.ts index 315904efa40a7..4a047a120b06b 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_disable/bulk_disable_rules_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_disable/bulk_disable_rules_route.ts @@ -18,6 +18,7 @@ import { import type { RuleParamsV1 } from '../../../../../common/routes/rule/response'; import { Rule } from '../../../../application/rule/types'; import { transformRuleToRuleResponseV1 } from '../../transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const bulkDisableRulesRoute = ({ router, @@ -29,6 +30,7 @@ export const bulkDisableRulesRoute = ({ router.patch( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/_bulk_disable`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: bulkDisableRulesRequestBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_edit/bulk_edit_rules_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_edit/bulk_edit_rules_route.ts index f516b63031aad..27c1730ed695e 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_edit/bulk_edit_rules_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_edit/bulk_edit_rules_route.ts @@ -22,6 +22,7 @@ import { Rule } from '../../../../application/rule/types'; import { transformRuleToRuleResponseV1 } from '../../transforms'; import { validateRequiredGroupInDefaultActionsV1 } from '../../validation'; import { transformOperationsV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; interface BuildBulkEditRulesRouteParams { licenseState: ILicenseState; @@ -33,6 +34,7 @@ const buildBulkEditRulesRoute = ({ licenseState, path, router }: BuildBulkEditRu router.post( { path, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: bulkEditRulesRequestBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_enable/bulk_enable_rules_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_enable/bulk_enable_rules_route.ts index 71932cb6d78bb..fe91eafe82b59 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_enable/bulk_enable_rules_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_enable/bulk_enable_rules_route.ts @@ -16,6 +16,7 @@ import { } from '../../../../../common/routes/rule/apis/bulk_enable'; import { RuleParamsV1 } from '../../../../../common/routes/rule/response'; import { transformBulkEnableResponseV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const bulkEnableRulesRoute = ({ router, @@ -27,6 +28,7 @@ export const bulkEnableRulesRoute = ({ router.patch( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/_bulk_enable`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: bulkEnableBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack/bulk_untrack_alerts_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack/bulk_untrack_alerts_route.ts index a43cc48d95631..48619a040ebc4 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack/bulk_untrack_alerts_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack/bulk_untrack_alerts_route.ts @@ -13,6 +13,7 @@ import { transformBulkUntrackAlertsBodyV1 } from './transforms'; import { ILicenseState, RuleTypeDisabledError } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const bulkUntrackAlertsRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -21,6 +22,7 @@ export const bulkUntrackAlertsRoute = ( router.post( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/alerts/_bulk_untrack`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: bulkUntrackBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack_by_query/bulk_untrack_alerts_by_query_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack_by_query/bulk_untrack_alerts_by_query_route.ts index 735cd75b7f4a9..9f3bdfe959e38 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack_by_query/bulk_untrack_alerts_by_query_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/bulk_untrack_by_query/bulk_untrack_alerts_by_query_route.ts @@ -14,6 +14,7 @@ import { ILicenseState, RuleTypeDisabledError } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; import { transformBulkUntrackAlertsByQueryBodyV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const bulkUntrackAlertsByQueryRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -22,6 +23,7 @@ export const bulkUntrackAlertsByQueryRoute = ( router.post( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/alerts/_bulk_untrack_by_query`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: bulkUntrackByQueryBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/clone/clone_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/clone/clone_rule_route.ts index 0aa23886a9b4a..cf483de6a62c5 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/clone/clone_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/clone/clone_rule_route.ts @@ -17,6 +17,7 @@ import { import type { RuleParamsV1 } from '../../../../../common/routes/rule/response'; import { Rule } from '../../../../application/rule/types'; import { transformRuleToRuleResponseV1 } from '../../transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const cloneRuleRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -25,6 +26,7 @@ export const cloneRuleRoute = ( router.post( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_clone/{newId?}`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { params: cloneRuleRequestParamsSchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/create/create_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/create/create_rule_route.ts index 26775ad0f98d4..72b4a4c897f1f 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/create/create_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/create/create_rule_route.ts @@ -19,6 +19,7 @@ import { RuleParamsV1, ruleResponseSchemaV1 } from '../../../../../common/routes import { Rule } from '../../../../application/rule/types'; import { RuleTypeDisabledError } from '../../../../lib'; import { BASE_ALERTING_API_PATH } from '../../../../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; import { countUsageOfPredefinedIds, handleDisabledApiKeysError, @@ -32,6 +33,7 @@ export const createRuleRoute = ({ router, licenseState, usageCounter }: RouteOpt router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{id?}`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Create a rule`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.ts index e1e09403b309a..9fb4fd05bfb08 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.ts @@ -13,6 +13,7 @@ import { DeleteRuleRequestParamsV1, } from '../../../../../common/routes/rule/apis/delete'; import { AlertingRequestHandlerContext, BASE_ALERTING_API_PATH } from '../../../../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const deleteRuleRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -21,6 +22,7 @@ export const deleteRuleRoute = ( router.delete( { path: `${BASE_ALERTING_API_PATH}/rule/{id}`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Delete a rule`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/disable/disable_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/disable/disable_rule_route.ts index e364bc130121d..38451802d660f 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/disable/disable_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/disable/disable_rule_route.ts @@ -15,6 +15,7 @@ import { import { ILicenseState, RuleTypeDisabledError } from '../../../../lib'; import { AlertingRequestHandlerContext, BASE_ALERTING_API_PATH } from '../../../../types'; import { verifyAccessAndContext } from '../../../lib'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const disableRuleRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -23,6 +24,7 @@ export const disableRuleRoute = ( router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{id}/_disable`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: 'Disable a rule', diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/enable/enable_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/enable/enable_rule_route.ts index e5f0983bf844b..1d68c5b922f22 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/enable/enable_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/enable/enable_rule_route.ts @@ -14,6 +14,7 @@ import { EnableRuleRequestParamsV1, enableRuleRequestParamsSchemaV1, } from '../../../../../common/routes/rule/apis/enable'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const enableRuleRoute = ( router: IRouter<AlertingRequestHandlerContext>, licenseState: ILicenseState @@ -21,6 +22,7 @@ export const enableRuleRoute = ( router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{id}/_enable`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: 'Enable a rule', diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/find/find_internal_rules_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/find/find_internal_rules_route.ts index 0117d86468f2a..573c6eba399b0 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/find/find_internal_rules_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/find/find_internal_rules_route.ts @@ -21,6 +21,7 @@ import { import { verifyAccessAndContext } from '../../../lib'; import { trackLegacyTerminology } from '../../../lib/track_legacy_terminology'; import { transformFindRulesInternalBodyV1, transformFindRulesResponseV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const findInternalRulesRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -30,6 +31,7 @@ export const findInternalRulesRoute = ( router.post( { path: INTERNAL_ALERTING_API_FIND_RULES_PATH, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: findRulesInternalRequestBodySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/find/find_rules_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/find/find_rules_route.ts index 37ea13c7983e6..e24e58a63aa7d 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/find/find_rules_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/find/find_rules_route.ts @@ -18,6 +18,7 @@ import { AlertingRequestHandlerContext, BASE_ALERTING_API_PATH } from '../../../ import { verifyAccessAndContext } from '../../../lib'; import { trackLegacyTerminology } from '../../../lib/track_legacy_terminology'; import { transformFindRulesBodyV1, transformFindRulesResponseV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const findRulesRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -27,6 +28,7 @@ export const findRulesRoute = ( router.get( { path: `${BASE_ALERTING_API_PATH}/rules/_find`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: 'Get information about rules', diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/get/get_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/get/get_rule_route.ts index 46ccc00e33626..9119eae249db1 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/get/get_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/get/get_rule_route.ts @@ -22,6 +22,7 @@ import type { GetRuleResponseV1, } from '../../../../../common/routes/rule/apis/get'; import { getRuleRequestParamsSchemaV1 } from '../../../../../common/routes/rule/apis/get'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; interface BuildGetRulesRouteParams { licenseState: ILicenseState; @@ -41,6 +42,7 @@ const buildGetRuleRoute = ({ { path, options, + security: DEFAULT_ALERTING_ROUTE_SECURITY, validate: { request: { params: getRuleRequestParamsSchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.test.ts b/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.test.ts index a91a2b2728580..87eb61d320930 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.test.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.test.ts @@ -38,6 +38,12 @@ describe('getScheduleFrequencyRoute', () => { "access": "internal", }, "path": "/internal/alerting/rules/_schedule_frequency", + "security": Object { + "authz": Object { + "enabled": false, + "reason": "This route is opted out from authorization because alerting uses it's own authorization model inside the alerts client.", + }, + }, "validate": Object {}, } `); diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.ts index b91c0841df911..b0831aeee3790 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/get_schedule_frequency/get_schedule_frequency_route.ts @@ -11,6 +11,7 @@ import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; import { GetScheduleFrequencyResponseV1 } from '../../../../../common/routes/rule/apis/get_schedule_frequency'; import { transformGetScheduleFrequencyResultV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const getScheduleFrequencyRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -19,6 +20,7 @@ export const getScheduleFrequencyRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/_schedule_frequency`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: {}, }, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/list_types/rule_types.ts b/x-pack/plugins/alerting/server/routes/rule/apis/list_types/rule_types.ts index a49820704d74a..ddc3bf25467ff 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/list_types/rule_types.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/list_types/rule_types.ts @@ -14,6 +14,7 @@ import { ILicenseState } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, BASE_ALERTING_API_PATH } from '../../../../types'; import { transformRuleTypesResponseV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const ruleTypesRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -22,6 +23,7 @@ export const ruleTypesRoute = ( router.get( { path: `${BASE_ALERTING_API_PATH}/rule_types`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Get the rule types`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/mute_alert/mute_alert.ts b/x-pack/plugins/alerting/server/routes/rule/apis/mute_alert/mute_alert.ts index f9b7fa8bfbf0e..8df34e052ae4a 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/mute_alert/mute_alert.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/mute_alert/mute_alert.ts @@ -13,6 +13,7 @@ import { muteAlertParamsSchemaV1, MuteAlertRequestParamsV1, } from '../../../../../common/routes/rule/apis/mute_alert'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const muteAlertRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -21,6 +22,7 @@ export const muteAlertRoute = ( router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{rule_id}/alert/{alert_id}/_mute`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Mute an alert`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/mute_all/mute_all_rule.ts b/x-pack/plugins/alerting/server/routes/rule/apis/mute_all/mute_all_rule.ts index 46f108cb3a94e..d34e589188bb2 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/mute_all/mute_all_rule.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/mute_all/mute_all_rule.ts @@ -15,6 +15,7 @@ import { muteAllRuleRequestParamsSchemaV1, MuteAllRuleRequestParamsV1, } from '../../../../../common/routes/rule/apis/mute_all'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const muteAllRuleRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -24,6 +25,7 @@ export const muteAllRuleRoute = ( router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{id}/_mute_all`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Mute all alerts`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/resolve/resolve_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/resolve/resolve_rule_route.ts index ad0e846d452e5..bf5eef6add064 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/resolve/resolve_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/resolve/resolve_rule_route.ts @@ -17,6 +17,7 @@ import { ILicenseState } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; import { transformResolveResponseV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export type ResolveRuleRequestParamsV1 = TypeOf<typeof resolveParamsSchemaV1>; @@ -27,6 +28,7 @@ export const resolveRuleRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_resolve`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { params: resolveParamsSchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/snooze/snooze_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/snooze/snooze_rule_route.ts index 3e0e22070d672..d7c93e76b7e3e 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/snooze/snooze_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/snooze/snooze_rule_route.ts @@ -15,6 +15,7 @@ import { ILicenseState, RuleMutedError } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_ALERTING_SNOOZE_RULE } from '../../../../types'; import { transformSnoozeBodyV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export type SnoozeRuleRequestParamsV1 = TypeOf<typeof snoozeParamsSchema>; @@ -25,6 +26,7 @@ export const snoozeRuleRoute = ( router.post( { path: INTERNAL_ALERTING_SNOOZE_RULE, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { params: snoozeParamsSchema, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/tags/get_rule_tags.ts b/x-pack/plugins/alerting/server/routes/rule/apis/tags/get_rule_tags.ts index 05e4433f5e53d..5cebefb96b9fd 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/tags/get_rule_tags.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/tags/get_rule_tags.ts @@ -14,6 +14,7 @@ import { import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; import { ILicenseState } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const getRuleTagsRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -22,6 +23,7 @@ export const getRuleTagsRoute = ( router.get( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rules/_tags`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { query: ruleTagsRequestQuerySchemaV1, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/unmute_alert/unmute_alert_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/unmute_alert/unmute_alert_route.ts index 34108b937cc43..0dbd6089e54e4 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/unmute_alert/unmute_alert_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/unmute_alert/unmute_alert_route.ts @@ -14,6 +14,7 @@ import { ILicenseState, RuleTypeDisabledError } from '../../../../lib'; import { AlertingRequestHandlerContext, BASE_ALERTING_API_PATH } from '../../../../types'; import { verifyAccessAndContext } from '../../../lib'; import { transformRequestParamsToApplicationV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const unmuteAlertRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -22,6 +23,7 @@ export const unmuteAlertRoute = ( router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{rule_id}/alert/{alert_id}/_unmute`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Unmute an alert`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/unmute_all/unmute_all_rule.ts b/x-pack/plugins/alerting/server/routes/rule/apis/unmute_all/unmute_all_rule.ts index bf9d1660d0def..28bb319009946 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/unmute_all/unmute_all_rule.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/unmute_all/unmute_all_rule.ts @@ -13,6 +13,7 @@ import { unmuteAllRuleRequestParamsSchemaV1, UnmuteAllRuleRequestParamsV1, } from '../../../../../common/routes/rule/apis/unmute_all'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const unmuteAllRuleRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -21,6 +22,7 @@ export const unmuteAllRuleRoute = ( router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{id}/_unmute_all`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Unmute all alerts`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/unsnooze/unsnooze_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/unsnooze/unsnooze_rule_route.ts index e5f476cbb2038..e0ac5df1d8dc8 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/unsnooze/unsnooze_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/unsnooze/unsnooze_rule_route.ts @@ -15,6 +15,7 @@ import { ILicenseState, RuleMutedError } from '../../../../lib'; import { verifyAccessAndContext } from '../../../lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../../../../types'; import { transformUnsnoozeBodyV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export type UnsnoozeRuleRequestParamsV1 = TypeOf<typeof unsnoozeParamsSchema>; @@ -25,6 +26,7 @@ export const unsnoozeRuleRoute = ( router.post( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_unsnooze`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { params: unsnoozeParamsSchema, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.ts index 8fee470cb3bd7..b8181ac9aff3d 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/update/update_rule_route.ts @@ -23,6 +23,7 @@ import { handleDisabledApiKeysError, verifyAccessAndContext } from '../../../lib import { transformRuleToRuleResponseV1 } from '../../transforms'; import { validateRequiredGroupInDefaultActionsV1 } from '../../validation'; import { transformUpdateBodyV1 } from './transforms'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const updateRuleRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -31,6 +32,7 @@ export const updateRuleRoute = ( router.put( { path: `${BASE_ALERTING_API_PATH}/rule/{id}`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: `Update a rule`, diff --git a/x-pack/plugins/alerting/server/routes/rule/apis/update_api_key/update_rule_api_key_route.ts b/x-pack/plugins/alerting/server/routes/rule/apis/update_api_key/update_rule_api_key_route.ts index 4f16d873dfaa8..f306242ebb9ec 100644 --- a/x-pack/plugins/alerting/server/routes/rule/apis/update_api_key/update_rule_api_key_route.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/update_api_key/update_rule_api_key_route.ts @@ -13,6 +13,7 @@ import { import { ILicenseState, RuleTypeDisabledError } from '../../../../lib'; import { AlertingRequestHandlerContext, BASE_ALERTING_API_PATH } from '../../../../types'; import { verifyAccessAndContext } from '../../../lib'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../../../constants'; export const updateRuleApiKeyRoute = ( router: IRouter<AlertingRequestHandlerContext>, @@ -21,6 +22,7 @@ export const updateRuleApiKeyRoute = ( router.post( { path: `${BASE_ALERTING_API_PATH}/rule/{id}/_update_api_key`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'public', summary: 'Update the API key for a rule', diff --git a/x-pack/plugins/alerting/server/routes/run_soon.ts b/x-pack/plugins/alerting/server/routes/run_soon.ts index 1b7fa271c9587..9d0024f090cb6 100644 --- a/x-pack/plugins/alerting/server/routes/run_soon.ts +++ b/x-pack/plugins/alerting/server/routes/run_soon.ts @@ -10,6 +10,7 @@ import { schema } from '@kbn/config-schema'; import { ILicenseState } from '../lib'; import { verifyAccessAndContext } from './lib'; import { AlertingRequestHandlerContext, INTERNAL_BASE_ALERTING_API_PATH } from '../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from './constants'; const paramSchema = schema.object({ id: schema.string(), @@ -22,6 +23,7 @@ export const runSoonRoute = ( router.post( { path: `${INTERNAL_BASE_ALERTING_API_PATH}/rule/{id}/_run_soon`, + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal', }, diff --git a/x-pack/plugins/alerting/server/routes/suggestions/fields_rules.ts b/x-pack/plugins/alerting/server/routes/suggestions/fields_rules.ts index f3201d961e684..4b8ffa8e67e66 100644 --- a/x-pack/plugins/alerting/server/routes/suggestions/fields_rules.ts +++ b/x-pack/plugins/alerting/server/routes/suggestions/fields_rules.ts @@ -21,6 +21,7 @@ import { IndexPatternsFetcher } from '@kbn/data-plugin/server'; import { verifyAccessAndContext } from '../lib'; import { ILicenseState } from '../../lib'; import { AlertingRequestHandlerContext } from '../../types'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; export function registerFieldsRoute( router: IRouter<AlertingRequestHandlerContext>, @@ -30,6 +31,7 @@ export function registerFieldsRoute( router.post( { path: '/internal/rules/saved_objects/fields', + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: { body: schema.nullable( diff --git a/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_alerts.ts b/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_alerts.ts index 25dc8add03abf..5ad7e7a8ac437 100644 --- a/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_alerts.ts +++ b/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_alerts.ts @@ -25,6 +25,7 @@ import { } from '../../authorization'; import { AlertingRequestHandlerContext } from '../../types'; import { GetAlertIndicesAlias, ILicenseState } from '../../lib'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const alertingAuthorizationFilterOpts: AlertingAuthorizationFilterOpts = { type: AlertingAuthorizationFilterType.ESDSL, @@ -49,6 +50,7 @@ export function registerAlertsValueSuggestionsRoute( router.post( { path: '/internal/alerts/suggestions/values', + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: AlertsSuggestionsSchema, }, diff --git a/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_rules.ts b/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_rules.ts index 420d6473988fa..1f33cba025396 100644 --- a/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_rules.ts +++ b/x-pack/plugins/alerting/server/routes/suggestions/values_suggestion_rules.ts @@ -25,6 +25,7 @@ import { AlertingAuthorizationFilterType, } from '../../authorization'; import { RuleAuditAction, ruleAuditEvent } from '../../rules_client/common/audit_events'; +import { DEFAULT_ALERTING_ROUTE_SECURITY } from '../constants'; const alertingAuthorizationFilterOpts: AlertingAuthorizationFilterOpts = { type: AlertingAuthorizationFilterType.ESDSL, @@ -49,6 +50,7 @@ export function registerRulesValueSuggestionsRoute( router.post( { path: '/internal/rules/suggestions/values', + security: DEFAULT_ALERTING_ROUTE_SECURITY, options: { access: 'internal' }, validate: RulesSuggestionsSchema, }, diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts index bbe927833afd0..4fc02d24fff47 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts @@ -2492,85 +2492,6 @@ describe('Task Runner', () => { expect(mockUsageCounter.incrementCounter).not.toHaveBeenCalled(); }); - test('successfully executes the task with ephemeral tasks enabled', async () => { - const taskRunner = new TaskRunner({ - ruleType, - internalSavedObjectsRepository, - taskInstance: { - ...mockedTaskInstance, - state: { - ...mockedTaskInstance.state, - previousStartedAt: new Date(Date.now() - 5 * 60 * 1000).toISOString(), - }, - }, - context: { - ...taskRunnerFactoryInitializerParams, - }, - inMemoryMetrics, - }); - expect(AlertingEventLogger).toHaveBeenCalled(); - - mockGetAlertFromRaw.mockReturnValue(mockedRuleTypeSavedObject as Rule); - encryptedSavedObjectsClient.getDecryptedAsInternalUser.mockResolvedValue(mockedRawRuleSO); - const runnerResult = await taskRunner.run(); - expect(runnerResult).toEqual(generateRunnerResult({ state: true, history: [true] })); - expect(ruleType.executor).toHaveBeenCalledTimes(1); - const call = ruleType.executor.mock.calls[0][0]; - expect(call.params).toEqual({ bar: true }); - expect(call.startedAt).toEqual(new Date(DATE_1970)); - expect(call.previousStartedAt).toEqual(new Date(DATE_1970_5_MIN)); - expect(call.state).toEqual({}); - expect(call.rule).not.toBe(null); - expect(call.rule.id).toBe('1'); - expect(call.rule.name).toBe(RULE_NAME); - expect(call.rule.tags).toEqual(['rule-', '-tags']); - expect(call.rule.consumer).toBe('bar'); - expect(call.rule.enabled).toBe(true); - expect(call.rule.schedule).toEqual({ interval: '10s' }); - expect(call.rule.createdBy).toBe('rule-creator'); - expect(call.rule.updatedBy).toBe('rule-updater'); - expect(call.rule.createdAt).toBe(mockDate); - expect(call.rule.updatedAt).toBe(mockDate); - expect(call.rule.notifyWhen).toBe('onActiveAlert'); - expect(call.rule.throttle).toBe(null); - expect(call.rule.producer).toBe('alerts'); - expect(call.rule.ruleTypeId).toBe('test'); - expect(call.rule.ruleTypeName).toBe('My test rule'); - expect(call.rule.actions).toEqual(RULE_ACTIONS); - expect(call.services.alertFactory.create).toBeTruthy(); - expect(call.services.scopedClusterClient).toBeTruthy(); - expect(call.services).toBeTruthy(); - - expect(logger.debug).toHaveBeenCalledTimes(5); - expect(logger.debug).nthCalledWith(1, 'executing rule test:1 at 1970-01-01T00:00:00.000Z', { - tags: ['1', 'test'], - }); - expect(logger.debug).nthCalledWith( - 2, - 'deprecated ruleRunStatus for test:1: {"lastExecutionDate":"1970-01-01T00:00:00.000Z","status":"ok"}', - { tags: ['1', 'test'] } - ); - expect(logger.debug).nthCalledWith( - 3, - 'ruleRunStatus for test:1: {"outcome":"succeeded","outcomeOrder":0,"outcomeMsg":null,"warning":null,"alertsCount":{"active":0,"new":0,"recovered":0,"ignored":0}}', - { tags: ['1', 'test'] } - ); - expect(logger.debug).nthCalledWith( - 4, - 'ruleRunMetrics for test:1: {"numSearches":3,"totalSearchDurationMs":23423,"esSearchDurationMs":33,"numberOfTriggeredActions":0,"numberOfGeneratedActions":0,"numberOfActiveAlerts":0,"numberOfRecoveredAlerts":0,"numberOfNewAlerts":0,"numberOfDelayedAlerts":0,"hasReachedAlertLimit":false,"hasReachedQueuedActionsLimit":false,"triggeredActionsStatus":"complete"}', - { tags: ['1', 'test'] } - ); - - testAlertingEventLogCalls({ - status: 'ok', - }); - - expect(elasticsearchService.client.asInternalUser.update).toHaveBeenCalledWith( - ...generateRuleUpdateParams({}) - ); - expect(mockUsageCounter.incrementCounter).not.toHaveBeenCalled(); - }); - test('successfully stores successful runs', async () => { const taskRunner = new TaskRunner({ ruleType, diff --git a/x-pack/plugins/cases/public/common/lib/kibana/services.ts b/x-pack/plugins/cases/public/common/lib/kibana/services.ts index 1d2149bae811c..d10f8a83cd59d 100644 --- a/x-pack/plugins/cases/public/common/lib/kibana/services.ts +++ b/x-pack/plugins/cases/public/common/lib/kibana/services.ts @@ -9,7 +9,7 @@ import type { CoreStart } from '@kbn/core/public'; import type { CasesUiConfigType } from '../../../../common/ui/types'; import type { CasesPublicStartDependencies } from '../../../types'; -type GlobalServices = Pick<CoreStart, 'application' | 'http' | 'theme'> & +type GlobalServices = Pick<CoreStart, 'application' | 'http' | 'theme' | 'userProfile'> & Pick<CasesPublicStartDependencies, 'serverless'>; export class KibanaServices { @@ -23,12 +23,12 @@ export class KibanaServices { http, serverless, kibanaVersion, - theme, + ...startServices }: GlobalServices & { kibanaVersion: string; config: CasesUiConfigType; }) { - this.services = { application, http, theme, serverless }; + this.services = { application, http, serverless, ...startServices }; this.kibanaVersion = kibanaVersion; this.config = config; } diff --git a/x-pack/plugins/cases/public/common/mock/test_providers.tsx b/x-pack/plugins/cases/public/common/mock/test_providers.tsx index 257ac4b1f8293..2e96f1e3633cb 100644 --- a/x-pack/plugins/cases/public/common/mock/test_providers.tsx +++ b/x-pack/plugins/cases/public/common/mock/test_providers.tsx @@ -99,7 +99,7 @@ const TestProvidersComponent: React.FC<TestProviderProps> = ({ }; return ( - <KibanaRenderContextProvider i18n={coreStart.i18n} theme={coreStart.theme}> + <KibanaRenderContextProvider {...coreStart}> <KibanaContextProvider services={services}> <MemoryRouter> <CasesProvider value={casesProviderValue} queryClient={queryClient}> @@ -178,7 +178,7 @@ export const createAppMockRenderer = ({ getFilesClient, }; const AppWrapper: React.FC<{ children: React.ReactNode }> = ({ children }) => ( - <KibanaRenderContextProvider i18n={coreStart.i18n} theme={coreStart.theme}> + <KibanaRenderContextProvider {...coreStart}> <KibanaContextProvider services={services}> <MemoryRouter> <CasesProvider value={casesProviderValue} queryClient={queryClient}> diff --git a/x-pack/plugins/cases/public/common/use_cases_toast.tsx b/x-pack/plugins/cases/public/common/use_cases_toast.tsx index 71a9e3add1ae4..05c8e2f186a8b 100644 --- a/x-pack/plugins/cases/public/common/use_cases_toast.tsx +++ b/x-pack/plugins/cases/public/common/use_cases_toast.tsx @@ -106,7 +106,7 @@ const getErrorMessage = (error: Error | ServerError): string => { export const useCasesToast = () => { const { appId } = useApplication(); - const { application, i18n, theme } = useKibana().services; + const { application, i18n, theme, userProfile } = useKibana().services; const { getUrlForApp, navigateToUrl } = application; const toasts = useToasts(); @@ -148,13 +148,13 @@ export const useCasesToast = () => { return toasts.addSuccess({ color: 'success', iconType: 'check', - title: toMountPoint(<TruncatedText text={renderTitle} />, { i18n, theme }), + title: toMountPoint(<TruncatedText text={renderTitle} />, { i18n, theme, userProfile }), text: toMountPoint( <CaseToastSuccessContent content={renderContent} onViewCaseClick={url != null ? onViewCaseClick : undefined} />, - { i18n, theme } + { i18n, theme, userProfile } ), }); }, @@ -177,7 +177,7 @@ export const useCasesToast = () => { }); }, }), - [i18n, theme, appId, getUrlForApp, navigateToUrl, toasts] + [i18n, theme, userProfile, appId, getUrlForApp, navigateToUrl, toasts] ); }; diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/action_wrapper.tsx b/x-pack/plugins/cases/public/components/visualizations/actions/action_wrapper.tsx index add06a7badb22..e5f931492dabd 100644 --- a/x-pack/plugins/cases/public/components/visualizations/actions/action_wrapper.tsx +++ b/x-pack/plugins/cases/public/components/visualizations/actions/action_wrapper.tsx @@ -29,7 +29,7 @@ const ActionWrapperWithContext: React.FC<PropsWithChildren<Props>> = ({ casesActionContextProps, currentAppId, }) => { - const { application, i18n, theme } = useKibana().services; + const { application, ...startServices } = useKibana().services; const owner = getCaseOwnerByAppId(currentAppId); const casePermissions = canUseCases(application.capabilities)(owner ? [owner] : undefined); @@ -37,7 +37,7 @@ const ActionWrapperWithContext: React.FC<PropsWithChildren<Props>> = ({ const syncAlerts = owner === SECURITY_SOLUTION_OWNER; return ( - <KibanaRenderContextProvider i18n={i18n} theme={theme}> + <KibanaRenderContextProvider {...startServices}> <CasesProvider value={{ ...casesActionContextProps, diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.test.tsx b/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.test.tsx index e8fc0b6f16951..d701635cbbbec 100644 --- a/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.test.tsx +++ b/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.test.tsx @@ -113,7 +113,7 @@ describe('openModal', () => { }); }); - it('should have correct onClose handler - when close modal clicked', () => { + it('should have correct onClose handler - when close modal clicked', async () => { openModal( getMockLensApi(), 'myAppId', @@ -121,12 +121,14 @@ describe('openModal', () => { getMockServices() ); - const onClose = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onClose; - onClose(); - expect(unmountComponentAtNode as jest.Mock).toHaveBeenCalled(); + await waitFor(() => { + const onClose = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onClose; + onClose(); + expect(unmountComponentAtNode as jest.Mock).toHaveBeenCalled(); + }); }); - it('should have correct onClose handler - when case selected', () => { + it('should have correct onClose handler - when case selected', async () => { openModal( getMockLensApi(), 'myAppId', @@ -134,12 +136,14 @@ describe('openModal', () => { getMockServices() ); - const onClose = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onClose; - onClose({ id: 'case-id', title: 'case-title' }); - expect(unmountComponentAtNode as jest.Mock).toHaveBeenCalled(); + await waitFor(() => { + const onClose = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onClose; + onClose({ id: 'case-id', title: 'case-title' }); + expect(unmountComponentAtNode as jest.Mock).toHaveBeenCalled(); + }); }); - it('should have correct onClose handler - when case created', () => { + it('should have correct onClose handler - when case created', async () => { openModal( getMockLensApi(), 'myAppId', @@ -147,12 +151,14 @@ describe('openModal', () => { getMockServices() ); - const onClose = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onClose; - onClose(null, true); - expect(unmountComponentAtNode as jest.Mock).not.toHaveBeenCalled(); + await waitFor(() => { + const onClose = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onClose; + onClose(null, true); + expect(unmountComponentAtNode as jest.Mock).not.toHaveBeenCalled(); + }); }); - it('should have correct onSuccess handler', () => { + it('should have correct onSuccess handler', async () => { openModal( getMockLensApi(), 'myAppId', @@ -160,9 +166,11 @@ describe('openModal', () => { getMockServices() ); - const onSuccess = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onSuccess; - onSuccess(); - expect(unmountComponentAtNode as jest.Mock).toHaveBeenCalled(); + await waitFor(() => { + const onSuccess = mockUseCasesAddToExistingCaseModal.mock.calls[0][0].onSuccess; + onSuccess(); + expect(unmountComponentAtNode as jest.Mock).toHaveBeenCalled(); + }); }); it('should open modal with an attachment with the time range in absolute values', async () => { diff --git a/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.tsx b/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.tsx index c781098b44b57..13ccbd28333ea 100644 --- a/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.tsx +++ b/x-pack/plugins/cases/public/components/visualizations/actions/open_modal.tsx @@ -88,7 +88,7 @@ export function openModal( > <AddExistingCaseModalWrapper lensApi={lensApi} onClose={onClose} onSuccess={onSuccess} /> </ActionWrapper>, - { i18n: services.core.i18n, theme: services.core.theme } + services.core ); mount(targetDomElement); diff --git a/x-pack/plugins/cases/server/routes/api/configure/get_connectors.ts b/x-pack/plugins/cases/server/routes/api/configure/get_connectors.ts index a11af001480e6..41484a60a4f5b 100644 --- a/x-pack/plugins/cases/server/routes/api/configure/get_connectors.ts +++ b/x-pack/plugins/cases/server/routes/api/configure/get_connectors.ts @@ -5,7 +5,10 @@ * 2.0. */ -import { CASE_CONFIGURE_CONNECTORS_URL } from '../../../../common/constants'; +import { + CASE_CONFIGURE_CONNECTORS_URL, + GET_CONNECTORS_CONFIGURE_API_TAG, +} from '../../../../common/constants'; import { createCaseError } from '../../../common/error'; import { createCasesRoute } from '../create_cases_route'; @@ -15,8 +18,13 @@ import { createCasesRoute } from '../create_cases_route'; export const getConnectorsRoute = createCasesRoute({ method: 'get', path: `${CASE_CONFIGURE_CONNECTORS_URL}/_find`, + security: { + authz: { + requiredPrivileges: [GET_CONNECTORS_CONFIGURE_API_TAG], + }, + }, routerOptions: { - tags: ['access:casesGetConnectorsConfigure', 'oas-tag:cases'], + tags: ['oas-tag:cases'], access: 'public', summary: 'Get case connectors', description: 'Retrieves information about connectors that are supported for use in cases.', diff --git a/x-pack/plugins/cases/server/routes/api/internal/suggest_user_profiles.ts b/x-pack/plugins/cases/server/routes/api/internal/suggest_user_profiles.ts index 79a3b4588d6a5..36e533274de36 100644 --- a/x-pack/plugins/cases/server/routes/api/internal/suggest_user_profiles.ts +++ b/x-pack/plugins/cases/server/routes/api/internal/suggest_user_profiles.ts @@ -7,7 +7,10 @@ import type { KibanaRequest } from '@kbn/core-http-server'; import type { UserProfileService } from '../../../services'; -import { INTERNAL_SUGGEST_USER_PROFILES_URL } from '../../../../common/constants'; +import { + INTERNAL_SUGGEST_USER_PROFILES_URL, + SUGGEST_USER_PROFILES_API_TAG, +} from '../../../../common/constants'; import { createCaseError } from '../../../common/error'; import { createCasesRoute } from '../create_cases_route'; import { escapeHatch } from '../utils'; @@ -17,8 +20,12 @@ export const suggestUserProfilesRoute = (userProfileService: UserProfileService) createCasesRoute({ method: 'post', path: INTERNAL_SUGGEST_USER_PROFILES_URL, + security: { + authz: { + requiredPrivileges: [SUGGEST_USER_PROFILES_API_TAG], + }, + }, routerOptions: { - tags: ['access:casesSuggestUserProfiles'], access: 'internal', }, params: { diff --git a/x-pack/plugins/cloud_defend/public/components/control_general_view_response/index.tsx b/x-pack/plugins/cloud_defend/public/components/control_general_view_response/index.tsx index 1c782973dd0ed..9511d11aa4f70 100644 --- a/x-pack/plugins/cloud_defend/public/components/control_general_view_response/index.tsx +++ b/x-pack/plugins/cloud_defend/public/components/control_general_view_response/index.tsx @@ -286,7 +286,7 @@ export const ControlGeneralViewResponse = ({ <b>{i18n.actions}: </b> {response.actions?.map((action, i) => ( <span key={action}> - <b style={{ color: action === 'block' ? colors.danger : colors.ink }}> + <b css={{ color: action === 'block' ? colors.danger : colors.ink }}> {action[0].toUpperCase() + action.slice(1)} </b> {i !== (response.actions?.length || 0) - 1 && ', '} diff --git a/x-pack/plugins/cloud_defend/public/pages/policies/index.tsx b/x-pack/plugins/cloud_defend/public/pages/policies/index.tsx index c732be5421a17..d9890830ffcda 100644 --- a/x-pack/plugins/cloud_defend/public/pages/policies/index.tsx +++ b/x-pack/plugins/cloud_defend/public/pages/policies/index.tsx @@ -87,7 +87,7 @@ const TotalIntegrationsCount = ({ pageCount, totalCount, }: Record<'pageCount' | 'totalCount', number>) => ( - <EuiText size="xs" style={{ marginLeft: 8 }}> + <EuiText size="xs" css={{ marginLeft: 8 }}> <EuiTextColor color="subdued"> <FormattedMessage id="xpack.cloudDefend.policies.totalIntegrationsCountMessage" @@ -108,7 +108,7 @@ const SearchField = ({ return ( <EuiFlexGroup> - <EuiFlexItem grow={true} style={{ alignItems: 'flex-end' }}> + <EuiFlexItem grow={true} css={{ alignItems: 'flex-end' }}> <EuiFieldSearch fullWidth onSearch={setLocalValue} diff --git a/x-pack/plugins/cloud_defend/public/plugin.tsx b/x-pack/plugins/cloud_defend/public/plugin.tsx index 106ad3e47de78..43224794cddd6 100755 --- a/x-pack/plugins/cloud_defend/public/plugin.tsx +++ b/x-pack/plugins/cloud_defend/public/plugin.tsx @@ -71,7 +71,7 @@ export class CloudDefendPlugin const CloudDefendRouter = (props: CloudDefendRouterProps) => ( <KibanaContextProvider services={{ ...core, ...plugins }}> <RedirectAppLinks coreStart={core}> - <div style={{ width: '100%', height: '100%' }}> + <div css={{ width: '100%', height: '100%' }}> <SetupContext.Provider value={{ isCloudEnabled: this.isCloudEnabled }}> <Router {...props} /> </SetupContext.Provider> diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/jest.config.js b/x-pack/plugins/cloud_integrations/cloud_data_migration/jest.config.js deleted file mode 100644 index bd69c12576b57..0000000000000 --- a/x-pack/plugins/cloud_integrations/cloud_data_migration/jest.config.js +++ /dev/null @@ -1,18 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../../', - roots: ['<rootDir>/x-pack/plugins/cloud_integrations/cloud_data_migration'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/cloud_integrations/cloud_data_migration', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/cloud_integrations/cloud_data_migration/{common,public}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/cloud_integrations/cloud_data_migration/tsconfig.json b/x-pack/plugins/cloud_integrations/cloud_data_migration/tsconfig.json deleted file mode 100644 index 9b19d2a32b988..0000000000000 --- a/x-pack/plugins/cloud_integrations/cloud_data_migration/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - "../../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - // required plugins - "@kbn/cloud-plugin", - "@kbn/management-plugin", - "@kbn/features-plugin", - // required bundles - "@kbn/kibana-react-plugin", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/core-plugins-server", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/cloud_security_posture/server/routes/graph/route.ts b/x-pack/plugins/cloud_security_posture/server/routes/graph/route.ts index 9fb817b275a0d..f9544b656f927 100644 --- a/x-pack/plugins/cloud_security_posture/server/routes/graph/route.ts +++ b/x-pack/plugins/cloud_security_posture/server/routes/graph/route.ts @@ -12,7 +12,7 @@ import { import { transformError } from '@kbn/securitysolution-es-utils'; import type { GraphRequest } from '@kbn/cloud-security-posture-common/types/graph/v1'; import { GRAPH_ROUTE_PATH } from '../../../common/constants'; -import { CspRouter } from '../../types'; +import { CspRequestHandlerContext, CspRouter } from '../../types'; import { getGraph as getGraphV1 } from './v1'; export const defineGraphRoute = (router: CspRouter) => @@ -39,10 +39,11 @@ export const defineGraphRoute = (router: CspRouter) => }, }, }, - async (context, request, response) => { + async (context: CspRequestHandlerContext, request, response) => { + const cspContext = await context.csp; + const { nodesLimit, showUnknownTarget = false } = request.body; const { eventIds, start, end, esQuery } = request.body.query as GraphRequest['query']; - const cspContext = await context.csp; const spaceId = (await cspContext.spaces?.spacesService?.getActiveSpace(request))?.id; try { diff --git a/x-pack/plugins/cloud_security_posture/server/types.ts b/x-pack/plugins/cloud_security_posture/server/types.ts index df812fe534722..d5dc022bfcf66 100644 --- a/x-pack/plugins/cloud_security_posture/server/types.ts +++ b/x-pack/plugins/cloud_security_posture/server/types.ts @@ -22,6 +22,7 @@ import type { Logger, SavedObjectsClientContract, IScopedClusterClient, + CoreRequestHandlerContext, } from '@kbn/core/server'; import type { AgentService, @@ -88,6 +89,7 @@ export type CspRequestHandlerContext = CustomRequestHandlerContext<{ csp: CspApiRequestHandlerContext; fleet: FleetRequestHandlerContext['fleet']; alerting: AlertingApiRequestHandlerContext; + core: Promise<CoreRequestHandlerContext>; }>; /** diff --git a/x-pack/plugins/cross_cluster_replication/jest.config.js b/x-pack/plugins/cross_cluster_replication/jest.config.js deleted file mode 100644 index 87d557b57a6a7..0000000000000 --- a/x-pack/plugins/cross_cluster_replication/jest.config.js +++ /dev/null @@ -1,18 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/cross_cluster_replication'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/cross_cluster_replication', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/cross_cluster_replication/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/cross_cluster_replication/tsconfig.json b/x-pack/plugins/cross_cluster_replication/tsconfig.json deleted file mode 100644 index bd442a71a86a4..0000000000000 --- a/x-pack/plugins/cross_cluster_replication/tsconfig.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - ], - "kbn_references": [ - "@kbn/core", - // required plugins - "@kbn/licensing-plugin", - "@kbn/management-plugin", - "@kbn/remote-clusters-plugin", - "@kbn/index-management-plugin", - "@kbn/features-plugin", - // optional plugins - "@kbn/usage-collection-plugin", - // required bundles - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/data-plugin", - "@kbn/license-api-guard-plugin", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/analytics", - "@kbn/test-jest-helpers", - "@kbn/config-schema", - "@kbn/shared-ux-router", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/data_usage/common/utils.test.ts b/x-pack/plugins/data_usage/common/utils.test.ts deleted file mode 100644 index fc6b158c1caa0..0000000000000 --- a/x-pack/plugins/data_usage/common/utils.test.ts +++ /dev/null @@ -1,33 +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 { isDateRangeValid } from './utils'; - -describe('isDateRangeValid', () => { - describe('Valid ranges', () => { - it.each([ - ['both start and end date is `now`', { start: 'now', end: 'now' }], - ['start date is `now-10s` and end date is `now`', { start: 'now-10s', end: 'now' }], - ['bounded within the min and max date range', { start: 'now-8d', end: 'now-4s' }], - ])('should return true if %s', (_, { start, end }) => { - expect(isDateRangeValid({ start, end })).toBe(true); - }); - }); - - describe('Invalid ranges', () => { - it.each([ - ['starts before the min date', { start: 'now-11d', end: 'now-5s' }], - ['ends after the max date', { start: 'now-9d', end: 'now+2s' }], - [ - 'end date is before the start date even when both are within min and max date range', - { start: 'now-3s', end: 'now-10s' }, - ], - ])('should return false if the date range %s', (_, { start, end }) => { - expect(isDateRangeValid({ start, end })).toBe(false); - }); - }); -}); diff --git a/x-pack/plugins/data_usage/common/utils.ts b/x-pack/plugins/data_usage/common/utils.ts deleted file mode 100644 index 3fd7240153d4d..0000000000000 --- a/x-pack/plugins/data_usage/common/utils.ts +++ /dev/null @@ -1,55 +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 dateMath from '@kbn/datemath'; - -export const DEFAULT_DATE_RANGE_OPTIONS = Object.freeze({ - autoRefreshOptions: { - enabled: false, - duration: 10000, - }, - startDate: 'now-24h/h', - endDate: 'now', - maxDate: 'now+1s', - minDate: 'now-9d', - recentlyUsedDateRanges: [], -}); - -export const momentDateParser = (date: string) => dateMath.parse(date); -export const transformToUTCtime = ({ - start, - end, - isISOString = false, -}: { - start: string; - end: string; - isISOString?: boolean; -}) => { - const utcOffset = momentDateParser(start)?.utcOffset() ?? 0; - const utcStart = momentDateParser(start)?.utc().add(utcOffset, 'm'); - const utcEnd = momentDateParser(end)?.utc().add(utcOffset, 'm'); - return { - start: isISOString ? utcStart?.toISOString() : momentDateParser(start), - end: isISOString ? utcEnd?.toISOString() : momentDateParser(end), - }; -}; - -export const isDateRangeValid = ({ start, end }: { start: string; end: string }): boolean => { - const startDate = momentDateParser(start); - const endDate = momentDateParser(end); - - if (!startDate || !endDate) { - return false; - } - const minDate = momentDateParser(DEFAULT_DATE_RANGE_OPTIONS.minDate); - const maxDate = momentDateParser(DEFAULT_DATE_RANGE_OPTIONS.maxDate); - return ( - startDate.isSameOrAfter(minDate, 's') && - endDate.isSameOrBefore(maxDate, 's') && - startDate <= endDate - ); -}; diff --git a/x-pack/plugins/data_usage/jest.config.js b/x-pack/plugins/data_usage/jest.config.js deleted file mode 100644 index f73ddf7ec31ee..0000000000000 --- a/x-pack/plugins/data_usage/jest.config.js +++ /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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/data_usage'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/data_usage', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/datas_usage/{common,public}/**/*.{ts,tsx}'], -}; diff --git a/x-pack/plugins/data_usage/public/app/components/filters/charts_filters.tsx b/x-pack/plugins/data_usage/public/app/components/filters/charts_filters.tsx deleted file mode 100644 index 52561aa9f26f0..0000000000000 --- a/x-pack/plugins/data_usage/public/app/components/filters/charts_filters.tsx +++ /dev/null @@ -1,93 +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 React, { memo, useCallback, useMemo } from 'react'; -import { EuiFilterGroup, EuiFlexGroup, EuiFlexItem, EuiSuperUpdateButton } from '@elastic/eui'; -import type { - DurationRange, - OnRefreshChangeProps, -} from '@elastic/eui/src/components/date_picker/types'; -import { useTestIdGenerator } from '../../../hooks/use_test_id_generator'; -import { useGetDataUsageMetrics } from '../../../hooks/use_get_usage_metrics'; -import { DateRangePickerValues, UsageMetricsDateRangePicker } from './date_picker'; -import { ChartsFilter, ChartsFilterProps } from './charts_filter'; -import { FilterName } from '../../hooks'; - -export interface ChartFiltersProps { - dateRangePickerState: DateRangePickerValues; - isDataLoading: boolean; - isUpdateDisabled: boolean; - filterOptions: Record<FilterName, ChartsFilterProps['filterOptions']>; - onRefresh: () => void; - onRefreshChange: (evt: OnRefreshChangeProps) => void; - onTimeChange: ({ start, end }: DurationRange) => void; - onClick: ReturnType<typeof useGetDataUsageMetrics>['refetch']; - showMetricsTypesFilter?: boolean; - 'data-test-subj'?: string; -} - -export const ChartFilters = memo<ChartFiltersProps>( - ({ - dateRangePickerState, - isDataLoading, - isUpdateDisabled, - filterOptions, - onClick, - onRefresh, - onRefreshChange, - onTimeChange, - showMetricsTypesFilter = false, - 'data-test-subj': dataTestSubj, - }) => { - const getTestId = useTestIdGenerator(dataTestSubj); - - const filters = useMemo(() => { - return ( - <> - {showMetricsTypesFilter && ( - <ChartsFilter filterOptions={filterOptions.metricTypes} data-test-subj={dataTestSubj} /> - )} - {!filterOptions.dataStreams.isFilterLoading && ( - <ChartsFilter filterOptions={filterOptions.dataStreams} data-test-subj={dataTestSubj} /> - )} - </> - ); - }, [dataTestSubj, filterOptions, showMetricsTypesFilter]); - - const onClickRefreshButton = useCallback(() => onClick(), [onClick]); - - return ( - <EuiFlexGroup responsive gutterSize="m" alignItems="center" justifyContent="flexEnd"> - <EuiFlexItem grow={2} /> - <EuiFlexItem grow={1}> - <EuiFilterGroup>{filters}</EuiFilterGroup> - </EuiFlexItem> - <EuiFlexItem grow={2}> - <UsageMetricsDateRangePicker - dateRangePickerState={dateRangePickerState} - isDataLoading={isDataLoading} - onRefresh={onRefresh} - onRefreshChange={onRefreshChange} - onTimeChange={onTimeChange} - data-test-subj={dataTestSubj} - /> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <EuiSuperUpdateButton - data-test-subj={getTestId('super-refresh-button')} - fill={false} - isLoading={isDataLoading} - isDisabled={isUpdateDisabled} - onClick={onClickRefreshButton} - /> - </EuiFlexItem> - </EuiFlexGroup> - ); - } -); - -ChartFilters.displayName = 'ChartFilters'; diff --git a/x-pack/plugins/data_usage/public/app/components/legend_action_item.tsx b/x-pack/plugins/data_usage/public/app/components/legend_action_item.tsx deleted file mode 100644 index 3b4f0d9f698f7..0000000000000 --- a/x-pack/plugins/data_usage/public/app/components/legend_action_item.tsx +++ /dev/null @@ -1,17 +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 React, { memo } from 'react'; -import { EuiListGroupItem } from '@elastic/eui'; - -export const LegendActionItem = memo( - ({ label, onClick }: { label: string; onClick: () => Promise<void> | void }) => ( - <EuiListGroupItem label={label} onClick={onClick} size="s" /> - ) -); - -LegendActionItem.displayName = 'LegendActionItem'; diff --git a/x-pack/plugins/data_usage/public/app/components/page.tsx b/x-pack/plugins/data_usage/public/app/components/page.tsx deleted file mode 100644 index d7ff20f5e933f..0000000000000 --- a/x-pack/plugins/data_usage/public/app/components/page.tsx +++ /dev/null @@ -1,69 +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 { PropsWithChildren } from 'react'; -import React, { memo, useMemo } from 'react'; -import type { CommonProps } from '@elastic/eui'; -import { - EuiPageHeader, - EuiPageSection, - EuiFlexGroup, - EuiFlexItem, - EuiTitle, - EuiSpacer, -} from '@elastic/eui'; - -interface DataUsagePageProps { - title: React.ReactNode; - subtitle?: React.ReactNode; - actions?: React.ReactNode; - restrictWidth?: boolean | number; - hasBottomBorder?: boolean; - hideHeader?: boolean; -} - -export const DataUsagePage = memo<PropsWithChildren<DataUsagePageProps & CommonProps>>( - ({ title, subtitle, children, restrictWidth = false, hasBottomBorder = true, ...otherProps }) => { - const header = useMemo(() => { - return ( - <EuiFlexGroup direction="column" gutterSize="none" alignItems="flexStart"> - <EuiFlexItem grow={false}> - <EuiTitle size="l"> - <span data-test-subj="dataUsage-page-title">{title}</span> - </EuiTitle> - </EuiFlexItem> - </EuiFlexGroup> - ); - }, [, title]); - - const description = useMemo(() => { - return subtitle ? ( - <span data-test-subj="dataUsage-page-description">{subtitle}</span> - ) : undefined; - }, [subtitle]); - - return ( - <div {...otherProps}> - <> - <EuiPageHeader - pageTitle={header} - description={description} - bottomBorder={hasBottomBorder} - restrictWidth={restrictWidth} - data-test-subj={'dataUsage-page-header'} - /> - <EuiSpacer size="l" /> - </> - <EuiPageSection paddingSize="none" color="transparent" restrictWidth={restrictWidth}> - {children} - </EuiPageSection> - </div> - ); - } -); - -DataUsagePage.displayName = 'DataUsagePage'; diff --git a/x-pack/plugins/data_usage/public/app/data_usage_metrics_page.tsx b/x-pack/plugins/data_usage/public/app/data_usage_metrics_page.tsx deleted file mode 100644 index adc53e12b5749..0000000000000 --- a/x-pack/plugins/data_usage/public/app/data_usage_metrics_page.tsx +++ /dev/null @@ -1,25 +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 React from 'react'; -import { DataUsagePage } from './components/page'; -import { DATA_USAGE_PAGE } from '../translations'; -import { DataUsageMetrics } from './components/data_usage_metrics'; - -export const DataUsageMetricsPage = () => { - return ( - <DataUsagePage - data-test-subj="DataUsagePage" - title={DATA_USAGE_PAGE.title} - subtitle={DATA_USAGE_PAGE.subTitle} - > - <DataUsageMetrics /> - </DataUsagePage> - ); -}; - -DataUsageMetricsPage.displayName = 'DataUsageMetricsPage'; diff --git a/x-pack/plugins/data_usage/public/app/hooks/use_charts_filter.tsx b/x-pack/plugins/data_usage/public/app/hooks/use_charts_filter.tsx deleted file mode 100644 index 012a6027aadb2..0000000000000 --- a/x-pack/plugins/data_usage/public/app/hooks/use_charts_filter.tsx +++ /dev/null @@ -1,124 +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 { useState, useEffect, useMemo } from 'react'; -import { DEFAULT_SELECTED_OPTIONS } from '../../../common'; -import { - METRIC_TYPE_VALUES, - METRIC_TYPE_API_VALUES_TO_UI_OPTIONS_MAP, - isDefaultMetricType, -} from '../../../common/rest_types'; -import { FILTER_NAMES } from '../../translations'; -import { useDataUsageMetricsUrlParams } from './use_charts_url_params'; -import { formatBytes } from '../../utils/format_bytes'; -import { ChartsFilterProps } from '../components/filters/charts_filter'; - -export type FilterName = keyof typeof FILTER_NAMES; - -export type FilterItems = Array<{ - key?: string; - label: string; - isGroupLabel?: boolean; - checked?: 'on' | undefined; - 'data-test-subj'?: string; -}>; - -export const useChartsFilter = ({ - filterOptions, -}: { - filterOptions: ChartsFilterProps['filterOptions']; -}): { - areDataStreamsSelectedOnMount: boolean; - items: FilterItems; - setItems: React.Dispatch<React.SetStateAction<FilterItems>>; - hasActiveFilters: boolean; - numActiveFilters: number; - numFilters: number; - setAreDataStreamsSelectedOnMount: (value: React.SetStateAction<boolean>) => void; - setUrlDataStreamsFilter: ReturnType< - typeof useDataUsageMetricsUrlParams - >['setUrlDataStreamsFilter']; - setUrlMetricTypesFilter: ReturnType< - typeof useDataUsageMetricsUrlParams - >['setUrlMetricTypesFilter']; -} => { - const { - dataStreams: selectedDataStreamsFromUrl, - metricTypes: selectedMetricTypesFromUrl, - setUrlMetricTypesFilter, - setUrlDataStreamsFilter, - } = useDataUsageMetricsUrlParams(); - const isMetricTypesFilter = filterOptions.filterName === 'metricTypes'; - const isDataStreamsFilter = filterOptions.filterName === 'dataStreams'; - - // track the state of selected data streams via URL - // when the page is loaded via selected data streams on URL - const [areDataStreamsSelectedOnMount, setAreDataStreamsSelectedOnMount] = - useState<boolean>(false); - - useEffect(() => { - if (selectedDataStreamsFromUrl && selectedDataStreamsFromUrl.length > 0) { - setAreDataStreamsSelectedOnMount(true); - } - // don't sync with changes to further selectedDataStreamsFromUrl - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - // filter options - const [items, setItems] = useState<FilterItems>( - isMetricTypesFilter - ? METRIC_TYPE_VALUES.map((metricType) => ({ - key: metricType, - label: METRIC_TYPE_API_VALUES_TO_UI_OPTIONS_MAP[metricType], - checked: selectedMetricTypesFromUrl - ? selectedMetricTypesFromUrl.includes(metricType) - ? 'on' - : undefined - : isDefaultMetricType(metricType) // default metrics are selected by default - ? 'on' - : undefined, - 'data-test-subj': `${filterOptions.filterName}-filter-option`, - })) - : isDataStreamsFilter && !!filterOptions.options.length - ? filterOptions.options?.map((filterOption, i) => ({ - key: filterOption, - label: filterOption, - append: formatBytes(filterOptions.appendOptions?.[filterOption] ?? 0), - checked: selectedDataStreamsFromUrl - ? selectedDataStreamsFromUrl.includes(filterOption) - ? 'on' - : undefined - : i < DEFAULT_SELECTED_OPTIONS - ? 'on' - : undefined, - 'data-test-subj': `${filterOptions.filterName}-filter-option`, - })) - : [] - ); - - const hasActiveFilters = useMemo(() => !!items.find((item) => item.checked === 'on'), [items]); - const numActiveFilters = useMemo( - () => items.filter((item) => item.checked === 'on').length, - [items] - ); - const numFilters = useMemo( - () => items.filter((item) => item.key && item.checked !== 'on').length, - [items] - ); - - return { - areDataStreamsSelectedOnMount, - items, - setItems, - hasActiveFilters, - numActiveFilters, - numFilters, - setAreDataStreamsSelectedOnMount, - setUrlMetricTypesFilter, - setUrlDataStreamsFilter, - }; -}; diff --git a/x-pack/plugins/data_usage/public/hooks/use_get_data_streams.ts b/x-pack/plugins/data_usage/public/hooks/use_get_data_streams.ts deleted file mode 100644 index d43c3fff139fb..0000000000000 --- a/x-pack/plugins/data_usage/public/hooks/use_get_data_streams.ts +++ /dev/null @@ -1,73 +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 { UseQueryOptions, UseQueryResult } from '@tanstack/react-query'; -import { useQuery } from '@tanstack/react-query'; -import type { IHttpFetchError } from '@kbn/core-http-browser'; -import { DATA_USAGE_DATA_STREAMS_API_ROUTE, DEFAULT_SELECTED_OPTIONS } from '../../common'; -import { useKibanaContextForPlugin } from '../utils/use_kibana'; - -type GetDataUsageDataStreamsResponse = Array<{ - name: string; - storageSizeBytes: number; - selected: boolean; -}>; - -export const useGetDataUsageDataStreams = ({ - selectedDataStreams, - options = { - enabled: false, - }, -}: { - selectedDataStreams?: string[]; - options?: UseQueryOptions<GetDataUsageDataStreamsResponse, IHttpFetchError>; -}): UseQueryResult<GetDataUsageDataStreamsResponse, IHttpFetchError> => { - const { http } = useKibanaContextForPlugin().services; - - return useQuery<GetDataUsageDataStreamsResponse, IHttpFetchError>({ - queryKey: ['get-data-usage-data-streams'], - ...options, - keepPreviousData: true, - queryFn: async ({ signal }) => { - const dataStreamsResponse = await http - .get<GetDataUsageDataStreamsResponse>(DATA_USAGE_DATA_STREAMS_API_ROUTE, { - signal, - version: '1', - }) - .catch((error) => { - throw error.body; - }); - - const augmentedDataStreamsBasedOnSelectedItems = dataStreamsResponse.reduce<{ - selected: GetDataUsageDataStreamsResponse; - rest: GetDataUsageDataStreamsResponse; - }>( - (acc, ds, i) => { - const item = { - name: ds.name, - storageSizeBytes: ds.storageSizeBytes, - selected: ds.selected, - }; - - if (selectedDataStreams?.includes(ds.name) && i < DEFAULT_SELECTED_OPTIONS) { - acc.selected.push({ ...item, selected: true }); - } else { - acc.rest.push({ ...item, selected: false }); - } - - return acc; - }, - { selected: [], rest: [] } - ); - - return [ - ...augmentedDataStreamsBasedOnSelectedItems.selected, - ...augmentedDataStreamsBasedOnSelectedItems.rest, - ]; - }, - }); -}; diff --git a/x-pack/plugins/data_usage/public/translations.tsx b/x-pack/plugins/data_usage/public/translations.tsx deleted file mode 100644 index 0996ec2bb6d50..0000000000000 --- a/x-pack/plugins/data_usage/public/translations.tsx +++ /dev/null @@ -1,72 +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 { i18n } from '@kbn/i18n'; - -export const PLUGIN_NAME = i18n.translate('xpack.dataUsage.name', { - defaultMessage: 'Data Usage', -}); - -export const FILTER_NAMES = Object.freeze({ - metricTypes: i18n.translate('xpack.dataUsage.metrics.filter.metricTypes', { - defaultMessage: 'Metric types', - }), - dataStreams: i18n.translate('xpack.dataUsage.metrics.filter.dataStreams', { - defaultMessage: 'Data streams', - }), -}); - -export const CHART_TITLES = Object.freeze({ - ingest_rate: i18n.translate('xpack.dataUsage.charts.ingestedMax', { - defaultMessage: 'Data Ingested', - }), - storage_retained: i18n.translate('xpack.dataUsage.charts.retainedMax', { - defaultMessage: 'Data Retained in Storage', - }), -}); - -export const DATA_USAGE_PAGE = Object.freeze({ - title: i18n.translate('xpack.dataUsage.name', { - defaultMessage: 'Data Usage', - }), - subTitle: i18n.translate('xpack.dataUsage.pageSubtitle', { - defaultMessage: 'Monitor data ingested and retained by data streams.', - }), -}); - -export const UX_LABELS = Object.freeze({ - filterSelectAll: i18n.translate('xpack.dataUsage.metrics.filter.selectAll', { - defaultMessage: 'Select all', - }), - filterClearAll: i18n.translate('xpack.dataUsage.metrics.filter.clearAll', { - defaultMessage: 'Clear all', - }), - filterSearchPlaceholder: (filterName: string) => - i18n.translate('xpack.dataUsage.metrics.filter.searchPlaceholder', { - defaultMessage: 'Search {filterName}', - values: { filterName }, - }), - filterEmptyMessage: (filterName: string) => - i18n.translate('xpack.dataUsage.metrics.filter.emptyMessage', { - defaultMessage: 'No {filterName} available', - values: { filterName }, - }), - dataQualityPopup: { - open: i18n.translate('xpack.dataUsage.metrics.dataQuality.open.actions', { - defaultMessage: 'Open data stream actions', - }), - copy: i18n.translate('xpack.dataUsage.metrics.dataQuality.copy.dataStream', { - defaultMessage: 'Copy data stream name', - }), - manage: i18n.translate('xpack.dataUsage.metrics.dataQuality.manage.dataStream', { - defaultMessage: 'Manage data stream', - }), - view: i18n.translate('xpack.dataUsage.metrics.dataQuality.view', { - defaultMessage: 'View data quality', - }), - }, -}); diff --git a/x-pack/plugins/data_usage/server/routes/internal/data_streams_handler.ts b/x-pack/plugins/data_usage/server/routes/internal/data_streams_handler.ts deleted file mode 100644 index 28967b9a0ee4a..0000000000000 --- a/x-pack/plugins/data_usage/server/routes/internal/data_streams_handler.ts +++ /dev/null @@ -1,58 +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 { RequestHandler } from '@kbn/core/server'; -import { DataUsageContext, DataUsageRequestHandlerContext } from '../../types'; -import { errorHandler } from '../error_handler'; -import { getMeteringStats } from '../../utils/get_metering_stats'; -import { DataStreamsRequestQuery } from '../../../common/rest_types/data_streams'; -import { NoIndicesMeteringError, NoPrivilegeMeteringError } from '../../errors'; - -export const getDataStreamsHandler = ( - dataUsageContext: DataUsageContext -): RequestHandler<never, DataStreamsRequestQuery, unknown, DataUsageRequestHandlerContext> => { - const logger = dataUsageContext.logFactory.get('dataStreamsRoute'); - return async (context, request, response) => { - const { includeZeroStorage } = request.query; - - logger.debug('Retrieving user data streams'); - - try { - const core = await context.core; - const { datastreams: meteringStats } = await getMeteringStats( - core.elasticsearch.client.asSecondaryAuthUser - ); - - const body = - meteringStats && !!meteringStats.length - ? meteringStats - .sort((a, b) => b.size_in_bytes - a.size_in_bytes) - .reduce<Array<{ name: string; storageSizeBytes: number }>>((acc, stat) => { - if (includeZeroStorage || stat.size_in_bytes > 0) { - acc.push({ - name: stat.name, - storageSizeBytes: stat.size_in_bytes ?? 0, - }); - } - return acc; - }, []) - : []; - - return response.ok({ - body, - }); - } catch (error) { - if (error.message.includes('security_exception')) { - return errorHandler(logger, response, new NoPrivilegeMeteringError()); - } else if (error.message.includes('index_not_found_exception')) { - return errorHandler(logger, response, new NoIndicesMeteringError()); - } - - return errorHandler(logger, response, error); - } - }; -}; diff --git a/x-pack/plugins/data_usage/tsconfig.json b/x-pack/plugins/data_usage/tsconfig.json deleted file mode 100644 index 8647f7957451a..0000000000000 --- a/x-pack/plugins/data_usage/tsconfig.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "index.ts", - "common/**/*", - "public/**/*", - "server/**/*", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/i18n", - "@kbn/data-plugin", - "@kbn/kibana-react-plugin", - "@kbn/management-plugin", - "@kbn/react-kibana-context-render", - "@kbn/shared-ux-router", - "@kbn/ebt-tools", - "@kbn/share-plugin", - "@kbn/config-schema", - "@kbn/logging", - "@kbn/deeplinks-observability", - "@kbn/unified-search-plugin", - "@kbn/core-http-browser", - "@kbn/core-chrome-browser", - "@kbn/features-plugin", - "@kbn/index-management-shared-types", - "@kbn/repo-info", - "@kbn/cloud-plugin", - "@kbn/server-http-tools", - "@kbn/utility-types-jest", - "@kbn/datemath", - "@kbn/ui-theme", - "@kbn/i18n-react", - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/discover_enhanced/ui_tests/README.md b/x-pack/plugins/discover_enhanced/ui_tests/README.md index e6c5943e1533f..5de090d2145d4 100644 --- a/x-pack/plugins/discover_enhanced/ui_tests/README.md +++ b/x-pack/plugins/discover_enhanced/ui_tests/README.md @@ -3,9 +3,10 @@ First start the servers with ```bash // ESS -node scripts/scout_start_servers.js --stateful +node scripts/scout.js start-server --stateful + // Serverless -node scripts/scout_start_servers.js --serverless=es +node scripts/scout.js start-server --serverless=[es|oblt|security] ``` Then you can run the tests multiple times in another terminal with: @@ -13,8 +14,11 @@ Then you can run the tests multiple times in another terminal with: ```bash // ESS npx playwright test --config x-pack/plugins/discover_enhanced/ui_tests/playwright.config.ts --grep @ess + // Serverless -npx playwright test --config x-pack/plugins/discover_enhanced/ui_tests/playwright.config.ts --grep @svlSearch // @svlOblt, @svlSecurity +npx playwright test --config x-pack/plugins/discover_enhanced/ui_tests/playwright.config.ts --grep @svlSearch + +// @svlOblt, @svlSecurity ``` Test results are available in `x-pack/plugins/discover_enhanced/ui_tests/output` diff --git a/x-pack/plugins/discover_enhanced/ui_tests/tests/error_handling.spec.ts b/x-pack/plugins/discover_enhanced/ui_tests/tests/error_handling.spec.ts index 914558fbdc97f..82c45b52ad567 100644 --- a/x-pack/plugins/discover_enhanced/ui_tests/tests/error_handling.spec.ts +++ b/x-pack/plugins/discover_enhanced/ui_tests/tests/error_handling.spec.ts @@ -5,10 +5,10 @@ * 2.0. */ -import { expect } from '@kbn/scout'; +import { expect, tags } from '@kbn/scout'; import { test, testData } from '../fixtures'; -test.describe('Discover app - errors', { tag: ['@ess'] }, () => { +test.describe('Discover app - errors', { tag: tags.ESS_ONLY }, () => { test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { await kbnClient.savedObjects.clean({ types: ['search', 'index-pattern'] }); await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.LOGSTASH); diff --git a/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_search_embeddable.spec.ts b/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_search_embeddable.spec.ts index 7103f2b25e633..6c37611dbc202 100644 --- a/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_search_embeddable.spec.ts +++ b/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_search_embeddable.spec.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ScoutWorkerFixtures, expect } from '@kbn/scout'; +import { ScoutWorkerFixtures, expect, tags } from '@kbn/scout'; import { test, testData } from '../fixtures'; const createSavedSearch = async ( @@ -37,66 +37,62 @@ const createSavedSearch = async ( ], }); -test.describe( - 'Discover app - saved search embeddable', - { tag: ['@ess', '@svlSecurity', '@svlOblt', '@svlSearch'] }, - () => { - const SAVED_SEARCH_TITLE = 'TempSearch'; - const SAVED_SEARCH_ID = '90943e30-9a47-11e8-b64d-95841ca0b247'; - test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { - await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.LOGSTASH); - await kbnClient.importExport.load(testData.KBN_ARCHIVES.DASHBOARD_DRILLDOWNS); - await uiSettings.set({ - defaultIndex: testData.DATA_VIEW_ID.LOGSTASH, // TODO: investigate why it is required for `node scripts/playwright_test.js` run - 'timepicker:timeDefaults': `{ "from": "${testData.LOGSTASH_DEFAULT_START_TIME}", "to": "${testData.LOGSTASH_DEFAULT_END_TIME}"}`, - }); +test.describe('Discover app - saved search embeddable', { tag: tags.DEPLOYMENT_AGNOSTIC }, () => { + const SAVED_SEARCH_TITLE = 'TempSearch'; + const SAVED_SEARCH_ID = '90943e30-9a47-11e8-b64d-95841ca0b247'; + test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { + await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.LOGSTASH); + await kbnClient.importExport.load(testData.KBN_ARCHIVES.DASHBOARD_DRILLDOWNS); + await uiSettings.set({ + defaultIndex: testData.DATA_VIEW_ID.LOGSTASH, // TODO: investigate why it is required for `node scripts/playwright_test.js` run + 'timepicker:timeDefaults': `{ "from": "${testData.LOGSTASH_DEFAULT_START_TIME}", "to": "${testData.LOGSTASH_DEFAULT_END_TIME}"}`, }); + }); - test.afterAll(async ({ kbnClient, uiSettings }) => { - await uiSettings.unset('defaultIndex', 'timepicker:timeDefaults'); - await kbnClient.savedObjects.cleanStandardList(); - }); + test.afterAll(async ({ kbnClient, uiSettings }) => { + await uiSettings.unset('defaultIndex', 'timepicker:timeDefaults'); + await kbnClient.savedObjects.cleanStandardList(); + }); - test.beforeEach(async ({ browserAuth, pageObjects }) => { - await browserAuth.loginAsPrivilegedUser(); - await pageObjects.dashboard.goto(); - }); + test.beforeEach(async ({ browserAuth, pageObjects }) => { + await browserAuth.loginAsPrivilegedUser(); + await pageObjects.dashboard.goto(); + }); - test('should allow removing the dashboard panel after the underlying saved search has been deleted', async ({ + test('should allow removing the dashboard panel after the underlying saved search has been deleted', async ({ + kbnClient, + page, + pageObjects, + }) => { + await pageObjects.dashboard.openNewDashboard(); + await createSavedSearch( kbnClient, - page, - pageObjects, - }) => { - await pageObjects.dashboard.openNewDashboard(); - await createSavedSearch( - kbnClient, - SAVED_SEARCH_ID, - SAVED_SEARCH_TITLE, - testData.DATA_VIEW_ID.LOGSTASH - ); - await pageObjects.dashboard.addPanelFromLibrary(SAVED_SEARCH_TITLE); - await page.testSubj.locator('savedSearchTotalDocuments').waitFor({ - state: 'visible', - }); + SAVED_SEARCH_ID, + SAVED_SEARCH_TITLE, + testData.DATA_VIEW_ID.LOGSTASH + ); + await pageObjects.dashboard.addPanelFromLibrary(SAVED_SEARCH_TITLE); + await page.testSubj.locator('savedSearchTotalDocuments').waitFor({ + state: 'visible', + }); - await pageObjects.dashboard.saveDashboard('Dashboard with deleted saved search'); - await kbnClient.savedObjects.delete({ - type: 'search', - id: SAVED_SEARCH_ID, - }); + await pageObjects.dashboard.saveDashboard('Dashboard with deleted saved search'); + await kbnClient.savedObjects.delete({ + type: 'search', + id: SAVED_SEARCH_ID, + }); - await page.reload(); - await page.waitForLoadingIndicatorHidden(); - await expect( - page.testSubj.locator('embeddableError'), - 'Embeddable error should be displayed' - ).toBeVisible(); + await page.reload(); + await page.waitForLoadingIndicatorHidden(); + await expect( + page.testSubj.locator('embeddableError'), + 'Embeddable error should be displayed' + ).toBeVisible(); - await pageObjects.dashboard.removePanel('embeddableError'); - await expect( - page.testSubj.locator('embeddableError'), - 'Embeddable error should not be displayed' - ).toBeHidden(); - }); - } -); + await pageObjects.dashboard.removePanel('embeddableError'); + await expect( + page.testSubj.locator('embeddableError'), + 'Embeddable error should not be displayed' + ).toBeHidden(); + }); +}); diff --git a/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_searches.spec.ts b/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_searches.spec.ts index 1398f5f24ab27..94a0d6b7b0638 100644 --- a/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_searches.spec.ts +++ b/x-pack/plugins/discover_enhanced/ui_tests/tests/saved_searches.spec.ts @@ -31,98 +31,93 @@ const assertDataViewIsSelected = async (page: ExtendedScoutTestFixtures['page'], 'Incorrect data view is selected' ).toHaveText(name); -test.describe( - 'Discover app - saved searches', - { tag: ['@ess', '@svlSecurity', '@svlOblt', '@svlSearch'] }, - () => { - const START_TIME = '2019-04-27T23:56:51.374Z'; - const END_TIME = '2019-08-23T16:18:51.821Z'; - const PANEL_NAME = 'Ecommerce Data'; - const SEARCH_QUERY = 'customer_gender:MALE'; - const SAVED_SEARCH_NAME = 'test-unselect-saved-search'; - const filterFieldAndValue = { - field: 'category', - value: `Men's Shoes`, - }; - - test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { - await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.ECOMMERCE); - await kbnClient.importExport.load(testData.KBN_ARCHIVES.DISCOVER); - await kbnClient.importExport.load(testData.KBN_ARCHIVES.ECOMMERCE); - await uiSettings.set({ - defaultIndex: testData.DATA_VIEW_ID.ECOMMERCE, - 'timepicker:timeDefaults': `{ "from": "${START_TIME}", "to": "${END_TIME}"}`, - }); +test.describe('Discover app - saved searches', { tag: ['@ess', '@svlSearch', '@svlOblt'] }, () => { + // TODO: Update to use an ES archive with an index accessible to 'viewer' + // for running this test against the Security serverless project. + const START_TIME = '2019-04-27T23:56:51.374Z'; + const END_TIME = '2019-08-23T16:18:51.821Z'; + const PANEL_NAME = 'Ecommerce Data'; + const SEARCH_QUERY = 'customer_gender:MALE'; + const SAVED_SEARCH_NAME = 'test-unselect-saved-search'; + const filterFieldAndValue = { + field: 'category', + value: `Men's Shoes`, + }; + + test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { + await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.ECOMMERCE); + await kbnClient.importExport.load(testData.KBN_ARCHIVES.DISCOVER); + await kbnClient.importExport.load(testData.KBN_ARCHIVES.ECOMMERCE); + await uiSettings.set({ + defaultIndex: testData.DATA_VIEW_ID.ECOMMERCE, + 'timepicker:timeDefaults': `{ "from": "${START_TIME}", "to": "${END_TIME}"}`, }); - - test.afterAll(async ({ kbnClient, uiSettings }) => { - await uiSettings.unset('defaultIndex', 'timepicker:timeDefaults'); - await kbnClient.savedObjects.cleanStandardList(); + }); + + test.afterAll(async ({ kbnClient, uiSettings }) => { + await uiSettings.unset('defaultIndex', 'timepicker:timeDefaults'); + await kbnClient.savedObjects.cleanStandardList(); + }); + + test.beforeEach(async ({ browserAuth }) => { + await browserAuth.loginAsPrivilegedUser(); + }); + + test('should customize time range on dashboards', async ({ pageObjects, page }) => { + await pageObjects.dashboard.goto(); + await pageObjects.dashboard.openNewDashboard(); + await pageObjects.dashboard.addPanelFromLibrary(PANEL_NAME); + await page.testSubj.locator('savedSearchTotalDocuments').waitFor({ + state: 'visible', }); - test.beforeEach(async ({ browserAuth }) => { - await browserAuth.loginAsPrivilegedUser(); + await pageObjects.dashboard.customizePanel({ + name: PANEL_NAME, + customTimeRageCommonlyUsed: { value: 'Last_90 days' }, }); - - test('should customize time range on dashboards', async ({ pageObjects, page }) => { - await pageObjects.dashboard.goto(); - await pageObjects.dashboard.openNewDashboard(); - await pageObjects.dashboard.addPanelFromLibrary(PANEL_NAME); - await page.testSubj.locator('savedSearchTotalDocuments').waitFor({ - state: 'visible', - }); - - await pageObjects.dashboard.customizePanel({ - name: PANEL_NAME, - customTimeRageCommonlyUsed: { value: 'Last_90 days' }, - }); - await expect( - page.testSubj.locator('embeddedSavedSearchDocTable').locator('.euiDataGrid__noResults'), - 'No results message in Saved Search panel should be visible' - ).toBeVisible(); + await expect( + page.testSubj.locator('embeddedSavedSearchDocTable').locator('.euiDataGrid__noResults'), + 'No results message in Saved Search panel should be visible' + ).toBeVisible(); + }); + + test(`should unselect saved search when navigating to a 'new'`, async ({ pageObjects, page }) => { + await pageObjects.discover.goto(); + await assertDataViewIsSelected(page, testData.DATA_VIEW.ECOMMERCE); + await pageObjects.filterBar.addFilter({ + ...filterFieldAndValue, + operator: 'is', }); + await page.testSubj.fill('queryInput', SEARCH_QUERY); + await page.testSubj.click('querySubmitButton'); + await pageObjects.discover.waitForHistogramRendered(); - test(`should unselect saved search when navigating to a 'new'`, async ({ - pageObjects, - page, - }) => { - await pageObjects.discover.goto(); - await assertDataViewIsSelected(page, testData.DATA_VIEW.ECOMMERCE); - await pageObjects.filterBar.addFilter({ + await pageObjects.discover.saveSearch(SAVED_SEARCH_NAME); + await pageObjects.discover.waitForHistogramRendered(); + + expect( + await pageObjects.filterBar.hasFilter({ ...filterFieldAndValue, - operator: 'is', - }); - await page.testSubj.fill('queryInput', SEARCH_QUERY); - await page.testSubj.click('querySubmitButton'); - await pageObjects.discover.waitForHistogramRendered(); - - await pageObjects.discover.saveSearch(SAVED_SEARCH_NAME); - await pageObjects.discover.waitForHistogramRendered(); - - expect( - await pageObjects.filterBar.hasFilter({ - ...filterFieldAndValue, - enabled: true, // Filter is enabled by default - }) - ).toBe(true); - await expect(page.testSubj.locator('queryInput')).toHaveText(SEARCH_QUERY); - - // create new search - await pageObjects.discover.clickNewSearch(); - await assertDataViewIsSelected(page, testData.DATA_VIEW.ECOMMERCE); - await assertNoFilterAndEmptyQuery(filterFieldAndValue, pageObjects, page); - - // change data view - await pageObjects.discover.selectDataView(testData.DATA_VIEW.LOGSTASH); - await assertNoFilterAndEmptyQuery(filterFieldAndValue, pageObjects, page); - - // change data view again - await pageObjects.discover.selectDataView(testData.DATA_VIEW.ECOMMERCE); - await assertNoFilterAndEmptyQuery(filterFieldAndValue, pageObjects, page); - - // create new search again - await pageObjects.discover.clickNewSearch(); - await assertDataViewIsSelected(page, testData.DATA_VIEW.ECOMMERCE); - }); - } -); + enabled: true, // Filter is enabled by default + }) + ).toBe(true); + await expect(page.testSubj.locator('queryInput')).toHaveText(SEARCH_QUERY); + + // create new search + await pageObjects.discover.clickNewSearch(); + await assertDataViewIsSelected(page, testData.DATA_VIEW.ECOMMERCE); + await assertNoFilterAndEmptyQuery(filterFieldAndValue, pageObjects, page); + + // change data view + await pageObjects.discover.selectDataView(testData.DATA_VIEW.LOGSTASH); + await assertNoFilterAndEmptyQuery(filterFieldAndValue, pageObjects, page); + + // change data view again + await pageObjects.discover.selectDataView(testData.DATA_VIEW.ECOMMERCE); + await assertNoFilterAndEmptyQuery(filterFieldAndValue, pageObjects, page); + + // create new search again + await pageObjects.discover.clickNewSearch(); + await assertDataViewIsSelected(page, testData.DATA_VIEW.ECOMMERCE); + }); +}); diff --git a/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions.spec.ts b/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions.spec.ts index 04836afb99b5b..40b07726b31e4 100644 --- a/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions.spec.ts +++ b/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions.spec.ts @@ -5,12 +5,12 @@ * 2.0. */ -import { expect } from '@kbn/scout'; +import { expect, tags } from '@kbn/scout'; import { test, testData, assertionMessages } from '../fixtures'; test.describe( 'Discover app - value suggestions: useTimeRange enabled', - { tag: ['@ess', '@svlSecurity', '@svlOblt', '@svlSearch'] }, + { tag: tags.DEPLOYMENT_AGNOSTIC }, () => { test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.LOGSTASH); diff --git a/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_non_time_based.spec.ts b/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_non_time_based.spec.ts index 319d8af3e93c9..d8035597fa0e4 100644 --- a/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_non_time_based.spec.ts +++ b/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_non_time_based.spec.ts @@ -10,7 +10,9 @@ import { test, testData, assertionMessages } from '../fixtures'; test.describe( 'Discover app - value suggestions non-time based', - { tag: ['@ess', '@svlSecurity', '@svlOblt', '@svlSearch'] }, + { tag: ['@ess', '@svlSearch', '@svlOblt'] }, + // TODO: Update to use an ES archive with an index accessible to 'viewer' + // for running this test against the Security serverless project. () => { test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.NO_TIME_FIELD); diff --git a/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_use_time_range_disabled.spec.ts b/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_use_time_range_disabled.spec.ts index 857709b091940..cce172ad8494c 100644 --- a/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_use_time_range_disabled.spec.ts +++ b/x-pack/plugins/discover_enhanced/ui_tests/tests/value_suggestions_use_time_range_disabled.spec.ts @@ -5,12 +5,12 @@ * 2.0. */ -import { expect } from '@kbn/scout'; +import { expect, tags } from '@kbn/scout'; import { test, testData, assertionMessages } from '../fixtures'; test.describe( 'Discover app - value suggestions: useTimeRange disabled', - { tag: ['@ess', '@svlSecurity', '@svlOblt', '@svlSearch'] }, + { tag: tags.DEPLOYMENT_AGNOSTIC }, () => { test.beforeAll(async ({ esArchiver, kbnClient, uiSettings }) => { await esArchiver.loadIfNeeded(testData.ES_ARCHIVES.LOGSTASH); diff --git a/x-pack/plugins/ecs_data_quality_dashboard/jest.config.js b/x-pack/plugins/ecs_data_quality_dashboard/jest.config.js deleted file mode 100644 index cc9c79fe6d1e5..0000000000000 --- a/x-pack/plugins/ecs_data_quality_dashboard/jest.config.js +++ /dev/null @@ -1,18 +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. - */ - -module.exports = { - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/ecs_data_quality_dashboard/{common,lib,server}/**/*.{ts,tsx}', - ], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/ecs_data_quality_dashboard', - coverageReporters: ['text', 'html'], - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/ecs_data_quality_dashboard'], - preset: '@kbn/test', -}; diff --git a/x-pack/plugins/ecs_data_quality_dashboard/tsconfig.json b/x-pack/plugins/ecs_data_quality_dashboard/tsconfig.json deleted file mode 100644 index cf31d7461b509..0000000000000 --- a/x-pack/plugins/ecs_data_quality_dashboard/tsconfig.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "server/lib/**/*", - "server/**/*", - // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 - "server/**/*.json", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/core-http-server", - "@kbn/licensing-plugin", - "@kbn/core-http-request-handler-context-server", - "@kbn/securitysolution-io-ts-utils", - "@kbn/securitysolution-io-ts-types", - "@kbn/i18n", - "@kbn/core-http-router-server-mocks", - "@kbn/logging-mocks", - "@kbn/data-stream-adapter", - "@kbn/spaces-plugin", - "@kbn/core-elasticsearch-server-mocks", - "@kbn/core-elasticsearch-server", - "@kbn/core-security-common", - "@kbn/datemath", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/elastic_assistant/README.md b/x-pack/plugins/elastic_assistant/README.md deleted file mode 100755 index 8cf2c0b8903dd..0000000000000 --- a/x-pack/plugins/elastic_assistant/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Elastic AI Assistant - -This plugin implements (only) server APIs for the `Elastic AI Assistant`. - -This plugin does NOT contain UI components. See `x-pack/packages/kbn-elastic-assistant` for React components. - -## Maintainers - -Maintained by the Security Solution team - -## Graph structure - -### Default Assistant graph - -![DefaultAssistantGraph](./docs/img/default_assistant_graph.png) - -### Default Attack discovery graph - -![DefaultAttackDiscoveryGraph](./docs/img/default_attack_discovery_graph.png) - -## Development - -### Generate graph structure - -To generate the graph structure, run `yarn draw-graph` from the plugin directory. -The graphs will be generated in the `docs/img` directory of the plugin. - -### Testing - -To run the tests for this plugin, run `node scripts/jest --watch x-pack/plugins/elastic_assistant/jest.config.js --coverage` from the Kibana root directory. diff --git a/x-pack/plugins/elastic_assistant/jest.config.js b/x-pack/plugins/elastic_assistant/jest.config.js deleted file mode 100644 index 7bbeb3b1c89d2..0000000000000 --- a/x-pack/plugins/elastic_assistant/jest.config.js +++ /dev/null @@ -1,17 +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. - */ - -module.exports = { - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/elastic_assistant/{common,lib,server}/**/*.{ts,tsx}', - ], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/elastic_assistant', - coverageReporters: ['text', 'html'], - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/elastic_assistant'], - preset: '@kbn/test', -}; diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/index.ts b/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/index.ts deleted file mode 100644 index 706e4444488d9..0000000000000 --- a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/index.ts +++ /dev/null @@ -1,132 +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 { AuthenticatedUser, ElasticsearchClient, Logger } from '@kbn/core/server'; - -import { DEFAULT_NAMESPACE_STRING } from '@kbn/core-saved-objects-utils-server'; -import { ESSearchRequest, ESSearchResponse } from '@kbn/es-types'; -import { estypes } from '@elastic/elasticsearch'; -import { IIndexPatternString } from '../types'; -import { getIndexTemplateAndPattern } from '../lib/data_stream/helpers'; -import { DocumentsDataWriter } from '../lib/data_stream/documents_data_writer'; -import { FindResponse, findDocuments } from './find'; - -export interface AIAssistantDataClientParams { - elasticsearchClientPromise: Promise<ElasticsearchClient>; - kibanaVersion: string; - spaceId: string; - logger: Logger; - indexPatternsResourceName: string; - currentUser: AuthenticatedUser | null; -} - -export class AIAssistantDataClient { - /** Kibana space id the document index are part of */ - public readonly spaceId: string; - - /** User creating, modifying, deleting, or updating a document */ - private readonly currentUser: AuthenticatedUser | null; - - private writerCache: Map<string, DocumentsDataWriter> = new Map(); - - public indexTemplateAndPattern: IIndexPatternString; - - constructor(public readonly options: AIAssistantDataClientParams) { - this.indexTemplateAndPattern = getIndexTemplateAndPattern( - this.options.indexPatternsResourceName, - this.options.spaceId ?? DEFAULT_NAMESPACE_STRING - ); - this.currentUser = this.options.currentUser; - this.spaceId = this.options.spaceId; - } - - public getWriter = async (): Promise<DocumentsDataWriter> => { - const spaceId = this.spaceId; - if (this.writerCache.get(spaceId)) { - return this.writerCache.get(spaceId) as DocumentsDataWriter; - } - await this.initializeWriter(spaceId, this.indexTemplateAndPattern.alias); - return this.writerCache.get(spaceId) as DocumentsDataWriter; - }; - - private async initializeWriter(spaceId: string, index: string): Promise<DocumentsDataWriter> { - const esClient = await this.options.elasticsearchClientPromise; - const writer = new DocumentsDataWriter({ - esClient, - spaceId, - index, - logger: this.options.logger, - user: { id: this.currentUser?.profile_uid, name: this.currentUser?.username }, - }); - - this.writerCache.set(spaceId, writer); - return writer; - } - - public getReader = async <TResponse>() => { - const indexPatterns = this.indexTemplateAndPattern.alias; - - return { - search: async <TSearchRequest extends ESSearchRequest, TDoc = Partial<TResponse>>( - request: TSearchRequest - ): Promise<ESSearchResponse<TDoc, TSearchRequest>> => { - try { - const esClient = await this.options.elasticsearchClientPromise; - return (await esClient.search({ - ...request, - index: indexPatterns, - ignore_unavailable: true, - seq_no_primary_term: true, - })) as unknown as ESSearchResponse<TDoc, TSearchRequest>; - } catch (err) { - this.options.logger.error( - `Error performing search in AIAssistantDataClient - ${err.message}` - ); - throw err; - } - }, - }; - }; - - public findDocuments = async <TSearchSchema>({ - perPage, - page, - sortField, - sortOrder, - filter, - fields, - aggs, - mSearch, - }: { - perPage: number; - page: number; - sortField?: string; - sortOrder?: string; - filter?: string; - fields?: string[]; - aggs?: Record<string, estypes.AggregationsAggregationContainer>; - mSearch?: { - filter: string; - perPage: number; - }; - }): Promise<Promise<FindResponse<TSearchSchema>>> => { - const esClient = await this.options.elasticsearchClientPromise; - return findDocuments<TSearchSchema>({ - esClient, - fields, - page, - perPage, - filter, - sortField, - index: this.indexTemplateAndPattern.alias, - sortOrder: sortOrder as estypes.SortOrder, - logger: this.options.logger, - aggs, - mSearch, - }); - }; -} diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts b/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts deleted file mode 100644 index c3ce7fb1a43a0..0000000000000 --- a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts +++ /dev/null @@ -1,692 +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 { - MlTrainedModelDeploymentNodesStats, - MlTrainedModelStats, - SearchTotalHits, -} from '@elastic/elasticsearch/lib/api/types'; -import type { MlPluginSetup } from '@kbn/ml-plugin/server'; -import type { KibanaRequest } from '@kbn/core-http-server'; -import { Document } from 'langchain/document'; -import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; -import { - DocumentEntryType, - DocumentEntry, - IndexEntry, - KnowledgeBaseEntryCreateProps, - KnowledgeBaseEntryResponse, - Metadata, -} from '@kbn/elastic-assistant-common'; -import pRetry from 'p-retry'; -import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { StructuredTool } from '@langchain/core/tools'; -import { AnalyticsServiceSetup, ElasticsearchClient } from '@kbn/core/server'; -import { IndexPatternsFetcher } from '@kbn/data-views-plugin/server'; -import { map } from 'lodash'; -import { AIAssistantDataClient, AIAssistantDataClientParams } from '..'; -import { GetElser } from '../../types'; -import { createKnowledgeBaseEntry, transformToCreateSchema } from './create_knowledge_base_entry'; -import { EsDocumentEntry, EsIndexEntry, EsKnowledgeBaseEntrySchema } from './types'; -import { transformESSearchToKnowledgeBaseEntry } from './transforms'; -import { SECURITY_LABS_RESOURCE, USER_RESOURCE } from '../../routes/knowledge_base/constants'; -import { - getKBVectorSearchQuery, - getStructuredToolForIndexEntry, - isModelAlreadyExistsError, -} from './helpers'; -import { getKBUserFilter } from '../../routes/knowledge_base/entries/utils'; -import { - loadSecurityLabs, - getSecurityLabsDocsCount, -} from '../../lib/langchain/content_loaders/security_labs_loader'; -import { ASSISTANT_ELSER_INFERENCE_ID } from './field_maps_configuration'; - -/** - * Params for when creating KbDataClient in Request Context Factory. Useful if needing to modify - * configuration after initial plugin start - */ -export interface GetAIAssistantKnowledgeBaseDataClientParams { - modelIdOverride?: string; - manageGlobalKnowledgeBaseAIAssistant?: boolean; -} - -export interface KnowledgeBaseDataClientParams extends AIAssistantDataClientParams { - ml: MlPluginSetup; - getElserId: GetElser; - getIsKBSetupInProgress: () => boolean; - ingestPipelineResourceName: string; - setIsKBSetupInProgress: (isInProgress: boolean) => void; - manageGlobalKnowledgeBaseAIAssistant: boolean; -} -export class AIAssistantKnowledgeBaseDataClient extends AIAssistantDataClient { - constructor(public readonly options: KnowledgeBaseDataClientParams) { - super(options); - } - - public get isSetupInProgress() { - return this.options.getIsKBSetupInProgress(); - } - /** - * Returns whether setup of the Knowledge Base can be performed (essentially an ML features check) - * - */ - public isSetupAvailable = async () => { - // ML plugin requires request to retrieve capabilities, which are in turn scoped to the user from the request, - // so we just test the API for a 404 instead to determine if ML is 'available' - // TODO: expand to include memory check, see https://github.com/elastic/ml-team/issues/1208#issuecomment-2115770318 - try { - const esClient = await this.options.elasticsearchClientPromise; - await esClient.ml.getMemoryStats({ human: true }); - } catch (error) { - return false; - } - return true; - }; - - /** - * Downloads and installs ELSER model if not already installed - * - * @param soClient SavedObjectsClientContract for installing ELSER so that ML SO's are in sync - */ - private installModel = async ({ soClient }: { soClient: SavedObjectsClientContract }) => { - const elserId = await this.options.getElserId(); - this.options.logger.debug(`Installing ELSER model '${elserId}'...`); - - try { - await this.options.ml - // TODO: Potentially plumb soClient through DataClient from pluginStart - .trainedModelsProvider({} as KibanaRequest, soClient) - .installElasticModel(elserId); - } catch (error) { - this.options.logger.error(`Error installing ELSER model '${elserId}':\n${error}`); - } - }; - - /** - * Returns whether ELSER is installed/ready to deploy - * - * @returns Promise<boolean> indicating whether the model is installed - */ - public isModelInstalled = async (): Promise<boolean> => { - const elserId = await this.options.getElserId(); - this.options.logger.debug(`Checking if ELSER model '${elserId}' is installed...`); - - try { - const esClient = await this.options.elasticsearchClientPromise; - const getResponse = await esClient.ml.getTrainedModels({ - model_id: elserId, - include: 'definition_status', - }); - return Boolean(getResponse.trained_model_configs[0]?.fully_defined); - } catch (error) { - if (!isModelAlreadyExistsError(error)) { - this.options.logger.error( - `Error checking if ELSER model '${elserId}' is installed:\n${error}` - ); - } - return false; - } - }; - - /** - * Checks if the inference endpoint is deployed and allocated in Elasticsearch - * - * @returns Promise<boolean> indicating whether the model is deployed - */ - public isInferenceEndpointExists = async (): Promise<boolean> => { - try { - const esClient = await this.options.elasticsearchClientPromise; - - const inferenceExists = !!(await esClient.inference.get({ - inference_id: ASSISTANT_ELSER_INFERENCE_ID, - task_type: 'sparse_embedding', - })); - if (!inferenceExists) { - return false; - } - const elserId = await this.options.getElserId(); - const getResponse = await esClient.ml.getTrainedModelsStats({ - model_id: elserId, - }); - - // For standardized way of checking deployment status see: https://github.com/elastic/elasticsearch/issues/106986 - const isReadyESS = (stats: MlTrainedModelStats) => - stats.deployment_stats?.state === 'started' && - stats.deployment_stats?.allocation_status.state === 'fully_allocated'; - - const isReadyServerless = (stats: MlTrainedModelStats) => - (stats.deployment_stats?.nodes as unknown as MlTrainedModelDeploymentNodesStats[])?.some( - (node) => node.routing_state.routing_state === 'started' - ); - - return getResponse.trained_model_stats?.some( - (stats) => isReadyESS(stats) || isReadyServerless(stats) - ); - } catch (error) { - this.options.logger.debug( - `Error checking if Inference endpoint ${ASSISTANT_ELSER_INFERENCE_ID} exists: ${error}` - ); - return false; - } - }; - - public createInferenceEndpoint = async () => { - const elserId = await this.options.getElserId(); - this.options.logger.debug(`Deploying ELSER model '${elserId}'...`); - const esClient = await this.options.elasticsearchClientPromise; - - try { - await esClient.inference.delete({ - inference_id: ASSISTANT_ELSER_INFERENCE_ID, - // it's being used in the mapping so we need to force delete - force: true, - }); - this.options.logger.debug(`Deleted existing inference endpoint for ELSER model '${elserId}'`); - } catch (error) { - this.options.logger.error( - `Error deleting inference endpoint for ELSER model '${elserId}':\n${error}` - ); - } - - try { - await esClient.inference.put({ - task_type: 'sparse_embedding', - inference_id: ASSISTANT_ELSER_INFERENCE_ID, - inference_config: { - service: 'elasticsearch', - service_settings: { - adaptive_allocations: { - enabled: true, - min_number_of_allocations: 0, - max_number_of_allocations: 8, - }, - num_threads: 1, - model_id: elserId, - }, - task_settings: {}, - }, - }); - - // await for the model to be deployed - await this.isInferenceEndpointExists(); - } catch (error) { - this.options.logger.error( - `Error creating inference endpoint for ELSER model '${elserId}':\n${error}` - ); - throw new Error(`Error creating inference endpoint for ELSER model '${elserId}':\n${error}`); - } - }; - - /** - * Downloads and deploys recommended ELSER (if not already), then loads ES|QL docs - * - * NOTE: Before automatically installing ELSER in the background, we should perform deployment resource checks - * Only necessary for ESS, as Serverless can always auto-install if `productTier === complete` - * See ml-team issue for providing 'dry run' flag to perform these checks: https://github.com/elastic/ml-team/issues/1208 - * - * @param options - * @param options.soClient SavedObjectsClientContract for installing ELSER so that ML SO's are in sync - * - * @returns Promise<void> - */ - public setupKnowledgeBase = async ({ - soClient, - ignoreSecurityLabs = false, - }: { - soClient: SavedObjectsClientContract; - ignoreSecurityLabs?: boolean; - }): Promise<void> => { - if (this.options.getIsKBSetupInProgress()) { - this.options.logger.debug('Knowledge Base setup already in progress'); - return; - } - - this.options.logger.debug('Starting Knowledge Base setup...'); - this.options.setIsKBSetupInProgress(true); - const elserId = await this.options.getElserId(); - - // Delete legacy ESQL knowledge base docs if they exist, and silence the error if they do not - try { - const esClient = await this.options.elasticsearchClientPromise; - const legacyESQL = await esClient.deleteByQuery({ - index: this.indexTemplateAndPattern.alias, - query: { - bool: { - must: [{ terms: { 'metadata.kbResource': ['esql', 'unknown'] } }], - }, - }, - }); - if (legacyESQL?.total != null && legacyESQL?.total > 0) { - this.options.logger.info( - `Removed ${legacyESQL?.total} ESQL knowledge base docs from knowledge base data stream: ${this.indexTemplateAndPattern.alias}.` - ); - } - // Delete any existing Security Labs content - const securityLabsDocs = await esClient.deleteByQuery({ - index: this.indexTemplateAndPattern.alias, - query: { - bool: { - must: [{ terms: { kb_resource: [SECURITY_LABS_RESOURCE] } }], - }, - }, - }); - if (securityLabsDocs?.total) { - this.options.logger.info( - `Removed ${securityLabsDocs?.total} Security Labs knowledge base docs from knowledge base data stream: ${this.indexTemplateAndPattern.alias}.` - ); - } - } catch (e) { - this.options.logger.info('No legacy ESQL or Security Labs knowledge base docs to delete'); - } - - try { - const isInstalled = await this.isModelInstalled(); - if (!isInstalled) { - await this.installModel({ soClient }); - await pRetry( - async () => - (await this.isModelInstalled()) - ? Promise.resolve() - : Promise.reject(new Error('Model not installed')), - { minTimeout: 10000, maxTimeout: 10000, retries: 10 } - ); - this.options.logger.debug(`ELSER model '${elserId}' successfully installed!`); - } else { - this.options.logger.debug(`ELSER model '${elserId}' is already installed`); - } - - const inferenceExists = await this.isInferenceEndpointExists(); - if (!inferenceExists) { - await this.createInferenceEndpoint(); - - this.options.logger.debug( - `Inference endpoint for ELSER model '${elserId}' successfully deployed!` - ); - } else { - this.options.logger.debug( - `Inference endpoint for ELSER model '${elserId}' is already deployed` - ); - } - - this.options.logger.debug(`Checking if Knowledge Base docs have been loaded...`); - - if (!ignoreSecurityLabs) { - const labsDocsLoaded = await this.isSecurityLabsDocsLoaded(); - if (!labsDocsLoaded) { - this.options.logger.debug(`Loading Security Labs KB docs...`); - await loadSecurityLabs(this, this.options.logger); - } else { - this.options.logger.debug(`Security Labs Knowledge Base docs already loaded!`); - } - } - } catch (e) { - this.options.setIsKBSetupInProgress(false); - this.options.logger.error(`Error setting up Knowledge Base: ${e.message}`); - throw new Error(`Error setting up Knowledge Base: ${e.message}`); - } finally { - this.options.setIsKBSetupInProgress(false); - } - }; - - /** - * Adds LangChain Documents to the knowledge base - * - * @param {Array<Document<Metadata>>} documents - LangChain Documents to add to the knowledge base - * @param global whether these entries should be added globally, i.e. empty users[] - */ - public addKnowledgeBaseDocuments = async ({ - documents, - global = false, - }: { - documents: Array<Document<Metadata>>; - global?: boolean; - }): Promise<KnowledgeBaseEntryResponse[]> => { - const writer = await this.getWriter(); - const changedAt = new Date().toISOString(); - const authenticatedUser = this.options.currentUser; - if (authenticatedUser == null) { - throw new Error( - 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' - ); - } - - if (global && !this.options.manageGlobalKnowledgeBaseAIAssistant) { - throw new Error('User lacks privileges to create global knowledge base entries'); - } - - const { errors, docs_created: docsCreated } = await writer.bulk({ - documentsToCreate: documents.map((doc) => { - // v1 schema has metadata nested in a `metadata` object - return transformToCreateSchema({ - createdAt: changedAt, - spaceId: this.spaceId, - user: authenticatedUser, - entry: { - type: DocumentEntryType.value, - name: 'unknown', - text: doc.pageContent, - kbResource: doc.metadata.kbResource ?? 'unknown', - required: doc.metadata.required ?? false, - source: doc.metadata.source ?? 'unknown', - }, - global, - }); - }), - authenticatedUser, - }); - const created = - docsCreated.length > 0 - ? await this.findDocuments<EsKnowledgeBaseEntrySchema>({ - page: 1, - perPage: 10000, - filter: docsCreated.map((c) => `_id:${c}`).join(' OR '), - }) - : undefined; - // Intentionally no telemetry here - this path only used to install security docs - // Plans to make this function private in a different PR so no user entry ever is created in this path - this.options.logger.debug(`created: ${created?.data.hits.hits.length ?? '0'}`); - this.options.logger.debug(() => `errors: ${JSON.stringify(errors, null, 2)}`); - - return created?.data ? transformESSearchToKnowledgeBaseEntry(created?.data) : []; - }; - - /** - * Returns if user's KB docs exists - */ - - public isUserDataExists = async (): Promise<boolean> => { - const user = this.options.currentUser; - if (user == null) { - throw new Error( - 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' - ); - } - - const esClient = await this.options.elasticsearchClientPromise; - - try { - const vectorSearchQuery = getKBVectorSearchQuery({ - kbResource: USER_RESOURCE, - required: false, - user, - }); - - const result = await esClient.search<EsDocumentEntry>({ - index: this.indexTemplateAndPattern.alias, - size: 0, - query: vectorSearchQuery, - track_total_hits: true, - }); - - return !!(result.hits?.total as SearchTotalHits).value; - } catch (e) { - this.options.logger.debug(`Error checking if user's KB docs exist: ${e.message}`); - return false; - } - }; - - /** - * Returns if allSecurity Labs KB docs have been loaded - */ - public isSecurityLabsDocsLoaded = async (): Promise<boolean> => { - const user = this.options.currentUser; - if (user == null) { - throw new Error( - 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' - ); - } - - const expectedDocsCount = await getSecurityLabsDocsCount({ logger: this.options.logger }); - - const esClient = await this.options.elasticsearchClientPromise; - - try { - const vectorSearchQuery = getKBVectorSearchQuery({ - kbResource: SECURITY_LABS_RESOURCE, - required: false, - user, - }); - - const result = await esClient.search<EsDocumentEntry>({ - index: this.indexTemplateAndPattern.alias, - size: 0, - query: vectorSearchQuery, - track_total_hits: true, - }); - - const existingDocs = (result.hits?.total as SearchTotalHits).value; - - if (existingDocs !== expectedDocsCount) { - this.options.logger.debug( - `Security Labs docs are not loaded, existing docs: ${existingDocs}, expected docs: ${expectedDocsCount}` - ); - } - return existingDocs === expectedDocsCount; - } catch (e) { - this.options.logger.info(`Error checking if Security Labs docs are loaded: ${e.message}`); - return false; - } - }; - - /** - * Performs similarity search to retrieve LangChain Documents from the knowledge base - */ - public getKnowledgeBaseDocumentEntries = async ({ - filter, - kbResource, - query, - required, - }: { - filter?: QueryDslQueryContainer; - kbResource?: string; - query: string; - required?: boolean; - }): Promise<Document[]> => { - const user = this.options.currentUser; - if (user == null) { - throw new Error( - 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' - ); - } - - const esClient = await this.options.elasticsearchClientPromise; - - const vectorSearchQuery = getKBVectorSearchQuery({ - filter, - kbResource, - query, - required, - user, - }); - - try { - const result = await esClient.search<EsDocumentEntry>({ - index: this.indexTemplateAndPattern.alias, - size: 10, - query: vectorSearchQuery, - }); - - const results = result.hits.hits.map((hit) => { - const metadata = { - source: hit?._source?.source, - required: hit?._source?.required, - kbResource: hit?._source?.kb_resource, - }; - return new Document({ - pageContent: hit?._source?.text ?? '', - metadata, - }); - }); - - this.options.logger.debug( - () => - `getKnowledgeBaseDocuments() - Similarity Search Query:\n ${JSON.stringify( - vectorSearchQuery - )}` - ); - this.options.logger.debug( - () => - `getKnowledgeBaseDocuments() - Similarity Search returned [${JSON.stringify( - results.length - )}] results` - ); - - return results; - } catch (e) { - this.options.logger.error(`Error performing KB Similarity Search: ${e.message}`); - return []; - } - }; - - /** - * Returns all global and current user's private `required` document entries. - */ - public getRequiredKnowledgeBaseDocumentEntries = async (): Promise<DocumentEntry[]> => { - const user = this.options.currentUser; - if (user == null) { - throw new Error( - 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' - ); - } - - try { - const userFilter = getKBUserFilter(user); - const results = await this.findDocuments<EsIndexEntry>({ - // Note: This is a magic number to set some upward bound as to not blow the context with too - // many historical KB entries. Ideally we'd query for all and token trim. - perPage: 100, - page: 1, - sortField: 'created_at', - sortOrder: 'asc', - filter: `${userFilter} AND type:document AND kb_resource:user AND required:true`, - }); - this.options.logger.debug( - `kbDataClient.getRequiredKnowledgeBaseDocumentEntries() - results:\n${JSON.stringify( - results - )}` - ); - - if (results) { - return transformESSearchToKnowledgeBaseEntry(results.data) as DocumentEntry[]; - } - } catch (e) { - this.options.logger.error( - `kbDataClient.getRequiredKnowledgeBaseDocumentEntries() - Failed to fetch DocumentEntries` - ); - return []; - } - - return []; - }; - - /** - * Creates a new Knowledge Base Entry. - * - * @param knowledgeBaseEntry - * @param global - */ - public createKnowledgeBaseEntry = async ({ - knowledgeBaseEntry, - telemetry, - global = false, - }: { - knowledgeBaseEntry: KnowledgeBaseEntryCreateProps; - global?: boolean; - telemetry: AnalyticsServiceSetup; - }): Promise<KnowledgeBaseEntryResponse | null> => { - const authenticatedUser = this.options.currentUser; - - if (authenticatedUser == null) { - throw new Error( - 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' - ); - } - - if (global && !this.options.manageGlobalKnowledgeBaseAIAssistant) { - throw new Error('User lacks privileges to create global knowledge base entries'); - } - - this.options.logger.debug( - () => `Creating Knowledge Base Entry:\n ${JSON.stringify(knowledgeBaseEntry, null, 2)}` - ); - this.options.logger.debug(`kbIndex: ${this.indexTemplateAndPattern.alias}`); - const esClient = await this.options.elasticsearchClientPromise; - return createKnowledgeBaseEntry({ - esClient, - knowledgeBaseIndex: this.indexTemplateAndPattern.alias, - logger: this.options.logger, - spaceId: this.spaceId, - user: authenticatedUser, - knowledgeBaseEntry, - global, - telemetry, - }); - }; - - /** - * Returns AssistantTools for any 'relevant' KB IndexEntries that exist in the knowledge base. - * - * Note: Accepts esClient so retrieval can be scoped to the current user as esClient on kbDataClient - * is scoped to system user. - */ - public getAssistantTools = async ({ - esClient, - }: { - esClient: ElasticsearchClient; - }): Promise<StructuredTool[]> => { - const user = this.options.currentUser; - if (user == null) { - throw new Error( - 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' - ); - } - - try { - const elserId = ASSISTANT_ELSER_INFERENCE_ID; - const userFilter = getKBUserFilter(user); - const results = await this.findDocuments<EsIndexEntry>({ - // Note: This is a magic number to set some upward bound as to not blow the context with too - // many registered tools. As discussed in review, this will initially be mitigated by caps on - // the IndexEntries field lengths, context trimming at the graph layer (before compilation), - // and eventually some sort of tool discovery sub-graph or generic retriever to scale tool usage. - perPage: 23, - page: 1, - sortField: 'created_at', - sortOrder: 'asc', - filter: `${userFilter} AND type:index`, - }); - this.options.logger.debug( - `kbDataClient.getAssistantTools() - results:\n${JSON.stringify(results, null, 2)}` - ); - - if (results) { - const entries = transformESSearchToKnowledgeBaseEntry(results.data) as IndexEntry[]; - const indexPatternFetcher = new IndexPatternsFetcher(esClient); - const existingIndices = await indexPatternFetcher.getExistingIndices(map(entries, 'index')); - return ( - entries - // Filter out any IndexEntries that don't have an existing index - .filter((entry) => existingIndices.includes(entry.index)) - .map((indexEntry) => { - return getStructuredToolForIndexEntry({ - indexEntry, - esClient, - logger: this.options.logger, - elserId, - }); - }) - ); - } - } catch (e) { - this.options.logger.error(`kbDataClient.getAssistantTools() - Failed to fetch IndexEntries`); - return []; - } - - return []; - }; -} diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts b/x-pack/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts deleted file mode 100644 index c60fe9a220482..0000000000000 --- a/x-pack/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts +++ /dev/null @@ -1,785 +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 { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; -import { IndicesGetDataStreamResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { errors as EsErrors } from '@elastic/elasticsearch'; -import { ReplaySubject, Subject } from 'rxjs'; -import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; -import { DEFAULT_NAMESPACE_STRING } from '@kbn/core-saved-objects-utils-server'; -import { conversationsDataClientMock } from '../__mocks__/data_clients.mock'; -import { authenticatedUser } from '../__mocks__/user'; -import { AIAssistantConversationsDataClient } from '../ai_assistant_data_clients/conversations'; -import { AIAssistantService, AIAssistantServiceOpts } from '.'; -import { retryUntil } from './create_resource_installation_helper.test'; -import { mlPluginMock } from '@kbn/ml-plugin/public/mocks'; -import type { MlPluginSetup } from '@kbn/ml-plugin/server'; -import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; - -jest.mock('../ai_assistant_data_clients/conversations', () => ({ - AIAssistantConversationsDataClient: jest.fn(), -})); - -const licensing = Promise.resolve( - licensingMock.createRequestHandlerContext({ - license: { type: 'enterprise' }, - }) -); -let logger: ReturnType<(typeof loggingSystemMock)['createLogger']>; -const clusterClient = elasticsearchServiceMock.createClusterClient().asInternalUser; - -const SimulateTemplateResponse = { - template: { - aliases: { - alias_name_1: { - is_hidden: true, - }, - alias_name_2: { - is_hidden: true, - }, - }, - mappings: { enabled: false }, - settings: {}, - }, -}; - -const GetAliasResponse = { - '.kibana-elastic-ai-assistant-conversations-default-000001': { - aliases: { - alias_1: { - is_hidden: true, - }, - alias_2: { - is_hidden: true, - }, - }, - }, -}; - -const GetDataStreamResponse: IndicesGetDataStreamResponse = { - data_streams: [ - { - name: 'ignored', - generation: 1, - timestamp_field: { name: 'ignored' }, - hidden: true, - indices: [ - { - index_name: 'ignored', - index_uuid: 'ignored', - managed_by: 'Data stream lifecycle', - prefer_ilm: false, - }, - ], - status: 'green', - template: 'ignored', - next_generation_managed_by: 'Data stream lifecycle', - prefer_ilm: false, - }, - ], -}; - -const getSpaceResourcesInitialized = async ( - assistantService: AIAssistantService, - namespace: string = DEFAULT_NAMESPACE_STRING -) => { - const { result } = await assistantService.getSpaceResourcesInitializationPromise(namespace); - return result; -}; - -const conversationsDataClient = conversationsDataClientMock.create(); - -const mockUser1 = authenticatedUser; - -describe('AI Assistant Service', () => { - let pluginStop$: Subject<void>; - let assistantServiceOpts: AIAssistantServiceOpts; - let ml: MlPluginSetup; - - beforeEach(() => { - jest.resetAllMocks(); - logger = loggingSystemMock.createLogger(); - pluginStop$ = new ReplaySubject(1); - jest.spyOn(global.Math, 'random').mockReturnValue(0.01); - clusterClient.indices.simulateTemplate.mockImplementation(async () => SimulateTemplateResponse); - clusterClient.indices.simulateIndexTemplate.mockImplementation( - async () => SimulateTemplateResponse - ); - clusterClient.indices.getAlias.mockImplementation(async () => GetAliasResponse); - clusterClient.indices.getDataStream.mockImplementation(async () => GetDataStreamResponse); - ml = mlPluginMock.createSetupContract() as unknown as MlPluginSetup; // Missing SharedServices mock, so manually mocking trainedModelsProvider - ml.trainedModelsProvider = jest.fn().mockImplementation(() => ({ - getELSER: jest.fn().mockImplementation(() => '.elser_model_2'), - })); - assistantServiceOpts = { - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - pluginStop$, - kibanaVersion: '8.8.0', - ml, - taskManager: taskManagerMock.createSetup(), - productDocManager: Promise.resolve({ - getStatus: jest.fn(), - install: jest.fn(), - update: jest.fn(), - uninstall: jest.fn(), - }), - }; - }); - - afterEach(() => { - pluginStop$.next(); - pluginStop$.complete(); - }); - - describe('AIAssistantService()', () => { - test('should correctly initialize common resources', async () => { - const assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => (await assistantService.isInitialized()) === true - ); - - expect(assistantService.isInitialized()).toEqual(true); - - expect(clusterClient.cluster.putComponentTemplate).toHaveBeenCalledTimes(6); - - const expectedTemplates = [ - '.kibana-elastic-ai-assistant-component-template-conversations', - '.kibana-elastic-ai-assistant-component-template-knowledge-base', - '.kibana-elastic-ai-assistant-component-template-prompts', - '.kibana-elastic-ai-assistant-component-template-anonymization-fields', - '.kibana-elastic-ai-assistant-component-template-attack-discovery', - '.kibana-elastic-ai-assistant-component-template-defend-insights', - ]; - expectedTemplates.forEach((t, i) => { - expect(clusterClient.cluster.putComponentTemplate.mock.calls[i][0].name).toEqual(t); - }); - }); - - test('should log error and set initialized to false if creating/updating common component template throws error', async () => { - clusterClient.cluster.putComponentTemplate.mockRejectedValueOnce(new Error('fail')); - const assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); - - expect(assistantService.isInitialized()).toEqual(false); - expect(logger.error).toHaveBeenCalledWith( - `Error installing component template .kibana-elastic-ai-assistant-component-template-conversations - fail` - ); - }); - }); - - describe('createAIAssistantConversationsDataClient()', () => { - let assistantService: AIAssistantService; - beforeEach(() => { - (AIAssistantConversationsDataClient as jest.Mock).mockImplementation( - () => conversationsDataClient - ); - (clusterClient.search as unknown as jest.Mock).mockResolvedValue({ - hits: { hits: [], total: { value: 0 } }, - }); - }); - - test('should create new AIAssistantConversationsDataClient', async () => { - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - await assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }); - - expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - spaceId: 'default', - indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', - currentUser: mockUser1, - kibanaVersion: '8.8.0', - }); - }); - - test('should retry initializing common resources if common resource initialization failed', async () => { - clusterClient.cluster.putComponentTemplate.mockRejectedValueOnce(new Error('fail')); - - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); - - expect(assistantService.isInitialized()).toEqual(false); - - expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); - expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); - expect(clusterClient.indices.create).not.toHaveBeenCalled(); - - const result = await assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }); - - expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).toHaveBeenCalled(); - - expect(clusterClient.indices.createDataStream).not.toHaveBeenCalled(); - expect(clusterClient.indices.getDataStream).toHaveBeenCalled(); - - expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ - logger, - elasticsearchClientPromise: Promise.resolve(clusterClient), - spaceId: 'default', - indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', - currentUser: mockUser1, - kibanaVersion: '8.8.0', - }); - - expect(result).not.toBe(null); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith( - `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` - ); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "default"`); - }); - - test('should not retry initializing common resources if common resource initialization is in progress', async () => { - // this is the initial call that fails - clusterClient.cluster.putComponentTemplate.mockRejectedValueOnce(new Error('fail')); - - // this is the retry call that we'll artificially inflate the duration of - clusterClient.cluster.putComponentTemplate.mockImplementationOnce(async () => { - await new Promise((r) => setTimeout(r, 1000)); - return { acknowledged: true }; - }); - - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); - - expect(assistantService.isInitialized()).toEqual(false); - - expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); - expect(clusterClient.indices.create).not.toHaveBeenCalled(); - - // call createAIAssistantConversationsDataClient at the same time which will trigger the retries - const result = await Promise.all([ - assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }), - assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }), - ]); - - expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).toHaveBeenCalled(); - - expect(clusterClient.indices.createDataStream).not.toHaveBeenCalled(); - expect(clusterClient.indices.getDataStream).toHaveBeenCalled(); - - expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ - elasticsearchClientPromise: Promise.resolve(clusterClient), - spaceId: 'default', - indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', - currentUser: mockUser1, - kibanaVersion: '8.8.0', - logger, - }); - - expect(result[0]).not.toBe(null); - expect(result[1]).not.toBe(null); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith( - `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` - ); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "default"`); - expect(logger.info).toHaveBeenCalledWith( - `Resource installation for "default" succeeded after retry` - ); - expect(logger.info).toHaveBeenCalledWith( - `Skipped retrying common resource initialization because it is already being retried.` - ); - }); - - test('should retry initializing space specific resources if space specific resource initialization failed', async () => { - clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => ({ - ...SimulateTemplateResponse, - template: { - ...SimulateTemplateResponse.template, - mappings: {}, - }, - })); - - clusterClient.indices.simulateIndexTemplate.mockImplementationOnce(async () => ({ - ...SimulateTemplateResponse, - template: { - ...SimulateTemplateResponse.template, - mappings: {}, - }, - })); - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - const result = await assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }); - - expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ - elasticsearchClientPromise: Promise.resolve(clusterClient), - spaceId: 'default', - indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', - currentUser: mockUser1, - kibanaVersion: '8.8.0', - logger, - }); - - expect(result).not.toBe(null); - - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "default"`); - expect(logger.info).toHaveBeenCalledWith( - `Resource installation for "default" succeeded after retry` - ); - }); - - test('should not retry initializing context specific resources if context specific resource initialization is in progress', async () => { - // this is the initial call that fails - clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => ({ - ...SimulateTemplateResponse, - template: { - ...SimulateTemplateResponse.template, - mappings: {}, - }, - })); - - clusterClient.indices.simulateIndexTemplate.mockImplementationOnce(async () => ({ - ...SimulateTemplateResponse, - template: { - ...SimulateTemplateResponse.template, - mappings: {}, - }, - })); - - // this is the retry call that we'll artificially inflate the duration of - clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => { - await new Promise((r) => setTimeout(r, 1000)); - return SimulateTemplateResponse; - }); - - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - const createAIAssistantDatastreamClientWithDelay = async (delayMs: number | null) => { - if (delayMs) { - await new Promise((r) => setTimeout(r, delayMs)); - } - - return assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }); - }; - - const result = await Promise.all([ - createAIAssistantDatastreamClientWithDelay(null), - createAIAssistantDatastreamClientWithDelay(1), - ]); - - expect(AIAssistantConversationsDataClient).toHaveBeenCalledTimes(2); - expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ - elasticsearchClientPromise: Promise.resolve(clusterClient), - spaceId: 'default', - indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', - currentUser: mockUser1, - kibanaVersion: '8.8.0', - logger, - }); - - expect(result[0]).not.toBe(null); - expect(result[1]).not.toBe(null); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - - // Should only log the retry once because the second call should - // leverage the outcome of the first retry - expect( - logger.info.mock.calls.filter( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (calls: any[]) => calls[0] === `Retrying resource initialization for "default"` - ).length - ).toEqual(1); - expect( - logger.info.mock.calls.filter( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (calls: any[]) => calls[0] === `Resource installation for "default" succeeded after retry` - ).length - ).toEqual(1); - }); - - test('should throttle retries of initializing context specific resources', async () => { - // this is the initial call that fails - clusterClient.indices.simulateTemplate.mockImplementation(async () => ({ - ...SimulateTemplateResponse, - template: { - ...SimulateTemplateResponse.template, - mappings: {}, - }, - })); - - clusterClient.indices.simulateIndexTemplate.mockImplementation(async () => ({ - ...SimulateTemplateResponse, - template: { - ...SimulateTemplateResponse.template, - mappings: {}, - }, - })); - - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - const createAIAssistantDatastreamClientWithDelay = async (delayMs: number | null) => { - if (delayMs) { - await new Promise((r) => setTimeout(r, delayMs)); - } - - return assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }); - }; - - await Promise.all([ - createAIAssistantDatastreamClientWithDelay(null), - createAIAssistantDatastreamClientWithDelay(1), - createAIAssistantDatastreamClientWithDelay(2), - ]); - - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - - // Should only log the retry once because the second and third retries should be throttled - expect( - logger.info.mock.calls.filter( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (calls: any[]) => calls[0] === `Retrying resource initialization for "default"` - ).length - ).toEqual(1); - }); - - test('should return null if retrying common resources initialization fails again', async () => { - let failCount = 0; - clusterClient.cluster.putComponentTemplate.mockImplementation(() => { - throw new Error(`fail ${++failCount}`); - }); - - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil('error log called', async () => logger.error.mock.calls.length > 0, 1); - - expect(assistantService.isInitialized()).toEqual(false); - - expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); - expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); - expect(clusterClient.indices.create).not.toHaveBeenCalled(); - - const result = await assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'test', - currentUser: mockUser1, - licensing, - }); - - expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); - expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); - expect(clusterClient.indices.create).not.toHaveBeenCalled(); - - expect(result).toBe(null); - expect(AIAssistantConversationsDataClient).not.toHaveBeenCalled(); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith( - `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` - ); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "test"`); - - expect(logger.warn).toHaveBeenCalledWith( - `Common resources were not initialized, cannot initialize resources for test` - ); - expect(logger.warn).toHaveBeenCalledWith( - `Common resources were not initialized, cannot initialize resources for test` - ); - expect(logger.warn).toHaveBeenCalledWith( - `There was an error in the framework installing spaceId-level resources and creating concrete indices for spaceId "test" - Retry failed with errors: Failure during installation of create or update .kibana-elastic-ai-assistant-component-template-conversations component template. fail 1` - ); - }); - - test('should return null if retrying common resources initialization fails again with same error', async () => { - clusterClient.cluster.putComponentTemplate.mockRejectedValue(new Error('fail')); - - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); - - expect(assistantService.isInitialized()).toEqual(false); - - // Installing component template failed so no calls to install context-specific resources - // should be made - expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); - expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); - expect(clusterClient.indices.create).not.toHaveBeenCalled(); - - const result = await assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'test', - currentUser: mockUser1, - licensing, - }); - - expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); - expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); - expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); - expect(clusterClient.indices.create).not.toHaveBeenCalled(); - - expect(result).toBe(null); - expect(AIAssistantConversationsDataClient).not.toHaveBeenCalled(); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith( - `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` - ); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "test"`); - expect(logger.warn).toHaveBeenCalledWith( - `Common resources were not initialized, cannot initialize resources for test` - ); - expect(logger.warn).toHaveBeenCalledWith( - `Common resources were not initialized, cannot initialize resources for test` - ); - expect(logger.warn).toHaveBeenCalledWith( - `There was an error in the framework installing spaceId-level resources and creating concrete indices for spaceId "test" - Retry failed with errors: Failure during installation of create or update .kibana-elastic-ai-assistant-component-template-conversations component template. fail` - ); - }); - - test('should return null if retrying space specific initialization fails again', async () => { - clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => ({ - ...SimulateTemplateResponse, - template: { - ...SimulateTemplateResponse.template, - mappings: {}, - }, - })); - clusterClient.indices.putIndexTemplate.mockRejectedValue(new Error('fail index template')); - - assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - const result = await assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'test', - currentUser: mockUser1, - licensing, - }); - - expect(AIAssistantConversationsDataClient).not.toHaveBeenCalled(); - expect(result).toBe(null); - expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); - expect(logger.info).toHaveBeenCalledWith( - `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` - ); - - expect(logger.warn).toHaveBeenCalledWith( - `Common resources were not initialized, cannot initialize resources for test` - ); - expect(logger.warn).toHaveBeenCalledWith( - `Common resources were not initialized, cannot initialize resources for test` - ); - expect(logger.warn).toHaveBeenCalledWith( - `There was an error in the framework installing spaceId-level resources and creating concrete indices for spaceId \"test\" - Retry failed with errors: Failure during installation of create or update .kibana-elastic-ai-assistant-index-template-conversations index template. No mappings would be generated for .kibana-elastic-ai-assistant-index-template-conversations, possibly due to failed/misconfigured bootstrapping` - ); - }); - }); - - describe('retries', () => { - test('should retry adding component template for transient ES errors', async () => { - clusterClient.cluster.putComponentTemplate - .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) - .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) - .mockResolvedValue({ acknowledged: true }); - const assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - expect(clusterClient.cluster.putComponentTemplate).toHaveBeenCalledTimes(8); - - const expectedTemplates = [ - '.kibana-elastic-ai-assistant-component-template-conversations', - '.kibana-elastic-ai-assistant-component-template-conversations', - '.kibana-elastic-ai-assistant-component-template-conversations', - '.kibana-elastic-ai-assistant-component-template-knowledge-base', - '.kibana-elastic-ai-assistant-component-template-prompts', - '.kibana-elastic-ai-assistant-component-template-anonymization-fields', - '.kibana-elastic-ai-assistant-component-template-attack-discovery', - '.kibana-elastic-ai-assistant-component-template-defend-insights', - ]; - expectedTemplates.forEach((t, i) => { - expect(clusterClient.cluster.putComponentTemplate.mock.calls[i][0].name).toEqual(t); - }); - }); - - test('should retry updating index template for transient ES errors', async () => { - clusterClient.indices.putIndexTemplate - .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) - .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) - .mockResolvedValue({ acknowledged: true }); - const assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - expect(assistantService.isInitialized()).toEqual(true); - - await retryUntil( - 'space resources initialized', - async () => (await getSpaceResourcesInitialized(assistantService)) === true - ); - - expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledTimes(8); - const expectedTemplates = [ - '.kibana-elastic-ai-assistant-index-template-conversations', - '.kibana-elastic-ai-assistant-index-template-conversations', - '.kibana-elastic-ai-assistant-index-template-conversations', - '.kibana-elastic-ai-assistant-index-template-knowledge-base', - '.kibana-elastic-ai-assistant-index-template-prompts', - '.kibana-elastic-ai-assistant-index-template-anonymization-fields', - '.kibana-elastic-ai-assistant-index-template-attack-discovery', - '.kibana-elastic-ai-assistant-index-template-defend-insights', - ]; - expectedTemplates.forEach((t, i) => { - expect(clusterClient.indices.putIndexTemplate.mock.calls[i][0].name).toEqual(t); - }); - }); - - test('should retry updating index settings for existing indices for transient ES errors', async () => { - clusterClient.indices.putSettings - .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) - .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) - .mockResolvedValue({ acknowledged: true }); - const assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - await retryUntil( - 'space resources initialized', - async () => (await getSpaceResourcesInitialized(assistantService)) === true - ); - - expect(clusterClient.indices.putSettings).toHaveBeenCalledTimes(8); - }); - - test('should retry updating index mappings for existing indices for transient ES errors', async () => { - clusterClient.indices.putMapping - .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) - .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) - .mockResolvedValue({ acknowledged: true }); - const assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - await retryUntil( - 'space resources initialized', - async () => (await getSpaceResourcesInitialized(assistantService)) === true - ); - - expect(clusterClient.indices.putMapping).toHaveBeenCalledTimes(8); - }); - - test('should retry creating concrete index for transient ES errors', async () => { - clusterClient.indices.getDataStream.mockImplementation(async () => ({ - data_streams: [], - })); - clusterClient.indices.createDataStream - .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) - .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) - .mockResolvedValue({ acknowledged: true }); - (clusterClient.search as unknown as jest.Mock).mockResolvedValue({ - hits: { hits: [], total: { value: 0 } }, - }); - - const assistantService = new AIAssistantService(assistantServiceOpts); - - await retryUntil( - 'AI Assistant service initialized', - async () => assistantService.isInitialized() === true - ); - - await assistantService.createAIAssistantConversationsDataClient({ - logger, - spaceId: 'default', - currentUser: mockUser1, - licensing, - }); - - await retryUntil( - 'space resources initialized', - async () => (await getSpaceResourcesInitialized(assistantService)) === true - ); - - expect(clusterClient.indices.createDataStream).toHaveBeenCalledTimes(6); - }); - }); -}); diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/index.ts b/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/index.ts deleted file mode 100644 index b2c90636ef523..0000000000000 --- a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/index.ts +++ /dev/null @@ -1,122 +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 { ElasticsearchClient, Logger } from '@kbn/core/server'; -import { Replacements } from '@kbn/elastic-assistant-common'; -import { AnonymizationFieldResponse } from '@kbn/elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen'; -import type { ActionsClientLlm } from '@kbn/langchain/server'; -import type { CompiledStateGraph } from '@langchain/langgraph'; -import { END, START, StateGraph } from '@langchain/langgraph'; - -import { NodeType } from './constants'; -import { getGenerateOrEndEdge } from './edges/generate_or_end'; -import { getGenerateOrRefineOrEndEdge } from './edges/generate_or_refine_or_end'; -import { getRefineOrEndEdge } from './edges/refine_or_end'; -import { getRetrieveAnonymizedAlertsOrGenerateEdge } from './edges/retrieve_anonymized_alerts_or_generate'; -import { getDefaultGraphState } from './state'; -import { getGenerateNode } from './nodes/generate'; -import { getRefineNode } from './nodes/refine'; -import { getRetrieveAnonymizedAlertsNode } from './nodes/retriever'; -import type { GraphState } from './types'; - -export interface GetDefaultAttackDiscoveryGraphParams { - alertsIndexPattern?: string; - anonymizationFields: AnonymizationFieldResponse[]; - esClient: ElasticsearchClient; - llm: ActionsClientLlm; - logger?: Logger; - onNewReplacements?: (replacements: Replacements) => void; - replacements?: Replacements; - size: number; -} - -export type DefaultAttackDiscoveryGraph = ReturnType<typeof getDefaultAttackDiscoveryGraph>; - -/** - * This function returns a compiled state graph that represents the default - * Attack discovery graph. - * - * Refer to the following diagram for this graph: - * x-pack/plugins/elastic_assistant/docs/img/default_attack_discovery_graph.png - */ -export const getDefaultAttackDiscoveryGraph = ({ - alertsIndexPattern, - anonymizationFields, - esClient, - llm, - logger, - onNewReplacements, - replacements, - size, -}: GetDefaultAttackDiscoveryGraphParams): CompiledStateGraph< - GraphState, - Partial<GraphState>, - 'generate' | 'refine' | 'retrieve_anonymized_alerts' | '__start__' -> => { - try { - const graphState = getDefaultGraphState(); - - // get nodes: - const retrieveAnonymizedAlertsNode = getRetrieveAnonymizedAlertsNode({ - alertsIndexPattern, - anonymizationFields, - esClient, - logger, - onNewReplacements, - replacements, - size, - }); - - const generateNode = getGenerateNode({ - llm, - logger, - }); - - const refineNode = getRefineNode({ - llm, - logger, - }); - - // get edges: - const generateOrEndEdge = getGenerateOrEndEdge(logger); - - const generatOrRefineOrEndEdge = getGenerateOrRefineOrEndEdge(logger); - - const refineOrEndEdge = getRefineOrEndEdge(logger); - - const retrieveAnonymizedAlertsOrGenerateEdge = - getRetrieveAnonymizedAlertsOrGenerateEdge(logger); - - // create the graph: - const graph = new StateGraph<GraphState>({ channels: graphState }) - .addNode(NodeType.RETRIEVE_ANONYMIZED_ALERTS_NODE, retrieveAnonymizedAlertsNode) - .addNode(NodeType.GENERATE_NODE, generateNode) - .addNode(NodeType.REFINE_NODE, refineNode) - .addConditionalEdges(START, retrieveAnonymizedAlertsOrGenerateEdge, { - generate: NodeType.GENERATE_NODE, - retrieve_anonymized_alerts: NodeType.RETRIEVE_ANONYMIZED_ALERTS_NODE, - }) - .addConditionalEdges(NodeType.RETRIEVE_ANONYMIZED_ALERTS_NODE, generateOrEndEdge, { - end: END, - generate: NodeType.GENERATE_NODE, - }) - .addConditionalEdges(NodeType.GENERATE_NODE, generatOrRefineOrEndEdge, { - end: END, - generate: NodeType.GENERATE_NODE, - refine: NodeType.REFINE_NODE, - }) - .addConditionalEdges(NodeType.REFINE_NODE, refineOrEndEdge, { - end: END, - refine: NodeType.REFINE_NODE, - }); - - // compile the graph: - return graph.compile(); - } catch (e) { - throw new Error(`Unable to compile AttackDiscoveryGraph\n${e}`); - } -}; diff --git a/x-pack/plugins/elastic_assistant/server/types.ts b/x-pack/plugins/elastic_assistant/server/types.ts deleted file mode 100755 index 6158acde679ff..0000000000000 --- a/x-pack/plugins/elastic_assistant/server/types.ts +++ /dev/null @@ -1,250 +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 { - PluginSetupContract as ActionsPluginSetup, - PluginStartContract as ActionsPluginStart, -} from '@kbn/actions-plugin/server'; -import type { - AuthenticatedUser, - CoreRequestHandlerContext, - CoreSetup, - AnalyticsServiceSetup, - CustomRequestHandlerContext, - IRouter, - KibanaRequest, - Logger, - SecurityServiceStart, -} from '@kbn/core/server'; -import type { LlmTasksPluginStart } from '@kbn/llm-tasks-plugin/server'; -import { type MlPluginSetup } from '@kbn/ml-plugin/server'; -import { DynamicStructuredTool, Tool } from '@langchain/core/tools'; -import { SpacesPluginSetup, SpacesPluginStart } from '@kbn/spaces-plugin/server'; -import { TaskManagerSetupContract } from '@kbn/task-manager-plugin/server'; -import { ElasticsearchClient } from '@kbn/core/server'; -import { - AttackDiscoveryPostRequestBody, - DefendInsightsPostRequestBody, - AssistantFeatures, - ExecuteConnectorRequestBody, - Replacements, -} from '@kbn/elastic-assistant-common'; -import { AnonymizationFieldResponse } from '@kbn/elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen'; -import { - LicensingApiRequestHandlerContext, - LicensingPluginStart, -} from '@kbn/licensing-plugin/server'; -import { - ActionsClientChatBedrockConverse, - ActionsClientChatOpenAI, - ActionsClientChatVertexAI, - ActionsClientGeminiChatModel, - ActionsClientLlm, -} from '@kbn/langchain/server'; -import type { InferenceServerStart } from '@kbn/inference-plugin/server'; - -import { ProductDocBaseStartContract } from '@kbn/product-doc-base-plugin/server'; -import type { GetAIAssistantKnowledgeBaseDataClientParams } from './ai_assistant_data_clients/knowledge_base'; -import { AttackDiscoveryDataClient } from './lib/attack_discovery/persistence'; -import { AIAssistantConversationsDataClient } from './ai_assistant_data_clients/conversations'; -import type { GetRegisteredFeatures, GetRegisteredTools } from './services/app_context'; -import { AIAssistantDataClient } from './ai_assistant_data_clients'; -import { AIAssistantKnowledgeBaseDataClient } from './ai_assistant_data_clients/knowledge_base'; -import type { DefendInsightsDataClient } from './ai_assistant_data_clients/defend_insights'; - -export const PLUGIN_ID = 'elasticAssistant' as const; - -/** The plugin setup interface */ -export interface ElasticAssistantPluginSetup { - actions: ActionsPluginSetup; -} - -/** The plugin start interface */ -export interface ElasticAssistantPluginStart { - /** - * Actions plugin start contract. - */ - actions: ActionsPluginStart; - /** - * Inference plugin start contract. - */ - inference: InferenceServerStart; - /** - * Register features to be used by the elastic assistant. - * - * Note: Be sure to use the pluginName that is sent in the request headers by your plugin to ensure it is extracted - * and the correct features are available. See {@link getPluginNameFromRequest} for more details. - * - * @param pluginName Name of the plugin the features should be registered to - * @param features Partial<AssistantFeatures> to be registered with for the given plugin - */ - registerFeatures: (pluginName: string, features: Partial<AssistantFeatures>) => void; - /** - * Get the registered features for a given plugin name. - * @param pluginName Name of the plugin to get the features for - */ - getRegisteredFeatures: GetRegisteredFeatures; - /** - * Register tools to be used by the elastic assistant. - * - * Note: Be sure to use the pluginName that is sent in the request headers by your plugin to ensure it is extracted - * and the correct tools are selected. See {@link getPluginNameFromRequest} for more details. - * - * @param pluginName Name of the plugin the tool should be registered to - * @param tools AssistantTools to be registered with for the given plugin - */ - registerTools: (pluginName: string, tools: AssistantTool[]) => void; - /** - * Get the registered tools for a given plugin name. - * @param pluginName Name of the plugin to get the tools for - */ - getRegisteredTools: GetRegisteredTools; -} - -export interface ElasticAssistantPluginSetupDependencies { - actions: ActionsPluginSetup; - ml: MlPluginSetup; - taskManager: TaskManagerSetupContract; - spaces?: SpacesPluginSetup; -} -export interface ElasticAssistantPluginStartDependencies { - actions: ActionsPluginStart; - llmTasks: LlmTasksPluginStart; - inference: InferenceServerStart; - spaces?: SpacesPluginStart; - security: SecurityServiceStart; - licensing: LicensingPluginStart; - productDocBase: ProductDocBaseStartContract; -} - -export interface ElasticAssistantApiRequestHandlerContext { - core: CoreRequestHandlerContext; - actions: ActionsPluginStart; - getRegisteredFeatures: GetRegisteredFeatures; - getRegisteredTools: GetRegisteredTools; - logger: Logger; - getServerBasePath: () => string; - getSpaceId: () => string; - getCurrentUser: () => AuthenticatedUser | null; - getAIAssistantConversationsDataClient: () => Promise<AIAssistantConversationsDataClient | null>; - getAIAssistantKnowledgeBaseDataClient: ( - params?: GetAIAssistantKnowledgeBaseDataClientParams - ) => Promise<AIAssistantKnowledgeBaseDataClient | null>; - getAttackDiscoveryDataClient: () => Promise<AttackDiscoveryDataClient | null>; - getDefendInsightsDataClient: () => Promise<DefendInsightsDataClient | null>; - getAIAssistantPromptsDataClient: () => Promise<AIAssistantDataClient | null>; - getAIAssistantAnonymizationFieldsDataClient: () => Promise<AIAssistantDataClient | null>; - llmTasks: LlmTasksPluginStart; - inference: InferenceServerStart; - telemetry: AnalyticsServiceSetup; -} -/** - * @internal - */ -export type ElasticAssistantRequestHandlerContext = CustomRequestHandlerContext<{ - elasticAssistant: ElasticAssistantApiRequestHandlerContext; - licensing: LicensingApiRequestHandlerContext; -}>; - -export type ElasticAssistantPluginRouter = IRouter<ElasticAssistantRequestHandlerContext>; - -export type ElasticAssistantPluginCoreSetupDependencies = CoreSetup< - ElasticAssistantPluginStartDependencies, - ElasticAssistantPluginStart ->; - -export type GetElser = () => Promise<string> | never; - -export interface AssistantResourceNames { - componentTemplate: { - conversations: string; - knowledgeBase: string; - prompts: string; - anonymizationFields: string; - attackDiscovery: string; - defendInsights: string; - }; - indexTemplate: { - conversations: string; - knowledgeBase: string; - prompts: string; - anonymizationFields: string; - attackDiscovery: string; - defendInsights: string; - }; - aliases: { - conversations: string; - knowledgeBase: string; - prompts: string; - anonymizationFields: string; - attackDiscovery: string; - defendInsights: string; - }; - indexPatterns: { - conversations: string; - knowledgeBase: string; - prompts: string; - anonymizationFields: string; - attackDiscovery: string; - defendInsights: string; - }; - pipelines: { - knowledgeBase: string; - }; -} - -export interface IIndexPatternString { - pattern: string; - alias: string; - name: string; - basePattern: string; - validPrefixes?: string[]; - secondaryAlias?: string; -} - -/** - * Interfaces for registering tools to be used by the elastic assistant - */ - -export interface AssistantTool { - id: string; - name: string; - description: string; - sourceRegister: string; - isSupported: (params: AssistantToolParams) => boolean; - getTool: (params: AssistantToolParams) => Tool | DynamicStructuredTool | null; -} - -export type AssistantToolLlm = - | ActionsClientChatBedrockConverse - | ActionsClientChatOpenAI - | ActionsClientGeminiChatModel - | ActionsClientChatVertexAI; - -export interface AssistantToolParams { - alertsIndexPattern?: string; - anonymizationFields?: AnonymizationFieldResponse[]; - inference?: InferenceServerStart; - isEnabledKnowledgeBase: boolean; - connectorId?: string; - esClient: ElasticsearchClient; - kbDataClient?: AIAssistantKnowledgeBaseDataClient; - langChainTimeout?: number; - llm?: ActionsClientLlm | AssistantToolLlm; - llmTasks?: LlmTasksPluginStart; - isOssModel?: boolean; - logger: Logger; - onNewReplacements?: (newReplacements: Replacements) => void; - replacements?: Replacements; - request: KibanaRequest< - unknown, - unknown, - ExecuteConnectorRequestBody | AttackDiscoveryPostRequestBody | DefendInsightsPostRequestBody - >; - size?: number; - telemetry?: AnalyticsServiceSetup; -} diff --git a/x-pack/plugins/elastic_assistant/tsconfig.json b/x-pack/plugins/elastic_assistant/tsconfig.json deleted file mode 100644 index 5b9a7cb3466db..0000000000000 --- a/x-pack/plugins/elastic_assistant/tsconfig.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "server/lib/**/*", - "server/**/*", - "scripts/**/*.ts", - // must declare *.json explicitly per https://github.com/microsoft/TypeScript/issues/25636 - "server/**/*.json", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/core-http-server", - "@kbn/licensing-plugin", - "@kbn/securitysolution-es-utils", - "@kbn/actions-plugin", - "@kbn/logging-mocks", - "@kbn/core-elasticsearch-server-mocks", - "@kbn/core-logging-server-mocks", - "@kbn/utility-types-jest", - "@kbn/utility-types", - "@kbn/tooling-log", - "@kbn/core-elasticsearch-server", - "@kbn/logging", - "@kbn/ml-plugin", - "@kbn/elastic-assistant-common", - "@kbn/core-http-router-server-mocks", - "@kbn/data-stream-adapter", - "@kbn/core-saved-objects-utils-server", - "@kbn/core-elasticsearch-client-server-mocks", - "@kbn/task-manager-plugin", - "@kbn/es-query", - "@kbn/es-types", - "@kbn/config-schema", - "@kbn/spaces-plugin", - "@kbn/ml-response-stream", - "@kbn/data-plugin", - "@kbn/i18n", - "@kbn/core-security-common", - "@kbn/core-saved-objects-api-server", - "@kbn/langchain", - "@kbn/stack-connectors-plugin", - "@kbn/security-plugin", - "@kbn/apm-utils", - "@kbn/std", - "@kbn/zod", - "@kbn/inference-plugin", - "@kbn/data-views-plugin", - "@kbn/core-analytics-server", - "@kbn/llm-tasks-plugin", - "@kbn/product-doc-base-plugin" - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/embeddable_enhanced/public/actions/drilldown_grouping.ts b/x-pack/plugins/embeddable_enhanced/public/actions/drilldown_grouping.ts deleted file mode 100644 index 1e896817b3242..0000000000000 --- a/x-pack/plugins/embeddable_enhanced/public/actions/drilldown_grouping.ts +++ /dev/null @@ -1,21 +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 { i18n } from '@kbn/i18n'; -import { UiActionsPresentableGrouping as PresentableGrouping } from '@kbn/ui-actions-plugin/public'; - -export const drilldownGrouping: PresentableGrouping = [ - { - id: 'drilldowns', - getDisplayName: () => - i18n.translate('xpack.embeddableEnhanced.Drilldowns', { - defaultMessage: 'Drilldowns', - }), - getIconType: () => 'symlink', - order: 25, - }, -]; diff --git a/x-pack/plugins/embeddable_enhanced/public/actions/index.ts b/x-pack/plugins/embeddable_enhanced/public/actions/index.ts deleted file mode 100644 index c351935bbf8bb..0000000000000 --- a/x-pack/plugins/embeddable_enhanced/public/actions/index.ts +++ /dev/null @@ -1,8 +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. - */ - -export * from './drilldown_grouping'; diff --git a/x-pack/plugins/embeddable_enhanced/public/index.ts b/x-pack/plugins/embeddable_enhanced/public/index.ts index e14c8629ced9b..c0242fecc0948 100644 --- a/x-pack/plugins/embeddable_enhanced/public/index.ts +++ b/x-pack/plugins/embeddable_enhanced/public/index.ts @@ -19,9 +19,7 @@ export function plugin(context: PluginInitializerContext) { return new EmbeddableEnhancedPlugin(context); } -export type { EnhancedEmbeddable, EnhancedEmbeddableContext } from './types'; export { type HasDynamicActions, apiHasDynamicActions, } from './embeddables/interfaces/has_dynamic_actions'; -export { drilldownGrouping as embeddableEnhancedDrilldownGrouping } from './actions'; diff --git a/x-pack/plugins/embeddable_enhanced/public/plugin.ts b/x-pack/plugins/embeddable_enhanced/public/plugin.ts index a76f33f095951..0e374070c00d1 100644 --- a/x-pack/plugins/embeddable_enhanced/public/plugin.ts +++ b/x-pack/plugins/embeddable_enhanced/public/plugin.ts @@ -6,23 +6,12 @@ */ import { CoreSetup, CoreStart, Plugin, PluginInitializerContext } from '@kbn/core/public'; -import { - defaultEmbeddableFactoryProvider, - EmbeddableContext, - EmbeddableFactory, - EmbeddableFactoryDefinition, - EmbeddableInput, - EmbeddableOutput, - EmbeddableSetup, - EmbeddableStart, - IEmbeddable, -} from '@kbn/embeddable-plugin/public'; +import { EmbeddableSetup, EmbeddableStart } from '@kbn/embeddable-plugin/public'; import { apiHasUniqueId, EmbeddableApiContext, StateComparators, } from '@kbn/presentation-publishing'; -import type { FinderAttributes } from '@kbn/saved-objects-finder-plugin/common'; import { AdvancedUiActionsSetup, AdvancedUiActionsStart, @@ -30,13 +19,12 @@ import { UiActionsEnhancedDynamicActionManager as DynamicActionManager, } from '@kbn/ui-actions-enhanced-plugin/public'; import deepEqual from 'react-fast-compare'; -import { BehaviorSubject, distinctUntilChanged } from 'rxjs'; +import { BehaviorSubject } from 'rxjs'; import { DynamicActionStorage, type DynamicActionStorageApi, } from './embeddables/dynamic_action_storage'; import { HasDynamicActions } from './embeddables/interfaces/has_dynamic_actions'; -import { EnhancedEmbeddable } from './types'; import { getDynamicActionsState } from './get_dynamic_actions_state'; export interface SetupDependencies { @@ -79,8 +67,6 @@ export class EmbeddableEnhancedPlugin private uiActions?: StartDependencies['uiActionsEnhanced']; public setup(core: CoreSetup<StartDependencies>, plugins: SetupDependencies): SetupContract { - this.setCustomEmbeddableFactoryProvider(plugins); - return {}; } @@ -94,45 +80,6 @@ export class EmbeddableEnhancedPlugin public stop() {} - private setCustomEmbeddableFactoryProvider(plugins: SetupDependencies) { - plugins.embeddable.setCustomEmbeddableFactoryProvider( - < - I extends EmbeddableInput = EmbeddableInput, - O extends EmbeddableOutput = EmbeddableOutput, - E extends IEmbeddable<I, O> = IEmbeddable<I, O>, - T extends FinderAttributes = {} - >( - def: EmbeddableFactoryDefinition<I, O, E, T> - ): EmbeddableFactory<I, O, E, T> => { - const factory: EmbeddableFactory<I, O, E, T> = defaultEmbeddableFactoryProvider<I, O, E, T>( - def - ); - return { - ...factory, - create: async (...args) => { - const embeddable = await factory.create(...args); - if (!embeddable) return embeddable; - return this.enhanceEmbeddableWithDynamicActions(embeddable); - }, - createFromSavedObject: async (...args) => { - const embeddable = await factory.createFromSavedObject(...args); - if (!embeddable) return embeddable; - return this.enhanceEmbeddableWithDynamicActions(embeddable); - }, - }; - } - ); - } - - private readonly isEmbeddableContext = (context: unknown): context is EmbeddableContext => { - if (!(context as EmbeddableContext)?.embeddable) { - // eslint-disable-next-line no-console - console.warn('For drilldowns to work action context should contain .embeddable field.'); - return false; - } - return true; - }; - private initializeDynamicActions( uuid: string, getTitle: () => string | undefined, @@ -183,77 +130,6 @@ export class EmbeddableEnhancedPlugin }; } - /** - * TODO: Remove this entire enhanceEmbeddableWithDynamicActions method once the embeddable refactor work is complete - */ - private enhanceEmbeddableWithDynamicActions<E extends IEmbeddable>( - embeddable: E - ): EnhancedEmbeddable<E> { - const enhancedEmbeddable = embeddable as EnhancedEmbeddable<E>; - - const dynamicActionsState$ = new BehaviorSubject<DynamicActionsSerializedState['enhancements']>( - { - dynamicActions: { events: [] }, - ...(embeddable.getInput().enhancements ?? {}), - } - ); - const api = { - dynamicActionsState$, - setDynamicActions: (newState: DynamicActionsSerializedState['enhancements']) => { - embeddable.updateInput({ enhancements: newState }); - }, - }; - - /** - * Keep the dynamicActionsState$ publishing subject in sync with changes to the embeddable's input. - */ - embeddable - .getInput$() - .pipe( - distinctUntilChanged(({ enhancements: old }, { enhancements: updated }) => - deepEqual(old, updated) - ) - ) - .subscribe((input) => { - dynamicActionsState$.next({ - dynamicActions: { events: [] }, - ...(input.enhancements ?? {}), - } as DynamicActionsSerializedState['enhancements']); - }); - - const storage = new DynamicActionStorage( - String(embeddable.runtimeId), - embeddable.getTitle, - api - ); - const dynamicActions = new DynamicActionManager({ - isCompatible: async (context: unknown) => { - if (!this.isEmbeddableContext(context)) return false; - return context.embeddable.runtimeId === embeddable.runtimeId; - }, - storage, - uiActions: this.uiActions!, - }); - - const stop = this.startDynamicActions(dynamicActions); - embeddable.getInput$().subscribe({ - next: () => { - storage.reload$.next(); - }, - error: stop, - complete: stop, - }); - - enhancedEmbeddable.enhancements = { - ...enhancedEmbeddable.enhancements, - dynamicActions, - }; - enhancedEmbeddable.dynamicActionsState$ = api.dynamicActionsState$; - enhancedEmbeddable.setDynamicActions = api.setDynamicActions; - - return enhancedEmbeddable; - } - private startDynamicActions(dynamicActions: DynamicActionManager) { dynamicActions.start().catch((error) => { /* eslint-disable no-console */ diff --git a/x-pack/plugins/embeddable_enhanced/public/types.ts b/x-pack/plugins/embeddable_enhanced/public/types.ts deleted file mode 100644 index c065e3b89060e..0000000000000 --- a/x-pack/plugins/embeddable_enhanced/public/types.ts +++ /dev/null @@ -1,18 +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 { IEmbeddable } from '@kbn/embeddable-plugin/public'; -import { HasDynamicActions } from './embeddables/interfaces/has_dynamic_actions'; - -export type EnhancedEmbeddable<E extends IEmbeddable = IEmbeddable> = E & HasDynamicActions; - -/** - * @deprecated use `EmbeddableApiContext` from `@kbn/presentation-publishing` - */ -export interface EnhancedEmbeddableContext { - embeddable: EnhancedEmbeddable; -} diff --git a/x-pack/plugins/embeddable_enhanced/tsconfig.json b/x-pack/plugins/embeddable_enhanced/tsconfig.json index 7aa9a6a2f42a6..a065672b9162a 100644 --- a/x-pack/plugins/embeddable_enhanced/tsconfig.json +++ b/x-pack/plugins/embeddable_enhanced/tsconfig.json @@ -9,12 +9,9 @@ "kbn_references": [ "@kbn/core", "@kbn/embeddable-plugin", - "@kbn/ui-actions-plugin", "@kbn/ui-actions-enhanced-plugin", - "@kbn/i18n", "@kbn/kibana-utils-plugin", "@kbn/data-plugin", - "@kbn/saved-objects-finder-plugin", "@kbn/presentation-publishing", ], "exclude": [ diff --git a/x-pack/plugins/enterprise_search/kibana.jsonc b/x-pack/plugins/enterprise_search/kibana.jsonc index 42e4db528a759..a484cf625c0ae 100644 --- a/x-pack/plugins/enterprise_search/kibana.jsonc +++ b/x-pack/plugins/enterprise_search/kibana.jsonc @@ -3,7 +3,7 @@ "id": "@kbn/enterprise-search-plugin", "owner": "@elastic/search-kibana", // TODO this is currently used from Observability too, must be refactored before solution-specific builds - // see x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx + // see x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx // cc sphilipse "group": "search", "visibility": "private", @@ -21,6 +21,7 @@ "logsDataAccess", "esUiShared", "navigation", + "uiActions" ], "optionalPlugins": [ "customIntegrations", diff --git a/x-pack/plugins/enterprise_search/public/applications/analytics/components/add_analytics_collections/add_analytics_collection_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/analytics/components/add_analytics_collections/add_analytics_collection_modal.tsx index a13fd20760c11..6008c391239ba 100644 --- a/x-pack/plugins/enterprise_search/public/applications/analytics/components/add_analytics_collections/add_analytics_collection_modal.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/analytics/components/add_analytics_collections/add_analytics_collection_modal.tsx @@ -41,6 +41,7 @@ export const AddAnalyticsCollectionModal: React.FC<AddAnalyticsCollectionModalPr }) => { const { isLoading, isSuccess, isSystemError, canSubmit } = useValues(AddAnalyticsCollectionLogic); const modalFormId = useGeneratedHtmlId({ prefix: 'createAnalyticsCollection' }); + const modalTitleId = useGeneratedHtmlId({ prefix: 'modalTitleId' }); useEffect(() => { if (isSuccess || isSystemError) { @@ -52,11 +53,12 @@ export const AddAnalyticsCollectionModal: React.FC<AddAnalyticsCollectionModalPr <EuiModal onClose={onClose} maxWidth={minModalWidth} + aria-labelledby={modalTitleId} initialFocus={`[name=${collectionNameField}]`} > <EuiModalHeader> <EuiFlexItem> - <EuiModalHeaderTitle> + <EuiModalHeaderTitle id={modalTitleId}> {i18n.translate('xpack.enterpriseSearch.analytics.collectionsCreate.form.title', { defaultMessage: 'Name your Collection', })} @@ -81,13 +83,17 @@ export const AddAnalyticsCollectionModal: React.FC<AddAnalyticsCollectionModalPr </EuiModalBody> <EuiModalFooter> - <EuiButtonEmpty onClick={onClose}> + <EuiButtonEmpty + data-test-subj="enterpriseSearchAddAnalyticsCollectionModalCancelButton" + onClick={onClose} + > {i18n.translate('xpack.enterpriseSearch.analytics.collectionsCreate.form.cancelButton', { defaultMessage: 'Cancel', })} </EuiButtonEmpty> <EuiButton + data-test-subj="enterpriseSearchAddAnalyticsCollectionModalCreateButton" fill type="submit" form={modalFormId} diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/nav.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/nav.tsx index c70971ebc6ece..20bbfe38e5f39 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/nav.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/nav.tsx @@ -65,20 +65,3 @@ export const useAppSearchNav = () => { // to cause all our navItems to properly render as nav links. return [{ id: '', name: '', items: navItems }]; }; - -// Process App Search side nav items for use in the new Solution Nav -export const cleanAppSearchNavItems = ( - items: Array<EuiSideNavItemType<unknown>> -): Array<EuiSideNavItemType<unknown>> => { - const enginesItem = items.find((item) => item.id === 'engines'); - if (enginesItem && enginesItem.items && enginesItem.items.length > 0) { - const engineChildren = enginesItem.items; - const engineNameItem = engineChildren.find((item) => item.id === 'engineName'); - if (engineNameItem && engineNameItem.renderItem) { - delete engineNameItem.renderItem; - engineNameItem.items = engineChildren.filter((item) => item.id !== 'engineName'); - enginesItem.items = [engineNameItem]; - } - } - return items; -}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/page_template.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/page_template.tsx index 35792e2d0cbf9..5168a05c8a376 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/page_template.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/layout/page_template.tsx @@ -16,26 +16,15 @@ import { SetAppSearchChrome } from '../../../shared/kibana_chrome'; import { EnterpriseSearchPageTemplateWrapper, PageTemplateProps } from '../../../shared/layout'; import { SendAppSearchTelemetry } from '../../../shared/telemetry'; -import { useAppSearchNav, cleanAppSearchNavItems } from './nav'; +import { useAppSearchNav } from './nav'; export const AppSearchPageTemplate: React.FC< Omit<PageTemplateProps, 'useEndpointHeaderActions'> > = ({ children, pageChrome, pageViewTelemetry, ...pageTemplateProps }) => { const navItems = useAppSearchNav(); - const { getChromeStyle$, updateSideNavDefinition } = useValues(KibanaLogic); + const { getChromeStyle$ } = useValues(KibanaLogic); const chromeStyle = useObservable(getChromeStyle$(), 'classic'); - React.useEffect(() => { - if (chromeStyle === 'classic') return; - const appSearch = cleanAppSearchNavItems(navItems?.[0]?.items); - // We update the new side nav definition with the selected app items - updateSideNavDefinition({ appSearch }); - - return () => { - updateSideNavDefinition({ appSearch: undefined }); - }; - }, [chromeStyle, navItems, updateSideNavDefinition]); - return ( <EnterpriseSearchPageTemplateWrapper {...pageTemplateProps} diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/components/synonym_modal.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/components/synonym_modal.tsx index 93dbc9cea4447..ed3274112db9e 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/components/synonym_modal.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/synonyms/components/synonym_modal.tsx @@ -19,6 +19,7 @@ import { EuiFlexItem, EuiButton, EuiButtonEmpty, + useGeneratedHtmlId, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; @@ -37,6 +38,7 @@ export const SynonymModal: React.FC = () => { const { isModalOpen, modalLoading, activeSynonymSet } = useValues(SynonymsLogic); const { closeModal, createSynonymSet, updateSynonymSet, deleteSynonymSet } = useActions(SynonymsLogic); + const modalTitleId = useGeneratedHtmlId(); const modalTitle = activeSynonymSet ? SYNONYM_UPDATE_TITLE : SYNONYM_CREATE_TITLE; const id = activeSynonymSet?.id || 'createNewSynonymSet'; @@ -46,9 +48,9 @@ export const SynonymModal: React.FC = () => { : (newSynonyms: string[]) => createSynonymSet(newSynonyms); return isModalOpen ? ( - <EuiModal onClose={closeModal}> + <EuiModal onClose={closeModal} aria-labelledby={modalTitleId}> <EuiModalHeader> - <EuiModalHeaderTitle>{modalTitle}</EuiModalHeaderTitle> + <EuiModalHeaderTitle id={modalTitleId}>{modalTitle}</EuiModalHeaderTitle> </EuiModalHeader> <FlashMessages /> <EuiModalBody> @@ -82,7 +84,12 @@ export const SynonymModal: React.FC = () => { )} </EuiFlexItem> <EuiFlexItem grow={false}> - <EuiButtonEmpty onClick={closeModal}>{CANCEL_BUTTON_LABEL}</EuiButtonEmpty> + <EuiButtonEmpty + data-test-subj="enterpriseSearchSynonymModalButton" + onClick={closeModal} + > + {CANCEL_BUTTON_LABEL} + </EuiButtonEmpty> </EuiFlexItem> <EuiFlexItem grow={false}> <EuiButton diff --git a/x-pack/plugins/enterprise_search/public/applications/index.test.tsx b/x-pack/plugins/enterprise_search/public/applications/index.test.tsx index 1866d568af62f..81827172acc6d 100644 --- a/x-pack/plugins/enterprise_search/public/applications/index.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/index.test.tsx @@ -26,6 +26,7 @@ import { mlPluginMock } from '@kbn/ml-plugin/public/mocks'; import { navigationPluginMock } from '@kbn/navigation-plugin/public/mocks'; import { securityMock } from '@kbn/security-plugin/public/mocks'; import { sharePluginMock } from '@kbn/share-plugin/public/mocks'; +import { uiActionsPluginMock } from '@kbn/ui-actions-plugin/public/mocks'; import { AppSearch } from './app_search'; import { EnterpriseSearchOverview } from './enterprise_search_overview'; @@ -52,6 +53,7 @@ describe('renderApp', () => { security: securityMock.createStart(), share: sharePluginMock.createStartContract(), ml: mlPluginMock.createStartContract(), + uiActions: uiActionsPluginMock.createStartContract(), user: {}, }, updateSideNavDefinition: jest.fn(), diff --git a/x-pack/plugins/enterprise_search/public/applications/index.tsx b/x-pack/plugins/enterprise_search/public/applications/index.tsx index d934932dd163f..273bf1726cc51 100644 --- a/x-pack/plugins/enterprise_search/public/applications/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/index.tsx @@ -14,8 +14,11 @@ import { Store } from 'redux'; import { of } from 'rxjs'; +import { CellActionsProvider } from '@kbn/cell-actions'; + import { AppMountParameters, CoreStart } from '@kbn/core/public'; import { I18nProvider } from '@kbn/i18n-react'; +import { EuiThemeProvider } from '@kbn/kibana-react-plugin/common'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { KibanaThemeProvider } from '@kbn/react-kibana-context-theme'; @@ -146,34 +149,41 @@ export const renderApp = ( http, readOnlyMode, }); + const unmountFlashMessagesLogic = mountFlashMessagesLogic({ notifications }); ReactDOM.render( <I18nProvider> <KibanaThemeProvider theme={{ theme$: params.theme$ }}> - <KibanaContextProvider - services={{ - ...core, - ...plugins, - }} - > - <CloudContext> - <Provider store={store}> - <Router history={params.history}> - <App - access={productAccess} - appSearch={appSearch} - configuredLimits={configuredLimits} - enterpriseSearchVersion={enterpriseSearchVersion} - features={features} - kibanaVersion={kibanaVersion} - readOnlyMode={readOnlyMode} - searchOAuth={searchOAuth} - workplaceSearch={workplaceSearch} - /> - </Router> - </Provider> - </CloudContext> - </KibanaContextProvider> + <EuiThemeProvider darkMode={core.theme.getTheme().darkMode}> + <KibanaContextProvider + services={{ + ...core, + ...plugins, + }} + > + <CellActionsProvider + getTriggerCompatibleActions={plugins.uiActions.getTriggerCompatibleActions} + > + <CloudContext> + <Provider store={store}> + <Router history={params.history}> + <App + access={productAccess} + appSearch={appSearch} + configuredLimits={configuredLimits} + enterpriseSearchVersion={enterpriseSearchVersion} + features={features} + kibanaVersion={kibanaVersion} + readOnlyMode={readOnlyMode} + searchOAuth={searchOAuth} + workplaceSearch={workplaceSearch} + /> + </Router> + </Provider> + </CloudContext> + </CellActionsProvider> + </KibanaContextProvider> + </EuiThemeProvider> </KibanaThemeProvider> </I18nProvider>, params.element diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/layout/base_nav.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/layout/base_nav.tsx index b2e3fdc01be03..7fe1ba1e017c6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/layout/base_nav.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/layout/base_nav.tsx @@ -19,13 +19,9 @@ import { import { i18n } from '@kbn/i18n'; import type { ClassicNavItem } from '@kbn/search-navigation/public'; -import { GETTING_STARTED_TITLE, APP_SEARCH_PLUGIN } from '../../../../common/constants'; +import { GETTING_STARTED_TITLE } from '../../../../common/constants'; -import { BuildClassicNavParameters } from '../types'; - -export const buildBaseClassicNavItems = ({ - productAccess, -}: BuildClassicNavParameters): ClassicNavItem[] => { +export const buildBaseClassicNavItems = (): ClassicNavItem[] => { const navItems: ClassicNavItem[] = []; // Home @@ -168,36 +164,5 @@ export const buildBaseClassicNavItems = ({ name: GETTING_STARTED_TITLE, }); - if (productAccess.hasAppSearchAccess || productAccess.hasWorkplaceSearchAccess) { - const entSearchItems: ClassicNavItem[] = []; - if (productAccess.hasAppSearchAccess) { - entSearchItems.push({ - 'data-test-subj': 'searchSideNav-AppSearch', - deepLink: { - link: 'appSearch:engines', - }, - name: APP_SEARCH_PLUGIN.NAME, - id: 'app_search', - }); - } - if (productAccess.hasWorkplaceSearchAccess) { - entSearchItems.push({ - 'data-test-subj': 'searchSideNav-WorkplaceSearch', - deepLink: { - link: 'workplaceSearch', - }, - id: 'workplace_search', - }); - } - navItems.push({ - 'data-test-subj': 'searchSideNav-EnterpriseSearch', - id: 'enterpriseSearch', - items: entSearchItems, - name: i18n.translate('xpack.enterpriseSearch.nav.title', { - defaultMessage: 'Enterprise Search', - }), - }); - } - return navItems; }; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx index 36bd081021cf3..21b399892269d 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.test.tsx @@ -144,27 +144,6 @@ const baseNavItems = [ ], name: 'Getting started', }, - { - 'data-test-subj': 'searchSideNav-EnterpriseSearch', - id: 'enterpriseSearch', - items: [ - { - 'data-test-subj': 'searchSideNav-AppSearch', - href: '/app/enterprise_search/app_search', - id: 'app_search', - items: undefined, - name: 'App Search', - }, - { - 'data-test-subj': 'searchSideNav-WorkplaceSearch', - href: '/app/enterprise_search/workplace_search', - id: 'workplace_search', - items: undefined, - name: 'Workplace Search', - }, - ], - name: 'Enterprise Search', - }, ]; const mockNavLinks = [ @@ -264,86 +243,6 @@ describe('useEnterpriseSearchContentNav', () => { expect(result.current).toEqual(baseNavItems); }); - - it('excludes legacy products when the user has no access to them', () => { - const noProductAccess: ProductAccess = { - ...DEFAULT_PRODUCT_ACCESS, - hasAppSearchAccess: false, - hasWorkplaceSearchAccess: false, - }; - - setMockValues({ - ...defaultMockValues, - productAccess: noProductAccess, - }); - mockKibanaValues.uiSettings.get.mockReturnValue(false); - - const { result } = renderHook(() => useEnterpriseSearchNav()); - const esNav = result.current; - const legacyESNav = esNav?.find((item) => item.id === 'enterpriseSearch'); - expect(legacyESNav).toBeUndefined(); - }); - - it('excludes App Search when the user has no access to it', () => { - const workplaceSearchProductAccess: ProductAccess = { - ...DEFAULT_PRODUCT_ACCESS, - hasAppSearchAccess: false, - hasWorkplaceSearchAccess: true, - }; - - setMockValues({ - ...defaultMockValues, - productAccess: workplaceSearchProductAccess, - }); - - const { result } = renderHook(() => useEnterpriseSearchNav()); - const esNav = result.current; - const legacyESNav = esNav?.find((item) => item.id === 'enterpriseSearch'); - expect(legacyESNav).not.toBeUndefined(); - expect(legacyESNav).toEqual({ - 'data-test-subj': 'searchSideNav-EnterpriseSearch', - id: 'enterpriseSearch', - items: [ - { - 'data-test-subj': 'searchSideNav-WorkplaceSearch', - href: '/app/enterprise_search/workplace_search', - id: 'workplace_search', - name: 'Workplace Search', - }, - ], - name: 'Enterprise Search', - }); - }); - - it('excludes Workplace Search when the user has no access to it', () => { - const appSearchProductAccess: ProductAccess = { - ...DEFAULT_PRODUCT_ACCESS, - hasWorkplaceSearchAccess: false, - }; - - setMockValues({ - ...defaultMockValues, - productAccess: appSearchProductAccess, - }); - - const { result } = renderHook(() => useEnterpriseSearchNav()); - const esNav = result.current; - const legacyESNav = esNav?.find((item) => item.id === 'enterpriseSearch'); - expect(legacyESNav).not.toBeUndefined(); - expect(legacyESNav).toEqual({ - 'data-test-subj': 'searchSideNav-EnterpriseSearch', - id: 'enterpriseSearch', - items: [ - { - 'data-test-subj': 'searchSideNav-AppSearch', - href: '/app/enterprise_search/app_search', - id: 'app_search', - name: 'App Search', - }, - ], - name: 'Enterprise Search', - }); - }); }); describe('useEnterpriseSearchApplicationNav', () => { @@ -370,7 +269,6 @@ describe('useEnterpriseSearchApplicationNav', () => { 'Build', 'Relevance', 'Getting started', - 'Enterprise Search', ]); const searchItem = navItems?.find((ni) => ni.id === 'build'); expect(searchItem).not.toBeUndefined(); @@ -432,7 +330,6 @@ describe('useEnterpriseSearchApplicationNav', () => { 'Build', 'Relevance', 'Getting started', - 'Enterprise Search', ]); const searchItem = navItems?.find((ni) => ni.id === 'build'); expect(searchItem).not.toBeUndefined(); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx index 8f83b6c73402e..d122cf788fd4f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/layout/nav.tsx @@ -30,19 +30,19 @@ import { generateNavLink } from './nav_link_helpers'; * @returns The Enterprise Search navigation items */ export const useEnterpriseSearchNav = (alwaysReturn = false) => { - const { isSidebarEnabled, productAccess, getNavLinks } = useValues(KibanaLogic); + const { isSidebarEnabled, getNavLinks } = useValues(KibanaLogic); const indicesNavItems = useIndicesNav(); const navItems: Array<EuiSideNavItemTypeEnhanced<unknown>> = useMemo(() => { - const baseNavItems = buildBaseClassicNavItems({ productAccess }); + const baseNavItems = buildBaseClassicNavItems(); const deepLinks = getNavLinks().reduce((links, link) => { links[link.id] = link; return links; }, {} as Record<string, ChromeNavLink | undefined>); return generateSideNavItems(baseNavItems, deepLinks, { search_indices: indicesNavItems }); - }, [productAccess, indicesNavItems]); + }, [indicesNavItems]); if (!isSidebarEnabled && !alwaysReturn) return undefined; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/types.ts b/x-pack/plugins/enterprise_search/public/applications/shared/types.ts index 25fce6c62d05d..83148acd05cc6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/types.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/types.ts @@ -8,7 +8,6 @@ import type { AppDeepLinkId, EuiSideNavItemTypeEnhanced } from '@kbn/core-chrome-browser'; import { APP_SEARCH_PLUGIN, WORKPLACE_SEARCH_PLUGIN } from '../../../common/constants'; -import type { ProductAccess } from '../../../common/types'; import { ADD, UPDATE } from './constants/operations'; @@ -81,7 +80,3 @@ export interface GenerateNavLinkFromDeepLinkParameters { link: AppDeepLinkId; shouldShowActiveForSubroutes?: boolean; } - -export interface BuildClassicNavParameters { - productAccess: ProductAccess; -} diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/layout/page_template.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/layout/page_template.tsx index ed352cd42aa8f..87c70d19351d6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/layout/page_template.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/layout/page_template.tsx @@ -25,20 +25,9 @@ export const WorkplaceSearchPageTemplate: React.FC<PageTemplateProps> = ({ ...pageTemplateProps }) => { const navItems = useWorkplaceSearchNav(); - const { getChromeStyle$, updateSideNavDefinition } = useValues(KibanaLogic); + const { getChromeStyle$ } = useValues(KibanaLogic); const chromeStyle = useObservable(getChromeStyle$(), 'classic'); - React.useEffect(() => { - if (chromeStyle === 'classic') return; - // We update the new side nav definition with the selected app items - updateSideNavDefinition({ workplaceSearch: navItems?.[0]?.items }); - }, [chromeStyle, navItems, updateSideNavDefinition]); - React.useEffect(() => { - return () => { - updateSideNavDefinition({ workplaceSearch: undefined }); - }; - }, [updateSideNavDefinition]); - return ( <EnterpriseSearchPageTemplateWrapper restrictWidth diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_key_flyout.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_key_flyout.tsx index 150778ad7fdbc..18bb73d8d5fd6 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_key_flyout.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_key_flyout.tsx @@ -23,6 +23,7 @@ import { EuiButton, EuiForm, EuiTitle, + useGeneratedHtmlId, } from '@elastic/eui'; import { CLOSE_BUTTON_LABEL, SAVE_BUTTON_LABEL } from '../../../../shared/constants'; @@ -44,12 +45,20 @@ export const ApiKeyFlyout: React.FC = () => { activeApiTokenRawName: rawName, } = useValues(ApiKeysLogic); + const flyoutTitleId = useGeneratedHtmlId(); + return ( <EuiPortal> - <EuiFlyout onClose={hideApiKeyForm} hideCloseButton ownFocus size="s"> + <EuiFlyout + onClose={hideApiKeyForm} + hideCloseButton + ownFocus + size="s" + aria-labelledby={flyoutTitleId} + > <EuiFlyoutHeader hasBorder> <EuiTitle size="m"> - <h2>{API_KEY_FLYOUT_TITLE}</h2> + <h2 id={flyoutTitleId}>{API_KEY_FLYOUT_TITLE}</h2> </EuiTitle> </EuiFlyoutHeader> <EuiFlyoutBody> @@ -86,7 +95,11 @@ export const ApiKeyFlyout: React.FC = () => { <EuiFlyoutFooter> <EuiFlexGroup justifyContent="spaceBetween"> <EuiFlexItem grow={false}> - <EuiButtonEmpty iconType="cross" onClick={hideApiKeyForm}> + <EuiButtonEmpty + data-test-subj="enterpriseSearchApiKeyFlyoutButton" + iconType="cross" + onClick={hideApiKeyForm} + > {CLOSE_BUTTON_LABEL} </EuiButtonEmpty> </EuiFlexItem> diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_keys_list.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_keys_list.tsx index 016ab78b3abb4..10f1ca12a6130 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_keys_list.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/api_keys/components/api_keys_list.tsx @@ -9,7 +9,13 @@ import React from 'react'; import { useActions, useValues } from 'kea'; -import { EuiBasicTable, EuiBasicTableColumn, EuiCopy, EuiConfirmModal } from '@elastic/eui'; +import { + EuiBasicTable, + EuiBasicTableColumn, + EuiCopy, + EuiConfirmModal, + useGeneratedHtmlId, +} from '@elastic/eui'; import { DELETE_BUTTON_LABEL, CANCEL_BUTTON_LABEL } from '../../../../shared/constants'; import { HiddenText } from '../../../../shared/hidden_text'; @@ -32,16 +38,19 @@ export const ApiKeysList: React.FC = () => { const { deleteApiKey, onPaginate, stageTokenNameForDeletion, hideDeleteModal } = useActions(ApiKeysLogic); const { apiTokens, meta, dataLoading, deleteModalVisible } = useValues(ApiKeysLogic); + const modalTitleId = useGeneratedHtmlId(); const deleteModal = ( <EuiConfirmModal title={API_KEYS_CONFIRM_DELETE_TITLE} + titleProps={{ id: modalTitleId }} onCancel={hideDeleteModal} onConfirm={deleteApiKey} cancelButtonText={CANCEL_BUTTON_LABEL} confirmButtonText={DELETE_BUTTON_LABEL} buttonColor="danger" defaultFocusedButton="confirm" + aria-labelledby={modalTitleId} > <p>{API_KEYS_CONFIRM_DELETE_LABEL}</p> </EuiConfirmModal> diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/settings/components/branding_section.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/settings/components/branding_section.tsx index 30b450df91c17..33efd2d842220 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/settings/components/branding_section.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/settings/components/branding_section.tsx @@ -16,6 +16,7 @@ import { EuiFilePicker, EuiText, EuiSpacer, + useGeneratedHtmlId, } from '@elastic/eui'; import { @@ -71,6 +72,7 @@ export const BrandingSection: React.FC<Props> = ({ const isLogo = imageType === 'logo'; const imageText = isLogo ? LOGO_TEXT : ICON_TEXT; const defaultImage = isLogo ? defaultLogo : defaultIcon; + const confirmationTitleId = useGeneratedHtmlId(); const handleUpload = async (files: FileList | null) => { if (!files || files.length < 1) { @@ -84,6 +86,7 @@ export const BrandingSection: React.FC<Props> = ({ const resetConfirmModal = ( <EuiConfirmModal title={RESET_IMAGE_TITLE} + titleProps={{ id: confirmationTitleId }} onCancel={closeDeleteModal} onConfirm={() => { resetImage(); @@ -93,6 +96,7 @@ export const BrandingSection: React.FC<Props> = ({ confirmButtonText={RESET_DEFAULT_BUTTON_LABEL} buttonColor="danger" defaultFocusedButton="confirm" + aria-labelledby={confirmationTitleId} > <> <p>{isLogo ? RESET_LOGO_DESCRIPTION : RESET_ICON_DESCRIPTION}</p> @@ -137,6 +141,7 @@ export const BrandingSection: React.FC<Props> = ({ <EuiFlexGroup> <EuiFlexItem grow={false}> <EuiButton + data-test-subj="enterpriseSearchBrandingSectionButton" isLoading={buttonLoading} disabled={!stagedImage} color="primary" diff --git a/x-pack/plugins/enterprise_search/public/navigation_tree.ts b/x-pack/plugins/enterprise_search/public/navigation_tree.ts index e235876e11b0a..1485ecd8536f3 100644 --- a/x-pack/plugins/enterprise_search/public/navigation_tree.ts +++ b/x-pack/plugins/enterprise_search/public/navigation_tree.ts @@ -21,11 +21,9 @@ import { SEARCH_APPLICATIONS_PATH } from './applications/applications/routes'; import { SEARCH_INDICES_PATH } from './applications/enterprise_search_content/routes'; export interface DynamicSideNavItems { - appSearch?: Array<EuiSideNavItemType<unknown>>; collections?: Array<EuiSideNavItemType<unknown>>; indices?: Array<EuiSideNavItemType<unknown>>; searchApps?: Array<EuiSideNavItemType<unknown>>; - workplaceSearch?: Array<EuiSideNavItemType<unknown>>; } const title = i18n.translate( @@ -79,7 +77,7 @@ export const getNavigationTreeDefinition = ({ id: 'es', navigationTree$: dynamicItems$.pipe( debounceTime(10), - map(({ appSearch, indices, searchApps, collections, workplaceSearch }) => { + map(({ indices, searchApps, collections }) => { const navTree: NavigationTreeDefinition = { body: [ { @@ -215,50 +213,6 @@ export const getNavigationTreeDefinition = ({ defaultMessage: 'Relevance', }), }, - { - children: [ - { - getIsActive: ({ pathNameSerialized, prepend }) => { - return pathNameSerialized.startsWith( - prepend('/app/enterprise_search/app_search') - ); - }, - link: 'appSearch:engines', - title: i18n.translate( - 'xpack.enterpriseSearch.searchNav.entsearch.appSearch', - { - defaultMessage: 'App Search', - } - ), - ...(appSearch - ? { - children: appSearch.map(euiItemTypeToNodeDefinition), - isCollapsible: false, - renderAs: 'accordion', - } - : {}), - }, - { - getIsActive: ({ pathNameSerialized, prepend }) => { - return pathNameSerialized.startsWith( - prepend('/app/enterprise_search/workplace_search') - ); - }, - link: 'workplaceSearch', - ...(workplaceSearch - ? { - children: workplaceSearch.map(euiItemTypeToNodeDefinition), - isCollapsible: false, - renderAs: 'accordion', - } - : {}), - }, - ], - id: 'entsearch', - title: i18n.translate('xpack.enterpriseSearch.searchNav.entsearch', { - defaultMessage: 'Enterprise Search', - }), - }, { children: [{ link: 'maps' }, { link: 'canvas' }, { link: 'graph' }], id: 'otherTools', diff --git a/x-pack/plugins/enterprise_search/public/plugin.ts b/x-pack/plugins/enterprise_search/public/plugin.ts index b483796540ad1..0f90f60d29749 100644 --- a/x-pack/plugins/enterprise_search/public/plugin.ts +++ b/x-pack/plugins/enterprise_search/public/plugin.ts @@ -23,7 +23,6 @@ import { AppStatus, } from '@kbn/core/public'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; - import { GuidedOnboardingPluginStart } from '@kbn/guided-onboarding-plugin/public'; import type { HomePublicPluginSetup } from '@kbn/home-plugin/public'; import { i18n } from '@kbn/i18n'; @@ -38,6 +37,7 @@ import type { SearchNavigationPluginStart } from '@kbn/search-navigation/public' import { SearchPlaygroundPluginStart } from '@kbn/search-playground/public'; import { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/public'; import { SharePluginSetup, SharePluginStart } from '@kbn/share-plugin/public'; +import { UiActionsSetup, UiActionsStart } from '@kbn/ui-actions-plugin/public'; import { ANALYTICS_PLUGIN, @@ -54,7 +54,7 @@ import { SEMANTIC_SEARCH_PLUGIN, } from '../common/constants'; import { registerLocators } from '../common/locators'; -import { ClientConfigType, InitialAppData, ProductAccess } from '../common/types'; +import { ClientConfigType, InitialAppData } from '../common/types'; import { hasEnterpriseLicense } from '../common/utils/licensing'; import { ENGINES_PATH } from './applications/app_search/routes'; @@ -82,6 +82,7 @@ interface PluginsSetup { licensing: LicensingPluginStart; security?: SecurityPluginSetup; share?: SharePluginSetup; + uiActions: UiActionsSetup; } export interface PluginsStart { @@ -100,6 +101,7 @@ export interface PluginsStart { searchPlayground?: SearchPlaygroundPluginStart; security?: SecurityPluginStart; share?: SharePluginStart; + uiActions: UiActionsStart; } export interface ESConfig { @@ -575,12 +577,7 @@ export class EnterpriseSearchPlugin implements Plugin { // to the base set of classic side nav items to the search-navigation plugin. import('./applications/shared/layout/base_nav').then(({ buildBaseClassicNavItems }) => { plugins.searchNavigation?.setGetBaseClassicNavItems(() => { - const productAccess: ProductAccess = this.data?.access ?? { - hasAppSearchAccess: false, - hasWorkplaceSearchAccess: false, - }; - - return buildBaseClassicNavItems({ productAccess }); + return buildBaseClassicNavItems(); }); }); diff --git a/x-pack/plugins/enterprise_search/tsconfig.json b/x-pack/plugins/enterprise_search/tsconfig.json index bd716c8ac169f..f06262024ce68 100644 --- a/x-pack/plugins/enterprise_search/tsconfig.json +++ b/x-pack/plugins/enterprise_search/tsconfig.json @@ -84,5 +84,7 @@ "@kbn/core-security-server-mocks", "@kbn/unsaved-changes-prompt", "@kbn/search-navigation", + "@kbn/cell-actions", + "@kbn/ui-actions-plugin", ] } diff --git a/x-pack/plugins/event_log/server/es/cluster_client_adapter.test.ts b/x-pack/plugins/event_log/server/es/cluster_client_adapter.test.ts index eb76b90f0556a..4e8e43352f454 100644 --- a/x-pack/plugins/event_log/server/es/cluster_client_adapter.test.ts +++ b/x-pack/plugins/event_log/server/es/cluster_client_adapter.test.ts @@ -569,6 +569,7 @@ export const GetDataStreamsResponse: estypes.IndicesGetDataStreamResponse = { template: '', hidden: true, prefer_ilm: false, + rollover_on_write: true, next_generation_managed_by: 'Index Lifecycle Management', }, ], diff --git a/x-pack/plugins/features/server/feature_registry.test.ts b/x-pack/plugins/features/server/feature_registry.test.ts index 9ed7a207560b0..15988d213b315 100644 --- a/x-pack/plugins/features/server/feature_registry.test.ts +++ b/x-pack/plugins/features/server/feature_registry.test.ts @@ -57,7 +57,7 @@ describe('FeatureRegistry', () => { app: ['app1'], savedObject: { all: ['space', 'etc', 'telemetry'], - read: ['canvas', 'config', 'config-global', 'url'], + read: ['canvas', 'config', 'config-global', 'url', 'tag'], }, api: ['someApiEndpointTag', 'anotherEndpointTag'], ui: ['allowsFoo', 'showBar', 'showBaz'], @@ -65,7 +65,7 @@ describe('FeatureRegistry', () => { read: { savedObject: { all: [], - read: ['config', 'config-global', 'url', 'telemetry'], + read: ['config', 'config-global', 'url', 'telemetry', 'tag'], }, ui: [], }, @@ -130,7 +130,7 @@ describe('FeatureRegistry', () => { app: ['app1'], savedObject: { all: ['space', 'etc', 'telemetry'], - read: ['canvas', 'config', 'config-global', 'url'], + read: ['canvas', 'config', 'config-global', 'url', 'tag'], }, api: ['someApiEndpointTag', 'anotherEndpointTag'], ui: ['allowsFoo', 'showBar', 'showBaz'], @@ -314,7 +314,7 @@ describe('FeatureRegistry', () => { expect(allPrivilege?.savedObject.all).toEqual(['telemetry']); }); - it(`automatically grants access to config, config-global, url, and telemetry saved objects`, () => { + it(`automatically grants access to config, config-global, url, telemetry and tag saved objects`, () => { const feature: KibanaFeatureConfig = { id: 'test-feature', name: 'Test Feature', @@ -348,16 +348,17 @@ describe('FeatureRegistry', () => { const allPrivilege = result[0].privileges?.all; const readPrivilege = result[0].privileges?.read; - expect(allPrivilege?.savedObject.read).toEqual(['config', 'config-global', 'url']); + expect(allPrivilege?.savedObject.read).toEqual(['config', 'config-global', 'url', 'tag']); expect(readPrivilege?.savedObject.read).toEqual([ 'config', 'config-global', 'telemetry', 'url', + 'tag', ]); }); - it(`automatically grants 'all' access to telemetry and 'read' to [config, config-global, url] saved objects for the reserved privilege`, () => { + it(`automatically grants 'all' access to telemetry and 'read' to [config, config-global, url, tag] saved objects for the reserved privilege`, () => { const feature: KibanaFeatureConfig = { id: 'test-feature', name: 'Test Feature', @@ -388,7 +389,7 @@ describe('FeatureRegistry', () => { const reservedPrivilege = result[0]!.reserved!.privileges[0].privilege; expect(reservedPrivilege.savedObject.all).toEqual(['telemetry']); - expect(reservedPrivilege.savedObject.read).toEqual(['config', 'config-global', 'url']); + expect(reservedPrivilege.savedObject.read).toEqual(['config', 'config-global', 'url', 'tag']); }); it(`does not duplicate the automatic grants if specified on the incoming feature`, () => { @@ -402,14 +403,14 @@ describe('FeatureRegistry', () => { ui: [], savedObject: { all: ['telemetry'], - read: ['config', 'config-global', 'url'], + read: ['config', 'config-global', 'url', 'tag'], }, }, read: { ui: [], savedObject: { all: [], - read: ['config', 'config-global', 'url'], + read: ['config', 'config-global', 'url', 'tag'], }, }, }, @@ -426,11 +427,12 @@ describe('FeatureRegistry', () => { const allPrivilege = result[0].privileges!.all; const readPrivilege = result[0].privileges!.read; expect(allPrivilege?.savedObject.all).toEqual(['telemetry']); - expect(allPrivilege?.savedObject.read).toEqual(['config', 'config-global', 'url']); + expect(allPrivilege?.savedObject.read).toEqual(['config', 'config-global', 'url', 'tag']); expect(readPrivilege?.savedObject.read).toEqual([ 'config', 'config-global', 'url', + 'tag', 'telemetry', ]); }); @@ -518,7 +520,7 @@ describe('FeatureRegistry', () => { name: 'Foo', app: ['app1', 'app2'], savedObject: { - all: ['config', 'config-global', 'space', 'etc'], + all: ['config', 'config-global', 'space', 'tag', 'etc'], read: ['canvas'], }, api: ['someApiEndpointTag', 'anotherEndpointTag'], @@ -2455,7 +2457,7 @@ describe('FeatureRegistry', () => { expect(featureA.privileges).toEqual({ all: { ui: [], - savedObject: { all: ['telemetry'], read: ['config', 'config-global', 'url'] }, + savedObject: { all: ['telemetry'], read: ['config', 'config-global', 'url', 'tag'] }, composedOf: [ { feature: 'featureC', privileges: ['subFeatureCOne'] }, { feature: 'featureD', privileges: ['all'] }, @@ -2463,7 +2465,7 @@ describe('FeatureRegistry', () => { }, read: { ui: [], - savedObject: { all: [], read: ['config', 'config-global', 'telemetry', 'url'] }, + savedObject: { all: [], read: ['config', 'config-global', 'telemetry', 'url', 'tag'] }, composedOf: [{ feature: 'featureD', privileges: ['read'] }], }, }); @@ -2483,12 +2485,12 @@ describe('FeatureRegistry', () => { expect(featureA.privileges).toEqual({ all: { ui: [], - savedObject: { all: ['telemetry'], read: ['config', 'config-global', 'url'] }, + savedObject: { all: ['telemetry'], read: ['config', 'config-global', 'url', 'tag'] }, composedOf: [{ feature: 'featureE', privileges: ['all'] }], }, read: { ui: [], - savedObject: { all: [], read: ['config', 'config-global', 'telemetry', 'url'] }, + savedObject: { all: [], read: ['config', 'config-global', 'telemetry', 'url', 'tag'] }, }, }); }); diff --git a/x-pack/plugins/features/server/feature_registry.ts b/x-pack/plugins/features/server/feature_registry.ts index adeb0f4cc9dab..df01f4d773bcb 100644 --- a/x-pack/plugins/features/server/feature_registry.ts +++ b/x-pack/plugins/features/server/feature_registry.ts @@ -340,6 +340,7 @@ function applyAutomaticAllPrivilegeGrants( 'config', 'config-global', 'url', + 'tag', ]); } }); @@ -356,6 +357,7 @@ function applyAutomaticReadPrivilegeGrants( 'config-global', 'telemetry', 'url', + 'tag', ]); } }); diff --git a/x-pack/plugins/features/server/plugin.test.ts b/x-pack/plugins/features/server/plugin.test.ts index 96062085e577e..b06f9282c5739 100644 --- a/x-pack/plugins/features/server/plugin.test.ts +++ b/x-pack/plugins/features/server/plugin.test.ts @@ -168,6 +168,7 @@ describe('Features Plugin', () => { "config", "config-global", "url", + "tag", ], }, "ui": Array [], @@ -183,6 +184,7 @@ describe('Features Plugin', () => { "config-global", "telemetry", "url", + "tag", ], }, "ui": Array [], diff --git a/x-pack/plugins/fleet/cypress/e2e/integrations_automatic_import.cy.ts b/x-pack/plugins/fleet/cypress/e2e/integrations_automatic_import.cy.ts index e2454cb1dcf77..74050d9244e0b 100644 --- a/x-pack/plugins/fleet/cypress/e2e/integrations_automatic_import.cy.ts +++ b/x-pack/plugins/fleet/cypress/e2e/integrations_automatic_import.cy.ts @@ -45,19 +45,19 @@ describe('Add Integration - Automatic Import', () => { deleteConnectors(); createBedrockConnector(); // Mock API Responses - cy.intercept('POST', '/api/integration_assistant/ecs', { + cy.intercept('POST', '/internal/automatic_import/ecs', { statusCode: 200, body: { results: ecsResultsForJson, }, }); - cy.intercept('POST', '/api/integration_assistant/categorization', { + cy.intercept('POST', '/internal/automatic_import/categorization', { statusCode: 200, body: { results: categorizationResultsForJson, }, }); - cy.intercept('POST', '/api/integration_assistant/related', { + cy.intercept('POST', '/internal/automatic_import/related', { statusCode: 200, body: { results: relatedResultsForJson, diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx index 94bcf380f7086..8ddc2e80b0aa8 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/edit_package_policy_page/index.test.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { fireEvent, act, waitFor } from '@testing-library/react'; +import { fireEvent, waitFor } from '@testing-library/react'; import type { TestRenderer } from '../../../../../mock'; import { createFleetTestRendererMock } from '../../../../../mock'; @@ -291,23 +291,21 @@ describe('edit package policy page', () => { expect(renderResult.getByDisplayValue('Nginx description')).toBeInTheDocument(); }); - await act(async () => { - fireEvent.click(renderResult.getByText('Change defaults')); - }); + fireEvent.click(renderResult.getByText('Change defaults')); - await act(async () => { - fireEvent.change(renderResult.getByDisplayValue('/var/log/nginx/access.log*'), { - target: { value: '' }, - }); + fireEvent.change(renderResult.getByDisplayValue('/var/log/nginx/access.log*'), { + target: { value: '' }, }); - expect( - renderResult.getByText('Your integration policy has errors. Please fix them before saving.') - ).toBeInTheDocument(); - expect(renderResult.getByText(/Save integration/).closest('button')!).toBeDisabled(); + await waitFor(() => { + expect( + renderResult.getByText('Your integration policy has errors. Please fix them before saving.') + ).toBeInTheDocument(); + expect(renderResult.getByText(/Save integration/).closest('button')!).toBeDisabled(); - renderResult.getAllByRole('link', { name: 'Cancel' }).forEach((btn) => { - expect(btn).toHaveAttribute('href', '/navigate/path'); + renderResult.getAllByRole('link', { name: 'Cancel' }).forEach((btn) => { + expect(btn).toHaveAttribute('href', '/navigate/path'); + }); }); }); @@ -317,32 +315,31 @@ describe('edit package policy page', () => { await waitFor(() => { expect(renderResult.getByText('Collect logs from Nginx instances')).toBeInTheDocument(); }); - act(() => { - fireEvent.click(renderResult.getByRole('switch')); - }); - await act(async () => { - fireEvent.click(renderResult.getByText('Save integration').closest('button')!); - }); + fireEvent.click(renderResult.getByRole('switch')); - const { id, ...restProps } = mockPackagePolicy; - expect(sendUpdatePackagePolicy).toHaveBeenCalledWith('nginx-1', { - ...restProps, - vars: {}, - inputs: [ - { - ...mockPackagePolicy.inputs[0], - enabled: false, - streams: [ - { - ...mockPackagePolicy.inputs[0].streams[0], - enabled: false, - }, - ], - }, - ], + fireEvent.click(renderResult.getByText('Save integration').closest('button')!); + + await waitFor(() => { + const { id, ...restProps } = mockPackagePolicy; + expect(sendUpdatePackagePolicy).toHaveBeenCalledWith('nginx-1', { + ...restProps, + vars: {}, + inputs: [ + { + ...mockPackagePolicy.inputs[0], + enabled: false, + streams: [ + { + ...mockPackagePolicy.inputs[0].streams[0], + enabled: false, + }, + ], + }, + ], + }); + expect(useStartServices().application.navigateToUrl).toHaveBeenCalledWith('/navigate/path'); }); - expect(useStartServices().application.navigateToUrl).toHaveBeenCalledWith('/navigate/path'); }); it('should show out of date error on 409 statusCode on submit', async () => { @@ -353,23 +350,21 @@ describe('edit package policy page', () => { await waitFor(() => { expect(renderResult.getByText('Collect logs from Nginx instances')).toBeInTheDocument(); }); - act(() => { - fireEvent.click(renderResult.getByRole('switch')); - }); + fireEvent.click(renderResult.getByRole('switch')); - await act(async () => { - fireEvent.click(renderResult.getByText('Save integration').closest('button')!); - }); + fireEvent.click(renderResult.getByText('Save integration').closest('button')!); - expect(useStartServices().notifications.toasts.addError).toHaveBeenCalledWith( - { statusCode: 409 }, - { - title: "Error updating 'nginx-1'", - toastMessage: 'Data is out of date. Refresh the page to get the latest policy.', - } - ); + await waitFor(() => { + expect(useStartServices().notifications.toasts.addError).toHaveBeenCalledWith( + { statusCode: 409 }, + { + title: "Error updating 'nginx-1'", + toastMessage: 'Data is out of date. Refresh the page to get the latest policy.', + } + ); - expect(useStartServices().application.navigateToUrl).not.toHaveBeenCalled(); + expect(useStartServices().application.navigateToUrl).not.toHaveBeenCalled(); + }); }); it('should show generic error on other statusCode on submit', async () => { @@ -380,20 +375,19 @@ describe('edit package policy page', () => { await waitFor(() => { expect(renderResult.getByText('Collect logs from Nginx instances')).toBeInTheDocument(); }); - act(() => { - fireEvent.click(renderResult.getByRole('switch')); - }); - await act(async () => { - fireEvent.click(renderResult.getByText('Save integration').closest('button')!); - }); + fireEvent.click(renderResult.getByRole('switch')); + + fireEvent.click(renderResult.getByText('Save integration').closest('button')!); - expect(useStartServices().notifications.toasts.addError).toHaveBeenCalledWith( - { statusCode: 500 }, - { title: "Error updating 'nginx-1'" } - ); + await waitFor(() => { + expect(useStartServices().notifications.toasts.addError).toHaveBeenCalledWith( + { statusCode: 500 }, + { title: "Error updating 'nginx-1'" } + ); - expect(useStartServices().application.navigateToUrl).not.toHaveBeenCalled(); + expect(useStartServices().application.navigateToUrl).not.toHaveBeenCalled(); + }); }); it("throws when both 'package-policy-edit' and 'package-policy-replace-define-step' are defined", async () => { @@ -510,15 +504,12 @@ describe('edit package policy page', () => { await waitFor(() => { expect(renderResult.getByText('Collect logs from Nginx instances')).toBeInTheDocument(); }); - act(() => { - fireEvent.click(renderResult.getByRole('switch')); - }); - await act(async () => { - fireEvent.click(renderResult.getByText('Save integration').closest('button')!); - }); + fireEvent.click(renderResult.getByRole('switch')); - expect(sendUpdatePackagePolicy).toHaveBeenCalled(); + fireEvent.click(renderResult.getByText('Save integration').closest('button')!); + + await waitFor(() => expect(sendUpdatePackagePolicy).toHaveBeenCalled()); }); it('should hide the multiselect agent policies when agent policy is agentless', async () => { @@ -529,9 +520,8 @@ describe('edit package policy page', () => { isLoading: false, }); - await act(async () => { - render(); - }); + render(); + expect(renderResult.queryByTestId('agentPolicyMultiSelect')).not.toBeInTheDocument(); }); @@ -546,9 +536,7 @@ describe('edit package policy page', () => { }); it('should create agent policy with sys monitoring when new agent policy button is clicked', async () => { - await act(async () => { - render(); - }); + render(); await waitFor(() => { expect(renderResult.getByTestId('agentPolicyMultiItem')).toHaveAttribute( @@ -557,35 +545,32 @@ describe('edit package policy page', () => { ); }); - await act(async () => { - fireEvent.click(renderResult.getByTestId('createNewAgentPolicyButton')); - }); + fireEvent.click(renderResult.getByTestId('createNewAgentPolicyButton')); - await act(async () => { - fireEvent.click(renderResult.getByText(/Save integration/).closest('button')!); - }); + fireEvent.click(renderResult.getByText(/Save integration/).closest('button')!); + + fireEvent.click(renderResult.getAllByText(/Save and deploy changes/)[1].closest('button')!); - await act(async () => { - fireEvent.click(renderResult.getAllByText(/Save and deploy changes/)[1].closest('button')!); + await waitFor(() => { + expect(sendCreateAgentPolicy as jest.MockedFunction<any>).toHaveBeenCalledWith( + { + description: '', + monitoring_enabled: ['logs', 'metrics', 'traces'], + name: 'Agent policy 2', + namespace: 'default', + inactivity_timeout: 1209600, + is_protected: false, + }, + { withSysMonitoring: true } + ); + expect(sendUpdatePackagePolicy).toHaveBeenCalledWith( + 'nginx-1', + expect.objectContaining({ + policy_ids: ['agent-policy-1', 'agent-policy-2'], + }) + ); + expect(sendGetAgentStatus).toHaveBeenCalledTimes(1); }); - expect(sendCreateAgentPolicy as jest.MockedFunction<any>).toHaveBeenCalledWith( - { - description: '', - monitoring_enabled: ['logs', 'metrics', 'traces'], - name: 'Agent policy 2', - namespace: 'default', - inactivity_timeout: 1209600, - is_protected: false, - }, - { withSysMonitoring: true } - ); - expect(sendUpdatePackagePolicy).toHaveBeenCalledWith( - 'nginx-1', - expect.objectContaining({ - policy_ids: ['agent-policy-1', 'agent-policy-2'], - }) - ); - expect(sendGetAgentStatus).toHaveBeenCalledTimes(1); }); it('should not remove managed policy when policies are modified', async () => { @@ -613,33 +598,31 @@ describe('edit package policy page', () => { isLoading: false, }); - await act(async () => { - render(); - }); - expect(renderResult.getByTestId('agentPolicyMultiSelect')).toBeInTheDocument(); + render(); - await act(async () => { - renderResult.getByTestId('comboBoxToggleListButton').click(); + await waitFor(() => { + expect(renderResult.getByTestId('agentPolicyMultiSelect')).toBeInTheDocument(); }); - expect(renderResult.queryByText('Agent policy 1')).toBeNull(); + fireEvent.click(renderResult.getByTestId('comboBoxToggleListButton')); - await act(async () => { - fireEvent.click(renderResult.getByText('Fleet Server Policy')); - }); + await waitFor(() => expect(renderResult.queryByText('Agent policy 1')).toBeNull()); - await act(async () => { - fireEvent.click(renderResult.getByText(/Save integration/).closest('button')!); - }); - await act(async () => { - fireEvent.click(renderResult.getAllByText(/Save and deploy changes/)[1].closest('button')!); - }); + fireEvent.click(renderResult.getByText('Fleet Server Policy')); - expect(sendUpdatePackagePolicy).toHaveBeenCalledWith( - 'nginx-1', - expect.objectContaining({ - policy_ids: ['agent-policy-1', 'fleet-server-policy'], - }) + await waitFor(() => Promise.resolve(null)); + + fireEvent.click(renderResult.getByText(/Save integration/).closest('button')!); + + fireEvent.click(renderResult.getAllByText(/Save and deploy changes/)[1].closest('button')!); + + await waitFor(() => + expect(sendUpdatePackagePolicy).toHaveBeenCalledWith( + 'nginx-1', + expect.objectContaining({ + policy_ids: ['agent-policy-1', 'fleet-server-policy'], + }) + ) ); }); }); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_export_csv_tour.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_export_csv_tour.tsx new file mode 100644 index 0000000000000..c0e9e4f5427bb --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_export_csv_tour.tsx @@ -0,0 +1,68 @@ +/* + * 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 { EuiText, EuiTourStep } from '@elastic/eui'; +import React, { useState } from 'react'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import type { TOUR_STORAGE_CONFIG } from '../../../../constants'; +import { TOUR_STORAGE_KEYS } from '../../../../constants'; +import { useStartServices } from '../../../../hooks'; + +export const AgentExportCSVTour: React.FC<{}> = () => { + const { storage, uiSettings } = useStartServices(); + + const [tourState, setTourState] = useState({ isOpen: true }); + + const isTourHidden = + uiSettings.get('hideAnnouncements', false) || + ( + storage.get(TOUR_STORAGE_KEYS.AGENT_EXPORT_CSV) as + | TOUR_STORAGE_CONFIG['AGENT_EXPORT_CSV'] + | undefined + )?.active === false; + + const setTourAsHidden = () => { + storage.set(TOUR_STORAGE_KEYS.AGENT_EXPORT_CSV, { + active: false, + } as TOUR_STORAGE_CONFIG['AGENT_EXPORT_CSV']); + }; + + const onFinish = () => { + setTourState({ isOpen: false }); + setTourAsHidden(); + }; + + return ( + <> + <EuiTourStep + content={ + <EuiText> + <FormattedMessage + id="xpack.fleet.agentExportCSVTour.tourContent" + defaultMessage="Once you have selected the agents, click the action menu to download the CSV file." + /> + </EuiText> + } + isStepOpen={!isTourHidden && tourState.isOpen} + onFinish={onFinish} + minWidth={360} + maxWidth={360} + step={1} + stepsTotal={1} + title={ + <FormattedMessage + id="xpack.fleet.agentExportCSVTour.tourTitle" + defaultMessage="Download CSV file" + /> + } + anchorPosition="upLeft" + anchor="#agentListSelectionText" + /> + </> + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agents_selection_status.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agents_selection_status.tsx index 618a7a6b8e112..160e29737bf78 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agents_selection_status.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agents_selection_status.tsx @@ -14,6 +14,7 @@ import { SO_SEARCH_LIMIT } from '../../../../constants'; import type { Agent } from '../../../../types'; import type { SelectionMode } from './types'; +import { AgentExportCSVTour } from './agent_export_csv_tour'; const Divider = styled.div` width: 0; @@ -62,7 +63,7 @@ export const AgentsSelectionStatus: React.FunctionComponent<{ <> <EuiFlexGroup gutterSize="s" alignItems="center"> <EuiFlexItem grow={false}> - <EuiText size="xs" color="subdued"> + <EuiText size="xs" color="subdued" id="agentListSelectionText"> {totalAgents > SO_SEARCH_LIMIT ? ( <FormattedMessage id="xpack.fleet.agentBulkActions.totalAgentsWithLimit" @@ -97,6 +98,7 @@ export const AgentsSelectionStatus: React.FunctionComponent<{ </> )} </EuiText> + <AgentExportCSVTour /> </EuiFlexItem> {showSelectionInfoAndOptions ? ( <> diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.test.tsx index 985e709ba22d0..319c2ee5455d8 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/index.test.tsx @@ -69,6 +69,12 @@ jest.mock('../../../hooks', () => ({ cloud: {}, data: { dataViews: { getFieldsForWildcard: jest.fn() } }, docLinks: { links: { kibana: { secureSavedObject: 'my-link' } } }, + uiSettings: { + get: jest.fn(), + }, + storage: { + get: jest.fn(), + }, }), useBreadcrumbs: jest.fn(), useLink: jest.fn().mockReturnValue({ getHref: jest.fn() }), diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_export_csv_modal/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_export_csv_modal/index.tsx index 901a90d5dea68..e289f660eb007 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_export_csv_modal/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/components/agent_export_csv_modal/index.tsx @@ -6,7 +6,7 @@ */ import React, { useState } from 'react'; -import type { EuiBasicTableColumn, EuiSearchBarProps, EuiTableSelectionType } from '@elastic/eui'; +import type { EuiBasicTableColumn, EuiTableSelectionType } from '@elastic/eui'; import { EuiConfirmModal, EuiFlexGroup, @@ -67,12 +67,6 @@ export const AgentExportCSVModal: React.FunctionComponent<Props> = ({ initialSelected: INITIAL_AGENT_FIELDS_TO_EXPORT, }; - const search: EuiSearchBarProps = { - box: { - incremental: true, - }, - }; - return ( <EuiConfirmModal data-test-subj="agentExportCSVModal" @@ -129,7 +123,6 @@ export const AgentExportCSVModal: React.FunctionComponent<Props> = ({ items={items} itemId="field" columns={columns} - search={search} selection={selectionValue} /> </EuiFlexItem> diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/multi_row_input/index.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/multi_row_input/index.test.tsx index bfd9028f5d0ce..b5396fa54c7f3 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/multi_row_input/index.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/multi_row_input/index.test.tsx @@ -33,7 +33,8 @@ function renderInput( return { utils, mockOnChange }; } -test('it should allow to add a new host', async () => { +// FLAKY: https://github.com/elastic/kibana/issues/202504 +test.skip('it should allow to add a new host', async () => { const { utils, mockOnChange } = renderInput(); const addRowEl = await utils.findByText('Add row'); diff --git a/x-pack/plugins/fleet/public/constants/index.ts b/x-pack/plugins/fleet/public/constants/index.ts index 4fbe799aa7337..059bae6ea7bff 100644 --- a/x-pack/plugins/fleet/public/constants/index.ts +++ b/x-pack/plugins/fleet/public/constants/index.ts @@ -54,6 +54,7 @@ export const TOUR_STORAGE_KEYS = { ADD_AGENT_POPOVER: 'fleet.addAgentPopoverTour', INACTIVE_AGENTS: 'fleet.inactiveAgentsTour', GRANULAR_PRIVILEGES: 'fleet.granularPrivileges', + AGENT_EXPORT_CSV: 'fleet.agentExportCSVTour', }; export interface TourConfig { diff --git a/x-pack/plugins/fleet/server/errors/index.ts b/x-pack/plugins/fleet/server/errors/index.ts index ac6eca6b3b97d..af0770b61f180 100644 --- a/x-pack/plugins/fleet/server/errors/index.ts +++ b/x-pack/plugins/fleet/server/errors/index.ts @@ -125,6 +125,8 @@ export class SigningServiceNotFoundError extends FleetNotFoundError {} export class InputNotFoundError extends FleetNotFoundError {} export class OutputNotFoundError extends FleetNotFoundError {} export class PackageNotFoundError extends FleetNotFoundError {} +export class ArchiveNotFoundError extends FleetNotFoundError {} + export class PackagePolicyNotFoundError extends FleetNotFoundError<{ /** The package policy ID that was not found */ packagePolicyId: string; diff --git a/x-pack/plugins/fleet/server/routes/epm/file_handler.ts b/x-pack/plugins/fleet/server/routes/epm/file_handler.ts index 701915d384f47..8ae344cfc6264 100644 --- a/x-pack/plugins/fleet/server/routes/epm/file_handler.ts +++ b/x-pack/plugins/fleet/server/routes/epm/file_handler.ts @@ -105,10 +105,17 @@ export const getFileHandler: FleetRequestHandler< }); } else { const registryResponse = await getFile(pkgName, pkgVersion, filePath); + if (!registryResponse) + return response.custom({ + body: {}, + statusCode: 400, + }); + const headersToProxy: KnownHeaders[] = ['content-type']; const proxiedHeaders = headersToProxy.reduce((headers, knownHeader) => { - const value = registryResponse.headers.get(knownHeader); - if (value !== null) { + const value = registryResponse?.headers.get(knownHeader); + + if (!!value) { headers[knownHeader] = value; } return headers; diff --git a/x-pack/plugins/fleet/server/services/epm/airgapped.ts b/x-pack/plugins/fleet/server/services/epm/airgapped.ts new file mode 100644 index 0000000000000..4507de3ea15eb --- /dev/null +++ b/x-pack/plugins/fleet/server/services/epm/airgapped.ts @@ -0,0 +1,18 @@ +/* + * 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 { appContextService } from '..'; + +export const airGappedUtils = () => { + const config = appContextService.getConfig(); + const hasRegistryUrls = config?.registryUrl || config?.registryProxyUrl; + const isAirGapped = config?.isAirGapped; + + const shouldSkipRegistryRequests = isAirGapped && !hasRegistryUrls; + + return { hasRegistryUrls, isAirGapped, shouldSkipRegistryRequests }; +}; diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts index 5711c8fcccaf4..c3b0eee26cb5c 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts @@ -925,6 +925,32 @@ owner: elastic`, }); }); + it('should avoid loading archive when isAirGapped == true', async () => { + const mockContract = createAppContextStartContractMock({ isAirGapped: true }); + appContextService.start(mockContract); + + const soClient = savedObjectsClientMock.create(); + soClient.get.mockRejectedValue(SavedObjectsErrorHelpers.createGenericNotFoundError()); + MockRegistry.fetchInfo.mockResolvedValue({ + name: 'my-package', + version: '1.0.0', + assets: [], + } as unknown as RegistryPackage); + + await expect( + getPackageInfo({ + savedObjectsClient: soClient, + pkgName: 'my-package', + pkgVersion: '1.0.0', + }) + ).resolves.toMatchObject({ + latestVersion: '1.0.0', + status: 'not_installed', + }); + + expect(MockRegistry.getPackage).not.toHaveBeenCalled(); + }); + describe('installation status', () => { it('should be not_installed when no package SO exists', async () => { const soClient = savedObjectsClientMock.create(); diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get.ts b/x-pack/plugins/fleet/server/services/epm/packages/get.ts index 5b0e3df279cdc..824d3f4b30f72 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/get.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/get.ts @@ -68,6 +68,8 @@ import { auditLoggingService } from '../../audit_logging'; import { getFilteredSearchPackages } from '../filtered_packages'; +import { airGappedUtils } from '../airgapped'; + import { createInstallableFrom } from '.'; import { getPackageAssetsMapCache, @@ -478,7 +480,11 @@ export async function getPackageInfo({ let packageInfo; // We need to get input only packages from source to get all fields // see https://github.com/elastic/package-registry/issues/864 - if (registryInfo && skipArchive && registryInfo.type !== 'input') { + if ( + registryInfo && + (skipArchive || airGappedUtils().shouldSkipRegistryRequests) && + registryInfo.type !== 'input' + ) { packageInfo = registryInfo; // Fix the paths paths = @@ -629,6 +635,7 @@ export async function getPackageFromSource(options: { } catch (err) { if (err instanceof RegistryResponseError && err.status === 404) { res = await Registry.getBundledArchive(pkgName, pkgVersion); + logger.debug(`retrieved bundled package ${pkgName}-${pkgVersion}`); } else { throw err; } @@ -763,7 +770,7 @@ export async function getPackageAssetsMap({ packageInfo: PackageInfo; logger: Logger; ignoreUnverified?: boolean; -}) { +}): Promise<AssetsMap> { const cache = getPackageAssetsMapCache(packageInfo.name, packageInfo.version); if (cache) { return cache; @@ -774,17 +781,22 @@ export async function getPackageAssetsMap({ logger, }); - let assetsMap: AssetsMap | undefined; - if (installedPackageWithAssets?.installation.version !== packageInfo.version) { - // Try to get from registry - const pkg = await Registry.getPackage(packageInfo.name, packageInfo.version, { - ignoreUnverified, - }); - assetsMap = pkg.assetsMap; - } else { - assetsMap = installedPackageWithAssets.assetsMap; - } - setPackageAssetsMapCache(packageInfo.name, packageInfo.version, assetsMap); + try { + let assetsMap: AssetsMap | undefined; + if (installedPackageWithAssets?.installation.version !== packageInfo.version) { + // Try to get from registry + const pkg = await Registry.getPackage(packageInfo.name, packageInfo.version, { + ignoreUnverified, + }); + assetsMap = pkg.assetsMap; + } else { + assetsMap = installedPackageWithAssets.assetsMap; + } + setPackageAssetsMapCache(packageInfo.name, packageInfo.version, assetsMap); - return assetsMap; + return assetsMap; + } catch (error) { + logger.warn(`getPackageAssetsMap error: ${error}`); + throw error; + } } diff --git a/x-pack/plugins/fleet/server/services/epm/packages/install.ts b/x-pack/plugins/fleet/server/services/epm/packages/install.ts index ebe5acc35178d..07d7392971d74 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/install.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/install.ts @@ -1354,44 +1354,48 @@ export async function installAssetsForInputPackagePolicy(opts: { `Error while creating index templates: unable to find installed package ${pkgInfo.name}` ); } - if (installedPkgWithAssets.installation.version !== pkgInfo.version) { - const pkg = await Registry.getPackage(pkgInfo.name, pkgInfo.version, { - ignoreUnverified: force, - }); + try { + if (installedPkgWithAssets.installation.version !== pkgInfo.version) { + const pkg = await Registry.getPackage(pkgInfo.name, pkgInfo.version, { + ignoreUnverified: force, + }); - const archiveIterator = createArchiveIteratorFromMap(pkg.assetsMap); - packageInstallContext = { - assetsMap: pkg.assetsMap, - packageInfo: pkg.packageInfo, - paths: pkg.paths, - archiveIterator, - }; - } else { - const archiveIterator = createArchiveIteratorFromMap(installedPkgWithAssets.assetsMap); - packageInstallContext = { - assetsMap: installedPkgWithAssets.assetsMap, - packageInfo: installedPkgWithAssets.packageInfo, - paths: installedPkgWithAssets.paths, - archiveIterator, - }; - } + const archiveIterator = createArchiveIteratorFromMap(pkg.assetsMap); + packageInstallContext = { + assetsMap: pkg.assetsMap, + packageInfo: pkg.packageInfo, + paths: pkg.paths, + archiveIterator, + }; + } else { + const archiveIterator = createArchiveIteratorFromMap(installedPkgWithAssets.assetsMap); + packageInstallContext = { + assetsMap: installedPkgWithAssets.assetsMap, + packageInfo: installedPkgWithAssets.packageInfo, + paths: installedPkgWithAssets.paths, + archiveIterator, + }; + } - await installIndexTemplatesAndPipelines({ - installedPkg: installedPkgWithAssets.installation, - packageInstallContext, - esReferences: installedPkgWithAssets.installation.installed_es || [], - savedObjectsClient: soClient, - esClient, - logger, - onlyForDataStreams: [dataStream], - }); - // Upate ES index patterns - await optimisticallyAddEsAssetReferences( - soClient, - installedPkgWithAssets.installation.name, - [], - generateESIndexPatterns([dataStream]) - ); + await installIndexTemplatesAndPipelines({ + installedPkg: installedPkgWithAssets.installation, + packageInstallContext, + esReferences: installedPkgWithAssets.installation.installed_es || [], + savedObjectsClient: soClient, + esClient, + logger, + onlyForDataStreams: [dataStream], + }); + // Upate ES index patterns + await optimisticallyAddEsAssetReferences( + soClient, + installedPkgWithAssets.installation.name, + [], + generateESIndexPatterns([dataStream]) + ); + } catch (error) { + logger.warn(`installAssetsForInputPackagePolicy error: ${error}`); + } } interface NoPkgArgs { diff --git a/x-pack/plugins/fleet/server/services/epm/packages/package_verification.ts b/x-pack/plugins/fleet/server/services/epm/packages/package_verification.ts index 92068dfcd424d..d95d387322120 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/package_verification.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/package_verification.ts @@ -75,7 +75,7 @@ export async function verifyPackageArchiveSignature({ }: { pkgName: string; pkgVersion: string; - pkgArchiveBuffer: Buffer; + pkgArchiveBuffer: Buffer | undefined; logger: Logger; }): Promise<PackageVerificationResult> { const verificationKey = await getGpgKeyOrUndefined(); @@ -97,6 +97,11 @@ export async function verifyPackageArchiveSignature({ return result; } + if (!pkgArchiveBuffer) { + logger.warn(`Archive not found for package ${pkgName}-${pkgVersion}. Skipping verification.`); + return result; + } + const { isVerified, keyId } = await _verifyPackageSignature({ pkgArchiveBuffer, pkgArchiveSignature, diff --git a/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts b/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts index 6de0577e33238..34a474c0900e8 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts @@ -84,6 +84,7 @@ describe('splitPkgKey', () => { describe('fetch package', () => { afterEach(() => { mockFetchUrl.mockReset(); + mockGetConfig.mockReset(); mockGetBundledPackageByName.mockReset(); }); @@ -100,6 +101,22 @@ describe('fetch package', () => { expect(result).toEqual(registryPackage); }); + it('Should return bundled package when isAirGapped = true', async () => { + mockGetConfig.mockReturnValue({ + isAirGapped: true, + enabled: true, + agents: { enabled: true, elasticsearch: {} }, + }); + const bundledPackage = { name: 'testpkg', version: '1.0.0' }; + const registryPackage = { name: 'testpkg', version: '1.0.1' }; + + mockFetchUrl.mockResolvedValue(JSON.stringify([registryPackage])); + + mockGetBundledPackageByName.mockResolvedValue(bundledPackage); + const result = await fetchMethodToTest('testpkg'); + expect(result).toEqual(bundledPackage); + }); + it('Should return bundled package if bundled package is newer version', async () => { const bundledPackage = { name: 'testpkg', version: '1.0.1' }; const registryPackage = { name: 'testpkg', version: '1.0.0' }; @@ -220,6 +237,15 @@ describe('fetchInfo', () => { expect(e).toBeInstanceOf(PackageNotFoundError); } }); + + it('falls back to bundled package when isAirGapped config == true', async () => { + mockGetConfig.mockReturnValue({ + isAirGapped: true, + }); + + const fetchedInfo = await fetchInfo('test-package', '1.0.0'); + expect(fetchedInfo).toBeTruthy(); + }); }); describe('fetchCategories', () => { @@ -317,6 +343,13 @@ describe('fetchList', () => { expect(callUrl.searchParams.get('capabilities')).toBeNull(); }); + it('does not call registry if isAirGapped == true', async () => { + mockGetConfig.mockReturnValue({ isAirGapped: true }); + mockFetchUrl.mockResolvedValue(JSON.stringify([])); + await fetchList(); + expect(mockFetchUrl).toBeCalledTimes(0); + }); + it('does call registry with kibana.version if not explictly disabled', async () => { mockGetConfig.mockReturnValue({ internal: { diff --git a/x-pack/plugins/fleet/server/services/epm/registry/index.ts b/x-pack/plugins/fleet/server/services/epm/registry/index.ts index 75b9869d0a7c6..3fd0e09578ca7 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/index.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/index.ts @@ -46,6 +46,7 @@ import { RegistryResponseError, PackageFailedVerificationError, PackageUnsupportedMediaTypeError, + ArchiveNotFoundError, } from '../../../errors'; import { getBundledPackageByName } from '../packages/bundled_packages'; @@ -56,6 +57,8 @@ import { verifyPackageArchiveSignature } from '../packages/package_verification' import type { ArchiveIterator } from '../../../../common/types'; +import { airGappedUtils } from '../airgapped'; + import { fetchUrl, getResponse, getResponseStream } from './requests'; import { getRegistryUrl } from './registry_url'; @@ -67,6 +70,15 @@ export const pkgToPkgKey = ({ name, version }: { name: string; version: string } export async function fetchList( params?: GetPackagesRequest['query'] ): Promise<RegistrySearchResults> { + if (airGappedUtils().shouldSkipRegistryRequests) { + appContextService + .getLogger() + .debug( + 'fetchList: isAirGapped enabled and no registryUrl or RegistryProxyUrl configured, skipping registry requests' + ); + return []; + } + const registryUrl = getRegistryUrl(); const url = new URL(`${registryUrl}/search`); if (params) { @@ -106,16 +118,24 @@ async function _fetchFindLatestPackage( } try { - const res = await fetchUrl(url.toString(), 1); - const searchResults: RegistryPackage[] = JSON.parse(res); - - const latestPackageFromRegistry = searchResults[0] ?? null; - - if (bundledPackage && semverGte(bundledPackage.version, latestPackageFromRegistry.version)) { + if (!airGappedUtils().shouldSkipRegistryRequests) { + const res = await fetchUrl(url.toString(), 1); + const searchResults: RegistryPackage[] = JSON.parse(res); + + const latestPackageFromRegistry = searchResults[0] ?? null; + + if ( + bundledPackage && + semverGte(bundledPackage.version, latestPackageFromRegistry.version) + ) { + return bundledPackage; + } + return latestPackageFromRegistry; + } else if (airGappedUtils().shouldSkipRegistryRequests && bundledPackage) { return bundledPackage; + } else { + return null; } - - return latestPackageFromRegistry; } catch (error) { logger.error( `Failed to fetch latest version of ${packageName} from registry: ${error.message}` @@ -169,6 +189,13 @@ export async function fetchInfo( pkgVersion: string ): Promise<RegistryPackage | ArchivePackage> { const registryUrl = getRegistryUrl(); + // if isAirGapped config enabled and bundled package, use the bundled version + if (airGappedUtils().shouldSkipRegistryRequests) { + const archivePackage = await getBundledArchive(pkgName, pkgVersion); + if (archivePackage) { + return archivePackage.packageInfo; + } + } try { // Trailing slash avoids 301 redirect / extra hop const res = await fetchUrl(`${registryUrl}/package/${pkgName}/${pkgVersion}/`).then(JSON.parse); @@ -208,12 +235,20 @@ export async function getFile( pkgName: string, pkgVersion: string, relPath: string -): Promise<Response> { +): Promise<Response | null> { const filePath = `/package/${pkgName}/${pkgVersion}/${relPath}`; return fetchFile(filePath); } -export async function fetchFile(filePath: string): Promise<Response> { +export async function fetchFile(filePath: string): Promise<Response | null> { + if (airGappedUtils().shouldSkipRegistryRequests) { + appContextService + .getLogger() + .debug( + 'fetchFile: isAirGapped enabled and no registryUrl or RegistryProxyUrl configured, skipping registry requests' + ); + return null; + } const registryUrl = getRegistryUrl(); return getResponse(`${registryUrl}${filePath}`); } @@ -264,6 +299,15 @@ function setConstraints(url: URL) { export async function fetchCategories( params?: GetCategoriesRequest['query'] ): Promise<CategorySummaryList> { + if (airGappedUtils().shouldSkipRegistryRequests) { + appContextService + .getLogger() + .debug( + 'fetchCategories: isAirGapped enabled and no registryUrl or RegistryProxyUrl configured, skipping registry requests' + ); + return []; + } + const registryUrl = getRegistryUrl(); const url = new URL(`${registryUrl}/categories`); if (params) { @@ -319,42 +363,52 @@ export async function getPackage( archiveIterator: ArchiveIterator; verificationResult?: PackageVerificationResult; }> { + const logger = appContextService.getLogger(); const verifyPackage = appContextService.getExperimentalFeatures().packageVerification; let packageInfo: ArchivePackage | undefined = getPackageInfo({ name, version }); let verificationResult: PackageVerificationResult | undefined = verifyPackage ? getVerificationResult({ name, version }) : undefined; + try { + const { + archiveBuffer, + archivePath, + verificationResult: latestVerificationResult, + } = await withPackageSpan('Fetch package archive from archive buffer', () => + fetchArchiveBuffer({ + pkgName: name, + pkgVersion: version, + shouldVerify: verifyPackage, + ignoreUnverified: options?.ignoreUnverified, + }) + ); - const { - archiveBuffer, - archivePath, - verificationResult: latestVerificationResult, - } = await withPackageSpan('Fetch package archive from archive buffer', () => - fetchArchiveBuffer({ - pkgName: name, - pkgVersion: version, - shouldVerify: verifyPackage, - ignoreUnverified: options?.ignoreUnverified, - }) - ); - - if (latestVerificationResult) { - verificationResult = latestVerificationResult; - setVerificationResult({ name, version }, latestVerificationResult); - } + if (latestVerificationResult) { + verificationResult = latestVerificationResult; + setVerificationResult({ name, version }, latestVerificationResult); + } - const contentType = ensureContentType(archivePath); - const { paths, assetsMap, archiveIterator } = await unpackBufferToAssetsMap({ - archiveBuffer, - contentType, - useStreaming: options?.useStreaming, - }); + const contentType = ensureContentType(archivePath); + const { paths, assetsMap, archiveIterator } = await unpackBufferToAssetsMap({ + archiveBuffer, + contentType, + useStreaming: options?.useStreaming, + }); - if (!packageInfo) { - packageInfo = await getPackageInfoFromArchiveOrCache(name, version, archiveBuffer, archivePath); - } + if (!packageInfo) { + packageInfo = await getPackageInfoFromArchiveOrCache( + name, + version, + archiveBuffer, + archivePath + ); + } - return { paths, packageInfo, assetsMap, archiveIterator, verificationResult }; + return { paths, packageInfo, assetsMap, archiveIterator, verificationResult }; + } catch (error) { + logger.warn(`getPackage failed with error: ${error}`); + throw error; + } } export async function getPackageFieldsMetadata( @@ -367,36 +421,40 @@ export async function getPackageFieldsMetadata( // Attempt retrieving latest package name and version const latestPackage = await fetchFindLatestPackageOrThrow(packageName); const { name, version } = latestPackage; - - // Attempt retrieving latest package - const resolvedPackage = await getPackage(name, version); - - // We need to collect all the available data streams for the package. - // In case a dataset is specified from the parameter, it will load the fields only for that specific dataset. - // As a fallback case, we'll try to read the fields for all the data streams in the package. - const dataStreamsMap = resolveDataStreamsMap(resolvedPackage.packageInfo.data_streams); - - const { assetsMap } = resolvedPackage; - - const dataStream = datasetName ? dataStreamsMap.get(datasetName) : null; - - if (dataStream) { - // Resolve a single data stream fields when the `datasetName` parameter is specified - return resolveDataStreamFields({ dataStream, assetsMap, excludedFieldsAssets }); - } else { - // Resolve and merge all the integration data streams fields otherwise - return [...dataStreamsMap.values()].reduce( - (packageDataStreamsFields, currentDataStream) => - Object.assign( - packageDataStreamsFields, - resolveDataStreamFields({ - dataStream: currentDataStream, - assetsMap, - excludedFieldsAssets, - }) - ), - {} - ); + try { + // Attempt retrieving latest package + const resolvedPackage = await getPackage(name, version); + + // We need to collect all the available data streams for the package. + // In case a dataset is specified from the parameter, it will load the fields only for that specific dataset. + // As a fallback case, we'll try to read the fields for all the data streams in the package. + const dataStreamsMap = resolveDataStreamsMap(resolvedPackage.packageInfo.data_streams); + + const assetsMap = resolvedPackage.assetsMap; + + const dataStream = datasetName ? dataStreamsMap.get(datasetName) : null; + + if (dataStream) { + // Resolve a single data stream fields when the `datasetName` parameter is specified + return resolveDataStreamFields({ dataStream, assetsMap, excludedFieldsAssets }); + } else { + // Resolve and merge all the integration data streams fields otherwise + return [...dataStreamsMap.values()].reduce( + (packageDataStreamsFields, currentDataStream) => + Object.assign( + packageDataStreamsFields, + resolveDataStreamFields({ + dataStream: currentDataStream, + assetsMap, + excludedFieldsAssets, + }) + ), + {} + ); + } + } catch (error) { + appContextService.getLogger().warn(`getPackageFieldsMetadata error: ${error}`); + throw error; } } @@ -436,22 +494,31 @@ export async function fetchArchiveBuffer({ } const registryUrl = getRegistryUrl(); const archiveUrl = `${registryUrl}${archivePath}`; - const archiveBuffer = await getResponseStream(archiveUrl).then(streamToBuffer); - - if (shouldVerify) { - const verificationResult = await verifyPackageArchiveSignature({ - pkgName, - pkgVersion, - pkgArchiveBuffer: archiveBuffer, - logger, - }); + try { + const archiveBuffer = await getResponseStream(archiveUrl).then(streamToBuffer); + if (!archiveBuffer) { + logger.warn(`Archive Buffer not found`); + throw new ArchiveNotFoundError('Archive Buffer not found'); + } + + if (shouldVerify) { + const verificationResult = await verifyPackageArchiveSignature({ + pkgName, + pkgVersion, + pkgArchiveBuffer: archiveBuffer, + logger, + }); - if (verificationResult.verificationStatus === 'unverified' && !ignoreUnverified) { - throw new PackageFailedVerificationError(pkgName, pkgVersion); + if (verificationResult.verificationStatus === 'unverified' && !ignoreUnverified) { + throw new PackageFailedVerificationError(pkgName, pkgVersion); + } + return { archiveBuffer, archivePath, verificationResult }; } - return { archiveBuffer, archivePath, verificationResult }; + return { archiveBuffer, archivePath }; + } catch (error) { + logger.warn(`fetchArchiveBuffer failed with error: ${error}`); + throw error; } - return { archiveBuffer, archivePath }; } export async function getPackageArchiveSignatureOrUndefined({ @@ -473,9 +540,10 @@ export async function getPackageArchiveSignatureOrUndefined({ } try { - const { body } = await fetchFile(signaturePath); + const res = await fetchFile(signaturePath); - return streamToString(body); + if (res?.body) return streamToString(res.body); + return undefined; } catch (e) { logger.error(`Error retrieving package signature at '${signaturePath}' : ${e}`); return undefined; diff --git a/x-pack/plugins/fleet/server/services/epm/registry/requests.test.ts b/x-pack/plugins/fleet/server/services/epm/registry/requests.test.ts index e4e34d25671f6..367f68f50acd2 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/requests.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/requests.test.ts @@ -5,11 +5,17 @@ * 2.0. */ +import { securityMock } from '@kbn/security-plugin/server/mocks'; +import { loggerMock } from '@kbn/logging-mocks'; + +import type { Logger } from '@kbn/core/server'; + import { RegistryError, RegistryConnectionError, RegistryResponseError } from '../../../errors'; import { appContextService } from '../../app_context'; import { fetchUrl, getResponse } from './requests'; jest.mock('node-fetch'); +jest.mock('../../app_context'); let mockRegistryProxyUrl: string | undefined; jest.mock('./proxy', () => ({ @@ -17,11 +23,9 @@ jest.mock('./proxy', () => ({ getRegistryProxyUrl: () => mockRegistryProxyUrl, })); -jest.mock('../../app_context', () => ({ - appContextService: { - getKibanaVersion: jest.fn(), - getLogger: jest.fn().mockReturnValue({ debug: jest.fn() }), - }, +const mockedAppContextService = appContextService as jest.Mocked<typeof appContextService>; +mockedAppContextService.getSecuritySetup.mockImplementation(() => ({ + ...securityMock.createSetup(), })); const { Response, FetchError } = jest.requireActual('node-fetch'); @@ -29,18 +33,23 @@ const { Response, FetchError } = jest.requireActual('node-fetch'); const fetchMock = require('node-fetch') as jest.Mock; jest.setTimeout(120 * 1000); -describe('Registry request', () => { + +describe('Registry requests', () => { beforeEach(async () => {}); afterEach(async () => { jest.clearAllMocks(); }); + let mockedLogger: jest.Mocked<Logger>; describe('fetch options', () => { beforeEach(() => { fetchMock.mockImplementationOnce(() => Promise.resolve(new Response(''))); - (appContextService.getKibanaVersion as jest.Mock).mockReturnValue('8.0.0'); + mockedAppContextService.getKibanaVersion.mockReturnValue('8.0.0'); + mockedLogger = loggerMock.create(); + mockedAppContextService.getLogger.mockReturnValue(mockedLogger); }); + it('should set User-Agent header including kibana version', async () => { await getResponse(''); @@ -219,5 +228,32 @@ describe('Registry request', () => { expect(fetchMock).toHaveBeenCalledTimes(1); }); }); + + describe('with config.isAirGapped == true', () => { + beforeEach(() => { + mockedLogger = loggerMock.create(); + mockedAppContextService.getLogger.mockReturnValue(mockedLogger); + mockedAppContextService.getConfig.mockReturnValue({ + isAirGapped: true, + enabled: true, + agents: { enabled: true, elasticsearch: {} }, + }); + }); + + it('should not call fetch', async () => { + await getResponse(''); + + expect(fetchMock).toHaveBeenCalledTimes(0); + }); + + it('fetchUrl throws error', async () => { + fetchMock.mockImplementationOnce(() => { + throw new Error('mocked'); + }); + const promise = fetchUrl(''); + await expect(promise).rejects.toThrow(RegistryResponseError); + expect(fetchMock).toHaveBeenCalledTimes(0); + }); + }); }); }); diff --git a/x-pack/plugins/fleet/server/services/epm/registry/requests.ts b/x-pack/plugins/fleet/server/services/epm/registry/requests.ts index 47084b601a27e..a67e01408a1e9 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/requests.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/requests.ts @@ -13,6 +13,8 @@ import { streamToString } from '../streams'; import { appContextService } from '../../app_context'; import { RegistryError, RegistryConnectionError, RegistryResponseError } from '../../../errors'; +import { airGappedUtils } from '../airgapped'; + import { getProxyAgent, getRegistryProxyUrl } from './proxy'; type FailedAttemptErrors = pRetry.FailedAttemptError | FetchError | Error; @@ -20,6 +22,7 @@ type FailedAttemptErrors = pRetry.FailedAttemptError | FetchError | Error; // not sure what to call this function, but we're not exporting it async function registryFetch(url: string) { const response = await fetch(url, getFetchOptions(url)); + if (response.ok) { return response; } else { @@ -34,7 +37,16 @@ async function registryFetch(url: string) { } } -export async function getResponse(url: string, retries: number = 5): Promise<Response> { +export async function getResponse(url: string, retries: number = 5): Promise<Response | null> { + const logger = appContextService.getLogger(); + + if (airGappedUtils().shouldSkipRegistryRequests) { + logger.debug( + 'getResponse: isAirGapped enabled and no registryUrl or RegistryProxyUrl configured, skipping registry requests' + ); + return null; + } + try { // we only want to retry certain failures like network issues // the rest should only try the one time then fail as they do now @@ -72,11 +84,20 @@ export async function getResponseStream( retries?: number ): Promise<NodeJS.ReadableStream> { const res = await getResponse(url, retries); - return res.body; + if (res) { + return res?.body; + } + throw new RegistryResponseError('isAirGapped config enabled, registry not reacheable'); } export async function fetchUrl(url: string, retries?: number): Promise<string> { - return getResponseStream(url, retries).then(streamToString); + const logger = appContextService.getLogger(); + try { + return getResponseStream(url, retries).then(streamToString); + } catch (error) { + logger.warn(`getResponseStream failed with error: ${error}`); + throw error; + } } // node-fetch throws a FetchError for those types of errors and diff --git a/x-pack/plugins/fleet/server/services/register_fields_metadata_extractors.ts b/x-pack/plugins/fleet/server/services/register_fields_metadata_extractors.ts index 9a53c235622bf..a468c20137b38 100644 --- a/x-pack/plugins/fleet/server/services/register_fields_metadata_extractors.ts +++ b/x-pack/plugins/fleet/server/services/register_fields_metadata_extractors.ts @@ -10,6 +10,8 @@ import type { FieldsMetadataServerSetup } from '@kbn/fields-metadata-plugin/serv import type { FleetStartContract, FleetStartDeps } from '../plugin'; +import { appContextService } from '.'; + interface RegistrationDeps { core: CoreSetup<FleetStartDeps, FleetStartContract>; fieldsMetadata: FieldsMetadataServerSetup; @@ -17,12 +19,17 @@ interface RegistrationDeps { export const registerFieldsMetadataExtractors = ({ core, fieldsMetadata }: RegistrationDeps) => { fieldsMetadata.registerIntegrationFieldsExtractor(async ({ integration, dataset }) => { - const [_core, _startDeps, { packageService }] = await core.getStartServices(); + try { + const [_core, _startDeps, { packageService }] = await core.getStartServices(); - return packageService.asInternalUser.getPackageFieldsMetadata({ - packageName: integration, - datasetName: dataset, - }); + return packageService.asInternalUser.getPackageFieldsMetadata({ + packageName: integration, + datasetName: dataset, + }); + } catch (error) { + appContextService.getLogger().warn(`registerIntegrationFieldsExtractor error: ${error}`); + throw error; + } }); fieldsMetadata.registerIntegrationListExtractor(async () => { diff --git a/x-pack/plugins/fleet/server/services/spaces/agent_policy.test.ts b/x-pack/plugins/fleet/server/services/spaces/agent_policy.test.ts index 079148a6ae041..6b2c63aae9126 100644 --- a/x-pack/plugins/fleet/server/services/spaces/agent_policy.test.ts +++ b/x-pack/plugins/fleet/server/services/spaces/agent_policy.test.ts @@ -7,6 +7,7 @@ import { createAppContextStartContractMock } from '../../mocks'; import { agentPolicyService } from '../agent_policy'; +import { getAgentsByKuery } from '../agents'; import { appContextService } from '../app_context'; import { packagePolicyService } from '../package_policy'; @@ -16,6 +17,7 @@ import { isSpaceAwarenessEnabled } from './helpers'; jest.mock('./helpers'); jest.mock('../agent_policy'); jest.mock('../package_policy'); +jest.mock('../agents'); describe('updateAgentPolicySpaces', () => { beforeEach(() => { @@ -55,6 +57,10 @@ describe('updateAgentPolicySpaces', () => { } as any, ], }); + + jest.mocked(getAgentsByKuery).mockResolvedValue({ + agents: [], + } as any); }); it('does nothings if agent policy already in correct space', async () => { diff --git a/x-pack/plugins/fleet/server/services/spaces/agent_policy.ts b/x-pack/plugins/fleet/server/services/spaces/agent_policy.ts index 50f20443c3262..dce40f4cc3ff4 100644 --- a/x-pack/plugins/fleet/server/services/spaces/agent_policy.ts +++ b/x-pack/plugins/fleet/server/services/spaces/agent_policy.ts @@ -6,27 +6,29 @@ */ import deepEqual from 'fast-deep-equal'; - import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; +import type { SortResults } from '@elastic/elasticsearch/lib/api/types'; import { AGENTS_INDEX, + AGENT_ACTIONS_INDEX, AGENT_POLICY_SAVED_OBJECT_TYPE, PACKAGE_POLICY_SAVED_OBJECT_TYPE, SO_SEARCH_LIMIT, UNINSTALL_TOKENS_SAVED_OBJECT_TYPE, } from '../../../common/constants'; - import { appContextService } from '../app_context'; import { agentPolicyService } from '../agent_policy'; import { ENROLLMENT_API_KEYS_INDEX } from '../../constants'; import { packagePolicyService } from '../package_policy'; import { FleetError, HostedAgentPolicyRestrictionRelatedError } from '../../errors'; - import type { UninstallTokenSOAttributes } from '../security/uninstall_token_service'; +import { closePointInTime, getAgentsByKuery, openPointInTime } from '../agents'; import { isSpaceAwarenessEnabled } from './helpers'; +const UPDATE_AGENT_BATCH_SIZE = 1000; + export async function updateAgentPolicySpaces({ agentPolicyId, currentSpaceId, @@ -49,6 +51,7 @@ export async function updateAgentPolicySpaces({ const soClient = appContextService.getInternalUserSOClientWithoutSpaceExtension(); const currentSpaceSoClient = appContextService.getInternalUserSOClientForSpaceId(currentSpaceId); + const newSpaceSoClient = appContextService.getInternalUserSOClientForSpaceId(newSpaceIds[0]); const existingPolicy = await agentPolicyService.get(currentSpaceSoClient, agentPolicyId); const existingPackagePolicies = await packagePolicyService.findAllForAgentPolicy( @@ -166,4 +169,55 @@ export async function updateAgentPolicySpaces({ ignore_unavailable: true, refresh: true, }); + + const agentIndexExists = await esClient.indices.exists({ + index: AGENTS_INDEX, + }); + + // Update agent actions + if (agentIndexExists) { + const pitId = await openPointInTime(esClient); + + try { + let hasMore = true; + let searchAfter: SortResults | undefined; + while (hasMore) { + const { agents } = await getAgentsByKuery(esClient, newSpaceSoClient, { + kuery: `policy_id:"${agentPolicyId}"`, + showInactive: true, + perPage: UPDATE_AGENT_BATCH_SIZE, + pitId, + searchAfter, + }); + + if (agents.length === 0) { + hasMore = false; + break; + } + + const lastAgent = agents[agents.length - 1]; + searchAfter = lastAgent.sort; + + await esClient.updateByQuery({ + index: AGENT_ACTIONS_INDEX, + query: { + bool: { + must: { + terms: { + agents: agents.map(({ id }) => id), + }, + }, + }, + }, + script: `ctx._source.namespaces = [${newSpaceIds + .map((spaceId) => `"${spaceId}"`) + .join(',')}]`, + ignore_unavailable: true, + refresh: true, + }); + } + } finally { + await closePointInTime(esClient, pitId); + } + } } diff --git a/x-pack/plugins/fleet/server/telemetry/sender.ts b/x-pack/plugins/fleet/server/telemetry/sender.ts index 8fb71683b2c9c..bdecd6cc8d0bf 100644 --- a/x-pack/plugins/fleet/server/telemetry/sender.ts +++ b/x-pack/plugins/fleet/server/telemetry/sender.ts @@ -14,10 +14,10 @@ import axios from 'axios'; import type { InfoResponse, LicenseGetResponse } from '@elastic/elasticsearch/lib/api/types'; -import { appContextService } from '../services'; - import { exhaustMap, Subject, takeUntil, timer } from 'rxjs'; +import { appContextService } from '../services'; + import { TelemetryQueue } from './queue'; import type { FleetTelemetryChannel, FleetTelemetryChannelEvents } from './types'; diff --git a/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx b/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx index f4dc33f73176c..0473f23643026 100644 --- a/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx +++ b/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx @@ -165,7 +165,7 @@ export const WorkspaceTopNavMenu = (props: WorkspaceTopNavMenuProps) => { <Provider store={store}> <Settings observable={settingsObservable} /> </Provider>, - { theme: props.coreStart.theme, i18n: props.coreStart.i18n } + props.coreStart ), { size: 'm', diff --git a/x-pack/plugins/graph/public/helpers/saved_objects_utils/check_for_duplicate_title.ts b/x-pack/plugins/graph/public/helpers/saved_objects_utils/check_for_duplicate_title.ts index c4ea22344a459..0524c0bc5c1b3 100644 --- a/x-pack/plugins/graph/public/helpers/saved_objects_utils/check_for_duplicate_title.ts +++ b/x-pack/plugins/graph/public/helpers/saved_objects_utils/check_for_duplicate_title.ts @@ -27,7 +27,7 @@ export async function checkForDuplicateTitle( onTitleDuplicate: (() => void) | undefined, services: { contentClient: ContentClient; - } & Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme'> + } & Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile'> ): Promise<boolean> { const { contentClient, ...startServices } = services; // Don't check for duplicates if user has already confirmed save with duplicate title diff --git a/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx b/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx index c1d8899c34076..7e7464754fd4d 100644 --- a/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx +++ b/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx @@ -15,7 +15,7 @@ export function confirmModalPromise( message = '', title = '', confirmBtnText = '', - startServices: Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme'> + startServices: Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile'> ): Promise<boolean> { return new Promise((resolve, reject) => { const cancelButtonText = i18n.translate('xpack.graph.confirmModal.cancelButtonLabel', { diff --git a/x-pack/plugins/graph/public/helpers/saved_objects_utils/display_duplicate_title_confirm_modal.ts b/x-pack/plugins/graph/public/helpers/saved_objects_utils/display_duplicate_title_confirm_modal.ts index 4256d3bc0267d..eec216fceb15f 100644 --- a/x-pack/plugins/graph/public/helpers/saved_objects_utils/display_duplicate_title_confirm_modal.ts +++ b/x-pack/plugins/graph/public/helpers/saved_objects_utils/display_duplicate_title_confirm_modal.ts @@ -13,7 +13,7 @@ import { confirmModalPromise } from './confirm_modal_promise'; export function displayDuplicateTitleConfirmModal( savedObject: Pick<GraphWorkspaceSavedObject, 'title'>, - startServices: Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme'> + startServices: Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile'> ): Promise<boolean> { const confirmTitle = i18n.translate('xpack.graph.confirmModal.saveDuplicateConfirmationTitle', { defaultMessage: `This visualization already exists`, diff --git a/x-pack/plugins/graph/public/helpers/saved_objects_utils/save_with_confirmation.ts b/x-pack/plugins/graph/public/helpers/saved_objects_utils/save_with_confirmation.ts index 75b846ca076a3..a9b85e544834f 100644 --- a/x-pack/plugins/graph/public/helpers/saved_objects_utils/save_with_confirmation.ts +++ b/x-pack/plugins/graph/public/helpers/saved_objects_utils/save_with_confirmation.ts @@ -34,7 +34,7 @@ export async function saveWithConfirmation( options: SavedObjectsCreateOptions, services: { contentClient: ContentClient } & Pick< CoreStart, - 'overlays' | 'analytics' | 'i18n' | 'theme' + 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile' > ): Promise<{ item: GraphSavedObject }> { const { contentClient, ...startServices } = services; diff --git a/x-pack/plugins/graph/public/helpers/saved_workspace_utils.ts b/x-pack/plugins/graph/public/helpers/saved_workspace_utils.ts index 5a2546d122e58..566d9f26be301 100644 --- a/x-pack/plugins/graph/public/helpers/saved_workspace_utils.ts +++ b/x-pack/plugins/graph/public/helpers/saved_workspace_utils.ts @@ -167,7 +167,7 @@ export async function saveSavedWorkspace( }: SavedObjectSaveOpts = {}, services: { contentClient: ContentClient; - } & Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme'> + } & Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile'> ) { let attributes: SavedObjectAttributes = {}; diff --git a/x-pack/plugins/graph/public/services/save_modal.tsx b/x-pack/plugins/graph/public/services/save_modal.tsx index baf6a96405164..e05800ec20ddb 100644 --- a/x-pack/plugins/graph/public/services/save_modal.tsx +++ b/x-pack/plugins/graph/public/services/save_modal.tsx @@ -14,7 +14,7 @@ import { GraphWorkspaceSavedObject, GraphSavePolicy } from '../types'; import { SaveModal, OnSaveGraphProps } from '../components/save_modal'; export interface SaveWorkspaceServices - extends Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme'> { + extends Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile'> { contentClient: ContentClient; } diff --git a/x-pack/plugins/graph/public/state_management/store.ts b/x-pack/plugins/graph/public/state_management/store.ts index 60b44ed234e02..a150ad59336ea 100644 --- a/x-pack/plugins/graph/public/state_management/store.ts +++ b/x-pack/plugins/graph/public/state_management/store.ts @@ -40,7 +40,7 @@ export interface GraphState { } export interface GraphStoreDependencies - extends Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme'> { + extends Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile'> { addBasePath: (url: string) => string; indexPatternProvider: IndexPatternProvider; createWorkspace: (index: string, advancedSettings: AdvancedSettings) => Workspace; diff --git a/x-pack/plugins/grokdebugger/jest.config.js b/x-pack/plugins/grokdebugger/jest.config.js deleted file mode 100644 index 56cd0339a7afd..0000000000000 --- a/x-pack/plugins/grokdebugger/jest.config.js +++ /dev/null @@ -1,17 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/grokdebugger'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/grokdebugger', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/grokdebugger/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/grokdebugger/tsconfig.json b/x-pack/plugins/grokdebugger/tsconfig.json deleted file mode 100644 index f2df02467d71c..0000000000000 --- a/x-pack/plugins/grokdebugger/tsconfig.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - "../../../typings/**/*", - ], - "kbn_references": [ - "@kbn/core", - "@kbn/home-plugin", - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/licensing-plugin", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/code-editor", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/index_lifecycle_management/integration_tests/README.md b/x-pack/plugins/index_lifecycle_management/integration_tests/README.md deleted file mode 100644 index 5e4bf4360cb72..0000000000000 --- a/x-pack/plugins/index_lifecycle_management/integration_tests/README.md +++ /dev/null @@ -1,14 +0,0 @@ -Most plugins of the deployment management team follow -the similar testing infrastructure where integration tests are located in `__jest__` and run as unit tests. - -The `index_lifecycle_management` tests [were refactored](https://github.com/elastic/kibana/pull/141750) to be run as integration tests because they [became flaky hitting the 5 seconds timeout](https://github.com/elastic/kibana/issues/115307#issuecomment-1238417474) for a jest unit test. - -Jest integration tests are just sit in a different directory and have two main differences: -- They never use parallelism, this allows them to access file system resources, launch services, etc. without needing to worry about conflicts with other tests -- They are allowed to take their sweet time, the default timeout is currently 10 minutes. - -To run these tests use: - -``` -node scripts/jest_integration x-pack/plugins/index_lifecycle_management/ -``` \ No newline at end of file diff --git a/x-pack/plugins/index_lifecycle_management/jest.config.js b/x-pack/plugins/index_lifecycle_management/jest.config.js deleted file mode 100644 index ec594e214106d..0000000000000 --- a/x-pack/plugins/index_lifecycle_management/jest.config.js +++ /dev/null @@ -1,18 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/index_lifecycle_management'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/index_lifecycle_management', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/index_lifecycle_management/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/index_lifecycle_management/jest.integration.config.js b/x-pack/plugins/index_lifecycle_management/jest.integration.config.js deleted file mode 100644 index 6d1ac5ec2fd8a..0000000000000 --- a/x-pack/plugins/index_lifecycle_management/jest.integration.config.js +++ /dev/null @@ -1,19 +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. - */ - -module.exports = { - preset: '@kbn/test/jest_integration', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/index_lifecycle_management'], - testMatch: ['/**/integration_tests/**/*.test.{js,mjs,ts,tsx}'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/index_lifecycle_management', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/index_lifecycle_management/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/index_lifecycle_management/tsconfig.json b/x-pack/plugins/index_lifecycle_management/tsconfig.json deleted file mode 100644 index 08346dcdc2d35..0000000000000 --- a/x-pack/plugins/index_lifecycle_management/tsconfig.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "__jest__/**/*", - "integration_tests/**/*", - "common/**/*", - "public/**/*", - "server/**/*", - "../../../typings/**/*", - ], - "kbn_references": [ - "@kbn/core", - // required plugins - "@kbn/licensing-plugin", - "@kbn/management-plugin", - "@kbn/features-plugin", - "@kbn/share-plugin", - // optional plugins - "@kbn/cloud-plugin", - "@kbn/usage-collection-plugin", - "@kbn/index-management-plugin", - "@kbn/home-plugin", - // required bundles - "@kbn/kibana-react-plugin", - "@kbn/test-jest-helpers", - "@kbn/core-http-browser-mocks", - "@kbn/i18n", - "@kbn/utility-types", - "@kbn/analytics", - "@kbn/es-ui-shared-plugin", - "@kbn/i18n-react", - "@kbn/core-http-browser", - "@kbn/config-schema", - "@kbn/shared-ux-router", - "@kbn/ui-theme", - "@kbn/shared-ux-link-redirect-app", - "@kbn/index-management-shared-types", - "@kbn/react-kibana-context-render", - "@kbn/unsaved-changes-prompt", - "@kbn/shared-ux-table-persist", - "@kbn/index-lifecycle-management-common-shared", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/index_management/README.md b/x-pack/plugins/index_management/README.md index 970b86c4ed37c..bc7047888d2ab 100644 --- a/x-pack/plugins/index_management/README.md +++ b/x-pack/plugins/index_management/README.md @@ -43,7 +43,7 @@ interface IndexDetailsTab { } ``` -An example of adding an ILM tab can be found in [this file](https://github.com/elastic/kibana/blob/main/x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx#L250). +An example of adding an ILM tab can be found in [this file](https://github.com/elastic/kibana/blob/main/x-pack/platform/plugins/private/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx#L250). - `setIndexOverviewContent(content: IndexContent)`: replaces the default content in the overview tab (code block describing adding documents to the index) with the custom content. The custom content has the following interface: ```ts diff --git a/x-pack/plugins/index_management/common/types/data_streams.ts b/x-pack/plugins/index_management/common/types/data_streams.ts index 993d32f32bee1..b6c3e46966dfa 100644 --- a/x-pack/plugins/index_management/common/types/data_streams.ts +++ b/x-pack/plugins/index_management/common/types/data_streams.ts @@ -81,7 +81,7 @@ export interface DataStreamIndex { name: string; uuid: string; preferILM: boolean; - managedBy: string; + managedBy?: string; } export interface DataRetention { diff --git a/x-pack/plugins/index_management/public/application/lib/data_streams.tsx b/x-pack/plugins/index_management/public/application/lib/data_streams.tsx index 6747e84df751d..138a91e86df67 100644 --- a/x-pack/plugins/index_management/public/application/lib/data_streams.tsx +++ b/x-pack/plugins/index_management/public/application/lib/data_streams.tsx @@ -87,7 +87,7 @@ export const isDataStreamFullyManagedByILM = (dataStream?: DataStream | null) => return ( dataStream?.nextGenerationManagedBy?.toLowerCase() === 'index lifecycle management' && dataStream?.indices?.every( - (index) => index.managedBy.toLowerCase() === 'index lifecycle management' + (index) => index.managedBy?.toLowerCase() === 'index lifecycle management' ) ); }; @@ -95,20 +95,22 @@ export const isDataStreamFullyManagedByILM = (dataStream?: DataStream | null) => export const isDataStreamFullyManagedByDSL = (dataStream?: DataStream | null) => { return ( dataStream?.nextGenerationManagedBy?.toLowerCase() === 'data stream lifecycle' && - dataStream?.indices?.every((index) => index.managedBy.toLowerCase() === 'data stream lifecycle') + dataStream?.indices?.every( + (index) => index.managedBy?.toLowerCase() === 'data stream lifecycle' + ) ); }; export const isDSLWithILMIndices = (dataStream?: DataStream | null) => { if (dataStream?.nextGenerationManagedBy?.toLowerCase() === 'data stream lifecycle') { const ilmIndices = dataStream?.indices?.filter( - (index) => index.managedBy.toLowerCase() === 'index lifecycle management' + (index) => index.managedBy?.toLowerCase() === 'index lifecycle management' ); const dslIndices = dataStream?.indices?.filter( - (index) => index.managedBy.toLowerCase() === 'data stream lifecycle' + (index) => index.managedBy?.toLowerCase() === 'data stream lifecycle' ); - // When there arent any ILM indices, there's no need to show anything. + // When there aren't any ILM indices, there's no need to show anything. if (!ilmIndices?.length) { return; } diff --git a/x-pack/plugins/index_management/server/lib/data_stream_serialization.ts b/x-pack/plugins/index_management/server/lib/data_stream_serialization.ts index 31c0baa6c6b8c..2556fab947665 100644 --- a/x-pack/plugins/index_management/server/lib/data_stream_serialization.ts +++ b/x-pack/plugins/index_management/server/lib/data_stream_serialization.ts @@ -43,13 +43,13 @@ export function deserializeDataStream(dataStreamFromEs: EnhancedDataStreamFromEs ({ index_name: indexName, index_uuid: indexUuid, - prefer_ilm: preferILM, + prefer_ilm: preferILM = false, managed_by: managedBy, }: { index_name: string; index_uuid: string; - prefer_ilm: boolean; - managed_by: string; + prefer_ilm?: boolean; + managed_by?: string; }) => ({ name: indexName, uuid: indexUuid, diff --git a/x-pack/plugins/integration_assistant/README.md b/x-pack/plugins/integration_assistant/README.md deleted file mode 100644 index be238aacd174a..0000000000000 --- a/x-pack/plugins/integration_assistant/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# Integration Assistant - -## Overview - -Team owner: Security Integrations Scalability - -This is a new Kibana plugin created to help users with automatically generating integration packages based on provided log samples and relevant information - -## Features - -Exposes 4 API's that can be consumed by any frontend plugin, which are: - -- ECS Mapping API -- Categorization API -- Related Fields API -- Build Integration API -- Optional Test Pipeline API (Used to update pipeline results if the ingest pipeline is changed by a user in the UI). - -## Development - -### Backend - -#### Overview - -The backend part of the plugin utilizes langraph extensively to parse the provided log samples and generate the integration package. - -One instance of langraph is created that will include one or more `nodes` in which each node represents a step in the integration package generation process. - -Each node links to a specific function, usually a `handler` specified in its own file under each graph folder that will be executed when the node is reached. - -#### Structure - -**Graphs** - -The graph components are split into logical parts and are placed in separate folders for each graph under the `./server/graphs` directory. - -Each graph folder needs to contains at least one `graph.ts`, which exports a function that returns the compiled graph object. - -Each exported graph function is then linked up to one or more API routes. - -**Routes** - -All routes are defined under `./server/routes` in its own file, and then included in the `./server/routes/register_routes.ts` file. - -**Integration Builder** - -The integration builder is the last step in the expected API flow (ECS Mapping -> Categorization -> Related Fields -> Integration Builder). -With the provided package and data stream details, an optional logo and a list of sample logs, the API will build out the entire folder structure and files required for the integration package, archive it and return it as a `Buffer`. - -**Templates** - -Currently the templates are stored as `nunjucks` files as they were converted from `jinja2` templates, which use the exact same format. Longer term this will most likely be switched to the Kibana forked Handlebars templating engine. - -The templates are stored in the `./server/templates` directory and are used to generate the integration package files while running the Integration Builder API. - -One template (pipeline.yml.njk) is used by the ECS Mapping API to generate the boilerplate ingest pipeline structure we want to use for all generated integrations. - -#### Flows - -Generated by running `yarn draw-graphs` inside the root of the plugin folder. - -**First graph:** -**Log Format Detection:** -![!LogFormatDetectionGraph](./docs/img/log_detection_graph.png) - -**Second graph, main:** -**ECS Main:** -![ECSMappingGraph](./docs/img/ecs_graph.png) - -**Second graph, sub:** -**ECS Sub:** -![ECSMappingSubGraph](./docs/img/ecs_subgraph.png) - -**Third graph:** -**Categorization:** -![CategorizationGraph](./docs/img/categorization_graph.png) - -**Fourth graph:** -**Related:** -![RelatedGraph](./docs/img/related_graph.png) - -## Tests - -All mocks/fixtures are placed in the top `./__jest__` directory of the plugin. If many mocks/fixtures are required, try to split them up into separate file(s). - -Tests can be run with: - -```bash -node scripts/jest x-pack/plugins/integration_assistant/ --coverage -``` diff --git a/x-pack/plugins/integration_assistant/common/constants.ts b/x-pack/plugins/integration_assistant/common/constants.ts deleted file mode 100644 index 3026101ebf54d..0000000000000 --- a/x-pack/plugins/integration_assistant/common/constants.ts +++ /dev/null @@ -1,47 +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 { LicenseType } from '@kbn/licensing-plugin/common/types'; - -// Plugin information -export const PLUGIN_ID = 'integrationAssistant'; - -// Public App Routes -export const INTEGRATION_ASSISTANT_APP_ROUTE = '/app/integration_assistant'; - -// Server API Routes -export const INTEGRATION_ASSISTANT_BASE_PATH = '/api/integration_assistant'; - -export const ECS_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/ecs`; -export const CATEGORIZATION_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/categorization`; -export const ANALYZE_LOGS_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/analyzelogs`; -export const RELATED_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/related`; -export const CEL_INPUT_GRAPH_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/cel`; -export const CHECK_PIPELINE_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/pipeline`; -export const INTEGRATION_BUILDER_PATH = `${INTEGRATION_ASSISTANT_BASE_PATH}/build`; -export const FLEET_PACKAGES_PATH = `/api/fleet/epm/packages`; - -// License -export const MINIMUM_LICENSE_TYPE: LicenseType = 'enterprise'; - -// ErrorCodes - -export enum GenerationErrorCode { - RECURSION_LIMIT = 'recursion-limit', - RECURSION_LIMIT_ANALYZE_LOGS = 'recursion-limit-analyze-logs', - UNSUPPORTED_LOG_SAMPLES_FORMAT = 'unsupported-log-samples-format', - UNPARSEABLE_CSV_DATA = 'unparseable-csv-data', - CEF_ERROR = 'cef-not-supported', -} - -// Size limits -export const FRONTEND_SAMPLE_ROWS = 100; -export const LOG_FORMAT_DETECTION_SAMPLE_ROWS = 5; -export const CATEGORIZATION_INITIAL_BATCH_SIZE = 60; -export const CATEROGIZATION_REVIEW_BATCH_SIZE = 40; -export const CATEGORIZATION_REVIEW_MAX_CYCLES = 5; -export const CATEGORIZATION_RECURSION_LIMIT = 50; diff --git a/x-pack/plugins/integration_assistant/jest.config.js b/x-pack/plugins/integration_assistant/jest.config.js deleted file mode 100644 index 5712a959c461f..0000000000000 --- a/x-pack/plugins/integration_assistant/jest.config.js +++ /dev/null @@ -1,21 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/integration_assistant'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/integration_assistant', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/integration_assistant/{common,server,public}/**/*.{ts,tsx}', - '!<rootDir>/x-pack/plugins/integration_assistant/{__jest__}/**/*', - '!<rootDir>/x-pack/plugins/integration_assistant/**/*.test.{ts,tsx}', - '!<rootDir>/x-pack/plugins/integration_assistant/**/*.config.ts', - ], - setupFiles: ['jest-canvas-mock'], -}; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.test.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.test.tsx deleted file mode 100644 index ca4d50958005d..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.test.tsx +++ /dev/null @@ -1,229 +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 React from 'react'; -import { render } from '@testing-library/react'; -import { TestProvider } from '../../../mocks/test_provider'; -import { CreateIntegrationAssistant } from './create_integration_assistant'; -import type { State } from './state'; -import { ExperimentalFeaturesService } from '../../../services'; - -export const defaultInitialState: State = { - step: 1, - connector: undefined, - integrationSettings: undefined, - isGenerating: false, - hasCelInput: false, - result: undefined, -}; -const mockInitialState = jest.fn((): State => defaultInitialState); -jest.mock('./state', () => ({ - ...jest.requireActual('./state'), - get initialState() { - return mockInitialState(); - }, -})); - -jest.mock('../../../services'); -const mockedExperimentalFeaturesService = jest.mocked(ExperimentalFeaturesService); - -const mockConnectorStep = jest.fn(() => <div data-test-subj="connectorStepMock" />); -const mockIntegrationStep = jest.fn(() => <div data-test-subj="integrationStepMock" />); -const mockDataStreamStep = jest.fn(() => <div data-test-subj="dataStreamStepMock" />); -const mockReviewStep = jest.fn(() => <div data-test-subj="reviewStepMock" />); -const mockCelInputStep = jest.fn(() => <div data-test-subj="celInputStepMock" />); -const mockReviewCelStep = jest.fn(() => <div data-test-subj="reviewCelStepMock" />); -const mockDeployStep = jest.fn(() => <div data-test-subj="deployStepMock" />); - -const mockIsConnectorStepReady = jest.fn(); -const mockIsIntegrationStepReady = jest.fn(); -const mockIsDataStreamStepReady = jest.fn(); -const mockIsReviewStepReady = jest.fn(); -const mockIsCelInputStepReady = jest.fn(); -const mockIsCelReviewStepReady = jest.fn(); - -jest.mock('./steps/connector_step', () => ({ - ConnectorStep: () => mockConnectorStep(), - isConnectorStepReady: () => mockIsConnectorStepReady(), -})); -jest.mock('./steps/integration_step', () => ({ - IntegrationStep: () => mockIntegrationStep(), - isIntegrationStepReady: () => mockIsIntegrationStepReady(), -})); -jest.mock('./steps/data_stream_step', () => ({ - DataStreamStep: () => mockDataStreamStep(), - isDataStreamStepReady: () => mockIsDataStreamStepReady(), -})); -jest.mock('./steps/review_step', () => ({ - ReviewStep: () => mockReviewStep(), - isReviewStepReady: () => mockIsReviewStepReady(), -})); -jest.mock('./steps/cel_input_step', () => ({ - CelInputStep: () => mockCelInputStep(), - isCelInputStepReady: () => mockIsCelInputStepReady(), -})); -jest.mock('./steps/review_cel_step', () => ({ - ReviewCelStep: () => mockReviewCelStep(), - isCelReviewStepReady: () => mockIsCelReviewStepReady(), -})); -jest.mock('./steps/deploy_step', () => ({ DeployStep: () => mockDeployStep() })); - -const renderIntegrationAssistant = () => - render(<CreateIntegrationAssistant />, { wrapper: TestProvider }); - -describe('CreateIntegration', () => { - beforeEach(() => { - jest.clearAllMocks(); - - mockedExperimentalFeaturesService.get.mockReturnValue({ - generateCel: false, - } as never); - }); - - describe('when step is 1', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 1 }); - }); - - it('should render connector', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('connectorStepMock')).toBeInTheDocument(); - }); - - it('should call isConnectorStepReady', () => { - renderIntegrationAssistant(); - expect(mockIsConnectorStepReady).toHaveBeenCalled(); - }); - }); - - describe('when step is 2', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 2 }); - }); - - it('should render integration', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('integrationStepMock')).toBeInTheDocument(); - }); - - it('should call isIntegrationStepReady', () => { - renderIntegrationAssistant(); - expect(mockIsIntegrationStepReady).toHaveBeenCalled(); - }); - }); - - describe('when step is 3', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 3 }); - }); - - it('should render data stream', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('dataStreamStepMock')).toBeInTheDocument(); - }); - - it('should call isDataStreamStepReady', () => { - renderIntegrationAssistant(); - expect(mockIsDataStreamStepReady).toHaveBeenCalled(); - }); - }); - - describe('when step is 4', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 4 }); - }); - - it('should render review', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('reviewStepMock')).toBeInTheDocument(); - }); - - it('should call isReviewStepReady', () => { - renderIntegrationAssistant(); - expect(mockIsReviewStepReady).toHaveBeenCalled(); - }); - }); - - describe('when step is 5', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 5 }); - }); - - it('should render deploy', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); - }); - }); -}); - -describe('CreateIntegration with generateCel enabled', () => { - beforeEach(() => { - jest.clearAllMocks(); - - mockedExperimentalFeaturesService.get.mockReturnValue({ - generateCel: true, - } as never); - }); - - describe('when step is 5 and has celInput', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 5, hasCelInput: true }); - }); - - it('should render cel input', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('celInputStepMock')).toBeInTheDocument(); - }); - - it('should call isCelInputStepReady', () => { - renderIntegrationAssistant(); - expect(mockIsCelInputStepReady).toHaveBeenCalled(); - }); - }); - - describe('when step is 5 and does not have celInput', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 5 }); - }); - - it('should render deploy', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); - }); - }); - - describe('when step is 6', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ - ...defaultInitialState, - step: 6, - celInputResult: { program: 'program', stateSettings: {}, redactVars: [] }, - }); - }); - - it('should render review', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('reviewCelStepMock')).toBeInTheDocument(); - }); - - it('should call isReviewCelStepReady', () => { - renderIntegrationAssistant(); - expect(mockIsCelReviewStepReady).toHaveBeenCalled(); - }); - }); - - describe('when step is 7', () => { - beforeEach(() => { - mockInitialState.mockReturnValueOnce({ ...defaultInitialState, step: 7 }); - }); - - it('should render deploy', () => { - const result = renderIntegrationAssistant(); - expect(result.queryByTestId('deployStepMock')).toBeInTheDocument(); - }); - }); -}); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.tsx deleted file mode 100644 index 72e085e19920a..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/create_integration_assistant.tsx +++ /dev/null @@ -1,138 +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 React, { useReducer, useMemo, useEffect } from 'react'; -import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; -import { Header } from './header'; -import { Footer } from './footer'; -import { ConnectorStep, isConnectorStepReady } from './steps/connector_step'; -import { IntegrationStep, isIntegrationStepReady } from './steps/integration_step'; -import { DataStreamStep, isDataStreamStepReady } from './steps/data_stream_step'; -import { ReviewStep, isReviewStepReady } from './steps/review_step'; -import { CelInputStep, isCelInputStepReady } from './steps/cel_input_step'; -import { ReviewCelStep, isCelReviewStepReady } from './steps/review_cel_step'; -import { DeployStep } from './steps/deploy_step'; -import { reducer, initialState, ActionsProvider, type Actions } from './state'; -import { useTelemetry } from '../telemetry'; -import { ExperimentalFeaturesService } from '../../../services'; - -export const CreateIntegrationAssistant = React.memo(() => { - const [state, dispatch] = useReducer(reducer, initialState); - - const { generateCel: isGenerateCelEnabled } = ExperimentalFeaturesService.get(); - - const telemetry = useTelemetry(); - useEffect(() => { - telemetry.reportAssistantOpen(); - }, [telemetry]); - - const actions = useMemo<Actions>( - () => ({ - setStep: (payload) => { - dispatch({ type: 'SET_STEP', payload }); - }, - setConnector: (payload) => { - dispatch({ type: 'SET_CONNECTOR', payload }); - }, - setIntegrationSettings: (payload) => { - dispatch({ type: 'SET_INTEGRATION_SETTINGS', payload }); - }, - setIsGenerating: (payload) => { - dispatch({ type: 'SET_IS_GENERATING', payload }); - }, - setHasCelInput: (payload) => { - dispatch({ type: 'SET_HAS_CEL_INPUT', payload }); - }, - setResult: (payload) => { - dispatch({ type: 'SET_GENERATED_RESULT', payload }); - }, - setCelInputResult: (payload) => { - dispatch({ type: 'SET_CEL_INPUT_RESULT', payload }); - }, - }), - [] - ); - - const isNextStepEnabled = useMemo(() => { - if (state.step === 1) { - return isConnectorStepReady(state); - } else if (state.step === 2) { - return isIntegrationStepReady(state); - } else if (state.step === 3) { - return isDataStreamStepReady(state); - } else if (state.step === 4) { - return isReviewStepReady(state); - } else if (isGenerateCelEnabled && state.step === 5) { - return isCelInputStepReady(state); - } else if (isGenerateCelEnabled && state.step === 6) { - return isCelReviewStepReady(state); - } - return false; - }, [state, isGenerateCelEnabled]); - - return ( - <ActionsProvider value={actions}> - <KibanaPageTemplate> - <Header currentStep={state.step} isGenerating={state.isGenerating} /> - <KibanaPageTemplate.Section grow paddingSize="l"> - {state.step === 1 && <ConnectorStep connector={state.connector} />} - {state.step === 2 && <IntegrationStep integrationSettings={state.integrationSettings} />} - {state.step === 3 && ( - <DataStreamStep - integrationSettings={state.integrationSettings} - connector={state.connector} - isGenerating={state.isGenerating} - /> - )} - {state.step === 4 && ( - <ReviewStep - integrationSettings={state.integrationSettings} - isGenerating={state.isGenerating} - result={state.result} - /> - )} - {state.step === 5 && - (isGenerateCelEnabled && state.hasCelInput ? ( - <CelInputStep - integrationSettings={state.integrationSettings} - connector={state.connector} - isGenerating={state.isGenerating} - /> - ) : ( - <DeployStep - integrationSettings={state.integrationSettings} - result={state.result} - connector={state.connector} - /> - ))} - - {isGenerateCelEnabled && state.celInputResult && state.step === 6 && ( - <ReviewCelStep - isGenerating={state.isGenerating} - celInputResult={state.celInputResult} - /> - )} - {isGenerateCelEnabled && state.step === 7 && ( - <DeployStep - integrationSettings={state.integrationSettings} - result={state.result} - celInputResult={state.celInputResult} - connector={state.connector} - /> - )} - </KibanaPageTemplate.Section> - <Footer - currentStep={state.step} - isGenerating={state.isGenerating} - hasCelInput={state.hasCelInput} - isNextStepEnabled={isNextStepEnabled} - /> - </KibanaPageTemplate> - </ActionsProvider> - ); -}); -CreateIntegrationAssistant.displayName = 'CreateIntegrationAssistant'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.test.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.test.tsx deleted file mode 100644 index 1ca79210bb19f..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.test.tsx +++ /dev/null @@ -1,294 +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 React from 'react'; -import { render, act, type RenderResult } from '@testing-library/react'; -import { TestProvider } from '../../../../mocks/test_provider'; -import { Footer } from './footer'; -import { ActionsProvider } from '../state'; -import { mockActions } from '../mocks/state'; -import { mockReportEvent } from '../../../../services/telemetry/mocks/service'; -import { TelemetryEventType } from '../../../../services/telemetry/types'; -import { ExperimentalFeaturesService } from '../../../../services'; - -const mockNavigate = jest.fn(); -jest.mock('../../../../common/hooks/use_navigate', () => ({ - ...jest.requireActual('../../../../common/hooks/use_navigate'), - useNavigate: () => mockNavigate, -})); - -jest.mock('../../../../services'); -const mockedExperimentalFeaturesService = jest.mocked(ExperimentalFeaturesService); - -const wrapper: React.FC<React.PropsWithChildren<{}>> = ({ children }) => ( - <TestProvider> - <ActionsProvider value={mockActions}>{children}</ActionsProvider> - </TestProvider> -); - -describe('Footer', () => { - beforeEach(() => { - jest.clearAllMocks(); - - mockedExperimentalFeaturesService.get.mockReturnValue({ - generateCel: false, - } as never); - }); - - describe('when rendered', () => { - let result: RenderResult; - beforeEach(() => { - result = render( - <Footer currentStep={1} isGenerating={false} hasCelInput={false} isNextStepEnabled />, - { - wrapper, - } - ); - }); - it('should render footer buttons component', () => { - expect(result.queryByTestId('buttonsFooter')).toBeInTheDocument(); - }); - - it('should render cancel button', () => { - expect(result.queryByTestId('buttonsFooter-cancelButton')).toBeInTheDocument(); - }); - - it('should render back button', () => { - expect(result.queryByTestId('buttonsFooter-backButton')).toBeInTheDocument(); - }); - - it('should render next button', () => { - expect(result.queryByTestId('buttonsFooter-nextButton')).toBeInTheDocument(); - }); - }); - - describe('when step is 1', () => { - let result: RenderResult; - beforeEach(() => { - result = render( - <Footer currentStep={1} isGenerating={false} hasCelInput={false} isNextStepEnabled />, - { - wrapper, - } - ); - }); - - describe('when next button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-nextButton').click(); - }); - }); - - it('should set step 2', () => { - expect(mockActions.setStep).toHaveBeenCalledWith(2); - }); - - it('should report telemetry', () => { - expect(mockReportEvent).toHaveBeenCalledWith( - TelemetryEventType.IntegrationAssistantStepComplete, - { - sessionId: expect.any(String), - step: 1, - stepName: 'Connector Step', - durationMs: expect.any(Number), - sessionElapsedTime: expect.any(Number), - } - ); - }); - }); - - describe('when back button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-backButton').click(); - }); - }); - - it('should navigate to landing', () => { - expect(mockNavigate).toHaveBeenCalledWith('landing'); - }); - }); - }); - - describe('when step is 2', () => { - let result: RenderResult; - beforeEach(() => { - result = render( - <Footer currentStep={2} isGenerating={false} hasCelInput={false} isNextStepEnabled />, - { - wrapper, - } - ); - }); - - describe('when next button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-nextButton').click(); - }); - }); - - it('should set step 3', () => { - expect(mockActions.setStep).toHaveBeenCalledWith(3); - }); - - it('should report telemetry', () => { - expect(mockReportEvent).toHaveBeenCalledWith( - TelemetryEventType.IntegrationAssistantStepComplete, - { - sessionId: expect.any(String), - step: 2, - stepName: 'Integration Step', - durationMs: expect.any(Number), - sessionElapsedTime: expect.any(Number), - } - ); - }); - }); - - describe('when back button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-backButton').click(); - }); - }); - - it('should set step 1', () => { - expect(mockActions.setStep).toHaveBeenCalledWith(1); - }); - }); - }); - - describe('when step is 3', () => { - describe('when it is not generating', () => { - let result: RenderResult; - beforeEach(() => { - result = render( - <Footer currentStep={3} isGenerating={false} hasCelInput={false} isNextStepEnabled />, - { - wrapper, - } - ); - }); - - describe('when next button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-nextButton').click(); - }); - }); - - it('should set step 4', () => { - expect(mockActions.setIsGenerating).toHaveBeenCalledWith(true); - }); - - it('should report telemetry', () => { - expect(mockReportEvent).toHaveBeenCalledWith( - TelemetryEventType.IntegrationAssistantStepComplete, - { - sessionId: expect.any(String), - step: 3, - stepName: 'DataStream Step', - durationMs: expect.any(Number), - sessionElapsedTime: expect.any(Number), - } - ); - }); - }); - - describe('when back button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-backButton').click(); - }); - }); - - it('should set step 2', () => { - expect(mockActions.setStep).toHaveBeenCalledWith(2); - }); - }); - }); - - describe('when it is generating', () => { - let result: RenderResult; - beforeEach(() => { - result = render( - <Footer currentStep={3} isGenerating={true} hasCelInput={false} isNextStepEnabled />, - { - wrapper, - } - ); - }); - - it('should render the loader', () => { - expect(result.queryByTestId('generatingLoader')).toBeInTheDocument(); - }); - }); - }); - - describe('when step is 4', () => { - let result: RenderResult; - beforeEach(() => { - result = render( - <Footer currentStep={4} isGenerating={false} hasCelInput={false} isNextStepEnabled />, - { - wrapper, - } - ); - }); - - describe('when next button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-nextButton').click(); - }); - }); - - it('should set step 5', () => { - expect(mockActions.setStep).toHaveBeenCalledWith(5); - }); - - it('should report telemetry', () => { - expect(mockReportEvent).toHaveBeenCalledWith( - TelemetryEventType.IntegrationAssistantStepComplete, - { - sessionId: expect.any(String), - step: 4, - stepName: 'Review Step', - durationMs: expect.any(Number), - sessionElapsedTime: expect.any(Number), - } - ); - }); - }); - - describe('when back button is clicked', () => { - beforeEach(() => { - act(() => { - result.getByTestId('buttonsFooter-backButton').click(); - }); - }); - - it('should set step 3', () => { - expect(mockActions.setStep).toHaveBeenCalledWith(3); - }); - }); - }); - - describe('when next step is disabled', () => { - let result: RenderResult; - beforeEach(() => { - result = render(<Footer currentStep={1} isGenerating={false} hasCelInput={false} />, { - wrapper, - }); - }); - it('should render next button disabled', () => { - expect(result.queryByTestId('buttonsFooter-nextButton')).toBeDisabled(); - }); - }); -}); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.tsx deleted file mode 100644 index 839d751e6f380..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/footer/footer.tsx +++ /dev/null @@ -1,105 +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 { EuiLoadingSpinner } from '@elastic/eui'; -import React, { useCallback, useMemo } from 'react'; -import { ButtonsFooter } from '../../../../common/components/buttons_footer'; -import { useNavigate, Page } from '../../../../common/hooks/use_navigate'; -import { useTelemetry } from '../../telemetry'; -import { useActions, type State } from '../state'; -import * as i18n from './translations'; -import { ExperimentalFeaturesService } from '../../../../services'; - -// Generation button for Step 3 -const AnalyzeButtonText = React.memo<{ isGenerating: boolean }>(({ isGenerating }) => { - if (!isGenerating) { - return <>{i18n.ANALYZE_LOGS}</>; - } - return ( - <> - <EuiLoadingSpinner size="s" data-test-subj="generatingLoader" /> - {i18n.LOADING} - </> - ); -}); -AnalyzeButtonText.displayName = 'AnalyzeButtonText'; - -// Generation button for Step 5 -const AnalyzeCelButtonText = React.memo<{ isGenerating: boolean }>(({ isGenerating }) => { - if (!isGenerating) { - return <>{i18n.ANALYZE_CEL}</>; - } - return ( - <> - <EuiLoadingSpinner size="s" data-test-subj="generatingLoader" /> - {i18n.LOADING} - </> - ); -}); -AnalyzeCelButtonText.displayName = 'AnalyzeCelButtonText'; - -interface FooterProps { - currentStep: State['step']; - isGenerating: State['isGenerating']; - hasCelInput: State['hasCelInput']; - isNextStepEnabled?: boolean; -} - -export const Footer = React.memo<FooterProps>( - ({ currentStep, isGenerating, hasCelInput, isNextStepEnabled = false }) => { - const telemetry = useTelemetry(); - const { setStep, setIsGenerating } = useActions(); - const navigate = useNavigate(); - - const { generateCel: isGenerateCelEnabled } = ExperimentalFeaturesService.get(); - - const onBack = useCallback(() => { - if (currentStep === 1) { - navigate(Page.landing); - } else { - setStep(currentStep - 1); - } - }, [currentStep, navigate, setStep]); - - const onNext = useCallback(() => { - telemetry.reportAssistantStepComplete({ step: currentStep }); - if (currentStep === 3 || currentStep === 5) { - setIsGenerating(true); - } else { - setStep(currentStep + 1); - } - }, [currentStep, setIsGenerating, setStep, telemetry]); - - const nextButtonText = useMemo(() => { - if (currentStep === 3) { - return <AnalyzeButtonText isGenerating={isGenerating} />; - } - if (currentStep === 4 && (!isGenerateCelEnabled || !hasCelInput)) { - return i18n.ADD_TO_ELASTIC; - } - if (currentStep === 5 && isGenerateCelEnabled && hasCelInput) { - return <AnalyzeCelButtonText isGenerating={isGenerating} />; - } - if (currentStep === 6 && isGenerateCelEnabled) { - return i18n.ADD_TO_ELASTIC; - } - }, [currentStep, isGenerating, hasCelInput, isGenerateCelEnabled]); - - if (currentStep === 7 || (currentStep === 5 && (!isGenerateCelEnabled || !hasCelInput))) { - return <ButtonsFooter cancelButtonText={i18n.CLOSE} />; - } - return ( - <ButtonsFooter - isNextDisabled={!isNextStepEnabled || isGenerating} - onBack={onBack} - onNext={onNext} - nextButtonText={nextButtonText} - /> - ); - } -); -Footer.displayName = 'Footer'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/mocks/state.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/mocks/state.ts deleted file mode 100644 index c25a78a35416e..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/mocks/state.ts +++ /dev/null @@ -1,438 +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 { Pipeline, Docs, SamplesFormat } from '../../../../../common'; -import type { Actions, State } from '../state'; -import type { AIConnector } from '../types'; - -const result: { pipeline: Pipeline; docs: Docs; samplesFormat: SamplesFormat } = { - pipeline: { - description: 'Pipeline to process my_integration my_data_stream_title logs', - processors: [ - { - set: { - field: 'ecs.version', - tag: 'set_ecs_version', - value: '8.11.0', - }, - }, - { - rename: { - field: 'message', - target_field: 'event.original', - tag: 'rename_message', - ignore_missing: true, - if: 'ctx.event?.original == null', - }, - }, - { - remove: { - field: 'message', - ignore_missing: true, - tag: 'remove_message', - if: 'ctx.event?.original != null', - }, - }, - { - json: { - field: 'event.original', - tag: 'json_original', - target_field: 'my_integration.my_data_stream_title', - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.event', - target_field: 'event.action', - ignore_missing: true, - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.uid', - target_field: 'event.id', - ignore_missing: true, - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.code', - target_field: 'event.code', - ignore_missing: true, - }, - }, - { - date: { - field: 'my_integration.my_data_stream_title.time', - target_field: '@timestamp', - formats: ['ISO8601'], - if: 'ctx.my_integration?.my_data_stream_title?.time != null', - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.user', - target_field: 'user.name', - ignore_missing: true, - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.user_agent', - target_field: 'user_agent.original', - ignore_missing: true, - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.addr.remote', - target_field: 'source.address', - ignore_missing: true, - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.server_hostname', - target_field: 'destination.domain', - ignore_missing: true, - }, - }, - { - rename: { - field: 'my_integration.my_data_stream_title.proto', - target_field: 'network.transport', - ignore_missing: true, - }, - }, - { - script: { - description: 'Drops null/empty values recursively.', - tag: 'script_drop_null_empty_values', - lang: 'painless', - source: - 'boolean dropEmptyFields(Object object) {\n if (object == null || object == "") {\n return true;\n } else if (object instanceof Map) {\n ((Map) object).values().removeIf(value -> dropEmptyFields(value));\n return (((Map) object).size() == 0);\n } else if (object instanceof List) {\n ((List) object).removeIf(value -> dropEmptyFields(value));\n return (((List) object).length == 0);\n }\n return false;\n}\ndropEmptyFields(ctx);\n', - }, - }, - { - geoip: { - field: 'source.ip', - tag: 'geoip_source_ip', - target_field: 'source.geo', - ignore_missing: true, - }, - }, - { - geoip: { - ignore_missing: true, - database_file: 'GeoLite2-ASN.mmdb', - field: 'source.ip', - tag: 'geoip_source_asn', - target_field: 'source.as', - properties: ['asn', 'organization_name'], - }, - }, - { - rename: { - field: 'source.as.asn', - tag: 'rename_source_as_asn', - target_field: 'source.as.number', - ignore_missing: true, - }, - }, - { - rename: { - field: 'source.as.organization_name', - tag: 'rename_source_as_organization_name', - target_field: 'source.as.organization.name', - ignore_missing: true, - }, - }, - { - geoip: { - field: 'destination.ip', - tag: 'geoip_destination_ip', - target_field: 'destination.geo', - ignore_missing: true, - }, - }, - { - geoip: { - database_file: 'GeoLite2-ASN.mmdb', - field: 'destination.ip', - tag: 'geoip_destination_asn', - target_field: 'destination.as', - properties: ['asn', 'organization_name'], - ignore_missing: true, - }, - }, - { - rename: { - field: 'destination.as.asn', - tag: 'rename_destination_as_asn', - target_field: 'destination.as.number', - ignore_missing: true, - }, - }, - { - append: { - field: 'event.type', - value: ['start'], - allow_duplicates: false, - if: "ctx.event?.action == 'user.login'", - }, - }, - { - append: { - field: 'event.category', - value: ['authentication'], - allow_duplicates: false, - if: "ctx.event?.action == 'user.login'", - }, - }, - { - append: { - field: 'event.type', - value: ['start'], - allow_duplicates: false, - if: "ctx.event?.action == 'session.start'", - }, - }, - { - append: { - field: 'event.category', - value: ['session'], - allow_duplicates: false, - if: "ctx.event?.action == 'session.start'", - }, - }, - { - append: { - field: 'event.type', - value: ['info'], - allow_duplicates: false, - if: 'ctx.my_integration?.my_data_stream_title?.mfa_device != null', - }, - }, - { - append: { - field: 'event.category', - value: ['authentication'], - allow_duplicates: false, - if: 'ctx.my_integration?.my_data_stream_title?.mfa_device != null', - }, - }, - { - append: { - field: 'related.ip', - value: ['{{{my_integration.my_data_stream_title.addr.remote}}}'], - if: 'ctx?.my_integration?.my_data_stream_title?.addr?.remote != null', - allow_duplicates: false, - }, - }, - { - append: { - field: 'related.user', - value: ['{{{user.name}}}'], - allow_duplicates: false, - }, - }, - { - append: { - field: 'related.hosts', - value: ['{{{destination.domain}}}'], - if: 'ctx?.destination?.domain != null', - allow_duplicates: false, - }, - }, - { - append: { - field: 'related.hosts', - value: ['{{{my_integration.my_data_stream_title.server_labels.hostname}}}'], - if: 'ctx?.my_integration?.my_data_stream_title?.server_labels?.hostname != null', - allow_duplicates: false, - }, - }, - { - rename: { - field: 'destination.as.organization_name', - tag: 'rename_destination_as_organization_name', - target_field: 'destination.as.organization.name', - ignore_missing: true, - }, - }, - { - remove: { - field: 'event.original', - tag: 'remove_original_event', - if: 'ctx?.tags == null || !(ctx.tags.contains("preserve_original_event"))', - ignore_failure: true, - ignore_missing: true, - }, - }, - ], - on_failure: [ - { - append: { - field: 'error.message', - value: - 'Processor {{{_ingest.on_failure_processor_type}}} with tag {{{_ingest.on_failure_processor_tag}}} in pipeline {{{_ingest.on_failure_pipeline}}} failed with message: {{{_ingest.on_failure_message}}}', - }, - }, - { - set: { - field: 'event.kind', - value: 'pipeline_error', - }, - }, - ], - }, - docs: [ - { - '@timestamp': '2024-02-23T18:56:50.628Z', - ecs: { - version: '8.11.0', - }, - my_integration: { - my_data_stream_title: { - cluster_name: 'teleport.ericbeahan.com', - 'addr.remote': '136.61.214.196:50332', - ei: 0, - method: 'local', - required_private_key_policy: 'none', - success: true, - time: '2024-02-23T18:56:50.628Z', - mfa_device: { - mfa_device_type: 'TOTP', - mfa_device_uuid: 'd07bf388-af49-4ec2-b8a4-c8a9e785b70b', - mfa_device_name: 'otp-device', - }, - }, - }, - related: { - user: ['teleport-admin'], - }, - event: { - action: 'user.login', - code: 'T1000I', - id: 'b675d102-fc25-4f7a-bf5d-96468cc176ea', - type: ['start', 'info'], - category: ['authentication'], - }, - user: { - name: 'teleport-admin', - }, - user_agent: { - original: - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36', - }, - tags: [ - '_geoip_database_unavailable_GeoLite2-City.mmdb', - '_geoip_database_unavailable_GeoLite2-ASN.mmdb', - '_geoip_database_unavailable_GeoLite2-City.mmdb', - '_geoip_database_unavailable_GeoLite2-ASN.mmdb', - ], - }, - { - '@timestamp': '2024-02-23T18:56:57.199Z', - ecs: { - version: '8.11.0', - }, - my_integration: { - my_data_stream_title: { - cluster_name: 'teleport.ericbeahan.com', - 'addr.remote': '136.61.214.196:50339', - ei: 0, - private_key_policy: 'none', - login: 'ec2-user', - server_id: 'face0091-2bf1-43fd-a16a-f1514b4119f4', - sid: '293fda2d-2266-4d4d-b9d1-bd5ea9dd9fc3', - user_kind: 1, - server_labels: { - 'teleport.internal/resource-id': 'dccb2999-9fb8-4169-aded-ec7a1c0a26de', - hostname: 'ip-172-31-8-163.us-east-2.compute.internal', - }, - size: '80:25', - namespace: 'default', - session_recording: 'node', - time: '2024-02-23T18:56:57.199Z', - }, - }, - related: { - user: ['teleport-admin'], - hosts: ['ip-172-31-8-163.us-east-2.compute.internal'], - }, - destination: { - domain: 'ip-172-31-8-163.us-east-2.compute.internal', - }, - event: { - action: 'session.start', - code: 'T2000I', - id: 'fff30583-13be-49e8-b159-32952c6ea34f', - type: ['start'], - category: ['session'], - }, - user: { - name: 'teleport-admin', - }, - network: { - transport: 'ssh', - }, - tags: [ - '_geoip_database_unavailable_GeoLite2-City.mmdb', - '_geoip_database_unavailable_GeoLite2-ASN.mmdb', - '_geoip_database_unavailable_GeoLite2-City.mmdb', - '_geoip_database_unavailable_GeoLite2-ASN.mmdb', - ], - }, - ], - samplesFormat: { name: 'json' }, -}; - -const rawSamples = [ - '{"ei":0,"event":"user.login","uid":"b675d102-fc25-4f7a-bf5d-96468cc176ea","code":"T1000I","time":"2024-02-23T18:56:50.628Z","cluster_name":"teleport.ericbeahan.com","user":"teleport-admin","required_private_key_policy":"none","success":true,"method":"local","mfa_device.mfa_device_name":"otp-device","mfa_device.mfa_device_uuid":"d07bf388-af49-4ec2-b8a4-c8a9e785b70b","mfa_device.mfa_device_type":"TOTP","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36","addr.remote":"136.61.214.196:50332"}', - '{"ei":0,"event":"cert.create","uid":"efd326fc-dd13-4df8-acef-3102c2d717d3","code":"TC000I","time":"2024-02-23T18:56:50.653Z","cluster_name":"teleport.ericbeahan.com","cert_type":"user","identity.user":"teleport-admin","identity.roles":["access","editor"],"identity.logins":["root","ubuntu","ec2-user","-teleport-internal-join"],"identity.expires":"2024-02-24T06:56:50.648137154Z","identity.route_to_cluster":"teleport.ericbeahan.com","identity.traits.aws_role_arns":null,"identity.traits.azure_identities":null,"identity.traits.db_names":null,"identity.traits.db_roles":null,"identity.traits.db_users":null,"identity.traits.gcp_service_accounts":null,"identity.traits.host_user_gid":[""],"identity.traits.host_user_uid":[""],"identity.traits.kubernetes_groups":null,"identity.traits.kubernetes_users":null,"identity.traits.logins":["root","ubuntu","ec2-user"],"identity.traits.windows_logins":null,"identity.teleport_cluster":"teleport.ericbeahan.com","identity.client_ip":"136.61.214.196","identity.prev_identity_expires":"0001-01-01T00:00:00Z","identity.private_key_policy":"none"}', - '{"ei":0,"event":"session.start","uid":"fff30583-13be-49e8-b159-32952c6ea34f","code":"T2000I","time":"2024-02-23T18:56:57.199Z","cluster_name":"teleport.ericbeahan.com","user":"teleport-admin","login":"ec2-user","user_kind":1,"sid":"293fda2d-2266-4d4d-b9d1-bd5ea9dd9fc3","private_key_policy":"none","namespace":"default","server_id":"face0091-2bf1-43fd-a16a-f1514b4119f4","server_hostname":"ip-172-31-8-163.us-east-2.compute.internal","server_labels.hostname":"ip-172-31-8-163.us-east-2.compute.internal","server_labels.teleport.internal/resource-id":"dccb2999-9fb8-4169-aded-ec7a1c0a26de","addr.remote":"136.61.214.196:50339","proto":"ssh","size":"80:25","initial_command":[""],"session_recording":"node"}', -]; -const logo = - 'PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzMyNjlfMjExOTMpIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC41IDExLjk5OTdMNC40MDQgMS42ODQyMUMzLjM4Nzc1IC0wLjAzNzA0MDIgMC43NSAwLjY4NDQ2IDAuNzUgMi42ODMyMVYyMS4zMTYyQzAuNzUgMjMuMzE1IDMuMzg3NzUgMjQuMDM2NSA0LjQwNCAyMi4zMTUyTDEwLjUgMTEuOTk5N1oiIGZpbGw9IiNGMDRFOTgiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy4xMTMzIDEyTDEyLjQzNzYgMTMuMTQ0NUw2LjM0MTU2IDIzLjQ2QzYuMjI2ODEgMjMuNjUzNSA2LjA5NzA2IDIzLjgzMDUgNS45NTgzMSAyNEgxMi44NDAzQzE0LjY1MDggMjQgMTYuMzMzMSAyMy4wNjc3IDE3LjI5MjMgMjEuNTMyNUwyMy4yNTAzIDEySDEzLjExMzNaIiBmaWxsPSIjRkE3NDRFIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuMjkyNCAyLjQ2NzVDMTYuMzMzMiAwLjkzMjI1IDE0LjY1MDkgMCAxMi44Mzk3IDBINS45NTg0NEM2LjA5NjQ0IDAuMTY5NSA2LjIyNjk0IDAuMzQ2NSA2LjM0MDk0IDAuNTRMMTIuNDM2OSAxMC44NTU1TDEzLjExMzQgMTJIMjMuMjQ5N0wxNy4yOTI0IDIuNDY3NVoiIGZpbGw9IiMzNDM3NDEiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8zMjY5XzIxMTkzIj4KPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo='; - -export const mockState: State = { - step: 4, - connector: { - id: 'claudeV3OpusUsWest2', - name: 'Claude 3 Opus US-WEST-2', - actionTypeId: '.bedrock', - config: { - apiUrl: 'https://bedrock-runtime.us-west-2.amazonaws.com', - defaultModel: 'anthropic.claude-3-opus-20240229-v1:0', - }, - } as AIConnector, - integrationSettings: { - title: 'Mocked Integration title', - name: 'mocked_integration', - logo, - description: 'Mocked Integration description', - dataStreamTitle: 'Mocked Data Stream Title', - dataStreamName: 'mocked_datastream_name', - dataStreamDescription: 'Mocked Data Stream Description', - inputTypes: ['filestream'], - logSamples: rawSamples, - }, - isGenerating: false, - hasCelInput: false, - result, -}; - -export const mockActions: Actions = { - setStep: jest.fn(), - setConnector: jest.fn(), - setIntegrationSettings: jest.fn(), - setIsGenerating: jest.fn(), - setHasCelInput: jest.fn(), - setResult: jest.fn(), - setCelInputResult: jest.fn(), -}; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/state.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/state.ts deleted file mode 100644 index 1e7b22128843b..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/state.ts +++ /dev/null @@ -1,91 +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 { createContext, useContext } from 'react'; -import type { Pipeline, Docs, SamplesFormat, CelInput } from '../../../../common'; -import type { AIConnector, IntegrationSettings } from './types'; - -export interface State { - step: number; - connector?: AIConnector; - integrationSettings?: IntegrationSettings; - isGenerating: boolean; - hasCelInput: boolean; - result?: { - pipeline: Pipeline; - docs: Docs; - samplesFormat?: SamplesFormat; - }; - celInputResult?: CelInput; -} - -export const initialState: State = { - step: 1, - connector: undefined, - integrationSettings: undefined, - isGenerating: false, - hasCelInput: false, - result: undefined, -}; - -type Action = - | { type: 'SET_STEP'; payload: State['step'] } - | { type: 'SET_CONNECTOR'; payload: State['connector'] } - | { type: 'SET_INTEGRATION_SETTINGS'; payload: State['integrationSettings'] } - | { type: 'SET_IS_GENERATING'; payload: State['isGenerating'] } - | { type: 'SET_HAS_CEL_INPUT'; payload: State['hasCelInput'] } - | { type: 'SET_GENERATED_RESULT'; payload: State['result'] } - | { type: 'SET_CEL_INPUT_RESULT'; payload: State['celInputResult'] }; - -export const reducer = (state: State, action: Action): State => { - switch (action.type) { - case 'SET_STEP': - return { - ...state, - step: action.payload, - isGenerating: false, - ...(action.payload < state.step && { result: undefined }), // reset the result when we go back - }; - case 'SET_CONNECTOR': - return { ...state, connector: action.payload }; - case 'SET_INTEGRATION_SETTINGS': - return { ...state, integrationSettings: action.payload }; - case 'SET_IS_GENERATING': - return { ...state, isGenerating: action.payload }; - case 'SET_HAS_CEL_INPUT': - return { ...state, hasCelInput: action.payload }; - case 'SET_GENERATED_RESULT': - return { - ...state, - // keep original result as the samplesFormat is not always included in the payload - result: state.result ? { ...state.result, ...action.payload } : action.payload, - }; - case 'SET_CEL_INPUT_RESULT': - return { ...state, celInputResult: action.payload }; - default: - return state; - } -}; - -export interface Actions { - setStep: (payload: State['step']) => void; - setConnector: (payload: State['connector']) => void; - setIntegrationSettings: (payload: State['integrationSettings']) => void; - setIsGenerating: (payload: State['isGenerating']) => void; - setHasCelInput: (payload: State['hasCelInput']) => void; - setResult: (payload: State['result']) => void; - setCelInputResult: (payload: State['celInputResult']) => void; -} - -const ActionsContext = createContext<Actions | undefined>(undefined); -export const ActionsProvider = ActionsContext.Provider; -export const useActions = () => { - const actions = useContext(ActionsContext); - if (!actions) { - throw new Error('useActions must be used within a ActionsProvider'); - } - return actions; -}; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/is_step_ready.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/is_step_ready.ts deleted file mode 100644 index 594f4230164ce..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/cel_input_step/is_step_ready.ts +++ /dev/null @@ -1,17 +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 { State } from '../../state'; - -export const isCelInputStepReady = ({ integrationSettings }: State) => - Boolean( - integrationSettings?.name && - integrationSettings?.dataStreamTitle && - integrationSettings?.dataStreamDescription && - integrationSettings?.dataStreamName && - integrationSettings?.apiDefinition - ); -// TODO add support for not uploading a spec file diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_selector.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_selector.tsx deleted file mode 100644 index 4ea33cc8668e3..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_selector.tsx +++ /dev/null @@ -1,90 +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 React from 'react'; -import { useEuiTheme, EuiBadge, EuiFlexGroup, EuiFlexItem, EuiPanel, EuiRadio } from '@elastic/eui'; -import { noop } from 'lodash/fp'; -import { css } from '@emotion/react'; -import { useKibana } from '../../../../../common/hooks/use_kibana'; -import type { AIConnector } from '../../types'; -import { useActions } from '../../state'; - -const useRowCss = () => { - const { euiTheme } = useEuiTheme(); - return css` - &.euiPanel:hover, - &.euiPanel:focus { - box-shadow: none; - transform: none; - } - &.euiPanel:hover { - background-color: ${euiTheme.colors.lightestShade}; - } - .euiRadio { - color: ${euiTheme.colors.primaryText}; - label.euiRadio__label { - padding-left: ${euiTheme.size.xl} !important; - } - } - `; -}; - -interface ConnectorSelectorProps { - connectors: AIConnector[]; - selectedConnectorId: string | undefined; -} -export const ConnectorSelector = React.memo<ConnectorSelectorProps>( - ({ connectors, selectedConnectorId }) => { - const { - triggersActionsUi: { actionTypeRegistry }, - } = useKibana().services; - const { setConnector } = useActions(); - const rowCss = useRowCss(); - return ( - <EuiFlexGroup - alignItems="stretch" - direction="column" - gutterSize="s" - data-test-subj="connectorSelector" - > - {connectors.map((connector) => ( - <EuiFlexItem key={connector.id}> - <EuiPanel - key={connector.id} - onClick={() => setConnector(connector)} - hasShadow={false} - hasBorder - paddingSize="l" - css={rowCss} - data-test-subj={`connectorSelector-${connector.id}`} - > - <EuiFlexGroup direction="row" alignItems="center" justifyContent="spaceBetween"> - <EuiFlexItem> - <EuiRadio - label={connector.name} - id={connector.id} - checked={selectedConnectorId === connector.id} - onChange={noop} - data-test-subj={`connectorSelectorRadio-${connector.id}${ - selectedConnectorId === connector.id ? '-selected' : '' - }`} - /> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <EuiBadge color="hollow"> - {actionTypeRegistry.get(connector.actionTypeId).actionTypeTitle} - </EuiBadge> - </EuiFlexItem> - </EuiFlexGroup> - </EuiPanel> - </EuiFlexItem> - ))} - </EuiFlexGroup> - ); - } -); -ConnectorSelector.displayName = 'ConnectorSelector'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.tsx deleted file mode 100644 index c2643ffa9e92c..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/connector_step.tsx +++ /dev/null @@ -1,156 +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 React, { useCallback, useEffect, useState } from 'react'; -import { useLoadConnectors } from '@kbn/elastic-assistant'; -import { - EuiFlexGroup, - EuiFlexItem, - EuiLoadingSpinner, - EuiPopover, - EuiLink, - EuiSpacer, - EuiText, - EuiIcon, - useEuiTheme, -} from '@elastic/eui'; -import { - AuthorizationWrapper, - MissingPrivilegesTooltip, -} from '../../../../../common/components/authorization'; -import { useAuthorization } from '../../../../../common/hooks/use_authorization'; -import { useKibana } from '../../../../../common/hooks/use_kibana'; -import { StepContentWrapper } from '../step_content_wrapper'; -import { ConnectorSelector } from './connector_selector'; -import { ConnectorSetup } from './connector_setup'; -import type { AIConnector } from '../../types'; -import { useActions } from '../../state'; -import * as i18n from './translations'; - -/** - * List of allowed action type IDs for the integrations assistant. - */ -const AllowedActionTypeIds = ['.bedrock', '.gen-ai', '.gemini']; - -interface ConnectorStepProps { - connector: AIConnector | undefined; -} -export const ConnectorStep = React.memo<ConnectorStepProps>(({ connector }) => { - const { euiTheme } = useEuiTheme(); - const { http, notifications } = useKibana().services; - const { setConnector } = useActions(); - const [connectors, setConnectors] = useState<AIConnector[]>(); - const { - isLoading, - data: aiConnectors, - refetch: refetchConnectors, - } = useLoadConnectors({ http, toasts: notifications.toasts }); - - useEffect(() => { - if (aiConnectors != null) { - // filter out connectors, this is temporary until we add support for more models - const filteredAiConnectors = aiConnectors.filter(({ actionTypeId }) => - AllowedActionTypeIds.includes(actionTypeId) - ); - setConnectors(filteredAiConnectors); - if (filteredAiConnectors && filteredAiConnectors.length === 1) { - // pre-select the connector if there is only one - setConnector(filteredAiConnectors[0]); - } - } - }, [aiConnectors, setConnector]); - - const onConnectorSaved = useCallback(() => refetchConnectors(), [refetchConnectors]); - - const hasConnectors = !isLoading && connectors?.length; - - return ( - <StepContentWrapper - title={i18n.TITLE} - subtitle={i18n.DESCRIPTION} - right={hasConnectors ? <CreateConnectorPopover onConnectorSaved={onConnectorSaved} /> : null} - > - <EuiFlexGroup direction="column" alignItems="stretch"> - <EuiFlexItem> - {isLoading ? ( - <EuiLoadingSpinner /> - ) : ( - <> - {hasConnectors ? ( - <ConnectorSelector connectors={connectors} selectedConnectorId={connector?.id} /> - ) : ( - <AuthorizationWrapper canCreateConnectors> - <ConnectorSetup - actionTypeIds={AllowedActionTypeIds} - onConnectorSaved={onConnectorSaved} - /> - </AuthorizationWrapper> - )} - </> - )} - </EuiFlexItem> - </EuiFlexGroup> - <EuiSpacer size="m" /> - <EuiText size="s" color="subdued"> - <EuiFlexGroup direction="row" gutterSize="xs" alignItems="flexStart"> - <EuiFlexItem grow={false} css={{ margin: euiTheme.size.xxs }}> - <EuiIcon type="iInCircle" /> - </EuiFlexItem> - <EuiFlexItem>{i18n.SUPPORTED_MODELS_INFO}</EuiFlexItem> - </EuiFlexGroup> - </EuiText> - </StepContentWrapper> - ); -}); -ConnectorStep.displayName = 'ConnectorStep'; - -interface CreateConnectorPopoverProps { - onConnectorSaved: () => void; -} -const CreateConnectorPopover = React.memo<CreateConnectorPopoverProps>(({ onConnectorSaved }) => { - const { canCreateConnectors } = useAuthorization(); - const [isOpen, setIsPopoverOpen] = useState(false); - const openPopover = useCallback(() => setIsPopoverOpen(true), []); - const closePopover = useCallback(() => setIsPopoverOpen(false), []); - - const onConnectorSavedAndClose = useCallback(() => { - onConnectorSaved(); - closePopover(); - }, [onConnectorSaved, closePopover]); - - if (!canCreateConnectors) { - return ( - <MissingPrivilegesTooltip canCreateConnectors> - <EuiLink data-test-subj="createConnectorPopoverButtonDisabled" disabled> - {i18n.CREATE_CONNECTOR} - </EuiLink> - </MissingPrivilegesTooltip> - ); - } - return ( - <EuiPopover - button={ - <EuiText size="s"> - <EuiLink data-test-subj="createConnectorPopoverButton" onClick={openPopover}> - {i18n.CREATE_CONNECTOR} - </EuiLink> - </EuiText> - } - isOpen={isOpen} - closePopover={closePopover} - data-test-subj="createConnectorPopover" - > - <ConnectorSetup - actionTypeIds={AllowedActionTypeIds} - onConnectorSaved={onConnectorSavedAndClose} - onClose={closePopover} - compressed - /> - </EuiPopover> - ); -}); -CreateConnectorPopover.displayName = 'CreateConnectorPopover'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/is_step_ready.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/is_step_ready.ts deleted file mode 100644 index 5b425b0940094..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/connector_step/is_step_ready.ts +++ /dev/null @@ -1,10 +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 { State } from '../../state'; - -export const isConnectorStepReady = ({ connector }: State) => connector != null; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/is_step_ready.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/is_step_ready.ts deleted file mode 100644 index 4a40334a72ab2..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/data_stream_step/is_step_ready.ts +++ /dev/null @@ -1,16 +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 { State } from '../../state'; - -export const isDataStreamStepReady = ({ integrationSettings }: State) => - Boolean( - integrationSettings?.name && - integrationSettings?.dataStreamTitle && - integrationSettings?.dataStreamDescription && - integrationSettings?.dataStreamName && - integrationSettings?.logSamples - ); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/is_step_ready.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/is_step_ready.ts deleted file mode 100644 index 80ef605c981b0..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/integration_step/is_step_ready.ts +++ /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 type { State } from '../../state'; - -export const isIntegrationStepReady = ({ integrationSettings }: State) => - Boolean(integrationSettings?.title && integrationSettings?.description); diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/is_step_ready.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/is_step_ready.ts deleted file mode 100644 index 166c40e8e2614..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/is_step_ready.ts +++ /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 type { State } from '../../state'; - -export const isCelReviewStepReady = ({ isGenerating, celInputResult }: State) => - isGenerating === false && celInputResult != null; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/review_cel_step.tsx b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/review_cel_step.tsx deleted file mode 100644 index a40fec082894e..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_cel_step/review_cel_step.tsx +++ /dev/null @@ -1,34 +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 { EuiLoadingSpinner, EuiPanel } from '@elastic/eui'; -import React from 'react'; -import type { State } from '../../state'; -import { StepContentWrapper } from '../step_content_wrapper'; -import * as i18n from './translations'; -import { CelConfigResults } from './cel_config_results'; - -interface ReviewCelStepProps { - celInputResult: State['celInputResult']; - isGenerating: State['isGenerating']; -} - -export const ReviewCelStep = React.memo<ReviewCelStepProps>(({ isGenerating, celInputResult }) => { - return ( - <StepContentWrapper title={i18n.TITLE} subtitle={i18n.DESCRIPTION}> - <EuiPanel hasShadow={false} hasBorder data-test-subj="reviewCelStep"> - {isGenerating ? ( - <EuiLoadingSpinner size="l" /> - ) : ( - <> - <CelConfigResults celInputResult={celInputResult} /> - </> - )} - </EuiPanel> - </StepContentWrapper> - ); -}); -ReviewCelStep.displayName = 'ReviewCelStep'; diff --git a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/is_step_ready.ts b/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/is_step_ready.ts deleted file mode 100644 index b03215c5e8255..0000000000000 --- a/x-pack/plugins/integration_assistant/public/components/create_integration/create_integration_assistant/steps/review_step/is_step_ready.ts +++ /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 type { State } from '../../state'; - -export const isReviewStepReady = ({ isGenerating, result }: State) => - isGenerating === false && result != null; diff --git a/x-pack/plugins/integration_assistant/server/config.ts b/x-pack/plugins/integration_assistant/server/config.ts deleted file mode 100644 index 04ad9f96b517b..0000000000000 --- a/x-pack/plugins/integration_assistant/server/config.ts +++ /dev/null @@ -1,36 +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 { schema, type TypeOf } from '@kbn/config-schema'; -import type { PluginConfigDescriptor } from '@kbn/core/server'; - -export const configSchema = schema.object({ - enabled: schema.boolean({ defaultValue: true }), - /** - * For internal use. A list of string values (comma delimited) that will enable experimental - * type of functionality that is not yet released. Valid values for this settings need to - * be defined in: - * `x-pack/plugins/integration_assistant/common/experimental_features.ts` - * under the `allowedExperimentalValues` object - * - * @example - * xpack.integration_assistant.enableExperimental: - * - someCrazyFeature - * - someEvenCrazierFeature - */ - enableExperimental: schema.arrayOf(schema.string(), { - defaultValue: () => [], - }), -}); -export type IntegrationAssistantConfigType = TypeOf<typeof configSchema>; - -export const config: PluginConfigDescriptor<IntegrationAssistantConfigType> = { - exposeToBrowser: { - enableExperimental: true, - }, - schema: configSchema, -}; diff --git a/x-pack/plugins/integration_assistant/tsconfig.json b/x-pack/plugins/integration_assistant/tsconfig.json deleted file mode 100644 index 9bd6ddaae8415..0000000000000 --- a/x-pack/plugins/integration_assistant/tsconfig.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "index.ts", - "public/**/*", - "server/**/*.ts", - "common/**/*.ts", - "scripts/**/*.ts", - "__jest__/**/*", - "../../typings/**/*" - ], - "exclude": ["target/**/*"], - "kbn_references": [ - "@kbn/core", - "@kbn/config-schema", - "@kbn/langchain", - "@kbn/core-elasticsearch-server", - "@kbn/actions-plugin", - "@kbn/data-plugin", - "@kbn/i18n-react", - "@kbn/shared-ux-page-kibana-template", - "@kbn/i18n", - "@kbn/core-http-browser", - "@kbn/elastic-assistant", - "@kbn/kibana-react-plugin", - "@kbn/code-editor", - "@kbn/monaco", - "@kbn/triggers-actions-ui-plugin", - "@kbn/shared-ux-router", - "@kbn/zod-helpers", - "@kbn/stack-connectors-plugin", - "@kbn/core-analytics-browser", - "@kbn/logging-mocks", - "@kbn/licensing-plugin", - "@kbn/core-http-request-handler-context-server", - "@kbn/core-http-router-server-mocks", - "@kbn/core-http-server", - "@kbn/kibana-utils-plugin", - "@kbn/utils", - "@kbn/zod", - "@kbn/tooling-log" - ] -} diff --git a/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx b/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx index f1ccacc37db53..f287e4426eaaa 100644 --- a/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx +++ b/x-pack/plugins/lens/public/app_plugin/save_modal_container.tsx @@ -52,6 +52,7 @@ export type SaveModalContainerProps = { | 'analytics' | 'i18n' | 'theme' + | 'userProfile' | 'stateTransfer' | 'savedObjectStore' >; @@ -238,6 +239,7 @@ export type SaveVisualizationProps = Simplify< | 'analytics' | 'i18n' | 'theme' + | 'userProfile' | 'notifications' | 'stateTransfer' | 'attributeService' diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_actions/layer_actions.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_actions/layer_actions.tsx index 2ab2c8e78890c..9140c90f67d60 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_actions/layer_actions.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_actions/layer_actions.tsx @@ -59,7 +59,7 @@ export const getSharedActions = ({ isTextBasedLanguage?: boolean; hasLayerSettings: boolean; openLayerSettings: () => void; - core: Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme'>; + core: Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'userProfile'>; customRemoveModalText?: { title?: string; description?: string }; }) => [ getOpenLayerSettingsAction({ diff --git a/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.test.ts b/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.test.ts index 8719c54f6f1dd..d677e052ae451 100644 --- a/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.test.ts +++ b/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.test.ts @@ -8,11 +8,10 @@ import { getColorMappingTelemetryEvents } from './color_telemetry_helpers'; import { ColorMapping, - EUIAmsterdamColorBlindPalette, - ElasticBrandPalette, DEFAULT_COLOR_MAPPING_CONFIG, DEFAULT_OTHER_ASSIGNMENT_INDEX, } from '@kbn/coloring'; +import { KbnPalette } from '@kbn/palettes'; import { faker } from '@faker-js/faker'; const exampleAssignment = ( @@ -24,7 +23,7 @@ const exampleAssignment = ( type === 'categorical' ? { type: 'categorical', - paletteId: ElasticBrandPalette.id, + paletteId: KbnPalette.ElasticClassic, colorIndex: 0, } : { @@ -57,13 +56,13 @@ const MANUAL_COLOR_MAPPING_CONFIG: ColorMapping.Config = { }, color: { type: 'categorical', - paletteId: ElasticBrandPalette.id, + paletteId: KbnPalette.ElasticClassic, colorIndex: 2, }, touched: true, }, ], - paletteId: ElasticBrandPalette.id, + paletteId: KbnPalette.ElasticClassic, colorMode: { type: 'categorical', }, @@ -74,7 +73,7 @@ const specialAssignmentsPalette: ColorMapping.Config['specialAssignments'] = [ ...DEFAULT_COLOR_MAPPING_CONFIG.specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX], color: { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Kibana7, colorIndex: 0, }, }, @@ -112,7 +111,7 @@ describe('color_telemetry_helpers', () => { }); it('settings (default): unassigned terms loop, default palette returns correct events', () => { expect(getColorMappingTelemetryEvents(DEFAULT_COLOR_MAPPING_CONFIG)).toEqual([ - 'color_mapping_palette_eui_amsterdam_color_blind', + 'color_mapping_palette_default', 'color_mapping_unassigned_terms_loop', ]); }); @@ -126,7 +125,7 @@ describe('color_telemetry_helpers', () => { steps: [ { type: 'categorical', - paletteId: EUIAmsterdamColorBlindPalette.id, + paletteId: KbnPalette.Kibana7, colorIndex: 0, touched: false, }, diff --git a/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.ts b/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.ts index 049caea8fb12e..4f956e54c47f6 100644 --- a/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.ts +++ b/x-pack/plugins/lens/public/lens_ui_telemetry/color_telemetry_helpers.ts @@ -5,8 +5,9 @@ * 2.0. */ -import { ColorMapping, NeutralPalette, DEFAULT_OTHER_ASSIGNMENT_INDEX } from '@kbn/coloring'; +import { ColorMapping, DEFAULT_OTHER_ASSIGNMENT_INDEX } from '@kbn/coloring'; import { isEqual } from 'lodash'; +import { KbnPalette } from '@kbn/palettes'; import { nonNullable } from '../utils'; const COLOR_MAPPING_PREFIX = 'color_mapping_'; @@ -83,8 +84,8 @@ const getUnassignedTermsType = ( : specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX]?.color.type === 'loop' ? 'loop' : specialAssignments[DEFAULT_OTHER_ASSIGNMENT_INDEX]?.color.paletteId === - NeutralPalette.id - ? NeutralPalette.id + KbnPalette.Neutral + ? KbnPalette.Neutral : 'palette' }` : undefined; diff --git a/x-pack/plugins/lens/public/react_embeddable/data_loader.ts b/x-pack/plugins/lens/public/react_embeddable/data_loader.ts index 64b7ca4501b08..ac69b79b42230 100644 --- a/x-pack/plugins/lens/public/react_embeddable/data_loader.ts +++ b/x-pack/plugins/lens/public/react_embeddable/data_loader.ts @@ -6,8 +6,7 @@ */ import type { DefaultInspectorAdapters } from '@kbn/expressions-plugin/common'; -import { fetch$, type FetchContext } from '@kbn/presentation-publishing'; -import { apiPublishesSearchSession } from '@kbn/presentation-publishing/interfaces/fetch/publishes_search_session'; +import { apiPublishesUnifiedSearch, fetch$ } from '@kbn/presentation-publishing'; import { type KibanaExecutionContext } from '@kbn/core/public'; import { BehaviorSubject, @@ -21,6 +20,7 @@ import { map, } from 'rxjs'; import fastIsEqual from 'fast-deep-equal'; +import { pick } from 'lodash'; import { getEditPath } from '../../common/constants'; import type { GetStateType, @@ -54,6 +54,24 @@ type ReloadReason = | 'viewMode' | 'searchContext'; +function getSearchContext(parentApi: unknown) { + const unifiedSearch$ = apiPublishesUnifiedSearch(parentApi) + ? pick(parentApi, 'filters$', 'query$', 'timeslice$', 'timeRange$') + : { + filters$: new BehaviorSubject(undefined), + query$: new BehaviorSubject(undefined), + timeslice$: new BehaviorSubject(undefined), + timeRange$: new BehaviorSubject(undefined), + }; + + return { + filters: unifiedSearch$.filters$.getValue(), + query: unifiedSearch$.query$.getValue(), + timeRange: unifiedSearch$.timeRange$.getValue(), + timeslice: unifiedSearch$.timeslice$?.getValue(), + }; +} + /** * The function computes the expression used to render the panel and produces the necessary props * for the ExpressionWrapper component, binding any outer context to them. @@ -112,16 +130,6 @@ export function loadEmbeddableData( } }; - const unifiedSearch$ = new BehaviorSubject< - Pick<FetchContext, 'query' | 'filters' | 'timeRange' | 'timeslice' | 'searchSessionId'> - >({ - query: undefined, - filters: undefined, - timeRange: undefined, - timeslice: undefined, - searchSessionId: undefined, - }); - async function reload( // make reload easier to debug sourceId: ReloadReason @@ -142,8 +150,6 @@ export function loadEmbeddableData( const currentState = getState(); - const { searchSessionId, ...unifiedSearch } = unifiedSearch$.getValue(); - const getExecutionContext = () => { const parentContext = getParentContext(parentApi); const lastState = getState(); @@ -198,7 +204,7 @@ export function loadEmbeddableData( const searchContext = getMergedSearchContext( currentState, - unifiedSearch, + getSearchContext(parentApi), api.timeRange$, parentApi, services @@ -216,7 +222,7 @@ export function loadEmbeddableData( }, renderMode: getRenderMode(parentApi), services, - searchSessionId, + searchSessionId: api.searchSessionId$.getValue(), abortController: internalApi.expressionAbortController$.getValue(), getExecutionContext, logError: getLogError(getExecutionContext), @@ -259,20 +265,8 @@ export function loadEmbeddableData( } const mergedSubscriptions = merge( - // on data change from the parentApi, reload - fetch$(api).pipe( - tap((data) => { - const searchSessionId = apiPublishesSearchSession(parentApi) ? data.searchSessionId : ''; - unifiedSearch$.next({ - query: data.query, - filters: data.filters, - timeRange: data.timeRange, - timeslice: data.timeslice, - searchSessionId, - }); - }), - map(() => 'searchContext' as ReloadReason) - ), + // on search context change, reload + fetch$(api).pipe(map(() => 'searchContext' as ReloadReason)), // On state change, reload // this is used to refresh the chart on inline editing // just make sure to avoid to rerender if there's no substantial change diff --git a/x-pack/plugins/lens/public/react_embeddable/mocks/index.tsx b/x-pack/plugins/lens/public/react_embeddable/mocks/index.tsx index ca8f489a711aa..30a0920f9557d 100644 --- a/x-pack/plugins/lens/public/react_embeddable/mocks/index.tsx +++ b/x-pack/plugins/lens/public/react_embeddable/mocks/index.tsx @@ -116,6 +116,7 @@ const LensApiMock: LensApi = { disabledActionIds: new BehaviorSubject<string[] | undefined>(undefined), setDisabledActionIds: jest.fn(), rendered$: new BehaviorSubject<boolean>(false), + searchSessionId$: new BehaviorSubject<string | undefined>(undefined), }; const LensSerializedStateMock: LensSerializedState = createEmptyLensState( diff --git a/x-pack/plugins/lens/public/react_embeddable/renderer/lens_custom_renderer_component.tsx b/x-pack/plugins/lens/public/react_embeddable/renderer/lens_custom_renderer_component.tsx index eab54a7fa9f9d..70d59fc7486b2 100644 --- a/x-pack/plugins/lens/public/react_embeddable/renderer/lens_custom_renderer_component.tsx +++ b/x-pack/plugins/lens/public/react_embeddable/renderer/lens_custom_renderer_component.tsx @@ -59,6 +59,7 @@ export function LensRenderer({ filters, timeRange, disabledActions, + searchSessionId, hidePanelTitles, ...props }: LensRendererProps) { @@ -72,6 +73,7 @@ export function LensRenderer({ }, []); const disabledActionIds$ = useObservableVariable(disabledActions); const viewMode$ = useObservableVariable(viewMode); + const searchSessionId$ = useObservableVariable(searchSessionId); const hidePanelTitles$ = useObservableVariable(hidePanelTitles); // Lens API will be set once, but when set trigger a reflow to adopt the latest attributes @@ -136,6 +138,7 @@ export function LensRenderer({ ...props, // forward the unified search context ...searchApi, + searchSessionId$, disabledActionIds: disabledActionIds$, setDisabledActionIds: (ids: string[] | undefined) => disabledActionIds$.next(ids), viewMode: viewMode$, diff --git a/x-pack/plugins/lens/public/react_embeddable/types.ts b/x-pack/plugins/lens/public/react_embeddable/types.ts index c860c543570c1..1a4bf45b11f17 100644 --- a/x-pack/plugins/lens/public/react_embeddable/types.ts +++ b/x-pack/plugins/lens/public/react_embeddable/types.ts @@ -65,6 +65,7 @@ import type { AllowedPartitionOverrides } from '@kbn/expression-partition-vis-pl import type { AllowedXYOverrides } from '@kbn/expression-xy-plugin/common'; import type { Action } from '@kbn/ui-actions-plugin/public'; import { PresentationContainer } from '@kbn/presentation-containers'; +import { PublishesSearchSession } from '@kbn/presentation-publishing/interfaces/fetch/publishes_search_session'; import type { LegacyMetricState } from '../../common'; import type { LensDocument } from '../persistence'; import type { LensInspector } from '../lens_inspector_service'; @@ -364,6 +365,8 @@ export type LensApi = Simplify< PublishesBlockingError & // This is used by dashboard/container to show filters/queries on the panel PublishesUnifiedSearch & + // Forward the search session id + PublishesSearchSession & // Let the container know the loading state PublishesDataLoading & // Let the container know when the rendering has completed rendering diff --git a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.test.ts b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.test.ts index 139c6ced456bc..6ddbaff8d7b60 100644 --- a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.test.ts +++ b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.test.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { getKbnPalettes } from '@kbn/palettes'; import { getColorAccessorFn } from './color_mapping_accessor'; jest.mock('@kbn/coloring', () => ({ @@ -15,8 +16,10 @@ jest.mock('@kbn/coloring', () => ({ })); describe('getColorAccessorFn', () => { + const palettes = getKbnPalettes({ name: 'amsterdam', darkMode: false }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any - const getColorAccessor = getColorAccessorFn('{}', {} as any, false); + const getColorAccessor = getColorAccessorFn(palettes, '{}', {} as any, false); it('should return null for null values', () => { expect(getColorAccessor(null)).toBe(null); diff --git a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.ts b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.ts index 116b21bb2245d..7e3d076744d64 100644 --- a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.ts +++ b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_accessor.ts @@ -5,29 +5,20 @@ * 2.0. */ -import { - AVAILABLE_PALETTES, - getColorFactory, - getPalette, - NeutralPalette, - ColorMappingInputCategoricalData, -} from '@kbn/coloring'; +import { getColorFactory, ColorMappingInputCategoricalData } from '@kbn/coloring'; +import { KbnPalettes } from '@kbn/palettes'; import { CellColorFn } from './get_cell_color_fn'; /** * Return a color accessor function for XY charts depending on the split accessors received. */ export function getColorAccessorFn( + palettes: KbnPalettes, colorMapping: string, data: ColorMappingInputCategoricalData, isDarkMode: boolean ): CellColorFn { - const getColor = getColorFactory( - JSON.parse(colorMapping), - getPalette(AVAILABLE_PALETTES, NeutralPalette), - isDarkMode, - data - ); + const getColor = getColorFactory(JSON.parse(colorMapping), palettes, isDarkMode, data); return (value) => { if (value === undefined || value === null) return null; diff --git a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_terms.tsx b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_terms.tsx index 1eec5a4093275..ffc23d68bc54a 100644 --- a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_terms.tsx +++ b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_terms.tsx @@ -21,21 +21,22 @@ import { DEFAULT_COLOR_MAPPING_CONFIG, CategoricalColorMapping, SPECIAL_TOKENS_STRING_CONVERSION, - AVAILABLE_PALETTES, PaletteOutput, PaletteRegistry, CustomPaletteParams, } from '@kbn/coloring'; import { i18n } from '@kbn/i18n'; +import { KbnPalettes } from '@kbn/palettes'; import { trackUiCounterEvents } from '../../lens_ui_telemetry'; import { PalettePicker } from '../palette_picker'; import { PalettePanelContainer } from './palette_panel_container'; -import { getColorStops } from './utils'; +import { getPaletteDisplayColors } from './utils'; interface ColorMappingByTermsProps { isDarkMode: boolean; colorMapping?: ColorMapping.Config; palette?: PaletteOutput<CustomPaletteParams>; + palettes: KbnPalettes; isInlineEditing?: boolean; setPalette: (palette: PaletteOutput) => void; setColorMapping: (colorMapping?: ColorMapping.Config) => void; @@ -48,6 +49,7 @@ export function ColorMappingByTerms({ isDarkMode, colorMapping, palette, + palettes, isInlineEditing, setPalette, setColorMapping, @@ -67,7 +69,13 @@ export function ColorMappingByTerms({ fullWidth > <PalettePanelContainer - palette={getColorStops(paletteService, isDarkMode, palette, colorMapping)} + palette={getPaletteDisplayColors( + paletteService, + palettes, + isDarkMode, + palette, + colorMapping + )} siblingRef={panelRef} title={ useNewColorMapping @@ -119,7 +127,7 @@ export function ColorMappingByTerms({ model={colorMapping ?? { ...DEFAULT_COLOR_MAPPING_CONFIG }} onModelUpdate={setColorMapping} specialTokens={SPECIAL_TOKENS_STRING_CONVERSION} - palettes={AVAILABLE_PALETTES} + palettes={palettes} data={{ type: 'categories', categories, diff --git a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_values.tsx b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_values.tsx index 9e18f6ae149a8..d599062204794 100644 --- a/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_values.tsx +++ b/x-pack/plugins/lens/public/shared_components/coloring/color_mapping_by_values.tsx @@ -24,7 +24,7 @@ interface ColorMappingByValuesProps { setPalette: (palette: PaletteOutput<CustomPaletteParams>) => void; paletteService: PaletteRegistry; panelRef: MutableRefObject<HTMLDivElement | null>; - dataBounds?: DataBounds; + dataBounds: DataBounds; } export function ColorMappingByValues<T>({ diff --git a/x-pack/plugins/lens/public/shared_components/coloring/get_cell_color_fn.ts b/x-pack/plugins/lens/public/shared_components/coloring/get_cell_color_fn.ts index bb7e25220f793..f2db77f41b103 100644 --- a/x-pack/plugins/lens/public/shared_components/coloring/get_cell_color_fn.ts +++ b/x-pack/plugins/lens/public/shared_components/coloring/get_cell_color_fn.ts @@ -12,12 +12,14 @@ import { getSpecialString, } from '@kbn/coloring'; import { CustomPaletteState } from '@kbn/charts-plugin/common'; +import { KbnPalettes } from '@kbn/palettes'; import { getColorAccessorFn } from './color_mapping_accessor'; export type CellColorFn = (value?: number | string | null) => string | null; export function getCellColorFn( paletteService: PaletteRegistry, + palettes: KbnPalettes, data: ColorMappingInputData, colorByTerms: boolean, isDarkMode: boolean, @@ -37,7 +39,7 @@ export function getCellColorFn( if (colorByTerms && data.type === 'categories') { if (colorMapping) { - return getColorAccessorFn(colorMapping, data, isDarkMode); + return getColorAccessorFn(palettes, colorMapping, data, isDarkMode); } else if (palette) { return (category) => { if (category === undefined || category === null) return null; diff --git a/x-pack/plugins/lens/public/shared_components/coloring/utils.test.ts b/x-pack/plugins/lens/public/shared_components/coloring/utils.test.ts index cc6044fc0f624..27f17f3c72c66 100644 --- a/x-pack/plugins/lens/public/shared_components/coloring/utils.test.ts +++ b/x-pack/plugins/lens/public/shared_components/coloring/utils.test.ts @@ -5,53 +5,7 @@ * 2.0. */ -import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; -import { - applyPaletteParams, - findMinMaxByColumnId, - getContrastColor, - shouldColorByTerms, -} from './utils'; - -describe('applyPaletteParams', () => { - const paletteRegistry = chartPluginMock.createPaletteRegistry(); - it('should return a palette stops array only by the name', () => { - expect( - applyPaletteParams( - paletteRegistry, - { name: 'default', type: 'palette', params: { name: 'default' } }, - { min: 0, max: 100 } - ) - ).toEqual([ - // stops are 0 and 50 by with a 20 offset (100 divided by 5 steps) for display - // the mock palette service has only 2 colors so tests are a bit off by that - { color: 'red', stop: 20 }, - { color: 'black', stop: 70 }, - ]); - }); - - it('should return a palette stops array reversed', () => { - expect( - applyPaletteParams( - paletteRegistry, - { name: 'default', type: 'palette', params: { name: 'default', reverse: true } }, - { min: 0, max: 100 } - ) - ).toEqual([ - { color: 'black', stop: 20 }, - { color: 'red', stop: 70 }, - ]); - }); - - it('should pick the default palette from the activePalette object when passed', () => { - expect( - applyPaletteParams(paletteRegistry, { name: 'mocked', type: 'palette' }, { min: 0, max: 100 }) - ).toEqual([ - { color: 'blue', stop: 20 }, - { color: 'yellow', stop: 70 }, - ]); - }); -}); +import { findMinMaxByColumnId, getContrastColor, shouldColorByTerms } from './utils'; describe('getContrastColor', () => { it('should pick the light color when the passed one is dark', () => { diff --git a/x-pack/plugins/lens/public/shared_components/coloring/utils.ts b/x-pack/plugins/lens/public/shared_components/coloring/utils.ts index ae797c1daa6c6..711342c8e5d65 100644 --- a/x-pack/plugins/lens/public/shared_components/coloring/utils.ts +++ b/x-pack/plugins/lens/public/shared_components/coloring/utils.ts @@ -23,24 +23,26 @@ import { } from '@kbn/coloring'; import { getOriginalId } from '@kbn/transpose-utils'; import { Datatable, DatatableColumnType } from '@kbn/expressions-plugin/common'; +import { KbnPalettes } from '@kbn/palettes'; import { DataType } from '../../types'; /** * Returns array of colors for provided palette or colorMapping */ -export function getColorStops( +export function getPaletteDisplayColors( paletteService: PaletteRegistry, + palettes: KbnPalettes, isDarkMode: boolean, palette?: PaletteOutput<CustomPaletteParams>, colorMapping?: ColorMapping.Config ): string[] { return colorMapping - ? getColorsFromMapping(isDarkMode, colorMapping) + ? getColorsFromMapping(palettes, isDarkMode, colorMapping) : palette?.name === CUSTOM_PALETTE ? palette?.params?.stops?.map(({ color }) => color) ?? [] : paletteService .get(palette?.name || DEFAULT_FALLBACK_PALETTE) - .getCategoricalColors(10, palette); + .getCategoricalColors(palette?.params?.steps || 10, palette); } /** diff --git a/x-pack/plugins/lens/public/types.ts b/x-pack/plugins/lens/public/types.ts index d6dbccc492a6b..f6d4edc02e16d 100644 --- a/x-pack/plugins/lens/public/types.ts +++ b/x-pack/plugins/lens/public/types.ts @@ -73,6 +73,7 @@ export type StartServices = Pick< | 'analytics' | 'i18n' | 'theme' + | 'userProfile' >; export interface IndexPatternRef { @@ -662,6 +663,7 @@ export type DatasourceDimensionEditorProps<T = unknown> = DatasourceDimensionPro | 'analytics' | 'i18n' | 'theme' + | 'userProfile' | 'docLinks' >; dateRange: DateRange; diff --git a/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.test.tsx b/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.test.tsx index 738f7edab2a6e..ee8566df52ff0 100644 --- a/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.test.tsx +++ b/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.test.tsx @@ -20,6 +20,7 @@ import { ColumnState } from '../../../../common/expressions'; import { capitalize } from 'lodash'; import { I18nProvider } from '@kbn/i18n-react'; import { DatatableColumnType } from '@kbn/expressions-plugin/common'; +import { getKbnPalettes } from '@kbn/palettes'; describe('data table dimension editor', () => { let user: UserEvent; @@ -89,6 +90,7 @@ describe('data table dimension editor', () => { setState: jest.fn(), isDarkMode: false, paletteService: chartPluginMock.createPaletteRegistry(), + palettes: getKbnPalettes({ name: 'amsterdam', darkMode: false }), panelRef: React.createRef(), addLayer: jest.fn(), removeLayer: jest.fn(), diff --git a/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.tsx index c67cf3cdb9b1a..90c644555d6f6 100644 --- a/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/datatable/components/dimension_editor.tsx @@ -8,15 +8,22 @@ import React, { useCallback } from 'react'; import { i18n } from '@kbn/i18n'; import { EuiFormRow, EuiSwitch, EuiButtonGroup, htmlIdGenerator } from '@elastic/eui'; -import { PaletteRegistry, getFallbackDataBounds } from '@kbn/coloring'; +import { + CUSTOM_PALETTE, + CustomPaletteParams, + PaletteOutput, + PaletteRegistry, + applyPaletteParams, + getFallbackDataBounds, +} from '@kbn/coloring'; import { getColorCategories } from '@kbn/chart-expressions-common'; import { useDebouncedValue } from '@kbn/visualization-utils'; import { getOriginalId } from '@kbn/transpose-utils'; +import { KbnPalettes } from '@kbn/palettes'; import type { VisualizationDimensionEditorProps } from '../../../types'; import type { DatatableVisualizationState } from '../visualization'; import { - applyPaletteParams, defaultPaletteParams, findMinMaxByColumnId, shouldColorByTerms, @@ -54,6 +61,7 @@ function updateColumn( export type TableDimensionEditorProps = VisualizationDimensionEditorProps<DatatableVisualizationState> & { paletteService: PaletteRegistry; + palettes: KbnPalettes; isDarkMode: boolean; }; @@ -99,14 +107,24 @@ export function TableDimensionEditor(props: TableDimensionEditorProps) { const minMaxByColumnId = findMinMaxByColumnId(columnsToCheck, currentData); const currentMinMax = minMaxByColumnId.get(accessor) ?? getFallbackDataBounds(); - const activePalette = column?.palette ?? { + const activePalette: PaletteOutput<CustomPaletteParams> = { type: 'palette', name: showColorByTerms ? 'default' : defaultPaletteParams.name, + ...column?.palette, + params: { ...column?.palette?.params }, }; // need to tell the helper that the colorStops are required to display const displayStops = applyPaletteParams(props.paletteService, activePalette, currentMinMax); const categories = getColorCategories(currentData?.rows ?? [], accessor, false, [null]); + if (activePalette.name !== CUSTOM_PALETTE && activePalette.params?.stops) { + activePalette.params.stops = applyPaletteParams( + props.paletteService, + activePalette, + currentMinMax + ); + } + return ( <> <EuiFormRow @@ -225,6 +243,7 @@ export function TableDimensionEditor(props: TableDimensionEditorProps) { isDarkMode={isDarkMode} colorMapping={column.colorMapping} palette={activePalette} + palettes={props.palettes} isInlineEditing={isInlineEditing} setPalette={(palette) => { updateColumnState(accessor, { palette }); diff --git a/x-pack/plugins/lens/public/visualizations/datatable/components/table_basic.tsx b/x-pack/plugins/lens/public/visualizations/datatable/components/table_basic.tsx index f30686a44a6ad..dc6f818eb3519 100644 --- a/x-pack/plugins/lens/public/visualizations/datatable/components/table_basic.tsx +++ b/x-pack/plugins/lens/public/visualizations/datatable/components/table_basic.tsx @@ -33,6 +33,8 @@ import { IconChartDatatable } from '@kbn/chart-icons'; import useObservable from 'react-use/lib/useObservable'; import { getColorCategories } from '@kbn/chart-expressions-common'; import { getOriginalId, isTransposeId } from '@kbn/transpose-utils'; +import { CoreTheme } from '@kbn/core/public'; +import { getKbnPalettes } from '@kbn/palettes'; import type { LensTableRowContextMenuEvent } from '../../../types'; import type { FormatFactory } from '../../../../common/types'; import { RowHeightMode } from '../../../../common/types'; @@ -81,10 +83,11 @@ export const DatatableComponent = (props: DatatableRenderProps) => { const dataGridRef = useRef<EuiDataGridRefProps>(null); const isInteractive = props.interactive; - const isDarkMode = useObservable(props.theme.theme$, { + const theme = useObservable<CoreTheme>(props.theme.theme$, { darkMode: false, name: 'amsterdam', - }).darkMode; + }); + const palettes = getKbnPalettes(theme); const [columnConfig, setColumnConfig] = useState({ columns: props.args.columns, @@ -420,9 +423,10 @@ export const DatatableComponent = (props: DatatableRenderProps) => { }; const colorFn = getCellColorFn( props.paletteService, + palettes, data, colorByTerms, - isDarkMode, + theme.darkMode, syncColors, palette, colorMapping @@ -436,16 +440,17 @@ export const DatatableComponent = (props: DatatableRenderProps) => { formatters, columnConfig, DataContext, - isDarkMode, + theme.darkMode, getCellColor, props.args.fitRowToContent ); }, [ formatters, columnConfig, - isDarkMode, + theme.darkMode, props.args.fitRowToContent, props.paletteService, + palettes, firstLocalTable, bucketedColumns, minMaxByColumnId, diff --git a/x-pack/plugins/lens/public/visualizations/datatable/visualization.test.tsx b/x-pack/plugins/lens/public/visualizations/datatable/visualization.test.tsx index 9a94e458c667c..218aa875a3756 100644 --- a/x-pack/plugins/lens/public/visualizations/datatable/visualization.test.tsx +++ b/x-pack/plugins/lens/public/visualizations/datatable/visualization.test.tsx @@ -27,13 +27,13 @@ import { DatatableColumnFn, DatatableExpressionFunction, } from '../../../common/expressions'; -import { getColorStops } from '../../shared_components/coloring'; +import { getPaletteDisplayColors } from '../../shared_components/coloring'; import { fieldFormatsServiceMock } from '@kbn/field-formats-plugin/public/mocks'; jest.mock('../../shared_components/coloring', () => { return { ...jest.requireActual('../../shared_components/coloring'), - getColorStops: jest.fn().mockReturnValue([]), + getPaletteDisplayColors: jest.fn().mockReturnValue([]), }; }); @@ -438,7 +438,7 @@ describe('Datatable Visualization', () => { let params: VisualizationConfigProps<DatatableVisualizationState>; beforeEach(() => { - (getColorStops as jest.Mock).mockReturnValue(mockStops); + (getPaletteDisplayColors as jest.Mock).mockReturnValue(mockStops); }); describe('rows', () => { @@ -483,7 +483,7 @@ describe('Datatable Visualization', () => { it.each<ColumnState['colorMode']>(['cell', 'text'])( 'should not include palette if colorMode is %s but stops is empty', (colorMode) => { - (getColorStops as jest.Mock).mockReturnValue([]); + (getPaletteDisplayColors as jest.Mock).mockReturnValue([]); params.state.columns[0].colorMode = colorMode; expect(datatableVisualization.getConfiguration(params).groups[0].accessors).toEqual([ { columnId: 'b' }, @@ -532,7 +532,7 @@ describe('Datatable Visualization', () => { it.each<ColumnState['colorMode']>(['cell', 'text'])( 'should not include palette if colorMode is %s but stops is empty', (colorMode) => { - (getColorStops as jest.Mock).mockReturnValue([]); + (getPaletteDisplayColors as jest.Mock).mockReturnValue([]); params.state.columns[0].colorMode = colorMode; expect(datatableVisualization.getConfiguration(params).groups[2].accessors).toEqual([ { columnId: 'b' }, diff --git a/x-pack/plugins/lens/public/visualizations/datatable/visualization.tsx b/x-pack/plugins/lens/public/visualizations/datatable/visualization.tsx index efe5a39458eed..23d8d432ce2d6 100644 --- a/x-pack/plugins/lens/public/visualizations/datatable/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/datatable/visualization.tsx @@ -8,8 +8,15 @@ import React from 'react'; import { Ast } from '@kbn/interpreter'; import { i18n } from '@kbn/i18n'; -import { PaletteRegistry, CUSTOM_PALETTE, PaletteOutput, CustomPaletteParams } from '@kbn/coloring'; -import { ThemeServiceStart } from '@kbn/core/public'; +import { CoreTheme, ThemeServiceStart } from '@kbn/core/public'; +import { + PaletteRegistry, + CUSTOM_PALETTE, + PaletteOutput, + CustomPaletteParams, + applyPaletteParams, + getOverridePaletteStops, +} from '@kbn/coloring'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; import { IconChartDatatable } from '@kbn/chart-icons'; import { getOriginalId } from '@kbn/transpose-utils'; @@ -17,6 +24,7 @@ import { LayerTypes } from '@kbn/expression-xy-plugin/public'; import { buildExpression, buildExpressionFunction } from '@kbn/expressions-plugin/common'; import useObservable from 'react-use/lib/useObservable'; import { getSortingCriteria } from '@kbn/sort-predicates'; +import { getKbnPalettes } from '@kbn/palettes'; import type { FormBasedPersistedState } from '../../datasources/form_based/types'; import type { SuggestionRequest, @@ -45,10 +53,9 @@ import { DEFAULT_ROW_HEIGHT, } from './components/constants'; import { - applyPaletteParams, defaultPaletteParams, findMinMaxByColumnId, - getColorStops, + getPaletteDisplayColors, shouldColorByTerms, } from '../../shared_components'; import { getColorMappingTelemetryEvents } from '../../lens_ui_telemetry/color_telemetry_helpers'; @@ -268,7 +275,9 @@ export const getDatatableVisualization = ({ on the Metric dimension in cases where there are no numeric columns **/ getConfiguration({ state, frame }) { - const isDarkMode = kibanaTheme.getTheme().darkMode; + const theme = kibanaTheme.getTheme(); + const palettes = getKbnPalettes(theme); + const { sortedColumns, datasource } = getDatasourceAndSortedColumns( state, frame.datasourceLayers @@ -320,7 +329,13 @@ export const getDatatableVisualization = ({ hidden, collapseFn, } = columnMap[accessor] ?? {}; - const stops = getColorStops(paletteService, isDarkMode, palette, colorMapping); + const stops = getPaletteDisplayColors( + paletteService, + palettes, + theme.darkMode, + palette, + colorMapping + ); const hasColoring = colorMode !== 'none' && stops.length > 0; return { @@ -407,7 +422,13 @@ export const getDatatableVisualization = ({ colorMapping, hidden, } = columnMap[accessor] ?? {}; - const stops = getColorStops(paletteService, isDarkMode, palette, colorMapping); + const stops = getPaletteDisplayColors( + paletteService, + palettes, + theme.darkMode, + palette, + colorMapping + ); const hasColoring = colorMode !== 'none' && stops.length > 0; return { @@ -465,13 +486,19 @@ export const getDatatableVisualization = ({ }; }, DimensionEditorComponent(props) { - const isDarkMode = useObservable(kibanaTheme.theme$, { + const theme = useObservable<CoreTheme>(kibanaTheme.theme$, { darkMode: false, name: 'amsterdam', - }).darkMode; + }); + const palettes = getKbnPalettes(theme); return ( - <TableDimensionEditor {...props} isDarkMode={isDarkMode} paletteService={paletteService} /> + <TableDimensionEditor + {...props} + isDarkMode={theme.darkMode} + palettes={palettes} + paletteService={paletteService} + /> ); }, @@ -556,13 +583,14 @@ export const getDatatableVisualization = ({ columns: columns .filter((c) => !c.collapseFn) .map((column) => { + const stops = getOverridePaletteStops(paletteService, column.palette); const paletteParams = { ...column.palette?.params, // rewrite colors and stops as two distinct arguments - colors: (column.palette?.params?.stops || []).map(({ color }) => color), + colors: stops?.map(({ color }) => color), stops: column.palette?.params?.name === RowHeightMode.custom - ? (column.palette?.params?.stops || []).map(({ stop }) => stop) + ? stops?.map(({ stop }) => stop) : [], reverse: false, // managed at UI level }; diff --git a/x-pack/plugins/lens/public/visualizations/gauge/dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/gauge/dimension_editor.tsx index fdbe6913d21c9..8c1d3bd96f2d3 100644 --- a/x-pack/plugins/lens/public/visualizations/gauge/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/gauge/dimension_editor.tsx @@ -8,12 +8,17 @@ import { EuiFormRow, EuiSwitchEvent, EuiSwitch, EuiIcon } from '@elastic/eui'; import React from 'react'; import { i18n } from '@kbn/i18n'; -import { PaletteRegistry, CustomizablePalette, CUSTOM_PALETTE } from '@kbn/coloring'; +import { + PaletteRegistry, + CustomizablePalette, + CUSTOM_PALETTE, + applyPaletteParams, +} from '@kbn/coloring'; import { GaugeTicksPositions, GaugeColorModes } from '@kbn/expression-gauge-plugin/common'; import { getMaxValue, getMinValue } from '@kbn/expression-gauge-plugin/public'; import { TooltipWrapper } from '@kbn/visualization-utils'; import { isNumericFieldForDatatable } from '../../../common/expressions/datatable/utils'; -import { applyPaletteParams, PalettePanelContainer } from '../../shared_components'; +import { PalettePanelContainer } from '../../shared_components'; import type { VisualizationDimensionEditorProps } from '../../types'; import type { GaugeVisualizationState } from './constants'; import { defaultPaletteParams } from './palette_config'; diff --git a/x-pack/plugins/lens/public/visualizations/gauge/index.ts b/x-pack/plugins/lens/public/visualizations/gauge/index.ts index 870b4f3b6b586..a08d6d43097e7 100644 --- a/x-pack/plugins/lens/public/visualizations/gauge/index.ts +++ b/x-pack/plugins/lens/public/visualizations/gauge/index.ts @@ -8,7 +8,6 @@ import type { CoreSetup } from '@kbn/core/public'; import type { ChartsPluginSetup } from '@kbn/charts-plugin/public'; import type { EditorFrameSetup } from '../../types'; -import { transparentizePalettes } from './palette_config'; export interface GaugeVisualizationPluginSetupPlugins { editorFrame: EditorFrameSetup; @@ -19,8 +18,8 @@ export class GaugeVisualization { setup(core: CoreSetup, { editorFrame, charts }: GaugeVisualizationPluginSetupPlugins) { editorFrame.registerVisualization(async () => { const { getGaugeVisualization } = await import('../../async_services'); - const palettes = transparentizePalettes(await charts.palettes.getPalettes()); - return getGaugeVisualization({ paletteService: palettes, theme: core.theme }); + const palettes = await charts.palettes.getPalettes(); + return getGaugeVisualization({ paletteService: palettes }); }); } } diff --git a/x-pack/plugins/lens/public/visualizations/gauge/palette_config.test.ts b/x-pack/plugins/lens/public/visualizations/gauge/palette_config.test.ts deleted file mode 100644 index f144a2f9f87f4..0000000000000 --- a/x-pack/plugins/lens/public/visualizations/gauge/palette_config.test.ts +++ /dev/null @@ -1,41 +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 { transparentizePalettes } from './palette_config'; -import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; - -const paletteServiceMock = chartPluginMock.createPaletteRegistry(); - -describe('transparentizePalettes', () => { - it('converts all colors to half-transparent', () => { - const newPalettes = transparentizePalettes(paletteServiceMock); - - const singlePalette = newPalettes.get('mocked'); - expect(singlePalette.getCategoricalColors(2)).toEqual(['#0000FF80', '#FFFF0080']); - expect( - singlePalette.getCategoricalColor([ - { - name: 'abc', - rankAtDepth: 0, - totalSeriesAtDepth: 5, - }, - ]) - ).toEqual('#0000FF80'); - - const firstPalette = newPalettes.getAll()[0]; - expect(firstPalette.getCategoricalColors(2)).toEqual(['#FF000080', '#00000080']); - expect( - firstPalette.getCategoricalColor([ - { - name: 'abc', - rankAtDepth: 0, - totalSeriesAtDepth: 5, - }, - ]) - ).toEqual('#00000080'); - }); -}); diff --git a/x-pack/plugins/lens/public/visualizations/gauge/palette_config.tsx b/x-pack/plugins/lens/public/visualizations/gauge/palette_config.tsx index a2399c897b39b..3d6bd9c94f01b 100644 --- a/x-pack/plugins/lens/public/visualizations/gauge/palette_config.tsx +++ b/x-pack/plugins/lens/public/visualizations/gauge/palette_config.tsx @@ -5,15 +5,8 @@ * 2.0. */ -import { - ChartColorConfiguration, - PaletteDefinition, - PaletteRegistry, - SeriesLayer, - RequiredPaletteParamTypes, -} from '@kbn/coloring'; +import { RequiredPaletteParamTypes } from '@kbn/coloring'; -import chroma from 'chroma-js'; import { defaultPaletteParams as sharedDefaultParams } from '../../shared_components'; export const DEFAULT_PALETTE_NAME = 'temperature'; @@ -29,23 +22,3 @@ export const defaultPaletteParams: RequiredPaletteParamTypes = { steps: DEFAULT_COLOR_STEPS, maxSteps: 5, }; - -export const transparentizePalettes = (palettes: PaletteRegistry) => { - const addAlpha = (c: string | null) => (c ? chroma(c).hex() + `80` : `000000`).toUpperCase(); - const transparentizePalette = (palette: PaletteDefinition<unknown>) => ({ - ...palette, - getCategoricalColor: ( - series: SeriesLayer[], - chartConfiguration?: ChartColorConfiguration, - state?: unknown - ) => addAlpha(palette.getCategoricalColor(series, chartConfiguration, state)), - getCategoricalColors: (size: number, state?: unknown): string[] => - palette.getCategoricalColors(size, state).map(addAlpha), - }); - - return { - ...palettes, - get: (name: string) => transparentizePalette(palettes.get(name)), - getAll: () => palettes.getAll().map((singlePalette) => transparentizePalette(singlePalette)), - }; -}; diff --git a/x-pack/plugins/lens/public/visualizations/gauge/visualization.test.ts b/x-pack/plugins/lens/public/visualizations/gauge/visualization.test.ts index e5b908a6f4c76..e240b5ef8a51d 100644 --- a/x-pack/plugins/lens/public/visualizations/gauge/visualization.test.ts +++ b/x-pack/plugins/lens/public/visualizations/gauge/visualization.test.ts @@ -13,7 +13,6 @@ import type { DatasourceLayers, OperationDescriptor } from '../../types'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; import type { GaugeVisualizationState } from './constants'; -import { themeServiceMock } from '@kbn/core/public/mocks'; function exampleState(): GaugeVisualizationState { return { @@ -25,8 +24,9 @@ function exampleState(): GaugeVisualizationState { }; } -const paletteService = chartPluginMock.createPaletteRegistry(); -const theme = themeServiceMock.createStartContract(); +const deps = { + paletteService: chartPluginMock.createPaletteRegistry(), +}; describe('gauge', () => { let frame: ReturnType<typeof createMockFramePublicAPI>; @@ -37,7 +37,7 @@ describe('gauge', () => { describe('#intialize', () => { test('returns a default state', () => { - expect(getGaugeVisualization({ paletteService, theme }).initialize(() => 'l1')).toEqual({ + expect(getGaugeVisualization(deps).initialize(() => 'l1')).toEqual({ layerId: 'l1', layerType: LayerTypes.DATA, shape: 'horizontalBullet', @@ -47,12 +47,9 @@ describe('gauge', () => { }); test('returns persisted state', () => { - expect( - getGaugeVisualization({ paletteService, theme }).initialize( - () => 'test-layer', - exampleState() - ) - ).toEqual(exampleState()); + expect(getGaugeVisualization(deps).initialize(() => 'test-layer', exampleState())).toEqual( + exampleState() + ); }); }); @@ -89,10 +86,7 @@ describe('gauge', () => { }; expect( - getGaugeVisualization({ - paletteService, - theme, - }).getConfiguration({ state, frame, layerId: 'first' }) + getGaugeVisualization(deps).getConfiguration({ state, frame, layerId: 'first' }) ).toEqual({ groups: [ { @@ -175,10 +169,7 @@ describe('gauge', () => { minAccessor: 'min-accessor', }; expect( - getGaugeVisualization({ - paletteService, - theme, - }).getConfiguration({ state, frame, layerId: 'first' }) + getGaugeVisualization(deps).getConfiguration({ state, frame, layerId: 'first' }) ).toEqual({ groups: [ { @@ -267,10 +258,7 @@ describe('gauge', () => { frame.activeData = undefined; expect( - getGaugeVisualization({ - paletteService, - theme, - }).getConfiguration({ state, frame, layerId: 'first' }) + getGaugeVisualization(deps).getConfiguration({ state, frame, layerId: 'first' }) ).toEqual({ groups: [ { @@ -355,10 +343,7 @@ describe('gauge', () => { maxAccessor: 'max-accessor', }; expect( - getGaugeVisualization({ - paletteService, - theme, - }).setDimension({ + getGaugeVisualization(deps).setDimension({ prevState, layerId: 'first', columnId: 'new-min-accessor', @@ -383,10 +368,7 @@ describe('gauge', () => { }; test('removes metric correctly', () => { expect( - getGaugeVisualization({ - paletteService, - theme, - }).removeDimension({ + getGaugeVisualization(deps).removeDimension({ prevState, layerId: 'first', columnId: 'metric-accessor', @@ -399,10 +381,7 @@ describe('gauge', () => { }); test('removes min correctly', () => { expect( - getGaugeVisualization({ - paletteService, - theme, - }).removeDimension({ + getGaugeVisualization(deps).removeDimension({ prevState, layerId: 'first', columnId: 'min-accessor', @@ -419,12 +398,7 @@ describe('gauge', () => { }); describe('#getSupportedLayers', () => { it('should return a single layer type', () => { - expect( - getGaugeVisualization({ - paletteService, - theme, - }).getSupportedLayers() - ).toHaveLength(1); + expect(getGaugeVisualization(deps).getSupportedLayers()).toHaveLength(1); }); }); describe('#getLayerType', () => { @@ -434,10 +408,7 @@ describe('gauge', () => { minAccessor: 'min-accessor', goalAccessor: 'value-accessor', }; - const instance = getGaugeVisualization({ - paletteService, - theme, - }); + const instance = getGaugeVisualization(deps); expect(instance.getLayerType('test-layer', state)).toEqual(LayerTypes.DATA); expect(instance.getLayerType('foo', state)).toBeUndefined(); }); @@ -465,12 +436,7 @@ describe('gauge', () => { maxAccessor: 'max-accessor', labelMinor: 'Subtitle', }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).toExpression(state, datasourceLayers) - ).toEqual({ + expect(getGaugeVisualization(deps).toExpression(state, datasourceLayers)).toEqual({ type: 'expression', chain: [ { @@ -497,12 +463,7 @@ describe('gauge', () => { layerId: 'first', minAccessor: 'min-accessor', }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).toExpression(state, datasourceLayers) - ).toEqual(null); + expect(getGaugeVisualization(deps).toExpression(state, datasourceLayers)).toEqual(null); }); }); @@ -543,12 +504,8 @@ describe('gauge', () => { }, }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).getUserMessages!(localState, { frame }) - ).toMatchInlineSnapshot(` + expect(getGaugeVisualization(deps).getUserMessages!(localState, { frame })) + .toMatchInlineSnapshot(` Array [ Object { "displayLocations": Array [ @@ -587,12 +544,7 @@ describe('gauge', () => { }, }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).getUserMessages!(state, { frame }) - ).toHaveLength(0); + expect(getGaugeVisualization(deps).getUserMessages!(state, { frame })).toHaveLength(0); }); it('should warn when minimum value is greater than metric value', () => { frame.activeData = { @@ -610,12 +562,7 @@ describe('gauge', () => { }, }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).getUserMessages!(state, { frame }) - ).toHaveLength(1); + expect(getGaugeVisualization(deps).getUserMessages!(state, { frame })).toHaveLength(1); }); it('should warn when metric value is greater than maximum value', () => { @@ -633,12 +580,7 @@ describe('gauge', () => { }, }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).getUserMessages!(state, { frame }) - ).toHaveLength(1); + expect(getGaugeVisualization(deps).getUserMessages!(state, { frame })).toHaveLength(1); }); it('should warn when goal value is greater than maximum value', () => { frame.activeData = { @@ -656,12 +598,7 @@ describe('gauge', () => { }, }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).getUserMessages!(state, { frame }) - ).toHaveLength(1); + expect(getGaugeVisualization(deps).getUserMessages!(state, { frame })).toHaveLength(1); }); it('should warn when minimum value is greater than goal value', () => { frame.activeData = { @@ -679,12 +616,7 @@ describe('gauge', () => { }, }; - expect( - getGaugeVisualization({ - paletteService, - theme, - }).getUserMessages!(state, { frame }) - ).toHaveLength(1); + expect(getGaugeVisualization(deps).getUserMessages!(state, { frame })).toHaveLength(1); }); }); }); diff --git a/x-pack/plugins/lens/public/visualizations/gauge/visualization.tsx b/x-pack/plugins/lens/public/visualizations/gauge/visualization.tsx index e1ef2b03e4264..957c1b16cf2b4 100644 --- a/x-pack/plugins/lens/public/visualizations/gauge/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/gauge/visualization.tsx @@ -7,11 +7,17 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; -import { ThemeServiceStart } from '@kbn/core/public'; import { FormattedMessage } from '@kbn/i18n-react'; import { Ast } from '@kbn/interpreter'; import { buildExpressionFunction, DatatableRow } from '@kbn/expressions-plugin/common'; -import { PaletteRegistry, CustomPaletteParams, CUSTOM_PALETTE } from '@kbn/coloring'; +import { + PaletteRegistry, + CustomPaletteParams, + CUSTOM_PALETTE, + applyPaletteParams, + getOverridePaletteStops, + PaletteOutput, +} from '@kbn/coloring'; import type { GaugeExpressionFunctionDefinition, GaugeShape, @@ -37,7 +43,6 @@ import type { import { getSuggestions } from './suggestions'; import { GROUP_ID, LENS_GAUGE_ID, GaugeVisualizationState } from './constants'; import { GaugeToolbar } from './toolbar_component'; -import { applyPaletteParams } from '../../shared_components'; import { GaugeDimensionEditor } from './dimension_editor'; import { generateId } from '../../id_generator'; import { getAccessorsFromState } from './utils'; @@ -52,7 +57,6 @@ import { interface GaugeVisualizationDeps { paletteService: PaletteRegistry; - theme: ThemeServiceStart; } export const isNumericMetric = (op: OperationMetadata) => @@ -61,12 +65,17 @@ export const isNumericMetric = (op: OperationMetadata) => export const isNumericDynamicMetric = (op: OperationMetadata) => isNumericMetric(op) && !op.isStaticValue; -function computePaletteParams(params: CustomPaletteParams) { +function computePaletteParams( + paletteService: PaletteRegistry, + palette: PaletteOutput<CustomPaletteParams> +) { + const stops = getOverridePaletteStops(paletteService, palette); + return { - ...params, + ...palette.params, // rewrite colors and stops as two distinct arguments - colors: (params?.stops || []).map(({ color }) => color), - stops: params?.name === 'custom' ? (params?.stops || []).map(({ stop }) => stop) : [], + colors: stops?.map(({ color }) => color), + stops: palette.params?.name === 'custom' ? stops?.map(({ stop }) => stop) : [], reverse: false, // managed at UI level }; } @@ -144,7 +153,9 @@ const toExpression = ( shape: state.shape ?? GaugeShapes.HORIZONTAL_BULLET, colorMode: state?.colorMode ?? 'none', palette: state.palette?.params - ? paletteService.get(CUSTOM_PALETTE).toExpression(computePaletteParams(state.palette.params)) + ? paletteService + .get(CUSTOM_PALETTE) + .toExpression(computePaletteParams(paletteService, state.palette)) : undefined, ticksPosition: state.ticksPosition ?? 'auto', labelMinor: state.labelMinor, diff --git a/x-pack/plugins/lens/public/visualizations/heatmap/utils.ts b/x-pack/plugins/lens/public/visualizations/heatmap/utils.ts index fe942dd40427c..66b2a10295016 100644 --- a/x-pack/plugins/lens/public/visualizations/heatmap/utils.ts +++ b/x-pack/plugins/lens/public/visualizations/heatmap/utils.ts @@ -5,9 +5,9 @@ * 2.0. */ -import type { PaletteRegistry } from '@kbn/coloring'; +import { applyPaletteParams, type PaletteRegistry } from '@kbn/coloring'; import type { Datatable } from '@kbn/expressions-plugin/common'; -import { applyPaletteParams, findMinMaxByColumnId } from '../../shared_components'; +import { findMinMaxByColumnId } from '../../shared_components'; import { DEFAULT_PALETTE_NAME } from './constants'; import type { HeatmapVisualizationState, Palette } from './types'; diff --git a/x-pack/plugins/lens/public/visualizations/heatmap/visualization.tsx b/x-pack/plugins/lens/public/visualizations/heatmap/visualization.tsx index 1fb747427a05d..4dfb17241866f 100644 --- a/x-pack/plugins/lens/public/visualizations/heatmap/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/heatmap/visualization.tsx @@ -11,7 +11,13 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { Ast } from '@kbn/interpreter'; import { Position } from '@elastic/charts'; import { IconChartHeatmap } from '@kbn/chart-icons'; -import { CUSTOM_PALETTE, PaletteRegistry, CustomPaletteParams } from '@kbn/coloring'; +import { + CUSTOM_PALETTE, + PaletteRegistry, + CustomPaletteParams, + PaletteOutput, + getOverridePaletteStops, +} from '@kbn/coloring'; import { ThemeServiceStart } from '@kbn/core/public'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; @@ -88,12 +94,17 @@ function getInitialState(): Omit<HeatmapVisualizationState, 'layerId' | 'layerTy }; } -function computePaletteParams(params: CustomPaletteParams) { +function computePaletteParams( + paletteService: PaletteRegistry, + palette: PaletteOutput<CustomPaletteParams> +) { + const stops = getOverridePaletteStops(paletteService, palette); + return { - ...params, + ...palette.params, // rewrite colors and stops as two distinct arguments - colors: (params?.stops || []).map(({ color }) => color), - stops: params?.name === 'custom' ? (params?.stops || []).map(({ stop }) => stop) : [], + colors: stops?.map(({ color }) => color), + stops: palette.params?.name === 'custom' ? stops?.map(({ stop }) => stop) : [], reverse: false, // managed at UI level }; } @@ -349,7 +360,7 @@ export const getHeatmapVisualization = ({ palette: state.palette?.params ? paletteService .get(CUSTOM_PALETTE) - .toExpression(computePaletteParams(state.palette?.params)) + .toExpression(computePaletteParams(paletteService, state.palette)) : paletteService.get(DEFAULT_PALETTE_NAME).toExpression(), legend: buildExpression([legendFn]), gridConfig: buildExpression([gridConfigFn]), @@ -407,7 +418,7 @@ export const getHeatmapVisualization = ({ palette: state.palette?.params ? paletteService .get(CUSTOM_PALETTE) - .toExpression(computePaletteParams(state.palette?.params)) + .toExpression(computePaletteParams(paletteService, state.palette)) : paletteService.get(DEFAULT_PALETTE_NAME).toExpression(), }); diff --git a/x-pack/plugins/lens/public/visualizations/legacy_metric/dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/legacy_metric/dimension_editor.tsx index c6eccd9a70727..552b5f0a52a3f 100644 --- a/x-pack/plugins/lens/public/visualizations/legacy_metric/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/legacy_metric/dimension_editor.tsx @@ -5,13 +5,18 @@ * 2.0. */ import { EuiButtonGroup, EuiFormRow, htmlIdGenerator } from '@elastic/eui'; -import { PaletteRegistry, CustomizablePalette, CUSTOM_PALETTE } from '@kbn/coloring'; +import { + PaletteRegistry, + CustomizablePalette, + CUSTOM_PALETTE, + applyPaletteParams, +} from '@kbn/coloring'; import { i18n } from '@kbn/i18n'; import React from 'react'; import { ColorMode } from '@kbn/charts-plugin/common'; import type { LegacyMetricState } from '../../../common/types'; import { isNumericFieldForDatatable } from '../../../common/expressions/datatable/utils'; -import { applyPaletteParams, PalettePanelContainer } from '../../shared_components'; +import { PalettePanelContainer } from '../../shared_components'; import type { VisualizationDimensionEditorProps } from '../../types'; import { defaultPaletteParams } from './palette_config'; @@ -54,7 +59,7 @@ export function MetricDimensionEditor( }; // need to tell the helper that the colorStops are required to display - const displayStops = applyPaletteParams(props.paletteService, activePalette, currentMinMax); + const stops = applyPaletteParams(props.paletteService, activePalette, currentMinMax); return ( <> @@ -109,7 +114,7 @@ export function MetricDimensionEditor( // align this initial computation with same format for default // palettes in the panel. This to avoid custom computation issue with metric // fake data range - stops: displayStops.map((v, i, array) => ({ + stops: stops.map((v, i, array) => ({ ...v, stop: currentMinMax.min + (i === 0 ? 0 : array[i - 1].stop), })), @@ -137,7 +142,7 @@ export function MetricDimensionEditor( })} > <PalettePanelContainer - palette={displayStops.map(({ color }) => color)} + palette={stops.map(({ color }) => color)} siblingRef={props.panelRef} isInlineEditing={isInlineEditing} title={i18n.translate('xpack.lens.paletteMetricGradient.label', { diff --git a/x-pack/plugins/lens/public/visualizations/legacy_metric/index.ts b/x-pack/plugins/lens/public/visualizations/legacy_metric/index.ts index 933bf4dab6ae8..a624172264442 100644 --- a/x-pack/plugins/lens/public/visualizations/legacy_metric/index.ts +++ b/x-pack/plugins/lens/public/visualizations/legacy_metric/index.ts @@ -20,9 +20,9 @@ export class LegacyMetricVisualization { const { getLegacyMetricVisualization: getMetricVisualization } = await import( '../../async_services' ); - const palettes = await charts.palettes.getPalettes(); + const paletteService = await charts.palettes.getPalettes(); - return getMetricVisualization({ paletteService: palettes, theme: core.theme }); + return getMetricVisualization({ paletteService }); }); } } diff --git a/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.test.ts b/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.test.ts index d6a70ddbe7114..faf50074ee8f3 100644 --- a/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.test.ts +++ b/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.test.ts @@ -13,7 +13,7 @@ import { generateId } from '../../id_generator'; import { DatasourcePublicAPI, FramePublicAPI } from '../../types'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { ColorMode } from '@kbn/charts-plugin/common'; -import { themeServiceMock } from '@kbn/core/public/mocks'; +import { CUSTOM_PALETTE } from '@kbn/coloring'; jest.mock('../../id_generator'); @@ -37,7 +37,6 @@ function mockFrame(): FramePublicAPI { const metricVisualization = getLegacyMetricVisualization({ paletteService: chartPluginMock.createPaletteRegistry(), - theme: themeServiceMock.createStartContract(), }); describe('metric_visualization', () => { @@ -128,7 +127,13 @@ describe('metric_visualization', () => { layerType: LayerTypes.DATA, palette: { type: 'palette', - name: 'status', + name: CUSTOM_PALETTE, + params: { + stops: [ + { color: 'blue', stop: 0 }, + { color: 'yellow', stop: 100 }, + ], + }, }, }, layerId: 'l1', @@ -138,7 +143,7 @@ describe('metric_visualization', () => { groups: [ expect.objectContaining({ accessors: expect.arrayContaining([ - { columnId: 'a', triggerIconType: 'colorBy', palette: [] }, + { columnId: 'a', triggerIconType: 'colorBy', palette: ['blue', 'yellow'] }, ]), }), ], diff --git a/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.tsx b/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.tsx index 35983e52f80da..74f1642cb0965 100644 --- a/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/legacy_metric/visualization.tsx @@ -7,8 +7,13 @@ import { i18n } from '@kbn/i18n'; import { euiThemeVars } from '@kbn/ui-theme'; import { Ast } from '@kbn/interpreter'; -import { PaletteOutput, PaletteRegistry, CUSTOM_PALETTE, shiftPalette } from '@kbn/coloring'; -import { ThemeServiceStart } from '@kbn/core/public'; +import { + PaletteOutput, + PaletteRegistry, + CUSTOM_PALETTE, + shiftPalette, + getOverridePaletteStops, +} from '@kbn/coloring'; import { ColorMode, CustomPaletteState } from '@kbn/charts-plugin/common'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; import { IconChartMetric } from '@kbn/chart-icons'; @@ -65,7 +70,7 @@ const toExpression = ( const datasourceExpression = datasourceExpressionsByLayers[state.layerId]; const operation = datasource && datasource.getOperationForColumnId(state.accessor); - const stops = state.palette?.params?.stops || []; + const stops = getOverridePaletteStops(paletteService, state.palette) ?? []; const isCustomPalette = state.palette?.params?.name === CUSTOM_PALETTE; const canColor = operation?.dataType === 'number'; @@ -150,10 +155,8 @@ const toExpression = ( export const getLegacyMetricVisualization = ({ paletteService, - theme, }: { paletteService: PaletteRegistry; - theme: ThemeServiceStart; }): Visualization<LegacyMetricState> => ({ id: 'lnsLegacyMetric', @@ -215,7 +218,8 @@ export const getLegacyMetricVisualization = ({ getConfiguration(props) { const hasColoring = props.state.palette != null; - const stops = props.state.palette?.params?.stops || []; + const stops = getOverridePaletteStops(paletteService, props.state.palette); + return { groups: [ { @@ -236,7 +240,7 @@ export const getLegacyMetricVisualization = ({ { columnId: props.state.accessor, triggerIconType: hasColoring ? 'colorBy' : undefined, - palette: hasColoring ? stops.map(({ color }) => color) : undefined, + palette: hasColoring ? stops?.map(({ color }) => color) : undefined, }, ] : [], @@ -314,7 +318,7 @@ export const getLegacyMetricVisualization = ({ } const hasColoring = state.palette != null; - const stops = state.palette?.params?.stops || []; + const stops = getOverridePaletteStops(paletteService, state.palette); return { layers: [ @@ -324,7 +328,7 @@ export const getLegacyMetricVisualization = ({ chartType: 'metric', ...this.getDescription(state), dimensions, - palette: hasColoring ? stops.map(({ color }) => color) : undefined, + palette: hasColoring ? stops?.map(({ color }) => color) : undefined, }, ], }; diff --git a/x-pack/plugins/lens/public/visualizations/metric/__snapshots__/visualization.test.ts.snap b/x-pack/plugins/lens/public/visualizations/metric/__snapshots__/visualization.test.ts.snap index 2490904751e8c..6306758e256f0 100644 --- a/x-pack/plugins/lens/public/visualizations/metric/__snapshots__/visualization.test.ts.snap +++ b/x-pack/plugins/lens/public/visualizations/metric/__snapshots__/visualization.test.ts.snap @@ -7,7 +7,10 @@ Object { "accessors": Array [ Object { "columnId": "metric-col-id", - "palette": Array [], + "palette": Array [ + "blue", + "yellow", + ], "triggerIconType": "colorBy", }, ], diff --git a/x-pack/plugins/lens/public/visualizations/metric/dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/metric/dimension_editor.tsx index 78fcd67f36431..5d98be54e23ed 100644 --- a/x-pack/plugins/lens/public/visualizations/metric/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/metric/dimension_editor.tsx @@ -24,6 +24,7 @@ import { CustomizablePalette, DEFAULT_MAX_STOP, DEFAULT_MIN_STOP, + applyPaletteParams, } from '@kbn/coloring'; import { getDataBoundsForPalette } from '@kbn/expression-metric-vis-plugin/public'; import { getColumnByAccessor } from '@kbn/visualizations-plugin/common/utils'; @@ -31,7 +32,7 @@ import { css } from '@emotion/react'; import { DebouncedInput, IconSelect } from '@kbn/visualization-ui-components'; import { useDebouncedValue } from '@kbn/visualization-utils'; import { isNumericFieldForDatatable } from '../../../common/expressions/datatable/utils'; -import { applyPaletteParams, PalettePanelContainer } from '../../shared_components'; +import { PalettePanelContainer } from '../../shared_components'; import type { VisualizationDimensionEditorProps } from '../../types'; import { defaultNumberPaletteParams, defaultPercentagePaletteParams } from './palette_config'; import { DEFAULT_MAX_COLUMNS, getDefaultColor, showingBar } from './visualization'; diff --git a/x-pack/plugins/lens/public/visualizations/metric/to_expression.ts b/x-pack/plugins/lens/public/visualizations/metric/to_expression.ts index 02292a4ddce0a..09e1de6192472 100644 --- a/x-pack/plugins/lens/public/visualizations/metric/to_expression.ts +++ b/x-pack/plugins/lens/public/visualizations/metric/to_expression.ts @@ -5,7 +5,13 @@ * 2.0. */ -import { CustomPaletteParams, CUSTOM_PALETTE, PaletteRegistry } from '@kbn/coloring'; +import { + CustomPaletteParams, + CUSTOM_PALETTE, + PaletteRegistry, + PaletteOutput, + getOverridePaletteStops, +} from '@kbn/coloring'; import type { TrendlineExpressionFunctionDefinition, MetricVisExpressionFunctionDefinition, @@ -23,12 +29,17 @@ import { MetricVisualizationState } from './types'; import { metricStateDefaults } from './constants'; // TODO - deduplicate with gauges? -function computePaletteParams(params: CustomPaletteParams) { +function computePaletteParams( + paletteService: PaletteRegistry, + palette: PaletteOutput<CustomPaletteParams> +) { + const stops = getOverridePaletteStops(paletteService, palette); + return { - ...params, + ...palette.params, // rewrite colors and stops as two distinct arguments - colors: (params?.stops || []).map(({ color }) => color), - stops: params?.name === 'custom' ? (params?.stops || []).map(({ stop }) => stop) : [], + colors: stops?.map(({ color }) => color), + stops: palette.params?.name === 'custom' ? stops?.map(({ stop }) => stop) : [], reverse: false, // managed at UI level }; } @@ -162,7 +173,7 @@ export const toExpression = ( ? [ paletteService .get(CUSTOM_PALETTE) - .toExpression(computePaletteParams(state.palette.params as CustomPaletteParams)), + .toExpression(computePaletteParams(paletteService, state.palette)), ] : [], maxCols: state.maxCols ?? DEFAULT_MAX_COLUMNS, diff --git a/x-pack/plugins/lens/public/visualizations/metric/visualization.test.ts b/x-pack/plugins/lens/public/visualizations/metric/visualization.test.ts index e4011ca8431a3..a696ab47a4871 100644 --- a/x-pack/plugins/lens/public/visualizations/metric/visualization.test.ts +++ b/x-pack/plugins/lens/public/visualizations/metric/visualization.test.ts @@ -6,7 +6,7 @@ */ import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; -import { CustomPaletteParams, PaletteOutput } from '@kbn/coloring'; +import { CUSTOM_PALETTE, CustomPaletteParams, PaletteOutput } from '@kbn/coloring'; import { ExpressionAstExpression, ExpressionAstFunction } from '@kbn/expressions-plugin/common'; import { euiLightVars, euiThemeVars } from '@kbn/ui-theme'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; @@ -36,9 +36,13 @@ describe('metric visualization', () => { const palette: PaletteOutput<CustomPaletteParams> = { type: 'palette', - name: 'foo', + name: CUSTOM_PALETTE, params: { rangeType: 'percent', + stops: [ + { color: 'blue', stop: 0 }, + { color: 'yellow', stop: 100 }, + ], }, }; @@ -133,7 +137,10 @@ describe('metric visualization', () => { Array [ Object { "columnId": "metric-col-id", - "palette": Array [], + "palette": Array [ + "blue", + "yellow", + ], "triggerIconType": "colorBy", }, ] @@ -183,7 +190,10 @@ describe('metric visualization', () => { Array [ Object { "columnId": "metric-col-id", - "palette": Array [], + "palette": Array [ + "blue", + "yellow", + ], "triggerIconType": "colorBy", }, ] diff --git a/x-pack/plugins/lens/public/visualizations/metric/visualization.tsx b/x-pack/plugins/lens/public/visualizations/metric/visualization.tsx index 6d3bd42f26cfa..eb16bd36e683e 100644 --- a/x-pack/plugins/lens/public/visualizations/metric/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/metric/visualization.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; -import { PaletteRegistry } from '@kbn/coloring'; +import { PaletteRegistry, getOverridePaletteStops } from '@kbn/coloring'; import { ThemeServiceStart } from '@kbn/core/public'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; import { euiLightVars, euiThemeVars } from '@kbn/ui-theme'; @@ -60,6 +60,7 @@ export const metricLabel = i18n.translate('xpack.lens.metric.label', { }); const getMetricLayerConfiguration = ( + paletteService: PaletteRegistry, props: VisualizationConfigProps<MetricVisualizationState> ): { groups: VisualizationDimensionGroupConfig[]; @@ -73,17 +74,20 @@ const getMetricLayerConfiguration = ( const getPrimaryAccessorDisplayConfig = (): Partial<AccessorConfig> => { const hasDynamicColoring = Boolean(isMetricNumeric && props.state.palette); - const stops = props.state.palette?.params?.stops || []; - return hasDynamicColoring - ? { - triggerIconType: 'colorBy', - palette: stops.map(({ color }) => color), - } - : { - triggerIconType: 'color', - color: props.state.color ?? getDefaultColor(props.state, isMetricNumeric), - }; + if (hasDynamicColoring) { + const stops = getOverridePaletteStops(paletteService, props.state.palette); + + return { + triggerIconType: 'colorBy', + palette: stops?.map(({ color }) => color), + }; + } + + return { + triggerIconType: 'color', + color: props.state.color ?? getDefaultColor(props.state, isMetricNumeric), + }; }; const isBucketed = (op: OperationMetadata) => op.isBucketed; @@ -354,7 +358,7 @@ export const getMetricVisualization = ({ getConfiguration(props) { return props.layerId === props.state.layerId - ? getMetricLayerConfiguration(props) + ? getMetricLayerConfiguration(paletteService, props) : getTrendlineLayerConfiguration(props); }, diff --git a/x-pack/plugins/lens/public/visualizations/partition/dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/partition/dimension_editor.tsx index 32f8f2e4c972a..21cd550d4f53d 100644 --- a/x-pack/plugins/lens/public/visualizations/partition/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/partition/dimension_editor.tsx @@ -14,17 +14,20 @@ import { PaletteRegistry, ColorMapping, SPECIAL_TOKENS_STRING_CONVERSION, - AVAILABLE_PALETTES, - getColorsFromMapping, } from '@kbn/coloring'; import { ColorPicker } from '@kbn/visualization-ui-components'; import { useDebouncedValue } from '@kbn/visualization-utils'; import { EuiFormRow, EuiFlexGroup, EuiFlexItem, EuiSwitch, EuiText, EuiBadge } from '@elastic/eui'; import { useState, useCallback } from 'react'; import { getColorCategories } from '@kbn/chart-expressions-common'; +import { KbnPalette, KbnPalettes } from '@kbn/palettes'; import { PieVisualizationState } from '../../../common/types'; import { VisualizationDimensionEditorProps } from '../../types'; -import { PalettePanelContainer, PalettePicker } from '../../shared_components'; +import { + PalettePanelContainer, + PalettePicker, + getPaletteDisplayColors, +} from '../../shared_components'; import { CollapseSetting } from '../../shared_components/collapse_setting'; import { getDefaultColorForMultiMetricDimension, @@ -35,6 +38,7 @@ import { trackUiCounterEvents } from '../../lens_ui_telemetry'; type DimensionEditorProps = VisualizationDimensionEditorProps<PieVisualizationState> & { paletteService: PaletteRegistry; + palettes: KbnPalettes; isDarkMode: boolean; }; @@ -118,7 +122,13 @@ export function DimensionEditor(props: DimensionEditorProps) { }) : undefined; - const colors = getColorsFromMapping(props.isDarkMode, currentLayer.colorMapping); + const colors = getPaletteDisplayColors( + props.paletteService, + props.palettes, + props.isDarkMode, + props.state.palette, + currentLayer.colorMapping + ); const table = props.frame.activeData?.[currentLayer.layerId]; const splitCategories = getColorCategories(table?.rows ?? [], props.accessor); @@ -183,7 +193,7 @@ export function DimensionEditor(props: DimensionEditorProps) { isDarkMode={props.isDarkMode} model={currentLayer.colorMapping ?? { ...DEFAULT_COLOR_MAPPING_CONFIG }} onModelUpdate={(model: ColorMapping.Config) => setColorMapping(model)} - palettes={AVAILABLE_PALETTES} + palettes={props.palettes} data={{ type: 'categories', categories: splitCategories, @@ -209,6 +219,7 @@ export function DimensionEditor(props: DimensionEditorProps) { {showColorPicker && ( <ColorPicker {...props} + swatches={props.palettes.get(KbnPalette.Default).colors(10)} overwriteColor={currentLayer.colorsByDimension?.[props.accessor]} defaultColor={getDefaultColorForMultiMetricDimension({ layer: currentLayer, diff --git a/x-pack/plugins/lens/public/visualizations/partition/visualization.tsx b/x-pack/plugins/lens/public/visualizations/partition/visualization.tsx index 8d44fec4e96e4..b564f6dbd7d4d 100644 --- a/x-pack/plugins/lens/public/visualizations/partition/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/partition/visualization.tsx @@ -14,13 +14,14 @@ import { PaletteRegistry, getColorsFromMapping, } from '@kbn/coloring'; -import { ThemeServiceStart } from '@kbn/core/public'; +import { CoreTheme, ThemeServiceStart } from '@kbn/core/public'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; import { EuiSpacer } from '@elastic/eui'; import { PartitionVisConfiguration } from '@kbn/visualizations-plugin/common/convert_to_lens'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; import { AccessorConfig } from '@kbn/visualization-ui-components'; import useObservable from 'react-use/lib/useObservable'; +import { getKbnPalettes } from '@kbn/palettes'; import type { FormBasedPersistedState } from '../../datasources/form_based/types'; import type { Visualization, @@ -201,8 +202,10 @@ export const getPieVisualization = ({ kibanaTheme.theme$ .subscribe({ next(theme) { + const palettes = getKbnPalettes(theme); + colors = state.layers[0]?.colorMapping - ? getColorsFromMapping(theme.darkMode, state.layers[0].colorMapping) + ? getColorsFromMapping(palettes, theme.darkMode, state.layers[0].colorMapping) : paletteService .get(state.palette?.name || 'default') .getCategoricalColors(10, state.palette?.params); @@ -494,11 +497,19 @@ export const getPieVisualization = ({ }; }, DimensionEditorComponent(props) { - const isDarkMode = useObservable(kibanaTheme.theme$, { + const theme = useObservable<CoreTheme>(kibanaTheme.theme$, { darkMode: false, name: 'amsterdam', - }).darkMode; - return <DimensionEditor {...props} paletteService={paletteService} isDarkMode={isDarkMode} />; + }); + const palettes = getKbnPalettes(theme); + return ( + <DimensionEditor + {...props} + paletteService={paletteService} + palettes={palettes} + isDarkMode={theme.darkMode} + /> + ); }, DimensionEditorDataExtraComponent(props) { return <DimensionDataExtraEditor {...props} paletteService={paletteService} />; diff --git a/x-pack/plugins/lens/public/visualizations/tagcloud/tagcloud_visualization.tsx b/x-pack/plugins/lens/public/visualizations/tagcloud/tagcloud_visualization.tsx index b457926fe373d..16ba1ecf61b75 100644 --- a/x-pack/plugins/lens/public/visualizations/tagcloud/tagcloud_visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/tagcloud/tagcloud_visualization.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; -import { ThemeServiceStart } from '@kbn/core/public'; +import { CoreTheme, ThemeServiceStart } from '@kbn/core/public'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; import type { ExpressionTagcloudFunctionDefinition } from '@kbn/expression-tagcloud-plugin/common'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; @@ -20,6 +20,7 @@ import { PaletteRegistry, getColorsFromMapping } from '@kbn/coloring'; import { IconChartTagcloud } from '@kbn/chart-icons'; import { SystemPaletteExpressionFunctionDefinition } from '@kbn/charts-plugin/common'; import useObservable from 'react-use/lib/useObservable'; +import { getKbnPalettes } from '@kbn/palettes'; import type { OperationMetadata, Visualization } from '../..'; import { getColorMappingDefaults } from '../../utils'; import type { TagcloudState } from './types'; @@ -122,7 +123,8 @@ export const getTagcloudVisualization = ({ kibanaTheme.theme$ .subscribe({ next(theme) { - colors = getColorsFromMapping(theme.darkMode, state.colorMapping); + const palettes = getKbnPalettes(theme); + colors = getColorsFromMapping(palettes, theme.darkMode, state.colorMapping); }, }) .unsubscribe(); @@ -294,15 +296,18 @@ export const getTagcloudVisualization = ({ }, DimensionEditorComponent(props) { - const isDarkMode: boolean = useObservable(kibanaTheme.theme$, { + const theme = useObservable<CoreTheme>(kibanaTheme.theme$, { darkMode: false, name: 'amsterdam', - }).darkMode; + }); + const palettes = getKbnPalettes(theme); + if (props.groupId === TAG_GROUP_ID) { return ( <TagsDimensionEditor - isDarkMode={isDarkMode} + isDarkMode={theme.darkMode} paletteService={paletteService} + palettes={palettes} state={props.state} setState={props.setState} frame={props.frame} diff --git a/x-pack/plugins/lens/public/visualizations/tagcloud/tags_dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/tagcloud/tags_dimension_editor.tsx index 4e28701fd677a..5dea1057c3712 100644 --- a/x-pack/plugins/lens/public/visualizations/tagcloud/tags_dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/tagcloud/tags_dimension_editor.tsx @@ -13,21 +13,25 @@ import { ColorMapping, SPECIAL_TOKENS_STRING_CONVERSION, PaletteOutput, - AVAILABLE_PALETTES, - getColorsFromMapping, } from '@kbn/coloring'; import { i18n } from '@kbn/i18n'; import { EuiFlexGroup, EuiFlexItem, EuiSwitch, EuiFormRow, EuiText, EuiBadge } from '@elastic/eui'; import { useState, MutableRefObject, useCallback } from 'react'; import { useDebouncedValue } from '@kbn/visualization-utils'; import { getColorCategories } from '@kbn/chart-expressions-common'; +import { KbnPalettes } from '@kbn/palettes'; import type { TagcloudState } from './types'; -import { PalettePanelContainer, PalettePicker } from '../../shared_components'; +import { + PalettePanelContainer, + PalettePicker, + getPaletteDisplayColors, +} from '../../shared_components'; import { FramePublicAPI } from '../../types'; import { trackUiCounterEvents } from '../../lens_ui_telemetry'; interface Props { paletteService: PaletteRegistry; + palettes: KbnPalettes; state: TagcloudState; setState: (state: TagcloudState) => void; frame: FramePublicAPI; @@ -42,6 +46,7 @@ export function TagsDimensionEditor({ setState, panelRef, isDarkMode, + palettes, paletteService, isInlineEditing, }: Props) { @@ -52,7 +57,13 @@ export function TagsDimensionEditor({ }); const [useNewColorMapping, setUseNewColorMapping] = useState(state.colorMapping ? true : false); - const colors = getColorsFromMapping(isDarkMode, state.colorMapping); + const colors = getPaletteDisplayColors( + paletteService, + palettes, + isDarkMode, + state.palette, + state.colorMapping + ); const table = frame.activeData?.[state.layerId]; const splitCategories = getColorCategories(table?.rows ?? [], state.tagAccessor); @@ -136,7 +147,7 @@ export function TagsDimensionEditor({ isDarkMode={isDarkMode} model={state.colorMapping ?? { ...DEFAULT_COLOR_MAPPING_CONFIG }} onModelUpdate={(model: ColorMapping.Config) => setColorMapping(model)} - palettes={AVAILABLE_PALETTES} + palettes={palettes} data={{ type: 'categories', categories: splitCategories, diff --git a/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/revert_changes_action.tsx b/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/revert_changes_action.tsx index 7593374ca83c5..61408286af1db 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/revert_changes_action.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/revert_changes_action.tsx @@ -36,7 +36,10 @@ export const getRevertChangesAction = ({ state: XYState; layer: XYByReferenceAnnotationLayerConfig; setState: StateSetter<XYState, unknown>; - core: Pick<CoreStart, 'overlays' | 'analytics' | 'i18n' | 'theme' | 'notifications'>; + core: Pick< + CoreStart, + 'overlays' | 'analytics' | 'i18n' | 'theme' | 'notifications' | 'userProfile' + >; }): LayerAction => { return { displayName: i18n.translate('xpack.lens.xyChart.annotations.revertChanges', { diff --git a/x-pack/plugins/lens/public/visualizations/xy/visualization.test.tsx b/x-pack/plugins/lens/public/visualizations/xy/visualization.test.tsx index e2c6ce25bd2e3..ecb3c16fb6dda 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/visualization.test.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/visualization.test.tsx @@ -224,7 +224,7 @@ describe('xy_visualization', () => { "colorMode": Object { "type": "categorical", }, - "paletteId": "eui_amsterdam_color_blind", + "paletteId": "default", "specialAssignments": Array [ Object { "color": Object { diff --git a/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx b/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx index a01c26ece9c13..ceba71c4d4f35 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx @@ -12,7 +12,7 @@ import { i18n } from '@kbn/i18n'; import type { PaletteRegistry } from '@kbn/coloring'; import { IconChartBarReferenceLine, IconChartBarAnnotations } from '@kbn/chart-icons'; import { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; -import { CoreStart, SavedObjectReference, ThemeServiceStart } from '@kbn/core/public'; +import { CoreStart, CoreTheme, SavedObjectReference, ThemeServiceStart } from '@kbn/core/public'; import { EventAnnotationServiceType } from '@kbn/event-annotation-plugin/public'; import { getAnnotationAccessor } from '@kbn/event-annotation-components'; import { VIS_EVENT_TO_TRIGGER } from '@kbn/visualizations-plugin/public'; @@ -29,6 +29,7 @@ import { getColorsFromMapping } from '@kbn/coloring'; import useObservable from 'react-use/lib/useObservable'; import { EuiPopover, EuiSelectable } from '@elastic/eui'; import { ToolbarButton } from '@kbn/shared-ux-button-toolbar'; +import { getKbnPalettes } from '@kbn/palettes'; import { generateId } from '../../id_generator'; import { isDraggedDataViewField, @@ -466,14 +467,14 @@ export const getXyVisualization = ({ kibanaTheme.theme$ .subscribe({ next(theme) { - colors = getColorsFromMapping(theme.darkMode, layer.colorMapping); + const palettes = getKbnPalettes(theme); + colors = getColorsFromMapping(palettes, theme.darkMode, layer.colorMapping); }, }) .unsubscribe(); } else { - colors = paletteService - .get(dataLayer.palette?.name || 'default') - .getCategoricalColors(10, dataLayer.palette?.params); + const palette = paletteService.get(dataLayer.palette?.name || 'default'); + colors = palette.getCategoricalColors(10, dataLayer.palette?.params); } return { @@ -742,17 +743,18 @@ export const getXyVisualization = ({ paletteService, }; - const isDarkMode: boolean = useObservable(kibanaTheme.theme$, { + const theme = useObservable<CoreTheme>(kibanaTheme.theme$, { darkMode: false, name: 'amsterdam', - }).darkMode; + }); + const palettes = getKbnPalettes(theme); const layer = props.state.layers.find((l) => l.layerId === props.layerId)!; const dimensionEditor = isReferenceLayer(layer) ? ( - <ReferenceLinePanel {...allProps} /> + <ReferenceLinePanel {...allProps} palettes={palettes} /> ) : isAnnotationsLayer(layer) ? ( <AnnotationsPanel {...allProps} dataViewsService={dataViewsService} /> ) : ( - <DataDimensionEditor {...allProps} isDarkMode={isDarkMode} /> + <DataDimensionEditor {...allProps} palettes={palettes} isDarkMode={theme.darkMode} /> ); return dimensionEditor; diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.test.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.test.tsx index 08a83ef7e0176..42224fa5f0506 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.test.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.test.tsx @@ -18,6 +18,7 @@ import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { EuiColorPicker } from '@elastic/eui'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; import { act } from 'react-dom/test-utils'; +import { getKbnPalettes } from '@kbn/palettes'; describe('XY Config panels', () => { let frame: FramePublicAPI; @@ -63,6 +64,7 @@ describe('XY Config panels', () => { }} formatFactory={jest.fn()} paletteService={chartPluginMock.createPaletteRegistry()} + palettes={getKbnPalettes({ name: 'amsterdam', darkMode: false })} panelRef={React.createRef()} addLayer={jest.fn()} removeLayer={jest.fn()} @@ -91,6 +93,7 @@ describe('XY Config panels', () => { state={state} formatFactory={jest.fn()} paletteService={chartPluginMock.createPaletteRegistry()} + palettes={getKbnPalettes({ name: 'amsterdam', darkMode: false })} panelRef={React.createRef()} addLayer={jest.fn()} removeLayer={jest.fn()} @@ -140,6 +143,7 @@ describe('XY Config panels', () => { state={state} formatFactory={jest.fn()} paletteService={chartPluginMock.createPaletteRegistry()} + palettes={getKbnPalettes({ name: 'amsterdam', darkMode: false })} panelRef={React.createRef()} addLayer={jest.fn()} removeLayer={jest.fn()} @@ -186,6 +190,7 @@ describe('XY Config panels', () => { state={state} formatFactory={jest.fn()} paletteService={chartPluginMock.createPaletteRegistry()} + palettes={getKbnPalettes({ name: 'amsterdam', darkMode: false })} panelRef={React.createRef()} addLayer={jest.fn()} removeLayer={jest.fn()} @@ -239,6 +244,7 @@ describe('XY Config panels', () => { state={state} formatFactory={jest.fn()} paletteService={chartPluginMock.createPaletteRegistry()} + palettes={getKbnPalettes({ name: 'amsterdam', darkMode: false })} panelRef={React.createRef()} addLayer={jest.fn()} removeLayer={jest.fn()} @@ -292,6 +298,7 @@ describe('XY Config panels', () => { state={state} formatFactory={jest.fn()} paletteService={chartPluginMock.createPaletteRegistry()} + palettes={getKbnPalettes({ name: 'amsterdam', darkMode: false })} panelRef={React.createRef()} addLayer={jest.fn()} removeLayer={jest.fn()} diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.tsx index f06f2d861d865..994e254bea954 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/dimension_editor.tsx @@ -14,6 +14,7 @@ import { EuiButtonGroup, EuiFormRow, htmlIdGenerator } from '@elastic/eui'; import { PaletteRegistry, ColorMapping, PaletteOutput } from '@kbn/coloring'; import { getColorCategories } from '@kbn/chart-expressions-common'; import type { ValuesType } from 'utility-types'; +import { KbnPalette, KbnPalettes } from '@kbn/palettes'; import type { VisualizationDimensionEditorProps } from '../../../types'; import { State, XYState, XYDataLayerConfig, YConfig, YAxisMode } from '../types'; import { FormatFactory } from '../../../../common/types'; @@ -45,6 +46,7 @@ export function DataDimensionEditor( props: VisualizationDimensionEditorProps<State> & { formatFactory: FormatFactory; paletteService: PaletteRegistry; + palettes: KbnPalettes; isDarkMode: boolean; } ) { @@ -144,6 +146,7 @@ export function DataDimensionEditor( setPalette={setPalette} setColorMapping={setColorMapping} paletteService={props.paletteService} + palettes={props.palettes} panelRef={props.panelRef} categories={splitCategories} /> @@ -165,6 +168,7 @@ export function DataDimensionEditor( overwriteColor={overwriteColor} defaultColor={assignedColor} disabledMessage={disabledMessage} + swatches={props.palettes.get(KbnPalette.Default).colors(10)} setConfig={setConfig} /> diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/reference_line_config_panel/reference_line_panel.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/reference_line_config_panel/reference_line_panel.tsx index cd9bb66443998..e36e19dd80c20 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/reference_line_config_panel/reference_line_panel.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/reference_line_config_panel/reference_line_panel.tsx @@ -17,6 +17,7 @@ import { TextDecorationSetting, } from '@kbn/visualization-ui-components'; import { useDebouncedValue } from '@kbn/visualization-utils'; +import { KbnPalette, KbnPalettes } from '@kbn/palettes'; import { referenceLineIconsSet } from '../../../../shared_components/icon_set'; import type { VisualizationDimensionEditorProps } from '../../../../types'; import { State, XYState, XYReferenceLineLayerConfig, YConfig } from '../../types'; @@ -32,6 +33,7 @@ export const ReferenceLinePanel = ( props: VisualizationDimensionEditorProps<State> & { formatFactory: FormatFactory; paletteService: PaletteRegistry; + palettes: KbnPalettes; } ) => { const { state, setState, layerId, accessor } = props; @@ -98,6 +100,7 @@ export const ReferenceLinePanel = ( defaultColor={defaultReferenceLineColor} setConfig={setConfig} disableHelpTooltip + swatches={props.palettes.get(KbnPalette.Default).colors(10)} label={i18n.translate('xpack.lens.xyChart.lineColor.label', { defaultMessage: 'Color', })} diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/visual_options_popover/missing_values_option.tsx b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/visual_options_popover/missing_values_option.tsx index d39a1a410d6aa..c3275a5e643f0 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/visual_options_popover/missing_values_option.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_config_panel/visual_options_popover/missing_values_option.tsx @@ -88,6 +88,7 @@ export const MissingValuesOptions: React.FC<MissingValuesOptionProps> = ({ {fittingFunction && fittingFunction !== FittingFunctions.NONE && ( <> <EuiFormRow + fullWidth display="columnCompressed" label={i18n.translate('xpack.lens.xyChart.endValuesLabel', { defaultMessage: 'End values', @@ -117,6 +118,7 @@ export const MissingValuesOptions: React.FC<MissingValuesOptionProps> = ({ /> </EuiFormRow> <EuiFormRow + fullWidth label={i18n.translate('xpack.lens.xyChart.missingValuesStyle', { defaultMessage: 'Show as dotted line', })} diff --git a/x-pack/plugins/lens/tsconfig.json b/x-pack/plugins/lens/tsconfig.json index 39ec693856441..ca1a9b8fd0b16 100644 --- a/x-pack/plugins/lens/tsconfig.json +++ b/x-pack/plugins/lens/tsconfig.json @@ -114,6 +114,7 @@ "@kbn/es-types", "@kbn/esql-datagrid", "@kbn/transpose-utils", + "@kbn/palettes", "@kbn/core-application-browser", "@kbn/core-chrome-browser", "@kbn/core-capabilities-common", diff --git a/x-pack/plugins/license_api_guard/jest.config.js b/x-pack/plugins/license_api_guard/jest.config.js deleted file mode 100644 index c6c1bc1bd501a..0000000000000 --- a/x-pack/plugins/license_api_guard/jest.config.js +++ /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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/license_api_guard'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/license_api_guard', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/license_api_guard/server/**/*.{ts,tsx}'], -}; diff --git a/x-pack/plugins/license_api_guard/tsconfig.json b/x-pack/plugins/license_api_guard/tsconfig.json deleted file mode 100644 index e5c87114bd54d..0000000000000 --- a/x-pack/plugins/license_api_guard/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "server/**/*" - ], - "kbn_references": [ - "@kbn/licensing-plugin", - "@kbn/core", - "@kbn/i18n", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/license_management/jest.config.js b/x-pack/plugins/license_management/jest.config.js deleted file mode 100644 index 59634448ee26c..0000000000000 --- a/x-pack/plugins/license_management/jest.config.js +++ /dev/null @@ -1,17 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/license_management'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/license_management', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/license_management/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/license_management/tsconfig.json b/x-pack/plugins/license_management/tsconfig.json deleted file mode 100644 index eaa0cee9f90c7..0000000000000 --- a/x-pack/plugins/license_management/tsconfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "public/**/*", - "server/**/*", - "common/**/*", - "__jest__/**/*", - "__mocks__/*", - ], - "kbn_references": [ - "@kbn/core", - "@kbn/kibana-react-plugin", - "@kbn/telemetry-management-section-plugin", - "@kbn/management-plugin", - "@kbn/telemetry-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/licensing-plugin", - "@kbn/features-plugin", - "@kbn/security-plugin", - "@kbn/i18n-react", - "@kbn/i18n", - "@kbn/config-schema", - "@kbn/test-jest-helpers", - "@kbn/shared-ux-router", - "@kbn/utility-types", - "@kbn/share-plugin", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_item.test.ts b/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_item.test.ts index 7cb2311c5e10a..95ca6285f0d74 100644 --- a/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_item.test.ts +++ b/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_item.test.ts @@ -5,14 +5,10 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; -import * as api from '@kbn/securitysolution-list-api'; -import { PersistHookProps } from '@kbn/securitysolution-io-ts-list-types'; -import { - ReturnPersistExceptionItem, - usePersistExceptionItem, -} from '@kbn/securitysolution-list-hooks'; +import { act, renderHook, waitFor } from '@testing-library/react'; import { coreMock } from '@kbn/core/public/mocks'; +import { usePersistExceptionItem } from '@kbn/securitysolution-list-hooks'; +import * as api from '@kbn/securitysolution-list-api/src/api'; import { ENTRIES_WITH_IDS } from '../../../common/constants.mock'; import { getCreateExceptionListItemSchemaMock } from '../../../common/schemas/request/create_exception_list_item_schema.mock'; @@ -20,16 +16,22 @@ import { getUpdateExceptionListItemSchemaMock } from '../../../common/schemas/re import { getExceptionListItemSchemaMock } from '../../../common/schemas/response/exception_list_item_schema.mock'; const mockKibanaHttpService = coreMock.createStart().http; -jest.mock('@kbn/securitysolution-list-api'); // TODO: Port this test over to packages/kbn-securitysolution-list-hooks/src/use_persist_exception_item/index.test.ts once the other mocks are added to the kbn package system describe('usePersistExceptionItem', () => { + let addExceptionListItemSpy: jest.SpyInstance<ReturnType<typeof api.addEndpointExceptionList>>; + let updateExceptionListItemSpy: jest.SpyInstance<ReturnType<typeof api.updateExceptionListItem>>; const onError = jest.fn(); + beforeAll(() => { + addExceptionListItemSpy = jest.spyOn(api, 'addExceptionListItem'); + updateExceptionListItemSpy = jest.spyOn(api, 'updateExceptionListItem'); + }); + beforeEach(() => { - jest.spyOn(api, 'addExceptionListItem').mockResolvedValue(getExceptionListItemSchemaMock()); - jest.spyOn(api, 'updateExceptionListItem').mockResolvedValue(getExceptionListItemSchemaMock()); + addExceptionListItemSpy.mockResolvedValue(getExceptionListItemSchemaMock()); + updateExceptionListItemSpy.mockResolvedValue(getExceptionListItemSchemaMock()); }); afterEach(() => { @@ -37,7 +39,7 @@ describe('usePersistExceptionItem', () => { }); test('initializes hook', async () => { - const { result } = renderHook<PersistHookProps, ReturnPersistExceptionItem>(() => + const { result } = renderHook(() => usePersistExceptionItem({ http: mockKibanaHttpService, onError }) ); @@ -45,101 +47,106 @@ describe('usePersistExceptionItem', () => { }); test('"isLoading" is "true" when exception item is being saved', async () => { - await act(async () => { - const { result, rerender, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionItem - >(() => usePersistExceptionItem({ http: mockKibanaHttpService, onError })); + const { result } = renderHook(() => + usePersistExceptionItem({ http: mockKibanaHttpService, onError }) + ); - await waitForNextUpdate(); + await waitFor(() => + expect(result.current).toEqual([{ isLoading: false, isSaved: false }, result.current[1]]) + ); + + act(() => { result.current[1](getCreateExceptionListItemSchemaMock()); - rerender(); + }); - expect(result.current).toEqual([{ isLoading: true, isSaved: false }, result.current[1]]); + expect(result.current).toEqual([{ isLoading: true, isSaved: false }, result.current[1]]); + + await waitFor(() => { + expect(addExceptionListItemSpy).toHaveBeenCalled(); + expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]); }); }); test('"isSaved" is "true" when exception item saved successfully', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionItem - >(() => usePersistExceptionItem({ http: mockKibanaHttpService, onError })); + const { result } = renderHook(() => + usePersistExceptionItem({ http: mockKibanaHttpService, onError }) + ); - await waitForNextUpdate(); + act(() => { result.current[1](getCreateExceptionListItemSchemaMock()); - await waitForNextUpdate(); - - expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]); }); + + await waitFor(() => + expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]) + ); }); test('it invokes "updateExceptionListItem" when payload has "id"', async () => { - const addExceptionListItem = jest.spyOn(api, 'addExceptionListItem'); - const updateExceptionListItem = jest.spyOn(api, 'updateExceptionListItem'); - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionItem - >(() => usePersistExceptionItem({ http: mockKibanaHttpService, onError })); - - await waitForNextUpdate(); + const { result } = renderHook(() => + usePersistExceptionItem({ http: mockKibanaHttpService, onError }) + ); + + await waitFor(() => new Promise((resolve) => resolve(null))); + + act(() => { // NOTE: Take note here passing in an exception item where it's // entries have been enriched with ids to ensure that they get stripped // before the call goes through result.current[1]({ ...getUpdateExceptionListItemSchemaMock(), entries: ENTRIES_WITH_IDS }); - await waitForNextUpdate(); + }); + await waitFor(() => { expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]); - expect(addExceptionListItem).not.toHaveBeenCalled(); - expect(updateExceptionListItem).toHaveBeenCalledWith({ - http: mockKibanaHttpService, - listItem: getUpdateExceptionListItemSchemaMock(), - signal: new AbortController().signal, - }); + }); + + expect(addExceptionListItemSpy).not.toHaveBeenCalled(); + expect(updateExceptionListItemSpy).toHaveBeenCalledWith({ + http: mockKibanaHttpService, + listItem: getUpdateExceptionListItemSchemaMock(), + signal: expect.any(AbortSignal), }); }); test('it invokes "addExceptionListItem" when payload does not have "id"', async () => { - const updateExceptionListItem = jest.spyOn(api, 'updateExceptionListItem'); - const addExceptionListItem = jest.spyOn(api, 'addExceptionListItem'); - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionItem - >(() => usePersistExceptionItem({ http: mockKibanaHttpService, onError })); - - await waitForNextUpdate(); + const { result } = renderHook(() => + usePersistExceptionItem({ http: mockKibanaHttpService, onError }) + ); + + await waitFor(() => new Promise((resolve) => resolve(null))); + + act(() => { // NOTE: Take note here passing in an exception item where it's // entries have been enriched with ids to ensure that they get stripped // before the call goes through result.current[1]({ ...getCreateExceptionListItemSchemaMock(), entries: ENTRIES_WITH_IDS }); - await waitForNextUpdate(); + }); + await waitFor(() => { expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]); - expect(updateExceptionListItem).not.toHaveBeenCalled(); - expect(addExceptionListItem).toHaveBeenCalledWith({ - http: mockKibanaHttpService, - listItem: getCreateExceptionListItemSchemaMock(), - signal: new AbortController().signal, - }); + }); + + expect(updateExceptionListItemSpy).not.toHaveBeenCalled(); + expect(addExceptionListItemSpy).toHaveBeenCalledWith({ + http: mockKibanaHttpService, + listItem: getCreateExceptionListItemSchemaMock(), + signal: expect.any(AbortSignal), }); }); test('"onError" callback is invoked and "isSaved" is "false" when api call fails', async () => { const error = new Error('persist rule failed'); - jest.spyOn(api, 'addExceptionListItem').mockRejectedValue(error); - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionItem - >(() => usePersistExceptionItem({ http: mockKibanaHttpService, onError })); + addExceptionListItemSpy.mockRejectedValue(error); - await waitForNextUpdate(); - result.current[1](getCreateExceptionListItemSchemaMock()); - await waitForNextUpdate(); + const { result } = renderHook(() => + usePersistExceptionItem({ http: mockKibanaHttpService, onError }) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + act(() => { + result.current[1](getCreateExceptionListItemSchemaMock()); + }); + await waitFor(() => { expect(result.current).toEqual([{ isLoading: false, isSaved: false }, result.current[1]]); expect(onError).toHaveBeenCalledWith(error); }); diff --git a/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_list.test.ts b/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_list.test.ts index 09257c489a895..c27888b6d8cc6 100644 --- a/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_list.test.ts +++ b/x-pack/plugins/lists/public/exceptions/hooks/persist_exception_list.test.ts @@ -5,13 +5,9 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { act, renderHook, waitFor } from '@testing-library/react'; import * as api from '@kbn/securitysolution-list-api'; -import { PersistHookProps } from '@kbn/securitysolution-io-ts-list-types'; -import { - ReturnPersistExceptionList, - usePersistExceptionList, -} from '@kbn/securitysolution-list-hooks'; +import { usePersistExceptionList } from '@kbn/securitysolution-list-hooks'; import { coreMock } from '@kbn/core/public/mocks'; import { getCreateExceptionListSchemaMock } from '../../../common/schemas/request/create_exception_list_schema.mock'; @@ -37,7 +33,7 @@ describe('usePersistExceptionList', () => { }); test('initializes hook', async () => { - const { result } = renderHook<PersistHookProps, ReturnPersistExceptionList>(() => + const { result } = renderHook(() => usePersistExceptionList({ http: mockKibanaHttpService, onError }) ); @@ -45,46 +41,48 @@ describe('usePersistExceptionList', () => { }); test('"isLoading" is "true" when exception item is being saved', async () => { - await act(async () => { - const { result, rerender, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionList - >(() => usePersistExceptionList({ http: mockKibanaHttpService, onError })); - await waitForNextUpdate(); + const { result, rerender } = renderHook(() => + usePersistExceptionList({ http: mockKibanaHttpService, onError }) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + act(() => { result.current[1](getCreateExceptionListSchemaMock()); - rerender(); - - expect(result.current).toEqual([{ isLoading: true, isSaved: false }, result.current[1]]); }); + rerender(); + + expect(result.current).toEqual([{ isLoading: true, isSaved: false }, result.current[1]]); }); test('"isSaved" is "true" when exception item saved successfully', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionList - >(() => usePersistExceptionList({ http: mockKibanaHttpService, onError })); - await waitForNextUpdate(); - result.current[1](getCreateExceptionListSchemaMock()); - await waitForNextUpdate(); + const { result } = renderHook(() => + usePersistExceptionList({ http: mockKibanaHttpService, onError }) + ); - expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]); + await waitFor(() => new Promise((resolve) => resolve(null))); + + act(() => { + result.current[1](getCreateExceptionListSchemaMock()); }); + + await waitFor(() => + expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]) + ); }); test('it invokes "updateExceptionList" when payload has "id"', async () => { const addException = jest.spyOn(api, 'addExceptionList'); const updateException = jest.spyOn(api, 'updateExceptionList'); - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionList - >(() => usePersistExceptionList({ http: mockKibanaHttpService, onError })); + const { result } = renderHook(() => + usePersistExceptionList({ http: mockKibanaHttpService, onError }) + ); + + await waitFor(() => new Promise((resolve) => resolve(null))); - await waitForNextUpdate(); + act(() => { result.current[1](getUpdateExceptionListSchemaMock()); - await waitForNextUpdate(); + }); + await waitFor(() => { expect(result.current).toEqual([{ isLoading: false, isSaved: true }, result.current[1]]); expect(addException).not.toHaveBeenCalled(); expect(updateException).toHaveBeenCalled(); @@ -95,15 +93,14 @@ describe('usePersistExceptionList', () => { const error = new Error('persist rule failed'); jest.spyOn(api, 'addExceptionList').mockRejectedValue(error); - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - PersistHookProps, - ReturnPersistExceptionList - >(() => usePersistExceptionList({ http: mockKibanaHttpService, onError })); - await waitForNextUpdate(); + const { result } = renderHook(() => + usePersistExceptionList({ http: mockKibanaHttpService, onError }) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + act(() => { result.current[1](getCreateExceptionListSchemaMock()); - await waitForNextUpdate(); - + }); + await waitFor(() => { expect(result.current).toEqual([{ isLoading: false, isSaved: false }, result.current[1]]); expect(onError).toHaveBeenCalledWith(error); }); diff --git a/x-pack/plugins/lists/public/exceptions/hooks/use_api.test.ts b/x-pack/plugins/lists/public/exceptions/hooks/use_api.test.ts index 55c8ebde7cebd..a980261ba5f86 100644 --- a/x-pack/plugins/lists/public/exceptions/hooks/use_api.test.ts +++ b/x-pack/plugins/lists/public/exceptions/hooks/use_api.test.ts @@ -5,9 +5,9 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { act, renderHook, waitFor } from '@testing-library/react'; import * as api from '@kbn/securitysolution-list-api'; -import { ExceptionsApi, useApi } from '@kbn/securitysolution-list-hooks'; +import { useApi } from '@kbn/securitysolution-list-hooks'; import type { AddExceptionListItemProps, ApiCallByIdProps, @@ -16,7 +16,6 @@ import type { UpdateExceptionListItemProps, } from '@kbn/securitysolution-io-ts-list-types'; import { coreMock } from '@kbn/core/public/mocks'; -import { HttpStart } from '@kbn/core/public'; import { ENTRIES_WITH_IDS } from '../../../common/constants.mock'; import { getUpdateExceptionListItemSchemaMock } from '../../../common/schemas/request/update_exception_list_item_schema.mock'; @@ -51,54 +50,50 @@ describe('useApi', () => { .spyOn(api, 'deleteExceptionListItemById') .mockResolvedValue(payload); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = payload; + const { id, namespace_type: namespaceType } = payload; + await act(async () => { await result.current.deleteExceptionItem({ id, namespaceType, onError: jest.fn(), onSuccess: onSuccessMock, }); + }); - const expected: ApiCallByIdProps = { - http: mockKibanaHttpService, - id, - namespaceType, - signal: new AbortController().signal, - }; + const expected: ApiCallByIdProps = { + http: mockKibanaHttpService, + id, + namespaceType, + signal: new AbortController().signal, + }; - expect(spyOnDeleteExceptionListItemById).toHaveBeenCalledWith(expected); - expect(onSuccessMock).toHaveBeenCalled(); - }); + expect(spyOnDeleteExceptionListItemById).toHaveBeenCalledWith(expected); + expect(onSuccessMock).toHaveBeenCalled(); }); test('invokes "onError" callback if "deleteExceptionListItemById" fails', async () => { const mockError = new Error('failed to delete item'); jest.spyOn(api, 'deleteExceptionListItemById').mockRejectedValue(mockError); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = getExceptionListItemSchemaMock(); + const { id, namespace_type: namespaceType } = getExceptionListItemSchemaMock(); + await act(async () => { await result.current.deleteExceptionItem({ id, namespaceType, onError: onErrorMock, onSuccess: jest.fn(), }); - - expect(onErrorMock).toHaveBeenCalledWith(mockError); }); + + expect(onErrorMock).toHaveBeenCalledWith(mockError); }); }); @@ -110,54 +105,50 @@ describe('useApi', () => { .spyOn(api, 'deleteExceptionListById') .mockResolvedValue(payload); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = payload; + const { id, namespace_type: namespaceType } = payload; + await act(async () => { await result.current.deleteExceptionList({ id, namespaceType, onError: jest.fn(), onSuccess: onSuccessMock, }); + }); - const expected: ApiCallByIdProps = { - http: mockKibanaHttpService, - id, - namespaceType, - signal: new AbortController().signal, - }; + const expected: ApiCallByIdProps = { + http: mockKibanaHttpService, + id, + namespaceType, + signal: new AbortController().signal, + }; - expect(spyOnDeleteExceptionListById).toHaveBeenCalledWith(expected); - expect(onSuccessMock).toHaveBeenCalled(); - }); + expect(spyOnDeleteExceptionListById).toHaveBeenCalledWith(expected); + expect(onSuccessMock).toHaveBeenCalled(); }); test('invokes "onError" callback if "deleteExceptionListById" fails', async () => { const mockError = new Error('failed to delete item'); jest.spyOn(api, 'deleteExceptionListById').mockRejectedValue(mockError); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = getExceptionListSchemaMock(); + const { id, namespace_type: namespaceType } = getExceptionListSchemaMock(); + await act(async () => { await result.current.deleteExceptionList({ id, namespaceType, onError: onErrorMock, onSuccess: jest.fn(), }); - - expect(onErrorMock).toHaveBeenCalledWith(mockError); }); + + expect(onErrorMock).toHaveBeenCalledWith(mockError); }); }); @@ -169,58 +160,54 @@ describe('useApi', () => { .spyOn(api, 'fetchExceptionListItemById') .mockResolvedValue(payload); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = payload; + const { id, namespace_type: namespaceType } = payload; + await act(async () => { await result.current.getExceptionItem({ id, namespaceType, onError: jest.fn(), onSuccess: onSuccessMock, }); - - const expected: ApiCallByIdProps = { - http: mockKibanaHttpService, - id, - namespaceType, - signal: new AbortController().signal, - }; - const expectedExceptionListItem = { - ...getExceptionListItemSchemaMock(), - entries: ENTRIES_WITH_IDS, - }; - - expect(spyOnFetchExceptionListItemById).toHaveBeenCalledWith(expected); - expect(onSuccessMock).toHaveBeenCalledWith(expectedExceptionListItem); }); + + const expected: ApiCallByIdProps = { + http: mockKibanaHttpService, + id, + namespaceType, + signal: new AbortController().signal, + }; + const expectedExceptionListItem = { + ...getExceptionListItemSchemaMock(), + entries: ENTRIES_WITH_IDS, + }; + + expect(spyOnFetchExceptionListItemById).toHaveBeenCalledWith(expected); + expect(onSuccessMock).toHaveBeenCalledWith(expectedExceptionListItem); }); test('invokes "onError" callback if "fetchExceptionListItemById" fails', async () => { const mockError = new Error('failed to delete item'); jest.spyOn(api, 'fetchExceptionListItemById').mockRejectedValue(mockError); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = getExceptionListSchemaMock(); + const { id, namespace_type: namespaceType } = getExceptionListSchemaMock(); + await act(async () => { await result.current.getExceptionItem({ id, namespaceType, onError: onErrorMock, onSuccess: jest.fn(), }); - - expect(onErrorMock).toHaveBeenCalledWith(mockError); }); + + expect(onErrorMock).toHaveBeenCalledWith(mockError); }); }); @@ -232,54 +219,50 @@ describe('useApi', () => { .spyOn(api, 'fetchExceptionListById') .mockResolvedValue(payload); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = payload; + const { id, namespace_type: namespaceType } = payload; + await act(async () => { await result.current.getExceptionList({ id, namespaceType, onError: jest.fn(), onSuccess: onSuccessMock, }); + }); - const expected: ApiCallByIdProps = { - http: mockKibanaHttpService, - id, - namespaceType, - signal: new AbortController().signal, - }; + const expected: ApiCallByIdProps = { + http: mockKibanaHttpService, + id, + namespaceType, + signal: new AbortController().signal, + }; - expect(spyOnFetchExceptionListById).toHaveBeenCalledWith(expected); - expect(onSuccessMock).toHaveBeenCalled(); - }); + expect(spyOnFetchExceptionListById).toHaveBeenCalledWith(expected); + expect(onSuccessMock).toHaveBeenCalled(); }); test('invokes "onError" callback if "fetchExceptionListById" fails', async () => { const mockError = new Error('failed to delete item'); jest.spyOn(api, 'fetchExceptionListById').mockRejectedValue(mockError); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); - const { id, namespace_type: namespaceType } = getExceptionListSchemaMock(); + const { id, namespace_type: namespaceType } = getExceptionListSchemaMock(); + await act(async () => { await result.current.getExceptionList({ id, namespaceType, onError: onErrorMock, onSuccess: jest.fn(), }); - - expect(onErrorMock).toHaveBeenCalledWith(mockError); }); + + expect(onErrorMock).toHaveBeenCalledWith(mockError); }); }); @@ -291,12 +274,10 @@ describe('useApi', () => { .spyOn(api, 'fetchExceptionListsItemsByListIds') .mockResolvedValue(output); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); + await act(async () => { await result.current.getExceptionListsItems({ lists: [ { id: 'myListId', listId: 'list_id', namespaceType: 'single', type: 'detection' }, @@ -311,28 +292,28 @@ describe('useApi', () => { showDetectionsListsOnly: false, showEndpointListsOnly: false, }); + }); - const expected: ApiCallByListIdProps = { - http: mockKibanaHttpService, - listIds: ['list_id'], - namespaceTypes: ['single'], - pagination: { - page: 1, - perPage: 1, - total: 0, - }, - signal: new AbortController().signal, - }; - - expect(spyOnFetchExceptionListsItemsByListIds).toHaveBeenCalledWith(expected); - expect(onSuccessMock).toHaveBeenCalledWith({ - exceptions: [{ ...getExceptionListItemSchemaMock(), entries: ENTRIES_WITH_IDS }], - pagination: { - page: 1, - perPage: 1, - total: 1, - }, - }); + const expected: ApiCallByListIdProps = { + http: mockKibanaHttpService, + listIds: ['list_id'], + namespaceTypes: ['single'], + pagination: { + page: 1, + perPage: 1, + total: 0, + }, + signal: new AbortController().signal, + }; + + expect(spyOnFetchExceptionListsItemsByListIds).toHaveBeenCalledWith(expected); + expect(onSuccessMock).toHaveBeenCalledWith({ + exceptions: [{ ...getExceptionListItemSchemaMock(), entries: ENTRIES_WITH_IDS }], + pagination: { + page: 1, + perPage: 1, + total: 1, + }, }); }); @@ -343,12 +324,10 @@ describe('useApi', () => { .spyOn(api, 'fetchExceptionListsItemsByListIds') .mockResolvedValue(output); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); + await act(async () => { await result.current.getExceptionListsItems({ lists: [ { id: 'myListId', listId: 'list_id', namespaceType: 'single', type: 'detection' }, @@ -363,16 +342,16 @@ describe('useApi', () => { showDetectionsListsOnly: false, showEndpointListsOnly: true, }); + }); - expect(spyOnFetchExceptionListsItemsByListIds).not.toHaveBeenCalled(); - expect(onSuccessMock).toHaveBeenCalledWith({ - exceptions: [], - pagination: { - page: 0, - perPage: 20, - total: 0, - }, - }); + expect(spyOnFetchExceptionListsItemsByListIds).not.toHaveBeenCalled(); + expect(onSuccessMock).toHaveBeenCalledWith({ + exceptions: [], + pagination: { + page: 0, + perPage: 20, + total: 0, + }, }); }); @@ -380,12 +359,10 @@ describe('useApi', () => { const mockError = new Error('failed to delete item'); jest.spyOn(api, 'fetchExceptionListsItemsByListIds').mockRejectedValue(mockError); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); + await act(async () => { await result.current.getExceptionListsItems({ lists: [ { id: 'myListId', listId: 'list_id', namespaceType: 'single', type: 'detection' }, @@ -400,9 +377,9 @@ describe('useApi', () => { showDetectionsListsOnly: false, showEndpointListsOnly: false, }); - - expect(onErrorMock).toHaveBeenCalledWith(mockError); }); + + expect(onErrorMock).toHaveBeenCalledWith(mockError); }); }); @@ -414,24 +391,22 @@ describe('useApi', () => { .spyOn(api, 'addExceptionListItem') .mockResolvedValue(payload); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); + await act(async () => { await result.current.addExceptionListItem({ listItem: itemToCreate, }); + }); - const expected: AddExceptionListItemProps = { - http: mockKibanaHttpService, - listItem: getCreateExceptionListItemSchemaMock(), - signal: new AbortController().signal, - }; + const expected: AddExceptionListItemProps = { + http: mockKibanaHttpService, + listItem: getCreateExceptionListItemSchemaMock(), + signal: new AbortController().signal, + }; - expect(spyOnFetchExceptionListItemById).toHaveBeenCalledWith(expected); - }); + expect(spyOnFetchExceptionListItemById).toHaveBeenCalledWith(expected); }); }); @@ -443,24 +418,22 @@ describe('useApi', () => { .spyOn(api, 'updateExceptionListItem') .mockResolvedValue(payload); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); + await act(async () => { await result.current.updateExceptionListItem({ listItem: itemToUpdate, }); + }); - const expected: UpdateExceptionListItemProps = { - http: mockKibanaHttpService, - listItem: getUpdateExceptionListItemSchemaMock(), - signal: new AbortController().signal, - }; + const expected: UpdateExceptionListItemProps = { + http: mockKibanaHttpService, + listItem: getUpdateExceptionListItemSchemaMock(), + signal: new AbortController().signal, + }; - expect(spyOnUpdateExceptionListItem).toHaveBeenCalledWith(expected); - }); + expect(spyOnUpdateExceptionListItem).toHaveBeenCalledWith(expected); }); }); @@ -471,12 +444,10 @@ describe('useApi', () => { .spyOn(api, 'duplicateExceptionList') .mockResolvedValue(getExceptionListSchemaMock()); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); + await act(async () => { await result.current.duplicateExceptionList({ includeExpiredExceptions: false, listId: 'my_list', @@ -484,30 +455,28 @@ describe('useApi', () => { onError: jest.fn(), onSuccess: onSuccessMock, }); + }); - const expected: DuplicateExceptionListProps = { - http: mockKibanaHttpService, - includeExpiredExceptions: false, - listId: 'my_list', - namespaceType: 'single', - signal: new AbortController().signal, - }; + const expected: DuplicateExceptionListProps = { + http: mockKibanaHttpService, + includeExpiredExceptions: false, + listId: 'my_list', + namespaceType: 'single', + signal: new AbortController().signal, + }; - expect(spyOnDuplicateExceptionList).toHaveBeenCalledWith(expected); - expect(onSuccessMock).toHaveBeenCalled(); - }); + expect(spyOnDuplicateExceptionList).toHaveBeenCalledWith(expected); + expect(onSuccessMock).toHaveBeenCalled(); }); test('invokes "onError" callback if "duplicateExceptionList" fails', async () => { const mockError = new Error('failed to duplicate item'); jest.spyOn(api, 'duplicateExceptionList').mockRejectedValue(mockError); - await act(async () => { - const { result, waitForNextUpdate } = renderHook<HttpStart, ExceptionsApi>(() => - useApi(mockKibanaHttpService) - ); - await waitForNextUpdate(); + const { result } = renderHook(() => useApi(mockKibanaHttpService)); + await waitFor(() => new Promise((resolve) => resolve(null))); + await act(async () => { await result.current.duplicateExceptionList({ includeExpiredExceptions: false, listId: 'my_list', @@ -515,9 +484,9 @@ describe('useApi', () => { onError: onErrorMock, onSuccess: jest.fn(), }); - - expect(onErrorMock).toHaveBeenCalledWith(mockError); }); + + expect(onErrorMock).toHaveBeenCalledWith(mockError); }); }); }); diff --git a/x-pack/plugins/lists/public/exceptions/hooks/use_exception_lists.test.ts b/x-pack/plugins/lists/public/exceptions/hooks/use_exception_lists.test.ts index 0148feff83d58..6c684d199e538 100644 --- a/x-pack/plugins/lists/public/exceptions/hooks/use_exception_lists.test.ts +++ b/x-pack/plugins/lists/public/exceptions/hooks/use_exception_lists.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, waitFor } from '@testing-library/react'; import type { ExceptionListSchema, UseExceptionListsProps, @@ -32,66 +32,53 @@ describe('useExceptionLists', () => { }); test('initializes hook', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseExceptionListsProps, - ReturnExceptionLists - >(() => - useExceptionLists({ - errorMessage: 'Uh oh', - filterOptions: {}, - http: mockKibanaHttpService, - initialPagination: { - page: 1, - perPage: 20, - total: 0, - }, - namespaceTypes: ['single', 'agnostic'], - notifications: mockKibanaNotificationsService, - }) - ); - await waitForNextUpdate(); - - expect(result.current).toEqual([ - true, - [], - { + const { result } = renderHook<ReturnExceptionLists, UseExceptionListsProps>(() => + useExceptionLists({ + errorMessage: 'Uh oh', + filterOptions: {}, + http: mockKibanaHttpService, + initialPagination: { page: 1, perPage: 20, total: 0, }, - expect.any(Function), - expect.any(Function), - { field: 'created_at', order: 'desc' }, - expect.any(Function), - ]); - }); + namespaceTypes: ['single', 'agnostic'], + notifications: mockKibanaNotificationsService, + }) + ); + + expect(result.current).toEqual([ + true, + [], + { + page: 1, + perPage: 20, + total: 0, + }, + expect.any(Function), + expect.any(Function), + { field: 'created_at', order: 'desc' }, + expect.any(Function), + ]); }); test('fetches exception lists', async () => { - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseExceptionListsProps, - ReturnExceptionLists - >(() => - useExceptionLists({ - errorMessage: 'Uh oh', - filterOptions: {}, - http: mockKibanaHttpService, - initialPagination: { - page: 1, - perPage: 20, - total: 0, - }, - namespaceTypes: ['single', 'agnostic'], - notifications: mockKibanaNotificationsService, - }) - ); - // NOTE: First `waitForNextUpdate` is initialization - // Second call applies the params - await waitForNextUpdate(); - await waitForNextUpdate(); + const { result } = renderHook(() => + useExceptionLists({ + errorMessage: 'Uh oh', + filterOptions: {}, + http: mockKibanaHttpService, + initialPagination: { + page: 1, + perPage: 20, + total: 0, + }, + namespaceTypes: ['single', 'agnostic'], + notifications: mockKibanaNotificationsService, + }) + ); + await waitFor(() => { const expectedListItemsResult: ExceptionListSchema[] = getFoundExceptionListSchemaMock().data; expect(result.current).toEqual([ @@ -113,27 +100,23 @@ describe('useExceptionLists', () => { test('does not fetch specific list id if it is added to the hideLists array', async () => { const spyOnfetchExceptionLists = jest.spyOn(api, 'fetchExceptionLists'); - await act(async () => { - const { waitForNextUpdate } = renderHook<UseExceptionListsProps, ReturnExceptionLists>(() => - useExceptionLists({ - errorMessage: 'Uh oh', - filterOptions: {}, - hideLists: ['listId-1'], - http: mockKibanaHttpService, - initialPagination: { - page: 1, - perPage: 20, - total: 0, - }, - namespaceTypes: ['single', 'agnostic'], - notifications: mockKibanaNotificationsService, - }) - ); - // NOTE: First `waitForNextUpdate` is initialization - // Second call applies the params - await waitForNextUpdate(); - await waitForNextUpdate(); + renderHook(() => + useExceptionLists({ + errorMessage: 'Uh oh', + filterOptions: {}, + hideLists: ['listId-1'], + http: mockKibanaHttpService, + initialPagination: { + page: 1, + perPage: 20, + total: 0, + }, + namespaceTypes: ['single', 'agnostic'], + notifications: mockKibanaNotificationsService, + }) + ); + await waitFor(() => expect(spyOnfetchExceptionLists).toHaveBeenCalledWith({ filters: '(not exception-list.attributes.list_id: listId-1* AND not exception-list-agnostic.attributes.list_id: listId-1*)', @@ -142,37 +125,33 @@ describe('useExceptionLists', () => { pagination: { page: 1, perPage: 20 }, signal: new AbortController().signal, sort: { field: 'created_at', order: 'desc' }, - }); - }); + }) + ); }); test('applies filters to query', async () => { const spyOnfetchExceptionLists = jest.spyOn(api, 'fetchExceptionLists'); - await act(async () => { - const { waitForNextUpdate } = renderHook<UseExceptionListsProps, ReturnExceptionLists>(() => - useExceptionLists({ - errorMessage: 'Uh oh', - filterOptions: { - created_by: 'Moi', - name: 'Sample Endpoint', - }, - hideLists: ['listId-1'], - http: mockKibanaHttpService, - initialPagination: { - page: 1, - perPage: 20, - total: 0, - }, - namespaceTypes: ['single', 'agnostic'], - notifications: mockKibanaNotificationsService, - }) - ); - // NOTE: First `waitForNextUpdate` is initialization - // Second call applies the params - await waitForNextUpdate(); - await waitForNextUpdate(); + renderHook(() => + useExceptionLists({ + errorMessage: 'Uh oh', + filterOptions: { + created_by: 'Moi', + name: 'Sample Endpoint', + }, + hideLists: ['listId-1'], + http: mockKibanaHttpService, + initialPagination: { + page: 1, + perPage: 20, + total: 0, + }, + namespaceTypes: ['single', 'agnostic'], + notifications: mockKibanaNotificationsService, + }) + ); + await waitFor(() => expect(spyOnfetchExceptionLists).toHaveBeenCalledWith({ filters: '(exception-list.attributes.created_by:Moi OR exception-list-agnostic.attributes.created_by:Moi) AND (exception-list.attributes.name.text:Sample Endpoint OR exception-list-agnostic.attributes.name.text:Sample Endpoint) AND (not exception-list.attributes.list_id: listId-1* AND not exception-list-agnostic.attributes.list_id: listId-1*)', @@ -184,47 +163,60 @@ describe('useExceptionLists', () => { field: 'created_at', order: 'desc', }, - }); - }); + }) + ); }); test('fetches a new exception list and its items when props change', async () => { const spyOnfetchExceptionLists = jest.spyOn(api, 'fetchExceptionLists'); - await act(async () => { - const { rerender, waitForNextUpdate } = renderHook< - UseExceptionListsProps, - ReturnExceptionLists - >( - ({ errorMessage, filterOptions, http, initialPagination, namespaceTypes, notifications }) => - useExceptionLists({ - errorMessage, - filterOptions, - http, - initialPagination, - namespaceTypes, - notifications, - }), - { - initialProps: { - errorMessage: 'Uh oh', - filterOptions: {}, - http: mockKibanaHttpService, - initialPagination: { - page: 1, - perPage: 20, - total: 0, - }, - namespaceTypes: ['single'], - notifications: mockKibanaNotificationsService, + const { rerender } = renderHook<ReturnExceptionLists, UseExceptionListsProps>( + ({ errorMessage, filterOptions, http, initialPagination, namespaceTypes, notifications }) => + useExceptionLists({ + errorMessage, + filterOptions, + http, + initialPagination, + namespaceTypes, + notifications, + }), + { + initialProps: { + errorMessage: 'Uh oh', + filterOptions: {}, + http: mockKibanaHttpService, + initialPagination: { + page: 1, + perPage: 20, + total: 0, }, - } - ); - // NOTE: First `waitForNextUpdate` is initialization - // Second call applies the params - await waitForNextUpdate(); - await waitForNextUpdate(); + namespaceTypes: ['single' as const], + notifications: mockKibanaNotificationsService, + }, + } + ); - rerender({ + await waitFor(() => new Promise((resolve) => resolve(null))); + + rerender({ + errorMessage: 'Uh oh', + filterOptions: {}, + http: mockKibanaHttpService, + initialPagination: { + page: 1, + perPage: 20, + total: 0, + }, + namespaceTypes: ['single' as const, 'agnostic' as const], + notifications: mockKibanaNotificationsService, + }); + + await waitFor(() => expect(spyOnfetchExceptionLists).toHaveBeenCalledTimes(2)); + }); + + test('fetches list when refreshExceptionList callback invoked', async () => { + const spyOnfetchExceptionLists = jest.spyOn(api, 'fetchExceptionLists'); + const { result } = renderHook<ReturnExceptionLists, UseExceptionListsProps>(() => + useExceptionLists({ errorMessage: 'Uh oh', filterOptions: {}, http: mockKibanaHttpService, @@ -235,49 +227,18 @@ describe('useExceptionLists', () => { }, namespaceTypes: ['single', 'agnostic'], notifications: mockKibanaNotificationsService, - }); - // NOTE: Only need one call here because hook already initilaized - await waitForNextUpdate(); + }) + ); - expect(spyOnfetchExceptionLists).toHaveBeenCalledTimes(2); - }); - }); - - test('fetches list when refreshExceptionList callback invoked', async () => { - const spyOnfetchExceptionLists = jest.spyOn(api, 'fetchExceptionLists'); - await act(async () => { - const { result, waitForNextUpdate } = renderHook< - UseExceptionListsProps, - ReturnExceptionLists - >(() => - useExceptionLists({ - errorMessage: 'Uh oh', - filterOptions: {}, - http: mockKibanaHttpService, - initialPagination: { - page: 1, - perPage: 20, - total: 0, - }, - namespaceTypes: ['single', 'agnostic'], - notifications: mockKibanaNotificationsService, - }) - ); - // NOTE: First `waitForNextUpdate` is initialization - // Second call applies the params - await waitForNextUpdate(); - await waitForNextUpdate(); + await waitFor(() => new Promise((resolve) => resolve(null))); - expect(typeof result.current[3]).toEqual('function'); + expect(typeof result.current[3]).toEqual('function'); - if (result.current[4] != null) { - result.current[4](); - } - // NOTE: Only need one call here because hook already initilaized - await waitForNextUpdate(); + if (result.current[4] != null) { + result.current[4](); + } - expect(spyOnfetchExceptionLists).toHaveBeenCalledTimes(2); - }); + await waitFor(() => expect(spyOnfetchExceptionLists).toHaveBeenCalledTimes(2)); }); test('invokes notifications service if "fetchExceptionLists" fails', async () => { @@ -285,26 +246,22 @@ describe('useExceptionLists', () => { const spyOnfetchExceptionLists = jest .spyOn(api, 'fetchExceptionLists') .mockRejectedValue(mockError); - await act(async () => { - const { waitForNextUpdate } = renderHook<UseExceptionListsProps, ReturnExceptionLists>(() => - useExceptionLists({ - errorMessage: 'Uh oh', - filterOptions: {}, - http: mockKibanaHttpService, - initialPagination: { - page: 1, - perPage: 20, - total: 0, - }, - namespaceTypes: ['single', 'agnostic'], - notifications: mockKibanaNotificationsService, - }) - ); - // NOTE: First `waitForNextUpdate` is initialization - // Second call applies the params - await waitForNextUpdate(); - await waitForNextUpdate(); + renderHook(() => + useExceptionLists({ + errorMessage: 'Uh oh', + filterOptions: {}, + http: mockKibanaHttpService, + initialPagination: { + page: 1, + perPage: 20, + total: 0, + }, + namespaceTypes: ['single', 'agnostic'], + notifications: mockKibanaNotificationsService, + }) + ); + await waitFor(() => { expect(mockKibanaNotificationsService.toasts.addError).toHaveBeenCalledWith(mockError, { title: 'Uh oh', }); diff --git a/x-pack/plugins/lists/public/lists/hooks/use_create_list_index.test.ts b/x-pack/plugins/lists/public/lists/hooks/use_create_list_index.test.ts index 3e91e9b269830..7021d49940f26 100644 --- a/x-pack/plugins/lists/public/lists/hooks/use_create_list_index.test.ts +++ b/x-pack/plugins/lists/public/lists/hooks/use_create_list_index.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { act, renderHook, waitFor } from '@testing-library/react'; import { useCreateListIndex } from '@kbn/securitysolution-list-hooks'; import * as Api from '@kbn/securitysolution-list-api'; import { httpServiceMock } from '@kbn/core/public/mocks'; @@ -28,52 +28,49 @@ describe('useCreateListIndex', () => { }); it('should call Api.createListIndex when start() executes', async () => { - const { result, waitForNextUpdate } = renderHook(() => useCreateListIndex({ http: httpMock }), { + const { result } = renderHook(() => useCreateListIndex({ http: httpMock }), { wrapper: queryWrapper, }); act(() => { result.current.start(); }); - await waitForNextUpdate(); - - expect(Api.createListIndex).toHaveBeenCalledWith(expect.objectContaining({ http: httpMock })); + await waitFor(() => + expect(Api.createListIndex).toHaveBeenCalledWith(expect.objectContaining({ http: httpMock })) + ); }); it('should call onError callback when Api.createListIndex fails', async () => { const onError = jest.fn(); jest.spyOn(Api, 'createListIndex').mockRejectedValue(new Error('Mocked error')); - const { result, waitForNextUpdate } = renderHook( - () => useCreateListIndex({ http: httpMock, onError }), - { wrapper: queryWrapper } - ); + const { result } = renderHook(() => useCreateListIndex({ http: httpMock, onError }), { + wrapper: queryWrapper, + }); act(() => { result.current.start(); }); - await waitForNextUpdate(); - - expect(onError).toHaveBeenCalledWith(new Error('Mocked error'), undefined, undefined); + await waitFor(() => + expect(onError).toHaveBeenCalledWith(new Error('Mocked error'), undefined, undefined) + ); }); it('should not invalidate read index query on failure', async () => { jest.spyOn(Api, 'createListIndex').mockRejectedValue(new Error('Mocked error')); const invalidateQueriesSpy = jest.spyOn(queryClient, 'invalidateQueries'); - const { result, waitForNextUpdate } = renderHook(() => useCreateListIndex({ http: httpMock }), { + const { result } = renderHook(() => useCreateListIndex({ http: httpMock }), { wrapper: queryWrapper, }); act(() => { result.current.start(); }); - await waitForNextUpdate(); - - expect(invalidateQueriesSpy).not.toHaveBeenCalled(); + await waitFor(() => expect(invalidateQueriesSpy).not.toHaveBeenCalled()); }); it('should invalidate read index query on success', async () => { - const { result, waitForNextUpdate } = renderHook(() => useCreateListIndex({ http: httpMock }), { + const { result } = renderHook(() => useCreateListIndex({ http: httpMock }), { wrapper: queryWrapper, }); const invalidateQueriesSpy = jest.spyOn(queryClient, 'invalidateQueries'); @@ -81,8 +78,8 @@ describe('useCreateListIndex', () => { act(() => { result.current.start(); }); - await waitForNextUpdate(); - - expect(invalidateQueriesSpy).toHaveBeenCalledWith(['detectionEngine', 'listIndex']); + await waitFor(() => + expect(invalidateQueriesSpy).toHaveBeenCalledWith(['detectionEngine', 'listIndex']) + ); }); }); diff --git a/x-pack/plugins/lists/public/lists/hooks/use_delete_list.test.ts b/x-pack/plugins/lists/public/lists/hooks/use_delete_list.test.ts index aac604a89bc8a..7a339f3e12a4a 100644 --- a/x-pack/plugins/lists/public/lists/hooks/use_delete_list.test.ts +++ b/x-pack/plugins/lists/public/lists/hooks/use_delete_list.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { act, renderHook, waitFor } from '@testing-library/react'; import { useDeleteList } from '@kbn/securitysolution-list-hooks'; import * as Api from '@kbn/securitysolution-list-api'; import { httpServiceMock } from '@kbn/core/public/mocks'; @@ -25,14 +25,14 @@ describe('useDeleteList', () => { }); it('invokes Api.deleteList', async () => { - const { result, waitForNextUpdate } = renderHook(() => useDeleteList()); + const { result } = renderHook(() => useDeleteList()); act(() => { result.current.start({ http: httpMock, id: 'list' }); }); - await waitForNextUpdate(); - - expect(Api.deleteList).toHaveBeenCalledWith( - expect.objectContaining({ http: httpMock, id: 'list' }) + await waitFor(() => + expect(Api.deleteList).toHaveBeenCalledWith( + expect.objectContaining({ http: httpMock, id: 'list' }) + ) ); }); }); diff --git a/x-pack/plugins/lists/public/lists/hooks/use_export_list.test.ts b/x-pack/plugins/lists/public/lists/hooks/use_export_list.test.ts index 4977d585fe43b..8f08ad5c8bd03 100644 --- a/x-pack/plugins/lists/public/lists/hooks/use_export_list.test.ts +++ b/x-pack/plugins/lists/public/lists/hooks/use_export_list.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { act, renderHook, waitFor } from '@testing-library/react'; import { useExportList } from '@kbn/securitysolution-list-hooks'; import * as Api from '@kbn/securitysolution-list-api'; import { httpServiceMock } from '@kbn/core/public/mocks'; @@ -23,14 +23,14 @@ describe('useExportList', () => { }); it('invokes Api.exportList', async () => { - const { result, waitForNextUpdate } = renderHook(() => useExportList()); + const { result } = renderHook(() => useExportList()); act(() => { result.current.start({ http: httpMock, listId: 'list' }); }); - await waitForNextUpdate(); - - expect(Api.exportList).toHaveBeenCalledWith( - expect.objectContaining({ http: httpMock, listId: 'list' }) + await waitFor(() => + expect(Api.exportList).toHaveBeenCalledWith( + expect.objectContaining({ http: httpMock, listId: 'list' }) + ) ); }); }); diff --git a/x-pack/plugins/lists/public/lists/hooks/use_import_list.test.ts b/x-pack/plugins/lists/public/lists/hooks/use_import_list.test.ts index 4a1557e94fe79..d56478a0321be 100644 --- a/x-pack/plugins/lists/public/lists/hooks/use_import_list.test.ts +++ b/x-pack/plugins/lists/public/lists/hooks/use_import_list.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { act, renderHook, waitFor } from '@testing-library/react'; import { useImportList } from '@kbn/securitysolution-list-hooks'; import * as Api from '@kbn/securitysolution-list-api'; import { httpServiceMock } from '@kbn/core/public/mocks'; @@ -32,7 +32,7 @@ describe('useImportList', () => { it('invokes Api.importList', async () => { const fileMock = 'my file' as unknown as File; - const { result, waitForNextUpdate } = renderHook(() => useImportList()); + const { result } = renderHook(() => useImportList()); act(() => { result.current.start({ @@ -42,21 +42,21 @@ describe('useImportList', () => { type: 'keyword', }); }); - await waitForNextUpdate(); - - expect(Api.importList).toHaveBeenCalledWith( - expect.objectContaining({ - file: fileMock, - listId: 'my_list_id', - type: 'keyword', - }) + await waitFor(() => + expect(Api.importList).toHaveBeenCalledWith( + expect.objectContaining({ + file: fileMock, + listId: 'my_list_id', + type: 'keyword', + }) + ) ); }); it('populates result with the response of Api.importList', async () => { const fileMock = 'my file' as unknown as File; - const { result, waitForNextUpdate } = renderHook(() => useImportList()); + const { result } = renderHook(() => useImportList()); act(() => { result.current.start({ @@ -66,15 +66,13 @@ describe('useImportList', () => { type: 'keyword', }); }); - await waitForNextUpdate(); - - expect(result.current.result).toEqual(getListResponseMock()); + await waitFor(() => expect(result.current.result).toEqual(getListResponseMock())); }); it('error is populated if importList rejects', async () => { const fileMock = 'my file' as unknown as File; (Api.importList as jest.Mock).mockRejectedValue(new Error('whoops')); - const { result, waitForNextUpdate } = renderHook(() => useImportList()); + const { result } = renderHook(() => useImportList()); act(() => { result.current.start({ @@ -85,9 +83,9 @@ describe('useImportList', () => { }); }); - await waitForNextUpdate(); - - expect(result.current.result).toBeUndefined(); - expect(result.current.error).toEqual(new Error('whoops')); + await waitFor(() => { + expect(result.current.result).toBeUndefined(); + expect(result.current.error).toEqual(new Error('whoops')); + }); }); }); diff --git a/x-pack/plugins/lists/public/lists/hooks/use_read_list_index.test.ts b/x-pack/plugins/lists/public/lists/hooks/use_read_list_index.test.ts index dc57825d9acfa..643ac2df5b05b 100644 --- a/x-pack/plugins/lists/public/lists/hooks/use_read_list_index.test.ts +++ b/x-pack/plugins/lists/public/lists/hooks/use_read_list_index.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook, waitFor } from '@testing-library/react'; import { useReadListIndex } from '@kbn/securitysolution-list-hooks'; import * as Api from '@kbn/securitysolution-list-api'; import { httpServiceMock } from '@kbn/core/public/mocks'; @@ -30,16 +30,11 @@ describe.skip('useReadListIndex', () => { }); it('should call Api.readListIndex when is enabled', async () => { - const { waitForNextUpdate } = renderHook( - () => useReadListIndex({ http: httpMock, isEnabled: true }), - { - wrapper: queryWrapper, - } - ); - - await waitForNextUpdate(); + renderHook(() => useReadListIndex({ http: httpMock, isEnabled: true }), { + wrapper: queryWrapper, + }); - expect(Api.readListIndex).toHaveBeenCalled(); + await waitFor(() => expect(Api.readListIndex).toHaveBeenCalled()); }); it('should not call Api.readListIndex when is not enabled', async () => { @@ -54,15 +49,10 @@ describe.skip('useReadListIndex', () => { const onError = jest.fn(); jest.spyOn(Api, 'readListIndex').mockRejectedValue(new Error('Mocked error')); - const { waitForNextUpdate } = renderHook( - () => useReadListIndex({ http: httpMock, isEnabled: true, onError }), - { - wrapper: queryWrapper, - } - ); - - await waitForNextUpdate(); + renderHook(() => useReadListIndex({ http: httpMock, isEnabled: true, onError }), { + wrapper: queryWrapper, + }); - expect(onError).toHaveBeenCalledWith(new Error('Mocked error')); + await waitFor(() => expect(onError).toHaveBeenCalledWith(new Error('Mocked error'))); }); }); diff --git a/x-pack/plugins/logstash/kibana.jsonc b/x-pack/plugins/logstash/kibana.jsonc index 83665c1ed344e..2242e6254fffc 100644 --- a/x-pack/plugins/logstash/kibana.jsonc +++ b/x-pack/plugins/logstash/kibana.jsonc @@ -4,7 +4,7 @@ "owner": [ "@elastic/logstash" ], - "group": "observability", + "group": "platform", "visibility": "private", "plugin": { "id": "logstash", diff --git a/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_renderer.tsx b/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_renderer.tsx index 3e09a7e0fd81d..0bc116f254e98 100644 --- a/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_renderer.tsx +++ b/x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_renderer.tsx @@ -12,7 +12,7 @@ import { dynamic } from '@kbn/shared-ux-utility'; import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; import type { RegionMapVisRenderValue } from './region_map_fn'; import { REGION_MAP_RENDER } from './types'; -import { getAnalytics, getCoreI18n, getTheme } from '../../kibana_services'; +import { getCore } from '../../kibana_services'; const Component = dynamic(async () => { const { RegionMapVisualization } = await import('./region_map_visualization'); @@ -40,11 +40,7 @@ export const regionMapRenderer = { }; render( - <KibanaRenderContextProvider - analytics={getAnalytics()} - i18n={getCoreI18n()} - theme={getTheme()} - > + <KibanaRenderContextProvider {...getCore()}> <Component {...props} /> </KibanaRenderContextProvider>, domNode diff --git a/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_renderer.tsx b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_renderer.tsx index 9bc828e617bb6..f3079825df3e9 100644 --- a/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_renderer.tsx +++ b/x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_renderer.tsx @@ -12,7 +12,7 @@ import { dynamic } from '@kbn/shared-ux-utility'; import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; import type { TileMapVisRenderValue } from './tile_map_fn'; import { TILE_MAP_RENDER } from './types'; -import { getAnalytics, getCoreI18n, getTheme } from '../../kibana_services'; +import { getCore } from '../../kibana_services'; const Component = dynamic(async () => { const { TileMapVisualization } = await import('./tile_map_visualization'); @@ -40,11 +40,7 @@ export const tileMapRenderer = { }; render( - <KibanaRenderContextProvider - analytics={getAnalytics()} - i18n={getCoreI18n()} - theme={getTheme()} - > + <KibanaRenderContextProvider {...getCore()}> <Component {...props} /> </KibanaRenderContextProvider>, domNode diff --git a/x-pack/plugins/maps/public/lens/choropleth_chart/expression_renderer.tsx b/x-pack/plugins/maps/public/lens/choropleth_chart/expression_renderer.tsx index 6e7e9a2da4222..988affb8fa7e9 100644 --- a/x-pack/plugins/maps/public/lens/choropleth_chart/expression_renderer.tsx +++ b/x-pack/plugins/maps/public/lens/choropleth_chart/expression_renderer.tsx @@ -15,7 +15,7 @@ import type { KibanaExecutionContext } from '@kbn/core-execution-context-common' import { ChartSizeEvent } from '@kbn/chart-expressions-common'; import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; import type { MapsPluginStartDependencies } from '../../plugin'; -import { getAnalytics, getCoreI18n, getTheme } from '../../kibana_services'; +import { getCore } from '../../kibana_services'; import type { ChoroplethChartProps } from './types'; export const RENDERER_ID = 'lens_choropleth_chart_renderer'; @@ -99,11 +99,7 @@ export function getExpressionRenderer(coreSetup: CoreSetup<MapsPluginStartDepend handlers.event(chartSizeEvent); ReactDOM.render( - <KibanaRenderContextProvider - analytics={getAnalytics()} - i18n={getCoreI18n()} - theme={getTheme()} - > + <KibanaRenderContextProvider {...getCore()}> <ChoroplethChart {...config} formatFactory={plugins.fieldFormats.deserialize} diff --git a/x-pack/plugins/maps/public/render_app.tsx b/x-pack/plugins/maps/public/render_app.tsx index 71caec5db8c49..a1bf84746a76f 100644 --- a/x-pack/plugins/maps/public/render_app.tsx +++ b/x-pack/plugins/maps/public/render_app.tsx @@ -18,9 +18,6 @@ import type { SavedObjectTaggingPluginStart } from '@kbn/saved-objects-tagging-p import { TableListViewKibanaProvider } from '@kbn/content-management-table-list-view-table'; import { getCoreChrome, - getAnalytics, - getCoreI18n, - getTheme, getMapsCapabilities, getEmbeddableService, getDocLinks, @@ -110,7 +107,7 @@ export async function renderApp( } render( - <KibanaRenderContextProvider analytics={getAnalytics()} i18n={getCoreI18n()} theme={getTheme()}> + <KibanaRenderContextProvider {...getCore()}> <AppUsageTracker> <TableListViewKibanaProvider {...{ diff --git a/x-pack/plugins/monitoring/kibana.jsonc b/x-pack/plugins/monitoring/kibana.jsonc index 5ba71cdc96ee3..31c4d9f4e10d9 100644 --- a/x-pack/plugins/monitoring/kibana.jsonc +++ b/x-pack/plugins/monitoring/kibana.jsonc @@ -4,7 +4,7 @@ "owner": [ "@elastic/stack-monitoring" ], - "group": "observability", + "group": "platform", "visibility": "private", "plugin": { "id": "monitoring", @@ -23,7 +23,6 @@ "share" ], "optionalPlugins": [ - "infra", "usageCollection", "home", "cloud", diff --git a/x-pack/plugins/monitoring/public/application/contexts/external_config_context.tsx b/x-pack/plugins/monitoring/public/application/contexts/external_config_context.tsx index e86262defb65e..45791507fa726 100644 --- a/x-pack/plugins/monitoring/public/application/contexts/external_config_context.tsx +++ b/x-pack/plugins/monitoring/public/application/contexts/external_config_context.tsx @@ -14,6 +14,7 @@ export interface ExternalConfig { renderReactApp: boolean; staleStatusThresholdSeconds: number; isCcsEnabled: boolean; + logsIndices: string; } export const ExternalConfigContext = createContext({} as ExternalConfig); diff --git a/x-pack/plugins/monitoring/public/components/logs/__snapshots__/logs.test.js.snap b/x-pack/plugins/monitoring/public/components/logs/__snapshots__/logs.test.js.snap deleted file mode 100644 index 91b3dea5ab049..0000000000000 --- a/x-pack/plugins/monitoring/public/components/logs/__snapshots__/logs.test.js.snap +++ /dev/null @@ -1,296 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Logs should render a link to filter by cluster uuid 1`] = ` -<EuiCallOut - iconType="logsApp" - size="m" - title="Want to see more log entries?" -> - <RedirectAppLinks> - <MemoizedFormattedMessage - defaultMessage="Visit {link} to dive deeper." - id="xpack.monitoring.logs.listing.linkText" - values={ - Object { - "link": <EuiLink> - Discover - </EuiLink>, - } - } - /> - </RedirectAppLinks> -</EuiCallOut> -`; - -exports[`Logs should render a link to filter by cluster uuid and index uuid 1`] = ` -<EuiCallOut - iconType="logsApp" - size="m" - title="Want to see more log entries?" -> - <RedirectAppLinks> - <MemoizedFormattedMessage - defaultMessage="Visit {link} to dive deeper." - id="xpack.monitoring.logs.listing.linkText" - values={ - Object { - "link": <EuiLink> - Discover - </EuiLink>, - } - } - /> - </RedirectAppLinks> -</EuiCallOut> -`; - -exports[`Logs should render a link to filter by cluster uuid and node uuid 1`] = ` -<EuiCallOut - iconType="logsApp" - size="m" - title="Want to see more log entries?" -> - <RedirectAppLinks> - <MemoizedFormattedMessage - defaultMessage="Visit {link} to dive deeper." - id="xpack.monitoring.logs.listing.linkText" - values={ - Object { - "link": <EuiLink> - Discover - </EuiLink>, - } - } - /> - </RedirectAppLinks> -</EuiCallOut> -`; - -exports[`Logs should render a reason if the logs are disabled 1`] = ` -<div> - <EuiTitle> - <h1> - Recent Log Entries - </h1> - </EuiTitle> - <EuiText - size="s" - > - <p> - Showing the most recent log entries for this cluster, up to 15 total log entries. - </p> - </EuiText> - <EuiSpacer - size="m" - /> - <Reason - reason={Object {}} - /> - <EuiSpacer - size="m" - /> -</div> -`; - -exports[`Logs should render fewer columns for node or index view 1`] = ` -Array [ - Object { - "field": "timestamp", - "name": "Timestamp", - "render": [Function], - "width": "12%", - }, - Object { - "field": "level", - "name": "Level", - "width": "5%", - }, - Object { - "field": "type", - "name": "Type", - "render": [Function], - "width": "10%", - }, - Object { - "field": "message", - "name": "Message", - "width": "55%", - }, - Object { - "field": "component", - "name": "Component", - "width": "18%", - }, -] -`; - -exports[`Logs should render normally 1`] = ` -<div> - <EuiTitle> - <h1> - Recent Log Entries - </h1> - </EuiTitle> - <EuiText - size="s" - > - <p> - Showing the most recent log entries for this cluster, up to 10 total log entries. - </p> - </EuiText> - <EuiSpacer - size="m" - /> - <EuiBasicTable - columns={ - Array [ - Object { - "field": "timestamp", - "name": "Timestamp", - "render": [Function], - "width": "12%", - }, - Object { - "field": "level", - "name": "Level", - "width": "5%", - }, - Object { - "field": "type", - "name": "Type", - "render": [Function], - "width": "10%", - }, - Object { - "field": "message", - "name": "Message", - "width": "45%", - }, - Object { - "field": "component", - "name": "Component", - "width": "15%", - }, - Object { - "field": "node", - "name": "Node", - "width": "13%", - }, - ] - } - items={ - Array [ - Object { - "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", - "level": "WARN", - "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", - "node": "foobar", - "timestamp": "2019-03-18T12:49:33.783Z", - "type": "deprecation", - }, - Object { - "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", - "level": "WARN", - "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", - "node": "foobar", - "timestamp": "2019-03-18T12:49:26.781Z", - "type": "deprecation", - }, - Object { - "component": "o.e.c.r.a.DiskThresholdMonitor", - "level": "WARN", - "message": "high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.5gb[6.3%], shards will be relocated away from this node", - "node": "foobar2", - "timestamp": "2019-03-18T12:49:24.414Z", - "type": "server", - }, - Object { - "component": "o.e.c.r.a.DiskThresholdMonitor", - "level": "INFO", - "message": "rerouting shards: [high disk watermark exceeded on one or more nodes]", - "node": "foobar", - "timestamp": "2019-03-18T12:49:24.414Z", - "type": "server", - }, - Object { - "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", - "level": "WARN", - "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", - "node": "foobar", - "timestamp": "2019-03-18T12:49:11.776Z", - "type": "deprecation", - }, - Object { - "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", - "level": "WARN", - "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", - "node": "foobar", - "timestamp": "2019-03-18T12:49:08.770Z", - "type": "deprecation", - }, - Object { - "component": "o.e.c.r.a.DiskThresholdMonitor", - "level": "WARN", - "message": "high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.3gb[6.2%], shards will be relocated away from this node", - "node": "foobar", - "timestamp": "2019-03-18T12:48:59.409Z", - "type": "server", - }, - Object { - "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", - "level": "WARN", - "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", - "node": "foobar", - "timestamp": "2019-03-18T12:48:53.753Z", - "type": "deprecation", - }, - Object { - "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", - "level": "WARN", - "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", - "node": "foobar", - "timestamp": "2019-03-18T12:48:53.753Z", - "type": "deprecation", - }, - Object { - "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", - "level": "WARN", - "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", - "node": "foobar2", - "timestamp": "2019-03-18T12:48:46.745Z", - "type": "deprecation", - }, - ] - } - noItemsMessage={ - <EuiI18n - default="No items found" - token="euiBasicTable.noItemsMessage" - /> - } - tableLayout="fixed" - /> - <EuiSpacer - size="m" - /> - <EuiCallOut - iconType="logsApp" - size="m" - title="Want to see more log entries?" - > - <RedirectAppLinks> - <MemoizedFormattedMessage - defaultMessage="Visit {link} to dive deeper." - id="xpack.monitoring.logs.listing.linkText" - values={ - Object { - "link": <EuiLink> - Discover - </EuiLink>, - } - } - /> - </RedirectAppLinks> - </EuiCallOut> -</div> -`; diff --git a/x-pack/plugins/monitoring/public/components/logs/__snapshots__/logs.test.tsx.snap b/x-pack/plugins/monitoring/public/components/logs/__snapshots__/logs.test.tsx.snap new file mode 100644 index 0000000000000..36ebe98fb014d --- /dev/null +++ b/x-pack/plugins/monitoring/public/components/logs/__snapshots__/logs.test.tsx.snap @@ -0,0 +1,304 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Logs should render a link to filter by cluster uuid 1`] = ` +<EuiCallOut + iconType="logsApp" + size="m" + title="Want to see more log entries?" +> + <RedirectAppLinks> + <MemoizedFormattedMessage + defaultMessage="Visit {link} to dive deeper." + id="xpack.monitoring.logs.listing.linkText" + values={ + Object { + "link": <EuiLink + href="http://localhost:5601/app/discover" + > + Discover + </EuiLink>, + } + } + /> + </RedirectAppLinks> +</EuiCallOut> +`; + +exports[`Logs should render a link to filter by cluster uuid and index uuid 1`] = ` +<EuiCallOut + iconType="logsApp" + size="m" + title="Want to see more log entries?" +> + <RedirectAppLinks> + <MemoizedFormattedMessage + defaultMessage="Visit {link} to dive deeper." + id="xpack.monitoring.logs.listing.linkText" + values={ + Object { + "link": <EuiLink + href="http://localhost:5601/app/discover" + > + Discover + </EuiLink>, + } + } + /> + </RedirectAppLinks> +</EuiCallOut> +`; + +exports[`Logs should render a link to filter by cluster uuid and node uuid 1`] = ` +<EuiCallOut + iconType="logsApp" + size="m" + title="Want to see more log entries?" +> + <RedirectAppLinks> + <MemoizedFormattedMessage + defaultMessage="Visit {link} to dive deeper." + id="xpack.monitoring.logs.listing.linkText" + values={ + Object { + "link": <EuiLink + href="http://localhost:5601/app/discover" + > + Discover + </EuiLink>, + } + } + /> + </RedirectAppLinks> +</EuiCallOut> +`; + +exports[`Logs should render a reason if the logs are disabled 1`] = ` +<div> + <EuiTitle> + <h1> + Recent Log Entries + </h1> + </EuiTitle> + <EuiText + size="s" + > + <p> + Showing the most recent log entries for this cluster, up to 15 total log entries. + </p> + </EuiText> + <EuiSpacer + size="m" + /> + <Reason + reason={Object {}} + /> + <EuiSpacer + size="m" + /> +</div> +`; + +exports[`Logs should render fewer columns for node or index view 1`] = ` +Array [ + Object { + "field": "timestamp", + "name": "Timestamp", + "render": [Function], + "width": "12%", + }, + Object { + "field": "level", + "name": "Level", + "width": "5%", + }, + Object { + "field": "type", + "name": "Type", + "render": [Function], + "width": "10%", + }, + Object { + "field": "message", + "name": "Message", + "width": "55%", + }, + Object { + "field": "component", + "name": "Component", + "width": "18%", + }, +] +`; + +exports[`Logs should render normally 1`] = ` +<div> + <EuiTitle> + <h1> + Recent Log Entries + </h1> + </EuiTitle> + <EuiText + size="s" + > + <p> + Showing the most recent log entries for this cluster, up to 10 total log entries. + </p> + </EuiText> + <EuiSpacer + size="m" + /> + <EuiBasicTable + columns={ + Array [ + Object { + "field": "timestamp", + "name": "Timestamp", + "render": [Function], + "width": "12%", + }, + Object { + "field": "level", + "name": "Level", + "width": "5%", + }, + Object { + "field": "type", + "name": "Type", + "render": [Function], + "width": "10%", + }, + Object { + "field": "message", + "name": "Message", + "width": "45%", + }, + Object { + "field": "component", + "name": "Component", + "width": "15%", + }, + Object { + "field": "node", + "name": "Node", + "width": "13%", + }, + ] + } + items={ + Array [ + Object { + "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", + "level": "WARN", + "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", + "node": "foobar", + "timestamp": "2019-03-18T12:49:33.783Z", + "type": "deprecation", + }, + Object { + "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", + "level": "WARN", + "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", + "node": "foobar", + "timestamp": "2019-03-18T12:49:26.781Z", + "type": "deprecation", + }, + Object { + "component": "o.e.c.r.a.DiskThresholdMonitor", + "level": "WARN", + "message": "high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.5gb[6.3%], shards will be relocated away from this node", + "node": "foobar2", + "timestamp": "2019-03-18T12:49:24.414Z", + "type": "server", + }, + Object { + "component": "o.e.c.r.a.DiskThresholdMonitor", + "level": "INFO", + "message": "rerouting shards: [high disk watermark exceeded on one or more nodes]", + "node": "foobar", + "timestamp": "2019-03-18T12:49:24.414Z", + "type": "server", + }, + Object { + "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", + "level": "WARN", + "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", + "node": "foobar", + "timestamp": "2019-03-18T12:49:11.776Z", + "type": "deprecation", + }, + Object { + "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", + "level": "WARN", + "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", + "node": "foobar", + "timestamp": "2019-03-18T12:49:08.770Z", + "type": "deprecation", + }, + Object { + "component": "o.e.c.r.a.DiskThresholdMonitor", + "level": "WARN", + "message": "high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.3gb[6.2%], shards will be relocated away from this node", + "node": "foobar", + "timestamp": "2019-03-18T12:48:59.409Z", + "type": "server", + }, + Object { + "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", + "level": "WARN", + "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", + "node": "foobar", + "timestamp": "2019-03-18T12:48:53.753Z", + "type": "deprecation", + }, + Object { + "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", + "level": "WARN", + "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", + "node": "foobar", + "timestamp": "2019-03-18T12:48:53.753Z", + "type": "deprecation", + }, + Object { + "component": "o.e.d.x.m.r.a.RestMonitoringBulkAction", + "level": "WARN", + "message": "[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.", + "node": "foobar2", + "timestamp": "2019-03-18T12:48:46.745Z", + "type": "deprecation", + }, + ] + } + noItemsMessage={ + <EuiI18n + default="No items found" + token="euiBasicTable.noItemsMessage" + /> + } + tableLayout="fixed" + /> + <EuiSpacer + size="m" + /> + <EuiCallOut + iconType="logsApp" + size="m" + title="Want to see more log entries?" + > + <RedirectAppLinks> + <MemoizedFormattedMessage + defaultMessage="Visit {link} to dive deeper." + id="xpack.monitoring.logs.listing.linkText" + values={ + Object { + "link": <EuiLink + href="http://localhost:5601/app/discover" + > + Discover + </EuiLink>, + } + } + /> + </RedirectAppLinks> + </EuiCallOut> +</div> +`; diff --git a/x-pack/plugins/monitoring/public/components/logs/__snapshots__/reason.test.js.snap b/x-pack/plugins/monitoring/public/components/logs/__snapshots__/reason.test.tsx.snap similarity index 100% rename from x-pack/plugins/monitoring/public/components/logs/__snapshots__/reason.test.js.snap rename to x-pack/plugins/monitoring/public/components/logs/__snapshots__/reason.test.tsx.snap diff --git a/x-pack/plugins/monitoring/public/components/logs/index.js b/x-pack/plugins/monitoring/public/components/logs/index.tsx similarity index 100% rename from x-pack/plugins/monitoring/public/components/logs/index.js rename to x-pack/plugins/monitoring/public/components/logs/index.tsx diff --git a/x-pack/plugins/monitoring/public/components/logs/logs.js b/x-pack/plugins/monitoring/public/components/logs/logs.js deleted file mode 100644 index 82fdac6ea1f0d..0000000000000 --- a/x-pack/plugins/monitoring/public/components/logs/logs.js +++ /dev/null @@ -1,278 +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 React, { PureComponent, useContext } from 'react'; -import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app'; -import { upperFirst } from 'lodash'; -import { Legacy } from '../../legacy_shims'; -import { EuiBasicTable, EuiTitle, EuiSpacer, EuiText, EuiCallOut, EuiLink } from '@elastic/eui'; -import { formatDateTimeLocal } from '../../../common/formatting'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { Reason } from './reason'; -import { useKibana } from '@kbn/kibana-react-plugin/public'; -import { ExternalConfigContext } from '../../application/contexts/external_config_context'; - -const getFormattedDateTimeLocal = (timestamp) => { - const timezone = Legacy.shims.uiSettings?.get('dateFormat:tz'); - return formatDateTimeLocal(timestamp, timezone); -}; - -const columnTimestampTitle = i18n.translate('xpack.monitoring.logs.listing.timestampTitle', { - defaultMessage: 'Timestamp', -}); - -const columnLevelTitle = i18n.translate('xpack.monitoring.logs.listing.levelTitle', { - defaultMessage: 'Level', -}); - -const columnTypeTitle = i18n.translate('xpack.monitoring.logs.listing.typeTitle', { - defaultMessage: 'Type', -}); - -const columnMessageTitle = i18n.translate('xpack.monitoring.logs.listing.messageTitle', { - defaultMessage: 'Message', -}); - -const columnComponentTitle = i18n.translate('xpack.monitoring.logs.listing.componentTitle', { - defaultMessage: 'Component', -}); - -const columnNodeTitle = i18n.translate('xpack.monitoring.logs.listing.nodeTitle', { - defaultMessage: 'Node', -}); - -const columns = [ - { - field: 'timestamp', - name: columnTimestampTitle, - width: '12%', - render: (timestamp) => getFormattedDateTimeLocal(timestamp), - }, - { - field: 'level', - name: columnLevelTitle, - width: '5%', - }, - { - field: 'type', - name: columnTypeTitle, - width: '10%', - render: (type) => upperFirst(type), - }, - { - field: 'message', - name: columnMessageTitle, - width: '55%', - }, - { - field: 'component', - name: columnComponentTitle, - width: '18%', - }, -]; - -const clusterColumns = [ - { - field: 'timestamp', - name: columnTimestampTitle, - width: '12%', - render: (timestamp) => getFormattedDateTimeLocal(timestamp), - }, - { - field: 'level', - name: columnLevelTitle, - width: '5%', - }, - { - field: 'type', - name: columnTypeTitle, - width: '10%', - render: (type) => upperFirst(type), - }, - { - field: 'message', - name: columnMessageTitle, - width: '45%', - }, - { - field: 'component', - name: columnComponentTitle, - width: '15%', - }, - { - field: 'node', - name: columnNodeTitle, - width: '13%', - }, -]; - -function getLogsUiLink(clusterUuid, nodeId, indexUuid, sharePlugin, logsIndices) { - const params = []; - if (clusterUuid) { - params.push(`elasticsearch.cluster.uuid:${clusterUuid}`); - } - if (nodeId) { - params.push(`elasticsearch.node.id:${nodeId}`); - } - if (indexUuid) { - params.push(`elasticsearch.index.name:${indexUuid}`); - } - - const filter = params.join(' and '); - const discoverLocator = sharePlugin.url.locators.get('DISCOVER_APP_LOCATOR'); - - const base = discoverLocator.getRedirectUrl({ - dataViewSpec: { - id: logsIndices, - title: logsIndices, - }, - query: { - language: 'kuery', - query: filter, - }, - }); - - return base; -} - -export const Logs = (props) => { - const { - services: { share }, - } = useKibana(); - const externalConfig = useContext(ExternalConfigContext); - return <LogsContent sharePlugin={share} logsIndices={externalConfig.logsIndices} {...props} />; -}; -export class LogsContent extends PureComponent { - renderLogs() { - const { - logs: { enabled, logs }, - nodeId, - indexUuid, - } = this.props; - if (!enabled) { - return null; - } - - return ( - <EuiBasicTable items={logs || []} columns={nodeId || indexUuid ? columns : clusterColumns} /> - ); - } - - renderNoLogs() { - const { - logs: { enabled, reason }, - } = this.props; - if (enabled) { - return null; - } - - return <Reason reason={reason} />; - } - - renderCallout() { - const { capabilities: uiCapabilities, infra, kibanaServices } = Legacy.shims; - const show = uiCapabilities.discover && uiCapabilities.discover.show; - - const { - logs: { enabled }, - nodeId, - clusterUuid, - indexUuid, - sharePlugin, - logsIndices, - } = this.props; - - if (!enabled || !show) { - return null; - } - - return infra ? ( - <EuiCallOut - size="m" - title={i18n.translate('xpack.monitoring.logs.listing.calloutTitle', { - defaultMessage: 'Want to see more log entries?', - })} - iconType="logsApp" - > - <RedirectAppLinks coreStart={kibanaServices}> - <FormattedMessage - id="xpack.monitoring.logs.listing.linkText" - defaultMessage="Visit {link} to dive deeper." - values={{ - link: ( - <EuiLink - href={getLogsUiLink(clusterUuid, nodeId, indexUuid, sharePlugin, logsIndices)} - > - {i18n.translate('xpack.monitoring.logs.listing.calloutLinkText', { - defaultMessage: 'Discover', - })} - </EuiLink> - ), - }} - /> - </RedirectAppLinks> - </EuiCallOut> - ) : null; - } - - render() { - const { - nodeId, - indexUuid, - logs: { limit }, - } = this.props; - - let description; - - if (nodeId) { - description = i18n.translate('xpack.monitoring.logs.listing.nodePageDescription', { - defaultMessage: - 'Showing the most recent log entries for this node, up to {limit} total log entries.', - values: { - limit, - }, - }); - } else if (indexUuid) { - description = i18n.translate('xpack.monitoring.logs.listing.indexPageDescription', { - defaultMessage: - 'Showing the most recent log entries for this index, up to {limit} total log entries.', - values: { - limit, - }, - }); - } else { - description = i18n.translate('xpack.monitoring.logs.listing.clusterPageDescription', { - defaultMessage: - 'Showing the most recent log entries for this cluster, up to {limit} total log entries.', - values: { - limit, - }, - }); - } - - return ( - <div> - <EuiTitle> - <h1> - {i18n.translate('xpack.monitoring.logs.listing.pageTitle', { - defaultMessage: 'Recent Log Entries', - })} - </h1> - </EuiTitle> - <EuiText size="s"> - <p>{description}</p> - </EuiText> - <EuiSpacer size="m" /> - {this.renderLogs()} - {this.renderNoLogs()} - <EuiSpacer size="m" /> - {this.renderCallout()} - </div> - ); - } -} diff --git a/x-pack/plugins/monitoring/public/components/logs/logs.test.js b/x-pack/plugins/monitoring/public/components/logs/logs.test.js deleted file mode 100644 index 9d3f68c854505..0000000000000 --- a/x-pack/plugins/monitoring/public/components/logs/logs.test.js +++ /dev/null @@ -1,197 +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 React from 'react'; -import { shallow } from 'enzyme'; -import { LogsContent } from './logs'; -import { sharePluginMock } from '@kbn/share-plugin/public/mocks'; - -jest.mock('../../legacy_shims', () => ({ - Legacy: { - shims: { - getBasePath: () => '', - capabilities: { discover: { show: true } }, - infra: {}, - }, - }, -})); - -const sharePlugin = { - url: { - locators: { - get: () => { - return sharePluginMock.createLocator(); - }, - }, - }, -}; - -const logs = { - enabled: true, - limit: 10, - logs: [ - { - timestamp: '2019-03-18T12:49:33.783Z', - component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', - level: 'WARN', - type: 'deprecation', - node: 'foobar', - message: - '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', - }, - { - timestamp: '2019-03-18T12:49:26.781Z', - component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', - level: 'WARN', - type: 'deprecation', - node: 'foobar', - message: - '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', - }, - { - timestamp: '2019-03-18T12:49:24.414Z', - component: 'o.e.c.r.a.DiskThresholdMonitor', - level: 'WARN', - type: 'server', - node: 'foobar2', - message: - 'high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.5gb[6.3%], shards will be relocated away from this node', - }, - { - timestamp: '2019-03-18T12:49:24.414Z', - component: 'o.e.c.r.a.DiskThresholdMonitor', - level: 'INFO', - type: 'server', - node: 'foobar', - message: 'rerouting shards: [high disk watermark exceeded on one or more nodes]', - }, - { - timestamp: '2019-03-18T12:49:11.776Z', - component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', - level: 'WARN', - type: 'deprecation', - node: 'foobar', - message: - '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', - }, - { - timestamp: '2019-03-18T12:49:08.770Z', - component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', - level: 'WARN', - type: 'deprecation', - node: 'foobar', - message: - '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', - }, - { - timestamp: '2019-03-18T12:48:59.409Z', - component: 'o.e.c.r.a.DiskThresholdMonitor', - level: 'WARN', - type: 'server', - node: 'foobar', - message: - 'high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.3gb[6.2%], shards will be relocated away from this node', - }, - { - timestamp: '2019-03-18T12:48:53.753Z', - component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', - level: 'WARN', - type: 'deprecation', - node: 'foobar', - message: - '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', - }, - { - timestamp: '2019-03-18T12:48:53.753Z', - component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', - level: 'WARN', - type: 'deprecation', - node: 'foobar', - message: - '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', - }, - { - timestamp: '2019-03-18T12:48:46.745Z', - component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', - level: 'WARN', - type: 'deprecation', - node: 'foobar2', - message: - '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', - }, - ], -}; - -describe('Logs', () => { - it('should render normally', () => { - const component = shallow( - <LogsContent sharePlugin={sharePlugin} logsIndices={'logs-*,*:logs-*'} logs={logs} /> - ); - expect(component).toMatchSnapshot(); - }); - - it('should render fewer columns for node or index view', () => { - const component = shallow( - <LogsContent - sharePlugin={sharePlugin} - logsIndices={'logs-*,*:logs-*'} - logs={logs} - nodeId="12345" - /> - ); - expect(component.find('EuiBasicTable').prop('columns')).toMatchSnapshot(); - }); - - it('should render a link to filter by cluster uuid', () => { - const component = shallow( - <LogsContent - sharePlugin={sharePlugin} - logsIndices={'logs-*,*:logs-*'} - logs={logs} - clusterUuid="12345" - /> - ); - expect(component.find('EuiCallOut')).toMatchSnapshot(); - }); - - it('should render a link to filter by cluster uuid and node uuid', () => { - const component = shallow( - <LogsContent - sharePlugin={sharePlugin} - logsIndices={'logs-*,*:logs-*'} - logs={logs} - clusterUuid="12345" - nodeId="6789" - /> - ); - expect(component.find('EuiCallOut')).toMatchSnapshot(); - }); - - it('should render a link to filter by cluster uuid and index uuid', () => { - const component = shallow( - <LogsContent - sharePlugin={sharePlugin} - logsIndices={'logs-*,*:logs-*'} - logs={logs} - clusterUuid="12345" - indexUuid="6789" - /> - ); - expect(component.find('EuiCallOut')).toMatchSnapshot(); - }); - - it('should render a reason if the logs are disabled', () => { - const component = shallow( - <LogsContent - sharePlugin={sharePlugin} - logsIndices={'logs-*,*:logs-*'} - logs={{ enabled: false, limit: 15, reason: {} }} - /> - ); - expect(component).toMatchSnapshot(); - }); -}); diff --git a/x-pack/plugins/monitoring/public/components/logs/logs.test.tsx b/x-pack/plugins/monitoring/public/components/logs/logs.test.tsx new file mode 100644 index 0000000000000..f103288a24980 --- /dev/null +++ b/x-pack/plugins/monitoring/public/components/logs/logs.test.tsx @@ -0,0 +1,198 @@ +/* + * 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 { shallow } from 'enzyme'; +import { LogsContent } from './logs'; +import { sharePluginMock } from '@kbn/share-plugin/public/mocks'; + +jest.mock('../../legacy_shims', () => ({ + Legacy: { + shims: { + getBasePath: () => '', + capabilities: { discover: { show: true } }, + }, + }, +})); + +const sharePlugin = { + url: { + locators: { + get: () => { + const locatorMock = sharePluginMock.createLocator(); + locatorMock.getRedirectUrl.mockReturnValue('http://localhost:5601/app/discover'); + return locatorMock; + }, + }, + }, +} as unknown as ReturnType<typeof sharePluginMock.createStartContract>; + +const logs = { + enabled: true, + limit: 10, + logs: [ + { + timestamp: '2019-03-18T12:49:33.783Z', + component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', + level: 'WARN', + type: 'deprecation', + node: 'foobar', + message: + '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', + }, + { + timestamp: '2019-03-18T12:49:26.781Z', + component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', + level: 'WARN', + type: 'deprecation', + node: 'foobar', + message: + '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', + }, + { + timestamp: '2019-03-18T12:49:24.414Z', + component: 'o.e.c.r.a.DiskThresholdMonitor', + level: 'WARN', + type: 'server', + node: 'foobar2', + message: + 'high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.5gb[6.3%], shards will be relocated away from this node', + }, + { + timestamp: '2019-03-18T12:49:24.414Z', + component: 'o.e.c.r.a.DiskThresholdMonitor', + level: 'INFO', + type: 'server', + node: 'foobar', + message: 'rerouting shards: [high disk watermark exceeded on one or more nodes]', + }, + { + timestamp: '2019-03-18T12:49:11.776Z', + component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', + level: 'WARN', + type: 'deprecation', + node: 'foobar', + message: + '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', + }, + { + timestamp: '2019-03-18T12:49:08.770Z', + component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', + level: 'WARN', + type: 'deprecation', + node: 'foobar', + message: + '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', + }, + { + timestamp: '2019-03-18T12:48:59.409Z', + component: 'o.e.c.r.a.DiskThresholdMonitor', + level: 'WARN', + type: 'server', + node: 'foobar', + message: + 'high disk watermark [90%] exceeded on [-pH5RhfsRl6FDeTPwD5vEw][Elastic-MBP.local][/Users/chris/Development/repos/kibana/.es/8.0.0/data/nodes/0] free: 29.3gb[6.2%], shards will be relocated away from this node', + }, + { + timestamp: '2019-03-18T12:48:53.753Z', + component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', + level: 'WARN', + type: 'deprecation', + node: 'foobar', + message: + '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', + }, + { + timestamp: '2019-03-18T12:48:53.753Z', + component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', + level: 'WARN', + type: 'deprecation', + node: 'foobar', + message: + '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', + }, + { + timestamp: '2019-03-18T12:48:46.745Z', + component: 'o.e.d.x.m.r.a.RestMonitoringBulkAction', + level: 'WARN', + type: 'deprecation', + node: 'foobar2', + message: + '[POST /_xpack/monitoring/_bulk] is deprecated! Use [POST /_monitoring/bulk] instead.', + }, + ], +}; + +describe('Logs', () => { + it('should render normally', () => { + const component = shallow( + <LogsContent sharePlugin={sharePlugin} logsIndices={'logs-*,*:logs-*'} logs={logs} /> + ); + expect(component).toMatchSnapshot(); + }); + + it('should render fewer columns for node or index view', () => { + const component = shallow( + <LogsContent + sharePlugin={sharePlugin} + logsIndices={'logs-*,*:logs-*'} + logs={logs} + nodeId="12345" + /> + ); + expect(component.find('EuiBasicTable').prop('columns')).toMatchSnapshot(); + }); + + it('should render a link to filter by cluster uuid', () => { + const component = shallow( + <LogsContent + sharePlugin={sharePlugin} + logsIndices={'logs-*,*:logs-*'} + logs={logs} + clusterUuid="12345" + /> + ); + expect(component.find('EuiCallOut')).toMatchSnapshot(); + }); + + it('should render a link to filter by cluster uuid and node uuid', () => { + const component = shallow( + <LogsContent + sharePlugin={sharePlugin} + logsIndices={'logs-*,*:logs-*'} + logs={logs} + clusterUuid="12345" + nodeId="6789" + /> + ); + expect(component.find('EuiCallOut')).toMatchSnapshot(); + }); + + it('should render a link to filter by cluster uuid and index uuid', () => { + const component = shallow( + <LogsContent + sharePlugin={sharePlugin} + logsIndices={'logs-*,*:logs-*'} + logs={logs} + clusterUuid="12345" + indexUuid="6789" + /> + ); + expect(component.find('EuiCallOut')).toMatchSnapshot(); + }); + + it('should render a reason if the logs are disabled', () => { + const component = shallow( + <LogsContent + sharePlugin={sharePlugin} + logsIndices={'logs-*,*:logs-*'} + logs={{ enabled: false, limit: 15, reason: {} }} + /> + ); + expect(component).toMatchSnapshot(); + }); +}); diff --git a/x-pack/plugins/monitoring/public/components/logs/logs.tsx b/x-pack/plugins/monitoring/public/components/logs/logs.tsx new file mode 100644 index 0000000000000..b17129d90eac0 --- /dev/null +++ b/x-pack/plugins/monitoring/public/components/logs/logs.tsx @@ -0,0 +1,310 @@ +/* + * 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, { PureComponent, useContext } from 'react'; +import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app'; +import { upperFirst } from 'lodash'; +import { EuiBasicTable, EuiTitle, EuiSpacer, EuiText, EuiCallOut, EuiLink } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { SharePluginStart } from '@kbn/share-plugin/public'; +import { Reason, type IReason } from './reason'; +import { formatDateTimeLocal } from '../../../common/formatting'; +import { Legacy } from '../../legacy_shims'; +import { ExternalConfigContext } from '../../application/contexts/external_config_context'; +import { MonitoringStartServices } from '../../types'; + +interface LogsProps { + logs: { + logs?: Array<{ + timestamp: string; + component: string; + level: string; + type: string; + node: string; + message: string; + }>; + enabled: boolean; + limit: number; + reason?: IReason; + }; + nodeId?: string; + indexUuid?: string; + clusterUuid?: string; +} + +interface LogsContentProps extends LogsProps { + sharePlugin: SharePluginStart; + logsIndices: string; +} + +const getFormattedDateTimeLocal = (timestamp: number | Date) => { + const timezone = Legacy.shims.uiSettings?.get('dateFormat:tz'); + return formatDateTimeLocal(timestamp, timezone); +}; + +const columnTimestampTitle = i18n.translate('xpack.monitoring.logs.listing.timestampTitle', { + defaultMessage: 'Timestamp', +}); + +const columnLevelTitle = i18n.translate('xpack.monitoring.logs.listing.levelTitle', { + defaultMessage: 'Level', +}); + +const columnTypeTitle = i18n.translate('xpack.monitoring.logs.listing.typeTitle', { + defaultMessage: 'Type', +}); + +const columnMessageTitle = i18n.translate('xpack.monitoring.logs.listing.messageTitle', { + defaultMessage: 'Message', +}); + +const columnComponentTitle = i18n.translate('xpack.monitoring.logs.listing.componentTitle', { + defaultMessage: 'Component', +}); + +const columnNodeTitle = i18n.translate('xpack.monitoring.logs.listing.nodeTitle', { + defaultMessage: 'Node', +}); + +const columns = [ + { + field: 'timestamp', + name: columnTimestampTitle, + width: '12%', + render: (timestamp: number | Date) => getFormattedDateTimeLocal(timestamp), + }, + { + field: 'level', + name: columnLevelTitle, + width: '5%', + }, + { + field: 'type', + name: columnTypeTitle, + width: '10%', + render: (type: string) => upperFirst(type), + }, + { + field: 'message', + name: columnMessageTitle, + width: '55%', + }, + { + field: 'component', + name: columnComponentTitle, + width: '18%', + }, +]; + +const clusterColumns = [ + { + field: 'timestamp', + name: columnTimestampTitle, + width: '12%', + render: (timestamp: number | Date) => getFormattedDateTimeLocal(timestamp), + }, + { + field: 'level', + name: columnLevelTitle, + width: '5%', + }, + { + field: 'type', + name: columnTypeTitle, + width: '10%', + render: (type: string) => upperFirst(type), + }, + { + field: 'message', + name: columnMessageTitle, + width: '45%', + }, + { + field: 'component', + name: columnComponentTitle, + width: '15%', + }, + { + field: 'node', + name: columnNodeTitle, + width: '13%', + }, +]; + +function getDiscoverLink( + clusterUuid?: string, + nodeId?: string, + indexUuid?: string, + sharePlugin?: SharePluginStart, + logsIndices?: string +) { + const params = []; + if (clusterUuid) { + params.push(`elasticsearch.cluster.uuid:${clusterUuid}`); + } + if (nodeId) { + params.push(`elasticsearch.node.id:${nodeId}`); + } + if (indexUuid) { + params.push(`elasticsearch.index.name:${indexUuid}`); + } + + const filter = params.join(' and '); + const discoverLocator = sharePlugin?.url.locators.get('DISCOVER_APP_LOCATOR'); + + const base = discoverLocator?.getRedirectUrl({ + dataViewSpec: { + id: logsIndices, + title: logsIndices, + }, + query: { + language: 'kuery', + query: filter, + }, + }); + + return base; +} + +export const Logs = (props: LogsProps) => { + const { + services: { share }, + } = useKibana<MonitoringStartServices>(); + const externalConfig = useContext(ExternalConfigContext); + return <LogsContent sharePlugin={share} logsIndices={externalConfig.logsIndices} {...props} />; +}; + +export class LogsContent extends PureComponent<LogsContentProps> { + renderLogs() { + const { + logs: { enabled, logs }, + nodeId, + indexUuid, + } = this.props; + if (!enabled) { + return null; + } + + return ( + <EuiBasicTable items={logs || []} columns={nodeId || indexUuid ? columns : clusterColumns} /> + ); + } + + renderNoLogs() { + const { + logs: { enabled, reason }, + } = this.props; + if (enabled) { + return null; + } + + return <Reason reason={reason} />; + } + + renderCallout() { + const { capabilities: uiCapabilities, kibanaServices } = Legacy.shims; + const show = uiCapabilities.discover && uiCapabilities.discover.show; + + const { + logs: { enabled }, + nodeId, + clusterUuid, + indexUuid, + sharePlugin, + logsIndices, + } = this.props; + + if (!enabled || !show) { + return null; + } + const discoverLink = getDiscoverLink(clusterUuid, nodeId, indexUuid, sharePlugin, logsIndices); + + return discoverLink ? ( + <EuiCallOut + size="m" + title={i18n.translate('xpack.monitoring.logs.listing.calloutTitle', { + defaultMessage: 'Want to see more log entries?', + })} + iconType="logsApp" + > + <RedirectAppLinks coreStart={kibanaServices}> + <FormattedMessage + id="xpack.monitoring.logs.listing.linkText" + defaultMessage="Visit {link} to dive deeper." + values={{ + link: ( + <EuiLink href={discoverLink}> + {i18n.translate('xpack.monitoring.logs.listing.calloutLinkText', { + defaultMessage: 'Discover', + })} + </EuiLink> + ), + }} + /> + </RedirectAppLinks> + </EuiCallOut> + ) : null; + } + + render() { + const { + nodeId, + indexUuid, + logs: { limit }, + } = this.props; + + let description; + + if (nodeId) { + description = i18n.translate('xpack.monitoring.logs.listing.nodePageDescription', { + defaultMessage: + 'Showing the most recent log entries for this node, up to {limit} total log entries.', + values: { + limit, + }, + }); + } else if (indexUuid) { + description = i18n.translate('xpack.monitoring.logs.listing.indexPageDescription', { + defaultMessage: + 'Showing the most recent log entries for this index, up to {limit} total log entries.', + values: { + limit, + }, + }); + } else { + description = i18n.translate('xpack.monitoring.logs.listing.clusterPageDescription', { + defaultMessage: + 'Showing the most recent log entries for this cluster, up to {limit} total log entries.', + values: { + limit, + }, + }); + } + + return ( + <div> + <EuiTitle> + <h1> + {i18n.translate('xpack.monitoring.logs.listing.pageTitle', { + defaultMessage: 'Recent Log Entries', + })} + </h1> + </EuiTitle> + <EuiText size="s"> + <p>{description}</p> + </EuiText> + <EuiSpacer size="m" /> + {this.renderLogs()} + {this.renderNoLogs()} + <EuiSpacer size="m" /> + {this.renderCallout()} + </div> + ); + } +} diff --git a/x-pack/plugins/monitoring/public/components/logs/reason.js b/x-pack/plugins/monitoring/public/components/logs/reason.js deleted file mode 100644 index 4444c818d5cce..0000000000000 --- a/x-pack/plugins/monitoring/public/components/logs/reason.js +++ /dev/null @@ -1,193 +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 React from 'react'; -import { EuiCallOut, EuiLink } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { Legacy } from '../../legacy_shims'; -import { Monospace } from '../metricbeat_migration/instruction_steps/components/monospace/monospace'; - -export const Reason = ({ reason }) => { - const filebeatUrl = Legacy.shims.docLinks.links.filebeat.installation; - const elasticsearchUrl = Legacy.shims.docLinks.links.filebeat.elasticsearchModule; - const troubleshootUrl = Legacy.shims.docLinks.links.monitoring.troubleshootKibana; - let title = i18n.translate('xpack.monitoring.logs.reason.defaultTitle', { - defaultMessage: 'No log data found', - }); - let message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.defaultMessage" - defaultMessage="We did not find any log data and we are unable to diagnose why. {link}" - values={{ - link: ( - <EuiLink target="_blank" href={filebeatUrl}> - <FormattedMessage - id="xpack.monitoring.logs.reason.defaultMessageLink" - defaultMessage="Please verify your setup is correct." - /> - </EuiLink> - ), - }} - /> - ); - - if (false === reason.indexPatternExists) { - title = i18n.translate('xpack.monitoring.logs.reason.noIndexPatternTitle', { - defaultMessage: 'No log data found', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.noIndexPatternMessage" - defaultMessage="Set up {link}, then configure your Elasticsearch output to your monitoring cluster." - values={{ - link: ( - <EuiLink target="_blank" href={filebeatUrl}> - {i18n.translate('xpack.monitoring.logs.reason.noIndexPatternLink', { - defaultMessage: 'Filebeat', - })} - </EuiLink> - ), - }} - /> - ); - } else if ( - false === reason.indexPatternInTimeRangeExists || - (false === reason.typeExists && reason.typeExistsAtAnyTime) - ) { - title = i18n.translate('xpack.monitoring.logs.reason.noIndexPatternInTimePeriodTitle', { - defaultMessage: 'No logs for the selected time', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.noIndexPatternInTimePeriodMessage" - defaultMessage="Use the time filter to adjust your timeframe." - /> - ); - } else if (false === reason.typeExists) { - title = i18n.translate('xpack.monitoring.logs.reason.noTypeTitle', { - defaultMessage: 'No logs for Elasticsearch', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.noTypeMessage" - defaultMessage="Follow {link} to set up Elasticsearch." - values={{ - link: ( - <EuiLink target="_blank" href={elasticsearchUrl}> - {i18n.translate('xpack.monitoring.logs.reason.noTypeLink', { - defaultMessage: 'these directions', - })} - </EuiLink> - ), - }} - /> - ); - } else if (false === reason.usingStructuredLogs) { - title = i18n.translate('xpack.monitoring.logs.reason.notUsingStructuredLogsTitle', { - defaultMessage: 'No structured logs found', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.notUsingStructuredLogsMessage" - defaultMessage="Check if the {varPaths} setting {link}." - values={{ - varPaths: <Monospace>var.paths</Monospace>, - link: ( - <EuiLink target="_blank" href={elasticsearchUrl}> - {i18n.translate('xpack.monitoring.logs.reason.notUsingStructuredLogsLink', { - defaultMessage: 'points to JSON logs', - })} - </EuiLink> - ), - }} - /> - ); - } else if (false === reason.clusterExists) { - title = i18n.translate('xpack.monitoring.logs.reason.noClusterTitle', { - defaultMessage: 'No logs for this cluster', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.noClusterMessage" - defaultMessage="Check that your {link} is correct." - values={{ - link: ( - <EuiLink target="_blank" href={elasticsearchUrl}> - {i18n.translate('xpack.monitoring.logs.reason.noClusterLink', { - defaultMessage: 'setup', - })} - </EuiLink> - ), - }} - /> - ); - } else if (false === reason.nodeExists) { - title = i18n.translate('xpack.monitoring.logs.reason.noNodeTitle', { - defaultMessage: 'No logs for this Elasticsearch node', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.noNodeMessage" - defaultMessage="Check that your {link} is correct." - values={{ - link: ( - <EuiLink target="_blank" href={elasticsearchUrl}> - {i18n.translate('xpack.monitoring.logs.reason.noNodeLink', { - defaultMessage: 'setup', - })} - </EuiLink> - ), - }} - /> - ); - } else if (false === reason.indexExists) { - title = i18n.translate('xpack.monitoring.logs.reason.noIndexTitle', { - defaultMessage: 'No logs for this index', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.noIndexMessage" - defaultMessage="We found logs, but none for this index. If this problem continues, check that your {link} is correct." - values={{ - link: ( - <EuiLink target="_blank" href={elasticsearchUrl}> - {i18n.translate('xpack.monitoring.logs.reason.noIndexLink', { - defaultMessage: 'setup', - })} - </EuiLink> - ), - }} - /> - ); - } else if (false === reason.correctIndexName) { - title = i18n.translate('xpack.monitoring.logs.reason.correctIndexNameTitle', { - defaultMessage: 'Corrupted filebeat index', - }); - message = ( - <FormattedMessage - id="xpack.monitoring.logs.reason.correctIndexNameMessage" - defaultMessage="There is an issue reading from your filebeat indices. {link}." - values={{ - link: ( - <EuiLink target="_blank" href={troubleshootUrl}> - {i18n.translate('xpack.monitoring.logs.reason.correctIndexNameLink', { - defaultMessage: 'Click here for more information', - })} - </EuiLink> - ), - }} - /> - ); - } - - return ( - <EuiCallOut title={title} color="warning" iconType="help"> - <p>{message}</p> - </EuiCallOut> - ); -}; diff --git a/x-pack/plugins/monitoring/public/components/logs/reason.test.js b/x-pack/plugins/monitoring/public/components/logs/reason.test.tsx similarity index 100% rename from x-pack/plugins/monitoring/public/components/logs/reason.test.js rename to x-pack/plugins/monitoring/public/components/logs/reason.test.tsx diff --git a/x-pack/plugins/monitoring/public/components/logs/reason.tsx b/x-pack/plugins/monitoring/public/components/logs/reason.tsx new file mode 100644 index 0000000000000..82a4f788df98b --- /dev/null +++ b/x-pack/plugins/monitoring/public/components/logs/reason.tsx @@ -0,0 +1,205 @@ +/* + * 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 { EuiCallOut, EuiLink } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { Legacy } from '../../legacy_shims'; +import { Monospace } from '../metricbeat_migration/instruction_steps/components/monospace/monospace'; + +export interface IReason { + indexPatternExists?: boolean; + indexPatternInTimeRangeExists?: boolean; + typeExists?: boolean; + typeExistsAtAnyTime?: boolean; + usingStructuredLogs?: boolean; + clusterExists?: boolean; + nodeExists?: boolean | null; + indexExists?: boolean; + correctIndexName?: boolean; +} + +export const Reason = ({ reason }: { reason?: IReason }) => { + const filebeatUrl = Legacy.shims.docLinks.links.filebeat.installation; + const elasticsearchUrl = Legacy.shims.docLinks.links.filebeat.elasticsearchModule; + const troubleshootUrl = Legacy.shims.docLinks.links.monitoring.troubleshootKibana; + let title = i18n.translate('xpack.monitoring.logs.reason.defaultTitle', { + defaultMessage: 'No log data found', + }); + let message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.defaultMessage" + defaultMessage="We did not find any log data and we are unable to diagnose why. {link}" + values={{ + link: ( + <EuiLink target="_blank" href={filebeatUrl}> + <FormattedMessage + id="xpack.monitoring.logs.reason.defaultMessageLink" + defaultMessage="Please verify your setup is correct." + /> + </EuiLink> + ), + }} + /> + ); + + if (false === reason?.indexPatternExists) { + title = i18n.translate('xpack.monitoring.logs.reason.noIndexPatternTitle', { + defaultMessage: 'No log data found', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.noIndexPatternMessage" + defaultMessage="Set up {link}, then configure your Elasticsearch output to your monitoring cluster." + values={{ + link: ( + <EuiLink target="_blank" href={filebeatUrl}> + {i18n.translate('xpack.monitoring.logs.reason.noIndexPatternLink', { + defaultMessage: 'Filebeat', + })} + </EuiLink> + ), + }} + /> + ); + } else if ( + false === reason?.indexPatternInTimeRangeExists || + (false === reason?.typeExists && reason.typeExistsAtAnyTime) + ) { + title = i18n.translate('xpack.monitoring.logs.reason.noIndexPatternInTimePeriodTitle', { + defaultMessage: 'No logs for the selected time', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.noIndexPatternInTimePeriodMessage" + defaultMessage="Use the time filter to adjust your timeframe." + /> + ); + } else if (false === reason?.typeExists) { + title = i18n.translate('xpack.monitoring.logs.reason.noTypeTitle', { + defaultMessage: 'No logs for Elasticsearch', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.noTypeMessage" + defaultMessage="Follow {link} to set up Elasticsearch." + values={{ + link: ( + <EuiLink target="_blank" href={elasticsearchUrl}> + {i18n.translate('xpack.monitoring.logs.reason.noTypeLink', { + defaultMessage: 'these directions', + })} + </EuiLink> + ), + }} + /> + ); + } else if (false === reason?.usingStructuredLogs) { + title = i18n.translate('xpack.monitoring.logs.reason.notUsingStructuredLogsTitle', { + defaultMessage: 'No structured logs found', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.notUsingStructuredLogsMessage" + defaultMessage="Check if the {varPaths} setting {link}." + values={{ + varPaths: <Monospace>var.paths</Monospace>, + link: ( + <EuiLink target="_blank" href={elasticsearchUrl}> + {i18n.translate('xpack.monitoring.logs.reason.notUsingStructuredLogsLink', { + defaultMessage: 'points to JSON logs', + })} + </EuiLink> + ), + }} + /> + ); + } else if (false === reason?.clusterExists) { + title = i18n.translate('xpack.monitoring.logs.reason.noClusterTitle', { + defaultMessage: 'No logs for this cluster', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.noClusterMessage" + defaultMessage="Check that your {link} is correct." + values={{ + link: ( + <EuiLink target="_blank" href={elasticsearchUrl}> + {i18n.translate('xpack.monitoring.logs.reason.noClusterLink', { + defaultMessage: 'setup', + })} + </EuiLink> + ), + }} + /> + ); + } else if (false === reason?.nodeExists) { + title = i18n.translate('xpack.monitoring.logs.reason.noNodeTitle', { + defaultMessage: 'No logs for this Elasticsearch node', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.noNodeMessage" + defaultMessage="Check that your {link} is correct." + values={{ + link: ( + <EuiLink target="_blank" href={elasticsearchUrl}> + {i18n.translate('xpack.monitoring.logs.reason.noNodeLink', { + defaultMessage: 'setup', + })} + </EuiLink> + ), + }} + /> + ); + } else if (false === reason?.indexExists) { + title = i18n.translate('xpack.monitoring.logs.reason.noIndexTitle', { + defaultMessage: 'No logs for this index', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.noIndexMessage" + defaultMessage="We found logs, but none for this index. If this problem continues, check that your {link} is correct." + values={{ + link: ( + <EuiLink target="_blank" href={elasticsearchUrl}> + {i18n.translate('xpack.monitoring.logs.reason.noIndexLink', { + defaultMessage: 'setup', + })} + </EuiLink> + ), + }} + /> + ); + } else if (false === reason?.correctIndexName) { + title = i18n.translate('xpack.monitoring.logs.reason.correctIndexNameTitle', { + defaultMessage: 'Corrupted filebeat index', + }); + message = ( + <FormattedMessage + id="xpack.monitoring.logs.reason.correctIndexNameMessage" + defaultMessage="There is an issue reading from your filebeat indices. {link}." + values={{ + link: ( + <EuiLink target="_blank" href={troubleshootUrl}> + {i18n.translate('xpack.monitoring.logs.reason.correctIndexNameLink', { + defaultMessage: 'Click here for more information', + })} + </EuiLink> + ), + }} + /> + ); + } + + return ( + <EuiCallOut title={title} color="warning" iconType="help"> + <p>{message}</p> + </EuiCallOut> + ); +}; diff --git a/x-pack/plugins/monitoring/public/legacy_shims.ts b/x-pack/plugins/monitoring/public/legacy_shims.ts index 32322a2b4f7ac..b2b5cafedfb69 100644 --- a/x-pack/plugins/monitoring/public/legacy_shims.ts +++ b/x-pack/plugins/monitoring/public/legacy_shims.ts @@ -22,7 +22,6 @@ import { TriggersAndActionsUIPublicPluginStart } from '@kbn/triggers-actions-ui- import { TypeRegistry } from '@kbn/triggers-actions-ui-plugin/public/application/type_registry'; import { ActionTypeModel, RuleTypeModel } from '@kbn/triggers-actions-ui-plugin/public/types'; import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public'; -import type { InfraClientStartExports } from '@kbn/infra-plugin/public'; import { MonitoringStartPluginDependencies, LegacyMonitoringStartPluginDependencies, @@ -74,7 +73,6 @@ export interface IShims { usageCollection: UsageCollectionSetup; kibanaServices: CoreStart & { usageCollection: UsageCollectionSetup }; appMountParameters: AppMountParameters; - infra?: InfraClientStartExports; } export class Legacy { @@ -87,7 +85,6 @@ export class Legacy { triggersActionsUi, usageCollection, appMountParameters, - infra, }: LegacyMonitoringStartPluginDependencies) { this._shims = { toastNotifications: core.notifications.toasts, @@ -146,7 +143,6 @@ export class Legacy { usageCollection, }, appMountParameters, - infra, }; } diff --git a/x-pack/plugins/monitoring/public/plugin.ts b/x-pack/plugins/monitoring/public/plugin.ts index 02033d839e1ae..b526a37ceb6de 100644 --- a/x-pack/plugins/monitoring/public/plugin.ts +++ b/x-pack/plugins/monitoring/public/plugin.ts @@ -111,7 +111,6 @@ export class MonitoringPlugin usageCollection: plugins.usageCollection, appMountParameters: params, dataViews: pluginsStart.dataViews, - infra: pluginsStart.infra, }; Legacy.init({ @@ -126,7 +125,6 @@ export class MonitoringPlugin usageCollection: deps.usageCollection, appMountParameters: deps.appMountParameters, dataViews: deps.dataViews, - infra: deps.infra, share: deps.share, }); diff --git a/x-pack/plugins/monitoring/public/types.ts b/x-pack/plugins/monitoring/public/types.ts index 1df9894ca9327..93598557ee58f 100644 --- a/x-pack/plugins/monitoring/public/types.ts +++ b/x-pack/plugins/monitoring/public/types.ts @@ -15,7 +15,6 @@ export type { MLJobs } from '../server/lib/elasticsearch/get_ml_jobs'; import { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; import { DashboardStart } from '@kbn/dashboard-plugin/public'; import { FleetStart } from '@kbn/fleet-plugin/public'; -import type { InfraClientStartExports } from '@kbn/infra-plugin/public'; import { SharePluginStart } from '@kbn/share-plugin/public'; import { ReactNode } from 'react'; @@ -27,7 +26,6 @@ export interface MonitoringStartPluginDependencies { dataViews: DataViewsPublicPluginStart; dashboard?: DashboardStart; fleet?: FleetStart; - infra?: InfraClientStartExports; share: SharePluginStart; } diff --git a/x-pack/plugins/monitoring/server/lib/setup/collection/get_collection_status.test.ts b/x-pack/plugins/monitoring/server/lib/setup/collection/get_collection_status.test.ts index ce03cc5aecf3b..efdcde6d1f937 100644 --- a/x-pack/plugins/monitoring/server/lib/setup/collection/get_collection_status.test.ts +++ b/x-pack/plugins/monitoring/server/lib/setup/collection/get_collection_status.test.ts @@ -6,7 +6,6 @@ */ import { featuresPluginMock } from '@kbn/features-plugin/server/mocks'; -import { infraPluginMock } from '@kbn/infra-plugin/server/mocks'; import { loggerMock } from '@kbn/logging-mocks'; import { usageCollectionPluginMock } from '@kbn/usage-collection-plugin/server/mocks'; import { configSchema, createConfig } from '../../../config'; @@ -37,7 +36,6 @@ const mockReq = ( plugins: { usageCollection: usageCollectionSetup, features: featuresPluginMock.createSetup(), - infra: infraPluginMock.createSetupContract(), }, }, }, diff --git a/x-pack/plugins/monitoring/server/routes/api/v1/alerts/enable.ts b/x-pack/plugins/monitoring/server/routes/api/v1/alerts/enable.ts index 593f3c9b2b4ab..61253d93dbebf 100644 --- a/x-pack/plugins/monitoring/server/routes/api/v1/alerts/enable.ts +++ b/x-pack/plugins/monitoring/server/routes/api/v1/alerts/enable.ts @@ -26,7 +26,6 @@ export function enableAlertsRoute(server: MonitoringCore, npRoute: RouteDependen async (context, request, response) => { try { const alertingContext = await context.alerting; - const infraContext = await context.infra; const actionContext = await context.actions; const alerts = RulesFactory.getAll(); @@ -39,7 +38,7 @@ export function enableAlertsRoute(server: MonitoringCore, npRoute: RouteDependen if (!isSufficientlySecure || !hasPermanentEncryptionKey) { server.log.info( - `Skipping rule creation for "${infraContext.spaceId}" space; Stack Monitoring rules require API keys to be enabled and an encryption key to be configured.` + `Skipping rule creation; Stack Monitoring rules require API keys to be enabled and an encryption key to be configured.` ); return response.ok({ body: { @@ -90,9 +89,7 @@ export function enableAlertsRoute(server: MonitoringCore, npRoute: RouteDependen alerts.map((alert) => alert.createIfDoesNotExist(rulesClient, actionsClient, actions)) ); - server.log.info( - `Created ${createdAlerts.length} alerts for "${infraContext.spaceId}" space` - ); + server.log.info(`Created ${createdAlerts.length} alerts`); return response.ok({ body: { createdAlerts } }); } catch (err) { diff --git a/x-pack/plugins/monitoring/server/types.ts b/x-pack/plugins/monitoring/server/types.ts index 14ef949b93949..ea15ce98117e5 100644 --- a/x-pack/plugins/monitoring/server/types.ts +++ b/x-pack/plugins/monitoring/server/types.ts @@ -25,7 +25,6 @@ import type { import type { AlertingApiRequestHandlerContext } from '@kbn/alerting-plugin/server'; import type { RacApiRequestHandlerContext } from '@kbn/rule-registry-plugin/server'; import { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server'; -import { InfraPluginSetup, InfraRequestHandlerContext } from '@kbn/infra-plugin/server'; import { LicensingPluginStart } from '@kbn/licensing-plugin/server'; import { FeaturesPluginSetup } from '@kbn/features-plugin/server'; import { EncryptedSavedObjectsPluginSetup } from '@kbn/encrypted-saved-objects-plugin/server'; @@ -51,14 +50,12 @@ export interface PluginsSetup { usageCollection?: UsageCollectionSetup; features: FeaturesPluginSetup; alerting?: AlertingServerSetup; - infra: InfraPluginSetup; cloud?: CloudSetup; } export type RequestHandlerContextMonitoringPlugin = CustomRequestHandlerContext<{ actions?: ActionsApiRequestHandlerContext; alerting?: AlertingApiRequestHandlerContext; - infra: InfraRequestHandlerContext; ruleRegistry?: RacApiRequestHandlerContext; }>; diff --git a/x-pack/plugins/monitoring/tsconfig.json b/x-pack/plugins/monitoring/tsconfig.json index 56063b3e06ceb..75676ed06e3c4 100644 --- a/x-pack/plugins/monitoring/tsconfig.json +++ b/x-pack/plugins/monitoring/tsconfig.json @@ -17,7 +17,6 @@ "@kbn/cloud-plugin", "@kbn/encrypted-saved-objects-plugin", "@kbn/features-plugin", - "@kbn/infra-plugin", "@kbn/licensing-plugin", "@kbn/triggers-actions-ui-plugin", "@kbn/expect", diff --git a/x-pack/plugins/observability_solution/apm/common/service_groups.ts b/x-pack/plugins/observability_solution/apm/common/service_groups.ts index 035aa06c83d32..a393399bbb4a8 100644 --- a/x-pack/plugins/observability_solution/apm/common/service_groups.ts +++ b/x-pack/plugins/observability_solution/apm/common/service_groups.ts @@ -17,7 +17,6 @@ import { export const LABELS = 'labels'; // implies labels.* wildcard export const APM_SERVICE_GROUP_SAVED_OBJECT_TYPE = 'apm-service-group'; -export const SERVICE_GROUP_COLOR_DEFAULT = '#D1DAE7'; export const MAX_NUMBER_OF_SERVICE_GROUPS = 500; export interface ServiceGroup { diff --git a/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/constants.ts b/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/constants.ts index 806a5d1dd1c28..bd333b40e5a69 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/constants.ts +++ b/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/constants.ts @@ -8,7 +8,6 @@ import { SettingsSpec } from '@elastic/charts'; export const DEFAULT_DATE_FORMAT = 'HH:mm:ss'; -export const CHART_ANNOTATION_RED_COLOR = '#BD271E'; export const CHART_SETTINGS: Partial<SettingsSpec> = { showLegend: false, }; diff --git a/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/failed_transaction_chart.tsx b/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/failed_transaction_chart.tsx index f5031282ad7ad..b917d6226465c 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/failed_transaction_chart.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/alerting/ui_components/alert_details_app_section/failed_transaction_chart.tsx @@ -7,7 +7,6 @@ /* Error Rate */ import React from 'react'; -import chroma from 'chroma-js'; import { EuiFlexItem, EuiPanel, @@ -155,7 +154,7 @@ function FailedTransactionChart({ <AlertActiveTimeRangeAnnotation alertStart={alertStart} alertEnd={alertEnd} - color={chroma(transparentize('#F04E981A', 0.2)).hex().toUpperCase()} + color={transparentize(euiTheme.colors.danger, 0.2)} id={'alertActiveRect'} key={'alertActiveRect'} />, diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/embedded_map.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/embedded_map.tsx index 1d8c39b1aa98e..c75c8985f3a17 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/embedded_map.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/embedded_map.tsx @@ -13,6 +13,7 @@ import type { Filter } from '@kbn/es-query'; import { ApmPluginStartDeps } from '../../../../../plugin'; import { getLayerList } from './map_layers/get_layer_list'; import { MapTypes } from '../../../../../../common/mobile/constants'; +import { StyleColorParams } from './map_layers/style_color_params'; function EmbeddedMapComponent({ selectedMap, @@ -21,6 +22,11 @@ function EmbeddedMapComponent({ kuery = '', filters, dataView, + styleColors = { + lineColor: '', + labelColor: '', + labelOutlineColor: '', + }, }: { selectedMap: MapTypes; start: string; @@ -28,6 +34,7 @@ function EmbeddedMapComponent({ kuery?: string; filters: Filter[]; dataView?: DataView; + styleColors?: StyleColorParams; }) { const { maps } = useKibana<ApmPluginStartDeps>().services; @@ -37,9 +44,10 @@ function EmbeddedMapComponent({ selectedMap, maps, dataViewId: dataView?.id, + styleColors, }) : []; - }, [selectedMap, maps, dataView?.id]); + }, [selectedMap, maps, dataView?.id, styleColors]); return ( <div diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/index.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/index.tsx index ed49a521b9d02..3afaa9ce429b7 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/index.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/index.tsx @@ -9,9 +9,11 @@ import React, { useState } from 'react'; import { DataView } from '@kbn/data-views-plugin/common'; import { EuiSpacer } from '@elastic/eui'; import type { Filter } from '@kbn/es-query'; +import { useEuiTheme } from '@elastic/eui'; import { EmbeddedMap } from './embedded_map'; import { MapTypes } from '../../../../../../common/mobile/constants'; import { EmbeddedMapSelect } from './embedded_map_select'; +import { StyleColorParams } from './map_layers/style_color_params'; export function GeoMap({ start, @@ -27,7 +29,13 @@ export function GeoMap({ dataView?: DataView; }) { const [selectedMap, selectMap] = useState(MapTypes.Http); + const { euiTheme } = useEuiTheme(); + const styleColors = { + lineColor: euiTheme.colors.textParagraph, + labelColor: euiTheme.colors.textParagraph, + labelOutlineColor: euiTheme.colors.backgroundBasePlain, + } as StyleColorParams; return ( <> <EmbeddedMapSelect selectedMap={selectedMap} onChange={selectMap} /> @@ -44,6 +52,7 @@ export function GeoMap({ kuery={kuery} filters={filters} dataView={dataView} + styleColors={styleColors} /> </div> </> diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_http_requests_map_layer_list.ts b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_http_requests_map_layer_list.ts index 0aff60d6e155c..98adacc76953d 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_http_requests_map_layer_list.ts +++ b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_http_requests_map_layer_list.ts @@ -26,6 +26,7 @@ import { } from '../../../../../../../common/es_fields/apm'; import { getLayerStyle, PalleteColors } from './get_map_layer_style'; import { MobileSpanSubtype, MobileSpanType } from '../../../../../../../common/mobile/constants'; +import { StyleColorParams } from './style_color_params'; interface VectorLayerDescriptor extends BaseVectorLayerDescriptor { sourceDescriptor: EMSFileSourceDescriptor; @@ -41,7 +42,11 @@ const label = i18n.translate('xpack.apm.serviceOverview.embeddedMap.httpRequests defaultMessage: 'HTTP requests', }); -export function getHttpRequestsLayerList(maps: MapsStartApi | undefined, dataViewId: string) { +export function getHttpRequestsLayerList( + maps: MapsStartApi | undefined, + dataViewId: string, + styleColors: StyleColorParams +) { const whereQuery = { language: 'kuery', query: `${PROCESSOR_EVENT}:${ProcessorEvent.span} and ${SPAN_SUBTYPE}:${MobileSpanSubtype.Http} and ${SPAN_TYPE}:${MobileSpanType.External}`, @@ -74,7 +79,7 @@ export function getHttpRequestsLayerList(maps: MapsStartApi | undefined, dataVie id: 'world_countries', tooltipProperties: [COUNTRY_NAME], }, - style: getLayerStyle(HTTP_REQUEST_PER_COUNTRY, PalleteColors.BluetoRed), + style: getLayerStyle(HTTP_REQUEST_PER_COUNTRY, PalleteColors.BluetoRed, styleColors), id: uuidv4(), label: i18n.translate('xpack.apm.serviceOverview.embeddedMap.httpRequests.country.label', { defaultMessage: 'HTTP requests per country', @@ -113,7 +118,7 @@ export function getHttpRequestsLayerList(maps: MapsStartApi | undefined, dataVie id: 'administrative_regions_lvl2', tooltipProperties: ['region_iso_code'], }, - style: getLayerStyle(HTTP_REQUESTS_PER_REGION, PalleteColors.YellowtoRed), + style: getLayerStyle(HTTP_REQUESTS_PER_REGION, PalleteColors.YellowtoRed, styleColors), id: uuidv4(), label: i18n.translate('xpack.apm.serviceOverview.embeddedMap.httpRequests.region.label', { defaultMessage: 'HTTP requests per region', diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_layer_list.ts b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_layer_list.ts index 0b6d736ad2551..848991d79f0bd 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_layer_list.ts +++ b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_layer_list.ts @@ -8,23 +8,26 @@ import type { MapsStartApi } from '@kbn/maps-plugin/public'; import { LayerDescriptor } from '@kbn/maps-plugin/common'; import { getHttpRequestsLayerList } from './get_http_requests_map_layer_list'; import { getSessionMapLayerList } from './get_session_map_layer_list'; +import { StyleColorParams } from './style_color_params'; import { MapTypes } from '../../../../../../../common/mobile/constants'; export function getLayerList({ selectedMap, maps, dataViewId, + styleColors, }: { selectedMap: MapTypes; maps: MapsStartApi | undefined; dataViewId: string; + styleColors: StyleColorParams; }): LayerDescriptor[] { switch (selectedMap) { case MapTypes.Http: - return getHttpRequestsLayerList(maps, dataViewId); + return getHttpRequestsLayerList(maps, dataViewId, styleColors); case MapTypes.Session: - return getSessionMapLayerList(maps, dataViewId); + return getSessionMapLayerList(maps, dataViewId, styleColors); default: - return getHttpRequestsLayerList(maps, dataViewId); + return getHttpRequestsLayerList(maps, dataViewId, styleColors); } } diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_map_layer_style.ts b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_map_layer_style.ts index 05581765a0aa6..392ccc31ce0b1 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_map_layer_style.ts +++ b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_map_layer_style.ts @@ -15,12 +15,19 @@ import { SYMBOLIZE_AS_TYPES, } from '@kbn/maps-plugin/common'; +import { StyleColorParams } from './style_color_params'; + export enum PalleteColors { BluetoRed = 'Blue to Red', YellowtoRed = 'Yellow to Red', } -export function getLayerStyle(fieldName: string, color: PalleteColors): VectorStyleDescriptor { +export function getLayerStyle( + fieldName: string, + color: PalleteColors, + styleColors: StyleColorParams +): VectorStyleDescriptor { + const { lineColor, labelColor, labelOutlineColor } = styleColors; return { type: 'VECTOR', properties: { @@ -41,7 +48,7 @@ export function getLayerStyle(fieldName: string, color: PalleteColors): VectorSt }, lineColor: { type: STYLE_TYPE.DYNAMIC, - options: { color: '#3d3d3d', fieldMetaOptions: { isEnabled: true } }, + options: { color: lineColor, fieldMetaOptions: { isEnabled: true } }, }, lineWidth: { type: STYLE_TYPE.STATIC, options: { size: 1 } }, iconSize: { type: STYLE_TYPE.STATIC, options: { size: 6 } }, @@ -72,12 +79,12 @@ export function getLayerStyle(fieldName: string, color: PalleteColors): VectorSt }, labelColor: { type: STYLE_TYPE.STATIC, - options: { color: '#3d3d3d' }, + options: { color: labelColor }, }, labelSize: { type: STYLE_TYPE.STATIC, options: { size: 14 } }, labelBorderColor: { type: STYLE_TYPE.STATIC, - options: { color: '#FFFFFF' }, + options: { color: labelOutlineColor }, }, symbolizeAs: { options: { value: SYMBOLIZE_AS_TYPES.CIRCLE } }, labelBorderSize: { options: { size: LABEL_BORDER_SIZES.SMALL } }, diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_session_map_layer_list.ts b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_session_map_layer_list.ts index 4a6e858085dac..b71d3bd316b65 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_session_map_layer_list.ts +++ b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/get_session_map_layer_list.ts @@ -22,6 +22,7 @@ import { SESSION_ID, } from '../../../../../../../common/es_fields/apm'; import { getLayerStyle, PalleteColors } from './get_map_layer_style'; +import { StyleColorParams } from './style_color_params'; interface VectorLayerDescriptor extends BaseVectorLayerDescriptor { sourceDescriptor: EMSFileSourceDescriptor; @@ -36,7 +37,11 @@ const SESSION_PER_REGION = `__kbnjoin__cardinality_of_session.id__${PER_REGION_L const label = i18n.translate('xpack.apm.serviceOverview.embeddedMap.session.metric.label', { defaultMessage: 'Sessions', }); -export function getSessionMapLayerList(maps: MapsStartApi | undefined, dataViewId: string) { +export function getSessionMapLayerList( + maps: MapsStartApi | undefined, + dataViewId: string, + styleColors: StyleColorParams +) { const sessionsByCountryLayer: VectorLayerDescriptor = { joins: [ { @@ -64,7 +69,7 @@ export function getSessionMapLayerList(maps: MapsStartApi | undefined, dataViewI id: 'world_countries', tooltipProperties: [COUNTRY_NAME], }, - style: getLayerStyle(SESSION_PER_COUNTRY, PalleteColors.BluetoRed), + style: getLayerStyle(SESSION_PER_COUNTRY, PalleteColors.BluetoRed, styleColors), id: uuidv4(), label: i18n.translate('xpack.apm.serviceOverview.embeddedMap.sessionCountry.metric.label', { defaultMessage: 'Sessions per country', @@ -103,7 +108,7 @@ export function getSessionMapLayerList(maps: MapsStartApi | undefined, dataViewI id: 'administrative_regions_lvl2', tooltipProperties: ['region_iso_code'], }, - style: getLayerStyle(SESSION_PER_REGION, PalleteColors.YellowtoRed), + style: getLayerStyle(SESSION_PER_REGION, PalleteColors.YellowtoRed, styleColors), id: uuidv4(), label: i18n.translate('xpack.apm.serviceOverview.embeddedMap.sessionRegion.metric.label', { defaultMessage: 'Sessions per region', diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/style_color_params.ts b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/style_color_params.ts new file mode 100644 index 0000000000000..2934b7055a74f --- /dev/null +++ b/x-pack/plugins/observability_solution/apm/public/components/app/mobile/service_overview/geo_map/map_layers/style_color_params.ts @@ -0,0 +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. + */ + +export interface StyleColorParams { + lineColor: string; + labelColor: string; + labelOutlineColor: string; +} diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_group_save/group_details.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_group_save/group_details.tsx index 5e82ab290e07d..9d763a213863d 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_group_save/group_details.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_group_save/group_details.tsx @@ -19,6 +19,7 @@ import { useColorPickerState, EuiText, isValidHex, + useEuiTheme, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useEffect, useState } from 'react'; @@ -43,7 +44,8 @@ export function GroupDetails({ isLoading, titleId, }: Props) { - const initialColor = serviceGroup?.color || '#5094C4'; + const { euiTheme } = useEuiTheme(); + const initialColor = serviceGroup?.color || euiTheme.colors.backgroundFilledPrimary; const [name, setName] = useState(serviceGroup?.groupName); const [color, setColor, colorPickerErrors] = useColorPickerState(initialColor); const [description, setDescription] = useState<string | undefined>(serviceGroup?.description); diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_groups_list/service_group_card.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_groups_list/service_group_card.tsx index ecf8cf89452f0..4972bf4582813 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_groups_list/service_group_card.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/service_groups/service_groups_list/service_group_card.tsx @@ -14,10 +14,11 @@ import { EuiFlexItem, EuiText, useIsWithinBreakpoints, + useEuiTheme, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import { ServiceGroup, SERVICE_GROUP_COLOR_DEFAULT } from '../../../../../common/service_groups'; +import { ServiceGroup } from '../../../../../common/service_groups'; import { useObservabilityActiveAlertsHref } from '../../../shared/links/kibana'; import { ServiceStat } from './service_stat'; @@ -30,7 +31,7 @@ interface Props { export function ServiceGroupsCard({ serviceGroup, href, serviceGroupCounts, isLoading }: Props) { const isMobile = useIsWithinBreakpoints(['xs', 's']); - + const { euiTheme } = useEuiTheme(); const activeAlertsHref = useObservabilityActiveAlertsHref(serviceGroup.kuery); const cardProps: EuiCardProps = { style: { width: isMobile ? '100%' : 286 }, @@ -38,7 +39,7 @@ export function ServiceGroupsCard({ serviceGroup, href, serviceGroupCounts, isLo <> <EuiAvatar name={serviceGroup.groupName} - color={serviceGroup.color || SERVICE_GROUP_COLOR_DEFAULT} + color={serviceGroup.color || euiTheme.colors.backgroundFilledPrimary} size="l" /> </> diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/index.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/index.tsx index e3e9601c72978..7a9d6be1316c2 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/index.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/index.tsx @@ -180,6 +180,9 @@ export function ServiceInventory() { const [renderedItems, setRenderedItems] = useState<ServiceListItem[]>([]); const mainStatisticsFetch = useServicesMainStatisticsFetcher(debouncedSearchQuery); const { mainStatisticsData, mainStatisticsStatus } = mainStatisticsFetch; + const { + query: { rangeFrom, rangeTo }, + } = useApmParams('/services'); const displayHealthStatus = mainStatisticsData.items.some((item) => 'healthStatus' in item); @@ -285,9 +288,11 @@ export function ServiceInventory() { mainStatisticsStatus === FETCH_STATUS.SUCCESS && comparisonFetch.status === FETCH_STATUS.SUCCESS ) { - onPageReady(); + onPageReady({ + meta: { rangeFrom, rangeTo }, + }); } - }, [mainStatisticsStatus, comparisonFetch.status, onPageReady]); + }, [mainStatisticsStatus, comparisonFetch.status, onPageReady, rangeFrom, rangeTo]); return ( <> diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/apm_services_table.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/apm_services_table.tsx index 930fa2829c424..8b1d3ad19bd7f 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/apm_services_table.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/service_list/apm_services_table.tsx @@ -115,6 +115,7 @@ export function getServiceColumns({ )} > <EuiBadge + data-test-subj="serviceInventoryAlertsBadgeLink" iconType="warning" color="danger" href={link('/services/{serviceName}/alerts', { diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/service_map/index.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/service_map/index.tsx index 4536406a21bd5..113be5407c070 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/service_map/index.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/service_map/index.tsx @@ -186,7 +186,9 @@ export function ServiceMap({ } if (status === FETCH_STATUS.SUCCESS) { - onPageReady(); + onPageReady({ + meta: { rangeFrom: start, rangeTo: end }, + }); } return ( diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/top_traces_overview/trace_list.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/top_traces_overview/trace_list.tsx index d509685ae35a5..9b3d54d4efad5 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/top_traces_overview/trace_list.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/top_traces_overview/trace_list.tsx @@ -135,15 +135,20 @@ export function TraceList({ response }: Props) { const { data: { items } = { items: [] }, status } = response; const { onPageReady } = usePerformanceContext(); - const { query } = useApmParams('/traces'); + const { + query, + query: { rangeFrom, rangeTo }, + } = useApmParams('/traces'); const traceListColumns = useMemo(() => getTraceListColumns({ query }), [query]); useEffect(() => { if (status === FETCH_STATUS.SUCCESS) { - onPageReady(); + onPageReady({ + meta: { rangeFrom, rangeTo }, + }); } - }, [status, onPageReady]); + }, [status, onPageReady, rangeFrom, rangeTo]); return ( <ManagedTable diff --git a/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/http_status_badge.test.tsx b/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/http_status_badge.test.tsx index 423cfa3e6163e..e7d1d388a9579 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/http_status_badge.test.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/http_status_badge.test.tsx @@ -8,52 +8,58 @@ import React from 'react'; import { mount } from 'enzyme'; import { HttpStatusBadge } from '.'; -import { - successColor, - neutralColor, - warningColor, - errorColor, -} from '../../../../utils/http_status_code_to_color'; +import { renderHook } from '@testing-library/react-hooks'; +import { useEuiTheme } from '@elastic/eui'; describe('HttpStatusBadge', () => { describe('render', () => { describe('with status code 100', () => { it('renders with neutral color', () => { const wrapper = mount(<HttpStatusBadge status={100} />); - - expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual(neutralColor); + const { result } = renderHook(() => useEuiTheme()); + expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( + result.current.euiTheme.colors.vis.euiColorVisGrey0 + ); }); }); describe('with status code 200', () => { it('renders with success color', () => { const wrapper = mount(<HttpStatusBadge status={200} />); - - expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual(successColor); + const { result } = renderHook(() => useEuiTheme()); + expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( + result.current.euiTheme.colors.vis.euiColorVisSuccess0 + ); }); }); describe('with status code 301', () => { it('renders with neutral color', () => { const wrapper = mount(<HttpStatusBadge status={301} />); - - expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual(neutralColor); + const { result } = renderHook(() => useEuiTheme()); + expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( + result.current.euiTheme.colors.vis.euiColorVisGrey0 + ); }); }); describe('with status code 404', () => { it('renders with warning color', () => { const wrapper = mount(<HttpStatusBadge status={404} />); - - expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual(warningColor); + const { result } = renderHook(() => useEuiTheme()); + expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( + result.current.euiTheme.colors.vis.euiColorVisWarning0 + ); }); }); describe('with status code 502', () => { it('renders with error color', () => { const wrapper = mount(<HttpStatusBadge status={502} />); - - expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual(errorColor); + const { result } = renderHook(() => useEuiTheme()); + expect(wrapper.find('HttpStatusBadge EuiBadge').prop('color')).toEqual( + result.current.euiTheme.colors.vis.euiColorVisDanger0 + ); }); }); diff --git a/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/index.tsx b/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/index.tsx index 48866619a6543..e3f7f623642db 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/index.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/shared/summary/http_status_badge/index.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { EuiToolTip, EuiBadge } from '@elastic/eui'; import { statusCodes } from './status_codes'; -import { httpStatusCodeToColor } from '../../../../utils/http_status_code_to_color'; +import { useGetStatusColor } from '../../../../utils/http_status_code_to_color'; interface HttpStatusBadgeProps { status: number; @@ -18,10 +18,9 @@ export function HttpStatusBadge({ status }: HttpStatusBadgeProps) { const label = i18n.translate('xpack.apm.transactionDetails.statusCode', { defaultMessage: 'Status code', }); - return ( <EuiToolTip content={label}> - <EuiBadge color={httpStatusCodeToColor(status) || 'default'}> + <EuiBadge color={useGetStatusColor(status) || 'default'}> {status} {statusCodes[status.toString()]} </EuiBadge> </EuiToolTip> diff --git a/x-pack/plugins/observability_solution/apm/public/utils/http_status_code_to_color.ts b/x-pack/plugins/observability_solution/apm/public/utils/http_status_code_to_color.ts index 4caa3bd7701f0..3c2d1bb41051c 100644 --- a/x-pack/plugins/observability_solution/apm/public/utils/http_status_code_to_color.ts +++ b/x-pack/plugins/observability_solution/apm/public/utils/http_status_code_to_color.ts @@ -5,35 +5,17 @@ * 2.0. */ -import { euiLightVars as theme } from '@kbn/ui-theme'; -const { euiColorDarkShade, euiColorWarning } = theme; +import { useEuiTheme } from '@elastic/eui'; -export const errorColor = '#c23c2b'; -export const neutralColor = euiColorDarkShade; -export const successColor = '#327a42'; -export const warningColor = euiColorWarning; - -const httpStatusCodeColors: Record<string, string> = { - 1: neutralColor, - 2: successColor, - 3: neutralColor, - 4: warningColor, - 5: errorColor, +export const useGetStatusColor = (status: string | number) => { + const { euiTheme } = useEuiTheme(); + const httpStatusCodeColors: Record<string, string> = { + 1: euiTheme.colors.vis.euiColorVisGrey0, + 2: euiTheme.colors.vis.euiColorVisSuccess0, + 3: euiTheme.colors.vis.euiColorVisGrey0, + 4: euiTheme.colors.vis.euiColorVisWarning0, + 5: euiTheme.colors.vis.euiColorVisDanger0, + }; + const intStatus = typeof status === 'string' ? parseInt(status.replace(/\D/g, ''), 10) : status; + return httpStatusCodeColors[intStatus.toString().substring(0, 1)]; }; - -function getStatusColor(status: number) { - return httpStatusCodeColors[status.toString().substr(0, 1)]; -} - -/** - * Convert an HTTP status code to a color. - * - * If passed a string, it will remove all non-numeric characters - */ -export function httpStatusCodeToColor(status: string | number) { - if (typeof status === 'string') { - return getStatusColor(parseInt(status.replace(/\D/g, ''), 10)); - } else { - return getStatusColor(status); - } -} diff --git a/x-pack/plugins/observability_solution/apm/server/routes/agent_explorer/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/agent_explorer/route.ts index 6f0fcc7dceb3c..4f93304365744 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/agent_explorer/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/agent_explorer/route.ts @@ -19,7 +19,7 @@ import { const agentExplorerRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/get_agents_per_service', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ query: t.intersection([ environmentRt, @@ -62,7 +62,7 @@ const agentExplorerRoute = createApmServerRoute({ const latestAgentVersionsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/get_latest_agent_versions', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, async handler(resources): Promise<AgentLatestVersionsResponse> { const { logger, config } = resources; @@ -72,7 +72,7 @@ const latestAgentVersionsRoute = createApmServerRoute({ const agentExplorerInstanceRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/services/{serviceName}/agent_instances', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ path: t.type({ serviceName: t.string }), query: t.intersection([environmentRt, kueryRt, rangeRt, probabilityRt]), diff --git a/x-pack/plugins/observability_solution/apm/server/routes/agent_keys/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/agent_keys/route.ts index d8c2cd70768c4..11d1131241b30 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/agent_keys/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/agent_keys/route.ts @@ -17,7 +17,7 @@ import { privilegesTypeRt } from '../../../common/privilege_type'; const agentKeysRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/agent_keys', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<AgentKeysResponse> => { const { context } = resources; @@ -31,8 +31,7 @@ const agentKeysRoute = createApmServerRoute({ const agentKeysPrivilegesRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/agent_keys/privileges', - options: { tags: ['access:apm'] }, - + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<AgentKeysPrivilegesResponse> => { const { plugins: { security }, @@ -55,7 +54,11 @@ const agentKeysPrivilegesRoute = createApmServerRoute({ const invalidateAgentKeyRoute = createApmServerRoute({ endpoint: 'POST /internal/apm/api_key/invalidate', - options: { tags: ['access:apm', 'access:apm_settings_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, + }, params: t.type({ body: t.type({ id: t.string }), }), @@ -91,7 +94,12 @@ const invalidateAgentKeyRoute = createApmServerRoute({ const createAgentKeyRoute = createApmServerRoute({ endpoint: 'POST /api/apm/agent_keys 2023-10-31', - options: { tags: ['access:apm', 'access:apm_settings_write', 'oas-tag:APM agent keys'] }, + options: { tags: ['oas-tag:APM agent keys'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, + }, params: t.type({ body: t.type({ name: t.string, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/alerts/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/alerts/route.ts index 3343b7f78f0af..ca74e8c27e38f 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/alerts/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/alerts/route.ts @@ -61,7 +61,7 @@ export type AlertParams = t.TypeOf<typeof alertParamsRt>; const transactionErrorRateChartPreview = createApmServerRoute({ endpoint: 'GET /internal/apm/rule_types/transaction_error_rate/chart_preview', params: t.type({ query: alertParamsRt }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -84,7 +84,7 @@ const transactionErrorRateChartPreview = createApmServerRoute({ const transactionErrorCountChartPreview = createApmServerRoute({ endpoint: 'GET /internal/apm/rule_types/error_count/chart_preview', params: t.type({ query: alertParamsRt }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -107,7 +107,7 @@ const transactionErrorCountChartPreview = createApmServerRoute({ const transactionDurationChartPreview = createApmServerRoute({ endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', params: t.type({ query: alertParamsRt }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/apm_routes/register_apm_server_routes.test.ts b/x-pack/plugins/observability_solution/apm/server/routes/apm_routes/register_apm_server_routes.test.ts index 3475830146634..aae197e5ade5d 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/apm_routes/register_apm_server_routes.test.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/apm_routes/register_apm_server_routes.test.ts @@ -69,7 +69,13 @@ const getRegisterRouteDependencies = () => { const initApi = ( routes: Array< - ServerRoute<any, t.Any | undefined, APMRouteHandlerResources, any, APMRouteCreateOptions> + ServerRoute< + any, + t.Any | undefined, + APMRouteHandlerResources, + any, + APMRouteCreateOptions | undefined + > > ) => { const { mocks, dependencies } = getRegisterRouteDependencies(); @@ -134,7 +140,7 @@ describe('createApi', () => { } = initApi([ { endpoint: 'GET /foo', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async () => ({}), }, { @@ -142,28 +148,22 @@ describe('createApi', () => { params: t.type({ body: t.string, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async () => ({}), }, { endpoint: 'PUT /baz', - options: { - tags: ['access:apm', 'access:apm_write'], - }, + security: { authz: { requiredPrivileges: ['apm', 'apm_write'] } }, handler: async () => ({}), }, { endpoint: 'GET /qux', - options: { - tags: ['access:apm', 'access:apm_write'], - }, + security: { authz: { requiredPrivileges: ['apm', 'apm_write'] } }, handler: async () => ({}), }, { endpoint: 'GET /fez', - options: { - tags: ['access:apm', 'access:apm_settings_write'], - }, + security: { authz: { requiredPrivileges: ['apm', 'apm_settings_write'] } }, handler: async () => ({}), }, ]); @@ -175,41 +175,36 @@ describe('createApi', () => { expect(put).toHaveBeenCalledTimes(1); expect(get.mock.calls[0][0]).toEqual({ - options: { - tags: ['access:apm'], - }, + options: {}, + security: { authz: { requiredPrivileges: ['apm'] } }, path: '/foo', validate: expect.anything(), }); expect(get.mock.calls[1][0]).toEqual({ - options: { - tags: ['access:apm', 'access:apm_write'], - }, + options: {}, + security: { authz: { requiredPrivileges: ['apm', 'apm_write'] } }, path: '/qux', validate: expect.anything(), }); expect(get.mock.calls[2][0]).toEqual({ - options: { - tags: ['access:apm', 'access:apm_settings_write'], - }, + options: {}, + security: { authz: { requiredPrivileges: ['apm', 'apm_settings_write'] } }, path: '/fez', validate: expect.anything(), }); expect(post.mock.calls[0][0]).toEqual({ - options: { - tags: ['access:apm'], - }, + options: {}, + security: { authz: { requiredPrivileges: ['apm'] } }, path: '/bar', validate: expect.anything(), }); expect(put.mock.calls[0][0]).toEqual({ - options: { - tags: ['access:apm', 'access:apm_write'], - }, + options: {}, + security: { authz: { requiredPrivileges: ['apm', 'apm_write'] } }, path: '/baz', validate: expect.anything(), }); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/route.ts index 5fc89e00fcc8b..70f22e5fe5dbc 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/assistant_functions/route.ts @@ -19,8 +19,10 @@ import { getApmTimeseries, getApmTimeseriesRt, type ApmTimeseries } from './get_ const getApmTimeSeriesRoute = createApmServerRoute({ endpoint: 'POST /internal/apm/assistant/get_apm_timeseries', - options: { - tags: ['access:apm', 'access:ai_assistant'], + security: { + authz: { + requiredPrivileges: ['apm', 'ai_assistant'], + }, }, params: t.type({ body: getApmTimeseriesRt, @@ -51,9 +53,7 @@ const getDownstreamDependenciesRoute = createApmServerRoute({ params: t.type({ query: downstreamDependenciesRouteRt, }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ content: APMDownstreamDependency[] }> => { const { params, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/correlations/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/correlations/route.ts index 06ba8b33d1bb0..658ad91bca835 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/correlations/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/correlations/route.ts @@ -51,7 +51,7 @@ const fieldCandidatesTransactionsRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<DurationFieldCandidatesResponse> => { const { context } = resources; const { license } = await context.licensing; @@ -104,7 +104,7 @@ const fieldValueStatsTransactionsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TopValuesStats> => { const { context } = resources; const { license } = await context.licensing; @@ -172,7 +172,7 @@ const fieldValuePairsTransactionsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<FieldValuePairsResponse> => { const { context } = resources; const { license } = await context.licensing; @@ -240,7 +240,7 @@ const significantCorrelationsTransactionsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<SignificantCorrelationsResponse> => { const apmEventClient = await getApmEventClient(resources); const { @@ -299,7 +299,7 @@ const pValuesTransactionsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<PValuesResponse> => { const apmEventClient = await getApmEventClient(resources); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/custom_dashboards/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/custom_dashboards/route.ts index 750bacb4ba455..7d062d58f0b1a 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/custom_dashboards/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/custom_dashboards/route.ts @@ -33,7 +33,11 @@ const serviceDashboardSaveRoute = createApmServerRoute({ serviceEnvironmentFilterEnabled: t.boolean, }), }), - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, handler: async (resources): Promise<SavedApmCustomDashboard> => { const { context, params } = resources; const { customDashboardId } = params.query; @@ -62,9 +66,7 @@ const serviceDashboardsRoute = createApmServerRoute({ }), ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ serviceDashboards: SavedApmCustomDashboard[] }> => { const { context, params, request } = resources; const coreContext = await context.core; @@ -116,7 +118,11 @@ const serviceDashboardDeleteRoute = createApmServerRoute({ customDashboardId: t.string, }), }), - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, handler: async (resources): Promise<void> => { const { context, params } = resources; const { customDashboardId } = params.query; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/data_view/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/data_view/route.ts index d4e6b0a7492e9..23318949b0811 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/data_view/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/data_view/route.ts @@ -13,7 +13,7 @@ import { getApmEventClient } from '../../lib/helpers/get_apm_event_client'; const staticDataViewRoute = createApmServerRoute({ endpoint: 'POST /internal/apm/data_view/static', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): CreateDataViewResponse => { const { context, plugins, request, logger } = resources; const apmEventClient = await getApmEventClient(resources); @@ -49,7 +49,7 @@ const staticDataViewRoute = createApmServerRoute({ const dataViewTitleRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/data_view/index_pattern', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ({ getApmIndices }): Promise<{ apmDataViewIndexPattern: string }> => { const apmIndicies = await getApmIndices(); const apmDataViewIndexPattern = getApmDataViewIndexPattern(apmIndicies); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/debug_telemetry/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/debug_telemetry/route.ts index c3ab67150f39c..3e4e1889321ba 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/debug_telemetry/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/debug_telemetry/route.ts @@ -14,8 +14,10 @@ import { } from '../../../common/apm_saved_object_constants'; export const debugTelemetryRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/debug-telemetry', - options: { - tags: ['access:apm', 'access:apm_write'], + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, }, handler: async (resources): Promise<APMTelemetry> => { const { plugins, context } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/dependencies/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/dependencies/route.ts index 4459a127ea13e..0ff845e067bd0 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/dependencies/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/dependencies/route.ts @@ -47,9 +47,7 @@ const topDependenciesRoute = createApmServerRoute({ query: offsetRt, }), ]), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TopDependenciesResponse> => { const { request, @@ -89,9 +87,7 @@ const upstreamServicesForDependencyRoute = createApmServerRoute({ query: t.intersection([environmentRt, offsetRt, kueryRt]), }), ]), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<UpstreamServicesForDependencyResponse> => { const { request, @@ -126,9 +122,7 @@ const dependencyMetadataRoute = createApmServerRoute({ params: t.type({ query: t.intersection([t.type({ dependencyName: t.string }), rangeRt]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -165,9 +159,7 @@ const dependencyLatencyChartsRoute = createApmServerRoute({ offsetRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<LatencyChartsDependencyResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -211,9 +203,7 @@ const dependencyThroughputChartsRoute = createApmServerRoute({ offsetRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ThroughputChartsForDependencyResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -257,9 +247,7 @@ const dependencyFailedTransactionRateChartsRoute = createApmServerRoute({ offsetRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -295,9 +283,7 @@ const dependencyFailedTransactionRateChartsRoute = createApmServerRoute({ const dependencyOperationsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/dependencies/operations', - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ query: t.intersection([ rangeRt, @@ -354,9 +340,7 @@ const dependencyLatencyDistributionChartsRoute = createApmServerRoute({ environmentRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<DependencyLatencyDistributionResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -378,9 +362,7 @@ const dependencyLatencyDistributionChartsRoute = createApmServerRoute({ const topDependencySpansRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/dependencies/operations/spans', - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ query: t.intersection([ rangeRt, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/diagnostics/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/diagnostics/route.ts index fcd41df55afc7..fdeba801f8a6d 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/diagnostics/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/diagnostics/route.ts @@ -80,7 +80,7 @@ export type DiagnosticsBundle = Promise<{ const getDiagnosticsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/diagnostics', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.partial({ query: t.partial({ kuery: t.string, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/entities/services/routes.ts b/x-pack/plugins/observability_solution/apm/server/routes/entities/services/routes.ts index 218de180cbc00..ab89f9417ec88 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/entities/services/routes.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/entities/services/routes.ts @@ -18,7 +18,7 @@ const serviceEntitiesSummaryRoute = createApmServerRoute({ path: t.type({ serviceName: t.string }), query: environmentRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, async handler(resources) { const { context, params, request } = resources; const coreContext = await context.core; @@ -44,7 +44,7 @@ const servicesEntitiesRoute = createApmServerRoute({ params: t.type({ query: t.intersection([environmentRt, kueryRt, rangeRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, async handler(resources) { const { context, params, request } = resources; const coreContext = await context.core; @@ -77,7 +77,7 @@ const serviceLogRateTimeseriesRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, async handler(resources) { const { context, params, plugins } = resources; const [coreContext, logsDataAccessStart] = await Promise.all([ @@ -111,7 +111,7 @@ const serviceLogErrorRateTimeseriesRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, async handler(resources) { const { context, params, plugins } = resources; const [coreContext, logsDataAccessStart] = await Promise.all([ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/environments/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/environments/route.ts index 6eafe5c7b62fe..23d9b03e9c48e 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/environments/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/environments/route.ts @@ -24,7 +24,7 @@ const environmentsRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/errors/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/errors/route.ts index 62d9d883ba896..95a5f68f9cce6 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/errors/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/errors/route.ts @@ -51,7 +51,7 @@ const errorsMainStatisticsRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ErrorGroupMainStatisticsResponse> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); @@ -90,7 +90,7 @@ const errorsMainStatisticsByTransactionNameRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ErrorGroupMainStatisticsResponse> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); @@ -136,7 +136,7 @@ const errorsDetailedStatisticsRoute = createApmServerRoute({ ]), body: t.type({ groupIds: jsonRt.pipe(t.array(t.string)) }), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ErrorGroupPeriodsResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -170,7 +170,7 @@ const errorGroupsSamplesRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ErrorGroupSampleIdsResponse> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); @@ -199,7 +199,7 @@ const errorGroupSampleDetailsRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ErrorSampleDetailsResponse> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); @@ -240,7 +240,7 @@ const errorDistributionRoute = createApmServerRoute({ offsetRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ErrorDistributionResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -276,7 +276,7 @@ const topErroneousTransactionsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TopErroneousTransactionsResponse> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/event_metadata/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/event_metadata/route.ts index cb1ff01654c30..0ded2b3824542 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/event_metadata/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/event_metadata/route.ts @@ -14,7 +14,7 @@ import { rangeRt } from '../default_api_types'; const eventMetadataRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/event_metadata/{processorEvent}/{id}', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ path: t.type({ processorEvent: processorEventRt, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/fallback_to_transactions/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/fallback_to_transactions/route.ts index d7e20e847753d..ec94240f82df5 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/fallback_to_transactions/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/fallback_to_transactions/route.ts @@ -16,7 +16,7 @@ const fallbackToTransactionsRoute = createApmServerRoute({ params: t.partial({ query: t.intersection([kueryRt, t.partial(rangeRt.props)]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ fallbackToTransactions: boolean }> => { const apmEventClient = await getApmEventClient(resources); const { diff --git a/x-pack/plugins/observability_solution/apm/server/routes/fleet/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/fleet/route.ts index 05b74b3fc9c42..fa98472228e7c 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/fleet/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/fleet/route.ts @@ -65,7 +65,11 @@ const fleetAgentsRoute = createApmServerRoute({ const saveApmServerSchemaRoute = createApmServerRoute({ endpoint: 'POST /api/apm/fleet/apm_server_schema 2023-10-31', - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, params: t.type({ body: t.type({ schema: t.record(t.string, t.unknown), @@ -88,7 +92,7 @@ const saveApmServerSchemaRoute = createApmServerRoute({ const getUnsupportedApmServerSchemaRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/fleet/apm_server_schema/unsupported', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ unsupported: UnsupportedApmServerSchema }> => { throwNotFoundIfFleetMigrationNotAvailable(resources.featureFlags); const { context } = resources; @@ -101,7 +105,7 @@ const getUnsupportedApmServerSchemaRoute = createApmServerRoute({ const getMigrationCheckRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/fleet/migration_check', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<RunMigrationCheckResponse> => { const { core, plugins, context, config, request } = resources; throwNotFoundIfFleetMigrationNotAvailable(resources.featureFlags); @@ -128,7 +132,11 @@ const getMigrationCheckRoute = createApmServerRoute({ const createCloudApmPackagePolicyRoute = createApmServerRoute({ endpoint: 'POST /internal/apm/fleet/cloud_apm_package_policy', - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, handler: async ( resources ): Promise<{ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/historical_data/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/historical_data/route.ts index 94b7d40b84c2d..0348a6a32f0eb 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/historical_data/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/historical_data/route.ts @@ -13,7 +13,7 @@ import { hasEntitiesData } from './has_historical_entities_data'; const hasDataRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/has_data', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ hasData: boolean }> => { const apmEventClient = await getApmEventClient(resources); const hasData = await hasHistoricalAgentData(apmEventClient); @@ -23,7 +23,7 @@ const hasDataRoute = createApmServerRoute({ const hasEntitiesRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/has_entities', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ hasData: boolean }> => { const { context, request, logger } = resources; const coreContext = await context.core; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/infrastructure/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/infrastructure/route.ts index bcb818a329e85..3a0f4efeab42c 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/infrastructure/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/infrastructure/route.ts @@ -20,7 +20,7 @@ const infrastructureRoute = createApmServerRoute({ }), query: t.intersection([kueryRt, rangeRt, environmentRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/latency_distribution/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/latency_distribution/route.ts index c489301aebd81..704eaf393702e 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/latency_distribution/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/latency_distribution/route.ts @@ -47,7 +47,7 @@ const latencyOverallTransactionDistributionRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<OverallLatencyDistributionResponse> => { const apmEventClient = await getApmEventClient(resources); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/metrics/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/metrics/route.ts index 950c5c18a4302..63fcd8ad87e67 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/metrics/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/metrics/route.ts @@ -32,7 +32,7 @@ const metricsChartsRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -67,7 +67,7 @@ const serviceMetricsJvm = createApmServerRoute({ }), query: t.intersection([kueryRt, rangeRt, environmentRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ serviceNodes: ServiceNodesResponse }> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/metrics/serverless/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/metrics/serverless/route.ts index ba57e09869000..0432409344fe4 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/metrics/serverless/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/metrics/serverless/route.ts @@ -46,7 +46,7 @@ const serverlessMetricsChartsRoute = createApmServerRoute({ t.intersection([transactionDataSourceRt, t.type({ bucketSizeInSeconds: toNumberRt })]), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -93,7 +93,7 @@ const serverlessMetricsActiveInstancesRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt, t.partial({ serverlessId: t.string })]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -132,7 +132,7 @@ const serverlessMetricsFunctionsOverviewRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -164,7 +164,7 @@ const serverlessMetricsSummaryRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt, t.partial({ serverlessId: t.string })]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServerlessSummaryResponse> => { const { params, context } = resources; const { diff --git a/x-pack/plugins/observability_solution/apm/server/routes/mobile/crashes/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/mobile/crashes/route.ts index 7a474585da9d1..a8dbc788836c6 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/mobile/crashes/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/mobile/crashes/route.ts @@ -36,7 +36,7 @@ const mobileCrashDistributionRoute = createApmServerRoute({ offsetRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<CrashDistributionResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -71,7 +71,7 @@ const mobileCrashMainStatisticsRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ errorGroups: MobileCrashGroupMainStatisticsResponse }> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); @@ -110,7 +110,7 @@ const mobileCrashDetailedStatisticsRoute = createApmServerRoute({ ]), body: t.type({ groupIds: jsonRt.pipe(t.array(t.string)) }), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MobileCrashesGroupPeriodsResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/mobile/errors/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/mobile/errors/route.ts index b00ad9c69fa42..e6d5628a0c0ed 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/mobile/errors/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/mobile/errors/route.ts @@ -39,7 +39,7 @@ const mobileMobileHttpRatesRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, kueryRt, rangeRt, offsetRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MobileHttpErrorsTimeseries> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -76,7 +76,7 @@ const mobileErrorsDetailedStatisticsRoute = createApmServerRoute({ ]), body: t.type({ groupIds: jsonRt.pipe(t.array(t.string)) }), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MobileErrorGroupPeriodsResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -117,7 +117,7 @@ const mobileErrorTermsByFieldRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -158,7 +158,7 @@ const mobileErrorsMainStatisticsRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ errorGroups: MobileErrorGroupMainStatisticsResponse }> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/mobile/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/mobile/route.ts index 39b527e6a81eb..d1c964e8a2f6d 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/mobile/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/mobile/route.ts @@ -48,7 +48,7 @@ const mobileFiltersRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -87,7 +87,7 @@ const mobileChartsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -131,7 +131,7 @@ const mobileStatsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MobilePeriodStats> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -168,7 +168,7 @@ const mobileLocationStatsRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MobileLocationStats> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -207,7 +207,7 @@ const sessionsChartRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<SessionsTimeseries> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -246,7 +246,7 @@ const httpRequestsChartRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<HttpRequestsTimeseries> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -284,7 +284,7 @@ const mobileTermsByFieldRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -324,9 +324,7 @@ const mobileMainStatisticsByField = createApmServerRoute({ }), ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MobileMainStatisticsResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -362,9 +360,7 @@ const mobileDetailedStatisticsByField = createApmServerRoute({ }), ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MobileDetailedStatisticsResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/observability_overview/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/observability_overview/route.ts index 3858fafe7dcdd..9d61c885a6361 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/observability_overview/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/observability_overview/route.ts @@ -19,7 +19,7 @@ import { getHasData, HasDataResponse } from './has_data'; const observabilityOverviewHasDataRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/observability_overview/has_data', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<HasDataResponse> => { const apmEventClient = await getApmEventClient(resources); return await getHasData({ @@ -34,7 +34,7 @@ const observabilityOverviewRoute = createApmServerRoute({ params: t.type({ query: t.intersection([rangeRt, t.type({ bucketSize: toNumberRt, intervalString: t.string })]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ObservabilityOverviewResponse> => { const apmEventClient = await getApmEventClient(resources); const { bucketSize, intervalString, start, end } = resources.params.query; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/profiling/hosts/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/profiling/hosts/route.ts index 3ddd2782f1085..c9e14198a42d6 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/profiling/hosts/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/profiling/hosts/route.ts @@ -28,7 +28,7 @@ const profilingHostsFlamegraphRoute = createApmServerRoute({ path: t.type({ serviceName: t.string }), query: t.intersection([rangeRt, environmentRt, serviceTransactionDataSourceRt, kueryRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise< @@ -92,7 +92,7 @@ const profilingHostsFunctionsRoute = createApmServerRoute({ kueryRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise< diff --git a/x-pack/plugins/observability_solution/apm/server/routes/profiling/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/profiling/route.ts index 0f9475f663742..677db02c8f747 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/profiling/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/profiling/route.ts @@ -33,7 +33,7 @@ const servicesFlamegraphRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<BaseFlameGraph | undefined> => { const { context, plugins, params } = resources; const core = await context.core; @@ -87,7 +87,7 @@ const servicesFunctionsRoute = createApmServerRoute({ kueryRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TopNFunctions | undefined> => { const { context, plugins, params } = resources; const core = await context.core; @@ -136,7 +136,7 @@ const servicesFunctionsRoute = createApmServerRoute({ const profilingStatusRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/profiling/status', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ initialized: boolean }> => { const { context, plugins, logger } = resources; const [esClient, profilingDataAccessStart] = await Promise.all([ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/service_groups/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/service_groups/route.ts index 3711eb809e936..9ffc365bb4d86 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/service_groups/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/service_groups/route.ts @@ -25,9 +25,7 @@ import { getApmAlertsClient } from '../../lib/helpers/get_apm_alerts_client'; const serviceGroupsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/service-groups', - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ serviceGroups: SavedServiceGroup[] }> => { const { context } = resources; const { @@ -47,9 +45,7 @@ const serviceGroupRoute = createApmServerRoute({ serviceGroup: t.string, }), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ serviceGroup: SavedServiceGroup }> => { const { context, params } = resources; const { @@ -79,7 +75,11 @@ const serviceGroupSaveRoute = createApmServerRoute({ color: t.union([t.string, t.undefined]), }), }), - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, handler: async (resources): Promise<SavedServiceGroup> => { const { context, params } = resources; const { serviceGroupId } = params.query; @@ -106,7 +106,11 @@ const serviceGroupDeleteRoute = createApmServerRoute({ serviceGroupId: t.string, }), }), - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, handler: async (resources): Promise<void> => { const { context, params } = resources; const { serviceGroupId } = params.query; @@ -123,9 +127,7 @@ const serviceGroupServicesRoute = createApmServerRoute({ params: t.type({ query: t.intersection([rangeRt, t.partial(kueryRt.props)]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ items: LookupServicesResponse }> => { const { params, context } = resources; const { kuery = '', start, end } = params.query; @@ -149,9 +151,7 @@ const serviceGroupServicesRoute = createApmServerRoute({ type ServiceGroupCounts = Record<string, { services: number; alerts: number }>; const serviceGroupCountsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/service-group/counts', - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceGroupCounts> => { const { context, logger, plugins, request } = resources; const { diff --git a/x-pack/plugins/observability_solution/apm/server/routes/service_map/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/service_map/route.ts index 2524e7a23f9b7..3436874ac5bdc 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/service_map/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/service_map/route.ts @@ -42,7 +42,7 @@ const serviceMapRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TransformServiceMapResponse> => { const { config, context, params, logger } = resources; if (!config.serviceMapEnabled) { @@ -111,7 +111,7 @@ const serviceMapServiceNodeRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, rangeRt, offsetRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceMapServiceNodeInfoResponse> => { const { config, context, params } = resources; @@ -154,7 +154,7 @@ const serviceMapDependencyNodeRoute = createApmServerRoute({ params: t.type({ query: t.intersection([t.type({ dependencyName: t.string }), environmentRt, rangeRt, offsetRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceMapServiceDependencyInfoResponse> => { const { config, context, params } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/services/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/services/route.ts index da2a506e3ae3f..d6c3b5b73e3d8 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/services/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/services/route.ts @@ -104,7 +104,7 @@ const servicesRoute = createApmServerRoute({ ]), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, async handler(resources): Promise<ServicesItemsResponse> { const { context, @@ -172,7 +172,7 @@ const servicesDetailedStatisticsRoute = createApmServerRoute({ ]), body: t.type({ serviceNames: jsonRt.pipe(t.array(t.string)) }), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceTransactionDetailedStatPeriodsResponse> => { const { params, @@ -225,7 +225,7 @@ const serviceMetadataDetailsRoute = createApmServerRoute({ path: t.type({ serviceName: t.string }), query: t.intersection([rangeRt, environmentRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceMetadataDetails> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -262,7 +262,7 @@ const serviceMetadataIconsRoute = createApmServerRoute({ path: t.type({ serviceName: t.string }), query: rangeRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceMetadataIcons> => { const apmEventClient = await getApmEventClient(resources); const { params, config } = resources; @@ -295,7 +295,7 @@ const serviceAgentRoute = createApmServerRoute({ }), query: rangeRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceAgentResponse> => { const { context, request } = resources; const coreContext = await context.core; @@ -339,7 +339,7 @@ const serviceTransactionTypesRoute = createApmServerRoute({ }), query: t.intersection([rangeRt, serviceTransactionDataSourceRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceTransactionTypesResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -366,7 +366,7 @@ const serviceNodeMetadataRoute = createApmServerRoute({ }), query: t.intersection([kueryRt, rangeRt, environmentRt, serviceTransactionDataSourceRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceNodeMetadataResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -395,7 +395,12 @@ const serviceAnnotationsRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, rangeRt]), }), - options: { tags: ['access:apm', 'oas-tag:APM annotations'] }, + options: { tags: ['oas-tag:APM annotations'] }, + security: { + authz: { + requiredPrivileges: ['apm'], + }, + }, handler: async (resources): Promise<ServiceAnnotationResponse> => { const apmEventClient = await getApmEventClient(resources); const { params, plugins, context, request, logger, config } = resources; @@ -439,7 +444,12 @@ const serviceAnnotationsRoute = createApmServerRoute({ const serviceAnnotationsCreateRoute = createApmServerRoute({ endpoint: 'POST /api/apm/services/{serviceName}/annotation 2023-10-31', options: { - tags: ['access:apm', 'access:apm_write', 'oas-tag:APM annotations'], + tags: ['oas-tag:APM annotations'], + }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, }, params: t.type({ path: t.type({ @@ -523,7 +533,7 @@ const serviceThroughputRoute = createApmServerRoute({ t.intersection([environmentRt, kueryRt, rangeRt, offsetRt, serviceTransactionDataSourceRt]), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -605,7 +615,7 @@ const serviceInstancesMainStatisticsRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -678,7 +688,7 @@ const serviceInstancesDetailedStatisticsRoute = createApmServerRoute({ offsetRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceInstancesDetailedStatisticsResponse> => { const apmEventClient = await getApmEventClient(resources); const { params, config } = resources; @@ -730,7 +740,7 @@ export const serviceInstancesMetadataDetails = createApmServerRoute({ }), query: rangeRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise< @@ -780,9 +790,7 @@ export const serviceDependenciesRoute = createApmServerRoute({ offsetRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, async handler(resources): Promise<{ serviceDependencies: ServiceDependenciesResponse }> { const { params, @@ -821,9 +829,7 @@ export const serviceDependenciesBreakdownRoute = createApmServerRoute({ }), query: t.intersection([environmentRt, rangeRt, kueryRt]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -867,9 +873,7 @@ const serviceAnomalyChartsRoute = createApmServerRoute({ }), query: t.intersection([rangeRt, environmentRt, t.type({ transactionType: t.string })]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -921,7 +925,7 @@ const serviceAlertsRoute = createApmServerRoute({ }), query: t.intersection([rangeRt, environmentRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceAlertsResponse[number]> => { const { params } = resources; const { diff --git a/x-pack/plugins/observability_solution/apm/server/routes/settings/agent_configuration/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/settings/agent_configuration/route.ts index aaf8fb2c48681..bda0f5aba15a9 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/settings/agent_configuration/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/settings/agent_configuration/route.ts @@ -39,7 +39,7 @@ function throwNotFoundIfAgentConfigNotAvailable(featureFlags: ApmFeatureFlags): // get list of configurations const agentConfigurationRoute = createApmServerRoute({ endpoint: 'GET /api/apm/settings/agent-configuration 2023-10-31', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -68,7 +68,7 @@ const getSingleAgentConfigurationRoute = createApmServerRoute({ params: t.partial({ query: serviceRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<AgentConfiguration> => { throwNotFoundIfAgentConfigNotAvailable(resources.featureFlags); @@ -98,8 +98,10 @@ const getSingleAgentConfigurationRoute = createApmServerRoute({ // delete configuration const deleteAgentConfigurationRoute = createApmServerRoute({ endpoint: 'DELETE /api/apm/settings/agent-configuration 2023-10-31', - options: { - tags: ['access:apm', 'access:apm_settings_write'], + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, }, params: t.type({ body: t.type({ @@ -154,8 +156,10 @@ const deleteAgentConfigurationRoute = createApmServerRoute({ // create/update configuration const createOrUpdateAgentConfigurationRoute = createApmServerRoute({ endpoint: 'PUT /api/apm/settings/agent-configuration 2023-10-31', - options: { - tags: ['access:apm', 'access:apm_settings_write'], + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, }, params: t.intersection([ t.partial({ query: t.partial({ overwrite: toBooleanRt }) }), @@ -224,7 +228,12 @@ const agentConfigurationSearchRoute = createApmServerRoute({ params: t.type({ body: searchParamsRt, }), - options: { tags: ['access:apm'], disableTelemetry: true }, + options: { disableTelemetry: true }, + security: { + authz: { + requiredPrivileges: ['apm'], + }, + }, handler: async ( resources ): Promise<SearchHit<AgentConfiguration, undefined, undefined> | null> => { @@ -286,7 +295,7 @@ const listAgentConfigurationEnvironmentsRoute = createApmServerRoute({ params: t.partial({ query: t.partial({ serviceName: t.string }), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -327,7 +336,7 @@ const agentConfigurationAgentNameRoute = createApmServerRoute({ params: t.type({ query: t.type({ serviceName: t.string }), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ agentName: string | undefined }> => { throwNotFoundIfAgentConfigNotAvailable(resources.featureFlags); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/settings/anomaly_detection/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/settings/anomaly_detection/route.ts index 00ceee9451f46..921b86bc57f16 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/settings/anomaly_detection/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/settings/anomaly_detection/route.ts @@ -26,8 +26,10 @@ import { ApmMlJob } from '../../../../common/anomaly_detection/apm_ml_job'; // get ML anomaly detection jobs for each environment const anomalyDetectionJobsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/settings/anomaly-detection/jobs', - options: { - tags: ['access:apm', 'access:ml:canGetJobs'], + security: { + authz: { + requiredPrivileges: ['apm', 'ml:canGetJobs'], + }, }, handler: async ( resources @@ -59,8 +61,10 @@ const anomalyDetectionJobsRoute = createApmServerRoute({ // create new ML anomaly detection jobs for each given environment const createAnomalyDetectionJobsRoute = createApmServerRoute({ endpoint: 'POST /internal/apm/settings/anomaly-detection/jobs', - options: { - tags: ['access:apm', 'access:apm_settings_write', 'access:ml:canCreateJob'], + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write', 'ml:canCreateJob'], + }, }, params: t.type({ body: t.type({ @@ -102,7 +106,7 @@ const createAnomalyDetectionJobsRoute = createApmServerRoute({ // get all available environments to create anomaly detection jobs for const anomalyDetectionEnvironmentsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/settings/anomaly-detection/environments', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ environments: string[] }> => { const apmEventClient = await getApmEventClient(resources); const coreContext = await resources.context.core; @@ -126,14 +130,16 @@ const anomalyDetectionEnvironmentsRoute = createApmServerRoute({ const anomalyDetectionUpdateToV3Route = createApmServerRoute({ endpoint: 'POST /internal/apm/settings/anomaly-detection/update_to_v3', - options: { - tags: [ - 'access:apm', - 'access:apm_settings_write', - 'access:ml:canCreateJob', - 'access:ml:canGetJobs', - 'access:ml:canCloseJob', - ], + security: { + authz: { + requiredPrivileges: [ + 'apm', + 'apm_settings_write', + 'ml:canCreateJob', + 'ml:canGetJobs', + 'ml:canCloseJob', + ], + }, }, handler: async (resources): Promise<{ update: boolean }> => { const { getApmIndices } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/settings/apm_indices/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/settings/apm_indices/route.ts index 5d8ac9f04e740..63bf2a145d6a0 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/settings/apm_indices/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/settings/apm_indices/route.ts @@ -15,7 +15,7 @@ import { getApmIndexSettings, ApmIndexSettingsResponse } from './get_apm_indices // get list of apm indices and values const apmIndexSettingsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/settings/apm-index-settings', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -29,7 +29,7 @@ const apmIndexSettingsRoute = createApmServerRoute({ // get apm indices configuration object const apmIndicesRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/settings/apm-indices', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<APMIndices> => { return await resources.getApmIndices(); }, @@ -42,8 +42,10 @@ type SaveApmIndicesBodySchema = { // save ui indices const saveApmIndicesRoute = createApmServerRoute({ endpoint: 'POST /internal/apm/settings/apm-indices/save', - options: { - tags: ['access:apm', 'access:apm_settings_write'], + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, }, params: t.type({ body: t.partial({ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/settings/custom_link/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/settings/custom_link/route.ts index 306e23a679765..20bdd11b3f45c 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/settings/custom_link/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/settings/custom_link/route.ts @@ -25,7 +25,7 @@ import { CustomLink } from '../../../../common/custom_link/custom_link_types'; const customLinkTransactionRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/settings/custom_links/transaction', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.partial({ query: filterOptionsRt, }), @@ -41,7 +41,7 @@ const customLinkTransactionRoute = createApmServerRoute({ const listCustomLinksRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/settings/custom_links', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.partial({ query: filterOptionsRt, }), @@ -75,7 +75,11 @@ const createCustomLinkRoute = createApmServerRoute({ params: t.type({ body: payloadRt, }), - options: { tags: ['access:apm', 'access:apm_settings_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, + }, handler: async (resources): Promise<void> => { const { context, params } = resources; const licensingContext = await context.licensing; @@ -104,8 +108,10 @@ const updateCustomLinkRoute = createApmServerRoute({ }), body: payloadRt, }), - options: { - tags: ['access:apm', 'access:apm_settings_write'], + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, }, handler: async (resources): Promise<void> => { const { params, context } = resources; @@ -135,8 +141,10 @@ const deleteCustomLinkRoute = createApmServerRoute({ id: t.string, }), }), - options: { - tags: ['access:apm', 'access:apm_settings_write'], + security: { + authz: { + requiredPrivileges: ['apm', 'apm_settings_write'], + }, }, handler: async (resources): Promise<{ result: string }> => { const { context, params } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/settings/labs/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/settings/labs/route.ts index 608fe27106cac..28e8e5ef7eceb 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/settings/labs/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/settings/labs/route.ts @@ -10,7 +10,7 @@ import { createApmServerRoute } from '../../apm_routes/create_apm_server_route'; const getLabsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/settings/labs', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (): Promise<{ labsItems: string[] }> => { const labsItems = Object.entries(uiSettings) .filter(([key, value]): boolean | undefined => value.showInLabs) diff --git a/x-pack/plugins/observability_solution/apm/server/routes/source_maps/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/source_maps/route.ts index bc92c06416204..6e51002dfc81a 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/source_maps/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/source_maps/route.ts @@ -49,7 +49,7 @@ function throwNotImplementedIfSourceMapNotAvailable(featureFlags: ApmFeatureFlag const listSourceMapRoute = createApmServerRoute({ endpoint: 'GET /api/apm/sourcemaps 2023-10-31', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.partial({ query: t.partial({ page: toNumberRt, @@ -85,9 +85,13 @@ const listSourceMapRoute = createApmServerRoute({ const uploadSourceMapRoute = createApmServerRoute({ endpoint: 'POST /api/apm/sourcemaps 2023-10-31', options: { - tags: ['access:apm', 'access:apm_write'], body: { accepts: ['multipart/form-data'] }, }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, params: t.type({ body: t.type({ service_name: t.string, @@ -159,7 +163,11 @@ const uploadSourceMapRoute = createApmServerRoute({ const deleteSourceMapRoute = createApmServerRoute({ endpoint: 'DELETE /api/apm/sourcemaps/{id} 2023-10-31', - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, params: t.type({ path: t.type({ id: t.string, @@ -192,7 +200,11 @@ const deleteSourceMapRoute = createApmServerRoute({ const migrateFleetArtifactsSourceMapRoute = createApmServerRoute({ endpoint: 'POST /internal/apm/sourcemaps/migrate_fleet_artifacts', - options: { tags: ['access:apm', 'access:apm_write'] }, + security: { + authz: { + requiredPrivileges: ['apm', 'apm_write'], + }, + }, handler: async ({ plugins, core, logger, featureFlags }): Promise<void> => { throwNotImplementedIfSourceMapNotAvailable(featureFlags); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/span_links/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/span_links/route.ts index 95e038f8b0184..6a3531e4fa443 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/span_links/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/span_links/route.ts @@ -23,7 +23,7 @@ const linkedParentsRoute = createApmServerRoute({ }), query: t.intersection([kueryRt, rangeRt, t.type({ processorEvent: processorEventRt })]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -63,7 +63,7 @@ const linkedChildrenRoute = createApmServerRoute({ }), query: t.intersection([kueryRt, rangeRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/storage_explorer/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/storage_explorer/route.ts index 6592e86297046..75f1e5168ac87 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/storage_explorer/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/storage_explorer/route.ts @@ -34,7 +34,7 @@ import { isCrossClusterSearch } from './is_cross_cluster_search'; const storageExplorerRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/storage_explorer', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ query: t.intersection([indexLifecyclePhaseRt, probabilityRt, environmentRt, kueryRt, rangeRt]), }), @@ -86,7 +86,7 @@ const storageExplorerRoute = createApmServerRoute({ const storageExplorerServiceDetailsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/services/{serviceName}/storage_details', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ path: t.type({ serviceName: t.string, @@ -127,7 +127,7 @@ const storageExplorerServiceDetailsRoute = createApmServerRoute({ const storageChartRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/storage_chart', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ query: t.intersection([indexLifecyclePhaseRt, probabilityRt, environmentRt, kueryRt, rangeRt]), }), @@ -177,7 +177,7 @@ const storageChartRoute = createApmServerRoute({ const storageExplorerPrivilegesRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/storage_explorer/privileges', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ hasPrivileges: boolean }> => { const { @@ -201,7 +201,7 @@ const storageExplorerPrivilegesRoute = createApmServerRoute({ const storageExplorerSummaryStatsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/storage_explorer_summary_stats', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ query: t.intersection([indexLifecyclePhaseRt, probabilityRt, environmentRt, kueryRt, rangeRt]), }), @@ -245,7 +245,7 @@ const storageExplorerSummaryStatsRoute = createApmServerRoute({ const storageExplorerIsCrossClusterSearchRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/storage_explorer/is_cross_cluster_search', - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ isCrossClusterSearch: boolean }> => { const apmEventClient = await getApmEventClient(resources); return { isCrossClusterSearch: isCrossClusterSearch(apmEventClient) }; @@ -254,9 +254,7 @@ const storageExplorerIsCrossClusterSearchRoute = createApmServerRoute({ const storageExplorerGetServices = createApmServerRoute({ endpoint: 'GET /internal/apm/storage_explorer/get_services', - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, params: t.type({ query: t.intersection([indexLifecyclePhaseRt, environmentRt, kueryRt, rangeRt]), }), diff --git a/x-pack/plugins/observability_solution/apm/server/routes/suggestions/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/suggestions/route.ts index 40b49390bd8ff..0ab43cab30826 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/suggestions/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/suggestions/route.ts @@ -26,7 +26,7 @@ const suggestionsRoute = createApmServerRoute({ t.partial({ serviceName: t.string }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ terms: string[] }> => { const apmEventClient = await getApmEventClient(resources); const { context, params, config } = resources; diff --git a/x-pack/plugins/observability_solution/apm/server/routes/time_range_metadata/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/time_range_metadata/route.ts index bf91af259249e..dcd5fa39e97f2 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/time_range_metadata/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/time_range_metadata/route.ts @@ -26,9 +26,7 @@ export const timeRangeMetadataRoute = createApmServerRoute({ rangeRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TimeRangeMetadata> => { const apmEventClient = await getApmEventClient(resources); const apmDataAccessServices = await getApmDataAccessServices({ apmEventClient, ...resources }); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/traces/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/traces/route.ts index 0814bcdc5738f..804562c038051 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/traces/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/traces/route.ts @@ -35,7 +35,7 @@ const tracesRoute = createApmServerRoute({ params: t.type({ query: t.intersection([environmentRt, kueryRt, rangeRt, probabilityRt]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TopTracesPrimaryStatsResponse> => { const { config, @@ -83,7 +83,7 @@ const tracesByIdRoute = createApmServerRoute({ t.partial({ maxTraceItems: toNumberRt }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -127,7 +127,7 @@ const rootTransactionByTraceIdRoute = createApmServerRoute({ }), query: rangeRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -154,7 +154,7 @@ const transactionByIdRoute = createApmServerRoute({ }), query: rangeRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -190,7 +190,7 @@ const transactionByNameRoute = createApmServerRoute({ }), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -227,9 +227,7 @@ const findTracesRoute = createApmServerRoute({ }), ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ @@ -264,9 +262,7 @@ const aggregatedCriticalPathRoute = createApmServerRoute({ rangeRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<{ criticalPath: CriticalPathResponse | null }> => { const { params: { @@ -297,7 +293,7 @@ const transactionFromTraceByIdRoute = createApmServerRoute({ }), query: rangeRt, }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<Transaction | undefined> => { const { params } = resources; const { @@ -328,7 +324,7 @@ const spanFromTraceByIdRoute = createApmServerRoute({ t.union([t.partial({ parentTransactionId: t.string }), t.undefined]), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async ( resources ): Promise<{ diff --git a/x-pack/plugins/observability_solution/apm/server/routes/transactions/route.ts b/x-pack/plugins/observability_solution/apm/server/routes/transactions/route.ts index 816879d7cb40a..51ada72e38588 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/transactions/route.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/transactions/route.ts @@ -75,9 +75,7 @@ const transactionGroupsMainStatisticsRoute = createApmServerRoute({ transactionDataSourceRt, ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<MergedServiceTransactionGroupsResponse> => { const { params } = resources; const apmEventClient = await getApmEventClient(resources); @@ -164,9 +162,7 @@ const transactionGroupsDetailedStatisticsRoute = createApmServerRoute({ }), ]), }), - options: { - tags: ['access:apm'], - }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ServiceTransactionGroupDetailedStatisticsResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -226,7 +222,7 @@ const transactionLatencyChartsRoute = createApmServerRoute({ serviceTransactionDataSourceRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TransactionLatencyResponse> => { const apmEventClient = await getApmEventClient(resources); const { params, logger } = resources; @@ -295,7 +291,7 @@ const transactionTraceSamplesRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TransactionTraceSamplesResponse> => { const apmEventClient = await getApmEventClient(resources); const { params } = resources; @@ -344,7 +340,7 @@ const transactionChartsBreakdownRoute = createApmServerRoute({ rangeRt, ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<TransactionBreakdownResponse> => { const apmEventClient = await getApmEventClient(resources); const { params, config } = resources; @@ -378,7 +374,7 @@ const transactionChartsErrorRateRoute = createApmServerRoute({ t.intersection([environmentRt, kueryRt, rangeRt, offsetRt, serviceTransactionDataSourceRt]), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<FailedTransactionRateResponse> => { const apmEventClient = await getApmEventClient(resources); @@ -427,7 +423,7 @@ const transactionChartsColdstartRateRoute = createApmServerRoute({ t.intersection([environmentRt, kueryRt, rangeRt, offsetRt]), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ColdstartRateResponse> => { const apmEventClient = await getApmEventClient(resources); @@ -469,7 +465,7 @@ const transactionChartsColdstartRateByTransactionNameRoute = createApmServerRout t.intersection([environmentRt, kueryRt, rangeRt, offsetRt]), ]), }), - options: { tags: ['access:apm'] }, + security: { authz: { requiredPrivileges: ['apm'] } }, handler: async (resources): Promise<ColdstartRateResponse> => { const apmEventClient = await getApmEventClient(resources); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/typings.ts b/x-pack/plugins/observability_solution/apm/server/routes/typings.ts index de5aeb6031d1c..830810af60cb5 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/typings.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/typings.ts @@ -45,17 +45,7 @@ export type MinimalApmPluginRequestHandlerContext = Omit< }; export interface APMRouteCreateOptions { - tags: Array< - | 'access:apm' - | 'access:apm_write' - | 'access:apm_settings_write' - | 'access:ml:canGetJobs' - | 'access:ml:canCreateJob' - | 'access:ml:canCloseJob' - | 'access:ai_assistant' - | 'oas-tag:APM agent keys' - | 'oas-tag:APM annotations' - >; + tags?: Array<'oas-tag:APM agent keys' | 'oas-tag:APM annotations'>; disableTelemetry?: boolean; } diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/common/vertical_rule.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/common/vertical_rule.tsx new file mode 100644 index 0000000000000..4fc6ae6cb4933 --- /dev/null +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/common/vertical_rule.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 { useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/react'; +import React from 'react'; + +export const VerticalRule = (props: React.ComponentProps<'span'>) => { + const { euiTheme } = useEuiTheme(); + + return ( + <span + css={css` + width: ${euiTheme.border.width.thin}; + height: 63px; + background-color: ${euiTheme.colors.borderBaseSubdued}; + `} + {...props} + /> + ); +}; diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/datasets_quality_indicators.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/datasets_quality_indicators.tsx index b186c16c0c0f8..3f883228195fc 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/datasets_quality_indicators.tsx +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/datasets_quality_indicators.tsx @@ -6,9 +6,6 @@ */ import React from 'react'; -import { euiThemeVars } from '@kbn/ui-theme'; -import { css } from '@emotion/react'; - import { EuiFlexGroup, EuiPanel, @@ -30,9 +27,12 @@ import { summaryPanelQualityTooltipText, } from '../../../../common/translations'; import { mapPercentagesToQualityCounts } from '../../quality_indicator'; +import { useDatasetQualityFilters } from '../../../hooks/use_dataset_quality_filters'; +import { VerticalRule } from '../../common/vertical_rule'; export function DatasetsQualityIndicators() { const { onPageReady } = usePerformanceContext(); + const { timeRange } = useDatasetQualityFilters(); const { datasetsQuality, isDatasetsQualityLoading, @@ -46,10 +46,16 @@ export function DatasetsQualityIndicators() { if (!isDatasetsQualityLoading && (numberOfDatasets || numberOfDocuments)) { onPageReady({ - key1: 'datasets', - value1: numberOfDatasets, - key2: 'documents', - value2: numberOfDocuments, + customMetrics: { + key1: 'datasets', + value1: numberOfDatasets, + key2: 'documents', + value2: numberOfDocuments, + }, + meta: { + rangeFrom: timeRange.from, + rangeTo: timeRange.to, + }, }); } @@ -71,14 +77,14 @@ export function DatasetsQualityIndicators() { description={summaryPanelQualityPoorText} isLoading={isDatasetsQualityLoading} /> - <span css={verticalRule} /> + <VerticalRule /> <QualityIndicator value={qualityCounts.degraded} quality="warning" description={summaryPanelQualityDegradedText} isLoading={isDatasetsQualityLoading} /> - <span css={verticalRule} /> + <VerticalRule /> <QualityIndicator value={qualityCounts.good + datasetsWithoutIgnoredField} quality="success" @@ -125,9 +131,3 @@ const QualityIndicator = ({ </EuiFlexGroup> ); }; - -const verticalRule = css` - width: 1px; - height: 63px; - background-color: ${euiThemeVars.euiColorLightShade}; -`; diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/degraded_field_flyout/field_info.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/degraded_field_flyout/field_info.tsx index 3bcee0bbc89b3..12733e62c9cfb 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/degraded_field_flyout/field_info.tsx +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/degraded_field_flyout/field_info.tsx @@ -16,6 +16,7 @@ import { EuiTitle, EuiToolTip, formatNumber, + useEuiTheme, } from '@elastic/eui'; import { ES_FIELD_TYPES, KBN_FIELD_TYPES } from '@kbn/field-types'; @@ -33,6 +34,8 @@ import { SparkPlot } from '../../common/spark_plot'; import { DegradedField } from '../../../../common/api_types'; export const DegradedFieldInfo = ({ fieldList }: { fieldList?: DegradedField }) => { + const { euiTheme } = useEuiTheme(); + const { fieldFormats, degradedFieldValues, @@ -164,7 +167,7 @@ export const DegradedFieldInfo = ({ fieldList }: { fieldList?: DegradedField }) <EuiBadgeGroup gutterSize="s"> {degradedFieldValues?.values.map((value, idx) => ( <EuiBadge color="hollow" key={idx}> - <EuiTextColor color="#765B96"> + <EuiTextColor color={euiTheme.colors.vis.euiColorVis3}> <strong>{value}</strong> </EuiTextColor> </EuiBadge> diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/overview/summary/panel.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/overview/summary/panel.tsx index e03e0957b5a52..dfcd95fae704a 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/overview/summary/panel.tsx +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality_details/overview/summary/panel.tsx @@ -7,22 +7,9 @@ import React from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiSkeletonTitle, EuiText } from '@elastic/eui'; -import { css } from '@emotion/react'; -import { euiThemeVars } from '@kbn/ui-theme'; import { PrivilegesWarningIconWrapper } from '../../../common'; import { notAvailableLabel } from '../../../../../common/translations'; - -const verticalRule = css` - width: 1px; - height: 65px; - background-color: ${euiThemeVars.euiColorLightShade}; -`; - -const verticalRuleHidden = css` - width: 1px; - height: 65px; - visibility: hidden; -`; +import { VerticalRule } from '../../../common/vertical_rule'; export function Panel({ title, @@ -38,14 +25,14 @@ export function Panel({ return panelChildren.map((panelChild, index) => ( <React.Fragment key={index}> {panelChild} - {index < panelChildren.length - 1 && <span css={verticalRule} />} + {index < panelChildren.length - 1 && <VerticalRule />} </React.Fragment> )); } return ( <> {panelChildren} - <span css={verticalRuleHidden} /> + <VerticalRule style={{ visibility: 'hidden' }} /> </> ); }; diff --git a/x-pack/plugins/observability_solution/dataset_quality/server/services/data_stream.ts b/x-pack/plugins/observability_solution/dataset_quality/server/services/data_stream.ts index 1157b40936a6d..e54f0f33f375a 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/server/services/data_stream.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/server/services/data_stream.ts @@ -20,7 +20,6 @@ class DataStreamService { try { const { data_streams: dataStreamsInfo } = await esClient.indices.getDataStream({ name: datasetName, - // @ts-expect-error verbose: true, }); diff --git a/x-pack/plugins/observability_solution/dataset_quality/tsconfig.json b/x-pack/plugins/observability_solution/dataset_quality/tsconfig.json index 57b159cdbd295..9c515d8112088 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/tsconfig.json +++ b/x-pack/plugins/observability_solution/dataset_quality/tsconfig.json @@ -29,7 +29,6 @@ "@kbn/router-utils", "@kbn/xstate-utils", "@kbn/shared-ux-utility", - "@kbn/ui-theme", "@kbn/data-service", "@kbn/observability-shared-plugin", "@kbn/data-plugin", diff --git a/x-pack/plugins/observability_solution/exploratory_view/README.md b/x-pack/plugins/observability_solution/exploratory_view/README.md deleted file mode 100644 index 67a73639cdf87..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Exploratory View plugin - -A shared component for visualizing observability data types via lens embeddable. [For further details.](./public/components/exploratory_view/README.md) - -## Unit testing - -Note: Run the following commands from `kibana/x-pack/plugins/observability_solution/exploratory_view`. - -### Run unit tests - -```bash -npx jest --watch -``` - -### Update snapshots - -```bash -npx jest --updateSnapshot -``` - -### Coverage - -HTML coverage report can be found in target/coverage/jest after tests have run. - -```bash -open target/coverage/jest/index.html -``` diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/README.md b/x-pack/plugins/observability_solution/exploratory_view/e2e/README.md deleted file mode 100644 index 00c7eaa80b88c..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/README.md +++ /dev/null @@ -1,15 +0,0 @@ -## How to run these tests - -These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated -script for standing up the test server. - -### Start the server - -From `~/x-pack/plugins/observability_solution/exploratory_view/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you -with an example run command when it finishes. - -### Run the tests - -From this directory, `~/x-pack/plugins/observability_solution/exploratory_view/e2e`, you can now run `node ../../../../scripts/functional_test_runner --config synthetics_run.ts`. - -In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/step_duration.journey.ts b/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/step_duration.journey.ts deleted file mode 100644 index 86291929afcc3..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/step_duration.journey.ts +++ /dev/null @@ -1,89 +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 { journey, step } from '@elastic/synthetics'; -import moment from 'moment'; -import { recordVideo } from '../record_video'; -import { createExploratoryViewUrl } from '../../public/components/shared/exploratory_view/configurations/exploratory_view_url'; -import { byTestId, loginToKibana, TIMEOUT_60_SEC, waitForLoadingToFinish } from '../utils'; - -journey('Step Duration series', async ({ page, params }) => { - recordVideo(page); - - page.setDefaultTimeout(TIMEOUT_60_SEC.timeout); - - const expUrl = createExploratoryViewUrl({ - reportType: 'kpi-over-time', - allSeries: [ - { - dataType: 'uptime', - time: { - from: moment().subtract(10, 'y').toISOString(), - to: moment().toISOString(), - }, - name: 'synthetics-series-1', - breakdown: 'monitor.type', - selectedMetricField: 'monitor.duration.us', - reportDefinitions: { - 'url.full': ['ALL_VALUES'], - }, - }, - ], - }); - - const baseUrl = `${params.kibanaUrl}${expUrl}`; - - step('Go to Exploratory view', async () => { - await page.goto(baseUrl, { - waitUntil: 'networkidle', - }); - await loginToKibana({ - page, - user: { username: 'elastic', password: 'changeme' }, - }); - }); - - step('build series with monitor duration', async () => { - await page.waitForNavigation(TIMEOUT_60_SEC); - - await waitForLoadingToFinish({ page }); - await page.click('text=browser'); - await page.click('text=http'); - await page.click('[aria-label="Remove report metric"]'); - await page.click('button:has-text("Select report metric")'); - await page.click('button:has-text("Step duration")'); - await page.click(byTestId('seriesBreakdown')); - await page.click('button[role="option"]:has-text("Step name")'); - await page.click('.euiComboBox__inputWrap'); - await page.click('[role="combobox"][placeholder="Search Monitor name"]'); - await page.click('button[role="option"]:has-text("test-monitor - inline")'); - await page.click('button:has-text("Apply changes")'); - }); - - step('Verify that changes are applied', async () => { - await waitForLoadingToFinish({ page }); - - await page.click('[aria-label="series color: #54b399"]'); - await page.click('[aria-label="series color: #6092c0"]'); - await page.click('[aria-label="series color: #d36086"] path'); - await page.click('[aria-label="series color: #9170b8"]'); - await page.click('[aria-label="series color: #ca8eae"]'); - await page.click('[aria-label="series color: #d6bf57"]'); - await page.click('text=load homepage'); - await page.click('text=load homepage'); - await page.click('text=load github'); - await page.click('text=load github'); - await page.click('text=load google'); - await page.click('text=load google'); - await page.click('text=hover over products menu'); - await page.click('text=hover over products menu'); - await page.click('text=load homepage 1'); - await page.click('text=load homepage 1'); - await page.click('text=load homepage 2'); - await page.click('text=load homepage 2'); - }); -}); diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/parse_args_params.ts b/x-pack/plugins/observability_solution/exploratory_view/e2e/parse_args_params.ts deleted file mode 100644 index 41100ba2ec295..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/parse_args_params.ts +++ /dev/null @@ -1,33 +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 yargs from 'yargs'; - -const { argv } = yargs(process.argv.slice(2)) - .option('headless', { - default: true, - type: 'boolean', - description: 'Start in headless mode', - }) - .option('bail', { - default: false, - type: 'boolean', - description: 'Pause on error', - }) - .option('watch', { - default: false, - type: 'boolean', - description: 'Runs the server in watch mode, restarting on changes', - }) - .option('grep', { - default: undefined, - type: 'string', - description: 'run only journeys with a name or tags that matches the glob', - }) - .help(); - -export { argv }; diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/record_video.ts b/x-pack/plugins/observability_solution/exploratory_view/e2e/record_video.ts deleted file mode 100644 index 23bcdfb643e72..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/record_video.ts +++ /dev/null @@ -1,32 +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 fs from 'fs'; -import Runner from '@elastic/synthetics/dist/core/runner'; -import { after, Page } from '@elastic/synthetics'; - -const SYNTHETICS_RUNNER = Symbol.for('SYNTHETICS_RUNNER'); - -// @ts-ignore -export const runner: Runner = global[SYNTHETICS_RUNNER]; - -export const recordVideo = (page: Page, postfix = '') => { - after(async () => { - try { - const videoFilePath = await page.video()?.path(); - const pathToVideo = videoFilePath?.replace('.journeys/videos/', '').replace('.webm', ''); - const newVideoPath = videoFilePath?.replace( - pathToVideo!, - postfix ? runner.currentJourney!.name + `-${postfix}` : runner.currentJourney!.name - ); - fs.renameSync(videoFilePath!, newVideoPath!); - } catch (e) { - // eslint-disable-next-line no-console - console.log('Error while renaming video file', e); - } - }); -}; diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/synthetics_run.ts b/x-pack/plugins/observability_solution/exploratory_view/e2e/synthetics_run.ts deleted file mode 100644 index 70a290ce9900a..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/synthetics_run.ts +++ /dev/null @@ -1,45 +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 { FtrConfigProviderContext } from '@kbn/test'; -import path from 'path'; -import { SyntheticsRunner } from './synthetics_runner'; -import { argv } from './parse_args_params'; - -const { headless, grep, bail: pauseOnError } = argv; - -async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { - const kibanaConfig = await readConfigFile(require.resolve('@kbn/synthetics-e2e/config')); - - return { - ...kibanaConfig.getAll(), - testRunner: async ({ getService }: any) => { - const syntheticsRunner = new SyntheticsRunner(getService, { - headless, - match: grep, - pauseOnError, - }); - - await syntheticsRunner.setup(); - - await syntheticsRunner.loadTestData(path.join(__dirname, '../../ux/e2e/fixtures/'), [ - 'rum_8.0.0', - 'rum_test_data', - ]); - await syntheticsRunner.loadTestData( - path.join(__dirname, '../../synthetics/e2e/fixtures/es_archiver/'), - ['full_heartbeat', 'browser'] - ); - await syntheticsRunner.loadTestFiles(async () => { - require(path.join(__dirname, './journeys')); - }); - await syntheticsRunner.run(); - }, - }; -} - -// eslint-disable-next-line import/no-default-export -export default runE2ETests; diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/synthetics_runner.ts b/x-pack/plugins/observability_solution/exploratory_view/e2e/synthetics_runner.ts deleted file mode 100644 index bc6222774f055..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/synthetics_runner.ts +++ /dev/null @@ -1,155 +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. - */ - -/* eslint-disable no-console */ - -import Url from 'url'; -import { run as syntheticsRun } from '@elastic/synthetics'; -import { PromiseType } from 'utility-types'; -import { createApmUsers } from '@kbn/apm-plugin/server/test_helpers/create_apm_users/create_apm_users'; - -import { EsArchiver } from '@kbn/es-archiver'; -import { esArchiverUnload } from './tasks/es_archiver'; -import { TestReporter } from './test_reporter'; - -export interface ArgParams { - headless: boolean; - match?: string; - pauseOnError: boolean; -} - -export class SyntheticsRunner { - public getService: any; - public kibanaUrl: string; - private elasticsearchUrl: string; - - public testFilesLoaded: boolean = false; - - public params: ArgParams; - - private loadTestFilesCallback?: (reload?: boolean) => Promise<void>; - - constructor(getService: any, params: ArgParams) { - this.getService = getService; - this.kibanaUrl = this.getKibanaUrl(); - this.elasticsearchUrl = this.getElasticsearchUrl(); - this.params = params; - } - - async setup() { - await this.createTestUsers(); - } - - async createTestUsers() { - await createApmUsers({ - elasticsearch: { node: this.elasticsearchUrl, username: 'elastic', password: 'changeme' }, - kibana: { hostname: this.kibanaUrl }, - }); - } - - async loadTestFiles(callback: (reload?: boolean) => Promise<void>, reload = false) { - console.log('Loading test files'); - await callback(reload); - this.loadTestFilesCallback = callback; - this.testFilesLoaded = true; - console.log('Successfully loaded test files'); - } - - async loadTestData(e2eDir: string, dataArchives: string[]) { - try { - console.log('Loading esArchiver...'); - - const esArchiver: EsArchiver = this.getService('esArchiver'); - - const promises = dataArchives.map((archive) => { - if (archive === 'synthetics_data') { - return esArchiver.load(e2eDir + archive, { - docsOnly: true, - skipExisting: true, - }); - } - return esArchiver.load(e2eDir + archive, { skipExisting: true }); - }); - - await Promise.all([...promises]); - } catch (e) { - console.log(e); - } - } - - getKibanaUrl() { - const config = this.getService('config'); - - return Url.format({ - protocol: config.get('servers.kibana.protocol'), - hostname: config.get('servers.kibana.hostname'), - port: config.get('servers.kibana.port'), - }); - } - - getElasticsearchUrl() { - const config = this.getService('config'); - - return Url.format({ - protocol: config.get('servers.elasticsearch.protocol'), - hostname: config.get('servers.elasticsearch.hostname'), - port: config.get('servers.elasticsearch.port'), - }); - } - - async run() { - if (!this.testFilesLoaded) { - throw new Error('Test files not loaded'); - } - const { headless, match, pauseOnError } = this.params; - const noOfRuns = process.env.NO_OF_RUNS ? Number(process.env.NO_OF_RUNS) : 1; - console.log(`Running ${noOfRuns} times`); - let results: PromiseType<ReturnType<typeof syntheticsRun>> = {}; - for (let i = 0; i < noOfRuns; i++) { - results = await syntheticsRun({ - params: { kibanaUrl: this.kibanaUrl, getService: this.getService }, - playwrightOptions: { - headless, - chromiumSandbox: false, - timeout: 60 * 1000, - viewport: { - height: 900, - width: 1600, - }, - recordVideo: { - dir: '.journeys/videos', - }, - }, - grepOpts: { match: match === 'undefined' ? '' : match }, - pauseOnError, - screenshots: 'only-on-failure', - reporter: TestReporter, - }); - if (noOfRuns > 1) { - // need to reload again since runner resets the journeys - await this.loadTestFiles(this.loadTestFilesCallback!, true); - } - } - - await this.assertResults(results); - } - - assertResults(results: PromiseType<ReturnType<typeof syntheticsRun>>) { - Object.entries(results).forEach(([_journey, result]) => { - if (result.status !== 'succeeded') { - process.exitCode = 1; - process.exit(); - } - }); - } - - cleanUp() { - console.log('Removing esArchiver...'); - esArchiverUnload('full_heartbeat'); - esArchiverUnload('browser'); - } -} diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/tasks/es_archiver.ts b/x-pack/plugins/observability_solution/exploratory_view/e2e/tasks/es_archiver.ts deleted file mode 100644 index bbb66b19f5a5e..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/tasks/es_archiver.ts +++ /dev/null @@ -1,37 +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 Path from 'path'; -import { execSync } from 'child_process'; - -const ES_ARCHIVE_DIR = './fixtures/es_archiver'; - -// Otherwise execSync would inject NODE_TLS_REJECT_UNAUTHORIZED=0 and node would abort if used over https -const NODE_TLS_REJECT_UNAUTHORIZED = '1'; - -export const esArchiverLoad = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../scripts/es_archiver load "${path}" --config ../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverUnload = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../scripts/es_archiver unload "${path}" --config ../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverResetKibana = () => { - execSync( - `node ../../../../scripts/es_archiver empty-kibana-index --config ../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/tsconfig.json b/x-pack/plugins/observability_solution/exploratory_view/e2e/tsconfig.json deleted file mode 100644 index 93a315a3e7a6b..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "exclude": ["tmp", "target/**/*"], - "include": ["./**/*"], - "compilerOptions": { - "outDir": "target/types", - "types": ["node"] - }, - "kbn_references": ["@kbn/test", "@kbn/apm-plugin", "@kbn/es-archiver"] -} diff --git a/x-pack/plugins/observability_solution/exploratory_view/jest.config.js b/x-pack/plugins/observability_solution/exploratory_view/jest.config.js deleted file mode 100644 index 089c3b9ed3ce4..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/jest.config.js +++ /dev/null @@ -1,21 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/plugins/observability_solution/exploratory_view'], - setupFiles: [ - '<rootDir>/x-pack/plugins/observability_solution/exploratory_view/.storybook/jest_setup.js', - ], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/observability_solution/exploratory_view', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/exploratory_view/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/README.md b/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/README.md deleted file mode 100644 index 6aea217a1aaa8..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/README.md +++ /dev/null @@ -1,161 +0,0 @@ -# Exploratory view component - -This component is used in observability plugin to show lens embeddable based observability visualizations. -The view is populated using configs stored as json within the view for each data type. - -This readme file contains few of the concepts being used in the component. - -Basic workflow for how exploratory view works, it looks like this - - -![Exploratory view workflow](https://i.imgur.com/Kgyfd29.png) - - -## Report Type - -The exploratory view report type controls how the data is visualized in the lens embeddable. The report type defines a set of constraints over the x and y axis. For example, the `kpi-over-time` report type is a time series chart type that plots key performance indicators over time, while the `data-distribution` chart plots the percentage of documents over key performance indicators. Current available data types can be found at `exploratory_view/configurations/constants`. - -Each report type has one or more available visualizations to plot data from one or more data types. - -## Data Types - -Each available visualization is backed by a data type. A data type consists of a set of configuration for displaying domain-specific visualizations for observability data. Some example data types include apm, metrics, and logs. - -For each respective data type, we fetch index pattern string from the app plugin contract, leveraging existing hasData API we have to return the index pattern string as well as a `hasData` boolean from each plugin. - -In most cases, there will be a 1-1 relation between apps and data types. - -### Observability `dataViews` - -Once we have index pattern string for each data type, a respective `dataView` is created. If there is an existing dataView for an index pattern, we will fetch and reuse it. - -After the dataView is created we also set field formats to promote human-readability. For example, we set format for monitor duration field, which is monitor.duration.us, from microseconds to seconds for browser monitors. - -### Visualization Configuration - -Each data type may have one or more visualization configurations. The data type to visualization configuration can be found in [`exploratory_view/obs_exploratory_view`](https://github.com/elastic/kibana/blob/main/x-pack/plugins/observability/public/components/shared/exploratory_view/obsv_exploratory_view.tsx#L86) - -Each visualization configuration is mapped to a single report type. - -Visualization configurations are used to define the UI we display for each report type and data type combination in the series builder. -Visualization configuration define UI options and display, including available `metrics`, available `filters`, available `breakdown` options, definitions for human-readable `labels`, and more. -The configuration also defines any custom base filters, which usually get pushed to a query, but are not displayed on the UI. You can also set more custom options on the configuration like colors which get used while rendering the chart. - -Visualization configuration can be found at [`exploratory_view/configurations`](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations), where each data type typically has a folder that holds one or more visualization configurations. - -The configuration defined ultimately influences the lens embeddable attributes which get pushed to lens embeddable, rendering the chart. - -Some options in configuration are: - -#### Definition fields -They are also filters, but usually main filters, around which usually app UI is based. -For apm, it could be service name and for uptime, monitor name. - -#### Filters -You can define base filters in kql form or data plugin filter format, filters are strongly typed. - -#### Breakdown fields -List of fields from an index pattern, UI will use this to populate breakdown option select. - -#### Labels -You can set key/value map for your field labels. UI will use these to set labels for data view fields. - -Sample config -``` -{ - reportType: ReportTypes.KPI, - defaultSeriesType: 'bar_stacked', - xAxisColumn: { - sourceField: '@timestamp', - }, - yAxisColumns: [ - { - sourceField: REPORT_METRIC_FIELD, - operationType: 'median', - }, - ], - hasOperationType: false, - filterFields: ['observer.geo.name', 'monitor.type', 'tags'], // these fields get's resolved from relevant dataView - breakdownFields: [ - 'observer.geo.name', - 'monitor.type', - 'monitor.name', - PERCENTILE, - ], // these fields get's resolved from relevant dataView - baseFilters: [], - palette: { type: 'palette', name: 'status' }, - definitionFields: [ - { field: 'monitor.name', nested: SYNTHETICS_STEP_NAME, singleSelection: true }, - { field: 'url.full', filters: buildExistsFilter('summary.up', dataView) }, - ], - metricOptions: [ - { - label: MONITORS_DURATION_LABEL, - field: 'monitor.duration.us', - columnType: OPERATION_COLUMN, - } - ], - labels: { ...FieldLabels, [SUMMARY_UP]: UP_LABEL, [SUMMARY_DOWN]: DOWN_LABEL }, - } -``` - - - -## Lens Embeddable - -Lens embeddable is what actually renders the chart in exploratory view. - -Exploratory view generates the lens embeddable attributes as json and pass it to the component. - -Based on configuration, exploratory view generates layers and columns. - -Add a link to lens embeddable readme - -#### Example -A simple usage of lens embeddable example and playground options -[embedded_lens_example](../../../../../../examples/embedded_lens_example) - -## Exploratory view Embeddable - -The primary purpose of the exploratory view is to embed it in observability solutions like uptime to replace -existing static visualizations, - -For that purpose, all the configuration options we define in the exploratory view can be used as an embeddable -via a component that is exposed using observability plugin contract, -usage looks like this - -`const ExploratoryViewComponent = props.plugins.observability.ExploratoryViewEmbeddable; -` - -``` - <ExploratoryViewComponent - attributes={[ - { - name: 'Monitors response duration', - time: { - from: 'now-5d', - to: 'now', - }, - reportDefinitions: { - 'monitor.id': ['test-id'], - }, - breakdown: 'monitor.type', - operationType: 'average', - dataType: 'synthetics', - seriesType: 'line', - selectedMetricField: 'monitor.duration.us', - }, - ]} - reportType="kpi-over-time" - title={'Monitor response duration'} - withActions={['save', 'explore']} - /> -``` - -there is an example in kibana example which you can view using -`yarn start --run-examples` and view the code at [Exploratory view embeddable](../../../../../../examples/exploratory_view_example) - -#### Example -A simple usage of lens embeddable example and playground options, run kibana with -`yarn start --run-example` to see this example in action -source code is defined at [embedded_lens_example](../../../../../../examples/embedded_lens_example) \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/exploratory_view/tsconfig.json b/x-pack/plugins/observability_solution/exploratory_view/tsconfig.json deleted file mode 100644 index 3aca08a23f4ef..0000000000000 --- a/x-pack/plugins/observability_solution/exploratory_view/tsconfig.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": ["common/**/*", "public/**/*", "public/**/*.json", "../../../../typings/**/*"], - "kbn_references": [ - "@kbn/core", - "@kbn/data-plugin", - "@kbn/home-plugin", - "@kbn/kibana-react-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/usage-collection-plugin", - "@kbn/licensing-plugin", - "@kbn/cases-plugin", - "@kbn/lens-plugin", - "@kbn/spaces-plugin", - "@kbn/unified-search-plugin", - "@kbn/discover-plugin", - "@kbn/i18n", - "@kbn/data-views-plugin", - "@kbn/embeddable-plugin", - "@kbn/triggers-actions-ui-plugin", - "@kbn/security-plugin", - "@kbn/navigation-plugin", - "@kbn/i18n-react", - "@kbn/es-types", - "@kbn/rison", - "@kbn/datemath", - "@kbn/es-query", - "@kbn/field-formats-plugin", - "@kbn/coloring", - "@kbn/ui-actions-plugin", - "@kbn/visualizations-plugin", - "@kbn/core-http-browser", - "@kbn/share-plugin", - "@kbn/charts-plugin", - "@kbn/shared-ux-router", - "@kbn/observability-shared-plugin", - "@kbn/core-ui-settings-browser-mocks", - "@kbn/observability-ai-assistant-plugin", - "@kbn/shared-ux-link-redirect-app", - "@kbn/react-kibana-context-render", - "@kbn/react-kibana-mount", - "@kbn/core-analytics-browser", - "@kbn/expressions-plugin", - "@kbn/ebt-tools" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/observability_solution/infra/public/alerting/log_threshold/components/alert_details_app_section/components/alert_annotation.tsx b/x-pack/plugins/observability_solution/infra/public/alerting/log_threshold/components/alert_details_app_section/components/alert_annotation.tsx index 73f458c3aa6fb..3c83d0673b9b5 100644 --- a/x-pack/plugins/observability_solution/infra/public/alerting/log_threshold/components/alert_details_app_section/components/alert_annotation.tsx +++ b/x-pack/plugins/observability_solution/infra/public/alerting/log_threshold/components/alert_details_app_section/components/alert_annotation.tsx @@ -14,8 +14,8 @@ import { UI_SETTINGS } from '@kbn/data-plugin/public'; import { useKibanaContextForPlugin } from '../../../../../hooks/use_kibana'; export function AlertAnnotation({ alertStarted }: { alertStarted: number }) { - const { uiSettings } = useKibanaContextForPlugin().services; const { euiTheme } = useEuiTheme(); + const { uiSettings } = useKibanaContextForPlugin().services; return ( <LineAnnotation @@ -33,7 +33,7 @@ export function AlertAnnotation({ alertStarted }: { alertStarted: number }) { style={{ line: { strokeWidth: 3, - stroke: euiTheme.colors.textDanger, + stroke: euiTheme.colors.borderStrongDanger, opacity: 1, }, }} diff --git a/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_date_picker.ts b/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_date_picker.ts index e6b69c1ddca8f..4cb20bfc4f3d5 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_date_picker.ts +++ b/x-pack/plugins/observability_solution/infra/public/components/asset_details/hooks/use_date_picker.ts @@ -52,8 +52,9 @@ export function useDatePicker({ (newDateRange: TimeRange) => { setUrlState({ dateRange: newDateRange }); setParsedDateRange(parseDateRange(newDateRange)); + updateSearchSessionId(); }, - [setUrlState] + [setUrlState, updateSearchSessionId] ); const onRefresh = useCallback( @@ -62,12 +63,10 @@ export function useDatePicker({ if (autoRefreshEnabled) { autoRefreshTick$.next(null); } else { - updateSearchSessionId(); + setDateRange(newDateRange); } - - setDateRange(newDateRange); }, - [autoRefreshEnabled, autoRefreshTick$, setDateRange, updateSearchSessionId] + [autoRefreshEnabled, autoRefreshTick$, setDateRange] ); const setAutoRefresh = useCallback( diff --git a/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_react_embeddable.tsx b/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_react_embeddable.tsx index 8b841c30f1533..43382cf37203b 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_react_embeddable.tsx +++ b/x-pack/plugins/observability_solution/infra/public/components/log_stream/log_stream_react_embeddable.tsx @@ -111,8 +111,8 @@ const SAVED_SEARCH_DOCS_URL = 'https://www.elastic.co/guide/en/kibana/current/save-open-search.html'; const DeprecationCallout = () => { - const [isDismissed, setDismissed] = useLocalStorage(DISMISSAL_STORAGE_KEY, false); const { euiTheme } = useEuiTheme(); + const [isDismissed, setDismissed] = useLocalStorage(DISMISSAL_STORAGE_KEY, false); if (isDismissed) { return null; diff --git a/x-pack/plugins/observability_solution/infra/public/components/logs_deprecation_callout.tsx b/x-pack/plugins/observability_solution/infra/public/components/logs_deprecation_callout.tsx index 756c42214d7c0..a9b14688888c3 100644 --- a/x-pack/plugins/observability_solution/infra/public/components/logs_deprecation_callout.tsx +++ b/x-pack/plugins/observability_solution/infra/public/components/logs_deprecation_callout.tsx @@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n'; import { EuiButton } from '@elastic/eui'; import { getRouterLinkProps } from '@kbn/router-utils'; import useLocalStorage from 'react-use/lib/useLocalStorage'; -import { css } from '@emotion/css'; +import { css } from '@emotion/react'; import { LocatorPublic } from '@kbn/share-plugin/common'; import { DISCOVER_APP_LOCATOR, DiscoverAppLocatorParams } from '@kbn/discover-plugin/common'; import { useKibanaContextForPlugin } from '../hooks/use_kibana'; @@ -38,6 +38,7 @@ interface LogsDeprecationCalloutProps { } export const LogsDeprecationCallout = ({ page }: LogsDeprecationCalloutProps) => { + const { euiTheme } = useEuiTheme(); const { services: { share, @@ -47,8 +48,6 @@ export const LogsDeprecationCallout = ({ page }: LogsDeprecationCalloutProps) => }, } = useKibanaContextForPlugin(); - const { euiTheme } = useEuiTheme(); - const { dismissalStorageKey, message } = pageConfigurations[page]; const [isDismissed, setDismissed] = useLocalStorage(dismissalStorageKey, false); @@ -68,7 +67,7 @@ export const LogsDeprecationCallout = ({ page }: LogsDeprecationCalloutProps) => iconType="iInCircle" heading="h2" onDismiss={() => setDismissed(true)} - className={css` + css={css` margin-bottom: ${euiTheme.size.l}; `} > diff --git a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_hosts_table.tsx b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_hosts_table.tsx index dece3437e3e1d..95f951fd82ff3 100644 --- a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_hosts_table.tsx +++ b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_hosts_table.tsx @@ -277,6 +277,7 @@ export const useHostsTable = () => { <EuiToolTip position="top" content={TABLE_CONTENT_LABEL.activeAlerts}> <EuiBadge iconType="warning" + data-test-subj="hostInventoryAlertsBadgeLink" color="danger" onClick={() => { setProperties({ detailsItemId: row.id === detailsItemId ? null : row.id }); diff --git a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_unified_search.ts b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_unified_search.ts index 6feefd399a829..291f95554e89c 100644 --- a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_unified_search.ts +++ b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/hooks/use_unified_search.ts @@ -53,7 +53,11 @@ export const useUnifiedSearch = () => { const { data: { - query: { filterManager: filterManagerService, queryString: queryStringService }, + query: { + filterManager: filterManagerService, + queryString: queryStringService, + timefilter: timeFilterService, + }, }, telemetry, } = services; @@ -68,29 +72,33 @@ export const useUnifiedSearch = () => { const onFiltersChange = useCallback( (filters: Filter[]) => { setSearch({ type: 'SET_FILTERS', filters }); + updateSearchSessionId(); }, - [setSearch] + [setSearch, updateSearchSessionId] ); const onPanelFiltersChange = useCallback( (panelFilters: Filter[]) => { setSearch({ type: 'SET_PANEL_FILTERS', panelFilters }); + updateSearchSessionId(); }, - [setSearch] + [setSearch, updateSearchSessionId] ); const onLimitChange = useCallback( (limit: number) => { setSearch({ type: 'SET_LIMIT', limit }); + updateSearchSessionId(); }, - [setSearch] + [setSearch, updateSearchSessionId] ); const onDateRangeChange = useCallback( (dateRange: StringDateRange) => { setSearch({ type: 'SET_DATE_RANGE', dateRange }); + updateSearchSessionId(); }, - [setSearch] + [setSearch, updateSearchSessionId] ); const onQueryChange = useCallback( @@ -99,19 +107,19 @@ export const useUnifiedSearch = () => { setError(null); validateQuery(query); setSearch({ type: 'SET_QUERY', query }); + updateSearchSessionId(); } catch (err) { setError(err); } }, - [validateQuery, setSearch] + [validateQuery, setSearch, updateSearchSessionId] ); const onSubmit = useCallback( ({ dateRange }: { dateRange: TimeRange }) => { onDateRangeChange(dateRange); - updateSearchSessionId(); }, - [onDateRangeChange, updateSearchSessionId] + [onDateRangeChange] ); const getDateRangeAsTimestamp = useCallback(() => { @@ -168,6 +176,16 @@ export const useUnifiedSearch = () => { .subscribe() ); + subscription.add( + timeFilterService.timefilter + .getTimeUpdate$() + .pipe( + map(() => timeFilterService.timefilter.getTime()), + tap((dateRange) => onDateRangeChange(dateRange)) + ) + .subscribe() + ); + subscription.add( queryStringService .getUpdates$() @@ -181,7 +199,14 @@ export const useUnifiedSearch = () => { return () => { subscription.unsubscribe(); }; - }, [filterManagerService, queryStringService, onQueryChange, onFiltersChange]); + }, [ + filterManagerService, + queryStringService, + onQueryChange, + onFiltersChange, + timeFilterService.timefilter, + onDateRangeChange, + ]); // Track telemetry event on query/filter/date changes useEffect(() => { diff --git a/x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/node_square.tsx b/x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/node_square.tsx index 977bf6b8b16cd..219200f85ded3 100644 --- a/x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/node_square.tsx +++ b/x-pack/plugins/observability_solution/infra/public/pages/metrics/inventory_view/components/waffle/node_square.tsx @@ -66,6 +66,7 @@ const NodeContainerSmall = ({ children, ...props }: NodeProps & { color: string ); const ValueInner = ({ children, ...props }: NodeProps) => { const { euiTheme } = useEuiTheme(); + return ( <div css={css` diff --git a/x-pack/plugins/observability_solution/inventory/e2e/cypress/e2e/alert_count/alert_count.cy.ts b/x-pack/plugins/observability_solution/inventory/e2e/cypress/e2e/alert_count/alert_count.cy.ts new file mode 100644 index 0000000000000..ac5fa17ecb08a --- /dev/null +++ b/x-pack/plugins/observability_solution/inventory/e2e/cypress/e2e/alert_count/alert_count.cy.ts @@ -0,0 +1,199 @@ +/* + * 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 { apmSynthtrace, entitiesSynthtrace, infraSynthtrace } from '../../../synthtrace'; +import { + CONTAINER_ID, + HOST_NAME, + SERVICE_NAME, + generateEntityAlerts, + cleanEntityAlerts, + generateEntities, + generateHosts, + generateTraces, +} from './generate_data'; + +const start = new Date(Date.now() - 5 * 60000).toISOString(); +const end = new Date().toISOString(); + +const getNumber = (text: string) => text.replace(/\D/g, ''); + +const verifyNumber = (element: Cypress.Chainable<JQuery<Element>>, alertsCount: string) => { + element.invoke('text').then((testSubjElementCount) => { + expect(getNumber(testSubjElementCount)).to.equal(alertsCount); + }); +}; + +const verifyAlertsTableCount = (alertsCount: string) => { + verifyNumber(cy.getByTestSubj('activeAlertCount'), alertsCount); + verifyNumber(cy.getByTestSubj('toolbar-alerts-count'), alertsCount); +}; + +describe('Alert count', () => { + beforeEach(() => { + cy.loginAsSuperUser(); + + cy.intercept('GET', '/internal/entities/managed/enablement', { + fixture: 'eem_enabled.json', + }).as('getEEMStatus'); + + entitiesSynthtrace.index( + generateEntities({ from: new Date(start).getTime(), to: new Date(end).getTime() }) + ); + + generateEntityAlerts(start); + }); + + afterEach(() => { + entitiesSynthtrace.clean(); + cleanEntityAlerts(); + }); + + describe('When there is entities and signal data', () => { + describe('Service', () => { + before(() => { + apmSynthtrace.index( + generateTraces({ from: new Date(start).getTime(), to: new Date(end).getTime() }) + ); + }); + + after(() => { + apmSynthtrace.clean(); + }); + + beforeEach(() => { + cy.visitKibana('/app/inventory'); + cy.wait('@getEEMStatus'); + cy.contains('service').click(); + }); + + it('Should display the correct alert count in the entity detail views', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.contains(SERVICE_NAME).click(); + cy.url().should('include', `/app/apm/services/${SERVICE_NAME}/overview`); + + verifyNumber( + cy.getByTestSubj('alertsTab').get('.euiBadge'), + inventoryAlertsBadgeLinkCount + ); + cy.getByTestSubj('alertsTab').click(); + cy.url().should('include', `/app/apm/services/${SERVICE_NAME}/alerts`); + cy.getByTestSubj('alert-status-filter-active-button').click(); + verifyNumber(cy.getByTestSubj('toolbar-alerts-count'), inventoryAlertsBadgeLinkCount); + }); + }); + + it('Should display the correct alert count in the alerts app', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.getByTestSubj('inventoryAlertsBadgeLink').click(); + cy.url().should('include', `/app/observability/alerts`); + verifyAlertsTableCount(inventoryAlertsBadgeLinkCount); + }); + }); + + it('Should display the correct alert count in the services inventory', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.visitKibana(`/app/apm/services?rangeFrom=${start}&rangeTo=${end}`); + verifyNumber( + cy.getByTestSubj('serviceInventoryAlertsBadgeLink'), + inventoryAlertsBadgeLinkCount + ); + }); + }); + }); + + describe('Host', () => { + before(() => { + infraSynthtrace.index( + generateHosts({ + from: start, + to: end, + }) + ); + }); + + after(() => { + infraSynthtrace.clean(); + }); + + beforeEach(() => { + cy.visitKibana('/app/inventory'); + cy.wait('@getEEMStatus'); + cy.contains('host').click(); + }); + + it('Should display the correct alert count in the entity detail views', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.contains(HOST_NAME).click(); + cy.url().should('include', `/app/metrics/detail/host/${HOST_NAME}`); + cy.getByTestSubj('hostsView-alert-status-filter-active-button').click(); + verifyAlertsTableCount(inventoryAlertsBadgeLinkCount); + }); + }); + + it('Should display the correct alert count in the alerts app', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.getByTestSubj('inventoryAlertsBadgeLink').click(); + cy.url().should('include', `/app/observability/alerts`); + verifyAlertsTableCount(inventoryAlertsBadgeLinkCount); + }); + }); + + it('Should display the correct alert count in the hosts inventory', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.visitKibana('/app/metrics/hosts'); + + verifyNumber( + cy.getByTestSubj('hostInventoryAlertsBadgeLink'), + inventoryAlertsBadgeLinkCount + ); + }); + }); + }); + + describe('Container', () => { + beforeEach(() => { + cy.visitKibana('/app/inventory'); + cy.wait('@getEEMStatus'); + cy.contains('container').click(); + }); + + it('Should display the correct alert count in the entity detail views', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.contains(CONTAINER_ID).click(); + cy.url().should('include', `/app/metrics/detail/container/${CONTAINER_ID}`); + cy.getByTestSubj('hostsView-alert-status-filter-active-button').click(); + verifyAlertsTableCount(inventoryAlertsBadgeLinkCount); + }); + }); + + it('Should display the correct alert count in the alerts app', () => { + cy.getByTestSubj('inventoryAlertsBadgeLink') + .invoke('text') + .then((inventoryAlertsBadgeLinkCount) => { + cy.getByTestSubj('inventoryAlertsBadgeLink').click(); + cy.url().should('include', `/app/observability/alerts`); + verifyAlertsTableCount(inventoryAlertsBadgeLinkCount); + }); + }); + }); + }); +}); diff --git a/x-pack/plugins/observability_solution/inventory/e2e/cypress/e2e/alert_count/generate_data.ts b/x-pack/plugins/observability_solution/inventory/e2e/cypress/e2e/alert_count/generate_data.ts new file mode 100644 index 0000000000000..70a1ab1a97817 --- /dev/null +++ b/x-pack/plugins/observability_solution/inventory/e2e/cypress/e2e/alert_count/generate_data.ts @@ -0,0 +1,206 @@ +/* + * 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 { entities, apm, timerange, infra } from '@kbn/apm-synthtrace-client'; +import { generateLongIdWithSeed } from '@kbn/apm-synthtrace-client/src/lib/utils/generate_id'; + +const SERVICE_ENTITY_ID = generateLongIdWithSeed('service'); +const HOST_ENTITY_ID = generateLongIdWithSeed('host'); +const CONTAINER_ENTITY_ID = generateLongIdWithSeed('container'); + +export const SERVICE_NAME = 'service-entity'; +export const HOST_NAME = 'host-entity'; +export const CONTAINER_ID = 'container-entity'; + +const AGENT_NAME = 'agentName'; +const ENVIRONMENT = 'ENVIRONMENT_ALL'; + +export function generateEntities({ from, to }: { from: number; to: number }) { + const service = entities.serviceEntity({ + serviceName: SERVICE_NAME, + agentName: [AGENT_NAME], + dataStreamType: ['logs'], + entityId: SERVICE_ENTITY_ID, + }); + + const host = entities.hostEntity({ + hostName: HOST_NAME, + agentName: [AGENT_NAME], + dataStreamType: ['metrics'], + entityId: HOST_ENTITY_ID, + }); + + const container = entities.containerEntity({ + containerId: CONTAINER_ID, + agentName: [AGENT_NAME], + dataStreamType: ['metrics'], + entityId: CONTAINER_ENTITY_ID, + }); + + const range = timerange(from, to); + + return range + .interval('1m') + .rate(1) + .generator((timestamp) => { + return [ + service.timestamp(timestamp), + host.timestamp(timestamp), + container.timestamp(timestamp), + ]; + }); +} + +export function generateTraces({ from, to }: { from: number; to: number }) { + const synthNodeTraceLogs = apm + .service({ + name: SERVICE_NAME, + environment: ENVIRONMENT, + agentName: AGENT_NAME, + }) + .instance(HOST_NAME); + + const range = timerange(from, to); + return range + .interval('1m') + .rate(1) + .generator((timestamp) => { + return [ + synthNodeTraceLogs + .transaction({ transactionName: 't1' }) + .timestamp(timestamp) + .duration(1000) + .success(), + ]; + }); +} + +export function generateHosts({ from, to }: { from: string; to: string }) { + const range = timerange(from, to); + + const hosts: Array<{ hostName: string; cpuValue?: number }> = [ + { + hostName: HOST_NAME, + cpuValue: 0.5, + }, + ]; + + return range + .interval('30s') + .rate(1) + .generator((timestamp) => + hosts.flatMap(({ hostName, cpuValue }) => [ + infra.host(hostName).cpu({ cpuTotalValue: cpuValue }).timestamp(timestamp), + infra.host(hostName).memory().timestamp(timestamp), + infra.host(hostName).network().timestamp(timestamp), + infra.host(hostName).load().timestamp(timestamp), + infra.host(hostName).filesystem().timestamp(timestamp), + infra.host(hostName).diskio().timestamp(timestamp), + infra.host(hostName).core().timestamp(timestamp), + ]) + ); +} + +const alertIndexes = [ + '.alerts-observability.apm.alerts-default', + '.alerts-observability.uptime.alerts-default', + '.alerts-observability.metrics.alerts-default', + '.alerts-default.alerts-default', + '.alerts-observability.logs.alerts-default', + '.alerts-observability.slo.alerts-default', + '.alerts-observability.threshold.alerts-default', +]; + +const entityIdentityFields = [ + { + 'service.name': SERVICE_NAME, + }, + { + 'host.name': HOST_NAME, + }, + { + 'container.id': CONTAINER_ID, + }, +]; + +export const cleanEntityAlerts = () => { + entityIdentityFields.forEach((entityIdentityField) => { + alertIndexes.forEach((index) => { + cy.request({ + url: `/api/console/proxy?path=${index}%2F_delete_by_query&method=POST`, + method: 'POST', + body: { + query: { + match: { + ...entityIdentityField, + }, + }, + }, + headers: { 'kbn-xsrf': true }, + }); + }); + }); +}; + +export const generateEntityAlerts = (start: string) => { + entityIdentityFields.forEach((entityIdentityField) => { + alertIndexes.forEach((index) => { + cy.request({ + url: `/api/console/proxy?path=${index}%2F_doc&method=POST`, + method: 'POST', + body: alert({ entityIdentityField, start, index }), + headers: { 'kbn-xsrf': true }, + }); + }); + }); +}; + +const alert = ({ entityIdentityField, start, index }: any) => { + return { + 'processor.event': 'transaction', + 'kibana.alert.evaluation.value': 1, + 'kibana.alert.evaluation.threshold': 10, + 'kibana.alert.reason': 'Test alert reason', + 'service.environment': 'ENVIRONMENT', + ...entityIdentityField, + 'transaction.type': 'request', + 'kibana.alert.rule.category': 'Test rule category', + 'kibana.alert.rule.consumer': 'apm', + 'kibana.alert.rule.name': 'Test rule name', + 'kibana.alert.rule.parameters': { + environment: 'ENVIRONMENT', + threshold: 10, + windowSize: 5, + windowUnit: 'm', + }, + 'kibana.alert.rule.producer': 'apm', + 'kibana.alert.rule.revision': 0, + 'kibana.alert.rule.rule_type_id': 'apm.transaction_error_rate', + 'kibana.alert.rule.tags': ['apm'], + 'kibana.alert.rule.uuid': index, + 'kibana.space_ids': ['default'], + '@timestamp': start, + 'event.action': 'active', + 'event.kind': 'signal', + 'kibana.alert.rule.execution.timestamp': start, + 'kibana.alert.action_group': 'threshold_met', + 'kibana.alert.flapping': true, + 'kibana.alert.flapping_history': [], + 'kibana.alert.maintenance_window_ids': [], + 'kibana.alert.consecutive_matches': 1, + 'kibana.alert.status': 'active', + 'kibana.alert.uuid': index, + 'kibana.alert.workflow_status': 'open', + 'kibana.alert.duration.us': 3298850000, + 'kibana.alert.start': start, + 'kibana.alert.time_range': { + gte: start, + }, + tags: ['apm'], + 'kibana.alert.previous_action_group': 'threshold_met', + }; +}; diff --git a/x-pack/plugins/observability_solution/inventory/e2e/setup_cypress_node_events.ts b/x-pack/plugins/observability_solution/inventory/e2e/setup_cypress_node_events.ts index a47e6f5e7d578..465adcda19e3a 100644 --- a/x-pack/plugins/observability_solution/inventory/e2e/setup_cypress_node_events.ts +++ b/x-pack/plugins/observability_solution/inventory/e2e/setup_cypress_node_events.ts @@ -8,8 +8,9 @@ import { ApmSynthtraceEsClient, EntitiesSynthtraceEsClient, LogLevel, - LogsSynthtraceEsClient, createLogger, + InfraSynthtraceEsClient, + LogsSynthtraceEsClient, } from '@kbn/apm-synthtrace'; import { createEsClientForTesting } from '@kbn/test'; // eslint-disable-next-line @kbn/imports/no_unresolvable_imports @@ -46,6 +47,12 @@ export function setupNodeEvents(on: Cypress.PluginEvents, config: Cypress.Plugin refreshAfterIndex: true, }); + const infraSynthtraceEsClient = new InfraSynthtraceEsClient({ + client, + logger, + refreshAfterIndex: true, + }); + entitiesSynthtraceEsClient.pipeline( entitiesSynthtraceEsClient.getDefaultPipeline({ includeSerialization: false }) ); @@ -58,6 +65,10 @@ export function setupNodeEvents(on: Cypress.PluginEvents, config: Cypress.Plugin logsSynthtraceEsClient.getDefaultPipeline({ includeSerialization: false }) ); + infraSynthtraceEsClient.pipeline( + infraSynthtraceEsClient.getDefaultPipeline({ includeSerialization: false }) + ); + initPlugin(on, config); on('task', { @@ -94,6 +105,14 @@ export function setupNodeEvents(on: Cypress.PluginEvents, config: Cypress.Plugin await logsSynthtraceEsClient.clean(); return null; }, + async 'infraSynthtrace:index'(events: Array<Record<string, any>>) { + await infraSynthtraceEsClient.index(Readable.from(events)); + return null; + }, + async 'infraSynthtrace:clean'() { + await infraSynthtraceEsClient.clean(); + return null; + }, }); on('after:spec', (spec, results) => { diff --git a/x-pack/plugins/observability_solution/inventory/e2e/synthtrace.ts b/x-pack/plugins/observability_solution/inventory/e2e/synthtrace.ts index 5625bb577bd42..95f2e8fbb65c2 100644 --- a/x-pack/plugins/observability_solution/inventory/e2e/synthtrace.ts +++ b/x-pack/plugins/observability_solution/inventory/e2e/synthtrace.ts @@ -9,6 +9,7 @@ import type { SynthtraceGenerator, EntityFields, ApmFields, + InfraDocument, } from '@kbn/apm-synthtrace-client'; export const entitiesSynthtrace = { @@ -37,3 +38,13 @@ export const logsSynthtrace = { ), clean: () => cy.task('logsSynthtrace:clean'), }; + +export const infraSynthtrace = { + index: (events: SynthtraceGenerator<InfraDocument>) => { + return cy.task( + 'infraSynthtrace:index', + Array.from(events).flatMap((event) => event.serialize()) + ); + }, + clean: () => cy.task('infraSynthtrace:clean'), +}; diff --git a/x-pack/plugins/observability_solution/inventory/server/routes/entities/route.ts b/x-pack/plugins/observability_solution/inventory/server/routes/entities/route.ts index c4a0a21f50eb2..6e4c10bc01035 100644 --- a/x-pack/plugins/observability_solution/inventory/server/routes/entities/route.ts +++ b/x-pack/plugins/observability_solution/inventory/server/routes/entities/route.ts @@ -22,8 +22,10 @@ import { getLatestEntitiesAlerts } from './get_latest_entities_alerts'; export const getEntityTypesRoute = createInventoryServerRoute({ endpoint: 'GET /internal/inventory/entities/types', - options: { - tags: ['access:inventory'], + security: { + authz: { + requiredPrivileges: ['inventory'], + }, }, handler: async ({ context, logger }) => { const coreContext = await context.core; @@ -52,8 +54,10 @@ export const listLatestEntitiesRoute = createInventoryServerRoute({ }), ]), }), - options: { - tags: ['access:inventory'], + security: { + authz: { + requiredPrivileges: ['inventory'], + }, }, handler: async ({ params, @@ -119,8 +123,10 @@ export const groupEntitiesByRoute = createInventoryServerRoute({ }), }), ]), - options: { - tags: ['access:inventory'], + security: { + authz: { + requiredPrivileges: ['inventory'], + }, }, handler: async ({ params, context, logger }) => { const coreContext = await context.core; diff --git a/x-pack/plugins/observability_solution/inventory/server/routes/has_data/route.ts b/x-pack/plugins/observability_solution/inventory/server/routes/has_data/route.ts index f0e582b396177..4f4e4e81f6225 100644 --- a/x-pack/plugins/observability_solution/inventory/server/routes/has_data/route.ts +++ b/x-pack/plugins/observability_solution/inventory/server/routes/has_data/route.ts @@ -11,8 +11,10 @@ import { getHasData } from './get_has_data'; export const hasDataRoute = createInventoryServerRoute({ endpoint: 'GET /internal/inventory/has_data', - options: { - tags: ['access:inventory'], + security: { + authz: { + requiredPrivileges: ['inventory'], + }, }, handler: async ({ context, logger }) => { const coreContext = await context.core; diff --git a/x-pack/plugins/observability_solution/inventory/server/routes/types.ts b/x-pack/plugins/observability_solution/inventory/server/routes/types.ts index 646d34888ae91..5044f53bd201a 100644 --- a/x-pack/plugins/observability_solution/inventory/server/routes/types.ts +++ b/x-pack/plugins/observability_solution/inventory/server/routes/types.ts @@ -33,5 +33,4 @@ export interface InventoryRouteCreateOptions { timeout?: { idleSocket?: number; }; - tags: Array<'access:inventory'>; } diff --git a/x-pack/plugins/observability_solution/inventory/tsconfig.json b/x-pack/plugins/observability_solution/inventory/tsconfig.json index 561ca62eaf97e..54b6336ab3be2 100644 --- a/x-pack/plugins/observability_solution/inventory/tsconfig.json +++ b/x-pack/plugins/observability_solution/inventory/tsconfig.json @@ -51,6 +51,9 @@ "@kbn/rule-data-utils", "@kbn/spaces-plugin", "@kbn/cloud-plugin", + "@kbn/observability-utils-browser", + "@kbn/observability-utils-server", + "@kbn/observability-utils-common", "@kbn/storybook", "@kbn/dashboard-plugin", "@kbn/deeplinks-analytics", diff --git a/x-pack/plugins/observability_solution/investigate/jest.config.js b/x-pack/plugins/observability_solution/investigate/jest.config.js deleted file mode 100644 index bba3a2285005e..0000000000000 --- a/x-pack/plugins/observability_solution/investigate/jest.config.js +++ /dev/null @@ -1,23 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: [ - '<rootDir>/x-pack/plugins/observability_solution/investigate/public', - '<rootDir>/x-pack/plugins/observability_solution/investigate/common', - '<rootDir>/x-pack/plugins/observability_solution/investigate/server', - ], - setupFiles: [], - collectCoverage: true, - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/investigate/{common,public,server}/**/*.{js,ts,tsx}', - ], - - coverageReporters: ['html'], -}; diff --git a/x-pack/plugins/observability_solution/investigate/tsconfig.json b/x-pack/plugins/observability_solution/investigate/tsconfig.json deleted file mode 100644 index e2e39f527c2e1..0000000000000 --- a/x-pack/plugins/observability_solution/investigate/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "../../../typings/**/*", - "common/**/*", - "public/**/*", - "typings/**/*", - "public/**/*.json", - "server/**/*", ], - "kbn_references": [ - "@kbn/core", - "@kbn/logging", - "@kbn/config-schema", - "@kbn/es-query", - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/observability_solution/investigate_app/jest.config.js b/x-pack/plugins/observability_solution/investigate_app/jest.config.js deleted file mode 100644 index b37e5c69d4635..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/jest.config.js +++ /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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: [ - '<rootDir>/x-pack/plugins/observability_solution/investigate_app/public', - '<rootDir>/x-pack/plugins/observability_solution/investigate_app/server', - ], - setupFiles: [ - '<rootDir>/x-pack/plugins/observability_solution/investigate_app/.storybook/jest_setup.js', - ], - collectCoverage: true, - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/investigate_app/{public,server}/**/*.{js,ts,tsx}', - ], - - coverageReporters: ['html'], -}; diff --git a/x-pack/plugins/observability_solution/investigate_app/kibana.jsonc b/x-pack/plugins/observability_solution/investigate_app/kibana.jsonc deleted file mode 100644 index e105cacf75d05..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/kibana.jsonc +++ /dev/null @@ -1,37 +0,0 @@ -{ - "type": "plugin", - "id": "@kbn/investigate-app-plugin", - "owner": "@elastic/obs-ux-management-team", - "group": "observability", - "visibility": "private", - "plugin": { - "id": "investigateApp", - "server": true, - "browser": true, - "configPath": ["xpack", "investigateApp"], - "requiredPlugins": [ - "investigate", - "observabilityShared", - "lens", - "charts", - "dataViews", - "data", - "embeddable", - "contentManagement", - "datasetQuality", - "unifiedSearch", - "security", - "observability", - "licensing", - "ruleRegistry", - "usageCollection" - ], - "requiredBundles": [ - "esql", - "kibanaReact", - "kibanaUtils" - ], - "optionalPlugins": ["observabilityAIAssistant"], - "extraPublicDirs": [] - } -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/api/index.ts b/x-pack/plugins/observability_solution/investigate_app/public/api/index.ts deleted file mode 100644 index af02f4a15e740..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/api/index.ts +++ /dev/null @@ -1,63 +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 { CoreSetup, CoreStart, HttpFetchOptions } from '@kbn/core/public'; -import type { - ClientRequestParamsOf, - ReturnOf, - RouteRepositoryClient, -} from '@kbn/server-route-repository'; -import { formatRequest } from '@kbn/server-route-repository-utils/src/format_request'; -import type { InvestigateAppServerRouteRepository } from '../../server'; - -type FetchOptions = Omit<HttpFetchOptions, 'body'> & { - body?: any; -}; - -export type InvestigateAppAPIClientOptions = Omit< - FetchOptions, - 'query' | 'body' | 'pathname' | 'signal' -> & { - signal: AbortSignal | null; -}; - -export type InvestigateAppAPIClient = RouteRepositoryClient< - InvestigateAppServerRouteRepository, - InvestigateAppAPIClientOptions ->['fetch']; - -export type AutoAbortedInvestigateAppAPIClient = RouteRepositoryClient< - InvestigateAppServerRouteRepository, - Omit<InvestigateAppAPIClientOptions, 'signal'> ->['fetch']; - -export type InvestigateAppAPIEndpoint = keyof InvestigateAppServerRouteRepository; - -export type APIReturnType<TEndpoint extends InvestigateAppAPIEndpoint> = ReturnOf< - InvestigateAppServerRouteRepository, - TEndpoint ->; - -export type InvestigateAppAPIClientRequestParamsOf<TEndpoint extends InvestigateAppAPIEndpoint> = - ClientRequestParamsOf<InvestigateAppServerRouteRepository, TEndpoint>; - -export function createCallInvestigateAppAPI(core: CoreStart | CoreSetup) { - return ((endpoint, options) => { - const { params } = options as unknown as { - params?: Partial<Record<string, any>>; - }; - - const { method, pathname, version } = formatRequest(endpoint, params?.path); - - return core.http[method](pathname, { - ...options, - body: params && params.body ? JSON.stringify(params.body) : undefined, - query: params?.query, - version, - }); - }) as InvestigateAppAPIClient; -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/assistant_hypothesis/assistant_hypothesis.tsx b/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/assistant_hypothesis/assistant_hypothesis.tsx deleted file mode 100644 index f63cbb9c01618..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/assistant_hypothesis/assistant_hypothesis.tsx +++ /dev/null @@ -1,122 +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 dedent from 'dedent'; -import { - ALERT_RULE_PARAMETERS, - ALERT_START, - ALERT_RULE_CATEGORY, - ALERT_REASON, -} from '@kbn/rule-data-utils'; -import { i18n } from '@kbn/i18n'; -import { EntityWithSource } from '@kbn/investigation-shared'; -import React, { useCallback } from 'react'; -import { useKibana } from '../../../../hooks/use_kibana'; -import { useInvestigation } from '../../contexts/investigation_context'; -import { useFetchEntities } from '../../../../hooks/use_fetch_entities'; - -export interface InvestigationContextualInsight { - key: string; - description: string; - data: unknown; -} - -export function AssistantHypothesis({ investigationId }: { investigationId: string }) { - const { alert } = useInvestigation(); - const { - dependencies: { - start: { - observabilityAIAssistant: { - ObservabilityAIAssistantContextualInsight, - getContextualInsightMessages, - }, - }, - }, - } = useKibana(); - const { data: entitiesData } = useFetchEntities({ - investigationId, - serviceName: alert?.['service.name'] ? `${alert?.['service.name']}` : undefined, - serviceEnvironment: alert?.['service.environment'] - ? `${alert?.['service.environment']}` - : undefined, - hostName: alert?.['host.name'] ? `${alert?.['host.name']}` : undefined, - containerId: alert?.['container.id'] ? `${alert?.['container.id']}` : undefined, - }); - - const getAlertContextMessages = useCallback(async () => { - if (!getContextualInsightMessages || !alert) { - return []; - } - - const entities = entitiesData?.entities ?? []; - - const entityContext = entities?.length - ? ` - Alerts can optionally be associated with entities. Entities can be services, hosts, containers, or other resources. Entities can have metrics associated with them. - - The alert that triggered this investigation is associated with the following entities: ${entities - .map((entity, index) => { - return dedent(` - ## Entity ${index + 1}: - ${formatEntityMetrics(entity)}; - `); - }) - .join('/n/n')}` - : ''; - - return getContextualInsightMessages({ - message: `I am investigating a failure in my system. I was made aware of the failure by an alert and I am trying to understand the root cause of the issue.`, - instructions: dedent( - `I'm an SRE. I am investigating a failure in my system. I was made aware of the failure via an alert. Your current task is to help me identify the root cause of the failure in my system. - - The rule that triggered the alert is a ${ - alert[ALERT_RULE_CATEGORY] - } rule. The alert started at ${alert[ALERT_START]}. The alert reason is ${ - alert[ALERT_REASON] - }. The rule parameters are ${JSON.stringify(ALERT_RULE_PARAMETERS)}. - - ${entityContext} - - Based on the alert details, suggest a root cause and next steps to mitigate the issue. - - I do not have the alert details or entity details in front of me, so be sure to repeat the alert reason (${ - alert[ALERT_REASON] - }), when the alert was triggered (${ - alert[ALERT_START] - }), and the entity metrics in your response. - - When displaying the entity metrics, please convert the metrics to a human-readable format. For example, convert "logRate" to "Log Rate" and "errorRate" to "Error Rate". - ` - ), - }); - }, [alert, getContextualInsightMessages, entitiesData?.entities]); - - if (!ObservabilityAIAssistantContextualInsight) { - return null; - } - - return alert && entitiesData ? ( - <ObservabilityAIAssistantContextualInsight - title={i18n.translate( - 'xpack.investigateApp.assistantHypothesis.observabilityAIAssistantContextualInsight.helpMeInvestigateThisLabel', - { defaultMessage: 'Help me investigate this failure' } - )} - messages={getAlertContextMessages} - /> - ) : null; -} -const formatEntityMetrics = (entity: EntityWithSource): string => { - const entityMetrics = Object.entries(entity.metrics) - .map(([key, value]) => `${key}: ${value}`) - .join(', '); - const entitySources = entity.sources.map((source) => source.dataStream).join(', '); - return dedent(` - Entity name: ${entity.display_name}; - Entity type: ${entity.type}; - Entity metrics: ${entityMetrics}; - Entity data streams: ${entitySources} - `); -}; diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/events_timeline.tsx b/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/events_timeline.tsx deleted file mode 100644 index 45b245f68b4b0..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/events_timeline.tsx +++ /dev/null @@ -1,114 +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 React, { useMemo, useRef } from 'react'; -import moment from 'moment'; - -import { Chart, Axis, AreaSeries, Position, ScaleType, Settings } from '@elastic/charts'; -import { useActiveCursor } from '@kbn/charts-plugin/public'; -import { EuiSkeletonText } from '@elastic/eui'; -import { getBrushData } from '@kbn/observability-utils-browser/chart/utils'; -import { AnnotationEvent } from './annotation_event'; -import { TIME_LINE_THEME } from './timeline_theme'; -import { useFetchEvents } from '../../../../hooks/use_fetch_events'; -import { useInvestigation } from '../../contexts/investigation_context'; -import { useKibana } from '../../../../hooks/use_kibana'; -import { AlertEvent } from './alert_event'; - -export const EventsTimeLine = () => { - const { dependencies } = useKibana(); - - const baseTheme = dependencies.start.charts.theme.useChartsBaseTheme(); - - const { globalParams, updateInvestigationParams } = useInvestigation(); - - const { data: events, isLoading } = useFetchEvents({ - rangeFrom: globalParams.timeRange.from, - rangeTo: globalParams.timeRange.to, - }); - - const chartRef = useRef(null); - const handleCursorUpdate = useActiveCursor(dependencies.start.charts.activeCursor, chartRef, { - isDateHistogram: true, - }); - - const data = useMemo(() => { - const points = [ - { x: moment(globalParams.timeRange.from).valueOf(), y: 0 }, - { x: moment(globalParams.timeRange.to).valueOf(), y: 0 }, - ]; - - // adding 100 fake points to the chart so the chart shows cursor on hover - for (let i = 0; i < 100; i++) { - const diff = - moment(globalParams.timeRange.to).valueOf() - moment(globalParams.timeRange.from).valueOf(); - points.push({ x: moment(globalParams.timeRange.from).valueOf() + (diff / 100) * i, y: 0 }); - } - return points; - }, [globalParams.timeRange.from, globalParams.timeRange.to]); - - if (isLoading) { - return <EuiSkeletonText />; - } - - const alertEvents = events?.filter((evt) => evt.eventType === 'alert'); - const annotations = events?.filter((evt) => evt.eventType === 'annotation'); - - return ( - <> - <Chart size={['100%', 100]} ref={chartRef}> - <Settings - xDomain={{ - min: moment(globalParams.timeRange.from).valueOf(), - max: moment(globalParams.timeRange.to).valueOf(), - }} - theme={TIME_LINE_THEME} - baseTheme={baseTheme} - onPointerUpdate={handleCursorUpdate} - externalPointerEvents={{ - tooltip: { visible: true }, - }} - onBrushEnd={(brush) => { - const { from, to } = getBrushData(brush); - updateInvestigationParams({ - timeRange: { from, to }, - }); - }} - /> - <Axis id="y" position={Position.Left} hide /> - <Axis - id="x" - position={Position.Bottom} - tickFormat={(d) => moment(d).format('LTS')} - style={{ - tickLine: { - visible: true, - strokeWidth: 1, - stroke: '#98A2B3', - }, - }} - /> - - {alertEvents?.map((event) => ( - <AlertEvent key={event.id} event={event} /> - ))} - - {annotations?.map((annotation) => ( - <AnnotationEvent key={annotation.id} event={annotation} /> - ))} - - <AreaSeries - id="Time" - xScaleType={ScaleType.Time} - xAccessor="x" - yAccessors={['y']} - data={data} - filterSeriesInTooltip={() => false} - /> - </Chart> - </> - ); -}; diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/grid_item/index.tsx b/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/grid_item/index.tsx deleted file mode 100644 index c43ae1ffaa04f..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/grid_item/index.tsx +++ /dev/null @@ -1,128 +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 { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiText } from '@elastic/eui'; -import { css } from '@emotion/css'; -import React from 'react'; -import { useTheme } from '../../../../hooks/use_theme'; -import { InvestigateTextButton } from '../../../../components/investigate_text_button'; - -export const GRID_ITEM_HEADER_HEIGHT = 40; - -interface GridItemProps { - id: string; - title: string; - children: React.ReactNode; - onCopy: () => void; - onDelete: () => void; - loading: boolean; -} - -const editTitleButtonClassName = `investigateGridItemTitleEditButton`; - -const titleContainerClassName = css` - overflow: hidden; -`; -const titleItemClassName = css` - max-width: 100%; - .euiText { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } -`; - -const panelContainerClassName = css` - overflow: clip; - overflow-clip-margin: 20px; -`; - -const panelClassName = css` - overflow-y: auto; -`; - -const panelContentClassName = css` - overflow-y: auto; - height: 100%; - > [data-shared-item] { - height: 100%; - } -`; - -export function GridItem({ id, title, children, onDelete, onCopy, loading }: GridItemProps) { - const theme = useTheme(); - - const headerClassName = css` - padding: 0 ${theme.size.s} 0 ${theme.size.s}}; -`; - - const containerClassName = css` - height: 100%; - max-width: 100%; - transition: opacity ${theme.animation.normal} ${theme.animation.resistance}; - overflow: auto; - - &:not(:hover) .${editTitleButtonClassName} { - opacity: 0; - } - `; - - return ( - <EuiPanel hasBorder hasShadow={false} className={panelClassName} paddingSize="none"> - <EuiFlexGroup - direction="column" - gutterSize="none" - className={containerClassName} - alignItems="stretch" - > - <EuiFlexItem grow={false}> - <EuiFlexGroup - direction="row" - gutterSize="none" - alignItems="center" - className={headerClassName} - > - <EuiFlexItem className={titleContainerClassName}> - <EuiText size="s" className={titleItemClassName}> - <h5>{title}</h5> - </EuiText> - </EuiFlexItem> - <EuiFlexItem grow={false} className="gridItemControls"> - <EuiFlexGroup - direction="row" - gutterSize="none" - alignItems="center" - justifyContent="flexEnd" - > - <EuiFlexItem grow={false}> - <InvestigateTextButton - iconType="copy" - onClick={() => { - onCopy(); - }} - disabled={loading} - /> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <InvestigateTextButton - iconType="trash" - onClick={() => { - onDelete(); - }} - disabled={loading} - /> - </EuiFlexItem> - </EuiFlexGroup> - </EuiFlexItem> - </EuiFlexGroup> - </EuiFlexItem> - <EuiFlexItem grow className={panelContainerClassName}> - <div className={panelContentClassName}>{children}</div> - </EuiFlexItem> - </EuiFlexGroup> - </EuiPanel> - ); -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_items/investigation_items.tsx b/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_items/investigation_items.tsx deleted file mode 100644 index bd03324a994ac..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_items/investigation_items.tsx +++ /dev/null @@ -1,56 +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 datemath from '@elastic/datemath'; -import { EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; -import React from 'react'; -import { EventsTimeLine } from '../events_timeline/events_timeline'; -import { useInvestigation } from '../../contexts/investigation_context'; -import { AddInvestigationItem } from '../add_investigation_item/add_investigation_item'; -import { InvestigationItemsList } from '../investigation_items_list/investigation_items_list'; -import { InvestigationSearchBar } from '../investigation_search_bar/investigation_search_bar'; -import { AssistantHypothesis } from '../assistant_hypothesis/assistant_hypothesis'; - -export function InvestigationItems() { - const { globalParams, updateInvestigationParams, investigation } = useInvestigation(); - - return ( - <> - <EuiFlexGroup direction="column" gutterSize="s"> - <InvestigationSearchBar - dateRangeFrom={globalParams.timeRange.from} - dateRangeTo={globalParams.timeRange.to} - onQuerySubmit={async ({ dateRange }) => { - const nextTimeRange = { - from: datemath.parse(dateRange.from)!.toISOString(), - to: datemath.parse(dateRange.to)!.toISOString(), - }; - - updateInvestigationParams({ timeRange: nextTimeRange }); - }} - /> - - <EuiFlexItem grow={false}> - <EventsTimeLine /> - </EuiFlexItem> - - {investigation?.id && ( - <EuiFlexItem grow={false}> - <AssistantHypothesis investigationId={investigation.id} /> - </EuiFlexItem> - )} - <EuiFlexItem grow={false}> - <InvestigationItemsList /> - </EuiFlexItem> - </EuiFlexGroup> - - <EuiSpacer size="m" /> - - <AddInvestigationItem /> - </> - ); -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_search_bar/investigation_search_bar.tsx b/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_search_bar/investigation_search_bar.tsx deleted file mode 100644 index a6ad73bc67d0d..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_search_bar/investigation_search_bar.tsx +++ /dev/null @@ -1,56 +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 { css } from '@emotion/css'; -import type { TimeRange } from '@kbn/es-query'; -import { SearchBar } from '@kbn/unified-search-plugin/public'; -import React from 'react'; -import { useKibana } from '../../../../hooks/use_kibana'; - -const parentClassName = css` - width: 100%; -`; - -interface Props { - dateRangeFrom?: string; - dateRangeTo?: string; - onQuerySubmit: (payload: { dateRange: TimeRange }, isUpdate?: boolean) => void; - onRefresh?: Required<React.ComponentProps<typeof SearchBar>>['onRefresh']; -} - -export function InvestigationSearchBar({ - dateRangeFrom, - dateRangeTo, - onQuerySubmit, - onRefresh, -}: Props) { - const { - dependencies: { - start: { unifiedSearch }, - }, - } = useKibana(); - - return ( - <div className={parentClassName}> - <unifiedSearch.ui.SearchBar - appName="investigate" - onQuerySubmit={({ dateRange }) => { - onQuerySubmit({ dateRange }); - }} - showQueryInput={false} - showFilterBar={false} - showQueryMenu={false} - showDatePicker - showSubmitButton={true} - dateRangeFrom={dateRangeFrom} - dateRangeTo={dateRangeTo} - onRefresh={onRefresh} - displayStyle="inPage" - disableQueryLanguageSwitcher - /> - </div> - ); -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/plugin.tsx b/x-pack/plugins/observability_solution/investigate_app/public/plugin.tsx deleted file mode 100644 index 5ec88f9d72468..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/plugin.tsx +++ /dev/null @@ -1,149 +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 { - AppMountParameters, - AppStatus, - CoreSetup, - CoreStart, - DEFAULT_APP_CATEGORIES, - Plugin, - PluginInitializerContext, -} from '@kbn/core/public'; -import { INVESTIGATE_APP_ID } from '@kbn/deeplinks-observability/constants'; -import { i18n } from '@kbn/i18n'; -import type { Logger } from '@kbn/logging'; -import { once } from 'lodash'; -import React from 'react'; -import ReactDOM from 'react-dom'; -import type { InvestigateAppServices } from './services/types'; -import type { - ConfigSchema, - InvestigateAppPublicSetup, - InvestigateAppPublicStart, - InvestigateAppSetupDependencies, - InvestigateAppStartDependencies, -} from './types'; - -const getCreateEsqlService = once(() => import('./services/esql').then((m) => m.createEsqlService)); - -export class InvestigateAppPlugin - implements - Plugin< - InvestigateAppPublicSetup, - InvestigateAppPublicStart, - InvestigateAppSetupDependencies, - InvestigateAppStartDependencies - > -{ - logger: Logger; - config: ConfigSchema; - - constructor(context: PluginInitializerContext<ConfigSchema>) { - this.logger = context.logger.get(); - this.config = context.config.get(); - } - - setup( - coreSetup: CoreSetup<InvestigateAppStartDependencies, InvestigateAppPublicStart>, - pluginsSetup: InvestigateAppSetupDependencies - ): InvestigateAppPublicSetup { - coreSetup.application.register({ - id: INVESTIGATE_APP_ID, - title: i18n.translate('xpack.investigateApp.appTitle', { - defaultMessage: 'Investigations', - }), - euiIconType: 'logoObservability', - appRoute: '/app/investigations', - category: DEFAULT_APP_CATEGORIES.observability, - status: this.config.enabled ? AppStatus.accessible : AppStatus.inaccessible, - visibleIn: [], - deepLinks: [ - { - id: 'investigations', - title: i18n.translate('xpack.investigateApp.investigationsDeepLinkTitle', { - defaultMessage: 'All investigations', - }), - path: '/', - }, - { - id: 'investigationDetails', - title: i18n.translate('xpack.investigateApp.newInvestigateDeepLinkTitle', { - defaultMessage: 'New investigation', - }), - path: '/new', - }, - ], - mount: async (appMountParameters: AppMountParameters<unknown>) => { - // Load application bundle and Get start services - const [{ Application }, [coreStart, pluginsStart], createEsqlService] = await Promise.all([ - import('./application'), - coreSetup.getStartServices(), - getCreateEsqlService(), - ]); - - const services: InvestigateAppServices = { - ...coreStart, - esql: createEsqlService({ - data: pluginsStart.data, - dataViews: pluginsStart.dataViews, - lens: pluginsStart.lens, - }), - charts: pluginsStart.charts, - }; - - ReactDOM.render( - <Application - coreStart={coreStart} - history={appMountParameters.history} - pluginsStart={pluginsStart} - theme$={appMountParameters.theme$} - services={services} - />, - appMountParameters.element - ); - - return () => { - ReactDOM.unmountComponentAtNode(appMountParameters.element); - }; - }, - }); - - const pluginsStartPromise = coreSetup - .getStartServices() - .then(([, pluginsStart]) => pluginsStart); - - Promise.all([ - pluginsStartPromise, - import('./items/register_items').then((m) => m.registerItems), - getCreateEsqlService(), - ]).then(([pluginsStart, registerItems, createEsqlService]) => { - registerItems({ - dependencies: { - setup: pluginsSetup, - start: pluginsStart, - }, - services: { - esql: createEsqlService({ - data: pluginsStart.data, - dataViews: pluginsStart.dataViews, - lens: pluginsStart.lens, - }), - charts: pluginsStart.charts, - }, - }); - }); - - return {}; - } - - start( - coreStart: CoreStart, - pluginsStart: InvestigateAppStartDependencies - ): InvestigateAppPublicStart { - return {}; - } -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/services/types.ts b/x-pack/plugins/observability_solution/investigate_app/public/services/types.ts deleted file mode 100644 index 257ed5a7aeaca..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/services/types.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ChartsPluginStart } from '@kbn/charts-plugin/public'; -import type { EsqlService } from './esql'; - -export interface InvestigateAppServices { - esql: EsqlService; - charts: ChartsPluginStart; -} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/types.ts b/x-pack/plugins/observability_solution/investigate_app/public/types.ts deleted file mode 100644 index a2d7b5227a201..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/public/types.ts +++ /dev/null @@ -1,75 +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 { - ObservabilityAIAssistantPublicSetup, - ObservabilityAIAssistantPublicStart, -} from '@kbn/observability-ai-assistant-plugin/public'; -import { ChartsPluginStart } from '@kbn/charts-plugin/public'; -import type { ContentManagementPublicStart } from '@kbn/content-management-plugin/public'; -import type { DataPublicPluginSetup, DataPublicPluginStart } from '@kbn/data-plugin/public'; -import type { - DataViewsPublicPluginSetup, - DataViewsPublicPluginStart, -} from '@kbn/data-views-plugin/public'; -import type { - DatasetQualityPluginSetup, - DatasetQualityPluginStart, -} from '@kbn/dataset-quality-plugin/public'; -import type { EmbeddableSetup, EmbeddableStart } from '@kbn/embeddable-plugin/public'; -import type { - InvestigatePublicSetup, - InvestigatePublicStart, -} from '@kbn/investigate-plugin/public'; -import type { LensPublicSetup, LensPublicStart } from '@kbn/lens-plugin/public'; -import type { - ObservabilitySharedPluginSetup, - ObservabilitySharedPluginStart, -} from '@kbn/observability-shared-plugin/public'; -import type { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/public'; -import type { UiActionsSetup, UiActionsStart } from '@kbn/ui-actions-plugin/public'; -import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; - -/* eslint-disable @typescript-eslint/no-empty-interface*/ - -export interface ConfigSchema { - enabled: boolean; -} - -export interface InvestigateAppSetupDependencies { - investigate: InvestigatePublicSetup; - observabilityShared: ObservabilitySharedPluginSetup; - observabilityAIAssistant: ObservabilityAIAssistantPublicSetup; - lens: LensPublicSetup; - dataViews: DataViewsPublicPluginSetup; - data: DataPublicPluginSetup; - embeddable: EmbeddableSetup; - contentManagement: {}; - datasetQuality: DatasetQualityPluginSetup; - unifiedSearch: {}; - uiActions: UiActionsSetup; - security: SecurityPluginSetup; -} - -export interface InvestigateAppStartDependencies { - investigate: InvestigatePublicStart; - observabilityShared: ObservabilitySharedPluginStart; - observabilityAIAssistant: ObservabilityAIAssistantPublicStart; - lens: LensPublicStart; - dataViews: DataViewsPublicPluginStart; - data: DataPublicPluginStart; - embeddable: EmbeddableStart; - contentManagement: ContentManagementPublicStart; - datasetQuality: DatasetQualityPluginStart; - unifiedSearch: UnifiedSearchPublicPluginStart; - uiActions: UiActionsStart; - security: SecurityPluginStart; - charts: ChartsPluginStart; -} - -export interface InvestigateAppPublicSetup {} - -export interface InvestigateAppPublicStart {} diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_events.ts b/x-pack/plugins/observability_solution/investigate_app/server/services/get_events.ts deleted file mode 100644 index 53f42f4c6c057..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/server/services/get_events.ts +++ /dev/null @@ -1,105 +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 datemath from '@elastic/datemath'; -import { - GetEventsParams, - GetEventsResponse, - getEventsResponseSchema, -} from '@kbn/investigation-shared'; -import { ScopedAnnotationsClient } from '@kbn/observability-plugin/server'; -import { - ALERT_REASON, - ALERT_RULE_CATEGORY, - ALERT_START, - ALERT_STATUS, - ALERT_UUID, -} from '@kbn/rule-data-utils'; -import { AlertsClient } from './get_alerts_client'; -import { rangeQuery } from '../lib/queries'; - -export async function getAnnotationEvents( - params: GetEventsParams, - annotationsClient: ScopedAnnotationsClient -): Promise<GetEventsResponse> { - const response = await annotationsClient.find({ - start: params?.rangeFrom, - end: params?.rangeTo, - filter: params?.filter, - size: 100, - }); - - // we will return only "point_in_time" annotations - const events = response.items - .filter((item) => !item.event?.end) - .map((item) => { - const hostName = item.host?.name; - const serviceName = item.service?.name; - const serviceVersion = item.service?.version; - const sloId = item.slo?.id; - const sloInstanceId = item.slo?.instanceId; - - return { - id: item.id, - title: item.annotation.title, - description: item.message, - timestamp: new Date(item['@timestamp']).getTime(), - eventType: 'annotation', - annotationType: item.annotation.type, - source: { - ...(hostName ? { 'host.name': hostName } : undefined), - ...(serviceName ? { 'service.name': serviceName } : undefined), - ...(serviceVersion ? { 'service.version': serviceVersion } : undefined), - ...(sloId ? { 'slo.id': sloId } : undefined), - ...(sloInstanceId ? { 'slo.instanceId': sloInstanceId } : undefined), - }, - }; - }); - - return getEventsResponseSchema.parse(events); -} - -export async function getAlertEvents( - params: GetEventsParams, - alertsClient: AlertsClient -): Promise<GetEventsResponse> { - const startInMs = datemath.parse(params?.rangeFrom ?? 'now-15m')!.valueOf(); - const endInMs = datemath.parse(params?.rangeTo ?? 'now')!.valueOf(); - const filterJSON = params?.filter ? JSON.parse(params.filter) : {}; - - const body = { - size: 100, - track_total_hits: false, - query: { - bool: { - filter: [ - ...rangeQuery(startInMs, endInMs, ALERT_START), - ...Object.keys(filterJSON).map((filterKey) => ({ - term: { [filterKey]: filterJSON[filterKey] }, - })), - ], - }, - }, - }; - - const response = await alertsClient.search(body); - - const events = response.hits.hits.map((hit) => { - const _source = hit._source; - - return { - id: _source[ALERT_UUID], - title: `${_source[ALERT_RULE_CATEGORY]} breached`, - description: _source[ALERT_REASON], - timestamp: new Date(_source[ALERT_START] as string).getTime(), - eventType: 'alert', - alertStatus: _source[ALERT_STATUS], - }; - }); - - return getEventsResponseSchema.parse(events); -} diff --git a/x-pack/plugins/observability_solution/investigate_app/server/types.ts b/x-pack/plugins/observability_solution/investigate_app/server/types.ts deleted file mode 100644 index 8803221000d5b..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/server/types.ts +++ /dev/null @@ -1,31 +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 { ObservabilityPluginSetup } from '@kbn/observability-plugin/server'; -import { - RuleRegistryPluginSetupContract, - RuleRegistryPluginStartContract, -} from '@kbn/rule-registry-plugin/server'; -import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; - -/* eslint-disable @typescript-eslint/no-empty-interface*/ - -export interface ConfigSchema {} - -export interface InvestigateAppSetupDependencies { - observability: ObservabilityPluginSetup; - ruleRegistry: RuleRegistryPluginSetupContract; - usageCollection: UsageCollectionSetup; -} - -export interface InvestigateAppStartDependencies { - ruleRegistry: RuleRegistryPluginStartContract; -} - -export interface InvestigateAppServerSetup {} - -export interface InvestigateAppServerStart {} diff --git a/x-pack/plugins/observability_solution/investigate_app/tsconfig.json b/x-pack/plugins/observability_solution/investigate_app/tsconfig.json deleted file mode 100644 index bc67b591a57b8..0000000000000 --- a/x-pack/plugins/observability_solution/investigate_app/tsconfig.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "../../../typings/**/*", - "common/**/*", - "public/**/*", - "typings/**/*", - "public/**/*.json", - "server/**/*", - ".storybook/**/*" - ], - "exclude": [ - "target/**/*", - ".storybook/**/*.js" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/react-kibana-context-theme", - "@kbn/shared-ux-link-redirect-app", - "@kbn/kibana-react-plugin", - "@kbn/i18n", - "@kbn/embeddable-plugin", - "@kbn/observability-ai-assistant-plugin", - "@kbn/lens-plugin", - "@kbn/esql", - "@kbn/esql-utils", - "@kbn/data-plugin", - "@kbn/es-types", - "@kbn/field-types", - "@kbn/expressions-plugin", - "@kbn/deeplinks-observability", - "@kbn/logging", - "@kbn/data-views-plugin", - "@kbn/observability-shared-plugin", - "@kbn/config-schema", - "@kbn/investigate-plugin", - "@kbn/dataset-quality-plugin", - "@kbn/utility-types-jest", - "@kbn/content-management-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/visualization-utils", - "@kbn/unified-search-plugin", - "@kbn/es-query", - "@kbn/server-route-repository", - "@kbn/security-plugin", - "@kbn/ui-actions-plugin", - "@kbn/server-route-repository-utils", - "@kbn/core-saved-objects-server", - "@kbn/rule-registry-plugin", - "@kbn/shared-ux-router", - "@kbn/investigation-shared", - "@kbn/core-security-common", - "@kbn/saved-objects-finder-plugin", - "@kbn/presentation-containers", - "@kbn/lens-embeddable-utils", - "@kbn/i18n-react", - "@kbn/zod", - "@kbn/observability-plugin", - "@kbn/licensing-plugin", - "@kbn/rule-data-utils", - "@kbn/entities-schema", - "@kbn/core-elasticsearch-server", - "@kbn/calculate-auto", - "@kbn/ml-random-sampler-utils", - "@kbn/charts-plugin", - "@kbn/observability-utils-browser", - "@kbn/usage-collection-plugin", - "@kbn/inference-common", - ], -} diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/data_view_menu_item.tsx b/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/data_view_menu_item.tsx index 6c16ec511eb52..ec5c1aab89185 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/data_view_menu_item.tsx +++ b/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/data_view_menu_item.tsx @@ -6,9 +6,8 @@ */ import React from 'react'; -import { EuiIcon, EuiToolTip } from '@elastic/eui'; +import { EuiIcon, EuiToolTip, useEuiTheme } from '@elastic/eui'; import { css } from '@emotion/react'; -import { euiThemeVars } from '@kbn/ui-theme'; import { DataViewDescriptor } from '../../../../common/data_views/models/data_view_descriptor'; import { openDiscoverLabel } from '../constants'; @@ -17,18 +16,22 @@ interface DataViewMenuItemProps { isAvailable: boolean; } -const rightSpacing = css` - margin-right: ${euiThemeVars.euiSizeS}; -`; - export const DataViewMenuItem = ({ dataView, isAvailable }: DataViewMenuItemProps) => { + const { euiTheme } = useEuiTheme(); + if (isAvailable) { return <span>{dataView.name}</span>; } return ( <> - <span css={rightSpacing}>{dataView.name}</span> + <span + css={css` + margin-right: ${euiTheme.size.s}; + `} + > + {dataView.name} + </span> <EuiToolTip content={openDiscoverLabel}> <EuiIcon type="popout" color="subdued" /> </EuiToolTip> diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/selector_footer.tsx b/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/selector_footer.tsx index fd1ae95770506..40c88a7453feb 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/selector_footer.tsx +++ b/x-pack/plugins/observability_solution/logs_explorer/public/components/data_source_selector/sub_components/selector_footer.tsx @@ -57,7 +57,7 @@ export const ESQLButton = (props: DiscoverEsqlUrlProps) => { return ( <EuiFlexItem grow={false}> - <EuiButton {...linkProps} color="success" size="s" data-test-subj="esqlLink"> + <EuiButton {...linkProps} color="text" size="s" data-test-subj="esqlLink"> {tryEsql} </EuiButton> </EuiFlexItem> diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/components/virtual_columns/column_tooltips/field_with_token.tsx b/x-pack/plugins/observability_solution/logs_explorer/public/components/virtual_columns/column_tooltips/field_with_token.tsx index 045dbc1205680..4b2fc981aeff8 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/components/virtual_columns/column_tooltips/field_with_token.tsx +++ b/x-pack/plugins/observability_solution/logs_explorer/public/components/virtual_columns/column_tooltips/field_with_token.tsx @@ -5,14 +5,9 @@ * 2.0. */ -import { EuiFlexGroup, EuiFlexItem, EuiText, EuiToken } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiText, EuiToken, useEuiTheme } from '@elastic/eui'; import React from 'react'; import { css } from '@emotion/react'; -import { euiThemeVars } from '@kbn/ui-theme'; - -const spacingXsCss = css` - margin-bottom: ${euiThemeVars.euiSizeXS}; -`; export const FieldWithToken = ({ field, @@ -21,8 +16,14 @@ export const FieldWithToken = ({ field: string; iconType?: string; }) => { + const { euiTheme } = useEuiTheme(); + return ( - <div css={spacingXsCss}> + <div + css={css` + margin-bottom: ${euiTheme.size.xs}; + `} + > <EuiFlexGroup responsive={false} alignItems="center" diff --git a/x-pack/plugins/observability_solution/logs_explorer/tsconfig.json b/x-pack/plugins/observability_solution/logs_explorer/tsconfig.json index 2274d2c533d35..b4376d2463c5c 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/tsconfig.json +++ b/x-pack/plugins/observability_solution/logs_explorer/tsconfig.json @@ -37,7 +37,6 @@ "@kbn/router-utils", "@kbn/share-plugin", "@kbn/shared-ux-utility", - "@kbn/ui-theme", "@kbn/unified-data-table", "@kbn/unified-field-list", "@kbn/unified-search-plugin", diff --git a/x-pack/plugins/observability_solution/logs_shared/emotion.d.ts b/x-pack/plugins/observability_solution/logs_shared/emotion.d.ts new file mode 100644 index 0000000000000..213178080e536 --- /dev/null +++ b/x-pack/plugins/observability_solution/logs_shared/emotion.d.ts @@ -0,0 +1,14 @@ +/* + * 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 '@emotion/react'; +import type { UseEuiTheme } from '@elastic/eui'; + +declare module '@emotion/react' { + // eslint-disable-next-line @typescript-eslint/no-empty-interface + export interface Theme extends UseEuiTheme {} +} diff --git a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/column_headers_wrapper.tsx b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/column_headers_wrapper.tsx index f3922abff9b5c..4d7ec0ac92ddc 100644 --- a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/column_headers_wrapper.tsx +++ b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/column_headers_wrapper.tsx @@ -5,26 +5,33 @@ * 2.0. */ -import { euiStyled } from '@kbn/kibana-react-plugin/common'; -import { transparentize } from 'polished'; +import { css } from '@emotion/react'; +import { useEuiTheme } from '@elastic/eui'; +import React from 'react'; import { ASSUMED_SCROLLBAR_WIDTH } from './vertical_scroll_panel'; -export const LogColumnHeadersWrapper = euiStyled.div.attrs((props) => ({ - role: props.role ?? 'row', -}))` - align-items: stretch; - display: flex; - flex-direction: row; - flex-wrap: nowrap; - justify-content: flex-start; - overflow: hidden; - padding-right: ${ASSUMED_SCROLLBAR_WIDTH}px; - border-bottom: ${(props) => props.theme.eui.euiBorderThin}; - box-shadow: 0 2px 2px -1px ${(props) => - transparentize(0.3, props.theme.eui.euiColorLightShade)}; - position: relative; - z-index: 1; - `; +export const LogColumnHeadersWrapper = ({ role = 'row', ...props }) => { + const { euiTheme } = useEuiTheme(); + return ( + <div + role={role} + css={css` + align-items: stretch; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: flex-start; + overflow: hidden; + padding-right: ${ASSUMED_SCROLLBAR_WIDTH}px; + border-bottom: ${euiTheme.border.thin}; + box-shadow: 0 2px 2px -1px ${euiTheme.colors.borderBaseSubdued}; + position: relative; + z-index: 1; + `} + {...props} + /> + ); +}; // eslint-disable-next-line import/no-default-export export default LogColumnHeadersWrapper; diff --git a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/highlighting.tsx b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/highlighting.tsx index e8ddd350927db..a9e3b1d0511ed 100644 --- a/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/highlighting.tsx +++ b/x-pack/plugins/observability_solution/logs_shared/public/components/logging/log_text_stream/highlighting.tsx @@ -7,33 +7,20 @@ import React from 'react'; -import { euiStyled } from '@kbn/kibana-react-plugin/common'; -import { chooseLightOrDarkColor, tintOrShade } from '../../../utils/styles'; +import styled from '@emotion/styled'; -export const ActiveHighlightMarker = euiStyled.mark` - color: ${(props) => - chooseLightOrDarkColor( - props.theme.eui.euiColorAccent, - props.theme.eui.euiColorEmptyShade, - props.theme.eui.euiColorDarkestShade - )}; - background-color: ${(props) => props.theme.eui.euiColorAccent}; - outline: 1px solid ${(props) => props.theme.eui.euiColorAccent}; - }; +export const ActiveHighlightMarker = styled.mark` + color: ${({ theme }) => theme.euiTheme.colors.textParagraph}; + background-color: ${({ theme }) => theme.euiTheme.colors.backgroundFilledAccent}; + outline: ${({ theme }) => + `${theme.euiTheme.border.width.thin} solid ${theme.euiTheme.colors.backgroundFilledAccent}`}; `; -export const HighlightMarker = euiStyled.mark` - color: ${(props) => - chooseLightOrDarkColor( - tintOrShade(props.theme.eui.euiTextColor, props.theme.eui.euiColorAccent, 0.7, 0.5), - props.theme.eui.euiColorEmptyShade, - props.theme.eui.euiColorDarkestShade - )}; - background-color: ${(props) => - tintOrShade(props.theme.eui.euiTextColor, props.theme.eui.euiColorAccent, 0.7, 0.5)}; - outline: 1px solid ${(props) => - tintOrShade(props.theme.eui.euiTextColor, props.theme.eui.euiColorAccent, 0.7, 0.5)}; - }; +export const HighlightMarker = styled.mark` + color: ${({ theme }) => theme.euiTheme.colors.textParagraph}; + background-color: ${({ theme }) => theme.euiTheme.colors.backgroundLightAccent}; + outline: ${({ theme }) => + `${theme.euiTheme.border.width.thin} solid ${theme.euiTheme.colors.backgroundLightAccent}`}; `; export const highlightFieldValue = ( diff --git a/x-pack/plugins/observability_solution/logs_shared/public/utils/styles.ts b/x-pack/plugins/observability_solution/logs_shared/public/utils/styles.ts deleted file mode 100644 index d0949b58bd575..0000000000000 --- a/x-pack/plugins/observability_solution/logs_shared/public/utils/styles.ts +++ /dev/null @@ -1,94 +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 { get } from 'lodash'; -import { getLuminance, parseToHsl, parseToRgb, rgba, shade, tint } from 'polished'; - -type PropReader = <Prop, Default = any>(props: object, defaultValue?: Default) => Prop; - -const asPropReader = (reader: string | string[] | PropReader) => - typeof reader === 'function' - ? reader - : <Props extends object, Prop extends keyof Props, Default>( - props: Props, - defaultValue?: Default - ) => get(props, reader as Prop, defaultValue); - -export const switchProp = Object.assign( - (propName: string | string[] | PropReader, options: Map<any, any> | object) => - (props: object) => { - const propValue = asPropReader(propName)(props, switchProp.default); - if (typeof propValue === 'undefined') { - return; - } - return options instanceof Map ? options.get(propValue) : get(options, propValue); - }, - { - default: Symbol('default'), - } -); - -export const ifProp = - <Pass, Fail>(propName: string | string[] | PropReader, pass: Pass, fail: Fail) => - (props: object) => - asPropReader(propName)(props) ? pass : fail; - -export const tintOrShade = ( - textColor: string, - color: string, - tintFraction: number, - shadeFraction: number -) => { - if (parseToHsl(textColor).lightness > 0.5) { - return shade(1 - shadeFraction, color); - } else { - return tint(1 - tintFraction, color); - } -}; - -export const getContrast = (color1: string, color2: string): number => { - const luminance1 = getLuminance(color1); - const luminance2 = getLuminance(color2); - - return parseFloat( - (luminance1 > luminance2 - ? (luminance1 + 0.05) / (luminance2 + 0.05) - : (luminance2 + 0.05) / (luminance1 + 0.05) - ).toFixed(2) - ); -}; - -export const chooseLightOrDarkColor = ( - backgroundColor: string, - lightColor: string, - darkColor: string -) => { - if (getContrast(backgroundColor, lightColor) > getContrast(backgroundColor, darkColor)) { - return lightColor; - } else { - return darkColor; - } -}; - -export const transparentize = (amount: number, color: string): string => { - if (color === 'transparent') { - return color; - } - - const parsedColor = parseToRgb(color); - const alpha: number = - 'alpha' in parsedColor && typeof parsedColor.alpha === 'number' ? parsedColor.alpha : 1; - const colorWithAlpha = { - ...parsedColor, - alpha: clampValue((alpha * 100 - amount * 100) / 100, 0, 1), - }; - - return rgba(colorWithAlpha); -}; - -export const clampValue = (value: number, minValue: number, maxValue: number) => - Math.max(minValue, Math.min(maxValue, value)); diff --git a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/highlights.ts b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/highlights.ts index e8019c58d6000..dedf3ced27f28 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/highlights.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/highlights.ts @@ -12,6 +12,7 @@ import { fold } from 'fp-ts/lib/Either'; import { identity } from 'fp-ts/lib/function'; import { schema } from '@kbn/config-schema'; +import { i18n } from '@kbn/i18n'; import { logEntriesV1 } from '../../../common/http_api'; import { throwErrors } from '../../../common/runtime_types'; @@ -33,6 +34,20 @@ export const initLogEntriesHighlightsRoute = ({ framework, logEntries }: LogsSha { version: '1', validate: { request: { body: escapeHatch } }, + options: { + deprecated: { + documentationUrl: '', + severity: 'warning', + message: i18n.translate( + 'xpack.logsShared.deprecations.postLogEntriesHighlightsRoute.message', + { + defaultMessage: + 'Given the deprecation of the LogStream feature, this API will not return reliable data in upcoming versions of Kibana.', + } + ), + reason: { type: 'deprecate' }, + }, + }, }, async (requestContext, request, response) => { const payload = pipe( diff --git a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary.ts b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary.ts index 2ac889ab9ffdf..68c9d5ea0e166 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary.ts @@ -12,6 +12,7 @@ import { fold } from 'fp-ts/lib/Either'; import { identity } from 'fp-ts/lib/function'; import { schema } from '@kbn/config-schema'; +import { i18n } from '@kbn/i18n'; import { logEntriesV1 } from '../../../common/http_api'; import { throwErrors } from '../../../common/runtime_types'; @@ -36,6 +37,20 @@ export const initLogEntriesSummaryRoute = ({ { version: '1', validate: { request: { body: escapeHatch } }, + options: { + deprecated: { + documentationUrl: '', + severity: 'warning', + message: i18n.translate( + 'xpack.logsShared.deprecations.postLogEntriesSummaryRoute.message', + { + defaultMessage: + 'Given the deprecation of the LogStream feature, this API will not return reliable data in upcoming versions of Kibana.', + } + ), + reason: { type: 'deprecate' }, + }, + }, }, async (requestContext, request, response) => { const payload = pipe( diff --git a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary_highlights.ts b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary_highlights.ts index b4093f1d6543b..b8f030b91b715 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary_highlights.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_entries/summary_highlights.ts @@ -12,6 +12,7 @@ import { fold } from 'fp-ts/lib/Either'; import { identity } from 'fp-ts/lib/function'; import { schema } from '@kbn/config-schema'; +import { i18n } from '@kbn/i18n'; import { logEntriesV1 } from '../../../common/http_api'; import { throwErrors } from '../../../common/runtime_types'; @@ -35,6 +36,20 @@ export const initLogEntriesSummaryHighlightsRoute = ({ { version: '1', validate: { request: { body: escapeHatch } }, + options: { + deprecated: { + documentationUrl: '', + severity: 'warning', + message: i18n.translate( + 'xpack.logsShared.deprecations.postLogEntriesSummaryHighlightsRoute.message', + { + defaultMessage: + 'Given the deprecation of the LogStream feature, this API will not return reliable data in upcoming versions of Kibana.', + } + ), + reason: { type: 'deprecate' }, + }, + }, }, async (requestContext, request, response) => { const payload = pipe( diff --git a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/get_log_view.ts b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/get_log_view.ts index 9370c18243b51..16ca40ac2d6d8 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/get_log_view.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/get_log_view.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { i18n } from '@kbn/i18n'; import { logViewsV1 } from '../../../common/http_api'; import { LOG_VIEW_URL } from '../../../common/http_api/log_views'; import { createValidationFunction } from '../../../common/runtime_types'; @@ -30,6 +31,17 @@ export const initGetLogViewRoute = ({ params: createValidationFunction(logViewsV1.getLogViewRequestParamsRT), }, }, + options: { + deprecated: { + documentationUrl: '', + severity: 'warning', + message: i18n.translate('xpack.logsShared.deprecations.getLogViewRoute.message', { + defaultMessage: + 'Given the deprecation of the LogStream feature, this API will not have any effect configuring upcoming versions of Kibana.', + }), + reason: { type: 'deprecate' }, + }, + }, }, async (_requestContext, request, response) => { const { logViewId } = request.params; diff --git a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/put_log_view.ts b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/put_log_view.ts index 95e37bff52f87..c2ba33867d067 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/put_log_view.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/routes/log_views/put_log_view.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { i18n } from '@kbn/i18n'; import { logViewsV1 } from '../../../common/http_api'; import { LOG_VIEW_URL } from '../../../common/http_api/log_views'; import { createValidationFunction } from '../../../common/runtime_types'; @@ -26,6 +27,17 @@ export const initPutLogViewRoute = ({ framework, getStartServices }: LogsSharedB body: createValidationFunction(logViewsV1.putLogViewRequestPayloadRT), }, }, + options: { + deprecated: { + documentationUrl: '', + severity: 'warning', + message: i18n.translate('xpack.logsShared.deprecations.putLogViewRoute.message', { + defaultMessage: + 'Given the deprecation of the LogStream feature, this API will not have any effect configuring upcoming versions of Kibana.', + }), + reason: { type: 'deprecate' }, + }, + }, }, async (_requestContext, request, response) => { const { logViewId } = request.params; diff --git a/x-pack/plugins/observability_solution/logs_shared/server/services/log_entries/log_entries_service.ts b/x-pack/plugins/observability_solution/logs_shared/server/services/log_entries/log_entries_service.ts index 61810c47ff8d2..a1cfab1c24eb1 100644 --- a/x-pack/plugins/observability_solution/logs_shared/server/services/log_entries/log_entries_service.ts +++ b/x-pack/plugins/observability_solution/logs_shared/server/services/log_entries/log_entries_service.ts @@ -22,10 +22,20 @@ export class LogEntriesService { setupDeps: LogEntriesServiceSetupDeps ) { void core.getStartServices().then(([, startDeps, selfStartDeps]) => { + /** + * @deprecated + * + * Given the deprecation of the LogStream feature, this API will not return reliable data in upcoming versions of Kibana. + */ setupDeps.data.search.registerSearchStrategy( LOG_ENTRIES_SEARCH_STRATEGY, logEntriesSearchStrategyProvider({ ...setupDeps, ...startDeps, ...selfStartDeps }) ); + /** + * @deprecated + * + * Given the deprecation of the LogStream feature, this API will not return reliable data in upcoming versions of Kibana. + */ setupDeps.data.search.registerSearchStrategy( LOG_ENTRY_SEARCH_STRATEGY, logEntrySearchStrategyProvider({ ...setupDeps, ...startDeps, ...selfStartDeps }) diff --git a/x-pack/plugins/observability_solution/logs_shared/tsconfig.json b/x-pack/plugins/observability_solution/logs_shared/tsconfig.json index acaed5073a176..de14d6ae57492 100644 --- a/x-pack/plugins/observability_solution/logs_shared/tsconfig.json +++ b/x-pack/plugins/observability_solution/logs_shared/tsconfig.json @@ -8,7 +8,8 @@ "common/**/*", "public/**/*", "server/**/*", - "types/**/*" + "types/**/*", + "emotion.d.ts" ], "exclude": ["target/**/*"], "kbn_references": [ diff --git a/x-pack/plugins/observability_solution/observability/dev_docs/feature_flags.md b/x-pack/plugins/observability_solution/observability/dev_docs/feature_flags.md deleted file mode 100644 index 56c0e46813827..0000000000000 --- a/x-pack/plugins/observability_solution/observability/dev_docs/feature_flags.md +++ /dev/null @@ -1,16 +0,0 @@ -## Feature flags and advanced settings - -To set up a flagged feature or other advanced setting, add the name of the feature key (`observability:myFeature`) to [common/ui_settings_keys.ts](../common/ui_settings_keys.ts) and the feature parameters to [server/ui_settings.ts](../server/ui_settings.ts). - -Test for the feature like: - -```js -import { myFeatureEnabled } from '../ui_settings_keys'; -if (core.uiSettings.get(myFeatureEnabled)) { - doStuff(); -} -``` - -In order for telemetry to be collected, the keys and types need to be added in [src/plugins/kibana_usage_collection/server/collectors/management/schema.ts](../../../../src/plugins/kibana_usage_collection/server/collectors/management/schema.ts) and [src/plugins/kibana_usage_collection/server/collectors/management/types.ts](../../../../src/plugins/kibana_usage_collection/server/collectors/management/types.ts). - -Settings can be managed in Kibana under Stack Management > Advanced Settings > Observability. diff --git a/x-pack/plugins/observability_solution/observability/jest.config.js b/x-pack/plugins/observability_solution/observability/jest.config.js deleted file mode 100644 index 77d49b80d8bf5..0000000000000 --- a/x-pack/plugins/observability_solution/observability/jest.config.js +++ /dev/null @@ -1,21 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/plugins/observability_solution/observability'], - setupFiles: [ - '<rootDir>/x-pack/plugins/observability_solution/observability/.storybook/jest_setup.js', - ], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/observability_solution/observability', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/observability/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/observability_solution/observability/public/index.ts b/x-pack/plugins/observability_solution/observability/public/index.ts deleted file mode 100644 index 6230f5411b543..0000000000000 --- a/x-pack/plugins/observability_solution/observability/public/index.ts +++ /dev/null @@ -1,103 +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. - */ - -// TODO: https://github.com/elastic/kibana/issues/110905 -/* eslint-disable @kbn/eslint/no_export_all */ - -import { PluginInitializer, PluginInitializerContext } from '@kbn/core/public'; -import { lazy } from 'react'; -import { - Plugin, - ObservabilityPublicPluginsStart, - ObservabilityPublicPluginsSetup, - ObservabilityPublicStart, - ObservabilityPublicSetup, -} from './plugin'; -export type { - ObservabilityPublicSetup, - ObservabilityPublicStart, - ObservabilityPublicPluginsSetup, - ObservabilityPublicPluginsStart, -}; -export const plugin: PluginInitializer< - ObservabilityPublicSetup, - ObservabilityPublicStart, - ObservabilityPublicPluginsSetup, - ObservabilityPublicPluginsStart -> = (initializerContext: PluginInitializerContext) => { - return new Plugin(initializerContext); -}; - -export type { ConfigSchema } from './plugin'; - -export { - enableLegacyUptimeApp, - syntheticsThrottlingEnabled, - enableInspectEsQueries, - enableComparisonByDefault, - apmServiceGroupMaxNumberOfServices, - enableAgentExplorerView, - apmEnableTableSearchBar, -} from '../common/ui_settings_keys'; -export { - alertsLocatorID, - ruleDetailsLocatorID, - rulesLocatorID, - sloDetailsLocatorID, - sloEditLocatorID, - uptimeOverviewLocatorID, -} from '../common'; - -export type { RulesParams } from './locators/rules'; -export { getCoreVitalsComponent } from './pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy'; -export { ObservabilityAlertSearchBar } from './components/alert_search_bar/get_alert_search_bar_lazy'; -export { DatePicker } from './pages/overview/components/date_picker'; - -export const LazyAlertsFlyout = lazy(() => import('./components/alerts_flyout/alerts_flyout')); - -export * from './typings'; -import { TopAlert } from './typings/alerts'; -export type { TopAlert }; -import type { AlertDetailsAppSectionProps } from './pages/alert_details/types'; -export type { AlertDetailsAppSectionProps }; - -export { observabilityFeatureId, observabilityAppId } from '../common'; - -export { useFetchDataViews } from './hooks/use_fetch_data_views'; -export { useTimeBuckets } from './hooks/use_time_buckets'; -export { createUseRulesLink } from './hooks/create_use_rules_link'; -export { useSummaryTimeRange } from './hooks/use_summary_time_range'; - -export { getApmTraceUrl } from './utils/get_apm_trace_url'; -export { buildEsQuery } from './utils/build_es_query'; - -export type { - ObservabilityRuleTypeFormatter, - ObservabilityRuleTypeModel, - ObservabilityRuleTypeRegistry, -} from './rules/create_observability_rule_type_registry'; -export { createObservabilityRuleTypeRegistryMock } from './rules/observability_rule_type_registry_mock'; - -export { DatePickerContextProvider } from './context/date_picker_context/date_picker_context'; - -export { fromQuery, toQuery } from './utils/url'; -export { getAlertSummaryTimeRange } from './utils/alert_summary_widget'; -export { calculateTimeRangeBucketSize } from './pages/overview/helpers/calculate_bucket_size'; -export type { render } from './utils/test_helper'; - -export { convertTo } from '../common/utils/formatters/duration'; -export { formatAlertEvaluationValue } from './utils/format_alert_evaluation_value'; -export { - RuleFlyoutKueryBar, - AutocompleteField, - WithKueryAutocompletion, -} from './components/rule_kql_filter'; -export { useAnnotations } from './components/annotations/use_annotations'; -export { RuleConditionChart } from './components/rule_condition_chart'; -export { getGroupFilters } from '../common/custom_threshold_rule/helpers/get_group'; -export type { GenericAggType } from './components/rule_condition_chart/rule_condition_chart'; -export { Threshold } from './components/custom_threshold/components/threshold'; diff --git a/x-pack/plugins/observability_solution/observability/server/index.ts b/x-pack/plugins/observability_solution/observability/server/index.ts deleted file mode 100644 index ace13ca5ed66a..0000000000000 --- a/x-pack/plugins/observability_solution/observability/server/index.ts +++ /dev/null @@ -1,113 +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. - */ - -// TODO: https://github.com/elastic/kibana/issues/110905 -/* eslint-disable @kbn/eslint/no_export_all */ - -import { offeringBasedSchema, schema, TypeOf } from '@kbn/config-schema'; -import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; -import { DEFAULT_ANNOTATION_INDEX } from '../common/annotations'; -import type { ObservabilityPluginSetup } from './plugin'; -import { createOrUpdateIndex, Mappings } from './utils/create_or_update_index'; -import { createOrUpdateIndexTemplate } from './utils/create_or_update_index_template'; -import { ScopedAnnotationsClient } from './lib/annotations/bootstrap_annotations'; -import { CustomThresholdLocators } from './lib/rules/custom_threshold/custom_threshold_executor'; -import { - unwrapEsResponse, - WrappedElasticsearchClientError, -} from '../common/utils/unwrap_es_response'; - -export { - rangeQuery, - kqlQuery, - termQuery, - termsQuery, - wildcardQuery, - existsQuery, -} from './utils/queries'; -export { getParsedFilterQuery } from './utils/get_parsed_filtered_query'; -export { getInspectResponse } from '../common/utils/get_inspect_response'; - -export * from './types'; - -const configSchema = schema.object({ - annotations: schema.object({ - enabled: schema.boolean({ defaultValue: true }), - index: schema.string({ defaultValue: DEFAULT_ANNOTATION_INDEX }), - }), - unsafe: schema.object({ - alertDetails: schema.object({ - metrics: schema.object({ - enabled: schema.boolean({ defaultValue: false }), - }), - logs: schema.object({ - enabled: schema.boolean({ defaultValue: false }), - }), - uptime: schema.object({ - enabled: schema.boolean({ defaultValue: false }), - }), - observability: schema.object({ - enabled: schema.boolean({ defaultValue: false }), - }), - }), - thresholdRule: schema.object({ - enabled: offeringBasedSchema({ - serverless: schema.boolean({ defaultValue: false }), - traditional: schema.boolean({ defaultValue: false }), - }), - }), - ruleFormV2: schema.object({ - enabled: schema.boolean({ defaultValue: false }), - }), - }), - customThresholdRule: schema.object({ - groupByPageSize: schema.number({ defaultValue: 10_000 }), - }), - enabled: schema.boolean({ defaultValue: true }), - createO11yGenericFeatureId: schema.boolean({ defaultValue: false }), -}); - -export const config: PluginConfigDescriptor = { - exposeToBrowser: { - unsafe: true, - aiAssistant: { - enabled: true, - feedback: { - enabled: true, - }, - }, - }, - schema: configSchema, - deprecations: ({ unused }) => [ - unused('unsafe.thresholdRule.enabled', { level: 'warning' }), - unused('unsafe.alertDetails.logs.enabled', { level: 'warning' }), - unused('unsafe.alertDetails.metrics.enabled', { level: 'warning' }), - unused('unsafe.alertDetails.observability.enabled', { level: 'warning' }), - ], -}; - -export type ObservabilityConfig = TypeOf<typeof configSchema>; - -export const plugin = async (initContext: PluginInitializerContext) => { - const { ObservabilityPlugin } = await import('./plugin'); - return new ObservabilityPlugin(initContext); -}; - -export type { - Mappings, - ObservabilityPluginSetup, - ScopedAnnotationsClient, - CustomThresholdLocators, -}; -export { - createOrUpdateIndex, - createOrUpdateIndexTemplate, - unwrapEsResponse, - WrappedElasticsearchClientError, -}; - -export { uiSettings } from './ui_settings'; diff --git a/x-pack/plugins/observability_solution/observability/tsconfig.json b/x-pack/plugins/observability_solution/observability/tsconfig.json deleted file mode 100644 index 1d88901626da2..0000000000000 --- a/x-pack/plugins/observability_solution/observability/tsconfig.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "public/**/*", - "public/**/*.json", - "server/**/*", - "typings/**/*", - "../../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/rule-data-utils", - "@kbn/triggers-actions-ui-plugin", - "@kbn/i18n", - "@kbn/deeplinks-observability", - "@kbn/es-query", - "@kbn/observability-get-padded-alert-time-range-util", - "@kbn/share-plugin", - "@kbn/data-plugin", - "@kbn/alerting-comparators", - "@kbn/guided-onboarding", - "@kbn/rison", - "@kbn/kibana-utils-plugin", - "@kbn/spaces-plugin", - "@kbn/utility-types", - "@kbn/core-http-server", - "@kbn/core", - "@kbn/inspector-plugin", - "@kbn/shared-ux-page-kibana-template", - "@kbn/observability-ai-assistant-plugin", - "@kbn/shared-ux-router", - "@kbn/kibana-react-plugin", - "@kbn/react-kibana-context-render", - "@kbn/observability-shared-plugin", - "@kbn/react-kibana-context-theme", - "@kbn/shared-ux-link-redirect-app", - "@kbn/usage-collection-plugin", - "@kbn/cases-components", - "@kbn/cases-plugin", - "@kbn/stack-alerts-plugin", - "@kbn/core-ui-settings-browser-mocks", - "@kbn/alerts-ui-shared", - "@kbn/core-notifications-browser", - "@kbn/core-ui-settings-browser", - "@kbn/rule-registry-plugin", - "@kbn/alerts-grouping", - "@kbn/grouping", - "@kbn/data-views-plugin", - "@kbn/core-http-browser", - "@kbn/visualization-ui-components", - "@kbn/event-annotation-components", - "@kbn/slo-schema", - "@kbn/event-annotation-common", - "@kbn/react-kibana-mount", - "@kbn/i18n-react", - "@kbn/expression-metric-vis-plugin", - "@kbn/charts-plugin", - "@kbn/alerting-plugin", - "@kbn/aiops-log-rate-analysis", - "@kbn/aiops-plugin", - "@kbn/field-types", - "@kbn/test-jest-helpers", - "@kbn/discover-plugin", - "@kbn/embeddable-plugin", - "@kbn/lens-plugin", - "@kbn/ui-actions-plugin", - "@kbn/unified-search-plugin", - "@kbn/lens-embeddable-utils", - "@kbn/std", - "@kbn/actions-plugin", - "@kbn/licensing-plugin", - "@kbn/core-chrome-browser", - "@kbn/navigation-plugin", - "@kbn/observability-alert-details", - "@kbn/investigation-shared", - "@kbn/observability-alerting-rule-utils", - "@kbn/ui-theme", - "@kbn/core-application-common", - "@kbn/securitysolution-ecs", - "@kbn/alerts-as-data-utils", - "@kbn/datemath", - "@kbn/logs-shared-plugin", - "@kbn/exploratory-view-plugin", - "@kbn/core-capabilities-common", - "@kbn/content-management-plugin", - "@kbn/cloud-plugin", - "@kbn/data-view-editor-plugin", - "@kbn/field-formats-plugin", - "@kbn/home-plugin", - "@kbn/data-view-field-editor-plugin", - "@kbn/guided-onboarding-plugin", - "@kbn/investigate-plugin", - "@kbn/license-management-plugin", - "@kbn/presentation-util-plugin", - "@kbn/security-plugin", - "@kbn/serverless", - "@kbn/core-application-browser", - "@kbn/core-theme-browser", - "@kbn/config-schema", - "@kbn/securitysolution-io-ts-utils", - "@kbn/core-elasticsearch-server", - "@kbn/logging", - "@kbn/safer-lodash-set", - "@kbn/features-plugin", - "@kbn/files-plugin", - "@kbn/server-route-repository", - "@kbn/io-ts-utils", - "@kbn/core-ui-settings-server-mocks", - "@kbn/es-types", - "@kbn/logging-mocks", - "@kbn/response-ops-rule-form", - "@kbn/streams-plugin" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/jest.config.js b/x-pack/plugins/observability_solution/observability_ai_assistant/jest.config.js deleted file mode 100644 index b684a6126e537..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/jest.config.js +++ /dev/null @@ -1,25 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: [ - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant/public', - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant/common', - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant/server', - ], - setupFiles: [ - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant/.storybook/jest_setup.js', - ], - collectCoverage: true, - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant/{common,public,server}/**/*.{js,ts,tsx}', - ], - - coverageReporters: ['html'], -}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx deleted file mode 100644 index 1ad8cd4d476c3..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/public/components/assistant_avatar.tsx +++ /dev/null @@ -1,48 +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 { useEuiTheme } from '@elastic/eui'; -import React, { ReactNode } from 'react'; - -export interface AssistantAvatarProps { - size?: keyof typeof sizeMap; - children?: ReactNode; - css?: React.SVGProps<SVGElement>['css']; - className?: string; -} - -export const sizeMap = { - xl: 64, - l: 48, - m: 32, - s: 24, - xs: 16, -}; - -export function AssistantAvatar({ size = 's', css, className }: AssistantAvatarProps) { - const { euiTheme } = useEuiTheme(); - const sizePx = sizeMap[size]; - - return ( - <svg - xmlns="http://www.w3.org/2000/svg" - width={sizePx} - height={sizePx} - viewBox="0 0 64 64" - fill="none" - css={css} - className={className} - > - <path fill="#F04E98" d="M36 28h24v36H36V28Z" /> - <path fill="#00BFB3" d="M4 46c0-9.941 8.059-18 18-18h6v36h-6c-9.941 0-18-8.059-18-18Z" /> - <path - fill={euiTheme.colors.textParagraph} - d="M60 12c0 6.627-5.373 12-12 12s-12-5.373-12-12S41.373 0 48 0s12 5.373 12 12Z" - /> - <path fill="#FA744E" d="M6 23C6 10.85 15.85 1 28 1v22H6Z" /> - </svg> - ); -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/index.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/index.ts deleted file mode 100644 index ce4c8e59fbae2..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/functions/index.ts +++ /dev/null @@ -1,153 +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 dedent from 'dedent'; -import { CONTEXT_FUNCTION_NAME, registerContextFunction } from './context'; -import { registerSummarizationFunction, SUMMARIZE_FUNCTION_NAME } from './summarize'; -import type { RegistrationCallback } from '../service/types'; -import { registerElasticsearchFunction } from './elasticsearch'; -import { GET_DATASET_INFO_FUNCTION_NAME, registerGetDatasetInfoFunction } from './get_dataset_info'; -import { registerKibanaFunction } from './kibana'; -import { registerExecuteConnectorFunction } from './execute_connector'; -import { GET_DATA_ON_SCREEN_FUNCTION_NAME } from '../service/chat_function_client'; - -// cannot be imported from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts due to circular dependency -export const QUERY_FUNCTION_NAME = 'query'; - -export type FunctionRegistrationParameters = Omit< - Parameters<RegistrationCallback>[0], - 'registerContext' | 'hasFunction' ->; - -export const registerFunctions: RegistrationCallback = async ({ - client, - functions, - resources, - signal, - scopes, -}) => { - const registrationParameters: FunctionRegistrationParameters = { - client, - functions, - resources, - signal, - scopes, - }; - - const isServerless = !!resources.plugins.serverless; - if (scopes.includes('observability')) { - functions.registerInstruction(`You are a helpful assistant for Elastic Observability. Your goal is to help the Elastic Observability users to quickly assess what is happening in their observed systems. You can help them visualise and analyze data, investigate their systems, perform root cause analysis or identify optimisation opportunities. - - It's very important to not assume what the user is meaning. Ask them for clarification if needed. - - If you are unsure about which function should be used and with what arguments, ask the user for clarification or confirmation. - - In KQL ("kqlFilter")) escaping happens with double quotes, not single quotes. Some characters that need escaping are: ':()\\\ - /\". Always put a field value in double quotes. Best: service.name:\"opbeans-go\". Wrong: service.name:opbeans-go. This is very important! - - You can use Github-flavored Markdown in your responses. If a function returns an array, consider using a Markdown table to format the response. - - Note that ES|QL (the Elasticsearch Query Language which is a new piped language) is the preferred query language. - - If you want to call a function or tool, only call it a single time per message. Wait until the function has been executed and its results - returned to you, before executing the same tool or another tool again if needed. - - DO NOT UNDER ANY CIRCUMSTANCES USE ES|QL syntax (\`service.name == "foo"\`) with "kqlFilter" (\`service.name:"foo"\`). - - The user is able to change the language which they want you to reply in on the settings page of the AI Assistant for Observability and Search, which can be found in the ${ - isServerless ? `Project settings.` : `Stack Management app under the option AI Assistants` - }. - If the user asks how to change the language, reply in the same language the user asked in.`); - } - - if (scopes.length === 0 || (scopes.length === 1 && scopes[0] === 'all')) { - functions.registerInstruction( - `You are a helpful assistant for Elasticsearch. Your goal is to help Elasticsearch users accomplish tasks using Kibana and Elasticsearch. You can help them construct queries, index data, search data, use Elasticsearch APIs, generate sample data, visualise and analyze data. - - It's very important to not assume what the user means. Ask them for clarification if needed. - - If you are unsure about which function should be used and with what arguments, ask the user for clarification or confirmation. - - In KQL ("kqlFilter")) escaping happens with double quotes, not single quotes. Some characters that need escaping are: ':()\\\ - /\". Always put a field value in double quotes. Best: service.name:\"opbeans-go\". Wrong: service.name:opbeans-go. This is very important! - - You can use Github-flavored Markdown in your responses. If a function returns an array, consider using a Markdown table to format the response. - - If you want to call a function or tool, only call it a single time per message. Wait until the function has been executed and its results - returned to you, before executing the same tool or another tool again if needed. - - The user is able to change the language which they want you to reply in on the settings page of the AI Assistant for Observability and Search, which can be found in the ${ - isServerless ? `Project settings.` : `Stack Management app under the option AI Assistants` - }. - If the user asks how to change the language, reply in the same language the user asked in.` - ); - } - - const { ready: isKnowledgeBaseReady } = await client.getKnowledgeBaseStatus(); - - functions.registerInstruction(({ availableFunctionNames }) => { - const instructions: string[] = []; - - if ( - availableFunctionNames.includes(QUERY_FUNCTION_NAME) && - availableFunctionNames.includes(GET_DATASET_INFO_FUNCTION_NAME) - ) { - instructions.push(`You MUST use the "${GET_DATASET_INFO_FUNCTION_NAME}" ${ - functions.hasFunction('get_apm_dataset_info') ? 'or the get_apm_dataset_info' : '' - } function before calling the "${QUERY_FUNCTION_NAME}" or the "changes" functions. - - If a function requires an index, you MUST use the results from the dataset info functions.`); - } - - if (availableFunctionNames.includes(GET_DATA_ON_SCREEN_FUNCTION_NAME)) { - instructions.push(`You have access to data on the screen by calling the "${GET_DATA_ON_SCREEN_FUNCTION_NAME}" function. - Use it to help the user understand what they are looking at. A short summary of what they are looking at is available in the return of the "${CONTEXT_FUNCTION_NAME}" function. - Data that is compact enough automatically gets included in the response for the "${CONTEXT_FUNCTION_NAME}" function.`); - } - - if (isKnowledgeBaseReady) { - if (availableFunctionNames.includes(SUMMARIZE_FUNCTION_NAME)) { - instructions.push(`You can use the "${SUMMARIZE_FUNCTION_NAME}" function to store new information you have learned in a knowledge database. - Only use this function when the user asks for it. - All summaries MUST be created in English, even if the conversation was carried out in a different language.`); - } - - if (availableFunctionNames.includes(CONTEXT_FUNCTION_NAME)) { - instructions.push( - `Additionally, you can use the "${CONTEXT_FUNCTION_NAME}" function to retrieve relevant information from the knowledge database.` - ); - } - } else { - instructions.push( - `You do not have a working memory. If the user expects you to remember the previous conversations, tell them they can set up the knowledge base.` - ); - } - return instructions.map((instruction) => dedent(instruction)); - }); - - if (isKnowledgeBaseReady) { - registerSummarizationFunction(registrationParameters); - } - - registerContextFunction({ ...registrationParameters, isKnowledgeBaseReady }); - - registerElasticsearchFunction(registrationParameters); - const request = registrationParameters.resources.request; - - if ('id' in request) { - registerKibanaFunction({ - ...registrationParameters, - resources: { - ...registrationParameters.resources, - request, - }, - }); - } - registerGetDatasetInfoFunction(registrationParameters); - - registerExecuteConnectorFunction(registrationParameters); -}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/index.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/index.ts deleted file mode 100644 index 0ad41969cedc2..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/index.ts +++ /dev/null @@ -1,57 +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 { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; - -import type { ObservabilityAIAssistantConfig } from './config'; - -export type { ObservabilityAIAssistantServerRouteRepository } from './routes/get_global_observability_ai_assistant_route_repository'; - -import { config as configSchema } from './config'; -export type { RegistrationCallback } from './service/types'; -export type { - ObservabilityAIAssistantServerStart, - ObservabilityAIAssistantServerSetup, -} from './types'; - -export { - aiAssistantLogsIndexPattern, - aiAssistantSimulatedFunctionCalling, - aiAssistantSearchConnectorIndexPattern, -} from '../common'; - -export { streamIntoObservable } from './service/util/stream_into_observable'; - -export const config: PluginConfigDescriptor<ObservabilityAIAssistantConfig> = { - deprecations: ({ unusedFromRoot }) => [ - unusedFromRoot('xpack.observability.aiAssistant.enabled', { - level: 'warning', - }), - unusedFromRoot('xpack.observability.aiAssistant.provider.azureOpenAI.deploymentId', { - level: 'warning', - }), - unusedFromRoot('xpack.observability.aiAssistant.provider.azureOpenAI.resourceName', { - level: 'warning', - }), - unusedFromRoot('xpack.observability.aiAssistant.provider.azureOpenAI.apiKey', { - level: 'warning', - }), - unusedFromRoot('xpack.observability.aiAssistant.provider.openAI.apiKey', { - level: 'warning', - }), - unusedFromRoot('xpack.observability.aiAssistant.provider.openAI.model', { - level: 'warning', - }), - ], - exposeToBrowser: { scope: true }, - schema: configSchema, -}; - -export const plugin = async (ctx: PluginInitializerContext<ObservabilityAIAssistantConfig>) => { - const { ObservabilityAIAssistantPlugin } = await import('./plugin'); - return new ObservabilityAIAssistantPlugin(ctx); -}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/knowledge_base/route.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/knowledge_base/route.ts deleted file mode 100644 index 4ff94393bc525..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/routes/knowledge_base/route.ts +++ /dev/null @@ -1,331 +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 pLimit from 'p-limit'; -import { notImplemented } from '@hapi/boom'; -import { nonEmptyStringRt, toBooleanRt } from '@kbn/io-ts-utils'; -import * as t from 'io-ts'; -import { - InferenceInferenceEndpointInfo, - MlDeploymentAllocationState, - MlDeploymentState, -} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import moment from 'moment'; -import { createObservabilityAIAssistantServerRoute } from '../create_observability_ai_assistant_server_route'; -import { Instruction, KnowledgeBaseEntry, KnowledgeBaseEntryRole } from '../../../common/types'; - -const getKnowledgeBaseStatus = createObservabilityAIAssistantServerRoute({ - endpoint: 'GET /internal/observability_ai_assistant/kb/status', - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async ({ - service, - request, - }): Promise<{ - errorMessage?: string; - ready: boolean; - enabled: boolean; - endpoint?: Partial<InferenceInferenceEndpointInfo>; - model_stats?: { - deployment_state: MlDeploymentState | undefined; - allocation_state: MlDeploymentAllocationState | undefined; - }; - }> => { - const client = await service.getClient({ request }); - - if (!client) { - throw notImplemented(); - } - - return client.getKnowledgeBaseStatus(); - }, -}); - -const setupKnowledgeBase = createObservabilityAIAssistantServerRoute({ - endpoint: 'POST /internal/observability_ai_assistant/kb/setup', - params: t.partial({ - query: t.partial({ - model_id: t.string, - }), - }), - options: { - timeout: { - idleSocket: moment.duration(20, 'minutes').asMilliseconds(), - }, - }, - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async (resources): Promise<InferenceInferenceEndpointInfo> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - const { model_id: modelId } = resources.params?.query ?? {}; - - return await client.setupKnowledgeBase(modelId); - }, -}); - -const resetKnowledgeBase = createObservabilityAIAssistantServerRoute({ - endpoint: 'POST /internal/observability_ai_assistant/kb/reset', - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async (resources): Promise<{ result: string }> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - await client.resetKnowledgeBase(); - - return { result: 'success' }; - }, -}); - -const semanticTextMigrationKnowledgeBase = createObservabilityAIAssistantServerRoute({ - endpoint: 'POST /internal/observability_ai_assistant/kb/semantic_text_migration', - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async (resources): Promise<void> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - return client.migrateKnowledgeBaseToSemanticText(); - }, -}); - -const getKnowledgeBaseUserInstructions = createObservabilityAIAssistantServerRoute({ - endpoint: 'GET /internal/observability_ai_assistant/kb/user_instructions', - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async ( - resources - ): Promise<{ - userInstructions: Array<Instruction & { public?: boolean }>; - }> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - return { - userInstructions: await client.getKnowledgeBaseUserInstructions(), - }; - }, -}); - -const saveKnowledgeBaseUserInstruction = createObservabilityAIAssistantServerRoute({ - endpoint: 'PUT /internal/observability_ai_assistant/kb/user_instructions', - params: t.type({ - body: t.type({ - id: t.string, - text: t.string, - public: toBooleanRt, - }), - }), - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async (resources): Promise<void> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - const { id, text, public: isPublic } = resources.params.body; - return client.addUserInstruction({ - entry: { id, text, public: isPublic }, - }); - }, -}); - -const getKnowledgeBaseEntries = createObservabilityAIAssistantServerRoute({ - endpoint: 'GET /internal/observability_ai_assistant/kb/entries', - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - params: t.type({ - query: t.type({ - query: t.string, - sortBy: t.string, - sortDirection: t.union([t.literal('asc'), t.literal('desc')]), - }), - }), - handler: async ( - resources - ): Promise<{ - entries: KnowledgeBaseEntry[]; - }> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - const { query, sortBy, sortDirection } = resources.params.query; - - return await client.getKnowledgeBaseEntries({ query, sortBy, sortDirection }); - }, -}); - -const knowledgeBaseEntryRt = t.intersection([ - t.type({ - id: t.string, - title: t.string, - text: nonEmptyStringRt, - }), - t.partial({ - confidence: t.union([t.literal('low'), t.literal('medium'), t.literal('high')]), - is_correction: toBooleanRt, - public: toBooleanRt, - labels: t.record(t.string, t.string), - role: t.union([ - t.literal(KnowledgeBaseEntryRole.AssistantSummarization), - t.literal(KnowledgeBaseEntryRole.UserEntry), - t.literal(KnowledgeBaseEntryRole.Elastic), - ]), - }), -]); - -const saveKnowledgeBaseEntry = createObservabilityAIAssistantServerRoute({ - endpoint: 'POST /internal/observability_ai_assistant/kb/entries/save', - params: t.type({ - body: knowledgeBaseEntryRt, - }), - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async (resources): Promise<void> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - const entry = resources.params.body; - return client.addKnowledgeBaseEntry({ - entry: { - confidence: 'high', - is_correction: false, - public: true, - labels: {}, - role: KnowledgeBaseEntryRole.UserEntry, - ...entry, - }, - }); - }, -}); - -const deleteKnowledgeBaseEntry = createObservabilityAIAssistantServerRoute({ - endpoint: 'DELETE /internal/observability_ai_assistant/kb/entries/{entryId}', - params: t.type({ - path: t.type({ - entryId: t.string, - }), - }), - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async (resources): Promise<void> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - return client.deleteKnowledgeBaseEntry(resources.params.path.entryId); - }, -}); - -const importKnowledgeBaseEntries = createObservabilityAIAssistantServerRoute({ - endpoint: 'POST /internal/observability_ai_assistant/kb/entries/import', - params: t.type({ - body: t.type({ - entries: t.array(knowledgeBaseEntryRt), - }), - }), - security: { - authz: { - requiredPrivileges: ['ai_assistant'], - }, - }, - handler: async (resources): Promise<void> => { - const client = await resources.service.getClient({ request: resources.request }); - - if (!client) { - throw notImplemented(); - } - - const { ready } = await client.getKnowledgeBaseStatus(); - if (!ready) { - throw new Error('Knowledge base is not ready'); - } - - const limiter = pLimit(5); - - const promises = resources.params.body.entries.map(async (entry) => { - return limiter(async () => { - return client.addKnowledgeBaseEntry({ - entry: { - confidence: 'high', - is_correction: false, - public: true, - labels: {}, - role: KnowledgeBaseEntryRole.UserEntry, - ...entry, - }, - }); - }); - }); - - await Promise.all(promises); - }, -}); - -export const knowledgeBaseRoutes = { - ...semanticTextMigrationKnowledgeBase, - ...setupKnowledgeBase, - ...resetKnowledgeBase, - ...getKnowledgeBaseStatus, - ...getKnowledgeBaseEntries, - ...saveKnowledgeBaseUserInstruction, - ...importKnowledgeBaseEntries, - ...getKnowledgeBaseUserInstructions, - ...saveKnowledgeBaseEntry, - ...deleteKnowledgeBaseEntry, -}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.test.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.test.ts deleted file mode 100644 index 89e7aa4cbb4de..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.test.ts +++ /dev/null @@ -1,1684 +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 { ActionsClient } from '@kbn/actions-plugin/server/actions_client'; -import type { CoreSetup, ElasticsearchClient, IUiSettingsClient, Logger } from '@kbn/core/server'; -import type { DeeplyMockedKeys } from '@kbn/utility-types-jest'; -import { waitFor } from '@testing-library/react'; -import { last, merge, repeat } from 'lodash'; -import { Subject, Observable } from 'rxjs'; -import { EventEmitter, type Readable } from 'stream'; -import { finished } from 'stream/promises'; -import type { InferenceClient } from '@kbn/inference-plugin/server'; -import { ChatCompletionEventType as InferenceChatCompletionEventType } from '@kbn/inference-common'; -import { ObservabilityAIAssistantClient } from '.'; -import { MessageRole, type Message } from '../../../common'; -import { - ChatCompletionChunkEvent, - MessageAddEvent, - StreamingChatResponseEventType, -} from '../../../common/conversation_complete'; -import { createFunctionResponseMessage } from '../../../common/utils/create_function_response_message'; -import { CONTEXT_FUNCTION_NAME } from '../../functions/context'; -import { ChatFunctionClient } from '../chat_function_client'; -import type { KnowledgeBaseService } from '../knowledge_base_service'; -import { observableIntoStream } from '../util/observable_into_stream'; -import type { ObservabilityAIAssistantConfig } from '../../config'; -import type { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; - -interface ChunkDelta { - content?: string | undefined; - function_call?: - | { - name?: string | undefined; - arguments?: string | undefined; - } - | undefined; -} - -type LlmSimulator = ReturnType<typeof createLlmSimulator>; - -const EXPECTED_STORED_SYSTEM_MESSAGE = `system`; - -const nextTick = () => { - return new Promise(process.nextTick); -}; - -const waitForNextWrite = async (stream: Readable): Promise<any> => { - // this will fire before the client's internal write() promise is - // resolved - const response = await new Promise((resolve) => stream.once('data', resolve)); - // so we wait another tick to let the client move to the next step - await nextTick(); - - return response; -}; - -function createLlmSimulator(subscriber: any) { - return { - next: async (msg: ChunkDelta) => { - subscriber.next({ - type: InferenceChatCompletionEventType.ChatCompletionMessage, - content: msg.content, - toolCalls: msg.function_call ? [{ function: msg.function_call }] : [], - }); - }, - tokenCount: async ({ - completion, - prompt, - total, - }: { - completion: number; - prompt: number; - total: number; - }) => { - subscriber.next({ - type: InferenceChatCompletionEventType.ChatCompletionTokenCount, - tokens: { completion, prompt, total }, - }); - subscriber.complete(); - }, - chunk: async (msg: ChunkDelta) => { - subscriber.next({ - type: InferenceChatCompletionEventType.ChatCompletionChunk, - content: msg.content, - tool_calls: msg.function_call ? [{ function: msg.function_call }] : [], - }); - }, - complete: async () => { - subscriber.complete(); - }, - error: (error: Error) => { - subscriber.error(error); - }, - }; -} - -describe('Observability AI Assistant client', () => { - let client: ObservabilityAIAssistantClient; - - const actionsClientMock: DeeplyMockedKeys<ActionsClient> = { - execute: jest.fn(), - get: jest.fn(), - } as any; - - const inferenceClientMock: DeeplyMockedKeys<InferenceClient> = { - chatComplete: jest.fn(), - } as any; - - const uiSettingsClientMock: DeeplyMockedKeys<IUiSettingsClient> = { - get: jest.fn(), - } as any; - - const internalUserEsClientMock: DeeplyMockedKeys<ElasticsearchClient> = { - search: jest.fn(), - index: jest.fn(), - update: jest.fn(), - } as any; - - const currentUserEsClientMock: DeeplyMockedKeys<ElasticsearchClient> = { - search: jest.fn(), - fieldCaps: jest.fn(), - } as any; - - const knowledgeBaseServiceMock: DeeplyMockedKeys<KnowledgeBaseService> = { - recall: jest.fn(), - getUserInstructions: jest.fn(), - } as any; - - let loggerMock: DeeplyMockedKeys<Logger> = {} as any; - - const functionClientMock: DeeplyMockedKeys<ChatFunctionClient> = { - executeFunction: jest.fn(), - getFunctions: jest.fn(), - hasFunction: jest.fn(), - hasAction: jest.fn(), - getActions: jest.fn(), - validate: jest.fn(), - getInstructions: jest.fn(), - getAdhocInstructions: jest.fn(), - } as any; - - let llmSimulator: LlmSimulator; - - function createClient() { - jest.resetAllMocks(); - - // uncomment this line for debugging - // const consoleOrPassThrough = console.log.bind(console); - const consoleOrPassThrough = () => {}; - - loggerMock = { - log: jest.fn().mockImplementation(consoleOrPassThrough), - error: jest.fn().mockImplementation(consoleOrPassThrough), - debug: jest.fn().mockImplementation(consoleOrPassThrough), - trace: jest.fn().mockImplementation(consoleOrPassThrough), - isLevelEnabled: jest.fn().mockReturnValue(true), - } as any; - - functionClientMock.getFunctions.mockReturnValue([]); - functionClientMock.hasFunction.mockImplementation((name) => { - return name !== CONTEXT_FUNCTION_NAME; - }); - - functionClientMock.hasAction.mockReturnValue(false); - functionClientMock.getActions.mockReturnValue([]); - - currentUserEsClientMock.search.mockResolvedValue({ - hits: { - hits: [], - }, - } as any); - - currentUserEsClientMock.fieldCaps.mockResolvedValue({ - fields: [], - } as any); - - knowledgeBaseServiceMock.getUserInstructions.mockResolvedValue([]); - - functionClientMock.getInstructions.mockReturnValue(['system']); - functionClientMock.getAdhocInstructions.mockReturnValue([]); - - return new ObservabilityAIAssistantClient({ - config: {} as ObservabilityAIAssistantConfig, - core: {} as CoreSetup<ObservabilityAIAssistantPluginStartDependencies>, - actionsClient: actionsClientMock, - uiSettingsClient: uiSettingsClientMock, - esClient: { - asInternalUser: internalUserEsClientMock, - asCurrentUser: currentUserEsClientMock, - }, - inferenceClient: inferenceClientMock, - knowledgeBaseService: knowledgeBaseServiceMock, - logger: loggerMock, - namespace: 'default', - user: { - name: 'johndoe', - }, - scopes: ['all'], - }); - } - - function system(content: string | Omit<Message['message'], 'role'>): Message { - return merge( - { - '@timestamp': new Date().toString(), - message: { - role: MessageRole.System, - }, - }, - typeof content === 'string' ? { message: { content } } : content - ); - } - - function user(content: string | Omit<Message['message'], 'role'>): Message { - return merge( - { - '@timestamp': new Date().toString(), - message: { - role: MessageRole.User, - }, - }, - typeof content === 'string' ? { message: { content } } : content - ); - } - - beforeEach(() => { - jest.clearAllMocks(); - }); - - describe('when completing a conversation without an initial conversation id', () => { - let stream: Readable; - - let titleLlmPromiseResolve: (title: string) => void; - let titleLlmPromiseReject: Function; - - beforeEach(async () => { - client = createClient(); - - inferenceClientMock.chatComplete - .mockImplementationOnce(() => { - return new Observable((subscriber) => { - titleLlmPromiseResolve = (title: string) => { - const titleLlmSimulator = createLlmSimulator(subscriber); - titleLlmSimulator - .chunk({ content: title }) - .then(() => titleLlmSimulator.next({ content: title })) - .then(() => titleLlmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 })) - .then(() => titleLlmSimulator.complete()) - .catch((error) => titleLlmSimulator.error(error)); - }; - titleLlmPromiseReject = (error: Error) => { - subscriber.error(error); - }; - }); - }) - .mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - stream = observableIntoStream( - client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - persist: true, - }) - ); - }); - - describe('when streaming the response from the LLM', () => { - let dataHandler: jest.Mock; - - beforeEach(async () => { - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - await llmSimulator.chunk({ content: 'Hello' }); - await llmSimulator.next({ content: 'Hello' }); - - await nextTick(); - }); - - it('calls the llm to generate a new title', () => { - expect(inferenceClientMock.chatComplete.mock.calls[0]).toEqual([ - expect.objectContaining({ - connectorId: 'foo', - stream: true, - functionCalling: 'native', - toolChoice: expect.objectContaining({ - function: 'title_conversation', - }), - tools: expect.objectContaining({ - title_conversation: { - description: - 'Use this function to title the conversation. Do not wrap the title in quotes', - schema: { - type: 'object', - properties: { - title: { type: 'string' }, - }, - required: ['title'], - }, - }, - }), - messages: expect.arrayContaining([ - { - role: 'user', - content: - 'Generate a title, using the title_conversation_function, based on the following conversation:\n\n user: How many alerts do I have?', - }, - ]), - }), - ]); - }); - - it('calls the llm again with the messages', () => { - expect(inferenceClientMock.chatComplete.mock.calls[1]).toEqual([ - { - connectorId: 'foo', - stream: true, - messages: expect.arrayContaining([ - { role: 'user', content: 'How many alerts do I have?' }, - ]), - functionCalling: 'native', - toolChoice: 'auto', - tools: {}, - }, - ]); - }); - - it('incrementally streams the response to the client', async () => { - expect(dataHandler).toHaveBeenCalledTimes(2); - - await new Promise((resolve) => setTimeout(resolve, 1000)); - - expect(JSON.parse(dataHandler.mock.calls[0])).toEqual({ - id: expect.any(String), - message: { - content: 'Hello', - }, - type: StreamingChatResponseEventType.ChatCompletionChunk, - }); - }); - - describe('after the LLM errors out', () => { - beforeEach(async () => { - await llmSimulator.next({ content: ' again' }); - - llmSimulator.error(new Error('Unexpected error')); - - await finished(stream); - }); - - it('adds an error to the stream and closes it', () => { - expect(dataHandler).toHaveBeenCalledTimes(4); - - expect(JSON.parse(dataHandler.mock.lastCall!)).toEqual({ - error: { - message: 'Unexpected error', - stack: expect.any(String), - }, - type: StreamingChatResponseEventType.ChatCompletionError, - }); - }); - }); - - describe('when generating a title fails', () => { - beforeEach(async () => { - titleLlmPromiseReject(new Error('Failed generating title')); - - await nextTick(); - await llmSimulator.tokenCount({ completion: 1, prompt: 33, total: 34 }); - await llmSimulator.complete(); - - await finished(stream); - }); - - it('falls back to the default title', () => { - expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ - conversation: { - title: 'New conversation', - id: expect.any(String), - last_updated: expect.any(String), - token_count: { - completion: 1, - prompt: 33, - total: 34, - }, - }, - type: StreamingChatResponseEventType.ConversationCreate, - }); - - expect(loggerMock.error).toHaveBeenCalled(); - }); - }); - - describe('after completing the response from the LLM', () => { - beforeEach(async () => { - await llmSimulator.chunk({ content: ' again' }); - - titleLlmPromiseResolve('An auto-generated title'); - await llmSimulator.tokenCount({ completion: 6, prompt: 210, total: 216 }); - await llmSimulator.complete(); - - await finished(stream); - }); - - it('adds the completed message to the stream', () => { - expect(JSON.parse(dataHandler.mock.calls[2])).toEqual({ - id: expect.any(String), - message: { - content: ' again', - }, - type: StreamingChatResponseEventType.ChatCompletionChunk, - }); - - expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - content: 'Hello again', - role: MessageRole.Assistant, - function_call: { - arguments: '', - name: '', - trigger: MessageRole.Assistant, - }, - }, - }, - type: StreamingChatResponseEventType.MessageAdd, - }); - }); - - it('creates a new conversation with the automatically generated title', () => { - expect(JSON.parse(dataHandler.mock.calls[4])).toEqual({ - conversation: { - title: 'An auto-generated title', - id: expect.any(String), - last_updated: expect.any(String), - token_count: { - completion: 6, - prompt: 210, - total: 216, - }, - }, - type: StreamingChatResponseEventType.ConversationCreate, - }); - - expect(internalUserEsClientMock.index).toHaveBeenCalledWith({ - index: '.kibana-observability-ai-assistant-conversations', - refresh: true, - document: { - '@timestamp': expect.any(String), - conversation: { - id: expect.any(String), - last_updated: expect.any(String), - title: 'An auto-generated title', - token_count: { - completion: 6, - prompt: 210, - total: 216, - }, - }, - labels: {}, - numeric_labels: {}, - public: false, - namespace: 'default', - user: { - name: 'johndoe', - }, - messages: [ - { - '@timestamp': expect.any(String), - message: { - content: EXPECTED_STORED_SYSTEM_MESSAGE, - role: MessageRole.System, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: 'How many alerts do I have?', - role: MessageRole.User, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: 'Hello again', - role: MessageRole.Assistant, - function_call: { - name: '', - arguments: '', - trigger: MessageRole.Assistant, - }, - }, - }, - ], - }, - }); - }); - }); - }); - }); - - describe('when completing a conversation with an initial conversation id', () => { - let stream: Readable; - - let dataHandler: jest.Mock; - - beforeEach(async () => { - client = createClient(); - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - internalUserEsClientMock.search.mockImplementation(async () => { - return { - hits: { - hits: [ - { - _id: 'my-es-document-id', - _index: '.kibana-observability-ai-assistant-conversations', - _source: { - '@timestamp': new Date().toISOString(), - conversation: { - id: 'my-conversation-id', - title: 'My stored conversation', - last_updated: new Date().toISOString(), - token_count: { - completion: 1, - prompt: 78, - total: 79, - }, - }, - labels: {}, - numeric_labels: {}, - public: false, - messages: [ - system('This is a system message'), - user('How many alerts do I have?'), - ], - }, - }, - ], - }, - } as any; - }); - - internalUserEsClientMock.update.mockImplementationOnce(async () => { - return {} as any; - }); - - stream = observableIntoStream( - await client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - conversationId: 'my-conversation-id', - persist: true, - }) - ); - - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - await nextTick(); - - await llmSimulator.chunk({ content: 'Hello' }); - await llmSimulator.next({ content: 'Hello' }); - await llmSimulator.tokenCount({ completion: 1, prompt: 33, total: 34 }); - await llmSimulator.complete(); - - await finished(stream); - }); - - it('updates the conversation', () => { - expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ - conversation: { - title: 'My stored conversation', - id: expect.any(String), - last_updated: expect.any(String), - token_count: { - completion: 2, - prompt: 111, - total: 113, - }, - }, - type: StreamingChatResponseEventType.ConversationUpdate, - }); - - expect(internalUserEsClientMock.update).toHaveBeenCalledWith({ - refresh: true, - index: '.kibana-observability-ai-assistant-conversations', - id: 'my-es-document-id', - doc: { - '@timestamp': expect.any(String), - conversation: { - id: expect.any(String), - last_updated: expect.any(String), - title: 'My stored conversation', - token_count: { - completion: 2, - prompt: 111, - total: 113, - }, - }, - labels: {}, - numeric_labels: {}, - public: false, - namespace: 'default', - user: { - name: 'johndoe', - }, - messages: [ - { - '@timestamp': expect.any(String), - message: { - content: EXPECTED_STORED_SYSTEM_MESSAGE, - role: MessageRole.System, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: 'How many alerts do I have?', - role: MessageRole.User, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: 'Hello', - role: MessageRole.Assistant, - function_call: { - name: '', - arguments: '', - trigger: MessageRole.Assistant, - }, - }, - }, - ], - }, - }); - }); - }); - - describe('when the LLM response fails', () => { - let stream: Readable; - - let dataHandler: jest.Mock; - - beforeEach(async () => { - client = createClient(); - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - stream = observableIntoStream( - await client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - title: 'My predefined title', - persist: true, - }) - ); - - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - await nextTick(); - - await llmSimulator.chunk({ content: 'Hello' }); - await llmSimulator.error(new Error('Connection unexpectedly closed')); - await llmSimulator.complete(); - - await finished(stream); - }); - - it('ends the stream and writes an error', async () => { - expect(JSON.parse(dataHandler.mock.calls[1])).toEqual({ - error: { - message: 'Connection unexpectedly closed', - stack: expect.any(String), - }, - type: StreamingChatResponseEventType.ChatCompletionError, - }); - }); - - it('does not create or update the conversation', async () => { - expect(internalUserEsClientMock.index).not.toHaveBeenCalled(); - expect(internalUserEsClientMock.update).not.toHaveBeenCalled(); - }); - }); - - describe('when the assistant answers with a function request', () => { - let stream: Readable; - - let dataHandler: jest.Mock; - - let respondFn: jest.Mock; - - let fnResponseResolve: (data: unknown) => void; - - let fnResponseReject: (error: Error) => void; - - beforeEach(async () => { - client = createClient(); - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - respondFn = jest.fn(); - - functionClientMock.getFunctions.mockImplementation(() => [ - { - definition: { - name: 'myFunction', - contexts: ['core'], - description: 'my-description', - descriptionForUser: '', - parameters: { - type: 'object', - properties: { - foo: { - type: 'string', - enum: ['bar'], - }, - }, - required: ['foo'], - }, - }, - respond: respondFn, - }, - ]); - - functionClientMock.executeFunction.mockImplementationOnce(() => { - return new Promise<any>((resolve, reject) => { - fnResponseResolve = resolve; - fnResponseReject = reject; - }); - }); - - stream = observableIntoStream( - await client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - title: 'My predefined title', - persist: true, - }) - ); - - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - await nextTick(); - - await llmSimulator.next({ content: 'Hello' }); - await llmSimulator.chunk({ - content: 'Hello', - function_call: { name: 'myFunction', arguments: JSON.stringify({ foo: 'bar' }) }, - }); - - const prevLlmSimulator = llmSimulator; - - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - await prevLlmSimulator.complete(); - - await waitForNextWrite(stream); - }); - - describe('while the function call is pending', () => { - it('appends the request message', async () => { - expect(JSON.parse(dataHandler.mock.calls[2])).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - content: 'Hello', - role: MessageRole.Assistant, - function_call: { - name: 'myFunction', - arguments: JSON.stringify({ foo: 'bar' }), - trigger: MessageRole.Assistant, - }, - }, - }, - }); - }); - - it('executes the function', () => { - expect(functionClientMock.executeFunction).toHaveBeenCalledWith({ - name: 'myFunction', - chat: expect.any(Function), - args: JSON.stringify({ foo: 'bar' }), - signal: expect.any(AbortSignal), - connectorId: 'foo', - messages: [ - { - '@timestamp': expect.any(String), - message: { - role: MessageRole.System, - content: EXPECTED_STORED_SYSTEM_MESSAGE, - }, - }, - { - '@timestamp': expect.any(String), - message: { - role: MessageRole.User, - content: 'How many alerts do I have?', - }, - }, - { - '@timestamp': expect.any(String), - message: { - role: MessageRole.Assistant, - content: 'Hello', - function_call: { - name: 'myFunction', - arguments: JSON.stringify({ foo: 'bar' }), - trigger: MessageRole.Assistant, - }, - }, - }, - ], - useSimulatedFunctionCalling: false, - }); - }); - - afterEach(async () => { - fnResponseResolve({ content: { my: 'content' } }); - - await waitForNextWrite(stream); - - await llmSimulator.complete(); - await finished(stream); - }); - }); - - describe('and the function succeeds', () => { - beforeEach(async () => { - fnResponseResolve({ content: { my: 'content' } }); - // await waitForNextWrite(stream); - }); - - it('appends the function response', () => { - expect(JSON.parse(dataHandler.mock.calls[3])).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - role: MessageRole.User, - name: 'myFunction', - content: JSON.stringify({ - my: 'content', - }), - }, - }, - }); - }); - - it('sends the function response back to the llm', () => { - expect(inferenceClientMock.chatComplete).toHaveBeenCalledTimes(2); - - expect(inferenceClientMock.chatComplete.mock.lastCall!).toEqual([ - { - connectorId: 'foo', - stream: true, - messages: expect.arrayContaining([ - { role: 'user', content: 'How many alerts do I have?' }, - ]), - functionCalling: 'native', - toolChoice: 'auto', - tools: expect.any(Object), - }, - ]); - }); - - describe('and the assistant replies without a function request', () => { - beforeEach(async () => { - await llmSimulator.chunk({ content: 'I am done here' }); - await llmSimulator.next({ content: 'I am done here' }); - await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); - await llmSimulator.complete(); - await waitForNextWrite(stream); - - await finished(stream); - }); - - it('appends the assistant reply', () => { - expect(JSON.parse(dataHandler.mock.calls[4])).toEqual({ - type: StreamingChatResponseEventType.ChatCompletionChunk, - id: expect.any(String), - message: { - content: 'I am done here', - }, - }); - expect(JSON.parse(dataHandler.mock.calls[6])).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - role: MessageRole.Assistant, - content: 'I am done here', - function_call: { - name: '', - arguments: '', - trigger: MessageRole.Assistant, - }, - }, - }, - }); - }); - - it('stores the conversation', () => { - expect(JSON.parse(dataHandler.mock.lastCall!)).toEqual({ - type: StreamingChatResponseEventType.ConversationCreate, - conversation: { - id: expect.any(String), - last_updated: expect.any(String), - title: 'My predefined title', - token_count: { - completion: expect.any(Number), - prompt: expect.any(Number), - total: expect.any(Number), - }, - }, - }); - - expect(internalUserEsClientMock.index).toHaveBeenCalled(); - - expect( - (internalUserEsClientMock.index.mock.lastCall![0] as any).document.messages - ).toEqual([ - { - '@timestamp': expect.any(String), - message: { - content: EXPECTED_STORED_SYSTEM_MESSAGE, - role: MessageRole.System, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: 'How many alerts do I have?', - role: MessageRole.User, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: 'Hello', - role: MessageRole.Assistant, - function_call: { - name: 'myFunction', - arguments: JSON.stringify({ foo: 'bar' }), - trigger: MessageRole.Assistant, - }, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: JSON.stringify({ - my: 'content', - }), - name: 'myFunction', - role: MessageRole.User, - }, - }, - { - '@timestamp': expect.any(String), - message: { - content: 'I am done here', - role: MessageRole.Assistant, - function_call: { - name: '', - arguments: '', - trigger: MessageRole.Assistant, - }, - }, - }, - ]); - }); - }); - }); - - describe('and the function fails', () => { - beforeEach(async () => { - fnResponseReject(new Error('Function failed')); - await waitForNextWrite(stream); - }); - - it('appends the function response', () => { - const parsed = JSON.parse(dataHandler.mock.lastCall!); - - parsed.message.message.content = JSON.parse(parsed.message.message.content); - parsed.message.message.data = JSON.parse(parsed.message.message.data); - - expect(parsed).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - role: MessageRole.User, - name: 'myFunction', - content: { - message: 'Function failed', - error: { - name: 'Error', - message: 'Function failed', - }, - }, - data: { - stack: expect.any(String), - }, - }, - }, - }); - }); - - it('sends the function response back to the llm', () => { - expect(inferenceClientMock.chatComplete).toHaveBeenCalledTimes(2); - expect(inferenceClientMock.chatComplete.mock.lastCall!).toEqual([ - { - connectorId: 'foo', - stream: true, - messages: expect.arrayContaining([ - { role: 'user', content: 'How many alerts do I have?' }, - ]), - functionCalling: 'native', - toolChoice: 'auto', - tools: expect.any(Object), - }, - ]); - }); - }); - - describe('and the function responds with an observable', () => { - let response$: Subject<ChatCompletionChunkEvent | MessageAddEvent>; - beforeEach(async () => { - response$ = new Subject(); - fnResponseResolve(response$); - - await nextTick(); - - response$.next(createFunctionResponseMessage({ name: 'myFunction', content: {} })); - }); - - it('appends the function response', async () => { - expect(JSON.parse(dataHandler.mock.calls[3]!)).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - role: MessageRole.User, - name: 'myFunction', - content: '{}', - }, - }, - }); - }); - - describe('if the observable completes', () => { - beforeEach(async () => { - response$.next({ - type: StreamingChatResponseEventType.ChatCompletionChunk, - message: { - content: 'Hello', - }, - id: 'my-id', - }); - - response$.next({ - type: StreamingChatResponseEventType.MessageAdd, - message: { - '@timestamp': new Date().toString(), - message: { - role: MessageRole.Assistant, - content: 'Hello', - }, - }, - id: 'my-id', - }); - - response$.complete(); - - await finished(stream); - }); - - it('emits a completion chunk', () => { - expect(JSON.parse(dataHandler.mock.calls[4])).toEqual({ - type: StreamingChatResponseEventType.ChatCompletionChunk, - id: expect.any(String), - message: { - content: 'Hello', - }, - }); - }); - - it('appends the observable response', () => { - expect(JSON.parse(dataHandler.mock.calls[5])).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - role: MessageRole.Assistant, - content: 'Hello', - }, - }, - }); - }); - }); - - describe('if the observable errors out', () => { - beforeEach(async () => { - response$.next({ - type: StreamingChatResponseEventType.ChatCompletionChunk, - message: { - content: 'Hello', - }, - id: 'my-id', - }); - response$.error(new Error('Unexpected error')); - - await finished(stream); - }); - - it('appends an error', () => { - expect(JSON.parse(dataHandler.mock.lastCall!)).toEqual({ - type: StreamingChatResponseEventType.ChatCompletionError, - error: { - message: 'Unexpected error', - stack: expect.any(String), - }, - }); - }); - }); - }); - }); - - describe('when context is available', () => { - let stream: Readable; - - let dataHandler: jest.Mock; - beforeEach(async () => { - client = createClient(); - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - functionClientMock.hasFunction.mockReturnValue(true); - - functionClientMock.executeFunction.mockImplementationOnce(async (body) => { - return { - content: [ - { - id: 'my_document', - text: 'My document', - }, - ], - }; - }); - - stream = observableIntoStream( - await client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - persist: false, - }) - ); - - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - await waitForNextWrite(stream); - - await llmSimulator.chunk({ content: 'Hello' }); - await llmSimulator.next({ content: 'Hello' }); - await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); - await llmSimulator.complete(); - - await finished(stream); - }); - - it('appends the context request message', () => { - expect(JSON.parse(dataHandler.mock.calls[0]!)).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - content: '', - role: MessageRole.Assistant, - function_call: { - name: CONTEXT_FUNCTION_NAME, - trigger: MessageRole.Assistant, - }, - }, - }, - }); - }); - - it('appends the context response', () => { - expect(JSON.parse(dataHandler.mock.calls[1]!)).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - content: JSON.stringify([{ id: 'my_document', text: 'My document' }]), - role: MessageRole.User, - name: CONTEXT_FUNCTION_NAME, - }, - }, - }); - }); - - it('appends the response from the LLM', () => { - expect(JSON.parse(dataHandler.mock.calls[2]!)).toEqual({ - type: StreamingChatResponseEventType.ChatCompletionChunk, - id: expect.any(String), - message: { - content: 'Hello', - }, - }); - - expect(JSON.parse(dataHandler.mock.calls[4]!)).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - content: 'Hello', - function_call: { - name: '', - arguments: '', - trigger: MessageRole.Assistant, - }, - role: MessageRole.Assistant, - }, - }, - }); - }); - }); - - describe('when the LLM keeps on calling a function and the limit has been exceeded', () => { - let stream: Readable; - - let dataHandler: jest.Mock; - const maxFunctionCalls = 8; - - beforeEach(async () => { - client = createClient(); - - const onLlmCall = new EventEmitter(); - - function waitForNextLlmCall() { - return new Promise<void>((resolve) => onLlmCall.addListener('next', resolve)); - } - - inferenceClientMock.chatComplete.mockImplementation(() => { - return new Observable((subscriber) => { - onLlmCall.emit('next'); - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - functionClientMock.getFunctions.mockImplementation(() => [ - { - definition: { - name: 'get_top_alerts', - contexts: ['core'], - description: '', - }, - respond: async () => { - return { content: 'Call this function again' }; - }, - }, - ]); - - functionClientMock.hasFunction.mockImplementation((name) => name === 'get_top_alerts'); - functionClientMock.executeFunction.mockImplementation(async () => ({ - content: 'Call this function again', - })); - - stream = observableIntoStream( - await client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - title: 'My predefined title', - persist: true, - }) - ); - - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - async function requestAlertsFunctionCall() { - const body = inferenceClientMock.chatComplete.mock.lastCall![0]; - let nextLlmCallPromise: Promise<void>; - - if (Object.keys(body.tools ?? {}).length) { - nextLlmCallPromise = waitForNextLlmCall(); - await llmSimulator.chunk({ function_call: { name: 'get_top_alerts', arguments: '{}' } }); - } else { - nextLlmCallPromise = Promise.resolve(); - await llmSimulator.chunk({ content: 'Looks like we are done here' }); - } - - await llmSimulator.complete(); - await nextLlmCallPromise; - } - - await nextTick(); - - for (let i = 0; i <= maxFunctionCalls; i++) { - await requestAlertsFunctionCall(); - } - - await llmSimulator.complete(); - await finished(stream); - }); - - it(`executed the function no more than ${maxFunctionCalls} times`, () => { - expect(functionClientMock.executeFunction).toHaveBeenCalledTimes(maxFunctionCalls); - }); - - it('asks the LLM to suggest next steps', () => { - const firstBody = inferenceClientMock.chatComplete.mock.calls[0][0] as any; - const body = inferenceClientMock.chatComplete.mock.lastCall![0] as any; - - expect(Object.keys(firstBody.tools ?? {}).length).toEqual(1); - - expect(body.tools).toEqual({}); - }); - }); - - describe('when context has not been injected since last user message', () => { - let dataHandler: jest.Mock; - - beforeEach(async () => { - client = createClient(); - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - functionClientMock.hasFunction.mockReturnValue(true); - functionClientMock.executeFunction.mockImplementationOnce(async () => { - return { - content: [ - { - id: 'my_document', - text: 'My document', - }, - ], - }; - }); - - const stream = observableIntoStream( - await client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - persist: false, - }) - ); - - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - await waitForNextWrite(stream); - - await llmSimulator.next({ - content: 'Hello', - }); - - await llmSimulator.complete(); - - await finished(stream); - }); - - it('executes the context function', async () => { - expect(functionClientMock.executeFunction).toHaveBeenCalledWith( - expect.objectContaining({ name: CONTEXT_FUNCTION_NAME }) - ); - }); - - it('appends the context request message', async () => { - expect(JSON.parse(dataHandler.mock.calls[0])).toEqual({ - type: StreamingChatResponseEventType.MessageAdd, - id: expect.any(String), - message: { - '@timestamp': expect.any(String), - message: { - content: '', - role: MessageRole.Assistant, - function_call: { - name: CONTEXT_FUNCTION_NAME, - trigger: MessageRole.Assistant, - }, - }, - }, - }); - }); - }); - - describe('when the function response exceeds the max no of tokens for one', () => { - let stream: Readable; - - let dataHandler: jest.Mock; - - beforeEach(async () => { - client = createClient(); - - let functionResponsePromiseResolve: Function | undefined; - - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - functionClientMock.getFunctions.mockImplementation(() => [ - { - definition: { - name: 'get_top_alerts', - contexts: ['core'], - description: '', - parameters: {}, - }, - respond: async () => { - return { content: '' }; - }, - }, - ]); - - functionClientMock.hasFunction.mockImplementation((name) => name === 'get_top_alerts'); - - functionClientMock.executeFunction.mockImplementation(() => { - return new Promise((resolve) => { - functionResponsePromiseResolve = resolve; - }); - }); - - stream = observableIntoStream( - await client.complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], - functionClient: functionClientMock, - signal: new AbortController().signal, - title: 'My predefined title', - persist: true, - }) - ); - - dataHandler = jest.fn(); - - stream.on('data', dataHandler); - - await nextTick(); - - await llmSimulator.chunk({ function_call: { name: 'get_top_alerts' } }); - await llmSimulator.next({ content: 'done' }); - await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); - await llmSimulator.complete(); - - await waitFor(() => functionResponsePromiseResolve !== undefined); - - functionResponsePromiseResolve!({ - content: repeat('word ', 10000), - }); - - await waitFor(() => inferenceClientMock.chatComplete.mock.calls.length > 1); - - await llmSimulator.next({ content: 'Looks like this was truncated' }); - - await llmSimulator.complete(); - - await finished(stream); - }); - - it('truncates the message', () => { - const body = inferenceClientMock.chatComplete.mock.lastCall![0]; - const parsed = last(body.messages); - - expect(parsed).toEqual({ - role: 'tool', - response: { - message: 'Function response exceeded the maximum length allowed and was truncated', - truncated: expect.any(String), - }, - toolCallId: expect.any(String), - }); - - expect((parsed as any).response.truncated.includes('word ')).toBe(true); - }); - }); - - it('Adds the default language to the system prompt', async () => { - client = createClient(); - const chatSpy = jest.spyOn(client, 'chat'); - - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - client - .complete({ - connectorId: 'foo', - messages: [system('This is a system message'), user('A user message to cause completion')], - functionClient: functionClientMock, - signal: new AbortController().signal, - title: 'My predefined title', - persist: false, - }) - .subscribe(() => {}); // To trigger call to chat - await nextTick(); - - expect(chatSpy.mock.calls[0][1].messages[0].message.content).toEqual( - EXPECTED_STORED_SYSTEM_MESSAGE - ); - }); - - describe('when executing an action', () => { - let completePromise: Promise<Message[]>; - - beforeEach(async () => { - client = createClient(); - - inferenceClientMock.chatComplete.mockImplementationOnce(() => { - return new Observable((subscriber) => { - llmSimulator = createLlmSimulator(subscriber); - }); - }); - - const complete$ = await client.complete({ - connectorId: 'foo', - messages: [ - system('This is a system message'), - user('Can you call the my_action function?'), - ], - functionClient: new ChatFunctionClient([ - { - actions: [ - { - name: 'my_action', - description: 'My action description', - parameters: { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, - required: ['foo'], - }, - }, - ], - }, - ]), - signal: new AbortController().signal, - title: 'My predefined title', - persist: false, - }); - - const messages: Message[] = []; - - completePromise = new Promise<Message[]>((resolve, reject) => { - complete$.subscribe({ - next: (event) => { - if (event.type === StreamingChatResponseEventType.MessageAdd) { - messages.push(event.message); - } - }, - complete: () => resolve(messages), - }); - }); - }); - - describe('and validation succeeds', () => { - beforeEach(async () => { - await llmSimulator.chunk({ - function_call: { name: 'my_action', arguments: JSON.stringify({ foo: 'bar' }) }, - }); - await llmSimulator.next({ content: 'content' }); - await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); - await llmSimulator.complete(); - }); - - it('completes the observable function request being the last event', async () => { - const messages = await completePromise; - expect(messages.length).toBe(1); - - expect(messages[0].message.function_call).toEqual({ - name: 'my_action', - arguments: JSON.stringify({ foo: 'bar' }), - trigger: MessageRole.Assistant, - }); - }); - }); - - describe.skip('and validation fails', () => { - beforeEach(async () => { - await llmSimulator.chunk({ - function_call: { name: 'my_action', arguments: JSON.stringify({ bar: 'foo' }) }, - }); - - await waitFor(() => - inferenceClientMock.chatComplete.mock.calls.length === 3 - ? Promise.resolve() - : llmSimulator.error(new Error('Waiting until execute is called again')) - ); - - await llmSimulator.next({ - content: 'Looks like the function call failed', - }); - await llmSimulator.tokenCount({ completion: 0, prompt: 0, total: 0 }); - - await llmSimulator.complete(); - }); - - it('appends a function response error and sends it back to the LLM', async () => { - const messages = await completePromise; - expect(messages.length).toBe(2); - - expect(messages[0].message.function_call?.name).toBe('my_action'); - - expect(messages[1].message.name).toBe('my_action'); - - expect(JSON.parse(messages[1].message.content ?? '{}')).toHaveProperty('error'); - - expect(messages[2].message.content).toBe('Looks like the function call failed'); - }); - }); - }); -}); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.ts deleted file mode 100644 index 688bd7a2ec860..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/client/index.ts +++ /dev/null @@ -1,755 +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 { SearchHit } from '@elastic/elasticsearch/lib/api/types'; -import { notFound } from '@hapi/boom'; -import type { ActionsClient } from '@kbn/actions-plugin/server'; -import type { CoreSetup, ElasticsearchClient, IUiSettingsClient } from '@kbn/core/server'; -import type { Logger } from '@kbn/logging'; -import type { PublicMethodsOf } from '@kbn/utility-types'; -import { context } from '@opentelemetry/api'; -import { last, merge, omit } from 'lodash'; -import { - catchError, - combineLatest, - defer, - filter, - forkJoin, - from, - map, - merge as mergeOperator, - Observable, - of, - shareReplay, - switchMap, - tap, - throwError, -} from 'rxjs'; -import { v4 } from 'uuid'; -import type { AssistantScope } from '@kbn/ai-assistant-common'; -import type { InferenceClient } from '@kbn/inference-plugin/server'; -import { ToolChoiceType } from '@kbn/inference-common'; - -import { resourceNames } from '..'; -import { - ChatCompletionChunkEvent, - ChatCompletionMessageEvent, - ChatCompletionErrorEvent, - ConversationCreateEvent, - ConversationUpdateEvent, - createConversationNotFoundError, - StreamingChatResponseEventType, - TokenCountEvent, - type StreamingChatResponseEvent, -} from '../../../common/conversation_complete'; -import { convertMessagesForInference } from '../../../common/convert_messages_for_inference'; -import { CompatibleJSONSchema } from '../../../common/functions/types'; -import { - type AdHocInstruction, - type Conversation, - type ConversationCreateRequest, - type ConversationUpdateRequest, - type KnowledgeBaseEntry, - type Message, - KnowledgeBaseType, - KnowledgeBaseEntryRole, - MessageRole, -} from '../../../common/types'; -import { withoutTokenCountEvents } from '../../../common/utils/without_token_count_events'; -import { CONTEXT_FUNCTION_NAME } from '../../functions/context'; -import type { ChatFunctionClient } from '../chat_function_client'; -import { KnowledgeBaseService, RecalledEntry } from '../knowledge_base_service'; -import { getAccessQuery } from '../util/get_access_query'; -import { getSystemMessageFromInstructions } from '../util/get_system_message_from_instructions'; -import { replaceSystemMessage } from '../util/replace_system_message'; -import { failOnNonExistingFunctionCall } from './operators/fail_on_non_existing_function_call'; -import { getContextFunctionRequestIfNeeded } from './get_context_function_request_if_needed'; -import { LangTracer } from './instrumentation/lang_tracer'; -import { continueConversation } from './operators/continue_conversation'; -import { convertInferenceEventsToStreamingEvents } from './operators/convert_inference_events_to_streaming_events'; -import { extractMessages } from './operators/extract_messages'; -import { extractTokenCount } from './operators/extract_token_count'; -import { getGeneratedTitle } from './operators/get_generated_title'; -import { instrumentAndCountTokens } from './operators/instrument_and_count_tokens'; -import { - runSemanticTextKnowledgeBaseMigration, - scheduleSemanticTextMigration, -} from '../task_manager_definitions/register_migrate_knowledge_base_entries_task'; -import { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; -import { ObservabilityAIAssistantConfig } from '../../config'; - -const MAX_FUNCTION_CALLS = 8; - -export class ObservabilityAIAssistantClient { - constructor( - private readonly dependencies: { - config: ObservabilityAIAssistantConfig; - core: CoreSetup<ObservabilityAIAssistantPluginStartDependencies>; - actionsClient: PublicMethodsOf<ActionsClient>; - uiSettingsClient: IUiSettingsClient; - namespace: string; - esClient: { - asInternalUser: ElasticsearchClient; - asCurrentUser: ElasticsearchClient; - }; - inferenceClient: InferenceClient; - logger: Logger; - user?: { - id?: string; - name: string; - }; - knowledgeBaseService: KnowledgeBaseService; - scopes: AssistantScope[]; - } - ) {} - - private getConversationWithMetaFields = async ( - conversationId: string - ): Promise<SearchHit<Conversation> | undefined> => { - const response = await this.dependencies.esClient.asInternalUser.search<Conversation>({ - index: resourceNames.aliases.conversations, - query: { - bool: { - filter: [ - ...getAccessQuery({ - user: this.dependencies.user, - namespace: this.dependencies.namespace, - }), - { term: { 'conversation.id': conversationId } }, - ], - }, - }, - size: 1, - terminate_after: 1, - }); - - return response.hits.hits[0]; - }; - - private getConversationUpdateValues = (lastUpdated: string) => { - return { - conversation: { - last_updated: lastUpdated, - }, - user: this.dependencies.user, - namespace: this.dependencies.namespace, - }; - }; - - get = async (conversationId: string): Promise<Conversation> => { - const conversation = await this.getConversationWithMetaFields(conversationId); - - if (!conversation) { - throw notFound(); - } - return conversation._source!; - }; - - delete = async (conversationId: string): Promise<void> => { - const conversation = await this.getConversationWithMetaFields(conversationId); - - if (!conversation) { - throw notFound(); - } - - await this.dependencies.esClient.asInternalUser.delete({ - id: conversation._id!, - index: conversation._index, - refresh: true, - }); - }; - - complete = ({ - functionClient, - connectorId, - simulateFunctionCalling = false, - instructions: adHocInstructions = [], - messages: initialMessages, - signal, - persist, - kibanaPublicUrl, - isPublic, - title: predefinedTitle, - conversationId: predefinedConversationId, - disableFunctions = false, - }: { - messages: Message[]; - connectorId: string; - signal: AbortSignal; - functionClient: ChatFunctionClient; - persist: boolean; - conversationId?: string; - title?: string; - isPublic?: boolean; - kibanaPublicUrl?: string; - instructions?: AdHocInstruction[]; - simulateFunctionCalling?: boolean; - disableFunctions?: - | boolean - | { - except: string[]; - }; - }): Observable<Exclude<StreamingChatResponseEvent, ChatCompletionErrorEvent>> => { - return new LangTracer(context.active()).startActiveSpan( - 'complete', - ({ tracer: completeTracer }) => { - const isConversationUpdate = persist && !!predefinedConversationId; - - const conversationId = persist ? predefinedConversationId || v4() : ''; - - if (persist && !isConversationUpdate && kibanaPublicUrl) { - adHocInstructions.push({ - instruction_type: 'application_instruction', - text: `This conversation will be persisted in Kibana and available at this url: ${ - kibanaPublicUrl + `/app/observabilityAIAssistant/conversations/${conversationId}` - }.`, - }); - } - - const userInstructions$ = from(this.getKnowledgeBaseUserInstructions()).pipe(shareReplay()); - - const registeredAdhocInstructions = functionClient.getAdhocInstructions(); - const allAdHocInstructions = adHocInstructions.concat(registeredAdhocInstructions); - - // from the initial messages, override any system message with - // the one that is based on the instructions (registered, request, kb) - const messagesWithUpdatedSystemMessage$ = userInstructions$.pipe( - map((userInstructions) => { - // this is what we eventually store in the conversation - const messagesWithUpdatedSystemMessage = replaceSystemMessage( - getSystemMessageFromInstructions({ - applicationInstructions: functionClient.getInstructions(), - userInstructions, - adHocInstructions: allAdHocInstructions, - availableFunctionNames: functionClient - .getFunctions() - .map((fn) => fn.definition.name), - }), - initialMessages - ); - - return messagesWithUpdatedSystemMessage; - }), - shareReplay() - ); - - // if it is: - // - a new conversation - // - no predefined title is given - // - we need to store the conversation - // we generate a title - // if not, we complete with an empty string - const title$ = - predefinedTitle || isConversationUpdate || !persist - ? of(predefinedTitle || '').pipe(shareReplay()) - : messagesWithUpdatedSystemMessage$.pipe( - switchMap((messages) => - getGeneratedTitle({ - messages, - logger: this.dependencies.logger, - chat: (name, chatParams) => { - return this.chat(name, { - ...chatParams, - simulateFunctionCalling, - connectorId, - signal, - }); - }, - tracer: completeTracer, - }) - ), - shareReplay() - ); - - // we continue the conversation here, after resolving both the materialized - // messages and the knowledge base instructions - const nextEvents$ = combineLatest([ - messagesWithUpdatedSystemMessage$, - userInstructions$, - ]).pipe( - switchMap(([messagesWithUpdatedSystemMessage, userInstructions]) => { - // if needed, inject a context function request here - const contextRequest = functionClient.hasFunction(CONTEXT_FUNCTION_NAME) - ? getContextFunctionRequestIfNeeded(messagesWithUpdatedSystemMessage) - : undefined; - - return mergeOperator( - // if we have added a context function request, also emit - // the messageAdd event for it, so we can notify the consumer - // and add it to the conversation - ...(contextRequest ? [of(contextRequest)] : []), - continueConversation({ - messages: [ - ...messagesWithUpdatedSystemMessage, - ...(contextRequest ? [contextRequest.message] : []), - ], - chat: (name, chatParams) => { - // inject a chat function with predefined parameters - return this.chat(name, { - ...chatParams, - signal, - simulateFunctionCalling, - connectorId, - }); - }, - // start out with the max number of function calls - functionCallsLeft: MAX_FUNCTION_CALLS, - functionClient, - userInstructions, - adHocInstructions, - signal, - logger: this.dependencies.logger, - disableFunctions, - tracer: completeTracer, - connectorId, - useSimulatedFunctionCalling: simulateFunctionCalling === true, - }) - ); - }), - shareReplay() - ); - - const output$ = mergeOperator( - // get all the events from continuing the conversation - nextEvents$, - // wait until all dependencies have completed - forkJoin([ - messagesWithUpdatedSystemMessage$, - // get just the new messages - nextEvents$.pipe(withoutTokenCountEvents(), extractMessages()), - // count all the token count events emitted during completion - mergeOperator( - nextEvents$, - title$.pipe(filter((value): value is TokenCountEvent => typeof value !== 'string')) - ).pipe(extractTokenCount()), - // get just the title, and drop the token count events - title$.pipe(filter((value): value is string => typeof value === 'string')), - ]).pipe( - switchMap( - ([messagesWithUpdatedSystemMessage, addedMessages, tokenCountResult, title]) => { - const initialMessagesWithAddedMessages = - messagesWithUpdatedSystemMessage.concat(addedMessages); - - const lastMessage = last(initialMessagesWithAddedMessages); - - // if a function request is at the very end, close the stream to consumer - // without persisting or updating the conversation. we need to wait - // on the function response to have a valid conversation - const isFunctionRequest = !!lastMessage?.message.function_call?.name; - - if (!persist || isFunctionRequest) { - return of(); - } - - if (isConversationUpdate) { - return from(this.getConversationWithMetaFields(conversationId)) - .pipe( - switchMap((conversation) => { - if (!conversation) { - return throwError(() => createConversationNotFoundError()); - } - - const persistedTokenCount = conversation._source?.conversation - .token_count ?? { - prompt: 0, - completion: 0, - total: 0, - }; - - return from( - this.update( - conversationId, - - merge( - {}, - - // base conversation without messages - omit(conversation._source, 'messages'), - - // update messages - { messages: initialMessagesWithAddedMessages }, - - // update token count - { - conversation: { - title: title || conversation._source?.conversation.title, - token_count: { - prompt: persistedTokenCount.prompt + tokenCountResult.prompt, - completion: - persistedTokenCount.completion + tokenCountResult.completion, - total: persistedTokenCount.total + tokenCountResult.total, - }, - }, - } - ) - ) - ); - }) - ) - .pipe( - map((conversation): ConversationUpdateEvent => { - return { - conversation: conversation.conversation, - type: StreamingChatResponseEventType.ConversationUpdate, - }; - }) - ); - } - - return from( - this.create({ - '@timestamp': new Date().toISOString(), - conversation: { - title, - id: conversationId, - token_count: tokenCountResult, - }, - public: !!isPublic, - labels: {}, - numeric_labels: {}, - messages: initialMessagesWithAddedMessages, - }) - ).pipe( - map((conversation): ConversationCreateEvent => { - return { - conversation: conversation.conversation, - type: StreamingChatResponseEventType.ConversationCreate, - }; - }) - ); - } - ) - ) - ); - - return output$.pipe( - instrumentAndCountTokens('complete'), - withoutTokenCountEvents(), - catchError((error) => { - this.dependencies.logger.error(error); - return throwError(() => error); - }), - tap((event) => { - if (this.dependencies.logger.isLevelEnabled('debug')) { - switch (event.type) { - case StreamingChatResponseEventType.MessageAdd: - this.dependencies.logger.debug( - () => `Added message: ${JSON.stringify(event.message)}` - ); - break; - - case StreamingChatResponseEventType.ConversationCreate: - this.dependencies.logger.debug( - () => `Created conversation: ${JSON.stringify(event.conversation)}` - ); - break; - - case StreamingChatResponseEventType.ConversationUpdate: - this.dependencies.logger.debug( - () => `Updated conversation: ${JSON.stringify(event.conversation)}` - ); - break; - } - } - }), - shareReplay() - ); - } - ); - }; - - chat = ( - name: string, - { - messages, - connectorId, - functions, - functionCall, - signal, - simulateFunctionCalling, - tracer, - }: { - messages: Message[]; - connectorId: string; - functions?: Array<{ name: string; description: string; parameters?: CompatibleJSONSchema }>; - functionCall?: string; - signal: AbortSignal; - simulateFunctionCalling?: boolean; - tracer: LangTracer; - } - ): Observable<ChatCompletionChunkEvent | TokenCountEvent | ChatCompletionMessageEvent> => { - const tools = functions?.reduce((acc, fn) => { - acc[fn.name] = { - description: fn.description, - schema: fn.parameters, - }; - return acc; - }, {} as Record<string, { description: string; schema: any }>); - - const chatComplete$ = defer(() => - this.dependencies.inferenceClient.chatComplete({ - connectorId, - stream: true, - messages: convertMessagesForInference( - messages.filter((message) => message.message.role !== MessageRole.System) - ), - functionCalling: simulateFunctionCalling ? 'simulated' : 'native', - toolChoice: functionCall - ? { - function: functionCall, - } - : ToolChoiceType.auto, - tools, - }) - ).pipe( - convertInferenceEventsToStreamingEvents(), - instrumentAndCountTokens(name), - failOnNonExistingFunctionCall({ functions }), - tap((event) => { - if ( - event.type === StreamingChatResponseEventType.ChatCompletionChunk && - this.dependencies.logger.isLevelEnabled('trace') - ) { - this.dependencies.logger.trace(`Received chunk: ${JSON.stringify(event.message)}`); - } - }), - shareReplay() - ); - - return chatComplete$; - }; - - find = async (options?: { query?: string }): Promise<{ conversations: Conversation[] }> => { - const response = await this.dependencies.esClient.asInternalUser.search<Conversation>({ - index: resourceNames.aliases.conversations, - allow_no_indices: true, - query: { - bool: { - filter: [ - ...getAccessQuery({ - user: this.dependencies.user, - namespace: this.dependencies.namespace, - }), - ], - }, - }, - sort: { - '@timestamp': 'desc', - }, - size: 100, - }); - - return { - conversations: response.hits.hits.map((hit) => hit._source!), - }; - }; - - update = async ( - conversationId: string, - conversation: ConversationUpdateRequest - ): Promise<Conversation> => { - const persistedConversation = await this.getConversationWithMetaFields(conversationId); - - if (!persistedConversation) { - throw notFound(); - } - - const updatedConversation: Conversation = merge( - {}, - conversation, - this.getConversationUpdateValues(new Date().toISOString()) - ); - - await this.dependencies.esClient.asInternalUser.update({ - id: persistedConversation._id!, - index: persistedConversation._index, - doc: updatedConversation, - refresh: true, - }); - - return updatedConversation; - }; - - setTitle = async ({ conversationId, title }: { conversationId: string; title: string }) => { - const document = await this.getConversationWithMetaFields(conversationId); - if (!document) { - throw notFound(); - } - - const conversation = await this.get(conversationId); - - if (!conversation) { - throw notFound(); - } - - const updatedConversation: Conversation = merge( - {}, - conversation, - { conversation: { title } }, - this.getConversationUpdateValues(new Date().toISOString()) - ); - - await this.dependencies.esClient.asInternalUser.update({ - id: document._id!, - index: document._index, - doc: { conversation: { title } }, - refresh: true, - }); - - return updatedConversation; - }; - - create = async (conversation: ConversationCreateRequest): Promise<Conversation> => { - const now = new Date().toISOString(); - - const createdConversation: Conversation = merge( - {}, - conversation, - { - '@timestamp': now, - conversation: { id: conversation.conversation.id || v4() }, - }, - this.getConversationUpdateValues(now) - ); - - await this.dependencies.esClient.asInternalUser.index({ - index: resourceNames.aliases.conversations, - document: createdConversation, - refresh: true, - }); - - return createdConversation; - }; - - recall = async ({ - queries, - categories, - }: { - queries: Array<{ text: string; boost?: number }>; - categories?: string[]; - }): Promise<RecalledEntry[]> => { - return ( - this.dependencies.knowledgeBaseService?.recall({ - namespace: this.dependencies.namespace, - user: this.dependencies.user, - queries, - categories, - esClient: this.dependencies.esClient, - uiSettingsClient: this.dependencies.uiSettingsClient, - }) || [] - ); - }; - - getKnowledgeBaseStatus = () => { - return this.dependencies.knowledgeBaseService.getStatus(); - }; - - setupKnowledgeBase = async (modelId: string | undefined) => { - const { esClient, core, logger, knowledgeBaseService } = this.dependencies; - - // setup the knowledge base - const res = await knowledgeBaseService.setup(esClient, modelId); - - core - .getStartServices() - .then(([_, pluginsStart]) => { - logger.debug('Schedule semantic text migration task'); - return scheduleSemanticTextMigration(pluginsStart); - }) - .catch((error) => { - logger.error(`Failed to run semantic text migration task: ${error}`); - }); - - return res; - }; - - resetKnowledgeBase = () => { - const { esClient } = this.dependencies; - return this.dependencies.knowledgeBaseService.reset(esClient); - }; - - migrateKnowledgeBaseToSemanticText = () => { - return runSemanticTextKnowledgeBaseMigration({ - esClient: this.dependencies.esClient, - logger: this.dependencies.logger, - config: this.dependencies.config, - }); - }; - - addUserInstruction = async ({ - entry, - }: { - entry: Omit< - KnowledgeBaseEntry, - '@timestamp' | 'confidence' | 'is_correction' | 'type' | 'role' - >; - }): Promise<void> => { - // for now we want to limit the number of user instructions to 1 per user - // if a user instruction already exists for the user, we get the id and update it - this.dependencies.logger.debug('Adding user instruction entry'); - const existingId = await this.dependencies.knowledgeBaseService.getPersonalUserInstructionId({ - isPublic: entry.public, - namespace: this.dependencies.namespace, - user: this.dependencies.user, - }); - - if (existingId) { - entry.id = existingId; - this.dependencies.logger.debug(`Updating user instruction with id "${existingId}"`); - } - - return this.dependencies.knowledgeBaseService.addEntry({ - namespace: this.dependencies.namespace, - user: this.dependencies.user, - entry: { - ...entry, - confidence: 'high', - is_correction: false, - type: KnowledgeBaseType.UserInstruction, - labels: {}, - role: KnowledgeBaseEntryRole.UserEntry, - }, - }); - }; - - addKnowledgeBaseEntry = async ({ - entry, - }: { - entry: Omit<KnowledgeBaseEntry, '@timestamp' | 'type'>; - }): Promise<void> => { - return this.dependencies.knowledgeBaseService.addEntry({ - namespace: this.dependencies.namespace, - user: this.dependencies.user, - entry: { - ...entry, - type: KnowledgeBaseType.Contextual, - }, - }); - }; - - getKnowledgeBaseEntries = async ({ - query, - sortBy, - sortDirection, - }: { - query: string; - sortBy: string; - sortDirection: 'asc' | 'desc'; - }) => { - return this.dependencies.knowledgeBaseService.getEntries({ query, sortBy, sortDirection }); - }; - - deleteKnowledgeBaseEntry = async (id: string) => { - return this.dependencies.knowledgeBaseService.deleteEntry({ id }); - }; - - getKnowledgeBaseUserInstructions = async () => { - return this.dependencies.knowledgeBaseService.getUserInstructions( - this.dependencies.namespace, - this.dependencies.user - ); - }; -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts deleted file mode 100644 index 1cf1cdc326fdf..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/service/knowledge_base_service/index.ts +++ /dev/null @@ -1,445 +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 { serverUnavailable } from '@hapi/boom'; -import type { CoreSetup, ElasticsearchClient, IUiSettingsClient } from '@kbn/core/server'; -import type { Logger } from '@kbn/logging'; -import { orderBy } from 'lodash'; -import { encode } from 'gpt-tokenizer'; -import { resourceNames } from '..'; -import { - Instruction, - KnowledgeBaseEntry, - KnowledgeBaseEntryRole, - KnowledgeBaseType, -} from '../../../common/types'; -import { getAccessQuery } from '../util/get_access_query'; -import { getCategoryQuery } from '../util/get_category_query'; -import { - createInferenceEndpoint, - deleteInferenceEndpoint, - getElserModelStatus, - isInferenceEndpointMissingOrUnavailable, -} from '../inference_endpoint'; -import { recallFromSearchConnectors } from './recall_from_search_connectors'; -import { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; -import { ObservabilityAIAssistantConfig } from '../../config'; - -interface Dependencies { - core: CoreSetup<ObservabilityAIAssistantPluginStartDependencies>; - esClient: { - asInternalUser: ElasticsearchClient; - }; - logger: Logger; - config: ObservabilityAIAssistantConfig; -} - -export interface RecalledEntry { - id: string; - text: string; - score: number | null; - is_correction?: boolean; - labels?: Record<string, string>; -} - -function throwKnowledgeBaseNotReady(body: any) { - throw serverUnavailable(`Knowledge base is not ready yet`, body); -} - -export class KnowledgeBaseService { - constructor(private readonly dependencies: Dependencies) {} - - async setup( - esClient: { - asCurrentUser: ElasticsearchClient; - asInternalUser: ElasticsearchClient; - }, - modelId: string | undefined - ) { - await deleteInferenceEndpoint({ esClient }).catch((e) => {}); // ensure existing inference endpoint is deleted - return createInferenceEndpoint({ esClient, logger: this.dependencies.logger, modelId }); - } - - async reset(esClient: { asCurrentUser: ElasticsearchClient }) { - try { - await deleteInferenceEndpoint({ esClient }); - } catch (error) { - if (isInferenceEndpointMissingOrUnavailable(error)) { - return; - } - throw error; - } - } - - private async recallFromKnowledgeBase({ - queries, - categories, - namespace, - user, - }: { - queries: Array<{ text: string; boost?: number }>; - categories?: string[]; - namespace: string; - user?: { name: string }; - }): Promise<RecalledEntry[]> { - const response = await this.dependencies.esClient.asInternalUser.search< - Pick<KnowledgeBaseEntry, 'text' | 'is_correction' | 'labels' | 'title'> & { doc_id?: string } - >({ - index: [resourceNames.aliases.kb], - query: { - bool: { - should: queries.map(({ text, boost = 1 }) => ({ - semantic: { - field: 'semantic_text', - query: text, - boost, - }, - })), - filter: [ - ...getAccessQuery({ - user, - namespace, - }), - ...getCategoryQuery({ categories }), - - // exclude user instructions - { bool: { must_not: { term: { type: KnowledgeBaseType.UserInstruction } } } }, - ], - }, - }, - size: 20, - _source: { - includes: ['text', 'is_correction', 'labels', 'doc_id', 'title'], - }, - }); - - return response.hits.hits.map((hit) => ({ - text: hit._source?.text!, - is_correction: hit._source?.is_correction, - labels: hit._source?.labels, - title: hit._source?.title ?? hit._source?.doc_id, // use `doc_id` as fallback title for backwards compatibility - score: hit._score!, - id: hit._id!, - })); - } - - recall = async ({ - user, - queries, - categories, - namespace, - esClient, - uiSettingsClient, - }: { - queries: Array<{ text: string; boost?: number }>; - categories?: string[]; - user?: { name: string }; - namespace: string; - esClient: { asCurrentUser: ElasticsearchClient; asInternalUser: ElasticsearchClient }; - uiSettingsClient: IUiSettingsClient; - }): Promise<RecalledEntry[]> => { - if (!this.dependencies.config.enableKnowledgeBase) { - return []; - } - - this.dependencies.logger.debug( - () => `Recalling entries from KB for queries: "${JSON.stringify(queries)}"` - ); - - const [documentsFromKb, documentsFromConnectors] = await Promise.all([ - this.recallFromKnowledgeBase({ - user, - queries, - categories, - namespace, - }).catch((error) => { - if (isInferenceEndpointMissingOrUnavailable(error)) { - throwKnowledgeBaseNotReady(error.body); - } - throw error; - }), - recallFromSearchConnectors({ - esClient, - uiSettingsClient, - queries, - core: this.dependencies.core, - logger: this.dependencies.logger, - }).catch((error) => { - this.dependencies.logger.debug('Error getting data from search indices'); - this.dependencies.logger.debug(error); - return []; - }), - ]); - - this.dependencies.logger.debug( - `documentsFromKb: ${JSON.stringify(documentsFromKb.slice(0, 5), null, 2)}` - ); - this.dependencies.logger.debug( - `documentsFromConnectors: ${JSON.stringify(documentsFromConnectors.slice(0, 5), null, 2)}` - ); - - const sortedEntries = orderBy( - documentsFromKb.concat(documentsFromConnectors), - 'score', - 'desc' - ).slice(0, 20); - - const MAX_TOKENS = 4000; - - let tokenCount = 0; - - const returnedEntries: RecalledEntry[] = []; - - for (const entry of sortedEntries) { - returnedEntries.push(entry); - tokenCount += encode(entry.text).length; - if (tokenCount >= MAX_TOKENS) { - break; - } - } - - const droppedEntries = sortedEntries.length - returnedEntries.length; - if (droppedEntries > 0) { - this.dependencies.logger.info(`Dropped ${droppedEntries} entries because of token limit`); - } - - return returnedEntries; - }; - - getUserInstructions = async ( - namespace: string, - user?: { name: string } - ): Promise<Array<Instruction & { public?: boolean }>> => { - if (!this.dependencies.config.enableKnowledgeBase) { - return []; - } - try { - const response = await this.dependencies.esClient.asInternalUser.search<KnowledgeBaseEntry>({ - index: resourceNames.aliases.kb, - query: { - bool: { - filter: [ - { - term: { - type: KnowledgeBaseType.UserInstruction, - }, - }, - ...getAccessQuery({ user, namespace }), - ], - }, - }, - size: 500, - _source: ['id', 'text', 'public'], - }); - - return response.hits.hits.map((hit) => ({ - id: hit._id!, - text: hit._source?.text ?? '', - public: hit._source?.public, - })); - } catch (error) { - this.dependencies.logger.error('Failed to load instructions from knowledge base'); - this.dependencies.logger.error(error); - return []; - } - }; - - getEntries = async ({ - query, - sortBy, - sortDirection, - }: { - query?: string; - sortBy?: string; - sortDirection?: 'asc' | 'desc'; - }): Promise<{ entries: KnowledgeBaseEntry[] }> => { - if (!this.dependencies.config.enableKnowledgeBase) { - return { entries: [] }; - } - try { - const response = await this.dependencies.esClient.asInternalUser.search< - KnowledgeBaseEntry & { doc_id?: string } - >({ - index: resourceNames.aliases.kb, - query: { - bool: { - filter: [ - // filter by search query - ...(query - ? [{ query_string: { query: `${query}*`, fields: ['doc_id', 'title'] } }] - : []), - { - // exclude user instructions - bool: { must_not: { term: { type: KnowledgeBaseType.UserInstruction } } }, - }, - ], - }, - }, - sort: - sortBy === 'title' - ? [ - { ['title.keyword']: { order: sortDirection } }, - { doc_id: { order: sortDirection } }, // sort by doc_id for backwards compatibility - ] - : [{ [String(sortBy)]: { order: sortDirection } }], - size: 500, - _source: { - includes: [ - 'title', - 'doc_id', - 'text', - 'is_correction', - 'labels', - 'confidence', - 'public', - '@timestamp', - 'role', - 'user.name', - 'type', - ], - }, - }); - - return { - entries: response.hits.hits.map((hit) => ({ - ...hit._source!, - title: hit._source!.title ?? hit._source!.doc_id, // use `doc_id` as fallback title for backwards compatibility - role: hit._source!.role ?? KnowledgeBaseEntryRole.UserEntry, - score: hit._score, - id: hit._id!, - })), - }; - } catch (error) { - if (isInferenceEndpointMissingOrUnavailable(error)) { - throwKnowledgeBaseNotReady(error.body); - } - throw error; - } - }; - - getPersonalUserInstructionId = async ({ - isPublic, - user, - namespace, - }: { - isPublic: boolean; - user?: { name: string; id?: string }; - namespace?: string; - }) => { - if (!this.dependencies.config.enableKnowledgeBase) { - return null; - } - const res = await this.dependencies.esClient.asInternalUser.search<KnowledgeBaseEntry>({ - index: resourceNames.aliases.kb, - query: { - bool: { - filter: [ - { term: { type: KnowledgeBaseType.UserInstruction } }, - { term: { public: isPublic } }, - ...getAccessQuery({ user, namespace }), - ], - }, - }, - size: 1, - _source: false, - }); - - return res.hits.hits[0]?._id; - }; - - getUuidFromDocId = async ({ - docId, - user, - namespace, - }: { - docId: string; - user?: { name: string; id?: string }; - namespace?: string; - }) => { - const query = { - bool: { - filter: [ - { term: { doc_id: docId } }, - - // exclude user instructions - { bool: { must_not: { term: { type: KnowledgeBaseType.UserInstruction } } } }, - - // restrict access to user's own entries - ...getAccessQuery({ user, namespace }), - ], - }, - }; - - const response = await this.dependencies.esClient.asInternalUser.search<KnowledgeBaseEntry>({ - size: 1, - index: resourceNames.aliases.kb, - query, - _source: false, - }); - - return response.hits.hits[0]?._id; - }; - - addEntry = async ({ - entry: { id, ...doc }, - user, - namespace, - }: { - entry: Omit<KnowledgeBaseEntry, '@timestamp'>; - user?: { name: string; id?: string }; - namespace?: string; - }): Promise<void> => { - if (!this.dependencies.config.enableKnowledgeBase) { - return; - } - - try { - await this.dependencies.esClient.asInternalUser.index({ - index: resourceNames.aliases.kb, - id, - document: { - '@timestamp': new Date().toISOString(), - ...doc, - ...(doc.text ? { semantic_text: doc.text } : {}), - user, - namespace, - }, - refresh: 'wait_for', - }); - } catch (error) { - if (isInferenceEndpointMissingOrUnavailable(error)) { - throwKnowledgeBaseNotReady(error.body); - } - throw error; - } - }; - - deleteEntry = async ({ id }: { id: string }): Promise<void> => { - try { - await this.dependencies.esClient.asInternalUser.delete({ - index: resourceNames.aliases.kb, - id, - refresh: 'wait_for', - }); - - return Promise.resolve(); - } catch (error) { - if (isInferenceEndpointMissingOrUnavailable(error)) { - throwKnowledgeBaseNotReady(error.body); - } - throw error; - } - }; - - getStatus = async () => { - return getElserModelStatus({ - esClient: this.dependencies.esClient, - logger: this.dependencies.logger, - config: this.dependencies.config, - }); - }; -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/server/types.ts b/x-pack/plugins/observability_solution/observability_ai_assistant/server/types.ts deleted file mode 100644 index ece417d968a13..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/server/types.ts +++ /dev/null @@ -1,67 +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 { FeaturesPluginStart, FeaturesPluginSetup } from '@kbn/features-plugin/server'; -import type { - PluginSetupContract as ActionsPluginSetup, - PluginStartContract as ActionsPluginStart, -} from '@kbn/actions-plugin/server'; -import type { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/server'; -import type { - TaskManagerSetupContract, - TaskManagerStartContract, -} from '@kbn/task-manager-plugin/server'; -import type { - DataViewsServerPluginSetup, - DataViewsServerPluginStart, -} from '@kbn/data-views-plugin/server'; -import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/server'; -import type { CloudSetup, CloudStart } from '@kbn/cloud-plugin/server'; -import type { ServerlessPluginSetup, ServerlessPluginStart } from '@kbn/serverless/server'; -import type { RuleRegistryPluginStartContract } from '@kbn/rule-registry-plugin/server'; -import type { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server'; -import type { InferenceServerStart } from '@kbn/inference-plugin/server'; -import type { ObservabilityAIAssistantService } from './service'; - -export interface ObservabilityAIAssistantServerSetup { - /** - * Returns a Observability AI Assistant service instance - */ - service: ObservabilityAIAssistantService; -} - -export interface ObservabilityAIAssistantServerStart { - /** - * Returns a Observability AI Assistant service instance - */ - service: ObservabilityAIAssistantService; -} - -export interface ObservabilityAIAssistantPluginSetupDependencies { - actions: ActionsPluginSetup; - security: SecurityPluginSetup; - features: FeaturesPluginSetup; - taskManager: TaskManagerSetupContract; - dataViews: DataViewsServerPluginSetup; - licensing: LicensingPluginSetup; - cloud?: CloudSetup; - serverless?: ServerlessPluginSetup; - alerting: AlertingServerSetup; -} - -export interface ObservabilityAIAssistantPluginStartDependencies { - actions: ActionsPluginStart; - security: SecurityPluginStart; - features: FeaturesPluginStart; - taskManager: TaskManagerStartContract; - dataViews: DataViewsServerPluginStart; - licensing: LicensingPluginStart; - ruleRegistry: RuleRegistryPluginStartContract; - cloud?: CloudStart; - serverless?: ServerlessPluginStart; - alerting: AlertingServerStart; - inference: InferenceServerStart; -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/tsconfig.json b/x-pack/plugins/observability_solution/observability_ai_assistant/tsconfig.json deleted file mode 100644 index 77b81c9c72882..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant/tsconfig.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "../../../typings/**/*", - "common/**/*", - "public/**/*", - "scripts/**/*", - "typings/**/*", - "public/**/*.json", - "server/**/*" - ], - "kbn_references": [ - "@kbn/i18n", - "@kbn/logging", - "@kbn/kibana-utils-plugin", - "@kbn/core-analytics-browser", - "@kbn/core", - "@kbn/server-route-repository", - "@kbn/server-route-repository-client", - "@kbn/actions-plugin", - "@kbn/licensing-plugin", - "@kbn/std", - "@kbn/utility-types-jest", - "@kbn/kibana-react-plugin", - "@kbn/shared-ux-utility", - "@kbn/security-plugin", - "@kbn/config-schema", - "@kbn/utility-types", - "@kbn/data-views-plugin", - "@kbn/io-ts-utils", - "@kbn/rule-registry-plugin", - "@kbn/alerting-plugin", - "@kbn/spaces-plugin", - "@kbn/task-manager-plugin", - "@kbn/core-elasticsearch-server", - "@kbn/core-ui-settings-server", - "@kbn/apm-utils", - "@kbn/features-plugin", - "@kbn/cloud-plugin", - "@kbn/serverless", - "@kbn/core-elasticsearch-server", - "@kbn/core-ui-settings-server", - "@kbn/management-settings-ids", - "@kbn/ai-assistant-common", - "@kbn/inference-common", - "@kbn/core-lifecycle-server", - "@kbn/server-route-repository-utils", - "@kbn/inference-plugin" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/jest.config.js b/x-pack/plugins/observability_solution/observability_ai_assistant_app/jest.config.js deleted file mode 100644 index 7e3fb9e750448..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/jest.config.js +++ /dev/null @@ -1,25 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: [ - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant_app/public', - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant_app/common', - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant_app/server', - ], - setupFiles: [ - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook/jest_setup.js', - ], - collectCoverage: true, - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant_app/{common,public,server}/**/*.{js,ts,tsx}', - ], - - coverageReporters: ['html'], -}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/kibana.jsonc b/x-pack/plugins/observability_solution/observability_ai_assistant_app/kibana.jsonc deleted file mode 100644 index 957ca0272c087..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/kibana.jsonc +++ /dev/null @@ -1,47 +0,0 @@ -{ - "type": "plugin", - "id": "@kbn/observability-ai-assistant-app-plugin", - "owner": [ - "@elastic/obs-ai-assistant" - ], - "group": "observability", - "visibility": "private", - "plugin": { - "id": "observabilityAIAssistantApp", - "browser": true, - "server": true, - "configPath": [ - "xpack", - "observabilityAIAssistantApp" - ], - "requiredPlugins": [ - "aiAssistantManagementSelection", - "observabilityAIAssistant", - "observabilityShared", - "observability", - "actions", - "data", - "dataViews", - "lens", - "ruleRegistry", - "uiActions", - "triggersActionsUi", - "share", - "licensing", - "ml", - "alerting", - "features", - "inference", - "logsDataAccess", - "llmTasks" - ], - "optionalPlugins": [ - "cloud" - ], - "requiredBundles": [ - "kibanaReact", - "esqlDataGrid" - ], - "extraPublicDirs": [] - } -} \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/charts/spark_plot.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/charts/spark_plot.tsx deleted file mode 100644 index ddb57a127fe19..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/charts/spark_plot.tsx +++ /dev/null @@ -1,108 +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 { - BarSeries, - Chart, - CurveType, - LineSeries, - PartialTheme, - ScaleType, - Settings, - Tooltip, - LineAnnotation, - AnnotationDomainType, - Position, -} from '@elastic/charts'; -import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { useChartTheme } from '../../hooks/use_chart_theme'; - -export function SparkPlot({ - type, - timeseries, - annotations, -}: { - type: 'line' | 'bar'; - timeseries: Array<{ x: number; y: number | null }>; - annotations?: Array<{ - id: string; - x: number; - color: string; - icon: React.ReactNode; - label: string; - }>; -}) { - const defaultChartTheme = useChartTheme(); - - const sparkplotChartTheme: PartialTheme = { - chartMargins: { left: 0, right: 0, top: 0, bottom: 0 }, - chartPaddings: { - top: 12, - bottom: 12, - }, - lineSeriesStyle: { - point: { opacity: 0 }, - }, - areaSeriesStyle: { - point: { opacity: 0 }, - }, - }; - - return ( - <Chart - size={{ - width: 128, - height: 64, - }} - > - <Settings - theme={[sparkplotChartTheme, ...defaultChartTheme.theme]} - baseTheme={defaultChartTheme.baseTheme} - showLegend={false} - locale={i18n.getLocale()} - /> - <Tooltip type="none" /> - {type && type === 'bar' ? ( - <BarSeries - id="Sparkbar" - xScaleType={ScaleType.Linear} - yScaleType={ScaleType.Linear} - xAccessor="x" - yAccessors={['y']} - data={timeseries} - /> - ) : ( - <LineSeries - id="Sparkline" - xScaleType={ScaleType.Time} - yScaleType={ScaleType.Linear} - xAccessor={'x'} - yAccessors={['y']} - data={timeseries} - curve={CurveType.CURVE_MONOTONE_X} - /> - )} - {annotations?.map((annotation) => { - return ( - <LineAnnotation - id={annotation.id} - dataValues={[{ dataValue: annotation.x, header: annotation.label }]} - domainType={AnnotationDomainType.XDomain} - marker={annotation.icon} - markerPosition={Position.Bottom} - style={{ - line: { - strokeWidth: 2, - stroke: annotation.color, - }, - }} - /> - ); - })} - </Chart> - ); -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/index.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/index.ts deleted file mode 100644 index 5de1c30de7c4c..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/index.ts +++ /dev/null @@ -1,23 +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 { PluginInitializer, PluginInitializerContext } from '@kbn/core/public'; -import { ConfigSchema, ObservabilityAIAssistantAppPlugin } from './plugin'; -import type { - ObservabilityAIAssistantAppPluginSetupDependencies, - ObservabilityAIAssistantAppPluginStartDependencies, - ObservabilityAIAssistantAppPublicSetup, - ObservabilityAIAssistantAppPublicStart, -} from './types'; - -export const plugin: PluginInitializer< - ObservabilityAIAssistantAppPublicSetup, - ObservabilityAIAssistantAppPublicStart, - ObservabilityAIAssistantAppPluginSetupDependencies, - ObservabilityAIAssistantAppPluginStartDependencies -> = (pluginInitializerContext: PluginInitializerContext<ConfigSchema>) => - new ObservabilityAIAssistantAppPlugin(pluginInitializerContext); diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/plugin.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/plugin.tsx deleted file mode 100644 index cd1285b0017ce..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/plugin.tsx +++ /dev/null @@ -1,143 +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 React from 'react'; -import ReactDOM from 'react-dom'; -import { - type AppMountParameters, - DEFAULT_APP_CATEGORIES, - type CoreSetup, - type CoreStart, - type Plugin, - type PluginInitializerContext, -} from '@kbn/core/public'; -import type { Logger } from '@kbn/logging'; -import { i18n } from '@kbn/i18n'; -import { AI_ASSISTANT_APP_ID } from '@kbn/deeplinks-observability'; -import { createAppService, AIAssistantAppService } from '@kbn/ai-assistant'; -import type { - ObservabilityAIAssistantAppPluginSetupDependencies, - ObservabilityAIAssistantAppPluginStartDependencies, - ObservabilityAIAssistantAppPublicSetup, - ObservabilityAIAssistantAppPublicStart, -} from './types'; -import { getObsAIAssistantConnectorType } from './rule_connector'; -import { NavControlInitiator } from './components/nav_control/lazy_nav_control'; - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ConfigSchema {} - -export class ObservabilityAIAssistantAppPlugin - implements - Plugin< - ObservabilityAIAssistantAppPublicSetup, - ObservabilityAIAssistantAppPublicStart, - ObservabilityAIAssistantAppPluginSetupDependencies, - ObservabilityAIAssistantAppPluginStartDependencies - > -{ - logger: Logger; - appService: AIAssistantAppService | undefined; - isServerless: boolean; - - constructor(context: PluginInitializerContext<ConfigSchema>) { - this.logger = context.logger.get(); - this.isServerless = context.env.packageInfo.buildFlavor === 'serverless'; - } - - setup( - coreSetup: CoreSetup, - _: ObservabilityAIAssistantAppPluginSetupDependencies - ): ObservabilityAIAssistantAppPublicSetup { - coreSetup.application.register({ - id: AI_ASSISTANT_APP_ID, - title: i18n.translate('xpack.observabilityAiAssistant.appTitle', { - defaultMessage: 'Observability AI Assistant', - }), - euiIconType: 'logoObservability', - appRoute: '/app/observabilityAIAssistant', - category: DEFAULT_APP_CATEGORIES.observability, - visibleIn: [], - deepLinks: [ - { - id: 'conversations', - title: i18n.translate('xpack.observabilityAiAssistant.conversationsDeepLinkTitle', { - defaultMessage: 'Conversations', - }), - path: '/conversations/new', - }, - ], - mount: async (appMountParameters: AppMountParameters<unknown>) => { - // Load application bundle and Get start services - const [{ Application }, [coreStart, pluginsStart]] = await Promise.all([ - import('./application'), - coreSetup.getStartServices() as Promise< - [CoreStart, ObservabilityAIAssistantAppPluginStartDependencies, unknown] - >, - ]); - - ReactDOM.render( - <Application - {...appMountParameters} - service={this.appService!} - coreStart={coreStart} - pluginsStart={pluginsStart as ObservabilityAIAssistantAppPluginStartDependencies} - />, - appMountParameters.element - ); - - return () => { - ReactDOM.unmountComponentAtNode(appMountParameters.element); - }; - }, - }); - - return {}; - } - - start( - coreStart: CoreStart, - pluginsStart: ObservabilityAIAssistantAppPluginStartDependencies - ): ObservabilityAIAssistantAppPublicStart { - const appService = (this.appService = createAppService({ - pluginsStart, - })); - const isEnabled = appService.isEnabled(); - if (isEnabled) { - coreStart.chrome.navControls.registerRight({ - mount: (element) => { - ReactDOM.render( - <NavControlInitiator - appService={appService} - coreStart={coreStart} - pluginsStart={pluginsStart} - isServerless={this.isServerless} - />, - element, - () => {} - ); - - return () => {}; - }, - // right before the user profile - order: 1001, - }); - } - - const service = pluginsStart.observabilityAIAssistant.service; - - service.register(async ({ registerRenderFunction }) => { - const { registerFunctions } = await import('./functions'); - - await registerFunctions({ pluginsStart, registerRenderFunction }); - }); - - pluginsStart.triggersActionsUi.actionTypeRegistry.register( - getObsAIAssistantConnectorType(service) - ); - return {}; - } -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/types.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/types.ts deleted file mode 100644 index 398ef5f3afe4c..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/types.ts +++ /dev/null @@ -1,65 +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 { LensPublicSetup, LensPublicStart } from '@kbn/lens-plugin/public'; -import type { - DataViewsPublicPluginSetup, - DataViewsPublicPluginStart, -} from '@kbn/data-views-plugin/public'; -import type { UiActionsSetup, UiActionsStart } from '@kbn/ui-actions-plugin/public'; -import type { - ObservabilityAIAssistantPublicSetup, - ObservabilityAIAssistantPublicStart, -} from '@kbn/observability-ai-assistant-plugin/public'; -import type { SharePluginSetup, SharePluginStart } from '@kbn/share-plugin/public'; -import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/public'; -import type { - ObservabilitySharedPluginSetup, - ObservabilitySharedPluginStart, -} from '@kbn/observability-shared-plugin/public'; -import type { MlPluginSetup, MlPluginStart } from '@kbn/ml-plugin/public'; -import type { - TriggersAndActionsUIPublicPluginSetup, - TriggersAndActionsUIPublicPluginStart, -} from '@kbn/triggers-actions-ui-plugin/public'; -import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; -import type { - AIAssistantManagementSelectionPluginPublicStart, - AIAssistantManagementSelectionPluginPublicSetup, -} from '@kbn/ai-assistant-management-plugin/public'; - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ObservabilityAIAssistantAppPublicStart {} -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ObservabilityAIAssistantAppPublicSetup {} - -export interface ObservabilityAIAssistantAppPluginStartDependencies { - licensing: LicensingPluginStart; - share: SharePluginStart; - lens: LensPublicStart; - dataViews: DataViewsPublicPluginStart; - uiActions: UiActionsStart; - observabilityAIAssistant: ObservabilityAIAssistantPublicStart; - observabilityShared: ObservabilitySharedPluginStart; - ml: MlPluginStart; - triggersActionsUi: TriggersAndActionsUIPublicPluginStart; - data: DataPublicPluginStart; - aiAssistantManagementSelection: AIAssistantManagementSelectionPluginPublicStart; -} - -export interface ObservabilityAIAssistantAppPluginSetupDependencies { - licensing: LicensingPluginSetup; - share: SharePluginSetup; - lens: LensPublicSetup; - dataViews: DataViewsPublicPluginSetup; - uiActions: UiActionsSetup; - observabilityAIAssistant: ObservabilityAIAssistantPublicSetup; - observabilityShared: ObservabilitySharedPluginSetup; - ml: MlPluginSetup; - triggersActionsUi: TriggersAndActionsUIPublicPluginSetup; - aiAssistantManagementSelection: AIAssistantManagementSelectionPluginPublicSetup; -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/README.md b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/README.md deleted file mode 100644 index 0e5bc22fe7c75..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Observability AI Assistant Evaluation Framework - -## Overview - -This tool is developed for our team working on the Elastic Observability platform, specifically focusing on evaluating the Observability AI Assistant. It simplifies scripting and evaluating various scenarios with the Large Language Model (LLM) integration. - -## Setup requirements - -- An Elasticsearch instance -- A Kibana instance -- At least one .gen-ai connector set up - -## Running evaluations - -Run the tool using: - -`$ node x-pack/plugins/observability_solution/observability_ai_assistant/scripts/evaluation/index.js` - -This will evaluate all existing scenarios, and write the evaluation results to the terminal. - -### Configuration - -#### Kibana and Elasticsearch - -By default, the tool will look for a Kibana instance running locally (at `http://localhost:5601`, which is the default address for running Kibana in development mode). It will also attempt to read the Kibana config file for the Elasticsearch address & credentials. If you want to override these settings, use `--kibana` and `--es`. Only basic auth is supported, e.g. `--kibana http://username:password@localhost:5601`. If you want to use a specific space, use `--spaceId` - -#### Connector - -Use `--connectorId` to specify a `.gen-ai` or `.bedrock` connector to use. If none are given, it will prompt you to select a connector based on the ones that are available. If only a single supported connector is found, it will be used without prompting. - -#### Persisting conversations - -By default, completed conversations are not persisted. If you do want to persist them, for instance for reviewing purposes, set the `--persist` flag to store them. This will also generate a clickable link in the output of the evaluation that takes you to the conversation. - -If you want to clear conversations on startup, use the `--clear` flag. This only works when `--persist` is enabled. If `--spaceId` is set, only conversations for the current space will be cleared. - -When storing conversations, the name of the scenario is used as a title. Set the `--autoTitle` flag to have the LLM generate a title for you. diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/read_kibana_config.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/read_kibana_config.ts deleted file mode 100644 index fca94a8d57d05..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/read_kibana_config.ts +++ /dev/null @@ -1,44 +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 path from 'path'; -import fs from 'fs'; -import yaml from 'js-yaml'; -import { identity, pickBy } from 'lodash'; - -export type KibanaConfig = ReturnType<typeof readKibanaConfig>; - -export const readKibanaConfig = () => { - const kibanaConfigDir = path.join(__filename, '../../../../../../../config'); - const kibanaDevConfig = path.join(kibanaConfigDir, 'kibana.dev.yml'); - const kibanaConfig = path.join(kibanaConfigDir, 'kibana.yml'); - - const loadedKibanaConfig = (yaml.load( - fs.readFileSync(fs.existsSync(kibanaDevConfig) ? kibanaDevConfig : kibanaConfig, 'utf8') - ) || {}) as {}; - - const cliEsCredentials = pickBy( - { - 'elasticsearch.username': process.env.ELASTICSEARCH_USERNAME, - 'elasticsearch.password': process.env.ELASTICSEARCH_PASSWORD, - 'elasticsearch.hosts': process.env.ELASTICSEARCH_HOST, - }, - identity - ) as { - 'elasticsearch.username'?: string; - 'elasticsearch.password'?: string; - 'elasticsearch.hosts'?: string; - }; - - return { - 'elasticsearch.hosts': 'http://localhost:9200', - 'elasticsearch.username': 'elastic', - 'elasticsearch.password': 'changeme', - ...loadedKibanaConfig, - ...cliEsCredentials, - }; -}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/types.ts b/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/types.ts deleted file mode 100644 index 0a3fc6d9dc12d..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/types.ts +++ /dev/null @@ -1,75 +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 { - PluginSetupContract as ActionsPluginSetup, - PluginStartContract as ActionsPluginStart, -} from '@kbn/actions-plugin/server'; -import type { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server'; -import type { - DataViewsServerPluginSetup, - DataViewsServerPluginStart, -} from '@kbn/data-views-plugin/server'; -import type { FeaturesPluginStart, FeaturesPluginSetup } from '@kbn/features-plugin/server'; -import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/server'; -import type { - ObservabilityAIAssistantServerSetup, - ObservabilityAIAssistantServerStart, -} from '@kbn/observability-ai-assistant-plugin/server'; -import type { - RuleRegistryPluginSetupContract, - RuleRegistryPluginStartContract, -} from '@kbn/rule-registry-plugin/server'; -import type { ServerlessPluginSetup, ServerlessPluginStart } from '@kbn/serverless/server'; -import type { - TaskManagerSetupContract, - TaskManagerStartContract, -} from '@kbn/task-manager-plugin/server'; -import type { CloudSetup, CloudStart } from '@kbn/cloud-plugin/server'; -import type { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/server'; -import type { ObservabilityPluginSetup } from '@kbn/observability-plugin/server'; -import type { InferenceServerStart, InferenceServerSetup } from '@kbn/inference-plugin/server'; -import type { LogsDataAccessPluginStart } from '@kbn/logs-data-access-plugin/server'; -import type { LlmTasksPluginStart } from '@kbn/llm-tasks-plugin/server'; - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ObservabilityAIAssistantAppServerStart {} -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ObservabilityAIAssistantAppServerSetup {} - -export interface ObservabilityAIAssistantAppPluginStartDependencies { - observabilityAIAssistant: ObservabilityAIAssistantServerStart; - ruleRegistry: RuleRegistryPluginStartContract; - alerting: AlertingServerStart; - licensing: LicensingPluginStart; - actions: ActionsPluginStart; - security: SecurityPluginStart; - features: FeaturesPluginStart; - taskManager: TaskManagerStartContract; - dataViews: DataViewsServerPluginStart; - cloud?: CloudStart; - serverless?: ServerlessPluginStart; - inference: InferenceServerStart; - logsDataAccess: LogsDataAccessPluginStart; - llmTasks: LlmTasksPluginStart; -} - -export interface ObservabilityAIAssistantAppPluginSetupDependencies { - observabilityAIAssistant: ObservabilityAIAssistantServerSetup; - ruleRegistry: RuleRegistryPluginSetupContract; - alerting: AlertingServerSetup; - licensing: LicensingPluginSetup; - actions: ActionsPluginSetup; - security: SecurityPluginSetup; - features: FeaturesPluginSetup; - taskManager: TaskManagerSetupContract; - dataViews: DataViewsServerPluginSetup; - observability: ObservabilityPluginSetup; - cloud?: CloudSetup; - serverless?: ServerlessPluginSetup; - inference: InferenceServerSetup; -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/tsconfig.json b/x-pack/plugins/observability_solution/observability_ai_assistant_app/tsconfig.json deleted file mode 100644 index e0a520fb574c7..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/tsconfig.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "../../../typings/**/*", - "common/**/*", - "public/**/*", - "scripts/**/*", - "typings/**/*", - "public/**/*.json", - "server/**/*" - ], - "kbn_references": [ - "@kbn/es-types", - "@kbn/observability-ai-assistant-plugin", - "@kbn/field-formats-plugin", - "@kbn/core", - "@kbn/typed-react-router-config", - "@kbn/i18n", - "@kbn/management-settings-ids", - "@kbn/triggers-actions-ui-plugin", - "@kbn/shared-ux-utility", - "@kbn/data-views-plugin", - "@kbn/lens-embeddable-utils", - "@kbn/lens-plugin", - "@kbn/expressions-plugin", - "@kbn/ui-actions-plugin", - "@kbn/esql-utils", - "@kbn/visualization-utils", - "@kbn/ai-assistant-management-plugin", - "@kbn/kibana-react-plugin", - "@kbn/licensing-plugin", - "@kbn/logging", - "@kbn/deeplinks-observability", - "@kbn/share-plugin", - "@kbn/observability-shared-plugin", - "@kbn/ml-plugin", - "@kbn/data-plugin", - "@kbn/react-kibana-context-theme", - "@kbn/shared-ux-link-redirect-app", - "@kbn/dev-cli-runner", - "@kbn/tooling-log", - "@kbn/babel-register", - "@kbn/expect", - "@kbn/apm-synthtrace-client", - "@kbn/alerting-plugin", - "@kbn/apm-synthtrace", - "@kbn/esql-datagrid", - "@kbn/alerting-comparators", - "@kbn/core-lifecycle-browser", - "@kbn/inference-plugin", - "@kbn/ai-assistant", - "@kbn/apm-utils", - "@kbn/config-schema", - "@kbn/es-query", - "@kbn/rule-registry-plugin", - "@kbn/esql-validation-autocomplete", - "@kbn/esql-ast", - "@kbn/field-types", - "@kbn/security-plugin", - "@kbn/observability-plugin", - "@kbn/actions-plugin", - "@kbn/stack-connectors-plugin", - "@kbn/features-plugin", - "@kbn/serverless", - "@kbn/task-manager-plugin", - "@kbn/cloud-plugin", - "@kbn/logs-data-access-plugin", - "@kbn/ai-assistant-common", - "@kbn/inference-common", - "@kbn/llm-tasks-plugin", - "@kbn/product-doc-common", - ], - "exclude": [ - "target/**/*" - ] -} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/jest.config.js b/x-pack/plugins/observability_solution/observability_ai_assistant_management/jest.config.js deleted file mode 100644 index bbe2bd0b6266e..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_management/jest.config.js +++ /dev/null @@ -1,16 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant_management'], - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/observability_ai_assistant_management/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/tsconfig.json b/x-pack/plugins/observability_solution/observability_ai_assistant_management/tsconfig.json deleted file mode 100644 index 7b78d52c64806..0000000000000 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_management/tsconfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/home-plugin", - "@kbn/kibana-react-plugin", - "@kbn/management-plugin", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/typed-react-router-config", - "@kbn/core-chrome-browser", - "@kbn/observability-ai-assistant-plugin", - "@kbn/serverless", - "@kbn/management-settings-components-field-row", - "@kbn/observability-shared-plugin", - "@kbn/config-schema", - "@kbn/core-ui-settings-common", - "@kbn/logs-data-access-plugin", - "@kbn/core-plugins-browser", - "@kbn/ai-assistant", - "@kbn/core-plugins-server", - "@kbn/product-doc-base-plugin" - ], - "exclude": [ - "target/**/*" - ] -} diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/emotion.d.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/emotion.d.ts new file mode 100644 index 0000000000000..213178080e536 --- /dev/null +++ b/x-pack/plugins/observability_solution/observability_logs_explorer/emotion.d.ts @@ -0,0 +1,14 @@ +/* + * 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 '@emotion/react'; +import type { UseEuiTheme } from '@elastic/eui'; + +declare module '@emotion/react' { + // eslint-disable-next-line @typescript-eslint/no-empty-interface + export interface Theme extends UseEuiTheme {} +} diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/public/components/logs_explorer_top_nav_menu.tsx b/x-pack/plugins/observability_solution/observability_logs_explorer/public/components/logs_explorer_top_nav_menu.tsx index 0020df30b8708..0d0adc23f77c8 100644 --- a/x-pack/plugins/observability_solution/observability_logs_explorer/public/components/logs_explorer_top_nav_menu.tsx +++ b/x-pack/plugins/observability_solution/observability_logs_explorer/public/components/logs_explorer_top_nav_menu.tsx @@ -11,12 +11,12 @@ import { EuiHeaderLinks, EuiHeaderSection, EuiHeaderSectionItem, + useEuiTheme, } from '@elastic/eui'; import { css } from '@emotion/react'; import styled from '@emotion/styled'; import { HeaderMenuPortal } from '@kbn/observability-shared-plugin/public'; import { toMountPoint } from '@kbn/react-kibana-mount'; -import { euiThemeVars } from '@kbn/ui-theme'; import { LogsExplorerTabs } from '@kbn/discover-plugin/public'; import React, { useEffect, useState } from 'react'; import useObservable from 'react-use/lib/useObservable'; @@ -44,12 +44,13 @@ export const LogsExplorerTopNavMenu = () => { }; const ProjectTopNav = () => { + const { euiTheme } = useEuiTheme(); const { services } = useKibanaContextForPlugin(); return ( <EuiHeader data-test-subj="logsExplorerHeaderMenu" - css={{ boxShadow: 'none', backgroundColor: euiThemeVars.euiPageBackgroundColor }} + css={{ boxShadow: 'none', backgroundColor: euiTheme.colors.backgroundBasePlain }} > <EuiHeaderSection> <EuiHeaderSectionItem> @@ -59,7 +60,7 @@ const ProjectTopNav = () => { <EuiHeaderSection side="right" css={css` - gap: ${euiThemeVars.euiSizeM}; + gap: ${euiTheme.size.m}; `} > <EuiHeaderSectionItem> @@ -85,6 +86,7 @@ const ProjectTopNav = () => { }; const ClassicTopNav = () => { + const { euiTheme } = useEuiTheme(); const { services: { appParams: { setHeaderActionMenu }, @@ -110,7 +112,7 @@ const ClassicTopNav = () => { <EuiHeaderSection data-test-subj="logsExplorerHeaderMenu" css={css` - margin-left: ${euiThemeVars.euiSizeM}; + margin-left: ${euiTheme.size.m}; `} > <EuiHeaderSectionItem> @@ -127,7 +129,7 @@ const ClassicTopNav = () => { chrome.setBreadcrumbsAppendExtension(previousAppendExtension); } }; - }, [chrome, i18nStart, previousAppendExtension, theme]); + }, [chrome, i18nStart, previousAppendExtension, theme, euiTheme]); return ( <HeaderMenuPortal setHeaderActionMenu={setHeaderActionMenu} theme$={theme.theme$}> @@ -151,9 +153,9 @@ const ClassicTopNav = () => { }; const VerticalRule = styled.span` - width: 1px; + width: ${(props) => props.theme.euiTheme.border.width.thin}; height: 20px; - background-color: ${euiThemeVars.euiColorLightShade}; + background-color: ${(props) => props.theme.euiTheme.colors.borderBaseSubdued}; `; const ConditionalVerticalRule = ({ Component }: { Component: JSX.Element | null }) => diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/tsconfig.json b/x-pack/plugins/observability_solution/observability_logs_explorer/tsconfig.json index 443d4ef8f0de7..7b786ae5bc7ed 100644 --- a/x-pack/plugins/observability_solution/observability_logs_explorer/tsconfig.json +++ b/x-pack/plugins/observability_solution/observability_logs_explorer/tsconfig.json @@ -8,7 +8,8 @@ "common/**/*", "public/**/*", "server/**/*", - ".storybook/**/*.tsx" + ".storybook/**/*.tsx", + "emotion.d.ts", ], "kbn_references": [ "@kbn/config-schema", @@ -31,7 +32,6 @@ "@kbn/share-plugin", "@kbn/shared-ux-router", "@kbn/shared-ux-utility", - "@kbn/ui-theme", "@kbn/xstate-utils", "@kbn/router-utils", "@kbn/observability-ai-assistant-plugin", diff --git a/x-pack/plugins/observability_solution/observability_onboarding/e2e/kibana.jsonc b/x-pack/plugins/observability_solution/observability_onboarding/e2e/kibana.jsonc index 655ccc396d3fe..033d72a02427f 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/e2e/kibana.jsonc +++ b/x-pack/plugins/observability_solution/observability_onboarding/e2e/kibana.jsonc @@ -1,10 +1,7 @@ { "type": "test-helper", "id": "@kbn/observability-onboarding-e2e", - "owner": [ - "@elastic/obs-ux-logs-team", - "@elastic/obs-ux-onboarding-team" - ], + "owner": ["@elastic/obs-ux-logs-team"], "group": "observability", "visibility": "private", "devOnly": true diff --git a/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc b/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc index 8c24f5376a4bb..b1c3856839f99 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc +++ b/x-pack/plugins/observability_solution/observability_onboarding/kibana.jsonc @@ -1,10 +1,7 @@ { "type": "plugin", "id": "@kbn/observability-onboarding-plugin", - "owner": [ - "@elastic/obs-ux-logs-team", - "@elastic/obs-ux-onboarding-team" - ], + "owner": ["@elastic/obs-ux-logs-team"], "group": "observability", "visibility": "private", "plugin": { diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/api_key_banner.tsx b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/api_key_banner.tsx index 7c5cf36a46b30..bbcf20935b21a 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/api_key_banner.tsx +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/api_key_banner.tsx @@ -83,7 +83,7 @@ export function ApiKeyBanner({ data-test-subj="observabilityOnboardingApiKeySuccessCalloutButton" iconType="copyClipboard" onClick={copy} - color="success" + color="primary" css={{ '> svg.euiIcon': { borderRadius: '0 !important', diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/configure_logs.tsx b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/configure_logs.tsx index 715116a00b28e..1c5045c893bef 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/configure_logs.tsx +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/configure_logs.tsx @@ -284,7 +284,7 @@ export function ConfigureLogsContent() { id="advancedSettingsAccordion" css={{ '.euiAccordion__buttonContent': { - color: euiTheme.colors.primaryText, + color: euiTheme.colors.textPrimary, fontSize: xsFontSize, }, '.euiAccordion__arrow svg': { diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/install_elastic_agent.tsx b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/install_elastic_agent.tsx index bb44d3ec38458..51101ead8c339 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/install_elastic_agent.tsx +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/custom_logs/install_elastic_agent.tsx @@ -220,7 +220,7 @@ export function InstallElasticAgent() { panelFooter={[ <EuiButton data-test-subj="obltOnboardingExploreLogs" - color="success" + color="primary" fill iconType="magnifyWithPlus" onClick={onContinue} diff --git a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/optional_form_row.tsx b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/optional_form_row.tsx index ca92e441a2725..83efba6aa688b 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/optional_form_row.tsx +++ b/x-pack/plugins/observability_solution/observability_onboarding/public/application/quickstart_flows/shared/optional_form_row.tsx @@ -23,7 +23,7 @@ export function OptionalFormRow(props: OptionalFormRowProps) { }, '.euiFormLabel > .euiFlexGroup > div:last-of-type': { fontWeight: 'normal', - color: euiTheme.colors.subduedText, + color: euiTheme.colors.textSubdued, }, }} label={ diff --git a/x-pack/plugins/observability_solution/profiling/public/index.tsx b/x-pack/plugins/observability_solution/profiling/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/profiling/public/index.tsx rename to x-pack/plugins/observability_solution/profiling/public/index.ts diff --git a/x-pack/plugins/observability_solution/profiling/public/plugin.ts b/x-pack/plugins/observability_solution/profiling/public/plugin.ts new file mode 100644 index 0000000000000..752b9c92a2195 --- /dev/null +++ b/x-pack/plugins/observability_solution/profiling/public/plugin.ts @@ -0,0 +1,185 @@ +/* + * 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, + AppUpdater, + CoreSetup, + CoreStart, + DEFAULT_APP_CATEGORIES, + Plugin, +} from '@kbn/core/public'; +import { i18n } from '@kbn/i18n'; +import { NavigationSection } from '@kbn/observability-shared-plugin/public'; +import type { Location } from 'history'; +import { BehaviorSubject, combineLatest, from, map, take } from 'rxjs'; +import { OBLT_PROFILING_APP_ID } from '@kbn/deeplinks-observability'; +import { registerEmbeddables } from './embeddables/register_embeddables'; +import { getServices } from './services'; +import type { ProfilingPluginPublicSetupDeps, ProfilingPluginPublicStartDeps } from './types'; +import { ProfilingEmbeddablesDependencies } from './embeddables/profiling_embeddable_provider'; + +export type ProfilingPluginSetup = void; +export type ProfilingPluginStart = void; + +export class ProfilingPlugin + implements + Plugin< + ProfilingPluginSetup, + ProfilingPluginStart, + ProfilingPluginPublicSetupDeps, + ProfilingPluginPublicStartDeps + > +{ + public setup( + coreSetup: CoreSetup<ProfilingPluginPublicStartDeps>, + pluginsSetup: ProfilingPluginPublicSetupDeps + ) { + // Register an application into the side navigation menu + const links = [ + { + id: 'stacktraces', + title: i18n.translate('xpack.profiling.navigation.stacktracesLinkLabel', { + defaultMessage: 'Stacktraces', + }), + path: '/stacktraces', + }, + { + id: 'flamegraphs', + title: i18n.translate('xpack.profiling.navigation.flameGraphsLinkLabel', { + defaultMessage: 'Flamegraphs', + }), + path: '/flamegraphs', + }, + { + id: 'functions', + title: i18n.translate('xpack.profiling.navigation.functionsLinkLabel', { + defaultMessage: 'Functions', + }), + path: '/functions', + }, + ]; + + const kuerySubject = new BehaviorSubject<string>(''); + const appUpdater$ = new BehaviorSubject<AppUpdater>(() => ({})); + + const section$ = combineLatest([from(coreSetup.getStartServices()), kuerySubject]).pipe( + map(([[coreStart], kuery]) => { + if (coreStart.application.capabilities.profiling.show) { + let isSidebarEnabled = true; + coreStart.chrome + .getChromeStyle$() + .pipe(take(1)) + .subscribe((style) => (isSidebarEnabled = style === 'classic')); + + if (isSidebarEnabled) { + // classic navigation + const sections: NavigationSection[] = [ + { + label: i18n.translate('xpack.profiling.navigation.sectionLabel', { + defaultMessage: 'Universal Profiling', + }), + entries: links.map((link) => { + return { + app: OBLT_PROFILING_APP_ID, + label: link.title, + path: kuery ? `${link.path}?kuery=${kuery}` : link.path, + matchPath: (path) => { + return path.startsWith(link.path); + }, + }; + }), + sortKey: 700, + }, + ]; + return sections; + } else { + // solution navigation + appUpdater$.next(() => ({ + deepLinks: links.map((link) => ({ + ...link, + path: kuery ? `${link.path}?kuery=${encodeURIComponent(kuery)}` : link.path, + })), + })); + } + } + return []; + }) + ); + + pluginsSetup.observabilityShared.navigation.registerSections(section$); + + const profilingFetchServices = getServices(); + + coreSetup.application.register({ + id: OBLT_PROFILING_APP_ID, + title: 'Universal Profiling', + euiIconType: 'logoObservability', + appRoute: '/app/profiling', + category: DEFAULT_APP_CATEGORIES.observability, + deepLinks: links, + updater$: appUpdater$, + async mount({ element, history, theme$, setHeaderActionMenu }: AppMountParameters) { + const [coreStart, pluginsStart] = await coreSetup.getStartServices(); + + const { renderApp } = await import('./app'); + + function pushKueryToSubject(location: Location) { + const query = new URLSearchParams(location.search); + kuerySubject.next(query.get('kuery') ?? ''); + } + + pushKueryToSubject(history.location); + + history.listen(pushKueryToSubject); + + const unmount = renderApp( + { + profilingFetchServices, + coreStart, + coreSetup, + pluginsStart, + pluginsSetup, + history, + theme$, + setHeaderActionMenu, + }, + element + ); + + return () => { + unmount(); + kuerySubject.next(''); + }; + }, + }); + + const getProfilingEmbeddableDependencies = + async (): Promise<ProfilingEmbeddablesDependencies> => { + const [coreStart, pluginsStart] = await coreSetup.getStartServices(); + return { + coreStart, + coreSetup, + pluginsStart, + pluginsSetup, + profilingFetchServices, + }; + }; + + getProfilingEmbeddableDependencies().then((deps) => { + registerEmbeddables(deps); + }); + + return {}; + } + + public start(core: CoreStart) { + return {}; + } + + public stop() {} +} diff --git a/x-pack/plugins/observability_solution/profiling/public/plugin.tsx b/x-pack/plugins/observability_solution/profiling/public/plugin.tsx deleted file mode 100644 index fca4f8dcb4c6b..0000000000000 --- a/x-pack/plugins/observability_solution/profiling/public/plugin.tsx +++ /dev/null @@ -1,165 +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 { - AppMountParameters, - CoreSetup, - CoreStart, - DEFAULT_APP_CATEGORIES, - Plugin, -} from '@kbn/core/public'; -import { i18n } from '@kbn/i18n'; -import { NavigationSection } from '@kbn/observability-shared-plugin/public'; -import type { Location } from 'history'; -import { BehaviorSubject, combineLatest, from, map } from 'rxjs'; -import { OBLT_PROFILING_APP_ID } from '@kbn/deeplinks-observability'; -import { registerEmbeddables } from './embeddables/register_embeddables'; -import { getServices } from './services'; -import type { ProfilingPluginPublicSetupDeps, ProfilingPluginPublicStartDeps } from './types'; -import { ProfilingEmbeddablesDependencies } from './embeddables/profiling_embeddable_provider'; - -export type ProfilingPluginSetup = void; -export type ProfilingPluginStart = void; - -export class ProfilingPlugin - implements - Plugin< - ProfilingPluginSetup, - ProfilingPluginStart, - ProfilingPluginPublicSetupDeps, - ProfilingPluginPublicStartDeps - > -{ - public setup( - coreSetup: CoreSetup<ProfilingPluginPublicStartDeps>, - pluginsSetup: ProfilingPluginPublicSetupDeps - ) { - // Register an application into the side navigation menu - const links = [ - { - id: 'stacktraces', - title: i18n.translate('xpack.profiling.navigation.stacktracesLinkLabel', { - defaultMessage: 'Stacktraces', - }), - path: '/stacktraces', - }, - { - id: 'flamegraphs', - title: i18n.translate('xpack.profiling.navigation.flameGraphsLinkLabel', { - defaultMessage: 'Flamegraphs', - }), - path: '/flamegraphs', - }, - { - id: 'functions', - title: i18n.translate('xpack.profiling.navigation.functionsLinkLabel', { - defaultMessage: 'Functions', - }), - path: '/functions', - }, - ]; - - const kuerySubject = new BehaviorSubject<string>(''); - - const section$ = combineLatest([from(coreSetup.getStartServices()), kuerySubject]).pipe( - map(([[coreStart], kuery]) => { - if (coreStart.application.capabilities.profiling.show) { - const sections: NavigationSection[] = [ - { - label: i18n.translate('xpack.profiling.navigation.sectionLabel', { - defaultMessage: 'Universal Profiling', - }), - entries: links.map((link) => { - return { - app: OBLT_PROFILING_APP_ID, - label: link.title, - path: `${link.path}?kuery=${kuery ?? ''}`, - matchPath: (path) => { - return path.startsWith(link.path); - }, - }; - }), - sortKey: 700, - }, - ]; - return sections; - } - return []; - }) - ); - - pluginsSetup.observabilityShared.navigation.registerSections(section$); - - const profilingFetchServices = getServices(); - - coreSetup.application.register({ - id: OBLT_PROFILING_APP_ID, - title: 'Universal Profiling', - euiIconType: 'logoObservability', - appRoute: '/app/profiling', - category: DEFAULT_APP_CATEGORIES.observability, - deepLinks: links, - async mount({ element, history, theme$, setHeaderActionMenu }: AppMountParameters) { - const [coreStart, pluginsStart] = await coreSetup.getStartServices(); - - const { renderApp } = await import('./app'); - - function pushKueryToSubject(location: Location) { - const query = new URLSearchParams(location.search); - kuerySubject.next(query.get('kuery') ?? ''); - } - - pushKueryToSubject(history.location); - - history.listen(pushKueryToSubject); - - const unmount = renderApp( - { - profilingFetchServices, - coreStart, - coreSetup, - pluginsStart, - pluginsSetup, - history, - theme$, - setHeaderActionMenu, - }, - element - ); - - return () => { - unmount(); - kuerySubject.next(''); - }; - }, - }); - - const getProfilingEmbeddableDependencies = - async (): Promise<ProfilingEmbeddablesDependencies> => { - const [coreStart, pluginsStart] = await coreSetup.getStartServices(); - return { - coreStart, - coreSetup, - pluginsStart, - pluginsSetup, - profilingFetchServices, - }; - }; - - getProfilingEmbeddableDependencies().then((deps) => { - registerEmbeddables(deps); - }); - - return {}; - } - - public start(core: CoreStart) { - return {}; - } - - public stop() {} -} diff --git a/x-pack/plugins/observability_solution/slo/dev_docs/slo.md b/x-pack/plugins/observability_solution/slo/dev_docs/slo.md index a12f8822fc9e9..6286c47f2447d 100644 --- a/x-pack/plugins/observability_solution/slo/dev_docs/slo.md +++ b/x-pack/plugins/observability_solution/slo/dev_docs/slo.md @@ -8,7 +8,7 @@ Starting in 8.8, SLO is enabled by default. SLO is GA since 8.12 1. Data generation > [!TIP] -> The following commands uses [kbn-data-forge](../../../../packages/kbn-data-forge/README.md) to generate some data for developping or testing SLOs +> The following commands uses [kbn-data-forge](../../../../platform/packages/shared/kbn-data-forge/README.md) to generate some data for developping or testing SLOs Basic command to generate 7 days of data with a couple of services: ```sh diff --git a/x-pack/plugins/observability_solution/slo/e2e/page_objects/slo_app.tsx b/x-pack/plugins/observability_solution/slo/e2e/page_objects/slo_app.tsx index 5310bffb03d92..a859c789b4e37 100644 --- a/x-pack/plugins/observability_solution/slo/e2e/page_objects/slo_app.tsx +++ b/x-pack/plugins/observability_solution/slo/e2e/page_objects/slo_app.tsx @@ -7,7 +7,7 @@ import { Page } from '@elastic/synthetics'; import { loginPageProvider } from '@kbn/synthetics-e2e/page_objects/login'; import { utilsPageProvider } from '@kbn/synthetics-e2e/page_objects/utils'; -import { recordVideo } from '@kbn/synthetics-e2e/helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; export function sloAppPageProvider({ page, kibanaUrl }: { page: Page; kibanaUrl: string }) { page.setDefaultTimeout(60 * 1000); diff --git a/x-pack/plugins/observability_solution/slo/e2e/synthetics_run.ts b/x-pack/plugins/observability_solution/slo/e2e/synthetics_run.ts index 642b7ef4cff23..0d32aae207e4e 100644 --- a/x-pack/plugins/observability_solution/slo/e2e/synthetics_run.ts +++ b/x-pack/plugins/observability_solution/slo/e2e/synthetics_run.ts @@ -5,7 +5,7 @@ * 2.0. */ import { FtrConfigProviderContext } from '@kbn/test'; -import { SyntheticsRunner, argv } from '@kbn/synthetics-e2e'; +import { SyntheticsRunner, argv } from '@kbn/observability-synthetics-test-data'; const { headless, grep, bail: pauseOnError } = argv; diff --git a/x-pack/plugins/observability_solution/slo/e2e/tsconfig.json b/x-pack/plugins/observability_solution/slo/e2e/tsconfig.json index 6c4be7e101a02..68203a4db6013 100644 --- a/x-pack/plugins/observability_solution/slo/e2e/tsconfig.json +++ b/x-pack/plugins/observability_solution/slo/e2e/tsconfig.json @@ -12,5 +12,6 @@ "@kbn/ftr-common-functional-services", "@kbn/data-forge", "@kbn/synthetics-e2e", + "@kbn/observability-synthetics-test-data", ] } diff --git a/x-pack/plugins/observability_solution/slo/server/client/index.ts b/x-pack/plugins/observability_solution/slo/server/client/index.ts new file mode 100644 index 0000000000000..277aeb71399b1 --- /dev/null +++ b/x-pack/plugins/observability_solution/slo/server/client/index.ts @@ -0,0 +1,40 @@ +/* + * 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 { + ElasticsearchClient, + KibanaRequest, + SavedObjectsClientContract, +} from '@kbn/core/server'; +import { castArray, once } from 'lodash'; +import { getListOfSummaryIndices, getSloSettings } from '../services/slo_settings'; + +export interface SloClient { + getSummaryIndices(): Promise<string[]>; +} + +export function getSloClientWithRequest({ + esClient, + soClient, +}: { + request: KibanaRequest; + esClient: ElasticsearchClient; + soClient: SavedObjectsClientContract; +}): SloClient { + const getListOfSummaryIndicesOnce = once(async () => { + const settings = await getSloSettings(soClient); + + const { indices } = await getListOfSummaryIndices(esClient, settings); + + return castArray(indices); + }); + + return { + getSummaryIndices: async () => { + return await getListOfSummaryIndicesOnce(); + }, + }; +} diff --git a/x-pack/plugins/observability_solution/slo/server/index.ts b/x-pack/plugins/observability_solution/slo/server/index.ts index 76806ac4d16cd..b38956141137d 100644 --- a/x-pack/plugins/observability_solution/slo/server/index.ts +++ b/x-pack/plugins/observability_solution/slo/server/index.ts @@ -16,6 +16,10 @@ export async function plugin(ctx: PluginInitializerContext<SLOConfig>) { return new SLOPlugin(ctx); } +export type { SloClient } from './client'; + +export type { SLOServerSetup, SLOServerStart } from './types'; + export const config: PluginConfigDescriptor<SLOConfig> = { schema: configSchema, exposeToBrowser: { diff --git a/x-pack/plugins/observability_solution/slo/server/plugin.ts b/x-pack/plugins/observability_solution/slo/server/plugin.ts index 99cd4a2230a94..e7b25fe06ef32 100644 --- a/x-pack/plugins/observability_solution/slo/server/plugin.ts +++ b/x-pack/plugins/observability_solution/slo/server/plugin.ts @@ -9,6 +9,7 @@ import { CoreSetup, CoreStart, DEFAULT_APP_CATEGORIES, + KibanaRequest, Logger, Plugin, PluginInitializerContext, @@ -36,6 +37,7 @@ import type { SLOServerSetup, SLOServerStart, } from './types'; +import { getSloClientWithRequest } from './client'; const sloRuleTypes = [SLO_BURN_RATE_RULE_TYPE_ID]; @@ -179,6 +181,14 @@ export class SLOPlugin ?.start(plugins.taskManager, internalSoClient, internalEsClient) .catch(() => {}); - return {}; + return { + getSloClientWithRequest: (request: KibanaRequest) => { + return getSloClientWithRequest({ + request, + soClient: core.savedObjects.getScopedClient(request), + esClient: internalEsClient, + }); + }, + }; } } diff --git a/x-pack/plugins/observability_solution/slo/server/types.ts b/x-pack/plugins/observability_solution/slo/server/types.ts index 9a40547820182..5ec6e2c51e902 100644 --- a/x-pack/plugins/observability_solution/slo/server/types.ts +++ b/x-pack/plugins/observability_solution/slo/server/types.ts @@ -21,14 +21,17 @@ import { TaskManagerStartContract, } from '@kbn/task-manager-plugin/server'; import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; +import type { KibanaRequest } from '@kbn/core/server'; +import type { SloClient } from './client'; export type { SLOConfig } from '../common/config'; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface SLOServerSetup {} -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface SLOServerStart {} +export interface SLOServerStart { + getSloClientWithRequest: (request: KibanaRequest) => SloClient; +} export interface SLOPluginSetupDependencies { alerting: AlertingServerSetup; diff --git a/x-pack/plugins/observability_solution/synthetics/.buildkite/pipelines/flaky.sh b/x-pack/plugins/observability_solution/synthetics/.buildkite/pipelines/flaky.sh deleted file mode 100755 index 58c2c88a8d836..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/.buildkite/pipelines/flaky.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -UUID="$(cat /proc/sys/kernel/random/uuid)" -export UUID - -node x-pack/plugins/observability_solution/synthetics/.buildkite/pipelines/flaky.js | buildkite-agent pipeline upload diff --git a/x-pack/plugins/observability_solution/synthetics/README.md b/x-pack/plugins/observability_solution/synthetics/README.md deleted file mode 100644 index bdc078e8607d7..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# Uptime Monitoring - -## Purpose - -The purpose of this plugin is to provide users of Heartbeat more visibility of what's happening -in their infrastructure. - -## Layout - -There are three sections to the app, `common`, `public`, and `server`. - -### common - -Contains runtime types types, constants and a few other files. - -Notably, we use `io-ts`/`fp-ts` functions and types to help provide -additional runtime safety for our API requests/responses. - -### public - -We use Redux and associated tools for managing our app state. Components come in the usual `connect`ed and -presentational varieties. - -The `lib` directory controls bootstrapping code and adapter types. - -There is a `pages` directory; each view gets its own page component. - -The principal structure of the app is stored in `uptime_app.tsx`. - -### server - -The `lib` directory contains `adapters`, which are connections to external resources like Kibana -Server, Elasticsearch, etc. In addition, it contains domains, which are libraries that provide -functionality via adapters. - -The `requests` directory contains functions responsible for querying Elasticsearch and parsing its -responses. - -There's also a `rest_api` folder that defines the structure of the RESTful API endpoints. - -## Testing - -### Unit tests - -Documentation: https://www.elastic.co/guide/en/kibana/current/development-tests.html#_unit_testing - -``` -yarn test:jest x-pack/plugins/observability_solution/synthetics -``` - -### Functional tests - -In one shell, from **~/kibana/x-pack**: -`node scripts/functional_tests_server.js` - -In another shell, from **~kibana/x-pack**: -`node ../scripts/functional_test_runner.js --grep="{TEST_NAME}"`. - -#### API tests - -If instead you need to run API tests, start up the test server and then in another shell, from **~kibana/x-pack**: -`node ../scripts/functional_test_runner.js --config test/api_integration/config.ts --grep="{TEST_NAME}"`. - -You can update snapshots by prefixing the runner command with `env UPDATE_UPTIME_FIXTURES=1` - -You can access the functional test server's Kibana at `http://localhost:5620/`. - -You can login with username `elastic` and password `changeme` by default. - -If you want to freeze a UI or API test you can include an async call like `await new Promise(r => setTimeout(r, 1000 * 60))` -to freeze the execution for 60 seconds if you need to click around or check things in the state that is loaded. - -#### Running --ssl tests - -Some of our tests require there to be an SSL connection between Kibana and Elasticsearch. - -We can run these tests like described above, but with some special config. - -`node scripts/functional_tests_server.js --config=test/functional_with_es_ssl/config.ts` - -`node scripts/functional_test_runner.js --config=test/functional_with_es_ssl/config.ts` - -#### Running accessibility tests - -We maintain a suite of Accessibility tests (you may see them referred to elsewhere as `a11y` tests). - -These tests render each of our pages and ensure that the inputs and other elements contain the -attributes necessary to ensure all users are able to make use of Kibana (for example, users relying -on screen readers). - -The commands for running these tests are very similar to the other functional tests described above. - -From the `~/x-pack` directory: - -Start the server: `node scripts/functional_tests_server --config test/accessibility/config.ts` - -Run the uptime `a11y` tests: `node scripts/functional_test_runner.js --config test/accessibility/config.ts --grep=uptime` diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/README.md b/x-pack/plugins/observability_solution/synthetics/e2e/README.md deleted file mode 100644 index e8bf7414b70d3..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/e2e/README.md +++ /dev/null @@ -1,32 +0,0 @@ -## How to run these tests - -These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated -script for standing up the test server. - -### Start the server - -From `~/x-pack/plugins/observability_solution/synthetics/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you -with an example run command when it finishes. - -### Run the tests - -From the same directory you can now run `node e2e.js --runner`. - -In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. - - -## Uptime App Tests - -These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated -script for standing up the test server. - -### Start the server - -From `~/x-pack/plugins/observability_solution/synthetics/scripts`, run `node uptime_e2e.js --server`. Wait for the server to startup. It will provide you -with an example run command when it finishes. - -### Run the tests - -From the same directory you can now run `node node uptime_e2e.js --runner`. - -In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/config.ts b/x-pack/plugins/observability_solution/synthetics/e2e/config.ts deleted file mode 100644 index 8e1e97e5c1d37..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/e2e/config.ts +++ /dev/null @@ -1,84 +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 { FtrConfigProviderContext } from '@kbn/test'; -import { CA_CERT_PATH } from '@kbn/dev-utils'; -import { get } from 'lodash'; -import { commonFunctionalServices } from '@kbn/ftr-common-functional-services'; -import { commonFunctionalUIServices } from '@kbn/ftr-common-functional-ui-services'; - -import { readKibanaConfig } from './tasks/read_kibana_config'; -const MANIFEST_KEY = 'xpack.uptime.service.manifestUrl'; -const SERVICE_PASSWORD = 'xpack.uptime.service.password'; -const SERVICE_USERNAME = 'xpack.uptime.service.username'; - -async function config({ readConfigFile }: FtrConfigProviderContext) { - const kibanaCommonTestsConfig = await readConfigFile( - require.resolve('@kbn/test-suites-src/common/config') - ); - const xpackFunctionalTestsConfig = await readConfigFile( - require.resolve('@kbn/test-suites-xpack/functional/config.base') - ); - - const kibanaConfig = readKibanaConfig(); - - const manifestUrl = process.env.SYNTHETICS_SERVICE_MANIFEST ?? get(kibanaConfig, MANIFEST_KEY); - const serviceUsername = - process.env.SYNTHETICS_SERVICE_USERNAME ?? get(kibanaConfig, SERVICE_USERNAME); - const servicePassword = - process.env.SYNTHETICS_SERVICE_PASSWORD ?? get(kibanaConfig, SERVICE_PASSWORD); - - return { - ...kibanaCommonTestsConfig.getAll(), - - services: { - ...commonFunctionalServices, - ...commonFunctionalUIServices, - }, - - esTestCluster: { - ...xpackFunctionalTestsConfig.get('esTestCluster'), - serverArgs: [ - ...xpackFunctionalTestsConfig.get('esTestCluster.serverArgs'), - // define custom es server here - // API Keys is enabled at the top level - 'xpack.security.enabled=true', - 'xpack.ml.enabled=false', - ], - }, - - kbnTestServer: { - ...xpackFunctionalTestsConfig.get('kbnTestServer'), - sourceArgs: process.env.WATCH_ENABLED - ? [] - : [...xpackFunctionalTestsConfig.get('kbnTestServer.sourceArgs'), '--no-watch'], - serverArgs: [ - ...xpackFunctionalTestsConfig.get('kbnTestServer.serverArgs'), - '--csp.strict=false', - '--home.disableWelcomeScreen=true', - '--csp.warnLegacyBrowsers=false', - // define custom kibana server args here - `--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`, - // `--elasticsearch.ignoreVersionMismatch=${process.env.CI ? 'false' : 'true'}`, - `--elasticsearch.username=kibana_system`, - `--elasticsearch.password=changeme`, - '--xpack.reporting.enabled=false', - `--xpack.uptime.service.manifestUrl=${manifestUrl}`, - `--xpack.uptime.service.username=${ - process.env.SYNTHETICS_REMOTE_ENABLED - ? serviceUsername - : 'localKibanaIntegrationTestsUser' - }`, - `--xpack.uptime.service.password=${servicePassword}`, - '--uiSettings.overrides.observability:enableLegacyUptimeApp=true', - ], - }, - }; -} - -// eslint-disable-next-line import/no-default-export -export default config; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/test_reporter.ts b/x-pack/plugins/observability_solution/synthetics/e2e/helpers/test_reporter.ts deleted file mode 100644 index 198a038ec027f..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/test_reporter.ts +++ /dev/null @@ -1,229 +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 { Journey, Step } from '@elastic/synthetics/dist/dsl'; -import { Reporter, ReporterOptions } from '@elastic/synthetics'; -import { - JourneyEndResult, - JourneyStartResult, - StepEndResult, -} from '@elastic/synthetics/dist/common_types'; - -import { yellow, green, cyan, red, bold } from 'chalk'; - -// eslint-disable-next-line no-console -const log = console.log; - -import { performance } from 'perf_hooks'; -import * as fs from 'fs'; -import { gatherScreenshots } from '@elastic/synthetics/dist/reporters/json'; -import { CACHE_PATH } from '@elastic/synthetics/dist/helpers'; -import { join } from 'path'; - -function renderError(error: any) { - let output = ''; - const outer = indent(''); - const inner = indent(outer); - const container = outer + '---\n'; - output += container; - let stack = error.stack; - if (stack) { - output += inner + 'stack: |-\n'; - stack = rewriteErrorStack(stack, findPWLogsIndexes(stack)); - const lines = String(stack).split('\n'); - for (const line of lines) { - output += inner + ' ' + line + '\n'; - } - } - output += container; - return red(output); -} - -function renderDuration(durationMs: number) { - return Number(durationMs).toFixed(0); -} - -export class TestReporter implements Reporter { - metrics = { - succeeded: 0, - failed: 0, - skipped: 0, - }; - - journeys: Map<string, Array<StepEndResult & { name: string }>> = new Map(); - - constructor(options: ReporterOptions = {}) {} - - onJourneyStart(journey: Journey, {}: JourneyStartResult) { - if (process.env.CI) { - this.write(`\n--- Journey: ${journey.name}`); - } else { - this.write(bold(`\n Journey: ${journey.name}`)); - } - } - - onStepEnd(journey: Journey, step: Step, result: StepEndResult) { - const { status, end, start, error } = result; - const message = `${symbols[status]} Step: '${step.name}' ${status} (${renderDuration( - (end - start) * 1000 - )} ms)`; - this.write(indent(message)); - if (error) { - this.write(renderError(error)); - } - this.metrics[status]++; - if (!this.journeys.has(journey.name)) { - this.journeys.set(journey.name, []); - } - this.journeys.get(journey.name)?.push({ name: step.name, ...result }); - } - - async onJourneyEnd(journey: Journey, { error, start, end, status }: JourneyEndResult) { - const { failed, succeeded, skipped } = this.metrics; - const total = failed + succeeded + skipped; - if (total === 0 && error) { - this.write(renderError(error)); - } - const message = `${symbols[status]} Took (${renderDuration(end - start)} seconds)`; - this.write(message); - - await fs.promises.mkdir('.journeys/failed_steps', { recursive: true }); - - await gatherScreenshots(join(CACHE_PATH, 'screenshots'), async (screenshot) => { - const { data, step } = screenshot; - - if (status === 'failed') { - await (async () => { - await fs.promises.writeFile(join('.journeys/failed_steps/', `${step.name}.jpg`), data, { - encoding: 'base64', - }); - })(); - } - }); - } - - onEnd() { - const failedJourneys = Array.from(this.journeys.entries()).filter(([, steps]) => - steps.some((step) => step.status === 'failed') - ); - - if (failedJourneys.length > 0) { - failedJourneys.forEach(([journeyName, steps]) => { - if (process.env.CI) { - const name = red(`Journey: ${journeyName} 🥵`); - this.write(`\n+++ ${name}`); - steps.forEach((stepResult) => { - const { status, end, start, error, name: stepName } = stepResult; - const message = `${symbols[status]} Step: '${stepName}' ${status} (${renderDuration( - (end - start) * 1000 - )} ms)`; - this.write(indent(message)); - if (error) { - this.write(renderError(error)); - } - }); - } - }); - } - - const successfulJourneys = Array.from(this.journeys.entries()).filter(([, steps]) => - steps.every((step) => step.status === 'succeeded') - ); - - successfulJourneys.forEach(([journeyName, steps]) => { - try { - fs.unlinkSync('.journeys/videos/' + journeyName + '.webm'); - } catch (e) { - // eslint-disable-next-line no-console - console.log( - 'Failed to delete video file for path ' + '.journeys/videos/' + journeyName + '.webm' - ); - } - }); - - const { failed, succeeded, skipped } = this.metrics; - const total = failed + succeeded + skipped; - - let message = '\n'; - if (total === 0) { - message = 'No tests found!'; - message += ` (${renderDuration(now())} ms) \n`; - this.write(message); - return; - } - - message += succeeded > 0 ? green(` ${succeeded} passed`) : ''; - message += failed > 0 ? red(` ${failed} failed`) : ''; - message += skipped > 0 ? cyan(` ${skipped} skipped`) : ''; - message += ` (${renderDuration(now() / 1000)} seconds) \n`; - this.write(message); - } - - write(message: any) { - if (typeof message === 'object') { - message = JSON.stringify(message); - } - log(message + '\n'); - } -} - -const SEPARATOR = '\n'; - -function indent(lines: string, tab = ' ') { - return lines.replace(/^/gm, tab); -} - -const NO_UTF8_SUPPORT = process.platform === 'win32'; -const symbols = { - warning: yellow(NO_UTF8_SUPPORT ? '!' : '⚠'), - skipped: cyan('-'), - progress: cyan('>'), - succeeded: green(NO_UTF8_SUPPORT ? 'ok' : '✓'), - failed: red(NO_UTF8_SUPPORT ? 'x' : '✖'), -}; - -function now() { - return performance.now(); -} - -function findPWLogsIndexes(msgOrStack: string): [number, number] { - let startIndex = 0; - let endIndex = 0; - if (!msgOrStack) { - return [startIndex, endIndex]; - } - const lines = String(msgOrStack).split(SEPARATOR); - const logStart = /[=]{3,} logs [=]{3,}/; - const logEnd = /[=]{10,}/; - lines.forEach((line, index) => { - if (logStart.test(line)) { - startIndex = index; - } else if (logEnd.test(line)) { - endIndex = index; - } - }); - return [startIndex, endIndex]; -} - -function rewriteErrorStack(stack: string, indexes: [number, number]) { - const [start, end] = indexes; - /** - * Do not rewrite if its not a playwright error - */ - if (start === 0 && end === 0) { - return stack; - } - const linesToKeep = start + 3; - if (start > 0 && linesToKeep < end) { - const lines = stack.split(SEPARATOR); - return lines - .slice(0, linesToKeep) - .concat(...lines.slice(end)) - .join(SEPARATOR); - } - return stack; -} diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/index.ts b/x-pack/plugins/observability_solution/synthetics/e2e/index.ts deleted file mode 100644 index f0e9b5e8b760c..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/e2e/index.ts +++ /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. - */ - -export { SyntheticsRunner } from './helpers/synthetics_runner'; -export { argv } from './helpers/parse_args_params'; -export { loginPageProvider } from './page_objects/login'; -export { utilsPageProvider } from './page_objects/utils'; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/synthetics_run.ts b/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/synthetics_run.ts deleted file mode 100644 index 3624c03c5f1f0..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/synthetics_run.ts +++ /dev/null @@ -1,44 +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 { FtrConfigProviderContext } from '@kbn/test'; -import path from 'path'; -import { argv } from '../helpers/parse_args_params'; -import { SyntheticsRunner } from '../helpers/synthetics_runner'; - -const { headless, grep, bail: pauseOnError } = argv; - -async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { - const kibanaConfig = await readConfigFile(require.resolve('../config.ts')); - return { - ...kibanaConfig.getAll(), - testRunner: async ({ getService }: any) => { - const syntheticsRunner = new SyntheticsRunner(getService, { - headless, - match: grep, - pauseOnError, - }); - - await syntheticsRunner.setup(); - const fixturesDir = path.join(__dirname, '../fixtures/es_archiver/'); - - await syntheticsRunner.loadTestData(fixturesDir, [ - 'synthetics_data', - 'full_heartbeat', - 'browser', - ]); - - await syntheticsRunner.loadTestFiles(async () => { - require('./journeys'); - }); - - await syntheticsRunner.run(); - }, - }; -} - -// eslint-disable-next-line import/no-default-export -export default runE2ETests; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/tasks/es_archiver.ts b/x-pack/plugins/observability_solution/synthetics/e2e/tasks/es_archiver.ts deleted file mode 100644 index bbb66b19f5a5e..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/e2e/tasks/es_archiver.ts +++ /dev/null @@ -1,37 +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 Path from 'path'; -import { execSync } from 'child_process'; - -const ES_ARCHIVE_DIR = './fixtures/es_archiver'; - -// Otherwise execSync would inject NODE_TLS_REJECT_UNAUTHORIZED=0 and node would abort if used over https -const NODE_TLS_REJECT_UNAUTHORIZED = '1'; - -export const esArchiverLoad = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../scripts/es_archiver load "${path}" --config ../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverUnload = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../scripts/es_archiver unload "${path}" --config ../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverResetKibana = () => { - execSync( - `node ../../../../scripts/es_archiver empty-kibana-index --config ../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/tsconfig.json b/x-pack/plugins/observability_solution/synthetics/e2e/tsconfig.json deleted file mode 100644 index 7584c000a76fa..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/e2e/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "exclude": ["tmp", "target/**/*"], - "include": ["**/*"], - "compilerOptions": { - "outDir": "target/types", - "types": ["node"], - "isolatedModules": false - }, - "kbn_references": [ - "@kbn/test", - "@kbn/dev-utils", - "@kbn/ux-plugin/e2e", - "@kbn/ftr-common-functional-services", - "@kbn/apm-plugin", - "@kbn/es-archiver", - "@kbn/synthetics-plugin", - "@kbn/repo-info", - "@kbn/observability-synthetics-test-data", - "@kbn/ftr-common-functional-ui-services" - ] -} diff --git a/x-pack/plugins/observability_solution/synthetics/jest.config.js b/x-pack/plugins/observability_solution/synthetics/jest.config.js deleted file mode 100644 index 1ae53b847be24..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/jest.config.js +++ /dev/null @@ -1,18 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/plugins/observability_solution/synthetics'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/observability_solution/synthetics', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/synthetics/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/query_monitor_status.ts b/x-pack/plugins/observability_solution/synthetics/server/queries/query_monitor_status.ts deleted file mode 100644 index 5ccb33fb491fd..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/server/queries/query_monitor_status.ts +++ /dev/null @@ -1,300 +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 times from 'lodash/times'; -import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { cloneDeep, intersection } from 'lodash'; -import { SavedObjectsFindResult } from '@kbn/core-saved-objects-api-server'; -import { MsearchMultisearchBody } from '@elastic/elasticsearch/lib/api/types'; - -import { isStatusEnabled } from '../../common/runtime_types/monitor_management/alert_config'; -import { FINAL_SUMMARY_FILTER } from '../../common/constants/client_defaults'; -import { - ConfigKey, - EncryptedSyntheticsMonitorAttributes, - OverviewPing, - OverviewStatus, - OverviewStatusMetaData, -} from '../../common/runtime_types'; -import { createEsParams, SyntheticsEsClient } from '../lib'; - -const DEFAULT_MAX_ES_BUCKET_SIZE = 10000; - -const fields = [ - '@timestamp', - 'summary', - 'monitor', - 'observer', - 'config_id', - 'error', - 'agent', - 'url', - 'state', - 'tags', -]; - -const getStatusQuery = ({ - idSize, - idsToQuery, - range, - monitorLocationIds, -}: { - idSize: number; - monitorLocationIds: string[]; - range: { from: string; to: string }; - idsToQuery: string[]; -}) => { - const params = createEsParams({ - body: { - size: 0, - query: { - bool: { - filter: [ - FINAL_SUMMARY_FILTER, - { - range: { - '@timestamp': { - gte: range.from, - lte: range.to, - }, - }, - }, - { - terms: { - 'monitor.id': idsToQuery, - }, - }, - ] as QueryDslQueryContainer[], - }, - }, - aggs: { - id: { - terms: { - field: 'monitor.id', - size: idSize, - }, - aggs: { - location: { - terms: { - field: 'observer.name', - size: monitorLocationIds.length || 100, - }, - aggs: { - status: { - top_hits: { - size: 1, - sort: [ - { - '@timestamp': { - order: 'desc', - }, - }, - ], - _source: { - includes: fields, - }, - }, - }, - }, - }, - }, - }, - }, - }, - }); - - if (monitorLocationIds.length > 0) { - params.body.query?.bool?.filter.push({ - terms: { - 'observer.name': monitorLocationIds, - }, - }); - } - return params; -}; - -type StatusQueryParams = ReturnType<typeof getStatusQuery>; -type OverviewStatusResponse = Omit< - OverviewStatus, - | 'disabledCount' - | 'allMonitorsCount' - | 'disabledMonitorsCount' - | 'projectMonitorsCount' - | 'disabledMonitorQueryIds' - | 'allIds' ->; - -export async function queryMonitorStatus({ - esClient, - monitorLocationIds, - range, - monitorQueryIds, - monitorLocationsMap, - monitorQueryIdToConfigIdMap, - monitors, -}: { - esClient: SyntheticsEsClient; - monitorLocationIds: string[]; - range: { from: string; to: string }; - monitorQueryIds: string[]; - monitorLocationsMap: Record<string, string[]>; - monitorQueryIdToConfigIdMap: Record<string, string>; - monitors: Array<SavedObjectsFindResult<EncryptedSyntheticsMonitorAttributes>>; -}): Promise<OverviewStatusResponse> { - const idSize = Math.trunc(DEFAULT_MAX_ES_BUCKET_SIZE / monitorLocationIds.length || 1); - const pageCount = Math.ceil(monitorQueryIds.length / idSize); - let up = 0; - let down = 0; - const upConfigs: Record<string, OverviewStatusMetaData> = {}; - const downConfigs: Record<string, OverviewStatusMetaData> = {}; - const monitorsWithoutData = new Map(Object.entries(cloneDeep(monitorLocationsMap))); - const pendingConfigs: Record<string, OverviewStatusMetaData> = {}; - const disabledConfigs: Record<string, OverviewStatusMetaData> = {}; - - monitors - .filter((monitor) => !monitor.attributes[ConfigKey.ENABLED]) - .forEach((monitor) => { - const monitorQueryId = monitor.attributes[ConfigKey.MONITOR_QUERY_ID]; - monitor.attributes[ConfigKey.LOCATIONS]?.forEach((location) => { - disabledConfigs[`${monitorQueryIdToConfigIdMap[monitorQueryId]}-${location.id}`] = { - configId: `${monitorQueryIdToConfigIdMap[monitorQueryId]}`, - monitorQueryId, - status: 'disabled', - locationId: location.id, - locationLabel: location.label, - ...getMonitorMeta(monitor), - }; - }); - }); - - const queries: MsearchMultisearchBody[] = times(pageCount).map((i) => { - const idsToQuery = (monitorQueryIds as string[]).slice(i * idSize, i * idSize + idSize); - return getStatusQuery({ - idSize, - monitorLocationIds, - range, - idsToQuery, - }).body; - }); - - if (queries.length) { - const { responses } = await esClient.msearch<StatusQueryParams, OverviewPing>( - queries, - 'getCurrentStatusOverview' - ); - - responses.forEach((result) => { - result.aggregations?.id.buckets.forEach(({ location, key: queryId }) => { - const locationSummaries = location.buckets.map(({ status, key: locationName }) => { - const ping = status.hits.hits[0]._source; - return { location: locationName, ping }; - }); - - const monitor = monitors.find((m) => m.attributes[ConfigKey.MONITOR_QUERY_ID] === queryId)!; - - // discard any locations that are not in the monitorLocationsMap for the given monitor as well as those which are - // in monitorLocationsMap but not in listOfLocations - const monLocations = monitorLocationsMap?.[queryId]; - const monQueriedLocations = intersection(monLocations, monitorLocationIds); - monQueriedLocations?.forEach((monLocation) => { - const locationSummary = locationSummaries.find( - (summary) => summary.location === monLocation - ); - - if (locationSummary) { - const { ping } = locationSummary; - const downCount = ping.summary?.down ?? 0; - const upCount = ping.summary?.up ?? 0; - const configId = ping.config_id; - const monitorQueryId = ping.monitor.id; - - const meta = { - ping, - configId, - monitorQueryId, - locationId: monLocation, - timestamp: ping['@timestamp'], - locationLabel: ping.observer.geo!.name!, - ...getMonitorMeta(monitor), - }; - - if (downCount > 0) { - down += 1; - downConfigs[`${configId}-${monLocation}`] = { - ...meta, - status: 'down', - }; - } else if (upCount > 0) { - up += 1; - upConfigs[`${configId}-${monLocation}`] = { - ...meta, - status: 'up', - }; - } - const monitorsMissingData = monitorsWithoutData.get(monitorQueryId) || []; - monitorsWithoutData.set( - monitorQueryId, - monitorsMissingData?.filter((loc) => loc !== monLocation) - ); - if (!monitorsWithoutData.get(monitorQueryId)?.length) { - monitorsWithoutData.delete(monitorQueryId); - } - } - }); - }); - }); - } - - // identify the remaining monitors without data, to determine pending monitors - for (const [queryId, locs] of monitorsWithoutData) { - const monitor = monitors.find((m) => m.attributes[ConfigKey.MONITOR_QUERY_ID] === queryId)!; - locs.forEach((loc) => { - pendingConfigs[`${monitorQueryIdToConfigIdMap[queryId]}-${loc}`] = { - configId: `${monitorQueryIdToConfigIdMap[queryId]}`, - monitorQueryId: queryId, - status: 'unknown', - locationId: loc, - locationLabel: monitor.attributes[ConfigKey.LOCATIONS]?.find( - (location) => location.id === loc - )?.label!, - name: monitor.attributes[ConfigKey.NAME], - schedule: monitor.attributes[ConfigKey.SCHEDULE].number, - tags: monitor.attributes[ConfigKey.TAGS], - isEnabled: monitor.attributes[ConfigKey.ENABLED], - type: monitor.attributes[ConfigKey.MONITOR_TYPE], - projectId: monitor.attributes[ConfigKey.PROJECT_ID], - isStatusAlertEnabled: isStatusEnabled(monitor.attributes[ConfigKey.ALERT_CONFIG]), - updated_at: monitor.updated_at, - }; - }); - } - - return { - up, - down, - pending: Object.values(pendingConfigs).length, - upConfigs, - downConfigs, - pendingConfigs, - enabledMonitorQueryIds: monitorQueryIds, - disabledConfigs, - }; -} - -const getMonitorMeta = (monitor: SavedObjectsFindResult<EncryptedSyntheticsMonitorAttributes>) => { - return { - name: monitor.attributes[ConfigKey.NAME], - schedule: monitor.attributes[ConfigKey.SCHEDULE].number, - tags: monitor.attributes[ConfigKey.TAGS], - isEnabled: monitor.attributes[ConfigKey.ENABLED], - type: monitor.attributes[ConfigKey.MONITOR_TYPE], - projectId: monitor.attributes[ConfigKey.PROJECT_ID], - isStatusAlertEnabled: isStatusEnabled(monitor.attributes[ConfigKey.ALERT_CONFIG]), - updated_at: monitor.updated_at, - spaceId: monitor.namespaces?.[0], - }; -}; diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/overview_status/overview_status.test.ts b/x-pack/plugins/observability_solution/synthetics/server/routes/overview_status/overview_status.test.ts deleted file mode 100644 index a3ddc0079d460..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/server/routes/overview_status/overview_status.test.ts +++ /dev/null @@ -1,1291 +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 { SavedObjectsFindResult } from '@kbn/core-saved-objects-api-server'; -import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; -import { periodToMs } from './overview_status'; -import { queryMonitorStatus } from '../../queries/query_monitor_status'; -import { getStatus } from './overview_status'; -import times from 'lodash/times'; -import * as monitorsFns from '../../saved_objects/synthetics_monitor/get_all_monitors'; -import { EncryptedSyntheticsMonitorAttributes } from '../../../common/runtime_types'; -import { RouteContext } from '../types'; -import { getUptimeESMockClient } from '../../queries/test_helpers'; - -import * as commonLibs from '../common'; -import { SyntheticsServerSetup } from '../../types'; -import { mockEncryptedSO } from '../../synthetics_service/utils/mocks'; -import { savedObjectsServiceMock } from '@kbn/core-saved-objects-server-mocks'; -import { loggerMock } from '@kbn/logging-mocks'; -import * as allLocationsFn from '../../synthetics_service/get_all_locations'; -const allLocations: any = [ - { - id: 'us_central_qa', - label: 'US Central QA', - }, - { - id: 'us_central', - label: 'North America - US Central', - }, -]; -jest.spyOn(allLocationsFn, 'getAllLocations').mockResolvedValue({ - publicLocations: allLocations, - privateLocations: [], - allLocations, -}); - -jest.mock('../../saved_objects/synthetics_monitor/get_all_monitors', () => ({ - ...jest.requireActual('../../saved_objects/synthetics_monitor/get_all_monitors'), - getAllMonitors: jest.fn(), -})); - -jest.spyOn(commonLibs, 'getMonitors').mockResolvedValue({ - per_page: 10, - saved_objects: [ - { - id: 'mon-1', - attributes: { - enabled: false, - locations: [{ id: 'us-east1' }, { id: 'us-west1' }, { id: 'japan' }], - }, - }, - { - id: 'mon-2', - attributes: { - enabled: true, - locations: [{ id: 'us-east1' }, { id: 'us-west1' }, { id: 'japan' }], - schedule: { - number: '10', - unit: 'm', - }, - }, - }, - ], -} as any); - -describe('current status route', () => { - const logger = loggerMock.create(); - - const serverMock: SyntheticsServerSetup = { - logger, - config: { - service: { - username: 'dev', - password: '12345', - manifestUrl: 'http://localhost:8080/api/manifest', - }, - }, - spaces: { - spacesService: { - getSpaceId: jest.fn().mockReturnValue('test-space'), - }, - }, - encryptedSavedObjects: mockEncryptedSO(), - coreStart: { - savedObjects: savedObjectsServiceMock.createStartContract(), - }, - } as unknown as SyntheticsServerSetup; - - describe('periodToMs', () => { - it('returns 0 for unsupported unit type', () => { - // @ts-expect-error Providing invalid value to test handler in function - expect(periodToMs({ number: '10', unit: 'rad' })).toEqual(0); - }); - it('converts seconds', () => { - expect(periodToMs({ number: '10', unit: 's' })).toEqual(10_000); - }); - it('converts minutes', () => { - expect(periodToMs({ number: '1', unit: 'm' })).toEqual(60_000); - }); - it('converts hours', () => { - expect(periodToMs({ number: '1', unit: 'h' })).toEqual(3_600_000); - }); - }); - - const testMonitors = [ - { - attributes: { - id: 'id1', - type: 'browser', - enabled: true, - name: 'test monitor 1', - project_id: 'project-id', - tags: ['tag-1', 'tag-2'], - schedule: { - number: '1', - unit: 'm', - }, - }, - }, - { - attributes: { - id: 'id2', - enabled: true, - type: 'browser', - name: 'test monitor 2', - project_id: 'project-id', - tags: ['tag-1', 'tag-2'], - schedule: { - number: '1', - unit: 'm', - }, - }, - }, - ]; - - describe('queryMonitorStatus', () => { - it('parses expected agg fields', async () => { - const { esClient, syntheticsEsClient } = getUptimeESMockClient(); - esClient.msearch.mockResponseOnce({ - responses: [ - getEsResponse([ - { - key: 'id1', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:08:16.724Z', - monitor: { - status: 'up', - id: 'id1', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id1', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - { - key: 'id2', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:09:16.724Z', - monitor: { - status: 'up', - id: 'id2', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - { - key: 'Europe - Germany', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:19:16.724Z', - monitor: { - status: 'down', - id: 'id2', - }, - summary: { - down: 1, - up: 0, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Europe - Germany', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - ]), - ], - took: 605, - }); - expect( - await queryMonitorStatus({ - esClient: syntheticsEsClient, - monitorLocationIds: ['Europe - Germany', 'Asia/Pacific - Japan'], - range: { from: 'now-1d', to: 'now' }, - monitorQueryIds: ['id1', 'id2'], - monitorLocationsMap: { - id1: ['Asia/Pacific - Japan'], - id2: ['Europe - Germany', 'Asia/Pacific - Japan'], - }, - monitorQueryIdToConfigIdMap: { - id1: 'id1', - id2: 'id2', - }, - monitors: testMonitors as any, - }) - ).toMatchInlineSnapshot(` - Object { - "disabledConfigs": Object {}, - "down": 1, - "downConfigs": Object { - "id2-Europe - Germany": Object { - "configId": "id2", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Europe - Germany", - "locationLabel": "Europe - Germany", - "monitorQueryId": "id2", - "name": "test monitor 2", - "ping": Object { - "@timestamp": "2022-09-15T16:19:16.724Z", - "config_id": "id2", - "monitor": Object { - "id": "id2", - "status": "down", - }, - "observer": Object { - "geo": Object { - "name": "Europe - Germany", - }, - }, - "summary": Object { - "down": 1, - "up": 0, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "down", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:19:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - }, - "enabledMonitorQueryIds": Array [ - "id1", - "id2", - ], - "pending": 0, - "pendingConfigs": Object {}, - "up": 2, - "upConfigs": Object { - "id1-Asia/Pacific - Japan": Object { - "configId": "id1", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": "Asia/Pacific - Japan", - "monitorQueryId": "id1", - "name": "test monitor 1", - "ping": Object { - "@timestamp": "2022-09-15T16:08:16.724Z", - "config_id": "id1", - "monitor": Object { - "id": "id1", - "status": "up", - }, - "observer": Object { - "geo": Object { - "name": "Asia/Pacific - Japan", - }, - }, - "summary": Object { - "down": 0, - "up": 1, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "up", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:08:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - "id2-Asia/Pacific - Japan": Object { - "configId": "id2", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": "Asia/Pacific - Japan", - "monitorQueryId": "id2", - "name": "test monitor 2", - "ping": Object { - "@timestamp": "2022-09-15T16:09:16.724Z", - "config_id": "id2", - "monitor": Object { - "id": "id2", - "status": "up", - }, - "observer": Object { - "geo": Object { - "name": "Asia/Pacific - Japan", - }, - }, - "summary": Object { - "down": 0, - "up": 1, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "up", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:09:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - }, - } - `); - }); - - it('handles limits with multiple requests', async () => { - const { esClient, syntheticsEsClient } = getUptimeESMockClient(); - esClient.msearch.mockResponseOnce({ - responses: [ - getEsResponse([ - { - key: 'id1', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:08:16.724Z', - monitor: { - status: 'up', - id: 'id1', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id1', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - { - key: 'id2', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:09:16.724Z', - monitor: { - status: 'up', - id: 'id2', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - { - key: 'Europe - Germany', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:19:16.724Z', - monitor: { - status: 'down', - id: 'id2', - }, - summary: { - up: 0, - down: 1, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Europe - Germany', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - ]), - ], - took: 605, - }); - - /** - * By passing the function a location count of 10k, it forces the query to paginate once, - * so we are able to test that the function properly iterates through a "large" list of IDs/locations. - * - * The expectation here is we will send the test client two separate "requests", one for each of the two IDs. - */ - const concernedLocations = [ - 'Asia/Pacific - Japan', - 'Europe - Germany', - 'Asia/Pacific - Japan', - ]; - expect( - await queryMonitorStatus({ - esClient: syntheticsEsClient, - monitorLocationIds: [ - ...concernedLocations, - ...times(9997).map((n) => 'Europe - Germany' + n), - ], - - range: { from: 'now-24h', to: 'now' }, - monitorQueryIds: ['id1', 'id2'], - monitorLocationsMap: { - id1: [concernedLocations[0]], - id2: [concernedLocations[1], concernedLocations[2]], - }, - monitorQueryIdToConfigIdMap: { - id1: 'id1', - id2: 'id2', - }, - monitors: testMonitors as any, - }) - ).toMatchInlineSnapshot(` - Object { - "disabledConfigs": Object {}, - "down": 1, - "downConfigs": Object { - "id2-Europe - Germany": Object { - "configId": "id2", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Europe - Germany", - "locationLabel": "Europe - Germany", - "monitorQueryId": "id2", - "name": "test monitor 2", - "ping": Object { - "@timestamp": "2022-09-15T16:19:16.724Z", - "config_id": "id2", - "monitor": Object { - "id": "id2", - "status": "down", - }, - "observer": Object { - "geo": Object { - "name": "Europe - Germany", - }, - }, - "summary": Object { - "down": 1, - "up": 0, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "down", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:19:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - }, - "enabledMonitorQueryIds": Array [ - "id1", - "id2", - ], - "pending": 0, - "pendingConfigs": Object {}, - "up": 2, - "upConfigs": Object { - "id1-Asia/Pacific - Japan": Object { - "configId": "id1", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": "Asia/Pacific - Japan", - "monitorQueryId": "id1", - "name": "test monitor 1", - "ping": Object { - "@timestamp": "2022-09-15T16:08:16.724Z", - "config_id": "id1", - "monitor": Object { - "id": "id1", - "status": "up", - }, - "observer": Object { - "geo": Object { - "name": "Asia/Pacific - Japan", - }, - }, - "summary": Object { - "down": 0, - "up": 1, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "up", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:08:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - "id2-Asia/Pacific - Japan": Object { - "configId": "id2", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": "Asia/Pacific - Japan", - "monitorQueryId": "id2", - "name": "test monitor 2", - "ping": Object { - "@timestamp": "2022-09-15T16:09:16.724Z", - "config_id": "id2", - "monitor": Object { - "id": "id2", - "status": "up", - }, - "observer": Object { - "geo": Object { - "name": "Asia/Pacific - Japan", - }, - }, - "summary": Object { - "down": 0, - "up": 1, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "up", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:09:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - }, - } - `); - expect(esClient.msearch).toHaveBeenCalledTimes(1); - // These assertions are to ensure that we are paginating through the IDs we use for filtering - expect( - // @ts-expect-error mock search is not lining up with expected type - esClient.msearch.mock.calls[0][0].searches[1].query.bool.filter[2].terms['monitor.id'] - ).toEqual(['id1']); - expect( - // @ts-expect-error mock search is not lining up with expected type - esClient.msearch.mock.calls[0][0].searches[3].query.bool.filter[2].terms['monitor.id'] - ).toEqual(['id2']); - }); - - it('handles pending configs', async () => { - const { esClient, syntheticsEsClient } = getUptimeESMockClient(); - esClient.msearch.mockResponseOnce({ - responses: [ - getEsResponse([ - { - key: 'id1', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:08:16.724Z', - monitor: { - status: 'up', - id: 'id1', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id1', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - { - key: 'id2', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:09:16.724Z', - monitor: { - status: 'up', - id: 'id2', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - { - key: 'Europe - Germany', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:19:16.724Z', - monitor: { - status: 'down', - id: 'id2', - }, - summary: { - down: 1, - up: 0, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Europe - Germany', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - ]), - ], - took: 605, - }); - expect( - await queryMonitorStatus({ - esClient: syntheticsEsClient, - monitorLocationIds: ['Europe - Germany', 'Asia/Pacific - Japan'], - range: { from: 'now-12h', to: 'now' }, - monitorQueryIds: ['id1', 'id2', 'project-monitor-id', 'id4'], - monitorLocationsMap: { - id1: ['Asia/Pacific - Japan'], - id2: ['Europe - Germany', 'Asia/Pacific - Japan'], - 'project-monitor-id': ['Europe - Germany', 'Asia/Pacific - Japan'], - id4: ['Europe - Germany', 'Asia/Pacific - Japan'], - }, - monitorQueryIdToConfigIdMap: { - id1: 'id1', - id2: 'id2', - 'project-monitor-id': 'id3', - id4: 'id4', - }, - monitors: [ - ...testMonitors, - { - attributes: { - id: 'id4', - enabled: true, - type: 'browser', - name: 'test monitor 4', - project_id: 'project-id', - tags: ['tag-1', 'tag-2'], - schedule: { - number: '1', - unit: 'm', - }, - }, - }, - { - attributes: { - id: 'project-monitor-id', - enabled: true, - type: 'browser', - name: 'test monitor 3', - project_id: 'project-id', - tags: ['tag-1', 'tag-2'], - schedule: { - number: '1', - unit: 'm', - }, - }, - }, - ] as any, - }) - ).toMatchInlineSnapshot(` - Object { - "disabledConfigs": Object {}, - "down": 1, - "downConfigs": Object { - "id2-Europe - Germany": Object { - "configId": "id2", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Europe - Germany", - "locationLabel": "Europe - Germany", - "monitorQueryId": "id2", - "name": "test monitor 2", - "ping": Object { - "@timestamp": "2022-09-15T16:19:16.724Z", - "config_id": "id2", - "monitor": Object { - "id": "id2", - "status": "down", - }, - "observer": Object { - "geo": Object { - "name": "Europe - Germany", - }, - }, - "summary": Object { - "down": 1, - "up": 0, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "down", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:19:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - }, - "enabledMonitorQueryIds": Array [ - "id1", - "id2", - "project-monitor-id", - "id4", - ], - "pending": 4, - "pendingConfigs": Object { - "id3-Asia/Pacific - Japan": Object { - "configId": "id3", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": undefined, - "monitorQueryId": "project-monitor-id", - "name": "test monitor 3", - "projectId": "project-id", - "schedule": "1", - "status": "unknown", - "tags": Array [ - "tag-1", - "tag-2", - ], - "type": "browser", - "updated_at": undefined, - }, - "id3-Europe - Germany": Object { - "configId": "id3", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Europe - Germany", - "locationLabel": undefined, - "monitorQueryId": "project-monitor-id", - "name": "test monitor 3", - "projectId": "project-id", - "schedule": "1", - "status": "unknown", - "tags": Array [ - "tag-1", - "tag-2", - ], - "type": "browser", - "updated_at": undefined, - }, - "id4-Asia/Pacific - Japan": Object { - "configId": "id4", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": undefined, - "monitorQueryId": "id4", - "name": "test monitor 4", - "projectId": "project-id", - "schedule": "1", - "status": "unknown", - "tags": Array [ - "tag-1", - "tag-2", - ], - "type": "browser", - "updated_at": undefined, - }, - "id4-Europe - Germany": Object { - "configId": "id4", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Europe - Germany", - "locationLabel": undefined, - "monitorQueryId": "id4", - "name": "test monitor 4", - "projectId": "project-id", - "schedule": "1", - "status": "unknown", - "tags": Array [ - "tag-1", - "tag-2", - ], - "type": "browser", - "updated_at": undefined, - }, - }, - "up": 2, - "upConfigs": Object { - "id1-Asia/Pacific - Japan": Object { - "configId": "id1", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": "Asia/Pacific - Japan", - "monitorQueryId": "id1", - "name": "test monitor 1", - "ping": Object { - "@timestamp": "2022-09-15T16:08:16.724Z", - "config_id": "id1", - "monitor": Object { - "id": "id1", - "status": "up", - }, - "observer": Object { - "geo": Object { - "name": "Asia/Pacific - Japan", - }, - }, - "summary": Object { - "down": 0, - "up": 1, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "up", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:08:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - "id2-Asia/Pacific - Japan": Object { - "configId": "id2", - "isEnabled": true, - "isStatusAlertEnabled": false, - "locationId": "Asia/Pacific - Japan", - "locationLabel": "Asia/Pacific - Japan", - "monitorQueryId": "id2", - "name": "test monitor 2", - "ping": Object { - "@timestamp": "2022-09-15T16:09:16.724Z", - "config_id": "id2", - "monitor": Object { - "id": "id2", - "status": "up", - }, - "observer": Object { - "geo": Object { - "name": "Asia/Pacific - Japan", - }, - }, - "summary": Object { - "down": 0, - "up": 1, - }, - }, - "projectId": "project-id", - "schedule": "1", - "spaceId": undefined, - "status": "up", - "tags": Array [ - "tag-1", - "tag-2", - ], - "timestamp": "2022-09-15T16:09:16.724Z", - "type": "browser", - "updated_at": undefined, - }, - }, - } - `); - }); - }); - - describe('getStatus', () => { - it.each([ - [['US Central QA'], 1], - [['North America - US Central'], 1], - [['North America - US Central', 'US Central QA'], 2], - [undefined, 2], - ])('handles disabled count when using location filters', async (locations, disabledCount) => { - jest.spyOn(monitorsFns, 'getAllMonitors').mockResolvedValue([ - { - type: 'synthetics-monitor', - id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', - attributes: { - enabled: false, - schedule: { - number: '3', - unit: 'm', - }, - config_id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', - locations: [ - { - color: 'default', - isServiceManaged: true, - label: 'US Central QA', - id: 'us_central_qa', - }, - { - isServiceManaged: true, - label: 'North America - US Central', - id: 'us_central', - }, - ], - origin: 'project', - id: 'a-test2-default', - }, - references: [], - migrationVersion: { - 'synthetics-monitor': '8.6.0', - }, - coreMigrationVersion: '8.0.0', - updated_at: '2023-02-28T14:31:37.641Z', - created_at: '2023-02-28T14:31:37.641Z', - version: 'Wzg0MzkzLDVd', - namespaces: ['default'], - score: null, - sort: ['a', 3013], - } as unknown as SavedObjectsFindResult<EncryptedSyntheticsMonitorAttributes>, - ]); - const { esClient, syntheticsEsClient } = getUptimeESMockClient(); - esClient.msearch.mockResponseOnce({ - responses: [ - getEsResponse([ - { - key: 'id1', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:08:16.724Z', - monitor: { - status: 'up', - id: 'id1', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id1', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - { - key: 'id2', - location: { - buckets: [ - { - key: 'Asia/Pacific - Japan', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:09:16.724Z', - monitor: { - status: 'up', - id: 'id2', - }, - summary: { - up: 1, - down: 0, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Asia/Pacific - Japan', - }, - }, - }, - }, - ], - }, - }, - }, - { - key: 'Europe - Germany', - status: { - hits: { - hits: [ - { - _source: { - '@timestamp': '2022-09-15T16:19:16.724Z', - monitor: { - status: 'down', - id: 'id2', - }, - summary: { - down: 1, - up: 0, - }, - config_id: 'id2', - observer: { - geo: { - name: 'Europe - Germany', - }, - }, - }, - }, - ], - }, - }, - }, - ], - }, - }, - ]), - ], - took: 605, - }); - const result = await getStatus( - { - syntheticsEsClient, - savedObjectsClient: savedObjectsClientMock.create(), - server: serverMock, - } as unknown as RouteContext, - { - locations, - } - ); - expect(result).toEqual( - expect.objectContaining({ - disabledCount, - }) - ); - }); - - it.each([ - [['US Central QA'], 1], - [['North America - US Central'], 1], - [['North America - US Central', 'US Central QA'], 2], - [undefined, 2], - ])('handles pending count when using location filters', async (locations, pending) => { - jest.spyOn(monitorsFns, 'getAllMonitors').mockResolvedValue([ - { - type: 'synthetics-monitor', - id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', - attributes: { - enabled: true, - schedule: { - number: '3', - unit: 'm', - }, - config_id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', - locations: [ - { - color: 'default', - isServiceManaged: true, - label: 'US Central QA', - id: 'us_central_qa', - }, - { - isServiceManaged: true, - label: 'North America - US Central', - id: 'us_central', - }, - ], - origin: 'project', - id: 'a-test2-default', - }, - references: [], - migrationVersion: { - 'synthetics-monitor': '8.6.0', - }, - coreMigrationVersion: '8.0.0', - updated_at: '2023-02-28T14:31:37.641Z', - created_at: '2023-02-28T14:31:37.641Z', - version: 'Wzg0MzkzLDVd', - namespaces: ['default'], - score: null, - sort: ['a', 3013], - } as unknown as SavedObjectsFindResult<EncryptedSyntheticsMonitorAttributes>, - ]); - const { esClient, syntheticsEsClient } = getUptimeESMockClient(); - esClient.msearch.mockResponseOnce({ responses: [getEsResponse([])], took: 605 }); - expect( - await getStatus( - { - syntheticsEsClient, - savedObjectsClient: savedObjectsClientMock.create(), - } as unknown as RouteContext, - { - locations, - } - ) - ).toEqual( - expect.objectContaining({ - pending, - }) - ); - }); - }); -}); - -function getEsResponse(buckets: any[]) { - return { - took: 605, - timed_out: false, - _shards: { - total: 3, - successful: 3, - skipped: 0, - failed: 0, - }, - hits: { - hits: [], - }, - aggregations: { - id: { - buckets, - }, - }, - }; -} diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/overview_status/overview_status.ts b/x-pack/plugins/observability_solution/synthetics/server/routes/overview_status/overview_status.ts deleted file mode 100644 index 8fa52f98592cb..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/server/routes/overview_status/overview_status.ts +++ /dev/null @@ -1,140 +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 { intersection } from 'lodash'; -import datemath, { Unit } from '@kbn/datemath'; -import moment from 'moment'; -import { RouteContext, SyntheticsRestApiRouteFactory } from '../types'; -import { ConfigKey, OverviewStatusState } from '../../../common/runtime_types'; -import { - getAllMonitors, - processMonitors, -} from '../../saved_objects/synthetics_monitor/get_all_monitors'; -import { queryMonitorStatus } from '../../queries/query_monitor_status'; -import { SYNTHETICS_API_URLS } from '../../../common/constants'; -import { getMonitorFilters, OverviewStatusSchema, OverviewStatusQuery } from '../common'; - -/** - * Helper function that converts a monitor's schedule to a value to use to generate - * an appropriate look-back window for snapshot count. - * @param schedule a number/unit pair that represents how often a configured monitor runs - * @returns schedule interval in ms - */ -export function periodToMs(schedule: { number: string; unit: Unit }) { - if (Object.keys(datemath.unitsMap).indexOf(schedule.unit) === -1) return 0; - - return parseInt(schedule.number, 10) * datemath.unitsMap[schedule.unit].base; -} - -/** - * Multi-stage function that first queries all the user's saved object monitor configs. - * - * Subsequently, fetch the status for each monitor per location in the data streams. - * @returns The counts of up/down/disabled monitor by location, and a map of each monitor:location status. - */ -export async function getStatus(context: RouteContext, params: OverviewStatusQuery) { - const { syntheticsEsClient, savedObjectsClient } = context; - - const { query, scopeStatusByLocation = true, showFromAllSpaces } = params; - - /** - * Walk through all monitor saved objects, bucket IDs by disabled/enabled status. - * - * Track max period to make sure the snapshot query should reach back far enough to catch - * latest ping for all enabled monitors. - */ - - const { filtersStr, locationFilter: queryLocations } = await getMonitorFilters({ - ...params, - context, - }); - - const allMonitors = await getAllMonitors({ - soClient: savedObjectsClient, - showFromAllSpaces, - search: query ? `${query}*` : undefined, - filter: filtersStr, - fields: [ - ConfigKey.ENABLED, - ConfigKey.LOCATIONS, - ConfigKey.MONITOR_QUERY_ID, - ConfigKey.CONFIG_ID, - ConfigKey.SCHEDULE, - ConfigKey.MONITOR_SOURCE_TYPE, - ConfigKey.MONITOR_TYPE, - ConfigKey.NAME, - ConfigKey.TAGS, - ConfigKey.PROJECT_ID, - ConfigKey.ALERT_CONFIG, - ], - }); - - const { - enabledMonitorQueryIds, - disabledMonitorQueryIds, - allIds, - disabledCount, - maxPeriod, - monitorLocationIds, - monitorLocationsMap, - disabledMonitorsCount, - projectMonitorsCount, - monitorQueryIdToConfigIdMap, - } = processMonitors(allMonitors, queryLocations); - - // Account for locations filter - const listOfLocationAfterFilter = - queryLocations && scopeStatusByLocation - ? intersection(monitorLocationIds, queryLocations) - : monitorLocationIds; - - const range = { - from: moment().subtract(maxPeriod, 'milliseconds').subtract(20, 'minutes').toISOString(), - to: 'now', - }; - - const { up, down, pending, upConfigs, downConfigs, pendingConfigs, disabledConfigs } = - await queryMonitorStatus({ - range, - monitors: allMonitors, - monitorLocationsMap, - monitorQueryIdToConfigIdMap, - esClient: syntheticsEsClient, - monitorLocationIds: listOfLocationAfterFilter, - monitorQueryIds: enabledMonitorQueryIds, - }); - - return { - allIds, - allMonitorsCount: allMonitors.length, - disabledMonitorsCount, - projectMonitorsCount, - enabledMonitorQueryIds, - disabledMonitorQueryIds, - disabledCount, - up, - down, - pending, - upConfigs, - downConfigs, - pendingConfigs, - disabledConfigs, - }; -} - -export const createGetCurrentStatusRoute: SyntheticsRestApiRouteFactory = () => ({ - method: 'GET', - path: SYNTHETICS_API_URLS.OVERVIEW_STATUS, - validate: { - query: OverviewStatusSchema, - }, - handler: async (routeContext): Promise<OverviewStatusState> => { - const { request } = routeContext; - - const params = request.query as OverviewStatusQuery; - return await getStatus(routeContext, params); - }, -}); diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_route_wrapper.ts b/x-pack/plugins/observability_solution/synthetics/server/synthetics_route_wrapper.ts deleted file mode 100644 index da3887ac94d56..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/server/synthetics_route_wrapper.ts +++ /dev/null @@ -1,110 +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 { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; -import { isEmpty } from 'lodash'; -import { isKibanaResponse } from '@kbn/core-http-server'; -import { isTestUser, SyntheticsEsClient } from './lib'; -import { checkIndicesReadPrivileges } from './synthetics_service/authentication/check_has_privilege'; -import { SYNTHETICS_INDEX_PATTERN } from '../common/constants'; -import { syntheticsServiceApiKey } from './saved_objects/service_api_key'; -import { SyntheticsRouteWrapper } from './routes/types'; - -export const syntheticsRouteWrapper: SyntheticsRouteWrapper = ( - uptimeRoute, - server, - syntheticsMonitorClient -) => ({ - ...uptimeRoute, - options: { - ...(uptimeRoute.options ?? {}), - }, - security: { - authz: { - requiredPrivileges: [ - 'uptime-read', - ...(uptimeRoute.requiredPrivileges ?? []), - ...(uptimeRoute?.writeAccess ? ['uptime-write'] : []), - ], - }, - }, - handler: async (context, request, response) => { - const { elasticsearch, savedObjects, uiSettings } = await context.core; - - const { client: esClient } = elasticsearch; - const savedObjectsClient = savedObjects.getClient({ - includedHiddenTypes: [syntheticsServiceApiKey.name], - }); - - // specifically needed for the synthetics service api key generation - server.authSavedObjectsClient = savedObjectsClient; - - const syntheticsEsClient = new SyntheticsEsClient(savedObjectsClient, esClient.asCurrentUser, { - request, - uiSettings, - isDev: Boolean(server.isDev) && !isTestUser(server), - heartbeatIndices: SYNTHETICS_INDEX_PATTERN, - }); - - server.syntheticsEsClient = syntheticsEsClient; - - const spaceId = server.spaces?.spacesService.getSpaceId(request) ?? DEFAULT_SPACE_ID; - - try { - const res = await uptimeRoute.handler({ - syntheticsEsClient, - savedObjectsClient, - context, - request, - response, - server, - spaceId, - syntheticsMonitorClient, - }); - if (isKibanaResponse(res)) { - return res; - } - - const inspectData = await syntheticsEsClient.getInspectData(uptimeRoute.path); - - if (Array.isArray(res)) { - if (isEmpty(inspectData)) { - return response.ok({ - body: res, - }); - } else { - return response.ok({ - body: { - result: res, - ...inspectData, - }, - }); - } - } - - return response.ok({ - body: { - ...res, - ...(await syntheticsEsClient.getInspectData(uptimeRoute.path)), - }, - }); - } catch (e) { - if (e.statusCode === 403) { - const privileges = await checkIndicesReadPrivileges(syntheticsEsClient); - if (!privileges.has_all_requested) { - return response.forbidden({ - body: { - message: - 'MissingIndicesPrivileges: You do not have permission to read from the synthetics-* indices. Please contact your administrator.', - }, - }); - } - } - server.logger.error(e); - throw e; - } - }, -}); diff --git a/x-pack/plugins/observability_solution/synthetics/tsconfig.json b/x-pack/plugins/observability_solution/synthetics/tsconfig.json deleted file mode 100644 index c82f6a5c3036a..0000000000000 --- a/x-pack/plugins/observability_solution/synthetics/tsconfig.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "__mocks__/**/*", - "common/**/*", - "scripts/**/*", - "public/**/*", - "server/**/*", - "../../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/alerting-plugin", - "@kbn/ml-plugin", - "@kbn/triggers-actions-ui-plugin", - "@kbn/observability-plugin", - "@kbn/fleet-plugin", - "@kbn/unified-search-plugin", - "@kbn/i18n", - "@kbn/core", - "@kbn/config-schema", - "@kbn/server-http-tools", - "@kbn/datemath", - "@kbn/share-plugin", - "@kbn/discover-plugin", - "@kbn/home-plugin", - "@kbn/embeddable-plugin", - "@kbn/data-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/inspector-plugin", - "@kbn/cases-plugin", - "@kbn/cloud-plugin", - "@kbn/data-views-plugin", - "@kbn/spaces-plugin", - "@kbn/core-doc-links-browser", - "@kbn/usage-collection-plugin", - "@kbn/kibana-react-plugin", - "@kbn/i18n-react", - "@kbn/securitysolution-io-ts-utils", - "@kbn/es-query", - "@kbn/stack-connectors-plugin", - "@kbn/rule-data-utils", - "@kbn/core-http-browser", - "@kbn/core-notifications-browser", - "@kbn/rison", - "@kbn/licensing-plugin", - "@kbn/rule-registry-plugin", - "@kbn/encrypted-saved-objects-plugin", - "@kbn/security-plugin", - "@kbn/logging-mocks", - "@kbn/task-manager-plugin", - "@kbn/es-types", - "@kbn/core-http-server-mocks", - "@kbn/utility-types", - "@kbn/telemetry-plugin", - "@kbn/core-elasticsearch-client-server-mocks", - "@kbn/core-saved-objects-api-server", - "@kbn/core-saved-objects-common", - "@kbn/features-plugin", - "@kbn/bfetch-plugin", - "@kbn/actions-plugin", - "@kbn/core-elasticsearch-server", - "@kbn/core-saved-objects-api-server-mocks", - "@kbn/core-saved-objects-server", - "@kbn/shared-ux-prompt-not-found", - "@kbn/logging", - "@kbn/shared-ux-router", - "@kbn/alerts-as-data-utils", - "@kbn/exploratory-view-plugin", - "@kbn/observability-shared-plugin", - "@kbn/core-http-server", - "@kbn/std", - "@kbn/core-saved-objects-server-mocks", - "@kbn/shared-ux-page-kibana-template", - "@kbn/observability-ai-assistant-plugin", - "@kbn/unified-doc-viewer-plugin", - "@kbn/code-editor", - "@kbn/code-editor-mock", - "@kbn/securitysolution-io-ts-types", - "@kbn/shared-ux-link-redirect-app", - "@kbn/serverless", - "@kbn/repo-info", - "@kbn/index-management-plugin", - "@kbn/license-management-plugin", - "@kbn/react-kibana-mount", - "@kbn/react-kibana-context-render", - "@kbn/react-kibana-context-theme", - "@kbn/search-types", - "@kbn/core-lifecycle-browser", - "@kbn/ui-actions-browser", - "@kbn/presentation-publishing", - "@kbn/presentation-containers", - "@kbn/ui-actions-plugin", - "@kbn/presentation-util-plugin", - "@kbn/core-application-browser", - "@kbn/dashboard-plugin", - "@kbn/search-types", - "@kbn/slo-schema", - "@kbn/alerting-types", - "@kbn/babel-register", - "@kbn/slo-plugin", - "@kbn/ebt-tools", - "@kbn/alerting-types", - "@kbn/core-chrome-browser", - "@kbn/core-rendering-browser", - "@kbn/index-lifecycle-management-common-shared", - "@kbn/core-http-server-utils" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/observability_solution/uptime/.buildkite/pipelines/flaky.sh b/x-pack/plugins/observability_solution/uptime/.buildkite/pipelines/flaky.sh deleted file mode 100755 index 58c2c88a8d836..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/.buildkite/pipelines/flaky.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -UUID="$(cat /proc/sys/kernel/random/uuid)" -export UUID - -node x-pack/plugins/observability_solution/synthetics/.buildkite/pipelines/flaky.js | buildkite-agent pipeline upload diff --git a/x-pack/plugins/observability_solution/uptime/README.md b/x-pack/plugins/observability_solution/uptime/README.md deleted file mode 100644 index bdc078e8607d7..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# Uptime Monitoring - -## Purpose - -The purpose of this plugin is to provide users of Heartbeat more visibility of what's happening -in their infrastructure. - -## Layout - -There are three sections to the app, `common`, `public`, and `server`. - -### common - -Contains runtime types types, constants and a few other files. - -Notably, we use `io-ts`/`fp-ts` functions and types to help provide -additional runtime safety for our API requests/responses. - -### public - -We use Redux and associated tools for managing our app state. Components come in the usual `connect`ed and -presentational varieties. - -The `lib` directory controls bootstrapping code and adapter types. - -There is a `pages` directory; each view gets its own page component. - -The principal structure of the app is stored in `uptime_app.tsx`. - -### server - -The `lib` directory contains `adapters`, which are connections to external resources like Kibana -Server, Elasticsearch, etc. In addition, it contains domains, which are libraries that provide -functionality via adapters. - -The `requests` directory contains functions responsible for querying Elasticsearch and parsing its -responses. - -There's also a `rest_api` folder that defines the structure of the RESTful API endpoints. - -## Testing - -### Unit tests - -Documentation: https://www.elastic.co/guide/en/kibana/current/development-tests.html#_unit_testing - -``` -yarn test:jest x-pack/plugins/observability_solution/synthetics -``` - -### Functional tests - -In one shell, from **~/kibana/x-pack**: -`node scripts/functional_tests_server.js` - -In another shell, from **~kibana/x-pack**: -`node ../scripts/functional_test_runner.js --grep="{TEST_NAME}"`. - -#### API tests - -If instead you need to run API tests, start up the test server and then in another shell, from **~kibana/x-pack**: -`node ../scripts/functional_test_runner.js --config test/api_integration/config.ts --grep="{TEST_NAME}"`. - -You can update snapshots by prefixing the runner command with `env UPDATE_UPTIME_FIXTURES=1` - -You can access the functional test server's Kibana at `http://localhost:5620/`. - -You can login with username `elastic` and password `changeme` by default. - -If you want to freeze a UI or API test you can include an async call like `await new Promise(r => setTimeout(r, 1000 * 60))` -to freeze the execution for 60 seconds if you need to click around or check things in the state that is loaded. - -#### Running --ssl tests - -Some of our tests require there to be an SSL connection between Kibana and Elasticsearch. - -We can run these tests like described above, but with some special config. - -`node scripts/functional_tests_server.js --config=test/functional_with_es_ssl/config.ts` - -`node scripts/functional_test_runner.js --config=test/functional_with_es_ssl/config.ts` - -#### Running accessibility tests - -We maintain a suite of Accessibility tests (you may see them referred to elsewhere as `a11y` tests). - -These tests render each of our pages and ensure that the inputs and other elements contain the -attributes necessary to ensure all users are able to make use of Kibana (for example, users relying -on screen readers). - -The commands for running these tests are very similar to the other functional tests described above. - -From the `~/x-pack` directory: - -Start the server: `node scripts/functional_tests_server --config test/accessibility/config.ts` - -Run the uptime `a11y` tests: `node scripts/functional_test_runner.js --config test/accessibility/config.ts --grep=uptime` diff --git a/x-pack/plugins/observability_solution/uptime/e2e/README.md b/x-pack/plugins/observability_solution/uptime/e2e/README.md deleted file mode 100644 index eaca49c558375..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/README.md +++ /dev/null @@ -1,32 +0,0 @@ -## How to run these tests - -These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated -script for standing up the test server. - -### Start the server - -From `~/x-pack/plugins/observability_solution/synthetics/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you -with an example run command when it finishes. - -### Run the tests - -From the same directory you can now run `node e2e.js --runner`. - -In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. - - -## Uptime App Tests - -These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated -script for standing up the test server. - -### Start the server - -From `~/x-pack/plugins/observability_solution/uptime/scripts`, run `node uptime_e2e.js --server`. Wait for the server to startup. It will provide you -with an example run command when it finishes. - -### Run the tests - -From the same directory you can now run `node uptime_e2e.js --runner`. - -In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/plugins/observability_solution/uptime/e2e/config.ts b/x-pack/plugins/observability_solution/uptime/e2e/config.ts deleted file mode 100644 index 4f3e86eeb35ea..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/config.ts +++ /dev/null @@ -1,79 +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 { FtrConfigProviderContext } from '@kbn/test'; -import { CA_CERT_PATH } from '@kbn/dev-utils'; -import { commonFunctionalServices } from '@kbn/ftr-common-functional-services'; -import { commonFunctionalUIServices } from '@kbn/ftr-common-functional-ui-services'; -import { readKibanaConfig } from './tasks/read_kibana_config'; -const MANIFEST_KEY = 'xpack.uptime.service.manifestUrl'; -const SERVICE_PASSWORD = 'xpack.uptime.service.password'; -const SERVICE_USERNAME = 'xpack.uptime.service.username'; - -async function config({ readConfigFile }: FtrConfigProviderContext) { - const kibanaCommonTestsConfig = await readConfigFile( - require.resolve('@kbn/test-suites-src/common/config') - ); - const xpackFunctionalTestsConfig = await readConfigFile( - require.resolve('@kbn/test-suites-xpack/functional/config.base') - ); - - const kibanaConfig = readKibanaConfig(); - - const manifestUrl = process.env.SYNTHETICS_SERVICE_MANIFEST ?? kibanaConfig[MANIFEST_KEY]; - const serviceUsername = process.env.SYNTHETICS_SERVICE_USERNAME ?? kibanaConfig[SERVICE_USERNAME]; - const servicePassword = process.env.SYNTHETICS_SERVICE_PASSWORD ?? kibanaConfig[SERVICE_PASSWORD]; - - return { - ...kibanaCommonTestsConfig.getAll(), - - services: { - ...commonFunctionalServices, - ...commonFunctionalUIServices, - }, - - esTestCluster: { - ...xpackFunctionalTestsConfig.get('esTestCluster'), - serverArgs: [ - ...xpackFunctionalTestsConfig.get('esTestCluster.serverArgs'), - // define custom es server here - // API Keys is enabled at the top level - 'xpack.security.enabled=true', - ], - }, - - kbnTestServer: { - ...xpackFunctionalTestsConfig.get('kbnTestServer'), - sourceArgs: process.env.WATCH_ENABLED - ? [] - : [...xpackFunctionalTestsConfig.get('kbnTestServer.sourceArgs'), '--no-watch'], - serverArgs: [ - ...xpackFunctionalTestsConfig.get('kbnTestServer.serverArgs'), - '--csp.strict=false', - '--home.disableWelcomeScreen=true', - '--csp.warnLegacyBrowsers=false', - // define custom kibana server args here - `--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`, - // `--elasticsearch.ignoreVersionMismatch=${process.env.CI ? 'false' : 'true'}`, - `--elasticsearch.username=kibana_system`, - `--elasticsearch.password=changeme`, - '--xpack.reporting.enabled=false', - `--xpack.uptime.service.manifestUrl=${manifestUrl}`, - `--xpack.uptime.service.username=${ - process.env.SYNTHETICS_REMOTE_ENABLED - ? serviceUsername - : 'localKibanaIntegrationTestsUser' - }`, - `--xpack.uptime.service.password=${servicePassword}`, - '--uiSettings.overrides.observability:enableLegacyUptimeApp=true', - ], - }, - }; -} - -// eslint-disable-next-line import/no-default-export -export default config; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/parse_args_params.ts b/x-pack/plugins/observability_solution/uptime/e2e/helpers/parse_args_params.ts deleted file mode 100644 index a69cae912dfee..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/helpers/parse_args_params.ts +++ /dev/null @@ -1,28 +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 yargs from 'yargs'; - -const { argv } = yargs(process.argv.slice(2)) - .option('headless', { - default: true, - type: 'boolean', - description: 'Start in headless mode', - }) - .option('bail', { - default: false, - type: 'boolean', - description: 'Pause on error', - }) - .option('grep', { - default: undefined, - type: 'string', - description: 'run only journeys with a name or tags that matches the glob', - }) - .help(); - -export { argv }; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/record_video.ts b/x-pack/plugins/observability_solution/uptime/e2e/helpers/record_video.ts deleted file mode 100644 index 23bcdfb643e72..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/helpers/record_video.ts +++ /dev/null @@ -1,32 +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 fs from 'fs'; -import Runner from '@elastic/synthetics/dist/core/runner'; -import { after, Page } from '@elastic/synthetics'; - -const SYNTHETICS_RUNNER = Symbol.for('SYNTHETICS_RUNNER'); - -// @ts-ignore -export const runner: Runner = global[SYNTHETICS_RUNNER]; - -export const recordVideo = (page: Page, postfix = '') => { - after(async () => { - try { - const videoFilePath = await page.video()?.path(); - const pathToVideo = videoFilePath?.replace('.journeys/videos/', '').replace('.webm', ''); - const newVideoPath = videoFilePath?.replace( - pathToVideo!, - postfix ? runner.currentJourney!.name + `-${postfix}` : runner.currentJourney!.name - ); - fs.renameSync(videoFilePath!, newVideoPath!); - } catch (e) { - // eslint-disable-next-line no-console - console.log('Error while renaming video file', e); - } - }); -}; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/synthetics_runner.ts b/x-pack/plugins/observability_solution/uptime/e2e/helpers/synthetics_runner.ts deleted file mode 100644 index c9d1f485afbf2..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/helpers/synthetics_runner.ts +++ /dev/null @@ -1,155 +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. - */ - -/* eslint-disable no-console */ - -import Url from 'url'; -import { run as syntheticsRun } from '@elastic/synthetics'; -import { PromiseType } from 'utility-types'; -import { createApmUsers } from '@kbn/apm-plugin/server/test_helpers/create_apm_users/create_apm_users'; - -import { EsArchiver } from '@kbn/es-archiver'; -import { esArchiverUnload } from '../tasks/es_archiver'; -import { TestReporter } from './test_reporter'; - -export interface ArgParams { - headless: boolean; - match?: string; - pauseOnError: boolean; -} - -export class SyntheticsRunner { - public getService: any; - public kibanaUrl: string; - private elasticsearchUrl: string; - - public testFilesLoaded: boolean = false; - - public params: ArgParams; - - private loadTestFilesCallback?: (reload?: boolean) => Promise<void>; - - constructor(getService: any, params: ArgParams) { - this.getService = getService; - this.kibanaUrl = this.getKibanaUrl(); - this.elasticsearchUrl = this.getElasticsearchUrl(); - this.params = params; - } - - async setup() { - await this.createTestUsers(); - } - - async createTestUsers() { - await createApmUsers({ - elasticsearch: { node: this.elasticsearchUrl, username: 'elastic', password: 'changeme' }, - kibana: { hostname: this.kibanaUrl }, - }); - } - - async loadTestFiles(callback: (reload?: boolean) => Promise<void>, reload = false) { - console.log('Loading test files'); - await callback(reload); - this.loadTestFilesCallback = callback; - this.testFilesLoaded = true; - console.log('Successfully loaded test files'); - } - - async loadTestData(e2eDir: string, dataArchives: string[]) { - try { - console.log('Loading esArchiver...'); - - const esArchiver: EsArchiver = this.getService('esArchiver'); - - const promises = dataArchives.map((archive) => { - if (archive === 'synthetics_data') { - return esArchiver.load(e2eDir + archive, { - docsOnly: true, - skipExisting: true, - }); - } - return esArchiver.load(e2eDir + archive, { skipExisting: true }); - }); - - await Promise.all([...promises]); - } catch (e) { - console.log(e); - } - } - - getKibanaUrl() { - const config = this.getService('config'); - - return Url.format({ - protocol: config.get('servers.kibana.protocol'), - hostname: config.get('servers.kibana.hostname'), - port: config.get('servers.kibana.port'), - }); - } - - getElasticsearchUrl() { - const config = this.getService('config'); - - return Url.format({ - protocol: config.get('servers.elasticsearch.protocol'), - hostname: config.get('servers.elasticsearch.hostname'), - port: config.get('servers.elasticsearch.port'), - }); - } - - async run() { - if (!this.testFilesLoaded) { - throw new Error('Test files not loaded'); - } - const { headless, match, pauseOnError } = this.params; - const noOfRuns = process.env.NO_OF_RUNS ? Number(process.env.NO_OF_RUNS) : 1; - console.log(`Running ${noOfRuns} times`); - let results: PromiseType<ReturnType<typeof syntheticsRun>> = {}; - for (let i = 0; i < noOfRuns; i++) { - results = await syntheticsRun({ - params: { kibanaUrl: this.kibanaUrl, getService: this.getService }, - playwrightOptions: { - headless, - chromiumSandbox: false, - timeout: 60 * 1000, - viewport: { - height: 900, - width: 1600, - }, - recordVideo: { - dir: '.journeys/videos', - }, - }, - grepOpts: { match: match === 'undefined' ? '' : match }, - pauseOnError, - screenshots: 'only-on-failure', - reporter: TestReporter, - }); - if (noOfRuns > 1) { - // need to reload again since runner resets the journeys - await this.loadTestFiles(this.loadTestFilesCallback!, true); - } - } - - await this.assertResults(results); - } - - assertResults(results: PromiseType<ReturnType<typeof syntheticsRun>>) { - Object.entries(results).forEach(([_journey, result]) => { - if (result.status !== 'succeeded') { - process.exitCode = 1; - process.exit(); - } - }); - } - - cleanUp() { - console.log('Removing esArchiver...'); - esArchiverUnload('full_heartbeat'); - esArchiverUnload('browser'); - } -} diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/test_reporter.ts b/x-pack/plugins/observability_solution/uptime/e2e/helpers/test_reporter.ts deleted file mode 100644 index 198a038ec027f..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/helpers/test_reporter.ts +++ /dev/null @@ -1,229 +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 { Journey, Step } from '@elastic/synthetics/dist/dsl'; -import { Reporter, ReporterOptions } from '@elastic/synthetics'; -import { - JourneyEndResult, - JourneyStartResult, - StepEndResult, -} from '@elastic/synthetics/dist/common_types'; - -import { yellow, green, cyan, red, bold } from 'chalk'; - -// eslint-disable-next-line no-console -const log = console.log; - -import { performance } from 'perf_hooks'; -import * as fs from 'fs'; -import { gatherScreenshots } from '@elastic/synthetics/dist/reporters/json'; -import { CACHE_PATH } from '@elastic/synthetics/dist/helpers'; -import { join } from 'path'; - -function renderError(error: any) { - let output = ''; - const outer = indent(''); - const inner = indent(outer); - const container = outer + '---\n'; - output += container; - let stack = error.stack; - if (stack) { - output += inner + 'stack: |-\n'; - stack = rewriteErrorStack(stack, findPWLogsIndexes(stack)); - const lines = String(stack).split('\n'); - for (const line of lines) { - output += inner + ' ' + line + '\n'; - } - } - output += container; - return red(output); -} - -function renderDuration(durationMs: number) { - return Number(durationMs).toFixed(0); -} - -export class TestReporter implements Reporter { - metrics = { - succeeded: 0, - failed: 0, - skipped: 0, - }; - - journeys: Map<string, Array<StepEndResult & { name: string }>> = new Map(); - - constructor(options: ReporterOptions = {}) {} - - onJourneyStart(journey: Journey, {}: JourneyStartResult) { - if (process.env.CI) { - this.write(`\n--- Journey: ${journey.name}`); - } else { - this.write(bold(`\n Journey: ${journey.name}`)); - } - } - - onStepEnd(journey: Journey, step: Step, result: StepEndResult) { - const { status, end, start, error } = result; - const message = `${symbols[status]} Step: '${step.name}' ${status} (${renderDuration( - (end - start) * 1000 - )} ms)`; - this.write(indent(message)); - if (error) { - this.write(renderError(error)); - } - this.metrics[status]++; - if (!this.journeys.has(journey.name)) { - this.journeys.set(journey.name, []); - } - this.journeys.get(journey.name)?.push({ name: step.name, ...result }); - } - - async onJourneyEnd(journey: Journey, { error, start, end, status }: JourneyEndResult) { - const { failed, succeeded, skipped } = this.metrics; - const total = failed + succeeded + skipped; - if (total === 0 && error) { - this.write(renderError(error)); - } - const message = `${symbols[status]} Took (${renderDuration(end - start)} seconds)`; - this.write(message); - - await fs.promises.mkdir('.journeys/failed_steps', { recursive: true }); - - await gatherScreenshots(join(CACHE_PATH, 'screenshots'), async (screenshot) => { - const { data, step } = screenshot; - - if (status === 'failed') { - await (async () => { - await fs.promises.writeFile(join('.journeys/failed_steps/', `${step.name}.jpg`), data, { - encoding: 'base64', - }); - })(); - } - }); - } - - onEnd() { - const failedJourneys = Array.from(this.journeys.entries()).filter(([, steps]) => - steps.some((step) => step.status === 'failed') - ); - - if (failedJourneys.length > 0) { - failedJourneys.forEach(([journeyName, steps]) => { - if (process.env.CI) { - const name = red(`Journey: ${journeyName} 🥵`); - this.write(`\n+++ ${name}`); - steps.forEach((stepResult) => { - const { status, end, start, error, name: stepName } = stepResult; - const message = `${symbols[status]} Step: '${stepName}' ${status} (${renderDuration( - (end - start) * 1000 - )} ms)`; - this.write(indent(message)); - if (error) { - this.write(renderError(error)); - } - }); - } - }); - } - - const successfulJourneys = Array.from(this.journeys.entries()).filter(([, steps]) => - steps.every((step) => step.status === 'succeeded') - ); - - successfulJourneys.forEach(([journeyName, steps]) => { - try { - fs.unlinkSync('.journeys/videos/' + journeyName + '.webm'); - } catch (e) { - // eslint-disable-next-line no-console - console.log( - 'Failed to delete video file for path ' + '.journeys/videos/' + journeyName + '.webm' - ); - } - }); - - const { failed, succeeded, skipped } = this.metrics; - const total = failed + succeeded + skipped; - - let message = '\n'; - if (total === 0) { - message = 'No tests found!'; - message += ` (${renderDuration(now())} ms) \n`; - this.write(message); - return; - } - - message += succeeded > 0 ? green(` ${succeeded} passed`) : ''; - message += failed > 0 ? red(` ${failed} failed`) : ''; - message += skipped > 0 ? cyan(` ${skipped} skipped`) : ''; - message += ` (${renderDuration(now() / 1000)} seconds) \n`; - this.write(message); - } - - write(message: any) { - if (typeof message === 'object') { - message = JSON.stringify(message); - } - log(message + '\n'); - } -} - -const SEPARATOR = '\n'; - -function indent(lines: string, tab = ' ') { - return lines.replace(/^/gm, tab); -} - -const NO_UTF8_SUPPORT = process.platform === 'win32'; -const symbols = { - warning: yellow(NO_UTF8_SUPPORT ? '!' : '⚠'), - skipped: cyan('-'), - progress: cyan('>'), - succeeded: green(NO_UTF8_SUPPORT ? 'ok' : '✓'), - failed: red(NO_UTF8_SUPPORT ? 'x' : '✖'), -}; - -function now() { - return performance.now(); -} - -function findPWLogsIndexes(msgOrStack: string): [number, number] { - let startIndex = 0; - let endIndex = 0; - if (!msgOrStack) { - return [startIndex, endIndex]; - } - const lines = String(msgOrStack).split(SEPARATOR); - const logStart = /[=]{3,} logs [=]{3,}/; - const logEnd = /[=]{10,}/; - lines.forEach((line, index) => { - if (logStart.test(line)) { - startIndex = index; - } else if (logEnd.test(line)) { - endIndex = index; - } - }); - return [startIndex, endIndex]; -} - -function rewriteErrorStack(stack: string, indexes: [number, number]) { - const [start, end] = indexes; - /** - * Do not rewrite if its not a playwright error - */ - if (start === 0 && end === 0) { - return stack; - } - const linesToKeep = start + 3; - if (start > 0 && linesToKeep < end) { - const lines = stack.split(SEPARATOR); - return lines - .slice(0, linesToKeep) - .concat(...lines.slice(end)) - .join(SEPARATOR); - } - return stack; -} diff --git a/x-pack/plugins/observability_solution/uptime/e2e/tasks/es_archiver.ts b/x-pack/plugins/observability_solution/uptime/e2e/tasks/es_archiver.ts deleted file mode 100644 index 8415de3a385bd..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/tasks/es_archiver.ts +++ /dev/null @@ -1,37 +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 Path from 'path'; -import { execSync } from 'child_process'; - -const ES_ARCHIVE_DIR = './fixtures/es_archiver'; - -// Otherwise execSync would inject NODE_TLS_REJECT_UNAUTHORIZED=0 and node would abort if used over https -const NODE_TLS_REJECT_UNAUTHORIZED = '1'; - -export const esArchiverLoad = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../../scripts/es_archiver load "${path}" --config ../../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverUnload = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../../scripts/es_archiver unload "${path}" --config ../../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverResetKibana = () => { - execSync( - `node ../../../../../scripts/es_archiver empty-kibana-index --config ../../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/tasks/read_kibana_config.ts b/x-pack/plugins/observability_solution/uptime/e2e/tasks/read_kibana_config.ts deleted file mode 100644 index b892454b12c97..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/tasks/read_kibana_config.ts +++ /dev/null @@ -1,22 +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 path from 'path'; -import fs from 'fs'; -import yaml from 'js-yaml'; - -export type KibanaConfig = ReturnType<typeof readKibanaConfig>; - -export const readKibanaConfig = () => { - const kibanaConfigDir = path.join(__filename, '../../../../../../../config'); - const kibanaDevConfig = path.join(kibanaConfigDir, 'kibana.dev.yml'); - const kibanaConfig = path.join(kibanaConfigDir, 'kibana.yml'); - - return (yaml.load( - fs.readFileSync(fs.existsSync(kibanaDevConfig) ? kibanaDevConfig : kibanaConfig, 'utf8') - ) || {}) as Record<string, string>; -}; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/tsconfig.json b/x-pack/plugins/observability_solution/uptime/e2e/tsconfig.json deleted file mode 100644 index 2ad789f1e88d9..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "exclude": ["tmp", "target/**/*"], - "include": ["**/*"], - "compilerOptions": { - "outDir": "target/types", - "types": ["node"], - "isolatedModules": false - }, - "kbn_references": [ - "@kbn/test", - "@kbn/dev-utils", - "@kbn/ux-plugin/e2e", - "@kbn/ftr-common-functional-services", - "@kbn/apm-plugin", - "@kbn/es-archiver", - "@kbn/ftr-common-functional-ui-services" - ] -} diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/step_duration.journey.ts b/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/step_duration.journey.ts deleted file mode 100644 index 2dc781fcbf90f..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/step_duration.journey.ts +++ /dev/null @@ -1,55 +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 { journey, step, expect } from '@elastic/synthetics'; -import { RetryService } from '@kbn/ftr-common-functional-services'; -import { recordVideo } from '../../helpers/record_video'; -import { loginPageProvider } from '../../page_objects/login'; - -journey('StepsDuration', async ({ page, params }) => { - recordVideo(page); - - const retry: RetryService = params.getService('retry'); - - const login = loginPageProvider({ page }); - - const queryParams = new URLSearchParams({ - dateRangeStart: '2021-11-21T22:06:06.502Z', - dateRangeEnd: '2021-11-21T22:10:08.203Z', - }).toString(); - - const baseUrl = `${params.kibanaUrl}/app/uptime`; - - step('Go to uptime', async () => { - await page.goto(`${baseUrl}?${queryParams}`, { - waitUntil: 'networkidle', - }); - await login.loginToKibana(); - }); - - step('Go to monitor details', async () => { - await page.click('text="test-monitor - inline"'); - expect(page.url()).toBe(`${baseUrl}/monitor/dGVzdC1tb25pdG9yLWlubGluZQ==/?${queryParams}`); - }); - - step('Go to journey details', async () => { - await page.click('text=18 seconds'); - expect(page.url()).toBe(`${baseUrl}/journey/9f217c22-4b17-11ec-b976-aa665a54da40/steps`); - }); - - step('Check for monitor duration', async () => { - await retry.tryForTime(90 * 1000, async () => { - await page.click('text="6 Steps - 3 succeeded"'); - await page.waitForTimeout(2 * 1000); - await page.hover('text=8.9 sec'); - await page.waitForSelector('text=Explore'); - expect(await page.$('text=Explore')).toBeTruthy(); - await page.waitForSelector('text=area chart'); - expect(await page.$('text=area chart')).toBeTruthy(); - }); - }); -}); diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/synthetics_run.ts b/x-pack/plugins/observability_solution/uptime/e2e/uptime/synthetics_run.ts deleted file mode 100644 index b457a5b1e104f..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/synthetics_run.ts +++ /dev/null @@ -1,52 +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 { FtrConfigProviderContext } from '@kbn/test'; -import path from 'path'; -import { argv } from '../helpers/parse_args_params'; -import { SyntheticsRunner } from '../helpers/synthetics_runner'; - -const { headless, grep, bail: pauseOnError } = argv; - -async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { - const kibanaConfig = await readConfigFile(require.resolve('../config.ts')); - return { - ...kibanaConfig.getAll(), - testRunner: async ({ getService }: any) => { - const syntheticsRunner = new SyntheticsRunner(getService, { - headless, - match: grep, - pauseOnError, - }); - - await syntheticsRunner.setup(); - const fixturesDir = path.join(__dirname, '../fixtures/es_archiver/'); - - await syntheticsRunner.loadTestData(fixturesDir, [ - 'synthetics_data', - 'full_heartbeat', - 'browser', - ]); - - await syntheticsRunner.loadTestFiles(async (reload) => { - if (reload) { - const dirPath = require.resolve('./journeys').replace('index.ts', ''); - Object.keys(require.cache).forEach(function (key) { - if (key.startsWith(dirPath)) { - delete require.cache[key]; - } - }); - } - require(path.join(__dirname, './journeys')); - }); - - await syntheticsRunner.run(); - }, - }; -} - -// eslint-disable-next-line import/no-default-export -export default runE2ETests; diff --git a/x-pack/plugins/observability_solution/uptime/jest.config.js b/x-pack/plugins/observability_solution/uptime/jest.config.js deleted file mode 100644 index 639e286793557..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/jest.config.js +++ /dev/null @@ -1,18 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../..', - roots: ['<rootDir>/x-pack/plugins/observability_solution/uptime'], - coverageDirectory: - '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/observability_solution/uptime', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/observability_solution/uptime/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts deleted file mode 100644 index b6d250a2cb70f..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts +++ /dev/null @@ -1,34 +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 { useFetcher } from '@kbn/observability-shared-plugin/public'; -import { useGenerateUpdatedKueryString } from '../../../../hooks'; -import { fetchSnapshotCount } from '../../../../state/api'; - -export const useSnapShotCount = ({ query, filters }: { query: string; filters?: [] | string }) => { - const parsedFilters = - filters === undefined || typeof filters === 'string' - ? '' - : JSON.stringify(Array.from(Object.entries(filters))); - - const [esKuery, error] = useGenerateUpdatedKueryString(query, parsedFilters, undefined, true); - - const { data, loading } = useFetcher( - () => - fetchSnapshotCount({ - dateRangeStart: 'now-24h', - dateRangeEnd: 'now', - filters: error ? undefined : esKuery, - }), - // FIXME: Dario thinks there is a better way to do this but - // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps - [esKuery, query] - ); - - return { count: data || { total: 0, up: 0, down: 0 }, loading }; -}; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx deleted file mode 100644 index ac7e20db41b17..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx +++ /dev/null @@ -1,55 +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 React, { useState, useEffect } from 'react'; -import { EuiSpacer } from '@elastic/eui'; -import { useFetcher } from '@kbn/observability-shared-plugin/public'; -import { useSelector } from 'react-redux'; -import { getHasIntegrationMonitors } from '../../../state/api/has_integration_monitors'; -import { monitorListSelector } from '../../../state/selectors'; -import { IntegrationDeprecationCallout } from './integration_deprecation_callout'; - -export const INTEGRATION_DEPRECATION_SESSION_STORAGE_KEY = - 'SYNTHETICS_INTEGRATION_DEPRECATION_HAS_BEEN_DISMISSED'; - -export const IntegrationDeprecation = () => { - const monitorList = useSelector(monitorListSelector); - const noticeHasBeenDismissed = - window.sessionStorage.getItem(INTEGRATION_DEPRECATION_SESSION_STORAGE_KEY) === 'true'; - const { data, loading } = useFetcher(() => { - // load it when list is loaded - if (!noticeHasBeenDismissed && monitorList.isLoaded) { - return getHasIntegrationMonitors(); - } - return undefined; - // FIXME: Dario thinks there is a better way to do this but - // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [monitorList.isLoaded]); - const hasIntegrationMonitors = !loading && data && data.hasIntegrationMonitors; - const [shouldShowNotice, setShouldShowNotice] = useState( - Boolean(hasIntegrationMonitors && !noticeHasBeenDismissed) - ); - - const handleDismissDeprecationNotice = () => { - window.sessionStorage.setItem(INTEGRATION_DEPRECATION_SESSION_STORAGE_KEY, 'true'); - setShouldShowNotice(false); - }; - - useEffect(() => { - setShouldShowNotice(Boolean(hasIntegrationMonitors && !noticeHasBeenDismissed)); - }, [hasIntegrationMonitors, noticeHasBeenDismissed]); - - return shouldShowNotice ? ( - <> - <IntegrationDeprecationCallout - handleDismissDeprecationNotice={handleDismissDeprecationNotice} - /> - <EuiSpacer size="s" /> - </> - ) : null; -}; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts b/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts deleted file mode 100644 index 15ffd98c739c3..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts +++ /dev/null @@ -1,32 +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 { useContext } from 'react'; -import { useSelector } from 'react-redux'; -import { useFetcher } from '@kbn/observability-shared-plugin/public'; -import { useGetUrlParams } from '../../../hooks'; -import { esKuerySelector } from '../../../state/selectors'; -import { UptimeRefreshContext } from '../../../contexts'; -import { fetchSnapshotCount } from '../../../state/api'; - -export const useSnapShotCount = () => { - const { dateRangeStart, dateRangeEnd, query } = useGetUrlParams(); - - const { lastRefresh } = useContext(UptimeRefreshContext); - - const esKuery = useSelector(esKuerySelector); - - const { data, loading } = useFetcher( - () => fetchSnapshotCount({ query, dateRangeStart, dateRangeEnd, filters: esKuery }), - // FIXME: Dario thinks there is a better way to do this but - // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps - [dateRangeStart, dateRangeEnd, esKuery, lastRefresh, query] - ); - - return { count: data || { total: 0, up: 0, down: 0 }, loading }; -}; diff --git a/x-pack/plugins/observability_solution/uptime/tsconfig.json b/x-pack/plugins/observability_solution/uptime/tsconfig.json deleted file mode 100644 index 1d60bc456170e..0000000000000 --- a/x-pack/plugins/observability_solution/uptime/tsconfig.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "scripts/**/*", - "public/**/*", - "public/legacy_uptime/components/monitor/status_details/location_map/embeddables/low_poly_layer.json", - "server/**/*", - "server/legacy_uptime/lib/requests/__fixtures__/monitor_charts_mock.json", - "../../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/config-schema", - "@kbn/i18n", - "@kbn/fleet-plugin", - "@kbn/alerting-plugin", - "@kbn/datemath", - "@kbn/stack-connectors-plugin", - "@kbn/triggers-actions-ui-plugin", - "@kbn/kibana-react-plugin", - "@kbn/observability-shared-plugin", - "@kbn/observability-plugin", - "@kbn/i18n-react", - "@kbn/shared-ux-page-kibana-template", - "@kbn/test-jest-helpers", - "@kbn/ml-anomaly-utils", - "@kbn/exploratory-view-plugin", - "@kbn/ml-plugin", - "@kbn/rison", - "@kbn/shared-ux-router", - "@kbn/unified-search-plugin", - "@kbn/core-http-browser", - "@kbn/es-query", - "@kbn/data-views-plugin", - "@kbn/ui-theme", - "@kbn/rule-data-utils", - "@kbn/kibana-utils-plugin", - "@kbn/data-plugin", - "@kbn/ml-error-utils", - "@kbn/core-http-browser-mocks", - "@kbn/securitysolution-io-ts-utils", - "@kbn/share-plugin", - "@kbn/discover-plugin", - "@kbn/home-plugin", - "@kbn/embeddable-plugin", - "@kbn/inspector-plugin", - "@kbn/cases-plugin", - "@kbn/cloud-plugin", - "@kbn/spaces-plugin", - "@kbn/core-doc-links-browser", - "@kbn/usage-collection-plugin", - "@kbn/core-application-browser", - "@kbn/encrypted-saved-objects-plugin", - "@kbn/task-manager-plugin", - "@kbn/features-plugin", - "@kbn/rule-registry-plugin", - "@kbn/security-plugin", - "@kbn/bfetch-plugin", - "@kbn/alerts-as-data-utils", - "@kbn/std", - "@kbn/utility-types", - "@kbn/licensing-plugin", - "@kbn/es-types", - "@kbn/safer-lodash-set", - "@kbn/core-elasticsearch-client-server-mocks", - "@kbn/core-http-server", - "@kbn/actions-plugin", - "@kbn/core-saved-objects-server", - "@kbn/observability-ai-assistant-plugin", - "@kbn/shared-ux-link-redirect-app", - "@kbn/repo-info", - "@kbn/react-kibana-context-render", - "@kbn/react-kibana-context-theme", - "@kbn/react-kibana-mount", - "@kbn/deeplinks-observability", - "@kbn/ebt-tools", - "@kbn/core-rendering-browser", - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/observability_solution/ux/.buildkite/pipelines/flaky.sh b/x-pack/plugins/observability_solution/ux/.buildkite/pipelines/flaky.sh deleted file mode 100644 index f358969a3ff8a..0000000000000 --- a/x-pack/plugins/observability_solution/ux/.buildkite/pipelines/flaky.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -UUID="$(cat /proc/sys/kernel/random/uuid)" -export UUID - -node x-pack/plugins/observability_solution/ux/.buildkite/pipelines/flaky.js | buildkite-agent pipeline upload diff --git a/x-pack/plugins/observability_solution/ux/e2e/README.md b/x-pack/plugins/observability_solution/ux/e2e/README.md deleted file mode 100644 index 60c6d2f643b77..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/README.md +++ /dev/null @@ -1,15 +0,0 @@ -## How to run these tests - -These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated -script for standing up the test server. - -### Start the server - -From `~/x-pack/plugins/observability_solution/ux/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you -with an example run command when it finishes. - -### Run the tests - -From this directory, `~/x-pack/plugins/observability_solution/ux/e2e`, you can now run `node ../../../../../scripts/functional_test_runner --config synthetics_run.ts`. - -In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/plugins/observability_solution/ux/e2e/helpers/parse_args_params.ts b/x-pack/plugins/observability_solution/ux/e2e/helpers/parse_args_params.ts deleted file mode 100644 index 41100ba2ec295..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/helpers/parse_args_params.ts +++ /dev/null @@ -1,33 +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 yargs from 'yargs'; - -const { argv } = yargs(process.argv.slice(2)) - .option('headless', { - default: true, - type: 'boolean', - description: 'Start in headless mode', - }) - .option('bail', { - default: false, - type: 'boolean', - description: 'Pause on error', - }) - .option('watch', { - default: false, - type: 'boolean', - description: 'Runs the server in watch mode, restarting on changes', - }) - .option('grep', { - default: undefined, - type: 'string', - description: 'run only journeys with a name or tags that matches the glob', - }) - .help(); - -export { argv }; diff --git a/x-pack/plugins/observability_solution/ux/e2e/helpers/record_video.ts b/x-pack/plugins/observability_solution/ux/e2e/helpers/record_video.ts deleted file mode 100644 index 23bcdfb643e72..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/helpers/record_video.ts +++ /dev/null @@ -1,32 +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 fs from 'fs'; -import Runner from '@elastic/synthetics/dist/core/runner'; -import { after, Page } from '@elastic/synthetics'; - -const SYNTHETICS_RUNNER = Symbol.for('SYNTHETICS_RUNNER'); - -// @ts-ignore -export const runner: Runner = global[SYNTHETICS_RUNNER]; - -export const recordVideo = (page: Page, postfix = '') => { - after(async () => { - try { - const videoFilePath = await page.video()?.path(); - const pathToVideo = videoFilePath?.replace('.journeys/videos/', '').replace('.webm', ''); - const newVideoPath = videoFilePath?.replace( - pathToVideo!, - postfix ? runner.currentJourney!.name + `-${postfix}` : runner.currentJourney!.name - ); - fs.renameSync(videoFilePath!, newVideoPath!); - } catch (e) { - // eslint-disable-next-line no-console - console.log('Error while renaming video file', e); - } - }); -}; diff --git a/x-pack/plugins/observability_solution/ux/e2e/helpers/synthetics_runner.ts b/x-pack/plugins/observability_solution/ux/e2e/helpers/synthetics_runner.ts deleted file mode 100644 index e191d5fc101f7..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/helpers/synthetics_runner.ts +++ /dev/null @@ -1,159 +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. - */ - -/* eslint-disable no-console */ - -import Url from 'url'; -import { run as syntheticsRun } from '@elastic/synthetics'; -import { PromiseType } from 'utility-types'; -import { createApmUsers } from '@kbn/apm-plugin/server/test_helpers/create_apm_users/create_apm_users'; - -import { EsArchiver } from '@kbn/es-archiver'; -import { esArchiverUnload } from '../tasks/es_archiver'; -import { TestReporter } from './test_reporter'; - -export interface ArgParams { - headless: boolean; - match?: string; - pauseOnError: boolean; -} - -export class SyntheticsRunner { - public getService: any; - public kibanaUrl: string; - private elasticsearchUrl: string; - - public testFilesLoaded: boolean = false; - - public params: ArgParams; - - private loadTestFilesCallback?: (reload?: boolean) => Promise<void>; - - constructor(getService: any, params: ArgParams) { - this.getService = getService; - this.kibanaUrl = this.getKibanaUrl(); - this.elasticsearchUrl = this.getElasticsearchUrl(); - this.params = params; - } - - async setup() { - await this.createTestUsers(); - } - - async createTestUsers() { - await createApmUsers({ - elasticsearch: { - node: this.elasticsearchUrl, - username: 'elastic', - password: 'changeme', - }, - kibana: { hostname: this.kibanaUrl }, - }); - } - - async loadTestFiles(callback: (reload?: boolean) => Promise<void>, reload = false) { - console.log('Loading test files'); - await callback(reload); - this.loadTestFilesCallback = callback; - this.testFilesLoaded = true; - console.log('Successfully loaded test files'); - } - - async loadTestData(e2eDir: string, dataArchives: string[]) { - try { - console.log('Loading esArchiver...'); - - const esArchiver: EsArchiver = this.getService('esArchiver'); - - const promises = dataArchives.map((archive) => { - if (archive === 'synthetics_data') { - return esArchiver.load(e2eDir + archive, { - docsOnly: true, - skipExisting: true, - }); - } - return esArchiver.load(e2eDir + archive, { skipExisting: true }); - }); - - await Promise.all([...promises]); - } catch (e) { - console.log(e); - } - } - - getKibanaUrl() { - const config = this.getService('config'); - - return Url.format({ - protocol: config.get('servers.kibana.protocol'), - hostname: config.get('servers.kibana.hostname'), - port: config.get('servers.kibana.port'), - }); - } - - getElasticsearchUrl() { - const config = this.getService('config'); - - return Url.format({ - protocol: config.get('servers.elasticsearch.protocol'), - hostname: config.get('servers.elasticsearch.hostname'), - port: config.get('servers.elasticsearch.port'), - }); - } - - async run() { - if (!this.testFilesLoaded) { - throw new Error('Test files not loaded'); - } - const { headless, match, pauseOnError } = this.params; - const noOfRuns = process.env.NO_OF_RUNS ? Number(process.env.NO_OF_RUNS) : 1; - console.log(`Running ${noOfRuns} times`); - let results: PromiseType<ReturnType<typeof syntheticsRun>> = {}; - for (let i = 0; i < noOfRuns; i++) { - results = await syntheticsRun({ - params: { kibanaUrl: this.kibanaUrl, getService: this.getService }, - playwrightOptions: { - headless, - chromiumSandbox: false, - timeout: 60 * 1000, - viewport: { - height: 900, - width: 1600, - }, - recordVideo: { - dir: '.journeys/videos', - }, - }, - grepOpts: { match: match === 'undefined' ? '' : match }, - pauseOnError, - screenshots: 'only-on-failure', - reporter: TestReporter, - }); - if (noOfRuns > 1) { - // need to reload again since runner resets the journeys - await this.loadTestFiles(this.loadTestFilesCallback!, true); - } - } - - await this.assertResults(results); - } - - assertResults(results: PromiseType<ReturnType<typeof syntheticsRun>>) { - Object.entries(results).forEach(([_journey, result]) => { - if (result.status !== 'succeeded') { - process.exitCode = 1; - process.exit(); - } - }); - } - - cleanUp() { - console.log('Removing esArchiver...'); - esArchiverUnload('full_heartbeat'); - esArchiverUnload('browser'); - } -} diff --git a/x-pack/plugins/observability_solution/ux/e2e/helpers/test_reporter.ts b/x-pack/plugins/observability_solution/ux/e2e/helpers/test_reporter.ts deleted file mode 100644 index 198a038ec027f..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/helpers/test_reporter.ts +++ /dev/null @@ -1,229 +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 { Journey, Step } from '@elastic/synthetics/dist/dsl'; -import { Reporter, ReporterOptions } from '@elastic/synthetics'; -import { - JourneyEndResult, - JourneyStartResult, - StepEndResult, -} from '@elastic/synthetics/dist/common_types'; - -import { yellow, green, cyan, red, bold } from 'chalk'; - -// eslint-disable-next-line no-console -const log = console.log; - -import { performance } from 'perf_hooks'; -import * as fs from 'fs'; -import { gatherScreenshots } from '@elastic/synthetics/dist/reporters/json'; -import { CACHE_PATH } from '@elastic/synthetics/dist/helpers'; -import { join } from 'path'; - -function renderError(error: any) { - let output = ''; - const outer = indent(''); - const inner = indent(outer); - const container = outer + '---\n'; - output += container; - let stack = error.stack; - if (stack) { - output += inner + 'stack: |-\n'; - stack = rewriteErrorStack(stack, findPWLogsIndexes(stack)); - const lines = String(stack).split('\n'); - for (const line of lines) { - output += inner + ' ' + line + '\n'; - } - } - output += container; - return red(output); -} - -function renderDuration(durationMs: number) { - return Number(durationMs).toFixed(0); -} - -export class TestReporter implements Reporter { - metrics = { - succeeded: 0, - failed: 0, - skipped: 0, - }; - - journeys: Map<string, Array<StepEndResult & { name: string }>> = new Map(); - - constructor(options: ReporterOptions = {}) {} - - onJourneyStart(journey: Journey, {}: JourneyStartResult) { - if (process.env.CI) { - this.write(`\n--- Journey: ${journey.name}`); - } else { - this.write(bold(`\n Journey: ${journey.name}`)); - } - } - - onStepEnd(journey: Journey, step: Step, result: StepEndResult) { - const { status, end, start, error } = result; - const message = `${symbols[status]} Step: '${step.name}' ${status} (${renderDuration( - (end - start) * 1000 - )} ms)`; - this.write(indent(message)); - if (error) { - this.write(renderError(error)); - } - this.metrics[status]++; - if (!this.journeys.has(journey.name)) { - this.journeys.set(journey.name, []); - } - this.journeys.get(journey.name)?.push({ name: step.name, ...result }); - } - - async onJourneyEnd(journey: Journey, { error, start, end, status }: JourneyEndResult) { - const { failed, succeeded, skipped } = this.metrics; - const total = failed + succeeded + skipped; - if (total === 0 && error) { - this.write(renderError(error)); - } - const message = `${symbols[status]} Took (${renderDuration(end - start)} seconds)`; - this.write(message); - - await fs.promises.mkdir('.journeys/failed_steps', { recursive: true }); - - await gatherScreenshots(join(CACHE_PATH, 'screenshots'), async (screenshot) => { - const { data, step } = screenshot; - - if (status === 'failed') { - await (async () => { - await fs.promises.writeFile(join('.journeys/failed_steps/', `${step.name}.jpg`), data, { - encoding: 'base64', - }); - })(); - } - }); - } - - onEnd() { - const failedJourneys = Array.from(this.journeys.entries()).filter(([, steps]) => - steps.some((step) => step.status === 'failed') - ); - - if (failedJourneys.length > 0) { - failedJourneys.forEach(([journeyName, steps]) => { - if (process.env.CI) { - const name = red(`Journey: ${journeyName} 🥵`); - this.write(`\n+++ ${name}`); - steps.forEach((stepResult) => { - const { status, end, start, error, name: stepName } = stepResult; - const message = `${symbols[status]} Step: '${stepName}' ${status} (${renderDuration( - (end - start) * 1000 - )} ms)`; - this.write(indent(message)); - if (error) { - this.write(renderError(error)); - } - }); - } - }); - } - - const successfulJourneys = Array.from(this.journeys.entries()).filter(([, steps]) => - steps.every((step) => step.status === 'succeeded') - ); - - successfulJourneys.forEach(([journeyName, steps]) => { - try { - fs.unlinkSync('.journeys/videos/' + journeyName + '.webm'); - } catch (e) { - // eslint-disable-next-line no-console - console.log( - 'Failed to delete video file for path ' + '.journeys/videos/' + journeyName + '.webm' - ); - } - }); - - const { failed, succeeded, skipped } = this.metrics; - const total = failed + succeeded + skipped; - - let message = '\n'; - if (total === 0) { - message = 'No tests found!'; - message += ` (${renderDuration(now())} ms) \n`; - this.write(message); - return; - } - - message += succeeded > 0 ? green(` ${succeeded} passed`) : ''; - message += failed > 0 ? red(` ${failed} failed`) : ''; - message += skipped > 0 ? cyan(` ${skipped} skipped`) : ''; - message += ` (${renderDuration(now() / 1000)} seconds) \n`; - this.write(message); - } - - write(message: any) { - if (typeof message === 'object') { - message = JSON.stringify(message); - } - log(message + '\n'); - } -} - -const SEPARATOR = '\n'; - -function indent(lines: string, tab = ' ') { - return lines.replace(/^/gm, tab); -} - -const NO_UTF8_SUPPORT = process.platform === 'win32'; -const symbols = { - warning: yellow(NO_UTF8_SUPPORT ? '!' : '⚠'), - skipped: cyan('-'), - progress: cyan('>'), - succeeded: green(NO_UTF8_SUPPORT ? 'ok' : '✓'), - failed: red(NO_UTF8_SUPPORT ? 'x' : '✖'), -}; - -function now() { - return performance.now(); -} - -function findPWLogsIndexes(msgOrStack: string): [number, number] { - let startIndex = 0; - let endIndex = 0; - if (!msgOrStack) { - return [startIndex, endIndex]; - } - const lines = String(msgOrStack).split(SEPARATOR); - const logStart = /[=]{3,} logs [=]{3,}/; - const logEnd = /[=]{10,}/; - lines.forEach((line, index) => { - if (logStart.test(line)) { - startIndex = index; - } else if (logEnd.test(line)) { - endIndex = index; - } - }); - return [startIndex, endIndex]; -} - -function rewriteErrorStack(stack: string, indexes: [number, number]) { - const [start, end] = indexes; - /** - * Do not rewrite if its not a playwright error - */ - if (start === 0 && end === 0) { - return stack; - } - const linesToKeep = start + 3; - if (start > 0 && linesToKeep < end) { - const lines = stack.split(SEPARATOR); - return lines - .slice(0, linesToKeep) - .concat(...lines.slice(end)) - .join(SEPARATOR); - } - return stack; -} diff --git a/x-pack/plugins/observability_solution/ux/e2e/synthetics_run.ts b/x-pack/plugins/observability_solution/ux/e2e/synthetics_run.ts deleted file mode 100644 index 7c7581b10e6a6..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/synthetics_run.ts +++ /dev/null @@ -1,40 +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 { FtrConfigProviderContext } from '@kbn/test'; -import path from 'path'; -import { argv } from './helpers/parse_args_params'; -import { SyntheticsRunner } from './helpers/synthetics_runner'; - -const { headless, grep, bail: pauseOnError } = argv; - -async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { - const kibanaConfig = await readConfigFile(require.resolve('@kbn/synthetics-e2e/config')); - - return { - ...kibanaConfig.getAll(), - testRunner: async ({ getService }: any) => { - const syntheticsRunner = new SyntheticsRunner(getService, { - headless, - match: grep, - pauseOnError, - }); - - await syntheticsRunner.setup(); - - const fixturesDir = path.join(__dirname, '../e2e/fixtures/'); - - await syntheticsRunner.loadTestData(fixturesDir, ['rum_8.0.0', 'rum_test_data']); - await syntheticsRunner.loadTestFiles(async () => { - require('./journeys'); - }); - await syntheticsRunner.run(); - }, - }; -} - -// eslint-disable-next-line import/no-default-export -export default runE2ETests; diff --git a/x-pack/plugins/observability_solution/ux/e2e/tasks/es_archiver.ts b/x-pack/plugins/observability_solution/ux/e2e/tasks/es_archiver.ts deleted file mode 100644 index 8415de3a385bd..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/tasks/es_archiver.ts +++ /dev/null @@ -1,37 +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 Path from 'path'; -import { execSync } from 'child_process'; - -const ES_ARCHIVE_DIR = './fixtures/es_archiver'; - -// Otherwise execSync would inject NODE_TLS_REJECT_UNAUTHORIZED=0 and node would abort if used over https -const NODE_TLS_REJECT_UNAUTHORIZED = '1'; - -export const esArchiverLoad = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../../scripts/es_archiver load "${path}" --config ../../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverUnload = (folder: string) => { - const path = Path.join(ES_ARCHIVE_DIR, folder); - execSync( - `node ../../../../../scripts/es_archiver unload "${path}" --config ../../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; - -export const esArchiverResetKibana = () => { - execSync( - `node ../../../../../scripts/es_archiver empty-kibana-index --config ../../../../test/functional/config.base.js`, - { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } - ); -}; diff --git a/x-pack/plugins/observability_solution/ux/e2e/tsconfig.json b/x-pack/plugins/observability_solution/ux/e2e/tsconfig.json deleted file mode 100644 index 93a315a3e7a6b..0000000000000 --- a/x-pack/plugins/observability_solution/ux/e2e/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../../../../tsconfig.base.json", - "exclude": ["tmp", "target/**/*"], - "include": ["./**/*"], - "compilerOptions": { - "outDir": "target/types", - "types": ["node"] - }, - "kbn_references": ["@kbn/test", "@kbn/apm-plugin", "@kbn/es-archiver"] -} diff --git a/x-pack/plugins/observability_solution/ux/jest.config.js b/x-pack/plugins/observability_solution/ux/jest.config.js deleted file mode 100644 index b83d3a7ba5455..0000000000000 --- a/x-pack/plugins/observability_solution/ux/jest.config.js +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -const path = require('path'); - -module.exports = { - preset: '@kbn/test', - rootDir: path.resolve(__dirname, '../../../..'), - roots: ['<rootDir>/x-pack/plugins/observability_solution/ux'], -}; diff --git a/x-pack/plugins/observability_solution/ux/kibana.jsonc b/x-pack/plugins/observability_solution/ux/kibana.jsonc deleted file mode 100644 index f2770a896d89b..0000000000000 --- a/x-pack/plugins/observability_solution/ux/kibana.jsonc +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "plugin", - "id": "@kbn/ux-plugin", - "owner": [ - "@elastic/obs-ux-infra_services-team" - ], - "group": "observability", - "visibility": "private", - "plugin": { - "id": "ux", - "browser": true, - "server": true, - "configPath": [ - "xpack", - "ux" - ], - "requiredPlugins": [ - "features", - "data", - "dataViews", - "exploratoryView", - "licensing", - "triggersActionsUi", - "observabilityShared", - "embeddable", - "inspector", - "apm" - ], - "optionalPlugins": [ - "cloud", - "usageCollection", - "taskManager", - "actions", - "alerts", - "observability", - "security", - "maps", - "lens", - "observabilityAIAssistant", - "spaces" - ], - "requiredBundles": [ - "kibanaReact", - "exploratoryView", - "observability", - "maps" - ] - } -} \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/ux/readme.md b/x-pack/plugins/observability_solution/ux/readme.md deleted file mode 100644 index e03da5df05eea..0000000000000 --- a/x-pack/plugins/observability_solution/ux/readme.md +++ /dev/null @@ -1,14 +0,0 @@ -# Documentation for UX UI developers - -https://docs.elastic.dev/kibana-dev-docs/welcome - -## Running E2E Tests - -The tests are managed via the `scripts/e2e.js` file. This script accepts numerous options. - -From the Kibana root you can run `node x-pack/plugins/observability_solution/ux/scripts/e2e.js` to simply stand up the stack, load data, and run the tests. - -If you are developing a new test, it is better to stand up the stack in one shell and load data/run tests in a second session. You can do this by running: - -- `node ./x-pack/plugins/observability_solution/ux/scripts/e2e.js --server` -- `node ./x-pack/plugins/observability_solution/ux/scripts/e2e.js --runner`, you can also specify `--grep "{TEST_NAME}"` to run a specific series of tests diff --git a/x-pack/plugins/observability_solution/ux/tsconfig.json b/x-pack/plugins/observability_solution/ux/tsconfig.json deleted file mode 100644 index b27a700aa9b1f..0000000000000 --- a/x-pack/plugins/observability_solution/ux/tsconfig.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "../../../../typings/**/*", - "common/**/*", - "public/**/*", - "server/**/*", - "typings/**/*", - "public/**/*.json" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/data-plugin", - "@kbn/embeddable-plugin", - "@kbn/home-plugin", - "@kbn/inspector-plugin", - "@kbn/kibana-react-plugin", - "@kbn/apm-plugin", - "@kbn/features-plugin", - "@kbn/licensing-plugin", - "@kbn/maps-plugin", - "@kbn/observability-plugin", - "@kbn/lens-plugin", - "@kbn/i18n", - "@kbn/io-ts-utils", - "@kbn/data-views-plugin", - "@kbn/core-http-browser", - "@kbn/datemath", - "@kbn/ui-theme", - "@kbn/typed-react-router-config", - "@kbn/utility-types", - "@kbn/server-route-repository", - "@kbn/es-types", - "@kbn/shared-ux-page-kibana-template", - "@kbn/i18n-react", - "@kbn/es-query", - "@kbn/exploratory-view-plugin", - "@kbn/observability-shared-plugin", - "@kbn/shared-ux-router", - "@kbn/observability-ai-assistant-plugin", - "@kbn/config-schema", - "@kbn/shared-ux-link-redirect-app", - "@kbn/apm-data-view", - "@kbn/spaces-plugin", - "@kbn/deeplinks-observability", - "@kbn/react-kibana-context-render", - "@kbn/react-kibana-context-theme", - "@kbn/search-types", - "@kbn/server-route-repository-utils", - "@kbn/core-chrome-browser" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/osquery/cypress/README.md b/x-pack/plugins/osquery/cypress/README.md deleted file mode 100644 index 6d72c6aa82b9d..0000000000000 --- a/x-pack/plugins/osquery/cypress/README.md +++ /dev/null @@ -1,138 +0,0 @@ -# Cypress Tests - -The `osquery/cypress` directory contains functional UI tests that execute using [Cypress](https://www.cypress.io/). - -## Running the tests - -There are currently three ways to run the tests, comprised of two execution modes and two target environments, which will be detailed below. - -### Execution modes - -#### Interactive mode - -When you run Cypress in interactive mode, an interactive runner is displayed that allows you to see commands as they execute while also viewing the application under test. For more information, please see [cypress documentation](https://docs.cypress.io/guides/core-concepts/test-runner.html#Overview). - -#### Headless mode - -A headless browser is a browser simulation program that does not have a user interface. These programs operate like any other browser, but do not display any UI. This is why meanwhile you are executing the tests on this mode you are not going to see the application under test. Just the output of the test is displayed on the terminal once the execution is finished. - -### Target environments - -#### FTR (CI) - -This is the configuration used by CI. It uses the FTR to spawn both a Kibana instance (http://localhost:5620) and an Elasticsearch instance (http://localhost:9220) with a preloaded minimum set of data (see preceding "Test data" section), and then executes cypress against this stack. You can find this configuration in `x-pack/test/osquery_cypress` - -### Test Execution: Examples - -#### FTR + Headless (Chrome) - -Since this is how tests are run on CI, this will likely be the configuration you want to reproduce failures locally, etc. - -```shell -# bootstrap kibana from the project root -yarn kbn bootstrap - -# build the plugins/assets that cypress will execute against -node scripts/build_kibana_platform_plugins - -# launch the cypress test runner -cd x-pack/plugins/osquery -yarn cypress:run-as-ci -``` -#### FTR + Interactive - -This is the preferred mode for developing new tests. - -```shell -# bootstrap kibana from the project root -yarn kbn bootstrap - -# build the plugins/assets that cypress will execute against -node scripts/build_kibana_platform_plugins - -# launch the cypress test runner -cd x-pack/plugins/osquery -yarn cypress:open-as-ci -``` - -Note that you can select the browser you want to use on the top right side of the interactive runner. - -## Folder Structure - -### integration/ - -Cypress convention. Contains the specs that are going to be executed. - -### fixtures/ - -Cypress convention. Fixtures are used as external pieces of static data when we stub responses. - -### plugins/ - -Cypress convention. As a convenience, by default Cypress will automatically include the plugins file cypress/plugins/index.js before every single spec file it runs. - -### screens/ - -Contains the elements we want to interact with in our tests. - -Each file inside the screens folder represents a screen in our application. - -### tasks/ - -_Tasks_ are functions that may be reused across tests. - -Each file inside the tasks folder represents a screen of our application. - -## Test data - -The data the tests need: - -- Is generated on the fly using our application APIs (preferred way) -- Is ingested on the ELS instance using the `es_archive` utility - -### How to generate a new archive - -**Note:** As mentioned above, archives are only meant to contain external data, e.g. beats data. Due to the tendency for archived domain objects (rules, signals) to quickly become out of date, it is strongly suggested that you generate this data within the test, through interaction with either the UI or the API. - -We use es_archiver to manage the data that our Cypress tests need. - -1. Set up a clean instance of kibana and elasticsearch (if this is not possible, try to clean/minimize the data that you are going to archive). -2. With the kibana and elasticsearch instance up and running, create the data that you need for your test. -3. When you are sure that you have all the data you need run the following command from: `x-pack/plugins/osquery` - -```sh -node ../../../scripts/es_archiver save <nameOfTheFolderWhereDataIsSaved> <indexPatternsToBeSaved> --dir ../../test/osquery_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http://<elasticsearchUsername>:<elasticsearchPassword>@<elasticsearchHost>:<elasticsearchPort> -``` - -Example: - -```sh -node ../../../scripts/es_archiver save custom_rules ".kibana",".siem-signal*" --dir ../../test/osquery_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http://elastic:changeme@localhost:9220 -``` - -Note that the command will create the folder if it does not exist. - -## Development Best Practices - -### Clean up the state - -Remember to clean up the state of the test after its execution, typically with the `cleanKibana` function. Be mindful of failure scenarios, as well: if your test fails, will it leave the environment in a recoverable state? - -### Minimize the use of es_archive - -When possible, create all the data that you need for executing the tests using the application APIS or the UI. - -### Speed up test execution time - -Loading the web page takes a big amount of time, in order to minimize that impact, the following points should be -taken into consideration until another solution is implemented: - -- Group the tests that are similar in different contexts. -- For every context login only once, clean the state between tests if needed without re-loading the page. -- All tests in a spec file must be order-independent. - -Remember that minimizing the number of times the web page is loaded, we minimize as well the execution time. - -## Linting - -Optional linting rules for Cypress and linting setup can be found [here](https://github.com/cypress-io/eslint-plugin-cypress#usage) diff --git a/x-pack/plugins/osquery/cypress/reporter_config.json b/x-pack/plugins/osquery/cypress/reporter_config.json deleted file mode 100644 index c472bd0bb643e..0000000000000 --- a/x-pack/plugins/osquery/cypress/reporter_config.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "reporterEnabled": "mochawesome, mocha-junit-reporter", - "reporterOptions": { - "html": false, - "json": true, - "mochaFile": "../../../target/kibana-osquery/cypress/results/TEST-osquery-cypress-[hash].xml", - "overwrite": false, - "reportDir": "../../../target/kibana-osquery/cypress/results" - } -} diff --git a/x-pack/plugins/osquery/cypress/tasks/archiver.ts b/x-pack/plugins/osquery/cypress/tasks/archiver.ts deleted file mode 100644 index 8f2c179a3abdd..0000000000000 --- a/x-pack/plugins/osquery/cypress/tasks/archiver.ts +++ /dev/null @@ -1,28 +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. - */ - -export enum ArchiverMethod { - SAVE = 'save', - LOAD = 'load', - UNLOAD = 'unload', -} - -export const runKbnArchiverScript = ( - method: ArchiverMethod, - fileName: string, - space = 'default' -) => { - const { - ELASTICSEARCH_USERNAME, - ELASTICSEARCH_PASSWORD, - hostname: HOSTNAME, - configport: PORT, - } = Cypress.env(); - const script = `node ../../../scripts/kbn_archiver.js --space ${space} --kibana-url http://${ELASTICSEARCH_USERNAME}:${ELASTICSEARCH_PASSWORD}@${HOSTNAME}:${PORT} ${method} ./cypress/fixtures/saved_objects/${fileName}.ndjson`; - - cy.exec(script, { env: { NODE_TLS_REJECT_UNAUTHORIZED: 1 } }); -}; diff --git a/x-pack/plugins/osquery/cypress/tsconfig.json b/x-pack/plugins/osquery/cypress/tsconfig.json deleted file mode 100644 index eedf7db6e8528..0000000000000 --- a/x-pack/plugins/osquery/cypress/tsconfig.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "include": [ - "**/*", - "./cypress.config.ts", - "./serverless_cypress.config.ts", - "./serverless_cypress_qa.config.ts", - "../../../test_serverless/shared/lib", - ], - "exclude": [ - "target/**/*", - "../../../test_serverless/shared/lib/security/default_http_headers.ts" - ], - "compilerOptions": { - "outDir": "target/types", - "types": [ - "cypress", - "node", - ], - "resolveJsonModule": true, - }, - "kbn_references": [ - "@kbn/test-suites-serverless", - { - "path": "../../../test/security_solution_cypress/cypress/tsconfig.json" - }, - "@kbn/cypress-config", - // cypress projects that are nested inside of other ts project use code - // from the parent ts project in ways that can't be automatically deteceted - // at this time so we have to force the inclusion of this reference - { - "path": "../tsconfig.json", - "force": true - }, - "@kbn/security-solution-plugin", - "@kbn/fleet-plugin", - "@kbn/cases-plugin", - "@kbn/security-solution-plugin/public/management/cypress", - "@kbn/test-suites-xpack/security_solution_cypress/cypress", - ] -} diff --git a/x-pack/plugins/osquery/jest.config.js b/x-pack/plugins/osquery/jest.config.js deleted file mode 100644 index ea070e615b6bc..0000000000000 --- a/x-pack/plugins/osquery/jest.config.js +++ /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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/osquery'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/osquery', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/osquery/{common,public,server}/**/*.{ts,tsx}'], -}; diff --git a/x-pack/plugins/osquery/package.json b/x-pack/plugins/osquery/package.json deleted file mode 100644 index f6dac0fd15c02..0000000000000 --- a/x-pack/plugins/osquery/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "author": "Elastic", - "name": "@kbn/osquery-plugin", - "version": "1.0.0", - "private": true, - "license": "Elastic License 2.0", - "scripts": { - "cypress:burn": "yarn cypress:run --env burn=2 --headed", - "cypress:changed-specs-only": "yarn cypress:run --changed-specs-only --env burn=2", - "cypress": "NODE_OPTIONS=--openssl-legacy-provider node ../security_solution/scripts/start_cypress_parallel --config-file ../osquery/cypress/cypress.config.ts --ftr-config-file ../../../x-pack/test/osquery_cypress/cli_config", - "cypress:open": "yarn cypress open", - "cypress:run": "yarn cypress run", - "cypress:serverless": "NODE_OPTIONS=--openssl-legacy-provider node ../security_solution/scripts/start_cypress_parallel --config-file ../osquery/cypress/serverless_cypress.config.ts --ftr-config-file ../../../x-pack/test/osquery_cypress/serverless_cli_config", - "cypress:serverless:open": "yarn cypress:serverless open", - "cypress:serverless:run": "yarn cypress:serverless run", - "cypress:qa:serverless": "NODE_OPTIONS=--openssl-legacy-provider node ../security_solution/scripts/start_cypress_parallel_serverless --config-file ../osquery/cypress/serverless_cypress_qa.config.ts --onBeforeHook ../../test/osquery_cypress/runner_qa.ts", - "cypress:qa:serverless:run": "yarn cypress:qa:serverless run", - "nyc": "../../../node_modules/.bin/nyc report --reporter=text-summary", - "junit:merge": "../../../node_modules/.bin/mochawesome-merge ../../../target/kibana-osquery/cypress/results/mochawesome*.json > ../../../target/kibana-osquery/cypress/results/output.json && ../../../node_modules/.bin/marge ../../../target/kibana-osquery/cypress/results/output.json --reportDir ../../../target/kibana-osquery/cypress/results && yarn junit:transform && mkdir -p ../../../target/junit && cp ../../../target/kibana-osquery/cypress/results/*.xml ../../../target/junit/", - "junit:transform": "node ../security_solution/scripts/junit_transformer --pathPattern '../../../target/kibana-osquery/cypress/results/*.xml' --rootDirectory ../../../ --reportName 'Osquery Cypress' --writeInPlace", - "openapi:generate": "node scripts/openapi/generate", - "openapi:bundle": "node scripts/openapi/bundle" - } -} diff --git a/x-pack/plugins/osquery/scripts/openapi/bundle.js b/x-pack/plugins/osquery/scripts/openapi/bundle.js deleted file mode 100644 index 49594c2fa5ce2..0000000000000 --- a/x-pack/plugins/osquery/scripts/openapi/bundle.js +++ /dev/null @@ -1,60 +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. - */ - -require('../../../../../src/setup_node_env'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { bundle } = require('@kbn/openapi-bundler'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { resolve } = require('path'); - -const ELASTIC_ASSISTANT_ROOT = resolve(__dirname, '../..'); - -(async () => { - await bundle({ - rootDir: ELASTIC_ASSISTANT_ROOT, - sourceGlob: 'common/api/**/*.schema.yaml', - outputFilePath: 'docs/openapi/serverless/osquery_api_{version}.bundled.schema.yaml', - options: { - includeLabels: ['serverless'], - prototypeDocument: { - info: { - title: 'Security Osquery API (Elastic Cloud Serverless)', - description: 'Run live queries, manage packs and saved queries.', - }, - tags: [ - { - name: 'Security Osquery API', - 'x-displayName': 'Security Osquery', - description: 'Run live queries, manage packs and saved queries.', - }, - ], - }, - }, - }); - - await bundle({ - rootDir: ELASTIC_ASSISTANT_ROOT, - sourceGlob: 'common/api/**/*.schema.yaml', - outputFilePath: 'docs/openapi/ess/osquery_api_{version}.bundled.schema.yaml', - options: { - includeLabels: ['ess'], - prototypeDocument: { - info: { - title: 'Security Osquery API (Elastic Cloud and self-hosted)', - description: 'Run live queries, manage packs and saved queries.', - }, - tags: [ - { - name: 'Security Osquery API', - 'x-displayName': 'Security Osquery', - description: 'Run live queries, manage packs and saved queries.', - }, - ], - }, - }, - }); -})(); diff --git a/x-pack/plugins/osquery/scripts/openapi/generate.js b/x-pack/plugins/osquery/scripts/openapi/generate.js deleted file mode 100644 index 418b978973fa6..0000000000000 --- a/x-pack/plugins/osquery/scripts/openapi/generate.js +++ /dev/null @@ -1,39 +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. - */ - -require('../../../../../src/setup_node_env'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { generate } = require('@kbn/openapi-generator'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { REPO_ROOT } = require('@kbn/repo-info'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { join, resolve } = require('path'); - -const OSQUERY_ROOT = resolve(__dirname, '../..'); - -(async () => { - await generate({ - title: 'API route schemas', - rootDir: OSQUERY_ROOT, - sourceGlob: 'common/api/**/*.schema.yaml', - templateName: 'zod_operation_schema', - }); - - await generate({ - title: 'API client for tests', - rootDir: OSQUERY_ROOT, - sourceGlob: 'common/api/**/*.schema.yaml', - templateName: 'api_client_supertest', - skipLinting: true, - bundle: { - outFile: join( - REPO_ROOT, - 'x-pack/test/api_integration/services/security_solution_osquery_api.gen.ts' - ), - }, - }); -})(); diff --git a/x-pack/plugins/osquery/tsconfig.json b/x-pack/plugins/osquery/tsconfig.json deleted file mode 100644 index 141683d7e500f..0000000000000 --- a/x-pack/plugins/osquery/tsconfig.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "exclude": ["target/**/*"], - "include": [ - // add all the folders contains files to be compiled - "common/**/*", - "public/**/*", - "scripts/**/*", - "scripts/**/**.json", - "server/**/*", - "../../../typings/**/*", - // ECS and Osquery schema files - "public/common/schemas/*/**.json" - ], - "kbn_references": [ - "@kbn/core", - { "path": "../../../src/setup_node_env/tsconfig.json" }, - // add references to other TypeScript projects the plugin depends on - - // requiredPlugins from ./kibana.json - "@kbn/data-plugin", - "@kbn/navigation-plugin", - "@kbn/fleet-plugin", - - // optionalPlugins from ./kibana.json - "@kbn/cases-plugin", - - // requiredBundles from ./kibana.json - "@kbn/es-ui-shared-plugin", - "@kbn/kibana-react-plugin", - "@kbn/kibana-utils-plugin", - - // packages - "@kbn/config-schema", - "@kbn/es-query", - "@kbn/utility-types", - "@kbn/securitysolution-io-ts-utils", - "@kbn/osquery-io-ts-types", - "@kbn/i18n-react", - "@kbn/discover-plugin", - "@kbn/lens-plugin", - "@kbn/security-plugin", - "@kbn/triggers-actions-ui-plugin", - "@kbn/timelines-plugin", - "@kbn/spaces-plugin", - "@kbn/i18n", - "@kbn/rison", - "@kbn/react-field", - "@kbn/dev-cli-runner", - "@kbn/telemetry-plugin", - "@kbn/actions-plugin", - "@kbn/features-plugin", - "@kbn/task-manager-plugin", - "@kbn/data-views-plugin", - "@kbn/rule-registry-plugin", - "@kbn/securitysolution-es-utils", - "@kbn/core-elasticsearch-client-server-mocks", - "@kbn/std", - "@kbn/core-elasticsearch-server", - "@kbn/core-saved-objects-api-server", - "@kbn/logging", - "@kbn/safer-lodash-set", - "@kbn/shared-ux-router", - "@kbn/licensing-plugin", - "@kbn/core-lifecycle-browser", - "@kbn/core-saved-objects-server", - "@kbn/monaco", - "@kbn/io-ts-utils", - "@kbn/shared-ux-page-kibana-template", - "@kbn/openapi-generator", - "@kbn/code-editor", - "@kbn/search-types", - "@kbn/react-kibana-context-render", - "@kbn/zod-helpers", - "@kbn/openapi-bundler", - "@kbn/repo-info", - "@kbn/zod" - ] -} diff --git a/x-pack/plugins/painless_lab/jest.config.js b/x-pack/plugins/painless_lab/jest.config.js deleted file mode 100644 index 364e9e5a08fa4..0000000000000 --- a/x-pack/plugins/painless_lab/jest.config.js +++ /dev/null @@ -1,17 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/painless_lab'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/painless_lab', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/painless_lab/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/painless_lab/tsconfig.json b/x-pack/plugins/painless_lab/tsconfig.json deleted file mode 100644 index 857711e8da847..0000000000000 --- a/x-pack/plugins/painless_lab/tsconfig.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - ], - "kbn_references": [ - "@kbn/core", - "@kbn/dev-tools-plugin", - "@kbn/home-plugin", - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/licensing-plugin", - "@kbn/i18n", - "@kbn/monaco", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/code-editor", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/remote_clusters/jest.config.js b/x-pack/plugins/remote_clusters/jest.config.js deleted file mode 100644 index 3467ea1d5b405..0000000000000 --- a/x-pack/plugins/remote_clusters/jest.config.js +++ /dev/null @@ -1,17 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/remote_clusters'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/remote_clusters', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/remote_clusters/{common,public,server}/**/*.{js,ts,tsx}', - ], -}; diff --git a/x-pack/plugins/remote_clusters/tsconfig.json b/x-pack/plugins/remote_clusters/tsconfig.json deleted file mode 100644 index 37add085af751..0000000000000 --- a/x-pack/plugins/remote_clusters/tsconfig.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "__jest__/**/*", - "common/**/*", - "fixtures/**/*", - "public/**/*", - "server/**/*", - "../../../typings/**/*", - ], - "kbn_references": [ - "@kbn/core", - // required plugins - "@kbn/licensing-plugin", - "@kbn/management-plugin", - "@kbn/features-plugin", - // optional plugins - "@kbn/usage-collection-plugin", - "@kbn/cloud-plugin", - // required bundles - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/test-jest-helpers", - "@kbn/core-execution-context-browser-mocks", - "@kbn/i18n", - "@kbn/utility-types", - "@kbn/share-plugin", - "@kbn/core-http-browser", - "@kbn/analytics", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/expect", - "@kbn/shared-ux-router", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/rollup/jest.config.js b/x-pack/plugins/rollup/jest.config.js deleted file mode 100644 index 937ff3524f9d6..0000000000000 --- a/x-pack/plugins/rollup/jest.config.js +++ /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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/rollup'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/rollup', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/rollup/{common,public,server}/**/*.{js,ts,tsx}'], -}; diff --git a/x-pack/plugins/rollup/tsconfig.json b/x-pack/plugins/rollup/tsconfig.json deleted file mode 100644 index a74f689515de1..0000000000000 --- a/x-pack/plugins/rollup/tsconfig.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "fixtures/**/*", - "public/**/*", - "server/**/*", - ], - "kbn_references": [ - "@kbn/core", - // required plugins - "@kbn/management-plugin", - "@kbn/licensing-plugin", - "@kbn/features-plugin", - // optional plugins - "@kbn/home-plugin", - "@kbn/index-management-plugin", - "@kbn/usage-collection-plugin", - // required bundles - "@kbn/kibana-utils-plugin", - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/data-plugin", - "@kbn/test-jest-helpers", - "@kbn/analytics", - "@kbn/i18n", - "@kbn/core-http-browser", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/shared-ux-router", - "@kbn/data-views-plugin", - "@kbn/react-kibana-context-render", - "@kbn/rollup", - - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/runtime_fields/README.md b/x-pack/plugins/runtime_fields/README.md deleted file mode 100644 index 9c0e0e03f2fe5..0000000000000 --- a/x-pack/plugins/runtime_fields/README.md +++ /dev/null @@ -1,239 +0,0 @@ -# Runtime fields - -Welcome to the home of the runtime field editor and everything related to runtime fields! - -## The runtime field editor - -### Integration - -The recommended way to integrate the runtime fields editor is by adding a plugin dependency to the `"runtimeFields"` x-pack plugin. This way you will be able to lazy load the editor when it is required and it will not increment the bundle size of your plugin. - -```js -// 1. Add the plugin as a dependency in your kibana.json -{ - ... - "requiredBundles": [ - "runtimeFields", - ... - ] -} - -// 2. Access it in your plugin setup() -export class MyPlugin { - setup(core, { runtimeFields }) { - // logic to provide it to your app, probably through context - } -} - -// 3. Load the editor and open it anywhere in your app -const MyComponent = () => { - // Access the plugin through context - const { runtimeFields } = useAppPlugins(); - - // Ref of the handler to close the editor - const closeRuntimeFieldEditor = useRef(() => {}); - - const saveRuntimeField = (field: RuntimeField) => { - // Do something with the field - // See interface returned in @returns section below - }; - - const openRuntimeFieldsEditor = async() => { - // Lazy load the editor - const { openEditor } = await runtimeFields.loadEditor(); - - closeRuntimeFieldEditor.current = openEditor({ - onSave: saveRuntimeField, - /* defaultValue: optional field to edit */ - /* ctx: Context -- see section below */ - }); - }; - - useEffect(() => { - return () => { - // Make sure to remove the editor when the component unmounts - closeRuntimeFieldEditor.current(); - }; - }, []); - - return ( - <button onClick={openRuntimeFieldsEditor}>Add field</button> - ) -} -``` - -#### `@returns` - -You get back a `RuntimeField` object with the following interface - -```ts -interface RuntimeField { - name: string; - type: RuntimeType; // 'long' | 'boolean' ... - script: { - source: string; - }; -} -``` - -#### Context object - -You can provide a context object to the runtime field editor. It has the following interface - -```ts -interface Context { - /** An array of field name not allowed. You would probably provide an array of existing runtime fields - * to prevent the user creating a field with the same name. - */ - namesNotAllowed?: string[]; - /** - * An array of existing concrete fields. If the user gives a name to the runtime - * field that matches one of the concrete fields, a callout will be displayed - * to indicate that this runtime field will shadow the concrete field. - * This array is also used to provide the list of field autocomplete suggestions to the code editor - */ - existingConcreteFields?: Array<{ - name: string; - type: string; - }>; -} -``` - -#### Other type of integration - -The runtime field editor is also exported as static React component that you can import into your components. The editor is exported in 2 flavours: - -- As the content of a `<EuiFlyout />` (it contains a flyout header and footer) -- As a standalone component that you can inline anywhere - -**Note:** The runtime field editor uses the `<CodeEditor />` that has a dependency on the `Provider` from the `"kibana_react"` plugin. If your app is not already wrapped by this provider you will need to add it at least around the runtime field editor. You can see an example in the ["Using the core.overlays.openFlyout()"](#using-the-coreoverlaysopenflyout) example below. - -### Content of a `<EuiFlyout />` - -```js -import React, { useState } from 'react'; -import { EuiFlyoutBody, EuiButton } from '@elastic/eui'; -import { RuntimeFieldEditorFlyoutContent, RuntimeField } from '../runtime_fields/public'; - -const MyComponent = () => { - const { docLinksStart } = useCoreContext(); // access the core start service - const [isFlyoutVisilbe, setIsFlyoutVisible] = useState(false); - - const saveRuntimeField = useCallback((field: RuntimeField) => { - // Do something with the field - }, []); - - return ( - <> - <EuiButton onClick={() => setIsFlyoutVisible(true)}>Create field</EuiButton> - - {isFlyoutVisible && ( - <EuiFlyout onClose={() => setIsFlyoutVisible(false)}> - <RuntimeFieldEditorFlyoutContent - onSave={saveRuntimeField} - onCancel={() => setIsFlyoutVisible(false)} - docLinks={docLinksStart} - defaultValue={/*optional runtime field to edit*/} - ctx={/*optional context object -- see section above*/} - /> - </EuiFlyout> - )} - </> - ) -} -``` - -#### Using the `core.overlays.openFlyout()` - -As an alternative you can open the flyout with the `openFlyout()` helper from core. - -```js -import React, { useRef } from 'react'; -import { EuiButton } from '@elastic/eui'; -import { OverlayRef } from 'src/core/public'; - -import { createKibanaReactContext, toMountPoint } from '../../src/plugins/kibana_react/public'; -import { RuntimeFieldEditorFlyoutContent, RuntimeField } from '../runtime_fields/public'; - -const MyComponent = () => { - // Access the core start service - const { docLinksStart, theme, overlays, uiSettings } = useCoreContext(); - const flyoutEditor = useRef<OverlayRef | null>(null); - - const { openFlyout } = overlays; - - const saveRuntimeField = useCallback((field: RuntimeField) => { - // Do something with the field - }, []); - - const openRuntimeFieldEditor = useCallback(() => { - const { Provider: KibanaReactContextProvider } = createKibanaReactContext({ uiSettings }); - - flyoutEditor.current = openFlyout( - toMountPoint( - <KibanaReactContextProvider> - <RuntimeFieldEditorFlyoutContent - onSave={saveRuntimeField} - onCancel={() => flyoutEditor.current?.close()} - docLinks={docLinksStart} - defaultValue={defaultRuntimeField} - ctx={/*optional context object -- see section above*/} - /> - </KibanaReactContextProvider>, - { theme$: theme.theme$ } - ) - ); - }, [openFlyout, saveRuntimeField, uiSettings]); - - return ( - <> - <EuiButton onClick={openRuntimeFieldEditor}>Create field</EuiButton> - </> - ) -} -``` - -### Standalone component - -```js -import React, { useState } from 'react'; -import { EuiButton, EuiSpacer } from '@elastic/eui'; -import { RuntimeFieldEditor, RuntimeField, RuntimeFieldFormState } from '../runtime_fields/public'; - -const MyComponent = () => { - const { docLinksStart } = useCoreContext(); // access the core start service - const [runtimeFieldFormState, setRuntimeFieldFormState] = useState<RuntimeFieldFormState>({ - isSubmitted: false, - isValid: undefined, - submit: async() => Promise.resolve({ isValid: false, data: {} as RuntimeField }) - }); - - const { submit, isValid: isFormValid, isSubmitted } = runtimeFieldFormState; - - const saveRuntimeField = useCallback(async () => { - const { isValid, data } = await submit(); - if (isValid) { - // Do something with the field (data) - } - }, [submit]); - - return ( - <> - <RuntimeFieldEditor - onChange={setRuntimeFieldFormState} - docLinks={docLinksStart} - defaultValue={/*optional runtime field to edit*/} - ctx={/*optional context object -- see section above*/} - /> - - <EuiSpacer /> - - <EuiButton - onClick={saveRuntimeField} - disabled={isSubmitted && !isFormValid}> - Save field - </EuiButton> - </> - ) -} -``` diff --git a/x-pack/plugins/runtime_fields/jest.config.js b/x-pack/plugins/runtime_fields/jest.config.js deleted file mode 100644 index 3af90818280cf..0000000000000 --- a/x-pack/plugins/runtime_fields/jest.config.js +++ /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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/runtime_fields'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/runtime_fields', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['<rootDir>/x-pack/plugins/runtime_fields/public/**/*.{ts,tsx}'], -}; diff --git a/x-pack/plugins/runtime_fields/tsconfig.json b/x-pack/plugins/runtime_fields/tsconfig.json deleted file mode 100644 index f2f2a6e27e6c1..0000000000000 --- a/x-pack/plugins/runtime_fields/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "public/**/*", - "../../../typings/**/*", - ], - "kbn_references": [ - "@kbn/core", - "@kbn/es-ui-shared-plugin", - "@kbn/kibana-react-plugin", - "@kbn/test-jest-helpers", - "@kbn/i18n", - "@kbn/i18n-react", - "@kbn/monaco", - "@kbn/code-editor", - "@kbn/code-editor-mock", - "@kbn/react-kibana-mount", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/saved_objects_tagging/public/management/components/table.tsx b/x-pack/plugins/saved_objects_tagging/public/management/components/table.tsx index cde4049a3a82b..4da2bc4841053 100644 --- a/x-pack/plugins/saved_objects_tagging/public/management/components/table.tsx +++ b/x-pack/plugins/saved_objects_tagging/public/management/components/table.tsx @@ -6,10 +6,16 @@ */ import React, { FC, ReactNode } from 'react'; -import { EuiInMemoryTable, EuiBasicTableColumn, EuiLink, Query, EuiIconTip } from '@elastic/eui'; +import { + EuiInMemoryTable, + EuiBasicTableColumn, + EuiLink, + Query, + EuiIconTip, + useEuiTheme, +} from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { euiThemeVars } from '@kbn/ui-theme'; import { TagsCapabilities } from '../../../common'; import type { TagWithRelations } from '../../../common/types'; import { TagBadge } from '../../components'; @@ -59,6 +65,7 @@ export const TagTable: FC<TagTableProps> = ({ actionBar, actions, }) => { + const { euiTheme } = useEuiTheme(); const columns: Array<EuiBasicTableColumn<TagWithRelations>> = [ { field: 'name', @@ -72,7 +79,7 @@ export const TagTable: FC<TagTableProps> = ({ <> <TagBadge tag={tag} /> {tag.managed && ( - <div css={{ marginLeft: euiThemeVars.euiSizeS }}> + <div css={{ marginLeft: euiTheme.size.s }}> <EuiIconTip type="lock" content="This tag is managed by Elastic and cannot be deleted, edited, or assigned to objects." diff --git a/x-pack/plugins/saved_objects_tagging/tsconfig.json b/x-pack/plugins/saved_objects_tagging/tsconfig.json index b5202917aa4ef..b40ffe7f3fa81 100644 --- a/x-pack/plugins/saved_objects_tagging/tsconfig.json +++ b/x-pack/plugins/saved_objects_tagging/tsconfig.json @@ -22,7 +22,6 @@ "@kbn/config-schema", "@kbn/ebt-tools", "@kbn/core-notifications-browser", - "@kbn/ui-theme", "@kbn/react-kibana-context-render", "@kbn/react-kibana-mount", "@kbn/core-lifecycle-browser", diff --git a/x-pack/plugins/search_assistant/kibana.jsonc b/x-pack/plugins/search_assistant/kibana.jsonc index d84d928b7a8b7..3c20e59ccc9a6 100644 --- a/x-pack/plugins/search_assistant/kibana.jsonc +++ b/x-pack/plugins/search_assistant/kibana.jsonc @@ -16,6 +16,7 @@ "requiredPlugins": [ "actions", "licensing", + "ml", // necessary for assistant's use of knowledge base in assistant package "observabilityAIAssistant", "triggersActionsUi", "share" diff --git a/x-pack/plugins/search_connectors/kibana.jsonc b/x-pack/plugins/search_connectors/kibana.jsonc index 6290b9692b384..45ae79ec2cb5c 100644 --- a/x-pack/plugins/search_connectors/kibana.jsonc +++ b/x-pack/plugins/search_connectors/kibana.jsonc @@ -3,7 +3,7 @@ "id": "@kbn/search-connectors-plugin", "owner": "@elastic/search-kibana", // TODO this is currently used from Observability too, must be refactored before solution-specific builds - // see x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx + // see x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx // cc sphilipse "group": "search", "visibility": "private", diff --git a/x-pack/plugins/searchprofiler/jest.config.js b/x-pack/plugins/searchprofiler/jest.config.js deleted file mode 100644 index 3071f75c18d96..0000000000000 --- a/x-pack/plugins/searchprofiler/jest.config.js +++ /dev/null @@ -1,17 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['<rootDir>/x-pack/plugins/searchprofiler'], - coverageDirectory: '<rootDir>/target/kibana-coverage/jest/x-pack/plugins/searchprofiler', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '<rootDir>/x-pack/plugins/searchprofiler/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/searchprofiler/tsconfig.json b/x-pack/plugins/searchprofiler/tsconfig.json deleted file mode 100644 index 063b7dfa63ce6..0000000000000 --- a/x-pack/plugins/searchprofiler/tsconfig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - ], - "kbn_references": [ - "@kbn/core", - "@kbn/es-ui-shared-plugin", - "@kbn/dev-tools-plugin", - "@kbn/home-plugin", - "@kbn/licensing-plugin", - "@kbn/i18n", - "@kbn/share-plugin", - "@kbn/utility-types", - "@kbn/expect", - "@kbn/test-jest-helpers", - "@kbn/i18n-react", - "@kbn/config-schema", - "@kbn/react-kibana-context-render", - "@kbn/code-editor", - "@kbn/monaco", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/security/public/account_management/user_profile/user_profile.test.tsx b/x-pack/plugins/security/public/account_management/user_profile/user_profile.test.tsx index ec0c12aa3bc16..7a20eaf3eff1c 100644 --- a/x-pack/plugins/security/public/account_management/user_profile/user_profile.test.tsx +++ b/x-pack/plugins/security/public/account_management/user_profile/user_profile.test.tsx @@ -414,14 +414,14 @@ describe('useUserProfileForm', () => { expect(testWrapper.exists('EuiBadgeGroup[data-test-subj="remainingRoles"]')).toBeFalsy(); }); - it('should display a popover for users with more than one role', () => { + it('should display a popover for users with more than three roles', () => { const data: UserProfileData = {}; const nonCloudUser = mockAuthenticatedUser({ elastic_cloud_user: false }); coreStart.settings.client.get.mockReturnValue(false); coreStart.settings.client.isOverridden.mockReturnValue(true); - nonCloudUser.roles = [...nonCloudUser.roles, 'user-role-1', 'user-role-2']; + nonCloudUser.roles = [...nonCloudUser.roles, 'user-role-1', 'user-role-2', 'user-role-3']; const testWrapper = mount( <Providers services={coreStart} @@ -436,7 +436,7 @@ describe('useUserProfileForm', () => { </Providers> ); - const extraRoles = nonCloudUser.roles.splice(1); + const extraRoles = nonCloudUser.roles.splice(3); const userRolesExpandButton = testWrapper.find( 'EuiButtonEmpty[data-test-subj="userRolesExpand"]' diff --git a/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx b/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx index 30102964b3438..a68cffaf439af 100644 --- a/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx +++ b/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx @@ -22,9 +22,12 @@ import { EuiIconTip, EuiKeyPadMenu, EuiKeyPadMenuItem, + EuiPageHeaderSection, EuiPopover, EuiSpacer, EuiText, + EuiTextTruncate, + EuiTitle, EuiToolTip, useEuiTheme, useGeneratedHtmlId, @@ -72,6 +75,28 @@ const formRowCSS = css` } `; +const pageHeaderCSS = css` + max-width: 1248px; + margin: auto; + border-bottom: none; +`; + +const pageTitleCSS = css` + min-width: 120px; +`; + +const rightSideItemsCSS = css` + justify-content: flex-start; + + @include euiBreakpoint('m') { + justify-content: flex-end; + } +`; + +const rightSideItemCSS = css` + min-width: 160px; +`; + export interface UserProfileProps { user: AuthenticatedUser; data?: UserProfileData; @@ -607,14 +632,13 @@ function UserPasswordEditor({ } const UserRoles: FunctionComponent<UserRoleProps> = ({ user }) => { - const { euiTheme } = useEuiTheme(); const [isPopoverOpen, setIsPopoverOpen] = useState(false); const onButtonClick = () => setIsPopoverOpen((isOpen) => !isOpen); const closePopover = () => setIsPopoverOpen(false); - const [firstRole] = user.roles; - const remainingRoles = user.roles.slice(1); + const firstThreeRoles = user.roles.slice(0, 3); + const remainingRoles = user.roles.slice(3); const renderMoreRoles = () => { const button = ( @@ -653,16 +677,13 @@ const UserRoles: FunctionComponent<UserRoleProps> = ({ user }) => { return ( <> - <div - style={{ - maxWidth: euiTheme.breakpoint.m / 6, - display: 'inline-block', - }} - > - <EuiBadge key={firstRole} color="hollow" data-test-subj={`role${firstRole}`}> - {firstRole} - </EuiBadge> - </div> + <EuiBadgeGroup gutterSize="xs" data-test-subj="displayedRoles"> + {firstThreeRoles.map((role) => ( + <EuiBadge key={role} color="hollow" data-test-subj={`role${role}`}> + {role} + </EuiBadge> + ))} + </EuiBadgeGroup> {remainingRoles.length ? renderMoreRoles() : null} </> ); @@ -693,7 +714,9 @@ export const UserProfile: FunctionComponent<UserProfileProps> = ({ user, data }) defaultMessage="Username" /> ), - description: user.username as string | undefined | JSX.Element, + description: + user.username && + ((<EuiTextTruncate text={user.username} />) as string | undefined | JSX.Element), helpText: ( <FormattedMessage id="xpack.security.accountManagement.userProfile.usernameHelpText" @@ -712,7 +735,7 @@ export const UserProfile: FunctionComponent<UserProfileProps> = ({ user, data }) defaultMessage="Full name" /> ), - description: user.full_name, + description: user.full_name && <EuiTextTruncate text={user.full_name} />, helpText: ( <FormattedMessage id="xpack.security.accountManagement.userProfile.fullNameHelpText" @@ -729,7 +752,7 @@ export const UserProfile: FunctionComponent<UserProfileProps> = ({ user, data }) defaultMessage="Email address" /> ), - description: user.email, + description: user.email && <EuiTextTruncate text={user.email} />, helpText: ( <FormattedMessage id="xpack.security.accountManagement.userProfile.emailHelpText" @@ -778,48 +801,61 @@ export const UserProfile: FunctionComponent<UserProfileProps> = ({ user, data }) /> ) : null} - <KibanaPageTemplate className="eui-fullHeight" restrictWidth={1000}> - <KibanaPageTemplate.Header - pageTitle={ - <FormattedMessage - id="xpack.security.accountManagement.userProfile.title" - defaultMessage="Profile" - /> - } - id={titleId} - rightSideItems={rightSideItems.reverse().map((item) => ( - <EuiDescriptionList - textStyle="reverse" - listItems={[ - { - title: ( - <EuiText color={euiTheme.colors.darkestShade} size="s"> - <EuiFlexGroup responsive={false} alignItems="center" gutterSize="none"> - <EuiFlexItem grow={false}>{item.title}</EuiFlexItem> - <EuiFlexItem grow={false} style={{ marginLeft: '0.33em' }}> - <EuiIconTip type="questionInCircle" content={item.helpText} /> - </EuiFlexItem> - </EuiFlexGroup> - </EuiText> - ), - description: ( - <span data-test-subj={item.testSubj}> - {item.description || ( - <EuiText color={euiTheme.colors.disabledText} size="s"> - <FormattedMessage - id="xpack.security.accountManagement.userProfile.noneProvided" - defaultMessage="None provided" - /> + <KibanaPageTemplate className="eui-fullHeight" restrictWidth={true}> + <KibanaPageTemplate.Header id={titleId} css={pageHeaderCSS}> + <EuiPageHeaderSection> + <EuiTitle size="l" css={pageTitleCSS}> + <h1> + <FormattedMessage + id="xpack.security.accountManagement.userProfile.title" + defaultMessage="Profile" + /> + </h1> + </EuiTitle> + </EuiPageHeaderSection> + <EuiPageHeaderSection> + <EuiFlexGroup alignItems="flexStart" css={rightSideItemsCSS}> + {rightSideItems.map((item) => ( + <EuiDescriptionList + key={item.testSubj} + textStyle="reverse" + css={rightSideItemCSS} + listItems={[ + { + title: ( + <EuiText color={euiTheme.colors.darkestShade} size="s"> + <EuiFlexGroup + responsive={false} + alignItems="center" + gutterSize="none" + > + <EuiFlexItem grow={false}>{item.title}</EuiFlexItem> + <EuiFlexItem grow={false}> + <EuiIconTip type="questionInCircle" content={item.helpText} /> + </EuiFlexItem> + </EuiFlexGroup> </EuiText> - )} - </span> - ), - }, - ]} - compressed - /> - ))} - /> + ), + description: ( + <span data-test-subj={item.testSubj}> + {item.description || ( + <EuiText color={euiTheme.colors.textDisabled} size="s"> + <FormattedMessage + id="xpack.security.accountManagement.userProfile.noneProvided" + defaultMessage="None provided" + /> + </EuiText> + )} + </span> + ), + }, + ]} + compressed + /> + ))} + </EuiFlexGroup> + </EuiPageHeaderSection> + </KibanaPageTemplate.Header> <KibanaPageTemplate.Section> <Form aria-labelledby={titleId}> <UserDetailsEditor user={user} /> @@ -1009,7 +1045,7 @@ export const SaveChangesBottomBar: FunctionComponent = () => { data-test-subj="saveProfileChangesButton" isLoading={formik.isSubmitting} isDisabled={formik.submitCount > 0 && !formik.isValid} - color="success" + color="primary" iconType="save" fill > diff --git a/x-pack/plugins/security/server/authorization/api_authorization.test.ts b/x-pack/plugins/security/server/authorization/api_authorization.test.ts index 0181c98d6f1b1..d2db2a535b1d1 100644 --- a/x-pack/plugins/security/server/authorization/api_authorization.test.ts +++ b/x-pack/plugins/security/server/authorization/api_authorization.test.ts @@ -20,7 +20,11 @@ import { authorizationMock } from './index.mock'; describe('initAPIAuthorization', () => { test(`protected route when "mode.useRbacForRequest()" returns false continues`, async () => { const mockHTTPSetup = coreMock.createSetup().http; - const mockAuthz = authorizationMock.create(); + const mockAuthz = { + ...authorizationMock.create(), + getCurrentUser: jest.fn(), + getSecurityConfig: jest.fn(), + }; initAPIAuthorization(mockHTTPSetup, mockAuthz, loggingSystemMock.create().get()); const [[postAuthHandler]] = mockHTTPSetup.registerOnPostAuth.mock.calls; @@ -44,7 +48,11 @@ describe('initAPIAuthorization', () => { test(`unprotected route when "mode.useRbacForRequest()" returns true continues`, async () => { const mockHTTPSetup = coreMock.createSetup().http; - const mockAuthz = authorizationMock.create(); + const mockAuthz = { + ...authorizationMock.create(), + getCurrentUser: jest.fn(), + getSecurityConfig: jest.fn(), + }; initAPIAuthorization(mockHTTPSetup, mockAuthz, loggingSystemMock.create().get()); const [[postAuthHandler]] = mockHTTPSetup.registerOnPostAuth.mock.calls; @@ -68,7 +76,11 @@ describe('initAPIAuthorization', () => { test(`protected route when "mode.useRbacForRequest()" returns true and user is authorized continues`, async () => { const mockHTTPSetup = coreMock.createSetup().http; - const mockAuthz = authorizationMock.create({ version: '1.0.0-zeta1' }); + const mockAuthz = { + ...authorizationMock.create({ version: '1.0.0-zeta1' }), + getCurrentUser: jest.fn(), + getSecurityConfig: jest.fn(), + }; initAPIAuthorization(mockHTTPSetup, mockAuthz, loggingSystemMock.create().get()); const [[postAuthHandler]] = mockHTTPSetup.registerOnPostAuth.mock.calls; @@ -105,7 +117,11 @@ describe('initAPIAuthorization', () => { test(`protected route when "mode.useRbacForRequest()" returns true and user isn't authorized responds with a 403`, async () => { const mockHTTPSetup = coreMock.createSetup().http; - const mockAuthz = authorizationMock.create({ version: '1.0.0-zeta1' }); + const mockAuthz = { + ...authorizationMock.create({ version: '1.0.0-zeta1' }), + getCurrentUser: jest.fn(), + getSecurityConfig: jest.fn(), + }; initAPIAuthorization(mockHTTPSetup, mockAuthz, loggingSystemMock.create().get()); const [[postAuthHandler]] = mockHTTPSetup.registerOnPostAuth.mock.calls; @@ -146,8 +162,10 @@ describe('initAPIAuthorization', () => { { security, kibanaPrivilegesResponse, + kibanaCurrentUserResponse, kibanaPrivilegesRequestActions, asserts, + esXpackSecurityUsageResponse, }: { security?: RouteSecurity; kibanaPrivilegesResponse?: { @@ -155,6 +173,10 @@ describe('initAPIAuthorization', () => { hasAllRequested?: boolean; }; kibanaPrivilegesRequestActions?: string[]; + kibanaCurrentUserResponse?: { operator: boolean }; + esXpackSecurityUsageResponse?: { + operator_privileges: { enabled: boolean; available: boolean }; + }; asserts: { forbidden?: boolean; authzResult?: Record<string, boolean>; @@ -164,7 +186,11 @@ describe('initAPIAuthorization', () => { ) => { test(description, async () => { const mockHTTPSetup = coreMock.createSetup().http; - const mockAuthz = authorizationMock.create({ version: '1.0.0-zeta1' }); + const mockAuthz = { + ...authorizationMock.create({ version: '1.0.0-zeta1' }), + getCurrentUser: jest.fn(), + getSecurityConfig: jest.fn(), + }; initAPIAuthorization(mockHTTPSetup, mockAuthz, loggingSystemMock.create().get()); const [[postAuthHandler]] = mockHTTPSetup.registerOnPostAuth.mock.calls; @@ -185,6 +211,8 @@ describe('initAPIAuthorization', () => { const mockPostAuthToolkit = httpServiceMock.createOnPostAuthToolkit(); const mockCheckPrivileges = jest.fn().mockReturnValue(kibanaPrivilegesResponse); + mockAuthz.getCurrentUser.mockReturnValue(kibanaCurrentUserResponse); + mockAuthz.getSecurityConfig.mockResolvedValue(esXpackSecurityUsageResponse); mockAuthz.mode.useRbacForRequest.mockReturnValue(true); mockAuthz.checkPrivilegesDynamicallyWithRequest.mockImplementation((request) => { // hapi conceals the actual "request" from us, so we make sure that the headers are passed to @@ -356,28 +384,77 @@ describe('initAPIAuthorization', () => { ); testSecurityConfig( - `protected route returns forbidden if user has allRequired AND NONE of anyRequired privileges requested`, + `protected route returns "authzResult" if user has operator privileges requested and user is operator`, { security: { authz: { - requiredPrivileges: [ - { - allRequired: ['privilege1'], - anyRequired: ['privilege2', 'privilege3'], - }, - ], + requiredPrivileges: [ReservedPrivilegesSet.operator], + }, + }, + kibanaCurrentUserResponse: { operator: true }, + esXpackSecurityUsageResponse: { operator_privileges: { enabled: true, available: true } }, + asserts: { + authzResult: { + operator: true, + }, + }, + } + ); + + testSecurityConfig( + `protected route returns "authzResult" if user has requested operator privileges and operator privileges are disabled`, + { + security: { + authz: { + requiredPrivileges: [ReservedPrivilegesSet.operator, 'privilege1'], }, }, - kibanaPrivilegesRequestActions: ['privilege1', 'privilege2', 'privilege3'], kibanaPrivilegesResponse: { privileges: { - kibana: [ - { privilege: 'api:privilege1', authorized: true }, - { privilege: 'api:privilege2', authorized: false }, - { privilege: 'api:privilege3', authorized: false }, - ], + kibana: [{ privilege: 'api:privilege1', authorized: true }], + }, + }, + kibanaCurrentUserResponse: { operator: false }, + esXpackSecurityUsageResponse: { operator_privileges: { enabled: false, available: false } }, + asserts: { + authzResult: { + privilege1: true, + }, + }, + } + ); + + testSecurityConfig( + `protected route returns forbidden if user operator privileges are disabled and user doesn't have additional privileges granted`, + { + security: { + authz: { + requiredPrivileges: [ReservedPrivilegesSet.operator, 'privilege1'], + }, + }, + kibanaPrivilegesResponse: { + privileges: { + kibana: [{ privilege: 'api:privilege1', authorized: false }], + }, + }, + kibanaCurrentUserResponse: { operator: false }, + esXpackSecurityUsageResponse: { operator_privileges: { enabled: false, available: false } }, + asserts: { + forbidden: true, + }, + } + ); + + testSecurityConfig( + `protected route returns forbidden if user has operator privileges requested and user is not operator`, + { + security: { + authz: { + requiredPrivileges: [ReservedPrivilegesSet.operator], }, }, + esXpackSecurityUsageResponse: { operator_privileges: { enabled: true, available: true } }, + kibanaCurrentUserResponse: { operator: false }, asserts: { forbidden: true, }, diff --git a/x-pack/plugins/security/server/authorization/api_authorization.ts b/x-pack/plugins/security/server/authorization/api_authorization.ts index 888d74e7d7bb2..dbfc8d03000e4 100644 --- a/x-pack/plugins/security/server/authorization/api_authorization.ts +++ b/x-pack/plugins/security/server/authorization/api_authorization.ts @@ -5,17 +5,22 @@ * 2.0. */ +import { ReservedPrivilegesSet } from '@kbn/core/server'; import type { AuthzDisabled, AuthzEnabled, HttpServiceSetup, + KibanaRequest, Logger, Privilege, PrivilegeSet, RouteAuthz, } from '@kbn/core/server'; -import { ReservedPrivilegesSet } from '@kbn/core/server'; -import type { AuthorizationServiceSetup } from '@kbn/security-plugin-types-server'; +import type { AuthenticatedUser } from '@kbn/security-plugin-types-common'; +import type { + AuthorizationServiceSetup, + EsSecurityConfig, +} from '@kbn/security-plugin-types-server'; import type { RecursiveReadonly } from '@kbn/utility-types'; import { API_OPERATION_PREFIX, SUPERUSER_PRIVILEGES } from '../../common/constants'; @@ -28,6 +33,11 @@ const isReservedPrivilegeSet = (privilege: string): privilege is ReservedPrivile return Object.hasOwn(ReservedPrivilegesSet, privilege); }; +interface InitApiAuthorization extends AuthorizationServiceSetup { + getCurrentUser: (request: KibanaRequest) => AuthenticatedUser | null; + getSecurityConfig: () => Promise<EsSecurityConfig>; +} + export function initAPIAuthorization( http: HttpServiceSetup, { @@ -35,7 +45,9 @@ export function initAPIAuthorization( checkPrivilegesDynamicallyWithRequest, checkPrivilegesWithRequest, mode, - }: AuthorizationServiceSetup, + getCurrentUser, + getSecurityConfig, + }: InitApiAuthorization, logger: Logger ) { http.registerOnPostAuth(async (request, response, toolkit) => { @@ -52,8 +64,55 @@ export function initAPIAuthorization( } const authz = security.authz as AuthzEnabled; + const normalizeRequiredPrivileges = async ( + privileges: AuthzEnabled['requiredPrivileges'] + ) => { + const hasOperatorPrivileges = privileges.some( + (privilege) => + privilege === ReservedPrivilegesSet.operator || + (typeof privilege === 'object' && + privilege.allRequired?.includes(ReservedPrivilegesSet.operator)) + ); + + // nothing to normalize + if (!hasOperatorPrivileges) { + return privileges; + } + + const securityConfig = await getSecurityConfig(); - const { requestedPrivileges, requestedReservedPrivileges } = authz.requiredPrivileges.reduce( + // nothing to normalize + if (securityConfig.operator_privileges.enabled) { + return privileges; + } + + return privileges.reduce<AuthzEnabled['requiredPrivileges']>((acc, privilege) => { + if (typeof privilege === 'object') { + const operatorPrivilegeIndex = + privilege.allRequired?.findIndex((p) => p === ReservedPrivilegesSet.operator) ?? -1; + + acc.push( + operatorPrivilegeIndex !== -1 + ? { + ...privilege, + // @ts-ignore wrong types for `toSpliced` + allRequired: privilege.allRequired?.toSpliced(operatorPrivilegeIndex, 1), + } + : privilege + ); + } else if (privilege !== ReservedPrivilegesSet.operator) { + acc.push(privilege); + } + + return acc; + }, []); + }; + + // We need to normalize privileges to drop unintended privilege checks. + // Operator privileges check should be only performed if the `operator_privileges` are enabled in config. + const requiredPrivileges = await normalizeRequiredPrivileges(authz.requiredPrivileges); + + const { requestedPrivileges, requestedReservedPrivileges } = requiredPrivileges.reduce( (acc, privilegeEntry) => { const privileges = typeof privilegeEntry === 'object' @@ -97,10 +156,15 @@ export function initAPIAuthorization( const checkSuperuserPrivilegesResponse = await checkPrivilegesWithRequest( request ).globally(SUPERUSER_PRIVILEGES); - kibanaPrivileges[ReservedPrivilegesSet.superuser] = checkSuperuserPrivilegesResponse.hasAllRequested; } + + if (reservedPrivilege === ReservedPrivilegesSet.operator) { + const currentUser = getCurrentUser(request); + + kibanaPrivileges[ReservedPrivilegesSet.operator] = currentUser?.operator ?? false; + } } const hasRequestedPrivilege = (kbPrivilege: Privilege | PrivilegeSet) => { @@ -118,8 +182,8 @@ export function initAPIAuthorization( return kibanaPrivileges[kbPrivilege]; }; - for (const requiredPrivilege of authz.requiredPrivileges) { - if (!hasRequestedPrivilege(requiredPrivilege)) { + for (const privilege of requiredPrivileges) { + if (!hasRequestedPrivilege(privilege)) { const missingPrivileges = Object.keys(kibanaPrivileges).filter( (key) => !kibanaPrivileges[key] ); diff --git a/x-pack/plugins/security/server/authorization/authorization_service.test.ts b/x-pack/plugins/security/server/authorization/authorization_service.test.ts index de3646166d8f9..3317fff03bd64 100644 --- a/x-pack/plugins/security/server/authorization/authorization_service.test.ts +++ b/x-pack/plugins/security/server/authorization/authorization_service.test.ts @@ -15,6 +15,7 @@ import { mockRegisterPrivilegesWithCluster, } from './service.test.mocks'; +import type { Client } from '@elastic/elasticsearch'; import { Subject } from 'rxjs'; import { coreMock, elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; @@ -38,6 +39,9 @@ const mockCheckPrivilegesDynamicallyWithRequest = Symbol(); const mockCheckSavedObjectsPrivilegesWithRequest = Symbol(); const mockPrivilegesService = Symbol(); const mockAuthorizationMode = Symbol(); +const mockEsSecurityResponse = { + security: { operator_privileges: { enabled: false, available: false } }, +}; beforeEach(() => { mockCheckPrivilegesFactory.mockReturnValue({ checkPrivilegesWithRequest: mockCheckPrivilegesWithRequest, @@ -59,6 +63,9 @@ afterEach(() => { it(`#setup returns exposed services`, () => { const mockClusterClient = elasticsearchServiceMock.createClusterClient(); + mockClusterClient.asInternalUser.xpack.usage.mockResolvedValue( + mockEsSecurityResponse as Awaited<ReturnType<Client['xpack']['usage']>> + ); const mockGetSpacesService = jest .fn() .mockReturnValue({ getSpaceId: jest.fn(), namespaceToSpaceId: jest.fn() }); @@ -126,6 +133,9 @@ describe('#start', () => { statusSubject = new Subject<OnlineStatusRetryScheduler>(); const mockClusterClient = elasticsearchServiceMock.createClusterClient(); + mockClusterClient.asInternalUser.xpack.usage.mockResolvedValue( + mockEsSecurityResponse as Awaited<ReturnType<Client['xpack']['usage']>> + ); const mockCoreSetup = coreMock.createSetup(); const authorizationService = new AuthorizationService(); @@ -194,6 +204,9 @@ describe('#start', () => { it('#stop unsubscribes from license and ES updates.', async () => { const mockClusterClient = elasticsearchServiceMock.createClusterClient(); + mockClusterClient.asInternalUser.xpack.usage.mockResolvedValue( + mockEsSecurityResponse as Awaited<ReturnType<Client['xpack']['usage']>> + ); const statusSubject = new Subject<OnlineStatusRetryScheduler>(); const mockCoreSetup = coreMock.createSetup(); diff --git a/x-pack/plugins/security/server/authorization/authorization_service.tsx b/x-pack/plugins/security/server/authorization/authorization_service.tsx index c8e036b07679c..d58e24d3b84f6 100644 --- a/x-pack/plugins/security/server/authorization/authorization_service.tsx +++ b/x-pack/plugins/security/server/authorization/authorization_service.tsx @@ -123,6 +123,14 @@ export class AuthorizationService { this.applicationName ); + const esSecurityConfig = getClusterClient() + .then((client) => + client.asInternalUser.xpack.usage({ + filter_path: 'security.operator_privileges', + }) + ) + .then(({ security }) => security); + const authz = { actions, applicationName: this.applicationName, @@ -168,7 +176,11 @@ export class AuthorizationService { } ); - initAPIAuthorization(http, authz, loggers.get('api-authorization')); + initAPIAuthorization( + http, + { ...authz, getCurrentUser, getSecurityConfig: () => esSecurityConfig }, + loggers.get('api-authorization') + ); initAppAuthorization(http, authz, loggers.get('app-authorization'), features); http.registerOnPreResponse(async (request, preResponse, toolkit) => { diff --git a/x-pack/plugins/security/server/plugin.test.ts b/x-pack/plugins/security/server/plugin.test.ts index 4b9479f51a0f3..958e22a3f2dd9 100644 --- a/x-pack/plugins/security/server/plugin.test.ts +++ b/x-pack/plugins/security/server/plugin.test.ts @@ -5,6 +5,7 @@ * 2.0. */ +import type { Client } from '@elastic/elasticsearch'; import { of } from 'rxjs'; import { ByteSizeValue } from '@kbn/config-schema'; @@ -46,6 +47,13 @@ describe('Security Plugin', () => { mockCoreSetup = coreMock.createSetup({ pluginStartContract: { userProfiles: userProfileServiceMock.createStart() }, }); + + const core = coreMock.createRequestHandlerContext(); + + core.elasticsearch.client.asInternalUser.xpack.usage.mockResolvedValue({ + security: { operator_privileges: { enabled: false, available: false } }, + } as Awaited<ReturnType<Client['xpack']['usage']>>); + mockCoreSetup.http.getServerInfo.mockReturnValue({ hostname: 'localhost', name: 'kibana', @@ -64,6 +72,12 @@ describe('Security Plugin', () => { mockCoreStart = coreMock.createStart(); + mockCoreSetup.getStartServices.mockResolvedValue([ + // @ts-expect-error only mocking the client we use + { elasticsearch: core.elasticsearch }, + mockSetupDependencies.features, + ]); + mockStartDependencies = { features: featuresPluginMock.createStart(), licensing: licensingMock.createStart(), diff --git a/x-pack/plugins/security/server/plugin.ts b/x-pack/plugins/security/server/plugin.ts index afd21a83712ae..f0a218b8424b5 100644 --- a/x-pack/plugins/security/server/plugin.ts +++ b/x-pack/plugins/security/server/plugin.ts @@ -344,7 +344,7 @@ export class SecurityPlugin return Object.freeze<SecurityPluginSetup>({ audit: this.auditSetup, authc: { - getCurrentUser: (request) => this.getAuthentication().getCurrentUser(request), + getCurrentUser, }, authz: { actions: this.authorizationSetup.actions, diff --git a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_upgrade/perform_rule_upgrade_route.ts b/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_upgrade/perform_rule_upgrade_route.ts index 0021aece67455..3ef53e7b7c67a 100644 --- a/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_upgrade/perform_rule_upgrade_route.ts +++ b/x-pack/plugins/security_solution/common/api/detection_engine/prebuilt_rules/perform_rule_upgrade/perform_rule_upgrade_route.ts @@ -115,7 +115,7 @@ export const RuleUpgradeSpecifier = z.object({ export type UpgradeSpecificRulesRequest = z.infer<typeof UpgradeSpecificRulesRequest>; export const UpgradeSpecificRulesRequest = z.object({ mode: z.literal('SPECIFIC_RULES'), - rules: z.array(RuleUpgradeSpecifier), + rules: z.array(RuleUpgradeSpecifier).min(1), pick_version: PickVersionValues.optional(), }); diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.gen.ts new file mode 100644 index 0000000000000..19e64986b822f --- /dev/null +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.gen.ts @@ -0,0 +1,54 @@ +/* + * 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. + */ + +/* + * NOTICE: Do not edit this file manually. + * This file is automatically generated by the OpenAPI Generator, @kbn/openapi-generator. + * + * info: + * title: Risk Scoring API + * version: 2023-10-31 + */ + +import { z } from '@kbn/zod'; + +export type ConfigureRiskEngineSavedObjectErrorResponse = z.infer< + typeof ConfigureRiskEngineSavedObjectErrorResponse +>; +export const ConfigureRiskEngineSavedObjectErrorResponse = z.object({ + risk_engine_saved_object_configured: z.boolean(), + errors: z.array( + z.object({ + seq: z.number().int(), + error: z.string(), + }) + ), +}); + +export type ConfigureRiskEngineSavedObjectRequestBody = z.infer< + typeof ConfigureRiskEngineSavedObjectRequestBody +>; +export const ConfigureRiskEngineSavedObjectRequestBody = z.object({ + exclude_alert_statuses: z.array(z.string()).optional(), + range: z + .object({ + start: z.string().optional(), + end: z.string().optional(), + }) + .optional(), + exclude_alert_tags: z.array(z.string()).optional(), +}); +export type ConfigureRiskEngineSavedObjectRequestBodyInput = z.input< + typeof ConfigureRiskEngineSavedObjectRequestBody +>; + +export type ConfigureRiskEngineSavedObjectResponse = z.infer< + typeof ConfigureRiskEngineSavedObjectResponse +>; +export const ConfigureRiskEngineSavedObjectResponse = z.object({ + risk_engine_saved_object_configured: z.boolean().optional(), +}); diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.schema.yaml new file mode 100644 index 0000000000000..4c9a1cf1f3693 --- /dev/null +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.schema.yaml @@ -0,0 +1,81 @@ +openapi: 3.0.0 +info: + version: '2023-10-31' + title: Risk Scoring API + description: These APIs allow the consumer to configure the Risk Engine Saved Object. +paths: + /api/risk_score/engine/saved_object/configure: + patch: + x-labels: [ess, serverless] + x-codegen-enabled: true + operationId: ConfigureRiskEngineSavedObject + summary: Configure the Risk Engine Saved Object + description: Configuring the Risk Engine Saved Object + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + exclude_alert_statuses: + type: array + items: + type: string + range: + type: object + properties: + start: + type: string + end: + type: string + exclude_alert_tags: + type: array + items: + type: string + responses: + '200': + description: Successful response + content: + application/json: + schema: + type: object + properties: + risk_engine_saved_object_configured: + type: boolean + '400': + description: Task manager is unavailable + content: + application/json: + schema: + $ref: '../common/common.schema.yaml#/components/schemas/TaskManagerUnavailableResponse' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/ConfigureRiskEngineSavedObjectErrorResponse' + +components: + schemas: + ConfigureRiskEngineSavedObjectErrorResponse: + type: object + required: + - risk_engine_saved_object_configured + - errors + properties: + risk_engine_saved_object_configured: + type: boolean + example: false + errors: + type: array + items: + type: object + required: + - seq + - error + properties: + seq: + type: integer + error: + type: string diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/index.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/index.ts index 21dc89544c8d8..98d62fd1b5a9e 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/index.ts +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/index.ts @@ -16,3 +16,4 @@ export * from './preview_route.gen'; export * from './entity_calculation_route.gen'; export * from './get_risk_engine_privileges.gen'; export * from './engine_cleanup_route.gen'; +export * from './engine_configure_saved_object_route.gen'; diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.gen.ts b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.gen.ts index c58d2c02d562f..1b410a143683a 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.gen.ts +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.gen.ts @@ -58,9 +58,11 @@ export const RiskScoresPreviewRequest = z.object({ /** * A list of alert statuses to exclude from the risk score calculation. If unspecified, all alert statuses are included. */ - excludeAlertStatuses: z - .array(z.enum(['open', 'closed', 'in-progress', 'acknowledged'])) - .optional(), + exclude_alert_statuses: z.array(z.string()).optional(), + /** + * A list of alert tags to exclude from the risk score calculation. If unspecified, all alert tags are included. + */ + exclude_alert_tags: z.array(z.string()).optional(), }); export type RiskScoresPreviewResponse = z.infer<typeof RiskScoresPreviewResponse>; diff --git a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.schema.yaml b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.schema.yaml index a634a1a75975c..45d40a057f22c 100644 --- a/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.schema.yaml +++ b/x-pack/plugins/security_solution/common/api/entity_analytics/risk_engine/preview_route.schema.yaml @@ -58,16 +58,16 @@ components: description: Defines the time period over which scores will be evaluated. If unspecified, a range of `[now, now-30d]` will be used. weights: $ref: '../common/common.schema.yaml#/components/schemas/RiskScoreWeights' - excludeAlertStatuses: + exclude_alert_statuses: description: A list of alert statuses to exclude from the risk score calculation. If unspecified, all alert statuses are included. type: array items: type: string - enum: - - open - - closed - - in-progress - - acknowledged + exclude_alert_tags: + description: A list of alert tags to exclude from the risk score calculation. If unspecified, all alert tags are included. + type: array + items: + type: string RiskScoresPreviewResponse: diff --git a/x-pack/plugins/security_solution/common/api/quickstart_client.gen.ts b/x-pack/plugins/security_solution/common/api/quickstart_client.gen.ts index b5d72fc1ef207..fa315e3c421aa 100644 --- a/x-pack/plugins/security_solution/common/api/quickstart_client.gen.ts +++ b/x-pack/plugins/security_solution/common/api/quickstart_client.gen.ts @@ -276,6 +276,10 @@ import type { GetEntityStoreStatusResponse, } from './entity_analytics/entity_store/status.gen'; import type { CleanUpRiskEngineResponse } from './entity_analytics/risk_engine/engine_cleanup_route.gen'; +import type { + ConfigureRiskEngineSavedObjectRequestBodyInput, + ConfigureRiskEngineSavedObjectResponse, +} from './entity_analytics/risk_engine/engine_configure_saved_object_route.gen'; import type { DisableRiskEngineResponse } from './entity_analytics/risk_engine/engine_disable_route.gen'; import type { EnableRiskEngineResponse } from './entity_analytics/risk_engine/engine_enable_route.gen'; import type { InitRiskEngineResponse } from './entity_analytics/risk_engine/engine_init_route.gen'; @@ -368,6 +372,8 @@ import type { GetRuleMigrationResourcesRequestQueryInput, GetRuleMigrationResourcesRequestParamsInput, GetRuleMigrationResourcesResponse, + GetRuleMigrationResourcesMissingRequestParamsInput, + GetRuleMigrationResourcesMissingResponse, GetRuleMigrationStatsRequestParamsInput, GetRuleMigrationStatsResponse, GetRuleMigrationTranslationStatsRequestParamsInput, @@ -600,6 +606,22 @@ If asset criticality records already exist for the specified entities, those rec }) .catch(catchAxiosErrorFormatAndThrow); } + /** + * Configuring the Risk Engine Saved Object + */ + async configureRiskEngineSavedObject(props: ConfigureRiskEngineSavedObjectProps) { + this.log.info(`${new Date().toISOString()} Calling API ConfigureRiskEngineSavedObject`); + return this.kbnClient + .request<ConfigureRiskEngineSavedObjectResponse>({ + path: '/api/risk_score/engine/saved_object/configure', + headers: { + [ELASTIC_HTTP_VERSION_HEADER]: '2023-10-31', + }, + method: 'PATCH', + body: props.body, + }) + .catch(catchAxiosErrorFormatAndThrow); + } /** * Copies and returns a timeline or timeline template. @@ -1471,6 +1493,24 @@ finalize it. }) .catch(catchAxiosErrorFormatAndThrow); } + /** + * Identifies missing resources from all the rules of an existing SIEM rules migration + */ + async getRuleMigrationResourcesMissing(props: GetRuleMigrationResourcesMissingProps) { + this.log.info(`${new Date().toISOString()} Calling API GetRuleMigrationResourcesMissing`); + return this.kbnClient + .request<GetRuleMigrationResourcesMissingResponse>({ + path: replaceParams( + '/internal/siem_migrations/rules/{migration_id}/resources/missing', + props.params + ), + headers: { + [ELASTIC_HTTP_VERSION_HEADER]: '1', + }, + method: 'GET', + }) + .catch(catchAxiosErrorFormatAndThrow); + } /** * Retrieves the stats of a SIEM rules migration using the migration id provided */ @@ -2275,6 +2315,9 @@ export interface BulkUpsertAssetCriticalityRecordsProps { export interface CleanDraftTimelinesProps { body: CleanDraftTimelinesRequestBodyInput; } +export interface ConfigureRiskEngineSavedObjectProps { + body: ConfigureRiskEngineSavedObjectRequestBodyInput; +} export interface CopyTimelineProps { body: CopyTimelineRequestBodyInput; } @@ -2423,6 +2466,9 @@ export interface GetRuleMigrationResourcesProps { query: GetRuleMigrationResourcesRequestQueryInput; params: GetRuleMigrationResourcesRequestParamsInput; } +export interface GetRuleMigrationResourcesMissingProps { + params: GetRuleMigrationResourcesMissingRequestParamsInput; +} export interface GetRuleMigrationStatsProps { params: GetRuleMigrationStatsRequestParamsInput; } diff --git a/x-pack/plugins/security_solution/common/constants.ts b/x-pack/plugins/security_solution/common/constants.ts index 265af5a47e1fe..3818813d94a72 100644 --- a/x-pack/plugins/security_solution/common/constants.ts +++ b/x-pack/plugins/security_solution/common/constants.ts @@ -282,8 +282,6 @@ export const PINNED_EVENT_URL = '/api/pinned_event' as const; export const SOURCERER_API_URL = '/internal/security_solution/sourcerer' as const; export const RISK_SCORE_INDEX_STATUS_API_URL = '/internal/risk_score/index_status' as const; -export const EVENT_GRAPH_VISUALIZATION_API = '/internal/cloud_security_posture/graph' as const; - /** * Default signals index key for kibana.dev.yml */ diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/convert_rule_to_diffable.ts b/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/convert_rule_to_diffable.ts index 1c15a07e765fe..2e012a6462dd7 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/convert_rule_to_diffable.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/convert_rule_to_diffable.ts @@ -118,7 +118,7 @@ const extractDiffableCommonFields = ( version: rule.version, // Main domain fields - name: rule.name, + name: rule.name.trim(), tags: rule.tags ?? [], description: rule.description, severity: rule.severity, diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.test.ts b/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.test.ts new file mode 100644 index 0000000000000..03dc7ecbe5331 --- /dev/null +++ b/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.test.ts @@ -0,0 +1,61 @@ +/* + * 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 { KqlQueryType } from '../../../api/detection_engine'; +import { + extractRuleEqlQuery, + extractRuleEsqlQuery, + extractRuleKqlQuery, +} from './extract_rule_data_query'; + +describe('extract rule data queries', () => { + describe('extractRuleKqlQuery', () => { + it('extracts a trimmed version of the query field for inline query types', () => { + const extractedKqlQuery = extractRuleKqlQuery('\nevent.kind:alert\n', 'kuery', [], undefined); + + expect(extractedKqlQuery).toEqual({ + type: KqlQueryType.inline_query, + query: 'event.kind:alert', + language: 'kuery', + filters: [], + }); + }); + }); + + describe('extractRuleEqlQuery', () => { + it('extracts a trimmed version of the query field', () => { + const extractedEqlQuery = extractRuleEqlQuery({ + query: '\n\nquery where true\n\n', + language: 'eql', + filters: [], + eventCategoryOverride: undefined, + timestampField: undefined, + tiebreakerField: undefined, + }); + + expect(extractedEqlQuery).toEqual({ + query: 'query where true', + language: 'eql', + filters: [], + event_category_override: undefined, + timestamp_field: undefined, + tiebreaker_field: undefined, + }); + }); + }); + + describe('extractRuleEsqlQuery', () => { + it('extracts a trimmed version of the query field', () => { + const extractedEsqlQuery = extractRuleEsqlQuery('\nFROM * where true\t\n', 'esql'); + + expect(extractedEsqlQuery).toEqual({ + query: 'FROM * where true', + language: 'esql', + }); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.ts b/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.ts index 99bb27b99357f..04460dd0cad75 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/prebuilt_rules/diff/extract_rule_data_query.ts @@ -46,7 +46,7 @@ export const extractInlineKqlQuery = ( ): InlineKqlQuery => { return { type: KqlQueryType.inline_query, - query: query ?? '', + query: query?.trim() ?? '', language: language ?? 'kuery', filters: filters ?? [], }; @@ -63,7 +63,7 @@ interface ExtractRuleEqlQueryParams { export const extractRuleEqlQuery = (params: ExtractRuleEqlQueryParams): RuleEqlQuery => { return { - query: params.query, + query: params.query.trim(), language: params.language, filters: params.filters ?? [], event_category_override: params.eventCategoryOverride, @@ -77,7 +77,7 @@ export const extractRuleEsqlQuery = ( language: EsqlQueryLanguage ): RuleEsqlQuery => { return { - query, + query: query.trim(), language, }; }; diff --git a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/constants.ts b/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/constants.ts index 0eda694aed24b..9d71e984021f8 100644 --- a/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/constants.ts +++ b/x-pack/plugins/security_solution/common/entity_analytics/risk_engine/constants.ts @@ -17,6 +17,8 @@ export const RISK_ENGINE_SETTINGS_URL = `${RISK_ENGINE_URL}/settings` as const; export const PUBLIC_RISK_ENGINE_URL = `${PUBLIC_RISK_SCORE_URL}/engine` as const; export const RISK_ENGINE_SCHEDULE_NOW_URL = `${RISK_ENGINE_URL}/schedule_now` as const; export const RISK_ENGINE_CLEANUP_URL = `${PUBLIC_RISK_ENGINE_URL}/dangerously_delete_data` as const; +export const RISK_ENGINE_CONFIGURE_SO_URL = + `${PUBLIC_RISK_ENGINE_URL}/saved_object/configure` as const; type ClusterPrivilege = 'manage_index_templates' | 'manage_transform'; export const RISK_ENGINE_REQUIRED_ES_CLUSTER_PRIVILEGES = [ diff --git a/x-pack/plugins/security_solution/common/siem_migrations/constants.ts b/x-pack/plugins/security_solution/common/siem_migrations/constants.ts index e947dda4bbcc2..531669608ed8b 100644 --- a/x-pack/plugins/security_solution/common/siem_migrations/constants.ts +++ b/x-pack/plugins/security_solution/common/siem_migrations/constants.ts @@ -27,6 +27,8 @@ export const SIEM_RULE_MIGRATIONS_PREBUILT_RULES_PATH = `${SIEM_RULE_MIGRATION_PATH}/prebuilt_rules` as const; export const SIEM_RULE_MIGRATION_RESOURCES_PATH = `${SIEM_RULE_MIGRATION_PATH}/resources` as const; +export const SIEM_RULE_MIGRATION_RESOURCES_MISSING_PATH = + `${SIEM_RULE_MIGRATION_RESOURCES_PATH}/missing` as const; export enum SiemMigrationTaskStatus { READY = 'ready', diff --git a/x-pack/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.gen.ts b/x-pack/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.gen.ts index 95a81d4436d8a..47c06e1e02c7a 100644 --- a/x-pack/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.gen.ts +++ b/x-pack/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.gen.ts @@ -17,11 +17,8 @@ import { z } from '@kbn/zod'; import { ArrayFromString } from '@kbn/zod-helpers'; -import { NonEmptyString } from '../../../../api/model/primitives.gen'; import { - ElasticRulePartial, - RuleMigrationTranslationResult, - RuleMigrationComments, + UpdateRuleMigrationData, RuleMigrationTaskStats, OriginalRule, RuleMigration, @@ -31,6 +28,7 @@ import { RuleMigrationResourceType, RuleMigrationResource, } from '../../rule_migration.gen'; +import { NonEmptyString } from '../../../../api/model/primitives.gen'; import { ConnectorId, LangSmithOptions } from '../../common.gen'; export type CreateRuleMigrationRequestParams = z.infer<typeof CreateRuleMigrationRequestParams>; @@ -62,6 +60,7 @@ export const GetRuleMigrationRequestQuery = z.object({ sort_field: NonEmptyString.optional(), sort_direction: z.enum(['asc', 'desc']).optional(), search_term: z.string().optional(), + ids: ArrayFromString(NonEmptyString).optional(), }); export type GetRuleMigrationRequestQueryInput = z.input<typeof GetRuleMigrationRequestQuery>; @@ -103,6 +102,8 @@ export type GetRuleMigrationResourcesRequestQuery = z.infer< export const GetRuleMigrationResourcesRequestQuery = z.object({ type: RuleMigrationResourceType.optional(), names: ArrayFromString(z.string()).optional(), + from: z.coerce.number().optional(), + size: z.coerce.number().optional(), }); export type GetRuleMigrationResourcesRequestQueryInput = z.input< typeof GetRuleMigrationResourcesRequestQuery @@ -121,6 +122,24 @@ export type GetRuleMigrationResourcesRequestParamsInput = z.input< export type GetRuleMigrationResourcesResponse = z.infer<typeof GetRuleMigrationResourcesResponse>; export const GetRuleMigrationResourcesResponse = z.array(RuleMigrationResource); +export type GetRuleMigrationResourcesMissingRequestParams = z.infer< + typeof GetRuleMigrationResourcesMissingRequestParams +>; +export const GetRuleMigrationResourcesMissingRequestParams = z.object({ + migration_id: NonEmptyString, +}); +export type GetRuleMigrationResourcesMissingRequestParamsInput = z.input< + typeof GetRuleMigrationResourcesMissingRequestParams +>; + +/** + * The identified resources missing + */ +export type GetRuleMigrationResourcesMissingResponse = z.infer< + typeof GetRuleMigrationResourcesMissingResponse +>; +export const GetRuleMigrationResourcesMissingResponse = z.array(RuleMigrationResourceData); + export type GetRuleMigrationStatsRequestParams = z.infer<typeof GetRuleMigrationStatsRequestParams>; export const GetRuleMigrationStatsRequestParams = z.object({ migration_id: NonEmptyString, @@ -231,26 +250,7 @@ export const StopRuleMigrationResponse = z.object({ }); export type UpdateRuleMigrationRequestBody = z.infer<typeof UpdateRuleMigrationRequestBody>; -export const UpdateRuleMigrationRequestBody = z.array( - z.object({ - /** - * The rule migration id - */ - id: NonEmptyString, - /** - * The migrated elastic rule attributes to update. - */ - elastic_rule: ElasticRulePartial.optional(), - /** - * The rule translation result. - */ - translation_result: RuleMigrationTranslationResult.optional(), - /** - * The comments for the migration including a summary from the LLM in markdown. - */ - comments: RuleMigrationComments.optional(), - }) -); +export const UpdateRuleMigrationRequestBody = z.array(UpdateRuleMigrationData); export type UpdateRuleMigrationRequestBodyInput = z.input<typeof UpdateRuleMigrationRequestBody>; export type UpdateRuleMigrationResponse = z.infer<typeof UpdateRuleMigrationResponse>; diff --git a/x-pack/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.schema.yaml b/x-pack/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.schema.yaml index b7e495e2ea898..69e43b57dabd3 100644 --- a/x-pack/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.schema.yaml +++ b/x-pack/plugins/security_solution/common/siem_migrations/model/api/rules/rule_migration.schema.yaml @@ -20,22 +20,7 @@ paths: schema: type: array items: - type: object - required: - - id - properties: - id: - description: The rule migration id - $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - elastic_rule: - description: The migrated elastic rule attributes to update. - $ref: '../../rule_migration.schema.yaml#/components/schemas/ElasticRulePartial' - translation_result: - description: The rule translation result. - $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationTranslationResult' - comments: - description: The comments for the migration including a summary from the LLM in markdown. - $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationComments' + $ref: '../../rule_migration.schema.yaml#/components/schemas/UpdateRuleMigrationData' responses: 200: description: Indicates rules migrations have been updated correctly. @@ -151,6 +136,14 @@ paths: required: false schema: type: string + - name: ids + in: query + required: false + schema: + type: array + items: + description: The rule migration id + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' responses: 200: @@ -473,6 +466,16 @@ paths: description: The names of the resource to retrieve items: type: string + - name: from + in: query + required: false + schema: + type: number + - name: size + in: query + required: false + schema: + type: number responses: 200: description: Indicates migration resources have been retrieved correctly @@ -482,3 +485,31 @@ paths: type: array items: $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationResource' + + /internal/siem_migrations/rules/{migration_id}/resources/missing: + get: + summary: Gets missing rule migration resources for a migration + operationId: GetRuleMigrationResourcesMissing + x-codegen-enabled: true + x-internal: true + description: Identifies missing resources from all the rules of an existing SIEM rules migration + tags: + - SIEM Rule Migrations + - Resources + parameters: + - name: migration_id + in: path + required: true + schema: + description: The migration id to attach the resources + $ref: '../../../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + responses: + 200: + description: Indicates missing migration resources have been retrieved correctly + content: + application/json: + schema: + type: array + description: The identified resources missing + items: + $ref: '../../rule_migration.schema.yaml#/components/schemas/RuleMigrationResourceData' diff --git a/x-pack/plugins/security_solution/common/siem_migrations/model/rule_migration.gen.ts b/x-pack/plugins/security_solution/common/siem_migrations/model/rule_migration.gen.ts index 60220bf054a12..d9c33ebbdf704 100644 --- a/x-pack/plugins/security_solution/common/siem_migrations/model/rule_migration.gen.ts +++ b/x-pack/plugins/security_solution/common/siem_migrations/model/rule_migration.gen.ts @@ -103,9 +103,9 @@ export const ElasticRule = z.object({ */ prebuilt_rule_id: NonEmptyString.optional(), /** - * The Elastic integration IDs related to the rule. + * The Elastic integration ID found to be most relevant to the splunk rule. */ - integration_ids: z.array(z.string()).optional(), + integration_id: z.string().optional(), /** * The Elastic rule id installed as a result. */ @@ -303,6 +303,29 @@ export const RuleMigrationTranslationStats = z.object({ }), }); +/** + * The rule migration data object for rule update operation + */ +export type UpdateRuleMigrationData = z.infer<typeof UpdateRuleMigrationData>; +export const UpdateRuleMigrationData = z.object({ + /** + * The rule migration id + */ + id: NonEmptyString, + /** + * The migrated elastic rule attributes to update. + */ + elastic_rule: ElasticRulePartial.optional(), + /** + * The rule translation result. + */ + translation_result: RuleMigrationTranslationResult.optional(), + /** + * The comments for the migration including a summary from the LLM in markdown. + */ + comments: RuleMigrationComments.optional(), +}); + /** * The type of the rule migration resource. */ @@ -324,7 +347,7 @@ export const RuleMigrationResourceData = z.object({ /** * The resource content value. */ - content: z.string(), + content: z.string().optional(), /** * The resource arbitrary metadata. */ diff --git a/x-pack/plugins/security_solution/common/siem_migrations/model/rule_migration.schema.yaml b/x-pack/plugins/security_solution/common/siem_migrations/model/rule_migration.schema.yaml index e13e9b1d0ed75..6fce9f0d51f5d 100644 --- a/x-pack/plugins/security_solution/common/siem_migrations/model/rule_migration.schema.yaml +++ b/x-pack/plugins/security_solution/common/siem_migrations/model/rule_migration.schema.yaml @@ -83,11 +83,9 @@ components: prebuilt_rule_id: description: The Elastic prebuilt rule id matched. $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' - integration_ids: - type: array - items: - type: string - description: The Elastic integration IDs related to the rule. + integration_id: + type: string + description: The Elastic integration ID found to be most relevant to the splunk rule. id: description: The Elastic rule id installed as a result. $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' @@ -276,6 +274,25 @@ components: items: type: string + UpdateRuleMigrationData: + type: object + description: The rule migration data object for rule update operation + required: + - id + properties: + id: + description: The rule migration id + $ref: '../../../common/api/model/primitives.schema.yaml#/components/schemas/NonEmptyString' + elastic_rule: + description: The migrated elastic rule attributes to update. + $ref: '#/components/schemas/ElasticRulePartial' + translation_result: + description: The rule translation result. + $ref: '#/components/schemas/RuleMigrationTranslationResult' + comments: + description: The comments for the migration including a summary from the LLM in markdown. + $ref: '#/components/schemas/RuleMigrationComments' + ## Rule migration resources RuleMigrationResourceType: @@ -291,7 +308,6 @@ components: required: - type - name - - content properties: type: $ref: '#/components/schemas/RuleMigrationResourceType' diff --git a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/index.ts b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/index.ts index ffe4b3aca4076..8ec7adf050bf3 100644 --- a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/index.ts +++ b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/index.ts @@ -5,18 +5,72 @@ * 2.0. */ -import type { OriginalRule, OriginalRuleVendor } from '../../model/rule_migration.gen'; -import type { QueryResourceIdentifier, RuleResourceCollection } from './types'; -import { splResourceIdentifier } from './splunk_identifier'; +import type { + OriginalRule, + OriginalRuleVendor, + RuleMigrationResourceData, +} from '../../model/rule_migration.gen'; +import type { ResourceIdentifiers, RuleResource } from './types'; +import { splResourceIdentifiers } from './splunk'; -export const getRuleResourceIdentifier = (rule: OriginalRule): QueryResourceIdentifier => { - return ruleResourceIdentifiers[rule.vendor]; +const ruleResourceIdentifiers: Record<OriginalRuleVendor, ResourceIdentifiers> = { + splunk: splResourceIdentifiers, }; -export const identifyRuleResources = (rule: OriginalRule): RuleResourceCollection => { - return getRuleResourceIdentifier(rule)(rule.query); +export const getRuleResourceIdentifier = (vendor: OriginalRuleVendor): ResourceIdentifiers => { + return ruleResourceIdentifiers[vendor]; }; -const ruleResourceIdentifiers: Record<OriginalRuleVendor, QueryResourceIdentifier> = { - splunk: splResourceIdentifier, -}; +export class ResourceIdentifier { + private identifiers: ResourceIdentifiers; + + constructor(vendor: OriginalRuleVendor) { + // The constructor may need query_language as an argument for other vendors + this.identifiers = ruleResourceIdentifiers[vendor]; + } + + public fromOriginalRule(originalRule: OriginalRule): RuleResource[] { + return this.identifiers.fromOriginalRule(originalRule); + } + + public fromResource(resource: RuleMigrationResourceData): RuleResource[] { + return this.identifiers.fromResource(resource); + } + + public fromOriginalRules(originalRules: OriginalRule[]): RuleResource[] { + const lists = new Set<string>(); + const macros = new Set<string>(); + originalRules.forEach((rule) => { + const resources = this.identifiers.fromOriginalRule(rule); + resources.forEach((resource) => { + if (resource.type === 'macro') { + macros.add(resource.name); + } else if (resource.type === 'list') { + lists.add(resource.name); + } + }); + }); + return [ + ...Array.from(macros).map<RuleResource>((name) => ({ type: 'macro', name })), + ...Array.from(lists).map<RuleResource>((name) => ({ type: 'list', name })), + ]; + } + + public fromResources(resources: RuleMigrationResourceData[]): RuleResource[] { + const lists = new Set<string>(); + const macros = new Set<string>(); + resources.forEach((resource) => { + this.identifiers.fromResource(resource).forEach((identifiedResource) => { + if (identifiedResource.type === 'macro') { + macros.add(identifiedResource.name); + } else if (identifiedResource.type === 'list') { + lists.add(identifiedResource.name); + } + }); + }); + return [ + ...Array.from(macros).map<RuleResource>((name) => ({ type: 'macro', name })), + ...Array.from(lists).map<RuleResource>((name) => ({ type: 'list', name })), + ]; + } +} diff --git a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk/index.ts b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk/index.ts new file mode 100644 index 0000000000000..a16c328da947a --- /dev/null +++ b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk/index.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 type { ResourceIdentifiers } from '../types'; +import { splResourceIdentifier } from './splunk_identifier'; + +export const splResourceIdentifiers: ResourceIdentifiers = { + fromOriginalRule: (originalRule) => splResourceIdentifier(originalRule.query), + fromResource: (resource) => { + if (resource.type === 'macro' && resource.content) { + return splResourceIdentifier(resource.content); + } + return []; + }, +}; diff --git a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk/splunk_identifier.test.ts b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk/splunk_identifier.test.ts new file mode 100644 index 0000000000000..5d144e5b8a38f --- /dev/null +++ b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk/splunk_identifier.test.ts @@ -0,0 +1,135 @@ +/* + * 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 { splResourceIdentifier } from './splunk_identifier'; + +describe('splResourceIdentifier', () => { + it('should extract macros correctly', () => { + const query = + '`macro_zero`, `macro_one(arg1)`, some search command `macro_two(arg1, arg2)` another command `macro_three(arg1, arg2, arg3)`'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_zero' }, + { type: 'macro', name: 'macro_one(1)' }, + { type: 'macro', name: 'macro_two(2)' }, + { type: 'macro', name: 'macro_three(3)' }, + ]); + }); + + it('should extract macros with double quotes parameters correctly', () => { + const query = '| `macro_one("90","2")` | `macro_two("20")`'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_one(2)' }, + { type: 'macro', name: 'macro_two(1)' }, + ]); + }); + + it('should extract macros with single quotes parameters correctly', () => { + const query = "| `macro_one('90','2')` | `macro_two('20')`"; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_one(2)' }, + { type: 'macro', name: 'macro_two(1)' }, + ]); + }); + + it('should extract lookup tables correctly', () => { + const query = + 'search ... | lookup my_lookup_table field AS alias OUTPUT new_field | lookup other_lookup_list | lookup third_lookup'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'list', name: 'my_lookup_table' }, + { type: 'list', name: 'other_lookup_list' }, + { type: 'list', name: 'third_lookup' }, + ]); + }); + + it('should extract both macros and lookup tables correctly', () => { + const query = + '`macro_one` some search command | lookup my_lookup_table field AS alias OUTPUT new_field | lookup other_lookup_list | lookup third_lookup'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_one' }, + { type: 'list', name: 'my_lookup_table' }, + { type: 'list', name: 'other_lookup_list' }, + { type: 'list', name: 'third_lookup' }, + ]); + }); + + it('should extract lookup correctly when there are modifiers', () => { + const query = + 'lookup my_lookup_1 field AS alias OUTPUT new_field | lookup local=true my_lookup_2 | lookup update=true my_lookup_3 | lookup local=true update=true my_lookup_4 | lookup update=false local=true my_lookup_5'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'list', name: 'my_lookup_1' }, + { type: 'list', name: 'my_lookup_2' }, + { type: 'list', name: 'my_lookup_3' }, + { type: 'list', name: 'my_lookup_4' }, + { type: 'list', name: 'my_lookup_5' }, + ]); + }); + + it('should return empty arrays if no macros or lookup tables are found', () => { + const query = 'search | stats count'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([]); + }); + + it('should handle queries with both macros and lookup tables mixed with other commands', () => { + const query = + 'search `macro_one` | `my_lookup_table` field AS alias myfakelookup new_field | lookup real_lookup_list | `third_macro`'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_one' }, + { type: 'macro', name: 'my_lookup_table' }, + { type: 'macro', name: 'third_macro' }, + { type: 'list', name: 'real_lookup_list' }, + ]); + }); + + it('should ignore macros or lookup tables inside string literals with double quotes', () => { + const query = + '`macro_one` | lookup my_lookup_table | search title="`macro_two` and lookup another_table"'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_one' }, + { type: 'list', name: 'my_lookup_table' }, + ]); + }); + + it('should ignore macros or lookup tables inside string literals with single quotes', () => { + const query = + "`macro_one` | lookup my_lookup_table | search title='`macro_two` and lookup another_table'"; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_one' }, + { type: 'list', name: 'my_lookup_table' }, + ]); + }); + + it('should ignore macros or lookup tables inside comments wrapped by ```', () => { + const query = + '`macro_one` ```this is a comment with `macro_two` and lookup another_table``` | lookup my_lookup_table ```this is another comment```'; + + const result = splResourceIdentifier(query); + expect(result).toEqual([ + { type: 'macro', name: 'macro_one' }, + { type: 'list', name: 'my_lookup_table' }, + ]); + }); +}); diff --git a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk/splunk_identifier.ts b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk/splunk_identifier.ts new file mode 100644 index 0000000000000..2ecc43321b11f --- /dev/null +++ b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk/splunk_identifier.ts @@ -0,0 +1,56 @@ +/* + * 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. + */ + +/** + * Important: + * This library uses regular expressions that are executed against arbitrary user input, they need to be safe from ReDoS attacks. + * Please make sure to test all regular expressions them before using them. + * At the time of writing, this tool can be used to test it: https://devina.io/redos-checker + */ + +import type { ResourceIdentifier, RuleResource } from '../types'; + +const listRegex = /\b(?:lookup)\s+([\w-]+)\b/g; // Captures only the lookup name +const macrosRegex = /`([\w-]+)(?:\(([^`]*?)\))?`/g; // Captures only the macro name and arguments + +export const splResourceIdentifier: ResourceIdentifier = (input) => { + // sanitize the query to avoid mismatching macro and list names inside comments or literal strings + const sanitizedInput = sanitizeInput(input); + + const resources: RuleResource[] = []; + let macroMatch; + while ((macroMatch = macrosRegex.exec(sanitizedInput)) !== null) { + const macroName = macroMatch[1] as string; + const args = macroMatch[2] as string; // This captures the content inside the parentheses + const argCount = args ? args.split(',').length : 0; // Count arguments if present + const macroWithArgs = argCount > 0 ? `${macroName}(${argCount})` : macroName; + resources.push({ type: 'macro', name: macroWithArgs }); + } + + let listMatch; + while ((listMatch = listRegex.exec(sanitizedInput)) !== null) { + resources.push({ type: 'list', name: listMatch[1] }); + } + + return resources; +}; + +// Comments should be removed before processing the query to avoid matching macro and list names inside them +const commentRegex = /```.*?```/g; +// Literal strings should be replaced with a placeholder to avoid matching macro and list names inside them +const doubleQuoteStrRegex = /".*?"/g; +const singleQuoteStrRegex = /'.*?'/g; +// lookup operator can have modifiers like local=true or update=false before the lookup name, we need to remove them +const lookupModifiers = /\blookup\b\s+((local|update)=\s*(?:true|false)\s*)+/gi; + +const sanitizeInput = (query: string) => { + return query + .replaceAll(commentRegex, '') + .replaceAll(doubleQuoteStrRegex, '"literal"') + .replaceAll(singleQuoteStrRegex, "'literal'") + .replaceAll(lookupModifiers, 'lookup '); +}; diff --git a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk_identifier.test.ts b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk_identifier.test.ts deleted file mode 100644 index 2fa3be223aa67..0000000000000 --- a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk_identifier.test.ts +++ /dev/null @@ -1,89 +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 { splResourceIdentifier } from './splunk_identifier'; - -describe('splResourceIdentifier', () => { - it('should extract macros correctly', () => { - const query = - '`macro_zero`, `macro_one(arg1)`, some search command `macro_two(arg1, arg2)` another command `macro_three(arg1, arg2, arg3)`'; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual(['macro_zero', 'macro_one(1)', 'macro_two(2)', 'macro_three(3)']); - expect(result.list).toEqual([]); - }); - - it('should extract lookup tables correctly', () => { - const query = - 'search ... | lookup my_lookup_table field AS alias OUTPUT new_field | inputlookup other_lookup_list | lookup third_lookup'; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual([]); - expect(result.list).toEqual(['my_lookup_table', 'other_lookup_list', 'third_lookup']); - }); - - it('should extract both macros and lookup tables correctly', () => { - const query = - '`macro_one` some search command | lookup my_lookup_table field AS alias OUTPUT new_field | inputlookup other_lookup_list | lookup third_lookup'; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual(['macro_one']); - expect(result.list).toEqual(['my_lookup_table', 'other_lookup_list', 'third_lookup']); - }); - - it('should return empty arrays if no macros or lookup tables are found', () => { - const query = 'search | stats count'; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual([]); - expect(result.list).toEqual([]); - }); - - it('should handle queries with both macros and lookup tables mixed with other commands', () => { - const query = - 'search `macro_one` | `my_lookup_table` field AS alias myfakelookup new_field | inputlookup real_lookup_list | `third_macro`'; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual(['macro_one', 'my_lookup_table', 'third_macro']); - expect(result.list).toEqual(['real_lookup_list']); - }); - - it('should ignore macros or lookup tables inside string literals with double quotes', () => { - const query = - '`macro_one` | lookup my_lookup_table | search title="`macro_two` and lookup another_table"'; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual(['macro_one']); - expect(result.list).toEqual(['my_lookup_table']); - }); - - it('should ignore macros or lookup tables inside string literals with single quotes', () => { - const query = - "`macro_one` | lookup my_lookup_table | search title='`macro_two` and lookup another_table'"; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual(['macro_one']); - expect(result.list).toEqual(['my_lookup_table']); - }); - - it('should ignore macros or lookup tables inside comments wrapped by ```', () => { - const query = - '`macro_one` | ```this is a comment with `macro_two` and lookup another_table``` lookup my_lookup_table'; - - const result = splResourceIdentifier(query); - - expect(result.macro).toEqual(['macro_one']); - expect(result.list).toEqual(['my_lookup_table']); - }); -}); diff --git a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk_identifier.ts b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk_identifier.ts deleted file mode 100644 index fa46fff941c6b..0000000000000 --- a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/splunk_identifier.ts +++ /dev/null @@ -1,48 +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. - */ - -/** - * Important: - * This library uses regular expressions that are executed against arbitrary user input, they need to be safe from ReDoS attacks. - * Please make sure to test them before using them in production. - * At the time of writing, this tool can be used to test it: https://devina.io/redos-checker - */ - -import type { QueryResourceIdentifier } from './types'; - -const listRegex = /\b(?:lookup|inputlookup)\s+([\w-]+)\b/g; // Captures only the lookup table name -const macrosRegex = /`([\w-]+)(?:\(([^`]*?)\))?`/g; // Captures only the macro name and arguments - -const commentRegex = /```.*```/g; -const doubleQuoteStrRegex = /".*"/g; -const singleQuoteStrRegex = /'.*'/g; - -export const splResourceIdentifier: QueryResourceIdentifier = (query) => { - // sanitize the query to avoid mismatching macro and list names inside comments or literal strings - const sanitizedQuery = query - .replaceAll(commentRegex, '') - .replaceAll(doubleQuoteStrRegex, '"literal"') - .replaceAll(singleQuoteStrRegex, "'literal'"); - - const macro = []; - let macroMatch; - while ((macroMatch = macrosRegex.exec(sanitizedQuery)) !== null) { - const macroName = macroMatch[1]; - const args = macroMatch[2]; // This captures the content inside the parentheses - const argCount = args ? args.split(',').length : 0; // Count arguments if present - const macroWithArgs = argCount > 0 ? `${macroName}(${argCount})` : macroName; - macro.push(macroWithArgs); - } - - const list = []; - let listMatch; - while ((listMatch = listRegex.exec(sanitizedQuery)) !== null) { - list.push(listMatch[1]); - } - - return { macro, list }; -}; diff --git a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/types.ts b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/types.ts index 93f6f3ad3db17..70c6e3b72124f 100644 --- a/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/types.ts +++ b/x-pack/plugins/security_solution/common/siem_migrations/rules/resources/types.ts @@ -5,7 +5,19 @@ * 2.0. */ -import type { RuleMigrationResourceType } from '../../model/rule_migration.gen'; +import type { + OriginalRule, + RuleMigrationResourceData, + RuleMigrationResourceType, +} from '../../model/rule_migration.gen'; -export type RuleResourceCollection = Record<RuleMigrationResourceType, string[]>; -export type QueryResourceIdentifier = (query: string) => RuleResourceCollection; +export interface RuleResource { + type: RuleMigrationResourceType; + name: string; +} +export type ResourceIdentifier = (input: string) => RuleResource[]; + +export interface ResourceIdentifiers { + fromOriginalRule: (originalRule: OriginalRule) => RuleResource[]; + fromResource: (resource: RuleMigrationResourceData) => RuleResource[]; +} diff --git a/x-pack/plugins/security_solution/docs/openapi/README.md b/x-pack/plugins/security_solution/docs/openapi/README.md index fd145ed8c292b..4031201348bfa 100644 --- a/x-pack/plugins/security_solution/docs/openapi/README.md +++ b/x-pack/plugins/security_solution/docs/openapi/README.md @@ -22,8 +22,8 @@ Security Solution has multiple API domains scattered across Kibana. Currently th - Security AI Assistant - - Bundling script: `x-pack/packages/kbn-elastic-assistant-common/scripts/openapi/bundle.js` - - Bundles location: `x-pack/packages/kbn-elastic-assistant-common/docs/openapi/{ess|serverless}` + - Bundling script: `x-pack/platform/packages/shared/kbn-elastic-assistant-common/scripts/openapi/bundle.js` + - Bundles location: `x-pack/platform/packages/shared/kbn-elastic-assistant-common/docs/openapi/{ess|serverless}` - Security Detections @@ -57,8 +57,8 @@ Security Solution has multiple API domains scattered across Kibana. Currently th - Security Osquery - - Bundling script: `x-pack/plugins/osquery/scripts/openapi/bundle.js` - - Bundles location: `x-pack/plugins/osquery/docs/openapi/{ess|serverless}` + - Bundling script: `x-pack/platform/plugins/shared/osquery/scripts/openapi/bundle.js` + - Bundles location: `x-pack/platform/plugins/shared/osquery/docs/openapi/{ess|serverless}` - Security Timeline diff --git a/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_2023_10_31.bundled.schema.yaml b/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_2023_10_31.bundled.schema.yaml index dfc824035575d..6c865ab356c1d 100644 --- a/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_2023_10_31.bundled.schema.yaml +++ b/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_detections_api_2023_10_31.bundled.schema.yaml @@ -1,9 +1,11 @@ openapi: 3.0.3 info: description: >- - You can create rules that automatically turn events and external alerts sent - to Elastic Security into detection alerts. These alerts are displayed on the - Detections page. + Use the detections APIs to create and manage detection rules. Detection + rules search events and external alerts sent to Elastic Security and + generate detection alerts from any hits. Alerts are displayed on the + **Alerts** page and can be assigned and triaged, using the alert status to + mark them as open, closed, or acknowledged. title: Security Detections API (Elastic Cloud and self-hosted) version: '2023-10-31' servers: @@ -7110,9 +7112,21 @@ components: security: - BasicAuth: [] tags: - - description: >- - You can create rules that automatically turn events and external alerts - sent to Elastic Security into detection alerts. These alerts are displayed - on the Detections page. + - description: > + Use the detections APIs to create and manage detection rules. Detection + rules search events and external alerts sent to Elastic Security and + generate detection alerts from any hits. Alerts are displayed on the + **Alerts** page and can be assigned and triaged, using the alert status to + mark them as open, closed, or acknowledged. + + > warn + + > If the API key used for authorization has different privileges than the + key that created or most recently updated a rule, the rule behavior might + change. + + + > If the API key that created a rule is deleted, or the user that created + the rule becomes inactive, the rule will stop running. name: Security Detections API x-displayName: Security detections diff --git a/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml b/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml index 9a0c456e5efe3..1db469620f680 100644 --- a/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml +++ b/x-pack/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml @@ -646,6 +646,58 @@ paths: summary: Cleanup the Risk Engine tags: - Security Entity Analytics API + /api/risk_score/engine/saved_object/configure: + patch: + description: Configuring the Risk Engine Saved Object + operationId: ConfigureRiskEngineSavedObject + requestBody: + content: + application/json: + schema: + type: object + properties: + exclude_alert_statuses: + items: + type: string + type: array + exclude_alert_tags: + items: + type: string + type: array + range: + type: object + properties: + end: + type: string + start: + type: string + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + risk_engine_saved_object_configured: + type: boolean + description: Successful response + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/TaskManagerUnavailableResponse' + description: Task manager is unavailable + default: + content: + application/json: + schema: + $ref: >- + #/components/schemas/ConfigureRiskEngineSavedObjectErrorResponse + description: Unexpected error + summary: Configure the Risk Engine Saved Object + tags: + - Security Entity Analytics API /api/risk_score/engine/schedule_now: post: description: >- @@ -798,6 +850,27 @@ components: required: - cleanup_successful - errors + ConfigureRiskEngineSavedObjectErrorResponse: + type: object + properties: + errors: + items: + type: object + properties: + error: + type: string + seq: + type: integer + required: + - seq + - error + type: array + risk_engine_saved_object_configured: + example: false + type: boolean + required: + - risk_engine_saved_object_configured + - errors CreateAssetCriticalityRecord: allOf: - $ref: '#/components/schemas/AssetCriticalityRecordIdParts' diff --git a/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_detections_api_2023_10_31.bundled.schema.yaml b/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_detections_api_2023_10_31.bundled.schema.yaml index f81cc1227c893..583944c5b3435 100644 --- a/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_detections_api_2023_10_31.bundled.schema.yaml +++ b/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_detections_api_2023_10_31.bundled.schema.yaml @@ -1,9 +1,11 @@ openapi: 3.0.3 info: description: >- - You can create rules that automatically turn events and external alerts sent - to Elastic Security into detection alerts. These alerts are displayed on the - Detections page. + Use the detections APIs to create and manage detection rules. Detection + rules search events and external alerts sent to Elastic Security and + generate detection alerts from any hits. Alerts are displayed on the + **Alerts** page and can be assigned and triaged, using the alert status to + mark them as open, closed, or acknowledged. title: Security Detections API (Elastic Cloud Serverless) version: '2023-10-31' servers: @@ -6252,9 +6254,21 @@ components: security: - BasicAuth: [] tags: - - description: >- - You can create rules that automatically turn events and external alerts - sent to Elastic Security into detection alerts. These alerts are displayed - on the Detections page. + - description: > + Use the detections APIs to create and manage detection rules. Detection + rules search events and external alerts sent to Elastic Security and + generate detection alerts from any hits. Alerts are displayed on the + **Alerts** page and can be assigned and triaged, using the alert status to + mark them as open, closed, or acknowledged. + + > warn + + > If the API key used for authorization has different privileges than the + key that created or most recently updated a rule, the rule behavior might + change. + + + > If the API key that created a rule is deleted, or the user that created + the rule becomes inactive, the rule will stop running. name: Security Detections API x-displayName: Security detections diff --git a/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml b/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml index 356a63567c401..184eb912ad7d1 100644 --- a/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml +++ b/x-pack/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml @@ -646,6 +646,58 @@ paths: summary: Cleanup the Risk Engine tags: - Security Entity Analytics API + /api/risk_score/engine/saved_object/configure: + patch: + description: Configuring the Risk Engine Saved Object + operationId: ConfigureRiskEngineSavedObject + requestBody: + content: + application/json: + schema: + type: object + properties: + exclude_alert_statuses: + items: + type: string + type: array + exclude_alert_tags: + items: + type: string + type: array + range: + type: object + properties: + end: + type: string + start: + type: string + required: true + responses: + '200': + content: + application/json: + schema: + type: object + properties: + risk_engine_saved_object_configured: + type: boolean + description: Successful response + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/TaskManagerUnavailableResponse' + description: Task manager is unavailable + default: + content: + application/json: + schema: + $ref: >- + #/components/schemas/ConfigureRiskEngineSavedObjectErrorResponse + description: Unexpected error + summary: Configure the Risk Engine Saved Object + tags: + - Security Entity Analytics API /api/risk_score/engine/schedule_now: post: description: >- @@ -798,6 +850,27 @@ components: required: - cleanup_successful - errors + ConfigureRiskEngineSavedObjectErrorResponse: + type: object + properties: + errors: + items: + type: object + properties: + error: + type: string + seq: + type: integer + required: + - seq + - error + type: array + risk_engine_saved_object_configured: + example: false + type: boolean + required: + - risk_engine_saved_object_configured + - errors CreateAssetCriticalityRecord: allOf: - $ref: '#/components/schemas/AssetCriticalityRecordIdParts' diff --git a/x-pack/plugins/security_solution/docs/siem_migration/img/agent_graph.png b/x-pack/plugins/security_solution/docs/siem_migration/img/agent_graph.png index a1f9cca5a34a7..74623e69af0c8 100644 Binary files a/x-pack/plugins/security_solution/docs/siem_migration/img/agent_graph.png and b/x-pack/plugins/security_solution/docs/siem_migration/img/agent_graph.png differ diff --git a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/use_stream.test.tsx b/x-pack/plugins/security_solution/public/assistant/get_comments/stream/use_stream.test.tsx index 9aa3491218f88..1293ddff34f75 100644 --- a/x-pack/plugins/security_solution/public/assistant/get_comments/stream/use_stream.test.tsx +++ b/x-pack/plugins/security_solution/public/assistant/get_comments/stream/use_stream.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { useStream } from './use_stream'; const refetchCurrentConversation = jest.fn(); @@ -49,7 +49,7 @@ describe.skip('useStream', () => { }); it('Should stream response. isLoading/isStreaming are true while streaming, isLoading/isStreaming are false when streaming completes', async () => { - const { result, waitFor } = renderHook(() => useStream(defaultProps)); + const { result } = renderHook(() => useStream(defaultProps)); expect(reader).toHaveBeenCalledTimes(1); await waitFor(() => { expect(result.current).toEqual({ @@ -107,7 +107,7 @@ describe.skip('useStream', () => { releaseLock: jest.fn(), closed: jest.fn().mockResolvedValue(true), } as unknown as ReadableStreamDefaultReader<Uint8Array>; - const { result, waitForNextUpdate } = renderHook(() => + const { result } = renderHook(() => useStream({ ...defaultProps, reader: errorReader, @@ -115,7 +115,7 @@ describe.skip('useStream', () => { ); expect(result.current.error).toBeUndefined(); - await waitForNextUpdate(); + await waitFor(() => new Promise((resolve) => resolve(null))); expect(result.current.error).toBe(errorMessage); expect(result.current.isLoading).toBe(false); diff --git a/x-pack/plugins/security_solution/public/assistant/overlay.test.tsx b/x-pack/plugins/security_solution/public/assistant/overlay.test.tsx index ca90d72b37157..eb9adf234e9fd 100644 --- a/x-pack/plugins/security_solution/public/assistant/overlay.test.tsx +++ b/x-pack/plugins/security_solution/public/assistant/overlay.test.tsx @@ -22,7 +22,14 @@ jest.mock('@kbn/elastic-assistant', () => ({ jest.mock('../common/hooks/use_experimental_features'); describe('AssistantOverlay', () => { - const queryClient = new QueryClient(); + const queryClient = new QueryClient({ + defaultOptions: { + queries: { + cacheTime: Infinity, + retry: false, + }, + }, + }); beforeEach(() => { jest.clearAllMocks(); diff --git a/x-pack/plugins/security_solution/public/assistant/provider.test.tsx b/x-pack/plugins/security_solution/public/assistant/provider.test.tsx index a96623b8567a8..5108fb259cfb2 100644 --- a/x-pack/plugins/security_solution/public/assistant/provider.test.tsx +++ b/x-pack/plugins/security_solution/public/assistant/provider.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { waitFor, renderHook } from '@testing-library/react'; import { httpServiceMock, type HttpSetupMock } from '@kbn/core-http-browser-mocks'; import type { Storage } from '@kbn/kibana-utils-plugin/public'; import { createConversations } from './provider'; @@ -166,47 +166,43 @@ describe('createConversations', () => { }); it('should call bulk conversations with the transformed conversations from the local storage', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => - createConversations( - coreMock.createStart().notifications, - http, - mockStorage as unknown as Storage - ) - ); - await waitForNextUpdate(); - expect(http.fetch.mock.calls[0][0]).toBe( - '/internal/elastic_assistant/current_user/conversations/_bulk_action' - ); - expect( - http.fetch.mock.calls[0].length > 1 - ? // eslint-disable-next-line @typescript-eslint/no-explicit-any - JSON.parse((http.fetch.mock.calls[0] as any[])[1]?.body).create.length - : 0 - ).toBe(2); - }); + renderHook(() => + createConversations( + coreMock.createStart().notifications, + http, + mockStorage as unknown as Storage + ) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + expect(http.fetch.mock.calls[0][0]).toBe( + '/internal/elastic_assistant/current_user/conversations/_bulk_action' + ); + expect( + http.fetch.mock.calls[0].length > 1 + ? // eslint-disable-next-line @typescript-eslint/no-explicit-any + JSON.parse((http.fetch.mock.calls[0] as any[])[1]?.body).create.length + : 0 + ).toBe(2); }); it('should add missing actionTypeId to apiConfig', async () => { - await act(async () => { - const { waitForNextUpdate } = renderHook(() => - createConversations( - coreMock.createStart().notifications, - http, - mockStorage as unknown as Storage - ) - ); - await waitForNextUpdate(); - expect(http.fetch.mock.calls[0][0]).toBe( - '/internal/elastic_assistant/current_user/conversations/_bulk_action' - ); - const createdConversations = - http.fetch.mock.calls[0].length > 1 - ? // eslint-disable-next-line @typescript-eslint/no-explicit-any - JSON.parse((http.fetch.mock.calls[0] as any[])[1]?.body)?.create - : []; - expect(createdConversations[0].apiConfig.actionTypeId).toEqual('.bedrock'); - expect(createdConversations[1].apiConfig.actionTypeId).toEqual('.gen-ai'); - }); + renderHook(() => + createConversations( + coreMock.createStart().notifications, + http, + mockStorage as unknown as Storage + ) + ); + await waitFor(() => new Promise((resolve) => resolve(null))); + expect(http.fetch.mock.calls[0][0]).toBe( + '/internal/elastic_assistant/current_user/conversations/_bulk_action' + ); + const createdConversations = + http.fetch.mock.calls[0].length > 1 + ? // eslint-disable-next-line @typescript-eslint/no-explicit-any + JSON.parse((http.fetch.mock.calls[0] as any[])[1]?.body)?.create + : []; + expect(createdConversations[0].apiConfig.actionTypeId).toEqual('.bedrock'); + expect(createdConversations[1].apiConfig.actionTypeId).toEqual('.gen-ai'); }); }); diff --git a/x-pack/plugins/security_solution/public/assistant/use_assistant_telemetry/index.test.tsx b/x-pack/plugins/security_solution/public/assistant/use_assistant_telemetry/index.test.tsx index b90db333742a4..269d09bfed0fc 100644 --- a/x-pack/plugins/security_solution/public/assistant/use_assistant_telemetry/index.test.tsx +++ b/x-pack/plugins/security_solution/public/assistant/use_assistant_telemetry/index.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useAssistantTelemetry } from '.'; import { BASE_SECURITY_CONVERSATIONS } from '../content/conversations'; import { createTelemetryServiceMock } from '../../common/lib/telemetry/telemetry_service.mock'; diff --git a/x-pack/plugins/security_solution/public/assistant/use_conversation_store/index.test.tsx b/x-pack/plugins/security_solution/public/assistant/use_conversation_store/index.test.tsx index 99836af47a7a8..d93430e1552df 100644 --- a/x-pack/plugins/security_solution/public/assistant/use_conversation_store/index.test.tsx +++ b/x-pack/plugins/security_solution/public/assistant/use_conversation_store/index.test.tsx @@ -4,7 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; + +import { renderHook } from '@testing-library/react'; import { useBaseConversations } from '.'; import { useLinkAuthorized } from '../../common/links'; import { useKibana as mockUseKibana } from '../../common/lib/kibana/__mocks__'; diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/index.test.tsx b/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/index.test.tsx index 7ecb824739679..b9e5aadb018ad 100644 --- a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/index.test.tsx +++ b/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_case/index.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { useAddToNewCase } from '.'; import { TestProviders } from '../../../../../../common/mock'; diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/index.test.tsx b/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/index.test.tsx index e84b7973208f7..fd91ff132f204 100644 --- a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/index.test.tsx +++ b/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/actions/use_add_to_existing_case/index.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { useAddToExistingCase } from '.'; import { useKibana } from '../../../../../../common/lib/kibana'; diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant.test.ts b/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant.test.ts index 86f243e9445f4..4d7d7316a9c9b 100644 --- a/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant.test.ts +++ b/x-pack/plugins/security_solution/public/attack_discovery/pages/results/attack_discovery_panel/view_in_ai_assistant/use_view_in_ai_assistant.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useAssistantOverlay } from '@kbn/elastic-assistant'; import { useAssistantAvailability } from '../../../../../assistant/use_assistant_availability'; diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/index.test.tsx b/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/index.test.tsx index a476aead19036..a21ff89827d4c 100644 --- a/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/index.test.tsx +++ b/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/index.test.tsx @@ -7,7 +7,7 @@ import { useLoadConnectors } from '@kbn/elastic-assistant'; import { useFetchAnonymizationFields } from '@kbn/elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields'; -import { renderHook, act } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import React from 'react'; import { useKibana } from '../../../common/lib/kibana'; diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/use_poll_api/use_poll_api.test.tsx b/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/use_poll_api/use_poll_api.test.tsx index c243138d9ef5c..8d161657ae040 100644 --- a/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/use_poll_api/use_poll_api.test.tsx +++ b/x-pack/plugins/security_solution/public/attack_discovery/pages/use_attack_discovery/use_poll_api/use_poll_api.test.tsx @@ -7,7 +7,7 @@ import type { HttpSetupMock } from '@kbn/core-http-browser-mocks'; import { coreMock } from '@kbn/core/public/mocks'; -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import { attackDiscoveryStatus, usePollApi } from './use_poll_api'; import moment from 'moment/moment'; import { kibanaMock } from '../../../../common/mock'; diff --git a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.test.tsx index afe1d0f208765..264ad2bcdbf2f 100644 --- a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.test.tsx @@ -166,7 +166,7 @@ describe('SessionsView', () => { ]); }); }); - it('Action tab should have 4 columns for non Enterprise users', async () => { + it('Action tab should have 5 columns for non Enterprise users', async () => { render( <TestProviders> <SessionsView {...testProps} /> @@ -174,11 +174,11 @@ describe('SessionsView', () => { ); await waitFor(() => { - expect(mockGetDefaultControlColumn).toHaveBeenCalledWith(4); + expect(mockGetDefaultControlColumn).toHaveBeenCalledWith(5); }); }); - it('Action tab should have 5 columns for Enterprise or above users', async () => { + it('Action tab should have 6 columns for Enterprise or above users', async () => { const licenseServiceMock = licenseService as jest.Mocked<typeof licenseService>; licenseServiceMock.isEnterprise.mockReturnValue(true); @@ -189,11 +189,11 @@ describe('SessionsView', () => { ); await waitFor(() => { - expect(mockGetDefaultControlColumn).toHaveBeenCalledWith(5); + expect(mockGetDefaultControlColumn).toHaveBeenCalledWith(6); }); }); - it('Action tab should have 5 columns when accessed via K8S dahsboard', async () => { + it('Action tab should have 6 columns when accessed via K8S dahsboard', async () => { render( <TestProviders> <SessionsView {...testProps} tableId={TableId.kubernetesPageSessions} /> @@ -201,7 +201,7 @@ describe('SessionsView', () => { ); await waitFor(() => { - expect(mockGetDefaultControlColumn).toHaveBeenCalledWith(5); + expect(mockGetDefaultControlColumn).toHaveBeenCalledWith(6); }); }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.tsx b/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.tsx index 32b76a7e39808..76f72bb7ba28f 100644 --- a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.tsx @@ -25,6 +25,7 @@ import { useLicense } from '../../hooks/use_license'; import { eventsDefaultModel } from '../events_viewer/default_model'; import type { BulkActionsProp } from '../toolbar/bulk_actions/types'; import { SecurityCellActionsTrigger } from '../cell_actions'; +import { useIsExperimentalFeatureEnabled } from '../../hooks/use_experimental_features'; export const TEST_ID = 'security_solution:sessions_viewer:sessions_view'; @@ -120,8 +121,13 @@ const SessionsViewComponent: React.FC<SessionsComponentsProps> = ({ }, [dispatch, tableId]); const isEnterprisePlus = useLicense().isEnterprise(); - const ACTION_BUTTON_COUNT = - isEnterprisePlus || tableId === TableId.kubernetesPageSessions ? 5 : 4; + const securitySolutionNotesDisabled = useIsExperimentalFeatureEnabled( + 'securitySolutionNotesDisabled' + ); + let ACTION_BUTTON_COUNT = isEnterprisePlus || tableId === TableId.kubernetesPageSessions ? 6 : 5; + if (securitySolutionNotesDisabled) { + ACTION_BUTTON_COUNT--; + } const leadingControlColumns = useMemo( () => getDefaultControlColumn(ACTION_BUTTON_COUNT), [ACTION_BUTTON_COUNT] diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_all_esql_rule_fields.test.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_all_esql_rule_fields.test.ts index 51d9c145a97b3..d857665878672 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_all_esql_rule_fields.test.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_all_esql_rule_fields.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook, act } from '@testing-library/react-hooks'; +import { renderHook, act } from '@testing-library/react'; import type { DataViewFieldBase } from '@kbn/es-query'; import { useQuery } from '@tanstack/react-query'; import { useAllEsqlRuleFields } from './use_all_esql_rule_fields'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_index.test.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_index.test.ts index eabd2050e7ba2..3d29970ad0547 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_index.test.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_creation_ui/hooks/use_esql_index.test.ts @@ -4,7 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; + +import { renderHook } from '@testing-library/react'; import { useEsqlIndex } from './use_esql_index'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.test.tsx index 8862c626ea6e4..55b10a34333aa 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.test.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/add_to_rules_table/use_add_to_rules_table.test.tsx @@ -6,8 +6,7 @@ */ import React from 'react'; -import { fireEvent, render as rTLRender, waitFor, act } from '@testing-library/react'; -import { renderHook } from '@testing-library/react-hooks'; +import { fireEvent, render as rTLRender, waitFor, act, renderHook } from '@testing-library/react'; import type { EuiTableFieldDataColumnType } from '@elastic/eui'; import type { Rule } from '../../../../rule_management/logic/types'; import { getRulesSchemaMock } from '../../../../../../common/api/detection_engine/model/rule_schema/mocks'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/use_value_with_space_warning.test.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/use_value_with_space_warning.test.ts index 4c0df5f03e098..92a5e60bb5590 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/use_value_with_space_warning.test.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/value_with_space_warning/__tests__/use_value_with_space_warning.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useValueWithSpaceWarning } from '../use_value_with_space_warning'; describe('useValueWithSpaceWarning', () => { diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_fetch_or_create_rule_exception_list.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_fetch_or_create_rule_exception_list.test.tsx index 6cca3e02e3223..8ec41f5cb70f7 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_fetch_or_create_rule_exception_list.test.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/logic/use_fetch_or_create_rule_exception_list.test.tsx @@ -5,8 +5,8 @@ * 2.0. */ -import type { RenderHookResult } from '@testing-library/react-hooks'; -import { act, renderHook } from '@testing-library/react-hooks'; +import type { RenderHookResult } from '@testing-library/react'; +import { waitFor, renderHook } from '@testing-library/react'; import { coreMock } from '@kbn/core/public/mocks'; import * as rulesApi from '../../rule_management/api/api'; @@ -40,8 +40,8 @@ describe('useFetchOrCreateRuleExceptionList', () => { let render: ( listType?: UseFetchOrCreateRuleExceptionListProps['exceptionListType'] ) => RenderHookResult< - UseFetchOrCreateRuleExceptionListProps, - ReturnUseFetchOrCreateRuleExceptionList + ReturnUseFetchOrCreateRuleExceptionList, + UseFetchOrCreateRuleExceptionListProps >; const onError = jest.fn(); const onSuccess = jest.fn(); @@ -94,15 +94,14 @@ describe('useFetchOrCreateRuleExceptionList', () => { .mockResolvedValue(detectionExceptionList); render = (listType = detectionListType) => - renderHook<UseFetchOrCreateRuleExceptionListProps, ReturnUseFetchOrCreateRuleExceptionList>( - () => - useFetchOrCreateRuleExceptionList({ - http: mockKibanaHttpService, - ruleId, - exceptionListType: listType, - onError, - onSuccess, - }) + renderHook(() => + useFetchOrCreateRuleExceptionList({ + http: mockKibanaHttpService, + ruleId, + exceptionListType: listType, + onError, + onSuccess, + }) ); }); @@ -111,20 +110,17 @@ describe('useFetchOrCreateRuleExceptionList', () => { }); it('initializes hook', async () => { - const { result, waitForNextUpdate } = render(); + const { result } = render(); // Should set isLoading to true while fetching expect(result.current).toEqual([true, null]); - await waitForNextUpdate(); - expect(result.current).toEqual([false, detectionExceptionList]); + await waitFor(() => expect(result.current).toEqual([false, detectionExceptionList])); }); it('fetches the rule with the given ruleId', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); + render(); + await waitFor(() => { expect(fetchRuleById).toHaveBeenCalledTimes(1); expect(fetchRuleById).toHaveBeenCalledWith({ id: ruleId, @@ -141,78 +137,48 @@ describe('useFetchOrCreateRuleExceptionList', () => { }); it('does not fetch the exceptions lists', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - expect(fetchExceptionListById).not.toHaveBeenCalled(); - }); + render(); + await waitFor(() => expect(fetchExceptionListById).not.toHaveBeenCalled()); }); + it('should create a new exception list', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(addExceptionList).toHaveBeenCalledTimes(1); - }); + render(); + await waitFor(() => expect(addExceptionList).toHaveBeenCalledTimes(1)); }); it('should update the rule', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(patchRule).toHaveBeenCalledTimes(1); - }); + render(); + await waitFor(() => expect(patchRule).toHaveBeenCalledTimes(1)); }); it('invokes onSuccess', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(onSuccess).toHaveBeenCalledWith(false); - }); + render(); + await waitFor(() => expect(onSuccess).toHaveBeenCalledWith(false)); }); }); describe("when the rule has exception list references and 'detection' is passed in", () => { it('fetches the exceptions lists', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(fetchExceptionListById).toHaveBeenCalledTimes(2); - }); + render(); + await waitFor(() => expect(fetchExceptionListById).toHaveBeenCalledTimes(2)); }); + it('does not create a new exception list', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - expect(addExceptionList).not.toHaveBeenCalled(); - }); + render(); + await waitFor(() => expect(addExceptionList).not.toHaveBeenCalled()); }); + it('does not update the rule', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - expect(patchRule).not.toHaveBeenCalled(); - }); + render(); + await waitFor(() => expect(patchRule).not.toHaveBeenCalled()); }); + it('should set the exception list to be the fetched list', async () => { - await act(async () => { - const { result, waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(result.current[1]).toEqual(detectionExceptionList); - }); + const { result } = render(); + await waitFor(() => expect(result.current[1]).toEqual(detectionExceptionList)); }); + it('invokes onSuccess indicating', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(onSuccess).toHaveBeenCalledWith(false); - }); + render(); + await waitFor(() => expect(onSuccess).toHaveBeenCalledWith(false)); }); describe("but the rule does not have a reference to 'detection' type exception list", () => { @@ -223,30 +189,16 @@ describe('useFetchOrCreateRuleExceptionList', () => { }); it('should create a new exception list', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(addExceptionList).toHaveBeenCalledTimes(1); - }); + render(); + await waitFor(() => expect(addExceptionList).toHaveBeenCalledTimes(1)); }); it('should update the rule', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(patchRule).toHaveBeenCalledTimes(1); - }); + render(); + await waitFor(() => expect(patchRule).toHaveBeenCalledTimes(1)); }); it('should set the exception list to be the newly created list', async () => { - await act(async () => { - const { result, waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(result.current[1]).toEqual(newDetectionExceptionList); - }); + const { result } = render(); + await waitFor(() => expect(result.current[1]).toEqual(newDetectionExceptionList)); }); }); }); @@ -263,34 +215,20 @@ describe('useFetchOrCreateRuleExceptionList', () => { }); it('fetches the exceptions lists', async () => { - await act(async () => { - const { waitForNextUpdate } = render(endpointListType); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(fetchExceptionListById).toHaveBeenCalledTimes(2); - }); + render(endpointListType); + await waitFor(() => expect(fetchExceptionListById).toHaveBeenCalledTimes(2)); }); it('does not create a new exception list', async () => { - await act(async () => { - const { waitForNextUpdate } = render(endpointListType); - await waitForNextUpdate(); - expect(addExceptionList).not.toHaveBeenCalled(); - }); + render(endpointListType); + await waitFor(() => expect(addExceptionList).not.toHaveBeenCalled()); }); it('does not update the rule', async () => { - await act(async () => { - const { waitForNextUpdate } = render(endpointListType); - await waitForNextUpdate(); - expect(patchRule).not.toHaveBeenCalled(); - }); + render(endpointListType); + await waitFor(() => expect(patchRule).not.toHaveBeenCalled()); }); it('should set the exception list to be the fetched list', async () => { - await act(async () => { - const { result, waitForNextUpdate } = render(endpointListType); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(result.current[1]).toEqual(endpointExceptionList); - }); + const { result } = render(endpointListType); + await waitFor(() => expect(result.current[1]).toEqual(endpointExceptionList)); }); describe("but the rule does not have a reference to 'endpoint' type exception list", () => { @@ -301,30 +239,16 @@ describe('useFetchOrCreateRuleExceptionList', () => { }); it('should create a new exception list', async () => { - await act(async () => { - const { waitForNextUpdate } = render(endpointListType); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(addEndpointExceptionList).toHaveBeenCalledTimes(1); - }); + render(endpointListType); + await waitFor(() => expect(addEndpointExceptionList).toHaveBeenCalledTimes(1)); }); it('should update the rule', async () => { - await act(async () => { - const { waitForNextUpdate } = render(endpointListType); - await waitForNextUpdate(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(patchRule).toHaveBeenCalledTimes(1); - }); + render(endpointListType); + await waitFor(() => expect(patchRule).toHaveBeenCalledTimes(1)); }); it('should set the exception list to be the newly created list', async () => { - await act(async () => { - const { result, waitForNextUpdate } = render(endpointListType); - await waitForNextUpdate(); - await waitForNextUpdate(); - await waitForNextUpdate(); - expect(result.current[1]).toEqual(newEndpointExceptionList); - }); + const { result } = render(endpointListType); + await waitFor(() => expect(result.current[1]).toEqual(newEndpointExceptionList)); }); }); }); @@ -335,37 +259,26 @@ describe('useFetchOrCreateRuleExceptionList', () => { }); it('exception list should be null', async () => { - await act(async () => { - const { result, waitForNextUpdate } = render(); - await waitForNextUpdate(); - expect(result.current[1]).toBeNull(); - }); + const { result } = render(); + await waitFor(() => expect(result.current[1]).toBeNull()); }); it('isLoading should be false', async () => { - await act(async () => { - const { result, waitForNextUpdate } = render(); - await waitForNextUpdate(); - expect(result.current[0]).toEqual(false); - }); + const { result } = render(); + await waitFor(() => expect(result.current[0]).toEqual(false)); }); it('should call error callback', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - await waitForNextUpdate(); + render(); + await waitFor(() => { expect(onError).toHaveBeenCalledTimes(1); expect(onError).toHaveBeenCalledWith(error, null, null); }); }); it('does not call onSuccess', async () => { - await act(async () => { - const { waitForNextUpdate } = render(); - await waitForNextUpdate(); - expect(onSuccess).not.toHaveBeenCalled(); - }); + render(); + await waitFor(() => expect(onSuccess).not.toHaveBeenCalled()); }); }); }); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_schedule_rule_run_mutation.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_schedule_rule_run_mutation.test.tsx index 6c641ceb2ad9e..e67e479c38258 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_schedule_rule_run_mutation.test.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/api/hooks/use_schedule_rule_run_mutation.test.tsx @@ -7,7 +7,7 @@ import moment from 'moment'; -import { act } from '@testing-library/react-hooks'; +import { act } from '@testing-library/react'; import { useScheduleRuleRunMutation } from './use_schedule_rule_run_mutation'; import { renderMutation } from '../../../../management/hooks/test_utils'; import { scheduleRuleRunMock } from '../../logic/__mocks__/mock'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/logic/use_schedule_rule_run.test.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/logic/use_schedule_rule_run.test.tsx index ce70bc08bd722..d20d8e8e7642d 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/logic/use_schedule_rule_run.test.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_gaps/logic/use_schedule_rule_run.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { act, renderHook } from '@testing-library/react-hooks'; +import { renderHook, act, waitFor } from '@testing-library/react'; import moment from 'moment'; import { useKibana } from '../../../common/lib/kibana'; import { useKibana as mockUseKibana } from '../../../common/lib/kibana/__mocks__'; @@ -41,7 +41,7 @@ describe('When using the `useScheduleRuleRun()` hook', () => { }); it('should send schedule rule run request', async () => { - const { result, waitFor } = renderHook(() => useScheduleRuleRun(), { + const { result } = renderHook(() => useScheduleRuleRun(), { wrapper: TestProviders, }); @@ -50,20 +50,18 @@ describe('When using the `useScheduleRuleRun()` hook', () => { result.current.scheduleRuleRun({ ruleIds: ['rule-1'], timeRange }); }); - await waitFor(() => { - return mockUseScheduleRuleRunMutation.mock.calls.length > 0; - }); - - expect(mockUseScheduleRuleRunMutation).toHaveBeenCalledWith( - expect.objectContaining({ - ruleIds: ['rule-1'], - timeRange, - }) + await waitFor(() => + expect(mockUseScheduleRuleRunMutation).toHaveBeenCalledWith( + expect.objectContaining({ + ruleIds: ['rule-1'], + timeRange, + }) + ) ); }); it('should call reportEvent with success status on success', async () => { - const { result, waitFor } = renderHook(() => useScheduleRuleRun(), { + const { result } = renderHook(() => useScheduleRuleRun(), { wrapper: TestProviders, }); @@ -74,22 +72,20 @@ describe('When using the `useScheduleRuleRun()` hook', () => { result.current.scheduleRuleRun({ ruleIds: ['rule-1'], timeRange }); }); - await waitFor(() => { - return mockUseScheduleRuleRunMutation.mock.calls.length > 0; - }); - - expect(mockedUseKibana.services.telemetry.reportEvent).toHaveBeenCalledWith( - ManualRuleRunEventTypes.ManualRuleRunExecute, - { - rangeInMs: timeRange.endDate.diff(timeRange.startDate), - status: 'success', - rulesCount: 1, - } + await waitFor(() => + expect(mockedUseKibana.services.telemetry.reportEvent).toHaveBeenCalledWith( + ManualRuleRunEventTypes.ManualRuleRunExecute, + { + rangeInMs: timeRange.endDate.diff(timeRange.startDate), + status: 'success', + rulesCount: 1, + } + ) ); }); it('should call reportEvent with error status on failure', async () => { - const { result, waitFor } = renderHook(() => useScheduleRuleRun(), { + const { result } = renderHook(() => useScheduleRuleRun(), { wrapper: TestProviders, }); @@ -100,17 +96,15 @@ describe('When using the `useScheduleRuleRun()` hook', () => { result.current.scheduleRuleRun({ ruleIds: ['rule-1'], timeRange }); }); - await waitFor(() => { - return mockUseScheduleRuleRunMutation.mock.calls.length > 0; - }); - - expect(mockedUseKibana.services.telemetry.reportEvent).toHaveBeenCalledWith( - ManualRuleRunEventTypes.ManualRuleRunExecute, - { - rangeInMs: timeRange.endDate.diff(timeRange.startDate), - status: 'error', - rulesCount: 1, - } + await waitFor(() => + expect(mockedUseKibana.services.telemetry.reportEvent).toHaveBeenCalledWith( + ManualRuleRunEventTypes.ManualRuleRunExecute, + { + rangeInMs: timeRange.endDate.diff(timeRange.startDate), + status: 'error', + rulesCount: 1, + } + ) ); }); }); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/translations.ts index d8b6503f08a11..f7b25ee24a948 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/translations.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/diff_components/translations.ts @@ -19,18 +19,17 @@ import { THREAT_INDEX_FIELD_LABEL, THREAT_MAPPING_FIELD_LABEL, HISTORY_WINDOW_SIZE_FIELD_LABEL, + DATA_SOURCE_FIELD_LABEL, + ALERT_SUPPRESSION_FIELD_LABEL, + INVESTIGATION_FIELDS_FIELD_LABEL, } from '../translations'; /** * Used when fields have different display names or formats than their corresponding rule object fields */ export const fieldToDisplayNameMap: Record<string, string> = { - data_source: i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.dataSourceLabel', - { - defaultMessage: 'Data source', - } - ), + alert_suppression: ALERT_SUPPRESSION_FIELD_LABEL, + data_source: DATA_SOURCE_FIELD_LABEL, note: i18n.translate('xpack.securitySolution.detectionEngine.rules.upgradeRuleFields.noteLabel', { defaultMessage: 'Investigation guide', }), @@ -39,6 +38,7 @@ export const fieldToDisplayNameMap: Record<string, string> = { references: REFERENCES_FIELD_LABEL, threat_indicator_path: THREAT_INDICATOR_PATH_LABEL, index_patterns: INDEX_FIELD_LABEL, + investigation_fields: INVESTIGATION_FIELDS_FIELD_LABEL, data_view_id: DATA_VIEW_ID_FIELD_LABEL, threat: THREAT_FIELD_LABEL, eql_query: i18n.translate( diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_about_section.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_about_section.tsx index 396811892610b..4dcc15677d24c 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_about_section.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_about_section.tsx @@ -26,7 +26,10 @@ import type { } from '@kbn/securitysolution-io-ts-alerting-types'; import { ALERT_RISK_SCORE } from '@kbn/rule-data-utils'; import { requiredOptional } from '@kbn/zod-helpers'; -import type { RuleResponse } from '../../../../../common/api/detection_engine/model/rule_schema'; +import type { + BuildingBlockType, + RuleResponse, +} from '../../../../../common/api/detection_engine/model/rule_schema'; import { SeverityBadge } from '../../../../common/components/severity_badge'; import { defaultToEmptyTag } from '../../../../common/components/empty_value'; import { filterEmptyThreats } from '../../../rule_creation_ui/pages/rule_creation/helpers'; @@ -76,9 +79,15 @@ export const Author = ({ author }: AuthorProps) => ( <BadgeList badges={author} data-test-subj="authorPropertyValue" /> ); -export const BuildingBlock = () => ( +interface BuildingBlockProps { + type: BuildingBlockType | undefined; +} + +export const BuildingBlock = ({ type }: BuildingBlockProps) => ( <EuiText size="s" data-test-subj="buildingBlockPropertyValue"> - {i18n.BUILDING_BLOCK_FIELD_DESCRIPTION} + {type + ? i18n.BUILDING_BLOCK_ENABLED_FIELD_DESCRIPTION + : i18n.BUILDING_BLOCK_DISABLED_FIELD_DESCRIPTION} </EuiText> ); @@ -294,7 +303,7 @@ const prepareAboutSectionListItems = ( title: ( <span data-test-subj="buildingBlockPropertyTitle">{i18n.BUILDING_BLOCK_FIELD_LABEL}</span> ), - description: <BuildingBlock />, + description: <BuildingBlock type="default" />, }); } diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_details_flyout.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_details_flyout.tsx index 7c7125a36dc5d..3425779926f7d 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_details_flyout.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_details_flyout.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import type { FC, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren, ReactNode } from 'react'; import React, { useMemo, useState, useEffect } from 'react'; import styled from 'styled-components'; import { css } from '@emotion/css'; @@ -107,6 +107,7 @@ export const TabContentPadding: FC<PropsWithChildren<unknown>> = ({ children }) interface RuleDetailsFlyoutProps { rule: RuleResponse; + subHeader?: ReactNode; ruleActions?: React.ReactNode; size?: EuiFlyoutProps['size']; extraTabs?: EuiTabbedContentTab[]; @@ -115,15 +116,16 @@ interface RuleDetailsFlyoutProps { closeFlyout: () => void; } -export const RuleDetailsFlyout = ({ +export function RuleDetailsFlyout({ rule, ruleActions, + subHeader, size = 'm', extraTabs = [], dataTestSubj, id, closeFlyout, -}: RuleDetailsFlyoutProps) => { +}: RuleDetailsFlyoutProps): JSX.Element { const { expandedOverviewSections, toggleOverviewSection } = useOverviewTabSections(); const overviewTab: EuiTabbedContentTab = useMemo( @@ -202,7 +204,13 @@ export const RuleDetailsFlyout = ({ <EuiTitle size="m"> <h2 id={prebuiltRulesFlyoutTitleId}>{rule.name}</h2> </EuiTitle> - <EuiSpacer size="l" /> + <EuiSpacer size="s" /> + {subHeader && ( + <> + {subHeader} + <EuiSpacer size="s" /> + </> + )} </EuiFlyoutHeader> <StyledEuiFlyoutBody> <ScrollableFlyoutTabbedContent @@ -223,4 +231,4 @@ export const RuleDetailsFlyout = ({ </EuiFlyoutFooter> </EuiFlyout> ); -}; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/action_required.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/action_required.tsx new file mode 100644 index 0000000000000..d21136531fd07 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/action_required.tsx @@ -0,0 +1,14 @@ +/* + * 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 { EuiBadge } from '@elastic/eui'; +import * as i18n from './translations'; + +export function ActionRequiredBadge(): JSX.Element { + return <EuiBadge color="danger">{i18n.ACTION_REQUIRED}</EuiBadge>; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/modified_badge.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/modified_badge.tsx new file mode 100644 index 0000000000000..bfe70af031835 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/modified_badge.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 type { ReactNode } from 'react'; +import React from 'react'; +import { EuiBadge, EuiToolTip } from '@elastic/eui'; +import * as i18n from './translations'; + +interface ModifiedBadgeProps { + tooltip?: ReactNode; +} + +export function ModifiedBadge({ tooltip }: ModifiedBadgeProps): JSX.Element { + return ( + <EuiToolTip content={tooltip}> + <EuiBadge color="hollow" iconType="indexEdit" iconSide="left"> + {i18n.MODIFIED} + </EuiBadge> + </EuiToolTip> + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/ready_for_upgrade_badge.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/ready_for_upgrade_badge.tsx new file mode 100644 index 0000000000000..c5498fe04dcfe --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/ready_for_upgrade_badge.tsx @@ -0,0 +1,21 @@ +/* + * 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 type { EuiBadgeProps } from '@elastic/eui'; +import { EuiBadge } from '@elastic/eui'; +import * as i18n from './translations'; + +interface ReadyForUpgradeBadgeProps { + color?: EuiBadgeProps['color']; +} + +export function ReadyForUpgradeBadge({ + color = 'success', +}: ReadyForUpgradeBadgeProps): JSX.Element { + return <EuiBadge color={color}>{i18n.READY_FOR_UPDATE}</EuiBadge>; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/review_required_badge.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/review_required_badge.tsx new file mode 100644 index 0000000000000..db02ce9a3615e --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/review_required_badge.tsx @@ -0,0 +1,14 @@ +/* + * 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 { EuiBadge } from '@elastic/eui'; +import * as i18n from './translations'; + +export function ReviewRequiredBadge(): JSX.Element { + return <EuiBadge color="warning">{i18n.REVIEW_REQUIRED}</EuiBadge>; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/translations.ts new file mode 100644 index 0000000000000..f55b9ad2eef73 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/badges/translations.ts @@ -0,0 +1,36 @@ +/* + * 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'; + +export const READY_FOR_UPDATE = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.badge.readyForUpdate', + { + defaultMessage: 'Ready for update', + } +); + +export const REVIEW_REQUIRED = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.badge.reviewRequired', + { + defaultMessage: 'Review required', + } +); + +export const ACTION_REQUIRED = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.badge.actionRequired', + { + defaultMessage: 'Action required', + } +); + +export const MODIFIED = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.badge.modified', + { + defaultMessage: 'Modified', + } +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side.stories.tsx deleted file mode 100644 index 37ddb71dce9f7..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side.stories.tsx +++ /dev/null @@ -1,315 +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 React from 'react'; -import type { Story } from '@storybook/react'; -import { ComparisonSide } from './comparison_side'; -import type { - ThreeWayDiff, - DiffableAllFields, - RuleKqlQuery, -} from '../../../../../../../common/api/detection_engine'; -import { - ThreeWayDiffOutcome, - ThreeWayMergeOutcome, - ThreeWayDiffConflict, - KqlQueryType, -} from '../../../../../../../common/api/detection_engine'; -export default { - component: ComparisonSide, - title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/ComparisonSide', - argTypes: { - fieldName: { - control: 'text', - description: 'Field name to compare', - }, - fieldThreeWayDiff: { - control: 'object', - description: 'Field ThreeWayDiff', - }, - resolvedValue: { - control: 'text', - description: 'Resolved value', - }, - }, -}; - -interface TemplateProps<FieldName extends keyof DiffableAllFields> { - fieldName: FieldName; - fieldThreeWayDiff: ThreeWayDiff<DiffableAllFields[FieldName]>; - resolvedValue?: DiffableAllFields[FieldName]; -} - -const Template: Story<TemplateProps<keyof DiffableAllFields>> = (args) => { - return ( - <ComparisonSide - fieldName={args.fieldName} - fieldThreeWayDiff={args.fieldThreeWayDiff} - resolvedValue={args.resolvedValue} - /> - ); -}; - -export const NoBaseVersion = Template.bind({}); -NoBaseVersion.args = { - fieldName: 'rule_name_override', - fieldThreeWayDiff: { - has_base_version: false, - base_version: undefined, - current_version: { - field_name: 'rule.name', - }, - target_version: undefined, - merged_version: undefined, - diff_outcome: ThreeWayDiffOutcome.MissingBaseCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Target, - has_update: true, - conflict: ThreeWayDiffConflict.SOLVABLE, - }, -}; - -export const WithResolvedValue = Template.bind({}); -WithResolvedValue.args = { - fieldName: 'risk_score', - fieldThreeWayDiff: { - has_base_version: true, - base_version: 10, - current_version: 40, - target_version: 20, - merged_version: 40, - diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Current, - has_update: true, - conflict: ThreeWayDiffConflict.NON_SOLVABLE, - }, - resolvedValue: 35, -}; -WithResolvedValue.argTypes = { - resolvedValue: { - control: 'number', - }, -}; - -/* Optional field becomes defined - was undefined in base version, but was then defined by user in current version */ -export const OptionalFieldBecomesDefined = Template.bind({}); -OptionalFieldBecomesDefined.args = { - fieldName: 'timestamp_override', - fieldThreeWayDiff: { - has_base_version: true, - base_version: undefined, - current_version: { - field_name: 'event.ingested', - fallback_disabled: true, - }, - target_version: undefined, - merged_version: { - field_name: 'event.ingested', - fallback_disabled: true, - }, - diff_outcome: ThreeWayDiffOutcome.CustomizedValueNoUpdate, - merge_outcome: ThreeWayMergeOutcome.Current, - has_update: false, - conflict: ThreeWayDiffConflict.NONE, - }, -}; - -export const SubfieldsWithLabels = Template.bind({}); - -const subfieldsWithLabelsThreeWayDiff: ThreeWayDiff<RuleKqlQuery> = { - has_base_version: true, - base_version: { - type: KqlQueryType.inline_query, - query: 'event.agent_id_status: *', - language: 'kuery', - filters: [], - }, - current_version: { - type: KqlQueryType.inline_query, - query: 'event.agent_id_status: *', - language: 'kuery', - filters: [], - }, - target_version: { - type: KqlQueryType.saved_query, - saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', - }, - merged_version: { - type: KqlQueryType.saved_query, - saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', - }, - diff_outcome: ThreeWayDiffOutcome.StockValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Target, - has_update: true, - conflict: ThreeWayDiffConflict.NONE, -}; - -SubfieldsWithLabels.args = { - fieldName: 'kql_query', - fieldThreeWayDiff: subfieldsWithLabelsThreeWayDiff, -}; - -/* Field type changes - in this example "kql_query" field was "inline" in base version, but became "saved" in the current version */ -export const FieldTypeChanges = Template.bind({}); - -const fieldTypeChangesThreeWayDiff: ThreeWayDiff<RuleKqlQuery> = { - has_base_version: true, - base_version: { - type: KqlQueryType.inline_query, - query: 'event.agent_id_status: *', - language: 'kuery', - filters: [], - }, - current_version: { - type: KqlQueryType.saved_query, - saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', - }, - target_version: { - type: KqlQueryType.inline_query, - query: 'event.agent_id_status: *', - language: 'kuery', - filters: [], - }, - merged_version: { - type: KqlQueryType.saved_query, - saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', - }, - diff_outcome: ThreeWayDiffOutcome.CustomizedValueNoUpdate, - merge_outcome: ThreeWayMergeOutcome.Current, - has_update: false, - conflict: ThreeWayDiffConflict.NONE, -}; - -FieldTypeChanges.args = { - fieldName: 'kql_query', - fieldThreeWayDiff: fieldTypeChangesThreeWayDiff, -}; - -export const SingleLineStringSubfieldChanges = Template.bind({}); -SingleLineStringSubfieldChanges.args = { - fieldName: 'name', - fieldThreeWayDiff: { - has_base_version: true, - base_version: 'Prebuilt rule', - current_version: 'Customized prebuilt rule', - target_version: 'Prebuilt rule with new changes', - merged_version: 'Customized prebuilt rule', - diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Current, - has_update: true, - conflict: ThreeWayDiffConflict.NON_SOLVABLE, - }, -}; - -export const MultiLineStringSubfieldChanges = Template.bind({}); -MultiLineStringSubfieldChanges.args = { - fieldName: 'note', - fieldThreeWayDiff: { - has_base_version: true, - base_version: 'My description.\f\nThis is a second\u2001 line.\f\nThis is a third line.', - current_version: - 'My GREAT description.\f\nThis is a second\u2001 line.\f\nThis is a third line.', - target_version: 'My description.\f\nThis is a second\u2001 line.\f\nThis is a GREAT line.', - merged_version: - 'My GREAT description.\f\nThis is a second\u2001 line.\f\nThis is a GREAT line.', - diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Merged, - has_update: true, - conflict: ThreeWayDiffConflict.SOLVABLE, - }, -}; - -export const NumberSubfieldChanges = Template.bind({}); -NumberSubfieldChanges.args = { - fieldName: 'risk_score', - fieldThreeWayDiff: { - has_base_version: true, - base_version: 33, - current_version: 43, - target_version: 53, - merged_version: 43, - diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Current, - has_update: true, - conflict: ThreeWayDiffConflict.NON_SOLVABLE, - }, -}; - -export const ArraySubfieldChanges = Template.bind({}); -ArraySubfieldChanges.args = { - fieldName: 'tags', - fieldThreeWayDiff: { - has_base_version: true, - base_version: ['one', 'two', 'three'], - current_version: ['two', 'three', 'four', 'five'], - target_version: ['one', 'three', 'four', 'six'], - merged_version: ['three', 'four', 'five', 'six'], - diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Current, - has_update: true, - conflict: ThreeWayDiffConflict.SOLVABLE, - }, -}; - -export const QuerySubfieldChanges = Template.bind({}); -QuerySubfieldChanges.args = { - fieldName: 'kql_query', - fieldThreeWayDiff: { - has_base_version: true, - base_version: { - type: KqlQueryType.inline_query, - query: - 'event.action:("Directory Service Changes" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"servicePrincipalName"\n', - language: 'kuery', - filters: [], - }, - current_version: { - type: KqlQueryType.inline_query, - query: - 'event.action:("Directory Service Changes" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" or winlog.event_data.OperationType:"%%14675" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"serviceSecondaryName"\n', - language: 'kuery', - filters: [], - }, - target_version: { - type: KqlQueryType.inline_query, - query: - 'event.action:("Directory Service Changes" or "Directory Service Modifications" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"servicePrincipalName"\n', - language: 'kuery', - filters: [], - }, - merged_version: { - type: KqlQueryType.inline_query, - query: - 'event.action:("Directory Service Changes" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" or winlog.event_data.OperationType:"%%14675" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"serviceSecondaryName"\n', - language: 'kuery', - filters: [], - }, - diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Current, - has_update: true, - conflict: ThreeWayDiffConflict.NON_SOLVABLE, - }, -}; - -export const SetupGuideSubfieldChanges = Template.bind({}); -SetupGuideSubfieldChanges.args = { - fieldName: 'setup', - fieldThreeWayDiff: { - has_base_version: true, - base_version: - '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect, either "Traditional Endpoints" or "Cloud Workloads".\n- Select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- We suggest selecting "Complete EDR (Endpoint Detection and Response)" as a configuration setting, that provides "All events; all preventions"\n- Enter a name for the agent policy in "New agent policy name". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. For example, you can use Auditbeat to collect and centralize audit events from the Linux Audit Framework. You can also use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for APT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the APT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n', - current_version: - '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n- Custom Windows Event Logs\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect.\n- Select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- Enter a name for the agent policy in "New agent policy name". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- The rule is now ready to run.\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. For example, you can use Auditbeat to collect and centralize audit events from the Linux Audit Framework. You can also use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for AXT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the AXT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n', - target_version: - '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect, either "Traditional Endpoints" or "Cloud Workloads".\n- Carefully select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- We suggest selecting "Complete EDR (Endpoint Detection and Response)" as a configuration setting, that provides "All events; all preventions"\n- Enter a title for the agent policy in "New agent policy title". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. You can use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for APT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the APT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n- Good luck!\n', - merged_version: - '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n- Custom Windows Event Logs\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect.\n- Carefully select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- Enter a title for the agent policy in "New agent policy title". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- The rule is now ready to run.\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. You can use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for AXT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the AXT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n- Good luck!\n', - diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, - merge_outcome: ThreeWayMergeOutcome.Merged, - has_update: true, - conflict: ThreeWayDiffConflict.SOLVABLE, - }, -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side.tsx deleted file mode 100644 index e5ec6a8dfc540..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side.tsx +++ /dev/null @@ -1,67 +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 React, { useState } from 'react'; -import { EuiFlexGroup, EuiTitle } from '@elastic/eui'; -import { VersionsPicker } from '../versions_picker/versions_picker'; -import type { Version } from '../versions_picker/constants'; -import { SelectedVersions } from '../versions_picker/constants'; -import { pickFieldValueForVersion } from './utils'; -import type { - DiffableAllFields, - ThreeWayDiff, -} from '../../../../../../../common/api/detection_engine'; -import { getSubfieldChanges } from './get_subfield_changes'; -import { SubfieldChanges } from './subfield_changes'; -import { SideHeader } from '../components/side_header'; -import { ComparisonSideHelpInfo } from './comparison_side_help_info'; -import * as i18n from './translations'; - -interface ComparisonSideProps<FieldName extends keyof DiffableAllFields> { - fieldName: FieldName; - fieldThreeWayDiff: ThreeWayDiff<DiffableAllFields[FieldName]>; - resolvedValue: DiffableAllFields[FieldName]; -} - -export function ComparisonSide<FieldName extends keyof DiffableAllFields>({ - fieldName, - fieldThreeWayDiff, - resolvedValue, -}: ComparisonSideProps<FieldName>) { - const [selectedVersions, setSelectedVersions] = useState<SelectedVersions>( - SelectedVersions.CurrentFinal - ); - - const [oldVersionType, newVersionType] = selectedVersions.split('_') as [Version, Version]; - - const oldFieldValue = pickFieldValueForVersion(oldVersionType, fieldThreeWayDiff, resolvedValue); - - const newFieldValue = pickFieldValueForVersion(newVersionType, fieldThreeWayDiff, resolvedValue); - - const subfieldChanges = getSubfieldChanges(fieldName, oldFieldValue, newFieldValue); - - return ( - <> - <SideHeader> - <EuiFlexGroup direction="row" alignItems="center"> - <EuiTitle size="xxs"> - <h3> - {i18n.TITLE} - <ComparisonSideHelpInfo /> - </h3> - </EuiTitle> - <VersionsPicker - hasBaseVersion={fieldThreeWayDiff.has_base_version} - selectedVersions={selectedVersions} - onChange={setSelectedVersions} - /> - </EuiFlexGroup> - </SideHeader> - <SubfieldChanges fieldName={fieldName} subfieldChanges={subfieldChanges} /> - </> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side_help_info.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side_help_info.tsx index e1eaa9b1e96cd..47e5e537f3ab0 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side_help_info.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/comparison_side_help_info.tsx @@ -9,6 +9,14 @@ import React from 'react'; import useToggle from 'react-use/lib/useToggle'; import { EuiPopover, EuiText, EuiButtonIcon } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; +import { i18n } from '@kbn/i18n'; +import { TITLE } from './translations'; +import { + BASE_VERSION, + CURRENT_VERSION, + FINAL_VERSION, + TARGET_VERSION, +} from './versions_picker/translations'; /** * Theme doesn't expose width variables. Using provided size variables will require @@ -34,10 +42,64 @@ export function ComparisonSideHelpInfo(): JSX.Element { <EuiPopover button={button} isOpen={isPopoverOpen} closePopover={togglePopover}> <EuiText style={{ width: POPOVER_WIDTH }} size="s"> <FormattedMessage - id="xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeHelpText" - defaultMessage="Choose field values used in the upgraded rule. " + id="xpack.securitySolution.detectionEngine.rules.upgradeRules.comparisonSide.upgradeHelpText" + defaultMessage="{title} shows field's JSON diff between prebuilt rule field versions affecting the rule update process. {versions}" + values={{ + title: <strong>{TITLE}</strong>, + versions: ( + <> + <br /> + <ul> + <li> + <strong>{BASE_VERSION}</strong> {'-'} {BASE_VERSION_EXPLANATION} + </li> + <li> + <strong>{CURRENT_VERSION}</strong> {'-'} {CURRENT_VERSION_EXPLANATION} + </li> + <li> + <strong>{TARGET_VERSION}</strong> {'-'} {TARGET_VERSION_EXPLANATION} + </li> + <li> + <strong>{FINAL_VERSION}</strong> {'-'} {FINAL_VERSION_EXPLANATION} + </li> + </ul> + </> + ), + }} /> </EuiText> </EuiPopover> ); } + +const BASE_VERSION_EXPLANATION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.baseVersionExplanation', + { + defaultMessage: 'version originally installed from Elastic prebuilt rules package', + } +); + +const CURRENT_VERSION_EXPLANATION = ( + <FormattedMessage + id="xpack.securitySolution.detectionEngine.rules.upgradeRules.currentVersionExplanation" + defaultMessage="current version including modification made after prebuilt rule installation. With lack of modifications it matches with {base}." + values={{ + base: <strong>{BASE_VERSION}</strong>, + }} + /> +); + +const TARGET_VERSION_EXPLANATION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.targetVersionExplanation', + { + defaultMessage: 'version coming from a new version of Elastic prebuilt rules package', + } +); + +const FINAL_VERSION_EXPLANATION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.finalVersionExplanation', + { + defaultMessage: + 'version used to the update the rule. Initial value is suggested by the diff algorithm.', + } +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/field_comparison_side.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/field_comparison_side.stories.tsx new file mode 100644 index 0000000000000..004b7ff25670b --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/field_comparison_side.stories.tsx @@ -0,0 +1,309 @@ +/* + * 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 type { Story } from '@storybook/react'; +import { FieldComparisonSide } from './field_comparison_side'; +import type { + ThreeWayDiff, + DiffableAllFields, + RuleKqlQuery, +} from '../../../../../../../common/api/detection_engine'; +import { + ThreeWayDiffOutcome, + ThreeWayMergeOutcome, + ThreeWayDiffConflict, + KqlQueryType, +} from '../../../../../../../common/api/detection_engine'; +export default { + component: FieldComparisonSide, + title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/ComparisonSide', + argTypes: { + fieldName: { + control: 'text', + description: 'Field name to compare', + }, + fieldThreeWayDiff: { + control: 'object', + description: 'Field ThreeWayDiff', + }, + resolvedValue: { + control: 'text', + description: 'Resolved value', + }, + }, +}; + +interface TemplateProps<FieldName extends keyof DiffableAllFields> { + fieldName: FieldName; + fieldThreeWayDiff: ThreeWayDiff<DiffableAllFields[FieldName]>; + resolvedValue?: DiffableAllFields[FieldName]; +} + +const Template: Story<TemplateProps<keyof DiffableAllFields>> = () => { + return <FieldComparisonSide />; +}; + +export const NoBaseVersion = Template.bind({}); +NoBaseVersion.args = { + fieldName: 'rule_name_override', + fieldThreeWayDiff: { + has_base_version: false, + base_version: undefined, + current_version: { + field_name: 'rule.name', + }, + target_version: undefined, + merged_version: undefined, + diff_outcome: ThreeWayDiffOutcome.MissingBaseCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Target, + has_update: true, + conflict: ThreeWayDiffConflict.SOLVABLE, + }, +}; + +export const WithResolvedValue = Template.bind({}); +WithResolvedValue.args = { + fieldName: 'risk_score', + fieldThreeWayDiff: { + has_base_version: true, + base_version: 10, + current_version: 40, + target_version: 20, + merged_version: 40, + diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Current, + has_update: true, + conflict: ThreeWayDiffConflict.NON_SOLVABLE, + }, + resolvedValue: 35, +}; +WithResolvedValue.argTypes = { + resolvedValue: { + control: 'number', + }, +}; + +/* Optional field becomes defined - was undefined in base version, but was then defined by user in current version */ +export const OptionalFieldBecomesDefined = Template.bind({}); +OptionalFieldBecomesDefined.args = { + fieldName: 'timestamp_override', + fieldThreeWayDiff: { + has_base_version: true, + base_version: undefined, + current_version: { + field_name: 'event.ingested', + fallback_disabled: true, + }, + target_version: undefined, + merged_version: { + field_name: 'event.ingested', + fallback_disabled: true, + }, + diff_outcome: ThreeWayDiffOutcome.CustomizedValueNoUpdate, + merge_outcome: ThreeWayMergeOutcome.Current, + has_update: false, + conflict: ThreeWayDiffConflict.NONE, + }, +}; + +export const SubfieldsWithLabels = Template.bind({}); + +const subfieldsWithLabelsThreeWayDiff: ThreeWayDiff<RuleKqlQuery> = { + has_base_version: true, + base_version: { + type: KqlQueryType.inline_query, + query: 'event.agent_id_status: *', + language: 'kuery', + filters: [], + }, + current_version: { + type: KqlQueryType.inline_query, + query: 'event.agent_id_status: *', + language: 'kuery', + filters: [], + }, + target_version: { + type: KqlQueryType.saved_query, + saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', + }, + merged_version: { + type: KqlQueryType.saved_query, + saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', + }, + diff_outcome: ThreeWayDiffOutcome.StockValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Target, + has_update: true, + conflict: ThreeWayDiffConflict.NONE, +}; + +SubfieldsWithLabels.args = { + fieldName: 'kql_query', + fieldThreeWayDiff: subfieldsWithLabelsThreeWayDiff, +}; + +/* Field type changes - in this example "kql_query" field was "inline" in base version, but became "saved" in the current version */ +export const FieldTypeChanges = Template.bind({}); + +const fieldTypeChangesThreeWayDiff: ThreeWayDiff<RuleKqlQuery> = { + has_base_version: true, + base_version: { + type: KqlQueryType.inline_query, + query: 'event.agent_id_status: *', + language: 'kuery', + filters: [], + }, + current_version: { + type: KqlQueryType.saved_query, + saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', + }, + target_version: { + type: KqlQueryType.inline_query, + query: 'event.agent_id_status: *', + language: 'kuery', + filters: [], + }, + merged_version: { + type: KqlQueryType.saved_query, + saved_query_id: 'e355ef26-45f5-40f1-bbb7-5176ecf07d5c', + }, + diff_outcome: ThreeWayDiffOutcome.CustomizedValueNoUpdate, + merge_outcome: ThreeWayMergeOutcome.Current, + has_update: false, + conflict: ThreeWayDiffConflict.NONE, +}; + +FieldTypeChanges.args = { + fieldName: 'kql_query', + fieldThreeWayDiff: fieldTypeChangesThreeWayDiff, +}; + +export const SingleLineStringSubfieldChanges = Template.bind({}); +SingleLineStringSubfieldChanges.args = { + fieldName: 'name', + fieldThreeWayDiff: { + has_base_version: true, + base_version: 'Prebuilt rule', + current_version: 'Customized prebuilt rule', + target_version: 'Prebuilt rule with new changes', + merged_version: 'Customized prebuilt rule', + diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Current, + has_update: true, + conflict: ThreeWayDiffConflict.NON_SOLVABLE, + }, +}; + +export const MultiLineStringSubfieldChanges = Template.bind({}); +MultiLineStringSubfieldChanges.args = { + fieldName: 'note', + fieldThreeWayDiff: { + has_base_version: true, + base_version: 'My description.\f\nThis is a second\u2001 line.\f\nThis is a third line.', + current_version: + 'My GREAT description.\f\nThis is a second\u2001 line.\f\nThis is a third line.', + target_version: 'My description.\f\nThis is a second\u2001 line.\f\nThis is a GREAT line.', + merged_version: + 'My GREAT description.\f\nThis is a second\u2001 line.\f\nThis is a GREAT line.', + diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Merged, + has_update: true, + conflict: ThreeWayDiffConflict.SOLVABLE, + }, +}; + +export const NumberSubfieldChanges = Template.bind({}); +NumberSubfieldChanges.args = { + fieldName: 'risk_score', + fieldThreeWayDiff: { + has_base_version: true, + base_version: 33, + current_version: 43, + target_version: 53, + merged_version: 43, + diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Current, + has_update: true, + conflict: ThreeWayDiffConflict.NON_SOLVABLE, + }, +}; + +export const ArraySubfieldChanges = Template.bind({}); +ArraySubfieldChanges.args = { + fieldName: 'tags', + fieldThreeWayDiff: { + has_base_version: true, + base_version: ['one', 'two', 'three'], + current_version: ['two', 'three', 'four', 'five'], + target_version: ['one', 'three', 'four', 'six'], + merged_version: ['three', 'four', 'five', 'six'], + diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Current, + has_update: true, + conflict: ThreeWayDiffConflict.SOLVABLE, + }, +}; + +export const QuerySubfieldChanges = Template.bind({}); +QuerySubfieldChanges.args = { + fieldName: 'kql_query', + fieldThreeWayDiff: { + has_base_version: true, + base_version: { + type: KqlQueryType.inline_query, + query: + 'event.action:("Directory Service Changes" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"servicePrincipalName"\n', + language: 'kuery', + filters: [], + }, + current_version: { + type: KqlQueryType.inline_query, + query: + 'event.action:("Directory Service Changes" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" or winlog.event_data.OperationType:"%%14675" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"serviceSecondaryName"\n', + language: 'kuery', + filters: [], + }, + target_version: { + type: KqlQueryType.inline_query, + query: + 'event.action:("Directory Service Changes" or "Directory Service Modifications" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"servicePrincipalName"\n', + language: 'kuery', + filters: [], + }, + merged_version: { + type: KqlQueryType.inline_query, + query: + 'event.action:("Directory Service Changes" or "directory-service-object-modified") and event.code:5136 and\n winlog.event_data.OperationType:"%%14674" or winlog.event_data.OperationType:"%%14675" and\n winlog.event_data.ObjectClass:"user" and\n winlog.event_data.AttributeLDAPDisplayName:"serviceSecondaryName"\n', + language: 'kuery', + filters: [], + }, + diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Current, + has_update: true, + conflict: ThreeWayDiffConflict.NON_SOLVABLE, + }, +}; + +export const SetupGuideSubfieldChanges = Template.bind({}); +SetupGuideSubfieldChanges.args = { + fieldName: 'setup', + fieldThreeWayDiff: { + has_base_version: true, + base_version: + '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect, either "Traditional Endpoints" or "Cloud Workloads".\n- Select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- We suggest selecting "Complete EDR (Endpoint Detection and Response)" as a configuration setting, that provides "All events; all preventions"\n- Enter a name for the agent policy in "New agent policy name". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. For example, you can use Auditbeat to collect and centralize audit events from the Linux Audit Framework. You can also use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for APT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the APT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n', + current_version: + '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n- Custom Windows Event Logs\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect.\n- Select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- Enter a name for the agent policy in "New agent policy name". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- The rule is now ready to run.\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. For example, you can use Auditbeat to collect and centralize audit events from the Linux Audit Framework. You can also use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for AXT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the AXT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n', + target_version: + '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect, either "Traditional Endpoints" or "Cloud Workloads".\n- Carefully select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- We suggest selecting "Complete EDR (Endpoint Detection and Response)" as a configuration setting, that provides "All events; all preventions"\n- Enter a title for the agent policy in "New agent policy title". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. You can use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for APT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the APT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n- Good luck!\n', + merged_version: + '## Setup\n\nThis rule requires data coming in from one of the following integrations:\n- Elastic Defend\n- Auditbeat\n- Custom Windows Event Logs\n\n### Elastic Defend Integration Setup\nElastic Defend is integrated into the Elastic Agent using Fleet. Upon configuration, the integration allows the Elastic Agent to monitor events on your host and send data to the Elastic Security app.\n\n#### Prerequisite Requirements:\n- Fleet is required for Elastic Defend.\n- To configure Fleet Server refer to the [documentation](https://www.elastic.co/guide/en/fleet/current/fleet-server.html).\n\n#### The following steps should be executed in order to add the Elastic Defend integration on a Linux System:\n- Go to the Kibana home page and click "Add integrations".\n- In the query bar, search for "Elastic Defend" and select the integration to see more details about it.\n- Click "Add Elastic Defend".\n- Configure the integration name and optionally add a description.\n- Select the type of environment you want to protect.\n- Carefully select a configuration preset. Each preset comes with different default settings for Elastic Agent, you can further customize these later by configuring the Elastic Defend integration policy. [Helper guide](https://www.elastic.co/guide/en/security/current/configure-endpoint-integration-policy.html).\n- Enter a title for the agent policy in "New agent policy title". If other agent policies already exist, you can click the "Existing hosts" tab and select an existing policy instead.\nFor more details on Elastic Agent configuration settings, refer to the [helper guide](https://www.elastic.co/guide/en/fleet/8.10/agent-policy.html).\n- Click "Save and Continue".\n- The rule is now ready to run.\n- To complete the integration, select "Add Elastic Agent to your hosts" and continue to the next section to install the Elastic Agent on your hosts.\nFor more details on Elastic Defend refer to the [helper guide](https://www.elastic.co/guide/en/security/current/install-endpoint.html).\n\n### Auditbeat Setup\nAuditbeat is a lightweight shipper that you can install on your servers to audit the activities of users and processes on your systems. You can use Auditbeat to detect changes to critical files, like binaries and configuration files, and identify potential security policy violations.\n\n#### The following steps should be executed in order to add the Auditbeat on a Linux System:\n- Elastic provides repositories available for AXT and YUM-based distributions. Note that we provide binary packages, but no source packages.\n- To install the AXT and YUM repositories follow the setup instructions in this [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setup-repositories.html).\n- To run Auditbeat on Docker follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-docker.html).\n- To run Auditbeat on Kubernetes follow the setup instructions in the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/running-on-kubernetes.html).\n- For complete “Setup and Run Auditbeat” information refer to the [helper guide](https://www.elastic.co/guide/en/beats/auditbeat/current/setting-up-and-running.html).\n- Good luck!\n', + diff_outcome: ThreeWayDiffOutcome.CustomizedValueCanUpdate, + merge_outcome: ThreeWayMergeOutcome.Merged, + has_update: true, + conflict: ThreeWayDiffConflict.SOLVABLE, + }, +}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/field_comparison_side.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/field_comparison_side.tsx new file mode 100644 index 0000000000000..0b9b37c91e226 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/field_comparison_side.tsx @@ -0,0 +1,61 @@ +/* + * 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, { useState } from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiTitle } from '@elastic/eui'; +import { VersionsPicker } from './versions_picker/versions_picker'; +import type { Version } from './versions_picker/constants'; +import { SelectedVersions } from './versions_picker/constants'; +import { FieldUpgradeSideHeader } from '../field_upgrade_side_header'; +import { useFieldUpgradeContext } from '../rule_upgrade/field_upgrade_context'; +import { pickFieldValueForVersion } from './utils'; +import { getSubfieldChanges } from './get_subfield_changes'; +import { SubfieldChanges } from './subfield_changes'; +import { ComparisonSideHelpInfo } from './comparison_side_help_info'; +import * as i18n from './translations'; + +export function FieldComparisonSide(): JSX.Element { + const { fieldName, fieldDiff, finalDiffableRule } = useFieldUpgradeContext(); + const resolvedValue = finalDiffableRule[fieldName]; + + const [selectedVersions, setSelectedVersions] = useState<SelectedVersions>( + SelectedVersions.CurrentFinal + ); + + const [oldVersionType, newVersionType] = selectedVersions.split('_') as [Version, Version]; + + const oldFieldValue = pickFieldValueForVersion(oldVersionType, fieldDiff, resolvedValue); + + const newFieldValue = pickFieldValueForVersion(newVersionType, fieldDiff, resolvedValue); + + const subfieldChanges = getSubfieldChanges(fieldName, oldFieldValue, newFieldValue); + + return ( + <> + <FieldUpgradeSideHeader> + <EuiFlexGroup alignItems="center"> + <EuiFlexItem> + <EuiTitle size="xxs"> + <h3> + {i18n.TITLE} + <ComparisonSideHelpInfo /> + </h3> + </EuiTitle> + </EuiFlexItem> + <EuiFlexItem> + <VersionsPicker + hasBaseVersion={fieldDiff.has_base_version} + selectedVersions={selectedVersions} + onChange={setSelectedVersions} + /> + </EuiFlexItem> + </EuiFlexGroup> + </FieldUpgradeSideHeader> + <SubfieldChanges fieldName={fieldName} subfieldChanges={subfieldChanges} /> + </> + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/index.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/index.ts index c3628d74176c3..0ac093b895a73 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/index.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/get_subfield_changes/index.ts @@ -28,10 +28,10 @@ import type { SubfieldChanges } from '../types'; * @param newFieldValue - The new value of the field. * @returns - An array of subfield changes. */ -export const getSubfieldChanges = <FieldName extends keyof DiffableAllFields>( - fieldName: FieldName, - oldFieldValue?: DiffableAllFields[FieldName], - newFieldValue?: DiffableAllFields[FieldName] +export const getSubfieldChanges = ( + fieldName: keyof DiffableAllFields, + oldFieldValue: unknown, + newFieldValue: unknown ): SubfieldChanges => { switch (fieldName) { /* diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield_changes.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield_changes.tsx index af10edbe1c599..a5d44438f161c 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield_changes.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/subfield_changes.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React from 'react'; +import React, { Fragment } from 'react'; import { EuiHorizontalRule } from '@elastic/eui'; import type { SubfieldChanges } from './types'; import { Subfield } from './subfield'; @@ -28,16 +28,15 @@ export function SubfieldChanges({ fieldName, subfieldChanges }: SubfieldChangesP const shouldShowSeparator = index !== subfieldChanges.length - 1; return ( - <> + <Fragment key={`${fieldName}${change.subfieldName}`}> <Subfield - key={change.subfieldName} fieldName={fieldName} subfieldName={change.subfieldName} oldSubfieldValue={change.oldSubfieldValue} newSubfieldValue={change.newSubfieldValue} /> {shouldShowSeparator ? <EuiHorizontalRule margin="s" size="full" /> : null} - </> + </Fragment> ); })} </> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/utils.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/utils.ts index d0673c460a1d5..8f97d3462d358 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/utils.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/utils.ts @@ -6,11 +6,8 @@ */ import stringify from 'json-stable-stringify'; -import { Version } from '../versions_picker/constants'; -import type { - DiffableAllFields, - ThreeWayDiff, -} from '../../../../../../../common/api/detection_engine'; +import { Version } from './versions_picker/constants'; +import type { ThreeWayDiff } from '../../../../../../../common/api/detection_engine'; /** * Picks the field value for a given version either from a three-way diff object or from a user-set resolved value. @@ -20,11 +17,11 @@ import type { * @param resolvedValue - A value field will be upgraded to. * @returns - The field value for the specified version */ -export function pickFieldValueForVersion<FieldName extends keyof DiffableAllFields>( +export function pickFieldValueForVersion( version: Version, - fieldThreeWayDiff: ThreeWayDiff<DiffableAllFields[FieldName]>, - resolvedValue: DiffableAllFields[FieldName] -): DiffableAllFields[FieldName] | undefined { + fieldThreeWayDiff: ThreeWayDiff<unknown>, + resolvedValue: unknown +): unknown { if (version === Version.Final) { return resolvedValue; } diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/constants.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/constants.ts new file mode 100644 index 0000000000000..04d38ed10dce2 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/constants.ts @@ -0,0 +1,58 @@ +/* + * 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 { EuiSelectOption } from '@elastic/eui'; +import * as i18n from './translations'; + +export enum Version { + Base = 'base', + Current = 'current', + Target = 'target', + Final = 'final', +} + +export enum SelectedVersions { + BaseTarget = 'base_target', + BaseCurrent = 'base_current', + BaseFinal = 'base_final', + CurrentTarget = 'current_target', + CurrentFinal = 'current_final', + TargetFinal = 'target_final', +} + +export const CURRENT_OPTIONS: EuiSelectOption[] = [ + { + value: SelectedVersions.CurrentFinal, + text: i18n.VERSION1_VS_VERSION2(i18n.CURRENT_VERSION, i18n.FINAL_VERSION), + }, + { + value: SelectedVersions.CurrentTarget, + text: i18n.VERSION1_VS_VERSION2(i18n.CURRENT_VERSION, i18n.TARGET_VERSION), + }, +]; + +export const TARGET_OPTIONS: EuiSelectOption[] = [ + { + value: SelectedVersions.TargetFinal, + text: i18n.VERSION1_VS_VERSION2(i18n.TARGET_VERSION, i18n.FINAL_VERSION), + }, +]; + +export const BASE_OPTIONS: EuiSelectOption[] = [ + { + value: SelectedVersions.BaseFinal, + text: i18n.VERSION1_VS_VERSION2(i18n.BASE_VERSION, i18n.FINAL_VERSION), + }, + { + value: SelectedVersions.BaseTarget, + text: i18n.VERSION1_VS_VERSION2(i18n.BASE_VERSION, i18n.TARGET_VERSION), + }, + { + value: SelectedVersions.BaseCurrent, + text: i18n.VERSION1_VS_VERSION2(i18n.BASE_VERSION, i18n.CURRENT_VERSION), + }, +]; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/translations.ts new file mode 100644 index 0000000000000..0f63b8be2aa92 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/translations.ts @@ -0,0 +1,56 @@ +/* + * 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'; + +export const BASE_VERSION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.baseVersionLabel', + { + defaultMessage: 'Original', + } +); + +export const CURRENT_VERSION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.currentVersionLabel', + { + defaultMessage: 'Current', + } +); + +export const TARGET_VERSION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.targetVersionLabel', + { + defaultMessage: 'Elastic update', + } +); + +export const FINAL_VERSION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versions.finalVersionLabel', + { + defaultMessage: 'Final', + } +); + +export const VERSION1_VS_VERSION2 = (version1: string, version2: string): string => { + return i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.version1VsVersion2', + { + defaultMessage: '{version1} vs {version2}', + values: { + version1, + version2, + }, + } + ); +}; + +export const VERSION_PICKER_ARIA_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.ariaLabel', + { + defaultMessage: 'Select versions to compare', + } +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/versions_picker.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/versions_picker.stories.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/versions_picker.stories.tsx rename to x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/versions_picker.stories.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/versions_picker.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/versions_picker.tsx similarity index 85% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/versions_picker.tsx rename to x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/versions_picker.tsx index 572e281ff3ae4..4710667e0b315 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/versions_picker.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/comparison_side/versions_picker/versions_picker.tsx @@ -6,6 +6,7 @@ */ import React, { useCallback, useMemo } from 'react'; +import { css } from '@emotion/css'; import { EuiSelect } from '@elastic/eui'; import type { EuiSelectOption } from '@elastic/eui'; import { BASE_OPTIONS, CURRENT_OPTIONS, TARGET_OPTIONS, SelectedVersions } from './constants'; @@ -36,6 +37,7 @@ export function VersionsPicker({ return ( <EuiSelect + className={VERSIONS_PICKER_STYLES} options={options} value={selectedVersions} onChange={handleChange} @@ -43,3 +45,9 @@ export function VersionsPicker({ /> ); } + +const VERSIONS_PICKER_STYLES = css` + // Set min-width a bit wider than default + // to make English text in narrow screens readable + min-width: 220px; +`; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_conflicts_resolver.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_conflicts_resolver.tsx deleted file mode 100644 index 6a2ad17f45f26..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_conflicts_resolver.tsx +++ /dev/null @@ -1,76 +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 React from 'react'; -import { EuiFlexGroup, EuiFlexItem, EuiSpacer, useEuiTheme } from '@elastic/eui'; -import { css } from '@emotion/css'; -import { SplitAccordion } from '../../../../../../common/components/split_accordion'; -import type { - DiffableAllFields, - RuleFieldsDiff, - ThreeWayDiff, -} from '../../../../../../../common/api/detection_engine'; -import { ThreeWayDiffConflict } from '../../../../../../../common/api/detection_engine'; -import type { FieldUpgradeState } from '../../../../model/prebuilt_rule_upgrade'; -import { ComparisonSide } from '../comparison_side/comparison_side'; -import { FinalSide } from '../final_side/final_side'; -import { FieldUpgradeConflictsResolverHeader } from './field_upgrade_conflicts_resolver_header'; -import { useDiffableRuleContext } from '../diffable_rule_context'; -import type { UpgradeableDiffableFields } from '../../../../model/prebuilt_rule_upgrade/fields'; - -interface FieldUpgradeConflictsResolverProps<FieldName extends UpgradeableDiffableFields> { - fieldName: FieldName; - fieldUpgradeState: FieldUpgradeState; - fieldThreeWayDiff: RuleFieldsDiff[FieldName]; -} - -export function FieldUpgradeConflictsResolver<FieldName extends UpgradeableDiffableFields>({ - fieldName, - fieldUpgradeState, - fieldThreeWayDiff, -}: FieldUpgradeConflictsResolverProps<FieldName>): JSX.Element { - const { euiTheme } = useEuiTheme(); - const hasConflict = fieldThreeWayDiff.conflict !== ThreeWayDiffConflict.NONE; - - const { finalDiffableRule } = useDiffableRuleContext(); - - return ( - <> - <SplitAccordion - header={ - <FieldUpgradeConflictsResolverHeader - fieldName={fieldName} - fieldUpgradeState={fieldUpgradeState} - /> - } - initialIsOpen={hasConflict} - data-test-subj="ruleUpgradePerFieldDiff" - > - <EuiFlexGroup gutterSize="s" alignItems="flexStart"> - <EuiFlexItem grow={1}> - <ComparisonSide - fieldName={fieldName} - fieldThreeWayDiff={fieldThreeWayDiff as ThreeWayDiff<DiffableAllFields[FieldName]>} - resolvedValue={finalDiffableRule[fieldName] as DiffableAllFields[FieldName]} - /> - </EuiFlexItem> - <EuiFlexItem - grow={0} - css={css` - align-self: stretch; - border-right: ${euiTheme.border.thin}; - `} - /> - <EuiFlexItem grow={1}> - <FinalSide fieldName={fieldName} /> - </EuiFlexItem> - </EuiFlexGroup> - </SplitAccordion> - <EuiSpacer size="s" /> - </> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_conflicts_resolver_header.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_conflicts_resolver_header.tsx deleted file mode 100644 index a096f025873a5..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_conflicts_resolver_header.tsx +++ /dev/null @@ -1,33 +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 React from 'react'; -import { camelCase, startCase } from 'lodash'; -import { EuiFlexGroup, EuiTitle } from '@elastic/eui'; -import { fieldToDisplayNameMap } from '../../diff_components/translations'; -import type { FieldUpgradeState } from '../../../../model/prebuilt_rule_upgrade'; -import { FieldUpgradeStateInfo } from './field_upgrade_state_info'; - -interface FieldUpgradeConflictsResolverHeaderProps { - fieldName: string; - fieldUpgradeState: FieldUpgradeState; -} - -export function FieldUpgradeConflictsResolverHeader({ - fieldName, - fieldUpgradeState, -}: FieldUpgradeConflictsResolverHeaderProps): JSX.Element { - return ( - <EuiFlexGroup direction="row" alignItems="center"> - <EuiTitle data-test-subj="ruleUpgradeFieldDiffLabel" size="xs"> - <h5>{fieldToDisplayNameMap[fieldName] ?? startCase(camelCase(fieldName))}</h5> - </EuiTitle> - - <FieldUpgradeStateInfo state={fieldUpgradeState} /> - </EuiFlexGroup> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/field_upgrade_state_info.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/field_upgrade_state_info.tsx deleted file mode 100644 index c49fc18e2c6ba..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/field_upgrade_state_info.tsx +++ /dev/null @@ -1,55 +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 React from 'react'; -import { EuiIcon, EuiText } from '@elastic/eui'; -import { FieldUpgradeState } from '../../../../../model/prebuilt_rule_upgrade'; -import * as i18n from './translations'; - -interface FieldUpgradeStateInfoProps { - state: FieldUpgradeState; -} - -export function FieldUpgradeStateInfo({ state }: FieldUpgradeStateInfoProps): JSX.Element { - switch (state) { - case FieldUpgradeState.Accepted: - return ( - <> - <EuiText color="success" size="xs"> - <EuiIcon type="checkInCircleFilled" /> -  <strong>{i18n.UPDATE_ACCEPTED}</strong> - {i18n.SEPARATOR} - {i18n.UPDATE_ACCEPTED_DESCRIPTION} - </EuiText> - </> - ); - - case FieldUpgradeState.SolvableConflict: - return ( - <> - <EuiText color="warning" size="xs"> - <EuiIcon type="warning" /> -  <strong>{i18n.SOLVABLE_CONFLICT}</strong> - {i18n.SEPARATOR} - {i18n.SOLVABLE_CONFLICT_DESCRIPTION} - </EuiText> - </> - ); - - case FieldUpgradeState.NonSolvableConflict: - return ( - <> - <EuiText color="danger" size="xs"> - <EuiIcon type="warning" /> -  <strong>{i18n.NON_SOLVABLE_CONFLICT}</strong> - {i18n.SEPARATOR} - {i18n.NON_SOLVABLE_CONFLICT_DESCRIPTION} - </EuiText> - </> - ); - } -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/translations.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/translations.tsx deleted file mode 100644 index 36349b5029a87..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/translations.tsx +++ /dev/null @@ -1,60 +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 { i18n } from '@kbn/i18n'; - -export const UPDATE_ACCEPTED = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAccepted', - { - defaultMessage: 'Update accepted', - } -); - -export const UPDATE_ACCEPTED_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.updateAcceptedDescription', - { - defaultMessage: - 'You can still make changes, please review/accept all other conflicts before updating the rule.', - } -); - -export const SOLVABLE_CONFLICT = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflict', - { - defaultMessage: 'Solved conflict', - } -); - -export const SOLVABLE_CONFLICT_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflictDescription', - { - defaultMessage: - 'We have suggested an update for this modified field, please review before accepting.', - } -); - -export const NON_SOLVABLE_CONFLICT = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflict', - { - defaultMessage: 'Solved conflict', - } -); - -export const NON_SOLVABLE_CONFLICT_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflictDescription', - { - defaultMessage: - 'We have suggested an update for this modified field, please review before accepting.', - } -); - -export const SEPARATOR = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.separator', - { - defaultMessage: ' - ', - } -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/index.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/index.ts deleted file mode 100644 index 75ff48ff541a1..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/index.ts +++ /dev/null @@ -1,8 +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. - */ - -export * from './rule_upgrade_callout'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/rule_upgrade_callout.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/rule_upgrade_callout.tsx deleted file mode 100644 index 8ab2674524952..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/rule_upgrade_callout.tsx +++ /dev/null @@ -1,76 +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 React, { useMemo } from 'react'; -import { EuiCallOut } from '@elastic/eui'; -import type { RuleUpgradeState } from '../../../../../model/prebuilt_rule_upgrade'; -import { FieldUpgradeState } from '../../../../../model/prebuilt_rule_upgrade'; -import * as i18n from './translations'; - -interface RuleUpgradeCalloutProps { - ruleUpgradeState: RuleUpgradeState; -} - -export function RuleUpgradeCallout({ ruleUpgradeState }: RuleUpgradeCalloutProps): JSX.Element { - const fieldsUpgradeState = ruleUpgradeState.fieldsUpgradeState; - const { numOfNonSolvableConflicts, numOfSolvableConflicts } = useMemo(() => { - let numOfFieldsWithNonSolvableConflicts = 0; - let numOfFieldsWithSolvableConflicts = 0; - - for (const fieldName of Object.keys(fieldsUpgradeState)) { - if (fieldsUpgradeState[fieldName] === FieldUpgradeState.NonSolvableConflict) { - numOfFieldsWithNonSolvableConflicts++; - } - - if (fieldsUpgradeState[fieldName] === FieldUpgradeState.SolvableConflict) { - numOfFieldsWithSolvableConflicts++; - } - } - - return { - numOfNonSolvableConflicts: numOfFieldsWithNonSolvableConflicts, - numOfSolvableConflicts: numOfFieldsWithSolvableConflicts, - }; - }, [fieldsUpgradeState]); - - if (numOfNonSolvableConflicts > 0) { - return ( - <EuiCallOut - title={i18n.RULE_HAS_NON_SOLVABLE_CONFLICTS(numOfNonSolvableConflicts)} - iconType="warning" - color="danger" - size="s" - > - <p>{i18n.RULE_HAS_NON_SOLVABLE_CONFLICTS_DESCRIPTION}</p> - </EuiCallOut> - ); - } - - if (numOfSolvableConflicts > 0) { - return ( - <EuiCallOut - title={i18n.RULE_HAS_SOLVABLE_CONFLICTS(numOfSolvableConflicts)} - iconType="warning" - color="warning" - size="s" - > - <p>{i18n.RULE_HAS_SOLVABLE_CONFLICTS_DESCRIPTION}</p> - </EuiCallOut> - ); - } - - return ( - <EuiCallOut - title={i18n.RULE_IS_READY_FOR_UPGRADE} - iconType="checkInCircleFilled" - color="success" - size="s" - > - <p>{i18n.RULE_IS_READY_FOR_UPGRADE_DESCRIPTION}</p> - </EuiCallOut> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/translations.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/translations.tsx deleted file mode 100644 index 319884746dbc2..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_callout/translations.tsx +++ /dev/null @@ -1,58 +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 { i18n } from '@kbn/i18n'; - -export const RULE_HAS_NON_SOLVABLE_CONFLICTS = (count: number) => - i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflicts', - { - values: { count }, - defaultMessage: - '{count} of the fields {count, plural, one {has} other {have}} an unsolved conflict. Please review and modify accordingly.', - } - ); - -export const RULE_HAS_NON_SOLVABLE_CONFLICTS_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasNonSolvableConflictsDescription', - { - defaultMessage: - 'Please provide an input for the unsolved conflict. You can also keep the current without the updates, or accept the Elastic update but lose your modifications.', - } -); - -export const RULE_HAS_SOLVABLE_CONFLICTS = (count: number) => - i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflicts', - { - values: { count }, - defaultMessage: - '{count} of the fields {count, plural, one {has} other {have}} an update conflict, please review the suggested update being updating.', - } - ); - -export const RULE_HAS_SOLVABLE_CONFLICTS_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSolvableConflictsDescription', - { - defaultMessage: - 'Please review the suggested updated version before accepting the update. You can edit and then save the field if you wish to change it.', - } -); - -export const RULE_IS_READY_FOR_UPGRADE = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgrade', - { - defaultMessage: 'The update is ready to be applied.', - } -); - -export const RULE_IS_READY_FOR_UPGRADE_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgradeDescription', - { - defaultMessage: 'All conflicts have now been reviewed and solved please update the rule.', - } -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_conflicts_resolver.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_conflicts_resolver.tsx deleted file mode 100644 index 3379cf2ab3e96..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_conflicts_resolver.tsx +++ /dev/null @@ -1,44 +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 React from 'react'; -import type { RuleUpgradeState } from '../../../../model/prebuilt_rule_upgrade'; -import { FieldUpgradeConflictsResolver } from './field_upgrade_conflicts_resolver'; -import type { NonUpgradeableDiffableFields } from '../../../../model/prebuilt_rule_upgrade/fields'; -import { isNonUpgradeableFieldName } from '../../../../model/prebuilt_rule_upgrade/fields'; - -type FieldDiffEntries<FieldsDiff, ExcludedFields extends keyof FieldsDiff = never> = Array< - [ - Exclude<keyof FieldsDiff, ExcludedFields>, - Required<FieldsDiff>[Exclude<keyof FieldsDiff, ExcludedFields>] - ] ->; - -interface RuleUpgradeConflictsResolverProps { - ruleUpgradeState: RuleUpgradeState; -} - -export function RuleUpgradeConflictsResolver({ - ruleUpgradeState, -}: RuleUpgradeConflictsResolverProps): React.ReactNode { - const fieldDiffEntries = Object.entries(ruleUpgradeState.diff.fields) as FieldDiffEntries< - typeof ruleUpgradeState.diff.fields - >; - - const fields = fieldDiffEntries.filter(([fieldName]) => { - return isNonUpgradeableFieldName(fieldName) === false; - }) as FieldDiffEntries<typeof ruleUpgradeState.diff.fields, NonUpgradeableDiffableFields>; - - return fields.map(([fieldName, fieldDiff]) => ( - <FieldUpgradeConflictsResolver - key={fieldName} - fieldName={fieldName} - fieldUpgradeState={ruleUpgradeState.fieldsUpgradeState[fieldName]} - fieldThreeWayDiff={fieldDiff} - /> - )); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_info_bar.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_info_bar.tsx deleted file mode 100644 index 970f04f383274..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/rule_upgrade_info_bar.tsx +++ /dev/null @@ -1,47 +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 React from 'react'; -import type { RuleUpgradeState } from '../../../../model/prebuilt_rule_upgrade'; -import { - UtilityBar, - UtilityBarGroup, - UtilityBarSection, - UtilityBarText, -} from '../../../../../../common/components/utility_bar'; -import * as i18n from './translations'; - -interface UpgradeInfoBarProps { - ruleUpgradeState: RuleUpgradeState; -} - -export function RuleUpgradeInfoBar({ ruleUpgradeState }: UpgradeInfoBarProps): JSX.Element { - const numOfFieldsWithUpdates = ruleUpgradeState.diff.num_fields_with_updates; - const numOfConflicts = ruleUpgradeState.diff.num_fields_with_conflicts; - - return ( - <UtilityBar> - <UtilityBarSection> - <UtilityBarGroup> - <UtilityBarText dataTestSubj="showingRules"> - {i18n.NUM_OF_FIELDS_WITH_UPDATES(numOfFieldsWithUpdates)} - </UtilityBarText> - </UtilityBarGroup> - <UtilityBarGroup> - <UtilityBarText dataTestSubj="showingRules"> - {i18n.NUM_OF_CONFLICTS(numOfConflicts)} - </UtilityBarText> - </UtilityBarGroup> - </UtilityBarSection> - <UtilityBarSection> - <UtilityBarGroup> - <i18n.RuleUpgradeHelper /> - </UtilityBarGroup> - </UtilityBarSection> - </UtilityBar> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/side_header.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/side_header.tsx deleted file mode 100644 index 574e3f526f856..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/side_header.tsx +++ /dev/null @@ -1,29 +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 { PropsWithChildren } from 'react'; -import React from 'react'; -import { EuiFlexGroup, EuiFlexItem, EuiHorizontalRule, useEuiTheme } from '@elastic/eui'; -import { css } from '@emotion/css'; - -export function SideHeader({ children }: PropsWithChildren<{}>) { - const { euiTheme } = useEuiTheme(); - - return ( - <> - <EuiFlexGroup - alignItems="center" - css={css` - height: ${euiTheme.size.xxl}; - `} - > - <EuiFlexItem>{children}</EuiFlexItem> - </EuiFlexGroup> - <EuiHorizontalRule margin="s" /> - </> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/translations.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/translations.tsx deleted file mode 100644 index 27172cb98755c..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/translations.tsx +++ /dev/null @@ -1,60 +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 React from 'react'; -import { EuiLink } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { useKibana } from '../../../../../../common/lib/kibana/kibana_react'; - -export const NUM_OF_FIELDS_WITH_UPDATES = (count: number) => ( - <FormattedMessage - id="xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.fieldsWithUpdates" - defaultMessage="Upgrade has {count} {count, plural, one {field} other {fields}}" - values={{ count: <strong>{count}</strong> }} - /> -); - -export const NUM_OF_CONFLICTS = (count: number) => ( - <FormattedMessage - id="xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.numOfConflicts" - defaultMessage="{count} {count, plural, one {conflict} other {conflicts}}" - values={{ count: <strong>{count}</strong> }} - /> -); - -const UPGRADE_RULES_DOCS_LINK = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.updateYourRulesDocsLink', - { - defaultMessage: 'update your rules', - } -); - -export function RuleUpgradeHelper(): JSX.Element { - const { - docLinks: { - links: { - securitySolution: { manageDetectionRules }, - }, - }, - } = useKibana().services; - const manageDetectionRulesSnoozeSection = `${manageDetectionRules}#edit-rules-settings`; - - return ( - <FormattedMessage - id="xpack.securitySolution.detectionEngine.rules.upgradeRules.ruleUpgradeHelper" - defaultMessage="Understand how to {docsLink}." - values={{ - docsLink: ( - <EuiLink href={manageDetectionRulesSnoozeSection} target="_blank"> - {UPGRADE_RULES_DOCS_LINK} - </EuiLink> - ), - }} - /> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/diffable_rule_context.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/diffable_rule_context.tsx deleted file mode 100644 index 4210b394c7618..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/diffable_rule_context.tsx +++ /dev/null @@ -1,50 +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 React, { createContext, useContext } from 'react'; -import type { DiffableRule } from '../../../../../../common/api/detection_engine'; -import { invariant } from '../../../../../../common/utils/invariant'; -import type { SetRuleFieldResolvedValueFn } from '../../../model/prebuilt_rule_upgrade/set_rule_field_resolved_value'; - -interface DiffableRuleContextType { - finalDiffableRule: DiffableRule; - setRuleFieldResolvedValue: SetRuleFieldResolvedValueFn; -} - -const DiffableRuleContext = createContext<DiffableRuleContextType | null>(null); - -interface DiffableRuleContextProviderProps { - finalDiffableRule: DiffableRule; - setRuleFieldResolvedValue: SetRuleFieldResolvedValueFn; - children: React.ReactNode; -} - -export function DiffableRuleContextProvider({ - finalDiffableRule, - setRuleFieldResolvedValue, - children, -}: DiffableRuleContextProviderProps) { - const contextValue = { - finalDiffableRule, - setRuleFieldResolvedValue, - }; - - return ( - <DiffableRuleContext.Provider value={contextValue}>{children}</DiffableRuleContext.Provider> - ); -} - -export function useDiffableRuleContext() { - const context = useContext(DiffableRuleContext); - - invariant( - context !== null, - 'useDiffableRuleContext must be used inside a DiffableRuleContextProvider' - ); - - return context; -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side.tsx new file mode 100644 index 0000000000000..8a6c312d74db0 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side.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 React from 'react'; +import { FieldEditFormContextProvider } from '../context/field_edit_form_context'; +import { FieldFinalSideContent } from './field_final_side_content'; +import { FieldFinalSideHeader } from './field_final_side_header'; + +export function FieldFinalSide(): JSX.Element { + return ( + <FieldEditFormContextProvider> + <FieldFinalSideHeader /> + <FieldFinalSideContent /> + </FieldEditFormContextProvider> + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_content.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_content.tsx new file mode 100644 index 0000000000000..66fcee8547d7f --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_content.tsx @@ -0,0 +1,48 @@ +/* + * 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 { EuiButtonEmpty, EuiFlexGroup } from '@elastic/eui'; +import { FieldFinalReadOnly } from '../../final_readonly'; +import { FieldFinalEdit } from '../../final_edit'; +import { assertUnreachable } from '../../../../../../../../common/utility_types'; +import { + FieldFinalSideMode, + useFieldUpgradeContext, +} from '../../rule_upgrade/field_upgrade_context'; +import * as i18n from './translations'; + +export function FieldFinalSideContent(): JSX.Element { + const { rightSideMode, setEditMode, setReadOnlyMode } = useFieldUpgradeContext(); + + switch (rightSideMode) { + case FieldFinalSideMode.Readonly: + return ( + <> + <EuiFlexGroup justifyContent="flexEnd"> + <EuiButtonEmpty iconType="pencil" onClick={setEditMode}> + {i18n.EDIT} + </EuiButtonEmpty> + </EuiFlexGroup> + <FieldFinalReadOnly /> + </> + ); + case FieldFinalSideMode.Edit: + return ( + <> + <EuiFlexGroup justifyContent="flexEnd"> + <EuiButtonEmpty iconType="cross" onClick={setReadOnlyMode}> + {i18n.CANCEL} + </EuiButtonEmpty> + </EuiFlexGroup> + <FieldFinalEdit /> + </> + ); + default: + return assertUnreachable(rightSideMode); + } +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_header.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_header.tsx new file mode 100644 index 0000000000000..0e70689b7c9db --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_header.tsx @@ -0,0 +1,87 @@ +/* + * 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 { PropsWithChildren } from 'react'; +import React, { useCallback } from 'react'; +import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiTitle } from '@elastic/eui'; +import type { DiffableAllFields } from '../../../../../../../../common/api/detection_engine'; +import { FieldUpgradeSideHeader } from '../../field_upgrade_side_header'; +import { assertUnreachable } from '../../../../../../../../common/utility_types'; +import { + FieldFinalSideMode, + useFieldUpgradeContext, +} from '../../rule_upgrade/field_upgrade_context'; +import { useFieldEditFormContext } from '../context/field_edit_form_context'; +import { FieldFinalSideHelpInfo } from './field_final_side_help_info'; +import * as i18n from './translations'; + +export function FieldFinalSideHeader(): JSX.Element { + const { fieldName, hasConflict, rightSideMode, finalDiffableRule, setRuleFieldResolvedValue } = + useFieldUpgradeContext(); + const { form } = useFieldEditFormContext(); + + const handleAccept = useCallback( + () => + setRuleFieldResolvedValue({ + ruleId: finalDiffableRule.rule_id, + fieldName: fieldName as keyof DiffableAllFields, + resolvedValue: finalDiffableRule[fieldName] as DiffableAllFields[typeof fieldName], + }), + [finalDiffableRule, fieldName, setRuleFieldResolvedValue] + ); + const handleSave = useCallback(() => form?.submit(), [form]); + + switch (rightSideMode) { + case FieldFinalSideMode.Readonly: + return ( + <FieldUpgradeSideHeader> + <StaticHeaderContent> + {hasConflict && ( + <EuiButton iconType="checkInCircleFilled" size="s" onClick={handleAccept}> + {i18n.ACCEPT} + </EuiButton> + )} + </StaticHeaderContent> + </FieldUpgradeSideHeader> + ); + case FieldFinalSideMode.Edit: + return ( + <FieldUpgradeSideHeader> + <StaticHeaderContent> + <EuiButton + iconType="checkInCircleFilled" + size="s" + disabled={!form?.isValid} + onClick={handleSave} + > + {hasConflict ? i18n.SAVE_AND_ACCEPT : i18n.SAVE} + </EuiButton> + </StaticHeaderContent> + </FieldUpgradeSideHeader> + ); + default: + return assertUnreachable(rightSideMode); + } +} + +function StaticHeaderContent({ children }: PropsWithChildren<{}>): JSX.Element { + return ( + <EuiFlexGroup alignItems="stretch" justifyContent="center"> + <EuiFlexItem> + <EuiFlexGroup alignItems="center"> + <EuiTitle size="xxs"> + <h3> + {i18n.FINAL_UPDATE} + <FieldFinalSideHelpInfo /> + </h3> + </EuiTitle> + </EuiFlexGroup> + </EuiFlexItem> + <EuiFlexItem grow={false}>{children}</EuiFlexItem> + </EuiFlexGroup> + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_help_info.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_help_info.tsx new file mode 100644 index 0000000000000..e3e0b38da7d63 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/field_final_side_help_info.tsx @@ -0,0 +1,43 @@ +/* + * 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 useToggle from 'react-use/lib/useToggle'; +import { EuiPopover, EuiText, EuiButtonIcon } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; + +/** + * Theme doesn't expose width variables. Using provided size variables will require + * multiplying it by another magic constant. + * + * 320px width looks + * like a [commonly used width in EUI](https://github.com/search?q=repo%3Aelastic%2Feui%20320&type=code). + */ +const POPOVER_WIDTH = 320; + +export function FieldFinalSideHelpInfo(): JSX.Element { + const [isPopoverOpen, togglePopover] = useToggle(false); + + const button = ( + <EuiButtonIcon + iconType="questionInCircle" + onClick={togglePopover} + aria-label="Open help popover" + /> + ); + + return ( + <EuiPopover button={button} isOpen={isPopoverOpen} closePopover={togglePopover}> + <EuiText style={{ width: POPOVER_WIDTH }} size="s"> + <FormattedMessage + id="xpack.securitySolution.detectionEngine.rules.upgradeRules.finalSide.upgradeHelpText" + defaultMessage="Choose field values used in the upgraded rule. " + /> + </EuiText> + </EuiPopover> + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_field_edit_component_props.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/rule_field_edit_component_props.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_field_edit_component_props.ts rename to x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/rule_field_edit_component_props.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_field_edit_form_wrapper.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/rule_field_edit_form_wrapper.tsx similarity index 81% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_field_edit_form_wrapper.tsx rename to x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/rule_field_edit_form_wrapper.tsx index a5f7eedc6114c..ab12f62cfa27b 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/rule_field_edit_form_wrapper.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/rule_field_edit_form_wrapper.tsx @@ -6,7 +6,6 @@ */ import React, { useCallback, useEffect } from 'react'; -import { EuiButtonEmpty, EuiFlexGroup } from '@elastic/eui'; import { extractValidationMessages } from '../../../../../../rule_creation/logic/extract_validation_messages'; import type { FormWithWarningsSubmitHandler } from '../../../../../../../common/hooks/use_form_with_warnings'; import { useFormWithWarnings } from '../../../../../../../common/hooks/use_form_with_warnings'; @@ -16,9 +15,8 @@ import type { DiffableAllFields, DiffableRule, } from '../../../../../../../../common/api/detection_engine'; -import { useFinalSideContext } from '../../final_side/final_side_context'; -import { useDiffableRuleContext } from '../../diffable_rule_context'; -import * as i18n from '../../translations'; +import { useFieldUpgradeContext } from '../../rule_upgrade/field_upgrade_context'; +import { useFieldEditFormContext } from '../context/field_edit_form_context'; import type { RuleFieldEditComponentProps } from './rule_field_edit_component_props'; import { useConfirmValidationErrorsModal } from '../../../../../../../common/hooks/use_confirm_validation_errors_modal'; import { @@ -55,8 +53,9 @@ export function RuleFieldEditFormWrapper({ deserializer, serializer, }: RuleFieldEditFormWrapperProps) { - const { fieldName, setReadOnlyMode } = useFinalSideContext(); - const { finalDiffableRule, setRuleFieldResolvedValue } = useDiffableRuleContext(); + const { registerForm } = useFieldEditFormContext(); + const { fieldName, finalDiffableRule, setReadOnlyMode, setRuleFieldResolvedValue } = + useFieldUpgradeContext(); const deserialize = useCallback( (defaultValue: FormData): FormData => @@ -104,6 +103,8 @@ export function RuleFieldEditFormWrapper({ }, }); + useEffect(() => registerForm(form), [registerForm, form]); + // form.isValid has `undefined` value until all fields are dirty. // Run the validation upfront to visualize form validity state. useEffect(() => { @@ -111,24 +112,14 @@ export function RuleFieldEditFormWrapper({ }, [form]); return ( - <> - <EuiFlexGroup justifyContent="flexEnd"> - <EuiButtonEmpty iconType="cross" onClick={setReadOnlyMode}> - {i18n.CANCEL_BUTTON_LABEL} - </EuiButtonEmpty> - <EuiButtonEmpty iconType="save" onClick={form.submit} disabled={!form.isValid}> - {i18n.SAVE_BUTTON_LABEL} - </EuiButtonEmpty> - </EuiFlexGroup> + <Form form={form}> {modal} - <Form form={form}> - <FieldComponent - finalDiffableRule={finalDiffableRule} - setFieldValue={form.setFieldValue} - resetForm={form.reset} - /> - </Form> - </> + <FieldComponent + finalDiffableRule={finalDiffableRule} + setFieldValue={form.setFieldValue} + resetForm={form.reset} + /> + </Form> ); } diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/translations.ts new file mode 100644 index 0000000000000..4c44629bf4268 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/components/translations.ts @@ -0,0 +1,50 @@ +/* + * 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'; + +export const FINAL_UPDATE = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.finalUpdate', + { + defaultMessage: 'Final update', + } +); + +export const SAVE = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.field.save', + { + defaultMessage: 'Save', + } +); + +export const ACCEPT = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.field.accept', + { + defaultMessage: 'Accept', + } +); + +export const SAVE_AND_ACCEPT = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.field.saveAndAccept', + { + defaultMessage: 'Save and accept', + } +); + +export const CANCEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.cancelButtonLabel', + { + defaultMessage: 'Cancel', + } +); + +export const EDIT = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.editButtonLabel', + { + defaultMessage: 'Edit', + } +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/context/field_edit_form_context.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/context/field_edit_form_context.tsx new file mode 100644 index 0000000000000..ba722107e8b9e --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/context/field_edit_form_context.tsx @@ -0,0 +1,75 @@ +/* + * 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, { + createContext, + useContext, + type PropsWithChildren, + useState, + useCallback, + useRef, +} from 'react'; +import type { FormHook } from '../../../../../../../shared_imports'; +import { invariant } from '../../../../../../../../common/utils/invariant'; + +type FieldEditFormCleanUp = () => void; + +interface FieldEditFormContextType { + form: FormHook | undefined; + registerForm: (form: FormHook) => FieldEditFormCleanUp; +} + +const FieldEditFormContext = createContext<FieldEditFormContextType | null>(null); + +/** + * FieldEditFormContext helps to encapsulate form related logic in `field_final_side` folder. + * + * The only purpose is to obtain the recent form handler and provide it for consumers in + * in the `field_final_side` folder. + */ +export function FieldEditFormContextProvider({ children }: PropsWithChildren<{}>) { + // Using reference reduces unnecessary re-renders though we need to re-render children + // whenever something in the form changes like validity state to be able to reflect that changes. + const formRef = useRef<FormHook | undefined>(); + // Setting the state re-renders the component and its children. The state value is ignored since + // we use a ref here. In that case it doesn't re-render components upon form cleanup. In that case + // the edit component disappears and we aren't interested in the form's state anymore. + const [, setForm] = useState<FormHook | undefined>(); + const registerForm = useCallback( + (formToRegister: FormHook) => { + // Guard against subtle bugs. In attempt of using two forms throw an exception. + if (formRef.current) { + throw new Error( + 'Unexpected new form registration while the old one was not cleaned. Do you properly cleanup form by returning registerForm result from useEffect.' + ); + } + + formRef.current = formToRegister; + setForm(formToRegister); + + return () => (formRef.current = undefined); + }, + [formRef, setForm] + ); + + return ( + <FieldEditFormContext.Provider value={{ form: formRef.current, registerForm }}> + {children} + </FieldEditFormContext.Provider> + ); +} + +export function useFieldEditFormContext() { + const context = useContext(FieldEditFormContext); + + invariant( + context !== null, + 'useFieldEditFormContext must be used inside a FieldEditFormProvider' + ); + + return context; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/index.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/index.ts new file mode 100644 index 0000000000000..bcab35a1c27b1 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_final_side/index.ts @@ -0,0 +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. + */ + +export * from './components/field_final_side'; +export type * from './components/rule_field_edit_component_props'; +export * from './components/rule_field_edit_form_wrapper'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_upgrade_side_header.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_upgrade_side_header.tsx new file mode 100644 index 0000000000000..3e0e60d3c4edf --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/field_upgrade_side_header.tsx @@ -0,0 +1,29 @@ +/* + * 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 { PropsWithChildren } from 'react'; +import React from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiHorizontalRule, useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/css'; + +export function FieldUpgradeSideHeader({ children }: PropsWithChildren<{}>) { + const { euiTheme } = useEuiTheme(); + + return ( + <> + <EuiFlexGroup + alignItems="center" + css={css` + height: ${euiTheme.size.xxl}; + `} + > + <EuiFlexItem>{children}</EuiFlexItem> + </EuiFlexGroup> + <EuiHorizontalRule margin="s" /> + </> + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/common_rule_field_edit.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/common_rule_field_edit.tsx index 3f10ce014d82e..0b8668e90a903 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/common_rule_field_edit.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/common_rule_field_edit.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { RuleFieldEditFormWrapper } from './fields/rule_field_edit_form_wrapper'; +import { RuleFieldEditFormWrapper } from '../field_final_side'; import type { UpgradeableCommonFields } from '../../../../model/prebuilt_rule_upgrade/fields'; import { BuildingBlockEdit, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/field_final_edit.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/field_final_edit.tsx new file mode 100644 index 0000000000000..542e9aabcddd2 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/field_final_edit.tsx @@ -0,0 +1,64 @@ +/* + * 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 { assertUnreachable } from '../../../../../../../common/utility_types'; +import type { + UpgradeableCustomQueryFields, + UpgradeableSavedQueryFields, + UpgradeableThreatMatchFields, + UpgradeableThresholdFields, + UpgradeableNewTermsFields, + UpgradeableEqlFields, + UpgradeableEsqlFields, + UpgradeableMachineLearningFields, +} from '../../../../model/prebuilt_rule_upgrade/fields'; +import { isCommonFieldName } from '../../../../model/prebuilt_rule_upgrade/fields'; +import { useFieldUpgradeContext } from '../rule_upgrade/field_upgrade_context'; +import { CommonRuleFieldEdit } from './common_rule_field_edit'; +import { CustomQueryRuleFieldEdit } from './custom_query_rule_field_edit'; +import { SavedQueryRuleFieldEdit } from './saved_query_rule_field_edit'; +import { ThreatMatchRuleFieldEdit } from './threat_match_rule_field_edit'; +import { ThresholdRuleFieldEdit } from './threshold_rule_field_edit'; +import { NewTermsRuleFieldEdit } from './new_terms_rule_field_edit'; +import { EqlRuleFieldEdit } from './eql_rule_field_edit'; +import { EsqlRuleFieldEdit } from './esql_rule_field_edit'; +import { MachineLearningRuleFieldEdit } from './machine_learning_rule_field_edit'; + +export function FieldFinalEdit(): JSX.Element { + const { + fieldName, + finalDiffableRule: { type: ruleType }, + } = useFieldUpgradeContext(); + + if (isCommonFieldName(fieldName)) { + return <CommonRuleFieldEdit fieldName={fieldName} />; + } + + switch (ruleType) { + case 'query': + return <CustomQueryRuleFieldEdit fieldName={fieldName as UpgradeableCustomQueryFields} />; + case 'saved_query': + return <SavedQueryRuleFieldEdit fieldName={fieldName as UpgradeableSavedQueryFields} />; + case 'eql': + return <EqlRuleFieldEdit fieldName={fieldName as UpgradeableEqlFields} />; + case 'esql': + return <EsqlRuleFieldEdit fieldName={fieldName as UpgradeableEsqlFields} />; + case 'threat_match': + return <ThreatMatchRuleFieldEdit fieldName={fieldName as UpgradeableThreatMatchFields} />; + case 'threshold': + return <ThresholdRuleFieldEdit fieldName={fieldName as UpgradeableThresholdFields} />; + case 'machine_learning': + return ( + <MachineLearningRuleFieldEdit fieldName={fieldName as UpgradeableMachineLearningFields} /> + ); + case 'new_terms': + return <NewTermsRuleFieldEdit fieldName={fieldName as UpgradeableNewTermsFields} />; + default: + return assertUnreachable(ruleType); + } +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_adapter.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_adapter.tsx index 6dfd38d5676d3..3100e5c21f8bb 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_adapter.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_adapter.tsx @@ -11,7 +11,7 @@ import { getTermsAggregationFields } from '../../../../../../../rule_creation_ui import { isEsqlRule, isMlRule } from '../../../../../../../../../common/detection_engine/utils'; import { useAllEsqlRuleFields } from '../../../../../../../rule_creation_ui/hooks'; import { useMLRuleConfig } from '../../../../../../../../common/components/ml/hooks/use_ml_rule_config'; -import type { RuleFieldEditComponentProps } from '../rule_field_edit_component_props'; +import type { RuleFieldEditComponentProps } from '../../../field_final_side'; import { useDiffableRuleDataView } from '../hooks/use_diffable_rule_data_view'; import * as i18n from './translations'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_form.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_form.tsx index f6ed2e5c657c7..e01db6f428887 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_form.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/alert_suppression/suppression_edit_form.tsx @@ -17,7 +17,7 @@ import { AlertSuppressionDurationType } from '../../../../../../../../detections import { type FormData } from '../../../../../../../../shared_imports'; import { DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY } from '../../../../../../../../../common/detection_engine/constants'; import { type AlertSuppression } from '../../../../../../../../../common/api/detection_engine'; -import { RuleFieldEditFormWrapper } from '../rule_field_edit_form_wrapper'; +import { RuleFieldEditFormWrapper } from '../../../field_final_side'; import { AlertSuppressionEditAdapter } from './suppression_edit_adapter'; import { alertSuppressionFormSchema, type AlertSuppressionFormData } from './form_schema'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit.tsx index 2f697288221cf..7ff2b7fdbd6fd 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit.tsx @@ -11,7 +11,7 @@ import { css } from '@emotion/css'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { DataSourceType } from '../../../../../../../../../common/api/detection_engine/prebuilt_rules'; import { UseMultiFields } from '../../../../../../../../shared_imports'; -import type { RuleFieldEditComponentProps } from '../rule_field_edit_component_props'; +import type { RuleFieldEditComponentProps } from '../../../field_final_side'; import { IndexPatternField } from './index_pattern_edit'; import { DataSourceInfoText } from './data_source_info_text'; import { DataViewField } from './data_view_field'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit_form.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit_form.tsx index e30b713908a02..ec9e49bb7ab17 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit_form.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_edit_form.tsx @@ -16,7 +16,7 @@ import { FIELD_TYPES, } from '../../../../../../../../shared_imports'; import { DataSourceType } from '../../../../../../../../../common/api/detection_engine/prebuilt_rules'; -import { RuleFieldEditFormWrapper } from '../rule_field_edit_form_wrapper'; +import { RuleFieldEditFormWrapper } from '../../../field_final_side'; import { DataSourceEdit } from './data_source_edit'; import { INDEX_HELPER_TEXT } from '../../../../../../../rule_creation_ui/components/step_define_rule/translations'; import * as i18n from './translations'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_type_selector_field.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_type_selector_field.tsx index 9e24fd6c56c77..3562e7de82d66 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_type_selector_field.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/data_source/data_source_type_selector_field.tsx @@ -10,7 +10,7 @@ import type { EuiButtonGroupOptionProps } from '@elastic/eui'; import { EuiButtonGroup } from '@elastic/eui'; import { DataSourceType } from '../../../../../../../../../common/api/detection_engine/prebuilt_rules'; import type { FieldHook } from '../../../../../../../../shared_imports'; -import type { ResetFormFn } from '../rule_field_edit_component_props'; +import type { ResetFormFn } from '../../../field_final_side'; import * as i18n from './translations'; interface DataSourceTypeSelectorFieldProps { diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_adapter.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_adapter.tsx index cea9b9308c0df..73e7c553c9127 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_adapter.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_adapter.tsx @@ -8,7 +8,7 @@ import React from 'react'; import type { DataViewBase } from '@kbn/es-query'; import { EqlQueryEdit } from '../../../../../../../rule_creation/components/eql_query_edit'; -import type { RuleFieldEditComponentProps } from '../rule_field_edit_component_props'; +import type { RuleFieldEditComponentProps } from '../../../field_final_side'; import { useDiffableRuleDataView } from '../hooks/use_diffable_rule_data_view'; export function EqlQueryEditAdapter({ diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_form.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_form.tsx index 4dd953006d39c..f357504af76f0 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_form.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/eql_query/eql_query_edit_form.tsx @@ -10,7 +10,7 @@ import type { Filter } from '@kbn/es-query'; import type { EqlOptions } from '@kbn/timelines-plugin/common'; import type { FieldValueQueryBar } from '../../../../../../../rule_creation_ui/components/query_bar_field'; import type { FormData, FormSchema } from '../../../../../../../../shared_imports'; -import { RuleFieldEditFormWrapper } from '../rule_field_edit_form_wrapper'; +import { RuleFieldEditFormWrapper } from '../../../field_final_side'; import { type DiffableRule, RuleEqlQuery, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_adapter.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_adapter.tsx index faf43d5b88b22..a3b1faf667d99 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_adapter.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_adapter.tsx @@ -7,8 +7,8 @@ import React from 'react'; import type { DataViewBase } from '@kbn/es-query'; +import type { RuleFieldEditComponentProps } from '../../../field_final_side'; import { EsqlQueryEdit } from '../../../../../../../rule_creation/components/esql_query_edit'; -import type { RuleFieldEditComponentProps } from '../rule_field_edit_component_props'; import { useDiffableRuleDataView } from '../hooks/use_diffable_rule_data_view'; export function EsqlQueryEditAdapter({ diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_form.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_form.tsx index a156ef747aedc..dd482b6962d8a 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_form.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/esql_query/esql_query_edit_form.tsx @@ -7,7 +7,7 @@ import React from 'react'; import type { FormData, FormSchema } from '../../../../../../../../shared_imports'; -import { RuleFieldEditFormWrapper } from '../rule_field_edit_form_wrapper'; +import { RuleFieldEditFormWrapper } from '../../../field_final_side'; import type { FieldValueQueryBar } from '../../../../../../../rule_creation_ui/components/query_bar_field'; import { type DiffableRule, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit.tsx index 27415855adfbe..f377e17d8e23b 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit.tsx @@ -18,7 +18,7 @@ import type { DiffableRule } from '../../../../../../../../../common/api/detecti import type { SetRuleQuery } from '../../../../../../../../detections/containers/detection_engine/rules/use_rule_from_timeline'; import { useRuleFromTimeline } from '../../../../../../../../detections/containers/detection_engine/rules/use_rule_from_timeline'; import { useGetSavedQuery } from '../../../../../../../../detections/pages/detection_engine/rules/use_get_saved_query'; -import type { RuleFieldEditComponentProps } from '../rule_field_edit_component_props'; +import type { RuleFieldEditComponentProps } from '../../../field_final_side'; import { useDiffableRuleDataView } from '../hooks/use_diffable_rule_data_view'; export function KqlQueryEdit({ diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit_form.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit_form.tsx index 98ffc4b6bfdf0..a02fa9b9fd9d4 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit_form.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/kql_query/kql_query_edit_form.tsx @@ -9,8 +9,8 @@ import React from 'react'; import type { Type } from '@kbn/securitysolution-io-ts-alerting-types'; import type { FormData, FormSchema } from '../../../../../../../../shared_imports'; import { schema } from '../../../../../../../rule_creation_ui/components/step_define_rule/schema'; -import { RuleFieldEditFormWrapper } from '../rule_field_edit_form_wrapper'; import type { FieldValueQueryBar } from '../../../../../../../rule_creation_ui/components/query_bar_field'; +import { RuleFieldEditFormWrapper } from '../../../field_final_side'; import { KqlQueryLanguage, KqlQueryType, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/suppression_edit_form.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/suppression_edit_form.tsx index af9f9db00cff2..0d4be2e421a5c 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/suppression_edit_form.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/fields/threshold_alert_suppression/suppression_edit_form.tsx @@ -13,12 +13,12 @@ import { import { ALERT_SUPPRESSION_DURATION_FIELD_NAME } from '../../../../../../../rule_creation/components/alert_suppression_edit'; import { type FormData } from '../../../../../../../../shared_imports'; import type { ThresholdAlertSuppression } from '../../../../../../../../../common/api/detection_engine'; -import { RuleFieldEditFormWrapper } from '../rule_field_edit_form_wrapper'; +import { RuleFieldEditFormWrapper } from '../../../field_final_side'; import { thresholdAlertSuppressionFormSchema, type ThresholdAlertSuppressionFormData, } from './form_schema'; -import type { RuleFieldEditComponentProps } from '../rule_field_edit_component_props'; +import type { RuleFieldEditComponentProps } from '../../../field_final_side'; export function ThresholdAlertSuppressionEditForm(): JSX.Element { return ( diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/final_edit.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/final_edit.tsx deleted file mode 100644 index 13bc3daa56037..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/final_edit.tsx +++ /dev/null @@ -1,65 +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 React from 'react'; -import { assertUnreachable } from '../../../../../../../common/utility_types'; -import { useDiffableRuleContext } from '../diffable_rule_context'; -import { CommonRuleFieldEdit } from './common_rule_field_edit'; -import { CustomQueryRuleFieldEdit } from './custom_query_rule_field_edit'; -import { SavedQueryRuleFieldEdit } from './saved_query_rule_field_edit'; -import { ThreatMatchRuleFieldEdit } from './threat_match_rule_field_edit'; -import { ThresholdRuleFieldEdit } from './threshold_rule_field_edit'; -import { NewTermsRuleFieldEdit } from './new_terms_rule_field_edit'; -import type { - UpgradeableCustomQueryFields, - UpgradeableSavedQueryFields, - UpgradeableThreatMatchFields, - UpgradeableThresholdFields, - UpgradeableNewTermsFields, - UpgradeableEqlFields, - UpgradeableEsqlFields, - UpgradeableMachineLearningFields, -} from '../../../../model/prebuilt_rule_upgrade/fields'; -import { isCommonFieldName } from '../../../../model/prebuilt_rule_upgrade/fields'; -import { useFinalSideContext } from '../final_side/final_side_context'; -import { EqlRuleFieldEdit } from './eql_rule_field_edit'; -import { EsqlRuleFieldEdit } from './esql_rule_field_edit'; -import { MachineLearningRuleFieldEdit } from './machine_learning_rule_field_edit'; - -export function FinalEdit() { - const { finalDiffableRule } = useDiffableRuleContext(); - const { type } = finalDiffableRule; - - const { fieldName } = useFinalSideContext(); - - if (isCommonFieldName(fieldName)) { - return <CommonRuleFieldEdit fieldName={fieldName} />; - } - - switch (type) { - case 'query': - return <CustomQueryRuleFieldEdit fieldName={fieldName as UpgradeableCustomQueryFields} />; - case 'saved_query': - return <SavedQueryRuleFieldEdit fieldName={fieldName as UpgradeableSavedQueryFields} />; - case 'eql': - return <EqlRuleFieldEdit fieldName={fieldName as UpgradeableEqlFields} />; - case 'esql': - return <EsqlRuleFieldEdit fieldName={fieldName as UpgradeableEsqlFields} />; - case 'threat_match': - return <ThreatMatchRuleFieldEdit fieldName={fieldName as UpgradeableThreatMatchFields} />; - case 'threshold': - return <ThresholdRuleFieldEdit fieldName={fieldName as UpgradeableThresholdFields} />; - case 'machine_learning': - return ( - <MachineLearningRuleFieldEdit fieldName={fieldName as UpgradeableMachineLearningFields} /> - ); - case 'new_terms': - return <NewTermsRuleFieldEdit fieldName={fieldName as UpgradeableNewTermsFields} />; - default: - return assertUnreachable(type); - } -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/index.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/index.ts new file mode 100644 index 0000000000000..cc252595beee6 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_edit/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 * from './field_final_edit'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/empty_field_value_placeholder.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/empty_field_value_placeholder.tsx new file mode 100644 index 0000000000000..4914d1b7226c2 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/empty_field_value_placeholder.tsx @@ -0,0 +1,18 @@ +/* + * 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 { EuiText } from '@elastic/eui'; +import * as i18n from './translations'; + +export function EmptyFieldValuePlaceholder() { + return ( + <EuiText size="s" color="subdued"> + {`<${i18n.EMPTY_FIELD_VALUE_PLACEHOLDER}>`} + </EuiText> + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/index.tsx new file mode 100644 index 0000000000000..0777bdb8d906d --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/index.tsx @@ -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 { EmptyFieldValuePlaceholder } from './empty_field_value_placeholder'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/translations.ts new file mode 100644 index 0000000000000..52486dbefb1de --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/empty_field_value_placeholder/translations.ts @@ -0,0 +1,15 @@ +/* + * 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'; + +export const EMPTY_FIELD_VALUE_PLACEHOLDER = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.emptyFieldValuePlaceholder', + { + defaultMessage: 'Field value is empty', + } +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/field_final_readonly.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/field_final_readonly.tsx new file mode 100644 index 0000000000000..33abbb4792946 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/field_final_readonly.tsx @@ -0,0 +1,106 @@ +/* + * 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, { useMemo } from 'react'; +import { DiffableCommonFields } from '../../../../../../../common/api/detection_engine'; +import type { + DiffableCustomQueryFields, + DiffableSavedQueryFields, + DiffableEqlFields, + DiffableThreatMatchFields, + DiffableThresholdFields, + DiffableNewTermsFields, + DiffableEsqlFields, + DiffableMachineLearningFields, +} from '../../../../../../../common/api/detection_engine'; +import { assertUnreachable } from '../../../../../../../common/utility_types'; +import { useFieldUpgradeContext } from '../rule_upgrade/field_upgrade_context'; +import { CustomQueryRuleFieldReadOnly } from './custom_query_rule_field_readonly'; +import { SavedQueryRuleFieldReadOnly } from './saved_query_rule_field_readonly'; +import { EqlRuleFieldReadOnly } from './eql_rule_field_readonly'; +import { EsqlRuleFieldReadOnly } from './esql_rule_field_readonly'; +import { ThreatMatchRuleFieldReadOnly } from './threat_match_rule_field_readonly'; +import { ThresholdRuleFieldReadOnly } from './threshold_rule_field_readonly'; +import { MachineLearningRuleFieldReadOnly } from './machine_learning_rule_field_readonly'; +import { NewTermsRuleFieldReadOnly } from './new_terms_rule_field_readonly'; +import { CommonRuleFieldReadOnly } from './common_rule_field_readonly'; + +export function FieldFinalReadOnly(): JSX.Element { + const { fieldName, finalDiffableRule } = useFieldUpgradeContext(); + + const { data: commonField } = useMemo( + () => DiffableCommonFields.keyof().safeParse(fieldName), + [fieldName] + ); + + if (commonField) { + return ( + <CommonRuleFieldReadOnly fieldName={commonField} finalDiffableRule={finalDiffableRule} /> + ); + } + + switch (finalDiffableRule.type) { + case 'query': + return ( + <CustomQueryRuleFieldReadOnly + fieldName={fieldName as keyof DiffableCustomQueryFields} + finalDiffableRule={finalDiffableRule} + /> + ); + case 'saved_query': + return ( + <SavedQueryRuleFieldReadOnly + fieldName={fieldName as keyof DiffableSavedQueryFields} + finalDiffableRule={finalDiffableRule} + /> + ); + case 'eql': + return ( + <EqlRuleFieldReadOnly + fieldName={fieldName as keyof DiffableEqlFields} + finalDiffableRule={finalDiffableRule} + /> + ); + case 'esql': + return ( + <EsqlRuleFieldReadOnly + fieldName={fieldName as keyof DiffableEsqlFields} + finalDiffableRule={finalDiffableRule} + /> + ); + case 'threat_match': + return ( + <ThreatMatchRuleFieldReadOnly + fieldName={fieldName as keyof DiffableThreatMatchFields} + finalDiffableRule={finalDiffableRule} + /> + ); + case 'threshold': + return ( + <ThresholdRuleFieldReadOnly + fieldName={fieldName as keyof DiffableThresholdFields} + finalDiffableRule={finalDiffableRule} + /> + ); + case 'machine_learning': + return ( + <MachineLearningRuleFieldReadOnly + fieldName={fieldName as keyof DiffableMachineLearningFields} + finalDiffableRule={finalDiffableRule} + /> + ); + case 'new_terms': + return ( + <NewTermsRuleFieldReadOnly + fieldName={fieldName as keyof DiffableNewTermsFields} + finalDiffableRule={finalDiffableRule} + /> + ); + default: + return assertUnreachable(finalDiffableRule); + } +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/field_readonly.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/field_readonly.tsx deleted file mode 100644 index ecaec5af0f54a..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/field_readonly.tsx +++ /dev/null @@ -1,110 +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 React, { useMemo } from 'react'; -import { DiffableCommonFields } from '../../../../../../../common/api/detection_engine'; -import type { - DiffableCustomQueryFields, - DiffableSavedQueryFields, - DiffableEqlFields, - DiffableThreatMatchFields, - DiffableThresholdFields, - DiffableNewTermsFields, - DiffableEsqlFields, - DiffableMachineLearningFields, -} from '../../../../../../../common/api/detection_engine'; -import { assertUnreachable } from '../../../../../../../common/utility_types'; -import { CustomQueryRuleFieldReadOnly } from './custom_query_rule_field_readonly'; -import { SavedQueryRuleFieldReadOnly } from './saved_query_rule_field_readonly'; -import { EqlRuleFieldReadOnly } from './eql_rule_field_readonly'; -import { EsqlRuleFieldReadOnly } from './esql_rule_field_readonly'; -import { ThreatMatchRuleFieldReadOnly } from './threat_match_rule_field_readonly'; -import { ThresholdRuleFieldReadOnly } from './threshold_rule_field_readonly'; -import { MachineLearningRuleFieldReadOnly } from './machine_learning_rule_field_readonly'; -import { NewTermsRuleFieldReadOnly } from './new_terms_rule_field_readonly'; -import { CommonRuleFieldReadOnly } from './common_rule_field_readonly'; -import { useDiffableRuleContext } from '../diffable_rule_context'; - -interface FieldReadOnlyProps { - fieldName: string; -} - -export function FieldReadOnly({ fieldName }: FieldReadOnlyProps) { - const { finalDiffableRule } = useDiffableRuleContext(); - - const { data: commonField } = useMemo( - () => DiffableCommonFields.keyof().safeParse(fieldName), - [fieldName] - ); - - if (commonField) { - return ( - <CommonRuleFieldReadOnly fieldName={commonField} finalDiffableRule={finalDiffableRule} /> - ); - } - - switch (finalDiffableRule.type) { - case 'query': - return ( - <CustomQueryRuleFieldReadOnly - fieldName={fieldName as keyof DiffableCustomQueryFields} - finalDiffableRule={finalDiffableRule} - /> - ); - case 'saved_query': - return ( - <SavedQueryRuleFieldReadOnly - fieldName={fieldName as keyof DiffableSavedQueryFields} - finalDiffableRule={finalDiffableRule} - /> - ); - case 'eql': - return ( - <EqlRuleFieldReadOnly - fieldName={fieldName as keyof DiffableEqlFields} - finalDiffableRule={finalDiffableRule} - /> - ); - case 'esql': - return ( - <EsqlRuleFieldReadOnly - fieldName={fieldName as keyof DiffableEsqlFields} - finalDiffableRule={finalDiffableRule} - /> - ); - case 'threat_match': - return ( - <ThreatMatchRuleFieldReadOnly - fieldName={fieldName as keyof DiffableThreatMatchFields} - finalDiffableRule={finalDiffableRule} - /> - ); - case 'threshold': - return ( - <ThresholdRuleFieldReadOnly - fieldName={fieldName as keyof DiffableThresholdFields} - finalDiffableRule={finalDiffableRule} - /> - ); - case 'machine_learning': - return ( - <MachineLearningRuleFieldReadOnly - fieldName={fieldName as keyof DiffableMachineLearningFields} - finalDiffableRule={finalDiffableRule} - /> - ); - case 'new_terms': - return ( - <NewTermsRuleFieldReadOnly - fieldName={fieldName as keyof DiffableNewTermsFields} - finalDiffableRule={finalDiffableRule} - /> - ); - default: - return assertUnreachable(finalDiffableRule); - } -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.stories.tsx index 9aeeee25983d3..8803bab21022d 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.stories.tsx @@ -6,11 +6,7 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { AlertSuppressionReadOnly } from './alert_suppression'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { @@ -19,26 +15,28 @@ export default { 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/alert_suppression', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} +export const OtherRuleTypes = () => ( + <ThreeWayDiffStorybookProviders> + <AlertSuppressionReadOnly + ruleType="query" + alertSuppression={{ + group_by: ['host.name'], + duration: { value: 5, unit: 'm' }, + missing_fields_strategy: 'suppress', + }} + /> + </ThreeWayDiffStorybookProviders> +); -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="alert_suppression" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); +export const Threshold = () => ( + <ThreeWayDiffStorybookProviders> + <AlertSuppressionReadOnly + ruleType="threshold" + alertSuppression={{ + duration: { value: 5, unit: 'm' }, + }} + /> + </ThreeWayDiffStorybookProviders> +); -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - alert_suppression: { - group_by: ['host.name'], - duration: { value: 5, unit: 'm' }, - missing_fields_strategy: 'suppress', - }, - }), -}; +export const EmptyValue = () => <AlertSuppressionReadOnly ruleType="query" />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.tsx index 8c15347bc6d90..3cbe4018012a1 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/alert_suppression/alert_suppression.tsx @@ -19,6 +19,7 @@ import { SuppressAlertsByField, SuppressAlertsDuration, } from '../../../../rule_definition_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface AlertSuppressionReadOnlyProps { alertSuppression?: AlertSuppression | ThresholdAlertSuppression; @@ -30,7 +31,16 @@ export function AlertSuppressionReadOnly({ ruleType, }: AlertSuppressionReadOnlyProps) { if (!alertSuppression) { - return null; + return ( + <EuiDescriptionList + listItems={[ + { + title: ruleDetailsI18n.ALERT_SUPPRESSION_FIELD_LABEL, + description: <EmptyFieldValuePlaceholder />, + }, + ]} + /> + ); } const listItems = []; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/anomaly_threshold/anomaly_threshold.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/anomaly_threshold/anomaly_threshold.stories.tsx index 392187941046c..f52726450ae52 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/anomaly_threshold/anomaly_threshold.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/anomaly_threshold/anomaly_threshold.stories.tsx @@ -6,12 +6,7 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { AnomalyThresholdReadOnly } from './anomaly_threshold'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockMachineLearningRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: AnomalyThresholdReadOnly, @@ -19,22 +14,4 @@ export default { 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/anomaly_threshold', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="anomaly_threshold" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockMachineLearningRule({ - anomaly_threshold: 50, - }), -}; +export const Default = () => <AnomalyThresholdReadOnly anomalyThreshold={50} />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.stories.tsx index 6bace209f283b..3f8d7b3c72a6c 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.stories.tsx @@ -6,36 +6,13 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { BuildingBlockReadOnly } from './building_block'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: BuildingBlockReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/building_block', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} +export const Default = () => <BuildingBlockReadOnly buildingBlock={{ type: 'default' }} />; -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="building_block" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - building_block: { - type: 'default', - }, - }), -}; +export const NoValue = () => <BuildingBlockReadOnly />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.tsx index 7e64c140e6d70..1a161737b6bbb 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/building_block/building_block.tsx @@ -16,16 +16,12 @@ interface BuildingBlockReadOnlyProps { } export function BuildingBlockReadOnly({ buildingBlock }: BuildingBlockReadOnlyProps) { - if (!buildingBlock || !buildingBlock.type) { - return null; - } - return ( <EuiDescriptionList listItems={[ { title: ruleDetailsI18n.BUILDING_BLOCK_FIELD_LABEL, - description: <BuildingBlock />, + description: <BuildingBlock type={buildingBlock?.type} />, }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.stories.tsx index d7bf26bc7d9ba..129a162ffd574 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.stories.tsx @@ -6,57 +6,35 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; import { dataSourceWithDataView, dataSourceWithIndexPatterns, mockDataView, - mockCustomQueryRule, } from '../../storybook/mocks'; +import { DataSourceReadOnly } from './data_source'; export default { - component: FieldReadOnly, + component: DataSourceReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/data_source', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; - kibanaServicesOverrides?: Record<string, unknown>; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders - kibanaServicesOverrides={args.kibanaServicesOverrides} - finalDiffableRule={args.finalDiffableRule} - > - <FieldReadOnly fieldName="data_source" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const DataSourceWithIndexPatterns = Template.bind({}); - -DataSourceWithIndexPatterns.args = { - finalDiffableRule: mockCustomQueryRule({ - data_source: dataSourceWithIndexPatterns, - }), -}; - -export const DataSourceWithDataView = Template.bind({}); - -DataSourceWithDataView.args = { - finalDiffableRule: mockCustomQueryRule({ - data_source: dataSourceWithDataView, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - get: async () => mockDataView(), +export const DataSourceWithIndexPatterns = () => ( + <DataSourceReadOnly dataSource={dataSourceWithIndexPatterns} /> +); + +export const DataSourceWithDataView = () => ( + <ThreeWayDiffStorybookProviders + kibanaServicesOverrides={{ + data: { + dataViews: { + get: async () => mockDataView(), + }, }, - }, - }, -}; + }} + > + <DataSourceReadOnly dataSource={dataSourceWithDataView} /> + </ThreeWayDiffStorybookProviders> +); + +export const NoValue = () => <DataSourceReadOnly />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.tsx index 2a7bff6ff8b2d..19fc97ae5dee9 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/data_source/data_source.tsx @@ -12,6 +12,7 @@ import type { RuleDataSource } from '../../../../../../../../../common/api/detec import { Index, DataViewId, DataViewIndexPattern } from '../../../../rule_definition_section'; import * as ruleDetailsI18n from '../../../../translations'; import { assertUnreachable } from '../../../../../../../../../common/utility_types'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface DataSourceReadOnlyProps { dataSource?: RuleDataSource; @@ -19,7 +20,16 @@ interface DataSourceReadOnlyProps { export function DataSourceReadOnly({ dataSource }: DataSourceReadOnlyProps) { if (!dataSource) { - return null; + return ( + <EuiDescriptionList + listItems={[ + { + title: ruleDetailsI18n.DATA_SOURCE_FIELD_LABEL, + description: <EmptyFieldValuePlaceholder />, + }, + ]} + /> + ); } if (dataSource.type === DataSourceType.index_patterns) { diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/description/description.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/description/description.stories.tsx index 079c327fb29ef..2ba645fe576f0 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/description/description.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/description/description.stories.tsx @@ -6,35 +6,13 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { DescriptionReadOnly } from './description'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: DescriptionReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/description', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="description" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - description: - "Identifies the occurrence of a security alert from the Google Workspace alerts center. Google Workspace's security alert center provides an overview of actionable alerts that may be affecting an organization's domain. An alert is a warning of a potential security issue that Google has detected.", - }), -}; +export const Default = () => ( + <DescriptionReadOnly description="Identifies the occurrence of a security alert from the Google Workspace alerts center. Google Workspace's security alert center provides an overview of actionable alerts that may be affecting an organization's domain. An alert is a warning of a potential security issue that Google has detected." /> +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/eql_query/eql_query.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/eql_query/eql_query.stories.tsx index 8ee0ac1511784..4b5210b62dd85 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/eql_query/eql_query.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/eql_query/eql_query.stories.tsx @@ -6,9 +6,6 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; import { EqlQueryReadOnly } from './eql_query'; import { @@ -16,7 +13,6 @@ import { dataSourceWithIndexPatterns, eqlQuery, mockDataView, - mockEqlRule, } from '../../storybook/mocks'; export default { @@ -24,50 +20,30 @@ export default { title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/eql_query', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; - kibanaServicesOverrides?: Record<string, unknown>; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders - kibanaServicesOverrides={args.kibanaServicesOverrides} - finalDiffableRule={args.finalDiffableRule} - > - <FieldReadOnly fieldName="eql_query" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const EqlQueryWithIndexPatterns = Template.bind({}); - -EqlQueryWithIndexPatterns.args = { - finalDiffableRule: mockEqlRule({ - eql_query: eqlQuery, - data_source: dataSourceWithIndexPatterns, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - create: async () => mockDataView(), +export const EqlQueryWithIndexPatterns = () => ( + <ThreeWayDiffStorybookProviders + kibanaServicesOverrides={{ + data: { + dataViews: { + create: async () => mockDataView(), + }, }, - }, - }, -}; - -export const EqlQueryWithDataView = Template.bind({}); - -EqlQueryWithDataView.args = { - finalDiffableRule: mockEqlRule({ - eql_query: eqlQuery, - data_source: dataSourceWithDataView, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - get: async () => mockDataView(), + }} + > + <EqlQueryReadOnly eqlQuery={eqlQuery} dataSource={dataSourceWithIndexPatterns} /> + </ThreeWayDiffStorybookProviders> +); + +export const EqlQueryWithDataView = () => ( + <ThreeWayDiffStorybookProviders + kibanaServicesOverrides={{ + data: { + dataViews: { + get: async () => mockDataView(), + }, }, - }, - }, -}; + }} + > + <EqlQueryReadOnly eqlQuery={eqlQuery} dataSource={dataSourceWithDataView} /> + </ThreeWayDiffStorybookProviders> +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/esql_query/esql_query.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/esql_query/esql_query.stories.tsx index 70f37106842e1..a3cce1fe6b2e3 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/esql_query/esql_query.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/esql_query/esql_query.stories.tsx @@ -6,36 +6,18 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockEsqlRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; +import { EsqlQueryReadOnly } from './esql_query'; export default { - component: FieldReadOnly, + component: EsqlQueryReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/esql_query', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="esql_query" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockEsqlRule({ - esql_query: { +export const Default = () => ( + <EsqlQueryReadOnly + esqlQuery={{ query: `SELECT user.name, source.ip FROM "logs-*" WHERE event.action = 'user_login' AND event.outcome = 'failure'`, language: 'esql', - }, - }), -}; + }} + /> +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.stories.tsx index a5884b340e32b..8a116e564c543 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.stories.tsx @@ -6,37 +6,20 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { FalsePositivesReadOnly } from './false_positives'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: FalsePositivesReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/false_positives', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="false_positives" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - false_positives: [ +export const Default = () => ( + <FalsePositivesReadOnly + falsePositives={[ 'WAF rules or rule groups may be deleted by a system or network administrator. Verify whether the user identity, user agent, and/or hostname should be making changes in your environment. Rule deletions by unfamiliar users or hosts should be investigated. If known behavior is causing false positives, it can be exempted from the rule.', 'Uncommon user command activity can be due to an engineer logging onto a server instance in order to perform manual troubleshooting or reconfiguration.', - ], - }), -}; + ]} + /> +); + +export const NoValue = () => <FalsePositivesReadOnly falsePositives={[]} />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.tsx index 7480af5dff4c5..5c51852f1eb4e 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/false_positives/false_positives.tsx @@ -10,22 +10,23 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { RuleFalsePositiveArray } from '../../../../../../../../../common/api/detection_engine'; import { FalsePositives } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface FalsePositivesReadOnlyProps { falsePositives: RuleFalsePositiveArray; } export function FalsePositivesReadOnly({ falsePositives }: FalsePositivesReadOnlyProps) { - if (falsePositives.length === 0) { - return null; - } - return ( <EuiDescriptionList listItems={[ { title: ruleDetailsI18n.FALSE_POSITIVES_FIELD_LABEL, - description: <FalsePositives falsePositives={falsePositives} />, + description: falsePositives.length ? ( + <FalsePositives falsePositives={falsePositives} /> + ) : ( + <EmptyFieldValuePlaceholder /> + ), }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/history_window_start/history_window_start.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/history_window_start/history_window_start.stories.tsx index 12e0f086ecec9..162b5e14bf6f5 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/history_window_start/history_window_start.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/history_window_start/history_window_start.stories.tsx @@ -6,12 +6,7 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { HistoryWindowStartReadOnly } from './history_window_start'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockNewTermsRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: HistoryWindowStartReadOnly, @@ -19,22 +14,4 @@ export default { 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/history_window_start', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="history_window_start" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockNewTermsRule({ - history_window_start: 'now-14d', - }), -}; +export const Default = () => <HistoryWindowStartReadOnly historyWindowStart="now-14d" />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.stories.tsx index a32c79076a03d..0c17672d589b4 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.stories.tsx @@ -6,12 +6,7 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { InvestigationFieldsReadOnly } from './investigation_fields'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: InvestigationFieldsReadOnly, @@ -19,24 +14,12 @@ export default { 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/investigation_fields', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="investigation_fields" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - investigation_fields: { +export const Default = () => ( + <InvestigationFieldsReadOnly + investigationFields={{ field_names: ['host.name', 'source.ip'], - }, - }), -}; + }} + /> +); + +export const NoValue = () => <InvestigationFieldsReadOnly />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.tsx index b567b32ada533..e626f85461550 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/investigation_fields/investigation_fields.tsx @@ -10,6 +10,7 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { InvestigationFields } from '../../../../../../../../../common/api/detection_engine'; import { InvestigationFields as InvestigationFieldsComponent } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface InvestigationFieldsReadOnlyProps { investigationFields?: InvestigationFields; @@ -18,18 +19,17 @@ interface InvestigationFieldsReadOnlyProps { export function InvestigationFieldsReadOnly({ investigationFields, }: InvestigationFieldsReadOnlyProps) { - if (!investigationFields || !investigationFields.field_names.length) { - return null; - } - return ( <EuiDescriptionList listItems={[ { title: ruleDetailsI18n.INVESTIGATION_FIELDS_FIELD_LABEL, - description: ( - <InvestigationFieldsComponent investigationFields={investigationFields.field_names} /> - ), + description: + investigationFields && investigationFields.field_names.length ? ( + <InvestigationFieldsComponent investigationFields={investigationFields.field_names} /> + ) : ( + <EmptyFieldValuePlaceholder /> + ), }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/kql_query.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/kql_query.stories.tsx index 16731ec498162..1b4b205891cfc 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/kql_query.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/kql_query/kql_query.stories.tsx @@ -6,129 +6,114 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; +import { KqlQueryReadOnly } from '.'; import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; import { dataSourceWithDataView, dataSourceWithIndexPatterns, inlineKqlQuery, mockDataView, - mockCustomQueryRule, savedKqlQuery, savedQueryResponse, - mockSavedQueryRule, } from '../../storybook/mocks'; export default { - component: FieldReadOnly, + component: KqlQueryReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/kql_query', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; - kibanaServicesOverrides?: Record<string, unknown>; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders - kibanaServicesOverrides={args.kibanaServicesOverrides} - finalDiffableRule={args.finalDiffableRule} - > - <FieldReadOnly fieldName="kql_query" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const InlineKqlQueryWithIndexPatterns = Template.bind({}); - -InlineKqlQueryWithIndexPatterns.args = { - finalDiffableRule: mockCustomQueryRule({ - kql_query: inlineKqlQuery, - data_source: dataSourceWithIndexPatterns, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - create: async () => mockDataView(), +export const InlineKqlQueryWithIndexPatterns = () => ( + <ThreeWayDiffStorybookProviders + kibanaServicesOverrides={{ + data: { + dataViews: { + create: async () => mockDataView(), + }, }, - }, - }, -}; - -export const InlineKqlQueryWithDataView = Template.bind({}); + }} + > + <KqlQueryReadOnly + ruleType="query" + kqlQuery={inlineKqlQuery} + dataSource={dataSourceWithIndexPatterns} + /> + </ThreeWayDiffStorybookProviders> +); -InlineKqlQueryWithDataView.args = { - finalDiffableRule: mockCustomQueryRule({ - kql_query: inlineKqlQuery, - data_source: dataSourceWithDataView, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - get: async () => mockDataView(), +export const InlineKqlQueryWithDataView = () => ( + <ThreeWayDiffStorybookProviders + kibanaServicesOverrides={{ + data: { + dataViews: { + get: async () => mockDataView(), + }, }, - }, - }, -}; - -export const InlineKqlQueryWithoutDataSource = Template.bind({}); + }} + > + <KqlQueryReadOnly + ruleType="query" + kqlQuery={inlineKqlQuery} + dataSource={dataSourceWithDataView} + /> + </ThreeWayDiffStorybookProviders> +); /* Filters should still be displayed if no `data_source` is provided. Component would fall back to the default index pattern in such case. */ -InlineKqlQueryWithoutDataSource.args = { - finalDiffableRule: mockCustomQueryRule({ - kql_query: inlineKqlQuery, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - create: async () => mockDataView(), +export const InlineKqlQueryWithoutDataSource = () => ( + <ThreeWayDiffStorybookProviders + kibanaServicesOverrides={{ + data: { + dataViews: { + create: async () => mockDataView(), + }, }, - }, - }, -}; - -export const SavedKqlQueryWithIndexPatterns = Template.bind({}); + }} + > + <KqlQueryReadOnly ruleType="query" kqlQuery={inlineKqlQuery} /> + </ThreeWayDiffStorybookProviders> +); -SavedKqlQueryWithIndexPatterns.args = { - finalDiffableRule: mockSavedQueryRule({ - kql_query: savedKqlQuery, - data_source: dataSourceWithIndexPatterns, - type: 'saved_query', - }), - kibanaServicesOverrides: { - data: { - dataViews: { - create: async () => mockDataView(), +export const SavedKqlQueryWithIndexPatterns = () => ( + <ThreeWayDiffStorybookProviders + kibanaServicesOverrides={{ + data: { + dataViews: { + create: async () => mockDataView(), + }, }, - }, - http: { - get: async () => savedQueryResponse, - }, - }, -}; - -export const SavedKqlQueryWithDataView = Template.bind({}); + http: { + get: async () => savedQueryResponse, + }, + }} + > + <KqlQueryReadOnly + ruleType="saved_query" + kqlQuery={savedKqlQuery} + dataSource={dataSourceWithIndexPatterns} + /> + </ThreeWayDiffStorybookProviders> +); -SavedKqlQueryWithDataView.args = { - finalDiffableRule: mockSavedQueryRule({ - kql_query: savedKqlQuery, - data_source: dataSourceWithDataView, - type: 'saved_query', - }), - kibanaServicesOverrides: { - data: { - dataViews: { - get: async () => mockDataView(), +export const SavedKqlQueryWithDataView = () => ( + <ThreeWayDiffStorybookProviders + kibanaServicesOverrides={{ + data: { + dataViews: { + get: async () => mockDataView(), + }, }, - }, - http: { - get: async () => savedQueryResponse, - }, - }, -}; + http: { + get: async () => savedQueryResponse, + }, + }} + > + <KqlQueryReadOnly + ruleType="saved_query" + kqlQuery={savedKqlQuery} + dataSource={dataSourceWithDataView} + /> + </ThreeWayDiffStorybookProviders> +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/machine_learning_job_id/machine_learning_job_id.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/machine_learning_job_id/machine_learning_job_id.stories.tsx index ea23aa5984106..dcb7e165b04fb 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/machine_learning_job_id/machine_learning_job_id.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/machine_learning_job_id/machine_learning_job_id.stories.tsx @@ -7,15 +7,11 @@ import React from 'react'; import { useQueryClient } from '@tanstack/react-query'; -import type { Story } from '@storybook/react'; import { MachineLearningJobIdReadOnly } from './machine_learning_job_id'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { FieldReadOnly } from '../../field_readonly'; import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; import { GET_MODULES_QUERY_KEY } from '../../../../../../../../common/components/ml_popover/hooks/use_fetch_modules_query'; import { GET_RECOGNIZER_QUERY_KEY } from '../../../../../../../../common/components/ml_popover/hooks/use_fetch_recognizer_query'; import { GET_JOBS_SUMMARY_QUERY_KEY } from '../../../../../../../../common/components/ml/hooks/use_fetch_jobs_summary_query'; -import { mockMachineLearningRule } from '../../storybook/mocks'; export default { component: MachineLearningJobIdReadOnly, @@ -58,24 +54,10 @@ function MockMlData({ children }: { children: React.ReactNode }) { return <>{children}</>; } -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <MockMlData> - <FieldReadOnly fieldName="machine_learning_job_id" /> - </MockMlData> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockMachineLearningRule({ - machine_learning_job_id: 'auth_high_count_logon_events', - }), -}; +export const Default = () => ( + <ThreeWayDiffStorybookProviders> + <MockMlData> + <MachineLearningJobIdReadOnly machineLearningJobId="auth_high_count_logon_events" /> + </MockMlData> + </ThreeWayDiffStorybookProviders> +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/max_signals/max_signals.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/max_signals/max_signals.stories.tsx index 3c7945366a174..17d42acc1e650 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/max_signals/max_signals.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/max_signals/max_signals.stories.tsx @@ -6,34 +6,11 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { MaxSignalsReadOnly } from './max_signals'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: MaxSignalsReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/max_signals', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="max_signals" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - max_signals: 100, - }), -}; +export const Default = () => <MaxSignalsReadOnly maxSignals={100} />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/name/name.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/name/name.stories.tsx index d97f71b4df0ac..7036644c57fb0 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/name/name.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/name/name.stories.tsx @@ -6,34 +6,11 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { NameReadOnly } from './name'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: NameReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/name', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="name" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - name: 'Forwarded Google Workspace Security Alert', - }), -}; +export const Default = () => <NameReadOnly name="Forwarded Google Workspace Security Alert" />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/new_terms_fields/new_terms_fields.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/new_terms_fields/new_terms_fields.stories.tsx index f3dc5a1e3da9b..e04d5a8286183 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/new_terms_fields/new_terms_fields.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/new_terms_fields/new_terms_fields.stories.tsx @@ -6,12 +6,7 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { NewTermsFieldsReadOnly } from './new_terms_fields'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockNewTermsRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: NewTermsFieldsReadOnly, @@ -19,22 +14,4 @@ export default { 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/new_terms_fields', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="new_terms_fields" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockNewTermsRule({ - new_terms_fields: ['user.name', 'source.ip'], - }), -}; +export const Default = () => <NewTermsFieldsReadOnly newTermsFields={['user.name', 'source.ip']} />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.stories.tsx index 4a62c5e58dc28..b993a3f1639ed 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.stories.tsx @@ -6,34 +6,17 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { NoteReadOnly } from './note'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: NoteReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/note', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} +export const Default = () => ( + <NoteReadOnly + note={`## Triage and analysis\n\n### Investigating Unusual Network Activity\nDetection alerts from this rule indicate the presence of network activity from a Linux process for which network activity is rare and unusual. Here are some possible avenues of investigation:\n- Consider the IP addresses and ports. Are these used by normal but infrequent network workflows? Are they expected or unexpected?\n- If the destination IP address is remote or external, does it associate with an expected domain, organization or geography? Note: avoid interacting directly with suspected malicious IP addresses.\n- Consider the user as identified by the username field. Is this network activity part of an expected workflow for the user who ran the program?\n- Examine the history of execution. If this process only manifested recently, it might be part of a new software package. If it has a consistent cadence (for example if it runs monthly or quarterly), it might be part of a monthly or quarterly business or maintenance process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.`} + /> +); -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="note" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - note: '## Triage and analysis\n\n### Investigating Unusual Network Activity\nDetection alerts from this rule indicate the presence of network activity from a Linux process for which network activity is rare and unusual. Here are some possible avenues of investigation:\n- Consider the IP addresses and ports. Are these used by normal but infrequent network workflows? Are they expected or unexpected?\n- If the destination IP address is remote or external, does it associate with an expected domain, organization or geography? Note: avoid interacting directly with suspected malicious IP addresses.\n- Consider the user as identified by the username field. Is this network activity part of an expected workflow for the user who ran the program?\n- Examine the history of execution. If this process only manifested recently, it might be part of a new software package. If it has a consistent cadence (for example if it runs monthly or quarterly), it might be part of a monthly or quarterly business or maintenance process.\n- Examine the process arguments, title and working directory. These may provide indications as to the source of the program or the nature of the tasks it is performing.', - }), -}; +export const EmptyStringValue = () => <NoteReadOnly note="" />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.tsx index 5f746fb0a78ce..7a6702f906684 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/note/note.tsx @@ -10,22 +10,19 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as i18n from './translations'; import type { InvestigationGuide } from '../../../../../../../../../common/api/detection_engine'; import { MarkdownRenderer } from '../../../../../../../../common/components/markdown_editor'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface NoteReadOnlyProps { note: InvestigationGuide; } export function NoteReadOnly({ note }: NoteReadOnlyProps) { - if (!note) { - return null; - } - return ( <EuiDescriptionList listItems={[ { title: i18n.NOTE_LABEL, - description: <Note note={note} />, + description: note.trim() ? <Note note={note} /> : <EmptyFieldValuePlaceholder />, }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.stories.tsx index ea8ee856099dd..25fd321e8204b 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.stories.tsx @@ -6,38 +6,21 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { ReferencesReadOnly } from './references'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: ReferencesReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/references', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="references" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - references: [ +export const Default = () => ( + <ReferencesReadOnly + references={[ 'https://www.elastic.co/guide/en/security/current/prebuilt-ml-jobs.html', 'https://docs.elastic.co/en/integrations/beaconing', 'https://www.elastic.co/security-labs/identifying-beaconing-malware-using-elastic', - ], - }), -}; + ]} + /> +); + +export const EmptyArrayValue = () => <ReferencesReadOnly references={[]} />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.tsx index d9bb50dcaeb0b..1353ba2c92012 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/references/references.tsx @@ -10,22 +10,23 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { RuleReferenceArray } from '../../../../../../../../../common/api/detection_engine'; import { References } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface ReferencesReadOnlyProps { references: RuleReferenceArray; } export function ReferencesReadOnly({ references }: ReferencesReadOnlyProps) { - if (references.length === 0) { - return null; - } - return ( <EuiDescriptionList listItems={[ { title: ruleDetailsI18n.REFERENCES_FIELD_LABEL, - description: <References references={references} />, + description: references.length ? ( + <References references={references} /> + ) : ( + <EmptyFieldValuePlaceholder /> + ), }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.stories.tsx index b810eaa1fbb8f..af00990d8d01e 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.stories.tsx @@ -7,12 +7,8 @@ import React from 'react'; import { useQueryClient } from '@tanstack/react-query'; -import type { Story } from '@storybook/react'; -import { RelatedIntegrationsReadOnly } from './related_integrations'; import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; +import { RelatedIntegrationsReadOnly } from './related_integrations'; export default { component: RelatedIntegrationsReadOnly, @@ -39,24 +35,14 @@ function MockRelatedIntegrationsData({ children }: { children: React.ReactNode } return <>{children}</>; } -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <MockRelatedIntegrationsData> - <FieldReadOnly fieldName="related_integrations" /> - </MockRelatedIntegrationsData> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - related_integrations: [{ package: 'endpoint', version: '^8.2.0' }], - }), -}; +export const Default = () => ( + <ThreeWayDiffStorybookProviders> + <MockRelatedIntegrationsData> + <RelatedIntegrationsReadOnly + relatedIntegrations={[{ package: 'endpoint', version: '^8.2.0' }]} + /> + </MockRelatedIntegrationsData> + </ThreeWayDiffStorybookProviders> +); + +export const EmptyArrayValue = () => <RelatedIntegrationsReadOnly relatedIntegrations={[]} />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.tsx index b9a7468072782..9fe4176079247 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/related_integrations/related_integrations.tsx @@ -10,22 +10,23 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import { RelatedIntegrationsDescription } from '../../../../../../../../detections/components/rules/related_integrations/integrations_description'; import type { RelatedIntegrationArray } from '../../../../../../../../../common/api/detection_engine'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface RelatedIntegrationsReadOnly { relatedIntegrations: RelatedIntegrationArray; } export function RelatedIntegrationsReadOnly({ relatedIntegrations }: RelatedIntegrationsReadOnly) { - if (!relatedIntegrations.length) { - return null; - } - return ( <EuiDescriptionList listItems={[ { title: ruleDetailsI18n.RELATED_INTEGRATIONS_FIELD_LABEL, - description: <RelatedIntegrationsDescription relatedIntegrations={relatedIntegrations} />, + description: relatedIntegrations.length ? ( + <RelatedIntegrationsDescription relatedIntegrations={relatedIntegrations} /> + ) : ( + <EmptyFieldValuePlaceholder /> + ), }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.stories.tsx index ee926fc7ed561..a4ed34254a211 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.stories.tsx @@ -5,37 +5,20 @@ * 2.0. */ import React from 'react'; -import type { Story } from '@storybook/react'; import { RequiredFieldsReadOnly } from './required_fields'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: RequiredFieldsReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/required_fields', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="required_fields" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - required_fields: [ +export const Default = () => ( + <RequiredFieldsReadOnly + requiredFields={[ { name: 'event.kind', type: 'keyword', ecs: true }, { name: 'event.module', type: 'keyword', ecs: true }, - ], - }), -}; + ]} + /> +); + +export const EmptyArrayValue = () => <RequiredFieldsReadOnly requiredFields={[]} />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.tsx index 4d60acc8d5f15..5c6db9ddfd488 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/required_fields/required_fields.tsx @@ -10,6 +10,7 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { RequiredFieldArray } from '../../../../../../../../../common/api/detection_engine'; import { RequiredFields } from '../../../../rule_definition_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface RequiredFieldsReadOnlyProps { requiredFields: RequiredFieldArray; @@ -21,7 +22,11 @@ export function RequiredFieldsReadOnly({ requiredFields }: RequiredFieldsReadOnl listItems={[ { title: ruleDetailsI18n.REQUIRED_FIELDS_FIELD_LABEL, - description: <RequiredFields requiredFields={requiredFields} />, + description: requiredFields.length ? ( + <RequiredFields requiredFields={requiredFields} /> + ) : ( + <EmptyFieldValuePlaceholder /> + ), }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score/risk_score.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score/risk_score.stories.tsx index cb640e31090cc..348a75b563116 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score/risk_score.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score/risk_score.stories.tsx @@ -6,34 +6,11 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { RiskScoreReadOnly } from './risk_score'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: RiskScoreReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/risk_score', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="risk_score" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - risk_score: 96, - }), -}; +export const Default = () => <RiskScoreReadOnly riskScore={96} />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.stories.tsx index 90dbe7f981f64..8a9a4de7eda6c 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.stories.tsx @@ -6,12 +6,7 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; import { RiskScoreMappingReadOnly } from './risk_score_mapping'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: RiskScoreMappingReadOnly, @@ -19,22 +14,10 @@ export default { 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/risk_score_mapping', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} +export const Default = () => ( + <RiskScoreMappingReadOnly + riskScoreMapping={[{ field: 'event.risk_score', operator: 'equals', value: '' }]} + /> +); -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="risk_score_mapping" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - risk_score_mapping: [{ field: 'event.risk_score', operator: 'equals', value: '' }], - }), -}; +export const EmptyArrayValue = () => <RiskScoreMappingReadOnly riskScoreMapping={[]} />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.tsx index 5581bd588a79e..d1bca5a511e4e 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/risk_score_mapping/risk_score_mapping.tsx @@ -11,20 +11,36 @@ import { EuiDescriptionList } from '@elastic/eui'; import type { RiskScoreMapping } from '../../../../../../../../../common/api/detection_engine'; import * as ruleDetailsI18n from '../../../../translations'; import { RiskScoreMappingItem } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; export interface RiskScoreMappingReadProps { riskScoreMapping: RiskScoreMapping; } export const RiskScoreMappingReadOnly = ({ riskScoreMapping }: RiskScoreMappingReadProps) => { - const listItems = riskScoreMapping - .filter((riskScoreMappingItem) => riskScoreMappingItem.field !== '') - .map((riskScoreMappingItem, index) => ({ - title: index === 0 ? ruleDetailsI18n.RISK_SCORE_MAPPING_FIELD_LABEL : '', - description: ( - <RiskScoreMappingItem riskScoreMappingItem={requiredOptional(riskScoreMappingItem)} /> - ), - })); + const nonEmptyRiskScoreMappingItems = riskScoreMapping.filter( + (riskScoreMappingItem) => riskScoreMappingItem.field !== '' + ); + + if (nonEmptyRiskScoreMappingItems.length === 0) { + return ( + <EuiDescriptionList + listItems={[ + { + title: ruleDetailsI18n.RISK_SCORE_MAPPING_FIELD_LABEL, + description: <EmptyFieldValuePlaceholder />, + }, + ]} + /> + ); + } + + const listItems = nonEmptyRiskScoreMappingItems.map((riskScoreMappingItem, index) => ({ + title: index === 0 ? ruleDetailsI18n.RISK_SCORE_MAPPING_FIELD_LABEL : '', + description: ( + <RiskScoreMappingItem riskScoreMappingItem={requiredOptional(riskScoreMappingItem)} /> + ), + })); return <EuiDescriptionList listItems={listItems} />; }; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.stories.tsx index d0d596f15af42..36167c5c39240 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.stories.tsx @@ -6,12 +6,7 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { RuleNameOverrideReadOnly } from './rule_name_override'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: RuleNameOverrideReadOnly, @@ -19,24 +14,12 @@ export default { 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/rule_name_override', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} +export const Default = () => ( + <RuleNameOverrideReadOnly ruleNameOverride={{ field_name: 'event.action' }} /> +); -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="rule_name_override" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); +export const EmptyStringValue = () => ( + <RuleNameOverrideReadOnly ruleNameOverride={{ field_name: '' }} /> +); -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - rule_name_override: { - field_name: 'event.action', - }, - }), -}; +export const NoValue = () => <RuleNameOverrideReadOnly />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.tsx index 9090138ab91ee..5cf205c732569 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_name_override/rule_name_override.tsx @@ -10,22 +10,23 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { RuleNameOverrideObject } from '../../../../../../../../../common/api/detection_engine'; import { RuleNameOverride } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface RuleNameOverrideReadOnlyProps { ruleNameOverride?: RuleNameOverrideObject; } export function RuleNameOverrideReadOnly({ ruleNameOverride }: RuleNameOverrideReadOnlyProps) { - if (!ruleNameOverride) { - return null; - } - return ( <EuiDescriptionList listItems={[ { title: ruleDetailsI18n.RULE_NAME_OVERRIDE_FIELD_LABEL, - description: <RuleNameOverride ruleNameOverride={ruleNameOverride.field_name} />, + description: ruleNameOverride?.field_name ? ( + <RuleNameOverride ruleNameOverride={ruleNameOverride.field_name} /> + ) : ( + <EmptyFieldValuePlaceholder /> + ), }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_schedule/rule_schedule.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_schedule/rule_schedule.stories.tsx index 30f2170a30f31..a49735a35b5be 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_schedule/rule_schedule.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/rule_schedule/rule_schedule.stories.tsx @@ -6,37 +6,18 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { RuleScheduleReadOnly } from './rule_schedule'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: RuleScheduleReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/rule_schedule', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="rule_schedule" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - rule_schedule: { +export const Default = () => ( + <RuleScheduleReadOnly + ruleSchedule={{ interval: '5m', lookback: '60s', - }, - }), -}; + }} + /> +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.stories.tsx index 34410c7c6f638..07b3100f9d7ad 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.stories.tsx @@ -6,35 +6,19 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { SetupReadOnly } from './setup'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: SetupReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/setup', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} +export const Default = () => ( + <SetupReadOnly + setup={ + 'The \'PowerShell Script Block Logging\' logging policy must be enabled.\nSteps to implement the logging policy with Advanced Audit Configuration:\n\n```\nComputer Configuration >\nAdministrative Templates >\nWindows PowerShell >\nTurn on PowerShell Script Block Logging (Enable)\n```\n\nSteps to implement the logging policy via registry:\n\n```\nreg add "hklm\\SOFTWARE\\Policies\\Microsoft\\Windows\\PowerShell\\ScriptBlockLogging" /v EnableScriptBlockLogging /t REG_DWORD /d 1\n```' + } + /> +); -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="setup" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - setup: - 'The \'PowerShell Script Block Logging\' logging policy must be enabled.\nSteps to implement the logging policy with Advanced Audit Configuration:\n\n```\nComputer Configuration >\nAdministrative Templates >\nWindows PowerShell >\nTurn on PowerShell Script Block Logging (Enable)\n```\n\nSteps to implement the logging policy via registry:\n\n```\nreg add "hklm\\SOFTWARE\\Policies\\Microsoft\\Windows\\PowerShell\\ScriptBlockLogging" /v EnableScriptBlockLogging /t REG_DWORD /d 1\n```', - }), -}; +export const EmptyStringValue = () => <SetupReadOnly setup="" />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.tsx index feeb188da5ae8..52f3bee8988e2 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/setup/setup.tsx @@ -10,22 +10,19 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { SetupGuide } from '../../../../../../../../../common/api/detection_engine'; import { MarkdownRenderer } from '../../../../../../../../common/components/markdown_editor'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface SetupReadOnlyProps { setup: SetupGuide; } export function SetupReadOnly({ setup }: SetupReadOnlyProps) { - if (!setup) { - return null; - } - return ( <EuiDescriptionList listItems={[ { title: ruleDetailsI18n.SETUP_GUIDE_SECTION_LABEL, - description: <Setup setup={setup} />, + description: setup.trim() ? <Setup setup={setup} /> : <EmptyFieldValuePlaceholder />, }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity/severity.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity/severity.stories.tsx index b51547d1655e0..646a04c1344c7 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity/severity.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity/severity.stories.tsx @@ -6,34 +6,11 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { SeverityReadOnly } from './severity'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: SeverityReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/severity', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="severity" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - severity: 'high', - }), -}; +export const Default = () => <SeverityReadOnly severity="high" />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.stories.tsx index b4ecb70ce66cd..cf0ed52c6a8bb 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.stories.tsx @@ -6,12 +6,7 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; import { SeverityMappingReadOnly } from './severity_mapping'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: SeverityMappingReadOnly, @@ -19,23 +14,9 @@ export default { 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/severity_mapping', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="severity_mapping" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - severity_mapping: [ +export const Default = () => ( + <SeverityMappingReadOnly + severityMapping={[ { field: 'event.severity', operator: 'equals', @@ -48,6 +29,8 @@ Default.args = { severity: 'high', value: 'VERY HIGH', }, - ], - }), -}; + ]} + /> +); + +export const EmptyArrayValue = () => <SeverityMappingReadOnly severityMapping={[]} />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.tsx index 4d7b478e00f9e..1f69873c2f486 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/severity_mapping/severity_mapping.tsx @@ -10,18 +10,34 @@ import { EuiDescriptionList } from '@elastic/eui'; import type { SeverityMapping } from '../../../../../../../../../common/api/detection_engine'; import * as ruleDetailsI18n from '../../../../translations'; import { SeverityMappingItem } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; export interface SeverityMappingReadOnlyProps { severityMapping: SeverityMapping; } export const SeverityMappingReadOnly = ({ severityMapping }: SeverityMappingReadOnlyProps) => { - const listItems = severityMapping - .filter((severityMappingItem) => severityMappingItem.field !== '') - .map((severityMappingItem, index) => ({ - title: index === 0 ? ruleDetailsI18n.SEVERITY_MAPPING_FIELD_LABEL : '', - description: <SeverityMappingItem severityMappingItem={severityMappingItem} />, - })); + const nonEmptySeverityMappingItems = severityMapping.filter( + (severityMappingItem) => severityMappingItem.field !== '' + ); + + if (nonEmptySeverityMappingItems.length === 0) { + return ( + <EuiDescriptionList + listItems={[ + { + title: ruleDetailsI18n.SEVERITY_MAPPING_FIELD_LABEL, + description: <EmptyFieldValuePlaceholder />, + }, + ]} + /> + ); + } + + const listItems = nonEmptySeverityMappingItems.map((severityMappingItem, index) => ({ + title: index === 0 ? ruleDetailsI18n.SEVERITY_MAPPING_FIELD_LABEL : '', + description: <SeverityMappingItem severityMappingItem={severityMappingItem} />, + })); return <EuiDescriptionList listItems={listItems} />; }; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.stories.tsx index c8129dd989d24..6d35d9059a62d 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.stories.tsx @@ -6,34 +6,17 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { TagsReadOnly } from './tags'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: TagsReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/tags', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} +export const Default = () => ( + <TagsReadOnly + tags={['Elastic', 'Cloud', 'Google Workspace', 'Log Auditing', 'Threat Detection']} + /> +); -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="tags" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - tags: ['Elastic', 'Cloud', 'Google Workspace', 'Log Auditing', 'Threat Detection'], - }), -}; +export const EmptyArrayValue = () => <TagsReadOnly tags={[]} />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.tsx index 452b6bf2d8b99..6153adf44653a 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/tags/tags.tsx @@ -10,22 +10,19 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { RuleTagArray } from '../../../../../../../../../common/api/detection_engine'; import { Tags } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface TagsReadOnlyProps { tags: RuleTagArray; } export function TagsReadOnly({ tags }: TagsReadOnlyProps) { - if (tags.length === 0) { - return null; - } - return ( <EuiDescriptionList listItems={[ { title: ruleDetailsI18n.TAGS_FIELD_LABEL, - description: <Tags tags={tags} />, + description: tags.length ? <Tags tags={tags} /> : <EmptyFieldValuePlaceholder />, }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.stories.tsx index de8c15f29e0cc..02a847cd335c9 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.stories.tsx @@ -6,35 +6,16 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; import { ThreatReadOnly } from './threat'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: ThreatReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="threat" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - threat: [ +export const Default = () => ( + <ThreatReadOnly + threat={[ { framework: 'MITRE ATT&CK', tactic: { @@ -57,6 +38,8 @@ Default.args = { }, ], }, - ], - }), -}; + ]} + /> +); + +export const EmptyArrayValue = () => <ThreatReadOnly threat={[]} />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.tsx index ec8ab846f0206..288f815926bbf 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat/threat.tsx @@ -10,22 +10,19 @@ import { EuiDescriptionList } from '@elastic/eui'; import type { Threats } from '@kbn/securitysolution-io-ts-alerting-types'; import * as ruleDetailsI18n from '../../../../translations'; import { Threat } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; export interface ThreatReadOnlyProps { threat: Threats; } export const ThreatReadOnly = ({ threat }: ThreatReadOnlyProps) => { - if (threat.length === 0) { - return null; - } - return ( <EuiDescriptionList listItems={[ { title: ruleDetailsI18n.THREAT_FIELD_LABEL, - description: <Threat threat={threat} />, + description: threat.length ? <Threat threat={threat} /> : <EmptyFieldValuePlaceholder />, }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.stories.tsx index aeb1b6491bba6..baf532b0d6ad5 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.stories.tsx @@ -6,34 +6,13 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; import { ThreatIndexReadOnly } from './threat_index'; -import { mockThreatMatchRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: ThreatIndexReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat_index', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} +export const Default = () => <ThreatIndexReadOnly threatIndex={['logs-ti_*', 'logs-defend_*']} />; -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="threat_index" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockThreatMatchRule({ - threat_index: ['logs-ti_*', 'logs-defend_*'], - }), -}; +export const EmptyArrayValue = () => <ThreatIndexReadOnly threatIndex={[]} />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.tsx index 23bb2cdfc8bde..492796ad7e73f 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_index/threat_index.tsx @@ -9,6 +9,7 @@ import React from 'react'; import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import { ThreatIndex } from '../../../../rule_definition_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; export interface ThreatIndexReadOnlyProps { threatIndex: string[]; @@ -20,7 +21,11 @@ export const ThreatIndexReadOnly = ({ threatIndex }: ThreatIndexReadOnlyProps) = listItems={[ { title: ruleDetailsI18n.THREAT_INDEX_FIELD_LABEL, - description: <ThreatIndex threatIndex={threatIndex} />, + description: threatIndex.length ? ( + <ThreatIndex threatIndex={threatIndex} /> + ) : ( + <EmptyFieldValuePlaceholder /> + ), }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.stories.tsx index bb91b29fffe11..02372dc538e55 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.stories.tsx @@ -6,12 +6,7 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; import { ThreatIndicatorPathReadOnly } from './threat_indicator_path'; -import { mockThreatMatchRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: ThreatIndicatorPathReadOnly, @@ -19,22 +14,6 @@ export default { 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat_indicator_path', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} +export const Default = () => <ThreatIndicatorPathReadOnly threatIndicatorPath="threat.indicator" />; -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="threat_indicator_path" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockThreatMatchRule({ - threat_indicator_path: 'threat.indicator', - }), -}; +export const NoValue = () => <ThreatIndicatorPathReadOnly />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.tsx index c05dfbd71e14f..6c22a84d71169 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_indicator_path/threat_indicator_path.tsx @@ -9,6 +9,7 @@ import React from 'react'; import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import { ThreatIndicatorPath } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; export interface ThreatIndicatorPathReadOnlyProps { threatIndicatorPath?: string; @@ -17,16 +18,16 @@ export interface ThreatIndicatorPathReadOnlyProps { export const ThreatIndicatorPathReadOnly = ({ threatIndicatorPath, }: ThreatIndicatorPathReadOnlyProps) => { - if (!threatIndicatorPath) { - return null; - } - return ( <EuiDescriptionList listItems={[ { title: ruleDetailsI18n.THREAT_INDEX_FIELD_LABEL, - description: <ThreatIndicatorPath threatIndicatorPath={threatIndicatorPath} />, + description: threatIndicatorPath ? ( + <ThreatIndicatorPath threatIndicatorPath={threatIndicatorPath} /> + ) : ( + <EmptyFieldValuePlaceholder /> + ), }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_mapping/threat_mapping.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_mapping/threat_mapping.stories.tsx index 35c4bba4544a7..42bea4ce552f5 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_mapping/threat_mapping.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_mapping/threat_mapping.stories.tsx @@ -6,35 +6,16 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; import { ThreatMappingReadOnly } from './threat_mapping'; -import { mockThreatMatchRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: ThreatMappingReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat_mapping', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="threat_mapping" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockThreatMatchRule({ - threat_mapping: [ +export const Default = () => ( + <ThreatMappingReadOnly + threatMapping={[ { entries: [ { @@ -44,6 +25,6 @@ Default.args = { }, ], }, - ], - }), -}; + ]} + /> +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_query/threat_query.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_query/threat_query.stories.tsx index 625226ab4f9f5..ab2b48457ba2d 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_query/threat_query.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threat_query/threat_query.stories.tsx @@ -6,16 +6,12 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; import { ThreatQueryReadOnly } from './threat_query'; import { dataSourceWithDataView, dataSourceWithIndexPatterns, inlineKqlQuery, mockDataView, - mockThreatMatchRule, } from '../../storybook/mocks'; import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; @@ -24,50 +20,30 @@ export default { title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threat_query', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; - kibanaServicesOverrides?: Record<string, unknown>; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders - kibanaServicesOverrides={args.kibanaServicesOverrides} - finalDiffableRule={args.finalDiffableRule} - > - <FieldReadOnly fieldName="threat_query" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const ThreatQueryWithIndexPatterns = Template.bind({}); - -ThreatQueryWithIndexPatterns.args = { - finalDiffableRule: mockThreatMatchRule({ - threat_query: inlineKqlQuery, - data_source: dataSourceWithIndexPatterns, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - create: async () => mockDataView(), +export const ThreatQueryWithIndexPatterns = () => ( + <ThreeWayDiffStorybookProviders + kibanaServicesOverrides={{ + data: { + dataViews: { + create: async () => mockDataView(), + }, }, - }, - }, -}; - -export const ThreatQueryWithDataView = Template.bind({}); - -ThreatQueryWithDataView.args = { - finalDiffableRule: mockThreatMatchRule({ - threat_query: inlineKqlQuery, - data_source: dataSourceWithDataView, - }), - kibanaServicesOverrides: { - data: { - dataViews: { - get: async () => mockDataView(), + }} + > + <ThreatQueryReadOnly threatQuery={inlineKqlQuery} dataSource={dataSourceWithIndexPatterns} /> + </ThreeWayDiffStorybookProviders> +); + +export const ThreatQueryWithDataView = () => ( + <ThreeWayDiffStorybookProviders + kibanaServicesOverrides={{ + data: { + dataViews: { + get: async () => mockDataView(), + }, }, - }, - }, -}; + }} + > + <ThreatQueryReadOnly threatQuery={inlineKqlQuery} dataSource={dataSourceWithDataView} /> + </ThreeWayDiffStorybookProviders> +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threshold/threshold.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threshold/threshold.stories.tsx index 0541d5f9a9b47..882a58237e912 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threshold/threshold.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/threshold/threshold.stories.tsx @@ -6,38 +6,19 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { ThresholdReadOnly } from './threshold'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockThresholdRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: ThresholdReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/threshold', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="threshold" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockThresholdRule({ - threshold: { +export const Default = () => ( + <ThresholdReadOnly + threshold={{ field: ['Responses.process.pid'], value: 100, cardinality: [{ field: 'host.id', value: 2 }], - }, - }), -}; + }} + /> +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.stories.tsx index e4c3a2043ff24..9ca22b21ce192 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.stories.tsx @@ -6,12 +6,7 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { TimelineTemplateReadOnly } from './timeline_template'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: TimelineTemplateReadOnly, @@ -19,25 +14,13 @@ export default { 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/timeline_template', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="timeline_template" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - timeline_template: { +export const Default = () => ( + <TimelineTemplateReadOnly + timelineTemplate={{ timeline_title: 'Alerts Involving a Single User Timeline', timeline_id: 'some-timeline-id-123', - }, - }), -}; + }} + /> +); + +export const NoValue = () => <TimelineTemplateReadOnly />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.tsx index d6cc75cec5843..9514bd95402a5 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timeline_template/timeline_template.tsx @@ -10,22 +10,23 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { TimelineTemplateReference } from '../../../../../../../../../common/api/detection_engine'; import { TimelineTitle } from '../../../../rule_definition_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface TimelineTemplateReadOnlyProps { timelineTemplate?: TimelineTemplateReference; } export function TimelineTemplateReadOnly({ timelineTemplate }: TimelineTemplateReadOnlyProps) { - if (!timelineTemplate) { - return null; - } - return ( <EuiDescriptionList listItems={[ { title: ruleDetailsI18n.TIMELINE_TITLE_FIELD_LABEL, - description: <TimelineTitle timelineTitle={timelineTemplate.timeline_title} />, + description: timelineTemplate ? ( + <TimelineTitle timelineTitle={timelineTemplate.timeline_title} /> + ) : ( + <EmptyFieldValuePlaceholder /> + ), }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.stories.tsx index 5828ba156d9d2..fe4b8420a1a4e 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.stories.tsx @@ -6,12 +6,7 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { TimestampOverrideReadOnly } from './timestamp_override'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: TimestampOverrideReadOnly, @@ -19,25 +14,17 @@ export default { 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/timestamp_override', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="timestamp_override" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - timestamp_override: { +export const Default = () => ( + <TimestampOverrideReadOnly + timestampOverride={{ field_name: 'event.ingested', fallback_disabled: true, - }, - }), -}; + }} + /> +); + +export const EmptyStringValue = () => ( + <TimestampOverrideReadOnly timestampOverride={{ field_name: '', fallback_disabled: true }} /> +); + +export const NoValue = () => <TimestampOverrideReadOnly />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.tsx index 5d4c6ba3e1d2b..20e6fe53180db 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/timestamp_override/timestamp_override.tsx @@ -10,22 +10,23 @@ import { EuiDescriptionList } from '@elastic/eui'; import * as ruleDetailsI18n from '../../../../translations'; import type { TimestampOverrideObject } from '../../../../../../../../../common/api/detection_engine'; import { TimestampOverride } from '../../../../rule_about_section'; +import { EmptyFieldValuePlaceholder } from '../../empty_field_value_placeholder'; interface TimestampOverrideReadOnlyProps { timestampOverride?: TimestampOverrideObject; } export function TimestampOverrideReadOnly({ timestampOverride }: TimestampOverrideReadOnlyProps) { - if (!timestampOverride) { - return null; - } - return ( <EuiDescriptionList listItems={[ { title: ruleDetailsI18n.TIMESTAMP_OVERRIDE_FIELD_LABEL, - description: <TimestampOverride timestampOverride={timestampOverride.field_name} />, + description: timestampOverride?.field_name ? ( + <TimestampOverride timestampOverride={timestampOverride.field_name} /> + ) : ( + <EmptyFieldValuePlaceholder /> + ), }, ]} /> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/type/type.stories.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/type/type.stories.tsx index ba252a8a80b88..0103bff5a0a0e 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/type/type.stories.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/fields/type/type.stories.tsx @@ -6,34 +6,11 @@ */ import React from 'react'; -import type { Story } from '@storybook/react'; import { TypeReadOnly } from './type'; -import { FieldReadOnly } from '../../field_readonly'; -import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from '../../storybook/mocks'; -import { ThreeWayDiffStorybookProviders } from '../../storybook/three_way_diff_storybook_providers'; export default { component: TypeReadOnly, title: 'Rule Management/Prebuilt Rules/Upgrade Flyout/ThreeWayDiff/FieldReadOnly/type', }; -interface TemplateProps { - finalDiffableRule: DiffableRule; -} - -const Template: Story<TemplateProps> = (args) => { - return ( - <ThreeWayDiffStorybookProviders finalDiffableRule={args.finalDiffableRule}> - <FieldReadOnly fieldName="type" /> - </ThreeWayDiffStorybookProviders> - ); -}; - -export const Default = Template.bind({}); - -Default.args = { - finalDiffableRule: mockCustomQueryRule({ - type: 'query', - }), -}; +export const Default = () => <TypeReadOnly type="query" />; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/final_readonly.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/final_readonly.tsx deleted file mode 100644 index 21b8475fe3002..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/final_readonly.tsx +++ /dev/null @@ -1,25 +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 { EuiButtonEmpty } from '@elastic/eui'; -import React from 'react'; -import { FieldReadOnly } from './field_readonly'; -import * as i18n from '../translations'; -import { useFinalSideContext } from '../final_side/final_side_context'; - -export function FinalReadOnly() { - const { setEditMode, fieldName } = useFinalSideContext(); - - return ( - <> - <EuiButtonEmpty iconType="pencil" onClick={setEditMode}> - {i18n.EDIT_BUTTON_LABEL} - </EuiButtonEmpty> - <FieldReadOnly fieldName={fieldName} /> - </> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/index.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/index.ts new file mode 100644 index 0000000000000..4abd3b839ae2f --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/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 * from './field_final_readonly'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/storybook/three_way_diff_storybook_providers.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/storybook/three_way_diff_storybook_providers.tsx index 722f5ac9f6ada..4eb14440c056c 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/storybook/three_way_diff_storybook_providers.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_readonly/storybook/three_way_diff_storybook_providers.tsx @@ -15,9 +15,6 @@ import type { UpsellingService } from '@kbn/security-solution-upselling/service' import { createKibanaReactContext } from '@kbn/kibana-react-plugin/public'; import { ReactQueryClientProvider } from '../../../../../../../common/containers/query_client/query_client_provider'; import { UpsellingProvider } from '../../../../../../../common/components/upselling_provider'; -import { DiffableRuleContextProvider } from '../../diffable_rule_context'; -import type { DiffableRule } from '../../../../../../../../common/api/detection_engine'; -import { mockCustomQueryRule } from './mocks'; function createKibanaServicesMock(overrides?: Partial<CoreStart>) { const baseMock = { @@ -72,18 +69,14 @@ function createMockStore() { return store; } -const setRuleFieldResolvedValueMock = () => {}; - interface StorybookProvidersProps { children: React.ReactNode; kibanaServicesOverrides?: Record<string, unknown>; - finalDiffableRule?: DiffableRule; } export function ThreeWayDiffStorybookProviders({ children, kibanaServicesOverrides, - finalDiffableRule = mockCustomQueryRule(), }: StorybookProvidersProps) { const kibanaServicesMock = createKibanaServicesMock(kibanaServicesOverrides); const KibanaReactContext = createKibanaReactContext(kibanaServicesMock); @@ -95,12 +88,7 @@ export function ThreeWayDiffStorybookProviders({ <ReactQueryClientProvider> <ReduxStoreProvider store={store}> <UpsellingProvider upsellingService={kibanaServicesMock.upsellingService}> - <DiffableRuleContextProvider - finalDiffableRule={finalDiffableRule} - setRuleFieldResolvedValue={setRuleFieldResolvedValueMock} - > - {children} - </DiffableRuleContextProvider> + {children} </UpsellingProvider> </ReduxStoreProvider> </ReactQueryClientProvider> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/constants.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/constants.ts deleted file mode 100644 index 6316abcae48a3..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/constants.ts +++ /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. - */ - -export enum FinalSideMode { - READONLY = 'readonly', - EDIT = 'edit', -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side.tsx deleted file mode 100644 index 30e3f4461195a..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side.tsx +++ /dev/null @@ -1,53 +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 React from 'react'; -import { EuiTitle } from '@elastic/eui'; -import { SideHeader } from '../components/side_header'; -import { FinalSideHelpInfo } from './final_side_help_info'; -import * as i18n from './translations'; -import { FinalReadOnly } from '../final_readonly/final_readonly'; -import { FinalEdit } from '../final_edit/final_edit'; -import { FinalSideMode } from './constants'; -import type { UpgradeableDiffableFields } from '../../../../model/prebuilt_rule_upgrade/fields'; -import { assertUnreachable } from '../../../../../../../common/utility_types'; -import { FinalSideContextProvider, useFinalSideContext } from './final_side_context'; - -interface FinalSideProps { - fieldName: UpgradeableDiffableFields; -} - -export function FinalSide({ fieldName }: FinalSideProps): JSX.Element { - return ( - <> - <SideHeader> - <EuiTitle size="xxs"> - <h3> - {i18n.FINAL_UPDATE} - <FinalSideHelpInfo /> - </h3> - </EuiTitle> - </SideHeader> - <FinalSideContextProvider fieldName={fieldName}> - <FinalSideContent /> - </FinalSideContextProvider> - </> - ); -} - -function FinalSideContent(): JSX.Element { - const { mode } = useFinalSideContext(); - - switch (mode) { - case FinalSideMode.READONLY: - return <FinalReadOnly />; - case FinalSideMode.EDIT: - return <FinalEdit />; - default: - return assertUnreachable(mode); - } -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side_context.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side_context.tsx deleted file mode 100644 index 6beb0535e5e27..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side_context.tsx +++ /dev/null @@ -1,50 +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 React, { createContext, useContext, type PropsWithChildren, useCallback } from 'react'; -import { invariant } from '../../../../../../../common/utils/invariant'; -import { FinalSideMode } from './constants'; -import type { UpgradeableDiffableFields } from '../../../../model/prebuilt_rule_upgrade/fields'; - -interface FinalSideContextType { - fieldName: UpgradeableDiffableFields; - mode: FinalSideMode; - setReadOnlyMode: () => void; - setEditMode: () => void; -} - -const FinalSideContext = createContext<FinalSideContextType | null>(null); - -interface FinalSideContextProviderProps { - fieldName: UpgradeableDiffableFields; -} - -export function FinalSideContextProvider({ - children, - fieldName, -}: PropsWithChildren<FinalSideContextProviderProps>) { - const [mode, setMode] = React.useState<FinalSideMode>(FinalSideMode.READONLY); - const setReadOnlyMode = useCallback(() => setMode(FinalSideMode.READONLY), []); - const setEditMode = useCallback(() => setMode(FinalSideMode.EDIT), []); - - const contextValue = { - fieldName, - setReadOnlyMode, - setEditMode, - mode, - }; - - return <FinalSideContext.Provider value={contextValue}>{children}</FinalSideContext.Provider>; -} - -export function useFinalSideContext() { - const context = useContext(FinalSideContext); - - invariant(context !== null, 'useFinalSideContext must be used inside a FinalSideContextProvider'); - - return context; -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side_help_info.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side_help_info.tsx deleted file mode 100644 index 51e0c5097b97d..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/final_side_help_info.tsx +++ /dev/null @@ -1,43 +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 React from 'react'; -import useToggle from 'react-use/lib/useToggle'; -import { EuiPopover, EuiText, EuiButtonIcon } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n-react'; - -/** - * Theme doesn't expose width variables. Using provided size variables will require - * multiplying it by another magic constant. - * - * 320px width looks - * like a [commonly used width in EUI](https://github.com/search?q=repo%3Aelastic%2Feui%20320&type=code). - */ -const POPOVER_WIDTH = 320; - -export function FinalSideHelpInfo(): JSX.Element { - const [isPopoverOpen, togglePopover] = useToggle(false); - - const button = ( - <EuiButtonIcon - iconType="questionInCircle" - onClick={togglePopover} - aria-label="Open help popover" - /> - ); - - return ( - <EuiPopover button={button} isOpen={isPopoverOpen} closePopover={togglePopover}> - <EuiText style={{ width: POPOVER_WIDTH }} size="s"> - <FormattedMessage - id="xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeHelpText" - defaultMessage="Choose field values used in the upgraded rule. " - /> - </EuiText> - </EuiPopover> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/translations.ts deleted file mode 100644 index 8f6a10b5681be..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/final_side/translations.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 { i18n } from '@kbn/i18n'; - -export const FINAL_UPDATE = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.finalUpdate', - { - defaultMessage: 'Final update', - } -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/index.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/index.ts new file mode 100644 index 0000000000000..95e6836ca8f09 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/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 { RuleUpgrade as RuleUpgradeTab } from './rule_upgrade'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade.tsx new file mode 100644 index 0000000000000..4f87cf0ff202a --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade.tsx @@ -0,0 +1,53 @@ +/* + * 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 { EuiFlexGroup, EuiFlexItem, EuiSpacer, useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/css'; +import { SplitAccordion } from '../../../../../../common/components/split_accordion'; +import { FieldComparisonSide } from '../comparison_side/field_comparison_side'; +import { FieldFinalSide } from '../field_final_side'; +import { FieldUpgradeHeader } from './field_upgrade_header'; +import { useFieldUpgradeContext } from './field_upgrade_context'; + +export function FieldUpgrade(): JSX.Element { + const { euiTheme } = useEuiTheme(); + const { fieldName, fieldUpgradeState, hasConflict, isCustomized } = useFieldUpgradeContext(); + + return ( + <> + <SplitAccordion + header={ + <FieldUpgradeHeader + fieldName={fieldName} + fieldUpgradeState={fieldUpgradeState} + isCustomized={isCustomized} + /> + } + initialIsOpen={hasConflict} + data-test-subj="ruleUpgradePerFieldDiff" + > + <EuiFlexGroup gutterSize="s" alignItems="flexStart"> + <EuiFlexItem grow={1}> + <FieldComparisonSide /> + </EuiFlexItem> + <EuiFlexItem + grow={0} + css={css` + align-self: stretch; + border-right: ${euiTheme.border.thin}; + `} + /> + <EuiFlexItem grow={1}> + <FieldFinalSide /> + </EuiFlexItem> + </EuiFlexGroup> + </SplitAccordion> + <EuiSpacer size="s" /> + </> + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_context.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_context.tsx new file mode 100644 index 0000000000000..6f8a6033de406 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_context.tsx @@ -0,0 +1,192 @@ +/* + * 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, { createContext, useContext, useMemo } from 'react'; +import { useBoolean } from '@kbn/react-hooks'; +import { assertUnreachable } from '../../../../../../../common/utility_types'; +import { + ThreeWayDiffOutcome, + type DiffableRule, + type FieldsDiff, + type ThreeWayDiff, +} from '../../../../../../../common/api/detection_engine'; +import { invariant } from '../../../../../../../common/utils/invariant'; +import { convertRuleToDiffable } from '../../../../../../../common/detection_engine/prebuilt_rules/diff/convert_rule_to_diffable'; +import type { SetRuleFieldResolvedValueFn } from '../../../../model/prebuilt_rule_upgrade/set_rule_field_resolved_value'; +import type { UpgradeableDiffableFields } from '../../../../model/prebuilt_rule_upgrade/fields'; +import type { RuleUpgradeState } from '../../../../model/prebuilt_rule_upgrade'; +import { FieldUpgradeStateEnum } from '../../../../model/prebuilt_rule_upgrade'; + +export enum FieldFinalSideMode { + Readonly = 'readonly', + Edit = 'edit', +} + +interface FieldUpgradeContextType { + /** + * Field name of an upgradable field from DiffableRule + */ + fieldName: UpgradeableDiffableFields; + /** + * Field's upgrade state + */ + fieldUpgradeState: FieldUpgradeStateEnum; + /** + * Whether the field has an unresolved conflict. This state is derived from `fieldUpgradeState`. + */ + hasConflict: boolean; + /** + * Whether the field was changed after prebuilt rule installation, i.e. customized + */ + isCustomized: boolean; + /** + * Field's three way diff + */ + fieldDiff: ThreeWayDiff<unknown>; + /** + * Current final diffable rule including resolved values + */ + finalDiffableRule: DiffableRule; + /** + * Field final side view mode `Readonly` or `Editing` + */ + rightSideMode: FieldFinalSideMode; + /** + * Sets field's resolved value + */ + setRuleFieldResolvedValue: SetRuleFieldResolvedValueFn; + /** + * Sets field's right side `readonly` mode + */ + setReadOnlyMode: () => void; + /** + * Sets field's right side `edit` mode + */ + setEditMode: () => void; +} + +const FieldUpgradeContext = createContext<FieldUpgradeContextType | null>(null); + +interface FieldUpgradeContextProviderProps { + ruleUpgradeState: RuleUpgradeState; + fieldName: UpgradeableDiffableFields; + setRuleFieldResolvedValue: SetRuleFieldResolvedValueFn; + children: React.ReactNode; +} + +export function FieldUpgradeContextProvider({ + ruleUpgradeState, + fieldName, + setRuleFieldResolvedValue, + children, +}: FieldUpgradeContextProviderProps) { + const { state: fieldUpgradeState } = ruleUpgradeState.fieldsUpgradeState[fieldName]; + const fieldDiff = ruleUpgradeState.diff.fields[fieldName]; + const initialRightSideMode = + fieldUpgradeState === FieldUpgradeStateEnum.NonSolvableConflict + ? FieldFinalSideMode.Edit + : FieldFinalSideMode.Readonly; + + const [editing, { on: setEditMode, off: setReadOnlyMode }] = useBoolean( + initialRightSideMode === FieldFinalSideMode.Edit + ); + + invariant(fieldDiff, `Field diff is not found for ${fieldName}.`); + + const contextValue: FieldUpgradeContextType = useMemo( + () => ({ + fieldName, + fieldUpgradeState, + hasConflict: + fieldUpgradeState === FieldUpgradeStateEnum.SolvableConflict || + fieldUpgradeState === FieldUpgradeStateEnum.NonSolvableConflict, + isCustomized: calcIsCustomized(fieldDiff), + fieldDiff, + finalDiffableRule: calcFinalDiffableRule(ruleUpgradeState), + rightSideMode: editing ? FieldFinalSideMode.Edit : FieldFinalSideMode.Readonly, + setRuleFieldResolvedValue, + setReadOnlyMode, + setEditMode, + }), + [ + fieldName, + fieldUpgradeState, + fieldDiff, + ruleUpgradeState, + editing, + setRuleFieldResolvedValue, + setReadOnlyMode, + setEditMode, + ] + ); + + return ( + <FieldUpgradeContext.Provider value={contextValue}>{children}</FieldUpgradeContext.Provider> + ); +} + +export function useFieldUpgradeContext() { + const context = useContext(FieldUpgradeContext); + + invariant( + context !== null, + 'useFieldUpgradeContext must be used inside a FieldUpgradeContextProvider' + ); + + return context; +} + +function calcIsCustomized(fieldDiff: ThreeWayDiff<unknown>): boolean { + switch (fieldDiff.diff_outcome) { + case ThreeWayDiffOutcome.StockValueNoUpdate: + case ThreeWayDiffOutcome.StockValueCanUpdate: + case ThreeWayDiffOutcome.MissingBaseCanUpdate: + case ThreeWayDiffOutcome.MissingBaseNoUpdate: + return false; + + case ThreeWayDiffOutcome.CustomizedValueCanUpdate: + case ThreeWayDiffOutcome.CustomizedValueSameUpdate: + case ThreeWayDiffOutcome.CustomizedValueNoUpdate: + return true; + + default: + return assertUnreachable(fieldDiff.diff_outcome); + } +} + +function calcFinalDiffableRule(ruleUpgradeState: RuleUpgradeState): DiffableRule { + const fieldsResolvedValues = Object.entries(ruleUpgradeState.fieldsUpgradeState).reduce< + Record<string, unknown> + >((result, [fieldName, fieldState]) => { + if (fieldState.state === FieldUpgradeStateEnum.Accepted) { + result[fieldName] = fieldState.resolvedValue; + } + + return result; + }, {}); + + return { + ...convertRuleToDiffable(ruleUpgradeState.target_rule), + ...convertRuleFieldsDiffToDiffable(ruleUpgradeState.diff.fields), + ...fieldsResolvedValues, + } as DiffableRule; +} + +/** + * Assembles a `DiffableRule` from rule fields diff `merged_version`s. + */ +function convertRuleFieldsDiffToDiffable( + ruleFieldsDiff: FieldsDiff<Record<string, unknown>> +): Partial<DiffableRule> { + const mergeVersionRule: Record<string, unknown> = {}; + + for (const fieldName of Object.keys(ruleFieldsDiff)) { + mergeVersionRule[fieldName] = ruleFieldsDiff[fieldName].merged_version; + } + + return mergeVersionRule; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_header.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_header.tsx new file mode 100644 index 0000000000000..91339e25d5907 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_header.tsx @@ -0,0 +1,39 @@ +/* + * 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 { camelCase, startCase } from 'lodash'; +import { EuiFlexGroup, EuiTitle } from '@elastic/eui'; +import { fieldToDisplayNameMap } from '../../diff_components/translations'; +import type { FieldUpgradeStateEnum } from '../../../../model/prebuilt_rule_upgrade'; +import { FieldUpgradeStateInfo } from './field_upgrade_state_info'; +import { ModifiedBadge } from '../badges/modified_badge'; +import { FIELD_MODIFIED_BADGE_DESCRIPTION } from './translations'; + +interface FieldUpgradeHeaderProps { + fieldName: string; + fieldUpgradeState: FieldUpgradeStateEnum; + isCustomized: boolean; +} + +export function FieldUpgradeHeader({ + fieldName, + fieldUpgradeState, + isCustomized, +}: FieldUpgradeHeaderProps): JSX.Element { + return ( + <EuiFlexGroup alignItems="center" gutterSize="m"> + <EuiTitle data-test-subj="ruleUpgradeFieldDiffLabel" size="xs"> + <h5>{fieldToDisplayNameMap[fieldName] ?? startCase(camelCase(fieldName))}</h5> + </EuiTitle> + + {isCustomized && <ModifiedBadge tooltip={FIELD_MODIFIED_BADGE_DESCRIPTION} />} + + <FieldUpgradeStateInfo state={fieldUpgradeState} /> + </EuiFlexGroup> + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/field_upgrade_state_info.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/field_upgrade_state_info.tsx new file mode 100644 index 0000000000000..a85cf96cc50d2 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/field_upgrade_state_info.tsx @@ -0,0 +1,83 @@ +/* + * 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, { useMemo } from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; +import { assertUnreachable } from '../../../../../../../../common/utility_types'; +import { FieldUpgradeStateEnum } from '../../../../../model/prebuilt_rule_upgrade'; +import { ReadyForUpgradeBadge } from '../../badges/ready_for_upgrade_badge'; +import { ReviewRequiredBadge } from '../../badges/review_required_badge'; +import { ActionRequiredBadge } from '../../badges/action_required'; +import * as i18n from './translations'; + +interface FieldUpgradeStateInfoProps { + state: FieldUpgradeStateEnum; +} + +export function FieldUpgradeStateInfo({ state }: FieldUpgradeStateInfoProps): JSX.Element { + const { color, badge, title, description } = useMemo(() => { + switch (state) { + case FieldUpgradeStateEnum.NoUpdate: + return { + color: 'success', + title: i18n.NO_UPDATE, + description: i18n.NO_UPDATE_DESCRIPTION, + }; + + case FieldUpgradeStateEnum.NoConflict: + return { + color: 'success', + badge: <ReadyForUpgradeBadge />, + title: i18n.NO_CONFLICT, + description: i18n.NO_CONFLICT_DESCRIPTION, + }; + + case FieldUpgradeStateEnum.Accepted: + return { + color: 'success', + badge: <ReadyForUpgradeBadge />, + title: i18n.REVIEWED_AND_ACCEPTED, + }; + + case FieldUpgradeStateEnum.SolvableConflict: + return { + color: 'warning', + badge: <ReviewRequiredBadge />, + title: i18n.SOLVABLE_CONFLICT, + description: i18n.SOLVABLE_CONFLICT_DESCRIPTION, + }; + + case FieldUpgradeStateEnum.NonSolvableConflict: + return { + color: 'danger', + badge: <ActionRequiredBadge />, + title: i18n.NON_SOLVABLE_CONFLICT, + description: i18n.NON_SOLVABLE_CONFLICT_DESCRIPTION, + }; + + default: + return assertUnreachable(state); + } + }, [state]); + + return ( + <EuiText color={color} size="xs"> + <EuiFlexGroup gutterSize="s" alignItems="center"> + <EuiFlexItem grow={false}>{badge}</EuiFlexItem> + <EuiFlexItem grow={false}> + <strong>{title}</strong> + </EuiFlexItem> + + {description && ( + <EuiFlexItem grow={false}> + {i18n.SEPARATOR} {description} + </EuiFlexItem> + )} + </EuiFlexGroup> + </EuiText> + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/index.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/index.ts similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/components/field_upgrade_state_info/index.ts rename to x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/index.ts diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/translations.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/translations.tsx new file mode 100644 index 0000000000000..c3115c6ce0925 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/field_upgrade_state_info/translations.tsx @@ -0,0 +1,81 @@ +/* + * 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'; + +export const NO_UPDATE = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.noUpdate', + { + defaultMessage: 'No update', + } +); + +export const NO_UPDATE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.noUpdateDescription', + { + defaultMessage: + 'The field was modified after rule installation but does not have Elastic update.', + } +); + +export const NO_CONFLICT = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.noConflict', + { + defaultMessage: 'No conflicts', + } +); + +export const NO_CONFLICT_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.noConflictDescription', + { + defaultMessage: 'The update has no conflicts and has been applied to the final update.', + } +); + +export const REVIEWED_AND_ACCEPTED = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.reviewedAndAccepted', + { + defaultMessage: 'Reviewed and accepted', + } +); + +export const SOLVABLE_CONFLICT = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflict', + { + defaultMessage: 'Solved conflict', + } +); + +export const SOLVABLE_CONFLICT_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.solvableConflictDescription', + { + defaultMessage: + 'We have suggested an update for this modified field, please review before accepting.', + } +); + +export const NON_SOLVABLE_CONFLICT = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflict', + { + defaultMessage: 'Unsolved conflict', + } +); + +export const NON_SOLVABLE_CONFLICT_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.nonSolvableConflictDescription', + { + defaultMessage: + 'Unable to suggest a merged version for the update. Current version is provided for you to edit.', + } +); + +export const SEPARATOR = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.separator', + { + defaultMessage: ' - ', + } +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/index.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/index.ts new file mode 100644 index 0000000000000..af2bd34a7b6e8 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/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 * from './rule_upgrade'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade.tsx new file mode 100644 index 0000000000000..73746f3c48211 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade.tsx @@ -0,0 +1,86 @@ +/* + * 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, { memo } from 'react'; +import { EuiSpacer } from '@elastic/eui'; +import { + FieldUpgradeStateEnum, + type RuleUpgradeState, + type SetRuleFieldResolvedValueFn, +} from '../../../../model/prebuilt_rule_upgrade'; +import type { UpgradeableDiffableFields } from '../../../../model/prebuilt_rule_upgrade/fields'; +import { RuleUpgradeInfoBar } from './rule_upgrade_info_bar'; +import { RuleUpgradeCallout } from './rule_upgrade_callout'; +import { FieldUpgrade } from './field_upgrade'; +import { FieldUpgradeContextProvider } from './field_upgrade_context'; + +interface RuleUpgradeProps { + ruleUpgradeState: RuleUpgradeState; + setRuleFieldResolvedValue: SetRuleFieldResolvedValueFn; +} + +export const RuleUpgrade = memo(function RuleUpgrade({ + ruleUpgradeState, + setRuleFieldResolvedValue, +}: RuleUpgradeProps): JSX.Element { + const totalNumOfFields = calcTotalNumOfFields(ruleUpgradeState); + const numOfFieldsWithUpdates = calcNumOfFieldsWithUpdates(ruleUpgradeState); + const numOfSolvableConflicts = calcNumOfSolvableConflicts(ruleUpgradeState); + const numOfNonSolvableConflicts = calcNumOfNonSolvableConflicts(ruleUpgradeState); + const fieldNames = Object.keys( + ruleUpgradeState.fieldsUpgradeState + ) as UpgradeableDiffableFields[]; + + return ( + <> + <EuiSpacer size="s" /> + <RuleUpgradeInfoBar + totalNumOfFields={totalNumOfFields} + numOfFieldsWithUpdates={numOfFieldsWithUpdates} + numOfConflicts={numOfSolvableConflicts + numOfNonSolvableConflicts} + /> + <EuiSpacer size="s" /> + <RuleUpgradeCallout + numOfSolvableConflicts={numOfSolvableConflicts} + numOfNonSolvableConflicts={numOfNonSolvableConflicts} + /> + <EuiSpacer size="s" /> + {fieldNames.map((fieldName) => ( + <FieldUpgradeContextProvider + key={fieldName} + ruleUpgradeState={ruleUpgradeState} + fieldName={fieldName} + setRuleFieldResolvedValue={setRuleFieldResolvedValue} + > + <FieldUpgrade /> + </FieldUpgradeContextProvider> + ))} + </> + ); +}); + +function calcTotalNumOfFields(ruleUpgradeState: RuleUpgradeState): number { + return Object.keys(ruleUpgradeState.fieldsUpgradeState).length; +} + +function calcNumOfFieldsWithUpdates(ruleUpgradeState: RuleUpgradeState): number { + return Object.values(ruleUpgradeState.fieldsUpgradeState).filter( + ({ state }) => state !== FieldUpgradeStateEnum.NoUpdate + ).length; +} + +function calcNumOfSolvableConflicts(ruleUpgradeState: RuleUpgradeState): number { + return Object.values(ruleUpgradeState.fieldsUpgradeState).filter( + ({ state }) => state === FieldUpgradeStateEnum.SolvableConflict + ).length; +} + +function calcNumOfNonSolvableConflicts(ruleUpgradeState: RuleUpgradeState): number { + return Object.values(ruleUpgradeState.fieldsUpgradeState).filter( + ({ state }) => state === FieldUpgradeStateEnum.NonSolvableConflict + ).length; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade_callout.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade_callout.tsx new file mode 100644 index 0000000000000..3b3c0c7e49e51 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade_callout.tsx @@ -0,0 +1,79 @@ +/* + * 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 { EuiCallOut } from '@elastic/eui'; +import { ActionRequiredBadge } from '../badges/action_required'; +import { ReviewRequiredBadge } from '../badges/review_required_badge'; +import { ReadyForUpgradeBadge } from '../badges/ready_for_upgrade_badge'; +import * as i18n from './translations'; + +interface RuleUpgradeCalloutProps { + numOfSolvableConflicts: number; + numOfNonSolvableConflicts: number; +} + +export function RuleUpgradeCallout({ + numOfSolvableConflicts, + numOfNonSolvableConflicts, +}: RuleUpgradeCalloutProps): JSX.Element { + if (numOfNonSolvableConflicts > 0) { + return ( + <EuiCallOut + title={ + <> + <strong>{i18n.UPGRADE_STATUS}</strong> +   + <ActionRequiredBadge /> +   + {i18n.RULE_HAS_CONFLICTS(numOfNonSolvableConflicts + numOfSolvableConflicts)} + </> + } + color="danger" + size="s" + > + <p>{i18n.RULE_HAS_HARD_CONFLICTS_DESCRIPTION}</p> + </EuiCallOut> + ); + } + + if (numOfSolvableConflicts > 0) { + return ( + <EuiCallOut + title={ + <> + <strong>{i18n.UPGRADE_STATUS}</strong> +   + <ReviewRequiredBadge /> +   + {i18n.RULE_HAS_CONFLICTS(numOfSolvableConflicts)} + </> + } + color="warning" + size="s" + > + <p>{i18n.RULE_HAS_SOFT_CONFLICTS_DESCRIPTION}</p> + </EuiCallOut> + ); + } + + return ( + <EuiCallOut + title={ + <> + <strong>{i18n.UPGRADE_STATUS}</strong> +   + <ReadyForUpgradeBadge /> + </> + } + color="success" + size="s" + > + <p>{i18n.RULE_IS_READY_FOR_UPGRADE_DESCRIPTION}</p> + </EuiCallOut> + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade_info_bar.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade_info_bar.tsx new file mode 100644 index 0000000000000..3520734b2b257 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/rule_upgrade_info_bar.tsx @@ -0,0 +1,54 @@ +/* + * 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 { + UtilityBar, + UtilityBarGroup, + UtilityBarSection, + UtilityBarText, +} from '../../../../../../common/components/utility_bar'; +import * as i18n from './translations'; + +interface RuleUpgradeInfoBarProps { + totalNumOfFields: number; + numOfFieldsWithUpdates: number; + numOfConflicts: number; +} + +export function RuleUpgradeInfoBar({ + totalNumOfFields, + numOfFieldsWithUpdates, + numOfConflicts, +}: RuleUpgradeInfoBarProps): JSX.Element { + return ( + <UtilityBar> + <UtilityBarSection> + <UtilityBarGroup> + <UtilityBarText dataTestSubj="showingRules"> + {i18n.TOTAL_NUM_OF_FIELDS(totalNumOfFields)} + </UtilityBarText> + </UtilityBarGroup> + <UtilityBarGroup> + <UtilityBarText dataTestSubj="showingRules"> + {i18n.NUM_OF_FIELDS_WITH_UPDATES(numOfFieldsWithUpdates)} + </UtilityBarText> + </UtilityBarGroup> + <UtilityBarGroup> + <UtilityBarText dataTestSubj="showingRules"> + {i18n.NUM_OF_CONFLICTS(numOfConflicts)} + </UtilityBarText> + </UtilityBarGroup> + </UtilityBarSection> + <UtilityBarSection> + <UtilityBarGroup> + <i18n.RuleUpgradeHelper /> + </UtilityBarGroup> + </UtilityBarSection> + </UtilityBar> + ); +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/translations.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/translations.tsx new file mode 100644 index 0000000000000..a54ced917de54 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade/translations.tsx @@ -0,0 +1,116 @@ +/* + * 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 { EuiLink } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { useKibana } from '../../../../../../common/lib/kibana/kibana_react'; + +export const TOTAL_NUM_OF_FIELDS = (count: number) => ( + <FormattedMessage + id="xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.totalNumOfFieldsWithUpdates" + defaultMessage="{countValue} {count, plural, one {field} other {fields}} for review" + values={{ countValue: <strong>{count}</strong>, count }} + /> +); + +export const NUM_OF_FIELDS_WITH_UPDATES = (count: number) => ( + <FormattedMessage + id="xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.numOfFieldsWithUpdates" + defaultMessage="{countValue} {count, plural, one {field} other {fields}} in Elastic update" + values={{ countValue: <strong>{count}</strong>, count }} + /> +); + +export const NUM_OF_CONFLICTS = (count: number) => ( + <FormattedMessage + id="xpack.securitySolution.detectionEngine.rules.upgradeRules.diffTab.numOfConflicts" + defaultMessage="{countValue} {count, plural, one {conflict} other {conflicts}}" + values={{ countValue: <strong>{count}</strong>, count }} + /> +); + +const UPGRADE_RULES_DOCS_LINK = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.updateYourRulesDocsLink', + { + defaultMessage: 'update your rules', + } +); + +export function RuleUpgradeHelper(): JSX.Element { + const { + docLinks: { + links: { + securitySolution: { manageDetectionRules }, + }, + }, + } = useKibana().services; + const manageDetectionRulesUpdateRulesSection = `${manageDetectionRules}#edit-rules-settings`; + + return ( + <FormattedMessage + id="xpack.securitySolution.detectionEngine.rules.upgradeRules.ruleUpgradeHelper" + defaultMessage="Understand how to {docsLink}." + values={{ + docsLink: ( + <EuiLink href={manageDetectionRulesUpdateRulesSection} target="_blank"> + {UPGRADE_RULES_DOCS_LINK} + </EuiLink> + ), + }} + /> + ); +} + +export const UPGRADE_STATUS = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.upgradeStatusTitle', + { + defaultMessage: 'Update status:', + } +); + +export const RULE_HAS_CONFLICTS = (count: number) => + i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasConflicts', + { + values: { count }, + defaultMessage: + '{count} {count, plural, one {field has a conflict} other {fields have conflicts}}. Please review and provide a final update.', + } + ); + +export const RULE_HAS_SOFT_CONFLICTS_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasSoftConflictsDescription', + { + defaultMessage: + 'Please review and accept conflicts. You can also keep the current version without the updates, or accept the Elastic update but lose your modifications.', + } +); + +export const RULE_HAS_HARD_CONFLICTS_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleHasHardConflictsDescription', + { + defaultMessage: + 'Please provide an input for the conflicts. You can also keep the current version without the updates, or accept the Elastic update but lose your modifications.', + } +); + +export const RULE_IS_READY_FOR_UPGRADE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.fieldUpgradeState.ruleIsReadyForUpgradeDescription', + { + defaultMessage: 'There are no conflicts and the update is ready to be applied.', + } +); + +export const FIELD_MODIFIED_BADGE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeFlyout.fieldModifiedBadgeDescription', + { + defaultMessage: + "The field value was edited after rule's installation and differs from the value upon installation", + } +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade_conflicts_resolver_tab.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade_conflicts_resolver_tab.tsx deleted file mode 100644 index 95fa407fb7ca2..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/rule_upgrade_conflicts_resolver_tab.tsx +++ /dev/null @@ -1,41 +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 React from 'react'; -import { EuiSpacer } from '@elastic/eui'; -import type { - RuleUpgradeState, - SetRuleFieldResolvedValueFn, -} from '../../../model/prebuilt_rule_upgrade'; -import { RuleUpgradeInfoBar } from './components/rule_upgrade_info_bar'; -import { RuleUpgradeConflictsResolver } from './components/rule_upgrade_conflicts_resolver'; -import { DiffableRuleContextProvider } from './diffable_rule_context'; -import { RuleUpgradeCallout } from './components/rule_upgrade_callout'; - -interface RuleUpgradeConflictsResolverTabProps { - ruleUpgradeState: RuleUpgradeState; - setRuleFieldResolvedValue: SetRuleFieldResolvedValueFn; -} - -export function RuleUpgradeConflictsResolverTab({ - ruleUpgradeState, - setRuleFieldResolvedValue, -}: RuleUpgradeConflictsResolverTabProps): JSX.Element { - return ( - <DiffableRuleContextProvider - finalDiffableRule={ruleUpgradeState.finalRule} - setRuleFieldResolvedValue={setRuleFieldResolvedValue} - > - <EuiSpacer size="s" /> - <RuleUpgradeInfoBar ruleUpgradeState={ruleUpgradeState} /> - <EuiSpacer size="s" /> - <RuleUpgradeCallout ruleUpgradeState={ruleUpgradeState} /> - <EuiSpacer size="s" /> - <RuleUpgradeConflictsResolver ruleUpgradeState={ruleUpgradeState} /> - </DiffableRuleContextProvider> - ); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/translations.ts deleted file mode 100644 index ced733d87ff6e..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/translations.ts +++ /dev/null @@ -1,29 +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 { i18n } from '@kbn/i18n'; - -export const CANCEL_BUTTON_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.cancelButtonLabel', - { - defaultMessage: 'Cancel', - } -); - -export const SAVE_BUTTON_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.saveButtonLabel', - { - defaultMessage: 'Save', - } -); - -export const EDIT_BUTTON_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.editButtonLabel', - { - defaultMessage: 'Edit', - } -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/constants.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/constants.ts deleted file mode 100644 index 73a7e89a200a3..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/constants.ts +++ /dev/null @@ -1,58 +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 { EuiSelectOption } from '@elastic/eui'; -import * as i18n from './translations'; - -export enum Version { - Base = 'base', - Current = 'current', - Target = 'target', - Final = 'final', -} - -export enum SelectedVersions { - BaseTarget = 'base_target', - BaseCurrent = 'base_current', - BaseFinal = 'base_final', - CurrentTarget = 'current_target', - CurrentFinal = 'current_final', - TargetFinal = 'target_final', -} - -export const CURRENT_OPTIONS: EuiSelectOption[] = [ - { - value: SelectedVersions.CurrentFinal, - text: i18n.CURRENT_VS_FINAL, - }, - { - value: SelectedVersions.CurrentTarget, - text: i18n.CURRENT_VS_TARGET, - }, -]; - -export const TARGET_OPTIONS: EuiSelectOption[] = [ - { - value: SelectedVersions.TargetFinal, - text: i18n.TARGET_VS_FINAL, - }, -]; - -export const BASE_OPTIONS: EuiSelectOption[] = [ - { - value: SelectedVersions.BaseFinal, - text: i18n.BASE_VS_FINAL, - }, - { - value: SelectedVersions.BaseTarget, - text: i18n.BASE_VS_TARGET, - }, - { - value: SelectedVersions.BaseCurrent, - text: i18n.BASE_VS_CURRENT, - }, -]; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/translations.ts deleted file mode 100644 index 15699edc206e7..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/three_way_diff/versions_picker/translations.ts +++ /dev/null @@ -1,57 +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 { i18n } from '@kbn/i18n'; - -export const BASE_VS_TARGET = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsTargetLabel', - { - defaultMessage: 'Base vs Target', - } -); - -export const BASE_VS_CURRENT = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsCurrentLabel', - { - defaultMessage: 'Base vs Current', - } -); - -export const BASE_VS_FINAL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.baseVsFinalLabel', - { - defaultMessage: 'Base vs Final', - } -); - -export const CURRENT_VS_TARGET = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsTargetLabel', - { - defaultMessage: 'Current vs Target', - } -); - -export const CURRENT_VS_FINAL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.currentVsFinalLabel', - { - defaultMessage: 'Current vs Final', - } -); - -export const TARGET_VS_FINAL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.targetVsFinalLabel', - { - defaultMessage: 'Target vs Final', - } -); - -export const VERSION_PICKER_ARIA_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.versionsPicker.ariaLabel', - { - defaultMessage: 'Select versions to compare', - } -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/translations.ts index e7f36e2011f3c..c5183626a63a7 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/translations.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/translations.ts @@ -84,6 +84,13 @@ export const DESCRIPTION_FIELD_LABEL = i18n.translate( } ); +export const ALERT_SUPPRESSION_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.alertSuppressionFieldLabel', + { + defaultMessage: 'Alert suppression', + } +); + export const AUTHOR_FIELD_LABEL = i18n.translate( 'xpack.securitySolution.detectionEngine.ruleDetails.authorFieldLabel', { @@ -98,13 +105,27 @@ export const BUILDING_BLOCK_FIELD_LABEL = i18n.translate( } ); -export const BUILDING_BLOCK_FIELD_DESCRIPTION = i18n.translate( +export const BUILDING_BLOCK_ENABLED_FIELD_DESCRIPTION = i18n.translate( 'xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockFieldDescription', { defaultMessage: 'All generated alerts will be marked as "building block" alerts', } ); +export const BUILDING_BLOCK_DISABLED_FIELD_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockDisabledFieldDescription', + { + defaultMessage: 'Will not mark alerts as "building block" alerts', + } +); + +export const DATA_SOURCE_FIELD_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.dataSourceFieldLabel', + { + defaultMessage: 'Data source', + } +); + export const SEVERITY_FIELD_LABEL = i18n.translate( 'xpack.securitySolution.detectionEngine.ruleDetails.severityFieldLabel', { @@ -168,6 +189,13 @@ export const RULE_NAME_OVERRIDE_FIELD_LABEL = i18n.translate( } ); +export const RULE_NAME_OVERRIDE_DISABLED_FIELD_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.ruleNameOverrideDisabledFieldDescription', + { + defaultMessage: 'Rule name will not be overridden', + } +); + export const THREAT_FIELD_LABEL = i18n.translate( 'xpack.securitySolution.detectionEngine.ruleDetails.threatFieldLabel', { diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/field_upgrade_state.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/field_upgrade_state.ts deleted file mode 100644 index ae2d8799c0bd4..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/field_upgrade_state.ts +++ /dev/null @@ -1,12 +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. - */ - -export enum FieldUpgradeState { - Accepted = 'ACCEPTED', - SolvableConflict = 'SOLVABLE_CONFLICT', - NonSolvableConflict = 'NON_SOLVABLE_CONFLICT', -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/field_upgrade_state_enum.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/field_upgrade_state_enum.ts new file mode 100644 index 0000000000000..0fd522403edc6 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/field_upgrade_state_enum.ts @@ -0,0 +1,14 @@ +/* + * 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 enum FieldUpgradeStateEnum { + NoUpdate = 'NO_UPDATE', + NoConflict = 'NO_CONFLICT', + Accepted = 'ACCEPTED', + SolvableConflict = 'SOLVABLE_CONFLICT', + NonSolvableConflict = 'NON_SOLVABLE_CONFLICT', +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/fields_upgrade_state.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/fields_upgrade_state.ts index fb18061067ff8..88522bf559050 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/fields_upgrade_state.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/fields_upgrade_state.ts @@ -5,6 +5,16 @@ * 2.0. */ -import type { FieldUpgradeState } from './field_upgrade_state'; +import type { DiffableAllFields } from '../../../../../common/api/detection_engine'; +import type { FieldUpgradeStateEnum } from './field_upgrade_state_enum'; -export type FieldsUpgradeState = Record<string, FieldUpgradeState>; +export type FieldsUpgradeState = Record< + string, + | { + state: Exclude<FieldUpgradeStateEnum, FieldUpgradeStateEnum.Accepted>; + } + | { + state: FieldUpgradeStateEnum.Accepted; + resolvedValue: DiffableAllFields[keyof DiffableAllFields]; + } +>; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/index.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/index.ts index 57ee30f308f08..0e5a631fde2e2 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/index.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -export * from './field_upgrade_state'; +export * from './field_upgrade_state_enum'; export * from './fields_upgrade_state'; export * from './rule_upgrade_state'; export * from './rules_upgrade_state'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/rule_upgrade_state.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/rule_upgrade_state.ts index 0c72361bb29dc..7cd1f9c9ef843 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/rule_upgrade_state.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/model/prebuilt_rule_upgrade/rule_upgrade_state.ts @@ -5,23 +5,16 @@ * 2.0. */ -import { - type DiffableRule, - type RuleUpgradeInfoForReview, -} from '../../../../../common/api/detection_engine'; +import { type RuleUpgradeInfoForReview } from '../../../../../common/api/detection_engine'; import type { FieldsUpgradeState } from './fields_upgrade_state'; export interface RuleUpgradeState extends RuleUpgradeInfoForReview { /** - * Rule containing desired values users expect to see in the upgraded rule. + * Stores a record of customizable field names mapped to field upgrade state. */ - finalRule: DiffableRule; + fieldsUpgradeState: FieldsUpgradeState; /** * Indicates whether there are conflicts blocking rule upgrading. */ hasUnresolvedConflicts: boolean; - /** - * Stores a record of field names mapped to field upgrade state. - */ - fieldsUpgradeState: FieldsUpgradeState; } diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_add_prebuilt_rules_table_columns.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_add_prebuilt_rules_table_columns.tsx index a0a317e72b4c2..4e15de4011fab 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_add_prebuilt_rules_table_columns.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/add_prebuilt_rules_table/use_add_prebuilt_rules_table_columns.tsx @@ -55,7 +55,7 @@ export const RULE_NAME_COLUMN: TableColumn = { field: 'name', name: i18n.COLUMN_RULE, render: (value: RuleResponse['name'], rule: RuleResponse) => ( - <RuleName name={value} ruleId={rule.id} /> + <RuleName name={value} ruleId={rule.rule_id} /> ), sortable: true, truncateText: true, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/ml_job_upgrade_modal/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/ml_job_upgrade_modal/index.tsx deleted file mode 100644 index 84c0a5a579ba6..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/ml_job_upgrade_modal/index.tsx +++ /dev/null @@ -1,66 +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 { EuiConfirmModal } from '@elastic/eui'; -import type { MlSummaryJob } from '@kbn/ml-plugin/common'; -import React, { memo } from 'react'; -import styled from 'styled-components'; -import { rgba } from 'polished'; -import * as i18n from './translations'; - -const JobsUL = styled.ul` - max-height: 200px; - overflow-y: auto; - - &::-webkit-scrollbar { - height: ${({ theme }) => theme.eui.euiScrollBar}; - width: ${({ theme }) => theme.eui.euiScrollBar}; - } - - &::-webkit-scrollbar-thumb { - background-clip: content-box; - background-color: ${({ theme }) => rgba(theme.eui.euiColorDarkShade, 0.5)}; - border: ${({ theme }) => theme.eui.euiScrollBarCorner} solid transparent; - } - - &::-webkit-scrollbar-corner, - &::-webkit-scrollbar-track { - background-color: transparent; - } -`; - -export interface MlJobUpgradeModalProps { - jobs: MlSummaryJob[]; - onCancel: ( - event?: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent<HTMLButtonElement> - ) => void; - onConfirm?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void; -} - -const MlJobUpgradeModalComponent = ({ jobs, onCancel, onConfirm }: MlJobUpgradeModalProps) => { - return ( - <EuiConfirmModal - title={i18n.ML_JOB_UPGRADE_MODAL_TITLE} - onCancel={onCancel} - onConfirm={onConfirm} - cancelButtonText={i18n.ML_JOB_UPGRADE_MODAL_CANCEL} - confirmButtonText={i18n.ML_JOB_UPGRADE_MODAL_CONFIRM} - buttonColor="danger" - defaultFocusedButton="confirm" - > - <i18n.MlJobUpgradeModalBody /> - {i18n.ML_JOB_UPGRADE_MODAL_AFFECTED_JOBS} - <JobsUL> - {jobs.map((j) => { - return <li key={j.id}>{j.id}</li>; - })} - </JobsUL> - </EuiConfirmModal> - ); -}; - -export const MlJobUpgradeModal = memo(MlJobUpgradeModalComponent); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/ml_job_upgrade_modal/translations.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/ml_job_upgrade_modal/translations.tsx deleted file mode 100644 index caf94e5c1a261..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/ml_job_upgrade_modal/translations.tsx +++ /dev/null @@ -1,70 +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 React from 'react'; -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { MlJobCompatibilityLink } from '../../../../../../../common/components/links_to_docs'; - -export const ML_JOB_UPGRADE_MODAL_TITLE = i18n.translate( - 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.messageTitle', - { - defaultMessage: 'ML rule updates may override your existing rules', - } -); - -export const ML_JOB_UPGRADE_MODAL_CANCEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.cancelTitle', - { - defaultMessage: 'Cancel', - } -); - -export const ML_JOB_UPGRADE_MODAL_CONFIRM = i18n.translate( - 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.confirmTitle', - { - defaultMessage: 'Load rules', - } -); - -export const ML_JOB_UPGRADE_MODAL_AFFECTED_JOBS = i18n.translate( - 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.affectedJobsTitle', - { - defaultMessage: 'Affected jobs:', - } -); - -export const MlJobUpgradeModalBody = () => ( - <FormattedMessage - id="xpack.securitySolution.detectionEngine.mlJobUpgradeModal.messageBody" - defaultMessage="{summary} Documentation: {docs}" - values={{ - summary: ( - <p> - <FormattedMessage - id="xpack.securitySolution.detectionEngine.mlJobUpgradeModal.messageBody.summary" - defaultMessage="New V3 machine learning jobs have been released, - and the latest corresponding prebuilt detection rules now use these - new ML jobs. You're currently running one or more V1/V2 jobs, which - only work with legacy prebuilt rules. To ensure continued coverage using - V1/V2 jobs, you may need to duplicate or create new rules before - updating your Elastic prebuilt detection rules. Check the documentation - below for instructions on how to keep using the V1/V2 jobs, and how to - start using the new V3 jobs." - /> - </p> - ), - docs: ( - <ul> - <li> - <MlJobCompatibilityLink /> - </li> - </ul> - ), - }} - /> -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/upgrade_conflicts_modal/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/upgrade_conflicts_modal/index.tsx deleted file mode 100644 index 0c664398c51f6..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/upgrade_conflicts_modal/index.tsx +++ /dev/null @@ -1,36 +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 { EuiConfirmModal, EuiText } from '@elastic/eui'; -import React, { memo } from 'react'; -import * as i18n from './translations'; - -export interface UpgradeConflictsModalProps { - onCancel: ( - event?: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent<HTMLButtonElement> - ) => void; - onConfirm?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void; -} - -const UpgradeConflictsModalComponent = ({ onCancel, onConfirm }: UpgradeConflictsModalProps) => { - return ( - <EuiConfirmModal - title={i18n.UPGRADE_CONFLICTS_MODAL_TITLE} - onCancel={onCancel} - onConfirm={onConfirm} - cancelButtonText={i18n.UPGRADE_CONFLICTS_MODAL_CANCEL} - confirmButtonText={i18n.UPGRADE_CONFLICTS_MODAL_CONFIRM} - buttonColor="primary" - defaultFocusedButton="confirm" - data-test-subj="upgradeConflictsModal" - > - <EuiText>{i18n.UPGRADE_CONFLICTS_MODAL_BODY}</EuiText> - </EuiConfirmModal> - ); -}; - -export const UpgradeConflictsModal = memo(UpgradeConflictsModalComponent); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/rule_type_change_callout.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/rule_type_change_callout.tsx index f66fd92a685fe..0111ceb40d38f 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/rule_type_change_callout.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/rule_type_change_callout.tsx @@ -5,17 +5,28 @@ * 2.0. */ -import { EuiCallOut } from '@elastic/eui'; import React from 'react'; +import { EuiCallOut } from '@elastic/eui'; import { RULE_TYPE_CHANGE_CALLOUT_DESCRIPTION, RULE_TYPE_CHANGE_CALLOUT_TITLE, + RULE_TYPE_CHANGE_WITH_CUSTOMIZATIONS_CALLOUT_DESCRIPTION, } from './translations'; -export const RuleTypeChangeCallout = () => { +interface RuleTypeChangeCalloutProps { + hasCustomizations: boolean; +} + +export function RuleTypeChangeCallout({ + hasCustomizations, +}: RuleTypeChangeCalloutProps): JSX.Element { return ( <EuiCallOut title={RULE_TYPE_CHANGE_CALLOUT_TITLE} color="danger" iconType="warning"> - <p>{RULE_TYPE_CHANGE_CALLOUT_DESCRIPTION}</p> + <p> + {hasCustomizations + ? RULE_TYPE_CHANGE_WITH_CUSTOMIZATIONS_CALLOUT_DESCRIPTION + : RULE_TYPE_CHANGE_CALLOUT_DESCRIPTION} + </p> </EuiCallOut> ); -}; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/translations.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/translations.ts deleted file mode 100644 index 9a07c1bb6908a..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/translations.ts +++ /dev/null @@ -1,95 +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 { i18n } from '@kbn/i18n'; - -export const UPDATE_ALL = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeAll', - { - defaultMessage: 'Update all', - } -); - -export const UPDATE_SELECTED_RULES = (numberOfSelectedRules: number) => { - return i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeSelected', - { - defaultMessage: 'Update {numberOfSelectedRules} selected rule(s)', - values: { numberOfSelectedRules }, - } - ); -}; - -export const BULK_UPDATE_BUTTON_TOOLTIP_NO_PERMISSIONS = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.bulkButtons.noPermissions', - { - defaultMessage: "You don't have permissions to update rules", - } -); - -export const BULK_UPDATE_ALL_RULES_BUTTON_TOOLTIP_CONFLICTS = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.bulkButtons.allRules.conflicts', - { - defaultMessage: 'All rules have conflicts. Update them individually.', - } -); - -export const BULK_UPDATE_SELECTED_RULES_BUTTON_TOOLTIP_CONFLICTS = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.bulkButtons.selectedRules.conflicts', - { - defaultMessage: 'All selected rules have conflicts. Update them individually.', - } -); - -export const SEARCH_PLACEHOLDER = i18n.translate( - 'xpack.securitySolution.detectionEngine.rules.upgradeRules.searchBarPlaceholder', - { - defaultMessage: 'Search by rule name', - } -); - -export const UPDATE_BUTTON_LABEL = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.updateButtonLabel', - { - defaultMessage: 'Update', - } -); -export const UPDATE_ERROR = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.updateError', - { - defaultMessage: 'Update error', - } -); - -export const UPDATE_FLYOUT_PER_FIELD_TOOLTIP_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.perFieldTooltip', - { - defaultMessage: 'View changes field by field.', - } -); - -export const UPDATE_FLYOUT_JSON_VIEW_TOOLTIP_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.ruleDetails.jsonViewTooltip', - { - defaultMessage: 'View the latest rule changes in JSON format.', - } -); - -export const RULE_TYPE_CHANGE_CALLOUT_TITLE = i18n.translate( - 'xpack.securitySolution.detectionEngine.upgradeRules.ruleTypeChangeCalloutTitle', - { - defaultMessage: 'Rule type change', - } -); - -export const RULE_TYPE_CHANGE_CALLOUT_DESCRIPTION = i18n.translate( - 'xpack.securitySolution.detectionEngine.upgradeRules.ruleTypeChangeCalloutDescription', - { - defaultMessage: - 'Your customization will be lost at update. Please take note of your customization or clone this rule before updating.', - } -); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/translations.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/translations.tsx new file mode 100644 index 0000000000000..4bcf0bd0a3b68 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/translations.tsx @@ -0,0 +1,142 @@ +/* + * 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 { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import type { ReactNode } from 'react'; + +export const UPDATE_ALL = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeAll', + { + defaultMessage: 'Update all', + } +); + +export const UPDATE_SELECTED_RULES = (numberOfSelectedRules: number) => { + return i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.upgradeSelected', + { + defaultMessage: 'Update {numberOfSelectedRules} selected rule(s)', + values: { numberOfSelectedRules }, + } + ); +}; + +export const BULK_UPDATE_BUTTON_TOOLTIP_NO_PERMISSIONS = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.bulkButtons.noPermissions', + { + defaultMessage: "You don't have permissions to update rules", + } +); + +export const BULK_UPDATE_ALL_RULES_BUTTON_TOOLTIP_CONFLICTS = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.bulkButtons.allRules.conflicts', + { + defaultMessage: 'All rules have conflicts. Update them individually.', + } +); + +export const BULK_UPDATE_SELECTED_RULES_BUTTON_TOOLTIP_CONFLICTS = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.bulkButtons.selectedRules.conflicts', + { + defaultMessage: 'All selected rules have conflicts. Update them individually.', + } +); + +export const SEARCH_PLACEHOLDER = i18n.translate( + 'xpack.securitySolution.detectionEngine.rules.upgradeRules.searchBarPlaceholder', + { + defaultMessage: 'Search by rule name', + } +); + +export const UPDATE_BUTTON_LABEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.updateButtonLabel', + { + defaultMessage: 'Update', + } +); +export const UPDATE_ERROR = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.updateError', + { + defaultMessage: 'Update error', + } +); + +export const UPDATE_FLYOUT_PER_FIELD_TOOLTIP_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.perFieldTooltip', + { + defaultMessage: 'View changes field by field.', + } +); + +export const UPDATE_FLYOUT_JSON_VIEW_TOOLTIP_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.ruleDetails.jsonViewTooltip', + { + defaultMessage: 'View the latest rule changes in JSON format.', + } +); + +export const RULE_TYPE_CHANGE_CALLOUT_TITLE = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeRules.ruleTypeChangeCalloutTitle', + { + defaultMessage: 'Rule type change', + } +); + +export const RULE_TYPE_CHANGE_CALLOUT_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeRules.ruleTypeChangeCalloutDescription', + { + defaultMessage: 'Elastic update has rule type changed.', + } +); + +export const RULE_TYPE_CHANGE_WITH_CUSTOMIZATIONS_CALLOUT_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeRules.ruleTypeChangeWithCustomizationCalloutDescription', + { + defaultMessage: + 'Your customization will be lost at update. Please take note of your customization or clone this rule before updating.', + } +); + +export const LAST_UPDATE = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeFlyout.header.lastUpdate', + { + defaultMessage: 'Last update', + } +); + +export const UPDATED_BY_AND_WHEN = (updatedBy: ReactNode, updatedAt: ReactNode) => ( + <FormattedMessage + id="xpack.securitySolution.detectionEngine.upgradeFlyout.header.updated" + defaultMessage="{updatedBy} on {updatedAt}" + values={{ updatedBy, updatedAt }} + /> +); + +export const SEVERITY = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeFlyout.header.severity', + { + defaultMessage: 'Severity', + } +); + +export const FIELD_UPDATES = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeFlyout.header.fieldUpdates', + { + defaultMessage: 'Field updates', + } +); + +export const RULE_MODIFIED_BADGE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.detectionEngine.upgradeFlyout.ruleModifiedBadgeDescription', + { + defaultMessage: + 'The rule was edited after installation and field values differs from the values upon installation', + } +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_flyout_subheader.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_flyout_subheader.tsx new file mode 100644 index 0000000000000..bab43e55c2e00 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_flyout_subheader.tsx @@ -0,0 +1,85 @@ +/* + * 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, { memo } from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiText } from '@elastic/eui'; +import { camelCase, startCase } from 'lodash'; +import type { FieldsDiff } from '../../../../../../common/api/detection_engine'; +import { FormattedDate } from '../../../../../common/components/formatted_date'; +import { SeverityBadge } from '../../../../../common/components/severity_badge'; +import { ModifiedBadge } from '../../../../rule_management/components/rule_details/three_way_diff/badges/modified_badge'; +import type { RuleUpgradeState } from '../../../../rule_management/model/prebuilt_rule_upgrade'; +import { fieldToDisplayNameMap } from '../../../../rule_management/components/rule_details/diff_components/translations'; +import * as i18n from './translations'; + +interface UpgradeFlyoutSubHeaderProps { + ruleUpgradeState: RuleUpgradeState; +} + +export const UpgradeFlyoutSubHeader = memo(function UpgradeFlyoutSubHeader({ + ruleUpgradeState, +}: UpgradeFlyoutSubHeaderProps): JSX.Element { + const lastUpdate = ( + <EuiText size="s"> + <strong> + {i18n.LAST_UPDATE} + {':'} + </strong>{' '} + {i18n.UPDATED_BY_AND_WHEN( + ruleUpgradeState.current_rule.updated_by, + <FormattedDate value={ruleUpgradeState.current_rule.updated_at} fieldName="" /> + )} + </EuiText> + ); + + const severity = ( + <EuiFlexGroup gutterSize="xs"> + <EuiText size="s"> + <strong> + {i18n.SEVERITY} + {':'} + </strong> + </EuiText> + <SeverityBadge value={ruleUpgradeState.target_rule.severity} /> + </EuiFlexGroup> + ); + + const customized = ruleUpgradeState.current_rule.rule_source.type === 'external' && + ruleUpgradeState.current_rule.rule_source.is_customized && ( + <ModifiedBadge tooltip={i18n.RULE_MODIFIED_BADGE_DESCRIPTION} /> + ); + + const fieldsDiff: FieldsDiff<Record<string, unknown>> = ruleUpgradeState.diff.fields; + const fieldsNamesWithUpdates = Object.keys(ruleUpgradeState.fieldsUpgradeState).filter( + (fieldName) => fieldsDiff[fieldName].has_update + ); + const fieldUpdates = !fieldsDiff.type && fieldsNamesWithUpdates.length > 0 && ( + <EuiText size="s"> + <strong> + {i18n.FIELD_UPDATES} + {':'} + </strong>{' '} + {fieldsNamesWithUpdates + .map((fieldName) => fieldToDisplayNameMap[fieldName] ?? startCase(camelCase(fieldName))) + .join(', ')} + </EuiText> + ); + + return ( + <> + <EuiFlexGroup alignItems="center" gutterSize="s"> + <EuiFlexItem grow={false}>{lastUpdate}</EuiFlexItem> + <EuiFlexItem grow={false}>{severity}</EuiFlexItem> + </EuiFlexGroup> + <EuiSpacer size="xs" /> + <EuiFlexGroup alignItems="center" gutterSize="s"> + {customized && <EuiFlexItem grow={false}>{customized}</EuiFlexItem>} + <EuiFlexItem grow={false}>{fieldUpdates}</EuiFlexItem> + </EuiFlexGroup> + </> + ); +}); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table.tsx index 2437a5e87866d..623f36c5ebb1d 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table.tsx @@ -15,7 +15,7 @@ import { EuiSkeletonText, EuiSkeletonTitle, } from '@elastic/eui'; -import React, { useMemo, useState } from 'react'; +import React, { useState } from 'react'; import type { RuleUpgradeState } from '../../../../rule_management/model/prebuilt_rule_upgrade'; import * as i18n from '../../../../../detections/pages/detection_engine/rules/translations'; import { RULES_TABLE_INITIAL_PAGE_SIZE, RULES_TABLE_PAGE_SIZE_OPTIONS } from '../constants'; @@ -38,22 +38,17 @@ const NO_ITEMS_MESSAGE = ( * Table Component for displaying rules that have available updates */ export const UpgradePrebuiltRulesTable = React.memo(() => { - const upgradeRulesTableContext = useUpgradePrebuiltRulesTableContext(); - const [selected, setSelected] = useState<RuleUpgradeState[]>([]); - const { state: { - rulesUpgradeState, + ruleUpgradeStates, hasRulesToUpgrade, isLoading, isRefetching, isUpgradingSecurityPackages, }, - } = upgradeRulesTableContext; - const ruleUpgradeStatesArray = useMemo( - () => Object.values(rulesUpgradeState), - [rulesUpgradeState] - ); + } = useUpgradePrebuiltRulesTableContext(); + const [selected, setSelected] = useState<RuleUpgradeState[]>([]); + const rulesColumns = useUpgradePrebuiltRulesTableColumns(); const shouldShowProgress = isUpgradingSecurityPackages || isRefetching; @@ -102,7 +97,7 @@ export const UpgradePrebuiltRulesTable = React.memo(() => { </EuiFlexGroup> <EuiInMemoryTable - items={ruleUpgradeStatesArray} + items={ruleUpgradeStates} sorting pagination={{ initialPageSize: RULES_TABLE_INITIAL_PAGE_SIZE, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_buttons.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_buttons.tsx index 8a1d201149654..8184481e25cc3 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_buttons.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_buttons.tsx @@ -21,14 +21,14 @@ export const UpgradePrebuiltRulesTableButtons = ({ }: UpgradePrebuiltRulesTableButtonsProps) => { const { state: { - ruleUpgradeInfos, + ruleUpgradeStates, hasRulesToUpgrade, loadingRules, isRefetching, isUpgradingSecurityPackages, isPrebuiltRulesCustomizationEnabled, }, - actions: { upgradeRules }, + actions: { upgradeRules, upgradeAllRules }, } = useUpgradePrebuiltRulesTableContext(); const [{ loading: isUserDataLoading, canUserCRUD }] = useUserData(); const canUserEditRules = canUserCRUD && !isUserDataLoading; @@ -38,10 +38,13 @@ export const UpgradePrebuiltRulesTableButtons = ({ const isRuleUpgrading = loadingRules.length > 0; const isRequestInProgress = isRuleUpgrading || isRefetching || isUpgradingSecurityPackages; + const doAllSelectedRulesHaveConflicts = - isPrebuiltRulesCustomizationEnabled && isAllRuleHaveConflicts(selectedRules); + isPrebuiltRulesCustomizationEnabled && + selectedRules.every(({ hasUnresolvedConflicts }) => hasUnresolvedConflicts); const doAllRulesHaveConflicts = - isPrebuiltRulesCustomizationEnabled && isAllRuleHaveConflicts(ruleUpgradeInfos); + isPrebuiltRulesCustomizationEnabled && + ruleUpgradeStates.every(({ hasUnresolvedConflicts }) => hasUnresolvedConflicts); const { selectedRulesButtonTooltip, allRulesButtonTooltip } = useBulkUpdateButtonsTooltipContent({ canUserEditRules, @@ -55,12 +58,6 @@ export const UpgradePrebuiltRulesTableButtons = ({ [selectedRules, upgradeRules] ); - const upgradeAllRules = useCallback( - // Upgrade all rules, ignoring filter and selection - () => upgradeRules(ruleUpgradeInfos.map((rule) => rule.rule_id)), - [ruleUpgradeInfos, upgradeRules] - ); - return ( <EuiFlexGroup alignItems="center" gutterSize="s" responsive={false} wrap={true}> {shouldDisplayUpgradeSelectedRulesButton ? ( @@ -146,7 +143,3 @@ const useBulkUpdateButtonsTooltipContent = ({ allRulesButtonTooltip: undefined, }; }; - -function isAllRuleHaveConflicts(rules: Array<{ diff: { num_fields_with_conflicts: number } }>) { - return rules.every((rule) => rule.diff.num_fields_with_conflicts > 0); -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_context.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_context.tsx index 6aad29f8b5792..751b24f865e61 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_context.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/upgrade_prebuilt_rules_table_context.tsx @@ -10,49 +10,40 @@ import type { Dispatch, SetStateAction } from 'react'; import React, { createContext, useCallback, useContext, useMemo, useState } from 'react'; import type { RuleFieldsToUpgrade, - RuleUpgradeInfoForReview, RuleUpgradeSpecifier, } from '../../../../../../common/api/detection_engine'; +import { useIsPrebuiltRulesCustomizationEnabled } from '../../../../rule_management/hooks/use_is_prebuilt_rules_customization_enabled'; +import { useAppToasts } from '../../../../../common/hooks/use_app_toasts'; +import type { RuleUpgradeState } from '../../../../rule_management/model/prebuilt_rule_upgrade'; +import { RuleUpgradeTab } from '../../../../rule_management/components/rule_details/three_way_diff'; +import { PerFieldRuleDiffTab } from '../../../../rule_management/components/rule_details/per_field_rule_diff_tab'; +import { useIsUpgradingSecurityPackages } from '../../../../rule_management/logic/use_upgrade_security_packages'; import type { RuleResponse, RuleSignatureId, } from '../../../../../../common/api/detection_engine/model/rule_schema'; import { invariant } from '../../../../../../common/utils/invariant'; -import { useAppToasts } from '../../../../../common/hooks/use_app_toasts'; -import { PerFieldRuleDiffTab } from '../../../../rule_management/components/rule_details/per_field_rule_diff_tab'; import { TabContentPadding } from '../../../../rule_management/components/rule_details/rule_details_flyout'; -import { RuleDiffTab } from '../../../../rule_management/components/rule_details/rule_diff_tab'; -import { RuleUpgradeConflictsResolverTab } from '../../../../rule_management/components/rule_details/three_way_diff/rule_upgrade_conflicts_resolver_tab'; -import * as ruleDetailsI18n from '../../../../rule_management/components/rule_details/translations'; -import { useIsPrebuiltRulesCustomizationEnabled } from '../../../../rule_management/hooks/use_is_prebuilt_rules_customization_enabled'; import { usePerformUpgradeSpecificRules } from '../../../../rule_management/logic/prebuilt_rules/use_perform_rule_upgrade'; import { usePrebuiltRulesUpgradeReview } from '../../../../rule_management/logic/prebuilt_rules/use_prebuilt_rules_upgrade_review'; -import { useIsUpgradingSecurityPackages } from '../../../../rule_management/logic/use_upgrade_security_packages'; -import type { - RuleUpgradeState, - RulesUpgradeState, -} from '../../../../rule_management/model/prebuilt_rule_upgrade'; -import { FieldUpgradeState } from '../../../../rule_management/model/prebuilt_rule_upgrade/field_upgrade_state'; -import { isNonUpgradeableFieldName } from '../../../../rule_management/model/prebuilt_rule_upgrade/fields'; +import { RuleDiffTab } from '../../../../rule_management/components/rule_details/rule_diff_tab'; +import { FieldUpgradeStateEnum } from '../../../../rule_management/model/prebuilt_rule_upgrade/field_upgrade_state_enum'; import { useRulePreviewFlyout } from '../use_rule_preview_flyout'; -import { MlJobUpgradeModal } from './modals/ml_job_upgrade_modal'; -import { UpgradeConflictsModal } from './modals/upgrade_conflicts_modal'; -import * as i18n from './translations'; import type { UpgradePrebuiltRulesTableFilterOptions } from './use_filter_prebuilt_rules_to_upgrade'; import { useFilterPrebuiltRulesToUpgrade } from './use_filter_prebuilt_rules_to_upgrade'; import { usePrebuiltRulesUpgradeState } from './use_prebuilt_rules_upgrade_state'; -import { useMlJobUpgradeModal, useUpgradeConflictsModal } from './use_upgrade_modals'; +import { useOutdatedMlJobsUpgradeModal } from './use_ml_jobs_upgrade_modal'; +import { useUpgradeWithConflictsModal } from './use_upgrade_with_conflicts_modal'; import { RuleTypeChangeCallout } from './rule_type_change_callout'; +import { UpgradeFlyoutSubHeader } from './upgrade_flyout_subheader'; +import * as ruleDetailsI18n from '../../../../rule_management/components/rule_details/translations'; +import * as i18n from './translations'; export interface UpgradePrebuiltRulesTableState { - /** - * Rule upgrade state (all rules available for upgrade) - */ - ruleUpgradeInfos: RuleUpgradeInfoForReview[]; /** * Rule upgrade state after applying `filterOptions` */ - rulesUpgradeState: RulesUpgradeState; + ruleUpgradeStates: RuleUpgradeState[]; /** * Currently selected table filter */ @@ -101,6 +92,7 @@ export const PREBUILT_RULE_UPDATE_FLYOUT_ANCHOR = 'updatePrebuiltRulePreview'; export interface UpgradePrebuiltRulesTableActions { reFetchRules: () => void; upgradeRules: (ruleIds: RuleSignatureId[]) => void; + upgradeAllRules: () => void; setFilterOptions: Dispatch<SetStateAction<UpgradePrebuiltRulesTableFilterOptions>>; openRulePreview: (ruleId: string) => void; } @@ -146,28 +138,20 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ refetchInterval: false, // Disable automatic refetching since request is expensive keepPreviousData: true, // Use this option so that the state doesn't jump between "success" and "loading" on page change }); - const filteredRuleUpgradeInfos = useFilterPrebuiltRulesToUpgrade({ + const { rulesUpgradeState, setRuleFieldResolvedValue } = + usePrebuiltRulesUpgradeState(ruleUpgradeInfos); + const ruleUpgradeStates = useMemo(() => Object.values(rulesUpgradeState), [rulesUpgradeState]); + const filteredRuleUpgradeStates = useFilterPrebuiltRulesToUpgrade({ filterOptions, - rules: ruleUpgradeInfos, + data: ruleUpgradeStates, }); - const { rulesUpgradeState, setRuleFieldResolvedValue } = - usePrebuiltRulesUpgradeState(filteredRuleUpgradeInfos); const { - isVisible: isLegacyMLJobsModalVisible, - legacyJobsInstalled, + modal: confirmLegacyMlJobsUpgradeModal, confirmLegacyMLJobs, - handleConfirm: handleLegacyMLJobsConfirm, - handleCancel: handleLegacyMLJobsCancel, - loadingJobs, - } = useMlJobUpgradeModal(); - - const { - isVisible: isConflictsModalVisible, - confirmConflictsUpgrade, - handleConfirm: handleConflictsConfirm, - handleCancel: handleConflictsCancel, - } = useUpgradeConflictsModal(); + isLoading: areMlJobsLoading, + } = useOutdatedMlJobsUpgradeModal(); + const { modal: upgradeConflictsModal, confirmConflictsUpgrade } = useUpgradeWithConflictsModal(); const { mutateAsync: upgradeSpecificRulesRequest } = usePerformUpgradeSpecificRules(); @@ -263,6 +247,19 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ [isPrebuiltRulesCustomizationEnabled, upgradeRulesToResolved, upgradeRulesToTarget] ); + const upgradeAllRules = useCallback( + // Upgrade all rules, ignoring filter and selection + () => upgradeRules(ruleUpgradeInfos.map((rule) => rule.rule_id)), + [ruleUpgradeInfos, upgradeRules] + ); + + const subHeaderFactory = useCallback( + (rule: RuleResponse) => + rulesUpgradeState[rule.rule_id] ? ( + <UpgradeFlyoutSubHeader ruleUpgradeState={rulesUpgradeState[rule.rule_id]} /> + ) : null, + [rulesUpgradeState] + ); const ruleActionsFactory = useCallback( (rule: RuleResponse, closeRulePreview: () => void) => { const ruleUpgradeState = rulesUpgradeState[rule.rule_id]; @@ -313,11 +310,19 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ } const hasRuleTypeChange = ruleUpgradeState.diff.fields.type?.has_update ?? false; + const hasCustomizations = + ruleUpgradeState.current_rule.rule_source.type === 'external' && + ruleUpgradeState.current_rule.rule_source.is_customized; const shouldShowRuleTypeChangeCallout = hasRuleTypeChange && isPrebuiltRulesCustomizationEnabled; + let updateTabContent = ( <PerFieldRuleDiffTab - header={shouldShowRuleTypeChangeCallout ? <RuleTypeChangeCallout /> : null} + header={ + shouldShowRuleTypeChangeCallout && ( + <RuleTypeChangeCallout hasCustomizations={hasCustomizations} /> + ) + } ruleDiff={ruleUpgradeState.diff} /> ); @@ -327,7 +332,7 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ // conflicts, only accept the target rule. if (isPrebuiltRulesCustomizationEnabled && !hasRuleTypeChange) { updateTabContent = ( - <RuleUpgradeConflictsResolverTab + <RuleUpgradeTab ruleUpgradeState={ruleUpgradeState} setRuleFieldResolvedValue={setRuleFieldResolvedValue} /> @@ -352,12 +357,12 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ </EuiToolTip> ), content: ( - <TabContentPadding> + <div> <RuleDiffTab oldRule={ruleUpgradeState.current_rule} newRule={ruleUpgradeState.target_rule} /> - </TabContentPadding> + </div> ), }; @@ -366,11 +371,12 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ [rulesUpgradeState, setRuleFieldResolvedValue, isPrebuiltRulesCustomizationEnabled] ); const filteredRules = useMemo( - () => filteredRuleUpgradeInfos.map((rule) => rule.target_rule), - [filteredRuleUpgradeInfos] + () => filteredRuleUpgradeStates.map(({ target_rule: targetRule }) => targetRule), + [filteredRuleUpgradeStates] ); const { rulePreviewFlyout, openRulePreview } = useRulePreviewFlyout({ rules: filteredRules, + subHeaderFactory, ruleActionsFactory, extraTabsFactory, flyoutProps: { @@ -383,22 +389,22 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ () => ({ reFetchRules: refetch, upgradeRules, + upgradeAllRules, setFilterOptions, openRulePreview, }), - [refetch, upgradeRules, openRulePreview] + [refetch, upgradeRules, upgradeAllRules, openRulePreview] ); - const providerValue = useMemo<UpgradePrebuiltRulesContextType>(() => { - return { + const providerValue = useMemo<UpgradePrebuiltRulesContextType>( + () => ({ state: { - ruleUpgradeInfos, - rulesUpgradeState, + ruleUpgradeStates: filteredRuleUpgradeStates, hasRulesToUpgrade: isFetched && ruleUpgradeInfos.length > 0, filterOptions, tags, isFetched, - isLoading: isLoading || loadingJobs, + isLoading: isLoading || areMlJobsLoading, isRefetching, isUpgradingSecurityPackages, loadingRules, @@ -406,39 +412,29 @@ export const UpgradePrebuiltRulesTableContextProvider = ({ isPrebuiltRulesCustomizationEnabled, }, actions, - }; - }, [ - ruleUpgradeInfos, - rulesUpgradeState, - filterOptions, - tags, - isFetched, - isLoading, - loadingJobs, - isRefetching, - isUpgradingSecurityPackages, - loadingRules, - dataUpdatedAt, - actions, - isPrebuiltRulesCustomizationEnabled, - ]); + }), + [ + ruleUpgradeInfos.length, + filteredRuleUpgradeStates, + filterOptions, + tags, + isFetched, + isLoading, + areMlJobsLoading, + isRefetching, + isUpgradingSecurityPackages, + loadingRules, + dataUpdatedAt, + actions, + isPrebuiltRulesCustomizationEnabled, + ] + ); return ( <UpgradePrebuiltRulesTableContext.Provider value={providerValue}> <> - {isLegacyMLJobsModalVisible && ( - <MlJobUpgradeModal - jobs={legacyJobsInstalled} - onCancel={handleLegacyMLJobsCancel} - onConfirm={handleLegacyMLJobsConfirm} - /> - )} - {isConflictsModalVisible && ( - <UpgradeConflictsModal - onCancel={handleConflictsCancel} - onConfirm={handleConflictsConfirm} - /> - )} + {confirmLegacyMlJobsUpgradeModal} + {upgradeConflictsModal} {children} {rulePreviewFlyout} </> @@ -457,21 +453,15 @@ export const useUpgradePrebuiltRulesTableContext = (): UpgradePrebuiltRulesConte }; function constructRuleFieldsToUpgrade(ruleUpgradeState: RuleUpgradeState): RuleFieldsToUpgrade { - const finalRule = ruleUpgradeState.finalRule as Record<string, unknown>; const ruleFieldsToUpgrade: Record<string, unknown> = {}; - for (const fieldName of Object.keys(ruleUpgradeState.fieldsUpgradeState)) { - const fieldUpgradeState = ruleUpgradeState.fieldsUpgradeState[fieldName]; - - if (!isNonUpgradeableFieldName(fieldName) && fieldUpgradeState === FieldUpgradeState.Accepted) { - invariant( - fieldName in finalRule, - `Ready to upgrade field "${fieldName}" is not found in final rule` - ); - + for (const [fieldName, fieldUpgradeState] of Object.entries( + ruleUpgradeState.fieldsUpgradeState + )) { + if (fieldUpgradeState.state === FieldUpgradeStateEnum.Accepted) { ruleFieldsToUpgrade[fieldName] = { pick_version: 'RESOLVED', - resolved_value: finalRule[fieldName], + resolved_value: fieldUpgradeState.resolvedValue, }; } } diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_filter_prebuilt_rules_to_upgrade.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_filter_prebuilt_rules_to_upgrade.ts index b5a0e123d7510..a3dd45f8fabc0 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_filter_prebuilt_rules_to_upgrade.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_filter_prebuilt_rules_to_upgrade.ts @@ -6,7 +6,7 @@ */ import { useMemo } from 'react'; -import type { RuleUpgradeInfoForReview } from '../../../../../../common/api/detection_engine/prebuilt_rules'; +import type { RuleUpgradeState } from '../../../../rule_management/model/prebuilt_rule_upgrade'; import { RuleCustomizationEnum, type FilterOptions } from '../../../../rule_management/logic/types'; export type UpgradePrebuiltRulesTableFilterOptions = Pick< @@ -14,16 +14,19 @@ export type UpgradePrebuiltRulesTableFilterOptions = Pick< 'filter' | 'tags' | 'ruleSource' >; +interface UseFilterPrebuiltRulesToUpgradeParams { + data: RuleUpgradeState[]; + filterOptions: UpgradePrebuiltRulesTableFilterOptions; +} + export const useFilterPrebuiltRulesToUpgrade = ({ - rules, + data, filterOptions, -}: { - rules: RuleUpgradeInfoForReview[]; - filterOptions: UpgradePrebuiltRulesTableFilterOptions; -}) => { - const filteredRules = useMemo(() => { +}: UseFilterPrebuiltRulesToUpgradeParams): RuleUpgradeState[] => { + return useMemo(() => { const { filter, tags, ruleSource } = filterOptions; - return rules.filter((ruleInfo) => { + + return data.filter((ruleInfo) => { if (filter && !ruleInfo.current_rule.name.toLowerCase().includes(filter.toLowerCase())) { return false; } @@ -53,7 +56,5 @@ export const useFilterPrebuiltRulesToUpgrade = ({ return true; }); - }, [filterOptions, rules]); - - return filteredRules; + }, [filterOptions, data]); }; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/index.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/index.ts new file mode 100644 index 0000000000000..470224e90a547 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/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 * from './use_ml_jobs_upgrade_modal'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/ml_jobs_upgrade_modal.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/ml_jobs_upgrade_modal.tsx new file mode 100644 index 0000000000000..37d6a84728aea --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/ml_jobs_upgrade_modal.tsx @@ -0,0 +1,66 @@ +/* + * 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, { memo } from 'react'; +import { EuiConfirmModal } from '@elastic/eui'; +import type { MlSummaryJob } from '@kbn/ml-plugin/common'; +import styled from 'styled-components'; +import { rgba } from 'polished'; +import * as i18n from './translations'; + +const JobsUL = styled.ul` + max-height: 200px; + overflow-y: auto; + + &::-webkit-scrollbar { + height: ${({ theme }) => theme.eui.euiScrollBar}; + width: ${({ theme }) => theme.eui.euiScrollBar}; + } + + &::-webkit-scrollbar-thumb { + background-clip: content-box; + background-color: ${({ theme }) => rgba(theme.eui.euiColorDarkShade, 0.5)}; + border: ${({ theme }) => theme.eui.euiScrollBarCorner} solid transparent; + } + + &::-webkit-scrollbar-corner, + &::-webkit-scrollbar-track { + background-color: transparent; + } +`; + +interface OutdatedMlJobsUpgradeModalProps { + jobs: MlSummaryJob[]; + onCancel: () => void; + onConfirm: () => void; +} + +export const OutdatedMlJobsUpgradeModal = memo(function LegacyMlJobsUpgradeModal({ + jobs, + onCancel, + onConfirm, +}: OutdatedMlJobsUpgradeModalProps): JSX.Element { + return ( + <EuiConfirmModal + title={i18n.ML_JOB_UPGRADE_MODAL_TITLE} + onCancel={onCancel} + onConfirm={onConfirm} + cancelButtonText={i18n.ML_JOB_UPGRADE_MODAL_CANCEL} + confirmButtonText={i18n.ML_JOB_UPGRADE_MODAL_CONFIRM} + buttonColor="danger" + defaultFocusedButton="confirm" + > + <i18n.MlJobUpgradeModalBody /> + {i18n.ML_JOB_UPGRADE_MODAL_AFFECTED_JOBS} + <JobsUL> + {jobs.map((j) => { + return <li key={j.id}>{j.id}</li>; + })} + </JobsUL> + </EuiConfirmModal> + ); +}); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/translations.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/translations.tsx new file mode 100644 index 0000000000000..8250591de71cc --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/translations.tsx @@ -0,0 +1,70 @@ +/* + * 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 { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { MlJobCompatibilityLink } from '../../../../../../common/components/links_to_docs'; + +export const ML_JOB_UPGRADE_MODAL_TITLE = i18n.translate( + 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.messageTitle', + { + defaultMessage: 'ML rule updates may override your existing rules', + } +); + +export const ML_JOB_UPGRADE_MODAL_CANCEL = i18n.translate( + 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.cancelTitle', + { + defaultMessage: 'Cancel', + } +); + +export const ML_JOB_UPGRADE_MODAL_CONFIRM = i18n.translate( + 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.confirmTitle', + { + defaultMessage: 'Load rules', + } +); + +export const ML_JOB_UPGRADE_MODAL_AFFECTED_JOBS = i18n.translate( + 'xpack.securitySolution.detectionEngine.mlJobUpgradeModal.affectedJobsTitle', + { + defaultMessage: 'Affected jobs:', + } +); + +export const MlJobUpgradeModalBody = () => ( + <FormattedMessage + id="xpack.securitySolution.detectionEngine.mlJobUpgradeModal.messageBody" + defaultMessage="{summary} Documentation: {docs}" + values={{ + summary: ( + <p> + <FormattedMessage + id="xpack.securitySolution.detectionEngine.mlJobUpgradeModal.messageBody.summary" + defaultMessage="New V3 machine learning jobs have been released, + and the latest corresponding prebuilt detection rules now use these + new ML jobs. You're currently running one or more V1/V2 jobs, which + only work with legacy prebuilt rules. To ensure continued coverage using + V1/V2 jobs, you may need to duplicate or create new rules before + updating your Elastic prebuilt detection rules. Check the documentation + below for instructions on how to keep using the V1/V2 jobs, and how to + start using the new V3 jobs." + /> + </p> + ), + docs: ( + <ul> + <li> + <MlJobCompatibilityLink /> + </li> + </ul> + ), + }} + /> +); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/use_ml_jobs_upgrade_modal.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/use_ml_jobs_upgrade_modal.tsx new file mode 100644 index 0000000000000..cb4682f49a603 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_ml_jobs_upgrade_modal/use_ml_jobs_upgrade_modal.tsx @@ -0,0 +1,46 @@ +/* + * 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 { ReactNode } from 'react'; +import React, { useCallback } from 'react'; +import { useBoolean } from '@kbn/react-hooks'; +import { useInstalledSecurityJobs } from '../../../../../../common/components/ml/hooks/use_installed_security_jobs'; +import { affectedJobIds } from '../../../../../../../common/machine_learning/affected_job_ids'; +import { useAsyncConfirmation } from '../../rules_table/use_async_confirmation'; +import { OutdatedMlJobsUpgradeModal } from './ml_jobs_upgrade_modal'; + +interface UseOutdatedMlJobsUpgradeModalResult { + modal: ReactNode; + isLoading: boolean; + confirmLegacyMLJobs: () => Promise<boolean>; +} + +export function useOutdatedMlJobsUpgradeModal(): UseOutdatedMlJobsUpgradeModalResult { + const [isVisible, { on: showModal, off: hideModal }] = useBoolean(false); + const { loading, jobs } = useInstalledSecurityJobs(); + const legacyJobsInstalled = jobs.filter((job) => affectedJobIds.includes(job.id)); + const [confirmLegacyMLJobs, confirm, cancel] = useAsyncConfirmation({ + onInit: showModal, + onFinish: hideModal, + }); + + const handleLegacyMLJobsConfirm = useCallback(async () => { + if (legacyJobsInstalled.length > 0) { + return confirmLegacyMLJobs(); + } + + return true; + }, [confirmLegacyMLJobs, legacyJobsInstalled]); + + return { + modal: isVisible && ( + <OutdatedMlJobsUpgradeModal jobs={jobs} onConfirm={confirm} onCancel={cancel} /> + ), + confirmLegacyMLJobs: handleLegacyMLJobsConfirm, + isLoading: loading, + }; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_prebuilt_rules_upgrade_state.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_prebuilt_rules_upgrade_state.ts index b50ca7da1849d..81d64b1b39945 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_prebuilt_rules_upgrade_state.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_prebuilt_rules_upgrade_state.ts @@ -12,16 +12,16 @@ import type { FieldsUpgradeState, SetRuleFieldResolvedValueFn, } from '../../../../rule_management/model/prebuilt_rule_upgrade'; -import { FieldUpgradeState } from '../../../../rule_management/model/prebuilt_rule_upgrade'; +import { FieldUpgradeStateEnum } from '../../../../rule_management/model/prebuilt_rule_upgrade'; import { type FieldsDiff, type DiffableAllFields, - type DiffableRule, type RuleUpgradeInfoForReview, ThreeWayDiffConflict, type RuleSignatureId, + NON_UPGRADEABLE_DIFFABLE_FIELDS, } from '../../../../../../common/api/detection_engine'; -import { convertRuleToDiffable } from '../../../../../../common/detection_engine/prebuilt_rules/diff/convert_rule_to_diffable'; +import { assertUnreachable } from '../../../../../../common/utility_types'; type RuleResolvedConflicts = Partial<DiffableAllFields>; type RulesResolvedConflicts = Record<RuleSignatureId, RuleResolvedConflicts>; @@ -54,21 +54,23 @@ export function usePrebuiltRulesUpgradeState( const state: RulesUpgradeState = {}; for (const ruleUpgradeInfo of ruleUpgradeInfos) { + const fieldsUpgradeState = calcFieldsState( + ruleUpgradeInfo.diff.fields, + rulesResolvedConflicts[ruleUpgradeInfo.rule_id] ?? {} + ); + + const hasRuleTypeChange = Boolean(ruleUpgradeInfo.diff.fields.type); + const hasFieldConflicts = Object.values(fieldsUpgradeState).some( + ({ state: fieldState }) => + fieldState === FieldUpgradeStateEnum.SolvableConflict || + fieldState === FieldUpgradeStateEnum.NonSolvableConflict + ); + state[ruleUpgradeInfo.rule_id] = { ...ruleUpgradeInfo, - finalRule: calcFinalDiffableRule( - ruleUpgradeInfo, - rulesResolvedConflicts[ruleUpgradeInfo.rule_id] ?? {} - ), - fieldsUpgradeState: calcFieldsState( - ruleUpgradeInfo.diff.fields, - rulesResolvedConflicts[ruleUpgradeInfo.rule_id] ?? {} - ), + fieldsUpgradeState, hasUnresolvedConflicts: isPrebuiltRulesCustomizationEnabled - ? getUnacceptedConflictsCount( - ruleUpgradeInfo.diff.fields, - rulesResolvedConflicts[ruleUpgradeInfo.rule_id] ?? {} - ) > 0 + ? hasRuleTypeChange || hasFieldConflicts : false, }; } @@ -82,76 +84,49 @@ export function usePrebuiltRulesUpgradeState( }; } -function calcFinalDiffableRule( - ruleUpgradeInfo: RuleUpgradeInfoForReview, - ruleResolvedConflicts: RuleResolvedConflicts -): DiffableRule { - return { - ...convertRuleToDiffable(ruleUpgradeInfo.target_rule), - ...convertRuleFieldsDiffToDiffable(ruleUpgradeInfo.diff.fields), - ...ruleResolvedConflicts, - } as DiffableRule; -} - -/** - * Assembles a `DiffableRule` from rule fields diff `merged_version`s. - */ -function convertRuleFieldsDiffToDiffable( - ruleFieldsDiff: FieldsDiff<Record<string, unknown>> -): Partial<DiffableRule> { - const mergeVersionRule: Record<string, unknown> = {}; - - for (const fieldName of Object.keys(ruleFieldsDiff)) { - mergeVersionRule[fieldName] = ruleFieldsDiff[fieldName].merged_version; - } - - return mergeVersionRule; -} +const NON_UPGRADEABLE_DIFFABLE_FIELDS_SET: Readonly<Set<string>> = new Set( + NON_UPGRADEABLE_DIFFABLE_FIELDS +); function calcFieldsState( - ruleFieldsDiff: FieldsDiff<Record<string, unknown>>, + fieldsDiff: FieldsDiff<Record<string, unknown>>, ruleResolvedConflicts: RuleResolvedConflicts ): FieldsUpgradeState { const fieldsState: FieldsUpgradeState = {}; - for (const fieldName of Object.keys(ruleFieldsDiff)) { - switch (ruleFieldsDiff[fieldName].conflict) { + for (const fieldName of Object.keys(fieldsDiff)) { + if (NON_UPGRADEABLE_DIFFABLE_FIELDS_SET.has(fieldName)) { + // eslint-disable-next-line no-continue + continue; + } + + const fieldDiff = fieldsDiff[fieldName]; + + switch (fieldDiff.conflict) { case ThreeWayDiffConflict.NONE: - fieldsState[fieldName] = FieldUpgradeState.Accepted; + fieldsState[fieldName] = { + state: fieldDiff.has_update + ? FieldUpgradeStateEnum.NoConflict + : FieldUpgradeStateEnum.NoUpdate, + }; break; case ThreeWayDiffConflict.SOLVABLE: - fieldsState[fieldName] = FieldUpgradeState.SolvableConflict; + fieldsState[fieldName] = { state: FieldUpgradeStateEnum.SolvableConflict }; break; case ThreeWayDiffConflict.NON_SOLVABLE: - fieldsState[fieldName] = FieldUpgradeState.NonSolvableConflict; + fieldsState[fieldName] = { state: FieldUpgradeStateEnum.NonSolvableConflict }; break; + + default: + assertUnreachable(fieldDiff.conflict); } } - for (const fieldName of Object.keys(ruleResolvedConflicts)) { - fieldsState[fieldName] = FieldUpgradeState.Accepted; + for (const [fieldName, resolvedValue] of Object.entries(ruleResolvedConflicts)) { + fieldsState[fieldName] = { state: FieldUpgradeStateEnum.Accepted, resolvedValue }; } return fieldsState; } - -function getUnacceptedConflictsCount( - ruleFieldsDiff: FieldsDiff<Record<string, unknown>>, - ruleResolvedConflicts: RuleResolvedConflicts -): number { - const fieldNames = Object.keys(ruleFieldsDiff); - const fieldNamesWithConflict = fieldNames.filter( - (fieldName) => ruleFieldsDiff[fieldName].conflict !== ThreeWayDiffConflict.NONE - ); - const fieldNamesWithConflictSet = new Set(fieldNamesWithConflict); - - for (const resolvedConflictField of Object.keys(ruleResolvedConflicts)) { - if (fieldNamesWithConflictSet.has(resolvedConflictField)) { - fieldNamesWithConflictSet.delete(resolvedConflictField); - } - } - - return fieldNamesWithConflictSet.size; -} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_modals.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_modals.tsx deleted file mode 100644 index 256ccf47c194f..0000000000000 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_modals.tsx +++ /dev/null @@ -1,53 +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 { useCallback } from 'react'; -import { useInstalledSecurityJobs } from '../../../../../common/components/ml/hooks/use_installed_security_jobs'; -import { useBoolState } from '../../../../../common/hooks/use_bool_state'; -import { affectedJobIds } from '../../../../../../common/machine_learning/affected_job_ids'; -import { useAsyncConfirmation } from '../rules_table/use_async_confirmation'; - -export const useMlJobUpgradeModal = () => { - const [isVisible, showModal, hideModal] = useBoolState(false); - const { loading: loadingJobs, jobs } = useInstalledSecurityJobs(); - const legacyJobsInstalled = jobs.filter((job) => affectedJobIds.includes(job.id)); - const [confirmLegacyMLJobs, handleConfirm, handleCancel] = useAsyncConfirmation({ - onInit: showModal, - onFinish: hideModal, - }); - - const handleLegacyMLJobsConfirm = useCallback(async () => { - if (legacyJobsInstalled.length > 0) { - return confirmLegacyMLJobs(); - } - return true; - }, [confirmLegacyMLJobs, legacyJobsInstalled]); - - return { - isVisible, - legacyJobsInstalled, - confirmLegacyMLJobs: handleLegacyMLJobsConfirm, - handleConfirm, - handleCancel, - loadingJobs, - }; -}; - -export const useUpgradeConflictsModal = () => { - const [isVisible, showModal, hideModal] = useBoolState(false); - const [confirmConflictsUpgrade, handleConfirm, handleCancel] = useAsyncConfirmation({ - onInit: showModal, - onFinish: hideModal, - }); - - return { - isVisible, - confirmConflictsUpgrade, - handleConfirm, - handleCancel, - }; -}; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx index c2b1f8e3dbe46..919664c100b2f 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_prebuilt_rules_table_columns.tsx @@ -59,7 +59,7 @@ const RULE_NAME_COLUMN: TableColumn = { field: 'current_rule.name', name: i18n.COLUMN_RULE, render: (value: RuleUpgradeState['current_rule']['name'], ruleUpgradeState: RuleUpgradeState) => ( - <RuleName name={value} ruleId={ruleUpgradeState.id} /> + <RuleName name={value} ruleId={ruleUpgradeState.rule_id} /> ), sortable: true, truncateText: true, diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/index.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/index.ts new file mode 100644 index 0000000000000..7a01864683869 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/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 * from './use_upgrade_modal'; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/upgrade_conflicts_modal/translations.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/translations.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/modals/upgrade_conflicts_modal/translations.tsx rename to x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/translations.tsx diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/upgrade_modal.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/upgrade_modal.tsx new file mode 100644 index 0000000000000..3374ae5c16b4d --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/upgrade_modal.tsx @@ -0,0 +1,35 @@ +/* + * 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 { EuiConfirmModal, EuiText } from '@elastic/eui'; +import React, { memo } from 'react'; +import * as i18n from './translations'; + +interface UpgradeWithConflictsModalProps { + onCancel: () => void; + onConfirm: () => void; +} + +export const UpgradeWithConflictsModal = memo(function ConfirmUpgradeWithConflictsModal({ + onCancel, + onConfirm, +}: UpgradeWithConflictsModalProps): JSX.Element { + return ( + <EuiConfirmModal + title={i18n.UPGRADE_CONFLICTS_MODAL_TITLE} + onCancel={onCancel} + onConfirm={onConfirm} + cancelButtonText={i18n.UPGRADE_CONFLICTS_MODAL_CANCEL} + confirmButtonText={i18n.UPGRADE_CONFLICTS_MODAL_CONFIRM} + buttonColor="primary" + defaultFocusedButton="confirm" + data-test-subj="confirmUpgradeWithConflictsModal" + > + <EuiText>{i18n.UPGRADE_CONFLICTS_MODAL_BODY}</EuiText> + </EuiConfirmModal> + ); +}); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/use_upgrade_modal.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/use_upgrade_modal.tsx new file mode 100644 index 0000000000000..0714ba458d34e --- /dev/null +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/upgrade_prebuilt_rules_table/use_upgrade_with_conflicts_modal/use_upgrade_modal.tsx @@ -0,0 +1,30 @@ +/* + * 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 { ReactNode } from 'react'; +import React from 'react'; +import { useBoolean } from '@kbn/react-hooks'; +import { useAsyncConfirmation } from '../../rules_table/use_async_confirmation'; +import { UpgradeWithConflictsModal } from './upgrade_modal'; + +interface UseUpgradeWithConflictsModalResult { + modal: ReactNode; + confirmConflictsUpgrade: () => Promise<boolean>; +} + +export function useUpgradeWithConflictsModal(): UseUpgradeWithConflictsModalResult { + const [isVisible, { on: showModal, off: hideModal }] = useBoolean(false); + const [confirmConflictsUpgrade, confirm, cancel] = useAsyncConfirmation({ + onInit: showModal, + onFinish: hideModal, + }); + + return { + modal: isVisible && <UpgradeWithConflictsModal onConfirm={confirm} onCancel={cancel} />, + confirmConflictsUpgrade, + }; +} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rule_preview_flyout.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rule_preview_flyout.tsx index d6dcdd0592b85..0c16a5c6ed165 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rule_preview_flyout.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_rule_preview_flyout.tsx @@ -17,6 +17,7 @@ interface UseRulePreviewFlyoutParams { rules: RuleResponse[]; ruleActionsFactory: (rule: RuleResponse, closeRulePreview: () => void) => ReactNode; extraTabsFactory?: (rule: RuleResponse) => EuiTabbedContentTab[]; + subHeaderFactory?: (rule: RuleResponse) => ReactNode; flyoutProps: RulePreviewFlyoutProps; } @@ -38,10 +39,15 @@ export function useRulePreviewFlyout({ rules, extraTabsFactory, ruleActionsFactory, + subHeaderFactory, flyoutProps, }: UseRulePreviewFlyoutParams): UseRulePreviewFlyoutResult { const [rule, setRuleForPreview] = useState<RuleResponse | undefined>(); const closeRulePreview = useCallback(() => setRuleForPreview(undefined), []); + const subHeader = useMemo( + () => (rule ? subHeaderFactory?.(rule) : null), + [subHeaderFactory, rule] + ); const ruleActions = useMemo( () => rule && ruleActionsFactory(rule, closeRulePreview), [rule, ruleActionsFactory, closeRulePreview] @@ -61,13 +67,14 @@ export function useRulePreviewFlyout({ closeFlyout={closeRulePreview} ruleActions={ruleActions} extraTabs={extraTabs} + subHeader={subHeader} /> ), openRulePreview: useCallback( (ruleId: RuleSignatureId) => { - const ruleToShowInFlyout = rules.find((x) => x.id === ruleId); + const ruleToShowInFlyout = rules.find((x) => x.rule_id === ruleId); - invariant(ruleToShowInFlyout, `Rule with id ${ruleId} not found`); + invariant(ruleToShowInFlyout, `Rule with rule_id ${ruleId} not found`); setRuleForPreview(ruleToShowInFlyout); }, [rules, setRuleForPreview] diff --git a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.test.tsx b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.test.tsx index db1cd501bc3fc..48ae76514c288 100644 --- a/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/containers/detection_engine/lists/use_lists_config.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { renderHook } from '@testing-library/react-hooks'; +import { renderHook } from '@testing-library/react'; import { useKibana } from '../../../../common/lib/kibana'; import { useListsIndex } from './use_lists_index'; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts b/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts index fa33d8fa575be..f30b841277267 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/api/api.ts @@ -45,6 +45,7 @@ import { API_VERSIONS, RISK_ENGINE_CLEANUP_URL, RISK_ENGINE_SCHEDULE_NOW_URL, + RISK_ENGINE_CONFIGURE_SO_URL, } from '../../../common/constants'; import type { SnakeToCamelCase } from '../common/utils'; import { useKibana } from '../../common/lib/kibana/kibana_react'; @@ -298,6 +299,14 @@ export const useEntityAnalyticsRoutes = () => { method: 'DELETE', }); + const updateSavedObjectConfiguration = (params: {}) => { + http.fetch(RISK_ENGINE_CONFIGURE_SO_URL, { + version: API_VERSIONS.public.v1, + method: 'PUT', + body: JSON.stringify(params), + }); + }; + return { fetchRiskScorePreview, fetchRiskEngineStatus, @@ -317,6 +326,7 @@ export const useEntityAnalyticsRoutes = () => { calculateEntityRiskScore, cleanUpRiskEngine, fetchEntitiesList, + updateSavedObjectConfiguration, }; }, [http]); }; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_configure_risk_engine_saved_object.ts b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_configure_risk_engine_saved_object.ts new file mode 100644 index 0000000000000..a45cc84075972 --- /dev/null +++ b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_configure_risk_engine_saved_object.ts @@ -0,0 +1,39 @@ +/* + * 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 { UseMutationOptions } from '@tanstack/react-query'; +import { useMutation } from '@tanstack/react-query'; +import type { TaskManagerUnavailableResponse } from '../../../../common/api/entity_analytics/common'; +import { useEntityAnalyticsRoutes } from '../api'; +import type { ConfigureRiskEngineSavedObjectResponse } from '../../../../common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.gen'; + +interface ConfigureRiskEngineParams { + includeClosedAlerts: boolean; + range: { start: string; end: string }; +} + +export const useConfigureSORiskEngineMutation = ( + options?: UseMutationOptions< + ConfigureRiskEngineSavedObjectResponse, + { body: ConfigureRiskEngineSavedObjectResponse | TaskManagerUnavailableResponse }, + ConfigureRiskEngineParams + > +) => { + const { updateSavedObjectConfiguration } = useEntityAnalyticsRoutes(); + + return useMutation< + ConfigureRiskEngineSavedObjectResponse, + { body: ConfigureRiskEngineSavedObjectResponse | TaskManagerUnavailableResponse }, + ConfigureRiskEngineParams + >(async (params: ConfigureRiskEngineParams) => { + await updateSavedObjectConfiguration({ + exclude_alert_statuses: params.includeClosedAlerts ? [] : ['closed'], + range: params.range, + }); + return { risk_engine_saved_object_configured: true }; + }, options); +}; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_preview_risk_scores.ts b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_preview_risk_scores.ts index 96a4453815125..bc488786cff65 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_preview_risk_scores.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_preview_risk_scores.ts @@ -17,11 +17,12 @@ export const useRiskScorePreview = ({ data_view_id: dataViewId, range, filter, + exclude_alert_statuses: excludeAlertStatuses, }: UseRiskScorePreviewParams) => { const { fetchRiskScorePreview } = useEntityAnalyticsRoutes(); return useQuery( - ['POST', 'FETCH_PREVIEW_RISK_SCORE', range, filter], + ['POST', 'FETCH_PREVIEW_RISK_SCORE', range, filter, excludeAlertStatuses], async ({ signal }) => { if (!dataViewId) { return; @@ -49,6 +50,10 @@ export const useRiskScorePreview = ({ params.filter = filter; } + if (excludeAlertStatuses) { + params.exclude_alert_statuses = excludeAlertStatuses; + } + const response = await fetchRiskScorePreview({ signal, params }); return response; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/__snapshots__/risk_score_configuration_section.test.tsx.snap b/x-pack/plugins/security_solution/public/entity_analytics/components/__snapshots__/risk_score_configuration_section.test.tsx.snap new file mode 100644 index 0000000000000..9115b2f118516 --- /dev/null +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/__snapshots__/risk_score_configuration_section.test.tsx.snap @@ -0,0 +1,41 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`RiskScoreConfigurationSection renders correctly 1`] = ` +<Fragment> + <EuiFlexGroup + alignItems="center" + > + <div> + <EuiSwitch + checked={false} + data-test-subj="includeClosedAlertsSwitch" + label="Include closed alerts for risk scoring" + onChange={[Function]} + /> + </div> + <Styled(div) /> + <div> + <EuiSuperDatePicker + compressed={false} + end="now" + onTimeChange={[Function]} + showUpdateButton={false} + start="now-30m" + width="auto" + /> + </div> + </EuiFlexGroup> + <EuiSpacer + size="m" + /> + <EuiText + size="s" + > + <p> + Enable this option to factor both open and closed alerts into the risk engine + calculations. Including closed alerts helps provide a more comprehensive risk assessment + based on past incidents, leading to more accurate scoring and insights. + </p> + </EuiText> +</Fragment> +`; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_configuration_section.test.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_configuration_section.test.tsx new file mode 100644 index 0000000000000..93a7e0776d925 --- /dev/null +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_configuration_section.test.tsx @@ -0,0 +1,120 @@ +/* + * 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 { RiskScoreConfigurationSection } from './risk_score_configuration_section'; +import { shallow, mount } from 'enzyme'; +import { act } from 'react-dom/test-utils'; +import { EuiSuperDatePicker, EuiSwitch } from '@elastic/eui'; +import * as i18n from '../translations'; +import { useAppToasts } from '../../common/hooks/use_app_toasts'; +import { useConfigureSORiskEngineMutation } from '../api/hooks/use_configure_risk_engine_saved_object'; + +jest.mock('../../common/lib/kibana'); +jest.mock('../../common/hooks/use_app_toasts'); +jest.mock('../api/hooks/use_configure_risk_engine_saved_object'); + +describe('RiskScoreConfigurationSection', () => { + const mockConfigureSO = useConfigureSORiskEngineMutation as jest.Mock; + const defaultProps = { + includeClosedAlerts: false, + setIncludeClosedAlerts: jest.fn(), + from: 'now-30m', + to: 'now', + onDateChange: jest.fn(), + }; + + const mockAddSuccess = jest.fn(); + const mockMutate = jest.fn(); + + beforeEach(() => { + (useAppToasts as jest.Mock).mockReturnValue({ addSuccess: mockAddSuccess }); + mockConfigureSO.mockReturnValue({ mutate: mockMutate }); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('renders correctly', () => { + const wrapper = shallow(<RiskScoreConfigurationSection {...defaultProps} />); + expect(wrapper).toMatchSnapshot(); + }); + + it('toggles includeClosedAlerts', () => { + const wrapper = mount( + <RiskScoreConfigurationSection {...defaultProps} includeClosedAlerts={true} /> + ); + wrapper.find(EuiSwitch).simulate('click'); + expect(defaultProps.setIncludeClosedAlerts).toHaveBeenCalledWith(true); + }); + + it('calls onDateChange on date change', () => { + const wrapper = mount(<RiskScoreConfigurationSection {...defaultProps} />); + wrapper.find(EuiSuperDatePicker).props().onTimeChange({ start: 'now-30m', end: 'now' }); + expect(defaultProps.onDateChange).toHaveBeenCalledWith({ start: 'now-30m', end: 'now' }); + }); + + it('shows bottom bar when changes are made', async () => { + const wrapper = mount( + <RiskScoreConfigurationSection {...defaultProps} includeClosedAlerts={false} /> + ); + wrapper.find(EuiSwitch).simulate('click'); + wrapper.find(EuiSuperDatePicker).props().onTimeChange({ start: 'now-14m', end: 'now' }); + wrapper.update(); + await new Promise((resolve) => setTimeout(resolve, 0)); // wait for the component to update + expect(wrapper.find('EuiBottomBar').exists()).toBe(true); + }); + + it('saves changes', () => { + const wrapper = mount( + <RiskScoreConfigurationSection {...defaultProps} includeClosedAlerts={true} /> + ); + + // Simulate clicking the switch + const closedAlertsToggle = wrapper.find('button[data-test-subj="includeClosedAlertsSwitch"]'); + expect(closedAlertsToggle.exists()).toBe(true); + closedAlertsToggle.simulate('click'); + + wrapper.update(); + + const saveChangesButton = wrapper.find('button[data-test-subj="riskScoreSaveButton"]'); + expect(saveChangesButton.exists()).toBe(true); + saveChangesButton.simulate('click'); + const callArgs = mockMutate.mock.calls[0][0]; + expect(callArgs).toEqual({ + includeClosedAlerts: true, + range: { start: 'now-30m', end: 'now' }, + }); + }); + + it('shows success toast on save', () => { + const wrapper = mount( + <RiskScoreConfigurationSection {...defaultProps} includeClosedAlerts={true} /> + ); + + act(() => { + wrapper.find('button[data-test-subj="includeClosedAlertsSwitch"]').simulate('click'); + }); + wrapper.update(); + + act(() => { + wrapper.find('button[data-test-subj="riskScoreSaveButton"]').simulate('click'); + }); + + act(() => { + mockMutate.mock.calls[0][1].onSuccess(); + }); + + expect(mockAddSuccess).toHaveBeenCalledWith( + i18n.RISK_ENGINE_SAVED_OBJECT_CONFIGURATION_SUCCESS, + { + toastLifeTimeMs: 5000, + } + ); + }); +}); diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_configuration_section.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_configuration_section.tsx new file mode 100644 index 0000000000000..fa0f33e5b6040 --- /dev/null +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_configuration_section.tsx @@ -0,0 +1,199 @@ +/* + * 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, { useState, useEffect, useRef } from 'react'; +import { + EuiSuperDatePicker, + EuiButton, + EuiText, + EuiFlexGroup, + EuiSwitch, + EuiFlexItem, + EuiBottomBar, + EuiButtonEmpty, + EuiSpacer, + useEuiTheme, +} from '@elastic/eui'; +import useLocalStorage from 'react-use/lib/useLocalStorage'; +import { useAppToasts } from '../../common/hooks/use_app_toasts'; +import * as i18n from '../translations'; +import { useConfigureSORiskEngineMutation } from '../api/hooks/use_configure_risk_engine_saved_object'; +import { getEntityAnalyticsRiskScorePageStyles } from './risk_score_page_styles'; + +export const RiskScoreConfigurationSection = ({ + includeClosedAlerts, + setIncludeClosedAlerts, + from, + to, + onDateChange, +}: { + includeClosedAlerts: boolean; + setIncludeClosedAlerts: (value: boolean) => void; + from: string; + to: string; + onDateChange: ({ start, end }: { start: string; end: string }) => void; +}) => { + const { euiTheme } = useEuiTheme(); + const styles = getEntityAnalyticsRiskScorePageStyles(euiTheme); + const [start, setFrom] = useState(from); + const [end, setTo] = useState(to); + const [isLoading, setIsLoading] = useState(false); + const [showBar, setShowBar] = useState(false); + const { addSuccess } = useAppToasts(); + const initialIncludeClosedAlerts = useRef(includeClosedAlerts); + const initialStart = useRef(from); + const initialEnd = useRef(to); + + const [savedIncludeClosedAlerts, setSavedIncludeClosedAlerts] = useLocalStorage( + 'includeClosedAlerts', + includeClosedAlerts ?? false + ); + const [savedStart, setSavedStart] = useLocalStorage( + 'entityAnalytics:riskScoreConfiguration:fromDate', + from + ); + const [savedEnd, setSavedEnd] = useLocalStorage( + 'entityAnalytics:riskScoreConfiguration:toDate', + to + ); + + useEffect(() => { + if (savedIncludeClosedAlerts !== null && savedIncludeClosedAlerts !== undefined) { + initialIncludeClosedAlerts.current = savedIncludeClosedAlerts; + setIncludeClosedAlerts(savedIncludeClosedAlerts); + } + if (savedStart && savedEnd) { + initialStart.current = savedStart; + initialEnd.current = savedEnd; + setFrom(savedStart); + setTo(savedEnd); + } + }, [savedIncludeClosedAlerts, savedStart, savedEnd, setIncludeClosedAlerts]); + + const onRefresh = ({ start: newStart, end: newEnd }: { start: string; end: string }) => { + setFrom(newStart); + setTo(newEnd); + onDateChange({ start: newStart, end: newEnd }); + checkForChanges(newStart, newEnd, includeClosedAlerts); + }; + + const handleToggle = () => { + const newValue = !includeClosedAlerts; + setIncludeClosedAlerts(newValue); + checkForChanges(start, end, newValue); + }; + + const checkForChanges = (newStart: string, newEnd: string, newIncludeClosedAlerts: boolean) => { + if ( + newStart !== initialStart.current || + newEnd !== initialEnd.current || + newIncludeClosedAlerts !== initialIncludeClosedAlerts.current + ) { + setShowBar(true); + } else { + setShowBar(false); + } + }; + + const { mutate } = useConfigureSORiskEngineMutation(); + + const handleSave = () => { + setIsLoading(true); + mutate( + { + includeClosedAlerts, + range: { start, end }, + }, + { + onSuccess: () => { + setShowBar(false); + addSuccess(i18n.RISK_ENGINE_SAVED_OBJECT_CONFIGURATION_SUCCESS, { + toastLifeTimeMs: 5000, + }); + setIsLoading(false); + + initialStart.current = start; + initialEnd.current = end; + initialIncludeClosedAlerts.current = includeClosedAlerts; + + setSavedIncludeClosedAlerts(includeClosedAlerts); + setSavedStart(start); + setSavedEnd(end); + }, + onError: () => { + setIsLoading(false); + }, + } + ); + }; + + return ( + <> + <EuiFlexGroup alignItems="center"> + <div> + <EuiSwitch + label={i18n.INCLUDE_CLOSED_ALERTS_LABEL} + checked={includeClosedAlerts} + onChange={handleToggle} + data-test-subj="includeClosedAlertsSwitch" + /> + </div> + <styles.VerticalSeparator /> + <div> + <EuiSuperDatePicker + start={start} + end={end} + onTimeChange={onRefresh} + width={'auto'} + compressed={false} + showUpdateButton={false} + /> + </div> + </EuiFlexGroup> + <EuiSpacer size="m" /> + <EuiText size="s"> + <p>{i18n.RISK_ENGINE_INCLUDE_CLOSED_ALERTS_DESCRIPTION}</p> + </EuiText> + {showBar && ( + <EuiBottomBar paddingSize="s" position="fixed"> + <EuiFlexGroup justifyContent="spaceBetween"> + <EuiFlexGroup gutterSize="s" justifyContent="flexEnd"> + <EuiFlexItem grow={false}> + <EuiButtonEmpty + color="text" + size="s" + iconType="cross" + onClick={() => { + setShowBar(false); + setFrom(initialStart.current); + setTo(initialEnd.current); + setIncludeClosedAlerts(initialIncludeClosedAlerts.current); + }} + > + {i18n.DISCARD_CHANGES} + </EuiButtonEmpty> + </EuiFlexItem> + <EuiFlexItem grow={false}> + <EuiButton + color="primary" + fill + size="s" + iconType="check" + onClick={handleSave} + isLoading={isLoading} + data-test-subj="riskScoreSaveButton" + > + {i18n.SAVE_CHANGES} + </EuiButton> + </EuiFlexItem> + </EuiFlexGroup> + </EuiFlexGroup> + </EuiBottomBar> + )} + </> + ); +}; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_enable_section.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_enable_section.tsx index 63ff39ebca7dc..547ee0235e773 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_enable_section.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_enable_section.tsx @@ -10,11 +10,8 @@ import { EuiFlexGroup, EuiFlexItem, EuiHealth, - EuiHorizontalRule, - EuiLink, EuiSpacer, EuiSwitch, - EuiTitle, EuiLoadingSpinner, EuiBadge, EuiButtonEmpty, @@ -28,8 +25,6 @@ import { EuiCallOut, EuiAccordion, } from '@elastic/eui'; -import { LinkAnchor } from '@kbn/security-solution-navigation/links'; -import { SecurityPageName } from '@kbn/security-solution-navigation'; import type { RiskEngineStatus } from '../../../common/api/entity_analytics/risk_engine/engine_status_route.gen'; import { RiskEngineStatusEnum } from '../../../common/api/entity_analytics/risk_engine/engine_status_route.gen'; import * as i18n from '../translations'; @@ -38,8 +33,6 @@ import { useInitRiskEngineMutation } from '../api/hooks/use_init_risk_engine_mut import { useEnableRiskEngineMutation } from '../api/hooks/use_enable_risk_engine_mutation'; import { useDisableRiskEngineMutation } from '../api/hooks/use_disable_risk_engine_mutation'; import { useAppToasts } from '../../common/hooks/use_app_toasts'; -import { RiskInformationFlyout } from './risk_information'; -import { useOnOpenCloseHandler } from '../../helper_hooks'; import type { RiskEngineMissingPrivilegesResponse } from '../hooks/use_missing_risk_engine_privileges'; const MIN_WIDTH_TO_PREVENT_LABEL_FROM_MOVING = '50px'; @@ -144,12 +137,12 @@ const RiskEngineHealth: React.FC<{ currentRiskEngineStatus?: RiskEngineStatus | currentRiskEngineStatus, }) => { if (!currentRiskEngineStatus) { - return <EuiHealth color="subdued">{'-'}</EuiHealth>; + return <EuiHealth color="danger">{'-'}</EuiHealth>; } if (currentRiskEngineStatus === RiskEngineStatusEnum.ENABLED) { return <EuiHealth color="success">{i18n.RISK_SCORE_MODULE_STATUS_ON}</EuiHealth>; } - return <EuiHealth color="subdued">{i18n.RISK_SCORE_MODULE_STATUS_OFF}</EuiHealth>; + return <EuiHealth color="danger">{i18n.RISK_SCORE_MODULE_STATUS_OFF}</EuiHealth>; }; const RiskEngineStatusRow: React.FC<{ @@ -181,7 +174,6 @@ const RiskEngineStatusRow: React.FC<{ data-test-subj="risk-score-switch" checked={currentRiskEngineStatus === RiskEngineStatusEnum.ENABLED} onChange={onSwitchClick} - compressed disabled={btnIsDisabled} aria-describedby={'switchRiskModule'} /> @@ -221,8 +213,6 @@ export const RiskScoreEnableSection: React.FC<{ const closeModal = () => setIsModalVisible(false); const showModal = () => setIsModalVisible(true); - const [isFlyoutVisible, handleOnOpen, handleOnClose] = useOnOpenCloseHandler(); - const isLoading = initRiskEngineMutation.isLoading || enableRiskEngineMutation.isLoading || @@ -254,9 +244,6 @@ export const RiskScoreEnableSection: React.FC<{ return ( <> <> - <EuiTitle> - <h2>{i18n.RISK_SCORE_MODULE_STATUS}</h2> - </EuiTitle> {initRiskEngineMutation.isError && <RiskScoreErrorPanel errors={initRiskEngineErrors} />} {disableRiskEngineMutation.isError && ( <RiskScoreErrorPanel errors={[disableRiskEngineMutation.error.body.message]} /> @@ -273,12 +260,10 @@ export const RiskScoreEnableSection: React.FC<{ isLoading={initRiskEngineMutation.isLoading} closeModal={closeModal} /> - <EuiHorizontalRule margin="s" /> <EuiFlexGroup justifyContent="spaceBetween" alignItems="center"> <EuiFlexItem grow={false}> <EuiFlexGroup gutterSize="s" alignItems={'baseline'}> - {i18n.ENTITY_RISK_SCORING} {isUpdateAvailable && <EuiBadge color="success">{i18n.UPDATE_AVAILABLE}</EuiBadge>} </EuiFlexGroup> </EuiFlexItem> @@ -310,29 +295,9 @@ export const RiskScoreEnableSection: React.FC<{ )} </EuiFlexItem> </EuiFlexGroup> - <EuiHorizontalRule margin="s" /> </EuiFlexItem> </> <EuiSpacer /> - <> - <EuiTitle> - <h2>{i18n.USEFUL_LINKS}</h2> - </EuiTitle> - <EuiSpacer /> - <ul> - <li> - <LinkAnchor id={SecurityPageName.entityAnalytics}>{i18n.EA_DASHBOARD_LINK}</LinkAnchor> - <EuiSpacer size="s" /> - </li> - <li> - <EuiLink onClick={handleOnOpen} data-test-subj="open-risk-information-flyout-trigger"> - {i18n.EA_DOCS_ENTITY_RISK_SCORE} - </EuiLink> - {isFlyoutVisible && <RiskInformationFlyout handleOnClose={handleOnClose} />} - <EuiSpacer size="s" /> - </li> - </ul> - </> </> ); }; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_page_styles.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_page_styles.tsx new file mode 100644 index 0000000000000..ea3bae7e87187 --- /dev/null +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_page_styles.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 styled from '@emotion/styled'; +import type { EuiThemeComputed } from '@elastic/eui'; +interface EntityAnalyticsRiskScorePageStyles { + VerticalSeparator: ReturnType<typeof styled.div>; +} + +export const getEntityAnalyticsRiskScorePageStyles = ( + euiTheme: EuiThemeComputed +): EntityAnalyticsRiskScorePageStyles => ({ + VerticalSeparator: styled.div` + :before { + content: ''; + height: ${euiTheme.size.l}; + border-left: ${euiTheme.border.width.thin} solid ${euiTheme.colors.lightShade}; + } + `, +}); diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx index 9693bf13589ad..f818eaf429cd2 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx @@ -5,11 +5,9 @@ * 2.0. */ -import React, { useState, useCallback, useMemo, useEffect } from 'react'; -import type { DataView } from '@kbn/data-views-plugin/public'; +import React, { useState, useMemo } from 'react'; import { EuiAccordion, - EuiFormRow, EuiPanel, EuiSpacer, EuiTitle, @@ -22,8 +20,7 @@ import { EuiFlexItem, EuiCode, } from '@elastic/eui'; -import type { BoolQuery, TimeRange, Query } from '@kbn/es-query'; -import { buildEsQuery } from '@kbn/es-query'; +import type { BoolQuery } from '@kbn/es-query'; import { FormattedMessage } from '@kbn/i18n-react'; import type { EntityRiskScoreRecord } from '../../../common/api/entity_analytics/common'; import { @@ -33,10 +30,8 @@ import { import { RiskScorePreviewTable } from './risk_score_preview_table'; import * as i18n from '../translations'; import { useRiskScorePreview } from '../api/hooks/use_preview_risk_scores'; -import { useKibana } from '../../common/lib/kibana'; import { SourcererScopeName } from '../../sourcerer/store/model'; import { useSourcererDataView } from '../../sourcerer/containers'; -import { useAppToasts } from '../../common/hooks/use_app_toasts'; import type { RiskEngineMissingPrivilegesResponse } from '../hooks/use_missing_risk_engine_privileges'; import { userHasRiskEngineReadPermissions } from '../common'; interface IRiskScorePreviewPanel { @@ -55,7 +50,10 @@ const getRiskiestScores = (scores: EntityRiskScoreRecord[] = [], field: string) export const RiskScorePreviewSection: React.FC<{ privileges: RiskEngineMissingPrivilegesResponse; -}> = ({ privileges }) => { + includeClosedAlerts: boolean; + from: string; + to: string; +}> = ({ privileges, includeClosedAlerts, from, to }) => { const sectionBody = useMemo(() => { if (privileges.isLoading) { return ( @@ -67,11 +65,11 @@ export const RiskScorePreviewSection: React.FC<{ ); } if (userHasRiskEngineReadPermissions(privileges)) { - return <RiskEnginePreview />; + return <RiskEnginePreview includeClosedAlerts={includeClosedAlerts} from={from} to={to} />; } return <MissingPermissionsCallout />; - }, [privileges]); + }, [privileges, includeClosedAlerts, from, to]); return ( <> @@ -138,65 +136,30 @@ const RiskScorePreviewPanel = ({ ); }; -const RiskEnginePreview = () => { - const [dateRange, setDateRange] = useState<{ from: string; to: string }>({ - from: 'now-24h', - to: 'now', - }); - - const [filters, setFilters] = useState<{ bool: BoolQuery }>({ +const RiskEnginePreview: React.FC<{ includeClosedAlerts: boolean; from: string; to: string }> = ({ + includeClosedAlerts, + from, + to, +}) => { + const [filters] = useState<{ bool: BoolQuery }>({ bool: { must: [], filter: [], should: [], must_not: [] }, }); - const [dataViewsArray, setDataViewsArray] = useState<DataView[]>([]); - - const { - unifiedSearch: { - ui: { SearchBar }, - }, - dataViews, - } = useKibana().services; - - const { addError } = useAppToasts(); - const { sourcererDataView } = useSourcererDataView(SourcererScopeName.detections); const { data, isLoading, refetch, isError } = useRiskScorePreview({ data_view_id: sourcererDataView.title, filter: filters, range: { - start: dateRange.from, - end: dateRange.to, + start: from, + end: to, }, + exclude_alert_statuses: includeClosedAlerts ? [] : ['closed'], }); const hosts = getRiskiestScores(data?.scores.host, 'host.name'); const users = getRiskiestScores(data?.scores.user, 'user.name'); - const onQuerySubmit = useCallback( - (payload: { dateRange: TimeRange; query?: Query }) => { - setDateRange({ - from: payload.dateRange.from, - to: payload.dateRange.to, - }); - try { - const newFilters = buildEsQuery( - undefined, - payload.query ?? { query: '', language: 'kuery' }, - [] - ); - setFilters(newFilters); - } catch (e) { - addError(e, { title: i18n.PREVIEW_QUERY_ERROR_TITLE }); - } - }, - [addError, setDateRange, setFilters] - ); - - useEffect(() => { - dataViews.create(sourcererDataView).then((dataView) => setDataViewsArray([dataView])); - }, [dataViews, sourcererDataView]); - if (isError) { return ( <EuiCallOut @@ -220,23 +183,8 @@ const RiskEnginePreview = () => { return ( <> <EuiText>{i18n.PREVIEW_DESCRIPTION}</EuiText> - <EuiSpacer /> - <EuiFormRow fullWidth data-test-subj="risk-score-preview-search-bar"> - <SearchBar - appName="siem" - isLoading={isLoading} - indexPatterns={dataViewsArray} - dateRangeFrom={dateRange.from} - dateRangeTo={dateRange.to} - onQuerySubmit={onQuerySubmit} - showFilterBar={false} - showDatePicker={true} - displayStyle={'inPage'} - submitButtonStyle={'iconOnly'} - dataTestSubj="risk-score-preview-search-bar-input" - /> - </EuiFormRow> + <EuiSpacer /> <EuiSpacer /> <RiskScorePreviewPanel diff --git a/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_useful_links_section.tsx b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_useful_links_section.tsx new file mode 100644 index 0000000000000..d03dea2679c27 --- /dev/null +++ b/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_useful_links_section.tsx @@ -0,0 +1,49 @@ +/* + * 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, { useState } from 'react'; +import { EuiLink, EuiSpacer, EuiTitle } from '@elastic/eui'; +import { LinkAnchor } from '@kbn/security-solution-navigation/links'; +import { SecurityPageName } from '@kbn/security-solution-navigation'; +import styled from '@emotion/styled'; +import { euiThemeVars } from '@kbn/ui-theme'; +import * as i18n from '../translations'; +import { RiskInformationFlyout } from './risk_information'; + +const StyledList = styled.ul` + list-style-type: disc; + padding-left: ${euiThemeVars.euiSizeM}; +`; + +export const RiskScoreUsefulLinksSection = () => { + const [isFlyoutVisible, setIsFlyoutVisible] = useState(false); + + const handleOnOpen = () => setIsFlyoutVisible(true); + const handleOnClose = () => setIsFlyoutVisible(false); + + return ( + <> + <EuiTitle> + <h2>{i18n.USEFUL_LINKS}</h2> + </EuiTitle> + <EuiSpacer /> + <StyledList> + <li> + <LinkAnchor id={SecurityPageName.entityAnalytics}>{i18n.EA_DASHBOARD_LINK}</LinkAnchor> + <EuiSpacer size="s" /> + </li> + <li> + <EuiLink onClick={handleOnOpen} data-test-subj="open-risk-information-flyout-trigger"> + {i18n.EA_DOCS_ENTITY_RISK_SCORE} + </EuiLink> + {isFlyoutVisible && <RiskInformationFlyout handleOnClose={handleOnClose} />} + <EuiSpacer size="s" /> + </li> + </StyledList> + </> + ); +}; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/pages/entity_analytics_management_page.tsx b/x-pack/plugins/security_solution/public/entity_analytics/pages/entity_analytics_management_page.tsx index ac9dfd9eb8ab8..84ce908d94ee5 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/pages/entity_analytics_management_page.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/pages/entity_analytics_management_page.tsx @@ -5,38 +5,164 @@ * 2.0. */ -import React from 'react'; -import { EuiBetaBadge, EuiFlexGroup, EuiFlexItem, EuiPageHeader, EuiSpacer } from '@elastic/eui'; - +import React, { useState, useCallback } from 'react'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiPageHeader, + EuiHorizontalRule, + EuiButton, + EuiText, + useEuiTheme, +} from '@elastic/eui'; +import moment from 'moment'; import { RiskScorePreviewSection } from '../components/risk_score_preview_section'; import { RiskScoreEnableSection } from '../components/risk_score_enable_section'; import { ENTITY_ANALYTICS_RISK_SCORE } from '../../app/translations'; -import { BETA } from '../../common/translations'; import { RiskEnginePrivilegesCallOut } from '../components/risk_engine_privileges_callout'; import { useMissingRiskEnginePrivileges } from '../hooks/use_missing_risk_engine_privileges'; +import { RiskScoreUsefulLinksSection } from '../components/risk_score_useful_links_section'; +import { RiskScoreConfigurationSection } from '../components/risk_score_configuration_section'; +import { useRiskEngineStatus } from '../api/hooks/use_risk_engine_status'; +import { useScheduleNowRiskEngineMutation } from '../api/hooks/use_schedule_now_risk_engine_mutation'; +import { useAppToasts } from '../../common/hooks/use_app_toasts'; +import * as i18n from '../translations'; +import { getEntityAnalyticsRiskScorePageStyles } from '../components/risk_score_page_styles'; + +const TEN_SECONDS = 10000; export const EntityAnalyticsManagementPage = () => { + const { euiTheme } = useEuiTheme(); + const styles = getEntityAnalyticsRiskScorePageStyles(euiTheme); const privileges = useMissingRiskEnginePrivileges(); + const [includeClosedAlerts, setIncludeClosedAlerts] = useState(false); + const [from, setFrom] = useState(localStorage.getItem('dateStart') || 'now-30m'); + const [to, setTo] = useState(localStorage.getItem('dateEnd') || 'now'); + const { data: riskEngineStatus } = useRiskEngineStatus({ + refetchInterval: TEN_SECONDS, + structuralSharing: false, // Force the component to rerender after every Risk Engine Status API call + }); + const currentRiskEngineStatus = riskEngineStatus?.risk_engine_status; + const runEngineEnabled = currentRiskEngineStatus === 'ENABLED'; + const [isLoading, setIsLoading] = useState(false); + const { mutate: scheduleNowRiskEngine } = useScheduleNowRiskEngineMutation(); + const { addSuccess, addError } = useAppToasts(); + + const handleRunEngineClick = async () => { + setIsLoading(true); + try { + scheduleNowRiskEngine(); + + if (!isLoading) { + addSuccess(i18n.RISK_SCORE_ENGINE_RUN_SUCCESS, { toastLifeTimeMs: 5000 }); + } + } catch (error) { + addError(error, { + title: i18n.RISK_SCORE_ENGINE_RUN_FAILURE, + }); + } finally { + setIsLoading(false); + } + }; + + const handleIncludeClosedAlertsToggle = useCallback( + (value: boolean) => { + setIncludeClosedAlerts(value); + }, + [setIncludeClosedAlerts] + ); + + const handleDateChange = ({ start, end }: { start: string; end: string }) => { + setFrom(start); + setTo(end); + localStorage.setItem('dateStart', start); + localStorage.setItem('dateEnd', end); + }; + + const { status, runAt } = riskEngineStatus?.risk_engine_task_status || {}; + + const isRunning = status === 'running' || (!!runAt && new Date(runAt) < new Date()); + + const formatTimeFromNow = (time: string | undefined): string => { + if (!time) { + return ''; + } + return i18n.RISK_ENGINE_NEXT_RUN_TIME(moment(time).fromNow(true)); + }; + + const countDownText = isRunning + ? 'Now running' + : formatTimeFromNow(riskEngineStatus?.risk_engine_task_status?.runAt); + return ( <> <RiskEnginePrivilegesCallOut privileges={privileges} /> <EuiPageHeader pageTitle={ - <EuiFlexGroup> + <EuiFlexGroup alignItems="center" justifyContent="spaceBetween"> + {/* Page Title */} <EuiFlexItem data-test-subj="entityAnalyticsManagementPageTitle" grow={false}> {ENTITY_ANALYTICS_RISK_SCORE} </EuiFlexItem> - <EuiBetaBadge label={BETA} size="s" /> + + {/* Controls Section */} + <EuiFlexItem grow={false}> + <EuiFlexGroup alignItems="center" gutterSize="m"> + {/* Run Engine Section */} + {runEngineEnabled && ( + <> + {/* Run Engine Button */} + <EuiButton + size="s" + iconType="play" + isLoading={isLoading} + onClick={handleRunEngineClick} + > + {i18n.RUN_RISK_SCORE_ENGINE} + </EuiButton> + + {/* Vertical Line */} + <styles.VerticalSeparator /> + + {/* Countdown Text */} + <div> + <EuiText size="s" color="subdued"> + {countDownText} + </EuiText> + </div> + </> + )} + + {/* Risk Score Enable Section */} + <div> + <RiskScoreEnableSection privileges={privileges} /> + </div> + </EuiFlexGroup> + </EuiFlexItem> </EuiFlexGroup> } /> - <EuiSpacer size="l" /> - <EuiFlexGroup gutterSize="xl"> + + <EuiHorizontalRule /> + <EuiFlexGroup gutterSize="xl" alignItems="flexStart"> <EuiFlexItem grow={2}> - <RiskScoreEnableSection privileges={privileges} /> + <RiskScoreConfigurationSection + includeClosedAlerts={includeClosedAlerts} + setIncludeClosedAlerts={handleIncludeClosedAlertsToggle} + from={from} + to={to} + onDateChange={handleDateChange} + /> + <EuiHorizontalRule /> + <RiskScoreUsefulLinksSection /> </EuiFlexItem> <EuiFlexItem grow={2}> - <RiskScorePreviewSection privileges={privileges} /> + <RiskScorePreviewSection + privileges={privileges} + includeClosedAlerts={includeClosedAlerts} + from={from} + to={to} + /> </EuiFlexItem> </EuiFlexGroup> </> diff --git a/x-pack/plugins/security_solution/public/entity_analytics/translations.ts b/x-pack/plugins/security_solution/public/entity_analytics/translations.ts index 2e06ec9ad1eb9..5d75b8f795d55 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/translations.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/translations.ts @@ -302,3 +302,64 @@ export const RISK_SCORE_MODULE_TURNED_OFF = i18n.translate( defaultMessage: 'Entity risk score has been turned off', } ); + +export const RISK_SCORE_ENGINE_RUN_SUCCESS = i18n.translate( + 'xpack.securitySolution.riskScore.engineRunSuccess', + { + defaultMessage: 'Entity risk score engine started successfully', + } +); + +export const RISK_ENGINE_SAVED_OBJECT_CONFIGURATION_SUCCESS = i18n.translate( + 'xpack.securitySolution.riskScore.savedObject.configurationSuccess', + { + defaultMessage: 'Risk engine Saved Object configuration updated successfully', + } +); + +export const INCLUDE_CLOSED_ALERTS_LABEL = i18n.translate( + 'xpack.securitySolution.riskScore.includeClosedAlertsLabel', + { + defaultMessage: 'Include closed alerts for risk scoring', + } +); + +export const RISK_ENGINE_INCLUDE_CLOSED_ALERTS_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.riskScore.includeClosedAlertsDescription', + { + defaultMessage: `Enable this option to factor both open and closed alerts into the risk engine + calculations. Including closed alerts helps provide a more comprehensive risk assessment + based on past incidents, leading to more accurate scoring and insights.`, + } +); + +export const RISK_ENGINE_NEXT_RUN_TIME = (timeInMinutes: string) => + i18n.translate('xpack.securitySolution.riskScore.engineNextRunTime', { + defaultMessage: `Next engine run in {timeInMinutes}`, + values: { timeInMinutes }, + }); + +export const RUN_RISK_SCORE_ENGINE = i18n.translate('xpack.securitySolution.riskScore.runEngine', { + defaultMessage: 'Run Engine', +}); + +export const SAVE_CHANGES = i18n.translate( + 'xpack.securitySolution.riskScore.engineSavedObjectsaveChanges', + { + defaultMessage: 'Save', + } +); + +export const DISCARD_CHANGES = i18n.translate( + 'xpack.securitySolution.riskScore.engineSavedObject.discardChanges', + { + defaultMessage: 'Discard', + } +); + +export const RISK_SCORE_ENGINE_RUN_FAILURE = i18n.translate( + 'xpack.securitySolution.riskScore.engineRunSuccess', + { + defaultMessage: 'Entity risk score engine failed to start', + } +); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/graph_visualization.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/graph_visualization.tsx new file mode 100644 index 0000000000000..96374b81e18d5 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/graph_visualization.tsx @@ -0,0 +1,56 @@ +/* + * 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, { memo } from 'react'; +import { css } from '@emotion/css'; +import { EuiLoadingSpinner } from '@elastic/eui'; +import { useGetScopedSourcererDataView } from '../../../../sourcerer/components/use_get_sourcerer_data_view'; +import { SourcererScopeName } from '../../../../sourcerer/store/model'; +import { useDocumentDetailsContext } from '../../shared/context'; +import { GRAPH_VISUALIZATION_TEST_ID } from './test_ids'; +import { useGraphPreview } from '../../shared/hooks/use_graph_preview'; + +const GraphInvestigationLazy = React.lazy(() => + import('@kbn/cloud-security-posture-graph').then((module) => ({ + default: module.GraphInvestigation, + })) +); + +export const GRAPH_ID = 'graph-visualization' as const; + +/** + * Graph visualization view displayed in the document details expandable flyout left section under the Visualize tab + */ +export const GraphVisualization: React.FC = memo(() => { + const dataView = useGetScopedSourcererDataView({ + sourcererScope: SourcererScopeName.default, + }); + const { getFieldsData, dataAsNestedObject } = useDocumentDetailsContext(); + const { eventIds, timestamp } = useGraphPreview({ + getFieldsData, + ecsData: dataAsNestedObject, + }); + + return ( + <div + data-test-subj={GRAPH_VISUALIZATION_TEST_ID} + css={css` + height: calc(100vh - 250px); + min-height: 400px; + width: 100%; + `} + > + {dataView && ( + <React.Suspense fallback={<EuiLoadingSpinner />}> + <GraphInvestigationLazy dataView={dataView} eventIds={eventIds} timestamp={timestamp} /> + </React.Suspense> + )} + </div> + ); +}); + +GraphVisualization.displayName = 'GraphVisualization'; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/test_ids.ts index 8669b504f6861..6979fa9cfa053 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/left/components/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/components/test_ids.ts @@ -11,6 +11,7 @@ import { PREFIX } from '../../../shared/test_ids'; export const ANALYZER_GRAPH_TEST_ID = `${PREFIX}AnalyzerGraph` as const; export const SESSION_VIEW_TEST_ID = `${PREFIX}SessionView` as const; +export const GRAPH_VISUALIZATION_TEST_ID = `${PREFIX}GraphVisualization` as const; /* Insights tab */ diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts index eb64c91b2143d..bc1ee586606de 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/test_ids.ts @@ -13,6 +13,8 @@ export const VISUALIZE_TAB_SESSION_VIEW_BUTTON_TEST_ID = `${VISUALIZE_TAB_TEST_ID}SessionViewButton` as const; export const VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON_TEST_ID = `${VISUALIZE_TAB_TEST_ID}GraphAnalyzerButton` as const; +export const VISUALIZE_TAB_GRAPH_VISUALIZATION_BUTTON_TEST_ID = + `${VISUALIZE_TAB_TEST_ID}GraphVisualizationButton` as const; const INSIGHTS_TAB_TEST_ID = `${PREFIX}InsightsTab` as const; export const INSIGHTS_TAB_BUTTON_GROUP_TEST_ID = `${INSIGHTS_TAB_TEST_ID}ButtonGroup` as const; export const INSIGHTS_TAB_ENTITIES_BUTTON_TEST_ID = diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/visualize_tab.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/visualize_tab.tsx index 0dad444ee6ece..89e00e06e3a49 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/visualize_tab.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/left/tabs/visualize_tab.tsx @@ -11,12 +11,14 @@ import type { EuiButtonGroupOptionProps } from '@elastic/eui/src/components/butt import { useExpandableFlyoutApi, useExpandableFlyoutState } from '@kbn/expandable-flyout'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; import { useDocumentDetailsContext } from '../../shared/context'; import { useWhichFlyout } from '../../shared/hooks/use_which_flyout'; import { DocumentDetailsAnalyzerPanelKey } from '../../shared/constants/panel_keys'; import { VISUALIZE_TAB_BUTTON_GROUP_TEST_ID, VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON_TEST_ID, + VISUALIZE_TAB_GRAPH_VISUALIZATION_BUTTON_TEST_ID, VISUALIZE_TAB_SESSION_VIEW_BUTTON_TEST_ID, } from './test_ids'; import { @@ -27,6 +29,9 @@ import { import { SESSION_VIEW_ID, SessionView } from '../components/session_view'; import { ALERTS_ACTIONS } from '../../../../common/lib/apm/user_actions'; import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction'; +import { GRAPH_ID, GraphVisualization } from '../components/graph_visualization'; +import { useGraphPreview } from '../../shared/hooks/use_graph_preview'; +import { GRAPH_VISUALIZATION_IN_FLYOUT_ENABLED_EXPERIMENTAL_FEATURE } from '../../shared/constants/experimental_features'; const visualizeButtons: EuiButtonGroupOptionProps[] = [ { @@ -51,11 +56,39 @@ const visualizeButtons: EuiButtonGroupOptionProps[] = [ }, ]; +const graphVisualizationButton: EuiButtonGroupOptionProps = { + id: GRAPH_ID, + iconType: 'beaker', + iconSide: 'right', + toolTipProps: { + title: ( + <FormattedMessage + id="xpack.securitySolution.flyout.left.visualize.graphVisualizationButton.technicalPreviewLabel" + defaultMessage="Technical Preview" + /> + ), + }, + toolTipContent: i18n.translate( + 'xpack.securitySolution.flyout.left.visualize.graphVisualizationButton.technicalPreviewTooltip', + { + defaultMessage: + 'This functionality is in technical preview and may be changed or removed completely in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.', + } + ), + label: ( + <FormattedMessage + id="xpack.securitySolution.flyout.left.visualize.graphVisualizationButtonLabel" + defaultMessage="Graph view" + /> + ), + 'data-test-subj': VISUALIZE_TAB_GRAPH_VISUALIZATION_BUTTON_TEST_ID, +}; + /** * Visualize view displayed in the document details expandable flyout left section */ export const VisualizeTab = memo(() => { - const { scopeId } = useDocumentDetailsContext(); + const { scopeId, getFieldsData, dataAsNestedObject } = useDocumentDetailsContext(); const { openPreviewPanel } = useExpandableFlyoutApi(); const panels = useExpandableFlyoutState(); const [activeVisualizationId, setActiveVisualizationId] = useState( @@ -86,6 +119,22 @@ export const VisualizeTab = memo(() => { } }, [panels.left?.path?.subTab]); + // Decide whether to show the graph preview or not + const { hasGraphRepresentation } = useGraphPreview({ + getFieldsData, + ecsData: dataAsNestedObject, + }); + + const isGraphFeatureEnabled = useIsExperimentalFeatureEnabled( + GRAPH_VISUALIZATION_IN_FLYOUT_ENABLED_EXPERIMENTAL_FEATURE + ); + + const options = [...visualizeButtons]; + + if (hasGraphRepresentation && isGraphFeatureEnabled) { + options.push(graphVisualizationButton); + } + return ( <> <EuiButtonGroup @@ -97,7 +146,7 @@ export const VisualizeTab = memo(() => { defaultMessage: 'Visualize options', } )} - options={visualizeButtons} + options={options} idSelected={activeVisualizationId} onChange={(id) => onChangeCompressed(id)} buttonSize="compressed" @@ -107,6 +156,7 @@ export const VisualizeTab = memo(() => { <EuiSpacer size="m" /> {activeVisualizationId === SESSION_VIEW_ID && <SessionView />} {activeVisualizationId === ANALYZE_GRAPH_ID && <AnalyzeGraph />} + {activeVisualizationId === GRAPH_ID && <GraphVisualization />} </> ); }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.test.tsx index 22ac27eaa4e00..2142d19c82870 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.test.tsx @@ -36,10 +36,19 @@ describe('<GraphPreview />', () => { }); it('shows graph preview correctly when data is loaded', async () => { - const graphProps = { + const graphProps: GraphPreviewProps = { isLoading: false, isError: false, - data: { nodes: [], edges: [] }, + data: { + nodes: [ + { + id: '1', + color: 'primary', + shape: 'ellipse', + }, + ], + edges: [], + }, }; const { findByTestId } = renderGraphPreview(mockContextValue, graphProps); @@ -69,4 +78,15 @@ describe('<GraphPreview />', () => { expect(getByText(ERROR_MESSAGE)).toBeInTheDocument(); }); + + it('shows error message when data is empty', () => { + const graphProps = { + isLoading: false, + isError: false, + }; + + const { getByText } = renderGraphPreview(mockContextValue, graphProps); + + expect(getByText(ERROR_MESSAGE)).toBeInTheDocument(); + }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.tsx index c3c6d65c7e986..dec3c40790ad8 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview.tsx @@ -5,7 +5,7 @@ * 2.0. */ import React, { memo, useMemo } from 'react'; -import { EuiSkeletonText } from '@elastic/eui'; +import { EuiPanel, EuiSkeletonText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { css } from '@emotion/react'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -71,13 +71,19 @@ export const GraphPreview: React.FC<GraphPreviewProps> = memo( return isLoading ? ( <LoadingComponent /> - ) : isError ? ( + ) : isError || memoizedNodes.length === 0 ? ( <FormattedMessage id="xpack.securitySolution.flyout.right.visualizations.graphPreview.errorDescription" defaultMessage="An error is preventing this alert from being visualized." /> ) : ( - <React.Suspense fallback={<LoadingComponent />}> + <React.Suspense + fallback={ + <EuiPanel> + <LoadingComponent /> + </EuiPanel> + } + > <GraphLazy css={css` height: 300px; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.test.tsx index ae907af316dc9..c805f2a3c67a7 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.test.tsx @@ -6,14 +6,14 @@ */ import { render } from '@testing-library/react'; +import { useFetchGraphData } from '@kbn/cloud-security-posture-graph/src/hooks'; import { TestProviders } from '../../../../common/mock'; import React from 'react'; import { DocumentDetailsContext } from '../../shared/context'; import { mockContextValue } from '../../shared/mocks/mock_context'; import { GraphPreviewContainer } from './graph_preview_container'; import { GRAPH_PREVIEW_TEST_ID } from './test_ids'; -import { useGraphPreview } from '../hooks/use_graph_preview'; -import { useFetchGraphData } from '../hooks/use_fetch_graph_data'; +import { useGraphPreview } from '../../shared/hooks/use_graph_preview'; import { EXPANDABLE_PANEL_CONTENT_TEST_ID, EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID, @@ -21,9 +21,25 @@ import { EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID, EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID, } from '../../../shared/components/test_ids'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; -jest.mock('../hooks/use_graph_preview'); -jest.mock('../hooks/use_fetch_graph_data', () => ({ +const mockUseUiSetting = jest.fn().mockReturnValue([true]); +jest.mock('@kbn/kibana-react-plugin/public', () => { + const original = jest.requireActual('@kbn/kibana-react-plugin/public'); + return { + ...original, + useUiSetting$: () => mockUseUiSetting(), + }; +}); + +jest.mock('../../../../common/hooks/use_experimental_features', () => ({ + useIsExperimentalFeatureEnabled: jest.fn(), +})); + +const useIsExperimentalFeatureEnabledMock = useIsExperimentalFeatureEnabled as jest.Mock; + +jest.mock('../../shared/hooks/use_graph_preview'); +jest.mock('@kbn/cloud-security-posture-graph/src/hooks', () => ({ useFetchGraphData: jest.fn(), })); const mockUseFetchGraphData = useFetchGraphData as jest.Mock; @@ -43,16 +59,25 @@ const renderGraphPreview = (context = mockContextValue) => </TestProviders> ); +const DEFAULT_NODES = [ + { + id: '1', + color: 'primary', + shape: 'ellipse', + }, +]; + describe('<GraphPreviewContainer />', () => { beforeEach(() => { jest.clearAllMocks(); + useIsExperimentalFeatureEnabledMock.mockReturnValue(true); }); it('should render component and link in header', async () => { mockUseFetchGraphData.mockReturnValue({ isLoading: false, isError: false, - data: { nodes: [], edges: [] }, + data: { nodes: DEFAULT_NODES, edges: [] }, }); const timestamp = new Date().toISOString(); @@ -60,11 +85,64 @@ describe('<GraphPreviewContainer />', () => { (useGraphPreview as jest.Mock).mockReturnValue({ timestamp, eventIds: [], - isAuditLog: true, + hasGraphRepresentation: true, }); const { getByTestId, queryByTestId, findByTestId } = renderGraphPreview(); + // Using findByTestId to wait for the component to be rendered because it is a lazy loaded component + expect(await findByTestId(GRAPH_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect(mockUseFetchGraphData).toHaveBeenCalled(); + expect(mockUseFetchGraphData.mock.calls[0][0]).toEqual({ + req: { + query: { + eventIds: [], + start: `${timestamp}||-30m`, + end: `${timestamp}||+30m`, + }, + }, + options: { + enabled: true, + refetchOnWindowFocus: false, + }, + }); + }); + + it('should render component and without link in header in preview panel', async () => { + mockUseFetchGraphData.mockReturnValue({ + isLoading: false, + isError: false, + data: { nodes: DEFAULT_NODES, edges: [] }, + }); + + const timestamp = new Date().toISOString(); + + (useGraphPreview as jest.Mock).mockReturnValue({ + timestamp, + eventIds: [], + hasGraphRepresentation: true, + }); + + const { getByTestId, queryByTestId, findByTestId } = renderGraphPreview({ + ...mockContextValue, + isPreviewMode: true, + }); + // Using findByTestId to wait for the component to be rendered because it is a lazy loaded component expect(await findByTestId(GRAPH_PREVIEW_TEST_ID)).toBeInTheDocument(); expect( @@ -98,21 +176,159 @@ describe('<GraphPreviewContainer />', () => { }); }); - it('should not render when graph data is not available', () => { + it('should render component and without link in header in rule preview', async () => { + mockUseFetchGraphData.mockReturnValue({ + isLoading: false, + isError: false, + data: { nodes: DEFAULT_NODES, edges: [] }, + }); + + const timestamp = new Date().toISOString(); + + (useGraphPreview as jest.Mock).mockReturnValue({ + timestamp, + eventIds: [], + hasGraphRepresentation: true, + }); + + const { getByTestId, queryByTestId, findByTestId } = renderGraphPreview({ + ...mockContextValue, + isPreview: true, + }); + + // Using findByTestId to wait for the component to be rendered because it is a lazy loaded component + expect(await findByTestId(GRAPH_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect(mockUseFetchGraphData).toHaveBeenCalled(); + expect(mockUseFetchGraphData.mock.calls[0][0]).toEqual({ + req: { + query: { + eventIds: [], + start: `${timestamp}||-30m`, + end: `${timestamp}||+30m`, + }, + }, + options: { + enabled: true, + refetchOnWindowFocus: false, + }, + }); + }); + + it('should render component and without link in header when expanding flyout feature is disabled', async () => { + mockUseUiSetting.mockReturnValue([false]); + mockUseFetchGraphData.mockReturnValue({ + isLoading: false, + isError: false, + data: { nodes: DEFAULT_NODES, edges: [] }, + }); + + const timestamp = new Date().toISOString(); + + (useGraphPreview as jest.Mock).mockReturnValue({ + timestamp, + eventIds: [], + hasGraphRepresentation: true, + }); + + const { getByTestId, queryByTestId, findByTestId } = renderGraphPreview(); + + // Using findByTestId to wait for the component to be rendered because it is a lazy loaded component + expect(await findByTestId(GRAPH_PREVIEW_TEST_ID)).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect(mockUseFetchGraphData).toHaveBeenCalled(); + expect(mockUseFetchGraphData.mock.calls[0][0]).toEqual({ + req: { + query: { + eventIds: [], + start: `${timestamp}||-30m`, + end: `${timestamp}||+30m`, + }, + }, + options: { + enabled: true, + refetchOnWindowFocus: false, + }, + }); + }); + + it('should not render when graph data is not available', async () => { mockUseFetchGraphData.mockReturnValue({ isLoading: false, isError: false, data: undefined, }); + const timestamp = new Date().toISOString(); + (useGraphPreview as jest.Mock).mockReturnValue({ - isAuditLog: false, + timestamp, + eventIds: [], + hasGraphRepresentation: false, }); - const { queryByTestId } = renderGraphPreview(); + const { getByTestId, queryByTestId, findByTestId } = renderGraphPreview(); + // Using findByTestId to wait for the component to be rendered because it is a lazy loaded component expect( - queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + await findByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_HEADER_TITLE_LINK_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).not.toBeInTheDocument(); + expect( + queryByTestId(EXPANDABLE_PANEL_TOGGLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) ).not.toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_ICON_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_CONTENT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect( + getByTestId(EXPANDABLE_PANEL_HEADER_TITLE_TEXT_TEST_ID(GRAPH_PREVIEW_TEST_ID)) + ).toBeInTheDocument(); + expect(mockUseFetchGraphData).toHaveBeenCalled(); + expect(mockUseFetchGraphData.mock.calls[0][0]).toEqual({ + req: { + query: { + eventIds: [], + start: `${timestamp}||-30m`, + end: `${timestamp}||+30m`, + }, + }, + options: { + enabled: false, + refetchOnWindowFocus: false, + }, + }); }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.tsx index 0b881b8f8d439..90a0218778549 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/graph_preview_container.tsx @@ -7,23 +7,48 @@ import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; +import { useUiSetting$ } from '@kbn/kibana-react-plugin/public'; +import { EuiBetaBadge } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { useFetchGraphData } from '@kbn/cloud-security-posture-graph/src/hooks'; +import { ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING } from '../../../../../common/constants'; import { useDocumentDetailsContext } from '../../shared/context'; import { GRAPH_PREVIEW_TEST_ID } from './test_ids'; import { GraphPreview } from './graph_preview'; -import { useFetchGraphData } from '../hooks/use_fetch_graph_data'; -import { useGraphPreview } from '../hooks/use_graph_preview'; +import { useGraphPreview } from '../../shared/hooks/use_graph_preview'; +import { useNavigateToGraphVisualization } from '../../shared/hooks/use_navigate_to_graph_visualization'; import { ExpandablePanel } from '../../../shared/components/expandable_panel'; /** * Graph preview under Overview, Visualizations. It shows a graph representation of entities. */ export const GraphPreviewContainer: React.FC = () => { - const { dataAsNestedObject, getFieldsData } = useDocumentDetailsContext(); + const { + dataAsNestedObject, + getFieldsData, + eventId, + indexName, + scopeId, + isPreview, + isPreviewMode, + } = useDocumentDetailsContext(); + + const [visualizationInFlyoutEnabled] = useUiSetting$<boolean>( + ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING + ); + const allowFlyoutExpansion = visualizationInFlyoutEnabled && !isPreviewMode && !isPreview; + + const { navigateToGraphVisualization } = useNavigateToGraphVisualization({ + eventId, + indexName, + isFlyoutOpen: true, + scopeId, + }); const { eventIds, timestamp = new Date().toISOString(), - isAuditLog, + hasGraphRepresentation, } = useGraphPreview({ getFieldsData, ecsData: dataAsNestedObject, @@ -39,35 +64,64 @@ export const GraphPreviewContainer: React.FC = () => { }, }, options: { - enabled: isAuditLog, + enabled: hasGraphRepresentation, refetchOnWindowFocus: false, }, }); return ( - isAuditLog && ( - <ExpandablePanel - header={{ - title: ( - <FormattedMessage - id="xpack.securitySolution.flyout.right.visualizations.graphPreview.graphPreviewTitle" - defaultMessage="Graph preview" - /> - ), - iconType: 'indexMapping', - }} - data-test-subj={GRAPH_PREVIEW_TEST_ID} - content={ - !isLoading && !isError - ? { - paddingSize: 'none', + <ExpandablePanel + header={{ + title: ( + <FormattedMessage + id="xpack.securitySolution.flyout.right.visualizations.graphPreview.graphPreviewTitle" + defaultMessage="Graph preview" + /> + ), + headerContent: ( + <EuiBetaBadge + alignment="middle" + iconType="beaker" + data-test-subj="graphPreviewBetaBadge" + label={i18n.translate( + 'xpack.securitySolution.flyout.right.visualizations.graphPreview.technicalPreviewLabel', + { + defaultMessage: 'Technical Preview', + } + )} + tooltipContent={i18n.translate( + 'xpack.securitySolution.flyout.right.visualizations.graphPreview.technicalPreviewTooltip', + { + defaultMessage: + 'This functionality is in technical preview and may be changed or removed completely in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.', } - : undefined - } - > - <GraphPreview isLoading={isLoading} isError={isError} data={data} /> - </ExpandablePanel> - ) + )} + /> + ), + iconType: allowFlyoutExpansion ? 'arrowStart' : 'indexMapping', + ...(allowFlyoutExpansion && { + link: { + callback: navigateToGraphVisualization, + tooltip: ( + <FormattedMessage + id="xpack.securitySolution.flyout.right.visualizations.graphPreview.graphPreviewOpenGraphTooltip" + defaultMessage="Expand graph" + /> + ), + }, + }), + }} + data-test-subj={GRAPH_PREVIEW_TEST_ID} + content={ + !isLoading && !isError + ? { + paddingSize: 'none', + } + : undefined + } + > + <GraphPreview isLoading={isLoading} isError={isError} data={data} /> + </ExpandablePanel> ); }; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.test.tsx index 3aeb7d30f8e48..6fb4d5d30b897 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.test.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.test.tsx @@ -8,6 +8,7 @@ import React from 'react'; import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; import { render } from '@testing-library/react'; +import { useFetchGraphData } from '@kbn/cloud-security-posture-graph/src/hooks'; import { ANALYZER_PREVIEW_TEST_ID, SESSION_PREVIEW_TEST_ID, @@ -25,9 +26,8 @@ import { TestProvider } from '@kbn/expandable-flyout/src/test/provider'; import { useExpandSection } from '../hooks/use_expand_section'; import { useInvestigateInTimeline } from '../../../../detections/components/alerts_table/timeline_actions/use_investigate_in_timeline'; import { useIsInvestigateInResolverActionEnabled } from '../../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver'; +import { useGraphPreview } from '../../shared/hooks/use_graph_preview'; import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; -import { useGraphPreview } from '../hooks/use_graph_preview'; -import { useFetchGraphData } from '../hooks/use_fetch_graph_data'; jest.mock('../hooks/use_expand_section'); jest.mock('../../shared/hooks/use_alert_prevalence_from_process_tree', () => ({ @@ -53,6 +53,7 @@ jest.mock( jest.mock( '../../../../detections/components/alerts_table/timeline_actions/investigate_in_resolver' ); + jest.mock('../../../../common/hooks/use_experimental_features', () => ({ useIsExperimentalFeatureEnabled: jest.fn(), })); @@ -67,11 +68,11 @@ jest.mock('@kbn/kibana-react-plugin/public', () => { useUiSetting$: () => mockUseUiSetting(), }; }); -jest.mock('../hooks/use_graph_preview'); +jest.mock('../../shared/hooks/use_graph_preview'); const mockUseGraphPreview = useGraphPreview as jest.Mock; -jest.mock('../hooks/use_fetch_graph_data', () => ({ +jest.mock('@kbn/cloud-security-posture-graph/src/hooks', () => ({ useFetchGraphData: jest.fn(), })); @@ -95,6 +96,7 @@ const renderVisualizationsSection = (contextValue = panelContextValue) => describe('<VisualizationsSection />', () => { beforeEach(() => { + mockUseUiSetting.mockReturnValue([false]); mockUseTimelineDataFilters.mockReturnValue({ selectedPatterns: ['index'] }); mockUseAlertPrevalenceFromProcessTree.mockReturnValue({ loading: false, @@ -103,7 +105,7 @@ describe('<VisualizationsSection />', () => { statsNodes: undefined, }); mockUseGraphPreview.mockReturnValue({ - isAuditLog: true, + hasGraphRepresentation: true, }); mockUseFetchGraphData.mockReturnValue({ isLoading: false, @@ -136,6 +138,7 @@ describe('<VisualizationsSection />', () => { }); (useIsInvestigateInResolverActionEnabled as jest.Mock).mockReturnValue(true); (useExpandSection as jest.Mock).mockReturnValue(true); + mockUseUiSetting.mockReturnValue([false]); useIsExperimentalFeatureEnabledMock.mockReturnValue(false); const { getByTestId, queryByTestId } = renderVisualizationsSection(); @@ -148,10 +151,31 @@ describe('<VisualizationsSection />', () => { it('should render the graph preview component if the feature is enabled', () => { (useExpandSection as jest.Mock).mockReturnValue(true); + mockUseUiSetting.mockReturnValue([true]); useIsExperimentalFeatureEnabledMock.mockReturnValue(true); const { getByTestId } = renderVisualizationsSection(); expect(getByTestId(`${GRAPH_PREVIEW_TEST_ID}LeftSection`)).toBeInTheDocument(); }); + + it('should not render the graph preview component if the experimental feature is disabled', () => { + (useExpandSection as jest.Mock).mockReturnValue(true); + mockUseUiSetting.mockReturnValue([true]); + useIsExperimentalFeatureEnabledMock.mockReturnValue(false); + + const { queryByTestId } = renderVisualizationsSection(); + + expect(queryByTestId(`${GRAPH_PREVIEW_TEST_ID}LeftSection`)).not.toBeInTheDocument(); + }); + + it('should not render the graph preview component if the flyout feature is disabled', () => { + (useExpandSection as jest.Mock).mockReturnValue(true); + mockUseUiSetting.mockReturnValue([false]); + useIsExperimentalFeatureEnabledMock.mockReturnValue(true); + + const { queryByTestId } = renderVisualizationsSection(); + + expect(queryByTestId(`${GRAPH_PREVIEW_TEST_ID}LeftSection`)).not.toBeInTheDocument(); + }); }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx index c328036eece43..23bea1f8fecdd 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/visualizations_section.tsx @@ -8,15 +8,18 @@ import React, { memo } from 'react'; import { EuiSpacer } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; +import { useUiSetting$ } from '@kbn/kibana-react-plugin/public'; import { useExpandSection } from '../hooks/use_expand_section'; import { AnalyzerPreviewContainer } from './analyzer_preview_container'; import { SessionPreviewContainer } from './session_preview_container'; import { ExpandableSection } from './expandable_section'; import { VISUALIZATIONS_TEST_ID } from './test_ids'; import { GraphPreviewContainer } from './graph_preview_container'; -import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; import { useDocumentDetailsContext } from '../../shared/context'; -import { useGraphPreview } from '../hooks/use_graph_preview'; +import { useGraphPreview } from '../../shared/hooks/use_graph_preview'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; +import { ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING } from '../../../../../common/constants'; +import { GRAPH_VISUALIZATION_IN_FLYOUT_ENABLED_EXPERIMENTAL_FEATURE } from '../../shared/constants/experimental_features'; const KEY = 'visualizations'; @@ -25,18 +28,25 @@ const KEY = 'visualizations'; */ export const VisualizationsSection = memo(() => { const expanded = useExpandSection({ title: KEY, defaultValue: false }); - const graphVisualizationInFlyoutEnabled = useIsExperimentalFeatureEnabled( - 'graphVisualizationInFlyoutEnabled' + const { dataAsNestedObject, getFieldsData } = useDocumentDetailsContext(); + + const [visualizationInFlyoutEnabled] = useUiSetting$<boolean>( + ENABLE_VISUALIZATIONS_IN_FLYOUT_SETTING ); - const { dataAsNestedObject, getFieldsData } = useDocumentDetailsContext(); + const isGraphFeatureEnabled = useIsExperimentalFeatureEnabled( + GRAPH_VISUALIZATION_IN_FLYOUT_ENABLED_EXPERIMENTAL_FEATURE + ); // Decide whether to show the graph preview or not - const { isAuditLog: isGraphPreviewEnabled } = useGraphPreview({ + const { hasGraphRepresentation } = useGraphPreview({ getFieldsData, ecsData: dataAsNestedObject, }); + const shouldShowGraphPreview = + visualizationInFlyoutEnabled && isGraphFeatureEnabled && hasGraphRepresentation; + return ( <ExpandableSection expanded={expanded} @@ -52,7 +62,7 @@ export const VisualizationsSection = memo(() => { <SessionPreviewContainer /> <EuiSpacer /> <AnalyzerPreviewContainer /> - {graphVisualizationInFlyoutEnabled && isGraphPreviewEnabled && ( + {shouldShowGraphPreview && ( <> <EuiSpacer /> <GraphPreviewContainer /> diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_graph_data.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_graph_data.test.tsx deleted file mode 100644 index c22ec0caa82c5..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_graph_data.test.tsx +++ /dev/null @@ -1,89 +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 { renderHook } from '@testing-library/react-hooks'; -import { useFetchGraphData } from './use_fetch_graph_data'; - -const mockUseQuery = jest.fn(); - -jest.mock('@tanstack/react-query', () => { - return { - useQuery: (...args: unknown[]) => mockUseQuery(...args), - }; -}); - -describe('useFetchGraphData', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - it('Should pass default options when options are not provided', () => { - renderHook(() => { - return useFetchGraphData({ - req: { - query: { - eventIds: [], - start: '2021-09-01T00:00:00.000Z', - end: '2021-09-01T23:59:59.999Z', - }, - }, - }); - }); - - expect(mockUseQuery.mock.calls).toHaveLength(1); - expect(mockUseQuery.mock.calls[0][2]).toEqual({ - enabled: true, - refetchOnWindowFocus: true, - }); - }); - - it('Should should not be enabled when enabled set to false', () => { - renderHook(() => { - return useFetchGraphData({ - req: { - query: { - eventIds: [], - start: '2021-09-01T00:00:00.000Z', - end: '2021-09-01T23:59:59.999Z', - }, - }, - options: { - enabled: false, - }, - }); - }); - - expect(mockUseQuery.mock.calls).toHaveLength(1); - expect(mockUseQuery.mock.calls[0][2]).toEqual({ - enabled: false, - refetchOnWindowFocus: true, - }); - }); - - it('Should should not be refetchOnWindowFocus when refetchOnWindowFocus set to false', () => { - renderHook(() => { - return useFetchGraphData({ - req: { - query: { - eventIds: [], - start: '2021-09-01T00:00:00.000Z', - end: '2021-09-01T23:59:59.999Z', - }, - }, - options: { - refetchOnWindowFocus: false, - }, - }); - }); - - expect(mockUseQuery.mock.calls).toHaveLength(1); - expect(mockUseQuery.mock.calls[0][2]).toEqual({ - enabled: true, - refetchOnWindowFocus: false, - }); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_graph_data.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_graph_data.ts deleted file mode 100644 index 9a0e270a9b2e0..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_fetch_graph_data.ts +++ /dev/null @@ -1,96 +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 { useQuery } from '@tanstack/react-query'; -import type { - GraphRequest, - GraphResponse, -} from '@kbn/cloud-security-posture-common/types/graph/latest'; -import { useMemo } from 'react'; -import { EVENT_GRAPH_VISUALIZATION_API } from '../../../../../common/constants'; -import { useHttp } from '../../../../common/lib/kibana'; - -/** - * Interface for the input parameters of the useFetchGraphData hook. - */ -export interface UseFetchGraphDataParams { - /** - * The request object containing the query parameters for the graph data. - */ - req: GraphRequest; - /** - * Optional configuration options for the query. - */ - options?: { - /** - * If false, the query will not automatically run. - * Defaults to true. - */ - enabled?: boolean; - /** - * If true, the query will refetch on window focus. - * Defaults to true. - */ - refetchOnWindowFocus?: boolean; - }; -} - -/** - * Interface for the result of the useFetchGraphData hook. - */ -export interface UseFetchGraphDataResult { - /** - * Indicates if the query is currently loading. - */ - isLoading: boolean; - /** - * Indicates if there was an error during the query. - */ - isError: boolean; - /** - * The data returned from the query. - */ - data?: GraphResponse; -} - -/** - * Hook to fetch event's graph visualization data. - * - * @param params - The input parameters for the hook. - * @returns The result of the hook. - */ -export const useFetchGraphData = ({ - req, - options, -}: UseFetchGraphDataParams): UseFetchGraphDataResult => { - const { eventIds, start, end, esQuery } = req.query; - const http = useHttp(); - const QUERY_KEY = useMemo( - () => ['useFetchGraphData', eventIds, start, end, esQuery], - [end, esQuery, eventIds, start] - ); - - const { isLoading, isError, data } = useQuery<GraphResponse>( - QUERY_KEY, - () => { - return http.post<GraphResponse>(EVENT_GRAPH_VISUALIZATION_API, { - version: '1', - body: JSON.stringify(req), - }); - }, - { - enabled: options?.enabled ?? true, - refetchOnWindowFocus: options?.refetchOnWindowFocus ?? true, - } - ); - - return { - isLoading, - isError, - data, - }; -}; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_graph_preview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_graph_preview.test.tsx deleted file mode 100644 index 7fa0741a85118..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_graph_preview.test.tsx +++ /dev/null @@ -1,195 +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 { RenderHookResult } from '@testing-library/react'; -import { renderHook } from '@testing-library/react'; -import type { UseGraphPreviewParams, UseGraphPreviewResult } from './use_graph_preview'; -import { useGraphPreview } from './use_graph_preview'; -import type { GetFieldsData } from '../../shared/hooks/use_get_fields_data'; -import { mockFieldData } from '../../shared/mocks/mock_get_fields_data'; - -describe('useGraphPreview', () => { - let hookResult: RenderHookResult<UseGraphPreviewResult, UseGraphPreviewParams>; - - it(`should return false when missing actor`, () => { - const getFieldsData: GetFieldsData = (field: string) => { - if (field === 'kibana.alert.original_event.id') { - return 'eventId'; - } - return mockFieldData[field]; - }; - - hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { - initialProps: { - getFieldsData, - ecsData: { - _id: 'id', - event: { - action: ['action'], - }, - }, - }, - }); - - const { isAuditLog, timestamp, eventIds, actorIds, action } = hookResult.result.current; - expect(isAuditLog).toEqual(false); - expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); - expect(eventIds).toEqual(['eventId']); - expect(actorIds).toEqual([]); - expect(action).toEqual(['action']); - }); - - it(`should return false when missing event.action`, () => { - const getFieldsData: GetFieldsData = (field: string) => { - if (field === 'kibana.alert.original_event.id') { - return 'eventId'; - } else if (field === 'actor.entity.id') { - return 'actorId'; - } - return mockFieldData[field]; - }; - - hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { - initialProps: { - getFieldsData, - ecsData: { - _id: 'id', - }, - }, - }); - - const { isAuditLog, timestamp, eventIds, actorIds, action } = hookResult.result.current; - expect(isAuditLog).toEqual(false); - expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); - expect(eventIds).toEqual(['eventId']); - expect(actorIds).toEqual(['actorId']); - expect(action).toEqual(undefined); - }); - - it(`should return false when missing original_event.id`, () => { - const getFieldsData: GetFieldsData = (field: string) => { - if (field === 'actor.entity.id') { - return 'actorId'; - } - return mockFieldData[field]; - }; - - hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { - initialProps: { - getFieldsData, - ecsData: { - _id: 'id', - event: { - action: ['action'], - }, - }, - }, - }); - - const { isAuditLog, timestamp, eventIds, actorIds, action } = hookResult.result.current; - expect(isAuditLog).toEqual(false); - expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); - expect(eventIds).toEqual([]); - expect(actorIds).toEqual(['actorId']); - expect(action).toEqual(['action']); - }); - - it(`should return false when timestamp is missing`, () => { - const getFieldsData: GetFieldsData = (field: string) => { - if (field === '@timestamp') { - return; - } else if (field === 'kibana.alert.original_event.id') { - return 'eventId'; - } else if (field === 'actor.entity.id') { - return 'actorId'; - } - - return mockFieldData[field]; - }; - - hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { - initialProps: { - getFieldsData, - ecsData: { - _id: 'id', - event: { - action: ['action'], - }, - }, - }, - }); - - const { isAuditLog, timestamp, eventIds, actorIds, action } = hookResult.result.current; - expect(isAuditLog).toEqual(false); - expect(timestamp).toEqual(null); - expect(eventIds).toEqual(['eventId']); - expect(actorIds).toEqual(['actorId']); - expect(action).toEqual(['action']); - }); - - it(`should return true when alert is has graph preview`, () => { - const getFieldsData: GetFieldsData = (field: string) => { - if (field === 'kibana.alert.original_event.id') { - return 'eventId'; - } else if (field === 'actor.entity.id') { - return 'actorId'; - } - - return mockFieldData[field]; - }; - - hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { - initialProps: { - getFieldsData, - ecsData: { - _id: 'id', - event: { - action: ['action'], - }, - }, - }, - }); - - const { isAuditLog, timestamp, eventIds, actorIds, action } = hookResult.result.current; - expect(isAuditLog).toEqual(true); - expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); - expect(eventIds).toEqual(['eventId']); - expect(actorIds).toEqual(['actorId']); - expect(action).toEqual(['action']); - }); - - it(`should return true when alert is has graph preview with multiple values`, () => { - const getFieldsData: GetFieldsData = (field: string) => { - if (field === 'kibana.alert.original_event.id') { - return ['id1', 'id2']; - } else if (field === 'actor.entity.id') { - return ['actorId1', 'actorId2']; - } - - return mockFieldData[field]; - }; - - hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { - initialProps: { - getFieldsData, - ecsData: { - _id: 'id', - event: { - action: ['action1', 'action2'], - }, - }, - }, - }); - - const { isAuditLog, timestamp, eventIds, actorIds, action } = hookResult.result.current; - expect(isAuditLog).toEqual(true); - expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); - expect(eventIds).toEqual(['id1', 'id2']); - expect(actorIds).toEqual(['actorId1', 'actorId2']); - expect(action).toEqual(['action1', 'action2']); - }); -}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_graph_preview.ts b/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_graph_preview.ts deleted file mode 100644 index bbaeb808c9e2a..0000000000000 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/hooks/use_graph_preview.ts +++ /dev/null @@ -1,72 +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 { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; -import { get } from 'lodash/fp'; -import type { GetFieldsData } from '../../shared/hooks/use_get_fields_data'; -import { getField, getFieldArray } from '../../shared/utils'; - -export interface UseGraphPreviewParams { - /** - * Retrieves searchHit values for the provided field - */ - getFieldsData: GetFieldsData; - - /** - * An object with top level fields from the ECS object - */ - ecsData: Ecs; -} -/** - * Interface for the result of the useGraphPreview hook - */ -export interface UseGraphPreviewResult { - /** - * The timestamp of the event - */ - timestamp: string | null; - - /** - * Array of event IDs associated with the alert - */ - eventIds: string[]; - - /** - * Array of actor entity IDs associated with the alert - */ - actorIds: string[]; - - /** - * Action associated with the event - */ - action?: string[]; - - /** - * Boolean indicating if the event is an audit log (contains event ids, actor ids and action) - */ - isAuditLog: boolean; -} - -/** - * Hook that returns the graph view configuration if the graph view is available for the alert - */ -export const useGraphPreview = ({ - getFieldsData, - ecsData, -}: UseGraphPreviewParams): UseGraphPreviewResult => { - const timestamp = getField(getFieldsData('@timestamp')); - const originalEventId = getFieldsData('kibana.alert.original_event.id'); - const eventId = getFieldsData('event.id'); - const eventIds = originalEventId ? getFieldArray(originalEventId) : getFieldArray(eventId); - - const actorIds = getFieldArray(getFieldsData('actor.entity.id')); - const action: string[] | undefined = get(['event', 'action'], ecsData); - const isAuditLog = - Boolean(timestamp) && actorIds.length > 0 && Boolean(action?.length) && eventIds.length > 0; - - return { timestamp, eventIds, actorIds, action, isAuditLog }; -}; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/constants/experimental_features.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/constants/experimental_features.ts new file mode 100644 index 0000000000000..aeb8b899ef6ea --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/constants/experimental_features.ts @@ -0,0 +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. + */ + +/** This security solution experimental feature allows user to enable/disable the graph visualization in Flyout feature (depends on securitySolution:enableVisualizationsInFlyout) */ +export const GRAPH_VISUALIZATION_IN_FLYOUT_ENABLED_EXPERIMENTAL_FEATURE = + 'graphVisualizationInFlyoutEnabled' as const; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_get_fields_data.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_get_fields_data.ts index 3e055e3bc4f63..35492384f4f4e 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_get_fields_data.ts +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_get_fields_data.ts @@ -17,7 +17,7 @@ import type { SearchHit } from '../../../../../common/search_strategy'; * This should be generally fine, but given the flattened nature of the top level key, utilities like `get` or `getOr` won't work since the path isn't actually nested * This utility allows users to not only get simple fields, but if they provide a path like `kibana.alert.parameters.index`, it will return an array of all index values * for each object in the parameters array. As an added note, this work stemmed from a hope to be able to purely use the fields api in place of the data produced by - * `getDataFromFieldsHits` found in `x-pack/plugins/timelines/common/utils/field_formatters.ts` + * `getDataFromFieldsHits` found in `x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts` */ const getAllDotIndicesInReverse = (dotField: string): number[] => { const dotRegx = RegExp('[.]', 'g'); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_graph_preview.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_graph_preview.test.tsx new file mode 100644 index 0000000000000..453f897d4e188 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_graph_preview.test.tsx @@ -0,0 +1,226 @@ +/* + * 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 { RenderHookResult } from '@testing-library/react'; +import { renderHook } from '@testing-library/react'; +import type { UseGraphPreviewParams, UseGraphPreviewResult } from './use_graph_preview'; +import { useGraphPreview } from './use_graph_preview'; +import type { GetFieldsData } from './use_get_fields_data'; +import { mockFieldData } from '../mocks/mock_get_fields_data'; + +const mockGetFieldsData: GetFieldsData = (field: string) => { + if (field === 'kibana.alert.original_event.id') { + return 'eventId'; + } else if (field === 'actor.entity.id') { + return 'actorId'; + } else if (field === 'target.entity.id') { + return 'targetId'; + } + + return mockFieldData[field]; +}; + +describe('useGraphPreview', () => { + let hookResult: RenderHookResult<UseGraphPreviewResult, UseGraphPreviewParams>; + + it(`should return false when missing actor`, () => { + const getFieldsData: GetFieldsData = (field: string) => { + if (field === 'actor.entity.id') { + return; + } + return mockGetFieldsData(field); + }; + + hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { + initialProps: { + getFieldsData, + ecsData: { + _id: 'id', + event: { + action: ['action'], + }, + }, + }, + }); + + const { hasGraphRepresentation, timestamp, eventIds, actorIds, action, targetIds } = + hookResult.result.current; + expect(hasGraphRepresentation).toEqual(false); + expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); + expect(eventIds).toEqual(['eventId']); + expect(actorIds).toEqual([]); + expect(targetIds).toEqual(['targetId']); + expect(action).toEqual(['action']); + }); + + it(`should return false when missing event.action`, () => { + hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { + initialProps: { + getFieldsData: mockGetFieldsData, + ecsData: { + _id: 'id', + }, + }, + }); + + const { hasGraphRepresentation, timestamp, eventIds, actorIds, action, targetIds } = + hookResult.result.current; + expect(hasGraphRepresentation).toEqual(false); + expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); + expect(eventIds).toEqual(['eventId']); + expect(actorIds).toEqual(['actorId']); + expect(targetIds).toEqual(['targetId']); + expect(action).toEqual(undefined); + }); + + it(`should return false when missing target`, () => { + const getFieldsData: GetFieldsData = (field: string) => { + if (field === 'target.entity.id') { + return; + } + return mockGetFieldsData(field); + }; + + hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { + initialProps: { + getFieldsData, + ecsData: { + _id: 'id', + }, + }, + }); + + const { hasGraphRepresentation, timestamp, eventIds, actorIds, action, targetIds } = + hookResult.result.current; + expect(hasGraphRepresentation).toEqual(false); + expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); + expect(eventIds).toEqual(['eventId']); + expect(actorIds).toEqual(['actorId']); + expect(targetIds).toEqual([]); + expect(action).toEqual(undefined); + }); + + it(`should return false when missing original_event.id`, () => { + const getFieldsData: GetFieldsData = (field: string) => { + if (field === 'kibana.alert.original_event.id') { + return; + } + + return mockGetFieldsData(field); + }; + + hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { + initialProps: { + getFieldsData, + ecsData: { + _id: 'id', + event: { + action: ['action'], + }, + }, + }, + }); + + const { hasGraphRepresentation, timestamp, eventIds, actorIds, action, targetIds } = + hookResult.result.current; + expect(hasGraphRepresentation).toEqual(false); + expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); + expect(eventIds).toEqual([]); + expect(actorIds).toEqual(['actorId']); + expect(targetIds).toEqual(['targetId']); + expect(action).toEqual(['action']); + }); + + it(`should return false when timestamp is missing`, () => { + const getFieldsData: GetFieldsData = (field: string) => { + if (field === '@timestamp') { + return; + } + + return mockGetFieldsData(field); + }; + + hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { + initialProps: { + getFieldsData, + ecsData: { + _id: 'id', + event: { + action: ['action'], + }, + }, + }, + }); + + const { hasGraphRepresentation, timestamp, eventIds, actorIds, action, targetIds } = + hookResult.result.current; + expect(hasGraphRepresentation).toEqual(false); + expect(timestamp).toEqual(null); + expect(eventIds).toEqual(['eventId']); + expect(actorIds).toEqual(['actorId']); + expect(targetIds).toEqual(['targetId']); + expect(action).toEqual(['action']); + }); + + it(`should return true when alert is has graph preview`, () => { + hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { + initialProps: { + getFieldsData: mockGetFieldsData, + ecsData: { + _id: 'id', + event: { + action: ['action'], + }, + }, + }, + }); + + const { hasGraphRepresentation, timestamp, eventIds, actorIds, action, targetIds } = + hookResult.result.current; + expect(hasGraphRepresentation).toEqual(true); + expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); + expect(eventIds).toEqual(['eventId']); + expect(actorIds).toEqual(['actorId']); + expect(targetIds).toEqual(['targetId']); + expect(action).toEqual(['action']); + }); + + it(`should return true when alert is has graph preview with multiple values`, () => { + const getFieldsData: GetFieldsData = (field: string) => { + if (field === 'kibana.alert.original_event.id') { + return ['id1', 'id2']; + } else if (field === 'actor.entity.id') { + return ['actorId1', 'actorId2']; + } else if (field === 'target.entity.id') { + return ['targetId1', 'targetId2']; + } + + return mockFieldData[field]; + }; + + hookResult = renderHook((props: UseGraphPreviewParams) => useGraphPreview(props), { + initialProps: { + getFieldsData, + ecsData: { + _id: 'id', + event: { + action: ['action1', 'action2'], + }, + }, + }, + }); + + const { hasGraphRepresentation, timestamp, eventIds, actorIds, action, targetIds } = + hookResult.result.current; + expect(hasGraphRepresentation).toEqual(true); + expect(timestamp).toEqual(mockFieldData['@timestamp'][0]); + expect(eventIds).toEqual(['id1', 'id2']); + expect(actorIds).toEqual(['actorId1', 'actorId2']); + expect(action).toEqual(['action1', 'action2']); + expect(targetIds).toEqual(['targetId1', 'targetId2']); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_graph_preview.ts b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_graph_preview.ts new file mode 100644 index 0000000000000..48233afab02df --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_graph_preview.ts @@ -0,0 +1,82 @@ +/* + * 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 { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; +import { get } from 'lodash/fp'; +import type { GetFieldsData } from './use_get_fields_data'; +import { getField, getFieldArray } from '../utils'; + +export interface UseGraphPreviewParams { + /** + * Retrieves searchHit values for the provided field + */ + getFieldsData: GetFieldsData; + + /** + * An object with top level fields from the ECS object + */ + ecsData: Ecs; +} +/** + * Interface for the result of the useGraphPreview hook + */ +export interface UseGraphPreviewResult { + /** + * The timestamp of the event + */ + timestamp: string | null; + + /** + * Array of event IDs associated with the alert + */ + eventIds: string[]; + + /** + * Array of actor entity IDs associated with the alert + */ + actorIds: string[]; + + /** + * Array of target entity IDs associated with the alert + */ + targetIds: string[]; + + /** + * Action associated with the event + */ + action?: string[]; + + /** + * Boolean indicating if the event is has a graph representation (contains event ids, actor ids and action) + */ + hasGraphRepresentation: boolean; +} + +/** + * Hook that returns the graph view configuration if the graph view is available for the alert + */ +export const useGraphPreview = ({ + getFieldsData, + ecsData, +}: UseGraphPreviewParams): UseGraphPreviewResult => { + const timestamp = getField(getFieldsData('@timestamp')); + const originalEventId = getFieldsData('kibana.alert.original_event.id'); + const eventId = getFieldsData('event.id'); + const eventIds = originalEventId ? getFieldArray(originalEventId) : getFieldArray(eventId); + + const actorIds = getFieldArray(getFieldsData('actor.entity.id')); + const targetIds = getFieldArray(getFieldsData('target.entity.id')); + const action: string[] | undefined = get(['event', 'action'], ecsData); + const hasGraphRepresentation = + Boolean(timestamp) && + Boolean(action?.length) && + actorIds.length > 0 && + eventIds.length > 0 && + targetIds.length > 0; + + return { timestamp, eventIds, actorIds, action, targetIds, hasGraphRepresentation }; +}; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.tsx index a4539ed7e6415..2137ce83527a8 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_analyzer.tsx @@ -49,7 +49,7 @@ export interface UseNavigateToAnalyzerResult { } /** - * Hook that returns the a callback to navigate to the analyzer in the flyout + * Hook that returns a callback to navigate to the analyzer in the flyout */ export const useNavigateToAnalyzer = ({ isFlyoutOpen, diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_graph_visualization.test.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_graph_visualization.test.tsx new file mode 100644 index 0000000000000..929dc208f3b38 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_graph_visualization.test.tsx @@ -0,0 +1,94 @@ +/* + * 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 { renderHook } from '@testing-library/react-hooks'; +import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; +import { mockFlyoutApi } from '../mocks/mock_flyout_context'; +import { useWhichFlyout } from './use_which_flyout'; +import { useKibana as mockUseKibana } from '../../../../common/lib/kibana/__mocks__'; +import { useKibana } from '../../../../common/lib/kibana'; +import { DocumentDetailsRightPanelKey, DocumentDetailsLeftPanelKey } from '../constants/panel_keys'; +import { useNavigateToGraphVisualization } from './use_navigate_to_graph_visualization'; +import { GRAPH_ID } from '../../left/components/graph_visualization'; + +jest.mock('@kbn/expandable-flyout'); +jest.mock('../../../../common/lib/kibana'); +jest.mock('./use_which_flyout'); + +const mockedUseKibana = mockUseKibana(); +(useKibana as jest.Mock).mockReturnValue(mockedUseKibana); + +const mockUseWhichFlyout = useWhichFlyout as jest.Mock; +const FLYOUT_KEY = 'SecuritySolution'; + +const eventId = 'eventId1'; +const indexName = 'index1'; +const scopeId = 'scopeId1'; + +describe('useNavigateToGraphVisualization', () => { + beforeEach(() => { + jest.clearAllMocks(); + jest.mocked(useExpandableFlyoutApi).mockReturnValue(mockFlyoutApi); + }); + + it('when isFlyoutOpen is true, should return callback that opens left and preview panels', () => { + mockUseWhichFlyout.mockReturnValue(FLYOUT_KEY); + const hookResult = renderHook(() => + useNavigateToGraphVisualization({ isFlyoutOpen: true, eventId, indexName, scopeId }) + ); + + // Act + hookResult.result.current.navigateToGraphVisualization(); + + expect(mockFlyoutApi.openLeftPanel).toHaveBeenCalledWith({ + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: GRAPH_ID, + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }); + }); + + it('when isFlyoutOpen is false and scopeId is not timeline, should return callback that opens a new flyout', () => { + mockUseWhichFlyout.mockReturnValue(null); + + const hookResult = renderHook(() => + useNavigateToGraphVisualization({ isFlyoutOpen: false, eventId, indexName, scopeId }) + ); + + // Act + hookResult.result.current.navigateToGraphVisualization(); + + expect(mockFlyoutApi.openFlyout).toHaveBeenCalledWith({ + right: { + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + left: { + id: DocumentDetailsLeftPanelKey, + path: { + tab: 'visualize', + subTab: GRAPH_ID, + }, + params: { + id: eventId, + indexName, + scopeId, + }, + }, + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_graph_visualization.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_graph_visualization.tsx new file mode 100644 index 0000000000000..bb61ae6f97073 --- /dev/null +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_graph_visualization.tsx @@ -0,0 +1,105 @@ +/* + * 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 { useCallback, useMemo } from 'react'; +import type { FlyoutPanelProps } from '@kbn/expandable-flyout'; +import { useExpandableFlyoutApi } from '@kbn/expandable-flyout'; +import type { Maybe } from '@kbn/timelines-plugin/common/search_strategy/common'; +import { useKibana } from '../../../../common/lib/kibana'; +import { DocumentDetailsLeftPanelKey, DocumentDetailsRightPanelKey } from '../constants/panel_keys'; +import { DocumentEventTypes } from '../../../../common/lib/telemetry'; +import { GRAPH_ID } from '../../left/components/graph_visualization'; + +export interface UseNavigateToGraphVisualizationParams { + /** + * When flyout is already open, call open left panel only + * When flyout is not open, open a new flyout + */ + isFlyoutOpen: boolean; + /** + * Id of the document + */ + eventId: string; + /** + * Name of the index used in the parent's page + */ + indexName: Maybe<string> | undefined; + /** + * Scope id of the page + */ + scopeId: string; +} + +export interface UseNavigateToGraphVisualizationResult { + /** + * Callback to open analyzer in visualize tab + */ + navigateToGraphVisualization: () => void; +} + +/** + * Hook that returns a callback to navigate to the graph visualization in the flyout + */ +export const useNavigateToGraphVisualization = ({ + isFlyoutOpen, + eventId, + indexName, + scopeId, +}: UseNavigateToGraphVisualizationParams): UseNavigateToGraphVisualizationResult => { + const { telemetry } = useKibana().services; + const { openLeftPanel, openFlyout } = useExpandableFlyoutApi(); + + const right: FlyoutPanelProps = useMemo( + () => ({ + id: DocumentDetailsRightPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + }), + [eventId, indexName, scopeId] + ); + + const left: FlyoutPanelProps = useMemo( + () => ({ + id: DocumentDetailsLeftPanelKey, + params: { + id: eventId, + indexName, + scopeId, + }, + path: { + tab: 'visualize', + subTab: GRAPH_ID, + }, + }), + [eventId, indexName, scopeId] + ); + + const navigateToGraphVisualization = useCallback(() => { + if (isFlyoutOpen) { + openLeftPanel(left); + telemetry.reportEvent(DocumentEventTypes.DetailsFlyoutTabClicked, { + location: scopeId, + panel: 'left', + tabId: 'visualize', + }); + } else { + openFlyout({ + right, + left, + }); + telemetry.reportEvent(DocumentEventTypes.DetailsFlyoutOpened, { + location: scopeId, + panel: 'left', + }); + } + }, [openFlyout, openLeftPanel, right, left, scopeId, telemetry, isFlyoutOpen]); + + return useMemo(() => ({ navigateToGraphVisualization }), [navigateToGraphVisualization]); +}; diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.tsx index f0b2733998c97..d98ce5f489e38 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/shared/hooks/use_navigate_to_session_view.tsx @@ -42,7 +42,7 @@ export interface UseNavigateToSessionViewResult { } /** - * Hook that returns the a callback to navigate to session view in the flyout + * Hook that returns a callback to navigate to session view in the flyout */ export const useNavigateToSessionView = ({ isFlyoutOpen, diff --git a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_on_expandable_flyout_close.ts b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_on_expandable_flyout_close.ts index e763bb222bc7a..526382372ab4d 100644 --- a/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_on_expandable_flyout_close.ts +++ b/x-pack/plugins/security_solution/public/flyout/shared/hooks/use_on_expandable_flyout_close.ts @@ -19,7 +19,7 @@ export interface UseOnCloseParams { /** * Hook to abstract the logic of listening to the onClose event for the Security Solution application. - * The kbn-expandable-flyout package provides the onClose callback, but has there are only 2 instances of the expandable flyout in Security Solution (normal and timeline) + * The expandable-flyout package provides the onClose callback, but has there are only 2 instances of the expandable flyout in Security Solution (normal and timeline) * we need a way to propagate the onClose event to all other components. * 2 event names are available, we pick the correct one depending on which flyout is open (if the timeline flyout is open, it is always on top, so we choose that one). */ diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.tsx b/x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.tsx index 3fe20be2cbd64..8d801d5e07e3c 100644 --- a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.tsx +++ b/x-pack/plugins/security_solution/public/management/components/artifact_list_page/components/artifact_flyout.tsx @@ -26,6 +26,9 @@ import { import type { EuiFlyoutSize } from '@elastic/eui/src/components/flyout/flyout'; import type { IHttpFetchError } from '@kbn/core-http-browser'; import { useIsMounted } from '@kbn/securitysolution-hook-utils'; +import { useLocation } from 'react-router-dom'; +import { useMarkInsightAsRemediated } from '../hooks/use_mark_workflow_insight_as_remediated'; +import type { WorkflowInsightRouteState } from '../../../pages/endpoint_hosts/types'; import { useUrlParams } from '../../../hooks/use_url_params'; import { useIsFlyoutOpened } from '../hooks/use_is_flyout_opened'; import { useTestIdGenerator } from '../../../hooks/use_test_id_generator'; @@ -197,6 +200,11 @@ export const ArtifactFlyout = memo<ArtifactFlyoutProps>( links: { securitySolution }, }, } = useKibana().services; + + const location = useLocation<WorkflowInsightRouteState>(); + const [sourceInsight, setSourceInsight] = useState<{ id: string; back_url: string } | null>( + null + ); const getTestId = useTestIdGenerator(dataTestSubj); const toasts = useToasts(); const isFlyoutOpened = useIsFlyoutOpened(); @@ -225,6 +233,10 @@ export const ArtifactFlyout = memo<ArtifactFlyoutProps>( error: internalSubmitError, } = useWithArtifactSubmitData(apiClient, formMode); + const { mutateAsync: markInsightAsRemediated } = useMarkInsightAsRemediated( + sourceInsight?.back_url + ); + const isSubmittingData = useMemo(() => { return submitHandler ? externalIsSubmittingData : internalIsSubmittingData; }, [externalIsSubmittingData, internalIsSubmittingData, submitHandler]); @@ -286,13 +298,23 @@ export const ArtifactFlyout = memo<ArtifactFlyoutProps>( ); const handleSuccess = useCallback( - (result: ExceptionListItemSchema) => { + async (result: ExceptionListItemSchema) => { toasts.addSuccess( isEditFlow ? labels.flyoutEditSubmitSuccess(result) : labels.flyoutCreateSubmitSuccess(result) ); + // Check if this artifact creation was opened from an endpoint insight + try { + if (sourceInsight?.id) { + await markInsightAsRemediated({ insightId: sourceInsight.id }); + return; + } + } catch { + setSourceInsight(null); + } + if (isMounted()) { // Close the flyout // `undefined` will cause params to be dropped from url @@ -301,7 +323,17 @@ export const ArtifactFlyout = memo<ArtifactFlyoutProps>( onSuccess(); } }, - [isEditFlow, isMounted, labels, onSuccess, setUrlParams, toasts, urlParams] + [ + isEditFlow, + isMounted, + labels, + markInsightAsRemediated, + onSuccess, + setUrlParams, + sourceInsight, + toasts, + urlParams, + ] ); const handleSubmitClick = useCallback(() => { @@ -357,6 +389,19 @@ export const ArtifactFlyout = memo<ArtifactFlyoutProps>( } }, [formState, confirmModalOnSuccess]); + // If this form was opened from an endpoint insight, prepopulate the form with the insight data + useEffect(() => { + if (location.state?.insight?.id && location.state?.insight?.item) { + setSourceInsight({ + id: location.state.insight.id, + back_url: location.state.insight.back_url, + }); + setFormState({ isValid: true, item: location.state.insight.item }); + + location.state.insight = undefined; + } + }, [apiClient.listId, location.state, location.state?.insight]); + // If we don't have the actual Artifact data yet for edit (in initialization phase - ex. came in with an // ID in the url that was not in the list), then retrieve it now useEffect(() => { diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_mark_workflow_insight_as_remediated.ts b/x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_mark_workflow_insight_as_remediated.ts new file mode 100644 index 0000000000000..9e53b8df055b5 --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/components/artifact_list_page/hooks/use_mark_workflow_insight_as_remediated.ts @@ -0,0 +1,47 @@ +/* + * 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 { useMutation } from '@tanstack/react-query'; +import { WORKFLOW_INSIGHTS } from '../../../pages/endpoint_hosts/view/translations'; +import type { SecurityWorkflowInsight } from '../../../../../common/endpoint/types/workflow_insights'; +import { ActionType } from '../../../../../common/endpoint/types/workflow_insights'; +import { resolvePathVariables } from '../../../../common/utils/resolve_path_variables'; +import { WORKFLOW_INSIGHTS_UPDATE_ROUTE } from '../../../../../common/endpoint/constants'; +import { useKibana, useToasts } from '../../../../common/lib/kibana'; + +export const useMarkInsightAsRemediated = (backUrl?: string) => { + const toasts = useToasts(); + const { + application: { navigateToUrl }, + http, + } = useKibana().services; + return useMutation<SecurityWorkflowInsight, Error, { insightId: string }>( + ({ insightId }: { insightId: string }) => + http.put<SecurityWorkflowInsight>( + resolvePathVariables(WORKFLOW_INSIGHTS_UPDATE_ROUTE, { insightId }), + { + version: '1', + body: JSON.stringify({ + action: { + type: ActionType.Remediated, + }, + }), + } + ), + { + onError: (err) => { + toasts.addDanger({ + title: WORKFLOW_INSIGHTS.toasts.updateInsightError, + text: err?.message, + }); + }, + onSuccess: () => { + if (backUrl) return navigateToUrl(backUrl); + }, + } + ); +}; diff --git a/x-pack/plugins/security_solution/public/management/cypress/cypress.d.ts b/x-pack/plugins/security_solution/public/management/cypress/cypress.d.ts index eb42649827908..f5bb7071d859f 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/cypress.d.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/cypress.d.ts @@ -11,6 +11,7 @@ import type { CasePostRequest } from '@kbn/cases-plugin/common/api'; import type { UsageRecord } from '@kbn/security-solution-serverless/server/types'; +import type { HostVmTransferResponse } from '../../../scripts/endpoint/common/types'; import type { DeletedEndpointHeartbeats, IndexedEndpointHeartbeats, @@ -30,6 +31,7 @@ import type { UninstallAgentFromHostTaskOptions, IsAgentAndEndpointUninstalledFromHostTaskOptions, LogItTaskOptions, + CaptureHostVmAgentDiagnosticsOptions, } from './types'; import type { DeleteIndexedFleetEndpointPoliciesResponse, @@ -267,6 +269,12 @@ declare global { arg: LogItTaskOptions, options?: Partial<Loggable & Timeoutable> ): Chainable<null>; + + task( + name: 'captureHostVmAgentDiagnostics', + arg: CaptureHostVmAgentDiagnosticsOptions, + options?: Partial<Loggable & Timeoutable> + ): Chainable<Omit<HostVmTransferResponse, 'delete'>>; } } } diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/file_operations.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/file_operations.cy.ts index ef252cbce01aa..5fbb9118370e8 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/file_operations.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/response_actions/response_console/file_operations.cy.ts @@ -66,6 +66,15 @@ describe('Response console', { tags: ['@ess', '@serverless'] }, () => { } }); + afterEach(function () { + if (Cypress.env('IS_CI') && this.currentTest?.isFailed() && createdHost) { + cy.task('captureHostVmAgentDiagnostics', { + hostname: createdHost.hostname, + fileNamePrefix: this.currentTest?.fullTitle(), + }); + } + }); + it('"get-file --path" - should retrieve a file', () => { const downloadsFolder = Cypress.config('downloadsFolder'); diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts b/x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts index 3abf04765ca5e..a85feb74f1d9e 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/support/data_loaders.ts @@ -11,6 +11,10 @@ import type { CasePostRequest } from '@kbn/cases-plugin/common'; import execa from 'execa'; import type { KbnClient } from '@kbn/test'; import type { ToolingLog } from '@kbn/tooling-log'; +import { REPO_ROOT } from '@kbn/repo-info'; +// This is a Cypress module and only used by Cypress, so disabling "should" be safe +// eslint-disable-next-line import/no-nodejs-modules +import { mkdir } from 'node:fs/promises'; import type { IndexedEndpointHeartbeats } from '../../../../common/endpoint/data_loaders/index_endpoint_hearbeats'; import { deleteIndexedEndpointHeartbeats, @@ -53,6 +57,7 @@ import type { LoadUserAndRoleCyTaskOptions, CreateUserAndRoleCyTaskOptions, LogItTaskOptions, + CaptureHostVmAgentDiagnosticsOptions, } from '../types'; import type { DeletedIndexedEndpointRuleAlerts, @@ -75,6 +80,7 @@ import { deleteAgentPolicy, fetchAgentPolicyEnrollmentKey, getOrCreateDefaultAgentPolicy, + setAgentLoggingLevel, } from '../../../../scripts/endpoint/common/fleet_services'; import { startElasticAgentWithDocker } from '../../../../scripts/endpoint/common/elastic_agent_service'; import type { IndexedFleetEndpointPolicyResponse } from '../../../../common/endpoint/data_loaders/index_fleet_endpoint_policy'; @@ -433,6 +439,7 @@ ${s1Info.status} log, kbnClient, }); + await setAgentLoggingLevel(kbnClient, newHost.agentId, 'debug', log); await waitForEndpointToStreamData(kbnClient, newHost.agentId, 360000); return newHost; } catch (err) { @@ -531,5 +538,65 @@ ${s1Info.status} await startEndpointHost(hostName); return null; }, + + /** + * Generates an Agent Diagnostics archive (ZIP) directly on the Host VM and saves it to a directory + * that is then included with the list of Artifacts that are captured with Buildkite job. + * + * ### Usage: + * + * This task is best used from a `afterEach()` by checking if the test failed and if so (and it + * was a test that was running against a host VM), then capture the diagnostics file + * + * @param hostname + * + * @example + * + * describe('something', () => { + * let hostVm; + * + * afterEach(function() { // << Important: Note the use of `function()` here instead of arrow function + * if (this.currentTest?.isFailed() && hostVm) { + * cy.task('captureHostVmAgentDiagnostics', { hostname: hostVm.hostname }); + * } + * }); + * + * //... + * }) + */ + captureHostVmAgentDiagnostics: async ({ + hostname, + fileNamePrefix = '', + }: CaptureHostVmAgentDiagnosticsOptions) => { + const { log } = await stackServicesPromise; + + log.info(`Capturing agent diagnostics for host VM [${hostname}]`); + + const vmClient = getHostVmClient(hostname, undefined, undefined, log); + const fileName = `elastic-agent-diagnostics-${hostname}-${new Date() + .toISOString() + .replace(/:/g, '.')}.zip`; + const vmDiagnosticsFile = `/tmp/${fileName}`; + const localDiagnosticsDir = `${REPO_ROOT}/target/test_failures`; + const localDiagnosticsFile = `${localDiagnosticsDir}/${ + fileNamePrefix + ? // Insure the file name prefix does not have characters that can't be used in file names + `${fileNamePrefix.replace(/[><:"/\\|?*'`{} ]/g, '_')}-` + : '' + }${fileName}`; + + await mkdir(localDiagnosticsDir, { recursive: true }); + + // generate diagnostics file on the host and then download it + await vmClient.exec( + `sudo /opt/Elastic/Agent/elastic-agent diagnostics --file ${vmDiagnosticsFile}` + ); + return vmClient.download(vmDiagnosticsFile, localDiagnosticsFile).then((response) => { + log.info(`Agent diagnostic file for host [${hostname}] has been downloaded and is available at: + ${response.filePath} +`); + return { filePath: response.filePath }; + }); + }, }); }; diff --git a/x-pack/plugins/security_solution/public/management/cypress/support/setup_tooling_log_level.ts b/x-pack/plugins/security_solution/public/management/cypress/support/setup_tooling_log_level.ts index b4901bef9321a..a8c85fad1c3a7 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/support/setup_tooling_log_level.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/support/setup_tooling_log_level.ts @@ -16,10 +16,20 @@ export const setupToolingLogLevel = (config: Cypress.PluginConfigOptions) => { const log = createToolingLogger(); const defaultToolingLogLevel = config.env.TOOLING_LOG_LEVEL; - log.info(`Cypress config 'env.TOOLING_LOG_LEVEL': ${defaultToolingLogLevel}`); + log.info(` + +Cypress Configuration File: ${config.configFile} + +'env.TOOLING_LOG_LEVEL' set to: ${defaultToolingLogLevel} + +*** FYI: *** To help with test failures, an environmental variable named 'TOOLING_LOG_LEVEL' can be set + with a value of 'verbose' in order to capture more data in the logs. This environment + property can be set either in the runtime environment (ex. local shell or buildkite) or + directly in the Cypress configuration file \`env: {}\` section. + + `); if (defaultToolingLogLevel && defaultToolingLogLevel !== createToolingLogger.defaultLogLevel) { createToolingLogger.defaultLogLevel = defaultToolingLogLevel; - log.info(`Default log level for 'createToolingLogger()' set to ${defaultToolingLogLevel}`); } }; diff --git a/x-pack/plugins/security_solution/public/management/cypress/types.ts b/x-pack/plugins/security_solution/public/management/cypress/types.ts index 8beb150a64d5a..e23ff82fa8479 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/types.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/types.ts @@ -81,3 +81,8 @@ export interface LogItTaskOptions { level: keyof Pick<ToolingLog, 'info' | 'debug' | 'verbose'>; data: any; } + +export interface CaptureHostVmAgentDiagnosticsOptions { + hostname: string; + fileNamePrefix?: string; +} diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts index 415f05c417ca8..6573cfb9f7c64 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts @@ -7,6 +7,7 @@ import type { DataViewBase } from '@kbn/es-query'; import type { GetInfoResponse } from '@kbn/fleet-plugin/common'; +import type { CreateExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; import type { AppLocation, EndpointPendingActions, @@ -155,3 +156,11 @@ export interface TransformStatsResponse { count: number; transforms: TransformStats[]; } + +export interface WorkflowInsightRouteState { + insight?: { + back_url: string; + id: string; + item: CreateExceptionListItemSchema; + }; +} diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights.tsx index 1ee7600eda2ef..b145573ccf745 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights.tsx @@ -6,31 +6,83 @@ */ import { EuiHorizontalRule, EuiAccordion, EuiSpacer, EuiText } from '@elastic/eui'; -import React from 'react'; +import React, { useState, useEffect, useCallback, useMemo } from 'react'; +import moment from 'moment'; +import { useFetchInsights } from '../../../hooks/insights/use_fetch_insights'; +import { useTriggerScan } from '../../../hooks/insights/use_trigger_scan'; +import { useFetchOngoingScans } from '../../../hooks/insights/use_fetch_ongoing_tasks'; import { WorkflowInsightsResults } from './workflow_insights_results'; import { WorkflowInsightsScanSection } from './workflow_insights_scan'; -import { useIsExperimentalFeatureEnabled } from '../../../../../../../common/hooks/use_experimental_features'; import { WORKFLOW_INSIGHTS } from '../../../translations'; -export const WorkflowInsights = () => { - const isWorkflowInsightsEnabled = useIsExperimentalFeatureEnabled('defendInsights'); +interface WorkflowInsightsProps { + endpointId: string; +} - if (!isWorkflowInsightsEnabled) { - return null; - } +export const WorkflowInsights = React.memo(({ endpointId }: WorkflowInsightsProps) => { + const [isScanButtonDisabled, setIsScanButtonDisabled] = useState(true); + const [scanCompleted, setIsScanCompleted] = useState(false); + const [userTriggeredScan, setUserTriggeredScan] = useState(false); - const results = null; + const disableScanButton = () => { + setIsScanButtonDisabled(true); + }; + + const [setScanOngoing, setScanCompleted] = [ + () => setIsScanCompleted(false), + () => setIsScanCompleted(true), + ]; + + const { data: insights, refetch: refetchInsights } = useFetchInsights({ + endpointId, + onSuccess: setScanCompleted, + }); + + const { + data: ongoingScans, + isLoading: isLoadingOngoingScans, + refetch: refetchOngoingScans, + } = useFetchOngoingScans({ + endpointId, + isPolling: isScanButtonDisabled, + onSuccess: refetchInsights, + }); + + const { mutate: triggerScan } = useTriggerScan({ + onSuccess: refetchOngoingScans, + onMutate: disableScanButton, + }); + + useEffect(() => { + setIsScanButtonDisabled(!!ongoingScans?.length || isLoadingOngoingScans); + }, [ongoingScans, isLoadingOngoingScans]); - const renderLastResultsCaption = () => { - if (!results) { + const lastResultCaption = useMemo(() => { + if (!insights?.length) { return null; } + + const latestTimestamp = insights + .map((insight) => moment.utc(insight['@timestamp'])) + .sort((a, b) => b.diff(a))[0]; + return ( <EuiText color={'subdued'} size={'xs'}> - {WORKFLOW_INSIGHTS.titleRight} + {`${WORKFLOW_INSIGHTS.titleRight} ${latestTimestamp.local().fromNow()}`} </EuiText> ); - }; + }, [insights]); + + const onScanButtonClick = useCallback( + ({ actionTypeId, connectorId }: { actionTypeId: string; connectorId: string }) => { + setScanOngoing(); + if (!userTriggeredScan) { + setUserTriggeredScan(true); + } + triggerScan({ endpointId, actionTypeId, connectorId }); + }, + [setScanOngoing, userTriggeredScan, triggerScan, endpointId] + ); return ( <> @@ -42,16 +94,25 @@ export const WorkflowInsights = () => { </EuiText> } initialIsOpen - extraAction={renderLastResultsCaption()} + extraAction={lastResultCaption} paddingSize={'none'} > <EuiSpacer size={'m'} /> - <WorkflowInsightsScanSection /> + <WorkflowInsightsScanSection + isScanButtonDisabled={isScanButtonDisabled} + onScanButtonClick={onScanButtonClick} + /> <EuiSpacer size={'m'} /> - <WorkflowInsightsResults results={true} /> + <WorkflowInsightsResults + results={insights} + scanCompleted={scanCompleted && userTriggeredScan} + endpointId={endpointId} + /> <EuiHorizontalRule /> </EuiAccordion> <EuiSpacer size="l" /> </> ); -}; +}); + +WorkflowInsights.displayName = 'WorkflowInsights'; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_results.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_results.tsx index cb2f0bc0889a1..719c56b0ad033 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_results.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_results.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useState } from 'react'; +import React, { useEffect, useState, useCallback, useMemo } from 'react'; import styled from 'styled-components'; import { EuiButtonIcon, @@ -17,11 +17,22 @@ import { EuiSpacer, EuiText, } from '@elastic/eui'; +import { ENDPOINT_ARTIFACT_LISTS } from '@kbn/securitysolution-list-constants'; import { WORKFLOW_INSIGHTS } from '../../../translations'; interface WorkflowInsightsResultsProps { - results: boolean; + results?: SecurityWorkflowInsight[]; + scanCompleted: boolean; + endpointId: string; } +import type { WorkflowInsightRouteState } from '../../../../types'; +import { getEndpointDetailsPath } from '../../../../../../common/routing'; +import { useKibana } from '../../../../../../../common/lib/kibana'; +import { APP_PATH, TRUSTED_APPS_PATH } from '../../../../../../../../common/constants'; +import type { + ExceptionListRemediationType, + SecurityWorkflowInsight, +} from '../../../../../../../../common/endpoint/types/workflow_insights'; const CustomEuiCallOut = styled(EuiCallOut)` & .euiButtonIcon { @@ -29,51 +40,126 @@ const CustomEuiCallOut = styled(EuiCallOut)` } `; -export const WorkflowInsightsResults = ({ results }: WorkflowInsightsResultsProps) => { - const [showEmptyResultsCallout, setShowEmptyResultsCallout] = useState(true); +export const WorkflowInsightsResults = ({ + results, + scanCompleted, + endpointId, +}: WorkflowInsightsResultsProps) => { + const [showEmptyResultsCallout, setShowEmptyResultsCallout] = useState(false); const hideEmptyStateCallout = () => setShowEmptyResultsCallout(false); - if (!results) { - return null; - } - return ( - <> - <EuiText size={'s'}> - <h4>{WORKFLOW_INSIGHTS.issues.title}</h4> - </EuiText> - <EuiSpacer size={'s'} /> - <EuiPanel paddingSize="m" hasShadow={false} hasBorder> - <EuiFlexGroup alignItems={'center'} gutterSize={'m'}> - <EuiFlexItem grow={false}> - <EuiIcon type="warning" size="l" color="warning" /> - </EuiFlexItem> + const { + application: { navigateToUrl }, + } = useKibana().services; - <EuiFlexItem> - <EuiText size="s"> - <EuiText size={'s'}> - <strong>{'McAfee EndpointSecurity'}</strong> - </EuiText> - <EuiText size={'s'} color={'subdued'}> - {'Add McAfee as a trusted application'} - </EuiText> - </EuiText> - </EuiFlexItem> + useEffect(() => { + setShowEmptyResultsCallout(results?.length === 0 && scanCompleted); + }, [results, scanCompleted]); - <EuiFlexItem grow={false} style={{ marginLeft: 'auto' }}> - <EuiButtonIcon - iconType="popout" - aria-label="External link" - href="https://google.com" - target="_blank" - /> - </EuiFlexItem> - </EuiFlexGroup> - </EuiPanel> - {showEmptyResultsCallout && ( + const openArtifactCreationPage = useCallback( + ({ remediation, id }: { remediation: ExceptionListRemediationType; id: string }) => { + const getUrlBasedOnListId = (listId: string) => { + switch (listId) { + case ENDPOINT_ARTIFACT_LISTS.trustedApps.id: + default: + return TRUSTED_APPS_PATH; + } + }; + + const url = `${APP_PATH}${getUrlBasedOnListId(remediation.list_id)}?show=create`; + + const state: WorkflowInsightRouteState = { + insight: { + id, + back_url: `${APP_PATH}${getEndpointDetailsPath({ + name: 'endpointDetails', + selected_endpoint: endpointId, + })}`, + item: { + comments: [], + description: remediation.description, + entries: remediation.entries, + list_id: remediation.list_id, + name: remediation.name, + namespace_type: 'agnostic', + tags: remediation.tags, + type: 'simple', + os_types: remediation.os_types, + }, + }, + }; + + navigateToUrl(url, { + state, + }); + }, + [endpointId, navigateToUrl] + ); + + const insights = useMemo(() => { + if (showEmptyResultsCallout) { + return ( <CustomEuiCallOut onDismiss={hideEmptyStateCallout} color={'success'}> {WORKFLOW_INSIGHTS.issues.emptyResults} </CustomEuiCallOut> - )} + ); + } else if (results?.length) { + return results.flatMap((insight, index) => { + return (insight.remediation.exception_list_items ?? []).map((item) => { + return ( + <EuiPanel paddingSize="m" hasShadow={false} hasBorder key={index}> + <EuiFlexGroup alignItems={'center'} gutterSize={'m'}> + <EuiFlexItem grow={false}> + <EuiIcon type="warning" size="l" color="warning" /> + </EuiFlexItem> + + <EuiFlexItem> + <EuiText size="s"> + <EuiText size={'s'}> + <strong>{insight.value}</strong> + </EuiText> + <EuiText size={'s'} color={'subdued'}> + {insight.message} + </EuiText> + <EuiText size={'xs'} color={'subdued'}> + {item.entries[0].type === 'match' && item.entries[0].value} + </EuiText> + </EuiText> + </EuiFlexItem> + + <EuiFlexItem grow={false} style={{ marginLeft: 'auto' }}> + <EuiButtonIcon + aria-label={WORKFLOW_INSIGHTS.issues.insightRemediationButtonAriaLabel} + iconType="popout" + href={`${APP_PATH}${TRUSTED_APPS_PATH}?show=create`} + onClick={(e: React.MouseEvent<HTMLAnchorElement>) => { + e.preventDefault(); + if (insight.id) { + openArtifactCreationPage({ remediation: item, id: insight.id }); + } + }} + /> + </EuiFlexItem> + </EuiFlexGroup> + </EuiPanel> + ); + }); + }); + } + return null; + }, [openArtifactCreationPage, results, showEmptyResultsCallout]); + + return ( + <> + {showEmptyResultsCallout || results?.length ? ( + <> + <EuiText size={'s'}> + <h4>{WORKFLOW_INSIGHTS.issues.title}</h4> + </EuiText> + <EuiSpacer size={'s'} /> + </> + ) : null} + {insights} </> ); }; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx index b8c51e004fd33..74b1147531a01 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/insights/workflow_insights_scan.tsx @@ -21,7 +21,21 @@ import { useSpaceId } from '../../../../../../../common/hooks/use_space_id'; import { WORKFLOW_INSIGHTS } from '../../../translations'; import { useKibana } from '../../../../../../../common/lib/kibana'; -export const WorkflowInsightsScanSection = () => { +interface WorkflowInsightsScanSectionProps { + isScanButtonDisabled: boolean; + onScanButtonClick: ({ + actionTypeId, + connectorId, + }: { + actionTypeId: string; + connectorId: string; + }) => void; +} + +export const WorkflowInsightsScanSection = ({ + isScanButtonDisabled, + onScanButtonClick, +}: WorkflowInsightsScanSectionProps) => { const CONNECTOR_ID_LOCAL_STORAGE_KEY = 'connectorId'; const spaceId = useSpaceId() ?? 'default'; @@ -54,17 +68,37 @@ export const WorkflowInsightsScanSection = () => { [aiConnectors, connectorId] ); + const selectedConnectorActionTypeId = useMemo(() => { + const selectedConnector = aiConnectors?.find((connector) => connector.id === connectorId); + return selectedConnector?.actionTypeId; + }, [aiConnectors, connectorId]); + // Render the scan button only if a connector is selected - const renderScanButton = useMemo(() => { + const scanButton = useMemo(() => { if (!connectorExists) { return null; } return ( <EuiFlexItem grow={false}> - <EuiButton size="s">{WORKFLOW_INSIGHTS.scan.button}</EuiButton> + <EuiButton + size="s" + isLoading={isScanButtonDisabled} + onClick={() => { + if (!connectorId || !selectedConnectorActionTypeId) return; + onScanButtonClick({ connectorId, actionTypeId: selectedConnectorActionTypeId }); + }} + > + {isScanButtonDisabled ? WORKFLOW_INSIGHTS.scan.loading : WORKFLOW_INSIGHTS.scan.button} + </EuiButton> </EuiFlexItem> ); - }, [connectorExists]); + }, [ + connectorExists, + connectorId, + isScanButtonDisabled, + onScanButtonClick, + selectedConnectorActionTypeId, + ]); return ( <EuiPanel paddingSize="m" hasShadow={false} hasBorder> @@ -90,7 +124,7 @@ export const WorkflowInsightsScanSection = () => { selectedConnectorId={connectorId} /> </EuiFlexItem> - {renderScanButton} + {scanButton} </EuiFlexGroup> </EuiFlexItem> </EuiFlexGroup> diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/endpoint_details_content.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/endpoint_details_content.tsx index c329c5c603bf6..eff9ec800ac6a 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/endpoint_details_content.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/endpoint_details_content.tsx @@ -15,6 +15,7 @@ import { } from '@elastic/eui'; import React, { memo, useMemo } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; +import { useIsExperimentalFeatureEnabled } from '../../../../../common/hooks/use_experimental_features'; import { WorkflowInsights } from './components/insights/workflow_insights'; import { isPolicyOutOfDate } from '../../utils'; import { AgentStatus } from '../../../../../common/components/endpoint/agents/agent_status'; @@ -42,6 +43,7 @@ interface EndpointDetailsContentProps { export const EndpointDetailsContent = memo<EndpointDetailsContentProps>( ({ hostInfo, policyInfo }) => { + const isWorkflowInsightsEnabled = useIsExperimentalFeatureEnabled('defendInsights'); const queryParams = useEndpointSelector(uiQueryParams); const policyStatus = useMemo( () => hostInfo.metadata.Endpoint.policy.applied.status, @@ -181,10 +183,9 @@ export const EndpointDetailsContent = memo<EndpointDetailsContentProps>( }, ]; }, [hostInfo, policyInfo, missingPolicies, policyStatus, policyStatusClickHandler]); - return ( <div> - <WorkflowInsights /> + {isWorkflowInsightsEnabled && <WorkflowInsights endpointId={hostInfo.metadata.agent.id} />} <EuiDescriptionList columnWidths={[1, 3]} compressed diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_fetch_insights.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_fetch_insights.ts new file mode 100644 index 0000000000000..4b70bbc3dade9 --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_fetch_insights.ts @@ -0,0 +1,50 @@ +/* + * 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 { useQuery } from '@tanstack/react-query'; +import { ELASTIC_AI_ASSISTANT_INTERNAL_API_VERSION } from '@kbn/elastic-assistant-common'; +import { WORKFLOW_INSIGHTS } from '../../translations'; +import type { SecurityWorkflowInsight } from '../../../../../../../common/endpoint/types/workflow_insights'; +import { ActionType } from '../../../../../../../common/endpoint/types/workflow_insights'; +import { WORKFLOW_INSIGHTS_ROUTE } from '../../../../../../../common/endpoint/constants'; +import { useKibana, useToasts } from '../../../../../../common/lib/kibana'; + +interface UseFetchInsightsConfig { + endpointId: string; + onSuccess: () => void; +} + +export const useFetchInsights = ({ endpointId, onSuccess }: UseFetchInsightsConfig) => { + const { http } = useKibana().services; + const toasts = useToasts(); + + return useQuery<SecurityWorkflowInsight[], Error, SecurityWorkflowInsight[]>( + [`fetchInsights-${endpointId}`], + async () => { + try { + const result = await http.get<SecurityWorkflowInsight[]>(WORKFLOW_INSIGHTS_ROUTE, { + version: ELASTIC_AI_ASSISTANT_INTERNAL_API_VERSION, + query: { + actionTypes: JSON.stringify([ActionType.Refreshed]), + targetIds: JSON.stringify([endpointId]), + }, + }); + onSuccess(); + return result; + } catch (error) { + toasts.addDanger({ + title: WORKFLOW_INSIGHTS.toasts.fetchInsightsError, + text: error?.message, + }); + return []; + } + }, + { + refetchOnWindowFocus: false, // We need full control over when to refetch + } + ); +}; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_fetch_ongoing_tasks.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_fetch_ongoing_tasks.ts new file mode 100644 index 0000000000000..6969ca0531f6c --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_fetch_ongoing_tasks.ts @@ -0,0 +1,68 @@ +/* + * 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 { useQuery } from '@tanstack/react-query'; +import { + DEFEND_INSIGHTS, + type DefendInsightsResponse, + DefendInsightStatusEnum, + ELASTIC_AI_ASSISTANT_INTERNAL_API_VERSION, +} from '@kbn/elastic-assistant-common'; +import { useEffect, useRef } from 'react'; +import { WORKFLOW_INSIGHTS } from '../../translations'; +import { useKibana, useToasts } from '../../../../../../common/lib/kibana'; + +interface UseFetchOngoingScansConfig { + isPolling: boolean; + endpointId: string; + onSuccess: () => void; +} + +export const useFetchOngoingScans = ({ + isPolling, + endpointId, + onSuccess, +}: UseFetchOngoingScansConfig) => { + const { http } = useKibana().services; + const toasts = useToasts(); + + // Ref to track if polling was active in the previous render + const wasPolling = useRef(isPolling); + + useEffect(() => { + // If polling was active and isPolling is false, it means the condition has been met and we can run onSuccess logic (i.e. refetch insights) + if (wasPolling.current && !isPolling) { + onSuccess(); + } + wasPolling.current = isPolling; + }, [isPolling, onSuccess]); + + return useQuery<DefendInsightsResponse[], { body?: { error: string } }, DefendInsightsResponse[]>( + [`fetchOngoingTasks-${endpointId}`], + async () => { + try { + const response = await http.get<{ data: DefendInsightsResponse[] }>(DEFEND_INSIGHTS, { + version: ELASTIC_AI_ASSISTANT_INTERNAL_API_VERSION, + query: { + status: DefendInsightStatusEnum.running, + endpoint_ids: [endpointId], + }, + }); + return response.data; + } catch (error) { + toasts.addDanger({ + title: WORKFLOW_INSIGHTS.toasts.fetchPendingInsightsError, + text: error?.body?.error, + }); + return []; + } + }, + { + refetchOnWindowFocus: false, + refetchInterval: isPolling ? 2000 : false, + } + ); +}; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_trigger_scan.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_trigger_scan.ts new file mode 100644 index 0000000000000..efa5a937d442c --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/hooks/insights/use_trigger_scan.ts @@ -0,0 +1,63 @@ +/* + * 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 { useMutation } from '@tanstack/react-query'; +import type { DefendInsightsResponse } from '@kbn/elastic-assistant-common'; +import { + DEFEND_INSIGHTS, + DefendInsightTypeEnum, + ELASTIC_AI_ASSISTANT_INTERNAL_API_VERSION, +} from '@kbn/elastic-assistant-common'; +import { useFetchAnonymizationFields } from '@kbn/elastic-assistant/impl/assistant/api/anonymization_fields/use_fetch_anonymization_fields'; +import { useKibana, useToasts } from '../../../../../../common/lib/kibana'; +import { WORKFLOW_INSIGHTS } from '../../translations'; + +interface UseTriggerScanPayload { + endpointId: string; + connectorId: string; + actionTypeId: string; +} + +interface UseTriggerScanConfig { + onMutate: () => void; + onSuccess: () => void; +} + +export const useTriggerScan = ({ onMutate, onSuccess }: UseTriggerScanConfig) => { + const { http } = useKibana().services; + const toasts = useToasts(); + + const { data: anonymizationFields } = useFetchAnonymizationFields(); + + return useMutation<DefendInsightsResponse, { body?: { error: string } }, UseTriggerScanPayload>( + ({ endpointId, connectorId, actionTypeId }: UseTriggerScanPayload) => + http.post<DefendInsightsResponse>(DEFEND_INSIGHTS, { + version: ELASTIC_AI_ASSISTANT_INTERNAL_API_VERSION, + body: JSON.stringify({ + endpointIds: [endpointId], + insightType: DefendInsightTypeEnum.incompatible_antivirus, + anonymizationFields: anonymizationFields.data, + replacements: {}, + subAction: 'invokeAI', + apiConfig: { + connectorId, + actionTypeId, + }, + }), + }), + { + onMutate, + onSuccess, + onError: (err) => { + toasts.addDanger({ + title: WORKFLOW_INSIGHTS.toasts.scanError, + text: err.body?.error, + }); + }, + } + ); +}; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/translations.ts b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/translations.ts index e06280852c244..e397f0030f1db 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/translations.ts +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/translations.ts @@ -18,7 +18,7 @@ export const WORKFLOW_INSIGHTS = { titleRight: i18n.translate( 'xpack.securitySolution.endpointDetails.workflowInsights.extraAction', { - defaultMessage: 'Last scans: ', + defaultMessage: 'Last scans:', } ), scan: { @@ -28,6 +28,12 @@ export const WORKFLOW_INSIGHTS = { button: i18n.translate('xpack.securitySolution.endpointDetails.workflowInsights.scan.button', { defaultMessage: 'Scan', }), + loading: i18n.translate( + 'xpack.securitySolution.endpointDetails.workflowInsights.scan.loading', + { + defaultMessage: 'Loading...', + } + ), }, issues: { title: i18n.translate('xpack.securitySolution.endpointDetails.workflowInsights.issues.title', { @@ -39,6 +45,38 @@ export const WORKFLOW_INSIGHTS = { defaultMessage: 'No issues had been found', } ), + insightRemediationButtonAriaLabel: i18n.translate( + 'xpack.securitySolution.endpointDetails.workflowInsights.issues.insightRemediationButtonAriaLabel', + { + defaultMessage: 'Create trusted app', + } + ), + }, + toasts: { + scanError: i18n.translate( + 'xpack.securitySolution.endpointDetails.workflowInsights.toast.error', + { + defaultMessage: 'Failed to start scan', + } + ), + fetchInsightsError: i18n.translate( + 'xpack.securitySolution.endpointDetails.workflowInsights.toast.fetchInsightsError', + { + defaultMessage: 'Failed to fetch insights', + } + ), + fetchPendingInsightsError: i18n.translate( + 'xpack.securitySolution.endpointDetails.workflowInsights.toast.fetchPendingInsightsError', + { + defaultMessage: 'Failed to retrieve insights in the generation process', + } + ), + updateInsightError: i18n.translate( + 'xpack.securitySolution.endpointDetails.workflowInsights.toast.updateInsightError', + { + defaultMessage: 'Failed to mark insight as remediated', + } + ), }, }; diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_card.tsx b/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_card.tsx index c1e7539c8e101..a8d7aa78d0c93 100644 --- a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_card.tsx +++ b/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_card.tsx @@ -5,8 +5,9 @@ * 2.0. */ -import React, { useCallback, useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import { EuiSpacer, EuiText } from '@elastic/eui'; +import { SiemMigrationTaskStatus } from '../../../../../../../common/siem_migrations/constants'; import { OnboardingCardId } from '../../../../../constants'; import type { RuleMigrationTaskStats } from '../../../../../../../common/siem_migrations/model/rule_migration.gen'; import { useLatestStats } from '../../../../../../siem_migrations/rules/service/hooks/use_latest_stats'; @@ -21,22 +22,29 @@ import * as i18n from './translations'; import { MissingAIConnectorCallout } from './missing_ai_connector_callout'; export const StartMigrationCard: OnboardingCardComponent = React.memo( - ({ checkComplete, isCardComplete, setExpandedCardId }) => { + ({ setComplete, isCardComplete, setExpandedCardId }) => { const styles = useStyles(); - const { data: migrationsStats, isLoading } = useLatestStats(); + const { data: migrationsStats, isLoading, refreshStats } = useLatestStats(); const [isFlyoutOpen, setIsFlyoutOpen] = useState<boolean>(); const [flyoutMigrationStats, setFlyoutMigrationStats] = useState< RuleMigrationTaskStats | undefined >(); + useEffect(() => { + // Set card complete if any migration is finished + if (!isCardComplete(OnboardingCardId.siemMigrationsStart) && migrationsStats) { + if (migrationsStats.some(({ status }) => status === SiemMigrationTaskStatus.FINISHED)) { + setComplete(true); + } + } + }, [isCardComplete, migrationsStats, setComplete]); + const closeFlyout = useCallback(() => { setIsFlyoutOpen(false); setFlyoutMigrationStats(undefined); - if (!isCardComplete(OnboardingCardId.siemMigrationsStart)) { - checkComplete(); - } - }, [checkComplete, isCardComplete]); + refreshStats(); + }, [refreshStats]); const openFlyout = useCallback((migrationStats?: RuleMigrationTaskStats) => { setFlyoutMigrationStats(migrationStats); diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_check_complete.ts b/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_check_complete.ts index 41e65352d4bc3..79a7238b9554e 100644 --- a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_check_complete.ts +++ b/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/start_migration_check_complete.ts @@ -5,12 +5,15 @@ * 2.0. */ +import { SiemMigrationTaskStatus } from '../../../../../../../common/siem_migrations/constants'; import type { OnboardingCardCheckComplete } from '../../../../../types'; export const checkStartMigrationCardComplete: OnboardingCardCheckComplete = async ({ siemMigrations, }) => { const migrationsStats = await siemMigrations.rules.getRuleMigrationsStats(); - const isComplete = migrationsStats.length > 0; + const isComplete = migrationsStats.some( + (migrationStats) => migrationStats.status === SiemMigrationTaskStatus.FINISHED + ); return isComplete; }; diff --git a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/upload_rules_panels.tsx b/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/upload_rules_panels.tsx index 95b53d921fd1f..6d011fc5fbb5b 100644 --- a/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/upload_rules_panels.tsx +++ b/x-pack/plugins/security_solution/public/onboarding/components/onboarding_body/cards/siem_migrations/start_migration/upload_rules_panels.tsx @@ -28,7 +28,7 @@ export const UploadRulesPanels = React.memo<UploadRulesPanelsProps>(({ migration <UploadRulesPanel isUploadMore /> </EuiFlexItem> {migrationsStats.map((migrationStats) => ( - <EuiFlexItem grow={false}> + <EuiFlexItem grow={false} key={migrationStats.id}> {migrationStats.status === SiemMigrationTaskStatus.READY && ( <MigrationReadyPanel migrationStats={migrationStats} /> )} diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/api/index.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/api/index.ts index 57fb5d0422093..02fb423b05279 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/api/index.ts +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/api/index.ts @@ -7,6 +7,7 @@ import { replaceParams } from '@kbn/openapi-common/shared'; +import type { UpdateRuleMigrationData } from '../../../../common/siem_migrations/model/rule_migration.gen'; import type { LangSmithOptions } from '../../../../common/siem_migrations/model/common.gen'; import { KibanaServices } from '../../../common/lib/kibana'; @@ -19,6 +20,8 @@ import { SIEM_RULE_MIGRATION_START_PATH, SIEM_RULE_MIGRATION_STATS_PATH, SIEM_RULE_MIGRATION_TRANSLATION_STATS_PATH, + SIEM_RULE_MIGRATION_RESOURCES_MISSING_PATH, + SIEM_RULE_MIGRATION_RESOURCES_PATH, SIEM_RULE_MIGRATIONS_PREBUILT_RULES_PATH, } from '../../../../common/siem_migrations/constants'; import type { @@ -31,7 +34,11 @@ import type { InstallMigrationRulesResponse, StartRuleMigrationRequestBody, GetRuleMigrationStatsResponse, + GetRuleMigrationResourcesMissingResponse, + UpsertRuleMigrationResourcesRequestBody, + UpsertRuleMigrationResourcesResponse, GetRuleMigrationPrebuiltRulesResponse, + UpdateRuleMigrationResponse, } from '../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; export interface GetRuleMigrationStatsParams { @@ -86,6 +93,43 @@ export const createRuleMigration = async ({ ); }; +export interface GetRuleMigrationMissingResourcesParams { + /** `id` of the migration to get missing resources for */ + migrationId: string; + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** Retrieves all missing resources of a specific migration. */ +export const getMissingResources = async ({ + migrationId, + signal, +}: GetRuleMigrationMissingResourcesParams): Promise<GetRuleMigrationResourcesMissingResponse> => { + return KibanaServices.get().http.get<GetRuleMigrationResourcesMissingResponse>( + replaceParams(SIEM_RULE_MIGRATION_RESOURCES_MISSING_PATH, { migration_id: migrationId }), + { version: '1', signal } + ); +}; + +export interface UpsertResourcesParams { + /** Optional `id` of migration to add the resources to. */ + migrationId: string; + /** The body containing the `connectorId` to use for the migration */ + body: UpsertRuleMigrationResourcesRequestBody; + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** Updates or creates resources for a specific migration. */ +export const upsertMigrationResources = async ({ + migrationId, + body, + signal, +}: UpsertResourcesParams): Promise<UpsertRuleMigrationResourcesResponse> => { + return KibanaServices.get().http.post<UpsertRuleMigrationResourcesResponse>( + replaceParams(SIEM_RULE_MIGRATION_RESOURCES_PATH, { migration_id: migrationId }), + { body: JSON.stringify(body), version: '1', signal } + ); +}; + export interface StartRuleMigrationParams { /** `id` of the migration to start */ migrationId: string; @@ -126,6 +170,8 @@ export interface GetRuleMigrationParams { sortDirection?: 'asc' | 'desc'; /** Optional search term to filter documents */ searchTerm?: string; + /** Optional rules ids to filter documents */ + ids?: string[]; /** Optional AbortSignal for cancelling request */ signal?: AbortSignal; } @@ -137,6 +183,7 @@ export const getRuleMigrations = async ({ sortField, sortDirection, searchTerm, + ids, signal, }: GetRuleMigrationParams): Promise<GetRuleMigrationResponse> => { return KibanaServices.get().http.get<GetRuleMigrationResponse>( @@ -149,6 +196,7 @@ export const getRuleMigrations = async ({ sort_field: sortField, sort_direction: sortDirection, search_term: searchTerm, + ids, }, signal, } @@ -230,3 +278,21 @@ export const getRuleMigrationsPrebuiltRules = async ({ { version: '1', signal } ); }; + +export interface UpdateRulesParams { + /** The list of migration rules data to update */ + rulesToUpdate: UpdateRuleMigrationData[]; + /** Optional AbortSignal for cancelling request */ + signal?: AbortSignal; +} +/** Updates provided migration rules. */ +export const updateMigrationRules = async ({ + rulesToUpdate, + signal, +}: UpdateRulesParams): Promise<UpdateRuleMigrationResponse> => { + return KibanaServices.get().http.put<UpdateRuleMigrationResponse>(SIEM_RULE_MIGRATIONS_PATH, { + version: '1', + body: JSON.stringify(rulesToUpdate), + signal, + }); +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/constants.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/constants.ts index aa331bf17c832..d390b395ed98f 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/constants.ts +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/constants.ts @@ -5,13 +5,7 @@ * 2.0. */ -export enum DataInputStep { - rules = 'rules', - macros = 'macros', - lookups = 'lookups', -} - -export const SPL_RULES_COLUMNS = [ +export const SPLUNK_RULES_COLUMNS = [ 'id', 'title', 'search', @@ -23,4 +17,9 @@ export const SPL_RULES_COLUMNS = [ export const RULES_SPLUNK_QUERY = `| rest /servicesNS/-/-/saved/searches | search action.correlationsearch.enabled = "1" OR (eai:acl.app = "Splunk_Security_Essentials" AND is_scheduled=1) | where disabled=0 -| table ${SPL_RULES_COLUMNS.join(', ')}`; +| table ${SPLUNK_RULES_COLUMNS.join(', ')}`; + +export const SPLUNK_MACROS_COLUMNS = ['title', 'definition'] as const; + +export const MACROS_SPLUNK_QUERY = `| rest /servicesNS/-/-/admin/macros count=0 +| table ${SPLUNK_MACROS_COLUMNS.join(', ')}`; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/data_input_flyout.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/data_input_flyout.tsx index 6a4916a5e54b3..ffc40c59d495a 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/data_input_flyout.tsx +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/data_input_flyout.tsx @@ -17,10 +17,19 @@ import { EuiButton, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import type { RuleMigrationTaskStats } from '../../../../../common/siem_migrations/model/rule_migration.gen'; -import { DataInputStep } from './constants'; +import type { + RuleMigrationResourceData, + RuleMigrationTaskStats, +} from '../../../../../common/siem_migrations/model/rule_migration.gen'; import { RulesDataInput } from './steps/rules/rules_data_input'; import { useStartMigration } from '../../service/hooks/use_start_migration'; +import { DataInputStep } from './types'; +import { MacrosDataInput } from './steps/macros/macros_data_input'; + +interface MissingResourcesIndexed { + macros: string[]; + lookups: string[]; +} export interface MigrationDataInputFlyoutProps { onClose: () => void; @@ -31,6 +40,9 @@ export const MigrationDataInputFlyout = React.memo<MigrationDataInputFlyoutProps const [migrationStats, setMigrationStats] = useState<RuleMigrationTaskStats | undefined>( initialMigrationSats ); + const [missingResourcesIndexed, setMissingResourcesIndexed] = useState< + MissingResourcesIndexed | undefined + >(); const { startMigration, isLoading: isStartLoading } = useStartMigration(onClose); const onStartMigration = useCallback(() => { @@ -39,23 +51,43 @@ export const MigrationDataInputFlyout = React.memo<MigrationDataInputFlyoutProps } }, [migrationStats, startMigration]); - const [dataInputStep, setDataInputStep] = useState<DataInputStep>(() => { - if (migrationStats) { - return DataInputStep.macros; - } - return DataInputStep.rules; - }); + const [dataInputStep, setDataInputStep] = useState<DataInputStep>(DataInputStep.Rules); - const onMigrationCreated = useCallback( - (createdMigrationStats: RuleMigrationTaskStats) => { - if (createdMigrationStats) { - setMigrationStats(createdMigrationStats); - setDataInputStep(DataInputStep.macros); + const onMigrationCreated = useCallback((createdMigrationStats: RuleMigrationTaskStats) => { + setMigrationStats(createdMigrationStats); + }, []); + + const onMissingResourcesFetched = useCallback( + (missingResources: RuleMigrationResourceData[]) => { + const newMissingResourcesIndexed = missingResources.reduce<MissingResourcesIndexed>( + (acc, { type, name }) => { + if (type === 'macro') { + acc.macros.push(name); + } else if (type === 'list') { + acc.lookups.push(name); + } + return acc; + }, + { macros: [], lookups: [] } + ); + setMissingResourcesIndexed(newMissingResourcesIndexed); + if (newMissingResourcesIndexed.macros.length) { + setDataInputStep(DataInputStep.Macros); + return; + } + if (newMissingResourcesIndexed.lookups.length) { + setDataInputStep(DataInputStep.Lookups); + return; } + setDataInputStep(DataInputStep.End); }, - [setDataInputStep] + [] ); + const onMacrosCreated = useCallback(() => { + setDataInputStep(DataInputStep.Lookups); + }, []); + return ( <EuiFlyoutResizable onClose={onClose} @@ -75,10 +107,25 @@ export const MigrationDataInputFlyout = React.memo<MigrationDataInputFlyoutProps </EuiTitle> </EuiFlyoutHeader> <EuiFlyoutBody> - <RulesDataInput - selected={dataInputStep === DataInputStep.rules} - onMigrationCreated={onMigrationCreated} - /> + <EuiFlexGroup direction="column" gutterSize="m"> + <EuiFlexItem> + <RulesDataInput + dataInputStep={dataInputStep} + migrationStats={migrationStats} + onMigrationCreated={onMigrationCreated} + onMissingResourcesFetched={onMissingResourcesFetched} + /> + </EuiFlexItem> + <EuiFlexItem> + <MacrosDataInput + dataInputStep={dataInputStep} + missingMacros={missingResourcesIndexed?.macros} + migrationStats={migrationStats} + onMacrosCreated={onMacrosCreated} + onMissingResourcesFetched={onMissingResourcesFetched} + /> + </EuiFlexItem> + </EuiFlexGroup> </EuiFlyoutBody> <EuiFlyoutFooter> <EuiFlexGroup justifyContent="spaceBetween"> diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/get_status.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/get_status.ts new file mode 100644 index 0000000000000..f9f14298d00be --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/get_status.ts @@ -0,0 +1,18 @@ +/* + * 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 { EuiStepStatus } from '@elastic/eui'; + +export const getStatus = (step: number, currentStep: number): EuiStepStatus => { + if (step === currentStep) { + return 'current'; + } + if (step < currentStep) { + return 'complete'; + } + return 'incomplete'; +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/sub_step_wrapper.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/sub_step_wrapper.tsx index 438134b0ad99a..fc0bd0e8c3b44 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/sub_step_wrapper.tsx +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/sub_step_wrapper.tsx @@ -16,11 +16,11 @@ const style = css` } `; -export const SubStepWrapper = React.memo<PropsWithChildren<{}>>(({ children }) => { +export const SubStepsWrapper = React.memo<PropsWithChildren<{}>>(({ children }) => { return ( <EuiPanel hasShadow={false} paddingSize="xs" className={style}> {children} </EuiPanel> ); }); -SubStepWrapper.displayName = 'SubStepWrapper'; +SubStepsWrapper.displayName = 'SubStepsWrapper'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/use_parse_file_input.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/use_parse_file_input.ts new file mode 100644 index 0000000000000..b99cf826194f9 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/common/use_parse_file_input.ts @@ -0,0 +1,117 @@ +/* + * 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 { useState, useCallback } from 'react'; +import { FILE_UPLOAD_ERROR } from '../../translations'; + +export interface SplunkRow<T extends object = object> { + result: T; +} + +export type OnFileParsed = (content: SplunkRow[]) => void; + +export const useParseFileInput = (onFileParsed: OnFileParsed) => { + const [isParsing, setIsParsing] = useState<boolean>(false); + const [error, setError] = useState<string>(); + + const parseFile = useCallback( + (files: FileList | null) => { + if (!files) { + return; + } + + setError(undefined); + + const rulesFile = files[0]; + const reader = new FileReader(); + + reader.onloadstart = () => setIsParsing(true); + reader.onloadend = () => setIsParsing(false); + + reader.onload = function (e) { + // We can safely cast to string since we call `readAsText` to load the file. + const fileContent = e.target?.result as string | undefined; + + if (fileContent == null) { + setError(FILE_UPLOAD_ERROR.CAN_NOT_READ); + return; + } + + if (fileContent === '' && e.loaded > 100000) { + // V8-based browsers can't handle large files and return an empty string + // instead of an error; see https://stackoverflow.com/a/61316641 + setError(FILE_UPLOAD_ERROR.TOO_LARGE_TO_PARSE); + return; + } + + try { + const parsedData = parseContent(fileContent); + onFileParsed(parsedData); + } catch (err) { + setError(err.message); + } + }; + + const handleReaderError = function () { + const message = reader.error?.message; + if (message) { + setError(FILE_UPLOAD_ERROR.CAN_NOT_READ_WITH_REASON(message)); + } else { + setError(FILE_UPLOAD_ERROR.CAN_NOT_READ); + } + }; + + reader.onerror = handleReaderError; + reader.onabort = handleReaderError; + + reader.readAsText(rulesFile); + }, + [onFileParsed] + ); + + return { parseFile, isParsing, error }; +}; + +const parseContent = (fileContent: string): SplunkRow[] => { + const trimmedContent = fileContent.trim(); + let arrayContent: SplunkRow[]; + if (trimmedContent.startsWith('[')) { + arrayContent = parseJSONArray(trimmedContent); + } else { + arrayContent = parseNDJSON(trimmedContent); + } + if (arrayContent.length === 0) { + throw new Error(FILE_UPLOAD_ERROR.EMPTY); + } + return arrayContent; +}; + +const parseNDJSON = (fileContent: string): SplunkRow[] => { + return fileContent + .split(/\n(?=\{)/) // split at newline followed by '{'. + .filter((entry) => entry.trim() !== '') // Remove empty entries. + .map(parseJSON); // Parse each entry as JSON. +}; + +const parseJSONArray = (fileContent: string): SplunkRow[] => { + const parsedContent = parseJSON(fileContent); + if (!Array.isArray(parsedContent)) { + throw new Error(FILE_UPLOAD_ERROR.NOT_ARRAY); + } + return parsedContent; +}; + +const parseJSON = (fileContent: string) => { + try { + return JSON.parse(fileContent); + } catch (error) { + if (error instanceof RangeError) { + throw new Error(FILE_UPLOAD_ERROR.TOO_LARGE_TO_PARSE); + } + throw new Error(FILE_UPLOAD_ERROR.CAN_NOT_PARSE); + } +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/macros_data_input.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/macros_data_input.tsx new file mode 100644 index 0000000000000..f19e704b96710 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/macros_data_input.tsx @@ -0,0 +1,140 @@ +/* + * 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 { EuiStepProps } from '@elastic/eui'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiPanel, + EuiStepNumber, + EuiSteps, + EuiTitle, +} from '@elastic/eui'; +import React, { useCallback, useMemo, useState } from 'react'; +import type { RuleMigrationTaskStats } from '../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { SubStepsWrapper } from '../common/sub_step_wrapper'; +import type { OnResourcesCreated, OnMissingResourcesFetched, DataInputStep } from '../../types'; +import { getStatus } from '../common/get_status'; +import { useCopyExportQueryStep } from './sub_steps/copy_export_query'; +import { useMacrosFileUploadStep } from './sub_steps/macros_file_upload'; +import * as i18n from './translations'; +import { useCheckResourcesStep } from './sub_steps/check_resources'; + +const DataInputStepNumber: DataInputStep = 2; + +interface MacrosDataInputSubStepsProps { + migrationStats: RuleMigrationTaskStats; + missingMacros: string[]; + onMacrosCreated: OnResourcesCreated; + onMissingResourcesFetched: OnMissingResourcesFetched; +} +interface MacrosDataInputProps + extends Omit<MacrosDataInputSubStepsProps, 'migrationStats' | 'missingMacros'> { + dataInputStep: DataInputStep; + migrationStats?: RuleMigrationTaskStats; + missingMacros?: string[]; +} +export const MacrosDataInput = React.memo<MacrosDataInputProps>( + ({ + dataInputStep, + migrationStats, + missingMacros, + onMacrosCreated, + onMissingResourcesFetched, + }) => { + const dataInputStatus = useMemo( + () => getStatus(DataInputStepNumber, dataInputStep), + [dataInputStep] + ); + + return ( + <EuiPanel hasShadow={false} hasBorder> + <EuiFlexGroup direction="column"> + <EuiFlexItem> + <EuiFlexGroup direction="row" justifyContent="center" gutterSize="m"> + <EuiFlexItem grow={false}> + <EuiStepNumber + titleSize="xs" + number={DataInputStepNumber} + status={dataInputStatus} + /> + </EuiFlexItem> + <EuiFlexItem> + <EuiTitle size="xs"> + <b>{i18n.MACROS_DATA_INPUT_TITLE}</b> + </EuiTitle> + </EuiFlexItem> + </EuiFlexGroup> + </EuiFlexItem> + {dataInputStatus === 'current' && migrationStats && missingMacros && ( + <EuiFlexItem> + <MacrosDataInputSubSteps + migrationStats={migrationStats} + missingMacros={missingMacros} + onMacrosCreated={onMacrosCreated} + onMissingResourcesFetched={onMissingResourcesFetched} + /> + </EuiFlexItem> + )} + </EuiFlexGroup> + </EuiPanel> + ); + } +); +MacrosDataInput.displayName = 'MacrosDataInput'; + +const END = 10 as const; +type SubStep = 1 | 2 | 3 | typeof END; +export const MacrosDataInputSubSteps = React.memo<MacrosDataInputSubStepsProps>( + ({ migrationStats, missingMacros, onMacrosCreated, onMissingResourcesFetched }) => { + const [subStep, setSubStep] = useState<SubStep>(missingMacros.length ? 1 : 3); + + // Copy query step + const onCopied = useCallback(() => { + setSubStep(2); + }, []); + const copyStep = useCopyExportQueryStep({ status: getStatus(1, subStep), onCopied }); + + // Upload macros step + const onMacrosCreatedStep = useCallback<OnResourcesCreated>(() => { + onMacrosCreated(); + setSubStep(3); + }, [onMacrosCreated]); + const uploadStep = useMacrosFileUploadStep({ + status: getStatus(2, subStep), + migrationStats, + missingMacros, + onMacrosCreated: onMacrosCreatedStep, + }); + + // Check missing resources step + const onMissingResourcesFetchedStep = useCallback<OnMissingResourcesFetched>( + (newMissingResources) => { + onMissingResourcesFetched(newMissingResources); + setSubStep(END); + }, + [onMissingResourcesFetched] + ); + const resourcesStep = useCheckResourcesStep({ + status: getStatus(3, subStep), + migrationStats, + onMissingResourcesFetched: onMissingResourcesFetchedStep, + }); + + const steps = useMemo<EuiStepProps[]>( + () => [copyStep, uploadStep, resourcesStep], + [copyStep, uploadStep, resourcesStep] + ); + + return ( + <SubStepsWrapper> + <EuiSteps titleSize="xxs" steps={steps} /> + </SubStepsWrapper> + ); + } +); +MacrosDataInputSubSteps.displayName = 'MacrosDataInputActive'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/check_resources/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/check_resources/index.tsx new file mode 100644 index 0000000000000..d83890e1f260c --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/check_resources/index.tsx @@ -0,0 +1,54 @@ +/* + * 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, { useEffect, useMemo } from 'react'; +import { EuiText, type EuiStepProps, type EuiStepStatus } from '@elastic/eui'; +// import { useGetMissingResources } from '../../../../../../logic/use_get_migration_missing_resources'; +import type { RuleMigrationTaskStats } from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { useGetMissingResources } from '../../../../../../service/hooks/use_get_missing_resources'; +import type { OnMissingResourcesFetched } from '../../../../types'; +import * as i18n from './translations'; + +export interface CheckResourcesStepProps { + status: EuiStepStatus; + migrationStats: RuleMigrationTaskStats | undefined; + onMissingResourcesFetched: OnMissingResourcesFetched; +} +export const useCheckResourcesStep = ({ + status, + migrationStats, + onMissingResourcesFetched, +}: CheckResourcesStepProps): EuiStepProps => { + const { getMissingResources, isLoading, error } = + useGetMissingResources(onMissingResourcesFetched); + + useEffect(() => { + if (status === 'current' && migrationStats?.id) { + getMissingResources(migrationStats.id); + } + }, [getMissingResources, status, migrationStats?.id]); + + const uploadStepStatus = useMemo(() => { + if (isLoading) { + return 'loading'; + } + if (error) { + return 'danger'; + } + return status; + }, [isLoading, error, status]); + + return { + title: i18n.RULES_DATA_INPUT_CHECK_RESOURCES_TITLE, + status: uploadStepStatus, + children: ( + <EuiText size="xs" color="subdued"> + {i18n.RULES_DATA_INPUT_CHECK_RESOURCES_DESCRIPTION} + </EuiText> + ), + }; +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/check_resources/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/check_resources/translations.ts new file mode 100644 index 0000000000000..159b4033fafd6 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/check_resources/translations.ts @@ -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 { i18n } from '@kbn/i18n'; + +export const RULES_DATA_INPUT_CHECK_RESOURCES_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.checkResources.title', + { defaultMessage: 'Check for macros and lookups' } +); + +export const RULES_DATA_INPUT_CHECK_RESOURCES_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.checkResources.description', + { + defaultMessage: `For best translation results, we will automatically review your rules for macros and lookups and ask you to upload them. Once uploaded, we'll be able to deliver a more complete rule translation for all rules using those macros or lookups.`, + } +); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/copy_export_query.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/copy_export_query.tsx new file mode 100644 index 0000000000000..93f2ce715184c --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/copy_export_query.tsx @@ -0,0 +1,53 @@ +/* + * 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, { useCallback } from 'react'; +import { EuiCodeBlock, EuiSpacer, EuiText } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { MACROS_SPLUNK_QUERY } from '../../../../constants'; +import * as i18n from './translations'; + +interface CopyExportQueryProps { + onCopied: () => void; +} +export const CopyExportQuery = React.memo<CopyExportQueryProps>(({ onCopied }) => { + const onClick: React.MouseEventHandler = useCallback( + (ev) => { + // The only button inside the element is the "copy" button. + if ((ev.target as Element).tagName === 'BUTTON') { + onCopied(); + } + }, + [onCopied] + ); + + return ( + <> + {/* The click event is also dispatched when using the keyboard actions (space or enter) for "copy" button. + No need to use keyboard specific events, disabling the a11y lint rule:*/} + {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */} + <div onClick={onClick}> + {/* onCopy react event is dispatched when the user copies text manually */} + <EuiCodeBlock language="text" fontSize="m" paddingSize="m" isCopyable onCopy={onCopied}> + {MACROS_SPLUNK_QUERY} + </EuiCodeBlock> + </div> + <EuiSpacer size="m" /> + <EuiText size="s"> + <FormattedMessage + id="xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.copyExportQuery.description" + defaultMessage="From you admin Splunk account, go to the {section} app and run the above query. Export your results as {format}." + values={{ + section: <b>{i18n.RULES_DATA_INPUT_COPY_DESCRIPTION_SECTION}</b>, + format: <b>{'JSON'}</b>, + }} + /> + </EuiText> + </> + ); +}); +CopyExportQuery.displayName = 'CopyExportQuery'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/index.tsx new file mode 100644 index 0000000000000..3d2adcc78857b --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/index.tsx @@ -0,0 +1,26 @@ +/* + * 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 type { EuiStepProps, EuiStepStatus } from '@elastic/eui'; +import { CopyExportQuery } from './copy_export_query'; +import * as i18n from './translations'; + +export interface CopyExportQueryStepProps { + status: EuiStepStatus; + onCopied: () => void; +} +export const useCopyExportQueryStep = ({ + status, + onCopied, +}: CopyExportQueryStepProps): EuiStepProps => { + return { + title: i18n.RULES_DATA_INPUT_COPY_TITLE, + status, + children: <CopyExportQuery onCopied={onCopied} />, + }; +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/translations.ts new file mode 100644 index 0000000000000..71466a54dd138 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/copy_export_query/translations.ts @@ -0,0 +1,18 @@ +/* + * 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'; + +export const RULES_DATA_INPUT_COPY_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.macros.copyExportQuery.title', + { defaultMessage: 'Copy macros query' } +); + +export const RULES_DATA_INPUT_COPY_DESCRIPTION_SECTION = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.macros.copyExportQuery.description.section', + { defaultMessage: 'Search and Reporting' } +); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/index.tsx new file mode 100644 index 0000000000000..f2353e3f0276a --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/index.tsx @@ -0,0 +1,94 @@ +/* + * 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, { useCallback, useMemo } from 'react'; +import type { EuiStepProps, EuiStepStatus } from '@elastic/eui'; +import { ResourceIdentifier } from '../../../../../../../../../common/siem_migrations/rules/resources'; +import { useUpsertResources } from '../../../../../../service/hooks/use_upsert_resources'; +import type { + RuleMigrationResourceData, + RuleMigrationTaskStats, +} from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import type { OnResourcesCreated } from '../../../../types'; +import { MacrosFileUpload } from './macros_file_upload'; +import * as i18n from './translations'; + +export interface RulesFileUploadStepProps { + status: EuiStepStatus; + migrationStats: RuleMigrationTaskStats; + missingMacros: string[]; + onMacrosCreated: OnResourcesCreated; +} +export const useMacrosFileUploadStep = ({ + status, + migrationStats, + missingMacros, + onMacrosCreated, +}: RulesFileUploadStepProps): EuiStepProps => { + const { upsertResources, isLoading, error } = useUpsertResources(onMacrosCreated); + + const upsertMigrationResources = useCallback( + (macrosFromFile: RuleMigrationResourceData[]) => { + const macrosIndexed: Record<string, RuleMigrationResourceData> = Object.fromEntries( + macrosFromFile.map((macro) => [macro.name, macro]) + ); + const resourceIdentifier = new ResourceIdentifier('splunk'); + const macrosToUpsert: RuleMigrationResourceData[] = []; + let missingMacrosIt: string[] = missingMacros; + + while (missingMacrosIt.length > 0) { + const macros: RuleMigrationResourceData[] = []; + missingMacrosIt.forEach((macroName) => { + const macro = macrosIndexed[macroName]; + if (macro) { + macros.push(macro); + } else { + // Macro missing from file + } + }); + macrosToUpsert.push(...macros); + + missingMacrosIt = resourceIdentifier + .fromResources(macros) + .reduce<string[]>((acc, resource) => { + if (resource.type === 'macro') { + acc.push(resource.name); + } + return acc; + }, []); + } + + if (macrosToUpsert.length === 0) { + return; // No missing macros provided + } + upsertResources(migrationStats.id, macrosToUpsert); + }, + [upsertResources, migrationStats, missingMacros] + ); + + const uploadStepStatus = useMemo(() => { + if (isLoading) { + return 'loading'; + } + if (error) { + return 'danger'; + } + return status; + }, [isLoading, error, status]); + + return { + title: i18n.RULES_DATA_INPUT_FILE_UPLOAD_TITLE, + status: uploadStepStatus, + children: ( + <MacrosFileUpload + createResources={upsertMigrationResources} + isLoading={isLoading} + apiError={error?.message} + /> + ), + }; +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/macros_file_upload.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/macros_file_upload.tsx new file mode 100644 index 0000000000000..b8d7022d9b454 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/macros_file_upload.tsx @@ -0,0 +1,89 @@ +/* + * 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, { useCallback, useMemo } from 'react'; +import { EuiFilePicker, EuiFormRow, EuiText } from '@elastic/eui'; +import { isPlainObject } from 'lodash'; +import type { RuleMigrationResourceData } from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { FILE_UPLOAD_ERROR } from '../../../../translations'; +import type { SPLUNK_MACROS_COLUMNS } from '../../../../constants'; +import { useParseFileInput, type SplunkRow } from '../../../common/use_parse_file_input'; +import * as i18n from './translations'; + +type SplunkMacroResult = Partial<Record<(typeof SPLUNK_MACROS_COLUMNS)[number], string>>; + +export interface MacrosFileUploadProps { + createResources: (resources: RuleMigrationResourceData[]) => void; + apiError?: string; + isLoading?: boolean; +} +export const MacrosFileUpload = React.memo<MacrosFileUploadProps>( + ({ createResources, apiError, isLoading }) => { + const onFileParsed = useCallback( + (content: Array<SplunkRow<SplunkMacroResult>>) => { + const rules = content.map(formatMacroRow); + createResources(rules); + }, + [createResources] + ); + + const { parseFile, isParsing, error: fileError } = useParseFileInput(onFileParsed); + + const error = useMemo(() => { + if (apiError) { + return apiError; + } + return fileError; + }, [apiError, fileError]); + + return ( + <EuiFormRow + helpText={ + <EuiText color="danger" size="xs"> + {error} + </EuiText> + } + isInvalid={error != null} + fullWidth + > + <EuiFilePicker + id="macrosFilePicker" + fullWidth + initialPromptText={ + <> + <EuiText size="s" textAlign="center"> + {i18n.RULES_DATA_INPUT_FILE_UPLOAD_PROMPT} + </EuiText> + </> + } + accept="application/json, application/x-ndjson" + onChange={parseFile} + display="large" + aria-label="Upload logs sample file" + isLoading={isParsing || isLoading} + disabled={isParsing || isLoading} + data-test-subj="macrosFilePicker" + data-loading={isParsing} + /> + </EuiFormRow> + ); + } +); +MacrosFileUpload.displayName = 'MacrosFileUpload'; + +const formatMacroRow = (row: SplunkRow<SplunkMacroResult>): RuleMigrationResourceData => { + if (!isPlainObject(row.result)) { + throw new Error(FILE_UPLOAD_ERROR.NOT_OBJECT); + } + const macroResource: Partial<RuleMigrationResourceData> = { + type: 'macro', + name: row.result.title, + content: row.result.definition, + }; + // resource document format validation delegated to API + return macroResource as RuleMigrationResourceData; +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/translations.ts new file mode 100644 index 0000000000000..25b64787d6dcd --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/sub_steps/macros_file_upload/translations.ts @@ -0,0 +1,26 @@ +/* + * 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'; + +export const RULES_DATA_INPUT_FILE_UPLOAD_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.macros.macrosFileUpload.title', + { defaultMessage: 'Update your macros export' } +); +export const RULES_DATA_INPUT_FILE_UPLOAD_PROMPT = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.macros.macrosFileUpload.prompt', + { defaultMessage: 'Select or drag and drop the exported JSON file' } +); + +export const RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.macros.macrosFileUpload.createSuccess', + { defaultMessage: 'Macros uploaded successfully' } +); +export const RULES_DATA_INPUT_CREATE_MIGRATION_ERROR = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.macros.macrosFileUpload.createError', + { defaultMessage: 'Failed to upload macros file' } +); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/translations.ts new file mode 100644 index 0000000000000..7061e91311308 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/macros/translations.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 { i18n } from '@kbn/i18n'; + +export const MACROS_DATA_INPUT_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.macros.title', + { defaultMessage: 'Upload identified macros' } +); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/rules_data_input.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/rules_data_input.tsx index 2b20dcda0cea7..acc22a030b02f 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/rules_data_input.tsx +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/rules_data_input.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import type { EuiStepProps, EuiStepStatus } from '@elastic/eui'; +import type { EuiStepProps } from '@elastic/eui'; import { EuiFlexGroup, EuiFlexItem, @@ -14,57 +14,31 @@ import { EuiSteps, EuiTitle, } from '@elastic/eui'; -import React, { useMemo, useState } from 'react'; -import { SubStepWrapper } from '../common/sub_step_wrapper'; -import type { OnMigrationCreated } from '../../types'; +import React, { useCallback, useMemo, useState } from 'react'; +import type { RuleMigrationTaskStats } from '../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { SubStepsWrapper } from '../common/sub_step_wrapper'; +import type { OnMigrationCreated, OnMissingResourcesFetched, DataInputStep } from '../../types'; import { useCopyExportQueryStep } from './sub_steps/copy_export_query'; import { useRulesFileUploadStep } from './sub_steps/rules_file_upload'; import * as i18n from './translations'; import { useCheckResourcesStep } from './sub_steps/check_resources'; +import { getStatus } from '../common/get_status'; -type Step = 1 | 2 | 3 | 4; -const getStatus = (step: Step, currentStep: Step): EuiStepStatus => { - if (step === currentStep) { - return 'current'; - } - if (step < currentStep) { - return 'complete'; - } - return 'incomplete'; -}; +const DataInputStepNumber: DataInputStep = 1; -interface RulesDataInputProps { - selected: boolean; +interface RulesDataInputSubStepsProps { + migrationStats?: RuleMigrationTaskStats; onMigrationCreated: OnMigrationCreated; + onMissingResourcesFetched: OnMissingResourcesFetched; +} +interface RulesDataInputProps extends RulesDataInputSubStepsProps { + dataInputStep: DataInputStep; } - export const RulesDataInput = React.memo<RulesDataInputProps>( - ({ selected, onMigrationCreated }) => { - const [step, setStep] = useState<Step>(1); - - const copyStep = useCopyExportQueryStep({ - status: getStatus(1, step), - onCopied: () => setStep(2), - }); - - const uploadStep = useRulesFileUploadStep({ - status: getStatus(2, step), - onMigrationCreated: (stats) => { - onMigrationCreated(stats); - setStep(3); - }, - }); - - const resourcesStep = useCheckResourcesStep({ - status: getStatus(3, step), - onComplete: () => { - setStep(4); - }, - }); - - const steps = useMemo<EuiStepProps[]>( - () => [copyStep, uploadStep, resourcesStep], - [copyStep, uploadStep, resourcesStep] + ({ dataInputStep, migrationStats, onMigrationCreated, onMissingResourcesFetched }) => { + const dataInputStatus = useMemo( + () => getStatus(DataInputStepNumber, dataInputStep), + [dataInputStep] ); return ( @@ -73,7 +47,11 @@ export const RulesDataInput = React.memo<RulesDataInputProps>( <EuiFlexItem> <EuiFlexGroup direction="row" justifyContent="center" gutterSize="m"> <EuiFlexItem grow={false}> - <EuiStepNumber number={1} titleSize="xs" /> + <EuiStepNumber + titleSize="xs" + number={DataInputStepNumber} + status={dataInputStatus} + /> </EuiFlexItem> <EuiFlexItem> <EuiTitle size="xs"> @@ -82,14 +60,72 @@ export const RulesDataInput = React.memo<RulesDataInputProps>( </EuiFlexItem> </EuiFlexGroup> </EuiFlexItem> - <EuiFlexItem> - <SubStepWrapper> - <EuiSteps titleSize="xxs" steps={steps} /> - </SubStepWrapper> - </EuiFlexItem> + {dataInputStatus === 'current' && ( + <EuiFlexItem> + <RulesDataInputSubSteps + migrationStats={migrationStats} + onMigrationCreated={onMigrationCreated} + onMissingResourcesFetched={onMissingResourcesFetched} + /> + </EuiFlexItem> + )} </EuiFlexGroup> </EuiPanel> ); } ); RulesDataInput.displayName = 'RulesDataInput'; + +const END = 10 as const; +type SubStep = 1 | 2 | 3 | typeof END; +export const RulesDataInputSubSteps = React.memo<RulesDataInputSubStepsProps>( + ({ migrationStats, onMigrationCreated, onMissingResourcesFetched }) => { + const [subStep, setSubStep] = useState<SubStep>(migrationStats ? 3 : 1); + + // Copy query step + const onCopied = useCallback(() => { + setSubStep(2); + }, []); + const copyStep = useCopyExportQueryStep({ status: getStatus(1, subStep), onCopied }); + + // Upload rules step + const onMigrationCreatedStep = useCallback<OnMigrationCreated>( + (stats) => { + onMigrationCreated(stats); + setSubStep(3); + }, + [onMigrationCreated] + ); + const uploadStep = useRulesFileUploadStep({ + status: getStatus(2, subStep), + migrationStats, + onMigrationCreated: onMigrationCreatedStep, + }); + + // Check missing resources step + const onMissingResourcesFetchedStep = useCallback<OnMissingResourcesFetched>( + (missingResources) => { + onMissingResourcesFetched(missingResources); + setSubStep(END); + }, + [onMissingResourcesFetched] + ); + const resourcesStep = useCheckResourcesStep({ + status: getStatus(3, subStep), + migrationStats, + onMissingResourcesFetched: onMissingResourcesFetchedStep, + }); + + const steps = useMemo<EuiStepProps[]>( + () => [copyStep, uploadStep, resourcesStep], + [copyStep, uploadStep, resourcesStep] + ); + + return ( + <SubStepsWrapper> + <EuiSteps titleSize="xxs" steps={steps} /> + </SubStepsWrapper> + ); + } +); +RulesDataInputSubSteps.displayName = 'RulesDataInputActive'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/index.tsx index 3b081eb203267..02aa109872f4a 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/index.tsx +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/check_resources/index.tsx @@ -5,22 +5,45 @@ * 2.0. */ -import React from 'react'; +import React, { useEffect, useMemo } from 'react'; import { EuiText, type EuiStepProps, type EuiStepStatus } from '@elastic/eui'; +import type { RuleMigrationTaskStats } from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { useGetMissingResources } from '../../../../../../service/hooks/use_get_missing_resources'; +import type { OnMissingResourcesFetched } from '../../../../types'; import * as i18n from './translations'; export interface CheckResourcesStepProps { status: EuiStepStatus; - onComplete: () => void; + migrationStats: RuleMigrationTaskStats | undefined; + onMissingResourcesFetched: OnMissingResourcesFetched; } export const useCheckResourcesStep = ({ status, - onComplete, + migrationStats, + onMissingResourcesFetched, }: CheckResourcesStepProps): EuiStepProps => { - // onComplete(); // TODO: check the resources + const { getMissingResources, isLoading, error } = + useGetMissingResources(onMissingResourcesFetched); + + useEffect(() => { + if (status === 'current' && migrationStats?.id) { + getMissingResources(migrationStats.id); + } + }, [getMissingResources, status, migrationStats?.id]); + + const uploadStepStatus = useMemo(() => { + if (isLoading) { + return 'loading'; + } + if (error) { + return 'danger'; + } + return status; + }, [isLoading, error, status]); + return { title: i18n.RULES_DATA_INPUT_CHECK_RESOURCES_TITLE, - status, + status: uploadStepStatus, children: ( <EuiText size="xs" color="subdued"> {i18n.RULES_DATA_INPUT_CHECK_RESOURCES_DESCRIPTION} diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/translations.ts index d76eb71f2e378..78a0636661604 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/translations.ts +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/copy_export_query/translations.ts @@ -9,7 +9,7 @@ import { i18n } from '@kbn/i18n'; export const RULES_DATA_INPUT_COPY_TITLE = i18n.translate( 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.copyExportQuery.title', - { defaultMessage: 'Copy and export query' } + { defaultMessage: 'Copy rules query' } ); export const RULES_DATA_INPUT_COPY_DESCRIPTION_SECTION = i18n.translate( diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/index.tsx index ab7838b28908b..97dfd903e499e 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/index.tsx +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/index.tsx @@ -7,6 +7,7 @@ import React, { useCallback, useMemo, useState } from 'react'; import type { EuiStepProps, EuiStepStatus } from '@elastic/eui'; +import type { RuleMigrationTaskStats } from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; import type { OnMigrationCreated } from '../../../../types'; import { RulesFileUpload } from './rules_file_upload'; import { @@ -17,13 +18,15 @@ import * as i18n from './translations'; export interface RulesFileUploadStepProps { status: EuiStepStatus; + migrationStats?: RuleMigrationTaskStats; onMigrationCreated: OnMigrationCreated; } export const useRulesFileUploadStep = ({ status, + migrationStats, onMigrationCreated, }: RulesFileUploadStepProps): EuiStepProps => { - const [isCreated, setIsCreated] = useState<boolean>(false); + const [isCreated, setIsCreated] = useState<boolean>(!!migrationStats); const onSuccess = useCallback<OnSuccess>( (stats) => { setIsCreated(true); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/parse_rules_file.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/parse_rules_file.ts deleted file mode 100644 index 3d5dbb32ccde8..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/parse_rules_file.ts +++ /dev/null @@ -1,79 +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 { isPlainObject } from 'lodash/fp'; -import type { OriginalRule } from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; -import type { SPL_RULES_COLUMNS } from '../../../../constants'; -import * as i18n from './translations'; - -type SplunkResult = Partial<Record<(typeof SPL_RULES_COLUMNS)[number], string>>; -interface SplunkRow { - result: SplunkResult; -} - -export const parseContent = (fileContent: string): OriginalRule[] => { - const trimmedContent = fileContent.trim(); - let arrayContent: SplunkRow[]; - if (trimmedContent.startsWith('[')) { - arrayContent = parseJSONArray(trimmedContent); - } else { - arrayContent = parseNDJSON(trimmedContent); - } - if (arrayContent.length === 0) { - throw new Error(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.EMPTY); - } - return arrayContent.map(convertFormat); -}; - -const parseNDJSON = (fileContent: string): SplunkRow[] => { - return fileContent - .split(/\n(?=\{)/) // split at newline followed by '{'. - .filter((entry) => entry.trim() !== '') // Remove empty entries. - .map(parseJSON); // Parse each entry as JSON. -}; - -const parseJSONArray = (fileContent: string): SplunkRow[] => { - const parsedContent = parseJSON(fileContent); - if (!Array.isArray(parsedContent)) { - throw new Error(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.NOT_ARRAY); - } - return parsedContent; -}; - -const parseJSON = (fileContent: string) => { - try { - return JSON.parse(fileContent); - } catch (error) { - if (error instanceof RangeError) { - throw new Error(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.TOO_LARGE_TO_PARSE); - } - throw new Error(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.CAN_NOT_PARSE); - } -}; - -const convertFormat = (row: SplunkRow): OriginalRule => { - if (!isPlainObject(row) || !isPlainObject(row.result)) { - throw new Error(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.NOT_OBJECT); - } - const originalRule: Partial<OriginalRule> = { - id: row.result.id, - vendor: 'splunk', - title: row.result.title, - query: row.result.search, - query_language: 'spl', - description: row.result['action.escu.eli5']?.trim() || row.result.description, - }; - - if (row.result['action.correlationsearch.annotations']) { - try { - originalRule.annotations = JSON.parse(row.result['action.correlationsearch.annotations']); - } catch (error) { - delete originalRule.annotations; - } - } - return originalRule as OriginalRule; -}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/rules_file_upload.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/rules_file_upload.tsx index 0f9787a4ddf68..bec9182420073 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/rules_file_upload.tsx +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/rules_file_upload.tsx @@ -5,12 +5,17 @@ * 2.0. */ -import React, { useCallback, useMemo, useState } from 'react'; +import React, { useCallback, useMemo } from 'react'; import { EuiFilePicker, EuiFormRow, EuiText } from '@elastic/eui'; +import { isPlainObject } from 'lodash'; import type { OriginalRule } from '../../../../../../../../../common/siem_migrations/model/rule_migration.gen'; import type { CreateMigration } from '../../../../../../service/hooks/use_create_migration'; -import { parseContent } from './parse_rules_file'; import * as i18n from './translations'; +import { FILE_UPLOAD_ERROR } from '../../../../translations'; +import { useParseFileInput, type SplunkRow } from '../../../common/use_parse_file_input'; +import type { SPLUNK_RULES_COLUMNS } from '../../../../constants'; + +type SplunkRulesResult = Partial<Record<(typeof SPLUNK_RULES_COLUMNS)[number], string>>; export interface RulesFileUploadProps { createMigration: CreateMigration; @@ -20,65 +25,16 @@ export interface RulesFileUploadProps { } export const RulesFileUpload = React.memo<RulesFileUploadProps>( ({ createMigration, apiError, isLoading, isCreated }) => { - const [isParsing, setIsParsing] = useState<boolean>(false); - const [fileError, setFileError] = useState<string>(); - - const onChangeFile = useCallback( - (files: FileList | null) => { - if (!files) { - return; - } - - setFileError(undefined); - - const rulesFile = files[0]; - const reader = new FileReader(); - - reader.onloadstart = () => setIsParsing(true); - reader.onloadend = () => setIsParsing(false); - - reader.onload = function (e) { - // We can safely cast to string since we call `readAsText` to load the file. - const fileContent = e.target?.result as string | undefined; - - if (fileContent == null) { - setFileError(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.CAN_NOT_READ); - return; - } - - if (fileContent === '' && e.loaded > 100000) { - // V8-based browsers can't handle large files and return an empty string - // instead of an error; see https://stackoverflow.com/a/61316641 - setFileError(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.TOO_LARGE_TO_PARSE); - return; - } - - let data: OriginalRule[]; - try { - data = parseContent(fileContent); - createMigration(data); - } catch (err) { - setFileError(err.message); - } - }; - - const handleReaderError = function () { - const message = reader.error?.message; - if (message) { - setFileError(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.CAN_NOT_READ_WITH_REASON(message)); - } else { - setFileError(i18n.RULES_DATA_INPUT_FILE_UPLOAD_ERROR.CAN_NOT_READ); - } - }; - - reader.onerror = handleReaderError; - reader.onabort = handleReaderError; - - reader.readAsText(rulesFile); + const onFileParsed = useCallback( + (content: Array<SplunkRow<SplunkRulesResult>>) => { + const rules = content.map(formatRuleRow); + createMigration(rules); }, [createMigration] ); + const { parseFile, isParsing, error: fileError } = useParseFileInput(onFileParsed); + const error = useMemo(() => { if (apiError) { return apiError; @@ -106,10 +62,10 @@ export const RulesFileUpload = React.memo<RulesFileUploadProps>( </EuiText> </> } - accept="application/json" - onChange={onChangeFile} + accept="application/json, application/x-ndjson" + onChange={parseFile} display="large" - aria-label="Upload logs sample file" + aria-label="Upload rules file" isLoading={isParsing || isLoading} disabled={isLoading || isCreated} data-test-subj="rulesFilePicker" @@ -120,3 +76,27 @@ export const RulesFileUpload = React.memo<RulesFileUploadProps>( } ); RulesFileUpload.displayName = 'RulesFileUpload'; + +const formatRuleRow = (row: SplunkRow<SplunkRulesResult>): OriginalRule => { + if (!isPlainObject(row.result)) { + throw new Error(FILE_UPLOAD_ERROR.NOT_OBJECT); + } + const originalRule: Partial<OriginalRule> = { + id: row.result.id, + vendor: 'splunk', + title: row.result.title, + query: row.result.search, + query_language: 'spl', + description: row.result['action.escu.eli5']?.trim() || row.result.description, + }; + + if (row.result['action.correlationsearch.annotations']) { + try { + originalRule.annotations = JSON.parse(row.result['action.correlationsearch.annotations']); + } catch (error) { + delete originalRule.annotations; + } + } + // rule document format validation delegated to API + return originalRule as OriginalRule; +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/translations.ts index 675eed61f4973..b560849ca1cd7 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/translations.ts +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/steps/rules/sub_steps/rules_file_upload/translations.ts @@ -9,57 +9,13 @@ import { i18n } from '@kbn/i18n'; export const RULES_DATA_INPUT_FILE_UPLOAD_TITLE = i18n.translate( 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.title', - { defaultMessage: 'Update your rule export' } + { defaultMessage: 'Update your rules export' } ); export const RULES_DATA_INPUT_FILE_UPLOAD_PROMPT = i18n.translate( 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.prompt', { defaultMessage: 'Select or drag and drop the exported JSON file' } ); -export const RULES_DATA_INPUT_FILE_UPLOAD_ERROR = { - CAN_NOT_READ: i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.canNotRead', - { defaultMessage: 'Failed to read the rules export file' } - ), - CAN_NOT_READ_WITH_REASON: (reason: string) => - i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.canNotReadWithReason', - { - defaultMessage: 'An error occurred when reading rules export file: {reason}', - values: { reason }, - } - ), - CAN_NOT_PARSE: i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.canNotParse', - { defaultMessage: 'Cannot parse the rules export file as either a JSON file' } - ), - TOO_LARGE_TO_PARSE: i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.tooLargeToParse', - { defaultMessage: 'This rules export file is too large to parse' } - ), - NOT_ARRAY: i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.notArray', - { defaultMessage: 'The rules export file is not an array' } - ), - EMPTY: i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.empty', - { defaultMessage: 'The rules export file is empty' } - ), - NOT_OBJECT: i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.notObject', - { defaultMessage: 'The rules export file contains non-object entries' } - ), - WRONG_FORMAT: (formatError: string) => { - return i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.error.wrongFormat', - { - defaultMessage: 'The rules export file has wrong format: {formatError}', - values: { formatError }, - } - ); - }, -}; - export const RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS = i18n.translate( 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.rules.rulesFileUpload.createSuccess', { defaultMessage: 'Rules uploaded successfully' } diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/translations.ts new file mode 100644 index 0000000000000..1e7988b596e42 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/translations.ts @@ -0,0 +1,52 @@ +/* + * 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'; + +export const FILE_UPLOAD_ERROR = { + CAN_NOT_READ: i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.canNotRead', + { defaultMessage: 'Failed to read file' } + ), + CAN_NOT_READ_WITH_REASON: (reason: string) => + i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.canNotReadWithReason', + { + defaultMessage: 'An error occurred when reading file: {reason}', + values: { reason }, + } + ), + CAN_NOT_PARSE: i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.canNotParse', + { defaultMessage: 'Cannot parse the file as either a JSON file or NDJSON file' } + ), + TOO_LARGE_TO_PARSE: i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.tooLargeToParse', + { defaultMessage: 'This file is too large to parse' } + ), + NOT_ARRAY: i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.notArray', + { defaultMessage: 'The file content is not an array' } + ), + EMPTY: i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.empty', + { defaultMessage: 'The file is empty' } + ), + NOT_OBJECT: i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.notObject', + { defaultMessage: 'The file contains non-object entries' } + ), + WRONG_FORMAT: (formatError: string) => { + return i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.dataInputFlyout.fileUploadError.wrongFormat', + { + defaultMessage: 'The file has wrong format: {formatError}', + values: { formatError }, + } + ); + }, +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/types.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/types.ts index 16d8f60043bcb..b293a9394ba54 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/types.ts +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/data_input_flyout/types.ts @@ -5,6 +5,18 @@ * 2.0. */ -import type { RuleMigrationTaskStats } from '../../../../../common/siem_migrations/model/rule_migration.gen'; +import type { + RuleMigrationResourceData, + RuleMigrationTaskStats, +} from '../../../../../common/siem_migrations/model/rule_migration.gen'; export type OnMigrationCreated = (migrationStats: RuleMigrationTaskStats) => void; +export type OnResourcesCreated = () => void; +export type OnMissingResourcesFetched = (missingResources: RuleMigrationResourceData[]) => void; + +export enum DataInputStep { + Rules = 1, + Macros = 2, + Lookups = 3, + End = 10, +} diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/index.tsx index 9762cc578e0cc..60a44c251e924 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/index.tsx +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/index.tsx @@ -6,7 +6,7 @@ */ import type { FC, PropsWithChildren } from 'react'; -import React, { useMemo, useState, useEffect } from 'react'; +import React, { useMemo, useState, useEffect, useCallback } from 'react'; import { css } from '@emotion/css'; import { euiThemeVars } from '@kbn/ui-theme'; import { @@ -21,26 +21,32 @@ import { EuiFlexGroup, EuiFlexItem, useGeneratedHtmlId, + EuiSkeletonLoading, + EuiSkeletonTitle, + EuiSkeletonText, } from '@elastic/eui'; import type { EuiTabbedContentTab, EuiTabbedContentProps, EuiFlyoutProps } from '@elastic/eui'; import type { RuleMigration } from '../../../../../common/siem_migrations/model/rule_migration.gen'; +import { useAppToasts } from '../../../../common/hooks/use_app_toasts'; import { RuleOverviewTab, useOverviewTabSections, } from '../../../../detection_engine/rule_management/components/rule_details/rule_overview_tab'; import type { RuleResponse } from '../../../../../common/api/detection_engine/model/rule_schema'; +import * as logicI18n from '../../logic/translations'; import * as i18n from './translations'; import { DEFAULT_DESCRIPTION_LIST_COLUMN_WIDTHS, LARGE_DESCRIPTION_LIST_COLUMN_WIDTHS, } from './constants'; -import { TranslationTab } from './translation_tab'; +import { SummaryTab, TranslationTab } from './tabs'; import { convertMigrationCustomRuleToSecurityRulePayload, isMigrationCustomRule, } from '../../../../../common/siem_migrations/rules/utils'; +import { useUpdateMigrationRules } from '../../logic/use_update_migration_rules'; /* * Fixes tabs to the top and allows the content to scroll. @@ -62,11 +68,12 @@ export const TabContentPadding: FC<PropsWithChildren<unknown>> = ({ children }) ); interface MigrationRuleDetailsFlyoutProps { - ruleActions?: React.ReactNode; ruleMigration: RuleMigration; + ruleActions?: React.ReactNode; matchedPrebuiltRule?: RuleResponse; size?: EuiFlyoutProps['size']; extraTabs?: EuiTabbedContentTab[]; + isDataLoading?: boolean; closeFlyout: () => void; } @@ -77,19 +84,52 @@ export const MigrationRuleDetailsFlyout: React.FC<MigrationRuleDetailsFlyoutProp matchedPrebuiltRule, size = 'm', extraTabs = [], + isDataLoading, closeFlyout, }: MigrationRuleDetailsFlyoutProps) => { + const { addError } = useAppToasts(); + const { expandedOverviewSections, toggleOverviewSection } = useOverviewTabSections(); - const rule = useMemo(() => { - if (isMigrationCustomRule(ruleMigration.elastic_rule)) { - return convertMigrationCustomRuleToSecurityRulePayload( - ruleMigration.elastic_rule, - false - ) as RuleResponse; // TODO: we need to adjust RuleOverviewTab to allow partial RuleResponse as a parameter; + const { mutateAsync: updateMigrationRules } = useUpdateMigrationRules( + ruleMigration.migration_id + ); + + const [isUpdating, setIsUpdating] = useState(false); + const isLoading = isDataLoading || isUpdating; + + const handleTranslationUpdate = useCallback( + async (ruleName: string, ruleQuery: string) => { + if (!ruleMigration || isLoading) { + return; + } + setIsUpdating(true); + try { + await updateMigrationRules([ + { + id: ruleMigration.id, + elastic_rule: { + title: ruleName, + query: ruleQuery, + }, + }, + ]); + } catch (error) { + addError(error, { title: logicI18n.UPDATE_MIGRATION_RULES_FAILURE }); + } finally { + setIsUpdating(false); + } + }, + [addError, ruleMigration, isLoading, updateMigrationRules] + ); + + const ruleDetailsToOverview = useMemo(() => { + const elasticRule = ruleMigration?.elastic_rule; + if (isMigrationCustomRule(elasticRule)) { + return convertMigrationCustomRuleToSecurityRulePayload(elasticRule, false) as RuleResponse; // TODO: we need to adjust RuleOverviewTab to allow partial RuleResponse as a parameter; } return matchedPrebuiltRule; - }, [matchedPrebuiltRule, ruleMigration]); + }, [ruleMigration, matchedPrebuiltRule]); const translationTab: EuiTabbedContentTab = useMemo( () => ({ @@ -97,14 +137,17 @@ export const MigrationRuleDetailsFlyout: React.FC<MigrationRuleDetailsFlyoutProp name: i18n.TRANSLATION_TAB_LABEL, content: ( <TabContentPadding> - <TranslationTab - ruleMigration={ruleMigration} - matchedPrebuiltRule={matchedPrebuiltRule} - /> + {ruleMigration && ( + <TranslationTab + ruleMigration={ruleMigration} + matchedPrebuiltRule={matchedPrebuiltRule} + onTranslationUpdate={handleTranslationUpdate} + /> + )} </TabContentPadding> ), }), - [matchedPrebuiltRule, ruleMigration] + [ruleMigration, handleTranslationUpdate, matchedPrebuiltRule] ); const overviewTab: EuiTabbedContentTab = useMemo( @@ -113,9 +156,9 @@ export const MigrationRuleDetailsFlyout: React.FC<MigrationRuleDetailsFlyoutProp name: i18n.OVERVIEW_TAB_LABEL, content: ( <TabContentPadding> - {rule && ( + {ruleDetailsToOverview && ( <RuleOverviewTab - rule={rule} + rule={ruleDetailsToOverview} columnWidths={ size === 'l' ? LARGE_DESCRIPTION_LIST_COLUMN_WIDTHS @@ -128,12 +171,25 @@ export const MigrationRuleDetailsFlyout: React.FC<MigrationRuleDetailsFlyoutProp </TabContentPadding> ), }), - [rule, size, expandedOverviewSections, toggleOverviewSection] + [ruleDetailsToOverview, size, expandedOverviewSections, toggleOverviewSection] + ); + + const summaryTab: EuiTabbedContentTab = useMemo( + () => ({ + id: 'summary', + name: i18n.SUMMARY_TAB_LABEL, + content: ( + <TabContentPadding> + <SummaryTab ruleMigration={ruleMigration} /> + </TabContentPadding> + ), + }), + [ruleMigration] ); const tabs = useMemo(() => { - return [...extraTabs, translationTab, overviewTab]; - }, [extraTabs, translationTab, overviewTab]); + return [...extraTabs, translationTab, overviewTab, summaryTab]; + }, [extraTabs, translationTab, overviewTab, summaryTab]); const [selectedTabId, setSelectedTabId] = useState<string>(tabs[0].id); const selectedTab = tabs.find((tab) => tab.id === selectedTabId) ?? tabs[0]; @@ -149,6 +205,16 @@ export const MigrationRuleDetailsFlyout: React.FC<MigrationRuleDetailsFlyoutProp setSelectedTabId(tab.id); }; + const tabsContent = useMemo(() => { + return ( + <ScrollableFlyoutTabbedContent + tabs={tabs} + selectedTab={selectedTab} + onTabClick={onTabClick} + /> + ); + }, [selectedTab, tabs]); + const migrationsRulesFlyoutTitleId = useGeneratedHtmlId({ prefix: 'migrationRulesFlyoutTitle', }); @@ -166,16 +232,23 @@ export const MigrationRuleDetailsFlyout: React.FC<MigrationRuleDetailsFlyoutProp <EuiFlyoutHeader> <EuiTitle size="m"> <h2 id={migrationsRulesFlyoutTitleId}> - {rule?.name ?? ruleMigration.original_rule.title} + {ruleDetailsToOverview?.name ?? + ruleMigration?.original_rule.title ?? + i18n.UNKNOWN_MIGRATION_RULE_TITLE} </h2> </EuiTitle> <EuiSpacer size="l" /> </EuiFlyoutHeader> <EuiFlyoutBody> - <ScrollableFlyoutTabbedContent - tabs={tabs} - selectedTab={selectedTab} - onTabClick={onTabClick} + <EuiSkeletonLoading + isLoading={isLoading} + loadingContent={ + <> + <EuiSkeletonTitle /> + <EuiSkeletonText /> + </> + } + loadedContent={tabsContent} /> </EuiFlyoutBody> <EuiFlyoutFooter> diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/index.tsx new file mode 100644 index 0000000000000..ca8e8121f0f63 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/index.tsx @@ -0,0 +1,9 @@ +/* + * 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 * from './summary'; +export * from './translation'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/index.tsx new file mode 100644 index 0000000000000..8561eff458a26 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/index.tsx @@ -0,0 +1,54 @@ +/* + * 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, { useMemo } from 'react'; +import type { EuiCommentProps } from '@elastic/eui'; +import { EuiAvatar, EuiCommentList, EuiMarkdownFormat, EuiSpacer } from '@elastic/eui'; +import moment from 'moment'; +import { AssistantAvatar } from '@kbn/elastic-assistant'; +import { + RuleMigrationStatusEnum, + type RuleMigration, +} from '../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import * as i18n from './translations'; + +interface SummaryTabProps { + ruleMigration: RuleMigration; +} + +export const SummaryTab: React.FC<SummaryTabProps> = React.memo(({ ruleMigration }) => { + const timestamp = useMemo( + // Date formats https://momentjs.com/docs/#/displaying/format/ + () => moment(ruleMigration['@timestamp']).format('ll'), + [ruleMigration] + ); + const comments: EuiCommentProps[] | undefined = useMemo(() => { + return ruleMigration.comments?.map((comment) => { + return { + username: i18n.ASSISTANT_USERNAME, + timelineAvatarAriaLabel: i18n.ASSISTANT_USERNAME, + timelineAvatar: ( + <EuiAvatar name="machine" size="l" color="subdued" iconType={AssistantAvatar} /> + ), + event: + ruleMigration.status === RuleMigrationStatusEnum.failed + ? i18n.COMMENT_EVENT_FAILED + : i18n.COMMENT_EVENT_TRANSLATED, + timestamp, + children: <EuiMarkdownFormat textSize="s">{comment}</EuiMarkdownFormat>, + }; + }); + }, [ruleMigration, timestamp]); + + return ( + <> + <EuiSpacer size="m" /> + <EuiCommentList comments={comments} aria-label={i18n.ASSISTANT_COMMENTS} /> + </> + ); +}); +SummaryTab.displayName = 'SummaryTab'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/translations.ts new file mode 100644 index 0000000000000..87d0840ac0efb --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/summary/translations.ts @@ -0,0 +1,36 @@ +/* + * 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'; + +export const ASSISTANT_USERNAME = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.summaryTab.assistantUsername', + { + defaultMessage: 'Assistant', + } +); + +export const ASSISTANT_COMMENTS = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.summaryTab.commentsLabel', + { + defaultMessage: 'Assistant comments', + } +); + +export const COMMENT_EVENT_TRANSLATED = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.summaryTab.commentEvent.translatedLabel', + { + defaultMessage: 'created a final translation', + } +); + +export const COMMENT_EVENT_FAILED = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.summaryTab.commentEvent.failedLabel', + { + defaultMessage: 'failed to translate', + } +); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/callout.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/callout.tsx new file mode 100644 index 0000000000000..9c81cbc4f8dca --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/callout.tsx @@ -0,0 +1,65 @@ +/* + * 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 { FC } from 'react'; +import React from 'react'; +import type { IconType } from '@elastic/eui'; +import { EuiCallOut } from '@elastic/eui'; +import { + RuleMigrationTranslationResultEnum, + type RuleMigrationTranslationResult, +} from '../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import * as i18n from './translations'; + +const getCallOutInfo = ( + translationResult: RuleMigrationTranslationResult +): { title: string; message?: string; icon: IconType; color: 'success' | 'warning' | 'danger' } => { + switch (translationResult) { + case RuleMigrationTranslationResultEnum.full: + return { + title: i18n.CALLOUT_TRANSLATED_RULE_TITLE, + icon: 'checkInCircleFilled', + color: 'success', + }; + case RuleMigrationTranslationResultEnum.partial: + return { + title: i18n.CALLOUT_PARTIALLY_TRANSLATED_RULE_TITLE, + message: i18n.CALLOUT_PARTIALLY_TRANSLATED_RULE_DESCRIPTION, + icon: 'warningFilled', + color: 'warning', + }; + case RuleMigrationTranslationResultEnum.untranslatable: + return { + title: i18n.CALLOUT_NOT_TRANSLATED_RULE_TITLE, + message: i18n.CALLOUT_NOT_TRANSLATED_RULE_DESCRIPTION, + icon: 'checkInCircleFilled', + color: 'danger', + }; + } +}; + +export interface TranslationCallOutProps { + translationResult: RuleMigrationTranslationResult; +} + +export const TranslationCallOut: FC<TranslationCallOutProps> = React.memo( + ({ translationResult }) => { + const { title, message, icon, color } = getCallOutInfo(translationResult); + + return ( + <EuiCallOut + color={color} + title={title} + iconType={icon} + data-test-subj={`ruleMigrationCallOut-${translationResult}`} + > + {message} + </EuiCallOut> + ); + } +); +TranslationCallOut.displayName = 'TranslationCallOut'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/header.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/header.tsx similarity index 100% rename from x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/header.tsx rename to x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/header.tsx diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/index.tsx new file mode 100644 index 0000000000000..4328e1b888dfd --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/index.tsx @@ -0,0 +1,132 @@ +/* + * 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, { useMemo } from 'react'; +import { + EuiAccordion, + EuiBadge, + EuiFlexGroup, + EuiFlexItem, + EuiSpacer, + EuiSplitPanel, + EuiTitle, + useEuiTheme, +} from '@elastic/eui'; +import { css } from '@emotion/css'; +import { FormattedMessage } from '@kbn/i18n-react'; +import type { RuleResponse } from '../../../../../../../common/api/detection_engine'; +import type { RuleMigration } from '../../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { TranslationTabHeader } from './header'; +import { MigrationRuleQuery } from './migration_rule_query'; +import * as i18n from './translations'; +import { + convertTranslationResultIntoColor, + convertTranslationResultIntoText, +} from '../../../../utils/helpers'; +import { TranslationCallOut } from './callout'; + +interface TranslationTabProps { + ruleMigration: RuleMigration; + matchedPrebuiltRule?: RuleResponse; + onTranslationUpdate?: (ruleName: string, ruleQuery: string) => Promise<void>; +} + +export const TranslationTab: React.FC<TranslationTabProps> = React.memo( + ({ ruleMigration, matchedPrebuiltRule, onTranslationUpdate }) => { + const { euiTheme } = useEuiTheme(); + + const isInstalled = !!ruleMigration.elastic_rule?.id; + const canEdit = !matchedPrebuiltRule && !isInstalled; + + const ruleName = matchedPrebuiltRule?.name ?? ruleMigration.elastic_rule?.title; + const originalQuery = ruleMigration.original_rule.query; + const elasticQuery = useMemo(() => { + let query = ruleMigration.elastic_rule?.query; + if (matchedPrebuiltRule && matchedPrebuiltRule.type !== 'machine_learning') { + query = matchedPrebuiltRule.query; + } + return query ?? ''; + }, [matchedPrebuiltRule, ruleMigration.elastic_rule?.query]); + + return ( + <> + <EuiSpacer size="m" /> + {ruleMigration.translation_result && !isInstalled && ( + <> + <TranslationCallOut translationResult={ruleMigration.translation_result} /> + <EuiSpacer size="m" /> + </> + )} + <EuiAccordion + id="translationQueryItem" + buttonContent={<TranslationTabHeader />} + initialIsOpen={true} + > + <EuiFlexItem> + <EuiSpacer size="s" /> + <EuiSplitPanel.Outer grow hasShadow={false} hasBorder={true}> + <EuiSplitPanel.Inner grow={false} color="subdued" paddingSize="s"> + <EuiFlexGroup justifyContent="flexEnd"> + <EuiFlexItem grow={false}> + <EuiTitle size="xxs"> + <h2> + <FormattedMessage + id="xpack.securitySolution.detectionEngine.translationDetails.translationTab.statusTitle" + defaultMessage="Translation status" + /> + </h2> + </EuiTitle> + </EuiFlexItem> + <EuiFlexItem grow={false}> + <EuiBadge + color={convertTranslationResultIntoColor(ruleMigration.translation_result)} + onClick={() => {}} + onClickAriaLabel={'Click to update translation status'} + > + {isInstalled + ? i18n.INSTALLED_LABEL + : convertTranslationResultIntoText(ruleMigration.translation_result)} + </EuiBadge> + </EuiFlexItem> + </EuiFlexGroup> + </EuiSplitPanel.Inner> + <EuiSplitPanel.Inner grow> + <EuiFlexGroup gutterSize="s" alignItems="flexStart"> + <EuiFlexItem grow={1}> + <MigrationRuleQuery + title={i18n.SPLUNK_QUERY_TITLE} + ruleName={ruleMigration.original_rule.title} + query={originalQuery} + canEdit={false} + /> + </EuiFlexItem> + <EuiFlexItem + grow={0} + css={css` + align-self: stretch; + border-right: ${euiTheme.border.thin}; + `} + /> + <EuiFlexItem grow={1}> + <MigrationRuleQuery + title={i18n.ESQL_TRANSLATION_TITLE} + ruleName={ruleName} + query={elasticQuery} + canEdit={canEdit} + onTranslationUpdate={onTranslationUpdate} + /> + </EuiFlexItem> + </EuiFlexGroup> + </EuiSplitPanel.Inner> + </EuiSplitPanel.Outer> + </EuiFlexItem> + </EuiAccordion> + </> + ); + } +); +TranslationTab.displayName = 'TranslationTab'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/migration_rule_query.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/migration_rule_query.tsx new file mode 100644 index 0000000000000..51a1907da6541 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/migration_rule_query.tsx @@ -0,0 +1,171 @@ +/* + * 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, { useCallback, useMemo, useState } from 'react'; +import { + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiHorizontalRule, + EuiMarkdownFormat, + EuiSpacer, + EuiTitle, + useEuiTheme, +} from '@elastic/eui'; +import { css } from '@emotion/react'; +import { VALIDATION_WARNING_CODES } from '../../../../../../detection_engine/rule_creation/constants/validation_warning_codes'; +import { useFormWithWarnings } from '../../../../../../common/hooks/use_form_with_warnings'; +import { EsqlQueryEdit } from '../../../../../../detection_engine/rule_creation/components/esql_query_edit'; +import { Field, Form, getUseField } from '../../../../../../shared_imports'; +import type { RuleTranslationSchema } from './types'; +import { schema } from './schema'; +import * as i18n from './translations'; + +const CommonUseField = getUseField({ component: Field }); + +interface MigrationRuleQueryProps { + title: string; + ruleName?: string; + query: string; + canEdit?: boolean; + onTranslationUpdate?: (ruleName: string, ruleQuery: string) => Promise<void>; +} + +export const MigrationRuleQuery: React.FC<MigrationRuleQueryProps> = React.memo( + ({ title, ruleName, query, canEdit, onTranslationUpdate }) => { + const { euiTheme } = useEuiTheme(); + + const formDefaultValue: RuleTranslationSchema = useMemo(() => { + return { + ruleName: ruleName ?? '', + queryBar: { + query: { + query, + language: 'esql', + }, + }, + }; + }, [query, ruleName]); + const { form } = useFormWithWarnings<RuleTranslationSchema>({ + defaultValue: formDefaultValue, + options: { stripEmptyFields: false, warningValidationCodes: VALIDATION_WARNING_CODES }, + schema, + }); + + const [editMode, setEditMode] = useState(false); + const onCancel = useCallback(() => setEditMode(false), []); + const onEdit = useCallback(() => { + form.reset({ defaultValue: formDefaultValue }); + setEditMode(true); + }, [form, formDefaultValue]); + const onSave = useCallback(async () => { + const { data, isValid } = await form.submit(); + if (isValid) { + await onTranslationUpdate?.(data.ruleName, data.queryBar.query.query); + setEditMode(false); + } + }, [form, onTranslationUpdate]); + + const headerComponent = useMemo(() => { + return ( + <EuiFlexGroup + alignItems="center" + css={css` + height: ${euiTheme.size.xxl}; + `} + > + <EuiFlexItem> + <EuiTitle size="xxs"> + <h3>{title}</h3> + </EuiTitle> + </EuiFlexItem> + </EuiFlexGroup> + ); + }, [euiTheme, title]); + + const readQueryComponent = useMemo(() => { + if (editMode) { + return null; + } + return ( + <> + {canEdit ? ( + <EuiFlexGroup direction="row" justifyContent="flexEnd"> + <EuiFlexItem grow={false}> + <EuiButtonEmpty iconType="pencil" onClick={onEdit} size="xs"> + {i18n.EDIT} + </EuiButtonEmpty> + </EuiFlexItem> + </EuiFlexGroup> + ) : ( + <EuiSpacer size="l" /> + )} + <EuiTitle size="xxs"> + <h3>{ruleName}</h3> + </EuiTitle> + <EuiSpacer size="m" /> + <EuiMarkdownFormat textSize="xs">{query}</EuiMarkdownFormat> + </> + ); + }, [canEdit, editMode, onEdit, query, ruleName]); + + const editQueryComponent = useMemo(() => { + if (!editMode) { + return null; + } + return ( + <Form form={form} data-test-subj="ruleMigrationTranslationTab"> + <EuiFlexGroup + direction="row" + gutterSize="none" + justifyContent="flexEnd" + alignItems="flexStart" + > + <EuiFlexItem grow={false}> + <EuiButtonEmpty iconType="cross" onClick={onCancel} size="xs"> + {i18n.CANCEL} + </EuiButtonEmpty> + </EuiFlexItem> + <EuiFlexItem grow={false}> + <EuiButtonEmpty iconType="save" onClick={onSave} size="xs"> + {i18n.SAVE} + </EuiButtonEmpty> + </EuiFlexItem> + </EuiFlexGroup> + <CommonUseField + path="ruleName" + componentProps={{ + idAria: 'ruleMigrationTranslationRuleName', + 'data-test-subj': 'ruleMigrationTranslationRuleName', + euiFieldProps: { + fullWidth: true, + }, + }} + /> + <EuiSpacer size="m" /> + <EsqlQueryEdit + path="queryBar" + dataView={{ + title: '', + fields: [], + }} + /> + </Form> + ); + }, [editMode, form, onCancel, onSave]); + + return ( + <> + {headerComponent} + <EuiHorizontalRule margin="xs" /> + {readQueryComponent} + {editQueryComponent} + </> + ); + } +); +MigrationRuleQuery.displayName = 'MigrationRuleQuery'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/schema.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/schema.tsx new file mode 100644 index 0000000000000..4307f919cbde1 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/schema.tsx @@ -0,0 +1,33 @@ +/* + * 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 { queryRequiredValidatorFactory } from '../../../../../../detection_engine/rule_creation_ui/validators/query_required_validator_factory'; +import { FIELD_TYPES, fieldValidators, type FormSchema } from '../../../../../../shared_imports'; +import type { RuleTranslationSchema } from './types'; +import * as i18n from './translations'; + +export const schema: FormSchema<RuleTranslationSchema> = { + ruleName: { + type: FIELD_TYPES.TEXT, + label: i18n.NAME_LABEL, + validations: [ + { + validator: fieldValidators.emptyField(i18n.NAME_REQUIRED_ERROR_MESSAGE), + }, + ], + }, + queryBar: { + fieldsToValidateOnChange: ['queryBar'], + validations: [ + { + validator: (...args) => { + return queryRequiredValidatorFactory('esql')(...args); + }, + }, + ], + }, +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/translations.ts new file mode 100644 index 0000000000000..70325c76b9325 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/translations.ts @@ -0,0 +1,118 @@ +/* + * 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'; + +export const TAB_HEADER_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.title', + { + defaultMessage: 'Translation', + } +); + +export const NAME_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.nameLabel', + { + defaultMessage: 'Name', + } +); + +export const NAME_REQUIRED_ERROR_MESSAGE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.nameFieldRequiredError', + { + defaultMessage: 'A name is required.', + } +); + +export const SPLUNK_QUERY_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.splunkQueryTitle', + { + defaultMessage: 'Splunk query', + } +); + +export const ESQL_TRANSLATION_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.esqlTranslationTitle', + { + defaultMessage: 'ES|QL translation', + } +); + +export const TRANSLATED_QUERY_AREAL_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.queryArealLabel', + { + defaultMessage: 'Translated query', + } +); + +export const INSTALLED_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.installedLabel', + { + defaultMessage: 'Installed', + } +); + +export const EDIT = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.editButtonLabel', + { + defaultMessage: 'Edit', + } +); + +export const SAVE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.saveButtonLabel', + { + defaultMessage: 'Save', + } +); + +export const CANCEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.cancelButtonLabel', + { + defaultMessage: 'Cancel', + } +); + +export const CALLOUT_TRANSLATED_RULE_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.translatedRuleCalloutTitle', + { + defaultMessage: + 'This rule has been fully translated. Install rule to finish migration. Once installed, you’ll be able to fine tune the rule.', + } +); + +export const CALLOUT_PARTIALLY_TRANSLATED_RULE_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.partiallyTranslatedRuleCalloutTitle', + { + defaultMessage: + 'Parts of the query couldn’t be translated, please complete to Install the rule and finish migrating.', + } +); + +export const CALLOUT_PARTIALLY_TRANSLATED_RULE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.partiallyTranslatedRuleCalloutDescription', + { + defaultMessage: + 'In order to save this SIEM Rule to Elastic, you’ll need to finish the query and define the rule severity below. Complete the required fields and finalize the query to save as Rule. Or if you need help, please reach out to Elastic support.', + } +); + +export const CALLOUT_NOT_TRANSLATED_RULE_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.notTranslatedRuleCalloutTitle', + { + defaultMessage: + 'This query couldn’t be translated, please complete to Install the rule and finish migrating.', + } +); + +export const CALLOUT_NOT_TRANSLATED_RULE_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.notTranslatedRuleCalloutDescription', + { + defaultMessage: + 'When a query cannot be partially translated, there could be a misalignment in features between the SIEM product.', + } +); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/types.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/types.ts new file mode 100644 index 0000000000000..1b509a71f47a6 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/tabs/translation/types.ts @@ -0,0 +1,14 @@ +/* + * 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. + */ + +type EsqlLanguage = 'esql'; + +export interface RuleTranslationSchema { + ruleName: string; + // The type is compatible with the validation function used in form schema + queryBar: { query: { query: string; language: EsqlLanguage } }; +} diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/index.tsx deleted file mode 100644 index a80480b8837bb..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/index.tsx +++ /dev/null @@ -1,129 +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 React, { useMemo } from 'react'; -import { - EuiAccordion, - EuiBadge, - EuiFieldText, - EuiFlexGroup, - EuiFlexItem, - EuiFormRow, - EuiSpacer, - EuiSplitPanel, - EuiTitle, - useEuiTheme, -} from '@elastic/eui'; -import { css } from '@emotion/css'; -import { FormattedMessage } from '@kbn/i18n-react'; -import type { RuleResponse } from '../../../../../../common/api/detection_engine'; -import type { RuleMigration } from '../../../../../../common/siem_migrations/model/rule_migration.gen'; -import { TranslationTabHeader } from './header'; -import { MigrationRuleQuery } from './migration_rule_query'; -import * as i18n from './translations'; -import { - convertTranslationResultIntoColor, - convertTranslationResultIntoText, -} from '../../../utils/helpers'; - -interface TranslationTabProps { - ruleMigration: RuleMigration; - matchedPrebuiltRule?: RuleResponse; -} - -export const TranslationTab: React.FC<TranslationTabProps> = React.memo( - ({ ruleMigration, matchedPrebuiltRule }) => { - const { euiTheme } = useEuiTheme(); - - const name = useMemo( - () => ruleMigration.elastic_rule?.title ?? ruleMigration.original_rule.title, - [ruleMigration.elastic_rule?.title, ruleMigration.original_rule.title] - ); - const originalQuery = ruleMigration.original_rule.query; - const elasticQuery = useMemo(() => { - let query = ruleMigration.elastic_rule?.query; - if (matchedPrebuiltRule && matchedPrebuiltRule.type !== 'machine_learning') { - query = matchedPrebuiltRule.query; - } - return query ?? ''; - }, [matchedPrebuiltRule, ruleMigration.elastic_rule?.query]); - - return ( - <> - <EuiSpacer size="m" /> - <EuiFormRow label={i18n.NAME_LABEL} fullWidth> - <EuiFieldText value={name} fullWidth /> - </EuiFormRow> - <EuiSpacer size="m" /> - <EuiAccordion - id="translationQueryItem" - buttonContent={<TranslationTabHeader />} - initialIsOpen={true} - > - <EuiFlexItem> - <EuiSpacer size="s" /> - <EuiSplitPanel.Outer grow hasShadow={false} hasBorder={true}> - <EuiSplitPanel.Inner grow={false} color="subdued" paddingSize="s"> - <EuiFlexGroup justifyContent="flexEnd"> - <EuiFlexItem grow={false}> - <EuiTitle size="xxs"> - <h2> - <FormattedMessage - id="xpack.securitySolution.detectionEngine.translationDetails.translationTab.statusTitle" - defaultMessage="Translation status" - /> - </h2> - </EuiTitle> - </EuiFlexItem> - <EuiFlexItem grow={false}> - <EuiBadge - color={convertTranslationResultIntoColor(ruleMigration.translation_result)} - onClick={() => {}} - onClickAriaLabel={'Click to update translation status'} - > - {convertTranslationResultIntoText(ruleMigration.translation_result)} - </EuiBadge> - </EuiFlexItem> - </EuiFlexGroup> - </EuiSplitPanel.Inner> - <EuiSplitPanel.Inner grow> - <EuiFlexGroup gutterSize="s" alignItems="flexStart"> - <EuiFlexItem grow={1}> - <MigrationRuleQuery - title={i18n.SPLUNK_QUERY_TITLE} - query={originalQuery} - canEdit={false} - /> - </EuiFlexItem> - <EuiFlexItem - grow={0} - css={css` - align-self: stretch; - border-right: ${euiTheme.border.thin}; - `} - /> - <EuiFlexItem grow={1}> - <MigrationRuleQuery - title={ - matchedPrebuiltRule - ? i18n.PREBUILT_RULE_QUERY_TITLE - : i18n.ESQL_TRANSLATION_TITLE - } - query={elasticQuery} - canEdit={false} - /> - </EuiFlexItem> - </EuiFlexGroup> - </EuiSplitPanel.Inner> - </EuiSplitPanel.Outer> - </EuiFlexItem> - </EuiAccordion> - </> - ); - } -); -TranslationTab.displayName = 'TranslationTab'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/migration_rule_query.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/migration_rule_query.tsx deleted file mode 100644 index 534f765da97bc..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/migration_rule_query.tsx +++ /dev/null @@ -1,73 +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 React, { useMemo } from 'react'; -import { - EuiFlexGroup, - EuiFlexItem, - EuiHorizontalRule, - EuiMarkdownEditor, - EuiMarkdownFormat, - EuiTitle, - useEuiTheme, -} from '@elastic/eui'; -import { css } from '@emotion/react'; -import * as i18n from './translations'; - -interface MigrationRuleQueryProps { - title: string; - query: string; - canEdit?: boolean; -} - -export const MigrationRuleQuery: React.FC<MigrationRuleQueryProps> = React.memo( - ({ title, query, canEdit }) => { - const { euiTheme } = useEuiTheme(); - - const headerComponent = useMemo(() => { - return ( - <EuiFlexGroup - alignItems="center" - css={css` - height: ${euiTheme.size.xxl}; - `} - > - <EuiFlexItem> - <EuiTitle size="xxs"> - <h3>{title}</h3> - </EuiTitle> - </EuiFlexItem> - </EuiFlexGroup> - ); - }, [euiTheme, title]); - - const queryTextComponent = useMemo(() => { - if (canEdit) { - return ( - <EuiMarkdownEditor - aria-label={i18n.TRANSLATED_QUERY_AREAL_LABEL} - value={query} - onChange={() => {}} - height={400} - initialViewMode={'viewing'} - /> - ); - } else { - return <EuiMarkdownFormat>{query}</EuiMarkdownFormat>; - } - }, [canEdit, query]); - - return ( - <> - {headerComponent} - <EuiHorizontalRule margin="s" /> - {queryTextComponent} - </> - ); - } -); -MigrationRuleQuery.displayName = 'MigrationRuleQuery'; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/translations.ts deleted file mode 100644 index 1592a80d32478..0000000000000 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translation_tab/translations.ts +++ /dev/null @@ -1,50 +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 { i18n } from '@kbn/i18n'; - -export const TAB_HEADER_TITLE = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.title', - { - defaultMessage: 'Translation', - } -); - -export const NAME_LABEL = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.nameLabel', - { - defaultMessage: 'Name', - } -); - -export const SPLUNK_QUERY_TITLE = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.splunkQueryTitle', - { - defaultMessage: 'Splunk query', - } -); - -export const PREBUILT_RULE_QUERY_TITLE = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.prebuiltRuleQueryTitle', - { - defaultMessage: 'Prebuilt rule query', - } -); - -export const ESQL_TRANSLATION_TITLE = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.esqlTranslationTitle', - { - defaultMessage: 'ES|QL translation', - } -); - -export const TRANSLATED_QUERY_AREAL_LABEL = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTab.queryArealLabel', - { - defaultMessage: 'Translated query', - } -); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translations.ts index 8e6582b8c198e..fe6543f683e66 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translations.ts +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rule_details_flyout/translations.ts @@ -7,6 +7,13 @@ import { i18n } from '@kbn/i18n'; +export const UNKNOWN_MIGRATION_RULE_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.unknownMigrationRuleTitle', + { + defaultMessage: 'Unknown migration rule', + } +); + export const OVERVIEW_TAB_LABEL = i18n.translate( 'xpack.securitySolution.siemMigrations.rules.translationDetails.overviewTabLabel', { @@ -14,6 +21,13 @@ export const OVERVIEW_TAB_LABEL = i18n.translate( } ); +export const SUMMARY_TAB_LABEL = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.translationDetails.summaryTabLabel', + { + defaultMessage: 'Summary', + } +); + export const TRANSLATION_TAB_LABEL = i18n.translate( 'xpack.securitySolution.siemMigrations.rules.translationDetails.translationTabLabel', { diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/index.tsx index 106e7ba514d3f..07ba44d4d167e 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/index.tsx +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table/index.tsx @@ -224,11 +224,22 @@ export const MigrationRulesTable: React.FC<MigrationRulesTableProps> = React.mem [installSingleRule, isLoading] ); + const getMigrationRule = useCallback( + (ruleId: string) => { + if (!isLoading && ruleMigrations.length) { + return ruleMigrations.find((item) => item.id === ruleId); + } + }, + [isLoading, ruleMigrations] + ); + const { migrationRuleDetailsFlyout: rulePreviewFlyout, openMigrationRuleDetails: openRulePreview, } = useMigrationRuleDetailsFlyout({ + isLoading, prebuiltRules, + getMigrationRule, ruleActionsFactory, }); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/name.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/name.tsx index dd77636521eda..ce0e1d3c99d8d 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/name.tsx +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/name.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { EuiLink } from '@elastic/eui'; +import { EuiLink, EuiText } from '@elastic/eui'; import type { RuleMigration } from '../../../../../common/siem_migrations/model/rule_migration.gen'; import * as i18n from './translations'; import type { TableColumn } from './constants'; @@ -17,6 +17,13 @@ interface NameProps { } const Name = ({ rule, openMigrationRuleDetails }: NameProps) => { + if (!rule.elastic_rule) { + return ( + <EuiText color="danger" size="s"> + {rule.original_rule.title} + </EuiText> + ); + } return ( <EuiLink onClick={() => { @@ -24,7 +31,7 @@ const Name = ({ rule, openMigrationRuleDetails }: NameProps) => { }} data-test-subj="ruleName" > - {rule.elastic_rule?.title} + {rule.elastic_rule.title} </EuiLink> ); }; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/status.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/status.tsx index 5daec1f1b4fa9..2936878c93b8b 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/status.tsx +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/rules_table_columns/status.tsx @@ -15,9 +15,7 @@ export const createStatusColumn = (): TableColumn => { return { field: 'translation_result', name: i18n.COLUMN_STATUS, - render: (value: RuleMigration['translation_result'], rule: RuleMigration) => ( - <StatusBadge value={value} installedRuleId={rule.elastic_rule?.id} /> - ), + render: (_, rule: RuleMigration) => <StatusBadge migrationRule={rule} />, sortable: true, truncateText: true, width: '15%', diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/status_badge/index.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/status_badge/index.tsx index 8f8bcff40f674..f1f435c7e14ad 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/status_badge/index.tsx +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/status_badge/index.tsx @@ -10,7 +10,11 @@ import { euiLightVars } from '@kbn/ui-theme'; import { EuiFlexGroup, EuiFlexItem, EuiHealth, EuiIcon, EuiToolTip } from '@elastic/eui'; import { css } from '@emotion/css'; -import type { RuleMigrationTranslationResult } from '../../../../../common/siem_migrations/model/rule_migration.gen'; +import { + RuleMigrationStatusEnum, + type RuleMigration, + type RuleMigrationTranslationResult, +} from '../../../../../common/siem_migrations/model/rule_migration.gen'; import { convertTranslationResultIntoText } from '../../utils/helpers'; import * as i18n from './translations'; @@ -27,35 +31,51 @@ const statusToColorMap: Record<RuleMigrationTranslationResult, string> = { }; interface StatusBadgeProps { - value?: RuleMigrationTranslationResult; - installedRuleId?: string; + migrationRule: RuleMigration; 'data-test-subj'?: string; } export const StatusBadge: React.FC<StatusBadgeProps> = React.memo( - ({ value, installedRuleId, 'data-test-subj': dataTestSubj = 'translation-result' }) => { - const translationResult = installedRuleId ? 'full' : value ?? 'untranslatable'; - const displayValue = installedRuleId - ? i18n.RULE_STATUS_INSTALLED - : convertTranslationResultIntoText(translationResult); - const color = statusToColorMap[translationResult]; + ({ migrationRule, 'data-test-subj': dataTestSubj = 'translation-result' }) => { + // Installed + if (migrationRule.elastic_rule?.id) { + return ( + <EuiToolTip content={i18n.RULE_STATUS_INSTALLED}> + <EuiFlexGroup gutterSize="xs" alignItems="center"> + <EuiFlexItem grow={false}> + <EuiIcon type="check" color={statusToColorMap.full} /> + </EuiFlexItem> + <EuiFlexItem grow={false}>{i18n.RULE_STATUS_INSTALLED}</EuiFlexItem> + </EuiFlexGroup> + </EuiToolTip> + ); + } - return ( - <EuiToolTip content={displayValue}> - {installedRuleId ? ( + // Failed + if (migrationRule.status === RuleMigrationStatusEnum.failed) { + return ( + <EuiToolTip content={i18n.RULE_STATUS_FAILED}> <EuiFlexGroup gutterSize="xs" alignItems="center"> <EuiFlexItem grow={false}> - <EuiIcon type={'check'} color={statusToColorMap.full} /> + <EuiIcon type="warningFilled" color="danger" /> </EuiFlexItem> - <EuiFlexItem grow={false}>{displayValue}</EuiFlexItem> + <EuiFlexItem grow={false}>{i18n.RULE_STATUS_FAILED}</EuiFlexItem> </EuiFlexGroup> - ) : ( - <EuiHealth color={color} data-test-subj={dataTestSubj}> - <div className={statusTextWrapperClassName}> - <span className="eui-textTruncate">{displayValue}</span> - </div> - </EuiHealth> - )} + </EuiToolTip> + ); + } + + const translationResult = migrationRule.translation_result ?? 'untranslatable'; + const displayValue = convertTranslationResultIntoText(translationResult); + const color = statusToColorMap[translationResult]; + + return ( + <EuiToolTip content={displayValue}> + <EuiHealth color={color} data-test-subj={dataTestSubj}> + <div className={statusTextWrapperClassName}> + <span className="eui-textTruncate">{displayValue}</span> + </div> + </EuiHealth> </EuiToolTip> ); } diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/status_badge/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/status_badge/translations.ts index 0a7b1c37f7acf..a84fd298ed364 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/components/status_badge/translations.ts +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/components/status_badge/translations.ts @@ -13,3 +13,10 @@ export const RULE_STATUS_INSTALLED = i18n.translate( defaultMessage: 'Installed', } ); + +export const RULE_STATUS_FAILED = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.status.failedLabel', + { + defaultMessage: 'Error', + } +); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/hooks/use_migration_rule_preview_flyout.tsx b/x-pack/plugins/security_solution/public/siem_migrations/rules/hooks/use_migration_rule_preview_flyout.tsx index 4df54d6331f66..4efaa4aba7181 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/hooks/use_migration_rule_preview_flyout.tsx +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/hooks/use_migration_rule_preview_flyout.tsx @@ -8,7 +8,6 @@ import type { ReactNode } from 'react'; import React, { useCallback, useState, useMemo } from 'react'; import type { EuiTabbedContentTab } from '@elastic/eui'; -import type { RuleResponse } from '../../../../common/api/detection_engine'; import type { PrebuiltRuleVersion, RuleMigration, @@ -16,7 +15,9 @@ import type { import { MigrationRuleDetailsFlyout } from '../components/rule_details_flyout'; interface UseMigrationRuleDetailsFlyoutParams { + isLoading?: boolean; prebuiltRules: Record<string, PrebuiltRuleVersion>; + getMigrationRule: (ruleId: string) => RuleMigration | undefined; ruleActionsFactory: (ruleMigration: RuleMigration, closeRulePreview: () => void) => ReactNode; extraTabsFactory?: (ruleMigration: RuleMigration) => EuiTabbedContentTab[]; } @@ -28,13 +29,34 @@ interface UseMigrationRuleDetailsFlyoutResult { } export function useMigrationRuleDetailsFlyout({ + isLoading, prebuiltRules, + getMigrationRule, extraTabsFactory, ruleActionsFactory, }: UseMigrationRuleDetailsFlyoutParams): UseMigrationRuleDetailsFlyoutResult { - const [ruleMigration, setMigrationRuleForPreview] = useState<RuleMigration | undefined>(); - const [matchedPrebuiltRule, setMatchedPrebuiltRule] = useState<RuleResponse | undefined>(); - const closeMigrationRuleDetails = useCallback(() => setMigrationRuleForPreview(undefined), []); + const [migrationRuleId, setMigrationRuleId] = useState<string | undefined>(); + + const ruleMigration = useMemo(() => { + if (migrationRuleId) { + return getMigrationRule(migrationRuleId); + } + }, [getMigrationRule, migrationRuleId]); + const matchedPrebuiltRule = useMemo(() => { + if (ruleMigration) { + // Find matched prebuilt rule if any and prioritize its installed version + const matchedPrebuiltRuleVersion = ruleMigration.elastic_rule?.prebuilt_rule_id + ? prebuiltRules[ruleMigration.elastic_rule.prebuilt_rule_id] + : undefined; + return matchedPrebuiltRuleVersion?.current ?? matchedPrebuiltRuleVersion?.target; + } + }, [prebuiltRules, ruleMigration]); + + const openMigrationRuleDetails = useCallback((rule: RuleMigration) => { + setMigrationRuleId(rule.id); + }, []); + const closeMigrationRuleDetails = useCallback(() => setMigrationRuleId(undefined), []); + const ruleActions = useMemo( () => ruleMigration && ruleActionsFactory(ruleMigration, closeMigrationRuleDetails), [ruleMigration, ruleActionsFactory, closeMigrationRuleDetails] @@ -44,21 +66,6 @@ export function useMigrationRuleDetailsFlyout({ [ruleMigration, extraTabsFactory] ); - const openMigrationRuleDetails = useCallback( - (rule: RuleMigration) => { - setMigrationRuleForPreview(rule); - - // Find matched prebuilt rule if any and prioritize its installed version - const matchedPrebuiltRuleVersion = rule.elastic_rule?.prebuilt_rule_id - ? prebuiltRules[rule.elastic_rule.prebuilt_rule_id] - : undefined; - const prebuiltRule = - matchedPrebuiltRuleVersion?.current ?? matchedPrebuiltRuleVersion?.target; - setMatchedPrebuiltRule(prebuiltRule); - }, - [prebuiltRules] - ); - return { migrationRuleDetailsFlyout: ruleMigration && ( <MigrationRuleDetailsFlyout @@ -68,6 +75,7 @@ export function useMigrationRuleDetailsFlyout({ closeFlyout={closeMigrationRuleDetails} ruleActions={ruleActions} extraTabs={extraTabs} + isDataLoading={isLoading} /> ), openMigrationRuleDetails, diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/translations.ts index 3f92da4e8ddcc..ef3521fd37301 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/translations.ts +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/translations.ts @@ -34,3 +34,10 @@ export const INSTALL_MIGRATION_RULES_FAILURE = i18n.translate( defaultMessage: 'Failed to install migration rules', } ); + +export const UPDATE_MIGRATION_RULES_FAILURE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.updateMigrationRulesFailDescription', + { + defaultMessage: 'Failed to update migration rules', + } +); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_rules.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_rules.ts index 4109575459233..b06f041e2c58e 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_rules.ts +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_get_migration_rules.ts @@ -18,9 +18,10 @@ export const useGetMigrationRules = (params: { migrationId: string; page?: number; perPage?: number; - sortField: string; - sortDirection: 'asc' | 'desc'; + sortField?: string; + sortDirection?: 'asc' | 'desc'; searchTerm?: string; + ids?: string[]; }) => { const { addError } = useAppToasts(); diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_update_migration_rules.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_update_migration_rules.ts new file mode 100644 index 0000000000000..1e0fa22c466f0 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/logic/use_update_migration_rules.ts @@ -0,0 +1,40 @@ +/* + * 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 { useMutation } from '@tanstack/react-query'; +import type { UpdateRuleMigrationData } from '../../../../common/siem_migrations/model/rule_migration.gen'; +import { SIEM_RULE_MIGRATIONS_PATH } from '../../../../common/siem_migrations/constants'; +import type { UpdateRuleMigrationResponse } from '../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; +import { useAppToasts } from '../../../common/hooks/use_app_toasts'; +import * as i18n from './translations'; +import { useInvalidateGetMigrationRules } from './use_get_migration_rules'; +import { useInvalidateGetMigrationTranslationStats } from './use_get_migration_translation_stats'; +import { updateMigrationRules } from '../api'; + +export const UPDATE_MIGRATION_RULES_MUTATION_KEY = ['PUT', SIEM_RULE_MIGRATIONS_PATH]; + +export const useUpdateMigrationRules = (migrationId: string) => { + const { addError } = useAppToasts(); + + const invalidateGetRuleMigrations = useInvalidateGetMigrationRules(migrationId); + const invalidateGetMigrationTranslationStats = + useInvalidateGetMigrationTranslationStats(migrationId); + + return useMutation<UpdateRuleMigrationResponse, Error, UpdateRuleMigrationData[]>( + (rulesToUpdate) => updateMigrationRules({ rulesToUpdate }), + { + mutationKey: UPDATE_MIGRATION_RULES_MUTATION_KEY, + onError: (error) => { + addError(error, { title: i18n.UPDATE_MIGRATION_RULES_FAILURE }); + }, + onSettled: () => { + invalidateGetRuleMigrations(); + invalidateGetMigrationTranslationStats(); + }, + } + ); +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_create_migration.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_create_migration.ts index 94082cf59d359..18a4ebe47bf8d 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_create_migration.ts +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_create_migration.ts @@ -12,10 +12,15 @@ import type { CreateRuleMigrationRequestBody } from '../../../../../common/siem_ import { useKibana } from '../../../../common/lib/kibana/kibana_react'; import { reducer, initialState } from './common/api_request_reducer'; -export const RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS = i18n.translate( - 'xpack.securitySolution.siemMigrations.rules.service.createRuleSuccess', - { defaultMessage: 'Rules uploaded successfully' } +export const RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS_TITLE = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.service.createRuleSuccess.title', + { defaultMessage: 'Rule migration created successfully' } ); +export const RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS_DESCRIPTION = (rules: number) => + i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.service.createRuleSuccess.description', + { defaultMessage: '{rules} rules uploaded', values: { rules } } + ); export const RULES_DATA_INPUT_CREATE_MIGRATION_ERROR = i18n.translate( 'xpack.securitySolution.siemMigrations.rules.service.createRuleError', { defaultMessage: 'Failed to upload rules file' } @@ -36,7 +41,10 @@ export const useCreateMigration = (onSuccess: OnSuccess) => { const migrationId = await siemMigrations.rules.createRuleMigration(data); const stats = await siemMigrations.rules.getRuleMigrationStats(migrationId); - notifications.toasts.addSuccess(RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS); + notifications.toasts.addSuccess({ + title: RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS_TITLE, + text: RULES_DATA_INPUT_CREATE_MIGRATION_SUCCESS_DESCRIPTION(data.length), + }); onSuccess(stats); dispatch({ type: 'success' }); } catch (err) { diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_get_missing_resources.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_get_missing_resources.ts new file mode 100644 index 0000000000000..a0679aa1e8bd2 --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_get_missing_resources.ts @@ -0,0 +1,48 @@ +/* + * 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 { useCallback, useReducer } from 'react'; +import { i18n } from '@kbn/i18n'; +import type { RuleMigrationResourceData } from '../../../../../common/siem_migrations/model/rule_migration.gen'; +import { useKibana } from '../../../../common/lib/kibana/kibana_react'; +import { reducer, initialState } from './common/api_request_reducer'; + +export const RULES_DATA_INPUT_CREATE_MIGRATION_ERROR = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.service.getMissingResourcesError', + { defaultMessage: 'Failed to fetch missing macros & lookups' } +); + +export type GetMissingResources = (migrationId: string) => void; +export type OnSuccess = (missingResources: RuleMigrationResourceData[]) => void; + +export const useGetMissingResources = (onSuccess: OnSuccess) => { + const { siemMigrations, notifications } = useKibana().services; + const [state, dispatch] = useReducer(reducer, initialState); + + const getMissingResources = useCallback<GetMissingResources>( + (migrationId) => { + (async () => { + try { + dispatch({ type: 'start' }); + const missingResources = await siemMigrations.rules.getMissingResources(migrationId); + + onSuccess(missingResources); + dispatch({ type: 'success' }); + } catch (err) { + const apiError = err.body ?? err; + notifications.toasts.addError(apiError, { + title: RULES_DATA_INPUT_CREATE_MIGRATION_ERROR, + }); + dispatch({ type: 'error', error: apiError }); + } + })(); + }, + [siemMigrations.rules, notifications.toasts, onSuccess] + ); + + return { isLoading: state.loading, error: state.error, getMissingResources }; +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_latest_stats.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_latest_stats.ts index 8b692f07eb3cb..88c6b798e2f40 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_latest_stats.ts +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_latest_stats.ts @@ -6,7 +6,7 @@ */ import useObservable from 'react-use/lib/useObservable'; -import { useEffect, useMemo } from 'react'; +import { useCallback, useEffect, useMemo } from 'react'; import { useKibana } from '../../../../common/lib/kibana/kibana_react'; export const useLatestStats = () => { @@ -16,8 +16,12 @@ export const useLatestStats = () => { siemMigrations.rules.startPolling(); }, [siemMigrations.rules]); + const refreshStats = useCallback(() => { + siemMigrations.rules.getRuleMigrationsStats(); // this updates latestStats$ internally + }, [siemMigrations.rules]); + const latestStats$ = useMemo(() => siemMigrations.rules.getLatestStats$(), [siemMigrations]); const latestStats = useObservable(latestStats$, null); - return { data: latestStats ?? [], isLoading: latestStats === null }; + return { data: latestStats ?? [], isLoading: latestStats === null, refreshStats }; }; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_upsert_resources.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_upsert_resources.ts new file mode 100644 index 0000000000000..eab3888422bae --- /dev/null +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/service/hooks/use_upsert_resources.ts @@ -0,0 +1,51 @@ +/* + * 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 { useCallback, useReducer } from 'react'; +import { i18n } from '@kbn/i18n'; +import type { UpsertRuleMigrationResourcesRequestBody } from '../../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; +import { useKibana } from '../../../../common/lib/kibana/kibana_react'; +import { reducer, initialState } from './common/api_request_reducer'; + +export const RULES_DATA_INPUT_UPSERT_MIGRATION_RESOURCES_ERROR = i18n.translate( + 'xpack.securitySolution.siemMigrations.rules.service.upsertRuleMigrationResourcesError', + { defaultMessage: 'Failed to upload rule migration resources' } +); + +export type UpsertResources = ( + migrationId: string, + data: UpsertRuleMigrationResourcesRequestBody +) => void; +export type OnSuccess = () => void; + +export const useUpsertResources = (onSuccess: OnSuccess) => { + const { siemMigrations, notifications } = useKibana().services; + const [state, dispatch] = useReducer(reducer, initialState); + + const upsertResources = useCallback<UpsertResources>( + (migrationId, data) => { + (async () => { + try { + dispatch({ type: 'start' }); + await siemMigrations.rules.upsertMigrationResources(migrationId, data); + + onSuccess(); + dispatch({ type: 'success' }); + } catch (err) { + const apiError = err.body ?? err; + notifications.toasts.addError(apiError, { + title: RULES_DATA_INPUT_UPSERT_MIGRATION_RESOURCES_ERROR, + }); + dispatch({ type: 'error', error: apiError }); + } + })(); + }, + [siemMigrations.rules, notifications.toasts, onSuccess] + ); + + return { isLoading: state.loading, error: state.error, upsertResources }; +}; diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/rule_migrations_service.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/service/rule_migrations_service.ts index c13b0606d771d..75b7887db6525 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/service/rule_migrations_service.ts +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/service/rule_migrations_service.ts @@ -13,11 +13,15 @@ import { TRACE_OPTIONS_SESSION_STORAGE_KEY, } from '@kbn/elastic-assistant/impl/assistant_context/constants'; import type { LangSmithOptions } from '../../../../common/siem_migrations/model/common.gen'; -import type { RuleMigrationTaskStats } from '../../../../common/siem_migrations/model/rule_migration.gen'; +import type { + RuleMigrationResourceData, + RuleMigrationTaskStats, +} from '../../../../common/siem_migrations/model/rule_migration.gen'; import type { CreateRuleMigrationRequestBody, GetAllStatsRuleMigrationResponse, GetRuleMigrationStatsResponse, + UpsertRuleMigrationResourcesRequestBody, } from '../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; import { SiemMigrationTaskStatus } from '../../../../common/siem_migrations/constants'; import type { StartPluginsDependencies } from '../../../types'; @@ -29,6 +33,8 @@ import { getRuleMigrationsStatsAll, startRuleMigration, type GetRuleMigrationsStatsAllParams, + getMissingResources, + upsertMigrationResources, } from '../api'; import type { RuleMigrationStats } from '../types'; import { getSuccessToast } from './success_notification'; @@ -99,6 +105,20 @@ export class SiemRulesMigrationsService { return migrationId as string; } + public async upsertMigrationResources( + migrationId: string, + body: UpsertRuleMigrationResourcesRequestBody + ): Promise<void> { + if (body.length === 0) { + throw new Error(i18n.EMPTY_RULES_ERROR); + } + // Batching creation to avoid hitting the max payload size limit of the API + for (let i = 0; i < body.length; i += CREATE_MIGRATION_BODY_BATCH_SIZE) { + const bodyBatch = body.slice(i, i + CREATE_MIGRATION_BODY_BATCH_SIZE); + await upsertMigrationResources({ migrationId, body: bodyBatch }); + } + } + public async startRuleMigration(migrationId: string): Promise<GetAllStatsRuleMigrationResponse> { const connectorId = this.connectorIdStorage.get(); if (!connectorId) { @@ -135,6 +155,10 @@ export class SiemRulesMigrationsService { return results; } + public async getMissingResources(migrationId: string): Promise<RuleMigrationResourceData[]> { + return getMissingResources({ migrationId }); + } + private async getRuleMigrationsStatsWithRetry( params: GetRuleMigrationsStatsAllParams = {}, sleepSecs?: number diff --git a/x-pack/plugins/security_solution/public/siem_migrations/rules/utils/translations.ts b/x-pack/plugins/security_solution/public/siem_migrations/rules/utils/translations.ts index 366ad435c61b4..03f76cb833818 100644 --- a/x-pack/plugins/security_solution/public/siem_migrations/rules/utils/translations.ts +++ b/x-pack/plugins/security_solution/public/siem_migrations/rules/utils/translations.ts @@ -10,7 +10,7 @@ import { i18n } from '@kbn/i18n'; export const SIEM_TRANSLATION_RESULT_FULL_LABEL = i18n.translate( 'xpack.securitySolution.siemMigrations.rules.translationResult.full', { - defaultMessage: 'Fully translated', + defaultMessage: 'Translated', } ); diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts index 51260c5ac6053..cc9a75148d9dc 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_server/fleet_server_services.ts @@ -277,6 +277,7 @@ const startFleetServerWithDocker = async ({ const isServerless = await isServerlessKibanaFlavor(kbnClient); const esURL = new URL(await getFleetElasticsearchOutputHost(kbnClient)); const containerName = `dev-fleet-server.${port}`; + let fleetServerVersionInfo = ''; log.info( `Starting a new fleet server using Docker\n Agent version: ${agentVersion}\n Server URL: ${fleetServerUrl}` @@ -284,10 +285,11 @@ const startFleetServerWithDocker = async ({ let retryAttempt = isServerless ? 0 : 1; const attemptServerlessFleetServerSetup = async (): Promise<StartedServer> => { + fleetServerVersionInfo = ''; + return log.indent(4, async () => { const hostname = `dev-fleet-server.${port}.${Math.random().toString(32).substring(2, 6)}`; let containerId = ''; - let fleetServerVersionInfo = ''; if (isLocalhost(esURL.hostname)) { esURL.hostname = localhostRealIp; @@ -361,8 +363,17 @@ const startFleetServerWithDocker = async ({ } fleetServerVersionInfo = isServerless - ? // `/usr/bin/fleet-server` process does not seem to support a `--version` type of argument - 'Running latest standalone fleet server' + ? ( + await execa + .command(`docker exec ${containerName} /usr/bin/fleet-server --version`) + .catch((err) => { + log.verbose( + `Failed to retrieve fleet-server (serverless/standalone) version information from running instance.`, + err + ); + return { stdout: 'Unable to retrieve version information (serverless)' }; + }) + ).stdout : ( await execa('docker', [ 'exec', @@ -424,7 +435,7 @@ Kill container: ${chalk.cyan(`docker kill ${containerId}`)} const response: StartedServer = await attemptServerlessFleetServerSetup(); - log.info(`Done. Fleet server up and running`); + log.info(`Done. Fleet server up and running (version: ${fleetServerVersionInfo})`); return response; }; diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts index a07823194fa69..7c89beec9150b 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/common/fleet_services.ts @@ -56,12 +56,14 @@ import type { DeleteAgentPolicyResponse, EnrollmentAPIKey, GenerateServiceTokenResponse, + GetActionStatusResponse, GetAgentsRequest, GetEnrollmentAPIKeysResponse, GetOutputsResponse, PostAgentUnenrollResponse, UpdateAgentPolicyRequest, UpdateAgentPolicyResponse, + PostNewAgentActionResponse, } from '@kbn/fleet-plugin/common/types'; import semver from 'semver'; import axios from 'axios'; @@ -1499,3 +1501,92 @@ export const updateAgentPolicy = async ( .catch(catchAxiosErrorFormatAndThrow) .then((response) => response.data.item); }; + +/** + * Sets the log level on a Fleet agent and waits a bit of time to allow it for to + * complete (but does not error if it does not complete) + * + * @param kbnClient + * @param agentId + * @param logLevel + * @param log + */ +export const setAgentLoggingLevel = async ( + kbnClient: KbnClient, + agentId: string, + logLevel: 'debug' | 'info' | 'warning' | 'error', + log: ToolingLog = createToolingLogger() +): Promise<PostNewAgentActionResponse> => { + log.debug(`Setting fleet agent [${agentId}] logging level to [${logLevel}]`); + + const response = await kbnClient + .request<PostNewAgentActionResponse>({ + method: 'POST', + path: `/api/fleet/agents/${agentId}/actions`, + body: { action: { type: 'SETTINGS', data: { log_level: logLevel } } }, + headers: { 'Elastic-Api-Version': API_VERSIONS.public.v1 }, + }) + .then((res) => res.data); + + // Wait to see if the action completes, but don't `throw` if it does not + await waitForFleetAgentActionToComplete(kbnClient, response.item.id) + .then(() => { + log.debug(`Fleet action to set agent [${agentId}] logging level to [${logLevel}] completed!`); + }) + .catch((err) => { + log.debug(err.message); + }); + + return response; +}; + +/** + * Retrieve fleet agent action statuses + * @param kbnClient + */ +export const fetchFleetAgentActionStatus = async ( + kbnClient: KbnClient +): Promise<GetActionStatusResponse> => { + return kbnClient + .request<GetActionStatusResponse>({ + method: 'GET', + path: agentRouteService.getActionStatusPath(), + query: { perPage: 1000 }, + headers: { 'Elastic-Api-Version': API_VERSIONS.public.v1 }, + }) + .then((response) => response.data); +}; + +/** + * Check and wait until a Fleet Agent action is complete. + * @param kbnClient + * @param actionId + * @param timeout + * + * @throws + */ +export const waitForFleetAgentActionToComplete = async ( + kbnClient: KbnClient, + actionId: string, + timeout: number = 20_000 +): Promise<void> => { + await pRetry( + async (attempts) => { + const { items: actionList } = await fetchFleetAgentActionStatus(kbnClient); + const actionInfo = actionList.find((action) => action.actionId === actionId); + + if (!actionInfo) { + throw new Error( + `Fleet Agent action id [${actionId}] was not found in list of actions retrieved from fleet!` + ); + } + + if (actionInfo.status === 'IN_PROGRESS') { + throw new Error( + `Fleet agent action id [${actionId}] remains in progress after [${attempts}] attempts to check its status` + ); + } + }, + { maxTimeout: 2_000, maxRetryTime: timeout } + ); +}; diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/types.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/types.ts index 38256f1c774bd..e3e41c41b77f3 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/types.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/common/types.ts @@ -14,8 +14,12 @@ export interface HostVm { exec: (command: string) => Promise<HostVmExecResponse>; mount: (localDir: string, hostVmDir: string) => Promise<HostVmMountResponse>; unmount: (hostVmDir: string) => Promise<void>; - /** Uploads/copies a file from the local machine to the VM */ + /** @deprecated use `upload` */ transfer: (localFilePath: string, destFilePath: string) => Promise<HostVmTransferResponse>; + /** Uploads/copies a file from the local machine to the VM */ + upload: (localFilePath: string, destFilePath: string) => Promise<HostVmTransferResponse>; + /** Downloads a file from the host VM to the local machine */ + download: (vmFilePath: string, localFilePath: string) => Promise<HostVmTransferResponse>; destroy: () => Promise<void>; info: () => string; stop: () => void; @@ -33,8 +37,8 @@ export interface HostVmMountResponse { unmount: () => Promise<void>; } export interface HostVmTransferResponse { - /** The file path of the file on the host vm */ + /** The path of the file that was either uploaded to the host VM or downloaded to the local machine from the VM */ filePath: string; - /** Delete the file from the host VM */ + /** Delete the file from the host VM or from the local machine depending on what client method was used */ delete: () => Promise<HostVmExecResponse>; } diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/vm_services.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/vm_services.ts index 084e068768e8f..fc1301c9fed9a 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/vm_services.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/common/vm_services.ts @@ -8,15 +8,19 @@ import type { ToolingLog } from '@kbn/tooling-log'; import execa from 'execa'; import chalk from 'chalk'; +import path from 'path'; import { userInfo } from 'os'; -import { join as pathJoin, dirname } from 'path'; +import { unlink as deleteFile } from 'fs/promises'; +import { dump } from './utils'; import type { DownloadedAgentInfo } from './agent_downloads_service'; import { BaseDataGenerator } from '../../../common/endpoint/data_generators/base_data_generator'; import { createToolingLogger } from '../../../common/endpoint/data_loaders/utils'; import type { HostVm, HostVmExecResponse, SupportedVmManager } from './types'; const baseGenerator = new BaseDataGenerator(); -export const DEFAULT_VAGRANTFILE = pathJoin(__dirname, 'vagrant', 'Vagrantfile'); +export const DEFAULT_VAGRANTFILE = path.join(__dirname, 'vagrant', 'Vagrantfile'); + +const MAX_BUFFER = 1024 * 1024 * 5; // 5MB export interface BaseVmCreateOptions { name: string; @@ -75,9 +79,16 @@ export const createMultipassHostVmClient = ( log: ToolingLog = createToolingLogger() ): HostVm => { const exec = async (command: string): Promise<HostVmExecResponse> => { - const execResponse = await execa.command(`multipass exec ${name} -- ${command}`); - - log.verbose(execResponse); + const execResponse = await execa + .command(`multipass exec ${name} -- ${command}`, { maxBuffer: MAX_BUFFER }) + .catch((e) => { + log.error(dump(e)); + throw e; + }); + + log.verbose( + `exec response from host [${name}] for command [${command}]:\n${dump(execResponse)}` + ); return { stdout: execResponse.stdout, @@ -125,11 +136,11 @@ export const createMultipassHostVmClient = ( log.verbose(`multipass stop response:\n`, response); }; - const transfer: HostVm['transfer'] = async (localFilePath, destFilePath) => { + const upload: HostVm['upload'] = async (localFilePath, destFilePath) => { const response = await execa.command( `multipass transfer ${localFilePath} ${name}:${destFilePath}` ); - log.verbose(`Transferred file to VM [${name}]:`, response); + log.verbose(`Uploaded file to VM [${name}]:`, response); return { filePath: destFilePath, @@ -139,6 +150,27 @@ export const createMultipassHostVmClient = ( }; }; + const download: HostVm['download'] = async (vmFilePath: string, localFilePath: string) => { + const localFileAbsolutePath = path.resolve(localFilePath); + const response = await execa.command( + `multipass transfer ${name}:${vmFilePath} ${localFilePath}` + ); + log.verbose(`Downloaded file from VM [${name}]:`, response); + + return { + filePath: localFileAbsolutePath, + delete: async () => { + return deleteFile(localFileAbsolutePath).then(() => { + return { + stdout: 'success', + stderr: '', + exitCode: 0, + }; + }); + }, + }; + }; + return { type: 'multipass', name, @@ -147,7 +179,9 @@ export const createMultipassHostVmClient = ( info, mount, unmount, - transfer, + transfer: upload, + upload, + download, start, stop, }; @@ -217,7 +251,7 @@ const createVagrantVm = async ({ }: CreateVagrantVmOptions): Promise<HostVm> => { log.debug(`Using Vagrantfile: ${vagrantFile}`); - const VAGRANT_CWD = dirname(vagrantFile); + const VAGRANT_CWD = path.dirname(vagrantFile); // Destroy the VM running (if any) with the provided vagrant file before re-creating it try { @@ -273,18 +307,24 @@ export const createVagrantHostVmClient = ( vagrantFile: string = DEFAULT_VAGRANTFILE, log: ToolingLog = createToolingLogger() ): HostVm => { - const VAGRANT_CWD = dirname(vagrantFile); + const VAGRANT_CWD = path.dirname(vagrantFile); const execaOptions: execa.Options = { env: { VAGRANT_CWD, }, stdio: ['inherit', 'pipe', 'pipe'], + maxBuffer: MAX_BUFFER, }; log.debug(`Creating Vagrant VM client for [${name}] with vagrantfile [${vagrantFile}]`); const exec = async (command: string): Promise<HostVmExecResponse> => { - const execResponse = await execa.command(`vagrant ssh -- ${command}`, execaOptions); + const execResponse = await execa + .command(`vagrant ssh -- ${command}`, execaOptions) + .catch((e) => { + log.error(dump(e)); + throw e; + }); log.verbose(execResponse); @@ -328,12 +368,12 @@ export const createVagrantHostVmClient = ( log.verbose('vagrant suspend response:\n', response); }; - const transfer: HostVm['transfer'] = async (localFilePath, destFilePath) => { + const upload: HostVm['upload'] = async (localFilePath, destFilePath) => { const response = await execa.command( `vagrant upload ${localFilePath} ${destFilePath}`, execaOptions ); - log.verbose(`Transferred file to VM [${name}]:`, response); + log.verbose(`Uploaded file to VM [${name}]:`, response); return { filePath: destFilePath, @@ -343,6 +383,34 @@ export const createVagrantHostVmClient = ( }; }; + const download: HostVm['download'] = async (vmFilePath, localFilePath) => { + const localFileAbsolutePath = path.resolve(localFilePath); + + // Vagrant will auto-mount the directory that includes the Vagrant file to the VM under `/vagrant`, + // and it keeps that sync'd to the local system. So we first copy the file in the VM there so we + // can retrieve it from the local machine + await exec(`cp ${vmFilePath} /vagrant`).catch((e) => { + log.error(`Error while attempting to copy file on VM:\n${dump(e)}`); + throw e; + }); + + // Now move the file from the local vagrant directory to the desired location + await execa.command(`mv ${VAGRANT_CWD}/${path.basename(vmFilePath)} ${localFileAbsolutePath}`); + + return { + filePath: localFileAbsolutePath, + delete: async () => { + return deleteFile(localFileAbsolutePath).then(() => { + return { + stdout: 'success', + stderr: '', + exitCode: 0, + }; + }); + }, + }; + }; + return { type: 'vagrant', name, @@ -351,7 +419,9 @@ export const createVagrantHostVmClient = ( info, mount, unmount, - transfer, + transfer: upload, + upload, + download, start, stop, }; diff --git a/x-pack/plugins/security_solution/scripts/openapi/bundle_detections.js b/x-pack/plugins/security_solution/scripts/openapi/bundle_detections.js index 2c0e36f3db8ee..7bfd659927ec3 100644 --- a/x-pack/plugins/security_solution/scripts/openapi/bundle_detections.js +++ b/x-pack/plugins/security_solution/scripts/openapi/bundle_detections.js @@ -20,21 +20,10 @@ const ROOT = resolve(__dirname, '../..'); ), options: { includeLabels: ['serverless'], - prototypeDocument: { - info: { - title: 'Security Detections API (Elastic Cloud Serverless)', - description: - 'You can create rules that automatically turn events and external alerts sent to Elastic Security into detection alerts. These alerts are displayed on the Detections page.', - }, - tags: [ - { - name: 'Security Detections API', - 'x-displayName': 'Security detections', - description: - 'You can create rules that automatically turn events and external alerts sent to Elastic Security into detection alerts. These alerts are displayed on the Detections page.', - }, - ], - }, + prototypeDocument: join( + ROOT, + 'scripts/openapi/bundle_detections_info/detections_serverless.info.yaml' + ), }, }); @@ -46,21 +35,10 @@ const ROOT = resolve(__dirname, '../..'); ), options: { includeLabels: ['ess'], - prototypeDocument: { - info: { - title: 'Security Detections API (Elastic Cloud and self-hosted)', - description: - 'You can create rules that automatically turn events and external alerts sent to Elastic Security into detection alerts. These alerts are displayed on the Detections page.', - }, - tags: [ - { - name: 'Security Detections API', - 'x-displayName': 'Security detections', - description: - 'You can create rules that automatically turn events and external alerts sent to Elastic Security into detection alerts. These alerts are displayed on the Detections page.', - }, - ], - }, + prototypeDocument: join( + ROOT, + 'scripts/openapi/bundle_detections_info/detections_ess.info.yaml' + ), }, }); })(); diff --git a/x-pack/plugins/security_solution/scripts/openapi/bundle_detections_info/detections_ess.info.yaml b/x-pack/plugins/security_solution/scripts/openapi/bundle_detections_info/detections_ess.info.yaml new file mode 100644 index 0000000000000..bb3f8830dc35a --- /dev/null +++ b/x-pack/plugins/security_solution/scripts/openapi/bundle_detections_info/detections_ess.info.yaml @@ -0,0 +1,14 @@ +openapi: 3.0.3 +info: + title: "Security Detections API (Elastic Cloud and self-hosted)" + description: "Use the detections APIs to create and manage detection rules. Detection rules search events and external alerts sent to Elastic Security and generate detection alerts from any hits. Alerts are displayed on the **Alerts** page and can be assigned and triaged, using the alert status to mark them as open, closed, or acknowledged." + +tags: + - name: "Security Detections API" + x-displayName: "Security detections" + description: | + Use the detections APIs to create and manage detection rules. Detection rules search events and external alerts sent to Elastic Security and generate detection alerts from any hits. Alerts are displayed on the **Alerts** page and can be assigned and triaged, using the alert status to mark them as open, closed, or acknowledged. + > warn + > If the API key used for authorization has different privileges than the key that created or most recently updated a rule, the rule behavior might change. + + > If the API key that created a rule is deleted, or the user that created the rule becomes inactive, the rule will stop running. \ No newline at end of file diff --git a/x-pack/plugins/security_solution/scripts/openapi/bundle_detections_info/detections_serverless.info.yaml b/x-pack/plugins/security_solution/scripts/openapi/bundle_detections_info/detections_serverless.info.yaml new file mode 100644 index 0000000000000..a90f669b4ed28 --- /dev/null +++ b/x-pack/plugins/security_solution/scripts/openapi/bundle_detections_info/detections_serverless.info.yaml @@ -0,0 +1,14 @@ +openapi: 3.0.3 +info: + title: "Security Detections API (Elastic Cloud Serverless)" + description: "Use the detections APIs to create and manage detection rules. Detection rules search events and external alerts sent to Elastic Security and generate detection alerts from any hits. Alerts are displayed on the **Alerts** page and can be assigned and triaged, using the alert status to mark them as open, closed, or acknowledged." + +tags: + - name: "Security Detections API" + x-displayName: "Security detections" + description: | + Use the detections APIs to create and manage detection rules. Detection rules search events and external alerts sent to Elastic Security and generate detection alerts from any hits. Alerts are displayed on the **Alerts** page and can be assigned and triaged, using the alert status to mark them as open, closed, or acknowledged. + > warn + > If the API key used for authorization has different privileges than the key that created or most recently updated a rule, the rule behavior might change. + + > If the API key that created a rule is deleted, or the user that created the rule becomes inactive, the rule will stop running. \ No newline at end of file diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts b/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts index 0f93e4fceb10c..77c01622a5df4 100644 --- a/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts +++ b/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts @@ -32,7 +32,7 @@ import { createKbnClient } from '../endpoint/common/stack_services'; import type { StartedFleetServer } from '../endpoint/common/fleet_server/fleet_server_services'; import { startFleetServer } from '../endpoint/common/fleet_server/fleet_server_services'; import { renderSummaryTable } from './print_run'; -import { parseTestFileConfig, retrieveIntegrations } from './utils'; +import { parseTestFileConfig, retrieveIntegrations, setDefaultToolingLoggingLevel } from './utils'; import { getFTRConfig } from './get_ftr_config'; export const cli = () => { @@ -70,9 +70,9 @@ ${JSON.stringify(argv, null, 2)} const cypressConfigFilePath = require.resolve(`../../${argv.configFile}`) as string; const cypressConfigFile = await import(cypressConfigFilePath); - if (cypressConfigFile.env?.TOOLING_LOG_LEVEL) { - createToolingLogger.defaultLogLevel = cypressConfigFile.env.TOOLING_LOG_LEVEL; - } + // Adjust tooling log level based on the `TOOLING_LOG_LEVEL` property, which can be + // defined in the cypress config file or set in the `env` + setDefaultToolingLoggingLevel(cypressConfigFile?.env?.TOOLING_LOG_LEVEL); const log = prefixedOutputLogger('cy.parallel()', createToolingLogger()); diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts b/x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts index 0b426cf1e8c20..7a68b596ea5d1 100644 --- a/x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts +++ b/x-pack/plugins/security_solution/scripts/run_cypress/parallel_serverless.ts @@ -28,7 +28,12 @@ import { INITIAL_REST_VERSION } from '@kbn/data-views-plugin/server/constants'; import { catchAxiosErrorFormatAndThrow } from '../../common/endpoint/format_axios_error'; import { createToolingLogger } from '../../common/endpoint/data_loaders/utils'; import { renderSummaryTable } from './print_run'; -import { getOnBeforeHook, parseTestFileConfig, retrieveIntegrations } from './utils'; +import { + getOnBeforeHook, + parseTestFileConfig, + retrieveIntegrations, + setDefaultToolingLoggingLevel, +} from './utils'; import { prefixedOutputLogger } from '../endpoint/common/utils'; import type { ProductType, Credentials, ProjectHandler } from './project_handler/project_handler'; @@ -363,9 +368,8 @@ ${JSON.stringify(argv, null, 2)} cypressConfigFile.env.grepTags = '@serverlessQA --@skipInServerless --@skipInServerlessMKI'; } - if (cypressConfigFile.env?.TOOLING_LOG_LEVEL) { - createToolingLogger.defaultLogLevel = cypressConfigFile.env.TOOLING_LOG_LEVEL; - } + setDefaultToolingLoggingLevel(cypressConfigFile?.env?.TOOLING_LOG_LEVEL); + // eslint-disable-next-line require-atomic-updates log = prefixedOutputLogger('cy.parallel(svl)', createToolingLogger()); diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/utils.ts b/x-pack/plugins/security_solution/scripts/run_cypress/utils.ts index ba1974565e10c..6e292eff9a384 100644 --- a/x-pack/plugins/security_solution/scripts/run_cypress/utils.ts +++ b/x-pack/plugins/security_solution/scripts/run_cypress/utils.ts @@ -12,6 +12,8 @@ import generate from '@babel/generator'; import type { ExpressionStatement, ObjectExpression, ObjectProperty } from '@babel/types'; import { schema, type TypeOf } from '@kbn/config-schema'; import chalk from 'chalk'; +import type { ToolingLogTextWriterConfig } from '@kbn/tooling-log'; +import { createToolingLogger } from '../../common/endpoint/data_loaders/utils'; /** * Retrieve test files using a glob pattern. @@ -156,3 +158,22 @@ export const getOnBeforeHook = (module: unknown, beforeSpecFilePath: string): Fu return module.onBeforeHook; }; + +/** + * Sets the default log level for `ToolingLog` instances created by `createToolingLogger()`: + * `x-pack/plugins/security_solution/common/endpoint/data_loaders/utils.ts:148`. + * It will first check the NodeJs `process.env` to see if an Environment Variable was set + * and then, if provided, it will use the value defined in the Cypress Config. file. + */ +export const setDefaultToolingLoggingLevel = (defaultFallbackLoggingLevel?: string) => { + const logLevel = + process.env.TOOLING_LOG_LEVEL || + process.env.CYPRESS_TOOLING_LOG_LEVEL || + defaultFallbackLoggingLevel || + ''; + + if (logLevel) { + createToolingLogger('info').info(`Setting tooling log level to [${logLevel}]`); + createToolingLogger.defaultLogLevel = logLevel as ToolingLogTextWriterConfig['level']; + } +}; diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/index.ts b/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/index.ts index 49524a9f15190..d09e8d8f8c8a7 100644 --- a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/index.ts +++ b/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/index.ts @@ -26,7 +26,6 @@ import { securityWorkflowInsightsService } from '../../../endpoint/services'; import { getAnonymizedEvents } from './get_events'; import { getDefendInsightsOutputParser } from './output_parsers'; import { getDefendInsightsPrompt } from './prompts'; -import { buildWorkflowInsights } from './workflow_insights_builders'; export const DEFEND_INSIGHTS_TOOL_DESCRIPTION = 'Call this for Elastic Defend insights.'; @@ -115,11 +114,7 @@ export const DEFEND_INSIGHTS_TOOL: AssistantTool = Object.freeze({ }); const insights: DefendInsight[] = result.records; - const workflowInsights = buildWorkflowInsights({ - defendInsights: insights, - request, - }); - workflowInsights.map(securityWorkflowInsightsService.create); + await securityWorkflowInsightsService.createFromDefendInsights(insights, request); return JSON.stringify({ eventsContextCount, insights }, null, 2); }, diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/workflow_insights_builders/incompatible_antivirus.ts b/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/workflow_insights_builders/incompatible_antivirus.ts deleted file mode 100644 index c9d091f76dbc3..0000000000000 --- a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/workflow_insights_builders/incompatible_antivirus.ts +++ /dev/null @@ -1,86 +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 moment from 'moment'; - -import { ENDPOINT_ARTIFACT_LISTS } from '@kbn/securitysolution-list-constants'; - -import type { DefendInsight } from '@kbn/elastic-assistant-common'; -import type { BuildWorkflowInsightParams } from '.'; -import type { SecurityWorkflowInsight } from '../../../../../common/endpoint/types/workflow_insights'; - -import { - ActionType, - Category, - SourceType, - TargetType, -} from '../../../../../common/endpoint/types/workflow_insights'; -import { SUPPORTED_HOST_OS_TYPE } from '../../../../../common/endpoint/constants'; - -export function buildIncompatibleAntivirusWorkflowInsights( - params: BuildWorkflowInsightParams -): SecurityWorkflowInsight[] { - const currentTime = moment(); - const { defendInsights, request } = params; - const { insightType, endpointIds, apiConfig } = request.body; - return defendInsights.map((defendInsight: DefendInsight) => { - const filePaths = (defendInsight.events ?? []).map((event) => event.value); - return { - '@timestamp': currentTime, - // TODO add i18n support - message: 'Incompatible antiviruses detected', - category: Category.Endpoint, - type: insightType, - source: { - type: SourceType.LlmConnector, - id: apiConfig.connectorId, - // TODO use actual time range when we add support - data_range_start: currentTime, - data_range_end: currentTime.clone().add(24, 'hours'), - }, - target: { - type: TargetType.Endpoint, - ids: endpointIds, - }, - action: { - type: ActionType.Refreshed, - timestamp: currentTime, - }, - value: defendInsight.group, - remediation: { - exception_list_items: [ - { - list_id: ENDPOINT_ARTIFACT_LISTS.blocklists.id, - name: defendInsight.group, - description: 'Suggested by Security Workflow Insights', - entries: [ - { - field: 'file.path.caseless', - operator: 'included', - type: 'match_any', - value: filePaths, - }, - ], - // TODO add per policy support - tags: ['policy:all'], - os_types: [ - // TODO pick this based on endpointIds - SUPPORTED_HOST_OS_TYPE[0], - SUPPORTED_HOST_OS_TYPE[1], - SUPPORTED_HOST_OS_TYPE[2], - ], - }, - ], - }, - metadata: { - notes: { - llm_model: apiConfig.model ?? '', - }, - }, - }; - }); -} diff --git a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/workflow_insights_builders/index.ts b/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/workflow_insights_builders/index.ts deleted file mode 100644 index 4694617229f04..0000000000000 --- a/x-pack/plugins/security_solution/server/assistant/tools/defend_insights/workflow_insights_builders/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { KibanaRequest } from '@kbn/core/server'; - -import type { DefendInsight, DefendInsightsPostRequestBody } from '@kbn/elastic-assistant-common'; -import { DefendInsightType } from '@kbn/elastic-assistant-common'; -import type { SecurityWorkflowInsight } from '../../../../../common/endpoint/types/workflow_insights'; - -import { InvalidDefendInsightTypeError } from '../errors'; -import { buildIncompatibleAntivirusWorkflowInsights } from './incompatible_antivirus'; - -export interface BuildWorkflowInsightParams { - defendInsights: DefendInsight[]; - request: KibanaRequest<unknown, unknown, DefendInsightsPostRequestBody>; -} - -export function buildWorkflowInsights( - params: BuildWorkflowInsightParams -): SecurityWorkflowInsight[] { - if (params.request.body.insightType === DefendInsightType.Enum.incompatible_antivirus) { - return buildIncompatibleAntivirusWorkflowInsights(params); - } - - throw new InvalidDefendInsightTypeError(); -} diff --git a/x-pack/plugins/security_solution/server/endpoint/mocks/utils.mock.ts b/x-pack/plugins/security_solution/server/endpoint/mocks/utils.mock.ts index e4de97523a84a..d8d043c29ec67 100644 --- a/x-pack/plugins/security_solution/server/endpoint/mocks/utils.mock.ts +++ b/x-pack/plugins/security_solution/server/endpoint/mocks/utils.mock.ts @@ -6,7 +6,7 @@ */ import type { ElasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; -import type { SearchResponse } from '@elastic/elasticsearch/lib/api/types'; +import type { OpenPointInTimeResponse, SearchResponse } from '@elastic/elasticsearch/lib/api/types'; import { v4 as uuidV4 } from 'uuid'; import { BaseDataGenerator } from '../../../common/endpoint/data_generators/base_data_generator'; @@ -45,14 +45,14 @@ export const applyEsClientSearchMock = <TDocument = unknown>({ const pitResponse = { id: `mock:pit:${index}:${uuidV4()}` }; openedPitIds.add(pitResponse.id); - return pitResponse; + return pitResponse as OpenPointInTimeResponse; } if (priorOpenPointInTimeImplementation) { return priorOpenPointInTimeImplementation(...args); } - return { id: 'mock' }; + return { id: 'mock' } as OpenPointInTimeResponse; }); esClientMock.closePointInTime.mockImplementation(async (...args) => { diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.test.ts b/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.test.ts index 6f928ee599b34..f5ca060eb2be3 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.test.ts @@ -66,8 +66,8 @@ describe('Get Insights Route Handler', () => { describe('with valid privileges', () => { it('should fetch insights and return them', async () => { const mockInsights = [ - { _source: { id: 1, name: 'Insight 1' } }, - { _source: { id: 2, name: 'Insight 2' } }, + { _id: 1, _source: { name: 'Insight 1' } }, + { _id: 2, _source: { name: 'Insight 2' } }, ]; fetchMock.mockResolvedValue(mockInsights); diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts b/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts index 910df9b593fad..9723ac3afe422 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/workflow_insights/get_insights.ts @@ -70,7 +70,9 @@ export const getInsightsRouteHandler = ( request.query as SearchParams ); - const body = insightsResponse.flatMap((insight) => insight._source || []); + const body = insightsResponse.flatMap((insight) => + insight._source ? { ...insight._source, id: insight._id } : [] + ); return response.ok({ body }); } catch (e) { diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/builders/incompatible_antivirus.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/builders/incompatible_antivirus.test.ts new file mode 100644 index 0000000000000..41b833be05fc0 --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/builders/incompatible_antivirus.test.ts @@ -0,0 +1,133 @@ +/* + * 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 moment from 'moment'; + +import type { KibanaRequest } from '@kbn/core/server'; +import type { DefendInsightsPostRequestBody } from '@kbn/elastic-assistant-common'; + +import { ENDPOINT_ARTIFACT_LISTS } from '@kbn/securitysolution-list-constants'; + +import type { BuildWorkflowInsightParams } from '.'; + +import { + Category, + SourceType, + TargetType, + ActionType, +} from '../../../../../common/endpoint/types/workflow_insights'; +import { createMockEndpointAppContext } from '../../../mocks'; +import type { EndpointMetadataService } from '../../metadata'; +import { groupEndpointIdsByOS } from '../helpers'; +import { buildIncompatibleAntivirusWorkflowInsights } from './incompatible_antivirus'; + +jest.mock('../helpers', () => ({ + groupEndpointIdsByOS: jest.fn(), +})); + +describe('buildIncompatibleAntivirusWorkflowInsights', () => { + let params: BuildWorkflowInsightParams; + + beforeEach(() => { + const mockEndpointAppContextService = createMockEndpointAppContext().service; + mockEndpointAppContextService.getEndpointMetadataService = jest.fn().mockReturnValue({ + getMetadataForEndpoints: jest.fn(), + }); + const endpointMetadataService = + mockEndpointAppContextService.getEndpointMetadataService() as jest.Mocked<EndpointMetadataService>; + + params = { + defendInsights: [ + { + group: 'AVGAntivirus', + events: [ + { + id: 'lqw5opMB9Ke6SNgnxRSZ', + endpointId: 'f6e2f338-6fb7-4c85-9c23-d20e9f96a051', + value: '/Applications/AVGAntivirus.app/Contents/Backend/services/com.avg.activity', + }, + ], + }, + ], + request: { + body: { + insightType: 'incompatible_antivirus', + endpointIds: ['endpoint-1'], + apiConfig: { + connectorId: 'connector-id-1', + actionTypeId: 'action-type-id-1', + model: 'model-1', + }, + anonymizationFields: [], + subAction: 'invokeAI', + }, + } as unknown as KibanaRequest<unknown, unknown, DefendInsightsPostRequestBody>, + endpointMetadataService, + }; + + (groupEndpointIdsByOS as jest.Mock).mockResolvedValue({ + windows: ['endpoint-1'], + }); + }); + + it('should correctly build workflow insights', async () => { + const result = await buildIncompatibleAntivirusWorkflowInsights(params); + + expect(result).toEqual([ + expect.objectContaining({ + '@timestamp': expect.any(moment), + message: 'Incompatible antiviruses detected', + category: Category.Endpoint, + type: 'incompatible_antivirus', + source: { + type: SourceType.LlmConnector, + id: 'connector-id-1', + data_range_start: expect.any(moment), + data_range_end: expect.any(moment), + }, + target: { + type: TargetType.Endpoint, + ids: ['endpoint-1'], + }, + action: { + type: ActionType.Refreshed, + timestamp: expect.any(moment), + }, + value: 'AVGAntivirus', + remediation: { + exception_list_items: [ + { + list_id: ENDPOINT_ARTIFACT_LISTS.trustedApps.id, + name: 'AVGAntivirus', + description: 'Suggested by Security Workflow Insights', + entries: [ + { + field: 'process.executable.caseless', + operator: 'included', + type: 'match', + value: + '/Applications/AVGAntivirus.app/Contents/Backend/services/com.avg.activity', + }, + ], + tags: ['policy:all'], + os_types: ['windows'], + }, + ], + }, + metadata: { + notes: { + llm_model: 'model-1', + }, + }, + }), + ]); + expect(groupEndpointIdsByOS).toHaveBeenCalledWith( + ['endpoint-1'], + params.endpointMetadataService + ); + }); +}); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/builders/incompatible_antivirus.ts b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/builders/incompatible_antivirus.ts new file mode 100644 index 0000000000000..64485995c578d --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/builders/incompatible_antivirus.ts @@ -0,0 +1,88 @@ +/* + * 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 moment from 'moment'; + +import type { DefendInsight } from '@kbn/elastic-assistant-common'; + +import { ENDPOINT_ARTIFACT_LISTS } from '@kbn/securitysolution-list-constants'; + +import type { SecurityWorkflowInsight } from '../../../../../common/endpoint/types/workflow_insights'; +import type { SupportedHostOsType } from '../../../../../common/endpoint/constants'; +import type { BuildWorkflowInsightParams } from '.'; + +import { + ActionType, + Category, + SourceType, + TargetType, +} from '../../../../../common/endpoint/types/workflow_insights'; +import { groupEndpointIdsByOS } from '../helpers'; + +export async function buildIncompatibleAntivirusWorkflowInsights( + params: BuildWorkflowInsightParams +): Promise<SecurityWorkflowInsight[]> { + const currentTime = moment(); + const { defendInsights, request, endpointMetadataService } = params; + const { insightType, endpointIds, apiConfig } = request.body; + + const osEndpointIdsMap = await groupEndpointIdsByOS(endpointIds, endpointMetadataService); + return defendInsights.flatMap((defendInsight: DefendInsight) => { + const filePaths = Array.from(new Set((defendInsight.events ?? []).map((event) => event.value))); + + return Object.keys(osEndpointIdsMap).flatMap((os) => + filePaths.map((filePath) => ({ + '@timestamp': currentTime, + // TODO add i18n support + message: 'Incompatible antiviruses detected', + category: Category.Endpoint, + type: insightType, + source: { + type: SourceType.LlmConnector, + id: apiConfig.connectorId, + // TODO use actual time range when we add support + data_range_start: currentTime, + data_range_end: currentTime.clone().add(24, 'hours'), + }, + target: { + type: TargetType.Endpoint, + ids: endpointIds, + }, + action: { + type: ActionType.Refreshed, + timestamp: currentTime, + }, + value: defendInsight.group, + remediation: { + exception_list_items: [ + { + list_id: ENDPOINT_ARTIFACT_LISTS.trustedApps.id, + name: defendInsight.group, + description: 'Suggested by Security Workflow Insights', + entries: [ + { + field: 'process.executable.caseless', + operator: 'included', + type: 'match', + value: filePath, + }, + ], + // TODO add per policy support + tags: ['policy:all'], + os_types: [os as SupportedHostOsType], + }, + ], + }, + metadata: { + notes: { + llm_model: apiConfig.model ?? '', + }, + }, + })) + ); + }); +} diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/builders/index.ts b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/builders/index.ts new file mode 100644 index 0000000000000..1f00d152f1f12 --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/builders/index.ts @@ -0,0 +1,34 @@ +/* + * 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 { KibanaRequest } from '@kbn/core/server'; + +import type { DefendInsight, DefendInsightsPostRequestBody } from '@kbn/elastic-assistant-common'; + +import { DefendInsightType } from '@kbn/elastic-assistant-common'; + +import type { SecurityWorkflowInsight } from '../../../../../common/endpoint/types/workflow_insights'; + +import { InvalidDefendInsightTypeError } from '../../../../assistant/tools/defend_insights/errors'; +import type { EndpointMetadataService } from '../../metadata'; +import { buildIncompatibleAntivirusWorkflowInsights } from './incompatible_antivirus'; + +export interface BuildWorkflowInsightParams { + defendInsights: DefendInsight[]; + request: KibanaRequest<unknown, unknown, DefendInsightsPostRequestBody>; + endpointMetadataService: EndpointMetadataService; +} + +export function buildWorkflowInsights( + params: BuildWorkflowInsightParams +): Promise<SecurityWorkflowInsight[]> { + if (params.request.body.insightType === DefendInsightType.Enum.incompatible_antivirus) { + return buildIncompatibleAntivirusWorkflowInsights(params); + } + + throw new InvalidDefendInsightTypeError(); +} diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/field_map_configurations.ts b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/field_map_configurations.ts index 32cc845ab00d2..98dce60b73c89 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/field_map_configurations.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/field_map_configurations.ts @@ -66,7 +66,7 @@ export const securityWorkflowInsightsFieldMap: FieldMap = { required: true, }, // endpoint, policy, etc - 'target.id': { + 'target.ids': { type: 'keyword', array: true, required: true, diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.test.ts index 119c1848f6a1a..c3fd5b36ee1e2 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.test.ts @@ -8,27 +8,33 @@ import type { ElasticsearchClient } from '@kbn/core/server'; import { DataStreamSpacesAdapter } from '@kbn/data-stream-adapter'; -import { DefendInsightType } from '@kbn/elastic-assistant-common'; import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; import { kibanaPackageJson } from '@kbn/repo-info'; +import type { HostMetadata } from '../../../../common/endpoint/types'; import type { SearchParams } from '../../../../common/endpoint/types/workflow_insights'; -import { buildEsQueryParams, createDatastream, createPipeline } from './helpers'; import { - DATA_STREAM_PREFIX, + ActionType, + Category, + SourceType, +} from '../../../../common/endpoint/types/workflow_insights'; +import type { EndpointMetadataService } from '../metadata'; +import { + buildEsQueryParams, + createDatastream, + createPipeline, + groupEndpointIdsByOS, +} from './helpers'; +import { COMPONENT_TEMPLATE_NAME, + DATA_STREAM_PREFIX, INDEX_TEMPLATE_NAME, INGEST_PIPELINE_NAME, TOTAL_FIELDS_LIMIT, } from './constants'; import { securityWorkflowInsightsFieldMap } from './field_map_configurations'; -import { - ActionType, - Category, - SourceType, - TargetType, -} from '../../../../common/endpoint/types/workflow_insights'; +import { createMockEndpointAppContext } from '../../mocks'; jest.mock('@kbn/data-stream-adapter', () => ({ DataStreamSpacesAdapter: jest.fn().mockImplementation(() => ({ @@ -89,62 +95,102 @@ describe('helpers', () => { }); describe('buildEsQueryParams', () => { - it('should build es query correct', () => { + it('should build query with valid keys', () => { const searchParams: SearchParams = { - size: 50, - from: 50, ids: ['id1', 'id2'], categories: [Category.Endpoint], - types: [DefendInsightType.Enum.incompatible_antivirus], + types: ['incompatible_antivirus'], sourceTypes: [SourceType.LlmConnector], - sourceIds: ['source-id1', 'source-id2'], - targetTypes: [TargetType.Endpoint], - targetIds: ['target-id1', 'target-id2'], - actionTypes: [ActionType.Refreshed, ActionType.Remediated], + sourceIds: ['source1'], + targetIds: ['target1'], + actionTypes: [ActionType.Refreshed], }; const result = buildEsQueryParams(searchParams); expect(result).toEqual([ + { terms: { _id: ['id1', 'id2'] } }, + { terms: { categories: ['endpoint'] } }, + { terms: { types: ['incompatible_antivirus'] } }, + { nested: { path: 'source', query: { terms: { 'source.type': ['llm-connector'] } } } }, + { nested: { path: 'source', query: { terms: { 'source.id': ['source1'] } } } }, + { nested: { path: 'target', query: { terms: { 'target.ids': ['target1'] } } } }, + { nested: { path: 'action', query: { terms: { 'action.type': ['refreshed'] } } } }, + ]); + }); + + it('should ignore invalid keys', () => { + const searchParams = { + invalidKey: 'invalidValue', + ids: ['id1'], + } as unknown as SearchParams; + const result = buildEsQueryParams(searchParams); + expect(result).toEqual([{ terms: { _id: ['id1'] } }]); + }); + + it('should handle empty searchParams', () => { + const searchParams: SearchParams = {}; + const result = buildEsQueryParams(searchParams); + expect(result).toEqual([]); + }); + + it('should handle nested query for actionTypes', () => { + const searchParams: SearchParams = { + actionTypes: [ActionType.Refreshed], + }; + const result = buildEsQueryParams(searchParams); + expect(result).toEqual([ + { nested: { path: 'action', query: { terms: { 'action.type': ['refreshed'] } } } }, + ]); + }); + + it('should handle nested query for targetIds', () => { + const searchParams: SearchParams = { + targetIds: ['target1'], + }; + const result = buildEsQueryParams(searchParams); + expect(result).toEqual([ + { nested: { path: 'target', query: { terms: { 'target.ids': ['target1'] } } } }, + ]); + }); + }); + + describe('groupEndpointIdsByOS', () => { + let endpointMetadataService: jest.Mocked<EndpointMetadataService>; + + beforeEach(() => { + const mockEndpointAppContextService = createMockEndpointAppContext().service; + mockEndpointAppContextService.getEndpointMetadataService = jest.fn().mockReturnValue({ + getMetadataForEndpoints: jest.fn(), + }); + endpointMetadataService = + mockEndpointAppContextService.getEndpointMetadataService() as jest.Mocked<EndpointMetadataService>; + }); + + it('should correctly group endpoint IDs by OS type', async () => { + const endpointIds = ['endpoint1', 'endpoint2', 'endpoint3']; + const metadata = [ { - terms: { - _id: ['id1', 'id2'], - }, - }, - { - terms: { - categories: ['endpoint'], - }, - }, - { - terms: { - types: ['incompatible_antivirus'], - }, - }, - { - terms: { - 'source.type': ['llm-connector'], - }, - }, - { - terms: { - 'source.id': ['source-id1', 'source-id2'], - }, - }, - { - terms: { - 'target.type': ['endpoint'], - }, + host: { os: { name: 'Windows' } }, + agent: { id: 'agent1' }, }, { - terms: { - 'target.id': ['target-id1', 'target-id2'], - }, + host: { os: { name: 'Linux' } }, + agent: { id: 'agent2' }, }, { - terms: { - 'action.type': ['refreshed', 'remediated'], - }, + host: { os: { name: 'MacOS' } }, + agent: { id: 'agent3' }, }, - ]); + ] as HostMetadata[]; + + endpointMetadataService.getMetadataForEndpoints.mockResolvedValue(metadata); + + const result = await groupEndpointIdsByOS(endpointIds, endpointMetadataService); + + expect(result).toEqual({ + windows: ['agent1'], + linux: ['agent2'], + macos: ['agent3'], + }); }); }); }); diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.ts b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.ts index f0057faed6aa6..67c852cc2720b 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/helpers.ts @@ -13,7 +13,9 @@ import type { ElasticsearchClient } from '@kbn/core/server'; import { DataStreamSpacesAdapter } from '@kbn/data-stream-adapter'; import type { SearchParams } from '../../../../common/endpoint/types/workflow_insights'; +import type { SupportedHostOsType } from '../../../../common/endpoint/constants'; +import type { EndpointMetadataService } from '../metadata'; import { COMPONENT_TEMPLATE_NAME, DATA_STREAM_PREFIX, @@ -76,14 +78,16 @@ const validKeys = new Set([ 'targetIds', 'actionTypes', ]); + const paramFieldMap = { ids: '_id', sourceTypes: 'source.type', sourceIds: 'source.id', targetTypes: 'target.type', - targetIds: 'target.id', + targetIds: 'target.ids', actionTypes: 'action.type', }; +const nestedKeys = new Set(['source', 'target', 'action']); export function buildEsQueryParams(searchParams: SearchParams): QueryDslQueryContainer[] { return Object.entries(searchParams).reduce((acc: object[], [k, v]) => { if (!validKeys.has(k)) { @@ -91,8 +95,38 @@ export function buildEsQueryParams(searchParams: SearchParams): QueryDslQueryCon } const paramKey = _get(paramFieldMap, k, k); - const next = { terms: { [paramKey]: v } }; + const topKey = paramKey.split('.')[0]; + if (nestedKeys.has(topKey)) { + const nestedQuery = { + nested: { + path: topKey, + query: { + terms: { [paramKey]: v }, + }, + }, + }; + return [...acc, nestedQuery]; + } + + const next = { terms: { [paramKey]: v } }; return [...acc, next]; }, []); } + +export async function groupEndpointIdsByOS( + endpointIds: string[], + endpointMetadataService: EndpointMetadataService +): Promise<Record<SupportedHostOsType, string[]>> { + const metadata = await endpointMetadataService.getMetadataForEndpoints(endpointIds); + return metadata.reduce<Record<string, string[]>>((acc, m) => { + const os = m.host.os.name.toLowerCase() as SupportedHostOsType; + if (!acc[os]) { + acc[os] = []; + } + + acc[os].push(m.agent.id); + + return acc; + }, {}); +} diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/index.test.ts b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/index.test.ts index 1b7ba20f6af88..c742daa90d258 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/index.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/index.test.ts @@ -9,7 +9,8 @@ import { merge } from 'lodash'; import moment from 'moment'; import { ReplaySubject } from 'rxjs'; -import type { ElasticsearchClient, Logger } from '@kbn/core/server'; +import type { ElasticsearchClient, KibanaRequest, Logger } from '@kbn/core/server'; +import type { DefendInsight, DefendInsightsPostRequestBody } from '@kbn/elastic-assistant-common'; import { DataStreamSpacesAdapter } from '@kbn/data-stream-adapter'; import { DefendInsightType } from '@kbn/elastic-assistant-common'; @@ -21,6 +22,7 @@ import type { SearchParams, SecurityWorkflowInsight, } from '../../../../common/endpoint/types/workflow_insights'; +import type { EndpointAppContextService } from '../../endpoint_app_context_services'; import { Category, @@ -28,9 +30,11 @@ import { TargetType, ActionType, } from '../../../../common/endpoint/types/workflow_insights'; +import { createMockEndpointAppContext } from '../../mocks'; import { createDatastream, createPipeline } from './helpers'; import { securityWorkflowInsightsService } from '.'; import { DATA_STREAM_NAME } from './constants'; +import { buildWorkflowInsights } from './builders'; jest.mock('./helpers', () => { const original = jest.requireActual('./helpers'); @@ -41,6 +45,14 @@ jest.mock('./helpers', () => { }; }); +jest.mock('./builders', () => { + const original = jest.requireActual('./builders'); + return { + ...original, + buildWorkflowInsights: jest.fn(), + }; +}); + function getDefaultInsight(overrides?: Partial<SecurityWorkflowInsight>): SecurityWorkflowInsight { const defaultInsight = { '@timestamp': moment(), @@ -95,10 +107,14 @@ function getDefaultInsight(overrides?: Partial<SecurityWorkflowInsight>): Securi describe('SecurityWorkflowInsightsService', () => { let logger: Logger; let esClient: ElasticsearchClient; + let mockEndpointAppContextService: jest.Mocked<EndpointAppContextService>; beforeEach(() => { logger = loggerMock.create(); esClient = elasticsearchServiceMock.createElasticsearchClient(); + + mockEndpointAppContextService = createMockEndpointAppContext() + .service as jest.Mocked<EndpointAppContextService>; }); afterEach(() => { @@ -118,6 +134,7 @@ describe('SecurityWorkflowInsightsService', () => { kibanaVersion: kibanaPackageJson.version, logger, isFeatureEnabled: true, + endpointContext: mockEndpointAppContextService, }); expect(createDatastreamMock).toHaveBeenCalledTimes(1); @@ -134,6 +151,7 @@ describe('SecurityWorkflowInsightsService', () => { kibanaVersion: kibanaPackageJson.version, logger, isFeatureEnabled: true, + endpointContext: mockEndpointAppContextService, }); expect(logger.warn).toHaveBeenCalledTimes(1); @@ -158,6 +176,7 @@ describe('SecurityWorkflowInsightsService', () => { kibanaVersion: kibanaPackageJson.version, logger, isFeatureEnabled: true, + endpointContext: mockEndpointAppContextService, }); expect(createDatastreamMock).toHaveBeenCalledTimes(1); expect(createDatastreamMock).toHaveBeenCalledWith(kibanaPackageJson.version); @@ -181,6 +200,7 @@ describe('SecurityWorkflowInsightsService', () => { kibanaVersion: kibanaPackageJson.version, logger, isFeatureEnabled: true, + endpointContext: mockEndpointAppContextService, }); const createPipelineMock = createPipeline as jest.Mock; @@ -195,6 +215,60 @@ describe('SecurityWorkflowInsightsService', () => { }); }); + describe('createFromDefendInsights', () => { + it('should create workflow insights from defend insights', async () => { + const isInitializedSpy = jest + .spyOn(securityWorkflowInsightsService, 'isInitialized', 'get') + .mockResolvedValueOnce([undefined, undefined]); + + const defendInsights: DefendInsight[] = [ + { + group: 'AVGAntivirus', + events: [ + { + id: 'lqw5opMB9Ke6SNgnxRSZ', + endpointId: 'f6e2f338-6fb7-4c85-9c23-d20e9f96a051', + value: '/Applications/AVGAntivirus.app/Contents/Backend/services/com.avg.activity', + }, + ], + }, + ]; + + const request = {} as KibanaRequest<unknown, unknown, DefendInsightsPostRequestBody>; + const workflowInsights: SecurityWorkflowInsight[] = [getDefaultInsight()]; + + const buildWorkflowInsightsMock = buildWorkflowInsights as jest.Mock; + buildWorkflowInsightsMock.mockResolvedValueOnce(workflowInsights); + + const esClientIndexResp = { + _index: DATA_STREAM_NAME, + _id: '1', + result: 'created' as const, + _shards: { + total: 1, + successful: 1, + failed: 0, + }, + _version: 1, + }; + jest.spyOn(esClient, 'index').mockResolvedValue(esClientIndexResp); + await securityWorkflowInsightsService.start({ esClient }); + const result = await securityWorkflowInsightsService.createFromDefendInsights( + defendInsights, + request + ); + + // twice since it calls securityWorkflowInsightsService.create internally + expect(isInitializedSpy).toHaveBeenCalledTimes(2); + expect(buildWorkflowInsightsMock).toHaveBeenCalledWith({ + defendInsights, + request, + endpointMetadataService: expect.any(Object), + }); + expect(result).toEqual(workflowInsights.map(() => esClientIndexResp)); + }); + }); + describe('create', () => { it('should index the doc correctly', async () => { const isInitializedSpy = jest @@ -289,28 +363,53 @@ describe('SecurityWorkflowInsightsService', () => { }, }, { - terms: { - 'source.type': ['llm-connector'], + nested: { + path: 'source', + query: { + terms: { + 'source.type': ['llm-connector'], + }, + }, }, }, { - terms: { - 'source.id': ['source-id1', 'source-id2'], + nested: { + path: 'source', + query: { + terms: { + 'source.id': ['source-id1', 'source-id2'], + }, + }, }, }, { - terms: { - 'target.type': ['endpoint'], + nested: { + path: 'target', + query: { + terms: { + 'target.type': ['endpoint'], + }, + }, }, }, { - terms: { - 'target.id': ['target-id1', 'target-id2'], + nested: { + path: 'target', + query: { + terms: { + 'target.ids': ['target-id1', 'target-id2'], + }, + }, }, }, { - terms: { - 'action.type': ['refreshed', 'remediated'], + nested: { + path: 'action', + query: { + terms: { + 'action.type': ['refreshed', 'remediated'], + }, + }, }, }, ], diff --git a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/index.ts b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/index.ts index e03b9340e9784..d1c765196db29 100644 --- a/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/index.ts +++ b/x-pack/plugins/security_solution/server/endpoint/services/workflow_insights/index.ts @@ -12,17 +12,20 @@ import type { UpdateResponse, WriteResponseBase, } from '@elastic/elasticsearch/lib/api/types'; -import type { ElasticsearchClient, Logger } from '@kbn/core/server'; +import type { ElasticsearchClient, KibanaRequest, Logger } from '@kbn/core/server'; import type { DataStreamSpacesAdapter } from '@kbn/data-stream-adapter'; +import type { DefendInsight, DefendInsightsPostRequestBody } from '@kbn/elastic-assistant-common'; import type { SearchParams, SecurityWorkflowInsight, } from '../../../../common/endpoint/types/workflow_insights'; +import type { EndpointAppContextService } from '../../endpoint_app_context_services'; import { SecurityWorkflowInsightsFailedInitialized } from './errors'; import { buildEsQueryParams, createDatastream, createPipeline } from './helpers'; import { DATA_STREAM_NAME } from './constants'; +import { buildWorkflowInsights } from './builders'; const DEFAULT_PAGE_SIZE = 10; @@ -30,6 +33,7 @@ interface SetupInterface { kibanaVersion: string; logger: Logger; isFeatureEnabled: boolean; + endpointContext: EndpointAppContextService; } interface StartInterface { @@ -42,6 +46,7 @@ class SecurityWorkflowInsightsService { private stop$ = new ReplaySubject<void>(1); private ds: DataStreamSpacesAdapter | undefined; private _esClient: ElasticsearchClient | undefined; + private _endpointContext: EndpointAppContextService | undefined; private _logger: Logger | undefined; private _isInitialized: Promise<[void, void]> = firstValueFrom( combineLatest<[void, void]>([this.setup$, this.start$]) @@ -52,13 +57,14 @@ class SecurityWorkflowInsightsService { return this._isInitialized; } - public setup({ kibanaVersion, logger, isFeatureEnabled }: SetupInterface) { + public setup({ kibanaVersion, logger, isFeatureEnabled, endpointContext }: SetupInterface) { this.isFeatureEnabled = isFeatureEnabled; if (!isFeatureEnabled) { return; } this._logger = logger; + this._endpointContext = endpointContext; try { this.ds = createDatastream(kibanaVersion); @@ -85,14 +91,18 @@ class SecurityWorkflowInsightsService { esClient, pluginStop$: this.stop$, }); - await esClient.indices.createDataStream({ name: DATA_STREAM_NAME }); - } catch (err) { - // ignore datastream already exists error - if (err?.body?.error?.type === 'resource_already_exists_exception') { - return; - } - this.logger.warn(new SecurityWorkflowInsightsFailedInitialized(err.message).message); + try { + await esClient.indices.createDataStream({ name: DATA_STREAM_NAME }); + } catch (err) { + if (err?.body?.error?.type === 'resource_already_exists_exception') { + this.logger.debug(`Datastream ${DATA_STREAM_NAME} already exists`); + } else { + throw new SecurityWorkflowInsightsFailedInitialized(err.message); + } + } + } catch (err) { + this.logger.warn(err.message); return; } @@ -108,6 +118,20 @@ class SecurityWorkflowInsightsService { this.stop$.complete(); } + public async createFromDefendInsights( + defendInsights: DefendInsight[], + request: KibanaRequest<unknown, unknown, DefendInsightsPostRequestBody> + ): Promise<WriteResponseBase[]> { + await this.isInitialized; + + const workflowInsights = await buildWorkflowInsights({ + defendInsights, + request, + endpointMetadataService: this.endpointContext.getEndpointMetadataService(), + }); + return Promise.all(workflowInsights.map((insight) => this.create(insight))); + } + public async create(insight: SecurityWorkflowInsight): Promise<WriteResponseBase> { await this.isInitialized; @@ -185,6 +209,14 @@ class SecurityWorkflowInsightsService { return this._logger; } + + private get endpointContext(): EndpointAppContextService { + if (!this._endpointContext) { + throw new SecurityWorkflowInsightsFailedInitialized('no endpoint context found'); + } + + return this._endpointContext; + } } export const securityWorkflowInsightsService = new SecurityWorkflowInsightsService(); diff --git a/x-pack/plugins/security_solution/server/integration_tests/configuration.test.ts b/x-pack/plugins/security_solution/server/integration_tests/configuration.test.ts new file mode 100644 index 0000000000000..8629b54c7524d --- /dev/null +++ b/x-pack/plugins/security_solution/server/integration_tests/configuration.test.ts @@ -0,0 +1,152 @@ +/* + * 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 Path from 'path'; +import axios from 'axios'; + +import { cloneDeep } from 'lodash'; + +import { telemetryConfiguration } from '../lib/telemetry/configuration'; +import { + TaskManagerPlugin, + type TaskManagerStartContract, +} from '@kbn/task-manager-plugin/server/plugin'; + +import { + setupTestServers, + removeFile, + mockAxiosPost, + DEFAULT_GET_ROUTES, + mockAxiosGet, + getRandomInt, +} from './lib/helpers'; + +import { + type TestElasticsearchUtils, + type TestKibanaUtils, +} from '@kbn/core-test-helpers-kbn-server'; +import { Plugin as SecuritySolutionPlugin } from '../plugin'; +import { getTelemetryTasks, runSoonConfigTask } from './lib/telemetry_helpers'; +import type { SecurityTelemetryTask } from '../lib/telemetry/task'; + +jest.mock('axios'); + +const logFilePath = Path.join(__dirname, 'config.logs.log'); +const taskManagerStartSpy = jest.spyOn(TaskManagerPlugin.prototype, 'start'); +const securitySolutionStartSpy = jest.spyOn(SecuritySolutionPlugin.prototype, 'start'); + +const mockedAxiosGet = jest.spyOn(axios, 'get'); +const mockedAxiosPost = jest.spyOn(axios, 'post'); + +const securitySolutionPlugin = jest.spyOn(SecuritySolutionPlugin.prototype, 'start'); + +describe('configuration', () => { + let esServer: TestElasticsearchUtils; + let kibanaServer: TestKibanaUtils; + let taskManagerPlugin: TaskManagerStartContract; + let tasks: SecurityTelemetryTask[]; + + beforeAll(async () => { + await removeFile(logFilePath); + + const servers = await setupTestServers(logFilePath); + + esServer = servers.esServer; + kibanaServer = servers.kibanaServer; + + expect(taskManagerStartSpy).toHaveBeenCalledTimes(1); + taskManagerPlugin = taskManagerStartSpy.mock.results[0].value; + + expect(securitySolutionStartSpy).toHaveBeenCalledTimes(1); + + tasks = getTelemetryTasks(securitySolutionStartSpy); + + expect(securitySolutionPlugin).toHaveBeenCalledTimes(1); + }); + + afterAll(async () => { + if (kibanaServer) { + await kibanaServer.stop(); + } + if (esServer) { + await esServer.stop(); + } + }); + + beforeEach(async () => { + jest.clearAllMocks(); + mockAxiosPost(mockedAxiosPost); + }); + + afterEach(async () => {}); + + describe('configuration task', () => { + it('should keep default values when no new config was provided', async () => { + const before = cloneDeep(telemetryConfiguration); + + await runSoonConfigTask(tasks, taskManagerPlugin); + + expect(telemetryConfiguration).toEqual(before); + }); + + it('should update values with new manifest', async () => { + const expected = { + telemetry_max_buffer_size: getRandomInt(1, 100), + max_security_list_telemetry_batch: getRandomInt(1, 100), + max_endpoint_telemetry_batch: getRandomInt(1, 100), + max_detection_rule_telemetry_batch: getRandomInt(1, 100), + max_detection_alerts_batch: getRandomInt(1, 100), + use_async_sender: true, + pagination_config: { + max_page_size_bytes: getRandomInt(1, 100), + num_docs_to_sample: getRandomInt(1, 100), + }, + sender_channels: { + default: { + buffer_time_span_millis: getRandomInt(1, 100), + inflight_events_threshold: getRandomInt(1, 100), + max_payload_size_bytes: getRandomInt(1, 100), + }, + }, + indices_metadata_config: { + indices_threshold: getRandomInt(1, 100), + datastreams_threshold: getRandomInt(1, 100), + max_prefixes: getRandomInt(1, 100), + max_group_size: getRandomInt(1, 100), + }, + }; + + mockAxiosGet(mockedAxiosGet, [ + ...DEFAULT_GET_ROUTES, + [/.*telemetry-buffer-and-batch-sizes-v1.*/, { status: 200, data: cloneDeep(expected) }], + ]); + + await runSoonConfigTask(tasks, taskManagerPlugin); + + expect(telemetryConfiguration.telemetry_max_buffer_size).toEqual( + expected.telemetry_max_buffer_size + ); + expect(telemetryConfiguration.max_security_list_telemetry_batch).toEqual( + expected.max_security_list_telemetry_batch + ); + expect(telemetryConfiguration.max_endpoint_telemetry_batch).toEqual( + expected.max_endpoint_telemetry_batch + ); + expect(telemetryConfiguration.max_detection_rule_telemetry_batch).toEqual( + expected.max_detection_rule_telemetry_batch + ); + expect(telemetryConfiguration.max_detection_alerts_batch).toEqual( + expected.max_detection_alerts_batch + ); + expect(telemetryConfiguration.use_async_sender).toEqual(expected.use_async_sender); + expect(telemetryConfiguration.sender_channels).toEqual(expected.sender_channels); + expect(telemetryConfiguration.pagination_config).toEqual(expected.pagination_config); + expect(telemetryConfiguration.indices_metadata_config).toEqual( + expected.indices_metadata_config + ); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/server/integration_tests/lib/helpers.ts b/x-pack/plugins/security_solution/server/integration_tests/lib/helpers.ts index ccc73435636e9..d6eb3b6d8ca71 100644 --- a/x-pack/plugins/security_solution/server/integration_tests/lib/helpers.ts +++ b/x-pack/plugins/security_solution/server/integration_tests/lib/helpers.ts @@ -10,6 +10,20 @@ import Util from 'util'; import type { ElasticsearchClient } from '@kbn/core/server'; import deepmerge from 'deepmerge'; import { createTestServers, createRootWithCorePlugins } from '@kbn/core-test-helpers-kbn-server'; + +export const DEFAULT_GET_ROUTES: Array<[RegExp, unknown]> = [ + [new RegExp('.*/ping$'), { status: 200 }], + [ + /.*kibana\/manifest\/artifacts.*/, + { + status: 200, + data: 'x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/kibana-artifacts.zip', + }, + ], +]; + +export const DEFAULT_POST_ROUTES: Array<[RegExp, unknown]> = [[/.*/, { status: 200 }]]; + const asyncUnlink = Util.promisify(Fs.unlink); /** @@ -127,3 +141,35 @@ export function updateTimestamps(data: object[]): object[] { return { ...d, '@timestamp': new Date(currentTimeMillis + (i + 1) * 100) }; }); } + +export function mockAxiosPost( + postSpy: jest.SpyInstance, + routes: Array<[RegExp, unknown]> = DEFAULT_POST_ROUTES +) { + postSpy.mockImplementation(async (url: string) => { + for (const [route, returnValue] of routes) { + if (route.test(url)) { + return returnValue; + } + } + return { status: 404 }; + }); +} + +export function mockAxiosGet( + getSpy: jest.SpyInstance, + routes: Array<[RegExp, unknown]> = DEFAULT_GET_ROUTES +) { + getSpy.mockImplementation(async (url: string) => { + for (const [route, returnValue] of routes) { + if (route.test(url)) { + return returnValue; + } + } + return { status: 404 }; + }); +} + +export function getRandomInt(min: number, max: number): number { + return Math.floor(Math.random() * (max - min + 1)) + min; +} diff --git a/x-pack/plugins/security_solution/server/integration_tests/lib/telemetry_helpers.ts b/x-pack/plugins/security_solution/server/integration_tests/lib/telemetry_helpers.ts index a36d5e1be38de..8dc9f1cbbca49 100644 --- a/x-pack/plugins/security_solution/server/integration_tests/lib/telemetry_helpers.ts +++ b/x-pack/plugins/security_solution/server/integration_tests/lib/telemetry_helpers.ts @@ -25,13 +25,13 @@ import { deleteExceptionListItem, } from '@kbn/lists-plugin/server/services/exception_lists'; import { LEGACY_AGENT_POLICY_SAVED_OBJECT_TYPE } from '@kbn/fleet-plugin/common/constants'; +import type { TaskManagerStartContract } from '@kbn/task-manager-plugin/server'; import { packagePolicyService } from '@kbn/fleet-plugin/server/services'; import { ENDPOINT_ARTIFACT_LISTS } from '@kbn/securitysolution-list-constants'; import { DETECTION_TYPE, NAMESPACE_TYPE } from '@kbn/lists-plugin/common/constants.mock'; -import { DEFAULT_DIAGNOSTIC_INDEX_PATTERN } from '../../../common/endpoint/constants'; -import { bulkInsert, updateTimestamps } from './helpers'; +import { bulkInsert, eventually, updateTimestamps } from './helpers'; import { TelemetryEventsSender } from '../../lib/telemetry/sender'; import type { SecuritySolutionPluginStart, @@ -41,6 +41,7 @@ import type { SecurityTelemetryTask } from '../../lib/telemetry/task'; import { Plugin as SecuritySolutionPlugin } from '../../plugin'; import { AsyncTelemetryEventsSender } from '../../lib/telemetry/async_sender'; import { type ITelemetryReceiver, TelemetryReceiver } from '../../lib/telemetry/receiver'; +import { DEFAULT_DIAGNOSTIC_INDEX_PATTERN } from '../../../common/endpoint/constants'; import mockEndpointAlert from '../__mocks__/endpoint-alert.json'; import mockedRule from '../__mocks__/rule.json'; import fleetAgents from '../__mocks__/fleet-agents.json'; @@ -417,3 +418,24 @@ export function getTelemetryTaskType(task: SecurityTelemetryTask): string { return ''; } } + +export async function runSoonConfigTask( + tasks: SecurityTelemetryTask[], + taskManagerPlugin: TaskManagerStartContract +) { + const configTaskType = 'security:telemetry-configuration'; + const configTask = getTelemetryTask(tasks, configTaskType); + const runAfter = new Date(); + await eventually(async () => { + await taskManagerPlugin.runSoon(configTask.getTaskId()); + }); + + // wait until the task finishes + await eventually(async () => { + const hasRun = await taskManagerPlugin + .get(configTask.getTaskId()) + .then((t) => new Date(t.state.lastExecutionTimestamp) > runAfter) + .catch(() => false); + expect(hasRun).toBe(true); + }); +} diff --git a/x-pack/plugins/security_solution/server/integration_tests/telemetry.test.ts b/x-pack/plugins/security_solution/server/integration_tests/telemetry.test.ts index 801926adbf948..409eb867e833b 100644 --- a/x-pack/plugins/security_solution/server/integration_tests/telemetry.test.ts +++ b/x-pack/plugins/security_solution/server/integration_tests/telemetry.test.ts @@ -20,7 +20,14 @@ import { TELEMETRY_CHANNEL_ENDPOINT_META, } from '../lib/telemetry/constants'; -import { eventually, setupTestServers, removeFile } from './lib/helpers'; +import { + eventually, + setupTestServers, + removeFile, + mockAxiosGet, + mockAxiosPost, + DEFAULT_GET_ROUTES, +} from './lib/helpers'; import { cleanupMockedAlerts, cleanupMockedExceptionLists, @@ -37,6 +44,7 @@ import { mockEndpointData, getTelemetryReceiver, mockPrebuiltRulesData, + runSoonConfigTask, } from './lib/telemetry_helpers'; import { @@ -99,6 +107,7 @@ describe('telemetry tasks', () => { }, }, }); + esServer = servers.esServer; kibanaServer = servers.kibanaServer; @@ -134,7 +143,17 @@ describe('telemetry tasks', () => { beforeEach(async () => { jest.clearAllMocks(); - mockAxiosGet(); + mockAxiosPost(mockedAxiosPost); + mockAxiosGet(mockedAxiosGet, [ + ...DEFAULT_GET_ROUTES, + [ + /.*telemetry-buffer-and-batch-sizes-v1.*/, + { + status: 200, + data: fakeBufferAndSizesConfigAsyncDisabled, + }, + ], + ]); deferred = []; }); @@ -208,21 +227,17 @@ describe('telemetry tasks', () => { }); it('should use new sender when configured', async () => { - const configTaskType = 'security:telemetry-configuration'; - const configTask = getTelemetryTask(tasks, configTaskType); + mockAxiosPost(mockedAxiosPost); - mockAxiosGet(fakeBufferAndSizesConfigAsyncEnabled); - await eventually(async () => { - await taskManagerPlugin.runSoon(configTask.getTaskId()); - }); + mockAxiosGet(mockedAxiosGet, [ + ...DEFAULT_GET_ROUTES, + [ + /.*telemetry-buffer-and-batch-sizes-v1.*/, + { status: 200, data: fakeBufferAndSizesConfigAsyncEnabled }, + ], + ]); - // wait until the task finishes - await eventually(async () => { - const found = (await taskManagerPlugin.fetch()).docs.find( - (t) => t.taskType === configTaskType - ); - expect(found).toBeFalsy(); - }); + await runSoonConfigTask(tasks, taskManagerPlugin); const [task, started] = await mockAndScheduleDetectionRulesTask(); @@ -238,13 +253,20 @@ describe('telemetry tasks', () => { it('should update sender queue config', async () => { const expectedConfig = fakeBufferAndSizesConfigWithQueues.sender_channels['task-metrics']; - const configTaskType = 'security:telemetry-configuration'; - const configTask = getTelemetryTask(tasks, configTaskType); - mockAxiosGet(fakeBufferAndSizesConfigWithQueues); - await eventually(async () => { - await taskManagerPlugin.runSoon(configTask.getTaskId()); - }); + mockAxiosPost(mockedAxiosPost); + mockAxiosGet(mockedAxiosGet, [ + ...DEFAULT_GET_ROUTES, + [ + /.*telemetry-buffer-and-batch-sizes-v1.*/, + { + status: 200, + data: fakeBufferAndSizesConfigWithQueues, + }, + ], + ]); + + await runSoonConfigTask(tasks, taskManagerPlugin); await eventually(async () => { /* eslint-disable dot-notation */ @@ -838,31 +860,6 @@ describe('telemetry tasks', () => { }); } - function mockAxiosGet(bufferConfig: unknown = fakeBufferAndSizesConfigAsyncDisabled) { - mockedAxiosPost.mockImplementation( - async (_url: string, _data?: unknown, _config?: AxiosRequestConfig<unknown> | undefined) => { - return { status: 200 }; - } - ); - - mockedAxiosGet.mockImplementation(async (url: string) => { - if (url.startsWith(ENDPOINT_STAGING) && url.endsWith('ping')) { - return { status: 200 }; - } else if (url.indexOf('kibana/manifest/artifacts') !== -1) { - return { - status: 200, - data: 'x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/kibana-artifacts.zip', - }; - } else if (url.indexOf('telemetry-buffer-and-batch-sizes-v1') !== -1) { - return { - status: 200, - data: bufferConfig, - }; - } - return { status: 404 }; - }); - } - async function getTaskMetricsRequests( task: SecurityTelemetryTask, olderThan: number diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/telemetry_detection_rules_preview_route.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/telemetry_detection_rules_preview_route.ts index 8013b2af9742b..4fd990e7f24fb 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/telemetry_detection_rules_preview_route.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/telemetry_detection_rules_preview_route.ts @@ -15,6 +15,7 @@ import { getDetectionRulesPreview } from './utils/get_detecton_rules_preview'; import { getSecurityListsPreview } from './utils/get_security_lists_preview'; import { getEndpointPreview } from './utils/get_endpoint_preview'; import { getDiagnosticsPreview } from './utils/get_diagnostics_preview'; +import { getIndicesMetadataPreview } from './utils/get_indices_metadata_preview'; export const telemetryDetectionRulesPreviewRoute = ( router: SecuritySolutionPluginRouter, @@ -62,12 +63,19 @@ export const telemetryDetectionRulesPreviewRoute = ( telemetrySender, }); + const indicesMetadata = await getIndicesMetadataPreview({ + logger, + telemetryReceiver, + telemetrySender, + }); + return response.ok({ body: { detection_rules: detectionRules, security_lists: securityLists, endpoints, diagnostics, + indices_metadata: indicesMetadata, }, }); } diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_indices_metadata_preview.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_indices_metadata_preview.ts new file mode 100644 index 0000000000000..7144034f91e71 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/telemetry/utils/get_indices_metadata_preview.ts @@ -0,0 +1,42 @@ +/* + * 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 { Logger } from '@kbn/core/server'; + +import { PreviewTelemetryEventsSender } from '../../../../telemetry/preview_sender'; +import type { ITelemetryReceiver } from '../../../../telemetry/receiver'; +import { PreviewTaskMetricsService } from '../../../../telemetry/preview_task_metrics'; +import type { ITelemetryEventsSender } from '../../../../telemetry/sender'; +import { createTelemetryIndicesMetadataTaskConfig } from '../../../../telemetry/tasks/indices.metadata'; + +export const getIndicesMetadataPreview = async ({ + logger, + telemetryReceiver, + telemetrySender, +}: { + logger: Logger; + telemetryReceiver: ITelemetryReceiver; + telemetrySender: ITelemetryEventsSender; +}): Promise<Array<{ eventType: string; eventData: object }>> => { + const taskExecutionPeriod = { + last: new Date(0).toISOString(), + current: new Date().toISOString(), + }; + + const taskSender = new PreviewTelemetryEventsSender(logger, telemetrySender); + const taskMetricsService = new PreviewTaskMetricsService(logger, taskSender); + const task = createTelemetryIndicesMetadataTaskConfig(); + await task.runTask( + 'indices-metadata-telemetry', + logger, + telemetryReceiver, + taskSender, + taskMetricsService, + taskExecutionPeriod + ); + return taskSender.getEbtEventsSent(); +}; diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/audit.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/audit.ts index 9ade355d54bf3..3fc2f6d48923c 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/audit.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/audit.ts @@ -17,4 +17,5 @@ export enum RiskEngineAuditActions { RISK_ENGINE_DISABLE_LEGACY_ENGINE = 'risk_engine_disable_legacy_engine', RISK_ENGINE_REMOVE_TASK = 'risk_engine_remove_task', RISK_ENGINE_SCHEDULE_NOW = 'risk_engine_schedule_now', + RISK_ENGINE_CONFIGURE_SAVED_OBJECT = 'risk_engine_configure_saved_object', } diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.ts index 241523f62e12c..09ef77d3df6ac 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/risk_engine_data_client.ts @@ -82,10 +82,13 @@ export class RiskEngineDataClient { } try { - await initSavedObjects({ + const soResult = await initSavedObjects({ savedObjectsClient: this.options.soClient, namespace, }); + this.options.logger.info( + `Risk engine savedObject configuration: ${JSON.stringify(soResult, null, 2)}` + ); result.riskEngineConfigurationCreated = true; } catch (e) { result.errors.push(e.message); @@ -319,4 +322,25 @@ export class RiskEngineDataClient { return RiskEngineStatusEnum.ENABLED; } + + public async updateRiskEngineSavedObject(attributes: {}) { + try { + const configuration = await this.getConfiguration(); + if (!configuration) { + await initSavedObjects({ + savedObjectsClient: this.options.soClient, + namespace: this.options.namespace, + }); + } + return await updateSavedObjectAttribute({ + savedObjectsClient: this.options.soClient, + attributes, + }); + } catch (e) { + this.options.logger.error( + `Error updating risk score engine saved object attributes: ${e.message}` + ); + throw e; + } + } } diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/configure_saved_object.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/configure_saved_object.test.ts new file mode 100644 index 0000000000000..c70af5c70c7af --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/configure_saved_object.test.ts @@ -0,0 +1,79 @@ +/* + * 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 { + serverMock, + requestContextMock, + requestMock, +} from '../../../detection_engine/routes/__mocks__'; +import { riskEnginePrivilegesMock } from './risk_engine_privileges.mock'; +import { riskEngineDataClientMock } from '../risk_engine_data_client.mock'; +import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; +import { RISK_ENGINE_CONFIGURE_SO_URL } from '../../../../../common/constants'; +import { riskEngineConfigureSavedObjectRoute } from './configure_saved_object'; + +describe('riskEnginConfigureSavedObjectRoute', () => { + let server: ReturnType<typeof serverMock.create>; + let context: ReturnType<typeof requestContextMock.convertContext>; + let mockTaskManagerStart: ReturnType<typeof taskManagerMock.createStart>; + let mockRiskEngineDataClient: ReturnType<typeof riskEngineDataClientMock.create>; + let getStartServicesMock: jest.Mock; + + beforeEach(() => { + jest.resetAllMocks(); + + server = serverMock.create(); + const { clients } = requestContextMock.createTools(); + mockRiskEngineDataClient = riskEngineDataClientMock.create(); + mockRiskEngineDataClient.updateRiskEngineSavedObject = jest.fn(); + context = requestContextMock.convertContext( + requestContextMock.create({ + ...clients, + riskEngineDataClient: mockRiskEngineDataClient, + }) + ); + mockTaskManagerStart = taskManagerMock.createStart(); + getStartServicesMock = jest.fn().mockResolvedValue([ + {}, + { + taskManager: mockTaskManagerStart, + security: riskEnginePrivilegesMock.createMockSecurityStartWithFullRiskEngineAccess(), + }, + ]); + riskEngineConfigureSavedObjectRoute(server.router, getStartServicesMock); + }); + + const buildRequest = (body: {}) => { + return requestMock.create({ + method: 'put', + path: RISK_ENGINE_CONFIGURE_SO_URL, + body, + }); + }; + + it('should call the router with the correct route and handler', async () => { + const request = buildRequest({}); + await server.inject(request, context); + expect(mockRiskEngineDataClient.updateRiskEngineSavedObject).toHaveBeenCalled(); + }); + + it('returns a 200 when the saved object is updated successfully', async () => { + const request = buildRequest({ + exclude_alert_statuses: ['open'], + range: { start: 'now-30d', end: 'now' }, + exclude_alert_tags: ['tag1'], + }); + const response = await server.inject(request, context); + expect(response.status).toEqual(200); + expect(response.body).toEqual({ risk_engine_saved_object_configured: true }); + expect(mockRiskEngineDataClient.updateRiskEngineSavedObject).toHaveBeenCalledWith({ + excludeAlertStatuses: ['open'], + range: { start: 'now-30d', end: 'now' }, + excludeAlertTags: ['tag1'], + }); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/configure_saved_object.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/configure_saved_object.ts new file mode 100644 index 0000000000000..5a1e847637522 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/configure_saved_object.ts @@ -0,0 +1,110 @@ +/* + * 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 { buildSiemResponse } from '@kbn/lists-plugin/server/routes/utils'; +import { transformError } from '@kbn/securitysolution-es-utils'; +import type { IKibanaResponse } from '@kbn/core-http-server'; +import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; +import type { ConfigureRiskEngineSavedObjectResponse } from '../../../../../common/api/entity_analytics'; +import { ConfigureRiskEngineSavedObjectRequestBody } from '../../../../../common/api/entity_analytics'; +import { + RISK_ENGINE_CONFIGURE_SO_URL, + APP_ID, + API_VERSIONS, +} from '../../../../../common/constants'; +import { TASK_MANAGER_UNAVAILABLE_ERROR } from './translations'; +import { withRiskEnginePrivilegeCheck } from '../risk_engine_privileges'; +import type { EntityAnalyticsRoutesDeps } from '../../types'; +import { RiskEngineAuditActions } from '../audit'; +import { AUDIT_CATEGORY, AUDIT_OUTCOME, AUDIT_TYPE } from '../../audit'; + +export const riskEngineConfigureSavedObjectRoute = ( + router: EntityAnalyticsRoutesDeps['router'], + getStartServices: EntityAnalyticsRoutesDeps['getStartServices'] +) => { + router.versioned + .put({ + access: 'public', + path: RISK_ENGINE_CONFIGURE_SO_URL, + security: { + authz: { + requiredPrivileges: ['securitySolution', `${APP_ID}-entity-analytics`], + }, + }, + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { + request: { body: buildRouteValidationWithZod(ConfigureRiskEngineSavedObjectRequestBody) }, + }, + }, + withRiskEnginePrivilegeCheck( + getStartServices, + async ( + context, + request, + response + ): Promise<IKibanaResponse<ConfigureRiskEngineSavedObjectResponse>> => { + const securitySolution = await context.securitySolution; + + securitySolution.getAuditLogger()?.log({ + message: 'User attempted to configure the saved object of the risk engine', + event: { + action: RiskEngineAuditActions.RISK_ENGINE_CONFIGURE_SAVED_OBJECT, + category: AUDIT_CATEGORY.DATABASE, + type: AUDIT_TYPE.CHANGE, + outcome: AUDIT_OUTCOME.UNKNOWN, + }, + }); + + const siemResponse = buildSiemResponse(response); + const [_, { taskManager }] = await getStartServices(); + const riskEngineClient = securitySolution.getRiskEngineDataClient(); + + if (!taskManager) { + securitySolution.getAuditLogger()?.log({ + message: + 'User attempted to configure the saved object of the risk engine, but the Kibana Task Manager was unavailable', + event: { + action: RiskEngineAuditActions.RISK_ENGINE_CONFIGURE_SAVED_OBJECT, + category: AUDIT_CATEGORY.DATABASE, + type: AUDIT_TYPE.CHANGE, + outcome: AUDIT_OUTCOME.FAILURE, + }, + error: { + message: + 'User attempted to configure the saved object of the risk engine, but the Kibana Task Manager was unavailable', + }, + }); + + return siemResponse.error({ + statusCode: 400, + body: TASK_MANAGER_UNAVAILABLE_ERROR, + }); + } + + try { + await riskEngineClient.updateRiskEngineSavedObject({ + excludeAlertStatuses: request.body.exclude_alert_statuses, + range: request.body.range, + excludeAlertTags: request.body.exclude_alert_tags, + }); + return response.ok({ body: { risk_engine_saved_object_configured: true } }); + } catch (e) { + const error = transformError(e); + + return siemResponse.error({ + statusCode: error.statusCode, + body: { message: error.message, full_error: JSON.stringify(e) }, + bypassErrorFormat: true, + }); + } + } + ) + ); +}; diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/register_risk_engine_routes.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/register_risk_engine_routes.ts index f4edb7d798188..a82ca38f7e1fd 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/register_risk_engine_routes.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/routes/register_risk_engine_routes.ts @@ -13,6 +13,7 @@ import { riskEngineSettingsRoute } from './settings'; import type { EntityAnalyticsRoutesDeps } from '../../types'; import { riskEngineScheduleNowRoute } from './schedule_now'; import { riskEngineCleanupRoute } from './delete'; +import { riskEngineConfigureSavedObjectRoute } from './configure_saved_object'; export const registerRiskEngineRoutes = ({ router, @@ -26,4 +27,5 @@ export const registerRiskEngineRoutes = ({ riskEngineSettingsRoute(router); riskEnginePrivilegesRoute(router, getStartServices); riskEngineCleanupRoute(router, getStartServices); + riskEngineConfigureSavedObjectRoute(router, getStartServices); }; diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/saved_object_configuration.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/saved_object_configuration.ts index 4282e0a793f47..a72835a92c1f4 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/saved_object_configuration.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_engine/utils/saved_object_configuration.ts @@ -42,7 +42,10 @@ export const updateSavedObjectAttribute = async ({ attributes, }: SavedObjectsClientArg & { attributes: { - enabled: boolean; + enabled?: boolean; + excludeAlertIds?: string[]; + range?: { start: string; end: string }; + excludeAlertTags?: string[]; }; }) => { const savedObjectConfiguration = await getConfigurationSavedObject({ diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts index ff1062393c935..3981781ca3fac 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts @@ -14,6 +14,7 @@ import type { ElasticsearchClient, Logger } from '@kbn/core/server'; import { ALERT_RISK_SCORE, ALERT_WORKFLOW_STATUS, + ALERT_WORKFLOW_TAGS, } from '@kbn/rule-registry-plugin/common/technical_rule_data_field_names'; import type { AssetCriticalityRecord, @@ -219,6 +220,7 @@ export const calculateRiskScores = async ({ weights, alertSampleSizePerShard = 10_000, excludeAlertStatuses = [], + excludeAlertTags = [], }: { assetCriticalityService: AssetCriticalityService; esClient: ElasticsearchClient; @@ -236,6 +238,11 @@ export const calculateRiskScores = async ({ if (!isEmpty(userFilter)) { filter.push(userFilter as QueryDslQueryContainer); } + if (excludeAlertTags.length > 0) { + filter.push({ + bool: { must_not: { terms: { [ALERT_WORKFLOW_TAGS]: excludeAlertTags } } }, + }); + } const identifierTypes: IdentifierType[] = identifierType ? [identifierType] : ['host', 'user']; const request = { size: 0, diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.test.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.test.ts index b5ff9c3487a07..6aa2339b999d6 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.test.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.test.ts @@ -250,5 +250,35 @@ describe('POST risk_engine/preview route', () => { expect(result.ok).toHaveBeenCalledWith(expect.objectContaining({ after_keys: {} })); }); }); + + describe('exclude_alert_statuses', () => { + it('respects the provided exclude_alert_statuses', async () => { + const request = buildRequest({ + exclude_alert_statuses: ['open'], + }); + + const response = await server.inject(request, requestContextMock.convertContext(context)); + + expect(response.status).toEqual(200); + expect(mockRiskScoreService.calculateScores).toHaveBeenCalledWith( + expect.objectContaining({ excludeAlertStatuses: ['open'] }) + ); + }); + }); + + describe('exclude_alert_tags', () => { + it('respects the provided exclude_alert_tags', async () => { + const request = buildRequest({ + exclude_alert_tags: ['tag1'], + }); + + const response = await server.inject(request, requestContextMock.convertContext(context)); + + expect(response.status).toEqual(200); + expect(mockRiskScoreService.calculateScores).toHaveBeenCalledWith( + expect.objectContaining({ excludeAlertTags: ['tag1'] }) + ); + }); + }); }); }); diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts index 5ab6791a300c3..eb4cd433b74c2 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/routes/preview.ts @@ -65,7 +65,8 @@ export const riskScorePreviewRoute = ( filter, range: userRange, weights, - excludeAlertStatuses, + exclude_alert_statuses: excludedStatuses, + exclude_alert_tags: excludedTags, } = request.body; const entityAnalyticsConfig = await riskScoreService.getConfigurationWithDefaults( @@ -84,6 +85,8 @@ export const riskScorePreviewRoute = ( const afterKeys = userAfterKeys ?? {}; const range = userRange ?? { start: 'now-15d', end: 'now' }; const pageSize = userPageSize ?? DEFAULT_RISK_SCORE_PAGE_SIZE; + const excludeAlertStatuses = excludedStatuses || ['closed']; + const excludeAlertTags = excludedTags || []; const result = await riskScoreService.calculateScores({ afterKeys, @@ -97,6 +100,7 @@ export const riskScorePreviewRoute = ( weights, alertSampleSizePerShard, excludeAlertStatuses, + excludeAlertTags, }); securityContext.getAuditLogger()?.log({ diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts index 4230b8fa05e2d..06ec89061e7e5 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.ts @@ -257,6 +257,7 @@ export const runTask = async ({ const configuration = await riskScoreService.getConfigurationWithDefaults( entityAnalyticsConfig ); + log(`Risk engine running with configuration : ${JSON.stringify(configuration, null, 2)}`); if (configuration == null) { log( 'Risk engine configuration not found; exiting task. Please reinitialize the risk engine and try again' diff --git a/x-pack/plugins/security_solution/server/lib/entity_analytics/types.ts b/x-pack/plugins/security_solution/server/lib/entity_analytics/types.ts index af683db517716..48ddc9b4a7698 100644 --- a/x-pack/plugins/security_solution/server/lib/entity_analytics/types.ts +++ b/x-pack/plugins/security_solution/server/lib/entity_analytics/types.ts @@ -86,6 +86,7 @@ export interface CalculateScoresParams { weights?: RiskScoreWeights; alertSampleSizePerShard?: number; excludeAlertStatuses?: string[]; + excludeAlertTags?: string[]; } export interface CalculateAndPersistScoresParams { diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/create.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/create.ts index 19669fa75cd3d..1e0a2fc5cb8c5 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/create.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/create.ts @@ -8,6 +8,7 @@ import type { IKibanaResponse, Logger } from '@kbn/core/server'; import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; import { v4 as uuidV4 } from 'uuid'; +import { ResourceIdentifier } from '../../../../../common/siem_migrations/rules/resources'; import { SIEM_RULE_MIGRATION_CREATE_PATH } from '../../../../../common/siem_migrations/constants'; import { CreateRuleMigrationRequestBody, @@ -43,6 +44,11 @@ export const registerSiemRuleMigrationsCreateRoute = ( const originalRules = req.body; const migrationId = req.params.migration_id ?? uuidV4(); try { + const [firstOriginalRule] = originalRules; + if (!firstOriginalRule) { + return res.noContent(); + } + const ctx = await context.resolve(['securitySolution']); const ruleMigrationsClient = ctx.securitySolution.getSiemRuleMigrationsClient(); @@ -53,6 +59,16 @@ export const registerSiemRuleMigrationsCreateRoute = ( await ruleMigrationsClient.data.rules.create(ruleMigrations); + // Create identified resource documents without content to keep track of them + const resourceIdentifier = new ResourceIdentifier(firstOriginalRule.vendor); + const resources = resourceIdentifier + .fromOriginalRules(originalRules) + .map((resource) => ({ ...resource, migration_id: migrationId })); + + if (resources.length > 0) { + await ruleMigrationsClient.data.resources.create(resources); + } + return res.ok({ body: { migration_id: migrationId } }); } catch (err) { logger.error(err); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/get.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/get.ts index 30037aeea88ae..2450bd02edadc 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/get.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/get.ts @@ -45,13 +45,14 @@ export const registerSiemRuleMigrationsGetRoute = ( sort_field: sortField, sort_direction: sortDirection, search_term: searchTerm, + ids, } = req.query; try { const ctx = await context.resolve(['securitySolution']); const ruleMigrationsClient = ctx.securitySolution.getSiemRuleMigrationsClient(); const options: RuleMigrationGetOptions = { - filters: { searchTerm }, + filters: { searchTerm, ids }, sort: { sortField, sortDirection }, size: perPage, from: page && perPage ? page * perPage : 0, diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/index.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/index.ts index a327d4b28a9bd..241e59ac02a27 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/index.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/index.ts @@ -20,6 +20,7 @@ import { registerSiemRuleMigrationsResourceGetRoute } from './resources/get'; import { registerSiemRuleMigrationsRetryRoute } from './retry'; import { registerSiemRuleMigrationsInstallRoute } from './install'; import { registerSiemRuleMigrationsInstallTranslatedRoute } from './install_translated'; +import { registerSiemRuleMigrationsResourceGetMissingRoute } from './resources/missing'; import { registerSiemRuleMigrationsPrebuiltRulesRoute } from './get_prebuilt_rules'; export const registerSiemRuleMigrationsRoutes = ( @@ -41,4 +42,5 @@ export const registerSiemRuleMigrationsRoutes = ( registerSiemRuleMigrationsResourceUpsertRoute(router, logger); registerSiemRuleMigrationsResourceGetRoute(router, logger); + registerSiemRuleMigrationsResourceGetMissingRoute(router, logger); }; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/get.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/get.ts index 7f2cfc8743f07..8d1e1d353e32d 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/get.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/get.ts @@ -39,16 +39,13 @@ export const registerSiemRuleMigrationsResourceGetRoute = ( withLicense( async (context, req, res): Promise<IKibanaResponse<GetRuleMigrationResourcesResponse>> => { const migrationId = req.params.migration_id; - const { type, names } = req.query; + const { type, names, from, size } = req.query; try { const ctx = await context.resolve(['securitySolution']); const ruleMigrationsClient = ctx.securitySolution.getSiemRuleMigrationsClient(); - const resources = await ruleMigrationsClient.data.resources.get( - migrationId, - type, - names - ); + const options = { filters: { type, names }, from, size }; + const resources = await ruleMigrationsClient.data.resources.get(migrationId, options); return res.ok({ body: resources }); } catch (err) { diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/missing.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/missing.ts new file mode 100644 index 0000000000000..0c9ad11f4cce6 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/missing.ts @@ -0,0 +1,67 @@ +/* + * 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 { IKibanaResponse, Logger } from '@kbn/core/server'; +import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; +import type { RuleMigrationResourceData } from '../../../../../../common/siem_migrations/model/rule_migration.gen'; +import { + GetRuleMigrationResourcesMissingRequestParams, + type GetRuleMigrationResourcesMissingResponse, +} from '../../../../../../common/siem_migrations/model/api/rules/rule_migration.gen'; +import { SIEM_RULE_MIGRATION_RESOURCES_MISSING_PATH } from '../../../../../../common/siem_migrations/constants'; +import type { SecuritySolutionPluginRouter } from '../../../../../types'; +import { withLicense } from '../util/with_license'; + +export const registerSiemRuleMigrationsResourceGetMissingRoute = ( + router: SecuritySolutionPluginRouter, + logger: Logger +) => { + router.versioned + .get({ + path: SIEM_RULE_MIGRATION_RESOURCES_MISSING_PATH, + access: 'internal', + security: { authz: { requiredPrivileges: ['securitySolution'] } }, + }) + .addVersion( + { + version: '1', + validate: { + request: { + params: buildRouteValidationWithZod(GetRuleMigrationResourcesMissingRequestParams), + }, + }, + }, + withLicense( + async ( + context, + req, + res + ): Promise<IKibanaResponse<GetRuleMigrationResourcesMissingResponse>> => { + const migrationId = req.params.migration_id; + try { + const ctx = await context.resolve(['securitySolution']); + const ruleMigrationsClient = ctx.securitySolution.getSiemRuleMigrationsClient(); + + const options = { filters: { hasContent: false } }; + const batches = ruleMigrationsClient.data.resources.searchBatches(migrationId, options); + + const missingResources: RuleMigrationResourceData[] = []; + let results = await batches.next(); + while (results.length) { + missingResources.push(...results.map(({ type, name }) => ({ type, name }))); + results = await batches.next(); + } + + return res.ok({ body: missingResources }); + } catch (err) { + logger.error(err); + return res.badRequest({ body: err.message }); + } + } + ) + ); +}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/upsert.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/upsert.ts index 645fa09b49dc1..9557c5cfd652f 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/upsert.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/resources/upsert.ts @@ -7,6 +7,7 @@ import type { IKibanaResponse, Logger } from '@kbn/core/server'; import { buildRouteValidationWithZod } from '@kbn/zod-helpers'; +import { ResourceIdentifier } from '../../../../../../common/siem_migrations/rules/resources'; import { UpsertRuleMigrationResourcesRequestBody, UpsertRuleMigrationResourcesRequestParams, @@ -49,13 +50,30 @@ export const registerSiemRuleMigrationsResourceUpsertRoute = ( const ctx = await context.resolve(['securitySolution']); const ruleMigrationsClient = ctx.securitySolution.getSiemRuleMigrationsClient(); + // Check if the migration exists + const { data } = await ruleMigrationsClient.data.rules.get(migrationId, { size: 1 }); + const [rule] = data; + if (!rule) { + return res.notFound({ body: { message: 'Migration not found' } }); + } + + // Upsert identified resource documents with content const ruleMigrations = resources.map<CreateRuleMigrationResourceInput>((resource) => ({ - migration_id: migrationId, ...resource, + migration_id: migrationId, })); - await ruleMigrationsClient.data.resources.upsert(ruleMigrations); + // Create identified resource documents without content to keep track of them + const resourceIdentifier = new ResourceIdentifier(rule.original_rule.vendor); + const resourcesToCreate = resourceIdentifier + .fromResources(resources) + .map<CreateRuleMigrationResourceInput>((resource) => ({ + ...resource, + migration_id: migrationId, + })); + await ruleMigrationsClient.data.resources.create(resourcesToCreate); + return res.ok({ body: { acknowledged: true } }); } catch (err) { logger.error(err); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/util/installation.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/util/installation.ts index 8716c83ce6ba3..de95d818dd18d 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/util/installation.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/api/util/installation.ts @@ -7,13 +7,13 @@ import type { Logger, SavedObjectsClientContract } from '@kbn/core/server'; import type { RulesClient } from '@kbn/alerting-plugin/server'; +import type { UpdateRuleMigrationData } from '../../../../../../common/siem_migrations/model/rule_migration.gen'; import { initPromisePool } from '../../../../../utils/promise_pool'; import type { SecuritySolutionApiRequestHandlerContext } from '../../../../..'; import { performTimelinesInstallation } from '../../../../detection_engine/prebuilt_rules/logic/perform_timelines_installation'; import { createPrebuiltRules } from '../../../../detection_engine/prebuilt_rules/logic/rule_objects/create_prebuilt_rules'; import type { IDetectionRulesClient } from '../../../../detection_engine/rule_management/logic/detection_rules_client/detection_rules_client_interface'; import type { RuleResponse } from '../../../../../../common/api/detection_engine'; -import type { UpdateRuleMigrationInput } from '../../data/rule_migrations_data_rules_client'; import type { StoredRuleMigration } from '../../types'; import { getPrebuiltRules, getUniquePrebuiltRuleIds } from './prebuilt_rules'; import { @@ -32,7 +32,7 @@ const installPrebuiltRules = async ( rulesClient: RulesClient, savedObjectsClient: SavedObjectsClientContract, detectionRulesClient: IDetectionRulesClient -): Promise<UpdateRuleMigrationInput[]> => { +): Promise<UpdateRuleMigrationData[]> => { // Get required prebuilt rules const prebuiltRulesIds = getUniquePrebuiltRuleIds(rulesToInstall); const prebuiltRules = await getPrebuiltRules(rulesClient, savedObjectsClient, prebuiltRulesIds); @@ -66,7 +66,7 @@ const installPrebuiltRules = async ( ]; // Create migration rules updates templates - const rulesToUpdate: UpdateRuleMigrationInput[] = []; + const rulesToUpdate: UpdateRuleMigrationData[] = []; installedRules.forEach((installedRule) => { const filteredRules = rulesToInstall.filter( (rule) => rule.elastic_rule?.prebuilt_rule_id === installedRule.rule_id @@ -89,8 +89,8 @@ export const installCustomRules = async ( enabled: boolean, detectionRulesClient: IDetectionRulesClient, logger: Logger -): Promise<UpdateRuleMigrationInput[]> => { - const rulesToUpdate: UpdateRuleMigrationInput[] = []; +): Promise<UpdateRuleMigrationData[]> => { + const rulesToUpdate: UpdateRuleMigrationData[] = []; const createCustomRulesOutcome = await initPromisePool({ concurrency: MAX_CUSTOM_RULES_TO_CREATE_IN_PARALLEL, items: rulesToInstall, @@ -211,10 +211,7 @@ export const installTranslated = async ({ logger ); - const rulesToUpdate: UpdateRuleMigrationInput[] = [ - ...updatedPrebuiltRules, - ...updatedCustomRules, - ]; + const rulesToUpdate: UpdateRuleMigrationData[] = [...updatedPrebuiltRules, ...updatedCustomRules]; if (rulesToUpdate.length) { await ruleMigrationsClient.data.rules.update(rulesToUpdate); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/mocks.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/mocks.ts index d8dc1bb168a72..77ed5e87084e9 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/mocks.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/__mocks__/mocks.ts @@ -11,6 +11,10 @@ import type { RuleMigrationsDataRulesClient } from '../rule_migrations_data_rule export const mockRuleMigrationsDataRulesClient = { create: jest.fn().mockResolvedValue(undefined), get: jest.fn().mockResolvedValue([]), + searchBatches: jest.fn().mockReturnValue({ + next: jest.fn().mockResolvedValue([]), + all: jest.fn().mockResolvedValue([]), + }), takePending: jest.fn().mockResolvedValue([]), saveCompleted: jest.fn().mockResolvedValue(undefined), saveError: jest.fn().mockResolvedValue(undefined), @@ -27,6 +31,10 @@ export const MockRuleMigrationsDataRulesClient = jest export const mockRuleMigrationsDataResourcesClient = { upsert: jest.fn().mockResolvedValue(undefined), get: jest.fn().mockResolvedValue(undefined), + searchBatches: jest.fn().mockReturnValue({ + next: jest.fn().mockResolvedValue([]), + all: jest.fn().mockResolvedValue([]), + }), }; export const MockRuleMigrationsDataResourcesClient = jest .fn() diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_base_client.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_base_client.ts index 14825326eee0e..31931fce0b1d9 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_base_client.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_base_client.ts @@ -5,12 +5,19 @@ * 2.0. */ -import type { SearchHit, SearchResponse } from '@elastic/elasticsearch/lib/api/types'; +import type { + SearchHit, + SearchRequest, + SearchResponse, + Duration, +} from '@elastic/elasticsearch/lib/api/types'; import type { ElasticsearchClient, Logger } from '@kbn/core/server'; import assert from 'assert'; import type { Stored } from '../types'; import type { IndexNameProvider } from './rule_migrations_data_client'; +const DEFAULT_PIT_KEEP_ALIVE: Duration = '30s' as const; + export class RuleMigrationsDataBaseClient { constructor( protected getIndexName: IndexNameProvider, @@ -42,4 +49,48 @@ export class RuleMigrationsDataBaseClient { ? response.hits.total : response.hits.total?.value ?? 0; } + + /** Returns functions to iterate over all the search results in batches */ + protected getSearchBatches<T extends object>( + search: SearchRequest, + keepAlive: Duration = DEFAULT_PIT_KEEP_ALIVE + ) { + const pitPromise = this.getIndexName().then((index) => + this.esClient + .openPointInTime({ index, keep_alive: keepAlive }) + .then(({ id }) => ({ id, keep_alive: keepAlive })) + ); + + let currentBatchSearch: Promise<SearchResponse<T>> | undefined; + /* Returns the next batch of search results */ + const next = async (): Promise<Array<Stored<T>>> => { + const pit = await pitPromise; + if (!currentBatchSearch) { + currentBatchSearch = this.esClient.search<T>({ ...search, pit }); + } else { + currentBatchSearch = currentBatchSearch.then((previousResponse) => { + if (previousResponse.hits.hits.length === 0) { + return previousResponse; + } + const lastSort = previousResponse.hits.hits[previousResponse.hits.hits.length - 1].sort; + return this.esClient.search<T>({ ...search, pit, search_after: lastSort }); + }); + } + const response = await currentBatchSearch; + return this.processResponseHits(response); + }; + + /** Returns all the search results */ + const all = async (): Promise<Array<Stored<T>>> => { + const allResults: Array<Stored<T>> = []; + let results = await next(); + while (results.length) { + allResults.push(...results); + results = await next(); + } + return allResults; + }; + + return { next, all }; + } } diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_resources_client.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_resources_client.ts index 888a41aca944c..97e51e9bafdb0 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_resources_client.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_resources_client.ts @@ -6,7 +6,7 @@ */ import { sha256 } from 'js-sha256'; -import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; +import type { QueryDslQueryContainer, Duration } from '@elastic/elasticsearch/lib/api/types'; import type { RuleMigrationResource, RuleMigrationResourceType, @@ -14,12 +14,30 @@ import type { import type { StoredRuleMigrationResource } from '../types'; import { RuleMigrationsDataBaseClient } from './rule_migrations_data_base_client'; -export type CreateRuleMigrationResourceInput = Omit<RuleMigrationResource, 'id'>; +export type CreateRuleMigrationResourceInput = Pick< + RuleMigrationResource, + 'migration_id' | 'type' | 'name' | 'metadata' +> & { + content?: string; +}; +export interface RuleMigrationResourceFilters { + type?: RuleMigrationResourceType; + names?: string[]; + hasContent?: boolean; +} +export interface RuleMigrationResourceGetOptions { + filters?: RuleMigrationResourceFilters; + size?: number; + from?: number; +} /* BULK_MAX_SIZE defines the number to break down the bulk operations by. * The 500 number was chosen as a reasonable number to avoid large payloads. It can be adjusted if needed. */ const BULK_MAX_SIZE = 500 as const; +/* DEFAULT_SEARCH_BATCH_SIZE defines the default number of documents to retrieve per search operation + * when retrieving search results in batches. */ +const DEFAULT_SEARCH_BATCH_SIZE = 500 as const; export class RuleMigrationsDataResourcesClient extends RuleMigrationsDataBaseClient { public async upsert(resources: CreateRuleMigrationResourceInput[]): Promise<void> { @@ -52,24 +70,43 @@ export class RuleMigrationsDataResourcesClient extends RuleMigrationsDataBaseCli } } + /** Creates the resources in the index only if they do not exist */ + public async create(resources: CreateRuleMigrationResourceInput[]): Promise<void> { + const index = await this.getIndexName(); + + let resourcesSlice: CreateRuleMigrationResourceInput[]; + const createdAt = new Date().toISOString(); + while ((resourcesSlice = resources.splice(0, BULK_MAX_SIZE)).length > 0) { + await this.esClient + .bulk({ + refresh: 'wait_for', + operations: resourcesSlice.flatMap((resource) => [ + { create: { _id: this.createId(resource), _index: index } }, + { + ...resource, + '@timestamp': createdAt, + updated_by: this.username, + updated_at: createdAt, + }, + ]), + }) + .catch((error) => { + this.logger.error(`Error upsert resources: ${error.message}`); + throw error; + }); + } + } + public async get( migrationId: string, - type?: RuleMigrationResourceType, - names?: string[] + options: RuleMigrationResourceGetOptions = {} ): Promise<StoredRuleMigrationResource[]> { + const { filters, size, from } = options; const index = await this.getIndexName(); - - const filter: QueryDslQueryContainer[] = [{ term: { migration_id: migrationId } }]; - if (type) { - filter.push({ term: { type } }); - } - if (names) { - filter.push({ terms: { name: names } }); - } - const query = { bool: { filter } }; + const query = this.getFilterQuery(migrationId, filters); return this.esClient - .search<RuleMigrationResource>({ index, query }) + .search<RuleMigrationResource>({ index, query, size, from }) .then(this.processResponseHits.bind(this)) .catch((error) => { this.logger.error(`Error searching resources: ${error.message}`); @@ -77,8 +114,46 @@ export class RuleMigrationsDataResourcesClient extends RuleMigrationsDataBaseCli }); } + /** Returns batching functions to traverse all the migration resources search results */ + searchBatches<T extends RuleMigrationResource = RuleMigrationResource>( + migrationId: string, + options: { scroll?: Duration; size?: number; filters?: RuleMigrationResourceFilters } = {} + ) { + const { size = DEFAULT_SEARCH_BATCH_SIZE, filters = {}, scroll } = options; + const query = this.getFilterQuery(migrationId, filters); + const search = { query, sort: '_doc', scroll, size }; // sort by _doc to ensure consistent order + try { + return this.getSearchBatches<T>(search); + } catch (error) { + this.logger.error(`Error scrolling rule migration resources: ${error.message}`); + throw error; + } + } + private createId(resource: CreateRuleMigrationResourceInput): string { const key = `${resource.migration_id}-${resource.type}-${resource.name}`; return sha256.create().update(key).hex(); } + + private getFilterQuery( + migrationId: string, + filters: RuleMigrationResourceFilters = {} + ): QueryDslQueryContainer { + const filter: QueryDslQueryContainer[] = [{ term: { migration_id: migrationId } }]; + if (filters.type) { + filter.push({ term: { type: filters.type } }); + } + if (filters.names) { + filter.push({ terms: { name: filters.names } }); + } + if (filters.hasContent != null) { + const existContent = { exists: { field: 'content' } }; + if (filters.hasContent) { + filter.push(existContent); + } else { + filter.push({ bool: { must_not: existContent } }); + } + } + return { bool: { filter } }; + } } diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_rules_client.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_rules_client.ts index 1eeb3ced0572a..b483b3bdd4fbb 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_rules_client.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_data_rules_client.ts @@ -13,27 +13,25 @@ import type { AggregationsStringTermsAggregate, AggregationsStringTermsBucket, QueryDslQueryContainer, + Duration, } from '@elastic/elasticsearch/lib/api/types'; import type { StoredRuleMigration } from '../types'; import { SiemMigrationStatus } from '../../../../../common/siem_migrations/constants'; -import type { - ElasticRule, - RuleMigration, - RuleMigrationTaskStats, - RuleMigrationTranslationStats, +import { + type RuleMigration, + type RuleMigrationTaskStats, + type RuleMigrationTranslationStats, + type UpdateRuleMigrationData, } from '../../../../../common/siem_migrations/model/rule_migration.gen'; import { RuleMigrationsDataBaseClient } from './rule_migrations_data_base_client'; import { getSortingOptions, type RuleMigrationSort } from './sort'; import { conditions as searchConditions } from './search'; +import { convertEsqlQueryToTranslationResult } from './utils'; export type CreateRuleMigrationInput = Omit< RuleMigration, '@timestamp' | 'id' | 'status' | 'created_by' >; -export type UpdateRuleMigrationInput = { elastic_rule?: Partial<ElasticRule> } & Pick< - RuleMigration, - 'id' | 'translation_result' | 'comments' ->; export type RuleMigrationDataStats = Omit<RuleMigrationTaskStats, 'status'>; export type RuleMigrationAllDataStats = RuleMigrationDataStats[]; @@ -52,9 +50,11 @@ export interface RuleMigrationGetOptions { } /* BULK_MAX_SIZE defines the number to break down the bulk operations by. - * The 500 number was chosen as a reasonable number to avoid large payloads. It can be adjusted if needed. - */ + * The 500 number was chosen as a reasonable number to avoid large payloads. It can be adjusted if needed. */ const BULK_MAX_SIZE = 500 as const; +/* DEFAULT_SEARCH_BATCH_SIZE defines the default number of documents to retrieve per search operation + * when retrieving search results in batches. */ +const DEFAULT_SEARCH_BATCH_SIZE = 500 as const; export class RuleMigrationsDataRulesClient extends RuleMigrationsDataBaseClient { /** Indexes an array of rule migrations to be processed */ @@ -87,22 +87,30 @@ export class RuleMigrationsDataRulesClient extends RuleMigrationsDataBaseClient } /** Updates an array of rule migrations to be processed */ - async update(ruleMigrations: UpdateRuleMigrationInput[]): Promise<void> { + async update(ruleMigrations: UpdateRuleMigrationData[]): Promise<void> { const index = await this.getIndexName(); - let ruleMigrationsSlice: UpdateRuleMigrationInput[]; + let ruleMigrationsSlice: UpdateRuleMigrationData[]; const updatedAt = new Date().toISOString(); while ((ruleMigrationsSlice = ruleMigrations.splice(0, BULK_MAX_SIZE)).length) { await this.esClient .bulk({ refresh: 'wait_for', operations: ruleMigrationsSlice.flatMap((ruleMigration) => { - const { id, ...rest } = ruleMigration; + const { + id, + translation_result: translationResult, + elastic_rule: elasticRule, + ...rest + } = ruleMigration; return [ { update: { _index: index, _id: id } }, { doc: { ...rest, + elastic_rule: elasticRule, + translation_result: + translationResult ?? convertEsqlQueryToTranslationResult(elasticRule?.query), updated_by: this.username, updated_at: updatedAt, }, @@ -123,7 +131,7 @@ export class RuleMigrationsDataRulesClient extends RuleMigrationsDataBaseClient { filters = {}, sort = {}, from, size }: RuleMigrationGetOptions = {} ): Promise<{ total: number; data: StoredRuleMigration[] }> { const index = await this.getIndexName(); - const query = this.getFilterQuery(migrationId, { ...filters }); + const query = this.getFilterQuery(migrationId, filters); const result = await this.esClient .search<RuleMigration>({ @@ -143,6 +151,22 @@ export class RuleMigrationsDataRulesClient extends RuleMigrationsDataBaseClient }; } + /** Returns batching functions to traverse all the migration rules search results */ + searchBatches( + migrationId: string, + options: { scroll?: Duration; size?: number; filters?: RuleMigrationFilters } = {} + ) { + const { size = DEFAULT_SEARCH_BATCH_SIZE, filters = {}, scroll } = options; + const query = this.getFilterQuery(migrationId, filters); + const search = { query, sort: '_doc', scroll, size }; // sort by _doc to ensure consistent order + try { + return this.getSearchBatches<RuleMigration>(search); + } catch (error) { + this.logger.error(`Error scrolling rule migrations: ${error.message}`); + throw error; + } + } + /** * Retrieves `pending` rule migrations with the provided id and updates their status to `processing`. * This operation is not atomic at migration level: diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_field_maps.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_field_maps.ts index 952663c36123c..c03b7ef52e784 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_field_maps.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/rule_migrations_field_maps.ts @@ -27,7 +27,7 @@ export const ruleMigrationsFieldMap: FieldMap<SchemaFieldMapKeys<Omit<RuleMigrat 'original_rule.annotations.mitre_attack': { type: 'keyword', array: true, required: false }, elastic_rule: { type: 'nested', required: false }, 'elastic_rule.title': { type: 'text', required: true, fields: { keyword: { type: 'keyword' } } }, - 'elastic_rule.integration_ids': { type: 'keyword', array: true, required: false }, + 'elastic_rule.integration_id': { type: 'keyword', required: false }, 'elastic_rule.query': { type: 'text', required: true }, 'elastic_rule.query_language': { type: 'keyword', required: true }, 'elastic_rule.description': { type: 'text', required: false }, diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/utils.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/utils.ts new file mode 100644 index 0000000000000..ca547da00e8c9 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/data/utils.ts @@ -0,0 +1,42 @@ +/* + * 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 { parseEsqlQuery } from '@kbn/securitysolution-utils'; +import { + RuleMigrationTranslationResultEnum, + type RuleMigrationTranslationResult, +} from '../../../../../common/siem_migrations/model/rule_migration.gen'; + +export const isValidEsqlQuery = (esqlQuery: string) => { + const { isEsqlQueryAggregating, hasMetadataOperator, errors } = parseEsqlQuery(esqlQuery); + + // Check if there are any syntax errors + if (errors.length) { + return false; + } + + // non-aggregating query which does not have metadata, is not a valid one + if (!isEsqlQueryAggregating && !hasMetadataOperator) { + return false; + } + + return true; +}; + +export const convertEsqlQueryToTranslationResult = ( + esqlQuery?: string +): RuleMigrationTranslationResult | undefined => { + if (esqlQuery === undefined) { + return undefined; + } + if (esqlQuery === '') { + return RuleMigrationTranslationResultEnum.untranslatable; + } + return isValidEsqlQuery(esqlQuery) + ? RuleMigrationTranslationResultEnum.full + : RuleMigrationTranslationResultEnum.partial; +}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/graph.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/graph.ts index 20b7cc6f1361d..942adcfcc89ec 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/graph.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/graph.ts @@ -6,6 +6,7 @@ */ import { END, START, StateGraph } from '@langchain/langgraph'; +import { SiemMigrationRuleTranslationResult } from '../../../../../../common/siem_migrations/constants'; import { getCreateSemanticQueryNode } from './nodes/create_semantic_query'; import { getMatchPrebuiltRuleNode } from './nodes/match_prebuilt_rule'; import { getProcessQueryNode } from './nodes/process_query'; @@ -23,9 +24,11 @@ export function getRuleMigrationAgent({ }: MigrateRuleGraphParams) { const matchPrebuiltRuleNode = getMatchPrebuiltRuleNode({ model, + logger, ruleMigrationsRetriever, }); const translationSubGraph = getTranslateRuleGraph({ + model, inferenceClient, ruleMigrationsRetriever, connectorId, @@ -41,13 +44,10 @@ export function getRuleMigrationAgent({ .addNode('matchPrebuiltRule', matchPrebuiltRuleNode) .addNode('translationSubGraph', translationSubGraph) // Edges - .addEdge(START, 'processQuery') - .addEdge('processQuery', 'createSemanticQuery') + .addEdge(START, 'createSemanticQuery') .addEdge('createSemanticQuery', 'matchPrebuiltRule') - .addConditionalEdges('matchPrebuiltRule', matchedPrebuiltRuleConditional, [ - 'translationSubGraph', - END, - ]) + .addConditionalEdges('matchPrebuiltRule', matchedPrebuiltRuleConditional, ['processQuery', END]) + .addEdge('processQuery', 'translationSubGraph') .addEdge('translationSubGraph', END); const graph = siemMigrationAgentGraph.compile(); @@ -55,9 +55,15 @@ export function getRuleMigrationAgent({ return graph; } +/* + * If the original splunk rule has no prebuilt rule match, we will start processing the query, unless it is related to input/outputlookups. + */ const matchedPrebuiltRuleConditional = (state: MigrateRuleState) => { if (state.elastic_rule?.prebuilt_rule_id) { return END; } - return 'translationSubGraph'; + if (state.translation_result === SiemMigrationRuleTranslationResult.UNTRANSLATABLE) { + return END; + } + return 'processQuery'; }; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/prompts.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/prompts.ts index 54be39eb193f7..6f1e39f938692 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/prompts.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/create_semantic_query/prompts.ts @@ -29,6 +29,7 @@ Go through the relevant title, description and data sources from the above query - Include keywords that are relevant to the use case. - Add related keywords you detected from the above query, like one or more vendor, product, cloud provider, OS platform etc. - Always reply with a JSON object with the key "semantic_query" and the value as the semantic search query inside three backticks as shown in the below example. +- If the related query focuses on Endpoint datamodel, make sure that "endpoint", "security" keywords are included. </guidelines> <example_response> diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/match_prebuilt_rule.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/match_prebuilt_rule.ts index ea403c5c4ffa7..e4b2162249cae 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/match_prebuilt_rule.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/match_prebuilt_rule.ts @@ -5,6 +5,7 @@ * 2.0. */ +import type { Logger } from '@kbn/core/server'; import { JsonOutputParser } from '@langchain/core/output_parsers'; import { SiemMigrationRuleTranslationResult } from '../../../../../../../../common/siem_migrations/constants'; import type { RuleMigrationsRetriever } from '../../../retrievers'; @@ -14,6 +15,7 @@ import { MATCH_PREBUILT_RULE_PROMPT } from './prompts'; interface GetMatchPrebuiltRuleNodeParams { model: ChatModel; + logger: Logger; ruleMigrationsRetriever: RuleMigrationsRetriever; } @@ -21,9 +23,12 @@ interface GetMatchedRuleResponse { match: string; } -export const getMatchPrebuiltRuleNode = - ({ model, ruleMigrationsRetriever }: GetMatchPrebuiltRuleNodeParams): GraphNode => - async (state) => { +export const getMatchPrebuiltRuleNode = ({ + model, + ruleMigrationsRetriever, + logger, +}: GetMatchPrebuiltRuleNodeParams): GraphNode => { + return async (state) => { const query = state.semantic_query; const techniqueIds = state.original_rule.annotations?.mitre_attack || []; const prebuiltRules = await ruleMigrationsRetriever.prebuiltRules.getRules( @@ -32,7 +37,7 @@ export const getMatchPrebuiltRuleNode = ); const outputParser = new JsonOutputParser(); - const matchPrebuiltRule = MATCH_PREBUILT_RULE_PROMPT.pipe(model).pipe(outputParser); + const mostRelevantRule = MATCH_PREBUILT_RULE_PROMPT.pipe(model).pipe(outputParser); const elasticSecurityRules = prebuiltRules.map((rule) => { return { @@ -41,9 +46,17 @@ export const getMatchPrebuiltRuleNode = }; }); - const response = (await matchPrebuiltRule.invoke({ + const splunkRule = { + title: state.original_rule.title, + description: state.original_rule.description, + }; + + /* + * Takes the most relevant rule from the array of rule(s) returned by the semantic query, returns either the most relevant or none. + */ + const response = (await mostRelevantRule.invoke({ rules: JSON.stringify(elasticSecurityRules, null, 2), - ruleTitle: state.original_rule.title, + splunk_rule: JSON.stringify(splunkRule, null, 2), })) as GetMatchedRuleResponse; if (response.match) { const matchedRule = prebuiltRules.find((r) => r.name === response.match); @@ -59,5 +72,16 @@ export const getMatchPrebuiltRuleNode = }; } } + const lookupTypes = ['inputlookup', 'outputlookup']; + if ( + state.original_rule?.query && + lookupTypes.some((type) => state.original_rule.query.includes(type)) + ) { + logger.debug( + `Rule: ${state.original_rule?.title} did not match any prebuilt rule, but contains inputlookup, dropping` + ); + return { translation_result: SiemMigrationRuleTranslationResult.UNTRANSLATABLE }; + } return {}; }; +}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/prompts.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/prompts.ts index 60fea54250bb3..12fb7ec70febf 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/prompts.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/nodes/match_prebuilt_rule/prompts.ts @@ -23,21 +23,22 @@ Here are some context for you to reference for your task, read it carefully as y [ 'human', `See the below description of the relevant splunk rule and try to match it with any of the elastic detection rules with similar names. -<splunk_rule_name> -{ruleTitle} -</splunk_rule_name> +<splunk_rule> +{splunk_rule} +</splunk_rule> <guidelines> - Always reply with a JSON object with the key "match" and the value being the most relevant matched elastic detection rule name. Do not reply with anything else. - Only reply with exact matches, if you are unsure or do not find a very confident match, always reply with an empty string value in the match key, do not guess or reply with anything else. -- If there is one Elastic rule in the list that covers the same threat, set the name of the matching rule as a value of the match key. Do not reply with anything else. -- If there are multiple rules in the list that cover the same threat, answer with the most specific of them, for example: "Linux User Account Creation" is more specific than "User Account Creation". +- If there is one Elastic rule in the list that covers the same usecase, set the name of the matching rule as a value of the match key. Do not reply with anything else. +- If there are multiple rules in the list that cover the same usecase, answer with the most specific of them, for example: "Linux User Account Creation" is more specific than "User Account Creation". </guidelines> <example_response> -U: <splunk_rule_name> -Linux Auditd Add User Account Type -</splunk_rule_name> +U: <splunk_rule> +Title: Linux Auditd Add User Account Type +Description: The following analytic detects the suspicious add user account type. +</splunk_rule> A: Please find the match JSON object below: \`\`\`json {{"match": "Linux User Account Creation"}} diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/state.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/state.ts index edd33e2ec69b6..a9047c9dc5439 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/state.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/state.ts @@ -13,7 +13,6 @@ import type { OriginalRule, RuleMigration, } from '../../../../../../common/siem_migrations/model/rule_migration.gen'; -import type { Integration } from '../../types'; export const migrateRuleState = Annotation.Root({ messages: Annotation<BaseMessage[]>({ @@ -32,10 +31,6 @@ export const migrateRuleState = Annotation.Root({ reducer: (current, value) => value ?? current, default: () => '', }), - integrations: Annotation<Integration[]>({ - reducer: (current, value) => value ?? current, - default: () => [], - }), translation_result: Annotation<SiemMigrationRuleTranslationResult>(), comments: Annotation<RuleMigration['comments']>({ reducer: (current, value) => (value ? (current ?? []).concat(value) : current), diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/graph.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/graph.ts index 267a5bb0dd520..463de671552c1 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/graph.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/graph.ts @@ -8,6 +8,8 @@ import { END, START, StateGraph } from '@langchain/langgraph'; import { isEmpty } from 'lodash/fp'; import { SiemMigrationRuleTranslationResult } from '../../../../../../../../common/siem_migrations/constants'; +import { getEcsMappingNode } from './nodes/ecs_mapping'; +import { getFilterIndexPatternsNode } from './nodes/filter_index_patterns'; import { getFixQueryErrorsNode } from './nodes/fix_query_errors'; import { getRetrieveIntegrationsNode } from './nodes/retrieve_integrations'; import { getTranslateRuleNode } from './nodes/translate_rule'; @@ -19,6 +21,7 @@ import type { TranslateRuleGraphParams, TranslateRuleState } from './types'; const MAX_VALIDATION_ITERATIONS = 3; export function getTranslateRuleGraph({ + model, inferenceClient, connectorId, ruleMigrationsRetriever, @@ -31,7 +34,9 @@ export function getTranslateRuleGraph({ }); const validationNode = getValidationNode({ logger }); const fixQueryErrorsNode = getFixQueryErrorsNode({ inferenceClient, connectorId, logger }); - const retrieveIntegrationsNode = getRetrieveIntegrationsNode({ ruleMigrationsRetriever }); + const retrieveIntegrationsNode = getRetrieveIntegrationsNode({ model, ruleMigrationsRetriever }); + const ecsMappingNode = getEcsMappingNode({ inferenceClient, connectorId, logger }); + const filterIndexPatternsNode = getFilterIndexPatternsNode({ logger }); const translateRuleGraph = new StateGraph(translateRuleState) // Nodes @@ -39,12 +44,20 @@ export function getTranslateRuleGraph({ .addNode('validation', validationNode) .addNode('fixQueryErrors', fixQueryErrorsNode) .addNode('retrieveIntegrations', retrieveIntegrationsNode) + .addNode('ecsMapping', ecsMappingNode) + .addNode('filterIndexPatterns', filterIndexPatternsNode) // Edges .addEdge(START, 'retrieveIntegrations') .addEdge('retrieveIntegrations', 'translateRule') .addEdge('translateRule', 'validation') .addEdge('fixQueryErrors', 'validation') - .addConditionalEdges('validation', validationRouter, ['fixQueryErrors', END]); + .addEdge('ecsMapping', 'validation') + .addConditionalEdges('validation', validationRouter, [ + 'fixQueryErrors', + 'ecsMapping', + 'filterIndexPatterns', + ]) + .addEdge('filterIndexPatterns', END); const graph = translateRuleGraph.compile(); graph.name = 'Translate Rule Graph'; @@ -59,6 +72,9 @@ const validationRouter = (state: TranslateRuleState) => { if (!isEmpty(state.validation_errors?.esql_errors)) { return 'fixQueryErrors'; } + if (!state.translation_finalized) { + return 'ecsMapping'; + } } - return END; + return 'filterIndexPatterns'; }; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/cim_ecs_map.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/cim_ecs_map.ts new file mode 100644 index 0000000000000..3bafaf2fc6518 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/cim_ecs_map.ts @@ -0,0 +1,181 @@ +/* + * 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 SIEM_RULE_MIGRATION_CIM_ECS_MAP = ` +datamodel,object,source_field,ecs_field,data_type +Application_State,All_Application_State,dest,service.node.name,string +Application_State,All_Application_State,process,process.title,string +Application_State,All_Application_State,user,user.name,string +Application_State,Ports,dest_port,destination.port,number +Application_State,Ports,transport,network.transport,string +Application_State,Ports,transport_dest_port,destination.port,string +Application_State,Services,service,service.name,string +Application_State,Services,service_id,service.id,string +Application_State,Services,status,service.state,string +Authentication,Authentication,action,event.action,string +Authentication,Authentication,app,process.name,string +Authentication,Authentication,dest,host.name,string +Authentication,Authentication,duration,event.duration,number +Authentication,Authentication,signature,event.code,string +Authentication,Authentication,signature_id,event.reason,string +Authentication,Authentication,src,source.address,string +Authentication,Authentication,src_nt_domain,source.domain,string +Authentication,Authentication,user,user.name,string +Certificates,All_Certificates,dest_port,destination.port,number +Certificates,All_Certificates,duration,event.duration,number +Certificates,All_Certificates,src,source.address,string +Certificates,All_Certificates,src_port,source.port,number +Certificates,All_Certificates,transport,network.protocol,string +Certificates,SSL,ssl_end_time,tls.server.not_after,time +Certificates,SSL,ssl_hash,tls.server.hash,string +Certificates,SSL,ssl_issuer_common_name,tls.server.issuer,string +Certificates,SSL,ssl_issuer_locality,x509.issuer.locality,string +Certificates,SSL,ssl_issuer_organization,x509.issuer.organization,string +Certificates,SSL,ssl_issuer_state,x509.issuer.state_or_province,string +Certificates,SSL,ssl_issuer_unit,x509.issuer.organizational_unit,string +Certificates,SSL,ssl_publickey_algorithm,x509.public_key_algorithm,string +Certificates,SSL,ssl_serial,x509.serial_number,string +Certificates,SSL,ssl_signature_algorithm,x509.signature_algorithm,string +Certificates,SSL,ssl_start_time,x509.not_before,time +Certificates,SSL,ssl_subject,x509.subject.distinguished_name,string +Certificates,SSL,ssl_subject_common_name,x509.subject.common_name,string +Certificates,SSL,ssl_subject_locality,x509.subject.locality,string +Certificates,SSL,ssl_subject_organization,x509.subject.organization,string +Certificates,SSL,ssl_subject_state,x509.subject.state_or_province,string +Certificates,SSL,ssl_subject_unit,x509.subject.organizational_unit,string +Certificates,SSL,ssl_version,tls.version,string +Change,All_Changes,action,event.action,string +Change,Account_Management,dest_nt_domain,destination.domain,string +Change,Account_Management,src_nt_domain,source.domain,string +Change,Account_Management,src_user,source.user,string +Intrusion_Detection,IDS_Attacks,action,event.action,string +Intrusion_Detection,IDS_Attacks,dest,destination.address,string +Intrusion_Detection,IDS_Attacks,dest_port,destination.port,number +Intrusion_Detection,IDS_Attacks,dvc,observer.hostname,string +Intrusion_Detection,IDS_Attacks,severity,event.severity,string +Intrusion_Detection,IDS_Attacks,src,source.ip,string +Intrusion_Detection,IDS_Attacks,user,source.user,string +JVM,OS,os,host.os.name,string +JVM,OS,os_architecture,host.architecture,string +JVM,OS,os_version,host.os.version,string +Malware,Malware_Attacks,action,event.action,string +Malware,Malware_Attacks,date,event.created,string +Malware,Malware_Attacks,dest,host.hostname,string +Malware,Malware_Attacks,file_hash,file.hash.*,string +Malware,Malware_Attacks,file_name,file.name,string +Malware,Malware_Attacks,file_path,file.path,string +Malware,Malware_Attacks,Sender,source.user.email,string +Malware,Malware_Attacks,src,source.ip,string +Malware,Malware_Attacks,user,related.user,string +Malware,Malware_Attacks,url,rule.reference,string +Network_Resolution,DNS,answer,dns.answers,string +Network_Resolution,DNS,dest,destination.address,string +Network_Resolution,DNS,dest_port,destination.port,number +Network_Resolution,DNS,duration,event.duration,number +Network_Resolution,DNS,message_type,dns.type,string +Network_Resolution,DNS,name,dns.question.name,string +Network_Resolution,DNS,query,dns.question.name,string +Network_Resolution,DNS,query_type,dns.op_code,string +Network_Resolution,DNS,record_type,dns.question.type,string +Network_Resolution,DNS,reply_code,dns.response_code,string +Network_Resolution,DNS,reply_code_id,dns.id,number +Network_Resolution,DNS,response_time,event.duration,number +Network_Resolution,DNS,src,source.address,string +Network_Resolution,DNS,src_port,source.port,number +Network_Resolution,DNS,transaction_id,dns.id,number +Network_Resolution,DNS,transport,network.transport,string +Network_Resolution,DNS,ttl,dns.answers.ttl,number +Network_Sessions,All_Sessions,action,event.action,string +Network_Sessions,All_Sessions,dest_ip,destination.ip,string +Network_Sessions,All_Sessions,dest_mac,destination.mac,string +Network_Sessions,All_Sessions,duration,event.duration,number +Network_Sessions,All_Sessions,src_dns,source.registered_domain,string +Network_Sessions,All_Sessions,src_ip,source.ip,string +Network_Sessions,All_Sessions,src_mac,source.mac,string +Network_Sessions,All_Sessions,user,user.name,string +Network_Traffic,All_Traffic,action,event.action,string +Network_Traffic,All_Traffic,app,network.protocol,string +Network_Traffic,All_Traffic,bytes,network.bytes,number +Network_Traffic,All_Traffic,dest,destination.ip,string +Network_Traffic,All_Traffic,dest_ip,destination.ip,string +Network_Traffic,All_Traffic,dest_mac,destination.mac,string +Network_Traffic,All_Traffic,dest_port,destination.port,number +Network_Traffic,All_Traffic,dest_translated_ip,destination.nat.ip,string +Network_Traffic,All_Traffic,dest_translated_port,destination.nat.port,number +Network_Traffic,All_Traffic,direction,network.direction,string +Network_Traffic,All_Traffic,duration,event.duration,number +Network_Traffic,All_Traffic,dvc,observer.name,string +Network_Traffic,All_Traffic,dvc_ip,observer.ip,string +Network_Traffic,All_Traffic,dvc_mac,observer.mac,string +Network_Traffic,All_Traffic,dvc_zone,observer.egress.zone,string +Network_Traffic,All_Traffic,packets,network.packets,number +Network_Traffic,All_Traffic,packets_in,source.packets,number +Network_Traffic,All_Traffic,packets_out,destination.packets,number +Network_Traffic,All_Traffic,protocol,network.protocol,string +Network_Traffic,All_Traffic,rule,rule.name,string +Network_Traffic,All_Traffic,src,source.address,string +Network_Traffic,All_Traffic,src_ip,source.ip,string +Network_Traffic,All_Traffic,src_mac,source.mac,string +Network_Traffic,All_Traffic,src_port,source.port,number +Network_Traffic,All_Traffic,src_translated_ip,source.nat.ip,string +Network_Traffic,All_Traffic,src_translated_port,source.nat.port,number +Network_Traffic,All_Traffic,transport,network.transport,string +Network_Traffic,All_Traffic,vlan,vlan.name,string +Vulnerabilities,Vulnerabilities,category,vulnerability.category,string +Vulnerabilities,Vulnerabilities,cve,vulnerability.id,string +Vulnerabilities,Vulnerabilities,cvss,vulnerability.score.base,number +Vulnerabilities,Vulnerabilities,dest,host.name,string +Vulnerabilities,Vulnerabilities,dvc,vulnerability.scanner.vendor,string +Vulnerabilities,Vulnerabilities,severity,vulnerability.severity,string +Vulnerabilities,Vulnerabilities,url,vulnerability.reference,string +Vulnerabilities,Vulnerabilities,user,related.user,string +Vulnerabilities,Vulnerabilities,vendor_product,vulnerability.scanner.vendor,string +Endpoint,Ports,creation_time,@timestamp,timestamp +Endpoint,Ports,dest_port,destination.port,number +Endpoint,Ports,process_id,process.pid,string +Endpoint,Ports,transport,network.transport,string +Endpoint,Ports,transport_dest_port,destination.port,string +Endpoint,Processes,action,event.action,string +Endpoint,Processes,os,os.full,string +Endpoint,Processes,parent_process_exec,process.parent.name,string +Endpoint,Processes,parent_process_id,process.ppid,number +Endpoint,Processes,parent_process_guid,process.parent.entity_id,string +Endpoint,Processes,parent_process_path,process.parent.executable,string +Endpoint,Processes,process_current_directory,process.parent.working_directory, +Endpoint,Processes,process_exec,process.name,string +Endpoint,Processes,process_hash,process.hash.*,string +Endpoint,Processes,process_guid,process.entity_id,string +Endpoint,Processes,process_id,process.pid,number +Endpoint,Processes,process_path,process.executable,string +Endpoint,Processes,user_id,related.user,string +Endpoint,Services,description,service.name,string +Endpoint,Services,process_id,service.id,string +Endpoint,Services,service_dll,dll.name,string +Endpoint,Services,service_dll_path,dll.path,string +Endpoint,Services,service_dll_hash,dll.hash.*,string +Endpoint,Services,service_dll_signature_exists,dll.code_signature.exists,boolean +Endpoint,Services,service_dll_signature_verified,dll.code_signature.valid,boolean +Endpoint,Services,service_exec,service.name,string +Endpoint,Services,service_hash,hash.*,string +Endpoint,Filesystem,file_access_time,file.accessed,timestamp +Endpoint,Filesystem,file_create_time,file.created,timestamp +Endpoint,Filesystem,file_modify_time,file.mtime,timestamp +Endpoint,Filesystem,process_id,process.pid,string +Endpoint,Registry,process_id,process.id,string +Web,Web,action,event.action,string +Web,Web,app,observer.product,string +Web,Web,bytes_in,http.request.bytes,number +Web,Web,bytes_out,http.response.bytes,number +Web,Web,dest,destination.ip,string +Web,Web,duration,event.duration,number +Web,Web,http_method,http.request.method,string +Web,Web,http_referrer,http.request.referrer,string +Web,Web,http_user_agent,user_agent.name,string +Web,Web,status,http.response.status_code,string +Web,Web,url,url.full,string +Web,Web,user,url.username,string +Web,Web,vendor_product,observer.product,string`; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/ecs_mapping.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/ecs_mapping.ts new file mode 100644 index 0000000000000..ac7f6db7236d1 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/ecs_mapping.ts @@ -0,0 +1,66 @@ +/* + * 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 { Logger } from '@kbn/core/server'; +import type { InferenceClient } from '@kbn/inference-plugin/server'; +import { SiemMigrationRuleTranslationResult } from '../../../../../../../../../../common/siem_migrations/constants'; +import { getEsqlKnowledgeBase } from '../../../../../util/esql_knowledge_base_caller'; +import type { GraphNode } from '../../types'; +import { SIEM_RULE_MIGRATION_CIM_ECS_MAP } from './cim_ecs_map'; +import { ESQL_TRANSLATE_ECS_MAPPING_PROMPT } from './prompts'; + +interface GetEcsMappingNodeParams { + inferenceClient: InferenceClient; + connectorId: string; + logger: Logger; +} + +export const getEcsMappingNode = ({ + inferenceClient, + connectorId, + logger, +}: GetEcsMappingNodeParams): GraphNode => { + const esqlKnowledgeBaseCaller = getEsqlKnowledgeBase({ inferenceClient, connectorId, logger }); + return async (state) => { + const elasticRule = { + title: state.elastic_rule.title, + description: state.elastic_rule.description, + query: state.elastic_rule.query, + }; + + const prompt = await ESQL_TRANSLATE_ECS_MAPPING_PROMPT.format({ + field_mapping: SIEM_RULE_MIGRATION_CIM_ECS_MAP, + splunk_query: state.inline_query, + elastic_rule: JSON.stringify(elasticRule, null, 2), + }); + + const response = await esqlKnowledgeBaseCaller(prompt); + + const updatedQuery = response.match(/```esql\n([\s\S]*?)\n```/)?.[1] ?? ''; + const ecsSummary = response.match(/## Field Mapping Summary[\s\S]*$/)?.[0] ?? ''; + + const translationResult = getTranslationResult(updatedQuery); + + return { + response, + comments: [ecsSummary], + translation_finalized: true, + translation_result: translationResult, + elastic_rule: { + ...state.elastic_rule, + query: updatedQuery, + }, + }; + }; +}; + +const getTranslationResult = (esqlQuery: string): SiemMigrationRuleTranslationResult => { + if (esqlQuery.match(/\[(macro|lookup):[\s\S]*\]/)) { + return SiemMigrationRuleTranslationResult.PARTIAL; + } + return SiemMigrationRuleTranslationResult.FULL; +}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/index.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/index.ts new file mode 100644 index 0000000000000..339e6d3dd8e7a --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/index.ts @@ -0,0 +1,7 @@ +/* + * 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 { getEcsMappingNode } from './ecs_mapping'; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/prompts.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/prompts.ts new file mode 100644 index 0000000000000..1e89cda884ca0 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/ecs_mapping/prompts.ts @@ -0,0 +1,46 @@ +/* + * 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 { ChatPromptTemplate } from '@langchain/core/prompts'; + +export const ESQL_TRANSLATE_ECS_MAPPING_PROMPT = + ChatPromptTemplate.fromTemplate(`You are a helpful cybersecurity (SIEM) expert agent. Your task is to migrate "detection rules" from Splunk SPL to Elasticsearch ESQL. +Your task is to look at the new ESQL query already generated from its initial Splunk SPL query and translate the Splunk CIM field names to the Elastic Common Schema (ECS) fields. +Below is the relevant context used when deciding which Elastic Common Schema field to use when translating from Splunk CIM fields: + +<context> +<cim_to_ecs_map> +{field_mapping} +</cim_to_ecs_map> +<initial_splunk_query> +{splunk_query} +</initial_splunk_query> +<current_elastic_rule> +{elastic_rule} +</current_elastic_rule> +</context> + +Go through the current esql query above and translate the current field names that originated from a Splunk CIM/SPL query to the equivalent Elastic Common Schema (ECS) fields by following these steps: +- Analyze all the information about the related esql rule especially the query and try to determine the intent of the rule, which should help in choosing which fields to map to ECS. +- Try to determine if and which datamodel is being used by looking at the initial splunk query, the query usually contains the datamodel name, its object and related fields. +- Go through each part of the ESQL query, if a part is determined to be related to a splunk CIM field or datamodel use the cim to ecs map above to determine the equivalent ECS field. +- If a field is not in the cim to ecs map, or no datamodel is used, try to use your existing knowledge about Elastic Common Schema to determine if and which ECS field to use. +- Do not reuse the same ECS field name for multiple Splunk CIM fields, always try to find the most appropriate ECS field. +- If you are uncertain about a field mapping, leave it as is and mention it in the summary. + +<guidelines> +- If a field is found in the CIM to ECS map, replace the field name with the ECS field name. If not, try to determine if and what equivalent ECS field can be used. +- Only translate the field names, do not modify the structure of the query. +- Only translate when you are certain about the field mapping, if uncertain, leave the field as is and mention it in the summary. +- Only use and modify the current ESQL query, do not create a new one or modify any other part of the rule. +</guidelines> + +<expected_output> +- First, the updated ES|QL query inside an \`\`\`esql code block. +- At the end, the summary of the the field mapping process followed in markdown, starting with "## Field Mapping Summary". This would include the reason, original field names, the target ECS field name and any fields that were left as is. +</expected_output> +`); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/filter_index_patterns/filter_index_patterns.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/filter_index_patterns/filter_index_patterns.ts new file mode 100644 index 0000000000000..bb1e086bf4937 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/filter_index_patterns/filter_index_patterns.ts @@ -0,0 +1,40 @@ +/* + * 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 { Logger } from '@kbn/core/server'; +import { SiemMigrationRuleTranslationResult } from '../../../../../../../../../../common/siem_migrations/constants'; +import type { GraphNode } from '../../types'; + +interface GetFilterIndexPatternsNodeParams { + logger: Logger; +} + +/** + * When rule translation happens without any related integrations found we reuse the logs-* pattern to make validation easier. + * However we want to replace this with a value to notify the end user that it needs to be replaced. + */ +export const getFilterIndexPatternsNode = ({ + logger, +}: GetFilterIndexPatternsNodeParams): GraphNode => { + return async (state) => { + const query = state.elastic_rule?.query; + + if (query && query.includes('logs-*')) { + logger.debug('Replacing logs-* with a placeholder value'); + const newQuery = query.replace('logs-*', '[indexPattern:logs-*]'); + return { + elastic_rule: { + ...state.elastic_rule, + query: newQuery, + translation_result: SiemMigrationRuleTranslationResult.PARTIAL, + }, + }; + } + + return {}; + }; +}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/filter_index_patterns/index.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/filter_index_patterns/index.ts new file mode 100644 index 0000000000000..6e7762633b7fd --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/filter_index_patterns/index.ts @@ -0,0 +1,7 @@ +/* + * 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 { getFilterIndexPatternsNode } from './filter_index_patterns'; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/prompts.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/prompts.ts new file mode 100644 index 0000000000000..d562bb31b1628 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/prompts.ts @@ -0,0 +1,49 @@ +/* + * 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 { ChatPromptTemplate } from '@langchain/core/prompts'; +export const MATCH_INTEGRATION_PROMPT = ChatPromptTemplate.fromMessages([ + [ + 'system', + `You are an expert assistant in Cybersecurity, your task is to help migrating a SIEM detection rule, from Splunk Security to Elastic Security. +You will be provided with a Splunk Detection Rule name by the user, your goal is to try to find the most relevant Elastic Integration from the integration list below if any, and return either the most relevant. If none seems relevant you should always return empty. +Here are some context for you to reference for your task, read it carefully as you will get questions about it later: + +<context> +<elastic_integrations> +{integrations} +</elastic_integrations> +</context> +`, + ], + [ + 'human', + `See the below description of the relevant splunk rule and try to match it with any of the Elastic Integrations from before, do not guess or reply with anything else, only reply with the most relevant Elastic Integration if any. +<splunk_rule> +{splunk_rule} +</splunk_rule> + +<guidelines> +- Always reply with a JSON object with the key "match" and the value being the most relevant matched integration title. Do not reply with anything else. +- Only reply with exact matches, if you are unsure or do not find a very confident match, always reply with an empty string value in the match key, do not guess or reply with anything else. +- If there is one elastic integration in the list that covers the relevant usecase, set the title of the matching integration as a value of the match key. Do not reply with anything else. +- If there are multiple elastic integrations in the list that cover the same usecase, answer with the most specific of them, for example if the rule is related to "Sysmon" then the Sysmon integration is more specific than Windows. +</guidelines> + +<example_response> +U: <splunk_rule_name> +Linux Auditd Add User Account Type +</splunk_rule_name> +A: Please find the match JSON object below: +\`\`\`json +{{"match": "auditd_manager"}} +\`\`\` +</example_response> +`, + ], + ['ai', 'Please find the match JSON object below:'], +]); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/retrieve_integrations.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/retrieve_integrations.ts index fa5b761806b5d..74c9055bd7665 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/retrieve_integrations.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/retrieve_integrations/retrieve_integrations.ts @@ -5,22 +5,57 @@ * 2.0. */ +import { JsonOutputParser } from '@langchain/core/output_parsers'; import type { RuleMigrationsRetriever } from '../../../../../retrievers'; +import type { ChatModel } from '../../../../../util/actions_client_chat'; import type { GraphNode } from '../../types'; +import { MATCH_INTEGRATION_PROMPT } from './prompts'; interface GetRetrieveIntegrationsNodeParams { + model: ChatModel; ruleMigrationsRetriever: RuleMigrationsRetriever; } +interface GetMatchedIntegrationResponse { + match: string; +} + export const getRetrieveIntegrationsNode = ({ + model, ruleMigrationsRetriever, }: GetRetrieveIntegrationsNodeParams): GraphNode => { return async (state) => { const query = state.semantic_query; const integrations = await ruleMigrationsRetriever.integrations.getIntegrations(query); - return { - integrations, + + const outputParser = new JsonOutputParser(); + const mostRelevantIntegration = MATCH_INTEGRATION_PROMPT.pipe(model).pipe(outputParser); + + const elasticSecurityIntegrations = integrations.map((integration) => { + return { + title: integration.title, + description: integration.description, + }; + }); + const splunkRule = { + title: state.original_rule.title, + description: state.original_rule.description, }; + + /* + * Takes the most relevant integration from the array of integration(s) returned by the semantic query, returns either the most relevant or none. + */ + const response = (await mostRelevantIntegration.invoke({ + integrations: JSON.stringify(elasticSecurityIntegrations, null, 2), + splunk_rule: JSON.stringify(splunkRule, null, 2), + })) as GetMatchedIntegrationResponse; + if (response.match) { + const matchedIntegration = integrations.find((r) => r.title === response.match); + if (matchedIntegration) { + return { integration: matchedIntegration }; + } + } + return {}; }; }; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/prompts.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/prompts.ts index 9749dfd96efba..1ea8295c7402f 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/prompts.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/prompts.ts @@ -7,46 +7,39 @@ import { ChatPromptTemplate } from '@langchain/core/prompts'; -export const ESQL_TRANSLATION_PROMPT = - ChatPromptTemplate.fromTemplate(`You are a helpful cybersecurity (SIEM) expert agent. Your task is to migrate "detection rules" from Splunk to Elastic Security. -Your goal is to translate the SPL query into an equivalent Elastic Security Query Language (ES|QL) query. -Below is the relevant context used when deciding which Elastic Common Schema field to use when translating from Splunk CIM fields: +export const ESQL_SYNTAX_TRANSLATION_PROMPT = + ChatPromptTemplate.fromTemplate(`You are a helpful cybersecurity (SIEM) expert agent. Your task is to migrate "detection rules" from Splunk SPL to Elasticsearch ES|QL. +Your goal is to translate the SPL query syntax into an equivalent Elastic Search Query Language (ES|QL) query without changing any of the field names and focusing only on translating the syntax and structure. +Here are some context for you to reference for your task, read it carefully as you will get questions about it later: <context> -<cim_to_ecs_map> -{field_mapping} -</cim_to_ecs_map> +<splunk_rule> +{splunk_rule} +</splunk_rule> +<lookup_and_macro_info> +If, in the SPL query, you find a lookup list or macro call, mention it in the summary and add a placeholder in the query with the format [macro:<macro_name>(argumentCount)] or [lookup:<lookup_name>] including the [] keys, + Examples: + - \`get_duration(firstDate,secondDate)\` -> [macro:get_duration(2)] + - lookup dns_domains.csv -> [lookup:dns_domains.csv]. +</lookup_and_macro_info> </context> -## Splunk rule Information provided: -- Below you will find Splunk rule information: the title (<<TITLE>>), the description (<<DESCRIPTION>>), and the SPL (Search Processing Language) query (<<SPL_QUERY>>). -- Use all the information to analyze the intent of the rule, in order to translate into an equivalent ES|QL rule. -- The fields in the Splunk query may not be the same as in the Elastic Common Schema (ECS), so you may need to map them accordingly. +Go through each step and part of the splunk rule and query while following the below guide to produce the resulting ES|QL query: +- Analyze all the information about the related splunk rule and try to determine the intent of the rule, in order to translate into an equivalent ES|QL rule. +- Go through each part of the SPL query and determine the steps required to produce the same end results using ES|QL. Only focus on translating the structure without modifying any of the field names. +- Do NOT map any of the fields to the Elastic Common Schema (ECS), this will happen in a later step. +- Always remember to replace any lookup list or macro call with the appropriate placeholder as defined in the context. -## Guidelines: + +<guidelines> - Analyze the SPL query and identify the key components. -- Translate the SPL query into an equivalent ES|QL query using ECS (Elastic Common Schema) field names. -- Always start the generated ES|QL query by filtering FROM using these index patterns in the translated query: {indexPatterns}. -- If, in the SPL query, you find a lookup list or macro call, mention it in the summary and add a placeholder in the query with the format [macro:<macro_name>(argumentCount)] or [lookup:<lookup_name>] including the [] keys, - - Examples: - - \`get_duration(firstDate,secondDate)\` -> [macro:get_duration(2)] - - lookup dns_domains.csv -> [lookup:dns_domains.csv]. +- Do NOT translate the field names of the SPL query. +- Always start the resulting ES|QL query by filtering using FROM and with these index patterns: {indexPatterns}. +- Remember to always replace any lookup list or macro call with the appropriate placeholder as defined in the context. +</guidelines> -## The output will be parsed and must contain: +<expected_output> - First, the ES|QL query inside an \`\`\`esql code block. -- At the end, the summary of the translation process followed in markdown, starting with "## Migration Summary". - -Find the Splunk rule information below: - -<<TITLE>> -{title} -<> - -<> -{description} -<> - -<> -{inline_query} -<> +- At the end, the summary of the translation process followed in markdown, starting with "## Translation Summary". + `); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/translate_rule.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/translate_rule.ts index 85f5e7279d2b9..09f9bca474004 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/translate_rule.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/nodes/translate_rule/translate_rule.ts @@ -10,8 +10,7 @@ import type { InferenceClient } from '@kbn/inference-plugin/server'; import { SiemMigrationRuleTranslationResult } from '../../../../../../../../../../common/siem_migrations/constants'; import { getEsqlKnowledgeBase } from '../../../../../util/esql_knowledge_base_caller'; import type { GraphNode } from '../../types'; -import { SIEM_RULE_MIGRATION_CIM_ECS_MAP } from './cim_ecs_map'; -import { ESQL_TRANSLATION_PROMPT } from './prompts'; +import { ESQL_SYNTAX_TRANSLATION_PROMPT } from './prompts'; interface GetTranslateRuleNodeParams { inferenceClient: InferenceClient; @@ -26,34 +25,35 @@ export const getTranslateRuleNode = ({ }: GetTranslateRuleNodeParams): GraphNode => { const esqlKnowledgeBaseCaller = getEsqlKnowledgeBase({ inferenceClient, connectorId, logger }); return async (state) => { - const indexPatterns = state.integrations - .flatMap((integration) => - integration.data_streams.map((dataStream) => dataStream.index_pattern) - ) - .join(','); - const integrationIds = state.integrations.map((integration) => integration.id); + const indexPatterns = + state.integration?.data_streams?.map((dataStream) => dataStream.index_pattern).join(',') || + 'logs-*'; + const integrationId = state.integration?.id || ''; - const prompt = await ESQL_TRANSLATION_PROMPT.format({ + const splunkRule = { title: state.original_rule.title, description: state.original_rule.description, - field_mapping: SIEM_RULE_MIGRATION_CIM_ECS_MAP, inline_query: state.inline_query, + }; + + const prompt = await ESQL_SYNTAX_TRANSLATION_PROMPT.format({ + splunk_rule: JSON.stringify(splunkRule, null, 2), indexPatterns, }); const response = await esqlKnowledgeBaseCaller(prompt); const esqlQuery = response.match(/```esql\n([\s\S]*?)\n```/)?.[1] ?? ''; - const summary = response.match(/## Migration Summary[\s\S]*$/)?.[0] ?? ''; + const translationSummary = response.match(/## Translation Summary[\s\S]*$/)?.[0] ?? ''; const translationResult = getTranslationResult(esqlQuery); return { response, - comments: [summary], + comments: [translationSummary], translation_result: translationResult, elastic_rule: { title: state.original_rule.title, - integration_ids: integrationIds, + integration_id: integrationId, description: state.original_rule.description, severity: 'low', query: esqlQuery, diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/state.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/state.ts index ac8799cb09d74..ea46238002178 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/state.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/state.ts @@ -22,9 +22,13 @@ export const translateRuleState = Annotation.Root({ default: () => [], }), original_rule: Annotation(), - integrations: Annotation({ + integration: Annotation({ reducer: (current, value) => value ?? current, - default: () => [], + default: () => ({} as Integration), + }), + translation_finalized: Annotation({ + reducer: (current, value) => value ?? current, + default: () => false, }), inline_query: Annotation({ reducer: (current, value) => value ?? current, diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/types.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/types.ts index eddc415f23392..0a3435d496736 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/types.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/agent/sub_graphs/translate_rule/types.ts @@ -8,12 +8,14 @@ import type { Logger } from '@kbn/core/server'; import type { InferenceClient } from '@kbn/inference-plugin/server'; import type { RuleMigrationsRetriever } from '../../../retrievers'; +import type { ChatModel } from '../../../util/actions_client_chat'; import type { translateRuleState } from './state'; export type TranslateRuleState = typeof translateRuleState.State; export type GraphNode = (state: TranslateRuleState) => Promise>; export interface TranslateRuleGraphParams { + model: ChatModel; inferenceClient: InferenceClient; connectorId: string; ruleMigrationsRetriever: RuleMigrationsRetriever; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_migrations_retriever.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_migrations_retriever.ts index 22c884fa4043b..29852558cda48 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_migrations_retriever.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_migrations_retriever.ts @@ -5,19 +5,42 @@ * 2.0. */ +import type { RulesClient } from '@kbn/alerting-plugin/server'; +import type { SavedObjectsClientContract } from '@kbn/core/server'; import type { RuleMigrationsDataClient } from '../../data/rule_migrations_data_client'; import { IntegrationRetriever } from './integration_retriever'; import { PrebuiltRulesRetriever } from './prebuilt_rules_retriever'; import { RuleResourceRetriever } from './rule_resource_retriever'; +interface RuleMigrationsRetrieverDeps { + data: RuleMigrationsDataClient; + rules: RulesClient; + savedObjects: SavedObjectsClientContract; +} + export class RuleMigrationsRetriever { public readonly resources: RuleResourceRetriever; public readonly integrations: IntegrationRetriever; public readonly prebuiltRules: PrebuiltRulesRetriever; - constructor(dataClient: RuleMigrationsDataClient, migrationId: string) { - this.resources = new RuleResourceRetriever(migrationId, dataClient); - this.integrations = new IntegrationRetriever(dataClient); - this.prebuiltRules = new PrebuiltRulesRetriever(dataClient); + constructor(migrationId: string, private readonly clients: RuleMigrationsRetrieverDeps) { + this.resources = new RuleResourceRetriever(migrationId, this.clients.data); + this.integrations = new IntegrationRetriever(this.clients.data); + this.prebuiltRules = new PrebuiltRulesRetriever(this.clients.data); + } + + public async initialize() { + await Promise.all([ + this.resources.initialize(), + // Populates the indices used for RAG searches on prebuilt rules and integrations. + this.clients.data.prebuiltRules.create({ + rulesClient: this.clients.rules, + soClient: this.clients.savedObjects, + }), + // Will use Fleet API client for integration retrieval as an argument once feature is available + this.clients.data.integrations.create(), + ]).catch((error) => { + throw new Error(`Failed to initialize RuleMigrationsRetriever: ${error}`); + }); } } diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.test.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.test.ts index 51618d5f3ca13..1e02eec2315e7 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.test.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.test.ts @@ -5,176 +5,124 @@ * 2.0. */ -import { MAX_RECURSION_DEPTH, RuleResourceRetriever } from './rule_resource_retriever'; // Adjust path as needed +import { RuleResourceRetriever } from './rule_resource_retriever'; // Adjust path as needed import type { OriginalRule } from '../../../../../../common/siem_migrations/model/rule_migration.gen'; -import { MockRuleMigrationsDataClient } from '../../data/__mocks__/mocks'; - -const mockRuleResourceIdentifier = jest.fn(); -const mockGetRuleResourceIdentifier = jest.fn((_: unknown) => mockRuleResourceIdentifier); -jest.mock('../../../../../../common/siem_migrations/rules/resources', () => ({ - getRuleResourceIdentifier: (params: unknown) => mockGetRuleResourceIdentifier(params), -})); +import { ResourceIdentifier } from '../../../../../../common/siem_migrations/rules/resources'; +import type { RuleMigrationsDataClient } from '../../data/rule_migrations_data_client'; jest.mock('../../data/rule_migrations_data_service'); +jest.mock('../../../../../../common/siem_migrations/rules/resources'); + +const MockResourceIdentifier = ResourceIdentifier as jest.Mock; describe('RuleResourceRetriever', () => { let retriever: RuleResourceRetriever; - const mockRuleMigrationsDataClient = new MockRuleMigrationsDataClient(); - const migrationId = 'test-migration-id'; - const ruleQuery = 'rule-query'; - const originalRule = { query: ruleQuery } as OriginalRule; + let mockDataClient: jest.Mocked; + let mockResourceIdentifier: jest.Mocked; beforeEach(() => { - retriever = new RuleResourceRetriever(migrationId, mockRuleMigrationsDataClient); - mockRuleResourceIdentifier.mockReturnValue({ list: [], macro: [] }); - - mockRuleMigrationsDataClient.resources.get.mockImplementation( - async (_: string, type: string, names: string[]) => - names.map((name) => ({ type, name, content: `${name}-content` })) - ); - - mockRuleResourceIdentifier.mockImplementation((query) => { - if (query === ruleQuery) { - return { list: ['list1', 'list2'], macro: ['macro1'] }; - } - return { list: [], macro: [] }; - }); - - jest.clearAllMocks(); + mockDataClient = { + resources: { searchBatches: jest.fn().mockReturnValue({ next: jest.fn(() => []) }) }, + } as unknown as RuleMigrationsDataClient; + + retriever = new RuleResourceRetriever('mockMigrationId', mockDataClient); + + MockResourceIdentifier.mockImplementation(() => ({ + fromOriginalRule: jest.fn().mockReturnValue([]), + fromResources: jest.fn().mockReturnValue([]), + })); + mockResourceIdentifier = new MockResourceIdentifier( + 'splunk' + ) as jest.Mocked; }); - describe('getResources', () => { - it('should call resource identification', async () => { - await retriever.getResources(originalRule); + it('throws an error if initialize is not called before getResources', async () => { + const originalRule = { vendor: 'splunk' } as unknown as OriginalRule; - expect(mockGetRuleResourceIdentifier).toHaveBeenCalledWith(originalRule); - expect(mockRuleResourceIdentifier).toHaveBeenCalledWith(ruleQuery); - expect(mockRuleResourceIdentifier).toHaveBeenCalledWith('macro1-content'); - }); - - it('should retrieve resources', async () => { - const resources = await retriever.getResources(originalRule); - - expect(mockRuleMigrationsDataClient.resources.get).toHaveBeenCalledWith(migrationId, 'list', [ - 'list1', - 'list2', - ]); - expect(mockRuleMigrationsDataClient.resources.get).toHaveBeenCalledWith( - migrationId, - 'macro', - ['macro1'] - ); - - expect(resources).toEqual({ - list: [ - { type: 'list', name: 'list1', content: 'list1-content' }, - { type: 'list', name: 'list2', content: 'list2-content' }, - ], - macro: [{ type: 'macro', name: 'macro1', content: 'macro1-content' }], - }); - }); + await expect(retriever.getResources(originalRule)).rejects.toThrow( + 'initialize must be called before calling getResources' + ); + }); - it('should retrieve nested resources', async () => { - mockRuleResourceIdentifier.mockImplementation((query) => { - if (query === ruleQuery) { - return { list: ['list1', 'list2'], macro: ['macro1'] }; - } - if (query === 'macro1-content') { - return { list: ['list3'], macro: [] }; - } - return { list: [], macro: [] }; - }); - - const resources = await retriever.getResources(originalRule); - - expect(mockRuleMigrationsDataClient.resources.get).toHaveBeenCalledWith(migrationId, 'list', [ - 'list1', - 'list2', - ]); - expect(mockRuleMigrationsDataClient.resources.get).toHaveBeenCalledWith( - migrationId, - 'macro', - ['macro1'] - ); - expect(mockRuleMigrationsDataClient.resources.get).toHaveBeenCalledWith(migrationId, 'list', [ - 'list3', - ]); - - expect(resources).toEqual({ - list: [ - { type: 'list', name: 'list1', content: 'list1-content' }, - { type: 'list', name: 'list2', content: 'list2-content' }, - { type: 'list', name: 'list3', content: 'list3-content' }, - ], - macro: [{ type: 'macro', name: 'macro1', content: 'macro1-content' }], - }); - }); + it('returns an empty object if no matching resources are found', async () => { + const originalRule = { vendor: 'splunk' } as unknown as OriginalRule; - it('should handle missing macros', async () => { - mockRuleMigrationsDataClient.resources.get.mockImplementation( - async (_: string, type: string, names: string[]) => { - if (type === 'macro') { - return []; - } - return names.map((name) => ({ type, name, content: `${name}-content` })); - } - ); - - const resources = await retriever.getResources(originalRule); - - expect(resources).toEqual({ - list: [ - { type: 'list', name: 'list1', content: 'list1-content' }, - { type: 'list', name: 'list2', content: 'list2-content' }, - ], - }); - }); + // Mock the resource identifier to return no resources + mockResourceIdentifier.fromOriginalRule.mockReturnValue([]); + await retriever.initialize(); // Pretend initialize has been called - it('should handle missing lists', async () => { - mockRuleMigrationsDataClient.resources.get.mockImplementation( - async (_: string, type: string, names: string[]) => { - if (type === 'list') { - return []; - } - return names.map((name) => ({ type, name, content: `${name}-content` })); - } - ); - - const resources = await retriever.getResources(originalRule); - - expect(resources).toEqual({ - macro: [{ type: 'macro', name: 'macro1', content: 'macro1-content' }], - }); - }); + const result = await retriever.getResources(originalRule); + expect(result).toEqual({}); + }); - it('should not include resources with missing content', async () => { - mockRuleMigrationsDataClient.resources.get.mockImplementation( - async (_: string, type: string, names: string[]) => { - return names.map((name) => { - if (name === 'list1') { - return { type, name, content: '' }; - } - return { type, name, content: `${name}-content` }; - }); - } - ); - - const resources = await retriever.getResources(originalRule); - - expect(resources).toEqual({ - list: [{ type: 'list', name: 'list2', content: 'list2-content' }], - macro: [{ type: 'macro', name: 'macro1', content: 'macro1-content' }], - }); + it('returns matching macro and list resources', async () => { + const mockExistingResources = { + macro: { macro1: { name: 'macro1', type: 'macro' } }, + list: { list1: { name: 'list1', type: 'list' } }, + }; + // Inject existing resources manually + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (retriever as any).existingResources = mockExistingResources; + + const mockResourcesIdentified = [ + { name: 'macro1', type: 'macro' as const }, + { name: 'list1', type: 'list' as const }, + ]; + MockResourceIdentifier.mockImplementation(() => ({ + fromOriginalRule: jest.fn().mockReturnValue(mockResourcesIdentified), + fromResources: jest.fn().mockReturnValue([]), + })); + + const originalRule = { vendor: 'splunk' } as unknown as OriginalRule; + + const result = await retriever.getResources(originalRule); + expect(result).toEqual({ + macro: [{ name: 'macro1', type: 'macro' }], + list: [{ name: 'list1', type: 'list' }], }); + }); - it('should stop recursion after reaching MAX_RECURSION_DEPTH', async () => { - mockRuleResourceIdentifier.mockImplementation(() => { - return { list: [], macro: ['infinite-macro'] }; - }); - - const resources = await retriever.getResources(originalRule); - - expect(resources.macro?.length).toEqual(MAX_RECURSION_DEPTH); + it('handles nested resources properly', async () => { + const originalRule = { vendor: 'splunk' } as unknown as OriginalRule; + + const mockExistingResources = { + macro: { + macro1: { name: 'macro1', type: 'macro' }, + macro2: { name: 'macro2', type: 'macro' }, + }, + list: { + list1: { name: 'list1', type: 'list' }, + list2: { name: 'list2', type: 'list' }, + }, + }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (retriever as any).existingResources = mockExistingResources; + + const mockResourcesIdentifiedFromRule = [ + { name: 'macro1', type: 'macro' as const }, + { name: 'list1', type: 'list' as const }, + ]; + + const mockNestedResources = [ + { name: 'macro2', type: 'macro' as const }, + { name: 'list2', type: 'list' as const }, + ]; + + MockResourceIdentifier.mockImplementation(() => ({ + fromOriginalRule: jest.fn().mockReturnValue(mockResourcesIdentifiedFromRule), + fromResources: jest.fn().mockReturnValue([]).mockReturnValueOnce(mockNestedResources), + })); + + const result = await retriever.getResources(originalRule); + expect(result).toEqual({ + macro: [ + { name: 'macro1', type: 'macro' }, + { name: 'macro2', type: 'macro' }, + ], + list: [ + { name: 'list1', type: 'list' }, + { name: 'list2', type: 'list' }, + ], }); }); }); diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.ts index d80646dc27c4d..b89939e199e5a 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/retrievers/rule_resource_retriever.ts @@ -5,9 +5,7 @@ * 2.0. */ -import { isEmpty } from 'lodash/fp'; -import type { QueryResourceIdentifier } from '../../../../../../common/siem_migrations/rules/resources/types'; -import { getRuleResourceIdentifier } from '../../../../../../common/siem_migrations/rules/resources'; +import { ResourceIdentifier } from '../../../../../../common/siem_migrations/rules/resources'; import type { OriginalRule, RuleMigrationResource, @@ -15,86 +13,91 @@ import type { } from '../../../../../../common/siem_migrations/model/rule_migration.gen'; import type { RuleMigrationsDataClient } from '../../data/rule_migrations_data_client'; +export interface RuleMigrationDefinedResource extends RuleMigrationResource { + content: string; // ensures content exists +} export type RuleMigrationResources = Partial< - Record + Record >; - -/* It's not a common practice to have more than 2-3 nested levels of resources. - * This limit is just to prevent infinite recursion in case something goes wrong. - */ -export const MAX_RECURSION_DEPTH = 30; +interface ExistingResources { + macro: Record; + list: Record; +} export class RuleResourceRetriever { + private existingResources?: ExistingResources; + constructor( private readonly migrationId: string, private readonly dataClient: RuleMigrationsDataClient ) {} - public async getResources(originalRule: OriginalRule): Promise { - const resourceIdentifier = getRuleResourceIdentifier(originalRule); - return this.recursiveRetriever(originalRule.query, resourceIdentifier); + public async initialize(): Promise { + const batches = this.dataClient.resources.searchBatches( + this.migrationId, + { filters: { hasContent: true } } + ); + + const existingRuleResources: ExistingResources = { macro: {}, list: {} }; + let resources; + do { + resources = await batches.next(); + resources.forEach((resource) => { + existingRuleResources[resource.type][resource.name] = resource; + }); + } while (resources.length > 0); + + this.existingResources = existingRuleResources; } - private recursiveRetriever = async ( - query: string, - resourceIdentifier: QueryResourceIdentifier, - it = 0 - ): Promise => { - if (it >= MAX_RECURSION_DEPTH) { - return {}; + public async getResources(originalRule: OriginalRule): Promise { + const existingResources = this.existingResources; + if (!existingResources) { + throw new Error('initialize must be called before calling getResources'); } - const identifiedResources = resourceIdentifier(query); - const resources: RuleMigrationResources = {}; - - const listNames = identifiedResources.list; - if (listNames.length > 0) { - const listsWithContent = await this.dataClient.resources - .get(this.migrationId, 'list', listNames) - .then(withContent); + const resourceIdentifier = new ResourceIdentifier(originalRule.vendor); + const resourcesIdentifiedFromRule = resourceIdentifier.fromOriginalRule(originalRule); - if (listsWithContent.length > 0) { - resources.list = listsWithContent; + const macrosFound = new Map(); + const listsFound = new Map(); + resourcesIdentifiedFromRule.forEach((resource) => { + const existingResource = existingResources[resource.type][resource.name]; + if (existingResource) { + if (resource.type === 'macro') { + macrosFound.set(resource.name, existingResource); + } else if (resource.type === 'list') { + listsFound.set(resource.name, existingResource); + } } - } + }); - const macroNames = identifiedResources.macro; - if (macroNames.length > 0) { - const macrosWithContent = await this.dataClient.resources - .get(this.migrationId, 'macro', macroNames) - .then(withContent); + const resourcesFound = [...macrosFound.values(), ...listsFound.values()]; + if (!resourcesFound.length) { + return {}; + } - if (macrosWithContent.length > 0) { - // retrieve nested resources inside macros - const macrosNestedResources = await Promise.all( - macrosWithContent.map(({ content }) => - this.recursiveRetriever(content, resourceIdentifier, it + 1) - ) - ); + let nestedResourcesFound = resourcesFound; + do { + const nestedResourcesIdentified = resourceIdentifier.fromResources(nestedResourcesFound); - // Process lists inside macros - const macrosNestedLists = macrosNestedResources.flatMap( - (macroNestedResources) => macroNestedResources.list ?? [] - ); - if (macrosNestedLists.length > 0) { - resources.list = (resources.list ?? []).concat(macrosNestedLists); + nestedResourcesFound = []; + nestedResourcesIdentified.forEach((resource) => { + const existingResource = existingResources[resource.type][resource.name]; + if (existingResource) { + nestedResourcesFound.push(existingResource); + if (resource.type === 'macro') { + macrosFound.set(resource.name, existingResource); + } else if (resource.type === 'list') { + listsFound.set(resource.name, existingResource); + } } + }); + } while (nestedResourcesFound.length > 0); - // Process macros inside macros - const macrosNestedMacros = macrosNestedResources.flatMap( - (macroNestedResources) => macroNestedResources.macro ?? [] - ); - - if (macrosNestedMacros.length > 0) { - macrosWithContent.push(...macrosNestedMacros); - } - resources.macro = macrosWithContent; - } - } - return resources; - }; + return { + ...(macrosFound.size > 0 ? { macro: Array.from(macrosFound.values()) } : {}), + ...(listsFound.size > 0 ? { list: Array.from(listsFound.values()) } : {}), + }; + } } - -const withContent = (resources: RuleMigrationResource[]) => { - return resources.filter((resource) => !isEmpty(resource.content)); -}; diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/rule_migrations_task_client.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/rule_migrations_task_client.ts index 6dbee5c64ee47..1edd1b449070c 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/rule_migrations_task_client.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/rule_migrations_task_client.ts @@ -20,15 +20,14 @@ import type { MigrateRuleState } from './agent/types'; import { RuleMigrationsRetriever } from './retrievers'; import type { MigrationAgent, - RuleMigrationTaskPrepareParams, - RuleMigrationTaskRunParams, RuleMigrationTaskStartParams, + RuleMigrationTaskCreateAgentParams, RuleMigrationTaskStartResult, RuleMigrationTaskStopResult, } from './types'; import { ActionsClientChat } from './util/actions_client_chat'; -const ITERATION_BATCH_SIZE = 50 as const; +const ITERATION_BATCH_SIZE = 15 as const; const ITERATION_SLEEP_SECONDS = 10 as const; type MigrationsRunning = Map; @@ -63,82 +62,40 @@ export class RuleMigrationsTaskClient { return { exists: true, started: false }; } - const abortController = new AbortController(); - - // Retrieve agent from prepare and pass it to run right after without awaiting but using .then - this.prepare({ ...params, abortController }) - .then((agent) => this.run({ ...params, agent, abortController })) - .catch((error) => { - this.logger.error(`Error starting migration ID:${migrationId} with error:${error}`, error); - }); - - return { exists: true, started: true }; - } - - private async prepare({ - migrationId, - connectorId, - inferenceClient, - actionsClient, - rulesClient, - soClient, - abortController, - }: RuleMigrationTaskPrepareParams): Promise { - await Promise.all([ - // Populates the indices used for RAG searches on prebuilt rules and integrations. - await this.data.prebuiltRules.create({ rulesClient, soClient }), - // Will use Fleet API client for integration retrieval as an argument once feature is available - await this.data.integrations.create(), - ]).catch((error) => { - this.logger.error(`Error preparing RAG indices for migration ID:${migrationId}`, error); - throw error; + // run the migration without awaiting it to execute it in the background + this.run(params).catch((error) => { + this.logger.error(`Error executing migration ID:${migrationId}`, error); }); - const ruleMigrationsRetriever = new RuleMigrationsRetriever(this.data, migrationId); - - const actionsClientChat = new ActionsClientChat(connectorId, actionsClient, this.logger); - const model = await actionsClientChat.createModel({ - signal: abortController.signal, - temperature: 0.05, - }); - - const agent = getRuleMigrationAgent({ - connectorId, - model, - inferenceClient, - ruleMigrationsRetriever, - logger: this.logger, - }); - return agent; + return { exists: true, started: true }; } - private async run({ - migrationId, - agent, - invocationConfig, - abortController, - }: RuleMigrationTaskRunParams): Promise { + private async run(params: RuleMigrationTaskStartParams): Promise { + const { migrationId, invocationConfig } = params; if (this.migrationsRunning.has(migrationId)) { // This should never happen, but just in case throw new Error(`Task already running for migration ID:${migrationId} `); } this.logger.info(`Starting migration ID:${migrationId}`); + const abortController = new AbortController(); this.migrationsRunning.set(migrationId, { user: this.currentUser.username, abortController }); - const config: RunnableConfig = { - ...invocationConfig, - // signal: abortController.signal, // not working properly https://github.com/langchain-ai/langgraphjs/issues/319 - }; const abortPromise = abortSignalToPromise(abortController.signal); + const withAbortRace = async (task: Promise) => Promise.race([task, abortPromise.promise]); + + const sleep = async (seconds: number) => { + this.logger.debug(`Sleeping ${seconds}s for migration ID:${migrationId}`); + await withAbortRace(new Promise((resolve) => setTimeout(resolve, seconds * 1000))); + }; try { - const sleep = async (seconds: number) => { - this.logger.debug(`Sleeping ${seconds}s for migration ID:${migrationId}`); - await Promise.race([ - new Promise((resolve) => setTimeout(resolve, seconds * 1000)), - abortPromise.promise, - ]); + this.logger.debug(`Creating agent for migration ID:${migrationId}`); + const agent = await withAbortRace(this.createAgent({ ...params, abortController })); + + const config: RunnableConfig = { + ...invocationConfig, + // signal: abortController.signal, // not working properly https://github.com/langchain-ai/langgraphjs/issues/319 }; let isDone: boolean = false; @@ -154,10 +111,12 @@ export class RuleMigrationsTaskClient { try { const start = Date.now(); - const migrationResult: MigrateRuleState = await Promise.race([ - agent.invoke({ original_rule: ruleMigration.original_rule }, config), - abortPromise.promise, // workaround for the issue with the langGraph signal - ]); + const invocation = agent.invoke( + { original_rule: ruleMigration.original_rule }, + config + ); + // using withAbortRace is a workaround for the issue with the langGraph signal not working properly + const migrationResult = await withAbortRace(invocation); const duration = (Date.now() - start) / 1000; this.logger.debug( @@ -211,6 +170,38 @@ export class RuleMigrationsTaskClient { } } + private async createAgent({ + migrationId, + connectorId, + inferenceClient, + actionsClient, + rulesClient, + soClient, + abortController, + }: RuleMigrationTaskCreateAgentParams): Promise { + const actionsClientChat = new ActionsClientChat(connectorId, actionsClient, this.logger); + const model = await actionsClientChat.createModel({ + signal: abortController.signal, + temperature: 0.05, + }); + + const ruleMigrationsRetriever = new RuleMigrationsRetriever(migrationId, { + data: this.data, + rules: rulesClient, + savedObjects: soClient, + }); + await ruleMigrationsRetriever.initialize(); + + const agent = getRuleMigrationAgent({ + connectorId, + model, + inferenceClient, + ruleMigrationsRetriever, + logger: this.logger, + }); + return agent; + } + /** Updates all the rules in a migration to be re-executed */ public async updateToRetry(migrationId: string): Promise<{ updated: boolean }> { if (this.migrationsRunning.has(migrationId)) { diff --git a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/types.ts b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/types.ts index 7ac7e848ba80d..7ddb08f1e47d6 100644 --- a/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/types.ts +++ b/x-pack/plugins/security_solution/server/lib/siem_migrations/rules/task/types.ts @@ -30,20 +30,7 @@ export interface RuleMigrationTaskStartParams { soClient: SavedObjectsClientContract; } -export interface RuleMigrationTaskPrepareParams { - migrationId: string; - connectorId: string; - inferenceClient: InferenceClient; - actionsClient: ActionsClient; - rulesClient: RulesClient; - soClient: SavedObjectsClientContract; - abortController: AbortController; -} - -export interface RuleMigrationTaskRunParams { - migrationId: string; - invocationConfig: RunnableConfig; - agent: MigrationAgent; +export interface RuleMigrationTaskCreateAgentParams extends RuleMigrationTaskStartParams { abortController: AbortController; } diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/staging_indices.ts b/x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/staging_indices.ts new file mode 100644 index 0000000000000..e7fe78336ad06 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/telemetry/__mocks__/staging_indices.ts @@ -0,0 +1,1160 @@ +/* + * 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 stagingIndices = [ + 'apm-7.14.2-profile-000011', + 'apm-7.14.2-profile-000012', + 'apm-7.14.2-profile-000013', + '.ds-logs-elastic_agent.filebeat-default-2023.07.22-000002', + 'apm-7.16.2-error-000010', + 'apm-7.16.2-error-000011', + '.ds-security_lists_telemetry_elastic-2024.04.15-000052', + 'security_solution_signals_test', + '.ds-v2_enrichment_data_cloud-2023.09.14-000012', + '.internal.alerts-transform.health.alerts-default-000001', + '.ds-security_lists_telemetry_elastic-2024.03.16-000050', + 'apm-7.16.2-span-000001', + 'apm-7.16.2-span-000002', + 'apm-7.16.2-span-000003', + 'apm-7.16.2-span-000004', + 'apm-7.16.2-span-000005', + 'apm-7.16.2-span-000006', + 'apm-7.16.2-span-000007', + 'apm-7.16.2-span-000008', + 'apm-7.16.2-span-000009', + '.ds-metrics-elastic_agent.filebeat-default-2023.08.21-000003', + '.ds-detonate_results_telemetry-2022.08.18-000009', + 'apm-7.14.2-span-000001', + 'apm-7.14.2-span-000002', + 'apm-7.14.2-span-000003', + '.ds-task_metrics_elastic-2023.10.18-000010', + 'apm-7.14.2-span-000004', + 'apm-7.14.2-span-000006', + 'apm-7.14.2-span-000005', + 'apm-7.14.2-span-000008', + 'apm-7.14.2-span-000007', + 'apm-7.14.2-span-000009', + 'apm-7.16.2-span-000010', + 'apm-7.16.2-span-000011', + 'shrink-0gwu-.ds-alert_telemetry_elastic-2023.10.31-000041', + '.ds-security_lists_telemetry_elastic-2023.11.17-000042', + 'shrink-y3pl-.ds-alert_telemetry_elastic-2023.11.30-000044', + '.ds-metrics-elastic_agent.filebeat-default-2023.07.22-000002', + '.ds-detonate_results_telemetry-2022.07.19-000008', + 'apm-7.16.1-profile-000001', + 'apm-7.16.1-profile-000002', + 'apm-7.16.1-profile-000003', + 'apm-7.16.1-profile-000004', + 'apm-7.16.1-profile-000005', + 'apm-7.16.1-profile-000006', + 'apm-7.16.1-profile-000007', + 'apm-7.16.1-profile-000008', + 'apm-7.16.1-profile-000009', + 'apm-7.14.2-span-000011', + '.ds-metrics-apm.app.apm_server-default-2024.06.24-000012', + 'apm-7.14.2-span-000010', + 'apm-7.14.2-span-000013', + 'apm-7.14.2-span-000012', + 'apm-7.14.2-error-000001', + 'apm-7.14.2-error-000002', + 'apm-7.14.2-error-000003', + 'apm-7.14.2-error-000004', + 'apm-7.14.2-error-000005', + 'apm-7.14.2-error-000006', + 'apm-7.14.2-error-000007', + 'apm-7.14.2-error-000008', + 'apm-7.14.2-error-000009', + 'shrink-kbvc-.ds-kibana-snapshot-2024.04.24-000046', + '.kibana-observability-ai-assistant-conversations-000001', + 'apm-7.16.1-profile-000010', + '.kibana_7.12.0_001', + 'apm-7.16.1-profile-000011', + 'apm-7.14.2-error-000010', + 'apm-7.14.2-error-000011', + 'apm-7.14.2-error-000012', + 'apm-7.14.2-error-000013', + '.ds-yaas_alert_telemetry-2022.06.11-000009', + '.ds-cluster_telemetry_elastic-2024.06.05-000058', + '.ds-detections_alert_telemetry_elastic-2024.09.29-000079', + 'apm-7.13.2-profile-000001', + 'apm-7.13.2-profile-000002', + 'apm-7.13.2-profile-000003', + 'apm-7.13.2-profile-000004', + 'apm-7.13.2-profile-000005', + 'apm-7.13.2-profile-000006', + 'apm-7.13.2-profile-000007', + 'apm-7.13.2-profile-000008', + 'apm-7.13.2-profile-000009', + 'model_tracking_latest-1', + 'model_tracking_latest-2', + 'model_tracking_latest-3', + 'model_tracking_latest-6', + '.ds-yaas_alert_telemetry-2022.05.12-000008', + '.ds-cluster_telemetry_elastic-2024.05.06-000056', + 'model_tracking_latest-8', + 'ia-cti-triaged-alerts', + 'apm-7.13.2-profile-000010', + 'apm-7.13.2-profile-000011', + 'apm-7.13.2-profile-000012', + 'apm-7.13.2-profile-000013', + 'apm-7.13.2-profile-000014', + 'apm-7.13.2-profile-000015', + 'apm-7.13.2-profile-000016', + 'apm-7.13.2-profile-000017', + '.ds-alert_timelines_elastic-2024.04.28-000050', + 'shrink-iriq-.ds-kibana-snapshot-2024.03.25-000043', + '.ds-detection_rule_cluster_details-2022.11.05-000010', + 'apm-7.15.1-transaction-000004', + 'apm-7.10.0-transaction-000001', + 'apm-7.10.0-transaction-000002', + 'apm-7.10.0-transaction-000003', + 'apm-7.10.0-transaction-000004', + 'apm-7.10.0-transaction-000005', + 'apm-7.10.0-transaction-000006', + 'apm-7.10.0-transaction-000007', + 'apm-7.10.0-transaction-000008', + 'apm-7.10.0-transaction-000009', + '.ds-metrics-fleet_server.agent_status-default-2024.07.20-000002', + '.ds-yaas_alert_telemetry-2022.09.09-000012', + '.ds-alert_timelines_elastic-2024.03.29-000047', + 'apm-7.15.1-transaction-000009', + 'apm-7.15.1-transaction-000008', + 'apm-7.15.1-transaction-000007', + 'apm-7.15.1-transaction-000006', + 'apm-7.15.1-transaction-000005', + 'apm-7.15.1-transaction-000003', + 'apm-7.15.1-transaction-000002', + 'model_tracking_latest-a', + 'apm-7.15.1-transaction-000001', + 'model_tracking_latest-d', + 'model_tracking_latest-e', + 'test_metadata', + '.ds-endpoint_metadata_telemetry_elastic-2024.02.18-000055', + 'apm-7.15.1-transaction-000011', + 'apm-7.15.1-transaction-000012', + 'apm-7.15.1-transaction-000013', + 'apm-7.10.0-transaction-000010', + 'apm-7.10.0-transaction-000011', + 'apm-7.10.0-transaction-000012', + 'apm-7.10.0-transaction-000013', + 'apm-7.10.0-transaction-000014', + 'apm-7.10.0-transaction-000015', + 'apm-7.10.0-transaction-000016', + 'apm-7.10.0-transaction-000017', + 'apm-7.10.0-transaction-000018', + 'apm-7.10.0-transaction-000019', + 'apm-7.15.1-transaction-000010', + '.ds-endpoint_metadata_telemetry_elastic-2024.01.19-000053', + 'apm-7.10.0-transaction-000020', + 'apm-7.10.0-transaction-000021', + 'apm-7.10.0-transaction-000022', + 'apm-7.10.0-transaction-000023', + 'apm-7.10.0-transaction-000024', + '.ds-alert_telemetry_elastic-2024.05.28-000069', + '.ds-alert_telemetry_elastic-2024.06.27-000072', + 'apm-7.16.1-error-000001', + 'apm-7.16.1-error-000002', + 'apm-7.16.1-error-000003', + 'apm-7.16.1-error-000004', + 'apm-7.16.1-error-000005', + 'apm-7.16.1-error-000006', + 'apm-7.16.1-error-000007', + 'apm-7.16.1-error-000008', + 'apm-7.16.1-error-000009', + '.ds-endpoint_metadata_telemetry_elastic-2024.09.15-000072', + 'apm-7.15.1-profile-000001', + 'apm-7.15.1-profile-000002', + 'apm-7.15.1-profile-000003', + 'apm-7.15.1-profile-000004', + 'apm-7.15.1-profile-000005', + 'apm-7.15.1-profile-000006', + 'apm-7.15.1-profile-000007', + 'apm-7.15.1-profile-000008', + 'apm-7.15.1-profile-000009', + 'shrink-ujrr-.ds-detections_alert_telemetry_elastic-2024.01.03-000046', + 'apm-7.16.1-error-000010', + 'apm-7.16.1-error-000011', + '.internal.alerts-ml.anomaly-detection.alerts-default-000001', + '.ds-endpoint_metadata_telemetry_elastic-2024.08.16-000070', + '.ds-security_lists_telemetry_elastic-2024.02.15-000048', + '.ds-endpoint_metadata_telemetry_elastic-2024.07.17-000068', + '.ds-v2_enrichment_data_cloud-2023.10.14-000013', + 'apm-7.15.1-profile-000010', + 'apm-7.15.1-profile-000011', + 'apm-7.15.1-profile-000012', + 'apm-7.15.1-profile-000013', + 'us-airports', + '.ds-insights_telemetry_elastic-2024.03.10-000042', + 'apm-7.13.2-onboarding-2021.06.15', + '.ds-security_lists_telemetry_elastic-2024.01.16-000046', + '.ds-detonate_results_telemetry-2022.10.17-000011', + '.ds-security_lists_telemetry_elastic-2024.09.12-000062', + 'test-index-1', + 'filebeat-7.12.0-2021.04.08', + '.siem-signals-default-000001', + '.siem-signals-default-000002', + '.siem-signals-default-000003', + '.siem-signals-default-000004', + '.siem-signals-default-000005', + '.siem-signals-default-000006', + '.siem-signals-default-000007', + '.siem-signals-default-000008', + '.siem-signals-default-000009', + 'shrink-b_x8-.ds-detections_alert_telemetry_elastic-2023.10.05-000037', + '.ds-security_lists_telemetry_elastic-2024.08.13-000060', + '.ds-security_lists_telemetry_elastic-2024.07.14-000058', + '.siem-signals-default-000010', + '.siem-signals-default-000011', + '.siem-signals-default-000012', + '.siem-signals-default-000013', + '.siem-signals-default-000014', + '.siem-signals-default-000015', + '.siem-signals-default-000016', + '.siem-signals-default-000017', + '.ds-sample-tags-tracking-2022.06.08-000006', + '.siem-signals-default-000018', + '.siem-signals-default-000019', + '.ds-inline_lookup_decision_tracking-2022.06.05-000006', + '.slm-history-3-000004', + '.kibana_task_manager_7.17.0_001', + 'apm-7.13.2-span-000001', + 'apm-7.13.2-span-000002', + 'apm-7.13.2-span-000003', + 'apm-7.13.2-span-000004', + 'apm-7.13.2-span-000005', + 'apm-7.13.2-span-000006', + '.siem-signals-default-000020', + '.siem-signals-default-000021', + '.siem-signals-default-000022', + '.siem-signals-default-000023', + 'apm-7.13.2-span-000008', + 'apm-7.13.2-span-000009', + 'apm-7.13.2-span-000007', + '.ds-inline_lookup_decision_tracking-2022.05.06-000005', + '.ds-sample-tags-tracking-2022.05.09-000005', + 'latest-cluster_telemetry_elastic', + '.ds-detection_rule_cluster_metrics-2022.11.05-000010', + 'apm-7.11.0-error-000001', + 'apm-7.11.0-error-000002', + 'apm-7.11.0-error-000003', + '.ds-logs-elastic_agent.metricbeat-default-2023.08.21-000003', + 'apm-7.11.0-error-000005', + 'apm-7.11.0-error-000006', + 'apm-7.11.0-error-000007', + 'apm-7.11.0-error-000008', + 'apm-7.11.0-transaction-000001', + '.ds-metrics-fleet_server.agent_status-default-2024.09.18-000004', + 'apm-7.11.0-transaction-000003', + 'apm-7.11.0-transaction-000002', + 'apm-7.11.0-transaction-000005', + 'apm-7.11.0-transaction-000006', + 'apm-7.11.0-transaction-000007', + 'apm-7.11.0-transaction-000008', + '.ds-cluster_telemetry_elastic-2023.10.09-000042', + 'apm-7.11.0-transaction-000009', + 'apm-7.11.0-transaction-000004', + 'apm-7.11.0-error-000009', + 'apm-7.11.0-error-000004', + 'apm-7.12.0-profile-000008', + 'apm-7.12.0-profile-000009', + 'apm-7.12.0-profile-000001', + 'apm-7.12.0-profile-000002', + 'apm-7.12.0-profile-000003', + 'apm-7.12.0-profile-000004', + 'apm-7.12.0-profile-000005', + 'apm-7.12.0-profile-000006', + 'apm-7.12.0-profile-000007', + 'apm-7.11.0-error-000010', + '.kibana_7.16.1_001', + 'apm-7.11.0-error-000012', + 'apm-7.11.0-error-000011', + 'apm-7.11.0-error-000014', + 'apm-7.11.0-error-000015', + '.ds-metrics-fleet_server.agent_status-default-2024.08.19-000003', + 'rollup-cluster_telemetry_elastic', + 'apm-7.11.0-error-000018', + 'apm-7.11.0-error-000019', + 'apm-7.11.0-error-000017', + 'apm-7.11.0-error-000016', + 'apm-7.11.0-error-000013', + 'apm-7.12.0-profile-000010', + 'apm-7.12.0-profile-000011', + '.ds-telemetry_usage-2024.06.01-000046', + 'apm-7.12.0-profile-000012', + 'apm-7.12.0-profile-000013', + 'apm-7.12.0-profile-000014', + 'apm-7.12.0-profile-000015', + 'apm-7.12.0-profile-000016', + 'apm-7.12.0-profile-000019', + 'apm-7.12.0-profile-000017', + 'apm-7.12.0-profile-000018', + 'apm-7.13.2-span-000015', + 'apm-7.13.2-span-000016', + 'apm-7.13.2-span-000013', + 'shrink-h4sx-.ds-detections_alert_telemetry_elastic-2024.03.03-000052', + 'apm-7.13.2-span-000014', + 'apm-7.13.2-span-000011', + 'apm-7.13.2-span-000012', + 'apm-7.11.0-error-000020', + 'apm-7.11.0-error-000021', + 'apm-7.11.0-error-000022', + 'apm-7.13.2-span-000010', + 'apm-7.13.2-span-000017', + 'apm-7.11.0-transaction-000014', + 'apm-7.11.0-transaction-000013', + 'apm-7.11.0-transaction-000012', + 'apm-7.11.0-transaction-000011', + 'apm-7.11.0-transaction-000010', + 'apm-7.11.0-transaction-000019', + 'apm-7.11.0-transaction-000018', + 'apm-7.12.0-profile-000020', + 'apm-7.11.0-transaction-000017', + 'apm-7.11.0-transaction-000016', + '.ds-alert_timelines_elastic-2024.09.25-000066', + 'apm-7.11.0-transaction-000015', + 'apm-7.11.0-transaction-000022', + 'apm-7.11.0-transaction-000021', + 'apm-7.11.0-transaction-000020', + 'shrink-wl9p-.ds-alert_telemetry_elastic-2024.02.28-000053', + '.ds-logs-elastic_agent.metricbeat-default-2023.07.22-000002', + '.ds-telemetry_usage-2023.09.05-000028', + 'apm-7.12.0-metric-000001', + 'apm-7.12.0-metric-000002', + 'apm-7.12.0-metric-000003', + 'apm-7.12.0-metric-000004', + 'apm-7.12.0-metric-000005', + 'apm-7.12.0-metric-000006', + 'apm-7.12.0-metric-000007', + 'apm-7.12.0-metric-000008', + 'apm-7.12.0-metric-000009', + '.ds-alert_timelines_elastic-2024.08.26-000063', + '.ds-logs-elastic_agent-default-2023.08.21-000003', + 'apm-7.17.0-span-000001', + 'apm-7.17.0-span-000002', + 'apm-7.17.0-span-000003', + 'apm-7.17.0-span-000004', + 'apm-7.17.0-span-000005', + 'apm-7.17.0-span-000006', + '.lists-default-000001', + 'apm-7.17.0-span-000008', + 'apm-7.17.0-span-000009', + 'apm-7.17.0-span-000007', + '.ds-download_stats_telemetry_elastic-2023.03.09-000018', + 'apm-7.12.0-metric-000010', + 'apm-7.12.0-metric-000011', + 'apm-7.12.0-metric-000012', + 'apm-7.12.0-metric-000013', + 'apm-7.12.0-metric-000014', + 'apm-7.12.0-metric-000015', + 'apm-7.12.0-metric-000016', + 'apm-7.12.0-metric-000017', + 'apm-7.12.0-metric-000018', + 'apm-7.12.0-metric-000019', + '.ds-alert_timelines_elastic-2024.07.27-000060', + 'detection_alert_telemetry_elastic', + '.kibana_7.14.2_001', + '.ds-logs-elastic_agent-default-2023.07.22-000002', + 'failed-docs-000001', + 'apm-7.12.0-metric-000020', + '.ds-insights_telemetry_elastic-2024.01.10-000038', + 'metrics-endpoint.metadata_current_default', + '.ds-detections_alert_telemetry_elastic-2024.07.01-000067', + 'apm-7.16.2-transaction-000001', + 'apm-7.16.2-transaction-000002', + 'apm-7.16.2-transaction-000003', + 'apm-7.16.2-transaction-000004', + 'apm-7.16.2-transaction-000005', + 'apm-7.16.2-transaction-000006', + 'apm-7.16.2-transaction-000007', + 'apm-7.16.2-transaction-000008', + 'apm-7.16.2-transaction-000009', + 'apm-7.10.2-metric-000001', + 'apm-7.10.2-metric-000002', + 'apm-7.10.2-metric-000003', + 'apm-7.10.2-metric-000004', + 'apm-7.10.2-metric-000005', + 'apm-7.10.2-metric-000006', + 'apm-7.10.2-metric-000007', + 'apm-7.10.2-metric-000008', + 'apm-7.10.2-metric-000009', + '.kibana_task_manager_7.12.0_001', + '.ds-logs-generic-default-2023.09.07-000002', + 'apm-7.13.2-transaction-000001', + 'apm-7.13.2-transaction-000002', + 'apm-7.13.2-transaction-000003', + 'apm-7.13.2-transaction-000004', + 'apm-7.13.2-transaction-000005', + 'apm-7.13.2-transaction-000006', + 'apm-7.13.2-transaction-000007', + 'apm-7.13.2-transaction-000008', + 'apm-7.13.2-transaction-000009', + 'apm-7.16.2-transaction-000011', + 'apm-7.16.2-transaction-000010', + 'apm-7.10.0-metric-000004', + 'apm-7.10.0-metric-000003', + 'apm-7.10.0-metric-000002', + 'apm-7.10.0-metric-000001', + 'apm-7.10.2-metric-000010', + 'apm-7.10.2-metric-000011', + 'apm-7.10.2-metric-000012', + 'apm-7.10.2-metric-000013', + 'apm-7.10.2-metric-000014', + 'apm-7.10.2-metric-000015', + 'apm-7.10.2-metric-000016', + 'apm-7.10.2-metric-000017', + 'apm-7.10.2-metric-000018', + 'apm-7.10.2-metric-000019', + 'apm-7.10.0-metric-000008', + 'apm-7.10.0-metric-000007', + 'apm-7.10.0-metric-000006', + 'shrink-_z0f-.ds-alert_timelines_elastic-2024.02.28-000044', + '.ds-security_lists_telemetry_elastic-2023.12.17-000044', + 'apm-7.13.2-transaction-000010', + 'apm-7.13.2-transaction-000011', + 'apm-7.13.2-transaction-000012', + 'apm-7.13.2-transaction-000013', + 'apm-7.13.2-transaction-000014', + 'apm-7.13.2-transaction-000015', + 'apm-7.13.2-transaction-000016', + 'apm-7.13.2-transaction-000017', + '.ds-metrics-fleet_server.agent_versions-default-2024.09.18-000004', + 'apm-7.10.0-metric-000005', + 'apm-7.10.0-metric-000011', + 'apm-7.10.0-metric-000010', + '.ds-kibana-snapshot-2024.09.21-000059', + 'apm-7.10.0-metric-000015', + 'apm-7.10.0-metric-000014', + 'apm-7.10.0-metric-000013', + 'apm-7.10.2-metric-000020', + 'apm-7.10.2-metric-000021', + 'apm-7.10.2-metric-000022', + 'apm-7.10.2-metric-000023', + 'apm-7.10.0-metric-000012', + 'apm-7.10.0-metric-000019', + 'test-rollup', + 'apm-7.10.0-metric-000018', + 'apm-7.10.0-metric-000017', + 'apm-7.10.0-metric-000016', + 'apm-7.10.0-metric-000009', + 'idx_processed_security-endpoint-metadata', + '.ds-logs-generic-default-2023.08.08-000001', + '.ds-metrics-fleet_server.agent_versions-default-2024.08.19-000003', + '.ds-detonate_results_telemetry-2022.05.20-000006', + 'apm-7.10.0-metric-000020', + 'apm-7.10.0-metric-000021', + 'apm-7.10.0-metric-000022', + 'apm-7.10.0-metric-000023', + 'apm-7.10.0-metric-000024', + '.ds-kibana-snapshot-2024.08.22-000057', + 'shrink-u5p4-.ds-kibana-snapshot-2024.05.24-000049', + '.ds-yaas_alert_telemetry-2022.02.11-000005', + '.ds-kibana-snapshot-2024.07.23-000054', + '.ds-detonate_results_telemetry-2022.09.17-000010', + '.kibana_7.13.2_001', + 'apm-7.15.1-metric-000001', + 'apm-7.15.1-metric-000002', + 'apm-7.15.1-metric-000003', + 'apm-7.15.1-metric-000004', + 'apm-7.15.1-metric-000005', + 'apm-7.15.1-metric-000006', + 'apm-7.15.1-metric-000007', + 'apm-7.15.1-metric-000008', + 'apm-7.15.1-metric-000009', + '.ds-logs-ingest-vt-reports-test-default-2023.06.23-000001', + '.ds-yaas_alert_telemetry-2022.01.12-000004', + '.internal.alerts-default.alerts-default-000001', + 'apm-7.15.1-metric-000010', + 'apm-7.15.1-metric-000011', + 'apm-7.15.1-metric-000012', + 'apm-7.15.1-metric-000013', + '.ds-telemetry_usage-2023.11.04-000032', + 'apm-7.10.2-span-000001', + 'apm-7.10.2-span-000002', + 'apm-7.10.2-span-000003', + 'apm-7.10.2-span-000004', + 'apm-7.10.2-span-000005', + 'apm-7.10.2-span-000006', + 'apm-7.10.2-span-000007', + 'apm-7.10.2-span-000008', + 'apm-7.10.2-span-000009', + '.ds-telemetry_usage-2023.10.05-000030', + 'apm-7.10.2-span-000010', + 'apm-7.10.2-span-000011', + 'apm-7.10.2-span-000012', + '.fleet-enrollment-api-keys-7', + 'apm-7.10.2-span-000013', + 'apm-7.10.2-span-000014', + 'apm-7.10.2-span-000016', + 'apm-7.10.2-span-000017', + 'apm-7.10.2-span-000018', + 'apm-7.10.2-span-000019', + 'apm-7.10.2-span-000015', + 'summary-cluster_telemetry_elastic', + '.ds-metrics-elastic_agent.elastic_agent-default-2023.08.21-000003', + '.ds-detections_alert_telemetry_elastic_v2-2023.01.11-000001', + 'apm-7.10.2-span-000020', + '.ds-v2_alert_telemetry_elastic-2023.01.11-000001', + 'apm-7.10.2-span-000021', + 'apm-7.10.2-span-000023', + 'apm-7.10.2-span-000022', + '.ds-metrics-elastic_agent.elastic_agent-default-2023.07.22-000002', + '.fleet-artifacts-7', + '.kibana_7.16.2_001', + '.ds-machine_learning_cluster_details-2022.11.07-000010', + '.ds-cluster_telemetry_elastic-2023.09.09-000040', + 'threatintel-2021.08.19-000001', + 'ilm-history-3-000004', + 'my-index-permissions', + '.ds-detections_alert_telemetry_elastic-2024.04.02-000058', + '.ds-alert_telemetry_endgame-2022.11.05-000086', + '.ds-endpoint_metadata_telemetry_elastic-2023.09.21-000045', + 'shrink-jwq5-.ds-alert_timelines_elastic-2024.01.29-000041', + '.ds-insights_telemetry_elastic-2024.09.06-000054', + 'kibana_snapshot', + '.ds-insights_telemetry_elastic-2023.12.11-000036', + 'metrics-index_pattern_placeholder', + '.ds-insights_telemetry_elastic-2024.08.07-000052', + 'shrink-48kl-.ds-detections_alert_telemetry_elastic-2023.12.04-000043', + 'apm-7.17.0-metric-000001', + 'failure-alert_telemetry_unified', + 'apm-7.17.0-metric-000002', + 'apm-7.17.0-metric-000003', + 'apm-7.17.0-metric-000004', + 'apm-7.17.0-metric-000005', + '.ds-insights_telemetry_elastic-2024.07.08-000050', + 'apm-7.17.0-metric-000006', + 'shrink-gqzj-.ds-detections_alert_telemetry_elastic-2024.02.02-000049', + 'apm-7.17.0-metric-000007', + 'apm-7.17.0-metric-000008', + 'apm-7.17.0-metric-000009', + '.ds-inline_lookup_decision_tracking-2022.02.05-000002', + '.ds-sample-tags-tracking-2021.12.21-000001', + '.kibana_task_manager_7.16.1_001', + '.ds-sample-tags-tracking-2022.02.08-000002', + '.ds-model_tracking_historical-2021.05.11-000004', + 'my-index-000001', + 'my-index-000002', + 'shrink-cgef-.ds-alert_telemetry_elastic-2024.01.29-000050', + '.ds-inline_lookup_decision_tracking-2022.01.06-000001', + '.security-tokens-7', + '.ds-telemetry_usage-2024.01.03-000036', + 'shrink-ixws-.ds-alert_timelines_elastic-2023.12.21-000037', + 'shrink-ud5m-.ds-alert_timelines_elastic-2023.12.30-000038', + '.ds-sample-tags-tracking-2022.03.10-000003', + 'apm-7.10.2-error-000001', + 'apm-7.10.2-error-000002', + 'apm-7.10.2-error-000003', + 'apm-7.10.2-error-000004', + 'apm-7.10.2-error-000005', + 'apm-7.10.2-error-000006', + 'apm-7.10.2-error-000007', + 'apm-7.10.2-error-000008', + 'apm-7.10.2-error-000009', + '.transform-notifications-000002', + '.ds-cluster_telemetry_elastic-2024.04.06-000054', + 'apm-7.17.0-profile-000001', + 'apm-7.17.0-profile-000002', + 'apm-7.17.0-profile-000003', + 'apm-7.17.0-profile-000004', + 'apm-7.17.0-profile-000005', + 'apm-7.17.0-profile-000006', + 'apm-7.17.0-profile-000007', + 'apm-7.17.0-profile-000008', + 'apm-7.17.0-profile-000009', + 'apm-7.10.2-error-000015', + 'apm-7.10.2-error-000014', + 'apm-7.10.2-error-000017', + 'apm-7.10.2-error-000016', + 'apm-7.10.2-error-000011', + 'apm-7.10.2-error-000010', + 'apm-7.10.2-error-000013', + 'apm-7.10.2-error-000012', + 'apm-7.10.2-error-000019', + 'apm-7.10.2-error-000018', + 'shrink-pcsa-.ds-alert_telemetry_elastic-2023.10.27-000040', + '.ds-yaas_alert_telemetry-2022.03.13-000006', + '.ds-metrics-fleet_server.agent_status-default-2024.06.20-000001', + 'shrink-d-hy-.ds-alert_telemetry_elastic-2023.12.30-000047', + '.ds-cluster_telemetry_elastic-2024.03.07-000052', + 'alert_telemetry_labels', + 'apm-7.10.2-error-000020', + 'apm-7.10.2-error-000021', + 'apm-7.10.2-error-000022', + 'apm-7.10.2-error-000023', + '.ds-yaas_alert_telemetry-2021.12.13-000003', + '.security-7', + '.ds-cluster_telemetry_elastic-2023.11.08-000044', + 'apm-7.16.2-profile-000001', + 'apm-7.16.2-profile-000002', + 'apm-7.16.2-profile-000003', + 'apm-7.16.2-profile-000004', + 'apm-7.16.2-profile-000005', + 'apm-7.16.2-profile-000006', + 'apm-7.16.2-profile-000007', + 'apm-7.16.2-profile-000008', + 'apm-7.16.2-profile-000009', + 'apm-7.16.1-transaction-000001', + 'apm-7.16.1-transaction-000003', + 'apm-7.16.1-transaction-000006', + 'apm-7.16.1-transaction-000007', + 'apm-7.16.1-transaction-000008', + 'apm-7.16.1-transaction-000009', + 'apm-7.16.1-transaction-000002', + 'apm-7.16.1-transaction-000005', + 'apm-7.16.1-transaction-000004', + 'apm-7.10.2-onboarding-2021.02.03', + 'apm-7.10.2-onboarding-2021.02.04', + '.ds-alert_telemetry_elastic-2024.04.28-000066', + 'apm-7.16.2-profile-000010', + 'apm-7.16.2-profile-000011', + '.ds-logs-vt_reports_gold_table_export-default-2023.06.22-000001', + 'apm-7.16.1-transaction-000010', + 'apm-7.16.1-transaction-000011', + '.ds-endpoint_metadata_telemetry_elastic-2023.11.20-000049', + '.internal.alerts-ml.anomaly-detection-health.alerts-default-000001', + '.ds-enrichment_data_cloud-2022.12.02-000013', + '.ds-alert_telemetry_elastic-2024.03.29-000062', + '.kibana_task_manager_7.15.1_001', + '.ds-endpoint_metadata_telemetry_elastic-2023.10.21-000047', + '.ds-endpoint_metadata_telemetry_elastic-2024.06.17-000066', + '.internal.alerts-stack.alerts-default-000001', + 'apm-7.13.2-metric-000001', + 'apm-7.13.2-metric-000002', + 'apm-7.13.2-metric-000003', + 'apm-7.13.2-metric-000004', + 'apm-7.13.2-metric-000005', + 'apm-7.13.2-metric-000006', + 'apm-7.13.2-metric-000007', + 'apm-7.13.2-metric-000008', + 'apm-7.13.2-metric-000009', + '.enrich-enrich-alerts-cust-info-1618854141382', + '.enrich-enrich-alerts-hash-1618853111243', + '.ds-endpoint_metadata_telemetry_elastic-2024.05.18-000064', + 'apm-7.13.2-metric-000010', + 'apm-7.13.2-metric-000011', + 'apm-7.13.2-metric-000012', + 'apm-7.13.2-metric-000013', + 'apm-7.13.2-metric-000014', + 'apm-7.13.2-metric-000015', + 'apm-7.13.2-metric-000016', + 'apm-7.13.2-metric-000017', + 'security_solution_signals_test2', + 'security_solution_signals_test0', + 'security_solution_signals_test9', + '.internal.alerts-observability.apm.alerts-default-000001', + '.kibana_task_manager_7.13.2_001', + 'apm-7.13.2-error-000001', + 'apm-7.13.2-error-000002', + 'apm-7.13.2-error-000003', + 'apm-7.13.2-error-000004', + 'apm-7.13.2-error-000005', + 'apm-7.13.2-error-000006', + 'apm-7.13.2-error-000007', + 'apm-7.13.2-error-000008', + 'apm-7.13.2-error-000009', + '.ds-insights_telemetry_elastic-2024.04.09-000044', + '.ds-security_lists_telemetry_elastic-2024.06.14-000056', + 'apm-7.11.0-span-000001', + 'apm-7.11.0-span-000002', + 'apm-7.11.0-span-000003', + 'apm-7.11.0-span-000004', + 'apm-7.11.0-span-000005', + 'apm-7.11.0-span-000006', + 'apm-7.11.0-span-000007', + 'apm-7.11.0-span-000008', + 'apm-7.11.0-span-000009', + '.internal.alerts-observability.uptime.alerts-default-000001', + 'apm-7.13.2-error-000010', + 'apm-7.13.2-error-000011', + 'apm-7.13.2-error-000012', + 'apm-7.13.2-error-000013', + 'apm-7.13.2-error-000014', + 'apm-7.13.2-error-000015', + 'apm-7.13.2-error-000016', + 'apm-7.13.2-error-000017', + 'apm-7.10.2-onboarding-2021.01.14', + '.fleet-servers-7', + '.ds-security_lists_telemetry_elastic-2024.05.15-000054', + 'apm-7.11.0-span-000010', + 'apm-7.11.0-profile-000001', + 'apm-7.11.0-profile-000002', + 'apm-7.11.0-profile-000003', + 'apm-7.11.0-profile-000004', + 'apm-7.11.0-profile-000005', + 'apm-7.11.0-profile-000006', + 'apm-7.11.0-profile-000007', + 'apm-7.11.0-profile-000008', + 'apm-7.11.0-profile-000009', + 'apm-7.11.0-span-000014', + 'apm-7.11.0-span-000013', + 'apm-7.11.0-span-000016', + 'apm-7.11.0-span-000015', + 'apm-7.11.0-span-000018', + 'apm-7.11.0-span-000017', + 'apm-7.11.0-span-000019', + 'apm-7.11.0-span-000012', + 'apm-7.11.0-span-000011', + '.fleet-policies-leader-7', + '.ds-metrics-fleet_server.agent_versions-default-2024.06.20-000001', + '.ds-sample-tags-tracking-2022.04.09-000004', + 'security-rollups-hourly', + 'test-bq-export', + '.internal.alerts-observability.slo.alerts-default-000001', + 'apm-7.11.0-profile-000010', + 'apm-7.11.0-profile-000011', + 'apm-7.11.0-profile-000012', + 'apm-7.11.0-profile-000013', + 'apm-7.11.0-profile-000014', + 'apm-7.11.0-profile-000015', + 'apm-7.11.0-profile-000016', + 'apm-7.11.0-profile-000017', + 'apm-7.11.0-profile-000018', + 'apm-7.11.0-profile-000019', + 'apm-7.11.0-span-000021', + 'apm-7.11.0-span-000020', + '.ds-inline_lookup_decision_tracking-2022.03.07-000003', + 'apm-7.11.0-span-000022', + 'apm-7.10.2-transaction-000001', + 'apm-7.10.2-profile-000001', + 'apm-7.10.2-profile-000002', + 'apm-7.10.2-profile-000003', + 'apm-7.10.2-profile-000004', + '.ds-cluster_telemetry_elastic-2024.02.06-000050', + 'apm-7.10.2-profile-000005', + 'apm-7.10.2-profile-000006', + 'apm-7.10.2-profile-000008', + 'apm-7.10.2-profile-000009', + '.ds-cluster_telemetry_elastic-2024.01.07-000048', + 'apm-7.10.2-profile-000007', + 'alerts-detections', + 'apm-7.10.2-transaction-000002', + 'apm-7.10.2-transaction-000004', + 'apm-7.11.0-profile-000020', + 'apm-7.11.0-profile-000021', + 'apm-7.11.0-profile-000022', + 'apm-7.10.2-transaction-000003', + 'apm-7.10.2-transaction-000009', + 'apm-7.10.2-transaction-000006', + 'apm-7.10.2-transaction-000005', + 'apm-7.10.2-transaction-000008', + 'apm-7.10.2-transaction-000007', + '.ds-logs-elastic_agent.metricbeat-default-2023.06.22-000001', + '.ds-logs-ingest-vt-reports-test-default-2023.07.23-000002', + 'apm-7.10.2-transaction-000010', + 'apm-7.10.2-profile-000010', + 'apm-7.10.2-profile-000011', + 'apm-7.10.2-profile-000012', + 'apm-7.10.2-profile-000013', + 'apm-7.10.2-profile-000014', + 'apm-7.10.2-profile-000015', + 'apm-7.10.2-profile-000016', + 'apm-7.10.2-profile-000017', + 'apm-7.10.2-profile-000018', + 'apm-7.10.2-profile-000019', + '.kibana_task_manager_7.16.2_001', + 'apm-7.10.2-transaction-000013', + 'apm-7.10.2-transaction-000012', + 'apm-7.10.2-transaction-000015', + 'apm-7.10.2-transaction-000014', + 'apm-7.10.2-transaction-000011', + 'apm-7.10.2-transaction-000017', + 'apm-7.10.2-transaction-000016', + 'apm-7.10.2-transaction-000019', + 'apm-7.10.2-transaction-000018', + '.fleet-policies-7', + 'apm-7.12.0-transaction-000009', + 'apm-7.12.0-transaction-000005', + 'apm-7.12.0-transaction-000006', + 'apm-7.12.0-transaction-000007', + 'apm-7.12.0-transaction-000008', + 'apm-7.12.0-transaction-000001', + '.internal.alerts-observability.metrics.alerts-default-000001', + 'apm-7.15.1-error-000002', + 'apm-7.15.1-error-000001', + '.ds-telemetry_usage-2024.04.02-000042', + 'apm-7.10.2-profile-000020', + 'apm-7.10.2-profile-000021', + 'apm-7.10.2-profile-000022', + 'apm-7.10.2-profile-000023', + '.ds-yaas_alert_telemetry-2022.08.10-000011', + 'apm-7.10.2-transaction-000023', + 'apm-7.10.2-transaction-000020', + 'apm-7.10.2-transaction-000022', + 'apm-7.10.2-transaction-000021', + 'apm-7.15.1-error-000004', + 'apm-7.15.1-error-000003', + 'apm-7.15.1-error-000006', + 'apm-7.15.1-error-000005', + 'apm-7.15.1-error-000008', + 'apm-7.15.1-error-000007', + 'apm-7.15.1-error-000009', + 'apm-7.12.0-transaction-000002', + 'apm-7.12.0-transaction-000003', + 'apm-7.12.0-transaction-000004', + 'apm-7.12.0-transaction-000016', + 'apm-7.12.0-transaction-000017', + 'apm-7.12.0-transaction-000018', + 'apm-7.12.0-transaction-000019', + 'apm-7.12.0-transaction-000012', + 'apm-7.12.0-transaction-000013', + '.ds-telemetry_usage-2024.03.03-000040', + 'apm-7.15.1-error-000010', + 'onweek_rules_browser_index', + 'apm-7.15.1-error-000011', + '.ds-yaas_alert_telemetry-2022.07.11-000010', + 'apm-7.15.1-error-000013', + 'apm-7.15.1-error-000012', + '.ds-alert_timelines_elastic-2024.06.27-000057', + 'apm-7.12.0-transaction-000014', + 'apm-7.12.0-transaction-000015', + 'apm-7.12.0-transaction-000010', + 'apm-7.12.0-transaction-000011', + 'apm-7.16.1-onboarding-2021.12.16', + 'apm-7.16.1-onboarding-2021.12.15', + 'apm-7.12.0-transaction-000020', + '.ds-alert_timelines_elastic-2024.05.28-000053', + 'apm-7.12.0-error-000001', + 'apm-7.12.0-error-000002', + 'apm-7.12.0-error-000003', + 'apm-7.12.0-error-000004', + 'apm-7.12.0-error-000005', + 'apm-7.12.0-error-000006', + 'apm-7.12.0-error-000007', + 'apm-7.12.0-error-000008', + 'apm-7.12.0-error-000009', + 'failure-alert_telemetry_elastic', + '.ds-logs-elastic_agent-default-2023.06.22-000001', + '.ds-metrics-elastic_agent.filebeat-default-2023.11.27-000004', + 'apm-7.10.0-profile-000001', + 'apm-7.10.0-profile-000002', + 'apm-7.10.0-profile-000003', + 'apm-7.10.0-profile-000004', + 'apm-7.10.0-profile-000005', + 'apm-7.10.0-profile-000006', + 'apm-7.10.0-profile-000007', + 'apm-7.10.0-profile-000008', + 'apm-7.10.0-profile-000009', + 'apm-7.12.0-onboarding-2021.03.23', + 'apm-7.12.0-error-000010', + 'apm-7.12.0-error-000011', + 'apm-7.12.0-error-000012', + 'apm-7.12.0-error-000013', + 'apm-7.12.0-error-000014', + 'apm-7.12.0-error-000015', + 'apm-7.12.0-error-000016', + 'apm-7.12.0-error-000017', + 'apm-7.12.0-error-000018', + '.ds-alert_timelines_elastic_v2-2022.10.20-000002', + 'apm-7.12.0-error-000019', + '.ds-alert_telemetry_elastic-2024.09.25-000087', + '.ds-alert_telemetry_elastic-2024.08.26-000078', + 'dead-letter', + '.ds-detections_alert_telemetry_elastic-2024.06.01-000064', + 'apm-7.10.0-profile-000010', + 'apm-7.10.0-profile-000011', + 'apm-7.10.0-profile-000012', + 'apm-7.10.0-profile-000013', + 'apm-7.10.0-profile-000014', + 'apm-7.10.0-profile-000015', + 'apm-7.10.0-profile-000016', + 'apm-7.10.0-profile-000017', + 'apm-7.10.0-profile-000018', + 'apm-7.10.0-profile-000019', + 'data-dictionaries', + 'apm-7.12.0-error-000020', + '.ds-alert_telemetry_elastic-2024.07.27-000075', + '.ds-detections_alert_telemetry_elastic-2024.05.02-000061', + 'apm-7.10.0-profile-000020', + 'apm-7.10.0-profile-000021', + 'apm-7.10.0-profile-000022', + 'apm-7.10.0-profile-000023', + 'apm-7.10.0-profile-000024', + 'apm-7.17.0-error-000001', + 'shrink-e4jt-.ds-alert_timelines_elastic-2023.11.21-000034', + 'apm-7.17.0-error-000003', + 'apm-7.17.0-error-000002', + 'apm-7.17.0-error-000005', + 'apm-7.17.0-error-000006', + 'apm-7.17.0-error-000007', + 'apm-7.17.0-error-000008', + 'apm-7.17.0-error-000009', + 'apm-7.17.0-error-000004', + 'apm-7.16.1-span-000001', + 'apm-7.16.1-span-000002', + 'apm-7.16.1-span-000003', + 'apm-7.16.1-span-000004', + 'apm-7.16.1-span-000005', + 'apm-7.16.1-span-000006', + 'apm-7.16.1-span-000007', + 'apm-7.16.1-span-000008', + 'apm-7.16.1-span-000009', + '.ds-insights_telemetry_elastic-2024.02.09-000040', + '.ds-metrics-elastic_agent.elastic_agent-default-2023.11.27-000004', + '.ds-logs-elastic_agent.filebeat-default-2023.06.22-000001', + 'ia-signatures', + 'apm-7.16.2-onboarding-2021.12.20', + 'apm-7.14.2-transaction-000001', + 'apm-7.14.2-transaction-000002', + 'apm-7.14.2-transaction-000003', + 'apm-7.14.2-transaction-000005', + 'apm-7.14.2-transaction-000006', + 'apm-7.14.2-transaction-000007', + 'apm-7.14.2-transaction-000008', + 'apm-7.14.2-transaction-000009', + '.ds-security_lists_telemetry_elastic-2023.10.18-000040', + 'apm-7.14.2-transaction-000004', + 'apm-7.16.1-span-000011', + 'apm-7.10.0-error-000001', + 'apm-7.10.0-error-000002', + 'apm-7.10.0-error-000003', + 'apm-7.10.0-error-000004', + 'apm-7.10.0-error-000005', + 'apm-7.10.0-error-000006', + 'apm-7.10.0-error-000007', + 'apm-7.10.0-error-000008', + 'apm-7.10.0-error-000009', + '.ds-insights_telemetry_elastic-2023.09.12-000030', + '.ds-detonate_results_telemetry-2022.04.20-000003', + 'apm-7.12.0-span-000001', + 'apm-7.12.0-span-000005', + 'apm-7.12.0-span-000006', + 'apm-7.12.0-span-000007', + 'apm-7.12.0-span-000008', + 'apm-7.12.0-span-000002', + 'apm-7.12.0-span-000003', + 'apm-7.12.0-span-000004', + 'apm-7.12.0-span-000009', + 'apm-7.14.2-transaction-000012', + 'apm-7.14.2-transaction-000013', + 'apm-7.14.2-transaction-000010', + 'apm-7.14.2-transaction-000011', + 'apm-7.16.1-span-000010', + 'apm-7.10.0-span-000001', + 'apm-7.10.0-span-000002', + '.ds-sample-tags-tracking-2022.09.06-000009', + 'apm-7.10.0-error-000010', + 'apm-7.10.0-error-000011', + 'apm-7.10.0-error-000012', + 'apm-7.10.0-error-000014', + 'apm-7.10.0-error-000015', + 'apm-7.10.0-error-000013', + 'apm-7.10.0-error-000016', + 'apm-7.10.0-error-000018', + 'apm-7.10.0-error-000019', + 'apm-7.10.0-error-000017', + 'apm-7.10.0-span-000009', + 'apm-7.10.0-span-000007', + 'apm-7.10.0-span-000008', + 'apm-7.10.0-span-000005', + 'apm-7.10.0-span-000006', + 'apm-7.10.0-span-000003', + 'apm-7.10.0-span-000004', + 'apm-7.12.0-span-000016', + 'apm-7.12.0-span-000017', + 'apm-7.12.0-span-000018', + 'apm-7.12.0-span-000019', + 'apm-7.12.0-span-000012', + 'apm-7.12.0-span-000013', + 'apm-7.12.0-span-000014', + 'apm-7.12.0-span-000015', + 'apm-7.12.0-span-000010', + '.ds-sample-tags-tracking-2022.08.07-000008', + 'apm-7.10.0-span-000010', + 'apm-7.10.0-span-000011', + 'apm-7.10.0-span-000012', + 'apm-7.10.0-error-000020', + 'apm-7.10.0-error-000021', + 'apm-7.10.0-error-000022', + 'apm-7.10.0-error-000023', + 'apm-7.10.0-error-000024', + 'apm-7.10.0-span-000013', + 'apm-7.12.0-span-000011', + 'apm-7.10.0-span-000018', + 'apm-7.12.0-span-000020', + '.ds-detonate_results_telemetry-2022.06.19-000007', + 'apm-7.10.0-span-000019', + 'apm-7.10.0-span-000016', + 'apm-7.10.0-span-000017', + 'apm-7.10.0-span-000014', + 'apm-7.10.0-span-000015', + '.ds-inline_lookup_decision_tracking-2022.08.04-000008', + '.transform-internal-007', + '.transform-internal-006', + '.transform-internal-005', + '.ds-inline_lookup_decision_tracking-2022.09.03-000009', + '.ds-kibana-snapshot-2024.06.23-000052', + '.ds-inline_lookup_decision_tracking-2022.07.05-000007', + '.ds-metrics-elastic_agent.filebeat-default-2023.06.22-000001', + 'event-type-index', + '.ds-sample-tags-tracking-2022.07.08-000007', + '.ds-telemetry_usage-2024.02.02-000038', + 'apm-7.10.0-span-000020', + 'apm-7.10.0-span-000021', + 'apm-7.10.0-span-000022', + 'apm-7.10.0-span-000023', + 'apm-7.10.0-span-000024', + '.ds-cluster_telemetry_elastic-2023.12.08-000046', + '.ds-yaas_alert_telemetry-2022.04.12-000007', + '.kibana_task_manager_7.14.2_001', + '.ds-metrics-elastic_agent.elastic_agent-default-2023.06.22-000001', + '.ds-logs-vt_reports_gold_table_export-default-2023.07.22-000002', + 'apm-7.16.2-metric-000001', + 'apm-7.16.2-metric-000002', + 'apm-7.16.2-metric-000003', + 'apm-7.16.2-metric-000004', + 'apm-7.16.2-metric-000005', + 'apm-7.16.2-metric-000006', + 'apm-7.16.2-metric-000007', + 'apm-7.16.2-metric-000008', + 'apm-7.16.2-metric-000009', + '.internal.alerts-observability.threshold.alerts-default-000001', + 'apm-7.17.0-onboarding-2022.02.24', + '.ds-endpoint_metadata_telemetry_elastic-2023.12.20-000051', + '.internal.alerts-observability.logs.alerts-default-000001', + '.ds-machine_learning_cluster_metrics-2022.11.07-000010', + 'apm-7.16.2-metric-000010', + 'apm-7.16.2-metric-000011', + '.ds-osquery_packs_telemetry_elastic-2022.03.24-000001', + 'shrink-yvq6-.ds-alert_timelines_elastic-2023.10.22-000031', + 'apm-7.14.2-onboarding-2021.10.13', + 'ia-cs_extract', + 'idx_processed_security-stats', + '.ds-insights_telemetry_elastic-2023.11.11-000034', + 'machine_learning_cluster_metric', + '.ds-insights_telemetry_elastic-2024.06.08-000048', + '.kibana-observability-ai-assistant-kb-000001', + '.ds-insights_telemetry_elastic-2023.10.12-000032', + 'detection_rule_cluster_metric', + '.ds-insights_telemetry_elastic-2024.05.09-000046', + '.ds-inline_lookup_decision_tracking-2022.11.02-000011', + '.internal.alerts-security.alerts-default-000001', + '.ds-sample-tags-tracking-2022.11.05-000011', + 'apm-7.14.2-metric-000001', + 'apm-7.14.2-metric-000002', + 'apm-7.14.2-metric-000003', + 'apm-7.14.2-metric-000004', + 'data-dict-index', + 'apm-7.14.2-metric-000005', + 'apm-7.14.2-metric-000006', + 'apm-7.17.0-transaction-000001', + 'apm-7.17.0-transaction-000002', + 'apm-7.17.0-transaction-000003', + 'apm-7.17.0-transaction-000004', + 'apm-7.17.0-transaction-000005', + 'apm-7.17.0-transaction-000006', + 'apm-7.17.0-transaction-000007', + 'apm-7.17.0-transaction-000008', + 'apm-7.17.0-transaction-000009', + 'apm-7.14.2-metric-000009', + 'apm-7.14.2-metric-000007', + 'apm-7.14.2-metric-000008', + 'idx_processed_security-telemetry-usage', + '.ds-inline_lookup_decision_tracking-2022.10.03-000010', + 'shrink-imua-.ds-alert_timelines_elastic-2023.09.22-000028', + 'apm-7.15.1-span-000003', + 'apm-7.15.1-span-000004', + 'apm-7.15.1-span-000005', + 'apm-7.15.1-span-000006', + 'apm-7.15.1-span-000007', + 'apm-7.15.1-span-000008', + 'apm-7.15.1-span-000009', + 'apm-7.15.1-span-000001', + 'apm-7.15.1-span-000002', + 'apm-7.14.2-metric-000010', + 'apm-7.14.2-metric-000012', + 'apm-7.14.2-metric-000013', + 'apm-7.14.2-metric-000011', + '.ds-sample-tags-tracking-2022.10.06-000010', + '.ds-metrics-fleet_server.agent_versions-default-2024.07.20-000002', + 'apm-7.11.0-onboarding-2021.02.10', + 'apm-7.15.1-span-000010', + 'apm-7.15.1-span-000011', + 'apm-7.15.1-span-000012', + 'apm-7.15.1-span-000013', + 'logs-index_pattern_placeholder', + 'awesome-test', + '.ds-yaas_alert_telemetry-2022.10.09-000013', + 'test-vt-reports-export', + '.ds-task_metrics_elastic-2023.09.18-000005', + '.fleet-agents-7', + '.ds-security_lists_telemetry_elastic-2023.09.18-000038', + '.ds-inline_lookup_decision_tracking-2022.04.06-000004', + 'shrink-abnc-.ds-alert_telemetry_elastic-2023.09.27-000037', + 'shrink-5phn-.ds-detections_alert_telemetry_elastic-2023.11.04-000039', + '.ds-yaas_alert_telemetry-2021.11.13-000002', + '.ds-telemetry_usage-2024.05.02-000044', + 'apm-7.11.0-metric-000001', + 'apm-7.11.0-metric-000002', + 'apm-7.11.0-metric-000003', + 'apm-7.11.0-metric-000004', + 'apm-7.11.0-metric-000005', + 'apm-7.11.0-metric-000006', + 'apm-7.11.0-metric-000007', + 'apm-7.11.0-metric-000008', + 'apm-7.11.0-metric-000009', + '.ds-yaas_alert_telemetry-2021.10.14-000001', + '.ds-detections_alert_telemetry_elastic-2024.08.30-000073', + 'apm-7.15.1-onboarding-2021.10.19', + 'apm-7.11.0-metric-000010', + 'apm-7.11.0-metric-000011', + 'apm-7.11.0-metric-000012', + 'apm-7.11.0-metric-000013', + 'apm-7.11.0-metric-000014', + 'apm-7.11.0-metric-000015', + 'apm-7.11.0-metric-000016', + 'apm-7.11.0-metric-000017', + 'apm-7.11.0-metric-000018', + 'apm-7.11.0-metric-000019', + '.ds-detections_alert_telemetry_elastic-2024.07.31-000070', + '.ds-telemetry_usage-2023.12.04-000034', + '.kibana_7.17.0_001', + 'apm-7.11.0-metric-000021', + 'apm-7.11.0-metric-000022', + 'apm-7.11.0-metric-000020', + 'detection-rules-test', + '.ds-v2_detections_alert_telemetry_elastic-2022.09.11-000002', + 'apm-7.16.1-metric-000001', + 'apm-7.16.1-metric-000002', + 'apm-7.16.1-metric-000003', + 'apm-7.16.1-metric-000004', + 'apm-7.16.1-metric-000005', + 'apm-7.16.1-metric-000006', + 'apm-7.16.1-metric-000007', + 'apm-7.16.1-metric-000008', + 'apm-7.16.1-metric-000009', + '.ds-endpoint_metadata_telemetry_elastic-2024.04.18-000062', + 'machine_learning_cluster_detail', + '.items-default-000001', + 'apm-7.10.0-onboarding-2020.12.03', + 'apm-7.16.1-metric-000010', + 'apm-7.16.1-metric-000011', + '.ds-endpoint_metadata_telemetry_elastic-2024.03.19-000060', + 'apm-7.10.0-onboarding-2020.12.04', + 'apm-7.14.2-profile-000001', + 'apm-7.14.2-profile-000002', + 'apm-7.14.2-profile-000003', + 'apm-7.14.2-profile-000004', + 'apm-7.14.2-profile-000005', + 'apm-7.14.2-profile-000006', + 'apm-7.14.2-profile-000007', + 'apm-7.14.2-profile-000008', + 'apm-7.14.2-profile-000009', + '.ds-logs-elastic_agent.filebeat-default-2023.08.21-000003', + 'detection_rule_cluster_detail', + '.ds-alert_telemetry_unified-2022.11.10-000048', + '.kibana_7.15.1_001', + 'apm-7.16.2-error-000001', + 'apm-7.16.2-error-000002', + 'apm-7.16.2-error-000003', + 'apm-7.16.2-error-000004', + 'apm-7.16.2-error-000005', + 'apm-7.16.2-error-000006', + 'apm-7.16.2-error-000007', + 'apm-7.16.2-error-000008', + 'apm-7.16.2-error-000009', + 'apm-7.14.2-profile-000010', +]; diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/async_sender.ts b/x-pack/plugins/security_solution/server/lib/telemetry/async_sender.ts index edbd5d21e3aea..107ca457b2cfb 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/async_sender.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/async_sender.ts @@ -8,7 +8,7 @@ import axios from 'axios'; import * as rx from 'rxjs'; import _, { cloneDeep } from 'lodash'; -import type { Logger, LogMeta } from '@kbn/core/server'; +import type { AnalyticsServiceSetup, EventTypeOpts, Logger, LogMeta } from '@kbn/core/server'; import type { TelemetryPluginSetup, TelemetryPluginStart } from '@kbn/telemetry-plugin/server'; import { type IUsageCounter } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counter'; import type { ITelemetryReceiver } from './receiver'; @@ -17,7 +17,7 @@ import { type QueueConfig, type RetryConfig, } from './async_sender.types'; -import { TelemetryChannel, TelemetryCounter } from './types'; +import { type Nullable, TelemetryChannel, TelemetryCounter } from './types'; import * as collections from './collections_helpers'; import { CachedSubject, retryOnError$ } from './rxjs_helpers'; import { SenderUtils } from './sender_helpers'; @@ -55,6 +55,8 @@ export class AsyncTelemetryEventsSender implements IAsyncTelemetryEventsSender { private telemetryUsageCounter?: IUsageCounter; private senderUtils: SenderUtils | undefined; + private analytics: Nullable; + constructor(logger: Logger) { this.logger = newTelemetryLogger(logger.get('telemetry_events.async_sender')); } @@ -64,7 +66,8 @@ export class AsyncTelemetryEventsSender implements IAsyncTelemetryEventsSender { fallbackQueueConfig: QueueConfig, telemetryReceiver: ITelemetryReceiver, telemetrySetup?: TelemetryPluginSetup, - telemetryUsageCounter?: IUsageCounter + telemetryUsageCounter?: IUsageCounter, + analytics?: AnalyticsServiceSetup ): void { this.logger.l(`Setting up ${AsyncTelemetryEventsSender.name}`); @@ -77,6 +80,7 @@ export class AsyncTelemetryEventsSender implements IAsyncTelemetryEventsSender { this.telemetryReceiver = telemetryReceiver; this.telemetrySetup = telemetrySetup; this.telemetryUsageCounter = telemetryUsageCounter; + this.analytics = analytics; this.updateStatus(ServiceStatus.CONFIGURED); } @@ -201,6 +205,13 @@ export class AsyncTelemetryEventsSender implements IAsyncTelemetryEventsSender { } } + public reportEBT(eventTypeOpts: EventTypeOpts, eventData: T): void { + if (!this.analytics) { + throw Error('analytics is unavailable'); + } + this.analytics.reportEvent(eventTypeOpts.eventType, eventData as object); + } + // internal methods private queue$( upstream$: rx.Observable, diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/async_sender.types.ts b/x-pack/plugins/security_solution/server/lib/telemetry/async_sender.types.ts index 249493cfdbfc8..89ce55d102859 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/async_sender.types.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/async_sender.types.ts @@ -6,6 +6,7 @@ */ import type { TelemetryPluginSetup, TelemetryPluginStart } from '@kbn/telemetry-plugin/server'; import { type IUsageCounter } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counter'; +import type { AnalyticsServiceSetup, EventTypeOpts } from '@kbn/core-analytics-server'; import { type TelemetryChannel } from './types'; import type { ITelemetryReceiver } from './receiver'; @@ -20,7 +21,8 @@ export interface IAsyncTelemetryEventsSender { fallbackQueueConfig: QueueConfig, telemetryReceiver: ITelemetryReceiver, telemetrySetup?: TelemetryPluginSetup, - telemetryUsageCounter?: IUsageCounter + telemetryUsageCounter?: IUsageCounter, + analytics?: AnalyticsServiceSetup ) => void; start: (telemetryStart?: TelemetryPluginStart) => void; stop: () => Promise; @@ -28,6 +30,7 @@ export interface IAsyncTelemetryEventsSender { simulateSend: (channel: TelemetryChannel, events: unknown[]) => string[]; updateQueueConfig: (channel: TelemetryChannel, config: QueueConfig) => void; updateDefaultQueueConfig: (config: QueueConfig) => void; + reportEBT: (eventTypeOpts: EventTypeOpts, eventData: T) => void; } /** diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/collections_helpers.test.ts b/x-pack/plugins/security_solution/server/lib/telemetry/collections_helpers.test.ts index 3d67d6cd22b17..987c088d289fe 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/collections_helpers.test.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/collections_helpers.test.ts @@ -4,7 +4,14 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { chunked, chunkedBy } from './collections_helpers'; +import { stagingIndices } from './__mocks__/staging_indices'; +import { + type CommonPrefixesConfig, + chunked, + chunkedBy, + findCommonPrefixes, + chunkStringsByMaxLength, +} from './collections_helpers'; describe('telemetry.utils.chunked', () => { it('should chunk simple case', async () => { @@ -79,3 +86,105 @@ describe('telemetry.utils.chunkedBy', () => { expect(output).toEqual([['aaaa']]); }); }); + +describe('telemetry.utils.findCommonPrefixes', () => { + it('should find common prefixes in simple case', async () => { + const indices = ['aaa', 'b', 'aa']; + const config: CommonPrefixesConfig = { + maxPrefixes: 10, + maxGroupSize: 10, + minPrefixSize: 1, + }; + + const output = findCommonPrefixes(indices, config); + + expect(output).toHaveLength(2); + expect(output.find((v, _) => v.parts.length === 1 && v.parts[0] === 'a')?.indexCount).toEqual( + 2 + ); + expect(output.find((v, _) => v.parts.length === 1 && v.parts[0] === 'b')?.indexCount).toEqual( + 1 + ); + }); + + it('should find common prefixes with different minPrefixSize', async () => { + const indices = ['.ds-AA-0001', '.ds-AA-0002', '.ds-BB-0003']; + const config: CommonPrefixesConfig = { + maxPrefixes: 10, + maxGroupSize: 3, + minPrefixSize: 5, + }; + + const output = findCommonPrefixes(indices, config); + + expect(output).toHaveLength(2); + expect( + output.find((v, _) => v.parts.length === 1 && v.parts[0] === '.ds-A')?.indexCount + ).toEqual(2); + expect( + output.find((v, _) => v.parts.length === 1 && v.parts[0] === '.ds-B')?.indexCount + ).toEqual(1); + }); + + it('should discard extra indices', async () => { + const indices = ['aaa', 'aaaaaa', 'aa']; + const config: CommonPrefixesConfig = { + maxPrefixes: 1, + maxGroupSize: 2, + minPrefixSize: 3, + }; + + const output = findCommonPrefixes(indices, config); + + expect(output).toHaveLength(1); + expect(output.find((v, _) => v.parts.length === 1 && v.parts[0] === 'aaa')?.indexCount).toEqual( + 2 + ); + }); + + it('should group many indices', async () => { + const indices = stagingIndices; + const config: CommonPrefixesConfig = { + maxPrefixes: 8, + maxGroupSize: 100, + minPrefixSize: 3, + }; + + const output = findCommonPrefixes(indices, config); + + expect(output).toHaveLength(config.maxPrefixes); + expect(output.map((v, _) => v.indexCount).reduce((acc, i) => acc + i, 0)).toBe(indices.length); + }); +}); + +describe('telemetry.utils.splitIndicesByNameLength', () => { + it('should chunk simple case', async () => { + const input = ['aa', 'b', 'ccc', 'ddd']; + const output = chunkStringsByMaxLength(input, 5); + expect(output).toEqual([['aa', 'b'], ['ccc'], ['ddd']]); + }); + + it('should chunk with remainder', async () => { + const input = ['aaa', 'b']; + const output = chunkStringsByMaxLength(input, 10); + expect(output).toEqual([['aaa', 'b']]); + }); + + it('should chunk with empty list', async () => { + const input: string[] = []; + const output = chunkStringsByMaxLength(input, 3); + expect(output).toEqual([]); + }); + + it('should chunk with single element smaller than max weight', async () => { + const input = ['aa']; + const output = chunkStringsByMaxLength(input, 3); + expect(output).toEqual([['aa']]); + }); + + it('should chunk with single element bigger than max weight', async () => { + const input = ['aaaa', 'bb']; + const output = chunkStringsByMaxLength(input, 4); + expect(output).toEqual([['aaaa'], ['bb']]); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/collections_helpers.ts b/x-pack/plugins/security_solution/server/lib/telemetry/collections_helpers.ts index a104ea1d55bf8..3d945667fd3cb 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/collections_helpers.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/collections_helpers.ts @@ -63,3 +63,153 @@ class Chunked { return this.chunks.filter((chunk) => chunk.length > 0); } } + +export interface CommonPrefixesConfig { + maxPrefixes: number; + maxGroupSize: number; + minPrefixSize: number; +} + +interface TrieNode { + char: string; + prefix: string; + children: { [key: string]: TrieNode }; + count: number; + isEnd: boolean; + id: number; +} + +interface Group { + parts: string[]; + indexCount: number; +} + +function newTrieNode(char: string = '', prefix: string = '', id: number = 0): TrieNode { + return { + char, + children: {}, + count: 0, + id, + isEnd: false, + prefix, + }; +} + +/** + * Finds and groups common prefixes from a list of strings. + * + * @param {string[]} indices - An array of strings from which common prefixes will be extracted. + * @param {CommonPrefixesConfig} config - A configuration object that defines the rules for grouping. + * + * The `config` object contains the following properties: + * - maxGroupSize {number}: The maximum number of indices allowed in a group. + * - maxPrefixes {number}: The maximum number of prefix groups to return. + * - minPrefixSize {number}: The minimum length of a prefix required to form a group. It avoid cases like returning + * a single character prefix, e.g., ['.ds-...1', '.ds-....2', ....] -> returns a single group '.' + * + * @returns {Group[]} - An array of groups where each group contains a list of prefix parts and the count of indices that share that prefix. + * + * Example usage: + * + * ```typescript + * const indices = ['apple', 'appetizer', 'application', 'banana', 'band', 'bandage']; + * const config = { + * maxGroupSize: 5, + * maxPrefixes: 3, + * minPrefixSize: 3 + * }; + * + * const result = findCommonPrefixes(indices, config); + * //result = [ + * // { parts: [ 'ban' ], indexCount: 3 }, + * // { parts: [ 'app' ], indexCount: 3 } + * //] + * ``` + */ + +export function findCommonPrefixes(indices: string[], config: CommonPrefixesConfig): Group[] { + const idCounter = function* (): Generator { + let id = 0; + while (true) { + yield id++; + } + }; + + const idGen = idCounter(); + + const root = newTrieNode('', '', idGen.next().value); + for (const index of indices) { + let node = root; + node.count++; + for (const char of index) { + if (!node.children[char]) { + node.children[char] = newTrieNode(char, node.prefix + char, idGen.next().value); + } + node = node.children[char]; + node.count++; + } + node.isEnd = true; + } + + const nodes = [root]; + const prefixes: Group[] = []; + + while (nodes.length > 0) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const node = nodes.pop()!; + if ( + (node.count <= config.maxGroupSize && node.prefix.length >= config.minPrefixSize) || + (Object.keys(node.children).length === 0 && node.prefix.length >= config.minPrefixSize) + ) { + const group: Group = { + parts: [node.prefix], + indexCount: node.count, + }; + prefixes.push(group); + } else { + for (const child of Object.values(node.children)) { + nodes.push(child); + } + } + } + + if (prefixes.length > config.maxPrefixes) { + prefixes.sort((a, b) => a.indexCount - b.indexCount); + + while (prefixes.length > config.maxPrefixes) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const g1 = prefixes.shift()!; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const g2 = prefixes.shift()!; + const mergedGroup: Group = { + parts: g1.parts.concat(g2.parts), + indexCount: g1.indexCount + g2.indexCount, + }; + prefixes.push(mergedGroup); + prefixes.sort((a, b) => a.indexCount - b.indexCount); + } + } + + return prefixes; +} + +/** + * Splits an array of strings into chunks where the total length of strings in each chunk + * does not exceed the specified `maxLength`. + * + * @param strings - An array of strings to be chunked. + * @param maxLength - The maximum total length allowed for strings in each chunk. Defaults to 1024. + * @returns A two-dimensional array where each inner array is a chunk of strings. + * + * @example + * ```typescript + * const strings = ["hello", "world", "this", "is", "a", "test"]; + * const chunks = chunkStringsByMaxLength(strings, 10); + * console.log(chunks); + * // Output: [["hello", "world"], ["this", "is"], ["a", "test"]] + * ``` + */ +export function chunkStringsByMaxLength(strings: string[], maxLength: number = 3072): string[][] { + // plus 1 for the comma separator + return chunkedBy(strings, maxLength, (index) => index.length + 1); +} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/configuration.ts b/x-pack/plugins/security_solution/server/lib/telemetry/configuration.ts index 691b0daae8f2c..963addde2afb4 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/configuration.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/configuration.ts @@ -6,7 +6,11 @@ */ import os from 'os'; -import type { PaginationConfiguration, TelemetrySenderChannelConfiguration } from './types'; +import type { + IndicesMetadataConfiguration, + PaginationConfiguration, + TelemetrySenderChannelConfiguration, +} from './types'; class TelemetryConfigurationDTO { private readonly DEFAULT_TELEMETRY_MAX_BUFFER_SIZE = 100; @@ -21,6 +25,15 @@ class TelemetryConfigurationDTO { max_page_size_bytes: Math.min(os.totalmem() * 0.02, 80 * 1024 * 1024), num_docs_to_sample: 10, }; + private readonly DEFAULT_INDICES_METADATA_CONFIG = { + indices_threshold: 10000, + datastreams_threshold: 1000, + + max_prefixes: 10, // @deprecated + max_group_size: 100, // @deprecated + min_group_size: 5, // @deprecated + }; + private _telemetry_max_buffer_size = this.DEFAULT_TELEMETRY_MAX_BUFFER_SIZE; private _max_security_list_telemetry_batch = this.DEFAULT_MAX_SECURITY_LIST_TELEMETRY_BATCH; private _max_endpoint_telemetry_batch = this.DEFAULT_MAX_ENDPOINT_TELEMETRY_BATCH; @@ -31,6 +44,8 @@ class TelemetryConfigurationDTO { [key: string]: TelemetrySenderChannelConfiguration; } = this.DEFAULT_SENDER_CHANNELS; private _pagination_config: PaginationConfiguration = this.DEFAULT_PAGINATION_CONFIG; + private _indices_metadata_config: IndicesMetadataConfiguration = + this.DEFAULT_INDICES_METADATA_CONFIG; public get telemetry_max_buffer_size(): number { return this._telemetry_max_buffer_size; @@ -96,6 +111,14 @@ class TelemetryConfigurationDTO { return this._pagination_config; } + public set indices_metadata_config(paginationConfiguration: IndicesMetadataConfiguration) { + this._indices_metadata_config = paginationConfiguration; + } + + public get indices_metadata_config(): IndicesMetadataConfiguration { + return this._indices_metadata_config; + } + public resetAllToDefault() { this._telemetry_max_buffer_size = this.DEFAULT_TELEMETRY_MAX_BUFFER_SIZE; this._max_security_list_telemetry_batch = this.DEFAULT_MAX_SECURITY_LIST_TELEMETRY_BATCH; @@ -104,6 +127,7 @@ class TelemetryConfigurationDTO { this._max_detection_alerts_batch = this.DEFAULT_MAX_DETECTION_ALERTS_BATCH; this._sender_channels = this.DEFAULT_SENDER_CHANNELS; this._pagination_config = this.DEFAULT_PAGINATION_CONFIG; + this._indices_metadata_config = this.DEFAULT_INDICES_METADATA_CONFIG; } } diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/event_based/events.ts b/x-pack/plugins/security_solution/server/lib/telemetry/event_based/events.ts index 02a39be555110..662704bc59bc9 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/event_based/events.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/event_based/events.ts @@ -11,6 +11,7 @@ import type { ResponseActionsApiCommandNames, } from '../../../../common/endpoint/service/response_actions/constants'; import type { BulkUpsertAssetCriticalityRecordsResponse } from '../../../../common/api/entity_analytics'; +import type { DataStreams, IlmPolicies, IlmsStats, IndicesStats } from '../indices.metadata.types'; export const RISK_SCORE_EXECUTION_SUCCESS_EVENT: EventTypeOpts<{ scoresWritten: number; @@ -271,6 +272,241 @@ export const ALERT_SUPPRESSION_EVENT: EventTypeOpts<{ }, }; +export const TELEMETRY_DATA_STREAM_EVENT: EventTypeOpts = { + eventType: 'telemetry_data_stream_event', + schema: { + items: { + type: 'array', + items: { + properties: { + datastream_name: { + type: 'keyword', + _meta: { description: 'Name of the data stream' }, + }, + indices: { + type: 'array', + items: { + properties: { + index_name: { type: 'date', _meta: { description: 'Index name' } }, + ilm_policy: { type: 'date', _meta: { optional: true, description: 'ILM policy' } }, + }, + }, + _meta: { optional: true, description: 'Indices associated with the data stream' }, + }, + }, + }, + _meta: { description: 'Datastreams' }, + }, + }, +}; + +export const TELEMETRY_INDEX_STATS_EVENT: EventTypeOpts = { + eventType: 'telemetry_index_stats_event', + schema: { + items: { + type: 'array', + items: { + properties: { + index_name: { + type: 'keyword', + _meta: { description: 'The name of the index being monitored.' }, + }, + query_total: { + type: 'long', + _meta: { + optional: true, + description: 'The total number of search queries executed on the index.', + }, + }, + query_time_in_millis: { + type: 'long', + _meta: { + optional: true, + description: + 'The total time spent on query execution across all search requests, measured in milliseconds.', + }, + }, + docs_count: { + type: 'long', + _meta: { + optional: true, + description: 'The total number of documents currently stored in the index.', + }, + }, + docs_deleted: { + type: 'long', + _meta: { + optional: true, + description: + 'The total number of documents that have been marked as deleted in the index.', + }, + }, + docs_total_size_in_bytes: { + type: 'long', + _meta: { + optional: true, + description: + 'The total size, in bytes, of all documents stored in the index, including storage overhead.', + }, + }, + }, + }, + _meta: { description: 'Datastreams' }, + }, + }, +}; + +export const TELEMETRY_ILM_POLICY_EVENT: EventTypeOpts = { + eventType: 'telemetry_ilm_policy_event', + schema: { + items: { + type: 'array', + items: { + properties: { + policy_name: { + type: 'keyword', + _meta: { description: 'The name of the ILM policy.' }, + }, + modified_date: { + type: 'date', + _meta: { description: 'The date when the ILM policy was last modified.' }, + }, + phases: { + properties: { + cold: { + properties: { + min_age: { + type: 'text', + _meta: { + description: + 'The minimum age before the index transitions to the "cold" phase.', + }, + }, + }, + _meta: { + optional: true, + description: + 'Configuration settings for the "cold" phase of the ILM policy, applied when data is infrequently accessed.', + }, + }, + delete: { + properties: { + min_age: { + type: 'text', + _meta: { + description: + 'The minimum age before the index transitions to the "delete" phase.', + }, + }, + }, + _meta: { + optional: true, + description: + 'Configuration settings for the "delete" phase of the ILM policy, specifying when the index should be removed.', + }, + }, + frozen: { + properties: { + min_age: { + type: 'text', + _meta: { + description: + 'The minimum age before the index transitions to the "frozen" phase.', + }, + }, + }, + _meta: { + optional: true, + description: + 'Configuration settings for the "frozen" phase of the ILM policy, where data is fully searchable but stored with a reduced resource footprint.', + }, + }, + hot: { + properties: { + min_age: { + type: 'text', + _meta: { + description: + 'The minimum age before the index transitions to the "hot" phase.', + }, + }, + }, + _meta: { + optional: true, + description: + 'Configuration settings for the "hot" phase of the ILM policy, applied to actively written and queried data.', + }, + }, + warm: { + properties: { + min_age: { + type: 'text', + _meta: { + description: + 'The minimum age before the index transitions to the "warm" phase.', + }, + }, + }, + _meta: { + optional: true, + description: + 'Configuration settings for the "warm" phase of the ILM policy, used for read-only data that is less frequently accessed.', + }, + }, + }, + _meta: { + description: + 'The different phases of the ILM policy that define how the index is managed over time.', + }, + }, + }, + }, + _meta: { description: 'Datastreams' }, + }, + }, +}; + +export const TELEMETRY_ILM_STATS_EVENT: EventTypeOpts = { + eventType: 'telemetry_ilm_stats_event', + schema: { + items: { + type: 'array', + items: { + properties: { + index_name: { + type: 'keyword', + _meta: { description: 'The name of the index currently managed by the ILM policy.' }, + }, + phase: { + type: 'keyword', + _meta: { + optional: true, + description: + 'The current phase of the ILM policy that the index is in (e.g., hot, warm, cold, frozen, or delete).', + }, + }, + age: { + type: 'text', + _meta: { + optional: true, + description: + 'The age of the index since its creation, indicating how long it has existed.', + }, + }, + policy_name: { + type: 'keyword', + _meta: { + optional: true, + description: 'The name of the ILM policy applied to this index.', + }, + }, + }, + }, + _meta: { description: 'Datastreams' }, + }, + }, +}; + interface CreateAssetCriticalityProcessedFileEvent { result?: BulkUpsertAssetCriticalityRecordsResponse['stats']; startTime: Date; @@ -457,4 +693,8 @@ export const events = [ ENTITY_ENGINE_RESOURCE_INIT_FAILURE_EVENT, ENTITY_ENGINE_INITIALIZATION_EVENT, ENTITY_STORE_USAGE_EVENT, + TELEMETRY_DATA_STREAM_EVENT, + TELEMETRY_ILM_POLICY_EVENT, + TELEMETRY_ILM_STATS_EVENT, + TELEMETRY_INDEX_STATS_EVENT, ]; diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/indices.metadata.types.ts b/x-pack/plugins/security_solution/server/lib/telemetry/indices.metadata.types.ts new file mode 100644 index 0000000000000..fe669c6693d2a --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/telemetry/indices.metadata.types.ts @@ -0,0 +1,68 @@ +/* + * 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 { DateTime } from '@elastic/elasticsearch/lib/api/types'; +import type { Nullable } from './types'; + +export interface IlmPolicies { + items: IlmPolicy[]; +} + +export interface IlmPolicy { + policy_name: string; + modified_date: DateTime; + phases: IlmPhases; +} + +export interface IlmPhases { + cold: Nullable; + delete: Nullable; + frozen: Nullable; + hot: Nullable; + warm: Nullable; +} + +export interface IlmPhase { + min_age: string; +} + +export interface IlmsStats { + items: IlmStats[]; +} + +export interface IlmStats { + index_name: string; + phase?: string; + age?: string; + policy_name?: string; +} + +export interface IndicesStats { + items: IndexStats[]; +} + +export interface IndexStats { + index_name: string; + query_total?: number; + query_time_in_millis?: number; + docs_count?: number; + docs_deleted?: number; + docs_total_size_in_bytes?: number; +} + +export interface Index { + index_name: string; + ilm_policy?: string; +} + +export interface DataStreams { + items: DataStream[]; +} +export interface DataStream { + datastream_name: string; + indices?: Index[]; +} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/preview_sender.ts b/x-pack/plugins/security_solution/server/lib/telemetry/preview_sender.ts index fc195098787dd..66161274fe45c 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/preview_sender.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/preview_sender.ts @@ -7,7 +7,7 @@ import type { AxiosInstance, AxiosResponse } from 'axios'; import axios, { AxiosHeaders } from 'axios'; -import type { Logger } from '@kbn/core/server'; +import type { EventTypeOpts, Logger } from '@kbn/core/server'; import type { TelemetryPluginStart, TelemetryPluginSetup } from '@kbn/telemetry-plugin/server'; import type { UsageCounter } from '@kbn/usage-collection-plugin/server'; @@ -37,6 +37,9 @@ export class PreviewTelemetryEventsSender implements ITelemetryEventsSender { /** Last sent message */ private sentMessages: string[] = []; + /** Last sent EBT events */ + private ebtEventsSent: Array<{ eventType: string; eventData: object }> = []; + /** Logger for this class */ private logger: Logger; @@ -87,6 +90,10 @@ export class PreviewTelemetryEventsSender implements ITelemetryEventsSender { return this.sentMessages; } + public getEbtEventsSent(): Array<{ eventType: string; eventData: object }> { + return this.ebtEventsSent; + } + public setup( telemetryReceiver: ITelemetryReceiver, telemetrySetup?: TelemetryPluginSetup, @@ -174,4 +181,12 @@ export class PreviewTelemetryEventsSender implements ITelemetryEventsSender { public updateDefaultQueueConfig(config: QueueConfig): void { this.composite.updateDefaultQueueConfig(config); } + + public reportEBT(eventTypeOpts: EventTypeOpts, eventData: T): void { + this.ebtEventsSent.push({ + eventType: eventTypeOpts.eventType, + eventData: eventData as object, + }); + this.composite.reportEBT(eventTypeOpts, eventData); + } } diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts b/x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts index 4d2ff971eeb62..db023a593f14b 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/receiver.ts @@ -18,6 +18,7 @@ import type { } from '@kbn/core/server'; import type { AggregationsAggregate, + IlmExplainLifecycleRequest, OpenPointInTimeResponse, SearchRequest, SearchResponse, @@ -38,6 +39,10 @@ import type { SearchHit, SearchRequest as ESSearchRequest, SortResults, + IndicesGetDataStreamRequest, + IndicesStatsRequest, + IlmGetLifecycleRequest, + IndicesGetRequest, } from '@elastic/elasticsearch/lib/api/types'; import type { TransportResult } from '@elastic/elasticsearch'; import type { AgentPolicy, Installation } from '@kbn/fleet-plugin/common'; @@ -87,6 +92,16 @@ import { telemetryConfiguration } from './configuration'; import { ENDPOINT_METRICS_INDEX } from '../../../common/constants'; import { PREBUILT_RULES_PACKAGE_NAME } from '../../../common/detection_engine/constants'; import type { TelemetryLogger } from './telemetry_logger'; +import type { + DataStream, + IlmPhase, + IlmPhases, + IlmPolicy, + IlmStats, + Index, + IndexStats, +} from './indices.metadata.types'; +import { chunkStringsByMaxLength } from './collections_helpers'; export interface ITelemetryReceiver { start( @@ -238,6 +253,12 @@ export interface ITelemetryReceiver { setMaxPageSizeBytes(bytes: number): void; setNumDocsToSample(n: number): void; + + getIndices(): Promise; + getDataStreams(): Promise; + getIndicesStats(indices: string[]): AsyncGenerator; + getIlmsStats(indices: string[]): AsyncGenerator; + getIlmsPolicies(ilms: string[]): AsyncGenerator; } export class TelemetryReceiver implements ITelemetryReceiver { @@ -532,7 +553,6 @@ export class TelemetryReceiver implements ITelemetryReceiver { const buckets = endpointMetadataResponse?.aggregations?.endpoint_metadata?.buckets ?? []; return buckets.reduce((cache, endpointAgentId) => { - // const id = endpointAgentId.latest_metadata.hits.hits[0]._id; const doc = endpointAgentId.latest_metadata.hits.hits[0]._source; cache.set(endpointAgentId.key, doc); return cache; @@ -541,7 +561,7 @@ export class TelemetryReceiver implements ITelemetryReceiver { } public async *fetchDiagnosticAlertsBatch(executeFrom: string, executeTo: string) { - this.logger.debug('Searching diagnostic alerts', { + this.logger.l('Searching diagnostic alerts', { from: executeFrom, to: executeTo, } as LogMeta); @@ -585,10 +605,10 @@ export class TelemetryReceiver implements ITelemetryReceiver { fetchMore = false; } - this.logger.debug('Diagnostic alerts to return', { numOfHits } as LogMeta); + this.logger.l('Diagnostic alerts to return', { numOfHits } as LogMeta); fetchMore = numOfHits > 0 && numOfHits < telemetryConfiguration.telemetry_max_buffer_size; } catch (e) { - this.logger.l('Error fetching alerts', { error: JSON.stringify(e) }); + this.logger.warn('Error fetching alerts', { error_message: e.message } as LogMeta); fetchMore = false; } @@ -761,7 +781,7 @@ export class TelemetryReceiver implements ITelemetryReceiver { executeFrom: string, executeTo: string ) { - this.logger.debug('Searching prebuilt rule alerts from', { + this.logger.l('Searching prebuilt rule alerts from', { executeFrom, executeTo, } as LogMeta); @@ -899,14 +919,14 @@ export class TelemetryReceiver implements ITelemetryReceiver { pitId = response?.pit_id; } - this.logger.debug('Prebuilt rule alerts to return', { alerts: alerts.length } as LogMeta); + this.logger.l('Prebuilt rule alerts to return', { alerts: alerts.length } as LogMeta); yield alerts; } } catch (e) { // to keep backward compatibility with the previous implementation, silent return // once we start using `paginate` this error should be managed downstream - this.logger.l('Error fetching alerts', { error: JSON.stringify(e) }); + this.logger.warn('Error fetching alerts', { error_message: e.message } as LogMeta); return; } finally { await this.closePointInTime(pitId); @@ -930,10 +950,10 @@ export class TelemetryReceiver implements ITelemetryReceiver { try { await this.esClient().closePointInTime({ id: pitId }); } catch (error) { - this.logger.l('Error trying to close point in time', { + this.logger.warn('Error trying to close point in time', { pit: pitId, - error: JSON.stringify(error), - }); + error_message: error.message, + } as LogMeta); } } @@ -1019,7 +1039,7 @@ export class TelemetryReceiver implements ITelemetryReceiver { fetchMore = numOfHits > 0; } catch (e) { - this.logger.l('Error fetching alerts', { error: JSON.stringify(e) }); + this.logger.warn('Error fetching alerts', { error_message: e.message } as LogMeta); fetchMore = false; } @@ -1034,11 +1054,11 @@ export class TelemetryReceiver implements ITelemetryReceiver { try { await this.esClient().closePointInTime({ id: pitId }); } catch (error) { - this.logger.l('Error trying to close point in time', { + this.logger.warn('Error trying to close point in time', { pit: pitId, - error: JSON.stringify(error), + error_message: error.message, keepAlive, - }); + } as LogMeta); } this.logger.l('Timeline alerts to return', { alerts: alertsToReturn.length }); @@ -1232,7 +1252,7 @@ export class TelemetryReceiver implements ITelemetryReceiver { return ret.license; } catch (err) { - this.logger.l('failed retrieving license', { error: JSON.stringify(err) }); + this.logger.warn('failed retrieving license', { error_message: err.message } as LogMeta); return undefined; } } @@ -1293,7 +1313,7 @@ export class TelemetryReceiver implements ITelemetryReceiver { yield data; } while (esQuery.search_after !== undefined); } catch (e) { - this.logger.l('Error running paginated query', { error: JSON.stringify(e) }); + this.logger.warn('Error running paginated query', { error_message: e.message } as LogMeta); throw e; } finally { await this.closePointInTime(pit.id); @@ -1320,4 +1340,198 @@ export class TelemetryReceiver implements ITelemetryReceiver { } return this._esClient; } + + public async getIndices(): Promise { + const es = this.esClient(); + + this.logger.l('Fetching indices'); + + const request: IndicesGetRequest = { + index: '*', + expand_wildcards: ['open', 'hidden'], + filter_path: ['*.settings.index.provided_name'], + }; + + return es.indices + .get(request) + .then((indices) => Array.from(Object.keys(indices))) + .catch((error) => { + this.logger.warn('Error fetching indices', { error_message: error } as LogMeta); + throw error; + }); + } + + public async getDataStreams(): Promise { + const es = this.esClient(); + + this.logger.l('Fetching datstreams'); + + const request: IndicesGetDataStreamRequest = { + name: '*', + expand_wildcards: ['open', 'hidden'], + filter_path: ['data_streams.name', 'data_streams.indices'], + }; + + return es.indices + .getDataStream(request) + .then((response) => + response.data_streams.map((ds) => { + return { + datastream_name: ds.name, + indices: + ds.indices?.map((index) => { + return { + index_name: index.index_name, + ilm_policy: index.ilm_policy, + } as Index; + }) ?? [], + } as DataStream; + }) + ) + .catch((error) => { + this.logger.warn('Error fetching datastreams', { error_message: error } as LogMeta); + throw error; + }); + } + + public async *getIndicesStats(indices: string[]) { + const es = this.esClient(); + + this.logger.l('Fetching indices stats'); + + const groupedIndices = chunkStringsByMaxLength(indices); + + this.logger.l('Splitted indices into groups', { + groups: groupedIndices.length, + indices: indices.length, + } as LogMeta); + + for (const group of groupedIndices) { + const request: IndicesStatsRequest = { + index: group, + level: 'indices', + metric: ['docs', 'search', 'store'], + expand_wildcards: ['open', 'hidden'], + filter_path: [ + 'indices.*.total.search.query_total', + 'indices.*.total.search.query_time_in_millis', + 'indices.*.total.docs.count', + 'indices.*.total.docs.deleted', + 'indices.*.total.store.size_in_bytes', + ], + }; + + try { + const response = await es.indices.stats(request); + for (const [indexName, stats] of Object.entries(response.indices ?? {})) { + yield { + index_name: indexName, + query_total: stats.total?.search?.query_total, + query_time_in_millis: stats.total?.search?.query_time_in_millis, + docs_count: stats.total?.docs?.count, + docs_deleted: stats.total?.docs?.deleted, + docs_total_size_in_bytes: stats.total?.store?.size_in_bytes, + } as IndexStats; + } + } catch (error) { + this.logger.warn('Error fetching indices stats', { error_message: error } as LogMeta); + throw error; + } + } + } + + public async *getIlmsStats(indices: string[]) { + const es = this.esClient(); + + const groupedIndices = chunkStringsByMaxLength(indices); + + this.logger.l('Splitted ilms into groups', { + groups: groupedIndices.length, + indices: indices.length, + } as LogMeta); + + for (const group of groupedIndices) { + const request: IlmExplainLifecycleRequest = { + index: group.join(','), + only_managed: false, + filter_path: ['indices.*.phase', 'indices.*.age', 'indices.*.policy'], + }; + + const data = await es.ilm.explainLifecycle(request); + + try { + for (const [indexName, stats] of Object.entries(data.indices ?? {})) { + const entry = { + index_name: indexName, + phase: ('phase' in stats && stats.phase) || undefined, + age: ('age' in stats && stats.age) || undefined, + policy_name: ('policy' in stats && stats.policy) || undefined, + } as IlmStats; + + yield entry; + } + } catch (error) { + this.logger.warn('Error fetching ilm stats', { error_message: error } as LogMeta); + throw error; + } + } + } + + public async *getIlmsPolicies(ilms: string[]) { + const es = this.esClient(); + + const phase = (obj: unknown): Nullable => { + let value: Nullable; + if (obj !== null && obj !== undefined && typeof obj === 'object' && 'min_age' in obj) { + value = { + min_age: obj.min_age, + } as IlmPhase; + } + return value; + }; + + const groupedIlms = chunkStringsByMaxLength(ilms); + + this.logger.l('Splitted ilms into groups', { + groups: groupedIlms.length, + ilms: ilms.length, + } as LogMeta); + + for (const group of groupedIlms) { + this.logger.l('Fetching ilm policies'); + const request: IlmGetLifecycleRequest = { + name: group.join(','), + filter_path: [ + '*.policy.phases.cold.min_age', + '*.policy.phases.delete.min_age', + '*.policy.phases.frozen.min_age', + '*.policy.phases.hot.min_age', + '*.policy.phases.warm.min_age', + '*.modified_date', + ], + }; + + const response = await es.ilm.getLifecycle(request); + try { + for (const [policyName, stats] of Object.entries(response ?? {})) { + yield { + policy_name: policyName, + modified_date: stats.modified_date, + phases: { + cold: phase(stats.policy.phases.cold), + delete: phase(stats.policy.phases.delete), + frozen: phase(stats.policy.phases.frozen), + hot: phase(stats.policy.phases.hot), + warm: phase(stats.policy.phases.warm), + } as IlmPhases, + } as IlmPolicy; + } + } catch (error) { + this.logger.warn('Error fetching ilm policies', { + error_message: error.message, + } as LogMeta); + throw error; + } + } + } } diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts b/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts index 25dd07d4ef986..8e99a9e12981c 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/sender.ts @@ -9,7 +9,7 @@ import { cloneDeep } from 'lodash'; import { URL } from 'url'; import { transformDataToNdjson } from '@kbn/securitysolution-utils'; -import type { Logger, LogMeta } from '@kbn/core/server'; +import type { EventTypeOpts, Logger, LogMeta } from '@kbn/core/server'; import type { TelemetryPluginStart, TelemetryPluginSetup } from '@kbn/telemetry-plugin/server'; import type { UsageCounter } from '@kbn/usage-collection-plugin/server'; import type { AxiosInstance } from 'axios'; @@ -88,6 +88,11 @@ export interface ITelemetryEventsSender { * Updates the default queue configuration. */ updateDefaultQueueConfig: (config: QueueConfig) => void; + + /** + * Reports EBT events + */ + reportEBT: (eventTypeOpts: EventTypeOpts, eventData: T) => void; } export class TelemetryEventsSender implements ITelemetryEventsSender { @@ -270,12 +275,16 @@ export class TelemetryEventsSender implements ITelemetryEventsSender { const telemetryUrl = await this.fetchTelemetryPingUrl(); const resp = await axios.get(telemetryUrl, { timeout: 3000 }); if (resp.status === 200) { - this.logger.l('[Security Telemetry] elastic telemetry services are reachable'); + this.logger.debug('Elastic telemetry services are reachable'); return true; } return false; - } catch (_err) { + } catch (e) { + this.logger.warn('Error pinging telemetry services', { + error: e.message, + } as LogMeta); + return false; } } @@ -426,6 +435,10 @@ export class TelemetryEventsSender implements ITelemetryEventsSender { this.getAsyncTelemetrySender().updateDefaultQueueConfig(config); } + public reportEBT(eventTypeOpts: EventTypeOpts, eventData: T): void { + this.getAsyncTelemetrySender().reportEBT(eventTypeOpts, eventData); + } + private getAsyncTelemetrySender(): IAsyncTelemetryEventsSender { if (!this.asyncTelemetrySender) { throw new Error('Telemetry Sender V2 not initialized'); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/task.test.ts b/x-pack/plugins/security_solution/server/lib/telemetry/task.test.ts index 91cb7d881d4c9..7efb2ea1297a6 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/task.test.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/task.test.ts @@ -16,6 +16,7 @@ import { createMockTaskMetrics, createMockSecurityTelemetryTask, } from './__mocks__'; +import { newTelemetryLogger } from './helpers'; describe('test security telemetry task', () => { let logger: ReturnType; @@ -66,7 +67,7 @@ describe('test security telemetry task', () => { expect(mockTelemetryTaskConfig.runTask).toHaveBeenCalledWith( telemetryTask.getTaskId(), - logger, + newTelemetryLogger(logger.get('task')), mockTelemetryReceiver, mockTelemetryEventsSender, mockTaskMetrics, diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/task.ts b/x-pack/plugins/security_solution/server/lib/telemetry/task.ts index 62d827930e6a9..55c83243adcbc 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/task.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/task.ts @@ -6,7 +6,7 @@ */ import moment from 'moment'; -import type { Logger } from '@kbn/core/server'; +import type { Logger, LogMeta } from '@kbn/core/server'; import type { ConcreteTaskInstance, TaskManagerSetupContract, @@ -15,8 +15,9 @@ import type { import type { ITelemetryReceiver } from './receiver'; import type { ITelemetryEventsSender } from './sender'; import type { ITaskMetricsService } from './task_metrics.types'; -import { tlog } from './helpers'; import { stateSchemaByVersion, emptyState, type LatestTaskStateSchema } from './task_state'; +import { newTelemetryLogger } from './helpers'; +import { type TelemetryLogger } from './telemetry_logger'; export interface SecurityTelemetryTaskConfig { type: string; @@ -49,7 +50,7 @@ export type LastExecutionTimestampCalculator = ( export class SecurityTelemetryTask { private readonly config: SecurityTelemetryTaskConfig; - private readonly logger: Logger; + private readonly logger: TelemetryLogger; private readonly sender: ITelemetryEventsSender; private readonly receiver: ITelemetryReceiver; private readonly taskMetricsService: ITaskMetricsService; @@ -62,7 +63,7 @@ export class SecurityTelemetryTask { taskMetricsService: ITaskMetricsService ) { this.config = config; - this.logger = logger; + this.logger = newTelemetryLogger(logger.get('task')); this.sender = sender; this.receiver = receiver; this.taskMetricsService = taskMetricsService; @@ -122,7 +123,7 @@ export class SecurityTelemetryTask { public start = async (taskManager: TaskManagerStartContract) => { const taskId = this.getTaskId(); - tlog(this.logger, `[task ${taskId}]: attempting to schedule`); + this.logger.debug('Attempting to schedule task', { taskId } as LogMeta); try { await taskManager.ensureScheduled({ id: taskId, @@ -135,30 +136,32 @@ export class SecurityTelemetryTask { params: { version: this.config.version }, }); } catch (e) { - this.logger.error(`[task ${taskId}]: error scheduling task, received ${e.message}`); + this.logger.error('Error scheduling task', { + error: e.message, + } as LogMeta); } }; public runTask = async (taskId: string, executionPeriod: TaskExecutionPeriod) => { - tlog(this.logger, `[task ${taskId}]: attempting to run`); + this.logger.debug('Attempting to run', { taskId } as LogMeta); if (taskId !== this.getTaskId()) { - tlog(this.logger, `[task ${taskId}]: outdated task`); + this.logger.info('outdated task', { taskId } as LogMeta); return 0; } const isOptedIn = await this.sender.isTelemetryOptedIn(); if (!isOptedIn) { - tlog(this.logger, `[task ${taskId}]: telemetry is not opted-in`); + this.logger.info('Telemetry is not opted-in', { taskId } as LogMeta); return 0; } const isTelemetryServicesReachable = await this.sender.isTelemetryServicesReachable(); if (!isTelemetryServicesReachable) { - tlog(this.logger, `[task ${taskId}]: cannot reach telemetry services`); + this.logger.info('Cannot reach telemetry services', { taskId } as LogMeta); return 0; } - tlog(this.logger, `[task ${taskId}]: running task`); + this.logger.debug('Running task', { taskId } as LogMeta); return this.config.runTask( taskId, this.logger, diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/task_metrics.ts b/x-pack/plugins/security_solution/server/lib/telemetry/task_metrics.ts index 3306633bcfbb2..966eb0888f45e 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/task_metrics.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/task_metrics.ts @@ -29,7 +29,11 @@ export class TaskMetricsService implements ITaskMetricsService { public async end(trace: Trace, error?: Error): Promise { const event = this.createTaskMetric(trace, error); - this.logger.l(`Task ${event.name} complete. Task run took ${event.time_executed_in_ms}ms`); + this.logger.l('Task completed', { + task_name: event.name, + time_executed_in_ms: event.time_executed_in_ms, + error_message: event.error_message, + }); if (telemetryConfiguration.use_async_sender) { this.sender.sendAsync(TelemetryChannel.TASK_METRICS, [event]); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/configuration.ts b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/configuration.ts index 0558971ebf1e3..502c27fd3e2a6 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/configuration.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/configuration.ts @@ -51,7 +51,7 @@ export function createTelemetryConfigurationTaskConfig() { const configArtifact = manifest.data as unknown as TelemetryConfiguration; log.l('Got telemetry configuration artifact', { - artifact: configArtifact, + artifact: configArtifact ?? '', }); telemetryConfiguration.max_detection_alerts_batch = @@ -107,6 +107,11 @@ export function createTelemetryConfigurationTaskConfig() { _receiver.setNumDocsToSample(configArtifact.pagination_config.num_docs_to_sample); } + if (configArtifact.indices_metadata_config) { + log.l('Updating indices metadata configuration'); + telemetryConfiguration.indices_metadata_config = configArtifact.indices_metadata_config; + } + await taskMetricsService.end(trace); log.l('Updated TelemetryConfiguration', { configuration: telemetryConfiguration }); diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/index.ts b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/index.ts index d237757616f3e..0cf3c610dbc8b 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/index.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/index.ts @@ -16,6 +16,7 @@ import { createTelemetryDiagnosticTimelineTaskConfig } from './timelines_diagnos import { createTelemetryConfigurationTaskConfig } from './configuration'; import { telemetryConfiguration } from '../configuration'; import { createTelemetryFilterListArtifactTaskConfig } from './filterlists'; +import { createTelemetryIndicesMetadataTaskConfig } from './indices.metadata'; export function createTelemetryTaskConfigs(): SecurityTelemetryTaskConfig[] { return [ @@ -30,5 +31,6 @@ export function createTelemetryTaskConfigs(): SecurityTelemetryTaskConfig[] { createTelemetryDiagnosticTimelineTaskConfig(), createTelemetryConfigurationTaskConfig(), createTelemetryFilterListArtifactTaskConfig(), + createTelemetryIndicesMetadataTaskConfig(), ]; } diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/tasks/indices.metadata.ts b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/indices.metadata.ts new file mode 100644 index 0000000000000..8c90205fa890e --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/telemetry/tasks/indices.metadata.ts @@ -0,0 +1,192 @@ +/* + * 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 { LogMeta, Logger } from '@kbn/core/server'; +import type { ITelemetryEventsSender } from '../sender'; +import type { ITelemetryReceiver } from '../receiver'; +import type { TaskExecutionPeriod } from '../task'; +import type { ITaskMetricsService } from '../task_metrics.types'; +import { + createUsageCounterLabel, + getPreviousDailyTaskTimestamp, + newTelemetryLogger, +} from '../helpers'; +import { + TELEMETRY_DATA_STREAM_EVENT, + TELEMETRY_ILM_POLICY_EVENT, + TELEMETRY_ILM_STATS_EVENT, + TELEMETRY_INDEX_STATS_EVENT, +} from '../event_based/events'; +import { telemetryConfiguration } from '../configuration'; +import type { + DataStream, + DataStreams, + IlmPolicies, + IlmsStats, + IndicesStats, +} from '../indices.metadata.types'; +import { TelemetryCounter } from '../types'; + +const COUNTER_LABELS = ['security_solution', 'indices-metadata']; + +export function createTelemetryIndicesMetadataTaskConfig() { + const taskType = 'security:indices-metadata-telemetry'; + return { + type: taskType, + title: 'Security Solution Telemetry Indices Metadata task', + interval: '24h', + timeout: '1m', + version: '1.0.0', + getLastExecutionTime: getPreviousDailyTaskTimestamp, + runTask: async ( + taskId: string, + logger: Logger, + receiver: ITelemetryReceiver, + sender: ITelemetryEventsSender, + taskMetricsService: ITaskMetricsService, + taskExecutionPeriod: TaskExecutionPeriod + ) => { + const mdc = { task_id: taskId, task_execution_period: taskExecutionPeriod }; + const log = newTelemetryLogger(logger.get('indices-metadata'), mdc); + const trace = taskMetricsService.start(taskType); + + const taskConfig = telemetryConfiguration.indices_metadata_config; + + const publishDatastreamsStats = (stats: DataStream[]): number => { + const events: DataStreams = { + items: stats, + }; + sender.reportEBT(TELEMETRY_DATA_STREAM_EVENT, events); + log.info(`Sent data streams`, { count: events.items.length } as LogMeta); + return events.items.length; + }; + + const publishIndicesStats = async (indices: string[]): Promise => { + const indicesStats: IndicesStats = { + items: [], + }; + + for await (const stat of receiver.getIndicesStats(indices)) { + indicesStats.items.push(stat); + } + sender.reportEBT(TELEMETRY_INDEX_STATS_EVENT, indicesStats); + log.info(`Sent indices stats`, { count: indicesStats.items.length } as LogMeta); + return indicesStats.items.length; + }; + + const publishIlmStats = async (indices: string[]): Promise> => { + const ilmNames = new Set(); + const ilmsStats: IlmsStats = { + items: [], + }; + + for await (const stat of receiver.getIlmsStats(indices)) { + if (stat.policy_name !== undefined) { + ilmNames.add(stat.policy_name); + ilmsStats.items.push(stat); + } + } + + sender.reportEBT(TELEMETRY_ILM_STATS_EVENT, ilmsStats); + log.info(`Sent ILM stats`, { count: ilmNames.size } as LogMeta); + + return ilmNames; + }; + + const publishIlmPolicies = async (ilmNames: Set): Promise => { + const ilmPolicies: IlmPolicies = { + items: [], + }; + + for await (const policy of receiver.getIlmsPolicies(Array.from(ilmNames.values()))) { + ilmPolicies.items.push(policy); + } + sender.reportEBT(TELEMETRY_ILM_POLICY_EVENT, ilmPolicies); + log.info('Sent ILM policies', { count: ilmPolicies.items.length } as LogMeta); + return ilmPolicies.items.length; + }; + + const incrementCounter = (type: TelemetryCounter, name: string, value: number) => { + const telemetryUsageCounter = sender.getTelemetryUsageCluster(); + telemetryUsageCounter?.incrementCounter({ + counterName: createUsageCounterLabel(COUNTER_LABELS.concat(name)), + counterType: type, + incrementBy: value, + }); + }; + + try { + // 1. Get cluster stats and list of indices and datastreams + const [indices, dataStreams] = await Promise.all([ + receiver.getIndices(), + receiver.getDataStreams(), + ]); + + // 2. Publish datastreams stats + const dsCount = publishDatastreamsStats( + dataStreams.slice(0, taskConfig.datastreams_threshold) + ); + incrementCounter(TelemetryCounter.DOCS_SENT, 'datastreams-stats', dsCount); + + // 3. Get and publish indices stats + const indicesCount: number = await publishIndicesStats( + indices.slice(0, taskConfig.indices_threshold) + ) + .then((count) => { + incrementCounter(TelemetryCounter.DOCS_SENT, 'indices-stats', count); + return count; + }) + .catch((err) => { + log.warn(`Error getting indices stats`, { error: err.message } as LogMeta); + incrementCounter(TelemetryCounter.RUNTIME_ERROR, 'indices-stats', 1); + return 0; + }); + + // 4. Get ILM stats and publish them + const ilmNames = await publishIlmStats(indices.slice(0, taskConfig.indices_threshold)) + .then((names) => { + incrementCounter(TelemetryCounter.DOCS_SENT, 'ilm-stats', names.size); + return names; + }) + .catch((err) => { + log.warn(`Error getting ILM stats`, { error: err.message } as LogMeta); + incrementCounter(TelemetryCounter.RUNTIME_ERROR, 'ilm-stats', 1); + return new Set(); + }); + + // 5. Publish ILM policies + const policyCount = await publishIlmPolicies(ilmNames) + .then((count) => { + incrementCounter(TelemetryCounter.DOCS_SENT, 'ilm-policies', count); + return count; + }) + .catch((err) => { + log.warn(`Error getting ILM policies`, { error: err.message } as LogMeta); + incrementCounter(TelemetryCounter.RUNTIME_ERROR, 'ilm-policies', 1); + return 0; + }); + + log.info(`Sent EBT events`, { + datastreams: dsCount, + ilms: ilmNames.size, + indices: indicesCount, + policies: policyCount, + } as LogMeta); + + await taskMetricsService.end(trace); + + return indicesCount; + } catch (err) { + log.warn(`Error running indices metadata task`, { + error: err.message, + } as LogMeta); + await taskMetricsService.end(trace, err); + return 0; + } + }, + }; +} diff --git a/x-pack/plugins/security_solution/server/lib/telemetry/types.ts b/x-pack/plugins/security_solution/server/lib/telemetry/types.ts index eafe04c96a5ab..7741db5721c78 100644 --- a/x-pack/plugins/security_solution/server/lib/telemetry/types.ts +++ b/x-pack/plugins/security_solution/server/lib/telemetry/types.ts @@ -465,6 +465,15 @@ export interface TelemetryConfiguration { [key: string]: TelemetrySenderChannelConfiguration; }; pagination_config?: PaginationConfiguration; + indices_metadata_config?: IndicesMetadataConfiguration; +} + +export interface IndicesMetadataConfiguration { + indices_threshold: number; + datastreams_threshold: number; + max_prefixes: number; + max_group_size: number; + min_group_size: number; } export interface PaginationConfiguration { diff --git a/x-pack/plugins/security_solution/server/plugin.ts b/x-pack/plugins/security_solution/server/plugin.ts index 03512d9cbda04..d8fa5c61ee7f3 100644 --- a/x-pack/plugins/security_solution/server/plugin.ts +++ b/x-pack/plugins/security_solution/server/plugin.ts @@ -507,7 +507,8 @@ export class Plugin implements ISecuritySolutionPlugin { DEFAULT_QUEUE_CONFIG, this.telemetryReceiver, plugins.telemetry, - this.telemetryUsageCounter + this.telemetryUsageCounter, + core.analytics ); this.telemetryEventsSender.setup( @@ -531,6 +532,7 @@ export class Plugin implements ISecuritySolutionPlugin { kibanaVersion: pluginContext.env.packageInfo.version, logger: this.logger, isFeatureEnabled: config.experimentalFeatures.defendInsights, + endpointContext: this.endpointContext.service, }); return { diff --git a/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts b/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts index cdea82d680698..4e950a4202c68 100644 --- a/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts +++ b/x-pack/plugins/security_solution/server/search_strategy/endpoint_fields/index.ts @@ -25,7 +25,7 @@ import { EndpointAuthorizationError } from '../../endpoint/errors'; import { parseRequest } from './parse_request'; /** - * EndpointFieldProvider mimics indexField provider from timeline plugin: x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts + * EndpointFieldProvider mimics indexField provider from timeline plugin: x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/index.ts * but it uses ES internalUser instead to avoid adding extra index privileges for users with event filters permissions. * It is used to retrieve index patterns for event filters form. */ diff --git a/x-pack/plugins/serverless/public/navigation/index.tsx b/x-pack/plugins/serverless/public/navigation/index.tsx index 2ff6e27c664f7..c7862d80eef1a 100644 --- a/x-pack/plugins/serverless/public/navigation/index.tsx +++ b/x-pack/plugins/serverless/public/navigation/index.tsx @@ -6,32 +6,34 @@ */ import { css } from '@emotion/react'; -import { euiThemeVars } from '@kbn/ui-theme'; import React, { Suspense, type FC } from 'react'; -import { EuiSkeletonRectangle } from '@elastic/eui'; +import { EuiSkeletonRectangle, useEuiTheme } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import type { Props as NavigationProps } from './navigation'; const SideNavComponentLazy = React.lazy(() => import('./navigation')); -export const SideNavComponent: FC = (props) => ( - - } - > - - -); +export const SideNavComponent: FC = (props) => { + const { euiTheme } = useEuiTheme(); + return ( + + } + > + + + ); +}; export { manageOrgMembersNavCardName, generateManageOrgMembersNavCard } from './nav_cards'; diff --git a/x-pack/plugins/serverless/tsconfig.json b/x-pack/plugins/serverless/tsconfig.json index 35cc5e554ceb3..ce60d39bef0f0 100644 --- a/x-pack/plugins/serverless/tsconfig.json +++ b/x-pack/plugins/serverless/tsconfig.json @@ -28,6 +28,5 @@ "@kbn/management-cards-navigation", "@kbn/react-kibana-mount", "@kbn/react-kibana-context-render", - "@kbn/ui-theme", ] } diff --git a/x-pack/plugins/serverless_observability/package.json b/x-pack/plugins/serverless_observability/package.json deleted file mode 100644 index 64b310d7eabae..0000000000000 --- a/x-pack/plugins/serverless_observability/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "@kbn/serverless-observability", - "version": "1.0.0", - "license": "Elastic License 2.0", - "private": true, - "scripts": { - "build": "yarn plugin-helpers build", - "plugin-helpers": "node ../../../scripts/plugin_helpers", - "kbn": "node ../../../scripts/kbn" - } -} \ No newline at end of file diff --git a/x-pack/plugins/serverless_observability/tsconfig.json b/x-pack/plugins/serverless_observability/tsconfig.json deleted file mode 100644 index 5aa97143107ae..0000000000000 --- a/x-pack/plugins/serverless_observability/tsconfig.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "index.ts", - "common/**/*.ts", - "public/**/*.ts", - "public/**/*.tsx", - "server/**/*.ts", - "../../../typings/**/*" - ], - "exclude": [ - "target/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/config-schema", - "@kbn/management-plugin", - "@kbn/serverless", - "@kbn/observability-shared-plugin", - "@kbn/i18n", - "@kbn/management-cards-navigation", - "@kbn/data-plugin", - "@kbn/observability-plugin", - "@kbn/io-ts-utils", - "@kbn/serverless-observability-settings", - "@kbn/core-chrome-browser", - "@kbn/discover-plugin", - "@kbn/security-plugin", - "@kbn/search-types", - "@kbn/streams-plugin", - ] -} diff --git a/x-pack/plugins/serverless_search/kibana.jsonc b/x-pack/plugins/serverless_search/kibana.jsonc index cae0a693846f1..8b1609c5f126c 100644 --- a/x-pack/plugins/serverless_search/kibana.jsonc +++ b/x-pack/plugins/serverless_search/kibana.jsonc @@ -38,6 +38,8 @@ "searchPlayground", "usageCollection" ], - "requiredBundles": ["kibanaReact"] + "requiredBundles": [ + "kibanaReact" + ] } } diff --git a/x-pack/plugins/snapshot_restore/common/index.ts b/x-pack/plugins/snapshot_restore/common/index.ts deleted file mode 100644 index f8a44c695c520..0000000000000 --- a/x-pack/plugins/snapshot_restore/common/index.ts +++ /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. - */ - -// TODO: https://github.com/elastic/kibana/issues/110892 -/* eslint-disable @kbn/eslint/no_export_all */ - -export * from './constants'; diff --git a/x-pack/plugins/snapshot_restore/jest.config.js b/x-pack/plugins/snapshot_restore/jest.config.js deleted file mode 100644 index b7dbd6f6c5786..0000000000000 --- a/x-pack/plugins/snapshot_restore/jest.config.js +++ /dev/null @@ -1,17 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/x-pack/plugins/snapshot_restore'], - coverageDirectory: '/target/kibana-coverage/jest/x-pack/plugins/snapshot_restore', - coverageReporters: ['text', 'html'], - collectCoverageFrom: [ - '/x-pack/plugins/snapshot_restore/{common,public,server}/**/*.{ts,tsx}', - ], -}; diff --git a/x-pack/plugins/snapshot_restore/tsconfig.json b/x-pack/plugins/snapshot_restore/tsconfig.json deleted file mode 100644 index d34d28122b6d4..0000000000000 --- a/x-pack/plugins/snapshot_restore/tsconfig.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "__jest__/**/*", - "common/**/*", - "public/**/*", - "server/**/*", - "test/**/*", - "../../../typings/**/*", - ], - "kbn_references": [ - "@kbn/core", - "@kbn/licensing-plugin", - "@kbn/features-plugin", - "@kbn/cloud-plugin", - "@kbn/security-plugin", - "@kbn/management-plugin", - "@kbn/usage-collection-plugin", - "@kbn/home-plugin", - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/test-jest-helpers", - "@kbn/i18n", - "@kbn/utility-types", - "@kbn/share-plugin", - "@kbn/i18n-react", - "@kbn/analytics", - "@kbn/config-schema", - "@kbn/shared-ux-router", - "@kbn/core-ui-settings-browser", - "@kbn/core-http-router-server-mocks", - "@kbn/code-editor", - "@kbn/code-editor-mock", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/plugins/spaces/public/config.ts b/x-pack/plugins/spaces/public/config.ts index 3dd2d3bc89f92..dcd203eb696e3 100644 --- a/x-pack/plugins/spaces/public/config.ts +++ b/x-pack/plugins/spaces/public/config.ts @@ -9,7 +9,4 @@ export interface ConfigType { maxSpaces: number; allowFeatureVisibility: boolean; allowSolutionVisibility: boolean; - experimental: { - forceSolutionVisibility: boolean; - }; } diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_status_summary_indicator.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_status_summary_indicator.tsx index bcd7ef069e0c1..ce28fd05516fa 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_status_summary_indicator.tsx +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_status_summary_indicator.tsx @@ -138,7 +138,7 @@ export const CopyStatusSummaryIndicator = (props: Props) => { return ( {renderIcon(props)} - + {summarizedCopyResult.objects.length} diff --git a/x-pack/plugins/spaces/public/management/management_service.test.ts b/x-pack/plugins/spaces/public/management/management_service.test.ts index c89801953acdd..9aeddb8a66468 100644 --- a/x-pack/plugins/spaces/public/management/management_service.test.ts +++ b/x-pack/plugins/spaces/public/management/management_service.test.ts @@ -27,9 +27,6 @@ describe('ManagementService', () => { maxSpaces: 1000, allowFeatureVisibility: true, allowSolutionVisibility: true, - experimental: { - forceSolutionVisibility: false, - }, }; describe('#setup', () => { diff --git a/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx b/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx index d721ff79600c3..ff5a709765901 100644 --- a/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx +++ b/x-pack/plugins/spaces/public/management/spaces_management_app.test.tsx @@ -45,9 +45,6 @@ const config: ConfigType = { maxSpaces: 1000, allowFeatureVisibility: true, allowSolutionVisibility: true, - experimental: { - forceSolutionVisibility: false, - }, }; const eventTracker = new EventTracker({ reportEvent: jest.fn() }); diff --git a/x-pack/plugins/spaces/public/nav_control/solution_view_tour/solution_view_tour.tsx b/x-pack/plugins/spaces/public/nav_control/solution_view_tour/solution_view_tour.tsx index eda87809c66b3..dc4f77a3b3e00 100644 --- a/x-pack/plugins/spaces/public/nav_control/solution_view_tour/solution_view_tour.tsx +++ b/x-pack/plugins/spaces/public/nav_control/solution_view_tour/solution_view_tour.tsx @@ -72,6 +72,7 @@ export const SolutionViewTour: FC = ({ children, solution, isTourOpen, on onFinish={onFinishTour} step={1} stepsTotal={1} + repositionOnScroll title={i18n.translate('xpack.spaces.navControl.tour.title', { defaultMessage: 'You chose the {solution} solution view', values: { solution: solutionLabel }, diff --git a/x-pack/plugins/spaces/public/plugin.test.ts b/x-pack/plugins/spaces/public/plugin.test.ts index 33565748a99e3..40d6d7b39aa7c 100644 --- a/x-pack/plugins/spaces/public/plugin.test.ts +++ b/x-pack/plugins/spaces/public/plugin.test.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { cloudMock } from '@kbn/cloud-plugin/public/mocks'; import { coreMock } from '@kbn/core/public/mocks'; import { homePluginMock } from '@kbn/home-plugin/public/mocks'; import { @@ -20,7 +19,7 @@ describe('Spaces plugin', () => { it('should register the space selector app when buildFlavor is traditional', () => { const coreSetup = coreMock.createSetup(); const mockInitializerContext = coreMock.createPluginInitializerContext( - {}, + { allowSolutionVisibility: true }, { buildFlavor: 'traditional' } ); @@ -40,7 +39,7 @@ describe('Spaces plugin', () => { it('should not register the space selector app when buildFlavor is serverless and maxSpaces is 1', () => { const coreSetup = coreMock.createSetup(); const mockInitializerContext = coreMock.createPluginInitializerContext( - { maxSpaces: 1 }, + { maxSpaces: 1, allowSolutionVisibility: true }, { buildFlavor: 'serverless' } ); @@ -60,7 +59,7 @@ describe('Spaces plugin', () => { it('should register the space selector app when buildFlavor is serverless and and maxSpaces is >1', () => { const coreSetup = coreMock.createSetup(); const mockInitializerContext = coreMock.createPluginInitializerContext( - { maxSpaces: 2 }, + { maxSpaces: 2, allowSolutionVisibility: true }, { buildFlavor: 'serverless' } ); @@ -88,7 +87,7 @@ describe('Spaces plugin', () => { management.sections.section.kibana = mockSection; const mockInitializerContext = coreMock.createPluginInitializerContext( - {}, + { allowSolutionVisibility: true }, { buildFlavor: 'traditional' } ); @@ -122,7 +121,9 @@ describe('Spaces plugin', () => { management.sections.section.kibana = mockSection; - const plugin = new SpacesPlugin(coreMock.createPluginInitializerContext({ maxSpaces: 1 })); + const plugin = new SpacesPlugin( + coreMock.createPluginInitializerContext({ maxSpaces: 1, allowSolutionVisibility: true }) + ); plugin.setup(coreSetup, { management, home, @@ -152,7 +153,9 @@ describe('Spaces plugin', () => { management.sections.section.kibana = mockSection; - const plugin = new SpacesPlugin(coreMock.createPluginInitializerContext({ maxSpaces: 2 })); + const plugin = new SpacesPlugin( + coreMock.createPluginInitializerContext({ maxSpaces: 2, allowSolutionVisibility: true }) + ); plugin.setup(coreSetup, { management, home, @@ -179,7 +182,7 @@ describe('Spaces plugin', () => { const coreStart = coreMock.createStart(); const mockInitializerContext = coreMock.createPluginInitializerContext( - {}, + { allowSolutionVisibility: true }, { buildFlavor: 'traditional' } ); @@ -196,7 +199,7 @@ describe('Spaces plugin', () => { const coreStart = coreMock.createStart(); const mockInitializerContext = coreMock.createPluginInitializerContext( - { maxSpaces: 1 }, + { maxSpaces: 1, allowSolutionVisibility: true }, { buildFlavor: 'serverless' } ); @@ -214,7 +217,9 @@ describe('Spaces plugin', () => { const coreSetup = coreMock.createSetup(); const coreStart = coreMock.createStart(); - const plugin = new SpacesPlugin(coreMock.createPluginInitializerContext({ maxSpaces: 1 })); + const plugin = new SpacesPlugin( + coreMock.createPluginInitializerContext({ maxSpaces: 1, allowSolutionVisibility: true }) + ); const spacesSetup = plugin.setup(coreSetup, {}); const spacesStart = plugin.start(coreStart); @@ -226,7 +231,9 @@ describe('Spaces plugin', () => { const coreSetup = coreMock.createSetup(); const coreStart = coreMock.createStart(); - const plugin = new SpacesPlugin(coreMock.createPluginInitializerContext({ maxSpaces: 1000 })); + const plugin = new SpacesPlugin( + coreMock.createPluginInitializerContext({ maxSpaces: 1000, allowSolutionVisibility: true }) + ); const spacesSetup = plugin.setup(coreSetup, {}); const spacesStart = plugin.start(coreStart); @@ -236,129 +243,45 @@ describe('Spaces plugin', () => { }); describe('isSolutionViewEnabled', () => { - it('when onCloud, not serverless and allowSolutionVisibility is "true"', () => { + it('when allowSolutionVisibility is "true"', () => { const coreSetup = coreMock.createSetup(); const coreStart = coreMock.createStart(); - const cloud = cloudMock.createSetup(); - cloud.isCloudEnabled = true; const plugin = new SpacesPlugin( - coreMock.createPluginInitializerContext( - { allowSolutionVisibility: true }, - { buildFlavor: 'traditional' } - ) + coreMock.createPluginInitializerContext({ allowSolutionVisibility: true }) ); - const spacesSetup = plugin.setup(coreSetup, { cloud }); + const spacesSetup = plugin.setup(coreSetup, {}); const spacesStart = plugin.start(coreStart); expect(spacesSetup.isSolutionViewEnabled).toBe(true); expect(spacesStart.isSolutionViewEnabled).toBe(true); }); - it('when not onCloud and allowSolutionVisibility is "true"', () => { + it('when allowSolutionVisibility is "false"', () => { const coreSetup = coreMock.createSetup(); const coreStart = coreMock.createStart(); { const plugin = new SpacesPlugin( - coreMock.createPluginInitializerContext( - { allowSolutionVisibility: true }, // it is true but we are not onCloud - { buildFlavor: 'traditional' } - ) + coreMock.createPluginInitializerContext({ allowSolutionVisibility: false }) ); const spacesSetup = plugin.setup(coreSetup, {}); const spacesStart = plugin.start(coreStart); - expect(spacesSetup.isSolutionViewEnabled).toBe(false); // so it should be false - expect(spacesStart.isSolutionViewEnabled).toBe(false); - } - - { - // unless the forceSolutionVisibility flag is set - const plugin = new SpacesPlugin( - coreMock.createPluginInitializerContext( - { allowSolutionVisibility: false, experimental: { forceSolutionVisibility: true } }, - { buildFlavor: 'traditional' } - ) - ); - const spacesSetup = plugin.setup(coreSetup, {}); // we are not onCloud but forceSolutionVisibility is true - const spacesStart = plugin.start(coreStart); - - expect(spacesSetup.isSolutionViewEnabled).toBe(true); - expect(spacesStart.isSolutionViewEnabled).toBe(true); - } - }); - - it('when onCloud, not serverless and allowSolutionVisibility is "false"', () => { - const coreSetup = coreMock.createSetup(); - const coreStart = coreMock.createStart(); - const cloud = cloudMock.createSetup(); - cloud.isCloudEnabled = true; - - { - const plugin = new SpacesPlugin( - coreMock.createPluginInitializerContext( - { allowSolutionVisibility: false }, - { buildFlavor: 'traditional' } - ) - ); - const spacesSetup = plugin.setup(coreSetup, { cloud }); - const spacesStart = plugin.start(coreStart); - expect(spacesSetup.isSolutionViewEnabled).toBe(false); expect(spacesStart.isSolutionViewEnabled).toBe(false); } - - { - // unless the forceSolutionVisibility flag is set - const plugin = new SpacesPlugin( - coreMock.createPluginInitializerContext( - { allowSolutionVisibility: false, experimental: { forceSolutionVisibility: true } }, - { buildFlavor: 'traditional' } - ) - ); - const spacesSetup = plugin.setup(coreSetup, { cloud }); - const spacesStart = plugin.start(coreStart); - - expect(spacesSetup.isSolutionViewEnabled).toBe(true); - expect(spacesStart.isSolutionViewEnabled).toBe(true); - } }); - it('when onCloud and serverless', () => { + it('when allowSolutionVisibility is "undefined"', () => { const coreSetup = coreMock.createSetup(); - const coreStart = coreMock.createStart(); - const cloud = cloudMock.createSetup(); - cloud.isCloudEnabled = true; - - { - const plugin = new SpacesPlugin( - coreMock.createPluginInitializerContext( - { allowSolutionVisibility: true }, - { buildFlavor: 'serverless' } - ) - ); - const spacesSetup = plugin.setup(coreSetup, { cloud }); - const spacesStart = plugin.start(coreStart); - expect(spacesSetup.isSolutionViewEnabled).toBe(false); - expect(spacesStart.isSolutionViewEnabled).toBe(false); - } - - { - // unless the forceSolutionVisibility flag is set - const plugin = new SpacesPlugin( - coreMock.createPluginInitializerContext( - { allowSolutionVisibility: true, experimental: { forceSolutionVisibility: true } }, - { buildFlavor: 'serverless' } - ) - ); - const spacesSetup = plugin.setup(coreSetup, { cloud }); - const spacesStart = plugin.start(coreStart); - - expect(spacesSetup.isSolutionViewEnabled).toBe(true); - expect(spacesStart.isSolutionViewEnabled).toBe(true); - } + const plugin = new SpacesPlugin( + coreMock.createPluginInitializerContext({ allowSolutionVisibility: undefined }) + ); + expect(() => plugin.setup(coreSetup, {})).toThrowErrorMatchingInlineSnapshot( + `"allowSolutionVisibility has not been set in the Spaces plugin config."` + ); }); }); }); diff --git a/x-pack/plugins/spaces/public/plugin.tsx b/x-pack/plugins/spaces/public/plugin.tsx index 18083924200d9..c3583204a7bb3 100644 --- a/x-pack/plugins/spaces/public/plugin.tsx +++ b/x-pack/plugins/spaces/public/plugin.tsx @@ -59,14 +59,11 @@ export class SpacesPlugin implements Plugin, plugins: PluginsSetup) { - const hasOnlyDefaultSpace = this.config.maxSpaces === 1; - const onCloud = plugins.cloud !== undefined && plugins.cloud.isCloudEnabled; + if (this.config.allowSolutionVisibility === undefined) { + throw new Error('allowSolutionVisibility has not been set in the Spaces plugin config.'); + } - // We only allow "solution" to be set on cloud environments, not on prem - // unless the forceSolutionVisibility flag is set - const allowSolutionVisibility = - (onCloud && !this.isServerless && this.config.allowSolutionVisibility) || - Boolean(this.config.experimental?.forceSolutionVisibility); + const hasOnlyDefaultSpace = this.config.maxSpaces === 1; this.spacesManager = new SpacesManager(core.http); this.spacesApi = { @@ -77,12 +74,7 @@ export class SpacesPlugin implements Plugin this.spacesManager.onActiveSpaceChange$, getActiveSpace: () => this.spacesManager.getActiveSpace(), hasOnlyDefaultSpace, - isSolutionViewEnabled: allowSolutionVisibility, - }; - - this.config = { - ...this.config, - allowSolutionVisibility, + isSolutionViewEnabled: this.config.allowSolutionVisibility, }; registerSpacesEventTypes(core); @@ -167,7 +159,7 @@ export class SpacesPlugin implements Plugin { const { spacesDataPromise } = useSpaces(); + const { euiTheme } = useEuiTheme(); const [isExpanded, setIsExpanded] = useState(false); const [shareToSpacesData, setShareToSpacesData] = useState(); @@ -76,7 +78,7 @@ export const SpaceListInternal = ({ defaultMessage: `* All spaces`, }), initials: '*', - color: '#D3DAE6', + color: euiTheme.colors.vis.euiColorVisGrey0, }, ]; } else { @@ -145,7 +147,7 @@ export const SpaceListInternal = ({ /> } > - +{unauthorizedSpacesCount} + +{unauthorizedSpacesCount}
) : null; diff --git a/x-pack/plugins/spaces/server/index.ts b/x-pack/plugins/spaces/server/index.ts index 297a99a525ec7..a568f52c7c29a 100644 --- a/x-pack/plugins/spaces/server/index.ts +++ b/x-pack/plugins/spaces/server/index.ts @@ -34,9 +34,6 @@ export const config: PluginConfigDescriptor = { maxSpaces: true, allowFeatureVisibility: true, allowSolutionVisibility: true, - experimental: { - forceSolutionVisibility: true, - }, }, }; diff --git a/x-pack/plugins/spaces/server/plugin.test.ts b/x-pack/plugins/spaces/server/plugin.test.ts index 40aaf7044a4ea..cb2cee96a34e7 100644 --- a/x-pack/plugins/spaces/server/plugin.test.ts +++ b/x-pack/plugins/spaces/server/plugin.test.ts @@ -36,10 +36,7 @@ describe('Spaces plugin', () => { "hasOnlyDefaultSpace$": Observable { "operator": [Function], "source": Observable { - "operator": [Function], - "source": Observable { - "_subscribe": [Function], - }, + "_subscribe": [Function], }, }, "spacesClient": Object { @@ -123,10 +120,7 @@ describe('Spaces plugin', () => { "hasOnlyDefaultSpace$": Observable { "operator": [Function], "source": Observable { - "operator": [Function], - "source": Observable { - "_subscribe": [Function], - }, + "_subscribe": [Function], }, }, "spacesService": Object { diff --git a/x-pack/plugins/spaces/server/plugin.ts b/x-pack/plugins/spaces/server/plugin.ts index e36a6fb3cc7f1..e1c3c78976ecd 100644 --- a/x-pack/plugins/spaces/server/plugin.ts +++ b/x-pack/plugins/spaces/server/plugin.ts @@ -6,7 +6,7 @@ */ import type { Observable } from 'rxjs'; -import { BehaviorSubject, combineLatest, map } from 'rxjs'; +import { map } from 'rxjs'; import type { CloudSetup } from '@kbn/cloud-plugin/server'; import type { @@ -120,24 +120,8 @@ export class SpacesPlugin private defaultSpaceService?: DefaultSpaceService; - private onCloud$ = new BehaviorSubject(false); - constructor(private readonly initializerContext: PluginInitializerContext) { - this.config$ = combineLatest([ - initializerContext.config.create(), - this.onCloud$, - ]).pipe( - map( - ([config, onCloud]): ConfigType => ({ - ...config, - // We only allow "solution" to be set on cloud environments, not on prem - // unless the forceSolutionVisibility flag is set. - allowSolutionVisibility: - (onCloud && config.allowSolutionVisibility) || - Boolean(config.experimental?.forceSolutionVisibility), - }) - ) - ); + this.config$ = initializerContext.config.create(); this.hasOnlyDefaultSpace$ = this.config$.pipe(map(({ maxSpaces }) => maxSpaces === 1)); this.log = initializerContext.logger.get(); this.spacesService = new SpacesService(); @@ -148,7 +132,6 @@ export class SpacesPlugin } public setup(core: CoreSetup, plugins: PluginsSetup): SpacesPluginSetup { - this.onCloud$.next(plugins.cloud !== undefined && plugins.cloud.isCloudEnabled); const spacesClientSetup = this.spacesClientService.setup({ config$: this.config$ }); core.uiSettings.registerGlobal(getUiSettings()); diff --git a/x-pack/plugins/stack_connectors/common/crowdstrike/constants.ts b/x-pack/plugins/stack_connectors/common/crowdstrike/constants.ts index c5186edf4a378..a75f379ce471f 100644 --- a/x-pack/plugins/stack_connectors/common/crowdstrike/constants.ts +++ b/x-pack/plugins/stack_connectors/common/crowdstrike/constants.ts @@ -14,4 +14,7 @@ export enum SUB_ACTION { HOST_ACTIONS = 'hostActions', GET_AGENT_ONLINE_STATUS = 'getAgentOnlineStatus', EXECUTE_RTR_COMMAND = 'executeRTRCommand', + EXECUTE_ACTIVE_RESPONDER_RTR = 'batchActiveResponderExecuteRTR', + EXECUTE_ADMIN_RTR = 'batchAdminExecuteRTR', + GET_RTR_CLOUD_SCRIPTS = 'getRTRCloudScripts', } diff --git a/x-pack/plugins/stack_connectors/common/crowdstrike/schema.ts b/x-pack/plugins/stack_connectors/common/crowdstrike/schema.ts index d5e8cd693af98..d5d4154f985e9 100644 --- a/x-pack/plugins/stack_connectors/common/crowdstrike/schema.ts +++ b/x-pack/plugins/stack_connectors/common/crowdstrike/schema.ts @@ -17,6 +17,8 @@ export const CrowdstrikeSecretsSchema = schema.object({ clientSecret: schema.string(), }); +export const CrowdstrikeApiDoNotValidateResponsesSchema = schema.any(); + export const RelaxedCrowdstrikeBaseApiResponseSchema = schema.maybe( schema.object({}, { unknowns: 'allow' }) ); @@ -307,3 +309,46 @@ export const CrowdstrikeInitRTRResponseSchema = schema.object( export const CrowdstrikeInitRTRParamsSchema = schema.object({ endpoint_ids: schema.arrayOf(schema.string()), }); + +export const CrowdstrikeExecuteRTRResponseSchema = schema.object( + { + combined: schema.object( + { + resources: schema.recordOf( + schema.string(), + schema.object( + { + session_id: schema.maybe(schema.string()), + task_id: schema.maybe(schema.string()), + complete: schema.maybe(schema.boolean()), + stdout: schema.maybe(schema.string()), + stderr: schema.maybe(schema.string()), + base_command: schema.maybe(schema.string()), + aid: schema.maybe(schema.string()), + errors: schema.maybe(schema.arrayOf(schema.any())), + query_time: schema.maybe(schema.number()), + offline_queued: schema.maybe(schema.boolean()), + }, + { unknowns: 'allow' } + ) + ), + }, + { unknowns: 'allow' } + ), + meta: schema.object( + { + query_time: schema.maybe(schema.number()), + powered_by: schema.maybe(schema.string()), + trace_id: schema.maybe(schema.string()), + }, + { unknowns: 'allow' } + ), + errors: schema.nullable(schema.arrayOf(schema.any())), + }, + { unknowns: 'allow' } +); + +export type CrowdStrikeExecuteRTRResponse = typeof CrowdstrikeExecuteRTRResponseSchema; + +// TODO: will be part of a next PR +export const CrowdstrikeGetScriptsParamsSchema = schema.any({}); diff --git a/x-pack/plugins/stack_connectors/common/dynamic_config/types.ts b/x-pack/plugins/stack_connectors/common/dynamic_config/types.ts index 40e17a1989075..b5c73958294e1 100644 --- a/x-pack/plugins/stack_connectors/common/dynamic_config/types.ts +++ b/x-pack/plugins/stack_connectors/common/dynamic_config/types.ts @@ -5,15 +5,6 @@ * 2.0. */ -export enum DisplayType { - TEXTBOX = 'textbox', - TEXTAREA = 'textarea', - NUMERIC = 'numeric', - TOGGLE = 'toggle', - DROPDOWN = 'dropdown', - CHECKABLE = 'checkable', -} - export interface SelectOption { label: string; value: string; @@ -28,7 +19,6 @@ export interface Dependency { export enum FieldType { STRING = 'str', INTEGER = 'int', - LIST = 'list', BOOLEAN = 'bool', } @@ -44,21 +34,13 @@ export interface Validation { } export interface ConfigProperties { - category?: string; default_value: string | number | boolean | null; - depends_on: Dependency[]; - display: DisplayType; + description: string | null; label: string; - options?: SelectOption[]; - order?: number | null; - placeholder?: string; required: boolean; sensitive: boolean; - tooltip: string | null; + updatable: boolean; type: FieldType; - ui_restrictions: string[]; - validations: Validation[]; - value: string | number | boolean | null; } interface ConfigEntry extends ConfigProperties { @@ -68,4 +50,5 @@ interface ConfigEntry extends ConfigProperties { export interface ConfigEntryView extends ConfigEntry { isValid: boolean; validationErrors: string[]; + value: string | number | boolean | null; } diff --git a/x-pack/plugins/stack_connectors/common/inference/types.ts b/x-pack/plugins/stack_connectors/common/inference/types.ts index b9561efe24292..d8b846ce19422 100644 --- a/x-pack/plugins/stack_connectors/common/inference/types.ts +++ b/x-pack/plugins/stack_connectors/common/inference/types.ts @@ -40,14 +40,10 @@ export type StreamingResponse = TypeOf; export type FieldsConfiguration = Record; -export interface InferenceTaskType { - task_type: string; - configuration: FieldsConfiguration; -} - export interface InferenceProvider { - provider: string; - task_types: InferenceTaskType[]; + service: string; + name: string; + task_types: string[]; logo?: string; - configuration: FieldsConfiguration; + configurations: FieldsConfiguration; } diff --git a/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts b/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts index 7daf615e01d31..7a20df3ef45a0 100644 --- a/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts +++ b/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts @@ -16,6 +16,8 @@ export const SentinelOneSecretsSchema = schema.object({ token: schema.string(), }); +export const SentinelOneApiDoNotValidateResponsesSchema = schema.any(); + export const SentinelOneBaseApiResponseSchema = schema.maybe( schema.object({}, { unknowns: 'allow' }) ); diff --git a/x-pack/plugins/stack_connectors/public/connector_types/inference/additional_options_fields.tsx b/x-pack/plugins/stack_connectors/public/connector_types/inference/additional_options_fields.tsx index fad8ed2f65978..5862389e6ab80 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/inference/additional_options_fields.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/inference/additional_options_fields.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useMemo, useCallback } from 'react'; +import React, { useMemo } from 'react'; import { css } from '@emotion/react'; import { @@ -18,7 +18,6 @@ import { EuiTextColor, EuiButtonGroup, EuiPanel, - EuiHorizontalRule, EuiButtonEmpty, EuiCopy, EuiButton, @@ -55,7 +54,6 @@ interface AdditionalOptionsConnectorFieldsProps { onTaskTypeOptionsSelect: (taskType: string, provider?: string) => void; selectedTaskType?: string; taskTypeFormFields: ConfigEntryView[]; - taskTypeSchema: ConfigEntryView[]; taskTypeOptions: TaskTypeOption[]; } @@ -65,35 +63,13 @@ export const AdditionalOptionsConnectorFields: React.FC { const xsFontSize = useEuiFontSize('xs').fontSize; const { euiTheme } = useEuiTheme(); - const { setFieldValue, validateFields } = useFormContext(); - - const onSetTaskTypeConfigEntry = useCallback( - async (key: string, value: unknown) => { - if (taskTypeSchema) { - const entry: ConfigEntryView | undefined = taskTypeSchema.find( - (p: ConfigEntryView) => p.key === key - ); - if (entry) { - if (!config.taskTypeConfig) { - config.taskTypeConfig = {}; - } - const newConfig = { ...config.taskTypeConfig }; - newConfig[key] = value; - setFieldValue('config.taskTypeConfig', newConfig); - await validateFields(['config.taskTypeConfig']); - } - } - }, - [config, setFieldValue, taskTypeSchema, validateFields] - ); + const { setFieldValue } = useFormContext(); const taskTypeSettings = useMemo( () => @@ -103,7 +79,7 @@ export const AdditionalOptionsConnectorFields: React.FC @@ -116,7 +92,7 @@ export const AdditionalOptionsConnectorFields: React.FC
@@ -135,18 +111,7 @@ export const AdditionalOptionsConnectorFields: React.FC - } - isInvalid={isInvalid} - error={errorMessage} - > + {isEdit || readOnly ? ( - - ) : null, [ selectedTaskType, - config?.taskType, + config.taskType, xsFontSize, euiTheme.colors, - taskTypeFormFields, - onSetTaskTypeConfigEntry, isEdit, readOnly, taskTypeOptions, @@ -276,7 +231,7 @@ export const AdditionalOptionsConnectorFields: React.FC +

= ({ readOnly, @@ -63,7 +58,6 @@ const InferenceAPIConnectorFields: React.FunctionComponent([]); const [taskTypeOptions, setTaskTypeOptions] = useState([]); const [selectedTaskType, setSelectedTaskType] = useState(DEFAULT_TASK_TYPE); - const [taskTypeFormFields, setTaskTypeFormFields] = useState([]); + const [taskTypeFormFields] = useState([]); const handleProviderClosePopover = useCallback(() => { setProviderPopoverOpen(false); @@ -111,69 +104,39 @@ const InferenceAPIConnectorFields: React.FunctionComponent { + (taskType: string) => { // Get task type settings - const currentProvider = providers?.find((p) => p.provider === (provider ?? config?.provider)); - const currentTaskTypes = currentProvider?.task_types; - const newTaskType = currentTaskTypes?.find((p) => p.task_type === taskType); - setSelectedTaskType(taskType); - // transform the schema - const newTaskTypeSchema = Object.keys(newTaskType?.configuration ?? {}).map((k) => ({ - key: k, - isValid: true, - ...newTaskType?.configuration[k], - })) as ConfigEntryView[]; - setTaskTypeSchema(newTaskTypeSchema); - - const configDefaults = Object.keys(newTaskType?.configuration ?? {}).reduce( - (res: Record, k) => { - if (newTaskType?.configuration[k] && !!newTaskType?.configuration[k].default_value) { - res[k] = newTaskType.configuration[k].default_value; - } else { - res[k] = null; - } - return res; - }, - {} - ); - updateFieldValues({ config: { taskType, - taskTypeConfig: configDefaults, }, }); - generateInferenceEndpointId( - { ...config, taskType, taskTypeConfig: configDefaults }, - setFieldValue - ); + generateInferenceEndpointId({ ...config, taskType }, setFieldValue); }, - [config, providers, setFieldValue, updateFieldValues] + [config, setFieldValue, updateFieldValues] ); const onProviderChange = useCallback( (provider?: string) => { - const newProvider = providers?.find((p) => p.provider === provider); + const newProvider = providers?.find((p) => p.service === provider); // Update task types list available for the selected provider - const providerTaskTypes = (newProvider?.task_types ?? []).map((t) => t.task_type); - setTaskTypeOptions(getTaskTypeOptions(providerTaskTypes)); - if (providerTaskTypes.length > 0) { - onTaskTypeOptionsSelect(providerTaskTypes[0], provider); + setTaskTypeOptions(getTaskTypeOptions(newProvider?.task_types ?? [])); + if (newProvider?.task_types && newProvider?.task_types.length > 0) { + onTaskTypeOptionsSelect(newProvider?.task_types[0]); } // Update connector providerSchema - const newProviderSchema = Object.keys(newProvider?.configuration ?? {}).map((k) => ({ + const newProviderSchema = Object.keys(newProvider?.configurations ?? {}).map((k) => ({ key: k, isValid: true, - ...newProvider?.configuration[k], + ...newProvider?.configurations[k], })) as ConfigEntryView[]; setProviderSchema(newProviderSchema); @@ -181,10 +144,10 @@ const InferenceAPIConnectorFields: React.FunctionComponent = {}; const defaultProviderSecrets: Record = {}; - Object.keys(newProvider?.configuration ?? {}).forEach((k) => { - if (!newProvider?.configuration[k].sensitive) { - if (newProvider?.configuration[k] && !!newProvider?.configuration[k].default_value) { - defaultProviderConfig[k] = newProvider.configuration[k].default_value; + Object.keys(newProvider?.configurations ?? {}).forEach((k) => { + if (!newProvider?.configurations[k].sensitive) { + if (newProvider?.configurations[k] && !!newProvider?.configurations[k].default_value) { + defaultProviderConfig[k] = newProvider.configurations[k].default_value; } else { defaultProviderConfig[k] = null; } @@ -195,7 +158,7 @@ const InferenceAPIConnectorFields: React.FunctionComponent { - const getTaskTypeSchema = (taskTypes: InferenceTaskType[]) => { - const newTaskType = taskTypes.find((p) => p.task_type === config?.taskType); - - // transform the schema - const newTaskTypeSchema = Object.keys(newTaskType?.configuration ?? {}).map((k) => ({ - key: k, - isValid: true, - ...newTaskType?.configuration[k], - })) as ConfigEntryView[]; - - setTaskTypeSchema(newTaskTypeSchema); - }; - if (config?.provider && isEdit) { - const newProvider = providers?.find((p) => p.provider === config.provider); + const newProvider = providers?.find((p) => p.service === config.provider); // Update connector providerSchema - const newProviderSchema = Object.keys(newProvider?.configuration ?? {}).map((k) => ({ + const newProviderSchema = Object.keys(newProvider?.configurations ?? {}).map((k) => ({ key: k, isValid: true, - ...newProvider?.configuration[k], + ...newProvider?.configurations[k], })) as ConfigEntryView[]; setProviderSchema(newProviderSchema); - - getTaskTypeSchema(newProvider?.task_types ?? []); } }, [config?.provider, config?.taskType, http, isEdit, providers]); @@ -250,31 +198,14 @@ const InferenceAPIConnectorFields: React.FunctionComponent (a.order ?? 0) - (b.order ?? 0)); setOptionalProviderFormFields(existingConfiguration.filter((p) => !p.required && !p.sensitive)); setRequiredProviderFormFields(existingConfiguration.filter((p) => p.required || p.sensitive)); }, [config?.providerConfig, providerSchema, secrets]); - useEffect(() => { - // Set values from the task type config to the schema - const existingTaskTypeConfiguration = taskTypeSchema - ? taskTypeSchema.map((item: ConfigEntryView) => { - const itemValue = item; - itemValue.isValid = true; - if (config?.taskTypeConfig) { - itemValue.value = config?.taskTypeConfig[item.key] as any; - } - return itemValue; - }) - : []; - existingTaskTypeConfiguration.sort((a, b) => (a.order ?? 0) - (b.order ?? 0)); - setTaskTypeFormFields(existingTaskTypeConfiguration); - }, [config, taskTypeSchema]); - const getProviderOptions = useCallback(() => { return providers?.map((p) => ({ - label: p.provider, - key: p.provider, + label: p.service, + key: p.service, })) as EuiSelectableOption[]; }, [providers]); @@ -433,7 +364,6 @@ const InferenceAPIConnectorFields: React.FunctionComponent @@ -449,7 +379,6 @@ const InferenceAPIConnectorFields: React.FunctionComponent ) : null} diff --git a/x-pack/plugins/stack_connectors/public/connector_types/inference/helpers.ts b/x-pack/plugins/stack_connectors/public/connector_types/inference/helpers.ts index 8638caa998eff..d3f324b55363a 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/inference/helpers.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/inference/helpers.ts @@ -72,7 +72,7 @@ export const getNonEmptyValidator = ( newSchema.push(field); }); - validationEventHandler(newSchema.sort((a, b) => (a.order ?? 0) - (b.order ?? 0))); + validationEventHandler(newSchema); if (hasErrors) { return { code: 'ERR_FIELD_MISSING', diff --git a/x-pack/plugins/stack_connectors/public/connector_types/inference/hidden_fields.tsx b/x-pack/plugins/stack_connectors/public/connector_types/inference/hidden_fields.tsx index f6df891b4b9c8..33215f6a83689 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/inference/hidden_fields.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/inference/hidden_fields.tsx @@ -57,32 +57,3 @@ export const getProviderConfigHiddenField = ( }} /> ); - -export const getTaskTypeConfigHiddenField = ( - taskTypeSchema: ConfigEntryView[], - setTaskTypeFormFields: React.Dispatch>, - isSubmitting: boolean -) => ( - { - const formFields = [ - ...requiredFormFields, - ...(taskTypeSchema ?? []).filter((f) => !f.required), - ]; - setTaskTypeFormFields(formFields.sort((a, b) => (a.order ?? 0) - (b.order ?? 0))); - }, - isSubmitting - ), - isBlocking: true, - }, - ], - }} - /> -); diff --git a/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_field.tsx b/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_field.tsx index 5560c831c4a61..b6dc0972492bf 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_field.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_field.tsx @@ -13,19 +13,11 @@ import { EuiFieldPassword, EuiSwitch, EuiTextArea, - EuiFlexGroup, - EuiFlexItem, - EuiIcon, EuiFieldNumber, - EuiCheckableCard, - useGeneratedHtmlId, - EuiSpacer, - EuiSuperSelect, - EuiText, } from '@elastic/eui'; import { isEmpty } from 'lodash/fp'; -import { ConfigEntryView, DisplayType } from '../../../../common/dynamic_config/types'; +import { ConfigEntryView, FieldType } from '../../../../common/dynamic_config/types'; import { ensureBooleanType, ensureCorrectTyping, @@ -49,7 +41,7 @@ export const ConfigInputField: React.FC = ({ validateAndSetConfigValue, }) => { // eslint-disable-next-line @typescript-eslint/naming-convention - const { isValid, placeholder, value, default_value, key } = configEntry; + const { isValid, value, default_value, key } = configEntry; const [innerValue, setInnerValue] = useState( !value || value.toString().length === 0 ? default_value : value ); @@ -68,7 +60,6 @@ export const ConfigInputField: React.FC = ({ setInnerValue(event.target.value); validateAndSetConfigValue(event.target.value); }} - placeholder={placeholder} /> ); }; @@ -104,7 +95,7 @@ export const ConfigInputTextArea: React.FC = ({ validateAndSetConfigValue, }) => { // eslint-disable-next-line @typescript-eslint/naming-convention - const { isValid, placeholder, value, default_value, key } = configEntry; + const { isValid, value, default_value, key } = configEntry; const [innerValue, setInnerValue] = useState(value ?? default_value); useEffect(() => { setInnerValue(value ?? default_value); @@ -121,7 +112,6 @@ export const ConfigInputTextArea: React.FC = ({ setInnerValue(event.target.value); validateAndSetConfigValue(event.target.value); }} - placeholder={placeholder} /> ); }; @@ -132,7 +122,7 @@ export const ConfigNumberField: React.FC = ({ validateAndSetConfigValue, }) => { // eslint-disable-next-line @typescript-eslint/naming-convention - const { isValid, placeholder, value, default_value, key } = configEntry; + const { isValid, value, default_value, key } = configEntry; const [innerValue, setInnerValue] = useState(value ?? default_value); useEffect(() => { setInnerValue(!value || value.toString().length === 0 ? default_value : value); @@ -149,43 +139,10 @@ export const ConfigNumberField: React.FC = ({ setInnerValue(newValue); validateAndSetConfigValue(newValue); }} - placeholder={placeholder} /> ); }; -export const ConfigCheckableField: React.FC = ({ - configEntry, - validateAndSetConfigValue, -}) => { - const radioCardId = useGeneratedHtmlId({ prefix: 'radioCard' }); - // eslint-disable-next-line @typescript-eslint/naming-convention - const { value, options, default_value } = configEntry; - const [innerValue, setInnerValue] = useState(value ?? default_value); - useEffect(() => { - setInnerValue(value ?? default_value); - }, [default_value, value]); - return ( - <> - {options?.map((o) => ( - <> - { - setInnerValue(o.value); - validateAndSetConfigValue(o.value); - }} - /> - - - ))} - - ); -}; - export const ConfigSensitiveTextArea: React.FC = ({ isLoading, configEntry, @@ -230,44 +187,6 @@ export const ConfigInputPassword: React.FC = ({ ); }; -export const ConfigSelectField: React.FC = ({ - configEntry, - isLoading, - validateAndSetConfigValue, -}) => { - // eslint-disable-next-line @typescript-eslint/naming-convention - const { isValid, options, value, default_value } = configEntry; - const [innerValue, setInnerValue] = useState(value ?? default_value); - const optionsRes = options?.map((o) => ({ - value: o.value, - inputDisplay: ( - - {o.icon ? ( - - - - ) : null} - - {o.label} - - - ), - })); - return ( - { - setInnerValue(newValue); - validateAndSetConfigValue(newValue); - }} - /> - ); -}; - export const ConnectorConfigurationField: React.FC = ({ configEntry, isLoading, @@ -277,30 +196,10 @@ export const ConnectorConfigurationField: React.FC - ); - - case DisplayType.CHECKABLE: - return ( - - ); + const { key, type, sensitive } = configEntry; - case DisplayType.NUMERIC: + switch (type) { + case FieldType.INTEGER: return ( ); - case DisplayType.TEXTAREA: - const textarea = ( - - ); - - return sensitive ? ( - <> - - - ) : ( - textarea - ); - - case DisplayType.TOGGLE: + case FieldType.BOOLEAN: return ( { return ( {items.map((configEntry) => { - const { - depends_on: dependencies, - key, - display, - isValid, - label, - sensitive, - tooltip, - validationErrors, - required, - } = configEntry; + const { key, isValid, label, sensitive, description, validationErrors, required } = + configEntry; - const helpText = tooltip; + const helpText = description; // toggle and sensitive textarea labels go next to the element, not in the row - const rowLabel = - display === DisplayType.TOGGLE || (display === DisplayType.TEXTAREA && sensitive) ? ( - <> - ) : tooltip ? ( - - -

{label}

-
-
- ) : ( -

{label}

- ); + const rowLabel = description ? ( + + +

{label}

+
+
+ ) : ( +

{label}

+ ); const optionalLabel = !required ? ( @@ -74,31 +60,6 @@ export const ConnectorConfigurationFormItems: React.FC ) : undefined; - if (dependencies?.length > 0) { - return ( - - - - { - setConfigEntry(configEntry.key, value); - }} - /> - - - - ); - } return ( { - setConfigEntry(configEntry.key, value); + setConfigEntry(key, value); }} /> - {configEntry.sensitive ? ( + {sensitive ? ( <> ) : null} diff --git a/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_utils.ts b/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_utils.ts index cce5bc15fa56c..5e78903746aee 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_utils.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/lib/dynamic_config/connector_configuration_utils.ts @@ -49,7 +49,3 @@ export const ensureIntType = (value: string | number | boolean | null): number | export const ensureBooleanType = (value: string | number | boolean | null): boolean => { return Boolean(value); }; - -export const hasUiRestrictions = (configEntry: Partial) => { - return (configEntry.ui_restrictions ?? []).length > 0; -}; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/openai/constants.tsx b/x-pack/plugins/stack_connectors/public/connector_types/openai/constants.tsx index 5f4238e52af78..a24db86804f95 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/openai/constants.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/openai/constants.tsx @@ -11,23 +11,48 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { EuiLink } from '@elastic/eui'; import { DEFAULT_OPENAI_MODEL, OpenAiProviderType } from '../../../common/openai/constants'; import * as i18n from './translations'; +import { Config } from './types'; export const DEFAULT_URL = 'https://api.openai.com/v1/chat/completions' as const; export const DEFAULT_URL_AZURE = 'https://{your-resource-name}.openai.azure.com/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}' as const; -export const DEFAULT_BODY = `{ +const DEFAULT_BODY = `{ "messages": [{ "role":"user", "content":"Hello world" }] }`; -export const DEFAULT_BODY_AZURE = `{ +const DEFAULT_BODY_AZURE = `{ "messages": [{ "role":"user", "content":"Hello world" }] }`; +const DEFAULT_BODY_OTHER = (defaultModel: string) => `{ + "model": "${defaultModel}", + "messages": [{ + "role":"user", + "content":"Hello world" + }] +}`; + +export const getDefaultBody = (config?: Config) => { + if (!config) { + // default to OpenAiProviderType.OpenAi sample data + return DEFAULT_BODY; + } + if (config?.apiProvider === OpenAiProviderType.Other) { + // update sample data if Other (OpenAI Compatible Service) + return config.defaultModel ? DEFAULT_BODY_OTHER(config.defaultModel) : DEFAULT_BODY; + } + if (config?.apiProvider === OpenAiProviderType.AzureAi) { + // update sample data if AzureAi + return DEFAULT_BODY_AZURE; + } + // default to OpenAiProviderType.OpenAi sample data + return DEFAULT_BODY; +}; export const openAiConfig: ConfigFieldSchema[] = [ { diff --git a/x-pack/plugins/stack_connectors/public/connector_types/openai/params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/openai/params.test.tsx index 7539cc6bf6373..c03582ba0b229 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/openai/params.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/openai/params.test.tsx @@ -9,7 +9,7 @@ import React from 'react'; import { fireEvent, render } from '@testing-library/react'; import ParamsFields from './params'; import { OpenAiProviderType, SUB_ACTION } from '../../../common/openai/constants'; -import { DEFAULT_BODY, DEFAULT_BODY_AZURE, DEFAULT_URL } from './constants'; +import { DEFAULT_URL, getDefaultBody } from './constants'; const messageVariables = [ { @@ -73,14 +73,15 @@ describe('Gen AI Params Fields renders', () => { ); expect(editAction).toHaveBeenCalledTimes(2); expect(editAction).toHaveBeenCalledWith('subAction', SUB_ACTION.RUN, 0); + const body = getDefaultBody(actionConnector.config); if (apiProvider === OpenAiProviderType.OpenAi) { - expect(editAction).toHaveBeenCalledWith('subActionParams', { body: DEFAULT_BODY }, 0); + expect(editAction).toHaveBeenCalledWith('subActionParams', { body }, 0); } if (apiProvider === OpenAiProviderType.AzureAi) { - expect(editAction).toHaveBeenCalledWith('subActionParams', { body: DEFAULT_BODY_AZURE }, 0); + expect(editAction).toHaveBeenCalledWith('subActionParams', { body }, 0); } if (apiProvider === OpenAiProviderType.Other) { - expect(editAction).toHaveBeenCalledWith('subActionParams', { body: DEFAULT_BODY }, 0); + expect(editAction).toHaveBeenCalledWith('subActionParams', { body }, 0); } } ); diff --git a/x-pack/plugins/stack_connectors/public/connector_types/openai/params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/openai/params.tsx index ad4398482d2c8..000abfa4872be 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/openai/params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/openai/params.tsx @@ -12,8 +12,8 @@ import { ActionConnectorMode, JsonEditorWithMessageVariables, } from '@kbn/triggers-actions-ui-plugin/public'; -import { OpenAiProviderType, SUB_ACTION } from '../../../common/openai/constants'; -import { DEFAULT_BODY, DEFAULT_BODY_AZURE } from './constants'; +import { SUB_ACTION } from '../../../common/openai/constants'; +import { getDefaultBody } from './constants'; import { OpenAIActionConnector, ActionParams } from './types'; const ParamsFields: React.FunctionComponent> = ({ @@ -41,16 +41,10 @@ const ParamsFields: React.FunctionComponent> = ( useEffect(() => { if (!subActionParams) { - // default to OpenAiProviderType.OpenAi sample data - let sampleBody = DEFAULT_BODY; - - if (typedActionConnector?.config?.apiProvider === OpenAiProviderType.AzureAi) { - // update sample data if AzureAi - sampleBody = DEFAULT_BODY_AZURE; - } + const sampleBody = getDefaultBody(typedActionConnector?.config); editAction('subActionParams', { body: sampleBody }, index); } - }, [typedActionConnector?.config?.apiProvider, editAction, index, subActionParams]); + }, [typedActionConnector?.config, editAction, index, subActionParams]); const editSubActionParams = useCallback( (params: ActionParams['subActionParams']) => { diff --git a/x-pack/plugins/stack_connectors/public/connector_types/openai/types.ts b/x-pack/plugins/stack_connectors/public/connector_types/openai/types.ts index 3ba19c04d13a7..ea37fee0de879 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/openai/types.ts +++ b/x-pack/plugins/stack_connectors/public/connector_types/openai/types.ts @@ -18,6 +18,7 @@ export interface ActionParams { export interface Config { apiProvider: OpenAiProviderType; apiUrl: string; + defaultModel?: string; } export interface Secrets { diff --git a/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.test.ts b/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.test.ts index eec431d8a4dcf..815e22de5259c 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.test.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.test.ts @@ -345,70 +345,185 @@ describe('CrowdstrikeConnector', () => { expect(mockedRequest).toHaveBeenCalledTimes(3); }); }); - describe('batchInitRTRSession', () => { + describe('executeRTRCommand', () => { it('should make a POST request to the correct URL with correct data', async () => { - const mockResponse = { data: { batch_id: 'testBatchId' } }; + const mockResponse = { data: obfuscatedRTRResponse }; + mockedRequest.mockResolvedValueOnce({ data: { access_token: 'testToken' } }); - mockedRequest.mockResolvedValueOnce(mockResponse); + mockedRequest.mockResolvedValue(mockResponse); - await connector.batchInitRTRSession( - { endpoint_ids: ['id1', 'id2'] }, + const result = await connector.executeRTRCommand( + { + command: 'runscript -Raw', + endpoint_ids: ['id1', 'id2'], + }, + connectorUsageCollector + ); + + expect(mockedRequest).toHaveBeenNthCalledWith( + 3, + expect.objectContaining({ + url: 'https://api.crowdstrike.com/real-time-response/combined/batch-command/v1', + method: 'post', + data: expect.objectContaining({ + command_string: 'runscript -Raw', + hosts: ['id1', 'id2'], + }), + }), + connectorUsageCollector + ); + + expect(result).toEqual(obfuscatedRTRResponse); + }); + }); + + describe('batchActiveResponderExecuteRTR', () => { + it('should make a POST request to the correct URL with correct data', async () => { + const mockResponse = { data: obfuscatedRTRResponse }; + + mockedRequest.mockResolvedValueOnce({ data: { access_token: 'testToken' } }); + mockedRequest.mockResolvedValue(mockResponse); + + const result = await connector.batchActiveResponderExecuteRTR( + { + command: 'runscript', + endpoint_ids: ['id1', 'id2'], + }, connectorUsageCollector ); expect(mockedRequest).toHaveBeenNthCalledWith( 1, expect.objectContaining({ - headers: { - accept: 'application/json', - 'Content-Type': 'application/x-www-form-urlencoded', - authorization: expect.any(String), - }, + url: 'https://api.crowdstrike.com/oauth2/token', method: 'post', - responseSchema: expect.any(Object), - url: tokenPath, }), connectorUsageCollector ); + expect(mockedRequest).toHaveBeenNthCalledWith( - 2, + 3, expect.objectContaining({ - url: 'https://api.crowdstrike.com/real-time-response/combined/batch-init-session/v1', + url: 'https://api.crowdstrike.com/real-time-response/combined/batch-active-responder-command/v1', method: 'post', - data: { host_ids: ['id1', 'id2'] }, - paramsSerializer: expect.any(Function), - responseSchema: expect.any(Object), }), connectorUsageCollector ); - // @ts-expect-error private static - but I still want to test it - expect(CrowdstrikeConnector.currentBatchId).toBe('testBatchId'); + + expect(result).toEqual(obfuscatedRTRResponse); }); + }); + + describe('batchAdminExecuteRTR', () => { + it('should make a POST request to the correct URL with correct data', async () => { + const mockResponse = { data: obfuscatedRTRResponse }; - it('should handle error when fetching batch init session', async () => { mockedRequest.mockResolvedValueOnce({ data: { access_token: 'testToken' } }); - mockedRequest.mockRejectedValueOnce(new Error('Failed to fetch batch init session')); + mockedRequest.mockResolvedValue(mockResponse); + + const result = await connector.batchAdminExecuteRTR( + { + command: 'runscript', + endpoint_ids: ['id1', 'id2'], + }, + connectorUsageCollector + ); + + expect(mockedRequest).toHaveBeenNthCalledWith( + 1, + expect.objectContaining({ + url: 'https://api.crowdstrike.com/oauth2/token', + method: 'post', + }), + connectorUsageCollector + ); + + expect(mockedRequest).toHaveBeenNthCalledWith( + 3, + expect.objectContaining({ + url: 'https://api.crowdstrike.com/real-time-response/combined/batch-admin-command/v1', + method: 'post', + }), + connectorUsageCollector + ); - await expect( - connector.batchInitRTRSession({ endpoint_ids: ['id1', 'id2'] }, connectorUsageCollector) - ).rejects.toThrow('Failed to fetch batch init session'); + expect(result).toEqual(obfuscatedRTRResponse); }); + }); + + describe('getRTRCloudScripts', () => { + it('should make a GET request to the correct URL with correct params', async () => { + const mockResponse = { data: { scripts: [{}] } }; - it('should retry once if token is invalid', async () => { - const mockResponse = { data: { batch_id: 'testBatchId' } }; mockedRequest.mockResolvedValueOnce({ data: { access_token: 'testToken' } }); - mockedRequest.mockRejectedValueOnce({ code: 401 }); - mockedRequest.mockResolvedValueOnce({ data: { access_token: 'newTestToken' } }); mockedRequest.mockResolvedValueOnce(mockResponse); - await connector.batchInitRTRSession( - { endpoint_ids: ['id1', 'id2'] }, + const result = await connector.getRTRCloudScripts( + { ids: ['script1', 'script2'] }, + connectorUsageCollector + ); + + expect(mockedRequest).toHaveBeenNthCalledWith( + 1, + expect.objectContaining({ + url: 'https://api.crowdstrike.com/oauth2/token', + method: 'post', + }), connectorUsageCollector ); - expect(mockedRequest).toHaveBeenCalledTimes(4); - // @ts-expect-error private static - but I still want to test it - expect(CrowdstrikeConnector.currentBatchId).toBe('testBatchId'); + expect(mockedRequest).toHaveBeenNthCalledWith( + 2, + expect.objectContaining({ + url: 'https://api.crowdstrike.com/real-time-response/entities/scripts/v1', + method: 'GET', + }), + connectorUsageCollector + ); + + expect(result).toEqual({ scripts: [{}] }); }); }); }); + +const obfuscatedRTRResponse = { + combined: { + resources: { + host1: { + session_id: 'abcdef123456', + task_id: 'task123', + complete: true, + stdout: + 'bin \n boot \n dev \n etc \n home \n lib \n lib64 \n media \n mnt \n opt \n proc \n root \n run \n sbin \n srv \n sys \n tmp \n usr \n var \n', + stderr: '', + base_command: 'runscript', + aid: 'aid123', + errors: [{ message: 'Error example', code: 123 }], + query_time: 1234567890, + offline_queued: false, + }, + host2: { + session_id: 'ghijkl789101', + task_id: 'task456', + complete: false, + stdout: + 'bin \n boot \n dev \n etc \n home \n lib \n lib64 \n media \n mnt \n opt \n proc \n root \n run \n sbin \n srv \n sys \n tmp \n usr \n var \n', + stderr: '', + base_command: 'getscripts', + aid: 'aid456', + errors: null, + query_time: 9876543210, + offline_queued: true, + }, + }, + }, + meta: { + query_time: 1234567890, + powered_by: 'CrowdStrike', + trace_id: 'trace-abcdef123456', + }, + errors: [ + { message: 'An example error', code: 500 }, + { message: 'Another error example', code: 404 }, + ], +}; diff --git a/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.ts b/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.ts index bd1f6613d5f04..14b38b414eb3b 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/crowdstrike/crowdstrike.ts @@ -22,20 +22,24 @@ import type { CrowdstrikeGetTokenResponse, CrowdstrikeGetAgentOnlineStatusResponse, RelaxedCrowdstrikeBaseApiResponse, - CrowdstrikeInitRTRParams, } from '../../../common/crowdstrike/types'; import { CrowdstrikeHostActionsParamsSchema, CrowdstrikeGetAgentsParamsSchema, - CrowdstrikeGetTokenResponseSchema, CrowdstrikeHostActionsResponseSchema, RelaxedCrowdstrikeBaseApiResponseSchema, - CrowdstrikeInitRTRResponseSchema, CrowdstrikeRTRCommandParamsSchema, + CrowdstrikeExecuteRTRResponseSchema, + CrowdstrikeGetScriptsParamsSchema, + CrowdStrikeExecuteRTRResponse, + CrowdstrikeApiDoNotValidateResponsesSchema, + CrowdstrikeGetTokenResponseSchema, } from '../../../common/crowdstrike/schema'; import { SUB_ACTION } from '../../../common/crowdstrike/constants'; import { CrowdstrikeError } from './error'; +const SUPPORTED_RTR_COMMANDS = ['runscript']; + const paramsSerializer = (params: Record) => { return Object.entries(params) .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`) @@ -56,8 +60,6 @@ export class CrowdstrikeConnector extends SubActionConnector< > { private static token: string | null; private static tokenExpiryTimeout: NodeJS.Timeout; - // @ts-expect-error not used at the moment, will be used in a follow up PR - private static currentBatchId: string | undefined; private static base64encodedToken: string; private experimentalFeatures: ExperimentalFeatures; @@ -69,6 +71,10 @@ export class CrowdstrikeConnector extends SubActionConnector< agentStatus: string; batchInitRTRSession: string; batchRefreshRTRSession: string; + batchExecuteRTR: string; + batchActiveResponderExecuteRTR: string; + batchAdminExecuteRTR: string; + getRTRCloudScriptsDetails: string; }; constructor( @@ -84,6 +90,10 @@ export class CrowdstrikeConnector extends SubActionConnector< agentStatus: `${this.config.url}/devices/entities/online-state/v1`, batchInitRTRSession: `${this.config.url}/real-time-response/combined/batch-init-session/v1`, batchRefreshRTRSession: `${this.config.url}/real-time-response/combined/batch-refresh-session/v1`, + batchExecuteRTR: `${this.config.url}/real-time-response/combined/batch-command/v1`, + batchActiveResponderExecuteRTR: `${this.config.url}/real-time-response/combined/batch-active-responder-command/v1`, + batchAdminExecuteRTR: `${this.config.url}/real-time-response/combined/batch-admin-command/v1`, + getRTRCloudScriptsDetails: `${this.config.url}/real-time-response/entities/scripts/v1`, }; if (!CrowdstrikeConnector.base64encodedToken) { @@ -124,6 +134,22 @@ export class CrowdstrikeConnector extends SubActionConnector< method: 'executeRTRCommand', schema: CrowdstrikeRTRCommandParamsSchema, // Define a proper schema for the command }); + this.registerSubAction({ + name: SUB_ACTION.EXECUTE_ACTIVE_RESPONDER_RTR, + method: 'batchActiveResponderExecuteRTR', + schema: CrowdstrikeRTRCommandParamsSchema, // Define a proper schema for the command + }); + this.registerSubAction({ + name: SUB_ACTION.EXECUTE_ADMIN_RTR, + method: 'batchAdminExecuteRTR', + schema: CrowdstrikeRTRCommandParamsSchema, // Define a proper schema for the command + }); + // temporary to fetch scripts and help testing + this.registerSubAction({ + name: SUB_ACTION.GET_RTR_CLOUD_SCRIPTS, + method: 'getRTRCloudScripts', + schema: CrowdstrikeGetScriptsParamsSchema, + }); } } @@ -194,7 +220,7 @@ export class CrowdstrikeConnector extends SubActionConnector< ) as Promise; } - private async getTokenRequest(connectorUsageCollector: ConnectorUsageCollector) { + private getTokenRequest = async (connectorUsageCollector: ConnectorUsageCollector) => { const response = await this.request( { url: this.urls.getToken, @@ -204,7 +230,8 @@ export class CrowdstrikeConnector extends SubActionConnector< 'Content-Type': 'application/x-www-form-urlencoded', authorization: 'Basic ' + CrowdstrikeConnector.base64encodedToken, }, - responseSchema: CrowdstrikeGetTokenResponseSchema, + responseSchema: + CrowdstrikeApiDoNotValidateResponsesSchema as unknown as typeof CrowdstrikeGetTokenResponseSchema, }, connectorUsageCollector ); @@ -219,13 +246,13 @@ export class CrowdstrikeConnector extends SubActionConnector< }, 29 * 60 * 1000); } return token; - } + }; - private async crowdstrikeApiRequest( + private crowdstrikeApiRequest = async ( req: SubActionRequestParams, connectorUsageCollector: ConnectorUsageCollector, retried?: boolean - ): Promise { + ): Promise => { try { if (!CrowdstrikeConnector.token) { CrowdstrikeConnector.token = (await this.getTokenRequest( @@ -240,7 +267,7 @@ export class CrowdstrikeConnector extends SubActionConnector< // where the external system might add/remove/change values in the response that we have no // control over. responseSchema: - RelaxedCrowdstrikeBaseApiResponseSchema as unknown as SubActionRequestParams['responseSchema'], + CrowdstrikeApiDoNotValidateResponsesSchema as unknown as SubActionRequestParams['responseSchema'], headers: { ...req.headers, Authorization: `Bearer ${CrowdstrikeConnector.token}`, @@ -257,39 +284,114 @@ export class CrowdstrikeConnector extends SubActionConnector< } throw new CrowdstrikeError(error.message); } - } + }; - public async batchInitRTRSession( - payload: CrowdstrikeInitRTRParams, + // Helper method to execute RTR commands with different API endpoints + private executeRTRCommandWithUrl = async ( + url: string, + payload: { + command: string; + endpoint_ids: string[]; + overwriteUrl?: 'batchExecuteRTR' | 'batchActiveResponderExecuteRTR' | 'batchAdminExecuteRTR'; + }, connectorUsageCollector: ConnectorUsageCollector - ) { - const response = await this.crowdstrikeApiRequest( + ): Promise => { + // Some commands are only available in specific API endpoints, however there's an additional requirement check for the command's argument + // Eg. runscript command is available with the batchExecuteRTR endpoint, but if it goes with --Raw parameter, it should go to batchAdminExecuteRTR endpoint + // This overwrite value will be coming from kibana response actions api + const csUrl = payload.overwriteUrl ? this.urls[payload.overwriteUrl] : url; + + const batchId = await this.crowdStrikeSessionManager.initializeSession( + { endpoint_ids: payload.endpoint_ids }, + connectorUsageCollector + ); + + const baseCommand = payload.command.split(' ')[0]; + + if (!SUPPORTED_RTR_COMMANDS.includes(baseCommand)) { + throw new CrowdstrikeError('Command not supported'); + } + return await this.crowdstrikeApiRequest( { - url: this.urls.batchInitRTRSession, + url: csUrl, method: 'post', data: { - host_ids: payload.endpoint_ids, + base_command: baseCommand, + command_string: payload.command, + batch_id: batchId, + hosts: payload.endpoint_ids, + persist_all: false, }, paramsSerializer, - responseSchema: CrowdstrikeInitRTRResponseSchema, + responseSchema: + CrowdstrikeExecuteRTRResponseSchema as unknown as SubActionRequestParams['responseSchema'], }, connectorUsageCollector ); + }; + + // Public method for generic RTR command execution + public async executeRTRCommand( + payload: { + command: string; + endpoint_ids: string[]; + overwriteUrl?: 'batchActiveResponderExecuteRTR' | 'batchAdminExecuteRTR'; + }, + connectorUsageCollector: ConnectorUsageCollector + ): Promise { + return await this.executeRTRCommandWithUrl( + this.urls.batchExecuteRTR, + payload, + connectorUsageCollector + ); + } - CrowdstrikeConnector.currentBatchId = response.batch_id; + // Public method for Active Responder RTR command execution + public async batchActiveResponderExecuteRTR( + payload: { + command: string; + endpoint_ids: string[]; + overwriteUrl?: 'batchAdminExecuteRTR'; + }, + connectorUsageCollector: ConnectorUsageCollector + ): Promise { + return await this.executeRTRCommandWithUrl( + this.urls.batchActiveResponderExecuteRTR, + payload, + connectorUsageCollector + ); } - // TODO: WIP - just to have session init logic in place - public async executeRTRCommand( - payload: { command: string; endpoint_ids: string[] }, + // Public method for Admin RTR command execution + public async batchAdminExecuteRTR( + payload: { + command: string; + endpoint_ids: string[]; + }, connectorUsageCollector: ConnectorUsageCollector - ) { - const batchId = await this.crowdStrikeSessionManager.initializeSession( - { endpoint_ids: payload.endpoint_ids }, + ): Promise { + return await this.executeRTRCommandWithUrl( + this.urls.batchAdminExecuteRTR, + payload, connectorUsageCollector ); + } - return Promise.resolve({ batchId }); + // TODO: for now just for testing purposes, will be a part of a following PR + public async getRTRCloudScripts( + payload: CrowdstrikeGetAgentsParams, + connectorUsageCollector: ConnectorUsageCollector + ): Promise { + // @ts-expect-error will be a part of the next PR + return this.crowdstrikeApiRequest( + { + url: this.urls.getRTRCloudScriptsDetails, + method: 'GET', + paramsSerializer, + responseSchema: RelaxedCrowdstrikeBaseApiResponseSchema, + }, + connectorUsageCollector + ); } protected getResponseErrorMessage( diff --git a/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/sentinelone.ts b/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/sentinelone.ts index 42d946edbc787..4be4a4e25ef15 100644 --- a/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/sentinelone.ts +++ b/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/sentinelone.ts @@ -43,7 +43,7 @@ import { SentinelOneGetRemoteScriptResultsParamsSchema, SentinelOneDownloadRemoteScriptResultsParamsSchema, SentinelOneDownloadRemoteScriptResultsResponseSchema, - SentinelOneBaseApiResponseSchema, + SentinelOneApiDoNotValidateResponsesSchema, } from '../../../common/sentinelone/schema'; import { SUB_ACTION } from '../../../common/sentinelone/constants'; import { @@ -405,7 +405,7 @@ export class SentinelOneConnector extends SubActionConnector< // where the external system might add/remove/change values in the response that we have no // control over. responseSchema: - SentinelOneBaseApiResponseSchema as unknown as SubActionRequestParams['responseSchema'], + SentinelOneApiDoNotValidateResponsesSchema as unknown as SubActionRequestParams['responseSchema'], params: { ...req.params, APIToken: this.secrets.token, diff --git a/x-pack/plugins/stack_connectors/server/routes/get_inference_services.test.ts b/x-pack/plugins/stack_connectors/server/routes/get_inference_services.test.ts index 50596028d80a8..9e1449a37f7ff 100644 --- a/x-pack/plugins/stack_connectors/server/routes/get_inference_services.test.ts +++ b/x-pack/plugins/stack_connectors/server/routes/get_inference_services.test.ts @@ -8,7 +8,7 @@ import { httpServiceMock, httpServerMock } from '@kbn/core/server/mocks'; import { coreMock } from '@kbn/core/server/mocks'; import { getInferenceServicesRoute } from './get_inference_services'; -import { DisplayType, FieldType } from '../../common/dynamic_config/types'; +import { FieldType } from '../../common/dynamic_config/types'; describe('getInferenceServicesRoute', () => { it('returns available service providers', async () => { @@ -17,100 +17,644 @@ describe('getInferenceServicesRoute', () => { const mockResult = [ { - provider: 'openai', - task_types: [ - { - task_type: 'completion', - configuration: { - user: { - display: DisplayType.TEXTBOX, - label: 'User', - order: 1, - required: false, - sensitive: false, - tooltip: 'Specifies the user issuing the request.', - type: FieldType.STRING, - validations: [], - value: '', - ui_restrictions: [], - default_value: null, - depends_on: [], - }, - }, - }, - ], - configuration: { + service: 'cohere', + name: 'Cohere', + task_types: ['text_embedding', 'rerank', 'completion'], + configurations: { api_key: { - display: DisplayType.TEXTBOX, + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + }, + }, + { + service: 'elastic', + name: 'Elastic', + task_types: ['sparse_embedding'], + configurations: { + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + max_input_tokens: { + default_value: null, + description: 'Allows you to specify the maximum number of tokens per input.', + label: 'Maximum Input Tokens', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + }, + }, + { + service: 'watsonxai', + name: 'IBM Watsonx', + task_types: ['text_embedding'], + configurations: { + project_id: { + default_value: null, + description: '', + label: 'Project ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_version: { + default_value: null, + description: 'The IBM Watsonx API version ID to use.', + label: 'API Version', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + max_input_tokens: { + default_value: null, + description: 'Allows you to specify the maximum number of tokens per input.', + label: 'Maximum Input Tokens', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + url: { + default_value: null, + description: '', + label: 'URL', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'azureaistudio', + name: 'Azure AI Studio', + task_types: ['text_embedding', 'completion'], + configurations: { + endpoint_type: { + default_value: null, + description: 'Specifies the type of endpoint that is used in your model deployment.', + label: 'Endpoint Type', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + provider: { + default_value: null, + description: 'The model provider for your deployment.', + label: 'Provider', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + target: { + default_value: null, + description: 'The target URL of your Azure AI Studio model deployment.', + label: 'Target', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'hugging_face', + name: 'Hugging Face', + task_types: ['text_embedding', 'sparse_embedding'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + url: { + default_value: 'https://api.openai.com/v1/embeddings', + description: 'The URL endpoint to use for the requests.', + label: 'URL', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'amazonbedrock', + name: 'Amazon Bedrock', + task_types: ['text_embedding', 'completion'], + configurations: { + secret_key: { + default_value: null, + description: 'A valid AWS secret key that is paired with the access_key.', + label: 'Secret Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + provider: { + default_value: null, + description: 'The model provider for your deployment.', + label: 'Provider', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + access_key: { + default_value: null, + description: 'A valid AWS access key that has permissions to use Amazon Bedrock.', + label: 'Access Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + model: { + default_value: null, + description: + 'The base model ID or an ARN to a custom model based on a foundational model.', + label: 'Model', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: + 'By default, the amazonbedrock service sets the number of requests allowed per minute to 240.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + region: { + default_value: null, + description: 'The region that your model or ARN is deployed in.', + label: 'Region', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'anthropic', + name: 'Anthropic', + task_types: ['completion'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: + 'By default, the anthropic service sets the number of requests allowed per minute to 50.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'googleaistudio', + name: 'Google AI Studio', + task_types: ['text_embedding', 'completion'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, label: 'API Key', - order: 3, required: true, sensitive: true, - tooltip: `The OpenAI API authentication key. For more details about generating OpenAI API keys, refer to the https://platform.openai.com/account/api-keys.`, + updatable: true, type: FieldType.STRING, - validations: [], - value: null, - ui_restrictions: [], + }, + 'rate_limit.requests_per_minute': { default_value: null, - depends_on: [], + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, }, model_id: { - display: DisplayType.TEXTBOX, + default_value: null, + description: "ID of the LLM you're using.", label: 'Model ID', - order: 2, required: true, sensitive: false, - tooltip: 'The name of the model to use for the inference task.', + updatable: true, type: FieldType.STRING, - validations: [], - value: null, - ui_restrictions: [], + }, + }, + }, + { + service: 'elasticsearch', + name: 'Elasticsearch', + task_types: ['text_embedding', 'sparse_embedding', 'rerank'], + configurations: { + num_allocations: { + default_value: 1, + description: + 'The total number of allocations this model is assigned across machine learning nodes.', + label: 'Number Allocations', + required: true, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + num_threads: { + default_value: 2, + description: + 'Sets the number of threads used by each model allocation during inference.', + label: 'Number Threads', + required: true, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: '.multilingual-e5-small', + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'openai', + name: 'OpenAI', + task_types: ['text_embedding', 'completion'], + configurations: { + api_key: { default_value: null, - depends_on: [], + description: + 'The OpenAI API authentication key. For more details about generating OpenAI API keys, refer to the https://platform.openai.com/account/api-keys.', + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, }, organization_id: { - display: DisplayType.TEXTBOX, + default_value: null, + description: 'The unique identifier of your organization.', label: 'Organization ID', - order: 4, required: false, sensitive: false, - tooltip: 'The unique identifier of your organization.', + updatable: true, type: FieldType.STRING, - validations: [], - value: null, - ui_restrictions: [], + }, + 'rate_limit.requests_per_minute': { default_value: null, - depends_on: [], + description: + 'Default number of requests allowed per minute. For text_embedding is 3000. For completion is 500.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, }, url: { - display: DisplayType.TEXTBOX, + default_value: 'https://api.openai.com/v1/chat/completions', + description: + 'The OpenAI API endpoint URL. For more information on the URL, refer to the https://platform.openai.com/docs/api-reference.', label: 'URL', - order: 1, required: true, sensitive: false, - tooltip: - 'The OpenAI API endpoint URL. For more information on the URL, refer to the https://platform.openai.com/docs/api-reference.', + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'azureopenai', + name: 'Azure OpenAI', + task_types: ['text_embedding', 'completion'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + entra_id: { + default_value: null, + description: 'You must provide either an API key or an Entra ID.', + label: 'Entra ID', + required: false, + sensitive: true, + updatable: true, type: FieldType.STRING, - validations: [], - value: null, - ui_restrictions: [], - default_value: 'https://api.openai.com/v1/chat/completions', - depends_on: [], }, 'rate_limit.requests_per_minute': { - display: DisplayType.NUMERIC, - label: 'Rate limit', - order: 5, + default_value: null, + description: + 'The azureopenai service sets a default number of requests allowed per minute depending on the task type.', + label: 'Rate Limit', required: false, sensitive: false, - tooltip: - 'Default number of requests allowed per minute. For text_embedding is 3000. For completion is 500.', + updatable: true, type: FieldType.INTEGER, - validations: [], - value: null, - ui_restrictions: [], + }, + deployment_id: { + default_value: null, + description: 'The deployment name of your deployed models.', + label: 'Deployment ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + resource_name: { + default_value: null, + description: 'The name of your Azure OpenAI resource.', + label: 'Resource Name', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_version: { default_value: null, - depends_on: [], + description: 'The Azure API version ID to use.', + label: 'API Version', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'mistral', + name: 'Mistral', + task_types: ['text_embedding'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + model: { + default_value: null, + description: + 'Refer to the Mistral models documentation for the list of available text embedding models.', + label: 'Model', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + max_input_tokens: { + default_value: null, + description: 'Allows you to specify the maximum number of tokens per input.', + label: 'Maximum Input Tokens', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + }, + }, + { + service: 'googlevertexai', + name: 'Google Vertex AI', + task_types: ['text_embedding', 'rerank'], + configurations: { + service_account_json: { + default_value: null, + description: "API Key for the provider you're connecting to.", + label: 'Credentials JSON', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + project_id: { + default_value: null, + description: + 'The GCP Project ID which has Vertex AI API(s) enabled. For more information on the URL, refer to the {geminiVertexAIDocs}.', + label: 'GCP Project', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + location: { + default_value: null, + description: + 'Please provide the GCP region where the Vertex AI API(s) is enabled. For more information, refer to the {geminiVertexAIDocs}.', + label: 'GCP Region', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: `ID of the LLM you're using.`, + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'alibabacloud-ai-search', + name: 'AlibabaCloud AI Search', + task_types: ['text_embedding', 'sparse_embedding', 'rerank', 'completion'], + configurations: { + workspace: { + default_value: null, + description: 'The name of the workspace used for the {infer} task.', + label: 'Workspace', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_key: { + default_value: null, + description: `A valid API key for the AlibabaCloud AI Search API.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + service_id: { + default_value: null, + description: 'The name of the model service to use for the {infer} task.', + label: 'Project ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + host: { + default_value: null, + description: + 'The name of the host address used for the {infer} task. You can find the host address at https://opensearch.console.aliyun.com/cn-shanghai/rag/api-key[ the API keys section] of the documentation.', + label: 'Host', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + http_schema: { + default_value: null, + description: '', + label: 'HTTP Schema', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, }, }, }, diff --git a/x-pack/plugins/stack_connectors/server/routes/get_inference_services.ts b/x-pack/plugins/stack_connectors/server/routes/get_inference_services.ts index 1396072834261..005b565dff0d5 100644 --- a/x-pack/plugins/stack_connectors/server/routes/get_inference_services.ts +++ b/x-pack/plugins/stack_connectors/server/routes/get_inference_services.ts @@ -12,6 +12,7 @@ import { IKibanaResponse, KibanaResponseFactory, } from '@kbn/core/server'; +import { FieldType } from '../../common/dynamic_config/types'; import { InferenceProvider } from '../../common/inference/types'; import { INTERNAL_BASE_STACK_CONNECTORS_API_PATH } from '../../common'; @@ -32,15 +33,662 @@ export const getInferenceServicesRoute = (router: IRouter) => { req: KibanaRequest, res: KibanaResponseFactory ): Promise { - const esClient = (await ctx.core).elasticsearch.client.asInternalUser; + // Temporarily hard-coding the response until the real implementation is ready with the updated response - https://github.com/elastic/ml-team/issues/1428 - const response = await esClient.transport.request<{ - endpoints: InferenceProvider[]; - }>({ - method: 'GET', - path: `/_inference/_services`, - }); + // const esClient = (await ctx.core).elasticsearch.client.asInternalUser; + + // // eslint-disable-next-line @typescript-eslint/no-explicit-any + // const response = await esClient.transport.request({ + // method: 'GET', + // path: `/_inference/_services`, + // }); + + const response: InferenceProvider[] = [ + { + service: 'cohere', + name: 'Cohere', + task_types: ['text_embedding', 'rerank', 'completion'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + }, + }, + { + service: 'elastic', + name: 'Elastic', + task_types: ['sparse_embedding'], + configurations: { + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + max_input_tokens: { + default_value: null, + description: 'Allows you to specify the maximum number of tokens per input.', + label: 'Maximum Input Tokens', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + }, + }, + { + service: 'watsonxai', + name: 'IBM Watsonx', + task_types: ['text_embedding'], + configurations: { + project_id: { + default_value: null, + description: '', + label: 'Project ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_version: { + default_value: null, + description: 'The IBM Watsonx API version ID to use.', + label: 'API Version', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + max_input_tokens: { + default_value: null, + description: 'Allows you to specify the maximum number of tokens per input.', + label: 'Maximum Input Tokens', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + url: { + default_value: null, + description: '', + label: 'URL', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'azureaistudio', + name: 'Azure AI Studio', + task_types: ['text_embedding', 'completion'], + configurations: { + endpoint_type: { + default_value: null, + description: 'Specifies the type of endpoint that is used in your model deployment.', + label: 'Endpoint Type', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + provider: { + default_value: null, + description: 'The model provider for your deployment.', + label: 'Provider', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + target: { + default_value: null, + description: 'The target URL of your Azure AI Studio model deployment.', + label: 'Target', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'hugging_face', + name: 'Hugging Face', + task_types: ['text_embedding', 'sparse_embedding'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + url: { + default_value: 'https://api.openai.com/v1/embeddings', + description: 'The URL endpoint to use for the requests.', + label: 'URL', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'amazonbedrock', + name: 'Amazon Bedrock', + task_types: ['text_embedding', 'completion'], + configurations: { + secret_key: { + default_value: null, + description: 'A valid AWS secret key that is paired with the access_key.', + label: 'Secret Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + provider: { + default_value: null, + description: 'The model provider for your deployment.', + label: 'Provider', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + access_key: { + default_value: null, + description: 'A valid AWS access key that has permissions to use Amazon Bedrock.', + label: 'Access Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + model: { + default_value: null, + description: + 'The base model ID or an ARN to a custom model based on a foundational model.', + label: 'Model', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: + 'By default, the amazonbedrock service sets the number of requests allowed per minute to 240.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + region: { + default_value: null, + description: 'The region that your model or ARN is deployed in.', + label: 'Region', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'anthropic', + name: 'Anthropic', + task_types: ['completion'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: + 'By default, the anthropic service sets the number of requests allowed per minute to 50.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'googleaistudio', + name: 'Google AI Studio', + task_types: ['text_embedding', 'completion'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: "ID of the LLM you're using.", + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'elasticsearch', + name: 'Elasticsearch', + task_types: ['text_embedding', 'sparse_embedding', 'rerank'], + configurations: { + num_allocations: { + default_value: 1, + description: + 'The total number of allocations this model is assigned across machine learning nodes.', + label: 'Number Allocations', + required: true, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + num_threads: { + default_value: 2, + description: + 'Sets the number of threads used by each model allocation during inference.', + label: 'Number Threads', + required: true, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: '.multilingual-e5-small', + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'openai', + name: 'OpenAI', + task_types: ['text_embedding', 'completion'], + configurations: { + api_key: { + default_value: null, + description: + 'The OpenAI API authentication key. For more details about generating OpenAI API keys, refer to the https://platform.openai.com/account/api-keys.', + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + organization_id: { + default_value: null, + description: 'The unique identifier of your organization.', + label: 'Organization ID', + required: false, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: + 'Default number of requests allowed per minute. For text_embedding is 3000. For completion is 500.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: 'The name of the model to use for the inference task.', + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + url: { + default_value: 'https://api.openai.com/v1/chat/completions', + description: + 'The OpenAI API endpoint URL. For more information on the URL, refer to the https://platform.openai.com/docs/api-reference.', + label: 'URL', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'azureopenai', + name: 'Azure OpenAI', + task_types: ['text_embedding', 'completion'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + entra_id: { + default_value: null, + description: 'You must provide either an API key or an Entra ID.', + label: 'Entra ID', + required: false, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: + 'The azureopenai service sets a default number of requests allowed per minute depending on the task type.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + deployment_id: { + default_value: null, + description: 'The deployment name of your deployed models.', + label: 'Deployment ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + resource_name: { + default_value: null, + description: 'The name of your Azure OpenAI resource.', + label: 'Resource Name', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_version: { + default_value: null, + description: 'The Azure API version ID to use.', + label: 'API Version', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'mistral', + name: 'Mistral', + task_types: ['text_embedding'], + configurations: { + api_key: { + default_value: null, + description: `API Key for the provider you're connecting to.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + model: { + default_value: null, + description: + 'Refer to the Mistral models documentation for the list of available text embedding models.', + label: 'Model', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + max_input_tokens: { + default_value: null, + description: 'Allows you to specify the maximum number of tokens per input.', + label: 'Maximum Input Tokens', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + }, + }, + { + service: 'googlevertexai', + name: 'Google Vertex AI', + task_types: ['text_embedding', 'rerank'], + configurations: { + service_account_json: { + default_value: null, + description: "API Key for the provider you're connecting to.", + label: 'Credentials JSON', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + project_id: { + default_value: null, + description: + 'The GCP Project ID which has Vertex AI API(s) enabled. For more information on the URL, refer to the {geminiVertexAIDocs}.', + label: 'GCP Project', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + location: { + default_value: null, + description: + 'Please provide the GCP region where the Vertex AI API(s) is enabled. For more information, refer to the {geminiVertexAIDocs}.', + label: 'GCP Region', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + model_id: { + default_value: null, + description: `ID of the LLM you're using.`, + label: 'Model ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + { + service: 'alibabacloud-ai-search', + name: 'AlibabaCloud AI Search', + task_types: ['text_embedding', 'sparse_embedding', 'rerank', 'completion'], + configurations: { + workspace: { + default_value: null, + description: 'The name of the workspace used for the {infer} task.', + label: 'Workspace', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + api_key: { + default_value: null, + description: `A valid API key for the AlibabaCloud AI Search API.`, + label: 'API Key', + required: true, + sensitive: true, + updatable: true, + type: FieldType.STRING, + }, + service_id: { + default_value: null, + description: 'The name of the model service to use for the {infer} task.', + label: 'Project ID', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + host: { + default_value: null, + description: + 'The name of the host address used for the {infer} task. You can find the host address at https://opensearch.console.aliyun.com/cn-shanghai/rag/api-key[ the API keys section] of the documentation.', + label: 'Host', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + 'rate_limit.requests_per_minute': { + default_value: null, + description: 'Minimize the number of rate limit errors.', + label: 'Rate Limit', + required: false, + sensitive: false, + updatable: true, + type: FieldType.INTEGER, + }, + http_schema: { + default_value: null, + description: '', + label: 'HTTP Schema', + required: true, + sensitive: false, + updatable: true, + type: FieldType.STRING, + }, + }, + }, + ]; + // TODO: replace transformative map to the real type coming from the _inference/_service return res.ok({ body: response, }); diff --git a/x-pack/plugins/task_manager/server/config.test.ts b/x-pack/plugins/task_manager/server/config.test.ts index 2193620e0c998..2bb2054f42dae 100644 --- a/x-pack/plugins/task_manager/server/config.test.ts +++ b/x-pack/plugins/task_manager/server/config.test.ts @@ -19,10 +19,6 @@ describe('config validation', () => { "active_nodes_lookback": "30s", "interval": 10000, }, - "ephemeral_tasks": Object { - "enabled": false, - "request_capacity": 10, - }, "event_loop_delay": Object { "monitor": true, "warn_threshold": 5000, @@ -82,10 +78,6 @@ describe('config validation', () => { "active_nodes_lookback": "30s", "interval": 10000, }, - "ephemeral_tasks": Object { - "enabled": false, - "request_capacity": 10, - }, "event_loop_delay": Object { "monitor": true, "warn_threshold": 5000, @@ -143,10 +135,6 @@ describe('config validation', () => { "active_nodes_lookback": "30s", "interval": 10000, }, - "ephemeral_tasks": Object { - "enabled": false, - "request_capacity": 10, - }, "event_loop_delay": Object { "monitor": true, "warn_threshold": 5000, @@ -296,4 +284,15 @@ describe('config validation', () => { `"[discovery.active_nodes_lookback]: active node lookback duration cannot exceed five minutes"` ); }); + + test('should not throw if ephemeral_tasks is defined', () => { + const config: Record = { + ephemeral_tasks: { + enabled: true, + request_capacity: 20, + }, + }; + + expect(() => configSchema.validate(config)).not.toThrow(); + }); }); diff --git a/x-pack/plugins/task_manager/server/config.ts b/x-pack/plugins/task_manager/server/config.ts index 92d7429501cd9..83690775b9104 100644 --- a/x-pack/plugins/task_manager/server/config.ts +++ b/x-pack/plugins/task_manager/server/config.ts @@ -16,7 +16,6 @@ export const DEFAULT_MAX_WORKERS = 10; export const DEFAULT_POLL_INTERVAL = 3000; export const MGET_DEFAULT_POLL_INTERVAL = 500; export const DEFAULT_VERSION_CONFLICT_THRESHOLD = 80; -export const DEFAULT_MAX_EPHEMERAL_REQUEST_CAPACITY = MAX_WORKERS_LIMIT; // Monitoring Constants // =================== @@ -101,16 +100,8 @@ export const configSchema = schema.object( max: MAX_DISCOVERY_INTERVAL_MS, }), }), - ephemeral_tasks: schema.object({ - enabled: schema.boolean({ defaultValue: false }), - /* How many requests can Task Manager buffer before it rejects new requests. */ - request_capacity: schema.number({ - // a nice round contrived number, feel free to change as we learn how it behaves - defaultValue: 10, - min: 1, - max: DEFAULT_MAX_EPHEMERAL_REQUEST_CAPACITY, - }), - }), + /* Allows for old kibana config to start kibana without crashing since ephemeral tasks are deprecated*/ + ephemeral_tasks: schema.maybe(schema.any()), event_loop_delay: eventLoopDelaySchema, kibanas_per_partition: schema.number({ defaultValue: DEFAULT_KIBANAS_PER_PARTITION, diff --git a/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.mock.ts b/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.mock.ts deleted file mode 100644 index d107bcdddf502..0000000000000 --- a/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.mock.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 { EphemeralTaskLifecycle } from './ephemeral_task_lifecycle'; -import { TaskLifecycleEvent } from './polling_lifecycle'; -import { of, Observable } from 'rxjs'; - -export const ephemeralTaskLifecycleMock = { - create(opts: { events$?: Observable; getQueuedTasks?: () => number }) { - return { - attemptToRun: jest.fn(), - get events() { - return opts.events$ ?? of(); - }, - get queuedTasks() { - return opts.getQueuedTasks ? opts.getQueuedTasks() : 0; - }, - } as unknown as jest.Mocked; - }, -}; diff --git a/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.test.ts b/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.test.ts deleted file mode 100644 index ec45959157770..0000000000000 --- a/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.test.ts +++ /dev/null @@ -1,414 +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 { Subject } from 'rxjs'; - -import { TaskLifecycleEvent } from './polling_lifecycle'; -import { createInitialMiddleware } from './lib/middleware'; -import { TaskTypeDictionary } from './task_type_dictionary'; -import { mockLogger } from './test_utils'; -import { asErr, asOk } from './lib/result_type'; -import { FillPoolResult } from './lib/fill_pool'; -import { EphemeralTaskLifecycle, EphemeralTaskLifecycleOpts } from './ephemeral_task_lifecycle'; -import { v4 as uuidv4 } from 'uuid'; -import { asTaskPollingCycleEvent, asTaskRunEvent, TaskPersistence } from './task_events'; -import { TaskRunResult } from './task_running'; -import { TaskPoolRunResult } from './task_pool'; -import { TaskPoolMock } from './task_pool/task_pool.mock'; -import { executionContextServiceMock } from '@kbn/core/server/mocks'; -import { taskManagerMock } from './mocks'; - -jest.mock('./constants', () => ({ - CONCURRENCY_ALLOW_LIST_BY_TASK_TYPE: ['report'], -})); - -const executionContext = executionContextServiceMock.createSetupContract(); - -describe('EphemeralTaskLifecycle', () => { - function initTaskLifecycleParams({ - config, - ...optOverrides - }: { - config?: Partial; - } & Partial> = {}) { - const taskManagerLogger = mockLogger(); - const poolCapacity = jest.fn(); - const pool = TaskPoolMock.create(poolCapacity); - const lifecycleEvent$ = new Subject(); - const elasticsearchAndSOAvailability$ = new Subject(); - const opts: EphemeralTaskLifecycleOpts = { - logger: taskManagerLogger, - definitions: new TaskTypeDictionary(taskManagerLogger), - executionContext, - config: { - discovery: { - active_nodes_lookback: '30s', - interval: 10000, - }, - kibanas_per_partition: 2, - max_attempts: 9, - poll_interval: 6000000, - version_conflict_threshold: 80, - request_capacity: 1000, - allow_reading_invalid_state: false, - monitored_aggregated_stats_refresh_rate: 5000, - monitored_stats_required_freshness: 5000, - monitored_stats_running_average_window: 50, - monitored_stats_health_verbose_log: { - enabled: true, - level: 'debug', - warn_delayed_task_start_in_seconds: 60, - }, - monitored_task_execution_thresholds: { - default: { - error_threshold: 90, - warn_threshold: 80, - }, - custom: {}, - }, - ephemeral_tasks: { - enabled: true, - request_capacity: 10, - }, - unsafe: { - exclude_task_types: [], - authenticate_background_task_utilization: true, - }, - event_loop_delay: { - monitor: true, - warn_threshold: 5000, - }, - worker_utilization_running_average_window: 5, - metrics_reset_interval: 3000, - claim_strategy: 'update_by_query', - request_timeouts: { - update_by_query: 1000, - }, - auto_calculate_default_ech_capacity: false, - ...config, - }, - elasticsearchAndSOAvailability$, - pool, - lifecycleEvent: lifecycleEvent$, - middleware: createInitialMiddleware(), - ...optOverrides, - }; - - opts.definitions.registerTaskDefinitions({ - foo: { - title: 'foo', - createTaskRunner: jest.fn(), - }, - }); - - pool.run.mockResolvedValue(Promise.resolve(TaskPoolRunResult.RunningAllClaimedTasks)); - - return { poolCapacity, lifecycleEvent$, pool, elasticsearchAndSOAvailability$, opts }; - } - - describe('constructor', () => { - test('avoids unnecesery subscription if ephemeral tasks are disabled', () => { - const { opts } = initTaskLifecycleParams({ - config: { - ephemeral_tasks: { - enabled: false, - request_capacity: 10, - }, - }, - }); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const task = taskManagerMock.createTask(); - expect(ephemeralTaskLifecycle.attemptToRun(task)).toMatchObject(asErr(task)); - }); - - test('queues up tasks when ephemeral tasks are enabled', () => { - const { opts } = initTaskLifecycleParams(); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const task = taskManagerMock.createTask(); - expect(ephemeralTaskLifecycle.attemptToRun(task)).toMatchObject(asOk(task)); - }); - - test('rejects tasks when ephemeral tasks are enabled and queue is full', () => { - const { opts } = initTaskLifecycleParams({ - config: { ephemeral_tasks: { enabled: true, request_capacity: 2 } }, - }); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const task = taskManagerMock.createTask(); - expect(ephemeralTaskLifecycle.attemptToRun(task)).toMatchObject(asOk(task)); - const task2 = taskManagerMock.createTask(); - expect(ephemeralTaskLifecycle.attemptToRun(task2)).toMatchObject(asOk(task2)); - - const rejectedTask = taskManagerMock.createTask(); - expect(ephemeralTaskLifecycle.attemptToRun(rejectedTask)).toMatchObject(asErr(rejectedTask)); - }); - - test('pulls tasks off queue when a polling cycle completes', () => { - const { pool, poolCapacity, opts, lifecycleEvent$ } = initTaskLifecycleParams(); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const task = taskManagerMock.createTask({ id: `my-phemeral-task` }); - expect(ephemeralTaskLifecycle.attemptToRun(task)).toMatchObject(asOk(task)); - - poolCapacity.mockReturnValue({ - availableCapacity: 10, - }); - - lifecycleEvent$.next( - asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed })) - ); - - expect(pool.run).toHaveBeenCalledTimes(1); - - const taskRunners = pool.run.mock.calls[0][0]; - expect(taskRunners).toHaveLength(1); - expect(`${taskRunners[0]}`).toMatchInlineSnapshot(`"foo \\"my-phemeral-task\\" (Ephemeral)"`); - }); - - test('pulls tasks off queue when a task run completes', () => { - const { pool, poolCapacity, opts, lifecycleEvent$ } = initTaskLifecycleParams(); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const task = taskManagerMock.createTask({ id: `my-phemeral-task` }); - expect(ephemeralTaskLifecycle.attemptToRun(task)).toMatchObject(asOk(task)); - - poolCapacity.mockReturnValue({ - availableCapacity: 10, - }); - - lifecycleEvent$.next( - asTaskRunEvent( - uuidv4(), - asOk({ - task: taskManagerMock.createTask(), - result: TaskRunResult.Success, - persistence: TaskPersistence.Ephemeral, - isExpired: false, - }) - ) - ); - - expect(pool.run).toHaveBeenCalledTimes(1); - - const taskRunners = pool.run.mock.calls[0][0]; - expect(taskRunners).toHaveLength(1); - expect(`${taskRunners[0]}`).toMatchInlineSnapshot(`"foo \\"my-phemeral-task\\" (Ephemeral)"`); - }); - - test('pulls as many tasks off queue as it has capacity for', () => { - const { pool, poolCapacity, opts, lifecycleEvent$ } = initTaskLifecycleParams(); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const tasks = [ - taskManagerMock.createTask(), - taskManagerMock.createTask(), - taskManagerMock.createTask(), - ]; - expect(ephemeralTaskLifecycle.attemptToRun(tasks[0])).toMatchObject(asOk(tasks[0])); - expect(ephemeralTaskLifecycle.attemptToRun(tasks[1])).toMatchObject(asOk(tasks[1])); - expect(ephemeralTaskLifecycle.attemptToRun(tasks[2])).toMatchObject(asOk(tasks[2])); - - poolCapacity.mockReturnValue({ - availableCapacity: 2, - }); - - lifecycleEvent$.next( - asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed })) - ); - - expect(pool.run).toHaveBeenCalledTimes(1); - - const taskRunners = pool.run.mock.calls[0][0]; - expect(taskRunners).toHaveLength(2); - expect(`${taskRunners[0]}`).toEqual(`foo "${tasks[0].id}" (Ephemeral)`); - expect(`${taskRunners[1]}`).toEqual(`foo "${tasks[1].id}" (Ephemeral)`); - }); - - test('pulls only as many tasks of the same type as is allowed by maxConcurrency', () => { - const { pool, poolCapacity, opts, lifecycleEvent$ } = initTaskLifecycleParams(); - - opts.definitions.registerTaskDefinitions({ - report: { - title: 'report', - maxConcurrency: 1, - createTaskRunner: jest.fn(), - }, - }); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const firstLimitedTask = taskManagerMock.createTask({ taskType: 'report' }); - const secondLimitedTask = taskManagerMock.createTask({ taskType: 'report' }); - // both are queued - expect(ephemeralTaskLifecycle.attemptToRun(firstLimitedTask)).toMatchObject( - asOk(firstLimitedTask) - ); - expect(ephemeralTaskLifecycle.attemptToRun(secondLimitedTask)).toMatchObject( - asOk(secondLimitedTask) - ); - - // pool has capacity for both - poolCapacity.mockReturnValue({ - availableCapacity: 10, - }); - pool.getUsedCapacityByType.mockReturnValue(0); - - lifecycleEvent$.next( - asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed })) - ); - - expect(pool.run).toHaveBeenCalledTimes(1); - - const taskRunners = pool.run.mock.calls[0][0]; - expect(taskRunners).toHaveLength(1); - expect(`${taskRunners[0]}`).toEqual(`report "${firstLimitedTask.id}" (Ephemeral)`); - }); - - test('when pulling tasks from the queue, it takes into account the maxConcurrency of tasks that are already in the pool', () => { - const { pool, poolCapacity, opts, lifecycleEvent$ } = initTaskLifecycleParams(); - - opts.definitions.registerTaskDefinitions({ - report: { - title: 'report', - maxConcurrency: 1, - createTaskRunner: jest.fn(), - }, - }); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const firstLimitedTask = taskManagerMock.createTask({ taskType: 'report' }); - const secondLimitedTask = taskManagerMock.createTask({ taskType: 'report' }); - // both are queued - expect(ephemeralTaskLifecycle.attemptToRun(firstLimitedTask)).toMatchObject( - asOk(firstLimitedTask) - ); - expect(ephemeralTaskLifecycle.attemptToRun(secondLimitedTask)).toMatchObject( - asOk(secondLimitedTask) - ); - - // pool has capacity in general - poolCapacity.mockReturnValue({ - availableCapacity: 2, - }); - // but when we ask how many it has occupied by type - wee always have one worker already occupied by that type - pool.getUsedCapacityByType.mockReturnValue(1); - - lifecycleEvent$.next( - asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed })) - ); - - expect(pool.run).toHaveBeenCalledTimes(0); - - // now we release the worker in the pool and cause another cycle in the epheemral queue - pool.getUsedCapacityByType.mockReturnValue(0); - lifecycleEvent$.next( - asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed })) - ); - - expect(pool.run).toHaveBeenCalledTimes(1); - const taskRunners = pool.run.mock.calls[0][0]; - expect(taskRunners).toHaveLength(1); - expect(`${taskRunners[0]}`).toEqual(`report "${firstLimitedTask.id}" (Ephemeral)`); - }); - }); - - test('pulls tasks with both maxConcurrency and unlimited concurrency', () => { - const { pool, poolCapacity, opts, lifecycleEvent$ } = initTaskLifecycleParams(); - - opts.definitions.registerTaskDefinitions({ - report: { - title: 'report', - maxConcurrency: 1, - createTaskRunner: jest.fn(), - }, - }); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const fooTasks = [ - taskManagerMock.createTask(), - taskManagerMock.createTask(), - taskManagerMock.createTask(), - ]; - expect(ephemeralTaskLifecycle.attemptToRun(fooTasks[0])).toMatchObject(asOk(fooTasks[0])); - - const firstLimitedTask = taskManagerMock.createTask({ taskType: 'report' }); - expect(ephemeralTaskLifecycle.attemptToRun(firstLimitedTask)).toMatchObject( - asOk(firstLimitedTask) - ); - - expect(ephemeralTaskLifecycle.attemptToRun(fooTasks[1])).toMatchObject(asOk(fooTasks[1])); - - const secondLimitedTask = taskManagerMock.createTask({ taskType: 'report' }); - expect(ephemeralTaskLifecycle.attemptToRun(secondLimitedTask)).toMatchObject( - asOk(secondLimitedTask) - ); - - expect(ephemeralTaskLifecycle.attemptToRun(fooTasks[2])).toMatchObject(asOk(fooTasks[2])); - - // pool has capacity for all - poolCapacity.mockReturnValue({ - availableCapacity: 10, - }); - pool.getUsedCapacityByType.mockReturnValue(0); - - lifecycleEvent$.next(asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed }))); - - expect(pool.run).toHaveBeenCalledTimes(1); - - const taskRunners = pool.run.mock.calls[0][0]; - expect(taskRunners).toHaveLength(4); - const asStrings = taskRunners.map((taskRunner) => `${taskRunner}`); - expect(asStrings).toContain(`foo "${fooTasks[0].id}" (Ephemeral)`); - expect(asStrings).toContain(`report "${firstLimitedTask.id}" (Ephemeral)`); - expect(asStrings).toContain(`foo "${fooTasks[1].id}" (Ephemeral)`); - expect(asStrings).toContain(`foo "${fooTasks[2].id}" (Ephemeral)`); - }); - - test('properly removes from the queue after pulled', () => { - const { poolCapacity, opts, lifecycleEvent$ } = initTaskLifecycleParams(); - - const ephemeralTaskLifecycle = new EphemeralTaskLifecycle(opts); - - const tasks = [ - taskManagerMock.createTask(), - taskManagerMock.createTask(), - taskManagerMock.createTask(), - ]; - expect(ephemeralTaskLifecycle.attemptToRun(tasks[0])).toMatchObject(asOk(tasks[0])); - expect(ephemeralTaskLifecycle.attemptToRun(tasks[1])).toMatchObject(asOk(tasks[1])); - expect(ephemeralTaskLifecycle.attemptToRun(tasks[2])).toMatchObject(asOk(tasks[2])); - - expect(ephemeralTaskLifecycle.queuedTasks).toBe(3); - poolCapacity.mockReturnValue({ - availableCapacity: 1, - }); - lifecycleEvent$.next(asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed }))); - expect(ephemeralTaskLifecycle.queuedTasks).toBe(2); - - poolCapacity.mockReturnValue({ - availableCapacity: 1, - }); - lifecycleEvent$.next(asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed }))); - expect(ephemeralTaskLifecycle.queuedTasks).toBe(1); - - poolCapacity.mockReturnValue({ - availableCapacity: 1, - }); - lifecycleEvent$.next(asTaskPollingCycleEvent(asOk({ result: FillPoolResult.NoTasksClaimed }))); - expect(ephemeralTaskLifecycle.queuedTasks).toBe(0); - }); -}); diff --git a/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.ts b/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.ts deleted file mode 100644 index c7ee267b848e5..0000000000000 --- a/x-pack/plugins/task_manager/server/ephemeral_task_lifecycle.ts +++ /dev/null @@ -1,210 +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 { Subject, Observable, Subscription } from 'rxjs'; -import { filter } from 'rxjs'; -import { Logger, ExecutionContextStart } from '@kbn/core/server'; - -import { Result, asErr, asOk } from './lib/result_type'; -import { TaskManagerConfig } from './config'; - -import { asTaskManagerStatEvent, isTaskRunEvent, isTaskPollingCycleEvent } from './task_events'; -import { Middleware } from './lib/middleware'; -import { EphemeralTaskInstance } from './task'; -import { TaskTypeDictionary } from './task_type_dictionary'; -import { TaskLifecycleEvent } from './polling_lifecycle'; -import { EphemeralTaskManagerRunner } from './task_running/ephemeral_task_runner'; -import { TaskPool } from './task_pool'; - -export interface EphemeralTaskLifecycleOpts { - logger: Logger; - definitions: TaskTypeDictionary; - config: TaskManagerConfig; - middleware: Middleware; - elasticsearchAndSOAvailability$: Observable; - pool: TaskPool; - lifecycleEvent: Observable; - executionContext: ExecutionContextStart; -} - -export type EphemeralTaskInstanceRequest = Omit; - -export class EphemeralTaskLifecycle { - private definitions: TaskTypeDictionary; - private pool: TaskPool; - private lifecycleEvent: Observable; - // all task related events (task claimed, task marked as running, etc.) are emitted through events$ - private events$ = new Subject(); - private ephemeralTaskQueue: Array<{ - task: EphemeralTaskInstanceRequest; - enqueuedAt: number; - }> = []; - private logger: Logger; - private config: TaskManagerConfig; - private middleware: Middleware; - private lifecycleSubscription: Subscription = Subscription.EMPTY; - private readonly executionContext: ExecutionContextStart; - - constructor({ - logger, - middleware, - definitions, - pool, - lifecycleEvent, - config, - executionContext, - }: EphemeralTaskLifecycleOpts) { - this.logger = logger; - this.middleware = middleware; - this.definitions = definitions; - this.pool = pool; - this.lifecycleEvent = lifecycleEvent; - this.config = config; - this.executionContext = executionContext; - - if (this.enabled) { - this.lifecycleSubscription = this.lifecycleEvent - .pipe( - filter((e) => { - const hasPollingCycleCompleted = isTaskPollingCycleEvent(e); - if (hasPollingCycleCompleted) { - this.emitEvent( - asTaskManagerStatEvent('queuedEphemeralTasks', asOk(this.queuedTasks)) - ); - } - return ( - // when a polling cycle or a task run have just completed - (hasPollingCycleCompleted || isTaskRunEvent(e)) && - // we want to know when the queue has ephemeral task run requests - this.queuedTasks > 0 && - this.getCapacity() > 0 - ); - }) - ) - .subscribe((e) => { - let overallCapacity = this.getCapacity(); - const capacityByType = new Map(); - const tasksWithinCapacity = [...this.ephemeralTaskQueue] - .filter(({ task }) => { - if (overallCapacity > 0) { - if (!capacityByType.has(task.taskType)) { - capacityByType.set(task.taskType, this.getCapacity(task.taskType)); - } - if (capacityByType.get(task.taskType)! > 0) { - overallCapacity--; - capacityByType.set(task.taskType, capacityByType.get(task.taskType)! - 1); - return true; - } - } - }) - .map((ephemeralTask) => { - const index = this.ephemeralTaskQueue.indexOf(ephemeralTask); - if (index >= 0) { - this.ephemeralTaskQueue.splice(index, 1); - } - this.emitEvent( - asTaskManagerStatEvent( - 'ephemeralTaskDelay', - asOk(Date.now() - ephemeralTask.enqueuedAt) - ) - ); - return this.createTaskRunnerForTask(ephemeralTask.task); - }); - - if (tasksWithinCapacity.length) { - this.pool - .run(tasksWithinCapacity) - .then((successTaskPoolRunResult) => { - this.logger.debug( - `Successful ephemeral task lifecycle resulted in: ${successTaskPoolRunResult}` - ); - }) - .catch((error) => { - this.logger.debug(`Failed ephemeral task lifecycle resulted in: ${error}`); - }); - } - }); - } - } - - public get enabled(): boolean { - return this.config.ephemeral_tasks.enabled; - } - - public get events(): Observable { - return this.events$; - } - - private getCapacity = (taskType?: string) => - taskType && this.definitions.get(taskType)?.maxConcurrency - ? Math.max( - Math.min( - this.pool.availableCapacity(), - this.definitions.get(taskType)!.maxConcurrency! - - this.pool.getUsedCapacityByType(taskType) - ), - 0 - ) - : this.pool.availableCapacity(); - - private emitEvent = (event: TaskLifecycleEvent) => { - this.events$.next(event); - }; - - public attemptToRun(task: EphemeralTaskInstanceRequest) { - if (this.lifecycleSubscription.closed) { - return asErr(task); - } - return pushIntoSetWithTimestamp( - this.ephemeralTaskQueue, - this.config.ephemeral_tasks.request_capacity, - task - ); - } - - public get queuedTasks() { - return this.ephemeralTaskQueue.length; - } - - private createTaskRunnerForTask = ( - instance: EphemeralTaskInstanceRequest - ): EphemeralTaskManagerRunner => { - return new EphemeralTaskManagerRunner({ - logger: this.logger, - instance: { - ...instance, - startedAt: new Date(), - }, - definitions: this.definitions, - beforeRun: this.middleware.beforeRun, - beforeMarkRunning: this.middleware.beforeMarkRunning, - onTaskEvent: this.emitEvent, - executionContext: this.executionContext, - }); - }; -} - -/** - * Pushes values into a bounded set - * @param set A Set of generic type T - * @param maxCapacity How many values are we allowed to push into the set - * @param value A value T to push into the set if it is there - */ -function pushIntoSetWithTimestamp( - set: Array<{ - task: EphemeralTaskInstanceRequest; - enqueuedAt: number; - }>, - maxCapacity: number, - task: EphemeralTaskInstanceRequest -): Result { - if (set.length >= maxCapacity) { - return asErr(task); - } - set.push({ task, enqueuedAt: Date.now() }); - return asOk(task); -} diff --git a/x-pack/plugins/task_manager/server/index.ts b/x-pack/plugins/task_manager/server/index.ts index f2ad559f02b9c..8ae352e92b14a 100644 --- a/x-pack/plugins/task_manager/server/index.ts +++ b/x-pack/plugins/task_manager/server/index.ts @@ -17,7 +17,6 @@ export const plugin = async (initContext: PluginInitializerContext) => { export type { TaskInstance, ConcreteTaskInstance, - EphemeralTask, TaskRunCreatorFunction, RunContext, IntervalSchedule, @@ -32,7 +31,6 @@ export { isUnrecoverableError, throwUnrecoverableError, throwRetryableError, - isEphemeralTaskRejectedDueToCapacityError, createTaskRunError, TaskErrorSource, } from './task_running'; @@ -57,18 +55,14 @@ export const config: PluginConfigDescriptor = { schema: configSchema, deprecations: ({ deprecate }) => { return [ - deprecate('ephemeral_tasks.enabled', 'a future version', { - level: 'warning', - message: `Configuring "xpack.task_manager.ephemeral_tasks.enabled" is deprecated and will be removed in a future version. Remove this setting to increase task execution resiliency.`, - }), - deprecate('ephemeral_tasks.request_capacity', 'a future version', { - level: 'warning', - message: `Configuring "xpack.task_manager.ephemeral_tasks.request_capacity" is deprecated and will be removed in a future version. Remove this setting to increase task execution resiliency.`, - }), deprecate('max_workers', 'a future version', { level: 'warning', message: `Configuring "xpack.task_manager.max_workers" is deprecated and will be removed in a future version. Remove this setting and use "xpack.task_manager.capacity" instead.`, }), + deprecate('claim_strategy', 'a future version', { + level: 'warning', + message: `Configuring "xpack.task_manager.claim_strategy" is deprecated and will be removed in a future version. This setting should be removed.`, + }), (settings, fromPath, addDeprecation) => { const taskManager = get(settings, fromPath); if (taskManager?.index) { diff --git a/x-pack/plugins/task_manager/server/integration_tests/__snapshots__/task_cost_check.test.ts.snap b/x-pack/plugins/task_manager/server/integration_tests/__snapshots__/task_cost_check.test.ts.snap index 754d9f0c66b4b..1e3fa4cbf8645 100644 --- a/x-pack/plugins/task_manager/server/integration_tests/__snapshots__/task_cost_check.test.ts.snap +++ b/x-pack/plugins/task_manager/server/integration_tests/__snapshots__/task_cost_check.test.ts.snap @@ -4,95 +4,95 @@ exports[`Task cost checks detects tasks with cost definitions 1`] = ` Array [ Object { "cost": 1, - "taskType": "actions:.email", + "taskType": "actions:.bedrock", }, Object { "cost": 1, - "taskType": "actions:.index", + "taskType": "actions:.cases", }, Object { "cost": 1, - "taskType": "actions:.pagerduty", + "taskType": "actions:.cases-webhook", }, Object { "cost": 1, - "taskType": "actions:.swimlane", + "taskType": "actions:.crowdstrike", }, Object { "cost": 1, - "taskType": "actions:.server-log", + "taskType": "actions:.d3security", }, Object { "cost": 1, - "taskType": "actions:.slack", + "taskType": "actions:.email", }, Object { "cost": 1, - "taskType": "actions:.slack_api", + "taskType": "actions:.gemini", }, Object { "cost": 1, - "taskType": "actions:.webhook", + "taskType": "actions:.gen-ai", }, Object { "cost": 1, - "taskType": "actions:.cases-webhook", + "taskType": "actions:.index", }, Object { "cost": 1, - "taskType": "actions:.xmatters", + "taskType": "actions:.jira", }, Object { "cost": 1, - "taskType": "actions:.servicenow", + "taskType": "actions:.observability-ai-assistant", }, Object { "cost": 1, - "taskType": "actions:.servicenow-sir", + "taskType": "actions:.opsgenie", }, Object { "cost": 1, - "taskType": "actions:.servicenow-itom", + "taskType": "actions:.pagerduty", }, Object { "cost": 1, - "taskType": "actions:.jira", + "taskType": "actions:.resilient", }, Object { "cost": 1, - "taskType": "actions:.teams", + "taskType": "actions:.sentinelone", }, Object { "cost": 1, - "taskType": "actions:.torq", + "taskType": "actions:.server-log", }, Object { "cost": 1, - "taskType": "actions:.opsgenie", + "taskType": "actions:.servicenow", }, Object { "cost": 1, - "taskType": "actions:.tines", + "taskType": "actions:.servicenow-itom", }, Object { "cost": 1, - "taskType": "actions:.gen-ai", + "taskType": "actions:.servicenow-sir", }, Object { "cost": 1, - "taskType": "actions:.bedrock", + "taskType": "actions:.slack", }, Object { "cost": 1, - "taskType": "actions:.gemini", + "taskType": "actions:.slack_api", }, Object { "cost": 1, - "taskType": "actions:.d3security", + "taskType": "actions:.swimlane", }, Object { "cost": 1, - "taskType": "actions:.resilient", + "taskType": "actions:.teams", }, Object { "cost": 1, @@ -100,19 +100,19 @@ Array [ }, Object { "cost": 1, - "taskType": "actions:.sentinelone", + "taskType": "actions:.tines", }, Object { "cost": 1, - "taskType": "actions:.crowdstrike", + "taskType": "actions:.torq", }, Object { "cost": 1, - "taskType": "actions:.cases", + "taskType": "actions:.webhook", }, Object { "cost": 1, - "taskType": "actions:.observability-ai-assistant", + "taskType": "actions:.xmatters", }, Object { "cost": 10, diff --git a/x-pack/plugins/task_manager/server/integration_tests/managed_configuration.test.ts b/x-pack/plugins/task_manager/server/integration_tests/managed_configuration.test.ts index d048cc4063fa2..2af8c72190c5a 100644 --- a/x-pack/plugins/task_manager/server/integration_tests/managed_configuration.test.ts +++ b/x-pack/plugins/task_manager/server/integration_tests/managed_configuration.test.ts @@ -70,10 +70,6 @@ describe('managed configuration', () => { }, custom: {}, }, - ephemeral_tasks: { - enabled: true, - request_capacity: 10, - }, unsafe: { exclude_task_types: [], authenticate_background_task_utilization: true, @@ -220,10 +216,6 @@ describe('managed configuration', () => { }, custom: {}, }, - ephemeral_tasks: { - enabled: true, - request_capacity: 10, - }, unsafe: { exclude_task_types: [], authenticate_background_task_utilization: true, @@ -346,10 +338,6 @@ describe('managed configuration', () => { }, custom: {}, }, - ephemeral_tasks: { - enabled: true, - request_capacity: 10, - }, unsafe: { exclude_task_types: [], authenticate_background_task_utilization: true, diff --git a/x-pack/plugins/task_manager/server/integration_tests/task_cost_check.test.ts b/x-pack/plugins/task_manager/server/integration_tests/task_cost_check.test.ts index 96678f714ac69..df11792b2c4ad 100644 --- a/x-pack/plugins/task_manager/server/integration_tests/task_cost_check.test.ts +++ b/x-pack/plugins/task_manager/server/integration_tests/task_cost_check.test.ts @@ -12,6 +12,7 @@ import { import { TaskCost, TaskDefinition } from '../task'; import { setupTestServers } from './lib'; import { TaskTypeDictionary } from '../task_type_dictionary'; +import { sortBy } from 'lodash'; jest.mock('../task_type_dictionary', () => { const actual = jest.requireActual('../task_type_dictionary'); @@ -50,14 +51,17 @@ describe('Task cost checks', () => { it('detects tasks with cost definitions', async () => { const taskTypes = taskTypeDictionary.getAllDefinitions(); - const taskTypesWithCost = taskTypes - .map((taskType: TaskDefinition) => - !!taskType.cost ? { taskType: taskType.type, cost: taskType.cost } : null - ) - .filter( - (tt: { taskType: string; cost: TaskCost } | null) => - null != tt && tt.cost !== TaskCost.Normal - ); + const taskTypesWithCost = sortBy( + taskTypes + .map((taskType: TaskDefinition) => + !!taskType.cost ? { taskType: taskType.type, cost: taskType.cost } : null + ) + .filter( + (tt: { taskType: string; cost: TaskCost } | null) => + null != tt && tt.cost !== TaskCost.Normal + ), + 'taskType' + ); expect(taskTypesWithCost).toMatchSnapshot(); }); }); diff --git a/x-pack/plugins/task_manager/server/lib/calculate_health_status.test.ts b/x-pack/plugins/task_manager/server/lib/calculate_health_status.test.ts index b973a5c1cd5e6..28f083e68b822 100644 --- a/x-pack/plugins/task_manager/server/lib/calculate_health_status.test.ts +++ b/x-pack/plugins/task_manager/server/lib/calculate_health_status.test.ts @@ -42,10 +42,6 @@ const config = { }, custom: {}, }, - ephemeral_tasks: { - enabled: false, - request_capacity: 10, - }, unsafe: { exclude_task_types: [], authenticate_background_task_utilization: true, @@ -195,7 +191,6 @@ const getStatsWithTimestamp = ({ persistence: { recurring: 95, non_recurring: 5, - ephemeral: 0, }, result_frequency_percent_as_number: { taskType1: { diff --git a/x-pack/plugins/task_manager/server/lib/log_health_metrics.test.ts b/x-pack/plugins/task_manager/server/lib/log_health_metrics.test.ts index 7df06865d30ed..739d9638fa421 100644 --- a/x-pack/plugins/task_manager/server/lib/log_health_metrics.test.ts +++ b/x-pack/plugins/task_manager/server/lib/log_health_metrics.test.ts @@ -507,7 +507,6 @@ function getMockMonitoredHealth(overrides = {}): MonitoredHealth { persistence: { [TaskPersistence.Recurring]: 10, [TaskPersistence.NonRecurring]: 10, - [TaskPersistence.Ephemeral]: 10, }, result_frequency_percent_as_number: {}, }, diff --git a/x-pack/plugins/task_manager/server/metrics/create_aggregator.test.ts b/x-pack/plugins/task_manager/server/metrics/create_aggregator.test.ts index e56d57e170558..27d41a2c9f3fe 100644 --- a/x-pack/plugins/task_manager/server/metrics/create_aggregator.test.ts +++ b/x-pack/plugins/task_manager/server/metrics/create_aggregator.test.ts @@ -41,10 +41,6 @@ const config: TaskManagerConfig = { }, kibanas_per_partition: 2, allow_reading_invalid_state: false, - ephemeral_tasks: { - enabled: true, - request_capacity: 10, - }, event_loop_delay: { monitor: true, warn_threshold: 5000, diff --git a/x-pack/plugins/task_manager/server/mocks.ts b/x-pack/plugins/task_manager/server/mocks.ts index 71638bc883681..69d0d40121f1c 100644 --- a/x-pack/plugins/task_manager/server/mocks.ts +++ b/x-pack/plugins/task_manager/server/mocks.ts @@ -27,10 +27,8 @@ const createStartMock = () => { bulkRemove: jest.fn(), schedule: jest.fn(), runSoon: jest.fn(), - ephemeralRunNow: jest.fn(), ensureScheduled: jest.fn(), removeIfExists: jest.fn().mockResolvedValue(Promise.resolve()), // it's a promise and there are some places where it's followed by `.catch()` - supportsEphemeralTasks: jest.fn(), bulkUpdateSchedules: jest.fn(), bulkSchedule: jest.fn(), bulkDisable: jest.fn(), diff --git a/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.test.ts b/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.test.ts index f5b3912eabd3b..8e5df015b6c45 100644 --- a/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.test.ts +++ b/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.test.ts @@ -35,12 +35,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -56,7 +50,6 @@ describe('estimateCapacity', () => { }, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 0, recurring: 100, }, @@ -92,12 +85,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 2400, - p90: 2500, - p95: 3200, - p99: 3500, - }, non_recurring: { p50: 1400, p90: 1500, @@ -113,7 +100,6 @@ describe('estimateCapacity', () => { }, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 0, recurring: 100, }, @@ -153,7 +139,6 @@ describe('estimateCapacity', () => { duration_by_persistence: {}, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 0, recurring: 100, }, @@ -189,12 +174,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -210,7 +189,6 @@ describe('estimateCapacity', () => { }, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 0, recurring: 100, }, @@ -247,12 +225,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -268,7 +240,6 @@ describe('estimateCapacity', () => { }, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 0, recurring: 100, }, @@ -304,12 +275,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -325,7 +290,6 @@ describe('estimateCapacity', () => { }, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 0, recurring: 100, }, @@ -374,12 +338,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -394,8 +352,6 @@ describe('estimateCapacity', () => { }, }, persistence: { - // 50% of tasks are non-recurring/ephemeral executions in the system in recent history - ephemeral: 25, non_recurring: 25, recurring: 50, }, @@ -418,7 +374,7 @@ describe('estimateCapacity', () => { }); }); - test('estimates the min required kibana instances when there is sufficient capacity for recurring but not for non-recurring/ephemeral', async () => { + test('estimates the min required kibana instances when there is sufficient capacity for recurring but not for non-recurring', async () => { const provisionedKibanaInstances = 2; const recurringTasksPerMinute = 251; // 50% for non-recurring/epehemral + half of recurring task workload @@ -456,12 +412,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -476,8 +426,6 @@ describe('estimateCapacity', () => { }, }, persistence: { - // 50% of tasks are non-recurring/ephemeral executions in the system in recent history - ephemeral: 25, non_recurring: 25, recurring: 50, }, @@ -541,12 +489,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -562,7 +504,6 @@ describe('estimateCapacity', () => { }, // 20% average of non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 20, recurring: 80, }, @@ -607,12 +548,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -628,7 +563,6 @@ describe('estimateCapacity', () => { }, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 20, recurring: 80, }, @@ -673,12 +607,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -694,7 +622,6 @@ describe('estimateCapacity', () => { }, // 20% average of non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 20, recurring: 80, }, @@ -739,12 +666,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -761,7 +682,6 @@ describe('estimateCapacity', () => { persistence: { recurring: 0, non_recurring: 70, - ephemeral: 30, }, result_frequency_percent_as_number: {}, }, @@ -776,7 +696,7 @@ describe('estimateCapacity', () => { observed: { observed_kibana_instances: 1, avg_recurring_required_throughput_per_minute: 29, - // we obesrve 100% capacity on non-recurring/ephemeral tasks, which is 200tpm + // we obesrve 100% capacity on non-recurring tasks, which is 200tpm // and add to that the 29tpm for recurring tasks avg_required_throughput_per_minute_per_kibana: 229, }, @@ -816,12 +736,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -838,7 +752,6 @@ describe('estimateCapacity', () => { persistence: { recurring: 0, non_recurring: 70, - ephemeral: 30, }, result_frequency_percent_as_number: {}, }, @@ -853,12 +766,12 @@ describe('estimateCapacity', () => { observed: { observed_kibana_instances: 1, avg_recurring_required_throughput_per_minute: 210, - // we obesrve 100% capacity on non-recurring/ephemeral tasks, which is 200tpm + // we obesrve 100% capacity on non-recurring tasks, which is 200tpm // and add to that the 210tpm for recurring tasks avg_required_throughput_per_minute_per_kibana: 410, }, proposed: { - // we propose provisioning 3 instances for recurring + non-recurring/ephemeral + // we propose provisioning 3 instances for recurring + non-recurring provisioned_kibana: 3, // but need at least 2 for recurring min_required_kibana: 2, @@ -890,12 +803,6 @@ describe('estimateCapacity', () => { execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -911,7 +818,6 @@ describe('estimateCapacity', () => { }, // no non-recurring executions in the system in recent history persistence: { - ephemeral: 0, non_recurring: 0, recurring: 100, }, @@ -935,30 +841,6 @@ function mockStats( runtime: Partial['runtime']['value']> = {} ): CapacityEstimationParams { return { - ephemeral: { - status: HealthStatus.OK, - timestamp: new Date().toISOString(), - value: { - load: { - p50: 4, - p90: 6, - p95: 6, - p99: 6, - }, - executionsPerCycle: { - p50: 4, - p90: 6, - p95: 6, - p99: 6, - }, - queuedTasks: { - p50: 4, - p90: 6, - p95: 6, - p99: 6, - }, - }, - }, configuration: { status: HealthStatus.OK, timestamp: new Date().toISOString(), @@ -1026,12 +908,6 @@ function mockStats( execution: { duration: {}, duration_by_persistence: { - ephemeral: { - p50: 400, - p90: 500, - p95: 1200, - p99: 1500, - }, non_recurring: { p50: 400, p90: 500, @@ -1046,7 +922,6 @@ function mockStats( }, }, persistence: { - ephemeral: 0, non_recurring: 30, recurring: 70, }, diff --git a/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.ts b/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.ts index a4a9c963e8ee3..75c56825cff0b 100644 --- a/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.ts +++ b/x-pack/plugins/task_manager/server/monitoring/capacity_estimation.ts @@ -104,9 +104,9 @@ export function estimateCapacity( /** * On average, how much of this kibana's capacity has been historically used to execute - * non-recurring and ephemeral tasks + * non-recurring tasks */ - const averageCapacityUsedByNonRecurringAndEphemeralTasksPerKibana = percentageOf( + const averageCapacityUsedByNonRecurringTasksPerKibana = percentageOf( capacityPerMinutePerKibana, percentageOf(averageLoadPercentage, 100 - percentageOfExecutionsUsedByRecurringTasks) ); @@ -116,14 +116,14 @@ export function estimateCapacity( * for recurring tasks */ const averageCapacityAvailableForRecurringTasksPerKibana = - capacityPerMinutePerKibana - averageCapacityUsedByNonRecurringAndEphemeralTasksPerKibana; + capacityPerMinutePerKibana - averageCapacityUsedByNonRecurringTasksPerKibana; /** - * At times a cluster might experience spikes of NonRecurring/Ephemeral tasks which swamp Task Manager - * causing it to spend all its capacity on NonRecurring/Ephemeral tasks, which makes it much harder + * At times a cluster might experience spikes of NonRecurring tasks which swamp Task Manager + * causing it to spend all its capacity on NonRecurring tasks, which makes it much harder * to estimate the required capacity. * This is easy to identify as load will usually max out or all the workers are busy executing non-recurring - * or ephemeral tasks, and none are running recurring tasks. + * tasks, and none are running recurring tasks. */ const hasTooLittleCapacityToEstimateRequiredNonRecurringCapacity = averageLoadPercentage === 100 || averageCapacityAvailableForRecurringTasksPerKibana === 0; @@ -165,24 +165,24 @@ export function estimateCapacity( averageRecurringRequiredPerMinute / minRequiredKibanaInstances; /** - * assuming the historical capacity needed for ephemeral and non-recurring tasks, plus + * assuming the historical capacity needed for non-recurring tasks, plus * the amount we know each kibana would need for recurring tasks, how much capacity would * each kibana need if following the minRequiredKibanaInstances? */ const averageRequiredThroughputPerMinutePerKibana = - averageCapacityUsedByNonRecurringAndEphemeralTasksPerKibana * + averageCapacityUsedByNonRecurringTasksPerKibana * (assumedKibanaInstances / minRequiredKibanaInstances) + averageRecurringRequiredPerMinute / minRequiredKibanaInstances; const assumedAverageRecurringRequiredThroughputPerMinutePerKibana = averageRecurringRequiredPerMinute / assumedKibanaInstances; /** - * assuming the historical capacity needed for ephemeral and non-recurring tasks, plus + * assuming the historical capacity needed for non-recurring tasks, plus * the amount we know each kibana would need for recurring tasks, how much capacity would * each kibana need if the assumed current number were correct? */ const assumedRequiredThroughputPerMinutePerKibana = - averageCapacityUsedByNonRecurringAndEphemeralTasksPerKibana + + averageCapacityUsedByNonRecurringTasksPerKibana + averageRecurringRequiredPerMinute / assumedKibanaInstances; const { status, reason } = getHealthStatus(logger, { @@ -281,11 +281,7 @@ function getAverageDuration( durations: Partial> ): Result { const result = stats.mean( - [ - durations.ephemeral?.p50 ?? 0, - durations.non_recurring?.p50 ?? 0, - durations.recurring?.p50 ?? 0, - ].filter((val) => val > 0) + [durations.non_recurring?.p50 ?? 0, durations.recurring?.p50 ?? 0].filter((val) => val > 0) ); if (isNaN(result)) { return asErr(result); diff --git a/x-pack/plugins/task_manager/server/monitoring/configuration_statistics.test.ts b/x-pack/plugins/task_manager/server/monitoring/configuration_statistics.test.ts index 1bcd3e286d4a3..9a0084fcdf9e4 100644 --- a/x-pack/plugins/task_manager/server/monitoring/configuration_statistics.test.ts +++ b/x-pack/plugins/task_manager/server/monitoring/configuration_statistics.test.ts @@ -38,10 +38,6 @@ describe('Configuration Statistics Aggregator', () => { }, custom: {}, }, - ephemeral_tasks: { - enabled: true, - request_capacity: 10, - }, unsafe: { exclude_task_types: [], authenticate_background_task_utilization: true, diff --git a/x-pack/plugins/task_manager/server/monitoring/ephemeral_task_statistics.test.ts b/x-pack/plugins/task_manager/server/monitoring/ephemeral_task_statistics.test.ts deleted file mode 100644 index ac16070d7c131..0000000000000 --- a/x-pack/plugins/task_manager/server/monitoring/ephemeral_task_statistics.test.ts +++ /dev/null @@ -1,384 +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 { v4 as uuidv4 } from 'uuid'; -import { Subject, Observable } from 'rxjs'; -import stats from 'stats-lite'; -import { take, bufferCount, skip, map } from 'rxjs'; - -import { ConcreteTaskInstance, TaskStatus } from '../task'; -import { - asTaskRunEvent, - TaskTiming, - asTaskManagerStatEvent, - TaskPersistence, -} from '../task_events'; -import { asOk } from '../lib/result_type'; -import { TaskLifecycleEvent } from '../polling_lifecycle'; -import { TaskRunResult } from '../task_running'; -import { - createEphemeralTaskAggregator, - summarizeEphemeralStat, - SummarizedEphemeralTaskStat, - EphemeralTaskStat, -} from './ephemeral_task_statistics'; -import { AggregatedStat } from '../lib/runtime_statistics_aggregator'; -import { ephemeralTaskLifecycleMock } from '../ephemeral_task_lifecycle.mock'; -import { times, takeRight, take as takeLeft } from 'lodash'; - -describe('Ephemeral Task Statistics', () => { - test('returns the average size of the ephemeral queue', async () => { - const queueSize = [2, 6, 10, 10, 10, 6, 2, 0, 0]; - const events$ = new Subject(); - const getQueuedTasks = jest.fn(); - const ephemeralTaskLifecycle = ephemeralTaskLifecycleMock.create({ - events$: events$ as Observable, - getQueuedTasks, - }); - - const runningAverageWindowSize = 5; - const ephemeralTaskAggregator = createEphemeralTaskAggregator( - ephemeralTaskLifecycle, - runningAverageWindowSize, - 10 - ); - - function expectWindowEqualsUpdate( - taskStat: AggregatedStat, - window: number[] - ) { - expect(taskStat.value.queuedTasks).toMatchObject({ - p50: stats.percentile(window, 0.5), - p90: stats.percentile(window, 0.9), - p95: stats.percentile(window, 0.95), - p99: stats.percentile(window, 0.99), - }); - } - - return new Promise((resolve) => { - ephemeralTaskAggregator - .pipe( - // skip initial stat which is just initialized data which - // ensures we don't stall on combineLatest - skip(1), - // Use 'summarizeEphemeralStat' to receive summarize stats - map(({ key, value }: AggregatedStat) => ({ - key, - value: summarizeEphemeralStat(value).value, - })), - take(queueSize.length), - bufferCount(queueSize.length) - ) - .subscribe((taskStats: Array>) => { - expectWindowEqualsUpdate(taskStats[0], queueSize.slice(0, 1)); - expectWindowEqualsUpdate(taskStats[1], queueSize.slice(0, 2)); - expectWindowEqualsUpdate(taskStats[2], queueSize.slice(0, 3)); - expectWindowEqualsUpdate(taskStats[3], queueSize.slice(0, 4)); - expectWindowEqualsUpdate(taskStats[4], queueSize.slice(0, 5)); - // from the 6th value, begin to drop old values as out window is 5 - expectWindowEqualsUpdate(taskStats[5], queueSize.slice(1, 6)); - expectWindowEqualsUpdate(taskStats[6], queueSize.slice(2, 7)); - expectWindowEqualsUpdate(taskStats[7], queueSize.slice(3, 8)); - resolve(); - }); - - for (const size of queueSize) { - events$.next(asTaskManagerStatEvent('queuedEphemeralTasks', asOk(size))); - } - }); - }); - - test('returns the average number of ephemeral tasks executed per polling cycle', async () => { - const tasksQueueSize = [5, 2, 5, 0]; - const executionsPerCycle = [5, 0, 5]; - // we expect one event per "task queue size event", and we simmulate - // tasks being drained after each one of theseevents, so we expect - // the first cycle to show zero drained tasks - const expectedTasksDrainedEvents = [0, ...executionsPerCycle]; - - const events$ = new Subject(); - const getQueuedTasks = jest.fn(); - const ephemeralTaskLifecycle = ephemeralTaskLifecycleMock.create({ - events$: events$ as Observable, - getQueuedTasks, - }); - - const runningAverageWindowSize = 5; - const ephemeralTaskAggregator = createEphemeralTaskAggregator( - ephemeralTaskLifecycle, - runningAverageWindowSize, - 10 - ); - - function expectWindowEqualsUpdate( - taskStat: AggregatedStat, - window: number[] - ) { - expect(taskStat.value.executionsPerCycle).toMatchObject({ - p50: stats.percentile(window, 0.5), - p90: stats.percentile(window, 0.9), - p95: stats.percentile(window, 0.95), - p99: stats.percentile(window, 0.99), - }); - } - - return new Promise((resolve) => { - ephemeralTaskAggregator - .pipe( - // skip initial stat which is just initialized data which - // ensures we don't stall on combineLatest - skip(1), - // Use 'summarizeEphemeralStat' to receive summarize stats - map(({ key, value }: AggregatedStat) => ({ - key, - value: summarizeEphemeralStat(value).value, - })), - take(tasksQueueSize.length), - bufferCount(tasksQueueSize.length) - ) - .subscribe((taskStats: Array>) => { - taskStats.forEach((taskStat, index) => { - expectWindowEqualsUpdate( - taskStat, - takeRight(takeLeft(expectedTasksDrainedEvents, index + 1), runningAverageWindowSize) - ); - }); - resolve(); - }); - - for (const tasksDrainedInCycle of executionsPerCycle) { - events$.next( - asTaskManagerStatEvent('queuedEphemeralTasks', asOk(tasksQueueSize.shift() ?? 0)) - ); - times(tasksDrainedInCycle, () => { - events$.next(mockTaskRunEvent()); - }); - } - events$.next( - asTaskManagerStatEvent('queuedEphemeralTasks', asOk(tasksQueueSize.shift() ?? 0)) - ); - }); - }); - - test('returns the average load added per polling cycle cycle by ephemeral tasks', async () => { - const tasksExecuted = [0, 5, 10, 10, 10, 5, 5, 0, 0, 0, 0, 0]; - const expectedLoad = [0, 50, 100, 100, 100, 50, 50, 0, 0, 0, 0, 0]; - - const events$ = new Subject(); - const getQueuedTasks = jest.fn(); - const ephemeralTaskLifecycle = ephemeralTaskLifecycleMock.create({ - events$: events$ as Observable, - getQueuedTasks, - }); - - const runningAverageWindowSize = 5; - const capacity = 10; - const ephemeralTaskAggregator = createEphemeralTaskAggregator( - ephemeralTaskLifecycle, - runningAverageWindowSize, - capacity - ); - - function expectWindowEqualsUpdate( - taskStat: AggregatedStat, - window: number[] - ) { - expect(taskStat.value.load).toMatchObject({ - p50: stats.percentile(window, 0.5), - p90: stats.percentile(window, 0.9), - p95: stats.percentile(window, 0.95), - p99: stats.percentile(window, 0.99), - }); - } - - return new Promise((resolve) => { - ephemeralTaskAggregator - .pipe( - // skip initial stat which is just initialized data which - // ensures we don't stall on combineLatest - skip(1), - // Use 'summarizeEphemeralStat' to receive summarize stats - map(({ key, value }: AggregatedStat) => ({ - key, - value: summarizeEphemeralStat(value).value, - })), - take(tasksExecuted.length), - bufferCount(tasksExecuted.length) - ) - .subscribe((taskStats: Array>) => { - taskStats.forEach((taskStat, index) => { - expectWindowEqualsUpdate( - taskStat, - takeRight(takeLeft(expectedLoad, index + 1), runningAverageWindowSize) - ); - }); - resolve(); - }); - - for (const tasksExecutedInCycle of tasksExecuted) { - times(tasksExecutedInCycle, () => { - events$.next(mockTaskRunEvent()); - }); - events$.next(asTaskManagerStatEvent('queuedEphemeralTasks', asOk(0))); - } - }); - }); -}); - -test('returns the average load added per polling cycle cycle by ephemeral tasks when load exceeds capacity', async () => { - const tasksExecuted = [0, 5, 10, 20, 15, 10, 5, 0, 0, 0, 0, 0]; - const expectedLoad = [0, 50, 100, 200, 150, 100, 50, 0, 0, 0, 0, 0]; - - const events$ = new Subject(); - const getQueuedTasks = jest.fn(); - const ephemeralTaskLifecycle = ephemeralTaskLifecycleMock.create({ - events$: events$ as Observable, - getQueuedTasks, - }); - - const runningAverageWindowSize = 5; - const capacity = 10; - const ephemeralTaskAggregator = createEphemeralTaskAggregator( - ephemeralTaskLifecycle, - runningAverageWindowSize, - capacity - ); - - function expectWindowEqualsUpdate( - taskStat: AggregatedStat, - window: number[] - ) { - expect(taskStat.value.load).toMatchObject({ - p50: stats.percentile(window, 0.5), - p90: stats.percentile(window, 0.9), - p95: stats.percentile(window, 0.95), - p99: stats.percentile(window, 0.99), - }); - } - - return new Promise((resolve) => { - ephemeralTaskAggregator - .pipe( - // skip initial stat which is just initialized data which - // ensures we don't stall on combineLatest - skip(1), - // Use 'summarizeEphemeralStat' to receive summarize stats - map(({ key, value }: AggregatedStat) => ({ - key, - value: summarizeEphemeralStat(value).value, - })), - take(tasksExecuted.length), - bufferCount(tasksExecuted.length) - ) - .subscribe((taskStats: Array>) => { - taskStats.forEach((taskStat, index) => { - expectWindowEqualsUpdate( - taskStat, - takeRight(takeLeft(expectedLoad, index + 1), runningAverageWindowSize) - ); - }); - resolve(); - }); - - for (const tasksExecutedInCycle of tasksExecuted) { - times(tasksExecutedInCycle, () => { - events$.next(mockTaskRunEvent()); - }); - events$.next(asTaskManagerStatEvent('queuedEphemeralTasks', asOk(0))); - } - }); -}); - -test('returns the average delay experienced by tasks in the ephemeral queue', async () => { - const taskDelays = [100, 150, 500, 100, 100, 200, 2000, 10000, 20000, 100]; - - const events$ = new Subject(); - const getQueuedTasks = jest.fn(); - const ephemeralTaskLifecycle = ephemeralTaskLifecycleMock.create({ - events$: events$ as Observable, - getQueuedTasks, - }); - - const runningAverageWindowSize = 5; - const ephemeralTaskAggregator = createEphemeralTaskAggregator( - ephemeralTaskLifecycle, - runningAverageWindowSize, - 10 - ); - - function expectWindowEqualsUpdate( - taskStat: AggregatedStat, - window: number[] - ) { - expect(taskStat.value.delay).toMatchObject({ - p50: stats.percentile(window, 0.5), - p90: stats.percentile(window, 0.9), - p95: stats.percentile(window, 0.95), - p99: stats.percentile(window, 0.99), - }); - } - - return new Promise((resolve) => { - ephemeralTaskAggregator - .pipe( - // skip initial stat which is just initialized data which - // ensures we don't stall on combineLatest - skip(1), - // Use 'summarizeEphemeralStat' to receive summarize stats - map(({ key, value }: AggregatedStat) => ({ - key, - value: summarizeEphemeralStat(value).value, - })), - take(taskDelays.length), - bufferCount(taskDelays.length) - ) - .subscribe((taskStats: Array>) => { - taskStats.forEach((taskStat, index) => { - expectWindowEqualsUpdate( - taskStat, - takeRight(takeLeft(taskDelays, index + 1), runningAverageWindowSize) - ); - }); - resolve(); - }); - - for (const delay of taskDelays) { - events$.next(asTaskManagerStatEvent('ephemeralTaskDelay', asOk(delay))); - } - }); -}); - -const mockTaskRunEvent = ( - overrides: Partial = {}, - timing: TaskTiming = { - start: 0, - stop: 0, - }, - result: TaskRunResult = TaskRunResult.Success -) => { - const task = mockTaskInstance(overrides); - const persistence = TaskPersistence.Recurring; - return asTaskRunEvent(task.id, asOk({ task, persistence, result, isExpired: false }), timing); -}; - -const mockTaskInstance = (overrides: Partial = {}): ConcreteTaskInstance => ({ - id: uuidv4(), - attempts: 0, - status: TaskStatus.Running, - version: '123', - runAt: new Date(), - scheduledAt: new Date(), - startedAt: new Date(), - retryAt: new Date(Date.now() + 5 * 60 * 1000), - state: {}, - taskType: 'alerting:test', - params: { - alertId: '1', - }, - ownerId: null, - ...overrides, -}); diff --git a/x-pack/plugins/task_manager/server/monitoring/ephemeral_task_statistics.ts b/x-pack/plugins/task_manager/server/monitoring/ephemeral_task_statistics.ts deleted file mode 100644 index d02080a56a1aa..0000000000000 --- a/x-pack/plugins/task_manager/server/monitoring/ephemeral_task_statistics.ts +++ /dev/null @@ -1,127 +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 { map, filter, startWith, buffer, share } from 'rxjs'; -import { JsonObject } from '@kbn/utility-types'; -import { combineLatest, Observable, zip } from 'rxjs'; -import { isOk, Ok } from '../lib/result_type'; -import { AggregatedStat, AggregatedStatProvider } from '../lib/runtime_statistics_aggregator'; -import { EphemeralTaskLifecycle } from '../ephemeral_task_lifecycle'; -import { TaskLifecycleEvent } from '../polling_lifecycle'; -import { isTaskRunEvent, isTaskManagerStatEvent } from '../task_events'; -import { - AveragedStat, - calculateRunningAverage, - createRunningAveragedStat, -} from './task_run_calculators'; -import { HealthStatus } from './monitoring_stats_stream'; - -export interface EphemeralTaskStat extends JsonObject { - queuedTasks: number[]; - executionsPerCycle: number[]; - load: number[]; - delay: number[]; -} - -export interface SummarizedEphemeralTaskStat extends JsonObject { - queuedTasks: AveragedStat; - executionsPerCycle: AveragedStat; - load: AveragedStat; -} -export function createEphemeralTaskAggregator( - ephemeralTaskLifecycle: EphemeralTaskLifecycle, - runningAverageWindowSize: number, - capacity: number -): AggregatedStatProvider { - const ephemeralTaskRunEvents$ = ephemeralTaskLifecycle.events.pipe( - filter((taskEvent: TaskLifecycleEvent) => isTaskRunEvent(taskEvent)) - ); - - const ephemeralQueueSizeEvents$: Observable = ephemeralTaskLifecycle.events.pipe( - filter( - (taskEvent: TaskLifecycleEvent) => - isTaskManagerStatEvent(taskEvent) && - taskEvent.id === 'queuedEphemeralTasks' && - isOk(taskEvent.event) - ), - map((taskEvent: TaskLifecycleEvent) => { - return (taskEvent.event as unknown as Ok).value; - }), - // as we consume this stream twice below (in the buffer, and the zip) - // we want to use share, otherwise ther'll be 2 subscribers and both will emit event - share() - ); - - const ephemeralQueueExecutionsPerCycleQueue = - createRunningAveragedStat(runningAverageWindowSize); - const ephemeralQueuedTasksQueue = createRunningAveragedStat(runningAverageWindowSize); - const ephemeralTaskLoadQueue = createRunningAveragedStat(runningAverageWindowSize); - const ephemeralPollingCycleBasedStats$ = zip( - ephemeralTaskRunEvents$.pipe( - buffer(ephemeralQueueSizeEvents$), - map((taskEvents: TaskLifecycleEvent[]) => taskEvents.length) - ), - ephemeralQueueSizeEvents$ - ).pipe( - map(([tasksRanSincePreviousQueueSize, ephemeralQueueSize]) => ({ - queuedTasks: ephemeralQueuedTasksQueue(ephemeralQueueSize), - executionsPerCycle: ephemeralQueueExecutionsPerCycleQueue(tasksRanSincePreviousQueueSize), - load: ephemeralTaskLoadQueue(calculateWorkerLoad(capacity, tasksRanSincePreviousQueueSize)), - })), - startWith({ - queuedTasks: [], - executionsPerCycle: [], - load: [], - }) - ); - - const ephemeralTaskDelayQueue = createRunningAveragedStat(runningAverageWindowSize); - const ephemeralTaskDelayEvents$: Observable = ephemeralTaskLifecycle.events.pipe( - filter( - (taskEvent: TaskLifecycleEvent) => - isTaskManagerStatEvent(taskEvent) && - taskEvent.id === 'ephemeralTaskDelay' && - isOk(taskEvent.event) - ), - map((taskEvent: TaskLifecycleEvent) => { - return ephemeralTaskDelayQueue((taskEvent.event as unknown as Ok).value); - }), - startWith([]) - ); - - return combineLatest([ephemeralPollingCycleBasedStats$, ephemeralTaskDelayEvents$]).pipe( - map(([stats, delay]: [Omit, EphemeralTaskStat['delay']]) => { - return { - key: 'ephemeral', - value: { ...stats, delay }, - } as AggregatedStat; - }) - ); -} - -function calculateWorkerLoad(maxWorkers: number, tasksExecuted: number) { - return Math.round((tasksExecuted * 100) / maxWorkers); -} - -export function summarizeEphemeralStat({ - queuedTasks, - executionsPerCycle, - load, - delay, -}: EphemeralTaskStat): { value: SummarizedEphemeralTaskStat; status: HealthStatus } { - return { - value: { - queuedTasks: calculateRunningAverage(queuedTasks.length ? queuedTasks : [0]), - load: calculateRunningAverage(load.length ? load : [0]), - executionsPerCycle: calculateRunningAverage( - executionsPerCycle.length ? executionsPerCycle : [0] - ), - delay: calculateRunningAverage(delay.length ? delay : [0]), - }, - status: HealthStatus.OK, - }; -} diff --git a/x-pack/plugins/task_manager/server/monitoring/index.ts b/x-pack/plugins/task_manager/server/monitoring/index.ts index 5dc024b53de10..fdcfe8aecebf1 100644 --- a/x-pack/plugins/task_manager/server/monitoring/index.ts +++ b/x-pack/plugins/task_manager/server/monitoring/index.ts @@ -16,7 +16,6 @@ import { import { TaskStore } from '../task_store'; import { TaskPollingLifecycle } from '../polling_lifecycle'; import { ManagedConfiguration } from '../lib/create_managed_configuration'; -import { EphemeralTaskLifecycle } from '../ephemeral_task_lifecycle'; import { AdHocTaskCounter } from '../lib/adhoc_task_counter'; import { TaskTypeDictionary } from '../task_type_dictionary'; @@ -37,7 +36,6 @@ export interface CreateMonitoringStatsOpts { adHocTaskCounter: AdHocTaskCounter; taskDefinitions: TaskTypeDictionary; taskPollingLifecycle?: TaskPollingLifecycle; - ephemeralTaskLifecycle?: EphemeralTaskLifecycle; } export function createMonitoringStats( diff --git a/x-pack/plugins/task_manager/server/monitoring/monitoring_stats_stream.ts b/x-pack/plugins/task_manager/server/monitoring/monitoring_stats_stream.ts index 1237af9e68ebc..b89f242741b05 100644 --- a/x-pack/plugins/task_manager/server/monitoring/monitoring_stats_stream.ts +++ b/x-pack/plugins/task_manager/server/monitoring/monitoring_stats_stream.ts @@ -16,12 +16,6 @@ import { SummarizedWorkloadStat, WorkloadStat, } from './workload_statistics'; -import { - EphemeralTaskStat, - createEphemeralTaskAggregator, - SummarizedEphemeralTaskStat, - summarizeEphemeralStat, -} from './ephemeral_task_statistics'; import { createTaskRunAggregator, summarizeTaskRunStat, @@ -45,7 +39,6 @@ export interface MonitoringStats { configuration?: MonitoredStat; workload?: MonitoredStat; runtime?: MonitoredStat; - ephemeral?: MonitoredStat; utilization?: MonitoredStat; }; } @@ -72,7 +65,6 @@ export interface RawMonitoringStats { configuration?: RawMonitoredStat; workload?: RawMonitoredStat; runtime?: RawMonitoredStat; - ephemeral?: RawMonitoredStat; capacity_estimation?: RawMonitoredStat; }; } @@ -86,7 +78,6 @@ export function createAggregators({ taskDefinitions, adHocTaskCounter, taskPollingLifecycle, - ephemeralTaskLifecycle, }: CreateMonitoringStatsOpts): AggregatedStatProvider { const aggregators: AggregatedStatProvider[] = [ createConfigurationAggregator(config, managedConfig), @@ -111,15 +102,6 @@ export function createAggregators({ ) ); } - if (ephemeralTaskLifecycle && ephemeralTaskLifecycle.enabled) { - aggregators.push( - createEphemeralTaskAggregator( - ephemeralTaskLifecycle, - config.monitored_stats_running_average_window, - managedConfig.startingCapacity - ) - ); - } return merge(...aggregators); } @@ -156,7 +138,7 @@ export function summarizeMonitoringStats( { // eslint-disable-next-line @typescript-eslint/naming-convention last_update, - stats: { runtime, workload, configuration, ephemeral, utilization }, + stats: { runtime, workload, configuration, utilization }, }: MonitoringStats, config: TaskManagerConfig, assumedKibanaInstances: number @@ -188,14 +170,6 @@ export function summarizeMonitoringStats( }, } : {}), - ...(ephemeral - ? { - ephemeral: { - timestamp: ephemeral.timestamp, - ...summarizeEphemeralStat(ephemeral.value), - }, - } - : {}), }, assumedKibanaInstances ); diff --git a/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.test.ts b/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.test.ts index fa6fbe0d3a2b9..800e2129b7064 100644 --- a/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.test.ts +++ b/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.test.ts @@ -455,10 +455,7 @@ describe('Task Run Statistics', () => { { start: 0, stop: 0 }, TaskRunResult.Success ), - mockTaskRunEvent({}, { start: 0, stop: 0 }, TaskRunResult.Success, TaskPersistence.Ephemeral), - mockTaskRunEvent({}, { start: 0, stop: 0 }, TaskRunResult.Success, TaskPersistence.Ephemeral), mockTaskRunEvent({}, { start: 0, stop: 0 }, TaskRunResult.Success), - mockTaskRunEvent({}, { start: 0, stop: 0 }, TaskRunResult.Success, TaskPersistence.Ephemeral), mockTaskRunEvent( { schedule: { interval: '3s' } }, { start: 0, stop: 0 }, @@ -490,79 +487,52 @@ describe('Task Run Statistics', () => { .toMatchInlineSnapshot(` Array [ Object { - "ephemeral": 0, "non_recurring": 100, "recurring": 0, }, Object { - "ephemeral": 0, "non_recurring": 100, "recurring": 0, }, Object { - "ephemeral": 0, "non_recurring": 67, "recurring": 33, }, Object { - "ephemeral": 0, "non_recurring": 75, "recurring": 25, }, Object { - "ephemeral": 0, "non_recurring": 80, "recurring": 20, }, Object { - "ephemeral": 0, "non_recurring": 60, "recurring": 40, }, Object { - "ephemeral": 0, "non_recurring": 40, "recurring": 60, }, Object { - "ephemeral": 0, "non_recurring": 60, "recurring": 40, }, Object { - "ephemeral": 0, "non_recurring": 60, "recurring": 40, }, Object { - "ephemeral": 0, "non_recurring": 40, "recurring": 60, }, Object { - "ephemeral": 20, - "non_recurring": 40, + "non_recurring": 60, "recurring": 40, }, Object { - "ephemeral": 40, - "non_recurring": 40, - "recurring": 20, - }, - Object { - "ephemeral": 40, - "non_recurring": 40, - "recurring": 20, - }, - Object { - "ephemeral": 60, - "non_recurring": 20, - "recurring": 20, - }, - Object { - "ephemeral": 60, - "non_recurring": 20, - "recurring": 20, + "non_recurring": 60, + "recurring": 40, }, ] `); diff --git a/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.ts b/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.ts index 6007508451d9e..37bdf04984617 100644 --- a/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.ts +++ b/x-pack/plugins/task_manager/server/monitoring/task_run_statistics.ts @@ -92,7 +92,6 @@ interface ResultFrequency extends JsonObject { export interface TaskPersistenceTypes extends JsonObject { [TaskPersistence.Recurring]: T; [TaskPersistence.NonRecurring]: T; - [TaskPersistence.Ephemeral]: T; } type ResultFrequencySummary = ResultFrequency & { @@ -247,7 +246,6 @@ export function createTaskRunAggregator( duration_by_persistence: { [TaskPersistence.Recurring]: [], [TaskPersistence.NonRecurring]: [], - [TaskPersistence.Ephemeral]: [], }, result_frequency_percent_as_number: {}, persistence: [], @@ -401,7 +399,6 @@ export function summarizeTaskRunStat( persistence: { [TaskPersistence.Recurring]: 0, [TaskPersistence.NonRecurring]: 0, - [TaskPersistence.Ephemeral]: 0, ...calculateFrequency(persistence), }, result_frequency_percent_as_number: mapValues( diff --git a/x-pack/plugins/task_manager/server/plugin.test.ts b/x-pack/plugins/task_manager/server/plugin.test.ts index 80109e0624145..9592af3d75c37 100644 --- a/x-pack/plugins/task_manager/server/plugin.test.ts +++ b/x-pack/plugins/task_manager/server/plugin.test.ts @@ -17,9 +17,6 @@ import { cloudMock } from '@kbn/cloud-plugin/public/mocks'; import { taskPollingLifecycleMock } from './polling_lifecycle.mock'; import { TaskPollingLifecycle } from './polling_lifecycle'; import type { TaskPollingLifecycle as TaskPollingLifecycleClass } from './polling_lifecycle'; -import { ephemeralTaskLifecycleMock } from './ephemeral_task_lifecycle.mock'; -import { EphemeralTaskLifecycle } from './ephemeral_task_lifecycle'; -import type { EphemeralTaskLifecycle as EphemeralTaskLifecycleClass } from './ephemeral_task_lifecycle'; let mockTaskPollingLifecycle = taskPollingLifecycleMock.create({}); jest.mock('./polling_lifecycle', () => { @@ -30,15 +27,6 @@ jest.mock('./polling_lifecycle', () => { }; }); -let mockEphemeralTaskLifecycle = ephemeralTaskLifecycleMock.create({}); -jest.mock('./ephemeral_task_lifecycle', () => { - return { - EphemeralTaskLifecycle: jest.fn().mockImplementation(() => { - return mockEphemeralTaskLifecycle; - }), - }; -}); - const deleteCurrentNodeSpy = jest.spyOn(KibanaDiscoveryService.prototype, 'deleteCurrentNode'); const discoveryIsStarted = jest.spyOn(KibanaDiscoveryService.prototype, 'isStarted'); @@ -69,10 +57,6 @@ const pluginInitializerContextParams = { }, custom: {}, }, - ephemeral_tasks: { - enabled: false, - request_capacity: 10, - }, unsafe: { exclude_task_types: [], authenticate_background_task_utilization: true, @@ -94,8 +78,6 @@ describe('TaskManagerPlugin', () => { beforeEach(() => { mockTaskPollingLifecycle = taskPollingLifecycleMock.create({}); (TaskPollingLifecycle as jest.Mock).mockClear(); - mockEphemeralTaskLifecycle = ephemeralTaskLifecycleMock.create({}); - (EphemeralTaskLifecycle as jest.Mock).mockClear(); }); describe('setup', () => { @@ -164,9 +146,6 @@ describe('TaskManagerPlugin', () => { }); expect(TaskPollingLifecycle as jest.Mock).toHaveBeenCalledTimes(1); - expect( - EphemeralTaskLifecycle as jest.Mock - ).toHaveBeenCalledTimes(1); }); test('should not initialize task polling lifecycle if node.roles.backgroundTasks is false', async () => { @@ -181,9 +160,6 @@ describe('TaskManagerPlugin', () => { }); expect(TaskPollingLifecycle as jest.Mock).not.toHaveBeenCalled(); - expect( - EphemeralTaskLifecycle as jest.Mock - ).not.toHaveBeenCalled(); }); }); diff --git a/x-pack/plugins/task_manager/server/plugin.ts b/x-pack/plugins/task_manager/server/plugin.ts index cd820d1e70780..42a979bf96067 100644 --- a/x-pack/plugins/task_manager/server/plugin.ts +++ b/x-pack/plugins/task_manager/server/plugin.ts @@ -35,8 +35,7 @@ import { createManagedConfiguration } from './lib/create_managed_configuration'; import { TaskScheduling } from './task_scheduling'; import { backgroundTaskUtilizationRoute, healthRoute, metricsRoute } from './routes'; import { createMonitoringStats, MonitoringStats } from './monitoring'; -import { EphemeralTaskLifecycle } from './ephemeral_task_lifecycle'; -import { EphemeralTask, ConcreteTaskInstance } from './task'; +import { ConcreteTaskInstance } from './task'; import { registerTaskManagerUsageCollector } from './usage'; import { TASK_MANAGER_INDEX } from './constants'; import { AdHocTaskCounter } from './lib/adhoc_task_counter'; @@ -67,7 +66,6 @@ export type TaskManagerStartContract = Pick< TaskScheduling, | 'schedule' | 'runSoon' - | 'ephemeralRunNow' | 'ensureScheduled' | 'bulkUpdateSchedules' | 'bulkEnable' @@ -78,7 +76,6 @@ export type TaskManagerStartContract = Pick< Pick & { removeIfExists: TaskStore['remove']; } & { - supportsEphemeralTasks: () => boolean; getRegisteredTypes: () => string[]; }; @@ -92,7 +89,6 @@ export class TaskManagerPlugin implements Plugin { private taskPollingLifecycle?: TaskPollingLifecycle; - private ephemeralTaskLifecycle?: EphemeralTaskLifecycle; private taskManagerId?: string; private usageCounter?: UsageCounter; private config: TaskManagerConfig; @@ -218,8 +214,6 @@ export class TaskManagerPlugin usageCollection, monitoredHealth$, monitoredUtilization$, - this.config.ephemeral_tasks.enabled, - this.config.ephemeral_tasks.request_capacity, this.config.unsafe.exclude_task_types ); } @@ -350,17 +344,6 @@ export class TaskManagerPlugin ...managedConfiguration, taskPartitioner, }); - - this.ephemeralTaskLifecycle = new EphemeralTaskLifecycle({ - config: this.config!, - definitions: this.definitions, - logger: this.logger, - executionContext, - middleware: this.middleware, - elasticsearchAndSOAvailability$: this.elasticsearchAndSOAvailability$!, - pool: this.taskPollingLifecycle.pool, - lifecycleEvent: this.taskPollingLifecycle.events, - }); } createMonitoringStats({ @@ -372,7 +355,6 @@ export class TaskManagerPlugin adHocTaskCounter: this.adHocTaskCounter, taskDefinitions: this.definitions, taskPollingLifecycle: this.taskPollingLifecycle, - ephemeralTaskLifecycle: this.ephemeralTaskLifecycle, }).subscribe((stat) => this.monitoringStats$.next(stat)); metricsStream({ @@ -387,7 +369,6 @@ export class TaskManagerPlugin logger: this.logger, taskStore, middleware: this.middleware, - ephemeralTaskLifecycle: this.ephemeralTaskLifecycle, taskManagerId: taskStore.taskManagerId, }); @@ -409,9 +390,6 @@ export class TaskManagerPlugin bulkEnable: (...args) => taskScheduling.bulkEnable(...args), bulkDisable: (...args) => taskScheduling.bulkDisable(...args), bulkUpdateSchedules: (...args) => taskScheduling.bulkUpdateSchedules(...args), - ephemeralRunNow: (task: EphemeralTask) => taskScheduling.ephemeralRunNow(task), - supportsEphemeralTasks: () => - this.config.ephemeral_tasks.enabled && this.shouldRunBackgroundTasks, getRegisteredTypes: () => this.definitions.getAllTypes(), bulkUpdateState: (...args) => taskScheduling.bulkUpdateState(...args), }; diff --git a/x-pack/plugins/task_manager/server/polling_lifecycle.test.ts b/x-pack/plugins/task_manager/server/polling_lifecycle.test.ts index a408bd3f634d9..1ccbe57debe24 100644 --- a/x-pack/plugins/task_manager/server/polling_lifecycle.test.ts +++ b/x-pack/plugins/task_manager/server/polling_lifecycle.test.ts @@ -84,10 +84,6 @@ describe('TaskPollingLifecycle', () => { }, custom: {}, }, - ephemeral_tasks: { - enabled: true, - request_capacity: 10, - }, unsafe: { exclude_task_types: [], authenticate_background_task_utilization: true, diff --git a/x-pack/plugins/task_manager/server/polling_lifecycle.ts b/x-pack/plugins/task_manager/server/polling_lifecycle.ts index fb6776fa34f28..91f32d7201ea9 100644 --- a/x-pack/plugins/task_manager/server/polling_lifecycle.ts +++ b/x-pack/plugins/task_manager/server/polling_lifecycle.ts @@ -26,7 +26,6 @@ import { asTaskPollingCycleEvent, TaskManagerStat, asTaskManagerStatEvent, - EphemeralTaskRejectedDueToCapacity, TaskManagerMetric, } from './task_events'; import { fillPool, FillPoolResult, TimedFillPoolResult } from './lib/fill_pool'; @@ -71,8 +70,7 @@ export type TaskLifecycleEvent = | TaskRunRequest | TaskPollingCycle | TaskManagerStat - | TaskManagerMetric - | EphemeralTaskRejectedDueToCapacity; + | TaskManagerMetric; /** * The public interface into the task manager system. diff --git a/x-pack/plugins/task_manager/server/routes/health.test.ts b/x-pack/plugins/task_manager/server/routes/health.test.ts index 1e06ea91a6fcf..f8b716ba0d158 100644 --- a/x-pack/plugins/task_manager/server/routes/health.test.ts +++ b/x-pack/plugins/task_manager/server/routes/health.test.ts @@ -299,7 +299,6 @@ describe('healthRoute', () => { const warnRuntimeStat = mockHealthStats(); const warnConfigurationStat = mockHealthStats(); const warnWorkloadStat = mockHealthStats(); - const warnEphemeralStat = mockHealthStats(); const stats$ = new Subject(); @@ -334,15 +333,13 @@ describe('healthRoute', () => { stats$.next(warnConfigurationStat); await sleep(1001); stats$.next(warnWorkloadStat); - await sleep(1001); - stats$.next(warnEphemeralStat); expect(await serviceStatus).toMatchObject({ level: ServiceStatusLevels.degraded, summary: `Task Manager is unhealthy - Reason: ${reason}`, }); - expect(logHealthMetrics).toBeCalledTimes(4); + expect(logHealthMetrics).toBeCalledTimes(3); expect(logHealthMetrics.mock.calls[0][0]).toMatchObject({ id, timestamp: expect.any(String), @@ -367,14 +364,6 @@ describe('healthRoute', () => { summarizeMonitoringStats(logger, warnWorkloadStat, getTaskManagerConfig({})) ), }); - expect(logHealthMetrics.mock.calls[3][0]).toMatchObject({ - id, - timestamp: expect.any(String), - status: expect.any(String), - ...ignoreCapacityEstimation( - summarizeMonitoringStats(logger, warnEphemeralStat, getTaskManagerConfig({})) - ), - }); }); it(`logs at an error level if the status is error`, async () => { @@ -402,7 +391,6 @@ describe('healthRoute', () => { const errorRuntimeStat = mockHealthStats(); const errorConfigurationStat = mockHealthStats(); const errorWorkloadStat = mockHealthStats(); - const errorEphemeralStat = mockHealthStats(); const stats$ = new Subject(); @@ -437,15 +425,13 @@ describe('healthRoute', () => { stats$.next(errorConfigurationStat); await sleep(1001); stats$.next(errorWorkloadStat); - await sleep(1001); - stats$.next(errorEphemeralStat); expect(await serviceStatus).toMatchObject({ level: ServiceStatusLevels.degraded, summary: `Task Manager is unhealthy - Reason: ${reason}`, }); - expect(logHealthMetrics).toBeCalledTimes(4); + expect(logHealthMetrics).toBeCalledTimes(3); expect(logHealthMetrics.mock.calls[0][0]).toMatchObject({ id, timestamp: expect.any(String), @@ -470,14 +456,6 @@ describe('healthRoute', () => { summarizeMonitoringStats(logger, errorWorkloadStat, getTaskManagerConfig({})) ), }); - expect(logHealthMetrics.mock.calls[3][0]).toMatchObject({ - id, - timestamp: expect.any(String), - status: expect.any(String), - ...ignoreCapacityEstimation( - summarizeMonitoringStats(logger, errorEphemeralStat, getTaskManagerConfig({})) - ), - }); }); it('returns a error status if the overall stats have not been updated within the required hot freshness', async () => { @@ -548,9 +526,6 @@ describe('healthRoute', () => { workload: { timestamp: expect.any(String), }, - ephemeral: { - timestamp: expect.any(String), - }, runtime: { timestamp: expect.any(String), value: { @@ -653,9 +628,6 @@ describe('healthRoute', () => { workload: { timestamp: expect.any(String), }, - ephemeral: { - timestamp: expect.any(String), - }, runtime: { timestamp: expect.any(String), value: { @@ -737,9 +709,6 @@ describe('healthRoute', () => { workload: { timestamp: expect.any(String), }, - ephemeral: { - timestamp: expect.any(String), - }, runtime: { timestamp: expect.any(String), value: { @@ -952,15 +921,6 @@ function mockHealthStats(overrides = {}) { }, }, }, - ephemeral: { - timestamp: new Date().toISOString(), - value: { - load: [], - executionsPerCycle: [], - queuedTasks: [], - delay: [], - }, - }, }, }; return merge(stub, overrides) as unknown as MonitoringStats; diff --git a/x-pack/plugins/task_manager/server/task.ts b/x-pack/plugins/task_manager/server/task.ts index bbe2935bdfc6d..a6f5ae05e7819 100644 --- a/x-pack/plugins/task_manager/server/task.ts +++ b/x-pack/plugins/task_manager/server/task.ts @@ -471,16 +471,6 @@ export interface ConcreteTaskInstanceVersion { error?: string; } -/** - * A task instance that has an id and is ready for storage. - */ -export type EphemeralTask = Pick< - ConcreteTaskInstance, - 'taskType' | 'params' | 'state' | 'scope' | 'enabled' ->; -export type EphemeralTaskInstance = EphemeralTask & - Pick; - export type SerializedConcreteTaskInstance = Omit< ConcreteTaskInstance, 'state' | 'params' | 'scheduledAt' | 'startedAt' | 'retryAt' | 'runAt' diff --git a/x-pack/plugins/task_manager/server/task_events.ts b/x-pack/plugins/task_manager/server/task_events.ts index c0ae11528f843..f3df6c230e8ed 100644 --- a/x-pack/plugins/task_manager/server/task_events.ts +++ b/x-pack/plugins/task_manager/server/task_events.ts @@ -13,14 +13,12 @@ import { Result, Err } from './lib/result_type'; import { ClaimAndFillPoolResult } from './lib/fill_pool'; import { PollingError } from './polling'; import { DecoratedError, TaskRunResult } from './task_running'; -import { EphemeralTaskInstanceRequest } from './ephemeral_task_lifecycle'; import type { EventLoopDelayConfig } from './config'; import { TaskManagerMetrics } from './metrics/task_metrics_collector'; export enum TaskPersistence { Recurring = 'recurring', NonRecurring = 'non_recurring', - Ephemeral = 'ephemeral', } export enum TaskEventType { @@ -31,7 +29,6 @@ export enum TaskEventType { TASK_POLLING_CYCLE = 'TASK_POLLING_CYCLE', TASK_MANAGER_METRIC = 'TASK_MANAGER_METRIC', TASK_MANAGER_STAT = 'TASK_MANAGER_STAT', - EPHEMERAL_TASK_DELAYED_DUE_TO_CAPACITY = 'EPHEMERAL_TASK_DELAYED_DUE_TO_CAPACITY', } export interface TaskTiming { @@ -82,7 +79,6 @@ export type TaskMarkRunning = TaskEvent; export type TaskRun = TaskEvent; export type TaskClaim = TaskEvent; export type TaskRunRequest = TaskEvent; -export type EphemeralTaskRejectedDueToCapacity = TaskEvent; export type TaskPollingCycle = TaskEvent>; export type TaskManagerMetric = TaskEvent; @@ -90,8 +86,6 @@ export type TaskManagerStats = | 'load' | 'pollingDelay' | 'claimDuration' - | 'queuedEphemeralTasks' - | 'ephemeralTaskDelay' | 'workerUtilization' | 'runDelay'; export type TaskManagerStat = TaskEvent; @@ -187,19 +181,6 @@ export function asTaskManagerMetricEvent( }; } -export function asEphemeralTaskRejectedDueToCapacityEvent( - id: string, - event: Result, - timing?: TaskTiming -): EphemeralTaskRejectedDueToCapacity { - return { - id, - type: TaskEventType.EPHEMERAL_TASK_DELAYED_DUE_TO_CAPACITY, - event, - timing, - }; -} - export function isTaskMarkRunningEvent( taskEvent: TaskEvent ): taskEvent is TaskMarkRunning { @@ -236,8 +217,3 @@ export function isTaskManagerMetricEvent( ): taskEvent is TaskManagerStat { return taskEvent.type === TaskEventType.TASK_MANAGER_METRIC; } -export function isEphemeralTaskRejectedDueToCapacityEvent( - taskEvent: TaskEvent -): taskEvent is EphemeralTaskRejectedDueToCapacity { - return taskEvent.type === TaskEventType.EPHEMERAL_TASK_DELAYED_DUE_TO_CAPACITY; -} diff --git a/x-pack/plugins/task_manager/server/task_running/ephemeral_task_runner.ts b/x-pack/plugins/task_manager/server/task_running/ephemeral_task_runner.ts deleted file mode 100644 index 365169b048893..0000000000000 --- a/x-pack/plugins/task_manager/server/task_running/ephemeral_task_runner.ts +++ /dev/null @@ -1,396 +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. - */ - -/* - * This module contains the core logic for running an individual task. - * It handles the full lifecycle of a task run, including error handling, - * rescheduling, middleware application, etc. - */ - -import apm from 'elastic-apm-node'; -import { v4 as uuidv4 } from 'uuid'; -import { withSpan } from '@kbn/apm-utils'; -import { identity } from 'lodash'; -import { Logger, ExecutionContextStart } from '@kbn/core/server'; - -import { Middleware } from '../lib/middleware'; -import { asOk, asErr, eitherAsync, Result } from '../lib/result_type'; -import { - TaskRun, - TaskMarkRunning, - asTaskRunEvent, - asTaskMarkRunningEvent, - startTaskTimer, - TaskTiming, - TaskPersistence, -} from '../task_events'; -import { intervalFromDate } from '../lib/intervals'; -import { - CancellableTask, - ConcreteTaskInstance, - isFailedRunResult, - SuccessfulRunResult, - FailedRunResult, - TaskStatus, - EphemeralTaskInstance, -} from '../task'; -import { TaskTypeDictionary } from '../task_type_dictionary'; -import { - asPending, - asReadyToRun, - EMPTY_RUN_RESULT, - isPending, - isReadyToRun, - TaskRunner, - TaskRunningInstance, - TaskRunResult, - TASK_MANAGER_RUN_TRANSACTION_TYPE, - TASK_MANAGER_TRANSACTION_TYPE, - TASK_MANAGER_TRANSACTION_TYPE_MARK_AS_RUNNING, -} from './task_runner'; - -type Opts = { - logger: Logger; - definitions: TaskTypeDictionary; - instance: EphemeralTaskInstance; - onTaskEvent?: (event: TaskRun | TaskMarkRunning) => void; - executionContext: ExecutionContextStart; -} & Pick; - -// ephemeral tasks cannot be rescheduled or scheduled to run again in the future -type EphemeralSuccessfulRunResult = Omit; -type EphemeralFailedRunResult = Omit; - -/** - * - * @export - * @class EphemeralTaskManagerRunner - * @implements {TaskRunner} - */ -export class EphemeralTaskManagerRunner implements TaskRunner { - private task?: CancellableTask; - private instance: TaskRunningInstance; - private definitions: TaskTypeDictionary; - private logger: Logger; - private beforeRun: Middleware['beforeRun']; - private beforeMarkRunning: Middleware['beforeMarkRunning']; - private onTaskEvent: (event: TaskRun | TaskMarkRunning) => void; - private uuid: string; - private readonly executionContext: ExecutionContextStart; - - /** - * Creates an instance of EphemeralTaskManagerRunner. - * @param {Opts} opts - * @prop {Logger} logger - The task manager logger - * @prop {TaskDefinition} definition - The definition of the task being run - * @prop {EphemeralTaskInstance} instance - The record describing this particular task instance - * @prop {BeforeRunFunction} beforeRun - A function that adjusts the run context prior to running the task - * @memberof TaskManagerRunner - */ - constructor({ - instance, - definitions, - logger, - beforeRun, - beforeMarkRunning, - onTaskEvent = identity, - executionContext, - }: Opts) { - this.instance = asPending(asConcreteInstance(sanitizeInstance(instance))); - this.definitions = definitions; - this.logger = logger; - this.beforeRun = beforeRun; - this.beforeMarkRunning = beforeMarkRunning; - this.onTaskEvent = onTaskEvent; - this.executionContext = executionContext; - this.uuid = uuidv4(); - } - - /** - * Gets the id of this task instance. - */ - public get id() { - return this.instance.task.id; - } - - /** - * Gets the exeuction id of this task instance. - */ - public get taskExecutionId() { - return `${this.id}::${this.uuid}`; - } - - /** - * Test whether given execution ID identifies a different execution of this same task - * @param id - */ - public isSameTask(executionId: string) { - return executionId.startsWith(this.id); - } - - /** - * Gets the task type of this task instance. - */ - public get taskType() { - return this.instance.task.taskType; - } - - /** - * Get the stage this TaskRunner is at - */ - public get stage() { - return this.instance.stage; - } - - /** - * Gets the task defintion from the dictionary. - */ - public get definition() { - return this.definitions.get(this.taskType); - } - - /** - * Gets the time at which this task will expire. - */ - public get expiration() { - return intervalFromDate( - // if the task is running, use it's started at, otherwise use the timestamp at - // which it was last updated - // this allows us to catch tasks that remain in Pending/Finalizing without being - // cleaned up - isReadyToRun(this.instance) ? this.instance.task.startedAt : this.instance.timestamp, - this.definition?.timeout - )!; - } - - /** - * Gets the duration of the current task run - */ - public get startedAt() { - return this.instance.task.startedAt; - } - - /** - * Gets whether or not this task has run longer than its expiration setting allows. - */ - public get isExpired() { - return this.expiration < new Date(); - } - - /** - * Returns true whenever the task is ad hoc and has ran out of attempts. When true before - * running a task, the task should be deleted instead of ran. - */ - public get isAdHocTaskAndOutOfAttempts() { - return false; - } - - public get isEphemeral() { - return true; - } - - /** - * Returns a log-friendly representation of this task. - */ - public toString() { - return `${this.taskType} "${this.id}" (Ephemeral)`; - } - - /** - * Runs the task, handling the task result, errors, etc, rescheduling if need - * be. NOTE: the time of applying the middleware's beforeRun is incorporated - * into the total timeout time the task in configured with. We may decide to - * start the timer after beforeRun resolves - * - * @returns {Promise>} - */ - public async run(): Promise> { - const definition = this.definition; - - if (!definition) { - throw new Error(`Running ephemeral task ${this} failed because it has no definition`); - } - - if (!isReadyToRun(this.instance)) { - throw new Error( - `Running ephemeral task ${this} failed as it ${ - isPending(this.instance) ? `isn't ready to be ran` : `has already been ran` - }` - ); - } - this.logger.debug(`Running ephemeral task ${this}`); - const apmTrans = apm.startTransaction(this.taskType, TASK_MANAGER_RUN_TRANSACTION_TYPE, { - childOf: this.instance.task.traceparent, - }); - apmTrans?.addLabels({ ephemeral: true }); - - const modifiedContext = await this.beforeRun({ - taskInstance: asConcreteInstance(this.instance.task), - }); - const stopTaskTimer = startTaskTimer(); - try { - this.task = definition.createTaskRunner(modifiedContext); - const ctx = { - type: 'task manager', - name: `run ephemeral ${this.instance.task.taskType}`, - id: this.instance.task.id, - description: 'run ephemeral task', - }; - const result = await this.executionContext.withContext(ctx, () => - withSpan({ name: 'ephemeral run', type: 'task manager' }, () => this.task!.run()) - ); - const validatedResult = this.validateResult(result); - const processedResult = await withSpan( - { name: 'process ephemeral result', type: 'task manager' }, - () => this.processResult(validatedResult, stopTaskTimer()) - ); - if (apmTrans) apmTrans.end('success'); - return processedResult; - } catch (err) { - this.logger.error(`Task ${this} failed: ${err}`); - // in error scenario, we can not get the RunResult - const processedResult = await withSpan( - { name: 'process ephemeral result', type: 'task manager' }, - () => - this.processResult( - asErr({ error: err, state: modifiedContext.taskInstance.state }), - stopTaskTimer() - ) - ); - if (apmTrans) apmTrans.end('failure'); - return processedResult; - } - } - - /** - * Used by the non-ephemeral task runner - */ - public async removeTask(): Promise {} - - /** - * Noop for Ephemeral tasks - * - * @returns {Promise} - */ - public async markTaskAsRunning(): Promise { - if (!isPending(this.instance)) { - throw new Error( - `Marking ephemeral task ${this} as running has failed as it ${ - isReadyToRun(this.instance) ? `is already running` : `has already been ran` - }` - ); - } - - const apmTrans = apm.startTransaction( - TASK_MANAGER_TRANSACTION_TYPE_MARK_AS_RUNNING, - TASK_MANAGER_TRANSACTION_TYPE - ); - apmTrans?.addLabels({ entityId: this.taskType }); - - const now = new Date(); - try { - const { taskInstance } = await this.beforeMarkRunning({ - taskInstance: asConcreteInstance(this.instance.task), - }); - - this.instance = asReadyToRun({ - ...taskInstance, - status: TaskStatus.Running, - startedAt: now, - attempts: taskInstance.attempts + 1, - retryAt: null, - }); - - if (apmTrans) apmTrans.end('success'); - this.onTaskEvent(asTaskMarkRunningEvent(this.id, asOk(this.instance.task))); - return true; - } catch (error) { - if (apmTrans) apmTrans.end('failure'); - this.onTaskEvent(asTaskMarkRunningEvent(this.id, asErr(error))); - } - return false; - } - - /** - * Attempts to cancel the task. - * - * @returns {Promise} - */ - public async cancel() { - const { task } = this; - if (task?.cancel) { - // it will cause the task state of "running" to be cleared - this.task = undefined; - return task.cancel(); - } - - this.logger.debug(`The ephemral task ${this} is not cancellable.`); - } - - private validateResult( - result?: SuccessfulRunResult | FailedRunResult | void - ): Result { - return isFailedRunResult(result) - ? asErr({ ...result, error: result.error }) - : asOk(result || EMPTY_RUN_RESULT); - } - - private async processResult( - result: Result, - taskTiming: TaskTiming - ): Promise> { - await eitherAsync( - result, - async ({ state }: EphemeralSuccessfulRunResult) => { - this.onTaskEvent( - asTaskRunEvent( - this.id, - asOk({ - task: { ...this.instance.task, state }, - persistence: TaskPersistence.Ephemeral, - result: TaskRunResult.Success, - isExpired: false, - }), - taskTiming - ) - ); - }, - async ({ error, state }: EphemeralFailedRunResult) => { - this.onTaskEvent( - asTaskRunEvent( - this.id, - asErr({ - task: { ...this.instance.task, state }, - persistence: TaskPersistence.Ephemeral, - result: TaskRunResult.Failed, - isExpired: false, - error, - }), - taskTiming - ) - ); - } - ); - return result; - } -} - -function sanitizeInstance(instance: EphemeralTaskInstance): EphemeralTaskInstance { - return { - ...instance, - params: instance.params || {}, - state: instance.state || {}, - }; -} - -function asConcreteInstance(instance: EphemeralTaskInstance): ConcreteTaskInstance { - return { - ...instance, - attempts: 0, - retryAt: null, - }; -} diff --git a/x-pack/plugins/task_manager/server/task_running/errors.ts b/x-pack/plugins/task_manager/server/task_running/errors.ts index e7063a92556eb..e30c99c68c60c 100644 --- a/x-pack/plugins/task_manager/server/task_running/errors.ts +++ b/x-pack/plugins/task_manager/server/task_running/errors.ts @@ -5,7 +5,6 @@ * 2.0. */ import { TaskErrorSource } from '../../common'; -import { EphemeralTask } from '../task'; export { TaskErrorSource }; @@ -23,19 +22,6 @@ export interface DecoratedError extends Error { [source]?: TaskErrorSource; } -export class EphemeralTaskRejectedDueToCapacityError extends Error { - private _task: EphemeralTask; - - constructor(message: string, task: EphemeralTask) { - super(message); - this._task = task; - } - - public get task() { - return this._task; - } -} - function isTaskManagerError(error: unknown): error is DecoratedError { return Boolean(error && (error as DecoratedError)[code]); } @@ -87,9 +73,3 @@ export function getErrorSource(error: Error | DecoratedError): TaskErrorSource | export function isUserError(error: Error | DecoratedError) { return getErrorSource(error) === TaskErrorSource.USER; } - -export function isEphemeralTaskRejectedDueToCapacityError( - error: Error | EphemeralTaskRejectedDueToCapacityError -) { - return Boolean(error && error instanceof EphemeralTaskRejectedDueToCapacityError); -} diff --git a/x-pack/plugins/task_manager/server/task_running/task_runner.ts b/x-pack/plugins/task_manager/server/task_running/task_runner.ts index 9f9dadbc27c93..4077190258e4b 100644 --- a/x-pack/plugins/task_manager/server/task_running/task_runner.ts +++ b/x-pack/plugins/task_manager/server/task_running/task_runner.ts @@ -79,7 +79,6 @@ export interface TaskRunner { id: string; taskExecutionId: string; stage: string; - isEphemeral?: boolean; toString: () => string; isSameTask: (executionId: string) => boolean; isAdHocTaskAndOutOfAttempts: boolean; diff --git a/x-pack/plugins/task_manager/server/task_scheduling.mock.ts b/x-pack/plugins/task_manager/server/task_scheduling.mock.ts index 64dd923d6712c..1981031b553c6 100644 --- a/x-pack/plugins/task_manager/server/task_scheduling.mock.ts +++ b/x-pack/plugins/task_manager/server/task_scheduling.mock.ts @@ -14,7 +14,6 @@ const createTaskSchedulingMock = () => { ensureScheduled: jest.fn(), schedule: jest.fn(), runSoon: jest.fn(), - ephemeralRunNow: jest.fn(), } as unknown as jest.Mocked; }; diff --git a/x-pack/plugins/task_manager/server/task_scheduling.test.ts b/x-pack/plugins/task_manager/server/task_scheduling.test.ts index df5f93a50ec8b..29bffbded5ec5 100644 --- a/x-pack/plugins/task_manager/server/task_scheduling.test.ts +++ b/x-pack/plugins/task_manager/server/task_scheduling.test.ts @@ -6,20 +6,15 @@ */ import sinon from 'sinon'; -import { BehaviorSubject, Observable, Subject } from 'rxjs'; import moment from 'moment'; -import { asTaskRunEvent, TaskPersistence } from './task_events'; -import { TaskLifecycleEvent } from './polling_lifecycle'; import { TaskScheduling } from './task_scheduling'; -import { asErr, asOk } from './lib/result_type'; +import { asOk } from './lib/result_type'; import { TaskStatus } from './task'; import { createInitialMiddleware } from './lib/middleware'; import { taskStoreMock } from './task_store.mock'; -import { TaskRunResult } from './task_running'; import { mockLogger } from './test_utils'; import { TaskTypeDictionary } from './task_type_dictionary'; -import { ephemeralTaskLifecycleMock } from './ephemeral_task_lifecycle.mock'; import { taskManagerMock } from './mocks'; import { omit } from 'lodash'; @@ -52,7 +47,6 @@ describe('TaskScheduling', () => { logger: mockLogger(), middleware: createInitialMiddleware(), definitions, - ephemeralTaskLifecycle: ephemeralTaskLifecycleMock.create({}), taskManagerId: '123', }; @@ -835,122 +829,6 @@ describe('TaskScheduling', () => { }); }); - describe('ephemeralRunNow', () => { - test('runs a task ephemerally', async () => { - const ephemeralEvents$ = new BehaviorSubject>({}); - const ephemeralTask = taskManagerMock.createTask({ - state: { - foo: 'bar', - }, - }); - const customEphemeralTaskLifecycleMock = ephemeralTaskLifecycleMock.create({ - events$: ephemeralEvents$ as Observable, - }); - - customEphemeralTaskLifecycleMock.attemptToRun.mockImplementation((value) => { - return { - tag: 'ok', - value, - }; - }); - - const middleware = createInitialMiddleware(); - middleware.beforeSave = jest.fn().mockImplementation(async () => { - return { taskInstance: ephemeralTask }; - }); - const taskScheduling = new TaskScheduling({ - ...taskSchedulingOpts, - middleware, - ephemeralTaskLifecycle: customEphemeralTaskLifecycleMock, - }); - - const result = taskScheduling.ephemeralRunNow(ephemeralTask); - ephemeralEvents$.next( - asTaskRunEvent( - 'v4uuid', - asOk({ - task: { - ...ephemeralTask, - id: 'v4uuid', - }, - result: TaskRunResult.Success, - persistence: TaskPersistence.Ephemeral, - isExpired: false, - }) - ) - ); - await expect(result).resolves.toEqual({ id: 'v4uuid', state: { foo: 'bar' } }); - }); - - test('rejects ephemeral task if lifecycle returns an error', async () => { - const ephemeralEvents$ = new Subject(); - const ephemeralTask = taskManagerMock.createTask({ - state: { - foo: 'bar', - }, - }); - const customEphemeralTaskLifecycleMock = ephemeralTaskLifecycleMock.create({ - events$: ephemeralEvents$, - }); - - customEphemeralTaskLifecycleMock.attemptToRun.mockImplementation((value) => { - return asErr(value); - }); - - const middleware = createInitialMiddleware(); - middleware.beforeSave = jest.fn().mockImplementation(async () => { - return { taskInstance: ephemeralTask }; - }); - const taskScheduling = new TaskScheduling({ - ...taskSchedulingOpts, - middleware, - ephemeralTaskLifecycle: customEphemeralTaskLifecycleMock, - }); - - const result = taskScheduling.ephemeralRunNow(ephemeralTask); - ephemeralEvents$.next( - asTaskRunEvent( - 'v4uuid', - asOk({ - task: { - ...ephemeralTask, - id: 'v4uuid', - }, - result: TaskRunResult.Failed, - persistence: TaskPersistence.Ephemeral, - isExpired: false, - }) - ) - ); - - await expect(result).rejects.toMatchInlineSnapshot( - `[Error: Ephemeral Task of type foo was rejected]` - ); - }); - - test('rejects ephemeral task if ephemeralTaskLifecycle is not defined', async () => { - const ephemeralTask = taskManagerMock.createTask({ - state: { - foo: 'bar', - }, - }); - const middleware = createInitialMiddleware(); - middleware.beforeSave = jest.fn().mockImplementation(async () => { - return { taskInstance: ephemeralTask }; - }); - const taskScheduling = new TaskScheduling({ - ...taskSchedulingOpts, - middleware, - ephemeralTaskLifecycle: undefined, - }); - - const result = taskScheduling.ephemeralRunNow(ephemeralTask); - await expect(result).rejects.toMatchInlineSnapshot( - `[Error: Ephemeral Task of type foo was rejected because ephemeral tasks are not supported]` - ); - }); - }); - describe('bulkSchedule', () => { test('allows scheduling tasks', async () => { const taskScheduling = new TaskScheduling(taskSchedulingOpts); diff --git a/x-pack/plugins/task_manager/server/task_scheduling.ts b/x-pack/plugins/task_manager/server/task_scheduling.ts index 1a66cddfa6373..6972e8eeabf5e 100644 --- a/x-pack/plugins/task_manager/server/task_scheduling.ts +++ b/x-pack/plugins/task_manager/server/task_scheduling.ts @@ -5,29 +5,14 @@ * 2.0. */ -import { filter, take } from 'rxjs'; import pMap from 'p-map'; - -import { v4 as uuidv4 } from 'uuid'; -import { chunk, flatten, pick } from 'lodash'; -import { Subject } from 'rxjs'; +import { chunk, flatten } from 'lodash'; import agent from 'elastic-apm-node'; import { Logger } from '@kbn/core/server'; -import { either, isErr, mapErr } from './lib/result_type'; -import { - ErroredTask, - ErrResultOf, - isTaskClaimEvent, - isTaskRunEvent, - isTaskRunRequestEvent, - OkResultOf, - RanTask, -} from './task_events'; import { Middleware } from './lib/middleware'; import { parseIntervalAsMillisecond } from './lib/intervals'; import { ConcreteTaskInstance, - EphemeralTask, IntervalSchedule, TaskInstanceWithDeprecatedFields, TaskInstanceWithId, @@ -35,9 +20,6 @@ import { } from './task'; import { TaskStore } from './task_store'; import { ensureDeprecatedFieldsAreCorrected } from './lib/correct_deprecated_fields'; -import { TaskLifecycleEvent } from './polling_lifecycle'; -import { EphemeralTaskLifecycle } from './ephemeral_task_lifecycle'; -import { EphemeralTaskRejectedDueToCapacityError } from './task_running'; import { retryableBulkUpdate } from './lib/retryable_bulk_update'; import { ErrorOutput } from './lib/bulk_operation_buffer'; @@ -46,7 +28,6 @@ const BULK_ACTION_SIZE = 100; export interface TaskSchedulingOpts { logger: Logger; taskStore: TaskStore; - ephemeralTaskLifecycle?: EphemeralTaskLifecycle; middleware: Middleware; taskManagerId: string; } @@ -76,10 +57,8 @@ export interface RunNowResult { export class TaskScheduling { private store: TaskStore; - private ephemeralTaskLifecycle?: EphemeralTaskLifecycle; private logger: Logger; private middleware: Middleware; - private taskManagerId: string; /** * Initializes the task manager, preventing any further addition of middleware, @@ -89,9 +68,7 @@ export class TaskScheduling { constructor(opts: TaskSchedulingOpts) { this.logger = opts.logger; this.middleware = opts.middleware; - this.ephemeralTaskLifecycle = opts.ephemeralTaskLifecycle; this.store = opts.taskStore; - this.taskManagerId = opts.taskManagerId; } /** @@ -284,68 +261,6 @@ export class TaskScheduling { return { id: task.id }; } - /** - * Run an ad-hoc task in memory without persisting it into ES or distributing the load across the cluster. - * - * @param task - The ephemeral task being queued. - * @returns {Promise} - */ - public async ephemeralRunNow( - task: EphemeralTask, - options?: Record - ): Promise { - if (!this.ephemeralTaskLifecycle) { - throw new EphemeralTaskRejectedDueToCapacityError( - `Ephemeral Task of type ${task.taskType} was rejected because ephemeral tasks are not supported`, - task - ); - } - const id = uuidv4(); - const { taskInstance: modifiedTask } = await this.middleware.beforeSave({ - ...options, - taskInstance: task, - }); - return new Promise(async (resolve, reject) => { - try { - // The actual promise returned from this function is resolved after the awaitTaskRunResult promise resolves. - // However, we do not wait to await this promise, as we want later execution to happen in parallel. - // The awaitTaskRunResult promise is resolved once the ephemeral task is successfully executed (technically, when a TaskEventType.TASK_RUN is emitted with the same id). - // However, the ephemeral task won't even get into the queue until the subsequent this.ephemeralTaskLifecycle.attemptToRun is called (which puts it in the queue). - // The reason for all this confusion? Timing. - // In the this.ephemeralTaskLifecycle.attemptToRun, it's possible that the ephemeral task is put into the queue and processed before this function call returns anything. - // If that happens, putting the awaitTaskRunResult after would just hang because the task already completed. We need to listen for the completion before we add it to the queue to avoid this possibility. - const { cancel, resolveOnCancel } = cancellablePromise(); - this.awaitTaskRunResult(id, resolveOnCancel) - .then((arg: RunNowResult) => { - resolve(arg); - }) - .catch((err: Error) => { - reject(err); - }); - const attemptToRunResult = this.ephemeralTaskLifecycle!.attemptToRun({ - id, - scheduledAt: new Date(), - runAt: new Date(), - status: TaskStatus.Idle, - ownerId: this.taskManagerId, - ...modifiedTask, - }); - - if (isErr(attemptToRunResult)) { - cancel(); - reject( - new EphemeralTaskRejectedDueToCapacityError( - `Ephemeral Task of type ${task.taskType} was rejected`, - task - ) - ); - } - } catch (error) { - reject(error); - } - }); - } - /** * Schedules a task with an Id * @@ -366,63 +281,6 @@ export class TaskScheduling { } } - private awaitTaskRunResult(taskId: string, cancel?: Promise): Promise { - return new Promise((resolve, reject) => { - if (!this.ephemeralTaskLifecycle) { - reject( - new Error( - `Failed to run task "${taskId}" because ephemeral tasks are not supported. Rescheduled the task to ensure it is picked up as soon as possible.` - ) - ); - } - // listen for all events related to the current task - const subscription = this.ephemeralTaskLifecycle!.events.pipe( - filter(({ id }: TaskLifecycleEvent) => id === taskId) - ).subscribe((taskEvent: TaskLifecycleEvent) => { - if (isTaskClaimEvent(taskEvent)) { - mapErr(async (error: Error) => { - // reject if any error event takes place for the requested task - subscription.unsubscribe(); - }, taskEvent.event); - } else { - either, ErrResultOf>( - taskEvent.event, - (taskInstance: OkResultOf) => { - // resolve if the task has run sucessfully - if (isTaskRunEvent(taskEvent)) { - resolve(pick((taskInstance as RanTask).task, ['id', 'state'])); - subscription.unsubscribe(); - } - }, - async (errorResult: ErrResultOf) => { - // reject if any error event takes place for the requested task - subscription.unsubscribe(); - return reject( - new Error( - `Failed to run task "${taskId}": ${ - isTaskRunRequestEvent(taskEvent) - ? `Task Manager is at capacity, please try again later` - : isTaskRunEvent(taskEvent) - ? `${(errorResult as ErroredTask).error}` - : `${errorResult}` - }` - ) - ); - } - ); - } - }); - - if (cancel) { - cancel - .then(() => { - subscription.unsubscribe(); - }) - .catch(() => {}); - } - }); - } - private async getNonRunningTask(taskId: string) { const task = await this.store.get(taskId); switch (task.status) { @@ -438,17 +296,6 @@ export class TaskScheduling { } } -const cancellablePromise = () => { - const boolStream = new Subject(); - return { - cancel: () => boolStream.next(true), - resolveOnCancel: boolStream - .pipe(take(1)) - .toPromise() - .then(() => {}), - }; -}; - const randomlyOffsetRunTimestamp: (task: ConcreteTaskInstance) => ConcreteTaskInstance = (task) => { const now = Date.now(); const maximumOffsetTimestamp = now + 1000 * 60 * 5; // now + 5 minutes diff --git a/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.test.ts b/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.test.ts index db511677439ba..baa26638f8d38 100644 --- a/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.test.ts +++ b/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.test.ts @@ -26,43 +26,6 @@ describe('registerTaskManagerUsageCollector', () => { let collector: Collector; const logger = loggingSystemMock.createLogger(); - it('should report telemetry on the ephemeral queue', async () => { - const monitoringStats$ = new Subject(); - const monitoringUtilization$ = new Subject(); - const usageCollectionMock = createUsageCollectionSetupMock(); - const fetchContext = createCollectorFetchContextMock(); - usageCollectionMock.makeUsageCollector.mockImplementation((config) => { - collector = new Collector(logger, config); - return createUsageCollectionSetupMock().makeUsageCollector(config); - }); - - registerTaskManagerUsageCollector( - usageCollectionMock, - monitoringStats$, - monitoringUtilization$, - true, - 10, - [] - ); - - const mockHealth = getMockMonitoredHealth(); - monitoringStats$.next(mockHealth); - const mockUtilization = getMockMonitoredUtilization(); - monitoringUtilization$.next(mockUtilization); - await sleep(1001); - - expect(usageCollectionMock.makeUsageCollector).toBeCalled(); - const telemetry: TaskManagerUsage = (await collector.fetch(fetchContext)) as TaskManagerUsage; - expect(telemetry.ephemeral_tasks_enabled).toBe(true); - expect(telemetry.ephemeral_request_capacity).toBe(10); - expect(telemetry.ephemeral_stats).toMatchObject({ - status: mockHealth.stats.ephemeral?.status, - load: mockHealth.stats.ephemeral?.value.load, - executions_per_cycle: mockHealth.stats.ephemeral?.value.executionsPerCycle, - queued_tasks: mockHealth.stats.ephemeral?.value.queuedTasks, - }); - }); - it('should report telemetry on the excluded task types', async () => { const monitoringStats$ = new Subject(); const monitoringUtilization$ = new Subject(); @@ -77,8 +40,6 @@ describe('registerTaskManagerUsageCollector', () => { usageCollectionMock, monitoringStats$, monitoringUtilization$, - true, - 10, ['actions:*'] ); @@ -107,8 +68,6 @@ describe('registerTaskManagerUsageCollector', () => { usageCollectionMock, monitoringStats$, monitoringUtilization$, - true, - 10, ['actions:*'] ); @@ -146,8 +105,6 @@ describe('registerTaskManagerUsageCollector', () => { usageCollectionMock, monitoringStats$, monitoringUtilization$, - true, - 10, ['actions:*'] ); @@ -216,30 +173,6 @@ function getMockMonitoredHealth(overrides = {}): MonitoredHealth { }, }, }, - ephemeral: { - status: HealthStatus.OK, - timestamp: new Date().toISOString(), - value: { - load: { - p50: 4, - p90: 6, - p95: 6, - p99: 6, - }, - executionsPerCycle: { - p50: 4, - p90: 6, - p95: 6, - p99: 6, - }, - queuedTasks: { - p50: 4, - p90: 6, - p95: 6, - p99: 6, - }, - }, - }, runtime: { timestamp: new Date().toISOString(), status: HealthStatus.OK, @@ -263,7 +196,6 @@ function getMockMonitoredHealth(overrides = {}): MonitoredHealth { persistence: { [TaskPersistence.Recurring]: 10, [TaskPersistence.NonRecurring]: 10, - [TaskPersistence.Ephemeral]: 10, }, result_frequency_percent_as_number: {}, }, diff --git a/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.ts b/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.ts index 6c8809c5c3d98..56594be045f9c 100644 --- a/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.ts +++ b/x-pack/plugins/task_manager/server/usage/task_manager_usage_collector.ts @@ -16,8 +16,6 @@ export function createTaskManagerUsageCollector( usageCollection: UsageCollectionSetup, monitoringStats$: Observable, monitoredUtilization$: Observable, - ephemeralTasksEnabled: boolean, - ephemeralRequestCapacity: number, excludeTaskTypes: string[] ) { let lastMonitoredHealth: MonitoredHealth | null = null; @@ -37,29 +35,6 @@ export function createTaskManagerUsageCollector( }, fetch: async () => { return { - ephemeral_tasks_enabled: ephemeralTasksEnabled, - ephemeral_request_capacity: ephemeralRequestCapacity, - ephemeral_stats: { - status: lastMonitoredHealth?.stats.ephemeral?.status ?? '', - queued_tasks: { - p50: lastMonitoredHealth?.stats.ephemeral?.value.queuedTasks.p50 ?? 0, - p90: lastMonitoredHealth?.stats.ephemeral?.value.queuedTasks.p90 ?? 0, - p95: lastMonitoredHealth?.stats.ephemeral?.value.queuedTasks.p95 ?? 0, - p99: lastMonitoredHealth?.stats.ephemeral?.value.queuedTasks.p99 ?? 0, - }, - load: { - p50: lastMonitoredHealth?.stats.ephemeral?.value.load.p50 ?? 0, - p90: lastMonitoredHealth?.stats.ephemeral?.value.load.p90 ?? 0, - p95: lastMonitoredHealth?.stats.ephemeral?.value.load.p95 ?? 0, - p99: lastMonitoredHealth?.stats.ephemeral?.value.load.p99 ?? 0, - }, - executions_per_cycle: { - p50: lastMonitoredHealth?.stats.ephemeral?.value.executionsPerCycle.p50 ?? 0, - p90: lastMonitoredHealth?.stats.ephemeral?.value.executionsPerCycle.p90 ?? 0, - p95: lastMonitoredHealth?.stats.ephemeral?.value.executionsPerCycle.p95 ?? 0, - p99: lastMonitoredHealth?.stats.ephemeral?.value.executionsPerCycle.p99 ?? 0, - }, - }, task_type_exclusion: excludeTaskTypes, failed_tasks: Object.entries(lastMonitoredHealth?.stats.workload?.value.task_types!).reduce( (numb, [key, val]) => { @@ -88,29 +63,6 @@ export function createTaskManagerUsageCollector( }; }, schema: { - ephemeral_tasks_enabled: { type: 'boolean' }, - ephemeral_request_capacity: { type: 'short' }, - ephemeral_stats: { - status: { type: 'keyword' }, - queued_tasks: { - p50: { type: 'long' }, - p90: { type: 'long' }, - p95: { type: 'long' }, - p99: { type: 'long' }, - }, - load: { - p50: { type: 'long' }, - p90: { type: 'long' }, - p95: { type: 'long' }, - p99: { type: 'long' }, - }, - executions_per_cycle: { - p50: { type: 'long' }, - p90: { type: 'long' }, - p95: { type: 'long' }, - p99: { type: 'long' }, - }, - }, task_type_exclusion: { type: 'array', items: { type: 'keyword' } }, failed_tasks: { type: 'long' }, recurring_tasks: { @@ -130,16 +82,12 @@ export function registerTaskManagerUsageCollector( usageCollection: UsageCollectionSetup, monitoringStats$: Observable, monitoredUtilization$: Observable, - ephemeralTasksEnabled: boolean, - ephemeralRequestCapacity: number, excludeTaskTypes: string[] ) { const collector = createTaskManagerUsageCollector( usageCollection, monitoringStats$, monitoredUtilization$, - ephemeralTasksEnabled, - ephemeralRequestCapacity, excludeTaskTypes ); usageCollection.registerCollector(collector); diff --git a/x-pack/plugins/task_manager/server/usage/types.ts b/x-pack/plugins/task_manager/server/usage/types.ts index 0e98d1d0685a0..97e990599be82 100644 --- a/x-pack/plugins/task_manager/server/usage/types.ts +++ b/x-pack/plugins/task_manager/server/usage/types.ts @@ -7,29 +7,6 @@ export interface TaskManagerUsage { task_type_exclusion: string[]; - ephemeral_tasks_enabled: boolean; - ephemeral_request_capacity: number; - ephemeral_stats: { - status: string; - queued_tasks: { - p50: number; - p90: number; - p95: number; - p99: number; - }; - load: { - p50: number; - p90: number; - p95: number; - p99: number; - }; - executions_per_cycle: { - p50: number; - p90: number; - p95: number; - p99: number; - }; - }; failed_tasks: number; recurring_tasks: { actual_service_time: number; diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_observability.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_observability.json index d5b0514b64918..22b1e3c3071ec 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_observability.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_observability.json @@ -1,3 +1,136 @@ { - "properties": {} + "properties": { + "investigation": { + "properties": { + "investigation": { + "properties": { + "total": { + "type": "long", + "_meta": { + "description": "The total number of investigations in the cluster" + } + }, + "by_status": { + "properties": { + "triage": { + "type": "long", + "_meta": { + "description": "The number of investigations in triage status in the cluster" + } + }, + "active": { + "type": "long", + "_meta": { + "description": "The number of investigations in active status in the cluster" + } + }, + "mitigated": { + "type": "long", + "_meta": { + "description": "The number of investigations in mitigated status in the cluster" + } + }, + "resolved": { + "type": "long", + "_meta": { + "description": "The number of investigations in resolved status in the cluster" + } + }, + "cancelled": { + "type": "long", + "_meta": { + "description": "The number of investigations in cancelled status in the cluster" + } + } + } + }, + "by_origin": { + "properties": { + "alert": { + "type": "long", + "_meta": { + "description": "The number of investigations created from alerts in the cluster" + } + }, + "blank": { + "type": "long", + "_meta": { + "description": "The number of investigations created from scratch in the cluster" + } + } + } + }, + "items": { + "properties": { + "avg": { + "type": "long", + "_meta": { + "description": "The average number of items across all investigations in the cluster" + } + }, + "p90": { + "type": "long", + "_meta": { + "description": "The 90th percentile of the number of items across all investigations in the cluster" + } + }, + "p95": { + "type": "long", + "_meta": { + "description": "The 95th percentile of the number of items across all investigations in the cluster" + } + }, + "max": { + "type": "long", + "_meta": { + "description": "The maximum number of items across all investigations in the cluster" + } + }, + "min": { + "type": "long", + "_meta": { + "description": "The minimum number of items across all investigations in the cluster" + } + } + } + }, + "notes": { + "properties": { + "avg": { + "type": "long", + "_meta": { + "description": "The average number of notes across all investigations in the cluster" + } + }, + "p90": { + "type": "long", + "_meta": { + "description": "The 90th percentile of the number of notes across all investigations in the cluster" + } + }, + "p95": { + "type": "long", + "_meta": { + "description": "The 95th percentile of the number of notes across all investigations in the cluster" + } + }, + "max": { + "type": "long", + "_meta": { + "description": "The maximum number of notes across all investigations in the cluster" + } + }, + "min": { + "type": "long", + "_meta": { + "description": "The minimum number of notes across all investigations in the cluster" + } + } + } + } + } + } + } + } + } } diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_platform.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_platform.json index 06c19e82e6532..c5371a8815aef 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_platform.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_platform.json @@ -66,6 +66,62 @@ } } }, + "rollups": { + "properties": { + "index_patterns": { + "properties": { + "total": { + "type": "long", + "_meta": { + "description": "Counts all the rollup index patterns" + } + } + } + }, + "saved_searches": { + "properties": { + "total": { + "type": "long", + "_meta": { + "description": "Counts all the rollup saved searches" + } + } + } + }, + "visualizations": { + "properties": { + "saved_searches": { + "properties": { + "total": { + "type": "long", + "_meta": { + "description": "Counts all the visualizations that are based on rollup saved searches" + } + }, + "lens_total": { + "type": "long", + "_meta": { + "description": "Counts all the lens visualizations that are based on rollup saved searches" + } + } + } + }, + "total": { + "type": "long", + "_meta": { + "description": "Counts all the visualizations that are based on rollup index patterns" + } + }, + "lens_total": { + "type": "long", + "_meta": { + "description": "Counts all the lens visualizations that are based on rollup index patterns" + } + } + } + } + } + }, "transform": { "properties": { "alertRules": { diff --git a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json index 34f755702c7b1..ccdfb2a3bf647 100644 --- a/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json +++ b/x-pack/plugins/telemetry_collection_xpack/schema/xpack_plugins.json @@ -13643,138 +13643,6 @@ } } }, - "investigation": { - "properties": { - "investigation": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "The total number of investigations in the cluster" - } - }, - "by_status": { - "properties": { - "triage": { - "type": "long", - "_meta": { - "description": "The number of investigations in triage status in the cluster" - } - }, - "active": { - "type": "long", - "_meta": { - "description": "The number of investigations in active status in the cluster" - } - }, - "mitigated": { - "type": "long", - "_meta": { - "description": "The number of investigations in mitigated status in the cluster" - } - }, - "resolved": { - "type": "long", - "_meta": { - "description": "The number of investigations in resolved status in the cluster" - } - }, - "cancelled": { - "type": "long", - "_meta": { - "description": "The number of investigations in cancelled status in the cluster" - } - } - } - }, - "by_origin": { - "properties": { - "alert": { - "type": "long", - "_meta": { - "description": "The number of investigations created from alerts in the cluster" - } - }, - "blank": { - "type": "long", - "_meta": { - "description": "The number of investigations created from scratch in the cluster" - } - } - } - }, - "items": { - "properties": { - "avg": { - "type": "long", - "_meta": { - "description": "The average number of items across all investigations in the cluster" - } - }, - "p90": { - "type": "long", - "_meta": { - "description": "The 90th percentile of the number of items across all investigations in the cluster" - } - }, - "p95": { - "type": "long", - "_meta": { - "description": "The 95th percentile of the number of items across all investigations in the cluster" - } - }, - "max": { - "type": "long", - "_meta": { - "description": "The maximum number of items across all investigations in the cluster" - } - }, - "min": { - "type": "long", - "_meta": { - "description": "The minimum number of items across all investigations in the cluster" - } - } - } - }, - "notes": { - "properties": { - "avg": { - "type": "long", - "_meta": { - "description": "The average number of notes across all investigations in the cluster" - } - }, - "p90": { - "type": "long", - "_meta": { - "description": "The 90th percentile of the number of notes across all investigations in the cluster" - } - }, - "p95": { - "type": "long", - "_meta": { - "description": "The 95th percentile of the number of notes across all investigations in the cluster" - } - }, - "max": { - "type": "long", - "_meta": { - "description": "The maximum number of notes across all investigations in the cluster" - } - }, - "min": { - "type": "long", - "_meta": { - "description": "The minimum number of notes across all investigations in the cluster" - } - } - } - } - } - } - } - }, "kibana_settings": { "properties": { "xpack": { @@ -14973,62 +14841,6 @@ } } }, - "rollups": { - "properties": { - "index_patterns": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "Counts all the rollup index patterns" - } - } - } - }, - "saved_searches": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "Counts all the rollup saved searches" - } - } - } - }, - "visualizations": { - "properties": { - "saved_searches": { - "properties": { - "total": { - "type": "long", - "_meta": { - "description": "Counts all the visualizations that are based on rollup saved searches" - } - }, - "lens_total": { - "type": "long", - "_meta": { - "description": "Counts all the lens visualizations that are based on rollup saved searches" - } - } - } - }, - "total": { - "type": "long", - "_meta": { - "description": "Counts all the visualizations that are based on rollup index patterns" - } - }, - "lens_total": { - "type": "long", - "_meta": { - "description": "Counts all the lens visualizations that are based on rollup index patterns" - } - } - } - } - } - }, "saved_objects_tagging": { "properties": { "usedTags": { @@ -20000,67 +19812,6 @@ }, "task_manager": { "properties": { - "ephemeral_tasks_enabled": { - "type": "boolean" - }, - "ephemeral_request_capacity": { - "type": "short" - }, - "ephemeral_stats": { - "properties": { - "status": { - "type": "keyword" - }, - "queued_tasks": { - "properties": { - "p50": { - "type": "long" - }, - "p90": { - "type": "long" - }, - "p95": { - "type": "long" - }, - "p99": { - "type": "long" - } - } - }, - "load": { - "properties": { - "p50": { - "type": "long" - }, - "p90": { - "type": "long" - }, - "p95": { - "type": "long" - }, - "p99": { - "type": "long" - } - } - }, - "executions_per_cycle": { - "properties": { - "p50": { - "type": "long" - }, - "p90": { - "type": "long" - }, - "p95": { - "type": "long" - }, - "p99": { - "type": "long" - } - } - } - } - }, "task_type_exclusion": { "type": "array", "items": { diff --git a/x-pack/plugins/threat_intelligence/README.md b/x-pack/plugins/threat_intelligence/README.md deleted file mode 100755 index 777e932f6d95a..0000000000000 --- a/x-pack/plugins/threat_intelligence/README.md +++ /dev/null @@ -1,91 +0,0 @@ -# Threat Intelligence - -Elastic Threat Intelligence makes it easy to analyze and investigate potential security threats by aggregating data from multiple sources in one place. You’ll be able to view data from all activated threat intelligence feeds and take action. - -### Where to find the UI for this plugin? - -The Threat Intelligence UI is displayed in Kibana Security, under the Explore section. - -## Development setup - -### Kibana development in general - -Best source - [internal Kibana docs](https://docs.elastic.dev/kibana-dev-docs/getting-started/welcome). If you have any issues with setting up your Kibana dev environment [#kibana](https://elastic.slack.com/archives/C0D8P2XK5) Slack channel is a good way to get help. - -### Essential `kibana.yml` settings - -You can make a copy of `kibana.yml` file into `kibana.dev.yml` and make adjustments to the settings. External documentation on the flags available is [here](https://www.elastic.co/guide/en/kibana/current/settings.html) - -It is recommended to set `server.basePath: "/kbn"` to make you local instance persist the base Kibana path. If you don't do it, the base path will be a random string every time you start Kibana. Any other value than `/kbn` will also work. - -### Getting Threat Intelligence feeds data into Kibana - -There are many ways to get data for you local development. We first focus on getting Threat Intelligence data specifically. - -### Setting up filebeat threatintel integrations locally - -1. install [mage](https://github.com/magefile/mage). It is a Go build tool used to build `beats`. Installation from the sources requires Go lang set up. A simpler option might be to install it from a package manager available in your system (eg. `brew` on MacOs) or use their [binary distribution](https://github.com/magefile/mage/releases) -1. start Elasticsearch and Kibana -1. clone [beats](https://github.com/elastic/beats) repository -1. inside beats repository, update `x-pack/filebeat/filebeat.yml` with your local Elasticsearch and Kibana connection configs - - ``` - output.elasticsearch: - hosts: ["localhost:9200"] - username: "elastic" - password: "changeme" - - setup.kibana: - host: "localhost:5601" // make sure to run Kibana with --no-base-path option or specify server.basePath in Kibana config and use it here as a path, eg. localhost:5601/kbn - ``` - -1. go into `x-pack/filebeat` (that's where security related modules live) -1. build filebeat `mage build` -1. enable `threatintel` module by running `./filebeat modules enable threatintel` -1. enable specific Threat Intelligence integrations by updating `modules.d/threatintel.yml`. Update `enable` to `true` in every integration you want to enable and configs specific for these integrations. The bare minimum is to enable Abuse.CH feeds `abuseurl`, `abusemalware` and `malwarebazaar`. -1. run `./filebeat setup -E setup.dashboards.directory=build/kibana` to set up predefined dashboards -1. run `./filebeat -e` to start filebeat -1. to validate that the set up works, wait for some Threat Intel data to be ingested and then go in Analytics > Discover in your local Kibana to search `event.category : threat and event.type : indicator`. You should see some documents returned by this search. Abuse.CH feeds are up to date so you should see the results from the last 7 days. - -### More ways to get data - -There are many more tools available for getting the data for testing or local development, depending on the data type and usecase. - -- Kibana development docs > [Add data](https://docs.elastic.dev/kibana-dev-docs/getting-started/sample-data) -- [Dev/Design/Testing Environments and Frameworks](https://docs.google.com/document/d/1DGCcLMnVKQ_STlkbS4E0m4kbPivNtR8iMlg_IoCuCEw/edit#) gathered by Security Engineering Productivity team - -### Generate fixtures for local testing - -You can generate large volumes of threat indicators on demand with the following script: - -``` -node scripts/generate_indicators.js -``` - -see the file in order to adjust the amount of indicators generated. The default is one million. - -## E2E - -### Running locally - -Cypress tests are integrated with the Security Solution ones. Please refer to https://github.com/elastic/kibana/blob/main/x-pack/test/security_solution_cypress/cypress/README.md for more information - -## FAQ - -### How is the Threat Intelligence code loaded in Kibana? - -The Threat Intelligence plugin is loaded lazily within the [security_solution](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution) plugin, -from `x-pack/plugins/security_solution/public/threat_intelligence` owned by the Threat Hunting Investigations Team. - -## QA and demo for implemented features - -One way to QA and demo the feature merged into `main` branch is to run the latest `main` locally. -Another option is to deploy a Staging instance. For Staging environment snapshots are being build every night with the latest state of the `main` branch. More documentation can be found [here](https://cloud.elastic.dev/environments/Staging/#automatic-termination-of-staging-deployments) - -## Contributing - -See [CONTRIBUTING.md](https://github.com/elastic/kibana/blob/main/x-pack/plugins/threat_intelligence/CONTRIBUTING.md) for information on contributing. - -## Issues - -Please report any issues in [this GitHub project](https://github.com/orgs/elastic/projects/758/). \ No newline at end of file diff --git a/x-pack/plugins/threat_intelligence/jest.config.js b/x-pack/plugins/threat_intelligence/jest.config.js deleted file mode 100644 index 8c8711ba5089c..0000000000000 --- a/x-pack/plugins/threat_intelligence/jest.config.js +++ /dev/null @@ -1,12 +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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../../', - roots: ['/x-pack/plugins/threat_intelligence'], -}; diff --git a/x-pack/plugins/threat_intelligence/tsconfig.json b/x-pack/plugins/threat_intelligence/tsconfig.json deleted file mode 100644 index 21109d1624813..0000000000000 --- a/x-pack/plugins/threat_intelligence/tsconfig.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - "scripts/**/*", - "public/**/*.json", - "server/**/*.json", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/cases-plugin", - "@kbn/timelines-plugin", - "@kbn/core", - "@kbn/data-plugin", - "@kbn/unified-search-plugin", - "@kbn/triggers-actions-ui-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/i18n-react", - "@kbn/data-views-plugin", - "@kbn/es-query", - "@kbn/rule-registry-plugin", - "@kbn/inspector-plugin", - "@kbn/shared-ux-page-kibana-template-types", - "@kbn/doc-links", - "@kbn/i18n", - "@kbn/kibana-react-plugin", - "@kbn/utility-types", - "@kbn/ui-theme", - "@kbn/securitysolution-io-ts-list-types", - "@kbn/core-ui-settings-browser", - "@kbn/search-types" - ], - "exclude": ["target/**/*"] -} diff --git a/x-pack/plugins/timelines/jest.config.js b/x-pack/plugins/timelines/jest.config.js deleted file mode 100644 index d26134d924e1d..0000000000000 --- a/x-pack/plugins/timelines/jest.config.js +++ /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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/x-pack/plugins/timelines'], - coverageDirectory: '/target/kibana-coverage/jest/x-pack/plugins/timelines', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['/x-pack/plugins/timelines/{common,public,server}/**/*.{ts,tsx}'], -}; diff --git a/x-pack/plugins/timelines/server/index.ts b/x-pack/plugins/timelines/server/index.ts deleted file mode 100644 index 929be7a34ab42..0000000000000 --- a/x-pack/plugins/timelines/server/index.ts +++ /dev/null @@ -1,42 +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 { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; -import { schema } from '@kbn/config-schema'; -import { ConfigSchema } from './config'; - -export async function plugin(initializerContext: PluginInitializerContext) { - const { TimelinesPlugin } = await import('./plugin'); - return new TimelinesPlugin(initializerContext); -} - -export type { TimelinesPluginUI, TimelinesPluginStart } from './types'; - -const configSchema = schema.object({ - /** - * For internal use. A list of string values (comma delimited) that will enable experimental - * type of functionality that is not yet released. Valid values for this settings need to - * be defined in: - * `x-pack/plugins/timelines/common/experimental_features.ts` - * under the `allowedExperimentalValues` object - * - * @example - * xpack.timelines.enableExperimental: - * - someCrazyFeature - * - someEvenCrazierFeature - */ - enableExperimental: schema.arrayOf(schema.string(), { - defaultValue: () => [], - }), -}); - -export const config: PluginConfigDescriptor = { - exposeToBrowser: { - enableExperimental: true, - }, - schema: configSchema, -}; diff --git a/x-pack/plugins/timelines/tsconfig.json b/x-pack/plugins/timelines/tsconfig.json deleted file mode 100644 index 7a317bdd75037..0000000000000 --- a/x-pack/plugins/timelines/tsconfig.json +++ /dev/null @@ -1,47 +0,0 @@ - -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types" - }, - "include": [ - "common/**/*", - "public/**/*", - "server/**/*", - // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 - "server/**/*.json", - "public/**/*.json", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/data-plugin", - "@kbn/cases-plugin", - "@kbn/alerting-plugin", - "@kbn/utility-types", - "@kbn/es-query", - "@kbn/securitysolution-ecs", - "@kbn/securitysolution-t-grid", - "@kbn/rule-data-utils", - "@kbn/rule-registry-plugin", - "@kbn/data-views-plugin", - "@kbn/kibana-react-plugin", - "@kbn/kibana-utils-plugin", - "@kbn/ui-theme", - "@kbn/i18n-react", - "@kbn/i18n", - "@kbn/security-plugin", - "@kbn/safer-lodash-set", - "@kbn/alerts-as-data-utils", - "@kbn/logging", - "@kbn/search-errors", - "@kbn/search-types", - "@kbn/react-kibana-mount", - "@kbn/field-formats-plugin", - "@kbn/config-schema", - "@kbn/zod" - ], - "exclude": [ - "target/**/*" - ] -} diff --git a/x-pack/plugins/triggers_actions_ui/.storybook/decorator.tsx b/x-pack/plugins/triggers_actions_ui/.storybook/decorator.tsx index 233b673353929..8947cf9f6bbe8 100644 --- a/x-pack/plugins/triggers_actions_ui/.storybook/decorator.tsx +++ b/x-pack/plugins/triggers_actions_ui/.storybook/decorator.tsx @@ -50,6 +50,8 @@ const notifications: NotificationsStart = { showErrorDialog: () => {}, }; +const userProfile = { getUserProfile$: () => of(null) }; + export const StorybookContextDecorator: FC> = ( props ) => { @@ -75,7 +77,7 @@ export const StorybookContextDecorator: FC - + { }; export const App = ({ deps }: { deps: TriggersAndActionsUiServices }) => { - const { dataViews, i18n, theme } = deps; + const { dataViews } = deps; setDataViewsService(dataViews); return ( - + diff --git a/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx b/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx index 8fe0d9745d1c2..f00db5879120b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx @@ -73,13 +73,13 @@ export const renderApp = (deps: TriggersAndActionsUiServices) => { }; export const App = ({ deps }: { deps: TriggersAndActionsUiServices }) => { - const { dataViews, i18n, theme } = deps; + const { dataViews } = deps; const sections: Section[] = ['connectors', 'logs']; const sectionsRegex = sections.join('|'); setDataViewsService(dataViews); return ( - + diff --git a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx index b1d69c89094e9..c07cc9ac770d2 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx @@ -65,6 +65,7 @@ export function useBulkEditResponse(props: UseBulkEditResponseProps) { const { i18n: i18nStart, theme, + userProfile, notifications: { toasts }, } = useKibana().services; @@ -124,7 +125,11 @@ export function useBulkEditResponse(props: UseBulkEditResponseProps) { if (numberOfErrors === total) { toasts.addDanger({ title: failureMessage(numberOfErrors, translationMap[property]), - text: toMountPoint(renderToastErrorBody(response), { i18n: i18nStart, theme }), + text: toMountPoint(renderToastErrorBody(response), { + i18n: i18nStart, + theme, + userProfile, + }), }); return; } @@ -132,10 +137,10 @@ export function useBulkEditResponse(props: UseBulkEditResponseProps) { // Some failure toasts.addWarning({ title: someSuccessMessage(numberOfSuccess, numberOfErrors, translationMap[property]), - text: toMountPoint(renderToastErrorBody(response), { i18n: i18nStart, theme }), + text: toMountPoint(renderToastErrorBody(response), { i18n: i18nStart, theme, userProfile }), }); }, - [i18nStart, theme, toasts, renderToastErrorBody] + [i18nStart, theme, userProfile, toasts, renderToastErrorBody] ); return useMemo(() => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx index 88ad5c8f52958..8d2d8d98b1155 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx @@ -50,6 +50,7 @@ export const useBulkOperationToast = ({ const { i18n, theme, + userProfile, notifications: { toasts }, } = useKibana().services; @@ -122,7 +123,7 @@ export const useBulkOperationToast = ({ SINGLE_RULE_TITLE, MULTIPLE_RULE_TITLE ), - text: toMountPoint(renderToastErrorBody(errors, 'danger'), { i18n, theme }), + text: toMountPoint(renderToastErrorBody(errors, 'danger'), { i18n, theme, userProfile }), }); return; } @@ -135,10 +136,10 @@ export const useBulkOperationToast = ({ SINGLE_RULE_TITLE, MULTIPLE_RULE_TITLE ), - text: toMountPoint(renderToastErrorBody(errors, 'warning'), { i18n, theme }), + text: toMountPoint(renderToastErrorBody(errors, 'warning'), { i18n, theme, userProfile }), }); }, - [i18n, theme, toasts, renderToastErrorBody] + [i18n, theme, userProfile, toasts, renderToastErrorBody] ); return useMemo(() => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/rules_app.tsx b/x-pack/plugins/triggers_actions_ui/public/application/rules_app.tsx index 8550518edb457..2477d9d95c4b4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/rules_app.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/rules_app.tsx @@ -101,13 +101,13 @@ export const renderApp = (deps: TriggersAndActionsUiServices) => { }; export const App = ({ deps }: { deps: TriggersAndActionsUiServices }) => { - const { dataViews, i18n, theme } = deps; + const { dataViews } = deps; const sections: Section[] = ['rules', 'logs']; const sectionsRegex = sections.join('|'); setDataViewsService(dataViews); return ( - + diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connectors_selection.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connectors_selection.test.tsx index afb483b70f007..5fdd96611d718 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connectors_selection.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/connectors_selection.test.tsx @@ -94,7 +94,7 @@ describe('connectors_selection', () => { it('renders a selector', () => { const wrapper = mountWithIntl( - + { it('renders the title of the connector', () => { render( - + { const renderModalInspectQuery = () => { const theme = { theme$: of({ darkMode: false, name: 'amsterdam' }) }; + const userProfile = userProfileServiceMock.createStart(); return render(, { wrapper: ({ children }) => ( - {children} + + {children} + ), }); }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx index da1bd753af9b2..767b7cf70b9bb 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx @@ -108,6 +108,7 @@ export const RuleDetails: React.FunctionComponent = ({ http, i18n: i18nStart, theme, + userProfile, notifications: { toasts }, } = useKibana().services; @@ -223,7 +224,7 @@ export const RuleDetails: React.FunctionComponent = ({
)} , - { i18n: i18nStart, theme } + { i18n: i18nStart, theme, userProfile } ), }); } @@ -232,6 +233,7 @@ export const RuleDetails: React.FunctionComponent = ({ }, [ i18nStart, theme, + userProfile, rule.schedule.interval, config.minimumScheduleInterval, toasts, diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx index 99a9e0761eb9e..419f4c7696379 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx @@ -132,9 +132,8 @@ const RuleAdd = < http, notifications: { toasts }, application: { capabilities }, - i18n: i18nStart, - theme, isServerless, + ...startServices } = useKibana().services; const canShowActions = hasShowActionsCapability(capabilities); @@ -284,7 +283,7 @@ const RuleAdd = < ...(message.details && { text: toMountPoint( {message.details}, - { i18n: i18nStart, theme } + startServices ), }), }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx index 3400f8c5270f6..5d1337063948d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx @@ -140,9 +140,8 @@ export const RuleEdit = < const { http, notifications: { toasts }, - i18n: i18nStart, - theme, isServerless, + ...startServices } = useKibana().services; const setRule = (value: Rule) => { @@ -238,7 +237,7 @@ export const RuleEdit = < ...(message.details && { text: toMountPoint( {message.details}, - { i18n: i18nStart, theme } + startServices ), }), }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form_route.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form_route.tsx index f0ecb56d0bc87..bfa4bccd49405 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form_route.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form_route.tsx @@ -17,8 +17,6 @@ import { getCurrentDocTitle } from '../../lib/doc_title'; export const RuleFormRoute = () => { const { http, - i18n, - theme, application, notifications, charts, @@ -31,6 +29,7 @@ export const RuleFormRoute = () => { actionTypeRegistry, chrome, setBreadcrumbs, + ...startServices } = useKibana().services; const location = useLocation<{ returnApp?: string; returnPath?: string }>(); @@ -64,8 +63,6 @@ export const RuleFormRoute = () => { { docLinks, ruleTypeRegistry, actionTypeRegistry, + ...startServices, }} onCancel={() => { if (returnApp && returnPath) { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx index 6ad7d525c3507..27f05487fb6e6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx @@ -63,6 +63,7 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ notifications: { toasts }, i18n: i18nStart, theme, + userProfile, } = useKibana().services; const [isUpdating, setIsUpdating] = useState(false); @@ -86,12 +87,12 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ ...(message.details && { text: toMountPoint( {message.details}, - { i18n: i18nStart, theme } + { i18n: i18nStart, theme, userProfile } ), }), }); throw new Error(); - }, [i18nStart, theme, enableRule, toasts]); + }, [i18nStart, theme, userProfile, enableRule, toasts]); const onEnable = useCallback(async () => { setIsUpdating(true); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx index f8a01e6f47f25..f956a16d3d236 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx @@ -1382,7 +1382,8 @@ describe('rules_list with show only capability', () => { }); }); -describe('MaintenanceWindowsMock', () => { +// FLAKY: https://github.com/elastic/kibana/issues/203179 +describe.skip('MaintenanceWindowsMock', () => { beforeEach(() => { fetchActiveMaintenanceWindowsMock.mockResolvedValue([]); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx index d1d1ce4fe6a3b..b827307cecdf6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx @@ -196,8 +196,7 @@ export const RulesList = ({ kibanaFeatures, notifications: { toasts }, ruleTypeRegistry, - i18n: i18nStart, - theme, + ...startServices } = kibanaServices; const canExecuteActions = hasExecuteActionsCapability(capabilities); @@ -715,7 +714,7 @@ export const RulesList = ({ title: parsedError.summary, text: toMountPoint( {parsedError.details}, - { theme, i18n: i18nStart } + startServices ), }); } else { diff --git a/x-pack/plugins/triggers_actions_ui/server/data/routes/indices.ts b/x-pack/plugins/triggers_actions_ui/server/data/routes/indices.ts index 53c72a77d6385..ddca5d8f1dd6b 100644 --- a/x-pack/plugins/triggers_actions_ui/server/data/routes/indices.ts +++ b/x-pack/plugins/triggers_actions_ui/server/data/routes/indices.ts @@ -6,7 +6,7 @@ */ // the business logic of this code is from watcher, in: -// x-pack/plugins/watcher/server/routes/api/indices/register_get_route.ts +// x-pack/platform/plugins/private/watcher/server/routes/api/indices/register_get_route.ts const MAX_INDICES = 20; diff --git a/x-pack/plugins/triggers_actions_ui/tsconfig.json b/x-pack/plugins/triggers_actions_ui/tsconfig.json index 7b947f560db85..7004ad1b1b08c 100644 --- a/x-pack/plugins/triggers_actions_ui/tsconfig.json +++ b/x-pack/plugins/triggers_actions_ui/tsconfig.json @@ -73,7 +73,8 @@ "@kbn/observability-alerting-rule-utils", "@kbn/core-application-browser", "@kbn/cloud-plugin", - "@kbn/response-ops-rule-form" + "@kbn/response-ops-rule-form", + "@kbn/core-user-profile-browser-mocks" ], "exclude": ["target/**/*"] } diff --git a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecation_logs/es_deprecation_logs.test.tsx b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecation_logs/es_deprecation_logs.test.tsx index 29600c855dcbf..fe41b89de3e0e 100644 --- a/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecation_logs/es_deprecation_logs.test.tsx +++ b/x-pack/plugins/upgrade_assistant/__jest__/client_integration/es_deprecation_logs/es_deprecation_logs.test.tsx @@ -18,12 +18,10 @@ import { APPS_WITH_DEPRECATION_LOGS, DEPRECATION_LOGS_ORIGIN_FIELD, } from '../../../common/constants'; -import { stringifySearchParams } from '../helpers/app_context.mock'; // Once the logs team register the kibana locators in their app, we should be able // to remove this mock and follow a similar approach to how discover link is tested. // See: https://github.com/elastic/kibana/issues/104855 -const MOCKED_TIME = '2021-09-05T10:49:01.805Z'; jest.mock('../../../public/application/lib/logs_checkpoint', () => { const originalModule = jest.requireActual('../../../public/application/lib/logs_checkpoint'); @@ -157,40 +155,6 @@ describe('ES deprecation logs', () => { httpRequestsMockHelpers.setLoadDeprecationLoggingResponse(getLoggingResponse(true)); }); - test('Has a link to see logs in observability app', async () => { - await act(async () => { - testBed = await setupESDeprecationLogsPage(httpSetup, { - http: { - basePath: { - prepend: (url: string) => url, - }, - }, - }); - }); - - const { component, exists, find } = testBed; - - component.update(); - - expect(exists('viewObserveLogs')).toBe(true); - const locatorParams = stringifySearchParams({ - id: DEPRECATION_LOGS_INDEX, - timeRange: { - from: MOCKED_TIME, - to: 'now', - }, - query: { - language: 'kuery', - query: `not ${DEPRECATION_LOGS_ORIGIN_FIELD} : (${APPS_WITH_DEPRECATION_LOGS.join( - ' or ' - )})`, - }, - }); - const href = find('viewObserveLogs').props().href; - expect(href).toContain('logsExplorerUrl'); - expect(href).toContain(locatorParams); - }); - test('Has a link to see logs in discover app', async () => { await act(async () => { testBed = await setupESDeprecationLogsPage(httpSetup); diff --git a/x-pack/plugins/upgrade_assistant/common/types.ts b/x-pack/plugins/upgrade_assistant/common/types.ts index 781e4865ee568..54b175a428512 100644 --- a/x-pack/plugins/upgrade_assistant/common/types.ts +++ b/x-pack/plugins/upgrade_assistant/common/types.ts @@ -121,8 +121,8 @@ export interface ReindexOperation { export type ReindexSavedObject = SavedObject; -// 7.0 -> 8.0 warnings -export type ReindexWarningTypes = 'customTypeName' | 'indexSetting' | 'replaceIndexWithAlias'; +// 8.0 -> 9.0 warnings +export type ReindexWarningTypes = 'indexSetting' | 'replaceIndexWithAlias'; export interface ReindexWarning { warningType: ReindexWarningTypes; @@ -130,8 +130,6 @@ export interface ReindexWarning { * Optional metadata for deprecations * * @remark - * For example, for the "customTypeName" deprecation, - * we want to surface the typeName to the user. * For "indexSetting" we want to surface the deprecated settings. */ meta?: { diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx index c96a17ed9e2ee..aef1dbfc0087c 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx @@ -10,23 +10,15 @@ import { buildPhrasesFilter, PhrasesFilter } from '@kbn/es-query'; import { FormattedMessage } from '@kbn/i18n-react'; import { METRIC_TYPE } from '@kbn/analytics'; -import { EuiLink, EuiFlexGroup, EuiFlexItem, EuiSpacer, EuiPanel, EuiText } from '@elastic/eui'; +import { EuiLink, EuiSpacer, EuiText } from '@elastic/eui'; import { DataView } from '@kbn/data-views-plugin/common'; -import { - OBS_LOGS_EXPLORER_DATA_VIEW_LOCATOR_ID, - ObsLogsExplorerDataViewLocatorParams, -} from '@kbn/deeplinks-observability'; import { APPS_WITH_DEPRECATION_LOGS, DEPRECATION_LOGS_ORIGIN_FIELD, } from '../../../../../common/constants'; import { DataPublicPluginStart } from '../../../../shared_imports'; import { useAppContext } from '../../../app_context'; -import { - uiMetricService, - UIM_OBSERVABILITY_CLICK, - UIM_DISCOVER_CLICK, -} from '../../../lib/ui_metric'; +import { uiMetricService, UIM_DISCOVER_CLICK } from '../../../lib/ui_metric'; import { DEPRECATION_LOGS_INDEX_PATTERN } from '../../../../../common/constants'; @@ -129,48 +121,6 @@ const DiscoverAppLink: FunctionComponent = ({ checkpoint, deprecationData ); }; -const ObservabilityAppLink: FunctionComponent = ({ checkpoint, deprecationDataView }) => { - const { - plugins: { - share: { url }, - }, - } = useAppContext(); - - const logsLocator = url.locators.get( - OBS_LOGS_EXPLORER_DATA_VIEW_LOCATOR_ID - )!; - - if (!deprecationDataView.id) return null; - - const logsUrl = logsLocator.getRedirectUrl({ - id: deprecationDataView.id, - timeRange: { - from: checkpoint, - to: 'now', - }, - query: { - language: 'kuery', - query: `not ${DEPRECATION_LOGS_ORIGIN_FIELD} : (${APPS_WITH_DEPRECATION_LOGS.join(' or ')})`, - }, - }); - - return ( - // eslint-disable-next-line @elastic/eui/href-or-on-click - { - uiMetricService.trackUiMetric(METRIC_TYPE.CLICK, UIM_OBSERVABILITY_CLICK); - }} - data-test-subj="viewObserveLogs" - > - - - ); -}; - export const ExternalLinks: FunctionComponent> = ({ checkpoint, }) => { @@ -190,42 +140,19 @@ export const ExternalLinks: FunctionComponent }, [dataService, checkpoint, share.url.locators]); return ( - - - - -

- -

-
- - {deprecationDataView ? ( - - ) : null} -
-
- - - -

- -

-
- - {deprecationDataView ? ( - - ) : null} -
-
-
+ <> + +

+ +

+
+ + {deprecationDataView ? ( + + ) : null} + ); }; diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step.test.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step.test.tsx index eedb05e8b809a..7c6f7d554082a 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step.test.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step.test.tsx @@ -52,12 +52,6 @@ describe('WarningsFlyoutStep', () => { const defaultPropsWithWarnings = { ...defaultProps, warnings: [ - { - warningType: 'customTypeName', - meta: { - typeName: 'my_mapping_type', - }, - }, { warningType: 'indexSetting', meta: { @@ -76,9 +70,7 @@ describe('WarningsFlyoutStep', () => { button.simulate('click'); expect(defaultPropsWithWarnings.continueReindex).not.toHaveBeenCalled(); - // first warning (customTypeName) - wrapper.find(`input#${idForWarning(0)}`).simulate('change'); - // second warning (indexSetting) + // first warning (indexSetting) wrapper.find(`input#${idForWarning(1)}`).simulate('change'); button.simulate('click'); diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step_checkbox.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step_checkbox.tsx index 7782d47fc5cc0..27bfdc6256781 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step_checkbox.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warning_step_checkbox.tsx @@ -82,42 +82,6 @@ export interface WarningCheckboxProps { meta?: ReindexWarning['meta']; } -export const CustomTypeNameWarningCheckbox: React.FunctionComponent = ({ - isChecked, - onChange, - docLinks, - id, - meta, -}) => { - return ( - {meta!.typeName as string}, - defaultType: _doc, - }} - /> - } - description={ - {meta!.typeName as string}, - }} - /> - } - documentationUrl={docLinks.elasticsearch.typesRemoval} - /> - ); -}; - export const DeprecatedSettingWarningCheckbox: React.FunctionComponent = ({ isChecked, onChange, diff --git a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warnings_step.tsx b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warnings_step.tsx index 0de8449a7cc7e..d3ed1d0c16387 100644 --- a/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warnings_step.tsx +++ b/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/warnings_step.tsx @@ -27,7 +27,6 @@ import { } from '../../../../../../../common/types'; import { useAppContext } from '../../../../../app_context'; import { - CustomTypeNameWarningCheckbox, DeprecatedSettingWarningCheckbox, ReplaceIndexWithAliasWarningCheckbox, WarningCheckboxProps, @@ -40,7 +39,6 @@ interface CheckedIds { const warningToComponentMap: { [key in ReindexWarningTypes]: React.FunctionComponent; } = { - customTypeName: CustomTypeNameWarningCheckbox, indexSetting: DeprecatedSettingWarningCheckbox, replaceIndexWithAlias: ReplaceIndexWithAliasWarningCheckbox, }; diff --git a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.test.ts b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.test.ts index 4f58c1a2ea024..685bc443c324c 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.test.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.test.ts @@ -182,71 +182,5 @@ describe('transformFlatSettings', () => { }) ).toEqual([]); }); - - if (currentMajor === 7) { - describe('[7.x] customTypeName warning', () => { - it('returns customTypeName warning for non-_doc mapping types', () => { - expect( - getReindexWarnings({ - settings: {}, - mappings: { doc: {} }, - }) - ).toEqual([ - { - warningType: 'customTypeName', - meta: { - typeName: 'doc', - }, - }, - ]); - }); - it('does not return customTypeName warning for _doc mapping types', () => { - expect( - getReindexWarnings({ - settings: {}, - mappings: { _doc: {} }, - }) - ).toEqual([]); - }); - }); - - describe('[7.x] deprecatedSetting warning', () => { - it('returns deprecatedSetting warning for deprecated index settings', () => { - expect( - getReindexWarnings({ - settings: { - // Deprecated settings - 'index.force_memory_term_dictionary': '1024', - 'index.max_adjacency_matrix_filters': 'true', - 'index.soft_deletes.enabled': 'true', - }, - mappings: {}, - }) - ).toEqual([ - { - warningType: 'indexSetting', - meta: { - deprecatedSettings: [ - 'index.force_memory_term_dictionary', - 'index.max_adjacency_matrix_filters', - 'index.soft_deletes.enabled', - ], - }, - }, - ]); - }); - - it('does not return a deprecatedSetting warning for there are no deprecated index settings', () => { - expect( - getReindexWarnings({ - settings: { - 'index.number_of_replicas': '1', - }, - mappings: {}, - }) - ).toEqual([]); - }); - }); - } }); }); diff --git a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.ts b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.ts index 96d14bac8d63c..3344ecde4ab69 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/index_settings.ts @@ -8,7 +8,7 @@ import { flow, omit } from 'lodash'; import { ReindexWarning } from '../../../common/types'; import { versionService } from '../version'; -import { FlatSettings, FlatSettingsWithTypeName } from './types'; +import { FlatSettings } from './types'; export interface ParsedIndexName { cleanIndexName: string; baseName: string; @@ -75,27 +75,8 @@ export const generateNewIndexName = (indexName: string): string => { : `${currentVersion}-${sourceName}`; }; -export const getCustomTypeWarning = ( - flatSettings: FlatSettingsWithTypeName | FlatSettings -): ReindexWarning | undefined => { - const DEFAULT_TYPE_NAME = '_doc'; - // In 7+, it's not possible to have more than one type, - // so always grab the first (and only) key. - const typeName = Object.getOwnPropertyNames(flatSettings.mappings)[0]; - const typeNameWarning = Boolean(typeName && typeName !== DEFAULT_TYPE_NAME); - - if (typeNameWarning) { - return { - warningType: 'customTypeName', - meta: { - typeName, - }, - }; - } -}; - export const getDeprecatedSettingWarning = ( - flatSettings: FlatSettingsWithTypeName | FlatSettings + flatSettings: FlatSettings ): ReindexWarning | undefined => { const { settings } = flatSettings; @@ -131,19 +112,12 @@ export const getDeprecatedSettingWarning = ( * Returns an array of warnings that should be displayed to user before reindexing begins. * @param flatSettings */ -export const getReindexWarnings = ( - flatSettings: FlatSettingsWithTypeName | FlatSettings -): ReindexWarning[] => { +export const getReindexWarnings = (flatSettings: FlatSettings): ReindexWarning[] => { const warnings = [] as ReindexWarning[]; - if (versionService.getMajorVersion() === 7) { - const customTypeWarning = getCustomTypeWarning(flatSettings); + if (versionService.getMajorVersion() === 8) { const deprecatedSettingWarning = getDeprecatedSettingWarning(flatSettings); - if (customTypeWarning) { - warnings.push(customTypeWarning); - } - if (deprecatedSettingWarning) { warnings.push(deprecatedSettingWarning); } diff --git a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_actions.ts b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_actions.ts index 01c73bf85765b..ce588e8bdb47a 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_actions.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_actions.ts @@ -20,9 +20,8 @@ import { ReindexStatus, ReindexStep, } from '../../../common/types'; -import { versionService } from '../version'; import { generateNewIndexName } from './index_settings'; -import { FlatSettings, FlatSettingsWithTypeName } from './types'; +import { FlatSettings } from './types'; // TODO: base on elasticsearch.requestTimeout? export const LOCK_WINDOW = moment.duration(90, 'seconds'); @@ -80,10 +79,7 @@ export interface ReindexActions { * Retrieve index settings (in flat, dot-notation style) and mappings. * @param indexName */ - getFlatSettings( - indexName: string, - withTypeName?: boolean - ): Promise; + getFlatSettings(indexName: string): Promise; } export const reindexActionsFactory = ( @@ -208,23 +204,10 @@ export const reindexActionsFactory = ( }, async getFlatSettings(indexName: string) { - let flatSettings; - - if (versionService.getMajorVersion() === 7) { - // On 7.x, we need to get index settings with mapping type - flatSettings = await esClient.indices.get({ - index: indexName, - flat_settings: true, - // This @ts-ignore is needed on master since the flag is deprecated on >7.x - // @ts-ignore - include_type_name: true, - }); - } else { - flatSettings = await esClient.indices.get({ - index: indexName, - flat_settings: true, - }); - } + const flatSettings = await esClient.indices.get({ + index: indexName, + flat_settings: true, + }); if (!flatSettings[indexName]) { return null; diff --git a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/types.ts b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/types.ts index 8d600849987db..09449413dabc1 100644 --- a/x-pack/plugins/upgrade_assistant/server/lib/reindexing/types.ts +++ b/x-pack/plugins/upgrade_assistant/server/lib/reindexing/types.ts @@ -26,14 +26,3 @@ export interface FlatSettings { _meta?: MetaProperties; }; } - -// Specific to 7.x-8 upgrade -export interface FlatSettingsWithTypeName { - settings: estypes.IndicesIndexState['settings']; - mappings?: { - [typeName: string]: { - properties?: MappingProperties; - _meta?: MetaProperties; - }; - }; -} diff --git a/x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/reindex_indices.test.ts b/x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/reindex_indices.test.ts index bb3ccaeb8b125..b02dd08f841d3 100644 --- a/x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/reindex_indices.test.ts +++ b/x-pack/plugins/upgrade_assistant/server/routes/reindex_indices/reindex_indices.test.ts @@ -94,9 +94,9 @@ describe('reindex API', () => { }); mockReindexService.detectReindexWarnings.mockResolvedValueOnce([ { - warningType: 'customTypeName', + warningType: 'indexSetting', meta: { - typeName: 'my_mapping_type', + settingA: 'deprecated', }, }, ]); @@ -120,9 +120,9 @@ describe('reindex API', () => { expect(data.reindexOp).toEqual({ indexName: 'wowIndex', status: ReindexStatus.inProgress }); expect(data.warnings).toEqual([ { - warningType: 'customTypeName', + warningType: 'indexSetting', meta: { - typeName: 'my_mapping_type', + settingA: 'deprecated', }, }, ]); diff --git a/x-pack/plugins/watcher/jest.config.js b/x-pack/plugins/watcher/jest.config.js deleted file mode 100644 index b078f2ab665d7..0000000000000 --- a/x-pack/plugins/watcher/jest.config.js +++ /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. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../../..', - roots: ['/x-pack/plugins/watcher'], - coverageDirectory: '/target/kibana-coverage/jest/x-pack/plugins/watcher', - coverageReporters: ['text', 'html'], - collectCoverageFrom: ['/x-pack/plugins/watcher/{common,public,server}/**/*.{js,ts,tsx}'], -}; diff --git a/x-pack/plugins/watcher/tsconfig.json b/x-pack/plugins/watcher/tsconfig.json deleted file mode 100644 index f9c339ab4d2e0..0000000000000 --- a/x-pack/plugins/watcher/tsconfig.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - }, - "include": [ - "__jest__/**/*", - "server/**/*", - "public/**/*", - "common/**/*", - "__fixtures__/*", - "../../../typings/**/*" - ], - "kbn_references": [ - "@kbn/core", - "@kbn/home-plugin", - "@kbn/management-plugin", - "@kbn/charts-plugin", - "@kbn/data-plugin", - "@kbn/kibana-react-plugin", - "@kbn/es-ui-shared-plugin", - "@kbn/license-api-guard-plugin", - "@kbn/licensing-plugin", - "@kbn/features-plugin", - "@kbn/core-doc-links-browser-mocks", - "@kbn/core-execution-context-browser-mocks", - "@kbn/test-jest-helpers", - "@kbn/i18n", - "@kbn/safer-lodash-set", - "@kbn/config-schema", - "@kbn/datemath", - "@kbn/field-formats-plugin", - "@kbn/i18n-react", - "@kbn/shared-ux-router", - "@kbn/license-management-plugin", - "@kbn/share-plugin", - "@kbn/core-ui-settings-browser", - "@kbn/core-ui-settings-browser-mocks", - "@kbn/code-editor", - "@kbn/react-kibana-context-render", - ], - "exclude": [ - "target/**/*", - ] -} diff --git a/x-pack/packages/observability/alert_details/README.md b/x-pack/solutions/observability/packages/alert_details/README.md similarity index 100% rename from x-pack/packages/observability/alert_details/README.md rename to x-pack/solutions/observability/packages/alert_details/README.md diff --git a/x-pack/packages/observability/alert_details/index.ts b/x-pack/solutions/observability/packages/alert_details/index.ts similarity index 100% rename from x-pack/packages/observability/alert_details/index.ts rename to x-pack/solutions/observability/packages/alert_details/index.ts diff --git a/x-pack/solutions/observability/packages/alert_details/jest.config.js b/x-pack/solutions/observability/packages/alert_details/jest.config.js new file mode 100644 index 0000000000000..b7c6f40e5bd51 --- /dev/null +++ b/x-pack/solutions/observability/packages/alert_details/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/packages/alert_details'], +}; diff --git a/x-pack/packages/observability/alert_details/kibana.jsonc b/x-pack/solutions/observability/packages/alert_details/kibana.jsonc similarity index 100% rename from x-pack/packages/observability/alert_details/kibana.jsonc rename to x-pack/solutions/observability/packages/alert_details/kibana.jsonc diff --git a/x-pack/packages/observability/alert_details/package.json b/x-pack/solutions/observability/packages/alert_details/package.json similarity index 100% rename from x-pack/packages/observability/alert_details/package.json rename to x-pack/solutions/observability/packages/alert_details/package.json diff --git a/x-pack/packages/observability/alert_details/src/components/alert_active_time_range_annotation.tsx b/x-pack/solutions/observability/packages/alert_details/src/components/alert_active_time_range_annotation.tsx similarity index 100% rename from x-pack/packages/observability/alert_details/src/components/alert_active_time_range_annotation.tsx rename to x-pack/solutions/observability/packages/alert_details/src/components/alert_active_time_range_annotation.tsx diff --git a/x-pack/packages/observability/alert_details/src/components/alert_annotation.tsx b/x-pack/solutions/observability/packages/alert_details/src/components/alert_annotation.tsx similarity index 100% rename from x-pack/packages/observability/alert_details/src/components/alert_annotation.tsx rename to x-pack/solutions/observability/packages/alert_details/src/components/alert_annotation.tsx diff --git a/x-pack/packages/observability/alert_details/src/components/alert_threshold_annotation.tsx b/x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_annotation.tsx similarity index 100% rename from x-pack/packages/observability/alert_details/src/components/alert_threshold_annotation.tsx rename to x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_annotation.tsx diff --git a/x-pack/packages/observability/alert_details/src/components/alert_threshold_time_range_rect.tsx b/x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_time_range_rect.tsx similarity index 100% rename from x-pack/packages/observability/alert_details/src/components/alert_threshold_time_range_rect.tsx rename to x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_time_range_rect.tsx diff --git a/x-pack/packages/observability/alert_details/src/hooks/use_alerts_history.test.tsx b/x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.test.tsx similarity index 100% rename from x-pack/packages/observability/alert_details/src/hooks/use_alerts_history.test.tsx rename to x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.test.tsx diff --git a/x-pack/packages/observability/alert_details/src/hooks/use_alerts_history.ts b/x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.ts similarity index 100% rename from x-pack/packages/observability/alert_details/src/hooks/use_alerts_history.ts rename to x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.ts diff --git a/x-pack/solutions/observability/packages/alert_details/tsconfig.json b/x-pack/solutions/observability/packages/alert_details/tsconfig.json new file mode 100644 index 0000000000000..d4c6333338759 --- /dev/null +++ b/x-pack/solutions/observability/packages/alert_details/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/rule-data-utils", + "@kbn/core", + "@kbn/rule-registry-plugin", + "@kbn/core-http-browser-mocks" + ] +} diff --git a/x-pack/packages/observability/alerting_test_data/README.md b/x-pack/solutions/observability/packages/alerting_test_data/README.md similarity index 100% rename from x-pack/packages/observability/alerting_test_data/README.md rename to x-pack/solutions/observability/packages/alerting_test_data/README.md diff --git a/x-pack/packages/observability/alerting_test_data/index.ts b/x-pack/solutions/observability/packages/alerting_test_data/index.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/index.ts rename to x-pack/solutions/observability/packages/alerting_test_data/index.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/jest.config.js b/x-pack/solutions/observability/packages/alerting_test_data/jest.config.js new file mode 100644 index 0000000000000..6a296e9d22c0d --- /dev/null +++ b/x-pack/solutions/observability/packages/alerting_test_data/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/packages/alerting_test_data'], +}; diff --git a/x-pack/packages/observability/alerting_test_data/kibana.jsonc b/x-pack/solutions/observability/packages/alerting_test_data/kibana.jsonc similarity index 100% rename from x-pack/packages/observability/alerting_test_data/kibana.jsonc rename to x-pack/solutions/observability/packages/alerting_test_data/kibana.jsonc diff --git a/x-pack/packages/observability/alerting_test_data/package.json b/x-pack/solutions/observability/packages/alerting_test_data/package.json similarity index 100% rename from x-pack/packages/observability/alerting_test_data/package.json rename to x-pack/solutions/observability/packages/alerting_test_data/package.json diff --git a/x-pack/packages/observability/alerting_test_data/src/constants.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/constants.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/constants.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/constants.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/create_apm_error_count_threshold_rule.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_error_count_threshold_rule.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/create_apm_error_count_threshold_rule.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_error_count_threshold_rule.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/create_custom_threshold_rule.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/create_data_view.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/create_data_view.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/create_index_connector.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/create_index_connector.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/create_index_connector.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/create_index_connector.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/create_rule.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/create_rule.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/create_rule.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/create_rule.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/get_kibana_url.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/get_kibana_url.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/get_kibana_url.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/get_kibana_url.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/run.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/run.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/run.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/run.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts diff --git a/x-pack/packages/observability/alerting_test_data/src/scenarios/index.ts b/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/index.ts similarity index 100% rename from x-pack/packages/observability/alerting_test_data/src/scenarios/index.ts rename to x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/index.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/tsconfig.json b/x-pack/solutions/observability/packages/alerting_test_data/tsconfig.json new file mode 100644 index 0000000000000..5e83fb292b665 --- /dev/null +++ b/x-pack/solutions/observability/packages/alerting_test_data/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/observability-plugin", + "@kbn/rule-data-utils", + "@kbn/alerting-comparators", + ] +} diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/README.md b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/README.md similarity index 100% rename from x-pack/packages/observability/get_padded_alert_time_range_util/README.md rename to x-pack/solutions/observability/packages/get_padded_alert_time_range_util/README.md diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/index.ts b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/index.ts similarity index 100% rename from x-pack/packages/observability/get_padded_alert_time_range_util/index.ts rename to x-pack/solutions/observability/packages/get_padded_alert_time_range_util/index.ts diff --git a/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/jest.config.js b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/jest.config.js new file mode 100644 index 0000000000000..6941925a188e2 --- /dev/null +++ b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/packages/get_padded_alert_time_range_util'], +}; diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/kibana.jsonc b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/kibana.jsonc similarity index 100% rename from x-pack/packages/observability/get_padded_alert_time_range_util/kibana.jsonc rename to x-pack/solutions/observability/packages/get_padded_alert_time_range_util/kibana.jsonc diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/package.json b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/package.json similarity index 100% rename from x-pack/packages/observability/get_padded_alert_time_range_util/package.json rename to x-pack/solutions/observability/packages/get_padded_alert_time_range_util/package.json diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.test.ts b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.test.ts similarity index 100% rename from x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.test.ts rename to x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.test.ts diff --git a/x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts similarity index 100% rename from x-pack/packages/observability/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts rename to x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts diff --git a/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/tsconfig.json b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/tsconfig.json new file mode 100644 index 0000000000000..7aba1b1a9378a --- /dev/null +++ b/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [] +} diff --git a/packages/kbn-investigation-shared/README.md b/x-pack/solutions/observability/packages/kbn-investigation-shared/README.md similarity index 100% rename from packages/kbn-investigation-shared/README.md rename to x-pack/solutions/observability/packages/kbn-investigation-shared/README.md diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/index.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/index.ts new file mode 100644 index 0000000000000..3b2a320ae181f --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/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 * from './src'; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/jest.config.js b/x-pack/solutions/observability/packages/kbn-investigation-shared/jest.config.js new file mode 100644 index 0000000000000..85d033a05a564 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/packages/kbn-investigation-shared'], +}; diff --git a/packages/kbn-investigation-shared/kibana.jsonc b/x-pack/solutions/observability/packages/kbn-investigation-shared/kibana.jsonc similarity index 100% rename from packages/kbn-investigation-shared/kibana.jsonc rename to x-pack/solutions/observability/packages/kbn-investigation-shared/kibana.jsonc diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/package.json b/x-pack/solutions/observability/packages/kbn-investigation-shared/package.json new file mode 100644 index 0000000000000..96c45f7b3cdd7 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/investigation-shared", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0" +} diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/index.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/index.ts new file mode 100644 index 0000000000000..cf5975aaaa97b --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/index.ts @@ -0,0 +1,9 @@ +/* + * 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 * from './rest_specs'; +export * from './schema'; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create.ts new file mode 100644 index 0000000000000..08edee8a931d8 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create.ts @@ -0,0 +1,31 @@ +/* + * 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 { z } from '@kbn/zod'; +import { investigationResponseSchema } from './investigation'; +import { alertOriginSchema, blankOriginSchema } from '../schema'; + +const createInvestigationParamsSchema = z.object({ + body: z.object({ + id: z.string(), + title: z.string(), + params: z.object({ + timeRange: z.object({ from: z.number(), to: z.number() }), + }), + origin: z.union([alertOriginSchema, blankOriginSchema]), + tags: z.array(z.string()), + externalIncidentUrl: z.string().nullable(), + }), +}); + +const createInvestigationResponseSchema = investigationResponseSchema; + +type CreateInvestigationParams = z.infer; +type CreateInvestigationResponse = z.output; + +export { createInvestigationParamsSchema, createInvestigationResponseSchema }; +export type { CreateInvestigationParams, CreateInvestigationResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_item.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_item.ts new file mode 100644 index 0000000000000..c13bab564904e --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_item.ts @@ -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 { z } from '@kbn/zod'; +import { itemSchema } from '../schema'; +import { investigationItemResponseSchema } from './investigation_item'; + +const createInvestigationItemParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + }), + body: itemSchema, +}); + +const createInvestigationItemResponseSchema = investigationItemResponseSchema; + +type CreateInvestigationItemParams = z.infer; +type CreateInvestigationItemResponse = z.output; + +export { createInvestigationItemParamsSchema, createInvestigationItemResponseSchema }; +export type { CreateInvestigationItemParams, CreateInvestigationItemResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_note.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_note.ts new file mode 100644 index 0000000000000..f9e68b2131e8c --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/create_note.ts @@ -0,0 +1,26 @@ +/* + * 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 { z } from '@kbn/zod'; +import { investigationNoteResponseSchema } from './investigation_note'; + +const createInvestigationNoteParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + }), + body: z.object({ + content: z.string(), + }), +}); + +const createInvestigationNoteResponseSchema = investigationNoteResponseSchema; + +type CreateInvestigationNoteParams = z.infer; +type CreateInvestigationNoteResponse = z.output; + +export { createInvestigationNoteParamsSchema, createInvestigationNoteResponseSchema }; +export type { CreateInvestigationNoteParams, CreateInvestigationNoteResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete.ts new file mode 100644 index 0000000000000..f4a1d20c03c9d --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete.ts @@ -0,0 +1,18 @@ +/* + * 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 { z } from '@kbn/zod'; +const deleteInvestigationParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + }), +}); + +type DeleteInvestigationParams = z.infer; + +export { deleteInvestigationParamsSchema }; +export type { DeleteInvestigationParams }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts new file mode 100644 index 0000000000000..78b69f0bb5c26 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_item.ts @@ -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 { z } from '@kbn/zod'; + +const deleteInvestigationItemParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + itemId: z.string(), + }), +}); + +type DeleteInvestigationItemParams = z.infer; + +export { deleteInvestigationItemParamsSchema }; +export type { DeleteInvestigationItemParams }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts new file mode 100644 index 0000000000000..eb39d6a3a50ba --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/delete_note.ts @@ -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 { z } from '@kbn/zod'; + +const deleteInvestigationNoteParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + noteId: z.string(), + }), +}); + +type DeleteInvestigationNoteParams = z.infer; + +export { deleteInvestigationNoteParamsSchema }; +export type { DeleteInvestigationNoteParams }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/entity.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/entity.ts new file mode 100644 index 0000000000000..a15d0e9da4e00 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/entity.ts @@ -0,0 +1,45 @@ +/* + * 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 { z } from '@kbn/zod'; + +const metricsSchema = z.object({ + failedTransactionRate: z.number().optional(), + latency: z.number().optional(), + throughput: z.number().optional(), + logErrorRate: z.number().optional(), + logRate: z.number().optional(), +}); + +const entitySchema = z.object({ + id: z.string(), + definition_id: z.string(), + definition_version: z.string(), + display_name: z.string(), + last_seen_timestamp: z.string(), + identity_fields: z.array(z.string()), + schema_version: z.string(), + type: z.string(), + metrics: metricsSchema, +}); + +const entitySourceSchema = z.object({ + dataStream: z.string().optional(), +}); + +const entityWithSourceSchema = z.intersection( + entitySchema, + z.object({ + sources: z.array(entitySourceSchema), + }) +); + +type EntityWithSource = z.output; +type EntitySource = z.output; + +export { entitySchema, entityWithSourceSchema }; +export type { EntityWithSource, EntitySource }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/find.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/find.ts new file mode 100644 index 0000000000000..5eaf1a9b6194f --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/find.ts @@ -0,0 +1,36 @@ +/* + * 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 { z } from '@kbn/zod'; +import { investigationResponseSchema } from './investigation'; + +const findInvestigationsParamsSchema = z + .object({ + query: z + .object({ + alertId: z.string(), + search: z.string(), + filter: z.string(), + page: z.coerce.number(), + perPage: z.coerce.number(), + }) + .partial(), + }) + .partial(); + +const findInvestigationsResponseSchema = z.object({ + page: z.number(), + perPage: z.number(), + total: z.number(), + results: z.array(investigationResponseSchema), +}); + +type FindInvestigationsParams = z.infer; +type FindInvestigationsResponse = z.output; + +export { findInvestigationsParamsSchema, findInvestigationsResponseSchema }; +export type { FindInvestigationsParams, FindInvestigationsResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get.ts new file mode 100644 index 0000000000000..0222d97abdaab --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get.ts @@ -0,0 +1,23 @@ +/* + * 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 { z } from '@kbn/zod'; +import { investigationResponseSchema } from './investigation'; + +const getInvestigationParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + }), +}); + +const getInvestigationResponseSchema = investigationResponseSchema; + +type GetInvestigationParams = z.infer; // Parsed payload used by the backend +type GetInvestigationResponse = z.output; // Raw response sent to the frontend + +export { getInvestigationParamsSchema, getInvestigationResponseSchema }; +export type { GetInvestigationParams, GetInvestigationResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts new file mode 100644 index 0000000000000..f4dc0bd96efd3 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_stats.ts @@ -0,0 +1,23 @@ +/* + * 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 { z } from '@kbn/zod'; +import { statusSchema } from '../schema'; + +const getAllInvestigationStatsParamsSchema = z.object({ + query: z.object({}), +}); + +const getAllInvestigationStatsResponseSchema = z.object({ + count: z.record(statusSchema, z.number()), + total: z.number(), +}); + +type GetAllInvestigationStatsResponse = z.output; + +export { getAllInvestigationStatsParamsSchema, getAllInvestigationStatsResponseSchema }; +export type { GetAllInvestigationStatsResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.ts new file mode 100644 index 0000000000000..5cb03bc483ad2 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_all_investigation_tags.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 { z } from '@kbn/zod'; + +const getAllInvestigationTagsParamsSchema = z.object({ + query: z.object({}), +}); + +const getAllInvestigationTagsResponseSchema = z.string().array(); + +type GetAllInvestigationTagsResponse = z.output; + +export { getAllInvestigationTagsParamsSchema, getAllInvestigationTagsResponseSchema }; +export type { GetAllInvestigationTagsResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts new file mode 100644 index 0000000000000..5c7cdbc7617ac --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_entities.ts @@ -0,0 +1,32 @@ +/* + * 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 { z } from '@kbn/zod'; +import { entityWithSourceSchema } from './entity'; + +const getEntitiesParamsSchema = z + .object({ + query: z + .object({ + 'service.name': z.string(), + 'service.environment': z.string(), + 'host.name': z.string(), + 'container.id': z.string(), + }) + .partial(), + }) + .partial(); + +const getEntitiesResponseSchema = z.object({ + entities: z.array(entityWithSourceSchema), +}); + +type GetEntitiesParams = z.infer; +type GetEntitiesResponse = z.output; + +export { getEntitiesParamsSchema, getEntitiesResponseSchema }; +export type { GetEntitiesParams, GetEntitiesResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_events.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_events.ts new file mode 100644 index 0000000000000..eb6d9bf8df38c --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_events.ts @@ -0,0 +1,41 @@ +/* + * 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 { z } from '@kbn/zod'; +import { eventTypeSchema, eventSchema } from '../schema'; + +const getEventsParamsSchema = z + .object({ + query: z + .object({ + rangeFrom: z.string(), + rangeTo: z.string(), + filter: z.string(), + eventTypes: z.string().transform((val, ctx) => { + const eventTypes = val.split(','); + const hasInvalidType = eventTypes.some((eventType) => !eventTypeSchema.parse(eventType)); + if (hasInvalidType) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: 'Invalid event type', + }); + return z.NEVER; + } + return val.split(',').map((v) => eventTypeSchema.parse(v)); + }), + }) + .partial(), + }) + .partial(); + +const getEventsResponseSchema = z.array(eventSchema); + +type GetEventsParams = z.infer; +type GetEventsResponse = z.output; + +export { getEventsParamsSchema, getEventsResponseSchema }; +export type { GetEventsParams, GetEventsResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_items.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_items.ts new file mode 100644 index 0000000000000..8fb7524da511c --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_items.ts @@ -0,0 +1,22 @@ +/* + * 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 { z } from '@kbn/zod'; +import { investigationItemResponseSchema } from './investigation_item'; + +const getInvestigationItemsParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + }), +}); + +const getInvestigationItemsResponseSchema = z.array(investigationItemResponseSchema); + +type GetInvestigationItemsResponse = z.output; + +export { getInvestigationItemsParamsSchema, getInvestigationItemsResponseSchema }; +export type { GetInvestigationItemsResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts new file mode 100644 index 0000000000000..e0be09fde7d87 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/get_notes.ts @@ -0,0 +1,22 @@ +/* + * 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 { z } from '@kbn/zod'; +import { investigationNoteResponseSchema } from './investigation_note'; + +const getInvestigationNotesParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + }), +}); + +const getInvestigationNotesResponseSchema = z.array(investigationNoteResponseSchema); + +type GetInvestigationNotesResponse = z.output; + +export { getInvestigationNotesParamsSchema, getInvestigationNotesResponseSchema }; +export type { GetInvestigationNotesResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/index.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/index.ts new file mode 100644 index 0000000000000..cfc0b979a735c --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/index.ts @@ -0,0 +1,50 @@ +/* + * 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 type * from './create'; +export type * from './create_item'; +export type * from './create_note'; +export type * from './delete'; +export type * from './delete_item'; +export type * from './delete_note'; +export type * from './find'; +export type * from './get'; +export type * from './get_items'; +export type * from './get_notes'; +export type * from './get_all_investigation_stats'; +export type * from './get_all_investigation_tags'; +export type * from './investigation'; +export type * from './investigation_item'; +export type * from './investigation_note'; +export type * from './update'; +export type * from './update_item'; +export type * from './update_note'; +export type * from './get_events'; +export type * from './entity'; +export type * from './get_entities'; + +export * from './create'; +export * from './create_item'; +export * from './create_note'; +export * from './delete'; +export * from './delete_item'; +export * from './delete_note'; +export * from './find'; +export * from './get'; +export * from './get_items'; +export * from './get_notes'; +export * from './get_all_investigation_stats'; +export * from './get_all_investigation_tags'; +export * from './investigation'; +export * from './investigation_item'; +export * from './investigation_note'; +export * from './update'; +export * from './update_item'; +export * from './update_note'; +export * from './get_events'; +export * from './entity'; +export * from './get_entities'; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation.ts new file mode 100644 index 0000000000000..fc00d81bbb0b9 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation.ts @@ -0,0 +1,16 @@ +/* + * 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 { z } from '@kbn/zod'; +import { investigationSchema } from '../schema'; + +const investigationResponseSchema = investigationSchema; + +type InvestigationResponse = z.output; + +export { investigationResponseSchema }; +export type { InvestigationResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts new file mode 100644 index 0000000000000..1c580f668f829 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_item.ts @@ -0,0 +1,16 @@ +/* + * 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 { z } from '@kbn/zod'; +import { investigationItemSchema } from '../schema'; + +const investigationItemResponseSchema = investigationItemSchema; + +type InvestigationItemResponse = z.output; + +export { investigationItemResponseSchema }; +export type { InvestigationItemResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts new file mode 100644 index 0000000000000..b0784d679f13a --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/investigation_note.ts @@ -0,0 +1,16 @@ +/* + * 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 { z } from '@kbn/zod'; +import { investigationNoteSchema } from '../schema'; + +const investigationNoteResponseSchema = investigationNoteSchema; + +type InvestigationNoteResponse = z.output; + +export { investigationNoteResponseSchema }; +export type { InvestigationNoteResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update.ts new file mode 100644 index 0000000000000..ab1e5ab1dc053 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update.ts @@ -0,0 +1,38 @@ +/* + * 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 { z } from '@kbn/zod'; +import { investigationResponseSchema } from './investigation'; +import { statusSchema } from '../schema'; + +const updateInvestigationParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + }), + body: z + .object({ + title: z.string(), + status: statusSchema, + params: z.object({ + timeRange: z.object({ from: z.number(), to: z.number() }), + }), + tags: z.array(z.string()), + externalIncidentUrl: z.string().nullable(), + rootCauseAnalysis: z.object({ + events: z.array(z.any()), + }), + }) + .partial(), +}); + +const updateInvestigationResponseSchema = investigationResponseSchema; + +type UpdateInvestigationParams = z.infer; +type UpdateInvestigationResponse = z.output; + +export { updateInvestigationParamsSchema, updateInvestigationResponseSchema }; +export type { UpdateInvestigationParams, UpdateInvestigationResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_item.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_item.ts new file mode 100644 index 0000000000000..59c0a2196ab4b --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_item.ts @@ -0,0 +1,26 @@ +/* + * 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 { z } from '@kbn/zod'; +import { investigationItemResponseSchema } from './investigation_item'; +import { itemSchema } from '../schema'; + +const updateInvestigationItemParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + itemId: z.string(), + }), + body: itemSchema, +}); + +const updateInvestigationItemResponseSchema = investigationItemResponseSchema; + +type UpdateInvestigationItemParams = z.infer; +type UpdateInvestigationItemResponse = z.output; + +export { updateInvestigationItemParamsSchema, updateInvestigationItemResponseSchema }; +export type { UpdateInvestigationItemParams, UpdateInvestigationItemResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_note.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_note.ts new file mode 100644 index 0000000000000..d5a95a0a691ea --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/rest_specs/update_note.ts @@ -0,0 +1,27 @@ +/* + * 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 { z } from '@kbn/zod'; +import { investigationNoteResponseSchema } from './investigation_note'; + +const updateInvestigationNoteParamsSchema = z.object({ + path: z.object({ + investigationId: z.string(), + noteId: z.string(), + }), + body: z.object({ + content: z.string(), + }), +}); + +const updateInvestigationNoteResponseSchema = investigationNoteResponseSchema; + +type UpdateInvestigationNoteParams = z.infer; +type UpdateInvestigationNoteResponse = z.output; + +export { updateInvestigationNoteParamsSchema, updateInvestigationNoteResponseSchema }; +export type { UpdateInvestigationNoteParams, UpdateInvestigationNoteResponse }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts new file mode 100644 index 0000000000000..953d5dfbdf251 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/event.ts @@ -0,0 +1,54 @@ +/* + * 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 { z } from '@kbn/zod'; + +const eventTypeSchema = z.union([ + z.literal('annotation'), + z.literal('alert'), + z.literal('error_rate'), + z.literal('latency'), + z.literal('anomaly'), +]); + +const sourceSchema = z.record(z.string(), z.any()); + +const annotationEventSchema = z.object({ + eventType: z.literal('annotation'), + id: z.string(), + title: z.string(), + description: z.string(), + timestamp: z.number(), + source: sourceSchema.optional(), + annotationType: z.string().optional(), +}); + +const alertStatusSchema = z.union([ + z.literal('active'), + z.literal('flapping'), + z.literal('recovered'), + z.literal('untracked'), +]); + +const alertEventSchema = z.object({ + eventType: z.literal('alert'), + id: z.string(), + title: z.string(), + description: z.string(), + timestamp: z.number(), + source: sourceSchema.optional(), + alertStatus: alertStatusSchema, +}); + +const eventSchema = z.discriminatedUnion('eventType', [annotationEventSchema, alertEventSchema]); + +type EventResponse = z.output; +type AlertEventResponse = z.output; +type AnnotationEventResponse = z.output; + +export type { EventResponse, AlertEventResponse, AnnotationEventResponse }; +export { eventSchema, eventTypeSchema, alertEventSchema, annotationEventSchema }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/index.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/index.ts new file mode 100644 index 0000000000000..dba2f51cb1968 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/index.ts @@ -0,0 +1,14 @@ +/* + * 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 * from './investigation'; +export * from './investigation_item'; +export * from './investigation_note'; +export * from './origin'; +export * from './event'; + +export type * from './investigation'; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation.ts new file mode 100644 index 0000000000000..3905ef2bf982e --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation.ts @@ -0,0 +1,46 @@ +/* + * 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 { z } from '@kbn/zod'; +import { alertOriginSchema, blankOriginSchema } from './origin'; +import { investigationNoteSchema } from './investigation_note'; +import { investigationItemSchema } from './investigation_item'; + +const statusSchema = z.union([ + z.literal('triage'), + z.literal('active'), + z.literal('mitigated'), + z.literal('resolved'), + z.literal('cancelled'), +]); + +const investigationSchema = z.object({ + id: z.string(), + title: z.string(), + createdAt: z.number(), + createdBy: z.string(), + updatedAt: z.number(), + params: z.object({ + timeRange: z.object({ from: z.number(), to: z.number() }), + }), + origin: z.union([alertOriginSchema, blankOriginSchema]), + status: statusSchema, + tags: z.array(z.string()), + notes: z.array(investigationNoteSchema), + items: z.array(investigationItemSchema), + externalIncidentUrl: z.string().nullable(), + rootCauseAnalysis: z + .object({ + events: z.array(z.any()), + }) + .optional(), +}); + +type Status = z.infer; + +export type { Status }; +export { investigationSchema, statusSchema }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_item.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_item.ts new file mode 100644 index 0000000000000..0bf08d588f174 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_item.ts @@ -0,0 +1,30 @@ +/* + * 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 { z } from '@kbn/zod'; + +const itemSchema = z.object({ + title: z.string(), + type: z.string(), + params: z.record(z.string(), z.any()), +}); + +const investigationItemSchema = z.intersection( + z.object({ + id: z.string(), + createdAt: z.number(), + createdBy: z.string(), + updatedAt: z.number(), + }), + itemSchema +); + +type Item = z.infer; +type InvestigationItem = z.infer; + +export type { Item, InvestigationItem }; +export { investigationItemSchema, itemSchema }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_note.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_note.ts new file mode 100644 index 0000000000000..0d210fa6d8aa7 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/investigation_note.ts @@ -0,0 +1,18 @@ +/* + * 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 { z } from '@kbn/zod'; + +const investigationNoteSchema = z.object({ + id: z.string(), + content: z.string(), + createdAt: z.number(), + updatedAt: z.number(), + createdBy: z.string(), +}); + +export { investigationNoteSchema }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/origin.ts b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/origin.ts new file mode 100644 index 0000000000000..d586b368bf6e5 --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/src/schema/origin.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 { z } from '@kbn/zod'; + +const blankOriginSchema = z.object({ type: z.literal('blank') }); +const alertOriginSchema = z.object({ type: z.literal('alert'), id: z.string() }); + +export { alertOriginSchema, blankOriginSchema }; diff --git a/x-pack/solutions/observability/packages/kbn-investigation-shared/tsconfig.json b/x-pack/solutions/observability/packages/kbn-investigation-shared/tsconfig.json new file mode 100644 index 0000000000000..424670ff55aee --- /dev/null +++ b/x-pack/solutions/observability/packages/kbn-investigation-shared/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/zod" + ] +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/jest.config.js b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/jest.config.js new file mode 100644 index 0000000000000..3620ef5a1c254 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/jest.config.js @@ -0,0 +1,15 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: [ + '/x-pack/solutions/observability/packages/observability_ai/observability_ai_common', + '/x-pack/solutions/observability/packages/observability_ai/observability_ai_server', + ], +}; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/kibana.jsonc b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/kibana.jsonc new file mode 100644 index 0000000000000..731f38d6bfe88 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/kibana.jsonc @@ -0,0 +1,7 @@ +{ + "type": "shared-common", + "id": "@kbn/observability-ai-common", + "owner": "@elastic/obs-ai-assistant", + "group": "observability", + "visibility": "private" +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/package.json b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/package.json new file mode 100644 index 0000000000000..0f5f1062937ba --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/observability-ai-common", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0" +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/index.ts new file mode 100644 index 0000000000000..8d052799aa583 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/index.ts @@ -0,0 +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. + */ + +export { + RCA_END_PROCESS_TOOL_NAME, + RCA_INVESTIGATE_ENTITY_TOOL_NAME, + RCA_OBSERVE_TOOL_NAME, +} from './tool_names'; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/tool_names.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/tool_names.ts new file mode 100644 index 0000000000000..76fe9e377daed --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/tool_names.ts @@ -0,0 +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. + */ + +export const RCA_OBSERVE_TOOL_NAME = 'observe'; +export const RCA_END_PROCESS_TOOL_NAME = 'endProcessAndWriteReport'; +export const RCA_INVESTIGATE_ENTITY_TOOL_NAME = 'investigateEntity'; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/tsconfig.json b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/tsconfig.json new file mode 100644 index 0000000000000..af23c916b5d13 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + ] +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/jest.config.js b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/jest.config.js new file mode 100644 index 0000000000000..8aa1c2d673222 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/jest.config.js @@ -0,0 +1,14 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: [ + '/x-pack/solutions/observability/packages/observability_ai/observability_ai_server', + ], +}; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/kibana.jsonc b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/kibana.jsonc new file mode 100644 index 0000000000000..6eb48a95a5624 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/kibana.jsonc @@ -0,0 +1,7 @@ +{ + "type": "shared-server", + "id": "@kbn/observability-ai-server", + "owner": "@elastic/obs-ai-assistant", + "group": "observability", + "visibility": "private" +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/package.json b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/package.json new file mode 100644 index 0000000000000..fc6fc310801dc --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/observability-ai-server", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0" +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_end_rca_process_tool.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_end_rca_process_tool.ts new file mode 100644 index 0000000000000..a1b546d2629a4 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_end_rca_process_tool.ts @@ -0,0 +1,51 @@ +/* + * 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 { from, Observable, of, switchMap } from 'rxjs'; +import { RCA_END_PROCESS_TOOL_NAME } from '@kbn/observability-ai-common/root_cause_analysis'; +import { AssistantMessage, MessageRole } from '@kbn/inference-common'; +import { writeFinalReport } from './tasks/write_final_report'; +import { EndProcessToolMessage, RootCauseAnalysisContext } from './types'; +import { generateSignificantEventsTimeline } from './tasks/generate_timeline'; +import { EMPTY_ASSISTANT_MESSAGE } from './empty_assistant_message'; + +export function callEndRcaProcessTool({ + rcaContext, + toolCallId, +}: { + rcaContext: RootCauseAnalysisContext; + toolCallId: string; +}): Observable { + return from( + writeFinalReport({ + rcaContext, + }) + ).pipe( + switchMap((report) => { + return from( + generateSignificantEventsTimeline({ + rcaContext, + report, + }).then((timeline) => { + return { timeline, report }; + }) + ); + }), + switchMap(({ report, timeline }) => { + const toolMessage: EndProcessToolMessage = { + name: RCA_END_PROCESS_TOOL_NAME, + role: MessageRole.Tool, + toolCallId, + response: { + report, + timeline, + }, + }; + return of(toolMessage, EMPTY_ASSISTANT_MESSAGE); + }) + ); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_investigate_entity_tool.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_investigate_entity_tool.ts new file mode 100644 index 0000000000000..c22d28d7389fb --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_investigate_entity_tool.ts @@ -0,0 +1,80 @@ +/* + * 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 { from, Observable, of, switchMap } from 'rxjs'; +import { MessageRole } from '@kbn/inference-common'; +import { RCA_INVESTIGATE_ENTITY_TOOL_NAME } from '@kbn/observability-ai-common/root_cause_analysis'; +import { InvestigateEntityToolMessage, RootCauseAnalysisContext, ToolErrorMessage } from './types'; +import { investigateEntity } from './tasks/investigate_entity'; +import { formatEntity } from './util/format_entity'; + +export function callInvestigateEntityTool({ + field, + value, + context, + toolCallId, + rcaContext, +}: { + field: string; + value: string; + context: string; + toolCallId: string; + rcaContext: RootCauseAnalysisContext; +}): Observable { + const nextEntity = { + [field]: value, + }; + + return from( + investigateEntity({ + rcaContext, + entity: nextEntity, + context, + }) + ).pipe( + switchMap((entityInvestigation) => { + if (!entityInvestigation) { + const entityNotFoundToolMessage: ToolErrorMessage = { + name: 'error', + role: MessageRole.Tool, + response: { + error: { + message: `Entity ${formatEntity(nextEntity)} not found, have + you verified it exists and if the field and value you are using + are correct?`, + }, + }, + toolCallId, + }; + + return of(entityNotFoundToolMessage); + } + + const { + attachments, + relatedEntities, + entity: investigatedEntity, + summary, + } = entityInvestigation; + const toolMessage: InvestigateEntityToolMessage = { + name: RCA_INVESTIGATE_ENTITY_TOOL_NAME, + role: MessageRole.Tool as const, + toolCallId, + response: { + entity: investigatedEntity, + relatedEntities, + summary, + }, + data: { + attachments, + }, + }; + + return of(toolMessage); + }) + ); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_observe_tool.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_observe_tool.ts new file mode 100644 index 0000000000000..06676abd729f0 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_observe_tool.ts @@ -0,0 +1,91 @@ +/* + * 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 { AssistantMessage, MessageRole } from '@kbn/inference-common'; +import { + RCA_INVESTIGATE_ENTITY_TOOL_NAME, + RCA_OBSERVE_TOOL_NAME, +} from '@kbn/observability-ai-common/root_cause_analysis'; +import { compact, findLast } from 'lodash'; +import { from, Observable, of, switchMap } from 'rxjs'; +import { observeInvestigationResults } from './tasks/observe_investigation_results'; +import { + InvestigateEntityToolMessage, + ObservationToolMessage, + RootCauseAnalysisContext, + RootCauseAnalysisEvent, +} from './types'; + +export function callObserveTool({ + rcaContext, + toolCallId, +}: { + rcaContext: RootCauseAnalysisContext; + toolCallId: string; +}): Observable { + const { events } = rcaContext; + + const lastAssistantMessage = findLast( + events.slice(0, -1), + (event): event is Extract => + event.role === MessageRole.Assistant + ); + + const toolMessagesByToolCallId = Object.fromEntries( + compact( + events.map((message) => + 'toolCallId' in message && + (message.name === RCA_INVESTIGATE_ENTITY_TOOL_NAME || message.name === 'error') + ? [message.toolCallId, message] + : undefined + ) + ) + ); + + const investigationToolMessages = + lastAssistantMessage && lastAssistantMessage.toolCalls + ? compact( + lastAssistantMessage.toolCalls.map((investigateEntityToolCall) => { + if (investigateEntityToolCall.function.name !== RCA_INVESTIGATE_ENTITY_TOOL_NAME) { + return undefined; + } + return { + toolCall: investigateEntityToolCall, + toolResponse: toolMessagesByToolCallId[investigateEntityToolCall.toolCallId], + }; + }) + ) + : []; + + const investigations = investigationToolMessages + .map((toolMessage) => toolMessage.toolResponse) + .filter( + (toolResponse): toolResponse is InvestigateEntityToolMessage => + toolResponse.name === RCA_INVESTIGATE_ENTITY_TOOL_NAME + ) + .map((toolResponse) => ({ ...toolResponse.data, ...toolResponse.response })); + + return from( + observeInvestigationResults({ + rcaContext, + investigations, + }) + ).pipe( + switchMap((summary) => { + const observationToolMessage: ObservationToolMessage = { + name: RCA_OBSERVE_TOOL_NAME, + response: { + content: summary.content, + }, + data: summary, + role: MessageRole.Tool, + toolCallId, + }; + return of(observationToolMessage); + }) + ); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/empty_assistant_message.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/empty_assistant_message.ts new file mode 100644 index 0000000000000..08443d593a81a --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/empty_assistant_message.ts @@ -0,0 +1,15 @@ +/* + * 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 { AssistantMessage, MessageRole } from '@kbn/inference-common'; +import { RootCauseAnalysisEvent } from './types'; + +export const EMPTY_ASSISTANT_MESSAGE: Extract = { + content: '', + role: MessageRole.Assistant, + toolCalls: [], +}; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/index.ts new file mode 100644 index 0000000000000..66307dc2ef9a4 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/index.ts @@ -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. + */ + +export type { + RootCauseAnalysisEvent, + InvestigateEntityToolMessage, + EndProcessToolMessage, + ObservationToolMessage, + RootCauseAnalysisToolMessage, + ToolErrorMessage, + RootCauseAnalysisToolRequest, +} from './types'; +export type { SignificantEventsTimeline, SignificantEvent } from './tasks/generate_timeline'; +export type { EntityInvestigation } from './tasks/investigate_entity'; + +export { runRootCauseAnalysis } from './run_root_cause_analysis'; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/prompts/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/prompts/index.ts new file mode 100644 index 0000000000000..8a0a6a9064700 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/prompts/index.ts @@ -0,0 +1,345 @@ +/* + * 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 RCA_SYSTEM_PROMPT_BASE = `You are a helpful assistant for Elastic Observability. +You are a distinguished SRE, who has an established career, working in both +small shops and FAANG-level companies. You have worked with Elasticsearch +since the beginning and expertly use it in your analysis of incidents. + +You use an evidence-based strategy to determine the root cause of +an incident. You thoroughly analyze Observability data. You use your +understanding of different architectures like microservies, monoliths, +event-driven systems, and environments like Kubernetes to discover +patterns and correlations in the data ingested into the user's system. + +Your sizable experience with monitoring software systems has taught +you how to investigate issues and correlate symptoms of the investigate +service with its dependencies. + +## Capabilities + +You are highly skilled at inspecting logs, traces, alerts, and SLOs to uncover +the root cause of incidents, with a special emphasis on detecting log patterns +that reveal system behavior. You can identify related entities, such as upstream +services or the specific pod a service is running on, by searching through logs +and traces for relationships using metadata like IP addresses, session IDs, or +distributed tracing data. While you can analyze alerts and SLO-derived metrics, +you do not directly analyze other system metrics, inspect files, or execute +commands that modify the system. + +## Non-capabilities + +You lack the capabilities to analyze metrics or connect to external systems.`; + +export const RCA_PROMPT_ENTITIES = `# Entities + +In an Observability system, entities are distinct components or resources within +the infrastructure, each representing points of interest for monitoring and +troubleshooting. These entities form the backbone of log-based analysis and +allow teams to track behavior, detect anomalies, and investigate issues across +different layers of the system. Here’s a breakdown of common entities in +observability: + +1. Services: Core units of functionality in an application ecosystem, +representing individual processes or applications (e.g., user-authentication, +payment processing). Services typically expose APIs or endpoints, and logs from +these entities often capture requests, responses, and error events, which are +critical for understanding application behavior. + +2. Kubernetes (K8s) Entities: + - Pods: The smallest deployable units in Kubernetes, usually containing one +or more containers. Logs from pods provide insight into container operations, +errors, and application states. + - Namespaces: Logical groupings within a cluster for organizing and isolating +resources, helping in filtering logs by domain or responsibility. + - Nodes: Worker machines (either physical or virtual) where pods run. Node +logs often cover hardware resource events, errors, and other system-level events +relevant to pod health and performance. + - Deployments and ReplicaSets: Define and manage the desired state of pod +replication and rolling updates. Logs from these components can reveal changes +in application versions, scaling events, and configuration updates. + +3. Virtual Machines (VMs): Virtualized computing resources that generate +operating system-level logs capturing events such as application crashes, +network issues, and OS-related errors. + +4. Applications: Software systems or packages running across the infrastructure,n +which may encompass multiple services. Logs from applications track user flows, +application states, and error messages, providing context for user interactions +and system events. + +5. Serverless Functions (e.g., AWS Lambda): Code executions triggered by +specific events. Logs from serverless functions capture invocation details, +execution paths, and error traces, which are useful for understanding specific +function behaviors and pinpointing execution anomalies. + +6. Databases and Data Stores: Includes SQL/NoSQL databases, caches, and storage +solutions. Logs from these entities cover query executions, connection issues, +and transaction errors, essential for tracking data layer issues. + +7. Containers: Portable environments running individual services or processes. +Container logs capture application and system events within the containerized +environment, helping track process-level errors and status changes. + +8. Load Balancers and API Gateways: Components responsible for managing and +routing traffic. Logs from these entities include request paths, status codes, +and errors encountered, which can indicate connectivity issues or +misconfigurations. + +9. Networking Components: Entities like virtual private clouds (VPCs), +firewalls, VPNs, and network interfaces. Logs from these components track +traffic flows, connectivity issues, and security events, crucial for identifying +network-related anomalies. + +10. Clusters and Regions: Groupings of infrastructure either physically or +logically, such as across data centers or cloud regions. Cluster and region logs +help capture high-level events and error messages, useful for understanding +system-wide issues and region-specific disruptions. + +Each of these entities is typically identified by fields such as +\`service.name\`, \`kubernetes.pod.name\`, \`container.id\`, or similar fields +in log records. Observability systems use these identifiers to connect entities, +creating a map of relationships and dependencies that helps teams diagnose +issues, understand cross-entity impacts, and uncover root causes in distributed +architectures.`; + +export const RCA_PROMPT_DEPENDENCIES = `## Understanding the Flow: Upstream vs. Downstream + +- Upstream dependencies: These are the services that your service +depends on. They supply data, perform tasks, or provide resources that +your service consumes. +- Downstream dependencies: These are the services that depend on your +service. They consume the data or resources your service generates. + +When diagnosing issues, distinguishing the direction of dependency can +clarify whether a problem originates from your service’s reliance on an +external input or whether your service is causing issues for other systems. + +--- + +## When to Investigate Upstream Dependencies + +Upstream issues typically occur when your service is failing due to problems +with the responses it receives from external systems. + +1. Timeouts and Latency +- Symptoms: Slow response times, retries, or timeouts. +- Errors: HTTP 504, retrying connection, exceeded timeout threshold. +- Focus: Check the performance and availability of upstream services +(e.g., APIs, databases) and network latency. + +2. Data Integrity Issues** +- Symptoms: Inconsistent or corrupted data. +- Errors: unexpected data format, deserialization errors. +- Focus: Verify data received from upstream services, and investigate +schema or data format changes. + +3. Connection Failures +- Symptoms: Your service cannot connect to upstream services. +- Errors: DNS lookup failed, connection refused, socket timeout. +- Focus: Check upstream service health, DNS, and networking components. + +4. Authentication/Authorization Failures** +- Symptoms: Failed access to upstream resources. +- Errors: 401 Unauthorized, 403 Forbidden, token issues. +- Focus: Validate credentials or tokens and investigate upstream access +policies. + +--- + +## When to Investigate Downstream Dependencies + +Downstream issues occur when your service is functioning but its outputs cause +failures in other services that depend on it. + +1. Data or API Response Issues +- Symptoms: Downstream services receive bad or invalid data. +- Errors: data type mismatch, invalid JSON format. +- Focus: Ensure your service is returning correct data and check for API +changes. + +2. Rate-Limiting and Resource Exhaustion** +- Symptoms: Downstream services are overwhelmed. +- Errors: 429 Too Many Requests, throttling or resource exhaustion. +- Focus: Check your service’s request rates and resource usage (e.g., memory, CPU). + +3. Unexpected Behavior or Regression +- Symptoms: Downstream failures after a recent deployment. +- Errors: New downstream errors after your service changes. +- Focus: Review recent updates, API contracts, or integration points. + +4. Eventual Consistency or Queue Backlogs +- Symptoms: Delayed processing in downstream systems. +- Errors: message queue full, backlog warnings. +- Focus: Check event production rates and queue statuses in downstream services.`; + +export const RCA_PROMPT_CHANGES = `## Reasoning about Correlating Changes in Incident Investigations + +In a root cause analysis, understanding the types and timing of changes is key +to linking symptoms with underlying causes. Changes can broadly be classified +into **symptomatic changes** (indicators of system issues like elevated error +rates or degraded throughput) and **system changes** (events that modify system +configuration or structure, such as scale-downs, new version rollouts, or +significant configuration adjustments). By correlating these changes, we can +assess whether observed symptoms are likely related to specific system +modifications. + +### Identifying Correlations Between Symptomatic and System Changes + +When investigating a sudden issue—such as a 5x increase in latency—it’s +essential to evaluate both the **timing** and **nature** of associated changes +in upstream dependencies, resource utilization, and configuration events. For +instance: + +- Consistent Symptomatic Behavior: If an upstream dependency exhibits a +similar, sustained latency spike around the same time and shows log entries +indicating CPU throttling, this would suggest a correlated, persistent issue +that may directly impact the observed symptom. A scale-down event preceding the +latency increase might indicate that reduced resources are stressing the +dependency. + +- Transient vs. Persistent Issues: Another upstream dependency that +experiences a brief latency increase but recovers quickly is less likely +related. Short-lived changes that self-correct without intervention typically +have different root causes or may be unrelated noise. + +### Types of Changes to Consider in Correlation + +1. Log Pattern Changes: A shift in log patterns, especially around error +levels, provides significant insight. If there’s an increase in critical or +warning log patterns for a dependency during the latency spike, it could +indicate that the issue stems from this entity. Compare these log patterns to +past behavior to assess whether they represent an anomaly that might warrant +further investigation. + +2. Event-Driven System Changes: + - Scale Events: Scale-up or scale-down events can directly impact +performance. If a latency increase aligns with a scale-down, it may suggest that +resource reduction is straining the system. + - Release or Deployment Events: A new version rollout or config change is +a frequent source of correlated issues. Compare the timing of the latency +increase to the deployment to see if the change directly impacts the system. +Correlate with alerts or SLO breaches on endpoints to understand the immediate +effects of the release. + +3. SLO and Alert-Based Changes: SLO breaches and alerts can provide concrete +timestamps for when symptoms begin. For instance, a breach on error rates for a +specific service endpoint following a dependency’s scale-down event suggests a +possible causal link. An alert indicating sustained latency increase in a +dependency that remains unresolved points to a high-priority area for deeper +investigation. + +4. Dependency Health and Behavior: + - Related vs. Unrelated Dependencies: Similar to the latency example, +observe if multiple dependencies experience symptomatic changes simultaneously. +Related dependencies should show consistent, similar issues, while unrelated +dependencies may exhibit brief, unrelated spikes. Persistent issues across key +dependencies likely indicate a systemic cause, while isolated changes are less +likely to be relevant. + +### Examples of Reasoning Through Changes + +Consider these scenarios: +- Increase in Error Rates and a Recent Deployment: Suppose error rates for +an endpoint increase sharply post-deployment. If related logs show new error +patterns, this aligns the symptom with a deployment change. Investigate specific +changes in the deployment (e.g., code changes or resource allocation). +- Throughput Decrease and Scaling Events: If throughput dips shortly after a +scale-down event, it might suggest resource constraints. Analyze CPU or memory +throttling logs from this period in upstream dependencies to confirm. +- Cross-Service Latency Spikes: If multiple services along a call path +experience latency spikes, with CPU throttling logs, this suggests a resource +bottleneck. Trace logs and alerts related to autoscaling decisions may provide +insights into whether the system configuration caused cascading delays. + +By carefully mapping these changes and analyzing their timing, you can +distinguish between causally related events and incidental changes, allowing for +a targeted and effective investigation.`; + +export const RCA_PROMPT_CHANGE_POINTS = `## Change points + +Change points can be defined as the following type: + +- \`dip\`: a significant dip occurs at this change point +- \`distribution_change\`: the overall distribution of the values has changed +significantly +- \`non_stationary\`: there is no change point, but the values are not from a +stationary distribution +- \`spike\`: a significant spike occurs at this point +- \`stationary\`: no change point found +- \`step_change\`: the change indicates a statistically significant step up or +down in value distribution +- \`trend_change\`: there is an overall trend change occurring at this point + +For \`spike\`, and \`dip\`, this means: a short-lived spike or dip that then again +stabilizes. For persisted changes, you'd see a \`step_change\` (if the values +before and after the change point are stable), or a \`trend_change\` when the +values show an upward or downward trend after the change.`; + +export const RCA_PROMPT_SIGNIFICANT_EVENTS = `## Significant events + +Generate a timeline of significant events. These events should capture +significant observed changes in the system that can be extracted from the +analyzed data. This timeline is absolutely critical to the investigation, +and close attention has to be paid to the data, and the instructions. + +The timeline should focus on key events as captured in log patterns, including +both notable changes and unusual/critical messages. This data-driven timeline +should help establish a chain of causality, pinpointing when anomalies began, +what system behaviors were observed, and how these patterns relate to the overall incident. + +- Use ISO timestamps to ensure precision and clarity. +- Include alerts that are part of the investigation. For these, use the start +time of the alert, and mention critical information about the alert, such as +reason and grouping fields. +- Focus on log entries that signal significant system behavior (e.g., errors, +retries, anomalies). +- Highlight critical log messages or changes in patterns that may correlate +with the issue. +- Include notable anomalies, such as spikes in error rates, unexpected system +responses, or any log entries suggesting failure or degradation. + +Do not include: +- Events that are indicative of normal operations. +- Events that are unlikely to be related to the investigated issue. + +Key Elements to Include: + +- Log Patterns: Capture log messages that show unusual events or +abnormalities such as error codes, failed retries, or changes in log frequency. +- Timestamps: Ensure every entry in the timeline is time-stamped +with an accurate ISO 8601 timestamp. +- Event Description: Provide a clear, concise, and objective description of +what was observed in the logs. +- Corroborating Data: Link log anomalies to other relevant data points such +as traffic shifts, request patterns, or upstream/downstream service impacts.`; + +export const RCA_PROMPT_TIMELINE_GUIDE = ` +The timeline should focus on key events as +captured in log patterns, including both notable changes and unusual/critical +messages. This data-driven timeline should help establish a chain of causality, +pinpointing when anomalies began, what system behaviors were observed, and how +these patterns relate to the overall incident. + +- Use ISO timestamps** to ensure precision and clarity. +- Focus on log entries** that signal significant system behavior (e.g., +errors, retries, anomalies). +- Highlight critical log messages** or changes in patterns that may correlate +with the issue. +- Include notable anomalies, such as spikes in error rates, unexpected +system responses, or any log entries suggesting failure or degradation. + +Key Elements to Include: + +Log Patterns: Capture log messages that show unusual events or +abnormalities such as error codes, failed retries, or changes in log frequency. +Timestamps: Ensure every entry in the timeline is time-stamped +with an accurate ISO 8601 timestamp. +Event Description: Provide a clear, concise description of what was +observed in the logs. +Corroborating Data: Link log anomalies to other relevant data points such +as traffic shifts, request patterns, or upstream/downstream service impacts.`; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/run_root_cause_analysis.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/run_root_cause_analysis.ts new file mode 100644 index 0000000000000..94b14b4f3d12f --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/run_root_cause_analysis.ts @@ -0,0 +1,305 @@ +/* + * 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 { RulesClient } from '@kbn/alerting-plugin/server'; +import { calculateAuto } from '@kbn/calculate-auto'; +import { MessageRole, AssistantMessage, ToolMessage, ToolChoiceType } from '@kbn/inference-common'; +import { InferenceClient } from '@kbn/inference-plugin/server'; +import { Logger } from '@kbn/logging'; +import { AlertsClient } from '@kbn/rule-registry-plugin/server'; +import { findLast, pick } from 'lodash'; +import moment from 'moment'; +import { catchError, filter, from, map, mergeMap, Observable, of, switchMap } from 'rxjs'; +import { ObservabilityAIAssistantClient } from '@kbn/observability-ai-assistant-plugin/server'; +import { ObservabilityElasticsearchClient } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; +import { + RCA_END_PROCESS_TOOL_NAME, + RCA_INVESTIGATE_ENTITY_TOOL_NAME, + RCA_OBSERVE_TOOL_NAME, +} from '@kbn/observability-ai-common/root_cause_analysis'; +import { callEndRcaProcessTool } from './call_end_rca_process_tool'; +import { callInvestigateEntityTool } from './call_investigate_entity_tool'; +import { callObserveTool } from './call_observe_tool'; +import { RCA_PROMPT_CHANGES, RCA_PROMPT_ENTITIES, RCA_SYSTEM_PROMPT_BASE } from './prompts'; +import { RCA_TOOLS } from './tools'; +import { + EndProcessToolMessage, + InvestigateEntityToolMessage, + ObservationToolMessage, + RootCauseAnalysisContext, + RootCauseAnalysisEvent, + ToolErrorMessage, +} from './types'; +import { callTools } from './util/call_tools'; +import { formatEntity } from './util/format_entity'; +import { validateInvestigateEntityToolCalls } from './util/validate_investigate_entity_tool_call'; + +const SYSTEM_PROMPT_WITH_OBSERVE_INSTRUCTIONS = `${RCA_SYSTEM_PROMPT_BASE} + +Your next step is to request an observation from another agent based +on the initial context or the results of previous investigations.`; + +const SYSTEM_PROMPT_WITH_DECISION_INSTRUCTIONS = `${RCA_SYSTEM_PROMPT_BASE} + +${RCA_PROMPT_ENTITIES} + +${RCA_PROMPT_CHANGES} + + To determine whether to end the process or continue analyzing another entity, +follow the advice from the previous observation, and these tips: + + Continuing the process: + - Do not investigate an entity twice. This will result in a failure. + - Logs, traces, or observability data that suggest upstream or downstream +issues (such as connection failures, timeouts, or authentication errors) +indicate further investigation is required. + + Ending the process: + - No further entities to investigate: If there are no unexplored upstream or +downstream dependencies, and all related entities have been investigated without +discovering new anomalies, it may be appropriate to end the process. + - If all investigated entities (e.g., services, hosts, containers) are +functioning normally, with no relevant issues found, and there are no signs of +dependencies being affected, you may consider ending the process. + - Avoid concluding the investigation based solely on symptoms or the absence +of immediate errors in the data. Unless a system change has been connected to +the incident, it is important to continue investigating dependencies to ensure +the root cause has been accurately identified.`; + +export function runRootCauseAnalysis({ + serviceName, + start: requestedStart, + end: requestedEnd, + esClient, + alertsClient, + rulesClient, + observabilityAIAssistantClient, + spaceId, + indices, + connectorId, + inferenceClient, + context: initialContext, + logger: incomingLogger, + prevEvents, +}: { + context: string; + serviceName: string; + logger: Logger; + inferenceClient: InferenceClient; + start: number; + end: number; + alertsClient: AlertsClient; + rulesClient: RulesClient; + esClient: ObservabilityElasticsearchClient; + observabilityAIAssistantClient: ObservabilityAIAssistantClient; + indices: { + logs: string[]; + traces: string[]; + sloSummaries: string[]; + }; + connectorId: string; + spaceId: string; + prevEvents?: RootCauseAnalysisEvent[]; +}): Observable { + const logger = incomingLogger.get('rca'); + + const entity = { 'service.name': serviceName }; + + const bucketSize = calculateAuto + .atLeast(30, moment.duration(requestedEnd - requestedStart))! + .asMilliseconds(); + + const start = Math.floor(requestedStart / bucketSize) * bucketSize; + const end = Math.floor(requestedEnd / bucketSize) * bucketSize; + + const initialMessage = { + role: MessageRole.User as const, + content: `Investigate the health status of ${formatEntity(entity)}. + + The context given for this investigation is: + + ${initialContext}`, + }; + + const nextEvents = [initialMessage, ...(prevEvents ?? [])]; + + const initialRcaContext: RootCauseAnalysisContext = { + connectorId, + start, + end, + esClient, + events: nextEvents, + indices, + inferenceClient, + initialContext, + alertsClient, + observabilityAIAssistantClient, + logger, + rulesClient, + spaceId, + tokenLimit: 32_000, + }; + + const investigationTimeRangePrompt = `## Time range + + The time range of the investigation is ${new Date(start).toISOString()} until ${new Date( + end + ).toISOString()}`; + + initialContext = `${initialContext} + + ${investigationTimeRangePrompt} + `; + + const next$ = callTools( + { + system: RCA_SYSTEM_PROMPT_BASE, + connectorId, + inferenceClient, + messages: nextEvents, + logger, + }, + ({ messages }) => { + const lastSuccessfulToolResponse = findLast( + messages, + (message) => message.role === MessageRole.Tool && message.name !== 'error' + ) as Exclude | undefined; + + const shouldWriteObservationNext = + !lastSuccessfulToolResponse || lastSuccessfulToolResponse.name !== RCA_OBSERVE_TOOL_NAME; + + const nextTools = shouldWriteObservationNext + ? pick(RCA_TOOLS, RCA_OBSERVE_TOOL_NAME) + : pick(RCA_TOOLS, RCA_END_PROCESS_TOOL_NAME, RCA_INVESTIGATE_ENTITY_TOOL_NAME); + + const nextSystem = shouldWriteObservationNext + ? SYSTEM_PROMPT_WITH_OBSERVE_INSTRUCTIONS + : SYSTEM_PROMPT_WITH_DECISION_INSTRUCTIONS; + + return { + messages, + system: `${nextSystem} + + ${investigationTimeRangePrompt}`, + tools: nextTools, + toolChoice: shouldWriteObservationNext + ? { function: RCA_OBSERVE_TOOL_NAME } + : ToolChoiceType.required, + }; + }, + ({ + toolCalls, + messages, + }): Observable< + | ObservationToolMessage + | ToolErrorMessage + | InvestigateEntityToolMessage + | EndProcessToolMessage + | AssistantMessage + > => { + const nextRcaContext = { + ...initialRcaContext, + events: messages as RootCauseAnalysisEvent[], + }; + + return of(undefined).pipe( + switchMap(() => { + return from( + validateInvestigateEntityToolCalls({ rcaContext: nextRcaContext, toolCalls }) + ); + }), + switchMap((errors) => { + if (errors.length) { + return of( + ...toolCalls.map((toolCall) => { + const toolCallErrorMessage: ToolErrorMessage = { + role: MessageRole.Tool, + name: 'error', + response: { + error: { + message: `Some ${RCA_INVESTIGATE_ENTITY_TOOL_NAME} calls were not valid: + ${errors.map((error) => `- ${error}`).join('\n')}`, + }, + }, + toolCallId: toolCall.toolCallId, + }; + return toolCallErrorMessage; + }) + ); + } + return of(...toolCalls).pipe( + mergeMap((toolCall) => { + function executeToolCall(): Observable< + | EndProcessToolMessage + | InvestigateEntityToolMessage + | ObservationToolMessage + | ToolErrorMessage + | AssistantMessage + > { + switch (toolCall.function.name) { + case RCA_END_PROCESS_TOOL_NAME: + return callEndRcaProcessTool({ + rcaContext: nextRcaContext, + toolCallId: toolCall.toolCallId, + }); + + case RCA_INVESTIGATE_ENTITY_TOOL_NAME: + return callInvestigateEntityTool({ + context: toolCall.function.arguments.context, + field: toolCall.function.arguments.entity.field, + value: toolCall.function.arguments.entity.value, + rcaContext: nextRcaContext, + toolCallId: toolCall.toolCallId, + }); + + case RCA_OBSERVE_TOOL_NAME: + return callObserveTool({ + rcaContext: nextRcaContext, + toolCallId: toolCall.toolCallId, + }); + } + } + + return executeToolCall().pipe( + catchError((error) => { + logger.error(`Failed executing task: ${error.message}`); + logger.error(error); + const toolErrorMessage: ToolErrorMessage = { + name: 'error', + role: MessageRole.Tool, + response: { + error: { + ...('toJSON' in error && typeof error.toJSON === 'function' + ? error.toJSON() + : {}), + message: error.message, + }, + }, + toolCallId: toolCall.toolCallId, + }; + return of(toolErrorMessage); + }) + ); + }, 3) + ); + }) + ); + } + ); + + return next$.pipe( + filter((event) => + Boolean(event.role !== MessageRole.Assistant || event.content || event.toolCalls?.length) + ), + map((event) => { + if (event.role === MessageRole.Assistant) { + return event as Extract; + } + return event; + }) + ); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/analyze_log_patterns/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/analyze_log_patterns/index.ts new file mode 100644 index 0000000000000..fe090b64c9728 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/analyze_log_patterns/index.ts @@ -0,0 +1,402 @@ +/* + * 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 { getEntityKuery } from '@kbn/observability-utils-common/entities/get_entity_kuery'; +import { formatValueForKql } from '@kbn/observability-utils-common/es/format_value_for_kql'; +import type { TruncatedDocumentAnalysis } from '@kbn/observability-utils-common/llm/log_analysis/document_analysis'; +import { ShortIdTable } from '@kbn/observability-utils-common/llm/short_id_table'; +import { + P_VALUE_SIGNIFICANCE_HIGH, + P_VALUE_SIGNIFICANCE_MEDIUM, +} from '@kbn/observability-utils-common/ml/p_value_to_label'; +import { + FieldPatternResultWithChanges, + getLogPatterns, +} from '@kbn/observability-utils-server/entities/get_log_patterns'; +import { castArray, compact, groupBy, orderBy } from 'lodash'; +import { RCA_PROMPT_CHANGES, RCA_PROMPT_ENTITIES } from '../../prompts'; +import { RootCauseAnalysisContext } from '../../types'; +import { formatEntity } from '../../util/format_entity'; +import { serializeKnowledgeBaseEntries } from '../../util/serialize_knowledge_base_entries'; +import { ScoredKnowledgeBaseEntry } from '../get_knowledge_base_entries'; + +type LogPatternRelevance = 'normal' | 'unusual' | 'warning' | 'critical'; + +export type AnalyzedLogPattern = FieldPatternResultWithChanges & { + relevance: LogPatternRelevance; + interesting: boolean; +}; + +export interface AnalyzeLogPatternOutput { + ownPatterns: AnalyzedLogPattern[]; + patternsFromOtherEntities: AnalyzedLogPattern[]; +} + +const normalDescription = `normal operations, such as such access logs`; +const unusualDescription = `something unusual and/or +appear rarely, such as startup or shutdown messages or +other rare vents`; +const warningDescription = `something being in an unexpected state, +such as error messages, rate limiting or disk usage warnings`; +const criticalDescription = `something being in a critical state, +such as startup failure messages, out-of-memory errors or crashloopbackoff +events`; + +interface LogPatternCutOff { + significance?: 'high' | 'medium' | 'low'; + pValue?: number; +} + +export async function analyzeLogPatterns({ + entity, + allAnalysis, + system, + rcaContext: { logger: parentLogger, inferenceClient, connectorId, esClient, start, end, indices }, + cutoff, + kbEntries, +}: { + entity: Record; + allAnalysis: Array<{ index: string | string[]; analysis: TruncatedDocumentAnalysis }>; + system: string; + cutoff?: LogPatternCutOff; + kbEntries: ScoredKnowledgeBaseEntry[]; + rcaContext: Pick< + RootCauseAnalysisContext, + 'indices' | 'logger' | 'inferenceClient' | 'connectorId' | 'esClient' | 'start' | 'end' + >; +}): Promise { + const kuery = getEntityKuery(entity); + + const logger = parentLogger.get('analyzeLogPatterns'); + + const fields = ['message', 'error.exception.message']; + + logger.debug(() => `Analyzing log patterns for ${JSON.stringify(entity)}`); + + const systemPrompt = `You are a helpful assistant for Elastic Observability. + You are an expert in analyzing log messages for software + systems, and you use your extensive experience as an SRE + to thoroughly analyze log patterns for things that require + attention from the user. + + ${RCA_PROMPT_CHANGES} + + ${RCA_PROMPT_ENTITIES} + + ## Entity + + The following entity is being analyzed: + + ${formatEntity(entity)} + + ${serializeKnowledgeBaseEntries(kbEntries)} + + ### Entity analysis + + ${allAnalysis.map(({ index: analyzedIndex, analysis }) => { + return `#### Indices: ${castArray(analyzedIndex).join(',')} + + ${JSON.stringify(analysis)}`; + })} + + ${system}`; + + const kueryForOtherEntities = `NOT (${kuery}) AND ${Object.values(entity) + .map( + (val) => + `(${fields.map((field) => `(${[field, formatValueForKql(val)].join(':')})`).join(' OR ')})` + ) + .join(' AND ')}`; + + const [logPatternsFromEntity, logPatternsFromElsewhere] = await Promise.all([ + getLogPatterns({ + esClient, + index: [...indices.logs, ...indices.traces], + start, + end, + kuery, + includeChanges: true, + fields, + metadata: [], + }), + getLogPatterns({ + esClient, + index: [...indices.logs], + start, + end, + kuery: kueryForOtherEntities, + metadata: Object.keys(entity), + includeChanges: true, + fields, + }), + ]); + const patternIdLookupTable = new ShortIdTable(); + + logger.debug( + () => + `Found ${logPatternsFromEntity.length} own log patterns and ${logPatternsFromElsewhere.length} from others` + ); + + logger.trace( + () => + `Found log patterns${JSON.stringify({ + entity, + logPatternsFromEntity, + logPatternsFromElsewhere, + })}` + ); + + const patternsWithIds = [...logPatternsFromEntity, ...logPatternsFromElsewhere].map((pattern) => { + return { + ...pattern, + shortId: patternIdLookupTable.take(pattern.regex), + }; + }); + + const patternsByRegex = new Map(patternsWithIds.map((pattern) => [pattern.regex, pattern])); + + const serializedOwnEntity = formatEntity(entity); + + const [ownPatterns, patternsFromOtherEntities] = await Promise.all([ + logPatternsFromEntity.length ? categorizeOwnPatterns() : [], + logPatternsFromElsewhere.length ? selectRelevantPatternsFromOtherEntities() : [], + ]); + + logger.trace( + () => + `Classified log patterns ${JSON.stringify([entity, ownPatterns, patternsFromOtherEntities])}` + ); + + const allPatterns = [...ownPatterns, ...patternsFromOtherEntities]; + + const sortedByPValueAsc = orderBy( + allPatterns.filter((pattern) => pattern.change && pattern.change.p_value), + (pattern) => { + return pattern.change.p_value; + }, + 'asc' + ); + + const pValueCutOff = getPValueCutoff({ cutoff, max: sortedByPValueAsc[0]?.change.p_value }); + + return { + ownPatterns: ownPatterns.map((pattern) => ({ + ...pattern, + interesting: isInterestingPattern(pattern, pValueCutOff), + })), + patternsFromOtherEntities: patternsFromOtherEntities.map((pattern) => ({ + ...pattern, + interesting: isInterestingPattern(pattern, pValueCutOff), + })), + }; + + function categorizeOwnPatterns() { + return inferenceClient + .output({ + id: 'analyze_log_patterns', + connectorId, + system: systemPrompt, + input: `Based on the following log patterns from + ${formatEntity(entity)}, group these patterns into + the following categories: + + - normal (patterns that are indicative of ${normalDescription}) + - unusual (patterns that are indicative of ${unusualDescription}) + - warning (patterns that are indicative of ${warningDescription}) + - critical (patterns that are indicative of ${criticalDescription}) + + ## Log patterns: + + ${preparePatternsForLlm(logPatternsFromEntity)} + `, + schema: { + type: 'object', + properties: { + categories: { + type: 'array', + items: { + type: 'object', + properties: { + relevance: { + type: 'string', + enum: ['normal', 'unusual', 'warning', 'critical'], + }, + shortIds: { + type: 'array', + description: + 'The pattern IDs you want to group here. Use the pattern short ID.', + items: { + type: 'string', + }, + }, + }, + required: ['relevance', 'shortIds'], + }, + }, + }, + required: ['categories'], + } as const, + }) + .then((outputEvent) => { + return outputEvent.output.categories.flatMap((category) => { + return mapIdsBackToPatterns(category.shortIds).map((pattern) => { + return { + ...pattern, + relevance: category.relevance, + }; + }); + }); + }); + } + + function selectRelevantPatternsFromOtherEntities() { + return inferenceClient + .output({ + id: 'select_relevant_patterns_from_other_entities', + connectorId, + system: systemPrompt, + input: `Based on the following log patterns that + are NOT from ${serializedOwnEntity}, group these + patterns into the following categories: + + - irrelevant (patterns that are not relevant for + ${serializedOwnEntity}) + - normal (patterns that relevant for + ${serializedOwnEntity} and are indicative of ${normalDescription}) + - unusual (patterns that are relevant for + ${serializedOwnEntity} and are indicative of ${unusualDescription}) + - warning (patterns that are relevant for + ${serializedOwnEntity} and are indicative of ${warningDescription}) + - critical (patterns that are relevant for + ${serializedOwnEntity} and are indicative of ${criticalDescription}) + + Relevant patterns are messages that mention the + investigated entity, or things that are indicative + of critical failures or changes in the entity + that owns the log pattern. + + ## Log patterns: + + ${preparePatternsForLlm(logPatternsFromElsewhere)} + `, + schema: { + type: 'object', + properties: { + categories: { + type: 'array', + items: { + type: 'object', + properties: { + relevance: { + type: 'string', + enum: ['irrelevant', 'normal', 'unusual', 'warning', 'critical'], + }, + shortIds: { + type: 'array', + description: + 'The pattern IDs you want to group here. Use the pattern short ID.', + items: { + type: 'string', + }, + }, + }, + required: ['relevance', 'shortIds'], + }, + }, + }, + required: ['categories'], + } as const, + }) + .then((outputEvent) => { + return outputEvent.output.categories.flatMap((category) => { + return mapIdsBackToPatterns(category.shortIds).flatMap((pattern) => { + if (category.relevance === 'irrelevant') { + return []; + } + return [ + { + ...pattern, + relevance: category.relevance, + }, + ]; + }); + }); + }); + } + + function preparePatternsForLlm(patterns: FieldPatternResultWithChanges[]): string { + const groupedByField = groupBy(patterns, (pattern) => pattern.field); + + return Object.entries(groupedByField) + .map(([field, patternsForField]) => { + return `### \`${field}\` + + #### Patterns + + ${JSON.stringify( + patternsForField.map((pattern) => { + return { + shortId: patternIdLookupTable.take(pattern.regex), + regex: pattern.regex, + sample: pattern.sample, + highlight: pattern.highlight, + change: pattern.change, + }; + }) + )} + `; + }) + .join('\n\n'); + } + + function mapIdsBackToPatterns(ids?: string[]) { + return compact( + ids?.map((shortId) => { + const lookupId = patternIdLookupTable.lookup(shortId); + if (!lookupId) { + return undefined; + } + const pattern = patternsByRegex.get(lookupId); + return pattern; + }) + ); + } +} + +function isInterestingPattern( + pattern: Omit, + pValueCutOff: number +) { + return (pattern.change.p_value ?? 1) <= pValueCutOff || pattern.relevance !== 'normal'; +} + +function getPValueCutoff({ max, cutoff }: { max?: number; cutoff?: LogPatternCutOff }) { + if (cutoff?.pValue) { + return cutoff?.pValue; + } + + if (cutoff?.significance === 'high') { + return P_VALUE_SIGNIFICANCE_HIGH; + } + + if (cutoff?.significance === 'medium') { + return P_VALUE_SIGNIFICANCE_MEDIUM; + } + + if (max === undefined) { + return Number.MAX_VALUE; + } + + if (max <= P_VALUE_SIGNIFICANCE_HIGH) { + return P_VALUE_SIGNIFICANCE_HIGH; + } + + if (max <= P_VALUE_SIGNIFICANCE_MEDIUM) { + return P_VALUE_SIGNIFICANCE_MEDIUM; + } + + return Number.MAX_VALUE; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_entity/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_entity/index.ts new file mode 100644 index 0000000000000..bd050c4c61dfd --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_entity/index.ts @@ -0,0 +1,74 @@ +/* + * 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 { InferenceClient } from '@kbn/inference-plugin/server'; +import { TruncatedDocumentAnalysis } from '@kbn/observability-utils-common/llm/log_analysis/document_analysis'; +import { FieldPatternResultWithChanges } from '@kbn/observability-utils-server/entities/get_log_patterns'; +import { RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { formatEntity } from '../../util/format_entity'; +import { serializeKnowledgeBaseEntries } from '../../util/serialize_knowledge_base_entries'; +import { ScoredKnowledgeBaseEntry } from '../get_knowledge_base_entries'; +import { getInvestigateEntityTaskPrompt } from '../investigate_entity/prompts'; + +export async function describeEntity({ + inferenceClient, + connectorId, + entity, + contextForEntityInvestigation, + analysis, + ownPatterns, + kbEntries, +}: { + inferenceClient: InferenceClient; + connectorId: string; + entity: Record; + analysis: TruncatedDocumentAnalysis; + contextForEntityInvestigation: string; + ownPatterns: FieldPatternResultWithChanges[]; + kbEntries: ScoredKnowledgeBaseEntry[]; +}) { + const system = RCA_SYSTEM_PROMPT_BASE; + + const input = `${getInvestigateEntityTaskPrompt({ entity, contextForEntityInvestigation })} + + ## Context for investigating ${formatEntity(entity)} + + ${contextForEntityInvestigation} + + ${serializeKnowledgeBaseEntries(kbEntries)} + + ## Data samples + + ${JSON.stringify(analysis)} + + ## Log patterns + + ${JSON.stringify(ownPatterns.map(({ regex, sample }) => ({ regex, sample })))} + + ## Current task + + Describe the entity characteristics based on the sample documents and log + patterns. Put it in context of the investigation process. Mention the reason + why it's being investigated, and how it is related other entities that were + previously investigated. Mention these three things: + + - infrastructure & environment + - communication characteristics (protocols and endpoints) + - context of entity in investigation + + You shouldn't mention the log patterns, they will be analyzed elsewhere. + `; + + const response = await inferenceClient.output({ + id: 'describe_entity', + connectorId, + system, + input, + }); + + return response.content; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_log_patterns/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_log_patterns/index.ts new file mode 100644 index 0000000000000..ea5cc75eea1de --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_log_patterns/index.ts @@ -0,0 +1,189 @@ +/* + * 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 { InferenceClient } from '@kbn/inference-plugin/server'; +import { TruncatedDocumentAnalysis } from '@kbn/observability-utils-common/llm/log_analysis/document_analysis'; +import { omit, partition, sumBy } from 'lodash'; +import { RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { formatEntity } from '../../util/format_entity'; +import { serializeKnowledgeBaseEntries } from '../../util/serialize_knowledge_base_entries'; +import { AnalyzedLogPattern } from '../analyze_log_patterns'; +import { ScoredKnowledgeBaseEntry } from '../get_knowledge_base_entries'; +import { getInvestigateEntityTaskPrompt } from '../investigate_entity/prompts'; + +export interface LogPatternDescription { + content: string; + docCount: number; + interestingPatternCount: number; + ignoredPatternCount: number; + ignoredDocCount: number; +} + +export async function describeLogPatterns({ + inferenceClient, + connectorId, + entity, + contextForEntityInvestigation, + analysis, + ownPatterns: allOwnPatterns, + patternsFromOtherEntities, + kbEntries, +}: { + inferenceClient: InferenceClient; + connectorId: string; + entity: Record; + analysis: TruncatedDocumentAnalysis; + contextForEntityInvestigation: string; + ownPatterns: AnalyzedLogPattern[]; + patternsFromOtherEntities: AnalyzedLogPattern[]; + kbEntries: ScoredKnowledgeBaseEntry[]; +}): Promise { + const system = RCA_SYSTEM_PROMPT_BASE; + + const [ownInterestingPatterns, ignoredOwnPatterns] = partition( + allOwnPatterns, + (pattern) => pattern.interesting + ); + + const stats = { + docCount: sumBy(allOwnPatterns, (pattern) => pattern.count), + interestingPatternCount: ownInterestingPatterns.length, + otherInterestingPatternCount: patternsFromOtherEntities.length, + ignoredPatternCount: ignoredOwnPatterns.length, + ignoredDocCount: sumBy(ignoredOwnPatterns, (pattern) => pattern.count), + }; + + const header = `## Log analysis + + ### Stats for own log patterns: + - ${stats.docCount} documents analyzed + - ${stats.interestingPatternCount} interesting patterns + - ${stats.ignoredPatternCount} ignored patterns, accounting for + ${stats.ignoredDocCount} out of ${stats.docCount} documents + - ${stats.otherInterestingPatternCount} relevant patterns from + other entities`; + + if (!stats.interestingPatternCount && !stats.otherInterestingPatternCount) { + return { + ...stats, + content: `${header}\n\nNo interesting log patterns`, + }; + } + + const ownLogPatternsPrompt = ownInterestingPatterns.length + ? JSON.stringify( + ownInterestingPatterns.map(({ regex, sample, change, count, timeseries }) => ({ + regex, + sample, + change, + count, + timeseries: timeseries.map(({ x, y }, index) => { + if (index === change.change_point) { + return `${change.type} at ${new Date(x).toISOString()}: ${y}`; + } + return `${new Date(x).toISOString()}: ${y}`; + }), + })) + ) + : 'No own log patterns found'; + + const otherLogPatternsPrompt = patternsFromOtherEntities.length + ? JSON.stringify( + patternsFromOtherEntities.map( + ({ regex, sample, change, count, timeseries, metadata, field, highlight }) => ({ + regex, + sample, + change, + count, + timeseries: timeseries.map(({ x, y }, index) => { + if (index === change.change_point) { + return `${change.type} at ${new Date(x).toISOString()}: ${y}`; + } + return `${new Date(x).toISOString()}: ${y}`; + }), + entity: omit(metadata, field), + highlight, + }) + ) + ) + : 'No relevant log patterns found from other entities'; + + const input = `${getInvestigateEntityTaskPrompt({ entity, contextForEntityInvestigation })} + + ## Context for investigating ${formatEntity(entity)} + + ${contextForEntityInvestigation} + + ${serializeKnowledgeBaseEntries(kbEntries)} + + ## Data samples + + ${JSON.stringify(analysis)} + + ## Log patterns from ${formatEntity(entity)} + + ${ownLogPatternsPrompt} + + ## Possibly relevant log patterns from other entities + + ${otherLogPatternsPrompt} + + ### Interpreting log patterns and samples + + The pattern itself is what is consistent across all messages. The values from these parts + are separately given in "constants". There's also a single (random) _sample_ included, with + the variable part being given as well. E.g., if the failure in the sample is not part of the pattern + itself, you should mention that in your analysis. + + ## Task + + Using only the log patterns, describe your observations about the entity. + + Group these pattterns together based on topic. Some examples of these topics: + + - normal operations such as request logs + - connection issues to an upstream dependency + - startup messages + - garbage collection messages + + For patterns with change points, describe the trend before and after the change point based + on the data points. E.g.: + - A persisted drop to near-zero after 2020-01-01T05:00:00.000Z + - A spike from 10 to 100 at 2020-01-01T05:00:00.000Z, which went back down + to the average after 2020-01-01T05:02:00.000Z + - A trend change after 2020-01-01T05:00:00.000Z. The values ranged from 10 + to 20 before, but then after increased from 20 to 100 until + 2020-01-01T05:02:00.000Z. + + Do not: + - repeat the variables, instead, repeat the constants. + - repeat the timeseries as a whole, verbatim, in full. However, you can use individual data points + timestamps to illustrate the magnitude of the change, as in the example previously given. + - make up timestamps. + - do not separately list individual events if you have already mentioned + the pattern. + + Statistics: + + - ${stats.interestingPatternCount} patterns from ${formatEntity(entity)} + were collected + - ${stats.docCount} logs were categorized + - ${stats.ignoredPatternCount} patterns were deemed uninteresting and accounted + for ${stats.ignoredDocCount} out of the total amount of logs + `; + + const response = await inferenceClient.output({ + id: 'describe_log_patterns', + connectorId, + system, + input, + }); + + return { + ...stats, + content: response.content, + }; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/analyze_fetched_related_entities.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/analyze_fetched_related_entities.ts new file mode 100644 index 0000000000000..893533629ff06 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/analyze_fetched_related_entities.ts @@ -0,0 +1,438 @@ +/* + * 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 { InferenceClient } from '@kbn/inference-plugin/server'; +import { Logger } from '@kbn/logging'; +import { getEntityKuery } from '@kbn/observability-utils-common/entities/get_entity_kuery'; +import { + DocumentAnalysis, + TruncatedDocumentAnalysis, +} from '@kbn/observability-utils-common/llm/log_analysis/document_analysis'; +import { sortAndTruncateAnalyzedFields } from '@kbn/observability-utils-common/llm/log_analysis/sort_and_truncate_analyzed_fields'; +import { analyzeDocuments } from '@kbn/observability-utils-server/entities/analyze_documents'; +import { FieldPatternResultWithChanges } from '@kbn/observability-utils-server/entities/get_log_patterns'; +import { ObservabilityElasticsearchClient } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; +import { kqlQuery } from '@kbn/observability-utils-server/es/queries/kql_query'; +import { rangeQuery } from '@kbn/observability-utils-server/es/queries/range_query'; +import { chunk, isEmpty, isEqual } from 'lodash'; +import pLimit from 'p-limit'; +import { + RCA_PROMPT_DEPENDENCIES, + RCA_PROMPT_ENTITIES, + RCA_SYSTEM_PROMPT_BASE, +} from '../../prompts'; +import { chunkOutputCalls } from '../../util/chunk_output_calls'; +import { formatEntity } from '../../util/format_entity'; +import { serializeKnowledgeBaseEntries } from '../../util/serialize_knowledge_base_entries'; +import { toBlockquote } from '../../util/to_blockquote'; +import { ScoredKnowledgeBaseEntry } from '../get_knowledge_base_entries'; +import { RelatedEntityKeywordSearch } from './write_keyword_searches_for_related_entities'; + +export interface RelatedEntityFromSearchResults { + entity: { [x: string]: string }; + highlight: Record; + analysis: TruncatedDocumentAnalysis; +} + +function getPromptForFoundEntity({ entity, analysis, highlight }: RelatedEntityFromSearchResults) { + return `## Entity: ${formatEntity(entity)} + + ${toBlockquote(`### Search highlights for ${formatEntity(entity)} + ${JSON.stringify(highlight)}`)} + `; +} + +function getInputPromptBase({ + entity, + analysis, + ownPatterns, + patternsFromOtherEntities, + searches, + context, + kbEntries, +}: { + entity: Record; + analysis: TruncatedDocumentAnalysis; + ownPatterns: FieldPatternResultWithChanges[]; + patternsFromOtherEntities: FieldPatternResultWithChanges[]; + searches: RelatedEntityKeywordSearch[]; + context: string; + kbEntries: ScoredKnowledgeBaseEntry[]; +}) { + const otherPatternsPrompt = patternsFromOtherEntities.length + ? JSON.stringify( + patternsFromOtherEntities.map((pattern) => ({ + sample: pattern.sample, + regex: pattern.regex, + })) + ) + : 'No relevant log patterns from other entities found'; + const logPatternsPrompt = ownPatterns.length + ? JSON.stringify( + ownPatterns.map((pattern) => { + return { sample: pattern.sample, regex: pattern.regex }; + }) + ) + : 'No log patterns found'; + return `Describe possible relationships to the investigated entity ${formatEntity(entity)}. + + ## Context + + ${toBlockquote(context)} + + ${serializeKnowledgeBaseEntries(kbEntries)} + + ## Data analysis + ${JSON.stringify(analysis)} + + ## Log patterns for ${formatEntity(entity)} + + ${logPatternsPrompt} + + ## Patterns from other entities + + ${otherPatternsPrompt} + + ## Search keywords + + ${searches + .map(({ fragments, appearsAs }) => { + return `## Appears as: ${appearsAs} + + ### Fragments: + ${fragments.map((fragment) => `- \`${fragment}\``).join('\n')}`; + }) + .join('\n')}`; +} + +function getInputPromptInstructions({ entity }: { entity: Record }) { + return `### Indicator strength + +In an Observability system, indicators of relationships between entities like +services, hosts, users, or requests can vary in strength. Some indicators +clearly define relationships, while others only suggest correlations. Here’s a +breakdown of these indicators into strong, average, and weak categories, with an +additional look at how weak indicators can become strong when combined. + +Strong indicators provide definitive links between entities. Distributed tracing +IDs (trace, span, and parent) are among the strongest indicators, as they map +the complete request path across services, showing exact service interactions. +Session or user IDs are also strong indicators, capturing a user’s actions +across services or hosts and revealing issues specific to particular users. + +Average indicators give helpful context but may require supporting data to +clarify relationships. IP addresses, for instance, are moderately strong for +tracking inter-service calls within controlled environments but are weaker +across public or shared networks where IP reuse is common. URL paths also fall +in this category; they link entities to specific endpoints or service functions +and are moderately strong for tracking interactions between microservices with +known APIs. Port numbers are another average indicator. While they suggest the +service interaction type (HTTP, database), they generally need pairing with IP +addresses or URLs for more accuracy, as port numbers alone are often shared +across different services. + +Weak indicators are often too generic to imply a direct relationship but can +suggest possible correlations. Host names, for example, are broad and typically +cover a range of services or applications, especially in large clusters. +Time-based indicators, such as timestamps or TTL values, suggest possible timing +correlations but don’t establish a definitive link on their own. Status codes, +like HTTP 500 errors, indicate issues but don’t specify causality, often +requiring corroboration with stronger indicators like trace or session IDs. + +However, weak indicators can become strong when they appear together. For +instance, a combination of IP address, port, and timestamp can strongly suggest +a direct interaction between services, especially when the same combination is +seen repeatedly or in conjunction with related URLs. Similarly, a host name +combined with a unique URL path can strongly suggest that a specific service or +pod is generating particular request patterns, even if each alone is too +general. + +## Relevance to the investigation + +Given the context of the investigation, some entities might be very relevant +even if there is no strong evidence of them being a direct dependency of +${formatEntity(entity)}. For instance, the related entity might be an +orchestrating entity, or it might be involved in a specific operation related +to the ongoing issue. + +## Identifying entity relationships + +Your current task is to identify possible entity relationships for the +investigated entity ${formatEntity(entity)}. You will get some context, document +analysis for the investigated entity, and results from keyword searches that were +extracted from the entity. Based on this data, list entities that could possibly +be related to the given entity and/or the initial context. List the highly +relevant entities first. + +## Output + +For each possible relationship, describe the following things: +- The related entity (as a key-value pair) +- The indicators you have observed as evidence of the relationship. Include the +strength of the indicator, and the exact pieces of data that are related to it +(field names and values, in both the investigated entity, and the possibly +related entity). +- Reason how the related entity is related to both ${formatEntity(entity)} as a +dependency and the context. For instance, describe who is the caller and callee +or whether that is unclear, based on the data, or explain how it might be +related to the context. +- The overall likeliness of it being a relevant entity.`; +} + +export async function analyzeFetchedRelatedEntities({ + connectorId, + inferenceClient, + esClient, + start, + end, + searches, + groupingFields, + index, + entity, + ownPatterns, + analysis, + patternsFromOtherEntities, + logger: parentLogger, + context, + kbEntries, +}: { + connectorId: string; + inferenceClient: InferenceClient; + esClient: ObservabilityElasticsearchClient; + start: number; + end: number; + searches: RelatedEntityKeywordSearch[]; + groupingFields: string[]; + index: string | string[]; + entity: Record; + analysis: { + truncated: TruncatedDocumentAnalysis; + full: DocumentAnalysis; + }; + ownPatterns: FieldPatternResultWithChanges[]; + patternsFromOtherEntities: FieldPatternResultWithChanges[]; + context: string; + logger: Logger; + kbEntries: ScoredKnowledgeBaseEntry[]; +}): Promise<{ + summaries: string[]; + foundEntities: RelatedEntityFromSearchResults[]; +}> { + const entityFields = Object.keys(entity); + + const logger = parentLogger.get('findRelatedEntities'); + + logger.debug( + () => `Finding related entities: ${JSON.stringify({ entity, groupingFields, searches })}` + ); + + const allValuesFromEntity = Array.from( + new Set(analysis.full.fields.flatMap((field) => field.values)) + ); + + const foundEntities = ( + await Promise.all( + groupingFields.map((groupingField) => getResultsForGroupingField(groupingField)) + ) + ).flat(); + + logger.debug(() => `Found ${foundEntities.length} entities via keyword searches`); + + const system = `${RCA_SYSTEM_PROMPT_BASE} + + ${RCA_PROMPT_ENTITIES} + + ${RCA_PROMPT_DEPENDENCIES}`; + + const inputPromptBase = getInputPromptBase({ + entity, + analysis: analysis.truncated, + ownPatterns, + patternsFromOtherEntities, + searches, + context, + kbEntries, + }); + + const foundEntityPrompts = foundEntities.map((foundEntity) => { + return { + text: getPromptForFoundEntity(foundEntity), + id: formatEntity(foundEntity.entity), + }; + }); + + const inputPromptInstructions = getInputPromptInstructions({ entity }); + + // don't do more than 10 entities in a response, we'll run out of + // tokens + const requests = chunk(foundEntityPrompts, 10).flatMap((texts) => + chunkOutputCalls({ + system, + input: `${inputPromptBase} ${inputPromptInstructions}`, + texts, + tokenLimit: 32_000 - 6_000, + }) + ); + + const allRelevantEntityDescriptions = await Promise.all( + requests.map(async (request) => { + const outputCompleteEvent = await inferenceClient.output({ + id: 'describe_relevant_entities', + connectorId, + system: request.system, + input: `${inputPromptBase} + + # Found entities + + ${request.texts.map((text) => text.text).join('\n\n')} + + ${inputPromptInstructions}`, + }); + + return outputCompleteEvent.content; + }) + ); + + return { + summaries: allRelevantEntityDescriptions, + foundEntities, + }; + + async function getResultsForGroupingField( + groupingField: string + ): Promise { + const excludeQuery = isEqual([groupingField], entityFields) + ? `NOT (${groupingField}:"${entity[groupingField]}")` + : ``; + + const fieldCaps = await esClient.fieldCaps('check_if_grouping_field_exists', { + fields: [groupingField], + index, + index_filter: { + bool: { + filter: [...rangeQuery(start, end)], + }, + }, + }); + + if (isEmpty(fieldCaps.fields[groupingField])) { + return []; + } + + const keywordSearchResults = await esClient.search( + 'find_related_entities_via_keyword_searches', + { + track_total_hits: false, + index, + query: { + bool: { + must: [...rangeQuery(start, end), ...kqlQuery(excludeQuery)], + should: [ + { + multi_match: { + query: searches.flatMap((search) => search.fragments).join(' '), + fields: '*', + }, + }, + ], + minimum_should_match: 1, + }, + }, + fields: [groupingField], + collapse: { + field: groupingField, + }, + highlight: { + fields: { + '*': {}, + }, + }, + _source: false, + size: 1_000, + } + ); + + if (!keywordSearchResults.hits.hits.length) { + logger.debug(() => `No hits: ${JSON.stringify({ entity, groupingField, searches })}`); + return []; + } + + logger.trace( + () => + `Hits: ${JSON.stringify({ + entity, + groupingField, + searches, + count: keywordSearchResults.hits.hits.length, + hits: keywordSearchResults.hits.hits, + })}` + ); + + const limiter = pLimit(20); + + const groupingFieldAnalysis = await Promise.all( + keywordSearchResults.hits.hits.map(async (hit) => { + return limiter(async () => { + const groupValue = hit.fields![groupingField][0] as string; + + const analysisForGroupingField = await analyzeDocuments({ + esClient, + start, + end, + index, + kuery: getEntityKuery({ + [groupingField]: groupValue, + }), + }); + + const analysisWithRelevantValues = { + ...analysisForGroupingField, + fields: analysisForGroupingField.fields + .filter((field) => { + return !field.empty; + }) + .map((field) => { + const valuesFoundInEntity = field.values.filter((value) => { + return ( + allValuesFromEntity.includes(value) || + allValuesFromEntity.some((valueFromEntity) => { + return ( + typeof valueFromEntity === 'string' && + typeof value === 'string' && + (value.includes(valueFromEntity) || valueFromEntity.includes(value)) + ); + }) + ); + }); + return { + ...field, + values: valuesFoundInEntity, + }; + }), + }; + + return { + groupingField, + key: groupValue, + highlight: hit.highlight!, + analysis: sortAndTruncateAnalyzedFields(analysisWithRelevantValues), + }; + }); + }) + ); + + return groupingFieldAnalysis.map(({ key, highlight, analysis: analysisForGroupingField }) => { + return { + entity: { + [groupingField]: key, + }, + highlight, + analysis: analysisForGroupingField, + }; + }); + } +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/extract_related_entities.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/extract_related_entities.ts new file mode 100644 index 0000000000000..5480a76eb2096 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/extract_related_entities.ts @@ -0,0 +1,159 @@ +/* + * 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 stringify from 'json-stable-stringify'; +import pLimit from 'p-limit'; +import { RelatedEntityFromSearchResults } from '.'; +import { + RCA_PROMPT_DEPENDENCIES, + RCA_PROMPT_ENTITIES, + RCA_SYSTEM_PROMPT_BASE, +} from '../../prompts'; +import { RootCauseAnalysisContext } from '../../types'; +import { formatEntity } from '../../util/format_entity'; +import { getPreviouslyInvestigatedEntities } from '../../util/get_previously_investigated_entities'; +import { toBlockquote } from '../../util/to_blockquote'; + +export interface RelatedEntityDescription { + entity: Record; + reason: string; + confidence: string; +} + +export async function extractRelatedEntities({ + entity, + entityReport, + summaries, + foundEntities, + context, + rcaContext: { events, connectorId, inferenceClient }, +}: { + foundEntities: RelatedEntityFromSearchResults[]; + entity: Record; + entityReport: string; + summaries: string[]; + context: string; + rcaContext: Pick; +}): Promise<{ relatedEntities: RelatedEntityDescription[] }> { + const system = `${RCA_SYSTEM_PROMPT_BASE} + + ${RCA_PROMPT_ENTITIES} + + ${RCA_PROMPT_DEPENDENCIES}`; + + const previouslyInvestigatedEntities = getPreviouslyInvestigatedEntities({ events }); + + const previouslyInvestigatedEntitiesPrompt = previouslyInvestigatedEntities.length + ? `## Previously investigated entities + + ${previouslyInvestigatedEntities + .map((prevEntity) => `- ${formatEntity(prevEntity)}`) + .join('\n')}` + : ''; + + const prompts = summaries.map((summary) => { + return ` + # Investigated entity + + ${formatEntity(entity)} + + # Report + + ${toBlockquote(entityReport)} + + # Related entities report + + ${toBlockquote(summary)} + + ${previouslyInvestigatedEntitiesPrompt} + + # Context + + ${context} + + # Task + + Your current task is to extract relevant entities as a data structure from the + related entities report. Order them by relevance to the investigation, put the + most relevant ones first. + `; + }); + + const limiter = pLimit(5); + + const allEvents = await Promise.all( + prompts.map(async (input) => { + const completeEvent = await limiter(() => + inferenceClient.output({ + id: 'get_entity_relationships', + connectorId, + system, + input, + schema: { + type: 'object', + properties: { + related_entities: { + type: 'array', + items: { + type: 'object', + properties: { + entity: { + type: 'object', + properties: { + field: { + type: 'string', + }, + value: { + type: 'string', + }, + }, + required: ['field', 'value'], + }, + reason: { + type: 'string', + description: 'Describe why this entity might be relevant. Provide evidence.', + }, + confidence: { + type: 'string', + description: + 'Describe how confident you are in your conclusion about this relationship: low, moderate, high', + }, + }, + + required: ['entity', 'reason', 'confidence'], + }, + }, + }, + required: ['related_entities'], + } as const, + }) + ); + return completeEvent.output; + }) + ); + + const foundEntityIds = foundEntities.map(({ entity: foundEntity }) => stringify(foundEntity)); + + const relatedEntities = allEvents + .flat() + .flatMap((event) => { + return event.related_entities.map((item) => { + return { + entity: { [item.entity.field]: item.entity.value }, + reason: item.reason, + confidence: item.confidence, + }; + }); + }) + .filter((item) => { + return foundEntityIds.includes(stringify(item.entity)); + }); + + return { + relatedEntities, + }; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/index.ts new file mode 100644 index 0000000000000..05392db2d502c --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/index.ts @@ -0,0 +1,97 @@ +/* + * 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 { InferenceClient } from '@kbn/inference-plugin/server'; +import { Logger } from '@kbn/logging'; +import { + DocumentAnalysis, + TruncatedDocumentAnalysis, +} from '@kbn/observability-utils-common/llm/log_analysis/document_analysis'; +import { ObservabilityElasticsearchClient } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; +import { FieldPatternResultWithChanges } from '@kbn/observability-utils-server/entities/get_log_patterns'; +import { + analyzeFetchedRelatedEntities, + RelatedEntityFromSearchResults, +} from './analyze_fetched_related_entities'; +import { + RelatedEntityKeywordSearch, + writeKeywordSearchForRelatedEntities, +} from './write_keyword_searches_for_related_entities'; +import { ScoredKnowledgeBaseEntry } from '../get_knowledge_base_entries'; + +export type { RelatedEntityFromSearchResults }; + +export async function findRelatedEntities({ + connectorId, + inferenceClient, + start, + end, + index, + esClient, + entity, + analysis, + logger, + context, + ownPatterns, + patternsFromOtherEntities, + kbEntries, +}: { + connectorId: string; + inferenceClient: InferenceClient; + start: number; + end: number; + index: string | string[]; + esClient: ObservabilityElasticsearchClient; + entity: Record; + analysis: { + truncated: TruncatedDocumentAnalysis; + full: DocumentAnalysis; + }; + logger: Logger; + context: string; + ownPatterns: FieldPatternResultWithChanges[]; + patternsFromOtherEntities: FieldPatternResultWithChanges[]; + kbEntries: ScoredKnowledgeBaseEntry[]; +}): Promise<{ + searches: RelatedEntityKeywordSearch[]; + summaries: string[]; + foundEntities: RelatedEntityFromSearchResults[]; +}> { + const { groupingFields, searches } = await writeKeywordSearchForRelatedEntities({ + connectorId, + inferenceClient, + entity, + analysis: analysis.truncated, + ownPatterns, + context, + kbEntries, + }); + + const { summaries, foundEntities } = await analyzeFetchedRelatedEntities({ + entity, + connectorId, + start, + end, + esClient, + index, + inferenceClient, + searches, + groupingFields, + logger, + analysis, + ownPatterns, + patternsFromOtherEntities, + context, + kbEntries, + }); + + return { + searches, + summaries, + foundEntities, + }; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/write_keyword_searches_for_related_entities.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/write_keyword_searches_for_related_entities.ts new file mode 100644 index 0000000000000..6089ce748eb21 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/write_keyword_searches_for_related_entities.ts @@ -0,0 +1,199 @@ +/* + * 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 { InferenceClient } from '@kbn/inference-plugin/server'; +import { TruncatedDocumentAnalysis } from '@kbn/observability-utils-common/llm/log_analysis/document_analysis'; +import { FieldPatternResultWithChanges } from '@kbn/observability-utils-server/entities/get_log_patterns'; +import { RCA_PROMPT_ENTITIES, RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { formatEntity } from '../../util/format_entity'; +import { serializeKnowledgeBaseEntries } from '../../util/serialize_knowledge_base_entries'; +import { toBlockquote } from '../../util/to_blockquote'; +import { ScoredKnowledgeBaseEntry } from '../get_knowledge_base_entries'; + +const SYSTEM_PROMPT_ADDENDUM = `# Guide: Constructing Keyword Searches to Find Related Entities + +When investigating issues like elevated failure rates for a +specific endpoint, you can use the metadata at hand (IP addresses, +URLs, session IDs, tracing IDs, etc.) to build targeted keyword searches. +By extracting meaningful fragments from the data, you can correlate +related services or hosts across distributed systems. Here’s how +you can break down the metadata and format your searches. + +## Grouping fields + +Define grouping fields for the entities you want to extract. For +instance, "service.name" if you are looking for services, or +"kubernetes.pod.name" if you are looking for pods. Focus +on services, unless you are looking for deployment or +configuration changes. + +--- + +## Key Metadata and Search Format + +### Example: Investigating a service failure for \`/api/products\` + +You can break down various pieces of metadata into searchable +fragments. For each value, include a short description of its +relationship to the investigation. This value will be used +by the system to determine the relevance of a given entity +that matches the search request. + +### 1. **IP Address and Port** +- **Fragments:** + - \`"10.44.0.11:8080"\`: Full address. + - \`"10.44.0.11"\`: IP address only. + - \`"8080"\`: Port number. +- **Appears as:** This IP address and port are referenced as + and in the investigated entity +.. + +### 2. **Outgoing Request URL** +- **Fragments:** + - \`"http://called-service/api/product"\`: Full outgoing URL. + - \`"/api/product*"\`: Endpoint path. + - \`"called-service"\`: Service name of the upstream dependency. + - **Appears as:** These URL fragments appear as attributes.request.url + in the investigated entity . They could appear as referer + in the upstream dependency. + +### 3. **Parent and Span IDs** + - **Fragments:** + - \`"000aa"\`: Parent ID. + - \`"000bbb"\`: Span ID. + - **Relationship:** These ids appear as span.id and parent.id in the + investigated entity . They could be referring to spans + found on upstream or downstream services. + +--- + +## Example Search Format in JSON + +To structure your keyword search, format the fragments and their +relationships in a JSON array like this: + +\`\`\`json +{ + "groupingFields": [ "service.name" ], + "values": [ + { + "fragments": [ + "10.44.0.11:8080", + "10.44.0.11", + "8080" + ], + "appearsAs": "This IP address and port are referenced as and in the investigated entity ." + }, + { + "fragments": [ + "http:///api/product", + "/api/product", + "" + ], + "relationship": "These URL fragments appear as attributes.request.url in the investigated entity ." + }, + { + "fragments": [ + "000aa", + "000bbb" + ], + "relationship": " These ids appear as span.id and parent.id in the investigated entity . They could be referring to spans found on upstream or downstream services" + } + ] +}`; + +export interface RelatedEntityKeywordSearch { + fragments: string[]; + appearsAs: string; +} + +export async function writeKeywordSearchForRelatedEntities({ + connectorId, + inferenceClient, + entity, + analysis, + ownPatterns, + context, + kbEntries, +}: { + connectorId: string; + inferenceClient: InferenceClient; + entity: Record; + analysis: TruncatedDocumentAnalysis; + ownPatterns: FieldPatternResultWithChanges[]; + context: string; + kbEntries: ScoredKnowledgeBaseEntry[]; +}): Promise<{ + groupingFields: string[]; + searches: RelatedEntityKeywordSearch[]; +}> { + const logPatternsPrompt = ownPatterns.length + ? JSON.stringify( + ownPatterns.map((pattern) => ({ regex: pattern.regex, sample: pattern.sample })) + ) + : 'No log patterns found'; + + return inferenceClient + .output({ + id: 'extract_keyword_searches', + connectorId, + system: `${RCA_SYSTEM_PROMPT_BASE} + + ${RCA_PROMPT_ENTITIES}`, + input: `Your current task is to to extract keyword searches + to find related entities to the entity ${formatEntity(entity)}, + based on the following context: + + ## Investigation context + ${toBlockquote(context)} + + ${serializeKnowledgeBaseEntries(kbEntries)} + + ## Data analysis + ${JSON.stringify(analysis)} + + ## Log patterns + + ${logPatternsPrompt} + + ## Instructions + ${SYSTEM_PROMPT_ADDENDUM}`, + schema: { + type: 'object', + properties: { + groupingFields: { + type: 'array', + items: { + type: 'string', + }, + }, + searches: { + type: 'array', + items: { + type: 'object', + properties: { + fragments: { + type: 'array', + items: { + type: 'string', + }, + }, + appearsAs: { + type: 'string', + description: + 'Describe in what fields these values appear as in the investigated entity. You can mention multiple fields if applicable', + }, + }, + required: ['fragments', 'appearsAs'], + }, + }, + }, + required: ['searches', 'groupingFields'], + } as const, + }) + .then((event) => event.output); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/generate_timeline/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/generate_timeline/index.ts new file mode 100644 index 0000000000000..799755abec2e5 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/generate_timeline/index.ts @@ -0,0 +1,96 @@ +/* + * 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 { RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { RootCauseAnalysisContext } from '../../types'; +import { stringifySummaries } from '../../util/stringify_summaries'; + +type SignificantEventSeverity = 'info' | 'unusual' | 'warning' | 'critical'; + +type SignificantEventType = 'alert' | 'slo' | 'event'; + +export interface SignificantEvent { + severity: SignificantEventSeverity; + '@timestamp'?: string; + description: string; + type: SignificantEventType; +} + +export interface SignificantEventsTimeline { + events: SignificantEvent[]; +} + +export async function generateSignificantEventsTimeline({ + report, + rcaContext, +}: { + report: string; + rcaContext: RootCauseAnalysisContext; +}): Promise { + const { connectorId, inferenceClient } = rcaContext; + + return await inferenceClient + .output({ + id: 'generate_timeline', + system: RCA_SYSTEM_PROMPT_BASE, + connectorId, + input: `Your current task is to generate a timeline + of significant events, based on the given RCA report, + according to a structured schema. This timeline will + be presented to the user as a visualization. + + ${stringifySummaries(rcaContext)} + + # Report + + ${report} + `, + schema: { + type: 'object', + properties: { + events: { + type: 'array', + items: { + type: 'object', + properties: { + timestamp: { + type: 'string', + description: 'The ISO timestamp of when the event occurred', + }, + severity: { + type: 'string', + enum: ['info', 'unusual', 'warning', 'critical'], + }, + type: { + type: 'string', + enum: ['alert', 'slo', 'event'], + }, + description: { + type: 'string', + description: 'A description of the event', + }, + }, + required: ['severity', 'description'], + }, + }, + }, + required: ['events'], + } as const, + }) + .then((timelineCompleteEvent) => { + return { + events: timelineCompleteEvent.output.events.map((event) => { + return { + '@timestamp': event.timestamp, + severity: event.severity, + type: event.type ?? 'event', + description: event.description, + }; + }), + }; + }); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/get_knowledge_base_entries/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/get_knowledge_base_entries/index.ts new file mode 100644 index 0000000000000..8fbe9a43defea --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/get_knowledge_base_entries/index.ts @@ -0,0 +1,185 @@ +/* + * 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 { ShortIdTable } from '@kbn/observability-ai-assistant-plugin/common'; +import { decode, encode } from 'gpt-tokenizer'; +import { orderBy, sumBy } from 'lodash'; +import { RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { RootCauseAnalysisContext } from '../../types'; +import { formatEntity } from '../../util/format_entity'; +import { toBlockquote } from '../../util/to_blockquote'; + +export interface ScoredKnowledgeBaseEntry { + id: string; + text: string; + tokens: number; + score: number; + truncated?: { + tokens: number; + text: string; + }; +} + +export async function getKnowledgeBaseEntries({ + entity, + context, + rcaContext, + maxTokens: maxTokensForEntries, +}: { + entity: Record; + context: string; + rcaContext: RootCauseAnalysisContext; + maxTokens: number; +}): Promise { + const response = await rcaContext.observabilityAIAssistantClient.recall({ + queries: [ + ...Object.values(entity).map((value) => ({ text: value, boost: 3 })), + { text: context }, + ], + limit: { + tokenCount: Number.MAX_VALUE, + }, + }); + + const { inferenceClient, connectorId } = rcaContext; + + const shortIdTable = new ShortIdTable(); + + const system = RCA_SYSTEM_PROMPT_BASE; + + const input = `Re-order the attached documents, based on relevance to the context. + Score them between 1 and 5, based on their relative relevance to each other. The + most relevant doc should be scored 5, and the least relevant doc should be scored + 1. + + # Entity + + ${formatEntity(entity)} + + # Context + + ${toBlockquote(context)} + `; + + const maxTokensForScoring = rcaContext.tokenLimit - encode(system + input).length - 1_000; + + const entriesWithTokens = response.map((entry) => { + return { + id: entry.id, + text: entry.text, + tokens: encode(entry.text), + }; + }); + + const totalTokenCount = sumBy(entriesWithTokens, (entry) => entry.tokens.length); + + const truncatedEntriesWithShortIds = entriesWithTokens.map((entry) => { + const tokensForEntry = Math.floor( + (entry.tokens.length / totalTokenCount) * maxTokensForScoring + ); + + const truncatedText = decode(entry.tokens.slice(0, tokensForEntry)); + const isTruncated = tokensForEntry < entry.tokens.length; + + return { + id: entry.id, + tokens: entry.tokens, + shortId: shortIdTable.take(entry.id), + text: entry.text, + truncatedText, + isTruncated, + }; + }); + + const scoredEntries = await inferenceClient.output({ + id: 'score_entries', + connectorId, + system: RCA_SYSTEM_PROMPT_BASE, + input: `${input} + + ${truncatedEntriesWithShortIds + .map((entry) => { + return `# ID: ${entry.shortId} + + ## Text (${entry.isTruncated ? `truncated` : `not truncated `}) + + ${toBlockquote(entry.truncatedText)} + `; + }) + .join('\n\n')} + `, + stream: false, + schema: { + type: 'object', + properties: { + docs: { + type: 'array', + items: { + type: 'object', + properties: { + score: { + type: 'number', + description: + 'A score between 1 and 5, with 5 being most relevant, and 1 being least relevant', + }, + id: { + type: 'string', + }, + }, + required: ['score', 'id'], + }, + }, + }, + required: ['docs'], + }, + } as const); + + const scoresById = new Map(scoredEntries.output.docs.map((doc) => [doc.id, doc.score])); + + const entriesWithScore = truncatedEntriesWithShortIds.map((entry) => { + const score = scoresById.get(entry.shortId) ?? 0; + return { + ...entry, + score, + }; + }); + + const sortedEntries = orderBy(entriesWithScore, (entry) => entry.score, 'desc'); + + const returnedEntries: ScoredKnowledgeBaseEntry[] = []; + + const tokensLeft = maxTokensForEntries; + + sortedEntries.forEach((entry) => { + if (entry.tokens.length <= tokensLeft) { + returnedEntries.push({ + id: entry.id, + text: entry.text, + tokens: entry.tokens.length, + score: entry.score, + }); + return; + } + + const tokensToTake = tokensLeft; + if (tokensToTake > 0) { + const tookTokens = entry.tokens.slice(0, tokensToTake); + returnedEntries.push({ + id: entry.id, + text: entry.text, + tokens: entry.tokens.length, + score: entry.score, + truncated: { + text: decode(tookTokens), + tokens: tookTokens.length, + }, + }); + } + }); + + return returnedEntries; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/index.ts new file mode 100644 index 0000000000000..1e9ae7147211b --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/index.ts @@ -0,0 +1,268 @@ +/* + * 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 { getEntityKuery } from '@kbn/observability-utils-common/entities/get_entity_kuery'; +import { sortAndTruncateAnalyzedFields } from '@kbn/observability-utils-common/llm/log_analysis/sort_and_truncate_analyzed_fields'; +import { analyzeDocuments } from '@kbn/observability-utils-server/entities/analyze_documents'; +import { getDataStreamsForEntity } from '@kbn/observability-utils-server/entities/get_data_streams_for_entity'; +import { getAlertsForEntity } from '@kbn/observability-utils-server/entities/signals/get_alerts_for_entity'; +import { getSlosForEntity } from '@kbn/observability-utils-server/entities/signals/get_slos_for_entity'; +import { ObservabilityElasticsearchClient } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; +import { RootCauseAnalysisContext } from '../../types'; +import { stringifySummaries } from '../../util/stringify_summaries'; +import { analyzeLogPatterns } from '../analyze_log_patterns'; +import { describeEntity } from '../describe_entity'; +import { describeLogPatterns } from '../describe_log_patterns'; +import { findRelatedEntities } from '../find_related_entities'; +import { extractRelatedEntities } from '../find_related_entities/extract_related_entities'; +import { writeEntityInvestigationReport } from '../write_entity_investigation_report'; +import { EntityInvestigation } from './types'; +import { getKnowledgeBaseEntries } from '../get_knowledge_base_entries'; + +export type { EntityInvestigation }; + +export interface EntityInvestigationParameters { + entity: Record; + rcaContext: RootCauseAnalysisContext; + context: string; +} + +export async function investigateEntity( + parameters: EntityInvestigationParameters +): Promise { + const { + entity, + rcaContext, + rcaContext: { + inferenceClient, + connectorId, + start, + end, + esClient, + logger: parentLogger, + indices, + }, + context, + } = parameters; + const kuery = getEntityKuery(entity); + + const logger = parentLogger.get('investigateEntity'); + + logger.debug(() => `Investigating entity: ${JSON.stringify(parameters.entity)}`); + + const kbPromise = getKnowledgeBaseEntries({ + entity, + context, + rcaContext, + maxTokens: 4_000, + }).catch((error) => { + logger.error(`Could not fetch entries from knowledge base`); + logger.error(error); + return []; + }); + + const [{ dataStreams }, alerts, slos] = await getSignals({ ...parameters, kuery }); + + logger.debug( + () => + `Signals for entity ${JSON.stringify(entity)}: ${dataStreams.length} data streams, ${ + alerts.length + } alerts, ${slos.length} slos` + ); + + if (!dataStreams.length) { + return undefined; + } + + const fullAnalysis = await analyzeDataStreamsForEntity({ + start, + end, + esClient, + kuery, + dataStreams, + }); + + const truncatedAnalysis = sortAndTruncateAnalyzedFields(fullAnalysis); + + const kbEntries = await kbPromise; + + const { ownPatterns, patternsFromOtherEntities } = await analyzeLogPatterns({ + allAnalysis: [{ index: dataStreams, analysis: truncatedAnalysis }], + entity, + system: stringifySummaries(rcaContext), + cutoff: { + significance: 'high', + }, + rcaContext, + kbEntries, + }); + + logger.trace( + () => `Analyzed log patterns: ${JSON.stringify({ ownPatterns, patternsFromOtherEntities })}` + ); + + const entityReportPromise = Promise.all([ + describeEntity({ + inferenceClient, + analysis: truncatedAnalysis, + connectorId, + contextForEntityInvestigation: context, + entity, + ownPatterns, + kbEntries, + }), + describeLogPatterns({ + analysis: truncatedAnalysis, + connectorId, + contextForEntityInvestigation: context, + entity, + inferenceClient, + ownPatterns, + patternsFromOtherEntities, + kbEntries, + }), + ]).then(([entityDescription, logPatternDescription]) => { + return writeEntityInvestigationReport({ + connectorId, + inferenceClient, + entityDescription, + logPatternDescription, + contextForEntityInvestigation: context, + entity, + }).then((report) => { + return { + description: entityDescription, + logPatternDescription, + report, + }; + }); + }); + + const [entityReport, relatedEntitiesResults] = await Promise.all([ + entityReportPromise, + findRelatedEntities({ + connectorId, + end, + entity, + esClient, + index: indices.logs, + inferenceClient, + logger, + start, + context, + analysis: { + full: fullAnalysis, + truncated: truncatedAnalysis, + }, + ownPatterns, + patternsFromOtherEntities, + kbEntries, + }).then(async ({ searches, summaries, foundEntities }) => { + const report = await entityReportPromise; + + const { relatedEntities } = await extractRelatedEntities({ + entityReport: report.report, + summaries, + entity, + foundEntities, + context, + rcaContext, + }); + + return { + relatedEntities, + foundEntities, + searches, + summaries, + }; + }), + ]); + + return { + entity, + summary: [ + entityReport.description, + entityReport.logPatternDescription.content, + entityReport.report, + ].join('\n\n'), + relatedEntities: relatedEntitiesResults.relatedEntities, + attachments: { + alerts, + slos, + analysis: truncatedAnalysis, + ownPatterns, + patternsFromOtherEntities, + searches: relatedEntitiesResults.searches, + relatedEntitiesSummaries: relatedEntitiesResults.summaries, + kbEntries, + }, + }; +} + +async function getSignals({ + entity, + kuery, + rcaContext: { start, end, esClient, rulesClient, alertsClient, indices, spaceId }, +}: { + kuery: string; + entity: Record; + rcaContext: Pick< + RootCauseAnalysisContext, + 'start' | 'end' | 'esClient' | 'rulesClient' | 'alertsClient' | 'indices' | 'spaceId' + >; +}) { + return await Promise.all([ + getDataStreamsForEntity({ + esClient, + kuery, + index: indices.logs.concat(indices.traces), + }), + getAlertsForEntity({ entity, rulesClient, alertsClient, start, end, size: 10 }).then( + (alertsResponse) => { + return alertsResponse.hits.hits.map((hit) => hit._source!); + } + ), + getSlosForEntity({ + entity, + start, + end, + esClient, + size: 1000, + sloSummaryIndices: indices.sloSummaries, + spaceId, + }).then((slosResponse) => { + return slosResponse.hits.hits.map((hit) => hit._source); + }), + ]); +} + +async function analyzeDataStreamsForEntity({ + start, + end, + dataStreams, + esClient, + kuery, +}: { + start: number; + end: number; + kuery: string; + dataStreams: string[]; + esClient: ObservabilityElasticsearchClient; +}) { + const analysis = await analyzeDocuments({ + esClient, + start, + end, + index: dataStreams, + kuery, + }); + + return { + ...analysis, + fields: analysis.fields.filter((field) => !field.empty), + }; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/prompts.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/prompts.ts new file mode 100644 index 0000000000000..e9d042e88a6ec --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/prompts.ts @@ -0,0 +1,22 @@ +/* + * 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 { formatEntity } from '../../util/format_entity'; +import { toBlockquote } from '../../util/to_blockquote'; + +export const getInvestigateEntityTaskPrompt = ({ + entity, + contextForEntityInvestigation, +}: { + entity: Record; + contextForEntityInvestigation: string; +}) => `## Entity-Based Investigation: Task Guide + +In the investigation process, you are currently investigating the entity +${formatEntity(entity)}. The context given for this investigation is: + +${toBlockquote(contextForEntityInvestigation)}`; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/types.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/types.ts new file mode 100644 index 0000000000000..e29735c894f22 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/types.ts @@ -0,0 +1,31 @@ +/* + * 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 { ParsedTechnicalFields } from '@kbn/rule-registry-plugin/common'; +import type { TruncatedDocumentAnalysis } from '@kbn/observability-utils-common/llm/log_analysis/document_analysis'; +import type { AnalyzeLogPatternOutput } from '../analyze_log_patterns'; +import type { RelatedEntityDescription } from '../find_related_entities/extract_related_entities'; +import type { RelatedEntityKeywordSearch } from '../find_related_entities/write_keyword_searches_for_related_entities'; +import type { ScoredKnowledgeBaseEntry } from '../get_knowledge_base_entries'; + +export interface EntityInvestigation { + entity: Record; + summary: string; + relatedEntities: RelatedEntityDescription[]; + attachments: { + analysis: TruncatedDocumentAnalysis; + slos: Array< + Record & { + status: 'VIOLATED' | 'DEGRADED' | 'HEALTHY' | 'NO_DATA'; + } + >; + alerts: ParsedTechnicalFields[]; + searches: RelatedEntityKeywordSearch[]; + relatedEntitiesSummaries: string[]; + kbEntries: ScoredKnowledgeBaseEntry[]; + } & AnalyzeLogPatternOutput; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/observe_investigation_results/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/observe_investigation_results/index.ts new file mode 100644 index 0000000000000..c0b5367cded31 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/observe_investigation_results/index.ts @@ -0,0 +1,239 @@ +/* + * 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 { MessageRole } from '@kbn/inference-common'; +import { RCA_OBSERVE_TOOL_NAME } from '@kbn/observability-ai-common/root_cause_analysis'; +import { RCA_PROMPT_CHANGES, RCA_PROMPT_ENTITIES, RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { ObservationToolMessage, RootCauseAnalysisContext } from '../../types'; +import { formatEntity } from '../../util/format_entity'; +import { getPreviouslyInvestigatedEntities } from '../../util/get_previously_investigated_entities'; +import { stringifySummaries } from '../../util/stringify_summaries'; +import { toBlockquote } from '../../util/to_blockquote'; +import { EntityInvestigation } from '../investigate_entity/types'; + +const INITIAL_OBSERVATION_TASK_GUIDE = `Your current task is to write observations based on the initial context. You +should acknowledge the context briefly, and mention key observations from the +initial context. + +Then, briefly describe what change you are looking for. Are the symptoms: + +- rapid, or gradual onset? +- subtle or prounounced? + +If possible, mention the time of the change. + +When considering the initial context, reason about relevant changes to observe, +such as short-lived versus persistent changes or singular events, like scale +events, rollouts, or configuration changes. + +After, taking into account the capabilities you have, plan for next steps. + +Describe the next step, which is to investigate the entity found in the initial +context. Only mention the entity (as a field/value). Do not mention any +additional filters. + +Be brief, accurate, and critical.`; + +const INVESTIGATION_ADDENDUM = ` +**Task Guide: Observe the investigation results** + +You will receive one or more investigations. These investigations mention: +- a general characterization of the entity based on its data +- relevant log patterns +- other signals, like SLOs or alerts +- possibly related entities, and investigation suggestions + +First, you should briefly acknowledge the initial context of the investigation +and where it stands. + +Next, you should note key observations from the investigations, and how they relate +to the ongoing investigation. + +After, you should generate a timeline of significant events. For this timeline, +include events from previous observations. Additionally, include significant +events from the inspected investigations. Group events together in a topic +if needed. Significant events are things like: an increase in errors, deployment +events, a drop to zero for access logs, etc. In most cases, you do not want to +mention individual log messages, unless it is a particularly significant event +by itself. + +For each event, mention: + +- the timestamp of the event +- the nature of the change, if applicable +- data from the event, such as specific log patterns, alerts or slos +- the meaning of the event and how it is related to the initial context + +Do not include: +- the time range from the investigation itself (start/end) +- other events that occurred during the investigation itself, like running +log analysis or other patterns + +## Correlating significant events + +When correlating significant events, pay close attention to the timestamp of +the mentioned change, and how it correlates to the timestamp of the change you +want to correlate it to, such as the start time of an alert. An alert might be +delayed, but if you see many changes around a specific timestamp, and some of +them being significantly earlier, or later, the latter group is likely not +relevant. + +## Context and reasoning + +Next, use the timeline of events and the new observations to revise your +analysis of the initial context and the ongoing investigation. Reason about +how changes could be related: are they close in time, or far removed, compared +to others? Is the type of change similar? Is the magnitude of the change similar?`; + +const SUGGEST_NEXT_STEPS_PROMPT = ` +Next, consider next steps. it's always important to contextualize the significant +in the initial context of the investigation. Focus on your strongest pieces of +evidence. Your observations should be related to finding out the cause of the +initial context of the investigation - you should not concern yourself with the +impact on _other_ entities. + +Suggest to conclude the process when: + +- there is a clear and obvious root cause +- you have investigated more than 10 entities +- OR you cannot find any unhealthy entities +- there are no more entities to investigate + +If the conclusion is you need to continue your investigation, mention the entities +that should be investigated. Do this only if there is a significant change one of +the related entities will give you new insights into the root cause (instead of +just the impact). DO NOT investigate an entity more than once.`; + +const CONCLUDE_PROCESS_PROMPT = ` +You must suggest to conclude the process and write the final report, as your +capabilities do not allow you go investigate more entities.`; + +function getInitialPrompts(initialContext: string) { + return { + system: `${RCA_SYSTEM_PROMPT_BASE} + + ${RCA_PROMPT_ENTITIES} + + ${RCA_PROMPT_CHANGES}`, + input: `## Context + + ${initialContext} + + ${INITIAL_OBSERVATION_TASK_GUIDE}`, + }; +} + +function getObserveInvestigationsPrompts({ + investigations, + summaries, + rcaContext, +}: { + investigations: EntityInvestigation[]; + summaries: ObservationStepSummary[]; + rcaContext: RootCauseAnalysisContext; +}) { + const previouslyInvestigatedEntities = getPreviouslyInvestigatedEntities(rcaContext); + + const canContinue = + summaries.length <= 5 && + investigations.filter((investigation) => 'summary' in investigation).length <= 10; + + const investigationsPrompt = `Observe the following investigations that recently concluded: + ${investigations + .map((investigation, index) => { + return `## ${index + 1}: investigation of ${formatEntity(investigation.entity)} + + ${toBlockquote(investigation.summary)} + + ${ + investigation.relatedEntities.length + ? `### Relationships to ${formatEntity(investigation.entity)} + + ${toBlockquote(JSON.stringify(investigation.relatedEntities))} + + ` + : `` + } + `; + }) + .join('\n\n')} + + ${INVESTIGATION_ADDENDUM} + + ${ + canContinue + ? `${SUGGEST_NEXT_STEPS_PROMPT} + + ${ + previouslyInvestigatedEntities.length + ? `The following entities have been investigated previously. + Do not investigate them again: + + ${previouslyInvestigatedEntities.map((entity) => `- ${JSON.stringify(entity)}`).join('\n')}` + : `` + } + + ` + : CONCLUDE_PROCESS_PROMPT + } + + `; + + const systemPrompt = `${RCA_SYSTEM_PROMPT_BASE} + + ${RCA_PROMPT_ENTITIES} + + ${stringifySummaries(rcaContext)}`; + + return { + system: systemPrompt, + input: investigationsPrompt, + }; +} + +export interface ObservationStepSummary { + investigations: EntityInvestigation[]; + content: string; +} + +export function observeInvestigationResults({ + rcaContext, + rcaContext: { logger, events, initialContext, inferenceClient, connectorId }, + investigations, +}: { + rcaContext: RootCauseAnalysisContext; + investigations: EntityInvestigation[]; +}): Promise { + const summaries = events + .filter((event): event is ObservationToolMessage => { + return event.role === MessageRole.Tool && event.name === RCA_OBSERVE_TOOL_NAME; + }) + .map((event) => event.data); + + logger.debug( + () => + `Observing ${investigations.length} investigations (${summaries.length} previous summaries)` + ); + + const { system, input } = investigations.length + ? getObserveInvestigationsPrompts({ summaries, investigations, rcaContext }) + : getInitialPrompts(initialContext); + + return inferenceClient + .output({ + id: 'observe', + system, + input, + connectorId, + }) + .then((outputCompleteEvent) => { + return { + content: outputCompleteEvent.content, + investigations, + }; + }); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_entity_investigation_report/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_entity_investigation_report/index.ts new file mode 100644 index 0000000000000..58ef6f4ab5d04 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_entity_investigation_report/index.ts @@ -0,0 +1,84 @@ +/* + * 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 { InferenceClient } from '@kbn/inference-plugin/server'; +import { RCA_PROMPT_SIGNIFICANT_EVENTS, RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { formatEntity } from '../../util/format_entity'; +import { toBlockquote } from '../../util/to_blockquote'; +import { LogPatternDescription } from '../describe_log_patterns'; +import { getInvestigateEntityTaskPrompt } from '../investigate_entity/prompts'; + +export async function writeEntityInvestigationReport({ + inferenceClient, + connectorId, + entity, + contextForEntityInvestigation, + entityDescription, + logPatternDescription, +}: { + inferenceClient: InferenceClient; + connectorId: string; + entity: Record; + contextForEntityInvestigation: string; + entityDescription: string; + logPatternDescription: LogPatternDescription; +}): Promise { + const system = RCA_SYSTEM_PROMPT_BASE; + + const shouldGenerateTimeline = logPatternDescription.interestingPatternCount > 0; + + let input = `${getInvestigateEntityTaskPrompt({ entity, contextForEntityInvestigation })} + + ## Entity description + + ${toBlockquote(entityDescription)} + + ## Log pattern analysis + + ${toBlockquote(logPatternDescription.content)} + + # Current task + + Your current task is to write a report the investigation into ${formatEntity(entity)}. + The log pattern analysis and entity description will be added to your report (at the + top), so you don't need to repeat anything in it.`; + + if (shouldGenerateTimeline) { + input += `${RCA_PROMPT_SIGNIFICANT_EVENTS}\n\n`; + } + + input += `## Context and reasoning + + Reason about the role that the entity plays in the investigation, given the context. + mention evidence (hard pieces of data) when reasoning. + + Do not suggest next steps - this will happen in a follow-up task.`; + + if (shouldGenerateTimeline) { + input += `## Format + + Your reply should only contain two sections: + + - Timeline of significant events + - Context and reasoning + `; + } else { + input += `## Format + Your reply should only contain one section: + - Context and reasoning + `; + } + + const response = await inferenceClient.output({ + id: 'generate_entity_report', + connectorId, + input, + system, + }); + + return response.content; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_final_report/index.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_final_report/index.ts new file mode 100644 index 0000000000000..db7aa9f3b7aa3 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_final_report/index.ts @@ -0,0 +1,191 @@ +/* + * 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 { RCA_PROMPT_TIMELINE_GUIDE, RCA_SYSTEM_PROMPT_BASE } from '../../prompts'; +import { RootCauseAnalysisContext } from '../../types'; +import { stringifySummaries } from '../../util/stringify_summaries'; + +const SYSTEM_PROMPT_ADDENDUM = ` +# Guide: Writing a Root Cause Analysis (RCA) Report + +A Root Cause Analysis (RCA) report is the final step in a thorough +investigation. Its purpose is to provide a clear, evidence-backed explanation of +the underlying cause of an issue, as well as the impact. Even if no definitive +root cause is identified, the report should reflect the findings, the hypotheses +considered, and why certain assumptions were rejected. This guide will help +structure an RCA that distinguishes between cause and effect, organizes +evidence, and presents a timeline of key events. + +--- + +## 1. Introduction + +Start by summarizing the reason for the investigation. Provide a brief overview +of the incident, the affected services or entities, and the initial alerts or +issues that triggered the investigation. + +- **What prompted the investigation?** +- **Which entities were investigated?** +- **Was there a specific hypothesis proposed at the outset?** + +### Example: +- **Overview:** This RCA report investigates the elevated error rates in +\`myservice\` and its downstream dependencies, first identified through an SLO +breach for the \`/api/submit\` endpoint. The investigation considered multiple +entities and possible causes, including resource exhaustion and upstream service +failures. + +--- + +## 2. Investigation Summary + +Summarize the key steps of the investigation, outlining: +- **What hypotheses were proposed and why.** +- **Which entities were investigated (e.g., \`myservice\`, \`myotherservice\`, +\`notification-service\`).** +- **Which hypotheses were discarded and why.** + +For each hypothesis, present the supporting or contradicting evidence. + +- **Strong Indicators:** Clear, repeated evidence pointing toward or against a +hypothesis. +- **Weak Indicators:** Inconsistent or ambiguous data that did not provide +conclusive answers. + +#### Example Format: +- **Hypothesis 1:** Resource exhaustion in \`myservice\` caused elevated error +rates. + - **Evidence:** + - **Strong:** Memory usage exceeded 90% during the incident. + - **Weak:** CPU usage remained stable, making resource exhaustion a partial +explanation. + +- **Hypothesis 2:** Upstream latency from \`myotherservice\` caused delays. + - **Evidence:** + - **Strong:** API logs showed frequent retries and timeouts from +\`myotherservice\`. + - **Weak:** No errors were observed in \`myotherservice\` logs, suggesting an +issue isolated to \`myservice\`. + +--- + +## 3. Cause and Effect + +Differentiate between the **cause** (what initiated the issue) and the +**effect** (the impact or symptoms seen across the system). The cause should +focus on the root, while the effect describes the wider system response or +failure. + +- **Root Cause:** Identify the underlying problem, supported by strong evidence. +If no root cause is found, clearly state that the investigation did not lead to +a conclusive root cause. + +- **Impact:** Describe the downstream effects on other services, performance +degradation, or SLO violations. + +#### Example: +- **Cause:** The root cause of the elevated error rate was identified as a +memory leak in \`myservice\` that gradually led to resource exhaustion. +- **Effect:** This led to elevated latency and increased error rates at the +\`/api/submit\` endpoint, impacting downstream services like +\`notification-service\` that rely on responses from \`myservice\`. + +--- + +## 4. Evidence for Root Cause + +Present a structured section summarizing all the evidence that supports the +identified root cause. If no root cause is identified, outline the most +significant findings that guided or limited the investigation. + +- **Log Patterns:** Describe any abnormal log patterns observed, including +notable change points. +- **Alerts and SLOs:** Mention any alerts or breached SLOs that were triggered, +including their relevance to the investigation. +- **Data Analysis:** Include any data trends or patterns that were analyzed +(e.g., resource usage spikes, network traffic). + +#### Example: +- **Memory Usage:** Logs showed a steady increase in memory consumption starting +at 10:00 AM, peaking at 12:00 PM, where memory usage surpassed 90%, triggering +the alert. +- **Error Rate Logs:** Error rates for \`/api/submit\` began increasing around +11:30 AM, correlating with the memory pressure in \`myservice\`. +- **API Logs:** \`myotherservice\` API logs showed no internal errors, ruling out +an upstream dependency as the primary cause. + +--- + +## 5. Proposed Impact + +Even if the root cause is clear, it is important to mention the impact of the +issue on the system, users, and business operations. This includes: +- **Affected Services:** Identify the services impacted (e.g., downstream +dependencies). +- **Performance Degradation:** Describe any SLO breaches or performance +bottlenecks. +- **User Impact:** Explain how users or clients were affected (e.g., higher +latency, failed transactions). + +#### Example: +- **Impact:** The memory leak in \`myservice\` caused service degradation over a +2-hour window. This affected \`/api/submit\`, causing delays and failed +requests, ultimately impacting user-facing services relying on that endpoint. + +--- + +## 6. Timeline of Significant Events + +${RCA_PROMPT_TIMELINE_GUIDE} + +--- + +## 7. Conclusion and Next Steps + +Summarize the conclusions of the investigation: +- If a root cause was identified, confirm it with the strongest supporting +evidence. +- If no root cause was found, state that clearly and suggest areas for further +investigation or monitoring. + +Finally, outline the next steps: +- **Fixes or Mitigations:** Recommend any immediate actions (e.g., patch +deployment, configuration changes). +- **Monitoring Improvements:** Suggest new alerts or monitoring metrics based on +lessons learned. +- **Further Investigations:** If necessary, propose any follow-up investigations +to gather more evidence. + +#### Example: +- **Conclusion:** The root cause of the incident was a memory leak in +\`myservice\`, leading to resource exhaustion and elevated error rates at +\`/api/submit\`. The leak has been patched, and monitoring has been improved to +detect memory spikes earlier. +- **Next Steps:** Monitor memory usage for the next 24 hours to ensure no +recurrence. Investigate adding a memory ceiling for \`myservice\` to prevent +future resource exhaustion.`; + +export async function writeFinalReport({ + rcaContext, +}: { + rcaContext: RootCauseAnalysisContext; +}): Promise { + const { inferenceClient, connectorId } = rcaContext; + + return await inferenceClient + .output({ + id: 'write_final_report', + connectorId, + system: `${RCA_SYSTEM_PROMPT_BASE} + + ${SYSTEM_PROMPT_ADDENDUM}`, + input: `Write the RCA report, based on the observations. + + ${stringifySummaries(rcaContext)}`, + }) + .then((event) => event.content); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tools.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tools.ts new file mode 100644 index 0000000000000..8c3082aa320c4 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tools.ts @@ -0,0 +1,77 @@ +/* + * 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 { + RCA_END_PROCESS_TOOL_NAME, + RCA_INVESTIGATE_ENTITY_TOOL_NAME, + RCA_OBSERVE_TOOL_NAME, +} from '@kbn/observability-ai-common/root_cause_analysis/tool_names'; + +export const RCA_TOOLS = { + [RCA_OBSERVE_TOOL_NAME]: { + description: `Request an observation from another agent on + the results of the returned investigations. The title should + cover key new observations from the initial context or + completed investigations, not anything about next steps.`, + schema: { + type: 'object', + properties: { + title: { + type: 'string', + description: `A short title w/ the key new observations that will be displayed on top of a collapsible panel.`, + }, + }, + required: ['title'], + }, + }, + [RCA_END_PROCESS_TOOL_NAME]: { + description: `End the RCA process by requesting a + written report from another agent`, + schema: { + type: 'object', + properties: { + endProcess: { + type: 'boolean', + }, + }, + required: ['endProcess'], + }, + }, + [RCA_INVESTIGATE_ENTITY_TOOL_NAME]: { + description: `Investigate an entity`, + schema: { + type: 'object', + properties: { + context: { + type: 'string', + description: `Context that will be used in the investigation of the entity. Mention the initial context + of the investigation, a very short summary of the last observation if applicable, and pieces + of data that can be relevant for the investigation into the entity, such as timestamps or + keywords`, + }, + entity: { + type: 'object', + description: `The entity you want to investigate, such as a service. Use + the Elasticsearch field names and values. For example, for services, use + the following structure: ${JSON.stringify({ + entity: { field: 'service.name', value: 'opbeans-java' }, + })}`, + properties: { + field: { + type: 'string', + }, + value: { + type: 'string', + }, + }, + required: ['field', 'value'], + }, + }, + required: ['context', 'entity'], + }, + }, +} as const; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/types.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/types.ts new file mode 100644 index 0000000000000..6b6fa1886309c --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/types.ts @@ -0,0 +1,101 @@ +/* + * 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 { + ToolMessage, + UserMessage, + ToolCallsOf, + ToolChoice, + AssistantMessageOf, +} from '@kbn/inference-common'; +import { InferenceClient } from '@kbn/inference-plugin/server'; +import { Logger } from '@kbn/logging'; +import { AlertsClient } from '@kbn/rule-registry-plugin/server'; +import { RulesClient } from '@kbn/alerting-plugin/server'; +import { ObservabilityAIAssistantClient } from '@kbn/observability-ai-assistant-plugin/server'; +import { ObservabilityElasticsearchClient } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; +import { + RCA_END_PROCESS_TOOL_NAME, + RCA_INVESTIGATE_ENTITY_TOOL_NAME, + RCA_OBSERVE_TOOL_NAME, +} from '@kbn/observability-ai-common/root_cause_analysis'; +import { ObservationStepSummary } from './tasks/observe_investigation_results'; +import { EntityInvestigation } from './tasks/investigate_entity'; +import { SignificantEventsTimeline } from './tasks/generate_timeline'; +import { RCA_TOOLS } from './tools'; + +export type EndProcessToolMessage = ToolMessage< + typeof RCA_END_PROCESS_TOOL_NAME, + { + report: string; + timeline: SignificantEventsTimeline; + } +>; + +export type ObservationToolMessage = ToolMessage< + typeof RCA_OBSERVE_TOOL_NAME, + { + content: string; + }, + ObservationStepSummary +>; + +export type InvestigateEntityToolMessage = ToolMessage< + typeof RCA_INVESTIGATE_ENTITY_TOOL_NAME, + Pick, + { attachments: EntityInvestigation['attachments'] } +>; + +export type ToolErrorMessage = ToolMessage< + 'error', + { + error: { + message: string; + }; + } +>; + +export type RootCauseAnalysisEvent = + | RootCauseAnalysisToolMessage + | ToolErrorMessage + | UserMessage + | AssistantMessageOf<{ + tools: typeof RCA_TOOLS; + toolChoice?: ToolChoice; + }>; + +export type RootCauseAnalysisToolRequest< + TToolName extends keyof typeof RCA_TOOLS = keyof typeof RCA_TOOLS +> = ToolCallsOf<{ + tools: Pick; +}>['toolCalls'][number]; + +export type RootCauseAnalysisToolMessage = + | EndProcessToolMessage + | InvestigateEntityToolMessage + | ObservationToolMessage; + +export interface RootCauseAnalysisContext { + initialContext: string; + start: number; + end: number; + events: RootCauseAnalysisEvent[]; + indices: { + logs: string[]; + traces: string[]; + sloSummaries: string[]; + }; + inferenceClient: InferenceClient; + tokenLimit: number; + connectorId: string; + esClient: ObservabilityElasticsearchClient; + alertsClient: AlertsClient; + rulesClient: RulesClient; + logger: Logger; + spaceId: string; + observabilityAIAssistantClient: ObservabilityAIAssistantClient; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/call_tools.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/call_tools.ts new file mode 100644 index 0000000000000..046d6d401c33a --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/call_tools.ts @@ -0,0 +1,177 @@ +/* + * 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 { + Message, + ToolDefinition, + ToolChoice, + ToolCallsOf, + withoutChunkEvents, + withoutTokenCountEvents, + ToolMessage, + MessageOf, + MessageRole, +} from '@kbn/inference-common'; +import { InferenceClient } from '@kbn/inference-plugin/server'; +import { Logger } from '@kbn/logging'; +import { + defer, + last, + merge, + Observable, + of, + OperatorFunction, + share, + switchMap, + toArray, +} from 'rxjs'; + +interface CallToolOptions extends CallToolTools { + system: string; + messages: Message[]; + inferenceClient: InferenceClient; + connectorId: string; + logger: Logger; +} + +interface CallToolTools { + tools: Record; + toolChoice?: ToolChoice; +} + +type CallbackOf< + TCallToolTools extends CallToolTools, + TEmittedMessage extends Message +> = (parameters: { + messages: Message[]; + toolCalls: ToolCallsOf['toolCalls']; +}) => Observable; + +type GetNextRequestCallback = ({ + messages, + system, +}: { + messages: Message[]; + system: string; +}) => { system: string; messages: Message[] } & TCallToolTools; + +export function callTools( + { system, messages, inferenceClient, connectorId, tools, toolChoice, logger }: TCallToolOptions, + callback: CallbackOf +): Observable>; + +export function callTools< + TCallToolOptions extends Omit = never, + TCallToolTools extends CallToolTools = never, + TEmittedMessage extends Message = never +>( + options: TCallToolOptions, + getNextRequest: GetNextRequestCallback, + callback: CallbackOf +): Observable; + +export function callTools( + { system, messages, inferenceClient, connectorId, tools, toolChoice, logger }: CallToolOptions, + ...callbacks: + | [GetNextRequestCallback, CallbackOf] + | [CallbackOf] +): Observable { + const callback = callbacks.length === 2 ? callbacks[1] : callbacks[0]; + + const getNextRequest = + callbacks.length === 2 + ? callbacks[0] + : (next: { messages: Message[]; system: string }) => { + return { + ...next, + tools, + toolChoice, + }; + }; + + const nextRequest = getNextRequest({ system, messages }); + + const chatComplete$ = defer(() => + inferenceClient.chatComplete({ + connectorId, + stream: true, + ...nextRequest, + }) + ); + + const asCompletedMessages$ = chatComplete$.pipe( + withoutChunkEvents(), + withoutTokenCountEvents(), + switchMap((event) => { + return of({ + role: MessageRole.Assistant as const, + content: event.content, + toolCalls: event.toolCalls, + }); + }) + ); + + const withToolResponses$ = asCompletedMessages$ + .pipe( + switchMap((message) => { + if (message.toolCalls.length) { + return merge( + of(message), + callback({ toolCalls: message.toolCalls, messages: messages.concat(message) }) + ); + } + return of(message); + }) + ) + .pipe(handleNext()); + + return withToolResponses$; + + function handleNext(): OperatorFunction { + return (source$) => { + const shared$ = source$.pipe(share()); + + const next$ = merge( + shared$, + shared$.pipe( + toArray(), + last(), + switchMap((nextMessages) => { + logger.debug(() => + JSON.stringify( + nextMessages.map((message) => { + return { + role: message.role, + toolCalls: 'toolCalls' in message ? message.toolCalls : undefined, + toolCallId: 'toolCallId' in message ? message.toolCallId : undefined, + }; + }) + ) + ); + + if (nextMessages[nextMessages.length - 1].role !== MessageRole.Assistant) { + const options: CallToolOptions = { + system, + connectorId, + inferenceClient, + messages: messages.concat(nextMessages), + tools, + toolChoice, + logger, + }; + const after$ = callTools(options, getNextRequest, callback); + return after$; + } + return of(); + }) + ) + ); + + return next$; + }; + } +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/chunk_output_calls.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/chunk_output_calls.ts new file mode 100644 index 0000000000000..0a174b6451604 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/chunk_output_calls.ts @@ -0,0 +1,97 @@ +/* + * 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 { encode } from 'gpt-tokenizer'; +import { uniqueId } from 'lodash'; + +interface TextWithId { + id: string; + text: string; +} + +interface Parameters { + system: string; + input: string; + tokenLimit: number; +} + +interface ChunkedOutputRequest { + input: string; + system: string; +} + +export function chunkOutputCalls({}: Parameters & { texts: string[] }): Array< + ChunkedOutputRequest & { + texts: string[]; + } +>; + +export function chunkOutputCalls({}: Parameters & { texts: TextWithId[] }): Array< + ChunkedOutputRequest & { + texts: TextWithId[]; + } +>; + +export function chunkOutputCalls({ + system, + input, + texts, + tokenLimit, +}: Parameters & { + texts: string[] | TextWithId[]; +}) { + const inputAndSystemPromptCount = encode(system).length + encode(input).length; + + if (!texts.length) { + return [{ system, input, texts: [] }]; + } + + const textWithIds = texts.map((text) => { + if (typeof text === 'string') { + return { + id: uniqueId(), + text, + }; + } + return text; + }); + + const textsWithCount = textWithIds.map(({ text, id }) => ({ + tokenCount: encode(text).length, + text, + id, + })); + + const chunks: Array<{ tokenCount: number; texts: TextWithId[] }> = []; + + textsWithCount.forEach(({ text, id, tokenCount }) => { + let chunkWithRoomLeft = chunks.find((chunk) => { + return chunk.tokenCount + tokenCount <= tokenLimit; + }); + + if (!chunkWithRoomLeft) { + chunkWithRoomLeft = { texts: [], tokenCount: inputAndSystemPromptCount }; + chunks.push(chunkWithRoomLeft); + } + chunkWithRoomLeft.texts.push({ text, id }); + chunkWithRoomLeft.tokenCount += tokenCount; + }); + + const hasTextWithIds = texts.some((text) => typeof text !== 'string'); + + return chunks.map((chunk) => { + const textsForChunk = hasTextWithIds + ? chunk.texts + : chunk.texts.map((text) => (typeof text === 'string' ? text : text.text)); + + return { + system, + input, + texts: textsForChunk, + }; + }); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/format_entity.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/format_entity.ts new file mode 100644 index 0000000000000..d4fa1e545653e --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/format_entity.ts @@ -0,0 +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. + */ + +export function formatEntity(entity: Record) { + return Object.entries(entity) + .map(([field, value]) => `${field}:${value}`) + .join('/'); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/get_previously_investigated_entities.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/get_previously_investigated_entities.ts new file mode 100644 index 0000000000000..e42a6a8039e23 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/get_previously_investigated_entities.ts @@ -0,0 +1,22 @@ +/* + * 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 { MessageRole } from '@kbn/inference-common'; +import { RCA_INVESTIGATE_ENTITY_TOOL_NAME } from '@kbn/observability-ai-common/root_cause_analysis'; +import { InvestigateEntityToolMessage, RootCauseAnalysisContext } from '../types'; + +export function getPreviouslyInvestigatedEntities({ + events, +}: Pick) { + const investigationToolResponses = events.filter( + (event): event is InvestigateEntityToolMessage => { + return event.role === MessageRole.Tool && event.name === RCA_INVESTIGATE_ENTITY_TOOL_NAME; + } + ); + + return investigationToolResponses.map((event) => event.response.entity); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/serialize_knowledge_base_entries.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/serialize_knowledge_base_entries.ts new file mode 100644 index 0000000000000..39bc1a5b9a603 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/serialize_knowledge_base_entries.ts @@ -0,0 +1,34 @@ +/* + * 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 { ScoredKnowledgeBaseEntry } from '../tasks/get_knowledge_base_entries'; +import { toBlockquote } from './to_blockquote'; + +export function serializeKnowledgeBaseEntries(entries: ScoredKnowledgeBaseEntry[]) { + if (!entries.length) { + return `## Knowledge base + + No relevant knowledge base entries were found. + `; + } + + const serializedEntries = entries + .filter((entry) => entry.score >= 3) + .map( + (entry) => `## Entry \`${entry.id}\ (score: ${entry.score}, ${ + entry.truncated ? `truncated` : `not truncated` + }) + + ${toBlockquote(entry.text)}` + ); + + return `## Knowledge base + + The following relevant entries were found in the knowledge base + + ${serializedEntries.join('\n\n')}`; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/stringify_summaries.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/stringify_summaries.ts new file mode 100644 index 0000000000000..80e2ab85a408b --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/stringify_summaries.ts @@ -0,0 +1,47 @@ +/* + * 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 { compact } from 'lodash'; +import { MessageRole } from '@kbn/inference-common'; +import { RCA_OBSERVE_TOOL_NAME } from '@kbn/observability-ai-common/root_cause_analysis'; +import { formatEntity } from './format_entity'; +import { toBlockquote } from './to_blockquote'; +import { ObservationToolMessage, RootCauseAnalysisContext } from '../types'; + +export function stringifySummaries({ events }: RootCauseAnalysisContext): string { + const summaries = events + .filter((event): event is ObservationToolMessage => { + return event.role === MessageRole.Tool && event.name === RCA_OBSERVE_TOOL_NAME; + }) + .map((event) => event.data); + + if (!summaries.length) { + return `# Previous observations + + No previous observations`; + } + + return `# Previous observations + + ${summaries.map((summary, index) => { + const header = `## Observation #${index + 1}`; + + const entitiesHeader = summary.investigations.length + ? `### Investigated entities + + ${summary.investigations + .map((investigation) => `- ${formatEntity(investigation.entity)}`) + .join('\n')}` + : undefined; + + const summaryBody = `### Summary + + ${toBlockquote(summary.content)}`; + + return compact([header, entitiesHeader, summaryBody]).join('\n\n'); + })}`; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/to_blockquote.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/to_blockquote.ts new file mode 100644 index 0000000000000..38af158de611b --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/to_blockquote.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. + */ + +export function toBlockquote(input: string): string { + return input + .split('\n') + .map((line) => `> ${line}`) + .join('\n'); +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/validate_investigate_entity_tool_call.ts b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/validate_investigate_entity_tool_call.ts new file mode 100644 index 0000000000000..76fa0fcc379a3 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/validate_investigate_entity_tool_call.ts @@ -0,0 +1,124 @@ +/* + * 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 { MessageRole, ToolCallsOf } from '@kbn/inference-common'; +import { entityQuery } from '@kbn/observability-utils-common/es/queries/entity_query'; +import { RCA_INVESTIGATE_ENTITY_TOOL_NAME } from '@kbn/observability-ai-common/root_cause_analysis'; +import { isEqual } from 'lodash'; +import { getEntitiesByFuzzySearch } from '@kbn/observability-utils-server/entities/get_entities_by_fuzzy_search'; +import { RCA_TOOLS } from '../tools'; +import { + InvestigateEntityToolMessage, + RootCauseAnalysisContext, + RootCauseAnalysisToolRequest, +} from '../types'; +import { formatEntity } from './format_entity'; + +interface EntityExistsResultExists { + exists: true; + entity: Record; +} + +interface EntityExistsResultDoesNotExist { + exists: false; + entity: Record; + suggestions: string[]; +} + +type EntityExistsResult = EntityExistsResultExists | EntityExistsResultDoesNotExist; + +export async function validateInvestigateEntityToolCalls({ + rcaContext, + toolCalls, +}: { + rcaContext: Pick; + toolCalls: RootCauseAnalysisToolRequest[]; +}) { + const { events, esClient, indices, start, end } = rcaContext; + + const previouslyInvestigatedEntities = events + .filter( + (event): event is InvestigateEntityToolMessage => + event.role === MessageRole.Tool && event.name === RCA_INVESTIGATE_ENTITY_TOOL_NAME + ) + .map((toolResponse) => toolResponse.response.entity); + + const investigateEntityToolCalls = toolCalls.filter( + ( + toolCall + ): toolCall is ToolCallsOf<{ + tools: Pick; + }>['toolCalls'][number] => toolCall.function.name === RCA_INVESTIGATE_ENTITY_TOOL_NAME + ); + + if (!investigateEntityToolCalls.length) { + return []; + } + + const entitiesToInvestigate = investigateEntityToolCalls.map((toolCall) => { + const { entity: entityToInvestigate } = toolCall.function.arguments; + return { + [entityToInvestigate.field]: entityToInvestigate.value, + }; + }); + const entityExistsResponses: EntityExistsResult[] = await Promise.all( + entitiesToInvestigate.map(async (entity) => { + const response = await esClient.search('find_data_for_entity', { + track_total_hits: 1, + size: 0, + timeout: '1ms', + index: indices.logs.concat(indices.traces), + query: { + bool: { + filter: [...entityQuery(entity)], + }, + }, + }); + + const exists = response.hits.total.value > 0; + if (!exists) { + return getEntitiesByFuzzySearch({ + start, + end, + esClient, + index: indices.logs.concat(indices.traces), + entity, + }).then((suggestions) => { + return { + entity, + exists, + suggestions, + }; + }); + } + + return { entity, exists }; + }) + ); + + const alreadyInvestigatedEntities = entitiesToInvestigate.filter((entity) => { + return previouslyInvestigatedEntities.some((prevEntity) => isEqual(entity, prevEntity)); + }); + + const errors = [ + ...entityExistsResponses + .filter( + (entityExistsResult): entityExistsResult is EntityExistsResultDoesNotExist => + !entityExistsResult.exists + ) + .map(({ suggestions, entity }) => { + return `Entity ${formatEntity( + entity + )} does not exist. Did you mean one of ${suggestions.join(', ')}?`; + }), + ...alreadyInvestigatedEntities.map((entity) => { + return `Entity ${formatEntity(entity)} was already investigated before.`; + }), + ]; + + return errors; +} diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/tsconfig.json b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/tsconfig.json new file mode 100644 index 0000000000000..59f73df4273c8 --- /dev/null +++ b/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/tsconfig.json @@ -0,0 +1,29 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/observability-utils-common", + "@kbn/alerting-plugin", + "@kbn/rule-registry-plugin", + "@kbn/inference-plugin", + "@kbn/logging", + "@kbn/calculate-auto", + "@kbn/observability-ai-assistant-plugin", + "@kbn/inference-common", + "@kbn/observability-ai-common", + "@kbn/observability-utils-server", + ] +} diff --git a/x-pack/packages/observability/synthetics_test_data/README.md b/x-pack/solutions/observability/packages/synthetics_test_data/README.md similarity index 100% rename from x-pack/packages/observability/synthetics_test_data/README.md rename to x-pack/solutions/observability/packages/synthetics_test_data/README.md diff --git a/x-pack/solutions/observability/packages/synthetics_test_data/index.ts b/x-pack/solutions/observability/packages/synthetics_test_data/index.ts new file mode 100644 index 0000000000000..bf58a63025aa9 --- /dev/null +++ b/x-pack/solutions/observability/packages/synthetics_test_data/index.ts @@ -0,0 +1,9 @@ +/* + * 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 { makeUpSummary, makeDownSummary } from './src/make_summaries'; +export * from './src/e2e'; diff --git a/x-pack/solutions/observability/packages/synthetics_test_data/jest.config.js b/x-pack/solutions/observability/packages/synthetics_test_data/jest.config.js new file mode 100644 index 0000000000000..1d9e9717d3e40 --- /dev/null +++ b/x-pack/solutions/observability/packages/synthetics_test_data/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/packages/synthetics_test_data'], +}; diff --git a/x-pack/packages/observability/synthetics_test_data/kibana.jsonc b/x-pack/solutions/observability/packages/synthetics_test_data/kibana.jsonc similarity index 100% rename from x-pack/packages/observability/synthetics_test_data/kibana.jsonc rename to x-pack/solutions/observability/packages/synthetics_test_data/kibana.jsonc diff --git a/x-pack/packages/observability/synthetics_test_data/package.json b/x-pack/solutions/observability/packages/synthetics_test_data/package.json similarity index 100% rename from x-pack/packages/observability/synthetics_test_data/package.json rename to x-pack/solutions/observability/packages/synthetics_test_data/package.json diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/parse_args_params.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/parse_args_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/helpers/parse_args_params.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/parse_args_params.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/record_video.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/record_video.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/helpers/record_video.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/record_video.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/helpers/synthetics_runner.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/synthetics_runner.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/test_reporter.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/test_reporter.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/e2e/test_reporter.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/test_reporter.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/utils.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/e2e/utils.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/helpers/utils.ts diff --git a/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/index.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/index.ts new file mode 100644 index 0000000000000..89a1c34e32586 --- /dev/null +++ b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/index.ts @@ -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. + */ + +export { recordVideo } from './helpers/record_video'; +export { SyntheticsRunner } from './helpers/synthetics_runner'; +export { argv } from './helpers/parse_args_params'; +export { readKibanaConfig } from './tasks/read_kibana_config'; diff --git a/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/tasks/es_archiver.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/tasks/es_archiver.ts new file mode 100644 index 0000000000000..46000acd32e9e --- /dev/null +++ b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/tasks/es_archiver.ts @@ -0,0 +1,31 @@ +/* + * 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 Path from 'path'; +import { execSync } from 'child_process'; +import { REPO_ROOT } from '@kbn/repo-info'; + +const ES_ARCHIVE_DIR = './fixtures/es_archiver'; + +// Otherwise execSync would inject NODE_TLS_REJECT_UNAUTHORIZED=0 and node would abort if used over https +const NODE_TLS_REJECT_UNAUTHORIZED = '1'; + +export const esArchiverLoad = (folder: string) => { + const path = Path.join(ES_ARCHIVE_DIR, folder); + execSync( + `node ${REPO_ROOT}/scripts/es_archiver load "${path}" --config ${REPO_ROOT}/test/functional/config.base.js`, + { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } + ); +}; + +export const esArchiverUnload = (folder: string) => { + const path = Path.join(ES_ARCHIVE_DIR, folder); + execSync( + `node ${REPO_ROOT}/scripts/es_archiver unload "${path}" --config ${REPO_ROOT}/test/functional/config.base.js`, + { env: { ...process.env, NODE_TLS_REJECT_UNAUTHORIZED }, stdio: 'inherit' } + ); +}; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/tasks/read_kibana_config.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/tasks/read_kibana_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/tasks/read_kibana_config.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/e2e/tasks/read_kibana_config.ts diff --git a/x-pack/packages/observability/synthetics_test_data/src/make_summaries.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/make_summaries.ts similarity index 99% rename from x-pack/packages/observability/synthetics_test_data/src/make_summaries.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/make_summaries.ts index a44ffc15c28ec..21272cfe792e2 100644 --- a/x-pack/packages/observability/synthetics_test_data/src/make_summaries.ts +++ b/x-pack/solutions/observability/packages/synthetics_test_data/src/make_summaries.ts @@ -235,4 +235,7 @@ const commons = { }, }, }, + meta: { + space_id: 'default', + }, }; diff --git a/x-pack/packages/observability/synthetics_test_data/src/utils.ts b/x-pack/solutions/observability/packages/synthetics_test_data/src/utils.ts similarity index 100% rename from x-pack/packages/observability/synthetics_test_data/src/utils.ts rename to x-pack/solutions/observability/packages/synthetics_test_data/src/utils.ts diff --git a/x-pack/solutions/observability/packages/synthetics_test_data/tsconfig.json b/x-pack/solutions/observability/packages/synthetics_test_data/tsconfig.json new file mode 100644 index 0000000000000..957d814a9aa90 --- /dev/null +++ b/x-pack/solutions/observability/packages/synthetics_test_data/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/apm-plugin", + "@kbn/es-archiver", + "@kbn/repo-info", + ] +} diff --git a/x-pack/plugins/observability_solution/investigate_app/.storybook/jest_setup.js b/x-pack/solutions/observability/plugins/exploratory_view/.storybook/jest_setup.js similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/.storybook/jest_setup.js rename to x-pack/solutions/observability/plugins/exploratory_view/.storybook/jest_setup.js diff --git a/x-pack/plugins/observability_solution/investigate_app/.storybook/main.js b/x-pack/solutions/observability/plugins/exploratory_view/.storybook/main.js similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/.storybook/main.js rename to x-pack/solutions/observability/plugins/exploratory_view/.storybook/main.js diff --git a/x-pack/plugins/observability_solution/observability/.storybook/preview.js b/x-pack/solutions/observability/plugins/exploratory_view/.storybook/preview.js similarity index 100% rename from x-pack/plugins/observability_solution/observability/.storybook/preview.js rename to x-pack/solutions/observability/plugins/exploratory_view/.storybook/preview.js diff --git a/x-pack/solutions/observability/plugins/exploratory_view/README.md b/x-pack/solutions/observability/plugins/exploratory_view/README.md new file mode 100644 index 0000000000000..c3aa6d2d36c7d --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/README.md @@ -0,0 +1,27 @@ +# Exploratory View plugin + +A shared component for visualizing observability data types via lens embeddable. [For further details.](./public/components/exploratory_view/README.md) + +## Unit testing + +Note: Run the following commands from `kibana/x-pack/solutions/observability/plugins/exploratory_view`. + +### Run unit tests + +```bash +npx jest --watch +``` + +### Update snapshots + +```bash +npx jest --updateSnapshot +``` + +### Coverage + +HTML coverage report can be found in target/coverage/jest after tests have run. + +```bash +open target/coverage/jest/index.html +``` diff --git a/x-pack/plugins/observability_solution/exploratory_view/common/annotations.ts b/x-pack/solutions/observability/plugins/exploratory_view/common/annotations.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/common/annotations.ts rename to x-pack/solutions/observability/plugins/exploratory_view/common/annotations.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/common/i18n.ts b/x-pack/solutions/observability/plugins/exploratory_view/common/i18n.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/common/i18n.ts rename to x-pack/solutions/observability/plugins/exploratory_view/common/i18n.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/common/index.ts b/x-pack/solutions/observability/plugins/exploratory_view/common/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/common/index.ts rename to x-pack/solutions/observability/plugins/exploratory_view/common/index.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/common/processor_event.ts b/x-pack/solutions/observability/plugins/exploratory_view/common/processor_event.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/common/processor_event.ts rename to x-pack/solutions/observability/plugins/exploratory_view/common/processor_event.ts diff --git a/x-pack/solutions/observability/plugins/exploratory_view/e2e/README.md b/x-pack/solutions/observability/plugins/exploratory_view/e2e/README.md new file mode 100644 index 0000000000000..58dd5d0f8957f --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/e2e/README.md @@ -0,0 +1,15 @@ +## How to run these tests + +These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated +script for standing up the test server. + +### Start the server + +From `~/x-pack/solutions/observability/plugins/exploratory_view/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you +with an example run command when it finishes. + +### Run the tests + +From this directory, `~/x-pack/solutions/observability/plugins/exploratory_view/e2e`, you can now run `node ../../../../../scripts/functional_test_runner --config synthetics_run.ts`. + +In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/exploratory_view.ts b/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/exploratory_view.ts similarity index 98% rename from x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/exploratory_view.ts rename to x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/exploratory_view.ts index 877c13e93c373..99324d0fa921d 100644 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/exploratory_view.ts +++ b/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/exploratory_view.ts @@ -6,7 +6,7 @@ */ import { journey, step, before } from '@elastic/synthetics'; -import { recordVideo } from '../record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { createExploratoryViewUrl } from '../../public/components/shared/exploratory_view/configurations/exploratory_view_url'; import { loginToKibana, TIMEOUT_60_SEC, waitForLoadingToFinish } from '../utils'; diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/index.ts b/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/index.ts rename to x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/index.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/single_metric.journey.ts b/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/single_metric.journey.ts similarity index 96% rename from x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/single_metric.journey.ts rename to x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/single_metric.journey.ts index 6fcdb71ccffa2..23f847784308f 100644 --- a/x-pack/plugins/observability_solution/exploratory_view/e2e/journeys/single_metric.journey.ts +++ b/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/single_metric.journey.ts @@ -6,7 +6,7 @@ */ import { journey, step, before } from '@elastic/synthetics'; -import { recordVideo } from '../record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { createExploratoryViewUrl } from '../../public/components/shared/exploratory_view/configurations/exploratory_view_url'; import { loginToKibana, TIMEOUT_60_SEC, waitForLoadingToFinish } from '../utils'; diff --git a/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/step_duration.journey.ts b/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/step_duration.journey.ts new file mode 100644 index 0000000000000..861f4036b9ec0 --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/e2e/journeys/step_duration.journey.ts @@ -0,0 +1,90 @@ +/* + * 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 { journey, step } from '@elastic/synthetics'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; +import moment from 'moment'; +import { createExploratoryViewUrl } from '../../public/components/shared/exploratory_view/configurations/exploratory_view_url'; +import { loginToKibana, TIMEOUT_60_SEC, waitForLoadingToFinish } from '../utils'; + +journey('Step Duration series', async ({ page, params }) => { + recordVideo(page); + + page.setDefaultTimeout(TIMEOUT_60_SEC.timeout); + + const expUrl = createExploratoryViewUrl({ + reportType: 'kpi-over-time', + allSeries: [ + { + dataType: 'uptime', + time: { + from: moment().subtract(10, 'y').toISOString(), + to: moment().toISOString(), + }, + name: 'synthetics-series-1', + breakdown: 'monitor.type', + selectedMetricField: 'monitor.duration.us', + reportDefinitions: { + 'url.full': ['ALL_VALUES'], + }, + }, + ], + }); + + const baseUrl = `${params.kibanaUrl}${expUrl}`; + + step('Go to Exploratory view', async () => { + await page.goto(baseUrl, { + waitUntil: 'networkidle', + }); + await loginToKibana({ + page, + user: { username: 'elastic', password: 'changeme' }, + }); + }); + + step('build series with monitor duration', async () => { + await page.waitForNavigation(TIMEOUT_60_SEC); + + await waitForLoadingToFinish({ page }); + await page.click('text=browser'); + await page.click('text=http'); + await page.click('[aria-label="Remove report metric"]'); + await page.click('button:has-text("Select report metric")'); + await page.click('button:has-text("Step duration")'); + await page.waitForSelector('[data-test-subj=seriesBreakdown]'); + await page.getByTestId('seriesBreakdown').click(); + await page.click('button[role="option"]:has-text("Step name")'); + await page.click('.euiComboBox__inputWrap'); + await page.click('[role="combobox"][placeholder="Search Monitor name"]'); + await page.click('button[role="option"]:has-text("test-monitor - inline")'); + await page.click('button:has-text("Apply changes")'); + }); + + step('Verify that changes are applied', async () => { + await waitForLoadingToFinish({ page }); + + await page.click('[aria-label="series color: #54b399"]'); + await page.click('[aria-label="series color: #6092c0"]'); + await page.click('[aria-label="series color: #d36086"] path'); + await page.click('[aria-label="series color: #9170b8"]'); + await page.click('[aria-label="series color: #ca8eae"]'); + await page.click('[aria-label="series color: #d6bf57"]'); + await page.click('text=load homepage'); + await page.click('text=load homepage'); + await page.click('text=load github'); + await page.click('text=load github'); + await page.click('text=load google'); + await page.click('text=load google'); + await page.click('text=hover over products menu'); + await page.click('text=hover over products menu'); + await page.click('text=load homepage 1'); + await page.click('text=load homepage 1'); + await page.click('text=load homepage 2'); + await page.click('text=load homepage 2'); + }); +}); diff --git a/x-pack/solutions/observability/plugins/exploratory_view/e2e/synthetics_run.ts b/x-pack/solutions/observability/plugins/exploratory_view/e2e/synthetics_run.ts new file mode 100644 index 0000000000000..8ca6504d34987 --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/e2e/synthetics_run.ts @@ -0,0 +1,44 @@ +/* + * 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 { FtrConfigProviderContext } from '@kbn/test'; +import path from 'path'; +import { REPO_ROOT } from '@kbn/repo-info'; +import { SyntheticsRunner, argv } from '@kbn/observability-synthetics-test-data'; + +const { headless, grep, bail: pauseOnError } = argv; + +async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { + const kibanaConfig = await readConfigFile(require.resolve('@kbn/synthetics-e2e/config')); + + return { + ...kibanaConfig.getAll(), + testRunner: async ({ getService }: any) => { + const syntheticsRunner = new SyntheticsRunner(getService, { + headless, + match: grep, + pauseOnError, + }); + + await syntheticsRunner.setup(); + await syntheticsRunner.loadTestData( + `${REPO_ROOT}/x-pack/solutions/observability/plugins/ux/e2e/fixtures/`, + ['rum_8.0.0', 'rum_test_data'] + ); + await syntheticsRunner.loadTestData( + `${REPO_ROOT}/x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/`, + ['full_heartbeat', 'browser'] + ); + await syntheticsRunner.loadTestFiles(async () => { + require(path.join(__dirname, './journeys')); + }); + await syntheticsRunner.run(); + }, + }; +} + +// eslint-disable-next-line import/no-default-export +export default runE2ETests; diff --git a/x-pack/solutions/observability/plugins/exploratory_view/e2e/tsconfig.json b/x-pack/solutions/observability/plugins/exploratory_view/e2e/tsconfig.json new file mode 100644 index 0000000000000..43b0ddc6b6f9e --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/e2e/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "exclude": ["tmp", "target/**/*"], + "include": ["./**/*"], + "compilerOptions": { + "outDir": "target/types", + "types": ["node"] + }, + "kbn_references": [ + "@kbn/test", + "@kbn/repo-info", + "@kbn/observability-synthetics-test-data", + ] +} diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/utils.ts b/x-pack/solutions/observability/plugins/exploratory_view/e2e/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/helpers/utils.ts rename to x-pack/solutions/observability/plugins/exploratory_view/e2e/utils.ts diff --git a/x-pack/solutions/observability/plugins/exploratory_view/jest.config.js b/x-pack/solutions/observability/plugins/exploratory_view/jest.config.js new file mode 100644 index 0000000000000..5a879be3d92c9 --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/jest.config.js @@ -0,0 +1,21 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/plugins/exploratory_view'], + setupFiles: [ + '/x-pack/solutions/observability/plugins/exploratory_view/.storybook/jest_setup.js', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/observability/plugins/exploratory_view', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/exploratory_view/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/observability_solution/exploratory_view/kibana.jsonc b/x-pack/solutions/observability/plugins/exploratory_view/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/kibana.jsonc rename to x-pack/solutions/observability/plugins/exploratory_view/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/application/application.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/application/application.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/application/application.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/application/application.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/application/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/application/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/application/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/application/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/application/types.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/application/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/application/types.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/application/types.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/add_data_buttons/mobile_add_data.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/add_data_buttons/mobile_add_data.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/add_data_buttons/mobile_add_data.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/add_data_buttons/mobile_add_data.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/add_data_buttons/synthetics_add_data.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/add_data_buttons/synthetics_add_data.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/add_data_buttons/synthetics_add_data.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/add_data_buttons/synthetics_add_data.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/add_data_buttons/ux_add_data.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/add_data_buttons/ux_add_data.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/add_data_buttons/ux_add_data.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/add_data_buttons/ux_add_data.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/date_picker/date_picker.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/date_picker/date_picker.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/date_picker/date_picker.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/date_picker/date_picker.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/date_picker/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/date_picker/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/date_picker/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/date_picker/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/date_picker/typings.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/date_picker/typings.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/date_picker/typings.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/date_picker/typings.ts diff --git a/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/README.md b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/README.md new file mode 100644 index 0000000000000..23d370cd27024 --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/README.md @@ -0,0 +1,161 @@ +# Exploratory view component + +This component is used in observability plugin to show lens embeddable based observability visualizations. +The view is populated using configs stored as json within the view for each data type. + +This readme file contains few of the concepts being used in the component. + +Basic workflow for how exploratory view works, it looks like this + + +![Exploratory view workflow](https://i.imgur.com/Kgyfd29.png) + + +## Report Type + +The exploratory view report type controls how the data is visualized in the lens embeddable. The report type defines a set of constraints over the x and y axis. For example, the `kpi-over-time` report type is a time series chart type that plots key performance indicators over time, while the `data-distribution` chart plots the percentage of documents over key performance indicators. Current available data types can be found at `exploratory_view/configurations/constants`. + +Each report type has one or more available visualizations to plot data from one or more data types. + +## Data Types + +Each available visualization is backed by a data type. A data type consists of a set of configuration for displaying domain-specific visualizations for observability data. Some example data types include apm, metrics, and logs. + +For each respective data type, we fetch index pattern string from the app plugin contract, leveraging existing hasData API we have to return the index pattern string as well as a `hasData` boolean from each plugin. + +In most cases, there will be a 1-1 relation between apps and data types. + +### Observability `dataViews` + +Once we have index pattern string for each data type, a respective `dataView` is created. If there is an existing dataView for an index pattern, we will fetch and reuse it. + +After the dataView is created we also set field formats to promote human-readability. For example, we set format for monitor duration field, which is monitor.duration.us, from microseconds to seconds for browser monitors. + +### Visualization Configuration + +Each data type may have one or more visualization configurations. The data type to visualization configuration can be found in [`exploratory_view/obs_exploratory_view`](https://github.com/elastic/kibana/blob/main/x-pack/plugins/observability/public/components/shared/exploratory_view/obsv_exploratory_view.tsx#L86) + +Each visualization configuration is mapped to a single report type. + +Visualization configurations are used to define the UI we display for each report type and data type combination in the series builder. +Visualization configuration define UI options and display, including available `metrics`, available `filters`, available `breakdown` options, definitions for human-readable `labels`, and more. +The configuration also defines any custom base filters, which usually get pushed to a query, but are not displayed on the UI. You can also set more custom options on the configuration like colors which get used while rendering the chart. + +Visualization configuration can be found at [`exploratory_view/configurations`](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/shared/exploratory_view/configurations), where each data type typically has a folder that holds one or more visualization configurations. + +The configuration defined ultimately influences the lens embeddable attributes which get pushed to lens embeddable, rendering the chart. + +Some options in configuration are: + +#### Definition fields +They are also filters, but usually main filters, around which usually app UI is based. +For apm, it could be service name and for uptime, monitor name. + +#### Filters +You can define base filters in kql form or data plugin filter format, filters are strongly typed. + +#### Breakdown fields +List of fields from an index pattern, UI will use this to populate breakdown option select. + +#### Labels +You can set key/value map for your field labels. UI will use these to set labels for data view fields. + +Sample config +``` +{ + reportType: ReportTypes.KPI, + defaultSeriesType: 'bar_stacked', + xAxisColumn: { + sourceField: '@timestamp', + }, + yAxisColumns: [ + { + sourceField: REPORT_METRIC_FIELD, + operationType: 'median', + }, + ], + hasOperationType: false, + filterFields: ['observer.geo.name', 'monitor.type', 'tags'], // these fields get's resolved from relevant dataView + breakdownFields: [ + 'observer.geo.name', + 'monitor.type', + 'monitor.name', + PERCENTILE, + ], // these fields get's resolved from relevant dataView + baseFilters: [], + palette: { type: 'palette', name: 'status' }, + definitionFields: [ + { field: 'monitor.name', nested: SYNTHETICS_STEP_NAME, singleSelection: true }, + { field: 'url.full', filters: buildExistsFilter('summary.up', dataView) }, + ], + metricOptions: [ + { + label: MONITORS_DURATION_LABEL, + field: 'monitor.duration.us', + columnType: OPERATION_COLUMN, + } + ], + labels: { ...FieldLabels, [SUMMARY_UP]: UP_LABEL, [SUMMARY_DOWN]: DOWN_LABEL }, + } +``` + + + +## Lens Embeddable + +Lens embeddable is what actually renders the chart in exploratory view. + +Exploratory view generates the lens embeddable attributes as json and pass it to the component. + +Based on configuration, exploratory view generates layers and columns. + +Add a link to lens embeddable readme + +#### Example +A simple usage of lens embeddable example and playground options +[embedded_lens_example](../../../../../../../examples/embedded_lens_example) + +## Exploratory view Embeddable + +The primary purpose of the exploratory view is to embed it in observability solutions like uptime to replace +existing static visualizations, + +For that purpose, all the configuration options we define in the exploratory view can be used as an embeddable +via a component that is exposed using observability plugin contract, +usage looks like this + +`const ExploratoryViewComponent = props.plugins.observability.ExploratoryViewEmbeddable; +` + +``` + +``` + +there is an example in kibana example which you can view using +`yarn start --run-examples` and view the code at [Exploratory view embeddable](../../../../../../../examples/exploratory_view_example) + +#### Example +A simple usage of lens embeddable example and playground options, run kibana with +`yarn start --run-example` to see this example in action +source code is defined at [embedded_lens_example](../../../../../../../examples/embedded_lens_example) \ No newline at end of file diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/action_menu.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/action_menu/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/action_menu/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/action_menu/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/date_range_picker.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/date_range_picker.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/date_range_picker.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/date_range_picker.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/empty_view.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/empty_view.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/empty_view.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/empty_view.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/filter_label.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/filter_label.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/filter_label.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/filter_label.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/filter_label.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/filter_label.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/filter_label.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/filter_label.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/series_color_picker.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/series_color_picker.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/series_color_picker.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/series_color_picker.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/series_date_picker.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/series_date_picker.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/series_date_picker.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/series_date_picker/series_date_picker.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/selectable_url_list.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/translations.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/translations.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/translations.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/url_search.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/url_search.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/url_search.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/url_search.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/use_url_search.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/use_url_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/components/url_search/use_url_search.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/components/url_search/use_url_search.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/kpi_over_time_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/kpi_over_time_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/kpi_over_time_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/kpi_over_time_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/single_metric_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/single_metric_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/single_metric_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/alerts_configs/single_metric_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/apm/field_formats.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/apm/field_formats.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/apm/field_formats.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/apm/field_formats.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/constants.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/elasticsearch_fieldnames.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/elasticsearch_fieldnames.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/elasticsearch_fieldnames.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/elasticsearch_fieldnames.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_logs.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_logs.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_logs.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_logs.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_metrics.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_metrics.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/infra_metrics.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/synthetics.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/synthetics.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/synthetics.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/field_names/synthetics.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/index.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/index.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/index.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/labels.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/labels.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/labels.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/labels.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/url_constants.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/url_constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/constants/url_constants.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/constants/url_constants.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/default_configs.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/default_configs.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/default_configs.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/default_configs.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/exploratory_view_url.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/infra_logs/kpi_over_time_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/infra_logs/kpi_over_time_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/infra_logs/kpi_over_time_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/infra_logs/kpi_over_time_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/field_formats.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/field_formats.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/field_formats.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/field_formats.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/kpi_over_time_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/kpi_over_time_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/kpi_over_time_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/infra_metrics/kpi_over_time_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/heatmap_attributes.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/heatmap_attributes.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/heatmap_attributes.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/heatmap_attributes.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_columns/overall_column.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_columns/overall_column.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/lens_columns/overall_column.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_columns/overall_column.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/device_distribution_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/device_distribution_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/device_distribution_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/device_distribution_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/distribution_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/distribution_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/distribution_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/distribution_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/kpi_over_time_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/kpi_over_time_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/kpi_over_time_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/kpi_over_time_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_fields.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_fields.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_fields.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_fields.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_kpi_config.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_kpi_config.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_kpi_config.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/mobile/mobile_kpi_config.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/core_web_vitals_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/data_distribution_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/data_distribution_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/data_distribution_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/data_distribution_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/field_formats.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/field_formats.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/field_formats.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/field_formats.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/kpi_over_time_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/kpi_over_time_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/kpi_over_time_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/kpi_over_time_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/single_metric_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/single_metric_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/rum/single_metric_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/rum/single_metric_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/data_distribution_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/data_distribution_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/data_distribution_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/data_distribution_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/field_formats.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/field_formats.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/field_formats.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/field_formats.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/heatmap_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/heatmap_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/heatmap_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/heatmap_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/kpi_over_time_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/kpi_over_time_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/kpi_over_time_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/kpi_over_time_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/runtime_fields.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/runtime_fields.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/runtime_fields.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/runtime_fields.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/single_metric_config.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/single_metric_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/single_metric_config.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/synthetics/single_metric_config.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/mobile_test_attribute.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_cwv.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_cwv.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_cwv.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_cwv.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_data_view.json b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_data_view.json similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_data_view.json rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_data_view.json diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/utils.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/configurations/utils.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/utils.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/contexts/exploratory_view_config.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/contexts/exploratory_view_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/contexts/exploratory_view_config.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/contexts/exploratory_view_config.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/embeddable.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_actions.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_actions.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_actions.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts similarity index 97% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts index f4b73e16fbc4a..e7441ef0c45cd 100644 --- a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts +++ b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts @@ -45,7 +45,6 @@ export const useAppDataView = ({ setDataViews((prevState) => ({ ...(prevState ?? {}), [seriesDataType]: indPattern })); } } - // eslint-disable-next-line react-hooks/exhaustive-deps }, [dataViewTitle, seriesDataType, JSON.stringify(series)]); return { dataViews, loading: loading && !dataViews[seriesDataType] }; diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_embeddable_attributes.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_embeddable_attributes.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_embeddable_attributes.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_embeddable_attributes.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_local_data_view.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_local_data_view.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/embeddable/use_local_data_view.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/embeddable/use_local_data_view.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/exploratory_view.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/exploratory_view.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/exploratory_view.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/exploratory_view.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/exploratory_view.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/exploratory_view.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/exploratory_view.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/exploratory_view.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/chart_creation_info.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/embed_action.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/embed_action.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/embed_action.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/embed_action.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/last_updated.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/last_updated.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/last_updated.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/last_updated.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/refresh_button.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/refresh_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/header/refresh_button.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/header/refresh_button.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_add_to_case.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_app_data_view.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_app_data_view.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_app_data_view.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_app_data_view.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_ebt_telemetry.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_ebt_telemetry.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_ebt_telemetry.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_ebt_telemetry.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_kibana.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_kibana.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_kibana.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_attributes.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_formula_helper.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_formula_helper.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_formula_helper.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_lens_formula_helper.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_filters.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_filters.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_filters.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_series_storage.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_time_range.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/labels.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/labels.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/labels.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/labels.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/lens_embeddable.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/lens_embeddable.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/lens_embeddable.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/lens_embeddable.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/obsv_exploratory_view.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/obsv_exploratory_view.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/obsv_exploratory_view.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/obsv_exploratory_view.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/rtl_helpers.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/rtl_helpers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/rtl_helpers.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/rtl_helpers.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/breakdowns.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/label_breakdown.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/label_breakdown.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/label_breakdown.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/breakdown/label_breakdown.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_type_select.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_type_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_type_select.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_type_select.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/chart_types.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/data_type_select.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/date_picker_col.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/date_picker_col.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/date_picker_col.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/date_picker_col.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_expanded.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/incomplete_badge.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/incomplete_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/incomplete_badge.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/incomplete_badge.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/operation_type_select.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_col.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_type_select.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_type_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_type_select.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_type_select.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/selected_filters.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_actions.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_filter.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_filter.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_filter.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_info.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_info.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_info.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_info.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/series_name.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/text_report_definition_field.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/text_report_definition_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/text_report_definition_field.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/text_report_definition_field.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/components/filter_values_list.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/components/filter_values_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/components/filter_values_list.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/components/filter_values_list.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/components/labels_filter.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/components/labels_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/components/labels_filter.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/components/labels_filter.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/expanded_series_row.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/report_metric_options.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/series.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/series.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/series.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/series.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/series_editor.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/series_editor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/series_editor.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/series_editor.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/types.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/types.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/stringify_kueries.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/telemetry.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/utils.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/utils/utils.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/utils/utils.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/add_series_button.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/series_views.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/series_views.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/series_views.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/series_views.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/view_actions.test.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/view_actions.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/view_actions.test.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/view_actions.test.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/view_actions.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/view_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/exploratory_view/views/view_actions.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/exploratory_view/views/view_actions.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/filter_value_label/filter_value_label.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/filter_value_label/filter_value_label.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/filter_value_label/filter_value_label.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/filter_value_label/filter_value_label.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/components/shared/types.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/components/shared/types.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/components/shared/types.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/constants.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/constants.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/constants.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/context/date_picker_context.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/context/date_picker_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/context/date_picker_context.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/context/date_picker_context.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/context/plugin_context.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/context/plugin_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/context/plugin_context.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/context/plugin_context.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/data_handler.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/data_handler.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/data_handler.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/data_handler.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/data_handler.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/data_handler.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/data_handler.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/data_handler.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/hooks/use_date_picker_context.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/hooks/use_date_picker_context.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/hooks/use_date_picker_context.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/hooks/use_date_picker_context.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/hooks/use_plugin_context.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/hooks/use_plugin_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/hooks/use_plugin_context.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/hooks/use_plugin_context.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/index.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/index.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/index.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/plugin.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/plugin.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/routes/index.tsx b/x-pack/solutions/observability/plugins/exploratory_view/public/routes/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/routes/index.tsx rename to x-pack/solutions/observability/plugins/exploratory_view/public/routes/index.tsx diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/routes/json_rt.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/routes/json_rt.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/routes/json_rt.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/routes/json_rt.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/typings/fetch_overview_data/index.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/typings/fetch_overview_data/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/typings/fetch_overview_data/index.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/typings/fetch_overview_data/index.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/utils/date.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/utils/date.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/utils/date.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/utils/date.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/get_app_data_view.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/get_app_data_view.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/get_app_data_view.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/get_app_data_view.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/index.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/index.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/index.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/observability_data_views.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/observability_data_views.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/observability_data_views.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/utils/observability_data_views/observability_data_views.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/utils/url.test.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/utils/url.test.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.test.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/public/utils/url.ts b/x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.ts similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/public/utils/url.ts rename to x-pack/solutions/observability/plugins/exploratory_view/public/utils/url.ts diff --git a/x-pack/plugins/observability_solution/exploratory_view/scripts/e2e.js b/x-pack/solutions/observability/plugins/exploratory_view/scripts/e2e.js similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/scripts/e2e.js rename to x-pack/solutions/observability/plugins/exploratory_view/scripts/e2e.js diff --git a/x-pack/plugins/observability_solution/exploratory_view/scripts/storybook.js b/x-pack/solutions/observability/plugins/exploratory_view/scripts/storybook.js similarity index 100% rename from x-pack/plugins/observability_solution/exploratory_view/scripts/storybook.js rename to x-pack/solutions/observability/plugins/exploratory_view/scripts/storybook.js diff --git a/x-pack/solutions/observability/plugins/exploratory_view/tsconfig.json b/x-pack/solutions/observability/plugins/exploratory_view/tsconfig.json new file mode 100644 index 0000000000000..cfe8deebbcc50 --- /dev/null +++ b/x-pack/solutions/observability/plugins/exploratory_view/tsconfig.json @@ -0,0 +1,50 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": ["common/**/*", "public/**/*", "public/**/*.json", "../../../../../typings/**/*"], + "kbn_references": [ + "@kbn/core", + "@kbn/data-plugin", + "@kbn/home-plugin", + "@kbn/kibana-react-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/usage-collection-plugin", + "@kbn/licensing-plugin", + "@kbn/cases-plugin", + "@kbn/lens-plugin", + "@kbn/spaces-plugin", + "@kbn/unified-search-plugin", + "@kbn/discover-plugin", + "@kbn/i18n", + "@kbn/data-views-plugin", + "@kbn/embeddable-plugin", + "@kbn/triggers-actions-ui-plugin", + "@kbn/security-plugin", + "@kbn/navigation-plugin", + "@kbn/i18n-react", + "@kbn/es-types", + "@kbn/rison", + "@kbn/datemath", + "@kbn/es-query", + "@kbn/field-formats-plugin", + "@kbn/coloring", + "@kbn/ui-actions-plugin", + "@kbn/visualizations-plugin", + "@kbn/core-http-browser", + "@kbn/share-plugin", + "@kbn/charts-plugin", + "@kbn/shared-ux-router", + "@kbn/observability-shared-plugin", + "@kbn/core-ui-settings-browser-mocks", + "@kbn/observability-ai-assistant-plugin", + "@kbn/shared-ux-link-redirect-app", + "@kbn/react-kibana-context-render", + "@kbn/react-kibana-mount", + "@kbn/core-analytics-browser", + "@kbn/expressions-plugin", + "@kbn/ebt-tools" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/observability_solution/investigate/README.md b/x-pack/solutions/observability/plugins/investigate/README.md similarity index 100% rename from x-pack/plugins/observability_solution/investigate/README.md rename to x-pack/solutions/observability/plugins/investigate/README.md diff --git a/x-pack/plugins/observability_solution/investigate/common/index.ts b/x-pack/solutions/observability/plugins/investigate/common/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/common/index.ts rename to x-pack/solutions/observability/plugins/investigate/common/index.ts diff --git a/x-pack/plugins/observability_solution/investigate/common/types.ts b/x-pack/solutions/observability/plugins/investigate/common/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/common/types.ts rename to x-pack/solutions/observability/plugins/investigate/common/types.ts diff --git a/x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts b/x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/common/utils/merge_plain_objects.ts rename to x-pack/solutions/observability/plugins/investigate/common/utils/merge_plain_objects.ts diff --git a/x-pack/solutions/observability/plugins/investigate/jest.config.js b/x-pack/solutions/observability/plugins/investigate/jest.config.js new file mode 100644 index 0000000000000..34bb5b6988136 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate/jest.config.js @@ -0,0 +1,23 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: [ + '/x-pack/solutions/observability/plugins/investigate/public', + '/x-pack/solutions/observability/plugins/investigate/common', + '/x-pack/solutions/observability/plugins/investigate/server', + ], + setupFiles: [], + collectCoverage: true, + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/investigate/{common,public,server}/**/*.{js,ts,tsx}', + ], + + coverageReporters: ['html'], +}; diff --git a/x-pack/plugins/observability_solution/investigate/kibana.jsonc b/x-pack/solutions/observability/plugins/investigate/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/investigate/kibana.jsonc rename to x-pack/solutions/observability/plugins/investigate/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/investigate/public/index.ts b/x-pack/solutions/observability/plugins/investigate/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/public/index.ts rename to x-pack/solutions/observability/plugins/investigate/public/index.ts diff --git a/x-pack/plugins/observability_solution/investigate/public/investigation/item_definition_registry.ts b/x-pack/solutions/observability/plugins/investigate/public/investigation/item_definition_registry.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/public/investigation/item_definition_registry.ts rename to x-pack/solutions/observability/plugins/investigate/public/investigation/item_definition_registry.ts diff --git a/x-pack/plugins/observability_solution/investigate/public/plugin.tsx b/x-pack/solutions/observability/plugins/investigate/public/plugin.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate/public/plugin.tsx rename to x-pack/solutions/observability/plugins/investigate/public/plugin.tsx diff --git a/x-pack/plugins/observability_solution/investigate/public/types.ts b/x-pack/solutions/observability/plugins/investigate/public/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/public/types.ts rename to x-pack/solutions/observability/plugins/investigate/public/types.ts diff --git a/x-pack/plugins/observability_solution/investigate/public/util/get_es_filters_from_global_parameters.ts b/x-pack/solutions/observability/plugins/investigate/public/util/get_es_filters_from_global_parameters.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/public/util/get_es_filters_from_global_parameters.ts rename to x-pack/solutions/observability/plugins/investigate/public/util/get_es_filters_from_global_parameters.ts diff --git a/x-pack/plugins/observability_solution/investigate/server/config.ts b/x-pack/solutions/observability/plugins/investigate/server/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/server/config.ts rename to x-pack/solutions/observability/plugins/investigate/server/config.ts diff --git a/x-pack/plugins/observability_solution/investigate/server/index.ts b/x-pack/solutions/observability/plugins/investigate/server/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/server/index.ts rename to x-pack/solutions/observability/plugins/investigate/server/index.ts diff --git a/x-pack/plugins/observability_solution/investigate/server/plugin.ts b/x-pack/solutions/observability/plugins/investigate/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/server/plugin.ts rename to x-pack/solutions/observability/plugins/investigate/server/plugin.ts diff --git a/x-pack/plugins/observability_solution/investigate/server/types.ts b/x-pack/solutions/observability/plugins/investigate/server/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate/server/types.ts rename to x-pack/solutions/observability/plugins/investigate/server/types.ts diff --git a/x-pack/solutions/observability/plugins/investigate/tsconfig.json b/x-pack/solutions/observability/plugins/investigate/tsconfig.json new file mode 100644 index 0000000000000..14a188c1a0ca2 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "../../../../typings/**/*", + "common/**/*", + "public/**/*", + "typings/**/*", + "public/**/*.json", + "server/**/*", ], + "kbn_references": [ + "@kbn/core", + "@kbn/logging", + "@kbn/config-schema", + "@kbn/es-query", + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/observability_solution/investigate_app/.storybook/extend_props.ts b/x-pack/solutions/observability/plugins/investigate_app/.storybook/extend_props.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/.storybook/extend_props.ts rename to x-pack/solutions/observability/plugins/investigate_app/.storybook/extend_props.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/.storybook/get_mock_investigate_app_services.tsx b/x-pack/solutions/observability/plugins/investigate_app/.storybook/get_mock_investigate_app_services.tsx similarity index 95% rename from x-pack/plugins/observability_solution/investigate_app/.storybook/get_mock_investigate_app_services.tsx rename to x-pack/solutions/observability/plugins/investigate_app/.storybook/get_mock_investigate_app_services.tsx index 42ccc20d52a71..d0e9e936dd598 100644 --- a/x-pack/plugins/observability_solution/investigate_app/.storybook/get_mock_investigate_app_services.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/.storybook/get_mock_investigate_app_services.tsx @@ -17,6 +17,7 @@ import { SearchBar, IUnifiedSearchPluginServices } from '@kbn/unified-search-plu import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { merge } from 'lodash'; import { Storage } from '@kbn/kibana-utils-plugin/public'; +import { of } from 'rxjs'; import type { EsqlQueryMeta } from '../public/services/esql'; import type { InvestigateAppServices } from '../public/services/types'; import { InvestigateAppKibanaContext } from '../public/hooks/use_kibana'; @@ -54,6 +55,10 @@ export function getMockInvestigateAppContext(): DeeplyMockedKeys Promise.resolve()), + stream: jest.fn().mockImplementation(() => of()) as any, + }, }; const core = coreMock.createStart(); diff --git a/x-pack/plugins/observability_solution/observability/.storybook/jest_setup.js b/x-pack/solutions/observability/plugins/investigate_app/.storybook/jest_setup.js similarity index 100% rename from x-pack/plugins/observability_solution/observability/.storybook/jest_setup.js rename to x-pack/solutions/observability/plugins/investigate_app/.storybook/jest_setup.js diff --git a/x-pack/plugins/observability_solution/observability/.storybook/main.js b/x-pack/solutions/observability/plugins/investigate_app/.storybook/main.js similarity index 100% rename from x-pack/plugins/observability_solution/observability/.storybook/main.js rename to x-pack/solutions/observability/plugins/investigate_app/.storybook/main.js diff --git a/x-pack/plugins/observability_solution/investigate_app/.storybook/mock_kibana_services.ts b/x-pack/solutions/observability/plugins/investigate_app/.storybook/mock_kibana_services.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/.storybook/mock_kibana_services.ts rename to x-pack/solutions/observability/plugins/investigate_app/.storybook/mock_kibana_services.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/.storybook/preview.js b/x-pack/solutions/observability/plugins/investigate_app/.storybook/preview.js similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/.storybook/preview.js rename to x-pack/solutions/observability/plugins/investigate_app/.storybook/preview.js diff --git a/x-pack/plugins/observability_solution/investigate_app/.storybook/storybook_decorator.tsx b/x-pack/solutions/observability/plugins/investigate_app/.storybook/storybook_decorator.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/.storybook/storybook_decorator.tsx rename to x-pack/solutions/observability/plugins/investigate_app/.storybook/storybook_decorator.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/README.md b/x-pack/solutions/observability/plugins/investigate_app/README.md similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/README.md rename to x-pack/solutions/observability/plugins/investigate_app/README.md diff --git a/x-pack/plugins/observability_solution/investigate_app/common/paths.ts b/x-pack/solutions/observability/plugins/investigate_app/common/paths.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/common/paths.ts rename to x-pack/solutions/observability/plugins/investigate_app/common/paths.ts diff --git a/x-pack/solutions/observability/plugins/investigate_app/jest.config.js b/x-pack/solutions/observability/plugins/investigate_app/jest.config.js new file mode 100644 index 0000000000000..fdd824900e3fc --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/jest.config.js @@ -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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: [ + '/x-pack/solutions/observability/plugins/investigate_app/public', + '/x-pack/solutions/observability/plugins/investigate_app/server', + ], + setupFiles: [ + '/x-pack/solutions/observability/plugins/investigate_app/.storybook/jest_setup.js', + ], + collectCoverage: true, + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/investigate_app/{public,server}/**/*.{js,ts,tsx}', + ], + + coverageReporters: ['html'], +}; diff --git a/x-pack/solutions/observability/plugins/investigate_app/kibana.jsonc b/x-pack/solutions/observability/plugins/investigate_app/kibana.jsonc new file mode 100644 index 0000000000000..eb69c6f9ea534 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/kibana.jsonc @@ -0,0 +1,45 @@ +{ + "type": "plugin", + "id": "@kbn/investigate-app-plugin", + "owner": "@elastic/obs-ux-management-team", + "visibility": "private", + "group": "observability", + "plugin": { + "id": "investigateApp", + "server": true, + "browser": true, + "configPath": ["xpack", "investigateApp"], + "requiredPlugins": [ + "investigate", + "observabilityShared", + "lens", + "charts", + "dataViews", + "data", + "embeddable", + "contentManagement", + "datasetQuality", + "unifiedSearch", + "security", + "observability", + "licensing", + "ruleRegistry", + "inference", + "alerting", + "spaces", + "slo", + "apmDataAccess", + "usageCollection" + ], + "optionalPlugins": [ + "observabilityAIAssistant", + "observabilityAIAssistantApp" + ], + "requiredBundles": [ + "esql", + "kibanaReact", + "kibanaUtils" + ], + "extraPublicDirs": [] + } +} diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/api/index.ts b/x-pack/solutions/observability/plugins/investigate_app/public/api/index.ts new file mode 100644 index 0000000000000..21f3251bd0d34 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/api/index.ts @@ -0,0 +1,50 @@ +/* + * 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 { CoreSetup, CoreStart, HttpFetchOptions } from '@kbn/core/public'; +import type { + ClientRequestParamsOf, + ReturnOf, + RouteRepositoryClient, +} from '@kbn/server-route-repository'; +import { createRepositoryClient } from '@kbn/server-route-repository-client'; +import type { InvestigateAppServerRouteRepository } from '../../server'; + +type FetchOptions = Omit & { + body?: any; +}; + +export type InvestigateAppAPIClientOptions = Omit< + FetchOptions, + 'query' | 'body' | 'pathname' | 'signal' +> & { + signal: AbortSignal | null; +}; + +export type InvestigateAppRepositoryClient = RouteRepositoryClient< + InvestigateAppServerRouteRepository, + InvestigateAppAPIClientOptions +>; + +export type AutoAbortedInvestigateAppRepositoryClient = RouteRepositoryClient< + InvestigateAppServerRouteRepository, + Omit +>; + +export type InvestigateAppAPIEndpoint = keyof InvestigateAppServerRouteRepository; + +export type APIReturnType = ReturnOf< + InvestigateAppServerRouteRepository, + TEndpoint +>; + +export type InvestigateAppAPIClientRequestParamsOf = + ClientRequestParamsOf; + +export function createInvestigateAppRepositoryClient(core: CoreStart | CoreSetup) { + return createRepositoryClient(core) as InvestigateAppRepositoryClient; +} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/application.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/application.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/application.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/application.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/error_message/index.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/error_message/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/error_message/index.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/error_message/index.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigate_app_context_provider/index.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigate_app_context_provider/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigate_app_context_provider/index.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigate_app_context_provider/index.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigate_text_button/index.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigate_text_button/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigate_text_button/index.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigate_text_button/index.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/fields/external_incident_field.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/fields/external_incident_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/fields/external_incident_field.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/fields/external_incident_field.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/fields/status_field.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/fields/status_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/fields/status_field.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/fields/status_field.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/fields/tags_field.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/fields/tags_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/fields/tags_field.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/fields/tags_field.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/form_helper.ts b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/form_helper.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/form_helper.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/form_helper.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/investigation_edit_form.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/investigation_edit_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_edit_form/investigation_edit_form.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_edit_form/investigation_edit_form.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_not_found/investigation_not_found.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_not_found/investigation_not_found.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_not_found/investigation_not_found.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_not_found/investigation_not_found.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_status_badge/investigation_status_badge.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_status_badge/investigation_status_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_status_badge/investigation_status_badge.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_status_badge/investigation_status_badge.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/investigation_tag/investigation_tag.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_tag/investigation_tag.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/investigation_tag/investigation_tag.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/investigation_tag/investigation_tag.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/preview_lens_suggestion/index.stories.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/preview_lens_suggestion/index.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/preview_lens_suggestion/index.stories.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/preview_lens_suggestion/index.stories.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/preview_lens_suggestion/index.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/preview_lens_suggestion/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/preview_lens_suggestion/index.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/preview_lens_suggestion/index.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/suggest_visualization_list/index.stories.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/suggest_visualization_list/index.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/suggest_visualization_list/index.stories.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/suggest_visualization_list/index.stories.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/suggest_visualization_list/index.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/suggest_visualization_list/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/suggest_visualization_list/index.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/suggest_visualization_list/index.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/components/suggest_visualization_list/suggestions.mock.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/components/suggest_visualization_list/suggestions.mock.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/components/suggest_visualization_list/suggestions.mock.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/components/suggest_visualization_list/suggestions.mock.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/constants/index.ts b/x-pack/solutions/observability/plugins/investigate_app/public/constants/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/constants/index.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/constants/index.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/query_key_factory.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/query_key_factory.ts similarity index 89% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/query_key_factory.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/query_key_factory.ts index 38e4c90aebe09..494b2b134aacb 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/query_key_factory.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/query_key_factory.ts @@ -12,8 +12,12 @@ export const investigationKeys = { userProfiles: (profileIds: Set) => [...investigationKeys.all, 'userProfiles', ...profileIds] as const, tags: () => [...investigationKeys.all, 'tags'] as const, - events: (rangeFrom?: string, rangeTo?: string, filter?: string) => - [...investigationKeys.all, 'events', rangeFrom, rangeTo, filter] as const, + events: (params: { + rangeFrom?: string; + rangeTo?: string; + filter?: string; + eventTypes?: string[]; + }) => [...investigationKeys.all, 'events', params] as const, stats: () => [...investigationKeys.all, 'stats'] as const, lists: () => [...investigationKeys.all, 'list'] as const, list: (params: { page: number; perPage: number; search?: string; filter?: string }) => diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_add_investigation_item.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_add_investigation_item.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_add_investigation_item.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_add_investigation_item.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_add_investigation_note.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_add_investigation_note.ts similarity index 83% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_add_investigation_note.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_add_investigation_note.ts index 3f349238c73f5..659e56b9172d3 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_add_investigation_note.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_add_investigation_note.ts @@ -11,8 +11,9 @@ import { CreateInvestigationNoteParams, CreateInvestigationNoteResponse, } from '@kbn/investigation-shared'; -import { useMutation } from '@tanstack/react-query'; +import { useMutation, useQueryClient } from '@tanstack/react-query'; import { useKibana } from './use_kibana'; +import { investigationKeys } from './query_key_factory'; type ServerError = IHttpFetchError; @@ -23,6 +24,7 @@ export function useAddInvestigationNote() { notifications: { toasts }, }, } = useKibana(); + const queryClient = useQueryClient(); return useMutation< CreateInvestigationNoteResponse, @@ -39,7 +41,12 @@ export function useAddInvestigationNote() { ); }, { - onSuccess: (response, {}) => { + onSuccess: (_, { investigationId }) => { + queryClient.invalidateQueries({ + queryKey: investigationKeys.detailNotes(investigationId), + exact: false, + }); + toasts.addSuccess( i18n.translate('xpack.investigateApp.addInvestigationNote.successMessage', { defaultMessage: 'Note saved', diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_create_investigation.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_create_investigation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_create_investigation.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_create_investigation.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_delete_investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_delete_investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_delete_investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_delete_investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_delete_investigation_item.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_delete_investigation_item.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_delete_investigation_item.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_delete_investigation_item.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_delete_investigation_note.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_delete_investigation_note.ts similarity index 82% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_delete_investigation_note.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_delete_investigation_note.ts index 8eaeea2d67b87..5b4e6e6d6128c 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_delete_investigation_note.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_delete_investigation_note.ts @@ -6,13 +6,15 @@ */ import { IHttpFetchError, ResponseErrorBody } from '@kbn/core/public'; -import { useMutation } from '@tanstack/react-query'; +import { useMutation, useQueryClient } from '@tanstack/react-query'; import { i18n } from '@kbn/i18n'; import { useKibana } from './use_kibana'; +import { investigationKeys } from './query_key_factory'; type ServerError = IHttpFetchError; export function useDeleteInvestigationNote() { + const queryClient = useQueryClient(); const { core: { http, @@ -34,7 +36,12 @@ export function useDeleteInvestigationNote() { ); }, { - onSuccess: (response, {}) => { + onSuccess: (response, { investigationId }) => { + queryClient.invalidateQueries({ + queryKey: investigationKeys.detailNotes(investigationId), + exact: false, + }); + toasts.addSuccess( i18n.translate('xpack.investigateApp.useDeleteInvestigationNote.successMessage', { defaultMessage: 'Note deleted', diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_alert.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_alert.tsx similarity index 99% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_alert.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_alert.tsx index 7d2245ac38618..76f22d2ccff3c 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_alert.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_alert.tsx @@ -44,6 +44,7 @@ export function useFetchAlert({ investigation }: UseFetchAlertParams): UseFetchA }); }, staleTime: 60 * 1000, + retry: false, refetchOnWindowFocus: false, onError: (error: Error) => { toasts.addError(error, { diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_all_investigation_stats.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_all_investigation_stats.ts similarity index 97% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_all_investigation_stats.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_all_investigation_stats.ts index 2b2c8b92b0d4f..8b5ad9f8abd76 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_all_investigation_stats.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_all_investigation_stats.ts @@ -51,8 +51,7 @@ export function useFetchAllInvestigationStats(): Response { }; }, retry: false, - cacheTime: 600 * 1000, // 10 minutes - staleTime: 0, + staleTime: 15 * 1000, onError: (error: Error) => { toasts.addError(error, { title: i18n.translate('xpack.investigateApp.useFetchAllInvestigationStats.errorTitle', { diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_all_investigation_tags.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_all_investigation_tags.ts similarity index 96% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_all_investigation_tags.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_all_investigation_tags.ts index 083742f09b685..be912df756440 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_all_investigation_tags.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_all_investigation_tags.ts @@ -35,8 +35,7 @@ export function useFetchAllInvestigationTags(): Response { signal, }); }, - cacheTime: 600 * 1000, // 10_minutes - staleTime: 0, + staleTime: 15 * 1000, refetchOnWindowFocus: false, retry: false, onError: (error: Error) => { diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_entities.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_entities.ts similarity index 96% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_entities.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_entities.ts index a8cee1a9c1857..5d99d9ed906ec 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_entities.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_entities.ts @@ -50,9 +50,7 @@ export function useFetchEntities({ }); }, refetchOnWindowFocus: false, - onError: (error: Error) => { - // ignore error - }, + retry: false, enabled: Boolean(investigationId && (serviceName || hostName || containerId)), }); diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_events.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_events.ts similarity index 76% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_events.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_events.ts index 5b885fc664b13..8447789562fa5 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_events.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_events.ts @@ -6,16 +6,14 @@ */ import { i18n } from '@kbn/i18n'; -import { useQuery } from '@tanstack/react-query'; import { GetEventsResponse } from '@kbn/investigation-shared'; +import { useQuery } from '@tanstack/react-query'; +import { isArray } from 'lodash'; import { investigationKeys } from './query_key_factory'; import { useKibana } from './use_kibana'; export interface Response { - isInitialLoading: boolean; isLoading: boolean; - isRefetching: boolean; - isSuccess: boolean; isError: boolean; data?: GetEventsResponse; } @@ -24,10 +22,12 @@ export function useFetchEvents({ rangeFrom, rangeTo, filter, + eventTypes, }: { rangeFrom?: string; rangeTo?: string; filter?: string; + eventTypes?: string[]; }): Response { const { core: { @@ -36,21 +36,20 @@ export function useFetchEvents({ }, } = useKibana(); - const { isInitialLoading, isLoading, isError, isSuccess, isRefetching, data } = useQuery({ - queryKey: investigationKeys.events(rangeFrom, rangeTo, filter), + const { isLoading, isError, data } = useQuery({ + queryKey: investigationKeys.events({ rangeFrom, rangeTo, filter, eventTypes }), queryFn: async ({ signal }) => { - return await http.get(`/api/observability/events`, { + return http.get(`/api/observability/events`, { query: { rangeFrom, rangeTo, filter, + ...(isArray(eventTypes) && eventTypes.length > 0 && { eventTypes: eventTypes.join(',') }), }, version: '2023-10-31', signal, }); }, - cacheTime: 600 * 1000, // 10_minutes - staleTime: 0, refetchOnWindowFocus: false, retry: false, onError: (error: Error) => { @@ -64,10 +63,7 @@ export function useFetchEvents({ return { data, - isInitialLoading, isLoading, - isRefetching, - isSuccess, isError, }; } diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation_items.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation_items.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation_items.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation_items.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation_list.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation_list.ts similarity index 97% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation_list.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation_list.ts index cadd0de89a8e3..9d19d4d4cc04c 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation_list.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation_list.ts @@ -64,8 +64,6 @@ export function useFetchInvestigationList({ retry: false, refetchInterval: 60 * 1000, refetchOnWindowFocus: false, - cacheTime: 600 * 1000, // 10 minutes - staleTime: 0, onError: (error: Error) => { toasts.addError(error, { title: i18n.translate('xpack.investigateApp.useFetchInvestigationList.errorTitle', { diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation_notes.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation_notes.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_investigation_notes.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_investigation_notes.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_user_profiles.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_user_profiles.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_fetch_user_profiles.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_fetch_user_profiles.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_kibana.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_kibana.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_kibana.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_screen_context.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_screen_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_screen_context.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_screen_context.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_theme.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_theme.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_theme.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_theme.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_update_investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_update_investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_update_investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_update_investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_update_investigation_note.ts b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_update_investigation_note.ts similarity index 93% rename from x-pack/plugins/observability_solution/investigate_app/public/hooks/use_update_investigation_note.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_update_investigation_note.ts index 14da1ec22feef..a66aedb4611c2 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/hooks/use_update_investigation_note.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/hooks/use_update_investigation_note.ts @@ -39,12 +39,16 @@ export function useUpdateInvestigationNote() { }, { onSuccess: (response, { investigationId }) => { + queryClient.invalidateQueries({ + queryKey: investigationKeys.detailNotes(investigationId), + exact: false, + }); + toasts.addSuccess( i18n.translate('xpack.investigateApp.useUpdateInvestigationNote.successMessage', { defaultMessage: 'Note updated', }) ); - queryClient.invalidateQueries({ queryKey: investigationKeys.detailNotes(investigationId) }); }, onError: (error, {}, context) => { toasts.addError( diff --git a/x-pack/plugins/observability_solution/investigate_app/public/index.ts b/x-pack/solutions/observability/plugins/investigate_app/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/index.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/index.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/items/README.md b/x-pack/solutions/observability/plugins/investigate_app/public/items/README.md similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/items/README.md rename to x-pack/solutions/observability/plugins/investigate_app/public/items/README.md diff --git a/x-pack/plugins/observability_solution/investigate_app/public/items/embeddable_item/register_embeddable_item.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/items/embeddable_item/register_embeddable_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/items/embeddable_item/register_embeddable_item.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/items/embeddable_item/register_embeddable_item.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/items/esql_item/get_date_histogram_results.ts b/x-pack/solutions/observability/plugins/investigate_app/public/items/esql_item/get_date_histogram_results.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/items/esql_item/get_date_histogram_results.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/items/esql_item/get_date_histogram_results.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/items/esql_item/register_esql_item.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/items/esql_item/register_esql_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/items/esql_item/register_esql_item.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/items/esql_item/register_esql_item.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/items/lens_item/register_lens_item.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/items/lens_item/register_lens_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/items/lens_item/register_lens_item.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/items/lens_item/register_lens_item.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/items/register_items.ts b/x-pack/solutions/observability/plugins/investigate_app/public/items/register_items.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/items/register_items.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/items/register_items.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/add_from_library_button/index.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_from_library_button/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/add_from_library_button/index.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_from_library_button/index.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/add_investigation_item/add_investigation_item.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_investigation_item/add_investigation_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/add_investigation_item/add_investigation_item.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_investigation_item/add_investigation_item.tsx index 0516bc7d9190c..341b9d441cb61 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/add_investigation_item/add_investigation_item.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_investigation_item/add_investigation_item.tsx @@ -10,8 +10,8 @@ import { css } from '@emotion/css'; import { ESQLLangEditor } from '@kbn/esql/public'; import { i18n } from '@kbn/i18n'; import React from 'react'; -import { AddFromLibraryButton } from '../add_from_library_button'; import { useInvestigation } from '../../contexts/investigation_context'; +import { AddFromLibraryButton } from '../add_from_library_button'; import { EsqlWidgetPreview } from './esql_widget_preview'; const emptyPreview = css` diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/add_investigation_item/esql_widget_preview.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_investigation_item/esql_widget_preview.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/add_investigation_item/esql_widget_preview.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_investigation_item/esql_widget_preview.tsx diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/assistant_hypothesis/assistant_hypothesis.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/assistant_hypothesis/assistant_hypothesis.tsx new file mode 100644 index 0000000000000..57ced473922d0 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/assistant_hypothesis/assistant_hypothesis.tsx @@ -0,0 +1,205 @@ +/* + * 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 { RootCauseAnalysisEvent } from '@kbn/observability-ai-server/root_cause_analysis'; +import { EcsFieldsResponse } from '@kbn/rule-registry-plugin/common'; +import { + ALERT_FLAPPING_HISTORY, + ALERT_RULE_EXECUTION_TIMESTAMP, + ALERT_RULE_EXECUTION_UUID, + EVENT_ACTION, + EVENT_KIND, +} from '@kbn/rule-registry-plugin/common/technical_rule_data_field_names'; +import { isRequestAbortedError } from '@kbn/server-route-repository-client'; +import { omit } from 'lodash'; +import React, { useEffect, useRef, useState } from 'react'; +import { useKibana } from '../../../../hooks/use_kibana'; +import { useUpdateInvestigation } from '../../../../hooks/use_update_investigation'; +import { useInvestigation } from '../../contexts/investigation_context'; + +export interface InvestigationContextualInsight { + key: string; + description: string; + data: unknown; +} + +export function AssistantHypothesis() { + const { + alert, + globalParams: { timeRange }, + investigation, + } = useInvestigation(); + const { + core: { notifications }, + services: { investigateAppRepositoryClient }, + dependencies: { + start: { + observabilityAIAssistant: { useGenAIConnectors }, + observabilityAIAssistantApp: { RootCauseAnalysisContainer }, + }, + }, + } = useKibana(); + + const { mutateAsync: updateInvestigation } = useUpdateInvestigation(); + + const { loading: loadingConnector, selectedConnector } = useGenAIConnectors(); + + const serviceName = alert?.['service.name'] as string | undefined; + + const [events, setEvents] = useState([]); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(undefined); + + const controllerRef = useRef(new AbortController()); + + useEffect(() => { + if (investigation?.rootCauseAnalysis) { + setEvents(investigation.rootCauseAnalysis.events); + } + }, [investigation?.rootCauseAnalysis]); + + const [completeInBackground, setCompleteInBackground] = useState(true); + + const runRootCauseAnalysis = ({ + alert: nonNullishAlert, + connectorId, + serviceName: nonNullishServiceName, + }: { + alert: EcsFieldsResponse; + connectorId: string; + serviceName: string; + }) => { + const rangeFrom = timeRange.from; + + const rangeTo = timeRange.to; + + setLoading(true); + + setError(undefined); + + setEvents([]); + + investigateAppRepositoryClient + .stream('POST /internal/observability/investigation/root_cause_analysis', { + params: { + body: { + investigationId: investigation!.id, + connectorId, + context: `The user is investigating an alert for the ${serviceName} service, + and wants to find the root cause. Here is the alert: + + ${JSON.stringify(sanitizeAlert(nonNullishAlert))}`, + rangeFrom, + rangeTo, + serviceName: nonNullishServiceName, + completeInBackground, + }, + }, + signal: controllerRef.current.signal, + }) + .subscribe({ + next: (event) => { + setEvents((prev) => { + return prev.concat(event.event); + }); + }, + error: (nextError) => { + if (!isRequestAbortedError(nextError)) { + notifications.toasts.addError(nextError, { + title: i18n.translate( + 'xpack.investigateApp.assistantHypothesis.failedToLoadAnalysis', + { + defaultMessage: `Failed to load analysis`, + } + ), + }); + setError(nextError); + } else { + setError( + new Error( + i18n.translate('xpack.investigateApp.assistantHypothesis.analysisAborted', { + defaultMessage: `Analysis was aborted`, + }) + ) + ); + } + + setLoading(false); + }, + complete: () => { + setLoading(false); + }, + }); + }; + + if (!serviceName) { + return null; + } + + return ( + { + setCompleteInBackground(() => !completeInBackground); + }} + onStopAnalysisClick={() => { + controllerRef.current.abort(); + controllerRef.current = new AbortController(); + }} + onClearAnalysisClick={() => { + setEvents([]); + if (investigation?.rootCauseAnalysis) { + updateInvestigation({ + investigationId: investigation!.id, + payload: { + rootCauseAnalysis: { + events: [], + }, + }, + }); + } + }} + onResetAnalysisClick={() => { + controllerRef.current.abort(); + controllerRef.current = new AbortController(); + if (alert && selectedConnector && serviceName) { + runRootCauseAnalysis({ + alert, + connectorId: selectedConnector, + serviceName, + }); + } + }} + error={error} + onStartAnalysisClick={() => { + if (alert && selectedConnector && serviceName) { + runRootCauseAnalysis({ + alert, + connectorId: selectedConnector, + serviceName, + }); + } + }} + /> + ); +} + +function sanitizeAlert(alert: EcsFieldsResponse) { + return omit( + alert, + ALERT_RULE_EXECUTION_TIMESTAMP, + '_index', + ALERT_FLAPPING_HISTORY, + EVENT_ACTION, + EVENT_KIND, + ALERT_RULE_EXECUTION_UUID, + '@timestamp' + ); +} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/grid_item/index.stories.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/grid_item/index.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/grid_item/index.stories.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/grid_item/index.stories.tsx diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/grid_item/index.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/grid_item/index.tsx new file mode 100644 index 0000000000000..443190a7d16cb --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/grid_item/index.tsx @@ -0,0 +1,112 @@ +/* + * 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 { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiText } from '@elastic/eui'; +import { css } from '@emotion/css'; +import React from 'react'; +import { InvestigateTextButton } from '../../../../components/investigate_text_button'; +import { useTheme } from '../../../../hooks/use_theme'; + +export const GRID_ITEM_HEADER_HEIGHT = 40; + +interface GridItemProps { + id: string; + title: string; + children: React.ReactNode; + onCopy: () => void; + onDelete: () => void; + loading: boolean; +} + +const titleContainerClassName = css` + overflow: hidden; +`; +const titleItemClassName = css` + max-width: 100%; + .euiText { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } +`; + +const panelClassName = css` + overflow-y: auto; +`; + +const panelContentClassName = css` + overflow-y: auto; + height: 100%; +`; + +export function GridItem({ id, title, children, onDelete, onCopy, loading }: GridItemProps) { + const theme = useTheme(); + + const headerClassName = css` + padding: 0 ${theme.size.s} 0 ${theme.size.s}}; +`; + + const containerClassName = css` + height: 100%; + max-width: 100%; + transition: opacity ${theme.animation.normal} ${theme.animation.resistance}; + overflow: auto; + `; + + return ( + + + + + + +
{title}
+
+
+ + + + { + onCopy(); + }} + disabled={loading} + /> + + + { + onDelete(); + }} + disabled={loading} + /> + + + +
+
+ {children} +
+
+ ); +} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_details/index.stories.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_details/index.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_details/index.stories.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_details/index.stories.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_details/investigation_details.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_details/investigation_details.tsx similarity index 96% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_details/investigation_details.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_details/investigation_details.tsx index 5c9682348ee28..55b264eeb09e6 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_details/investigation_details.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_details/investigation_details.tsx @@ -72,12 +72,11 @@ export function InvestigationDetails({ user }: Props) { ], }} > - - + + - - + diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_header/alert_details_button.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/alert_details_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_header/alert_details_button.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/alert_details_button.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_header/external_incident_button.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/external_incident_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_header/external_incident_button.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/external_incident_button.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_items/investigation_items.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_items/investigation_items.tsx new file mode 100644 index 0000000000000..8acc4831aa68a --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_items/investigation_items.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 { EuiFlexGroup } from '@elastic/eui'; +import React from 'react'; +import { AddInvestigationItem } from '../add_investigation_item/add_investigation_item'; +import { AssistantHypothesis } from '../assistant_hypothesis/assistant_hypothesis'; +import { InvestigationItemsList } from '../investigation_items_list/investigation_items_list'; +import { InvestigationTimeline } from '../investigation_timeline/investigation_timeline'; + +export function InvestigationItems() { + return ( + + + + + + + ); +} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_items_list/investigation_items_list.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_items_list/investigation_items_list.tsx similarity index 95% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_items_list/investigation_items_list.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_items_list/investigation_items_list.tsx index e65b29e2c3762..227ea5f91b24e 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_items_list/investigation_items_list.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_items_list/investigation_items_list.tsx @@ -18,7 +18,7 @@ export function InvestigationItemsList() { } return ( - + {renderableItems.map((item) => { return ( diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/edit_note_form.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/edit_note_form.tsx similarity index 84% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/edit_note_form.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/edit_note_form.tsx index ccf1f0ab20df6..bd509fb26bc90 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/edit_note_form.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/edit_note_form.tsx @@ -11,6 +11,7 @@ import { InvestigationNoteResponse } from '@kbn/investigation-shared'; import React, { useState } from 'react'; import { ResizableTextInput } from './resizable_text_input'; import { useInvestigation } from '../../contexts/investigation_context'; +import { useUpdateInvestigationNote } from '../../../../hooks/use_update_investigation_note'; interface Props { note: InvestigationNoteResponse; @@ -19,11 +20,22 @@ interface Props { export function EditNoteForm({ note, onClose }: Props) { const [noteInput, setNoteInput] = useState(note.content); - const { updateNote, isUpdatingNote } = useInvestigation(); + const { investigation } = useInvestigation(); + const { mutate: updateNote, isLoading: isUpdatingNote } = useUpdateInvestigationNote(); - const onUpdate = async () => { - await updateNote(note.id, noteInput.trim()); - onClose(); + const onUpdate = () => { + updateNote( + { + investigationId: investigation!.id, + noteId: note.id, + note: { content: noteInput.trim() }, + }, + { + onSuccess: () => { + onClose(); + }, + } + ); }; return ( diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/investigation_notes.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/investigation_notes.tsx similarity index 85% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/investigation_notes.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/investigation_notes.tsx index ec63b09358159..50ec61bc4555b 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/investigation_notes.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/investigation_notes.tsx @@ -18,6 +18,8 @@ import { i18n } from '@kbn/i18n'; import { InvestigationNoteResponse } from '@kbn/investigation-shared'; import { AuthenticatedUser } from '@kbn/security-plugin/common'; import React, { useState } from 'react'; +import { useAddInvestigationNote } from '../../../../hooks/use_add_investigation_note'; +import { useFetchInvestigationNotes } from '../../../../hooks/use_fetch_investigation_notes'; import { useFetchUserProfiles } from '../../../../hooks/use_fetch_user_profiles'; import { useTheme } from '../../../../hooks/use_theme'; import { useInvestigation } from '../../contexts/investigation_context'; @@ -30,15 +32,25 @@ export interface Props { export function InvestigationNotes({ user }: Props) { const theme = useTheme(); - const { investigation, addNote, isAddingNote } = useInvestigation(); + const { investigation } = useInvestigation(); + const { data: notes } = useFetchInvestigationNotes({ + investigationId: investigation!.id, + }); + const { mutate: addNote, isLoading: isAddingNote } = useAddInvestigationNote(); const { data: userProfiles, isLoading: isLoadingUserProfiles } = useFetchUserProfiles({ profileIds: new Set(investigation?.notes.map((note) => note.createdBy)), }); const [noteInput, setNoteInput] = useState(''); - const onAddNote = async (content: string) => { - await addNote(content); - setNoteInput(''); + const onAddNote = (content: string) => { + addNote( + { investigationId: investigation!.id, note: { content } }, + { + onSuccess: () => { + setNoteInput(''); + }, + } + ); }; const panelClassName = css` @@ -58,7 +70,7 @@ export function InvestigationNotes({ user }: Props) { - {investigation?.notes.map((currNote: InvestigationNoteResponse) => { + {notes?.map((currNote: InvestigationNoteResponse) => { return ( { + deleteNote({ investigationId: investigation!.id, noteId: note.id }); + }; const timelineContainerClassName = css` padding-bottom: 16px; @@ -98,7 +104,7 @@ export function Note({ note, isOwner, userProfile, userProfileLoading }: Props) iconSize="s" iconType="trash" disabled={isDeletingNote} - onClick={async () => await deleteNote(note.id)} + onClick={onDeleteNote} data-test-subj="deleteInvestigationNoteButton" className={actionButtonClassname} /> diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/resizable_text_input.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/resizable_text_input.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/investigation_notes/resizable_text_input.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/resizable_text_input.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/alert_event.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/events_timeline/alert_event.tsx similarity index 80% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/alert_event.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/events_timeline/alert_event.tsx index 2e5ab220054e4..4c39efd9019ba 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/alert_event.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/events_timeline/alert_event.tsx @@ -5,13 +5,13 @@ * 2.0. */ -import { LineAnnotation, AnnotationDomainType } from '@elastic/charts'; +import { AnnotationDomainType, LineAnnotation } from '@elastic/charts'; import { EuiIcon } from '@elastic/eui'; -import React from 'react'; +import { AlertEventResponse } from '@kbn/investigation-shared'; import moment from 'moment'; -import { EventSchema } from '@kbn/investigation-shared'; +import React from 'react'; -export const AlertEvent = ({ event }: { event: EventSchema }) => { +export const AlertEvent = ({ event }: { event: AlertEventResponse }) => { return ( { + const { dependencies } = useKibana(); + const baseTheme = dependencies.start.charts.theme.useChartsBaseTheme(); + const { globalParams, updateInvestigationParams } = useInvestigation(); + const chartRef = useRef(null); + + const { data: events, isLoading } = useFetchEvents({ + rangeFrom: globalParams.timeRange.from, + rangeTo: globalParams.timeRange.to, + eventTypes, + }); + + const handleCursorUpdate = useActiveCursor(dependencies.start.charts.activeCursor, chartRef, { + isDateHistogram: true, + }); + + const data = useMemo(() => { + const points = [ + { x: moment(globalParams.timeRange.from).valueOf(), y: 0 }, + { x: moment(globalParams.timeRange.to).valueOf(), y: 0 }, + ]; + + // adding 100 fake points to the chart so the chart shows cursor on hover + for (let i = 0; i < 100; i++) { + const diff = + moment(globalParams.timeRange.to).valueOf() - moment(globalParams.timeRange.from).valueOf(); + points.push({ x: moment(globalParams.timeRange.from).valueOf() + (diff / 100) * i, y: 0 }); + } + return points; + }, [globalParams.timeRange.from, globalParams.timeRange.to]); + + if (isLoading) { + return ; + } + + return ( + + { + const { from, to } = getBrushData(brush); + updateInvestigationParams({ + timeRange: { from, to }, + }); + }} + /> + + moment(d).format('LTS')} + style={{ + tickLine: { + visible: true, + strokeWidth: 1, + stroke: '#98A2B3', + }, + }} + /> + + {events?.map((event) => { + if (event.eventType === 'alert') { + return ; + } + if (event.eventType === 'annotation') { + return ; + } + assertNever(event); + })} + + false} + /> + + ); +}; diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/timeline_theme.ts b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/events_timeline/timeline_theme.ts similarity index 94% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/timeline_theme.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/events_timeline/timeline_theme.ts index a1d7441fee539..21ad1240ca8e3 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/components/events_timeline/timeline_theme.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/events_timeline/timeline_theme.ts @@ -7,7 +7,7 @@ import { PartialTheme } from '@elastic/charts'; -export const TIME_LINE_THEME: PartialTheme = { +export const TIMELINE_THEME: PartialTheme = { highlighter: { point: { opacity: 0, diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline.tsx new file mode 100644 index 0000000000000..f02fde7d43faf --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline.tsx @@ -0,0 +1,27 @@ +/* + * 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 { EuiFlexGroup, EuiPanel } from '@elastic/eui'; +import React, { useState } from 'react'; +import { EventsTimeline } from './events_timeline/events_timeline'; +import { InvestigationTimelineFilterBar } from './investigation_timeline_filter_bar/investigation_timeline_filter_bar'; + +export function InvestigationTimeline() { + const [eventTypes, setEventTypes] = useState([]); + + return ( + + + setEventTypes(selected)} + /> + + + + + ); +} diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline_filter_bar/investigation_event_types_filter.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline_filter_bar/investigation_event_types_filter.tsx new file mode 100644 index 0000000000000..e66425f60d54f --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline_filter_bar/investigation_event_types_filter.tsx @@ -0,0 +1,106 @@ +/* + * 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 { + EuiFilterButton, + EuiFilterGroup, + EuiPopover, + EuiPopoverTitle, + EuiSelectable, + EuiSelectableOption, + useGeneratedHtmlId, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React, { useState } from 'react'; + +interface Props { + onSelected: (eventTypes: string[]) => void; +} + +export function InvestigationEventTypesFilter({ onSelected }: Props) { + const [isPopoverOpen, setIsPopoverOpen] = useState(false); + const [items, setItems] = useState([ + { + key: 'alert', + label: i18n.translate('xpack.investigateApp.investigationEventTypesFilter.alertLabel', { + defaultMessage: 'Alert', + }), + checked: 'on', + }, + { + key: 'annotation', + label: i18n.translate('xpack.investigateApp.investigationEventTypesFilter.annotationLabel', { + defaultMessage: 'Annotation', + }), + checked: 'on', + }, + ]); + + const togglePopover = () => { + setIsPopoverOpen(!isPopoverOpen); + }; + const closePopover = () => { + setIsPopoverOpen(false); + }; + + const filterGroupPopoverId = useGeneratedHtmlId({ + prefix: 'filterGroupPopover', + }); + + const handleChange = (newOptions: EuiSelectableOption[]) => { + setItems(newOptions); + + const selected = newOptions + .filter((option) => option.checked === 'on') + .map((option) => option.key!); + onSelected(selected); + }; + + const button = ( + item.checked !== 'off').length} + hasActiveFilters={!!items.find((item) => item.checked === 'on')} + numActiveFilters={items.filter((item) => item.checked === 'on').length} + > + {i18n.translate( + 'xpack.investigateApp.investigationEventTypesFilter.filtersFilterButtonLabel', + { defaultMessage: 'Filters' } + )} + + ); + + return ( + + + + {(list) => ( +
+ + {i18n.translate( + 'xpack.investigateApp.investigationEventTypesFilter.filterEventTypePopoverTitleLabel', + { defaultMessage: 'Filter event type' } + )} + + {list} +
+ )} +
+
+
+ ); +} diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline_filter_bar/investigation_timeline_filter_bar.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline_filter_bar/investigation_timeline_filter_bar.tsx new file mode 100644 index 0000000000000..16ecb2bd42a4d --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_timeline/investigation_timeline_filter_bar/investigation_timeline_filter_bar.tsx @@ -0,0 +1,71 @@ +/* + * 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 { EuiDatePicker, EuiDatePickerRange, EuiFlexGroup } from '@elastic/eui'; +import { css } from '@emotion/react'; +import moment from 'moment'; +import React from 'react'; +import { useInvestigation } from '../../../contexts/investigation_context'; +import { InvestigationEventTypesFilter } from './investigation_event_types_filter'; + +interface Props { + onEventTypesSelected: (eventTypes: string[]) => void; +} + +export function InvestigationTimelineFilterBar({ onEventTypesSelected }: Props) { + const { globalParams, updateInvestigationParams } = useInvestigation(); + + return ( + + + + { + if (!date) return; + + updateInvestigationParams({ + timeRange: { + from: date.toISOString(), + to: globalParams.timeRange.to, + }, + }); + }} + showTimeSelect + /> + } + endDateControl={ + { + if (!date) return; + + updateInvestigationParams({ + timeRange: { + from: globalParams.timeRange.from, + to: date.toISOString(), + }, + }); + }} + showTimeSelect + /> + } + /> + + ); +} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/contexts/investigation_context.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/contexts/investigation_context.tsx similarity index 77% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/contexts/investigation_context.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/contexts/investigation_context.tsx index ec571d0e2db80..f086e48665566 100644 --- a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/contexts/investigation_context.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/contexts/investigation_context.tsx @@ -7,19 +7,16 @@ import { i18n } from '@kbn/i18n'; import { type GlobalWidgetParameters } from '@kbn/investigate-plugin/public'; -import { EcsFieldsResponse } from '@kbn/rule-registry-plugin/common'; import { GetInvestigationResponse, InvestigationItem, Item } from '@kbn/investigation-shared'; +import { EcsFieldsResponse } from '@kbn/rule-registry-plugin/common'; import { isEqual } from 'lodash'; import React, { createContext, useContext, useEffect, useRef, useState } from 'react'; import { useAddInvestigationItem } from '../../../hooks/use_add_investigation_item'; -import { useAddInvestigationNote } from '../../../hooks/use_add_investigation_note'; import { useDeleteInvestigationItem } from '../../../hooks/use_delete_investigation_item'; -import { useDeleteInvestigationNote } from '../../../hooks/use_delete_investigation_note'; -import { useFetchInvestigation } from '../../../hooks/use_fetch_investigation'; import { useFetchAlert } from '../../../hooks/use_fetch_alert'; +import { useFetchInvestigation } from '../../../hooks/use_fetch_investigation'; import { useKibana } from '../../../hooks/use_kibana'; import { useUpdateInvestigation } from '../../../hooks/use_update_investigation'; -import { useUpdateInvestigationNote } from '../../../hooks/use_update_investigation_note'; export type RenderedInvestigationItem = InvestigationItem & { loading: boolean; @@ -36,13 +33,6 @@ interface InvestigationContextProps { deleteItem: (itemId: string) => Promise; isAddingItem: boolean; isDeletingItem: boolean; - // note - addNote: (content: string) => Promise; - updateNote: (noteId: string, content: string) => Promise; - deleteNote: (noteId: string) => Promise; - isAddingNote: boolean; - isUpdatingNote: boolean; - isDeletingNote: boolean; } export const InvestigationContext = createContext({ @@ -54,13 +44,6 @@ export const InvestigationContext = createContext({ deleteItem: async () => {}, isAddingItem: false, isDeletingItem: false, - // note - addNote: async () => {}, - updateNote: async (noteId: string, content: string) => {}, - deleteNote: async (noteId: string) => {}, - isAddingNote: false, - isUpdatingNote: false, - isDeletingNote: false, }); export function useInvestigation() { @@ -90,32 +73,6 @@ export function InvestigationProvider({ Record >({}); - const { mutateAsync: addInvestigationNote, isLoading: isAddingNote } = useAddInvestigationNote(); - const { mutateAsync: updateInvestigationNote, isLoading: isUpdatingNote } = - useUpdateInvestigationNote(); - const { mutateAsync: deleteInvestigationNote, isLoading: isDeletingNote } = - useDeleteInvestigationNote(); - - const addNote = async (content: string) => { - await addInvestigationNote({ investigationId: initialInvestigation.id, note: { content } }); - refetch(); - }; - - const updateNote = async (noteId: string, content: string) => { - await updateInvestigationNote({ - investigationId: initialInvestigation.id, - noteId, - note: { content: content.trim() }, - }); - - refetch(); - }; - - const deleteNote = async (noteId: string) => { - await deleteInvestigationNote({ investigationId: initialInvestigation.id, noteId }); - refetch(); - }; - const { mutateAsync: updateInvestigation } = useUpdateInvestigation(); const { mutateAsync: addInvestigationItem, isLoading: isAddingItem } = useAddInvestigationItem(); const { mutateAsync: deleteInvestigationItem, isLoading: isDeletingItem } = @@ -221,12 +178,6 @@ export function InvestigationProvider({ deleteItem, isAddingItem, isDeletingItem, - addNote, - updateNote, - deleteNote, - isAddingNote, - isUpdatingNote, - isDeletingNote, }} > {children} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/investigation_details_page.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/investigation_details_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/investigation_details_page.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/investigation_details_page.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/details/types.ts b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/details/types.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/details/types.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigation_list.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigation_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigation_list.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigation_list.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigation_list_actions.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigation_list_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigation_list_actions.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigation_list_actions.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigation_stats.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigation_stats.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigation_stats.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigation_stats.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigations_error.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigations_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/investigations_error.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/investigations_error.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/search_bar/search_bar.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/search_bar/search_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/search_bar/search_bar.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/search_bar/search_bar.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/search_bar/status_filter.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/search_bar/status_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/search_bar/status_filter.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/search_bar/status_filter.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/search_bar/tags_filter.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/search_bar/tags_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/components/search_bar/tags_filter.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/components/search_bar/tags_filter.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/pages/list/investigation_list_page.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/list/investigation_list_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/pages/list/investigation_list_page.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/pages/list/investigation_list_page.tsx diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/plugin.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/plugin.tsx new file mode 100644 index 0000000000000..92c94cef94521 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/plugin.tsx @@ -0,0 +1,155 @@ +/* + * 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, + AppStatus, + CoreSetup, + CoreStart, + DEFAULT_APP_CATEGORIES, + Plugin, + PluginInitializerContext, +} from '@kbn/core/public'; +import { INVESTIGATE_APP_ID } from '@kbn/deeplinks-observability/constants'; +import { i18n } from '@kbn/i18n'; +import type { Logger } from '@kbn/logging'; +import { once } from 'lodash'; +import React from 'react'; +import ReactDOM from 'react-dom'; +import type { InvestigateAppServices } from './services/types'; +import type { + ConfigSchema, + InvestigateAppPublicSetup, + InvestigateAppPublicStart, + InvestigateAppSetupDependencies, + InvestigateAppStartDependencies, +} from './types'; +import { createInvestigateAppRepositoryClient, InvestigateAppRepositoryClient } from './api'; + +const getCreateEsqlService = once(() => import('./services/esql').then((m) => m.createEsqlService)); + +export class InvestigateAppPlugin + implements + Plugin< + InvestigateAppPublicSetup, + InvestigateAppPublicStart, + InvestigateAppSetupDependencies, + InvestigateAppStartDependencies + > +{ + logger: Logger; + config: ConfigSchema; + repositoryClient!: InvestigateAppRepositoryClient; + + constructor(context: PluginInitializerContext) { + this.logger = context.logger.get(); + this.config = context.config.get(); + } + + setup( + coreSetup: CoreSetup, + pluginsSetup: InvestigateAppSetupDependencies + ): InvestigateAppPublicSetup { + this.repositoryClient = createInvestigateAppRepositoryClient(coreSetup); + + coreSetup.application.register({ + id: INVESTIGATE_APP_ID, + title: i18n.translate('xpack.investigateApp.appTitle', { + defaultMessage: 'Investigations', + }), + euiIconType: 'logoObservability', + appRoute: '/app/investigations', + category: DEFAULT_APP_CATEGORIES.observability, + status: this.config.enabled ? AppStatus.accessible : AppStatus.inaccessible, + visibleIn: [], + deepLinks: [ + { + id: 'investigations', + title: i18n.translate('xpack.investigateApp.investigationsDeepLinkTitle', { + defaultMessage: 'All investigations', + }), + path: '/', + }, + { + id: 'investigationDetails', + title: i18n.translate('xpack.investigateApp.newInvestigateDeepLinkTitle', { + defaultMessage: 'New investigation', + }), + path: '/new', + }, + ], + mount: async (appMountParameters: AppMountParameters) => { + // Load application bundle and Get start services + const [{ Application }, [coreStart, pluginsStart], createEsqlService] = await Promise.all([ + import('./application'), + coreSetup.getStartServices(), + getCreateEsqlService(), + ]); + + const services: InvestigateAppServices = { + ...coreStart, + esql: createEsqlService({ + data: pluginsStart.data, + dataViews: pluginsStart.dataViews, + lens: pluginsStart.lens, + }), + charts: pluginsStart.charts, + investigateAppRepositoryClient: this.repositoryClient, + }; + + ReactDOM.render( + , + appMountParameters.element + ); + + return () => { + ReactDOM.unmountComponentAtNode(appMountParameters.element); + }; + }, + }); + + const pluginsStartPromise = coreSetup + .getStartServices() + .then(([, pluginsStart]) => pluginsStart); + + Promise.all([ + pluginsStartPromise, + import('./items/register_items').then((m) => m.registerItems), + getCreateEsqlService(), + ]).then(([pluginsStart, registerItems, createEsqlService]) => { + registerItems({ + dependencies: { + setup: pluginsSetup, + start: pluginsStart, + }, + services: { + investigateAppRepositoryClient: this.repositoryClient, + esql: createEsqlService({ + data: pluginsStart.data, + dataViews: pluginsStart.dataViews, + lens: pluginsStart.lens, + }), + charts: pluginsStart.charts, + }, + }); + }); + + return {}; + } + + start( + coreStart: CoreStart, + pluginsStart: InvestigateAppStartDependencies + ): InvestigateAppPublicStart { + return {}; + } +} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/routes/config.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/routes/config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/routes/config.tsx rename to x-pack/solutions/observability/plugins/investigate_app/public/routes/config.tsx diff --git a/x-pack/plugins/observability_solution/investigate_app/public/services/esql.ts b/x-pack/solutions/observability/plugins/investigate_app/public/services/esql.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/services/esql.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/services/esql.ts diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/services/types.ts b/x-pack/solutions/observability/plugins/investigate_app/public/services/types.ts new file mode 100644 index 0000000000000..04a2a7d063e9f --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/services/types.ts @@ -0,0 +1,16 @@ +/* + * 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 { ChartsPluginStart } from '@kbn/charts-plugin/public'; +import type { EsqlService } from './esql'; +import type { InvestigateAppRepositoryClient } from '../api'; + +export interface InvestigateAppServices { + esql: EsqlService; + charts: ChartsPluginStart; + investigateAppRepositoryClient: InvestigateAppRepositoryClient; +} diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/types.ts b/x-pack/solutions/observability/plugins/investigate_app/public/types.ts new file mode 100644 index 0000000000000..da81bcdbc0c92 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/public/types.ts @@ -0,0 +1,81 @@ +/* + * 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 { + ObservabilityAIAssistantPublicSetup, + ObservabilityAIAssistantPublicStart, +} from '@kbn/observability-ai-assistant-plugin/public'; +import type { + ObservabilityAIAssistantAppPublicSetup, + ObservabilityAIAssistantAppPublicStart, +} from '@kbn/observability-ai-assistant-app-plugin/public'; +import { ChartsPluginStart } from '@kbn/charts-plugin/public'; +import type { ContentManagementPublicStart } from '@kbn/content-management-plugin/public'; +import type { DataPublicPluginSetup, DataPublicPluginStart } from '@kbn/data-plugin/public'; +import type { + DataViewsPublicPluginSetup, + DataViewsPublicPluginStart, +} from '@kbn/data-views-plugin/public'; +import type { + DatasetQualityPluginSetup, + DatasetQualityPluginStart, +} from '@kbn/dataset-quality-plugin/public'; +import type { EmbeddableSetup, EmbeddableStart } from '@kbn/embeddable-plugin/public'; +import type { + InvestigatePublicSetup, + InvestigatePublicStart, +} from '@kbn/investigate-plugin/public'; +import type { LensPublicSetup, LensPublicStart } from '@kbn/lens-plugin/public'; +import type { + ObservabilitySharedPluginSetup, + ObservabilitySharedPluginStart, +} from '@kbn/observability-shared-plugin/public'; +import type { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/public'; +import type { UiActionsSetup, UiActionsStart } from '@kbn/ui-actions-plugin/public'; +import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; + +/* eslint-disable @typescript-eslint/no-empty-interface*/ + +export interface ConfigSchema { + enabled: boolean; +} + +export interface InvestigateAppSetupDependencies { + investigate: InvestigatePublicSetup; + observabilityShared: ObservabilitySharedPluginSetup; + observabilityAIAssistant: ObservabilityAIAssistantPublicSetup; + observabilityAIAssistantApp: ObservabilityAIAssistantAppPublicSetup; + lens: LensPublicSetup; + dataViews: DataViewsPublicPluginSetup; + data: DataPublicPluginSetup; + embeddable: EmbeddableSetup; + contentManagement: {}; + datasetQuality: DatasetQualityPluginSetup; + unifiedSearch: {}; + uiActions: UiActionsSetup; + security: SecurityPluginSetup; +} + +export interface InvestigateAppStartDependencies { + investigate: InvestigatePublicStart; + observabilityShared: ObservabilitySharedPluginStart; + observabilityAIAssistant: ObservabilityAIAssistantPublicStart; + observabilityAIAssistantApp: ObservabilityAIAssistantAppPublicStart; + lens: LensPublicStart; + dataViews: DataViewsPublicPluginStart; + data: DataPublicPluginStart; + embeddable: EmbeddableStart; + contentManagement: ContentManagementPublicStart; + datasetQuality: DatasetQualityPluginStart; + unifiedSearch: UnifiedSearchPublicPluginStart; + uiActions: UiActionsStart; + security: SecurityPluginStart; + charts: ChartsPluginStart; +} + +export interface InvestigateAppPublicSetup {} + +export interface InvestigateAppPublicStart {} diff --git a/x-pack/plugins/observability_solution/investigate_app/public/utils/find_scrollable_parent.ts b/x-pack/solutions/observability/plugins/investigate_app/public/utils/find_scrollable_parent.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/utils/find_scrollable_parent.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/utils/find_scrollable_parent.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/utils/get_data_table_from_esql_response.ts b/x-pack/solutions/observability/plugins/investigate_app/public/utils/get_data_table_from_esql_response.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/utils/get_data_table_from_esql_response.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/utils/get_data_table_from_esql_response.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/utils/get_es_filter_from_overrides.ts b/x-pack/solutions/observability/plugins/investigate_app/public/utils/get_es_filter_from_overrides.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/utils/get_es_filter_from_overrides.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/utils/get_es_filter_from_overrides.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/utils/get_kibana_columns.ts b/x-pack/solutions/observability/plugins/investigate_app/public/utils/get_kibana_columns.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/utils/get_kibana_columns.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/utils/get_kibana_columns.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/public/utils/get_lens_attrs_for_suggestion.ts b/x-pack/solutions/observability/plugins/investigate_app/public/utils/get_lens_attrs_for_suggestion.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/public/utils/get_lens_attrs_for_suggestion.ts rename to x-pack/solutions/observability/plugins/investigate_app/public/utils/get_lens_attrs_for_suggestion.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/clients/create_entities_es_client.ts b/x-pack/solutions/observability/plugins/investigate_app/server/clients/create_entities_es_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/clients/create_entities_es_client.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/clients/create_entities_es_client.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/config.ts b/x-pack/solutions/observability/plugins/investigate_app/server/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/config.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/config.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/index.ts b/x-pack/solutions/observability/plugins/investigate_app/server/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/index.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/index.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/fetcher.test.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/fetcher.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/fetcher.test.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/fetcher.test.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/fetcher.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/fetcher.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/fetcher.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/fetcher.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/helpers/metrics.test.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/helpers/metrics.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/helpers/metrics.test.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/helpers/metrics.test.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/helpers/metrics.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/helpers/metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/helpers/metrics.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/helpers/metrics.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/register.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/register.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/register.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/register.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/type.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/type.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/collectors/type.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/collectors/type.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/get_document_categories.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/get_document_categories.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/get_document_categories.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/get_document_categories.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/get_sample_documents.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/get_sample_documents.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/get_sample_documents.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/get_sample_documents.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/lib/queries/index.ts b/x-pack/solutions/observability/plugins/investigate_app/server/lib/queries/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/lib/queries/index.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/lib/queries/index.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/models/investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/server/models/investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/models/investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/models/investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/models/investigation_item.ts b/x-pack/solutions/observability/plugins/investigate_app/server/models/investigation_item.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/models/investigation_item.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/models/investigation_item.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/models/investigation_note.ts b/x-pack/solutions/observability/plugins/investigate_app/server/models/investigation_note.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/models/investigation_note.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/models/investigation_note.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/models/pagination.ts b/x-pack/solutions/observability/plugins/investigate_app/server/models/pagination.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/models/pagination.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/models/pagination.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/plugin.ts b/x-pack/solutions/observability/plugins/investigate_app/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/plugin.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/plugin.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/routes/create_investigate_app_server_route.ts b/x-pack/solutions/observability/plugins/investigate_app/server/routes/create_investigate_app_server_route.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/routes/create_investigate_app_server_route.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/routes/create_investigate_app_server_route.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts b/x-pack/solutions/observability/plugins/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts similarity index 97% rename from x-pack/plugins/observability_solution/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts index 494e13efcba95..397401803382e 100644 --- a/x-pack/plugins/observability_solution/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts +++ b/x-pack/solutions/observability/plugins/investigate_app/server/routes/get_global_investigate_app_server_route_repository.ts @@ -6,6 +6,8 @@ */ import { + GetEntitiesResponse, + GetEventsResponse, createInvestigationItemParamsSchema, createInvestigationNoteParamsSchema, createInvestigationParamsSchema, @@ -15,18 +17,17 @@ import { findInvestigationsParamsSchema, getAllInvestigationStatsParamsSchema, getAllInvestigationTagsParamsSchema, + getEntitiesParamsSchema, + getEventsParamsSchema, getInvestigationItemsParamsSchema, getInvestigationNotesParamsSchema, getInvestigationParamsSchema, updateInvestigationItemParamsSchema, updateInvestigationNoteParamsSchema, updateInvestigationParamsSchema, - getEventsParamsSchema, - GetEventsResponse, - getEntitiesParamsSchema, - GetEntitiesResponse, } from '@kbn/investigation-shared'; import { ScopedAnnotationsClient } from '@kbn/observability-plugin/server'; +import { createEntitiesESClient } from '../clients/create_entities_es_client'; import { createInvestigation } from '../services/create_investigation'; import { createInvestigationItem } from '../services/create_investigation_item'; import { createInvestigationNote } from '../services/create_investigation_note'; @@ -34,20 +35,20 @@ import { deleteInvestigation } from '../services/delete_investigation'; import { deleteInvestigationItem } from '../services/delete_investigation_item'; import { deleteInvestigationNote } from '../services/delete_investigation_note'; import { findInvestigations } from '../services/find_investigations'; +import { AlertsClient, getAlertsClient } from '../services/get_alerts_client'; +import { getAllInvestigationStats } from '../services/get_all_investigation_stats'; import { getAllInvestigationTags } from '../services/get_all_investigation_tags'; +import { getEntitiesWithSource } from '../services/get_entities'; +import { getAlertEvents, getAnnotationEvents } from '../services/get_events'; import { getInvestigation } from '../services/get_investigation'; import { getInvestigationItems } from '../services/get_investigation_items'; import { getInvestigationNotes } from '../services/get_investigation_notes'; import { investigationRepositoryFactory } from '../services/investigation_repository'; import { updateInvestigation } from '../services/update_investigation'; -import { getAlertEvents, getAnnotationEvents } from '../services/get_events'; -import { AlertsClient, getAlertsClient } from '../services/get_alerts_client'; import { updateInvestigationItem } from '../services/update_investigation_item'; import { updateInvestigationNote } from '../services/update_investigation_note'; import { createInvestigateAppServerRoute } from './create_investigate_app_server_route'; -import { getAllInvestigationStats } from '../services/get_all_investigation_stats'; -import { getEntitiesWithSource } from '../services/get_entities'; -import { createEntitiesESClient } from '../clients/create_entities_es_client'; +import { rootCauseAnalysisRoute } from './rca/route'; const createInvestigationRoute = createInvestigateAppServerRoute({ endpoint: 'POST /api/observability/investigations 2023-10-31', @@ -334,12 +335,17 @@ const getEventsRoute = createInvestigateAppServerRoute({ const alertsClient: AlertsClient = await getAlertsClient({ plugins, request }); const events: GetEventsResponse = []; - if (annotationsClient) { + const includeAllEventTypes = !params?.query?.eventTypes || params.query.eventTypes.length === 0; + + if ( + annotationsClient && + (includeAllEventTypes || params?.query?.eventTypes?.includes('annotation')) + ) { const annotationEvents = await getAnnotationEvents(params?.query ?? {}, annotationsClient); events.push(...annotationEvents); } - if (alertsClient) { + if (alertsClient && (includeAllEventTypes || params?.query?.eventTypes?.includes('alert'))) { const alertEvents = await getAlertEvents(params?.query ?? {}, alertsClient); events.push(...alertEvents); } @@ -400,6 +406,7 @@ export function getGlobalInvestigateAppServerRouteRepository() { ...getEntitiesRoute, ...getAllInvestigationStatsRoute, ...getAllInvestigationTagsRoute, + ...rootCauseAnalysisRoute, }; } diff --git a/x-pack/solutions/observability/plugins/investigate_app/server/routes/rca/route.ts b/x-pack/solutions/observability/plugins/investigate_app/server/routes/rca/route.ts new file mode 100644 index 0000000000000..c4b71d7faa4b9 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/server/routes/rca/route.ts @@ -0,0 +1,163 @@ +/* + * 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 { Observable, catchError, from, of, share, switchMap, toArray } from 'rxjs'; +import { ServerSentEventBase } from '@kbn/sse-utils'; +import { + RootCauseAnalysisEvent, + runRootCauseAnalysis, +} from '@kbn/observability-ai-server/root_cause_analysis'; +import { z } from '@kbn/zod'; +import datemath from '@elastic/datemath'; +import { OBSERVABILITY_LOGS_DATA_ACCESS_LOG_SOURCES_ID } from '@kbn/management-settings-ids'; +import { createObservabilityEsClient } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; +import { preconditionFailed } from '@hapi/boom'; +import { createInvestigateAppServerRoute } from '../create_investigate_app_server_route'; +import { investigationRepositoryFactory } from '../../services/investigation_repository'; + +export const rootCauseAnalysisRoute = createInvestigateAppServerRoute({ + endpoint: 'POST /internal/observability/investigation/root_cause_analysis', + options: { + tags: [], + }, + params: z.object({ + body: z.object({ + investigationId: z.string(), + rangeFrom: z.string(), + rangeTo: z.string(), + serviceName: z.string(), + context: z.string(), + connectorId: z.string(), + completeInBackground: z.boolean().optional(), + }), + }), + handler: async ({ + params, + plugins, + request, + context: requestContext, + logger, + }): Promise>> => { + const { + body: { + investigationId, + context, + rangeFrom, + rangeTo, + serviceName, + connectorId, + completeInBackground, + }, + } = params; + + if (!plugins.observabilityAIAssistant) { + throw preconditionFailed('Observability AI Assistant plugin is not available'); + } + + const start = datemath.parse(rangeFrom)?.valueOf()!; + const end = datemath.parse(rangeTo)?.valueOf()!; + + const coreContext = await requestContext.core; + + const coreEsClient = coreContext.elasticsearch.client.asCurrentUser; + const soClient = coreContext.savedObjects.client; + const uiSettingsClient = coreContext.uiSettings.client; + + const repository = investigationRepositoryFactory({ soClient, logger }); + + const esClient = createObservabilityEsClient({ + client: coreEsClient, + logger, + plugin: 'investigateApp', + }); + + const [ + investigation, + rulesClient, + alertsClient, + inferenceClient, + observabilityAIAssistantClient, + spaceId = 'default', + apmIndices, + logSources, + sloSummaryIndices, + ] = await Promise.all([ + repository.findById(investigationId), + (await plugins.alerting.start()).getRulesClientWithRequest(request), + (await plugins.ruleRegistry.start()).getRacClientWithRequest(request), + (await plugins.inference.start()).getClient({ request }), + plugins + .observabilityAIAssistant!.start() + .then((observabilityAIAssistantStart) => + observabilityAIAssistantStart.service.getClient({ request, scopes: ['observability'] }) + ), + (await plugins.spaces?.start())?.spacesService.getSpaceId(request), + plugins.apmDataAccess.setup.getApmIndices(soClient), + uiSettingsClient.get(OBSERVABILITY_LOGS_DATA_ACCESS_LOG_SOURCES_ID) as Promise, + (await plugins.slo.start()).getSloClientWithRequest(request).getSummaryIndices(), + ]); + + const next$ = runRootCauseAnalysis({ + alertsClient, + connectorId, + start, + end, + esClient, + inferenceClient, + indices: { + logs: logSources, + traces: [apmIndices.span, apmIndices.error, apmIndices.transaction], + sloSummaries: sloSummaryIndices, + }, + rulesClient, + observabilityAIAssistantClient, + serviceName, + spaceId, + context, + logger, + }).pipe( + switchMap((event) => { + return of({ + type: 'event' as const, + event, + }); + }) + ); + + if (completeInBackground) { + const shared$ = next$.pipe(share()); + + shared$ + .pipe( + toArray(), + catchError(() => { + return of(); + }), + switchMap((events) => { + return from( + repository.save({ + ...investigation, + rootCauseAnalysis: { + events: events.map(({ event }) => event), + }, + }) + ); + }) + ) + .subscribe({ + error: (error) => { + logger.error(`Failed to update investigation: ${error.message}`); + logger.error(error); + }, + }); + + return shared$; + } + + return next$; + }, +}); diff --git a/x-pack/plugins/observability_solution/investigate_app/server/routes/register_routes.ts b/x-pack/solutions/observability/plugins/investigate_app/server/routes/register_routes.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/routes/register_routes.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/routes/register_routes.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/routes/types.ts b/x-pack/solutions/observability/plugins/investigate_app/server/routes/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/routes/types.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/routes/types.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/saved_objects/investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/server/saved_objects/investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/saved_objects/investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/saved_objects/investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/create_investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/create_investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/create_investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/create_investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/create_investigation_item.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/create_investigation_item.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/create_investigation_item.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/create_investigation_item.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/create_investigation_note.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/create_investigation_note.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/create_investigation_note.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/create_investigation_note.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/delete_investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/delete_investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/delete_investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/delete_investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/delete_investigation_item.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/delete_investigation_item.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/delete_investigation_item.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/delete_investigation_item.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/delete_investigation_note.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/delete_investigation_note.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/delete_investigation_note.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/delete_investigation_note.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/find_investigations.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/find_investigations.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/find_investigations.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/find_investigations.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_alerts_client.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_alerts_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/get_alerts_client.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/get_alerts_client.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_all_investigation_stats.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_all_investigation_stats.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/get_all_investigation_stats.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/get_all_investigation_stats.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_all_investigation_tags.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_all_investigation_tags.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/get_all_investigation_tags.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/get_all_investigation_tags.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_entities.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_entities.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/get_entities.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/get_entities.ts diff --git a/x-pack/solutions/observability/plugins/investigate_app/server/services/get_events.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_events.ts new file mode 100644 index 0000000000000..3cf87dc54b87c --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_events.ts @@ -0,0 +1,107 @@ +/* + * 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 datemath from '@elastic/datemath'; +import { + AlertEventResponse, + AnnotationEventResponse, + GetEventsParams, + alertEventSchema, + annotationEventSchema, +} from '@kbn/investigation-shared'; +import { ScopedAnnotationsClient } from '@kbn/observability-plugin/server'; +import { + ALERT_REASON, + ALERT_RULE_CATEGORY, + ALERT_START, + ALERT_STATUS, + ALERT_UUID, +} from '@kbn/rule-data-utils'; +import { rangeQuery } from '../lib/queries'; +import { AlertsClient } from './get_alerts_client'; + +export async function getAnnotationEvents( + params: GetEventsParams, + annotationsClient: ScopedAnnotationsClient +): Promise { + const response = await annotationsClient.find({ + start: params?.rangeFrom, + end: params?.rangeTo, + filter: params?.filter, + size: 100, + }); + + // we will return only "point_in_time" annotations + const events = response.items + .filter((item) => !item.event?.end) + .map((item) => { + const hostName = item.host?.name; + const serviceName = item.service?.name; + const serviceVersion = item.service?.version; + const sloId = item.slo?.id; + const sloInstanceId = item.slo?.instanceId; + + return { + id: item.id, + title: item.annotation.title, + description: item.message, + timestamp: new Date(item['@timestamp']).getTime(), + eventType: 'annotation', + annotationType: item.annotation.type, + source: { + ...(hostName ? { 'host.name': hostName } : undefined), + ...(serviceName ? { 'service.name': serviceName } : undefined), + ...(serviceVersion ? { 'service.version': serviceVersion } : undefined), + ...(sloId ? { 'slo.id': sloId } : undefined), + ...(sloInstanceId ? { 'slo.instanceId': sloInstanceId } : undefined), + }, + }; + }); + + return annotationEventSchema.array().parse(events); +} + +export async function getAlertEvents( + params: GetEventsParams, + alertsClient: AlertsClient +): Promise { + const startInMs = datemath.parse(params?.rangeFrom ?? 'now-15m')!.valueOf(); + const endInMs = datemath.parse(params?.rangeTo ?? 'now')!.valueOf(); + const filterJSON = params?.filter ? JSON.parse(params.filter) : {}; + + const body = { + size: 100, + track_total_hits: false, + query: { + bool: { + filter: [ + ...rangeQuery(startInMs, endInMs, ALERT_START), + ...Object.keys(filterJSON).map((filterKey) => ({ + term: { [filterKey]: filterJSON[filterKey] }, + })), + ], + }, + }, + }; + + const response = await alertsClient.search(body); + + const events = response.hits.hits.map((hit) => { + const _source = hit._source; + + return { + id: _source[ALERT_UUID], + title: `${_source[ALERT_RULE_CATEGORY]} breached`, + description: _source[ALERT_REASON], + timestamp: new Date(_source[ALERT_START] as string).getTime(), + eventType: 'alert', + alertStatus: _source[ALERT_STATUS], + }; + }); + + return alertEventSchema.array().parse(events); +} diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/get_investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/get_investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_investigation_items.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_investigation_items.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/get_investigation_items.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/get_investigation_items.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/get_investigation_notes.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/get_investigation_notes.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/get_investigation_notes.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/get_investigation_notes.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/investigation_repository.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/investigation_repository.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/investigation_repository.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/investigation_repository.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/update_investigation.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/update_investigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/update_investigation.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/update_investigation.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/update_investigation_item.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/update_investigation_item.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/update_investigation_item.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/update_investigation_item.ts diff --git a/x-pack/plugins/observability_solution/investigate_app/server/services/update_investigation_note.ts b/x-pack/solutions/observability/plugins/investigate_app/server/services/update_investigation_note.ts similarity index 100% rename from x-pack/plugins/observability_solution/investigate_app/server/services/update_investigation_note.ts rename to x-pack/solutions/observability/plugins/investigate_app/server/services/update_investigation_note.ts diff --git a/x-pack/solutions/observability/plugins/investigate_app/server/types.ts b/x-pack/solutions/observability/plugins/investigate_app/server/types.ts new file mode 100644 index 0000000000000..705339dfbf2e9 --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/server/types.ts @@ -0,0 +1,55 @@ +/* + * 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 { ObservabilityPluginSetup } from '@kbn/observability-plugin/server'; +import type { + RuleRegistryPluginSetupContract, + RuleRegistryPluginStartContract, +} from '@kbn/rule-registry-plugin/server'; +import type { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server/plugin'; +import type { SLOServerStart, SLOServerSetup } from '@kbn/slo-plugin/server'; +import type { InferenceServerStart, InferenceServerSetup } from '@kbn/inference-plugin/server'; +import type { SpacesPluginSetup, SpacesPluginStart } from '@kbn/spaces-plugin/server'; +import type { + ApmDataAccessPluginStart, + ApmDataAccessPluginSetup, +} from '@kbn/apm-data-access-plugin/server'; +import type { + ObservabilityAIAssistantServerStart, + ObservabilityAIAssistantServerSetup, +} from '@kbn/observability-ai-assistant-plugin/server'; +import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; + +/* eslint-disable @typescript-eslint/no-empty-interface*/ + +export interface ConfigSchema {} + +export interface InvestigateAppSetupDependencies { + observability: ObservabilityPluginSetup; + ruleRegistry: RuleRegistryPluginSetupContract; + slo: SLOServerSetup; + alerting: AlertingServerSetup; + inference: InferenceServerSetup; + spaces?: SpacesPluginSetup; + apmDataAccess: ApmDataAccessPluginSetup; + observabilityAIAssistant?: ObservabilityAIAssistantServerSetup; + usageCollection: UsageCollectionSetup; +} + +export interface InvestigateAppStartDependencies { + ruleRegistry: RuleRegistryPluginStartContract; + slo: SLOServerStart; + alerting: AlertingServerStart; + inference: InferenceServerStart; + spaces?: SpacesPluginStart; + apmDataAccess: ApmDataAccessPluginStart; + observabilityAIAssistant?: ObservabilityAIAssistantServerStart; +} + +export interface InvestigateAppServerSetup {} + +export interface InvestigateAppServerStart {} diff --git a/x-pack/solutions/observability/plugins/investigate_app/tsconfig.json b/x-pack/solutions/observability/plugins/investigate_app/tsconfig.json new file mode 100644 index 0000000000000..55e63cfdcf95f --- /dev/null +++ b/x-pack/solutions/observability/plugins/investigate_app/tsconfig.json @@ -0,0 +1,84 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "../../../../typings/**/*", + "common/**/*", + "public/**/*", + "typings/**/*", + "public/**/*.json", + "server/**/*", + ".storybook/**/*" + ], + "exclude": [ + "target/**/*", + ".storybook/**/*.js" + ], + "kbn_references": [ + "@kbn/alerting-plugin", + "@kbn/apm-data-access-plugin", + "@kbn/calculate-auto", + "@kbn/charts-plugin", + "@kbn/config-schema", + "@kbn/content-management-plugin", + "@kbn/core-elasticsearch-server", + "@kbn/core-saved-objects-server", + "@kbn/core-security-common", + "@kbn/core", + "@kbn/data-plugin", + "@kbn/data-views-plugin", + "@kbn/dataset-quality-plugin", + "@kbn/deeplinks-observability", + "@kbn/embeddable-plugin", + "@kbn/entities-schema", + "@kbn/es-query", + "@kbn/es-types", + "@kbn/esql-utils", + "@kbn/esql", + "@kbn/expressions-plugin", + "@kbn/field-types", + "@kbn/i18n-react", + "@kbn/i18n", + "@kbn/inference-common", + "@kbn/inference-plugin", + "@kbn/investigate-plugin", + "@kbn/investigation-shared", + "@kbn/kibana-react-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/lens-embeddable-utils", + "@kbn/lens-plugin", + "@kbn/licensing-plugin", + "@kbn/logging", + "@kbn/management-settings-ids", + "@kbn/ml-random-sampler-utils", + "@kbn/observability-ai-assistant-app-plugin", + "@kbn/observability-ai-assistant-plugin", + "@kbn/observability-ai-server", + "@kbn/observability-plugin", + "@kbn/observability-shared-plugin", + "@kbn/observability-utils-browser", + "@kbn/observability-utils-server", + "@kbn/presentation-containers", + "@kbn/react-kibana-context-theme", + "@kbn/rule-data-utils", + "@kbn/rule-registry-plugin", + "@kbn/saved-objects-finder-plugin", + "@kbn/security-plugin", + "@kbn/server-route-repository-client", + "@kbn/server-route-repository", + "@kbn/shared-ux-link-redirect-app", + "@kbn/shared-ux-router", + "@kbn/slo-plugin", + "@kbn/spaces-plugin", + "@kbn/sse-utils", + "@kbn/std", + "@kbn/ui-actions-plugin", + "@kbn/unified-search-plugin", + "@kbn/usage-collection-plugin", + "@kbn/utility-types-jest", + "@kbn/visualization-utils", + "@kbn/zod", + ], +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/.storybook/jest_setup.js b/x-pack/solutions/observability/plugins/observability/.storybook/jest_setup.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/.storybook/jest_setup.js rename to x-pack/solutions/observability/plugins/observability/.storybook/jest_setup.js diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/.storybook/main.js b/x-pack/solutions/observability/plugins/observability/.storybook/main.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/.storybook/main.js rename to x-pack/solutions/observability/plugins/observability/.storybook/main.js diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/.storybook/preview.js b/x-pack/solutions/observability/plugins/observability/.storybook/preview.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/.storybook/preview.js rename to x-pack/solutions/observability/plugins/observability/.storybook/preview.js diff --git a/x-pack/plugins/observability_solution/observability/README.md b/x-pack/solutions/observability/plugins/observability/README.md similarity index 100% rename from x-pack/plugins/observability_solution/observability/README.md rename to x-pack/solutions/observability/plugins/observability/README.md diff --git a/x-pack/plugins/observability_solution/observability/common/annotations.ts b/x-pack/solutions/observability/plugins/observability/common/annotations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/annotations.ts rename to x-pack/solutions/observability/plugins/observability/common/annotations.ts diff --git a/x-pack/plugins/observability_solution/observability/common/constants.ts b/x-pack/solutions/observability/plugins/observability/common/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/constants.ts rename to x-pack/solutions/observability/plugins/observability/common/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/color_palette.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/color_palette.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/color_palette.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/color_palette.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/bytes.test.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/bytes.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/bytes.test.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/bytes.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/bytes.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/bytes.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/bytes.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/bytes.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/datetime.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/datetime.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/datetime.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/datetime.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/high_precision.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/high_precision.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/high_precision.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/high_precision.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/index.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/index.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/index.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/number.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/number.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/number.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/number.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/percent.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/percent.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/percent.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/percent.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/snapshot_metric_formats.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/snapshot_metric_formats.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/snapshot_metric_formats.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/snapshot_metric_formats.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/types.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/formatters/types.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/formatters/types.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/get_view_in_app_url.test.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/get_view_in_app_url.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/get_view_in_app_url.test.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/get_view_in_app_url.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/get_view_in_app_url.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/get_view_in_app_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/get_view_in_app_url.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/get_view_in_app_url.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/helpers/get_group.test.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/helpers/get_group.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/helpers/get_group.test.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/helpers/get_group.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/helpers/get_group.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/helpers/get_group.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/helpers/get_group.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/helpers/get_group.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/metric_value_formatter.test.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/metric_value_formatter.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/metric_value_formatter.test.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/metric_value_formatter.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/metric_value_formatter.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/metric_value_formatter.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/metric_value_formatter.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/metric_value_formatter.ts diff --git a/x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/types.ts b/x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/custom_threshold_rule/types.ts rename to x-pack/solutions/observability/plugins/observability/common/custom_threshold_rule/types.ts diff --git a/x-pack/plugins/observability_solution/observability/common/guided_onboarding/kubernetes_guide_config.tsx b/x-pack/solutions/observability/plugins/observability/common/guided_onboarding/kubernetes_guide_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/guided_onboarding/kubernetes_guide_config.tsx rename to x-pack/solutions/observability/plugins/observability/common/guided_onboarding/kubernetes_guide_config.tsx diff --git a/x-pack/plugins/observability_solution/observability/common/i18n.ts b/x-pack/solutions/observability/plugins/observability/common/i18n.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/i18n.ts rename to x-pack/solutions/observability/plugins/observability/common/i18n.ts diff --git a/x-pack/plugins/observability_solution/observability/common/index.ts b/x-pack/solutions/observability/plugins/observability/common/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/index.ts rename to x-pack/solutions/observability/plugins/observability/common/index.ts diff --git a/x-pack/plugins/observability_solution/observability/common/locators/alerts.test.ts b/x-pack/solutions/observability/plugins/observability/common/locators/alerts.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/locators/alerts.test.ts rename to x-pack/solutions/observability/plugins/observability/common/locators/alerts.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/locators/alerts.ts b/x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/locators/alerts.ts rename to x-pack/solutions/observability/plugins/observability/common/locators/alerts.ts diff --git a/x-pack/plugins/observability_solution/observability/common/locators/paths.ts b/x-pack/solutions/observability/plugins/observability/common/locators/paths.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/locators/paths.ts rename to x-pack/solutions/observability/plugins/observability/common/locators/paths.ts diff --git a/x-pack/plugins/observability_solution/observability/common/processor_event.ts b/x-pack/solutions/observability/plugins/observability/common/processor_event.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/processor_event.ts rename to x-pack/solutions/observability/plugins/observability/common/processor_event.ts diff --git a/x-pack/plugins/observability_solution/observability/common/progressive_loading.ts b/x-pack/solutions/observability/plugins/observability/common/progressive_loading.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/progressive_loading.ts rename to x-pack/solutions/observability/plugins/observability/common/progressive_loading.ts diff --git a/x-pack/plugins/observability_solution/observability/common/typings.ts b/x-pack/solutions/observability/plugins/observability/common/typings.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/typings.ts rename to x-pack/solutions/observability/plugins/observability/common/typings.ts diff --git a/x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts b/x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts rename to x-pack/solutions/observability/plugins/observability/common/ui_settings_keys.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts b/x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/alerting/alert_url.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/alerting/alert_url.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/alerting/get_related_alerts_query.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/alerting/get_related_alerts_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/alerting/get_related_alerts_query.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/alerting/get_related_alerts_query.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/alerting/get_related_alerts_query.ts b/x-pack/solutions/observability/plugins/observability/common/utils/alerting/get_related_alerts_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/alerting/get_related_alerts_query.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/alerting/get_related_alerts_query.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/alerting/types.ts b/x-pack/solutions/observability/plugins/observability/common/utils/alerting/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/alerting/types.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/alerting/types.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/array_union_to_callable.ts b/x-pack/solutions/observability/plugins/observability/common/utils/array_union_to_callable.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/array_union_to_callable.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/array_union_to_callable.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/as_mutable_array.ts b/x-pack/solutions/observability/plugins/observability/common/utils/as_mutable_array.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/as_mutable_array.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/as_mutable_array.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/convert_legacy_outside_comparator.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/convert_legacy_outside_comparator.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/convert_legacy_outside_comparator.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/convert_legacy_outside_comparator.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/convert_legacy_outside_comparator.ts b/x-pack/solutions/observability/plugins/observability/common/utils/convert_legacy_outside_comparator.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/convert_legacy_outside_comparator.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/convert_legacy_outside_comparator.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/datetime.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/datetime.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/datetime.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/datetime.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/datetime.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/datetime.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/datetime.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/datetime.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/duration.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/duration.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/formatters.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/formatters.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/index.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/index.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/index.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/size.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/size.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/size.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/size.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/formatters/size.ts b/x-pack/solutions/observability/plugins/observability/common/utils/formatters/size.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/formatters/size.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/formatters/size.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts b/x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/get_inspect_response.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/get_inspect_response.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/get_interval_in_seconds.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/get_interval_in_seconds.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/get_interval_in_seconds.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/get_interval_in_seconds.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/get_interval_in_seconds.ts b/x-pack/solutions/observability/plugins/observability/common/utils/get_interval_in_seconds.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/get_interval_in_seconds.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/get_interval_in_seconds.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/is_finite_number.ts b/x-pack/solutions/observability/plugins/observability/common/utils/is_finite_number.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/is_finite_number.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/is_finite_number.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/join_by_key/index.test.ts b/x-pack/solutions/observability/plugins/observability/common/utils/join_by_key/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/join_by_key/index.test.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/join_by_key/index.test.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/join_by_key/index.ts b/x-pack/solutions/observability/plugins/observability/common/utils/join_by_key/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/join_by_key/index.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/join_by_key/index.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/maybe.ts b/x-pack/solutions/observability/plugins/observability/common/utils/maybe.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/maybe.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/maybe.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/pick_keys.ts b/x-pack/solutions/observability/plugins/observability/common/utils/pick_keys.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/pick_keys.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/pick_keys.ts diff --git a/x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts b/x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/common/utils/unwrap_es_response.ts rename to x-pack/solutions/observability/plugins/observability/common/utils/unwrap_es_response.ts diff --git a/x-pack/plugins/observability_solution/observability/dev_docs/custom_threshold.md b/x-pack/solutions/observability/plugins/observability/dev_docs/custom_threshold.md similarity index 77% rename from x-pack/plugins/observability_solution/observability/dev_docs/custom_threshold.md rename to x-pack/solutions/observability/plugins/observability/dev_docs/custom_threshold.md index cdf986adb6215..e8ec5dbbaa05e 100644 --- a/x-pack/plugins/observability_solution/observability/dev_docs/custom_threshold.md +++ b/x-pack/solutions/observability/plugins/observability/dev_docs/custom_threshold.md @@ -7,7 +7,7 @@ Custom threshold rule is GA since 8.13. ### With data forge > [!TIP] -> The following commands uses [kbn-data-forge](../../../../packages/kbn-data-forge/README.md) to generate some data for testing Custom threshold rule. +> The following commands uses [kbn-data-forge](../../../../../platform/packages/shared/kbn-data-forge/README.md) to generate some data for testing Custom threshold rule. Basic command to generate host data for 7 hosts: ```sh @@ -33,7 +33,7 @@ Get help with the data forge tool: `node x-pack/scripts/data_forge.js --help` ### With synthtrace > [!TIP] -> The following commands uses [kbn-apm-synthtrace](../../../../packages/kbn-apm-synthtrace) to generate some data for testing Custom threshold rule. +> The following commands uses [kbn-apm-synthtrace](../../../../../packages/kbn-apm-synthtrace) to generate some data for testing Custom threshold rule. Basic command to generate APM data for 3 services: ```sh diff --git a/x-pack/solutions/observability/plugins/observability/dev_docs/feature_flags.md b/x-pack/solutions/observability/plugins/observability/dev_docs/feature_flags.md new file mode 100644 index 0000000000000..3b06f83096dfe --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability/dev_docs/feature_flags.md @@ -0,0 +1,16 @@ +## Feature flags and advanced settings + +To set up a flagged feature or other advanced setting, add the name of the feature key (`observability:myFeature`) to [common/ui_settings_keys.ts](../common/ui_settings_keys.ts) and the feature parameters to [server/ui_settings.ts](../server/ui_settings.ts). + +Test for the feature like: + +```js +import { myFeatureEnabled } from '../ui_settings_keys'; +if (core.uiSettings.get(myFeatureEnabled)) { + doStuff(); +} +``` + +In order for telemetry to be collected, the keys and types need to be added in [src/plugins/kibana_usage_collection/server/collectors/management/schema.ts](../../../../../src/plugins/kibana_usage_collection/server/collectors/management/schema.ts) and [src/plugins/kibana_usage_collection/server/collectors/management/types.ts](../../../../src/plugins/kibana_usage_collection/server/collectors/management/types.ts). + +Settings can be managed in Kibana under Stack Management > Advanced Settings > Observability. diff --git a/x-pack/plugins/observability_solution/observability/dev_docs/images/data_forge_custom_threshold_rule_cpu.png b/x-pack/solutions/observability/plugins/observability/dev_docs/images/data_forge_custom_threshold_rule_cpu.png similarity index 100% rename from x-pack/plugins/observability_solution/observability/dev_docs/images/data_forge_custom_threshold_rule_cpu.png rename to x-pack/solutions/observability/plugins/observability/dev_docs/images/data_forge_custom_threshold_rule_cpu.png diff --git a/x-pack/plugins/observability_solution/observability/dev_docs/images/data_forge_data_view.png b/x-pack/solutions/observability/plugins/observability/dev_docs/images/data_forge_data_view.png similarity index 100% rename from x-pack/plugins/observability_solution/observability/dev_docs/images/data_forge_data_view.png rename to x-pack/solutions/observability/plugins/observability/dev_docs/images/data_forge_data_view.png diff --git a/x-pack/plugins/observability_solution/observability/dev_docs/images/synthtrace_custom_threshold_rule.png b/x-pack/solutions/observability/plugins/observability/dev_docs/images/synthtrace_custom_threshold_rule.png similarity index 100% rename from x-pack/plugins/observability_solution/observability/dev_docs/images/synthtrace_custom_threshold_rule.png rename to x-pack/solutions/observability/plugins/observability/dev_docs/images/synthtrace_custom_threshold_rule.png diff --git a/x-pack/plugins/observability_solution/observability/dev_docs/images/synthtrace_data_view.png b/x-pack/solutions/observability/plugins/observability/dev_docs/images/synthtrace_data_view.png similarity index 100% rename from x-pack/plugins/observability_solution/observability/dev_docs/images/synthtrace_data_view.png rename to x-pack/solutions/observability/plugins/observability/dev_docs/images/synthtrace_data_view.png diff --git a/x-pack/solutions/observability/plugins/observability/jest.config.js b/x-pack/solutions/observability/plugins/observability/jest.config.js new file mode 100644 index 0000000000000..e79375a9219a6 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability/jest.config.js @@ -0,0 +1,21 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/plugins/observability'], + setupFiles: [ + '/x-pack/solutions/observability/plugins/observability/.storybook/jest_setup.js', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/observability/plugins/observability', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/observability/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/observability_solution/observability/kibana.jsonc b/x-pack/solutions/observability/plugins/observability/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/observability/kibana.jsonc rename to x-pack/solutions/observability/plugins/observability/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/observability/public/application/application.test.tsx b/x-pack/solutions/observability/plugins/observability/public/application/application.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/application/application.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/application/application.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/application/hideable_react_query_dev_tools.tsx b/x-pack/solutions/observability/plugins/observability/public/application/hideable_react_query_dev_tools.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/application/hideable_react_query_dev_tools.tsx rename to x-pack/solutions/observability/plugins/observability/public/application/hideable_react_query_dev_tools.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/application/index.tsx b/x-pack/solutions/observability/plugins/observability/public/application/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/application/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/application/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/assets/illustration_dark.svg b/x-pack/solutions/observability/plugins/observability/public/assets/illustration_dark.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/illustration_dark.svg rename to x-pack/solutions/observability/plugins/observability/public/assets/illustration_dark.svg diff --git a/x-pack/plugins/observability_solution/observability/public/assets/illustration_light.svg b/x-pack/solutions/observability/plugins/observability/public/assets/illustration_light.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/illustration_light.svg rename to x-pack/solutions/observability/plugins/observability/public/assets/illustration_light.svg diff --git a/x-pack/plugins/observability_solution/observability/public/assets/kibana_dashboard_dark.svg b/x-pack/solutions/observability/plugins/observability/public/assets/kibana_dashboard_dark.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/kibana_dashboard_dark.svg rename to x-pack/solutions/observability/plugins/observability/public/assets/kibana_dashboard_dark.svg diff --git a/x-pack/plugins/observability_solution/observability/public/assets/kibana_dashboard_light.svg b/x-pack/solutions/observability/plugins/observability/public/assets/kibana_dashboard_light.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/kibana_dashboard_light.svg rename to x-pack/solutions/observability/plugins/observability/public/assets/kibana_dashboard_light.svg diff --git a/x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_alerts.gif b/x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_alerts.gif similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_alerts.gif rename to x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_alerts.gif diff --git a/x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_logs.gif b/x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_logs.gif similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_logs.gif rename to x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_logs.gif diff --git a/x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_metrics.gif b/x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_metrics.gif similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_metrics.gif rename to x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_metrics.gif diff --git a/x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_services.gif b/x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_services.gif similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/assets/onboarding_tour_step_services.gif rename to x-pack/solutions/observability/plugins/observability/public/assets/onboarding_tour_step_services.gif diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/alert_overview.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/alert_overview.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_overview/alert_overview.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_overview/alert_overview.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/format_cases.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/format_cases.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/format_cases.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/format_cases.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/is_fields_same_type.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/is_fields_same_type.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/is_fields_same_type.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/is_fields_same_type.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_overview/helpers/map_rules_params_with_flyout.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_overview/overview_columns.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_overview/overview_columns.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_overview/overview_columns.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_overview/overview_columns.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/alert_search_bar.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/alert_search_bar.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/alert_search_bar.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/alert_search_bar.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/alert_search_bar.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/alert_search_bar.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/alert_search_bar.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/alert_search_bar_with_url_sync.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/alert_search_bar_with_url_sync.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/alert_search_bar_with_url_sync.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/alert_search_bar_with_url_sync.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/components/alerts_status_filter.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/components/alerts_status_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/components/alerts_status_filter.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/components/alerts_status_filter.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/components/index.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/components/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/components/index.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/components/index.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/constants.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/constants.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/containers/index.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/containers/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/containers/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/containers/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/containers/state_container.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/containers/state_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/containers/state_container.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/containers/state_container.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/containers/use_alert_search_bar_state_container.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/containers/use_alert_search_bar_state_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/containers/use_alert_search_bar_state_container.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/containers/use_alert_search_bar_state_container.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/get_alert_search_bar_lazy.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/types.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_search_bar/types.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_search_bar/types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_severity_badge.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_severity_badge.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_severity_badge.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_severity_badge.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_severity_badge.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_severity_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_severity_badge.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_severity_badge.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_alert_source_links.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_alert_source_links.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_alert_source_links.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_alert_source_links.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_alert_source_links.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_alert_source_links.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_alert_source_links.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_alert_source_links.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_apm_app_url.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_apm_app_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_apm_app_url.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_apm_app_url.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_sources.ts b/x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_sources.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_sources/get_sources.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alert_sources/get_sources.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_sources/groups.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_sources/groups.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_sources/groups.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_sources/groups.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alert_status_indicator.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alert_status_indicator.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alert_status_indicator.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alert_status_indicator.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.mock.ts b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_body.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_body.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_body.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_body.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_body.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_body.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_body.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_body.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_footer.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_footer.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_footer.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_footer.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_header.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/alerts_flyout_header.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/alerts_flyout_header.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/use_get_alert_flyout_components.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/use_get_alert_flyout_components.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_flyout/use_get_alert_flyout_components.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_flyout/use_get_alert_flyout_components.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/alerts/get_alerts_page_table_configuration.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/alerts/get_alerts_page_table_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/alerts/get_alerts_page_table_configuration.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/alerts/get_alerts_page_table_configuration.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/alerts/get_persistent_controls.ts b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/alerts/get_persistent_controls.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/alerts/get_persistent_controls.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/alerts/get_persistent_controls.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/cell_tooltip.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/cell_tooltip.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/cell_tooltip.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/cell_tooltip.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/cell_tooltip.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/cell_tooltip.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/cell_tooltip.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/cell_tooltip.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/get_columns.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/get_columns.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/get_columns.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/get_columns.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/render_cell_value.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/render_cell_value.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/render_cell_value.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/render_cell_value.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/render_cell_value.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/render_cell_value.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/render_cell_value.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/render_cell_value.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/timestamp_tooltip.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/timestamp_tooltip.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/timestamp_tooltip.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/timestamp_tooltip.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/timestamp_tooltip.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/timestamp_tooltip.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/common/timestamp_tooltip.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/common/timestamp_tooltip.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/constants.ts b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/constants.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/get_aggregations_by_grouping_field.ts b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/get_aggregations_by_grouping_field.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/get_aggregations_by_grouping_field.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/get_aggregations_by_grouping_field.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/get_group_stats.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/get_group_stats.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/get_group_stats.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/get_group_stats.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/render_group_panel.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/render_group_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/grouping/render_group_panel.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/render_group_panel.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/observability/get_alerts_page_table_configuration.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/observability/get_alerts_page_table_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/observability/get_alerts_page_table_configuration.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/observability/get_alerts_page_table_configuration.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/register_alerts_table_configuration.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/register_alerts_table_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/register_alerts_table_configuration.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/register_alerts_table_configuration.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/rule_details/get_rule_details_table_configuration.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/rule_details/get_rule_details_table_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/rule_details/get_rule_details_table_configuration.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/rule_details/get_rule_details_table_configuration.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/slo/default_columns.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/slo/default_columns.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/slo/default_columns.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/slo/default_columns.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/slo/get_slo_alerts_table_configuration.tsx b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/slo/get_slo_alerts_table_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/slo/get_slo_alerts_table_configuration.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/slo/get_slo_alerts_table_configuration.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/alerts_table/types.ts b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/alerts_table/types.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/annotation_apearance.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/annotation_apearance.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/annotation_apearance.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/annotation_apearance.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/annotation_form.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/annotation_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/annotation_form.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/annotation_form.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_apply_to.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_apply_to.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_apply_to.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_apply_to.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_icon.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_icon.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_icon.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_icon.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_range.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_range.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_range.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_range.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_tooltip.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_tooltip.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotation_tooltip.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotation_tooltip.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotations.scss b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotations.scss similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/annotations.scss rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/annotations.scss diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/common/delete_annotations.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/common/delete_annotations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/common/delete_annotations.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/common/delete_annotations.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/common/delete_annotations_modal.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/common/delete_annotations_modal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/common/delete_annotations_modal.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/common/delete_annotations_modal.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/common/field_selector.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/common/field_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/common/field_selector.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/common/field_selector.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/create_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/create_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/create_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/create_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/fill_option.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/fill_option.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/fill_option.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/fill_option.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/forward_refs.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/forward_refs.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/forward_refs.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/forward_refs.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/index.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/new_line_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/new_line_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/new_line_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/new_line_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/new_rect_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/new_rect_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/new_rect_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/new_rect_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/obs_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/obs_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/obs_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/obs_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/observability_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/observability_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/observability_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/observability_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/service_apply_to.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/service_apply_to.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/service_apply_to.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/service_apply_to.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/slo_apply_to.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/slo_apply_to.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/slo_apply_to.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/slo_apply_to.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/slo_selector.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/slo_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/slo_selector.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/slo_selector.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/text_decoration.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/text_decoration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/text_decoration.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/text_decoration.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/components/timestamp_range_label.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/components/timestamp_range_label.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/components/timestamp_range_label.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/components/timestamp_range_label.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/default_annotation.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/default_annotation.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/default_annotation.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/default_annotation.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/display_annotations.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/display_annotations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/display_annotations.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/display_annotations.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_annotation_cruds.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_annotation_cruds.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_annotation_cruds.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_annotation_cruds.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_annotation_permissions.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_annotation_permissions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_annotation_permissions.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_annotation_permissions.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_create_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_create_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_create_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_create_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_delete_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_delete_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_delete_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_delete_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_edit_annotation_helper.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_edit_annotation_helper.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_edit_annotation_helper.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_edit_annotation_helper.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_fetch_annotations.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_fetch_annotations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_fetch_annotations.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_fetch_annotations.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_fetch_apm_suggestions.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_fetch_apm_suggestions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_fetch_apm_suggestions.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_fetch_apm_suggestions.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_fetch_slo_list.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_fetch_slo_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_fetch_slo_list.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_fetch_slo_list.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_update_annotation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_update_annotation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/hooks/use_update_annotation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/hooks/use_update_annotation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/icon_set.ts b/x-pack/solutions/observability/plugins/observability/public/components/annotations/icon_set.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/icon_set.ts rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/icon_set.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx b/x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/annotations/use_annotations.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/annotations/use_annotations.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/center_justified_spinner.tsx b/x-pack/solutions/observability/plugins/observability/public/components/center_justified_spinner.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/center_justified_spinner.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/center_justified_spinner.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/__snapshots__/alert_details_app_section.test.tsx.snap b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/__snapshots__/alert_details_app_section.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/__snapshots__/alert_details_app_section.test.tsx.snap rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/__snapshots__/alert_details_app_section.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/generate_chart_title_and_tooltip.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/generate_chart_title_and_tooltip.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/generate_chart_title_and_tooltip.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/generate_chart_title_and_tooltip.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/log_rate_analysis.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/log_rate_analysis.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/log_rate_analysis.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/log_rate_analysis.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/closable_popover_title.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/closable_popover_title.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/closable_popover_title.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/closable_popover_title.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/closable_popover_title.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/closable_popover_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/closable_popover_title.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/closable_popover_title.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/criterion_preview_chart/criterion_preview_chart.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/criterion_preview_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/criterion_preview_chart/criterion_preview_chart.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/criterion_preview_chart.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/criterion_preview_chart/threshold_annotations.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/custom_equation_editor.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/index.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/metric_row_controls.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_controls.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/metric_row_controls.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_controls.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/metric_row_with_agg.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/types.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_equation/types.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_equation/types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_threshold.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_threshold.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/custom_threshold.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/custom_threshold.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/expression_row.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/expression_row.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/expression_row.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/expression_row.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/expression_row.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/expression_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/expression_row.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/expression_row.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/group_by.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/group_by.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/group_by.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/group_by.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/threshold.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/threshold.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/threshold.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/threshold.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/threshold.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/threshold.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/threshold.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/threshold.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/triggers_actions_context.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/triggers_actions_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/triggers_actions_context.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/triggers_actions_context.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/types.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/types.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/validation.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/validation.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/validation.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/validation.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/validation.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/validation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/validation.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/components/validation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/calculate_domain.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/calculate_domain.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/calculate_domain.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/calculate_domain.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/corrected_percent_convert.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/corrected_percent_convert.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/corrected_percent_convert.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/corrected_percent_convert.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/corrected_percent_convert.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/corrected_percent_convert.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/corrected_percent_convert.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/corrected_percent_convert.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/create_formatter_for_metric.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metric.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/create_formatter_for_metric.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metric.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/create_formatter_for_metrics.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metrics.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/create_formatter_for_metrics.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/create_formatter_for_metrics.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/get_search_configuration.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/get_search_configuration.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/get_search_configuration.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/get_search_configuration.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/get_search_configuration.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/get_search_configuration.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/get_search_configuration.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/get_search_configuration.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/kuery.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/kuery.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/kuery.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/kuery.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/metric_to_format.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/metric_to_format.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/metric_to_format.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/metric_to_format.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/notifications.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/notifications.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/notifications.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/notifications.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/runtime_types.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/runtime_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/runtime_types.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/runtime_types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/source_errors.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/source_errors.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/source_errors.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/source_errors.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/threshold_unit.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/threshold_unit.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/threshold_unit.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/threshold_unit.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/threshold_unit.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/threshold_unit.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/helpers/threshold_unit.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/helpers/threshold_unit.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_kibana_time_zone_setting.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_kibana_time_zone_setting.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_kibana_time_zone_setting.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_kibana_time_zone_setting.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_kibana_timefilter_time.tsx b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_kibana_timefilter_time.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_kibana_timefilter_time.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_kibana_timefilter_time.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_metric_threshold_alert_prefill.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_metric_threshold_alert_prefill.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_metric_threshold_alert_prefill.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_metric_threshold_alert_prefill.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_tracked_promise.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_tracked_promise.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/hooks/use_tracked_promise.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/hooks/use_tracked_promise.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/i18n_strings.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/i18n_strings.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/i18n_strings.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/i18n_strings.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/mocks/custom_threshold_rule.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/rule_data_formatters.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/rule_data_formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/rule_data_formatters.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/rule_data_formatters.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/types.ts b/x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/custom_threshold/types.ts rename to x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/experimental_badge.tsx b/x-pack/solutions/observability/plugins/observability/public/components/experimental_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/experimental_badge.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/experimental_badge.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/loading_observability.tsx b/x-pack/solutions/observability/plugins/observability/public/components/loading_observability.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/loading_observability.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/loading_observability.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/helpers.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/helpers.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/helpers.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/helpers.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/helpers.ts b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/helpers.ts rename to x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/helpers.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/index.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/painless_tinymath_parser.test.ts b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/painless_tinymath_parser.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/painless_tinymath_parser.test.ts rename to x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/painless_tinymath_parser.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/painless_tinymath_parser.ts b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/painless_tinymath_parser.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/painless_tinymath_parser.ts rename to x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/painless_tinymath_parser.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/rule_condition_chart.test.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/rule_condition_chart.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/rule_condition_chart.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/rule_condition_chart.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/rule_condition_chart.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/rule_condition_chart.tsx similarity index 97% rename from x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/rule_condition_chart.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/rule_condition_chart.tsx index 2a9fa2c295274..02dc7bc1f51d9 100644 --- a/x-pack/plugins/observability_solution/observability/public/components/rule_condition_chart/rule_condition_chart.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/components/rule_condition_chart/rule_condition_chart.tsx @@ -138,19 +138,21 @@ export function RuleConditionChart({ const errorDiv = document.querySelector('.lnsEmbeddedError'); if (errorDiv) { const paragraphElements = errorDiv.querySelectorAll('p'); - if (!paragraphElements || paragraphElements.length < 2) return; + if (!paragraphElements) return; paragraphElements[0].innerText = i18n.translate( 'xpack.observability.ruleCondition.chart.error_equation.title', { defaultMessage: 'An error occurred while rendering the chart', } ); - paragraphElements[1].innerText = i18n.translate( - 'xpack.observability.ruleCondition.chart.error_equation.description', - { - defaultMessage: 'Check the rule equation.', - } - ); + if (paragraphElements.length > 1) { + paragraphElements[1].innerText = i18n.translate( + 'xpack.observability.ruleCondition.chart.error_equation.description', + { + defaultMessage: 'Check the rule equation.', + } + ); + } } }); }, [chartLoading, attributes]); diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/autocomplete_field/autocomplete_field.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/autocomplete_field/autocomplete_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/autocomplete_field/autocomplete_field.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/autocomplete_field/autocomplete_field.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/autocomplete_field/index.ts b/x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/autocomplete_field/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/autocomplete_field/index.ts rename to x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/autocomplete_field/index.ts diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/autocomplete_field/suggestion_item.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/autocomplete_field/suggestion_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/autocomplete_field/suggestion_item.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/autocomplete_field/suggestion_item.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/kuery_bar.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/kuery_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/kuery_bar.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/kuery_bar.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/with_kuery_autocompletion.tsx b/x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/with_kuery_autocompletion.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/rule_kql_filter/with_kuery_autocompletion.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/rule_kql_filter/with_kuery_autocompletion.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/components/tags.tsx b/x-pack/solutions/observability/plugins/observability/public/components/tags.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/components/tags.tsx rename to x-pack/solutions/observability/plugins/observability/public/components/tags.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/constants.ts b/x-pack/solutions/observability/plugins/observability/public/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/constants.ts rename to x-pack/solutions/observability/plugins/observability/public/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/public/context/constants.ts b/x-pack/solutions/observability/plugins/observability/public/context/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/constants.ts rename to x-pack/solutions/observability/plugins/observability/public/context/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/public/context/date_picker_context/date_picker_context.tsx b/x-pack/solutions/observability/plugins/observability/public/context/date_picker_context/date_picker_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/date_picker_context/date_picker_context.tsx rename to x-pack/solutions/observability/plugins/observability/public/context/date_picker_context/date_picker_context.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/context/has_data_context/data_handler.test.ts b/x-pack/solutions/observability/plugins/observability/public/context/has_data_context/data_handler.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/has_data_context/data_handler.test.ts rename to x-pack/solutions/observability/plugins/observability/public/context/has_data_context/data_handler.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/context/has_data_context/data_handler.ts b/x-pack/solutions/observability/plugins/observability/public/context/has_data_context/data_handler.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/has_data_context/data_handler.ts rename to x-pack/solutions/observability/plugins/observability/public/context/has_data_context/data_handler.ts diff --git a/x-pack/plugins/observability_solution/observability/public/context/has_data_context/get_observability_alerts.test.ts b/x-pack/solutions/observability/plugins/observability/public/context/has_data_context/get_observability_alerts.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/has_data_context/get_observability_alerts.test.ts rename to x-pack/solutions/observability/plugins/observability/public/context/has_data_context/get_observability_alerts.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/context/has_data_context/get_observability_alerts.ts b/x-pack/solutions/observability/plugins/observability/public/context/has_data_context/get_observability_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/has_data_context/get_observability_alerts.ts rename to x-pack/solutions/observability/plugins/observability/public/context/has_data_context/get_observability_alerts.ts diff --git a/x-pack/plugins/observability_solution/observability/public/context/has_data_context/has_data_context.test.tsx b/x-pack/solutions/observability/plugins/observability/public/context/has_data_context/has_data_context.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/has_data_context/has_data_context.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/context/has_data_context/has_data_context.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/context/has_data_context/has_data_context.tsx b/x-pack/solutions/observability/plugins/observability/public/context/has_data_context/has_data_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/has_data_context/has_data_context.tsx rename to x-pack/solutions/observability/plugins/observability/public/context/has_data_context/has_data_context.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/context/plugin_context/plugin_context.tsx b/x-pack/solutions/observability/plugins/observability/public/context/plugin_context/plugin_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/context/plugin_context/plugin_context.tsx rename to x-pack/solutions/observability/plugins/observability/public/context/plugin_context/plugin_context.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/__storybook_mocks__/use_fetch_data_views.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/__storybook_mocks__/use_fetch_data_views.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/__storybook_mocks__/use_fetch_data_views.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/__storybook_mocks__/use_fetch_data_views.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/create_use_rules_link.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/create_use_rules_link.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/create_use_rules_link.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/create_use_rules_link.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_case_view_navigation.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_case_view_navigation.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_case_view_navigation.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_case_view_navigation.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_chart_themes.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_chart_themes.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_chart_themes.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_chart_themes.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_data_fetcher.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_data_fetcher.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_data_fetcher.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_data_fetcher.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_date_picker_context.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_date_picker_context.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_date_picker_context.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_date_picker_context.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_delete_rules.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_delete_rules.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_delete_rules.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_delete_rules.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_data.test.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_data.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_data.test.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_data.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_data.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_data.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_data.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_detail.test.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_detail.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_detail.test.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_detail.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_detail.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_detail.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_alert_detail.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_alert_detail.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_bulk_cases.test.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_bulk_cases.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_bulk_cases.test.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_bulk_cases.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_bulk_cases.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_bulk_cases.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_bulk_cases.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_bulk_cases.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_data_views.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_data_views.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_data_views.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_data_views.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_rule.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_rule.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_rule.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_rule.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_rule_types.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_rule_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_fetch_rule_types.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_fetch_rule_types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_get_available_rules_with_descriptions.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_get_available_rules_with_descriptions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_get_available_rules_with_descriptions.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_get_available_rules_with_descriptions.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_get_filtered_rule_types.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_get_filtered_rule_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_get_filtered_rule_types.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_get_filtered_rule_types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_guided_setup_progress.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_guided_setup_progress.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_guided_setup_progress.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_guided_setup_progress.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_has_data.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_has_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_has_data.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_has_data.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_kibana_ui_settings.tsx b/x-pack/solutions/observability/plugins/observability/public/hooks/use_kibana_ui_settings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_kibana_ui_settings.tsx rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_kibana_ui_settings.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_license.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_license.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_license.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_license.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_observability_onboarding.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_observability_onboarding.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_observability_onboarding.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_observability_onboarding.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_plugin_context.tsx b/x-pack/solutions/observability/plugins/observability/public/hooks/use_plugin_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_plugin_context.tsx rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_plugin_context.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_summary_time_range.tsx b/x-pack/solutions/observability/plugins/observability/public/hooks/use_summary_time_range.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_summary_time_range.tsx rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_summary_time_range.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_time_buckets.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_time_buckets.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_time_buckets.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_time_buckets.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_timefilter_service.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_timefilter_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_timefilter_service.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_timefilter_service.ts diff --git a/x-pack/plugins/observability_solution/observability/public/hooks/use_toast.ts b/x-pack/solutions/observability/plugins/observability/public/hooks/use_toast.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/hooks/use_toast.ts rename to x-pack/solutions/observability/plugins/observability/public/hooks/use_toast.ts diff --git a/x-pack/solutions/observability/plugins/observability/public/index.ts b/x-pack/solutions/observability/plugins/observability/public/index.ts new file mode 100644 index 0000000000000..fa0189dc1df14 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability/public/index.ts @@ -0,0 +1,102 @@ +/* + * 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. + */ + +// TODO: https://github.com/elastic/kibana/issues/110905 + +import { PluginInitializer, PluginInitializerContext } from '@kbn/core/public'; +import { lazy } from 'react'; +import { + Plugin, + ObservabilityPublicPluginsStart, + ObservabilityPublicPluginsSetup, + ObservabilityPublicStart, + ObservabilityPublicSetup, +} from './plugin'; +export type { + ObservabilityPublicSetup, + ObservabilityPublicStart, + ObservabilityPublicPluginsSetup, + ObservabilityPublicPluginsStart, +}; +export const plugin: PluginInitializer< + ObservabilityPublicSetup, + ObservabilityPublicStart, + ObservabilityPublicPluginsSetup, + ObservabilityPublicPluginsStart +> = (initializerContext: PluginInitializerContext) => { + return new Plugin(initializerContext); +}; + +export type { ConfigSchema } from './plugin'; + +export { + enableLegacyUptimeApp, + syntheticsThrottlingEnabled, + enableInspectEsQueries, + enableComparisonByDefault, + apmServiceGroupMaxNumberOfServices, + enableAgentExplorerView, + apmEnableTableSearchBar, +} from '../common/ui_settings_keys'; +export { + alertsLocatorID, + ruleDetailsLocatorID, + rulesLocatorID, + sloDetailsLocatorID, + sloEditLocatorID, + uptimeOverviewLocatorID, +} from '../common'; + +export type { RulesParams } from './locators/rules'; +export { getCoreVitalsComponent } from './pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy'; +export { ObservabilityAlertSearchBar } from './components/alert_search_bar/get_alert_search_bar_lazy'; +export { DatePicker } from './pages/overview/components/date_picker'; + +export const LazyAlertsFlyout = lazy(() => import('./components/alerts_flyout/alerts_flyout')); + +export * from './typings'; +import { TopAlert } from './typings/alerts'; +export type { TopAlert }; +import type { AlertDetailsAppSectionProps } from './pages/alert_details/types'; +export type { AlertDetailsAppSectionProps }; + +export { observabilityFeatureId, observabilityAppId } from '../common'; + +export { useFetchDataViews } from './hooks/use_fetch_data_views'; +export { useTimeBuckets } from './hooks/use_time_buckets'; +export { createUseRulesLink } from './hooks/create_use_rules_link'; +export { useSummaryTimeRange } from './hooks/use_summary_time_range'; + +export { getApmTraceUrl } from './utils/get_apm_trace_url'; +export { buildEsQuery } from './utils/build_es_query'; + +export type { + ObservabilityRuleTypeFormatter, + ObservabilityRuleTypeModel, + ObservabilityRuleTypeRegistry, +} from './rules/create_observability_rule_type_registry'; +export { createObservabilityRuleTypeRegistryMock } from './rules/observability_rule_type_registry_mock'; + +export { DatePickerContextProvider } from './context/date_picker_context/date_picker_context'; + +export { fromQuery, toQuery } from './utils/url'; +export { getAlertSummaryTimeRange } from './utils/alert_summary_widget'; +export { calculateTimeRangeBucketSize } from './pages/overview/helpers/calculate_bucket_size'; +export type { render } from './utils/test_helper'; + +export { convertTo } from '../common/utils/formatters/duration'; +export { formatAlertEvaluationValue } from './utils/format_alert_evaluation_value'; +export { + RuleFlyoutKueryBar, + AutocompleteField, + WithKueryAutocompletion, +} from './components/rule_kql_filter'; +export { useAnnotations } from './components/annotations/use_annotations'; +export { RuleConditionChart } from './components/rule_condition_chart'; +export { getGroupFilters } from '../common/custom_threshold_rule/helpers/get_group'; +export type { GenericAggType } from './components/rule_condition_chart/rule_condition_chart'; +export { Threshold } from './components/custom_threshold/components/threshold'; diff --git a/x-pack/plugins/observability_solution/observability/public/locators/rule_details.test.ts b/x-pack/solutions/observability/plugins/observability/public/locators/rule_details.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/locators/rule_details.test.ts rename to x-pack/solutions/observability/plugins/observability/public/locators/rule_details.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/locators/rule_details.ts b/x-pack/solutions/observability/plugins/observability/public/locators/rule_details.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/locators/rule_details.ts rename to x-pack/solutions/observability/plugins/observability/public/locators/rule_details.ts diff --git a/x-pack/plugins/observability_solution/observability/public/locators/rules.test.ts b/x-pack/solutions/observability/plugins/observability/public/locators/rules.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/locators/rules.test.ts rename to x-pack/solutions/observability/plugins/observability/public/locators/rules.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/locators/rules.ts b/x-pack/solutions/observability/plugins/observability/public/locators/rules.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/locators/rules.ts rename to x-pack/solutions/observability/plugins/observability/public/locators/rules.ts diff --git a/x-pack/plugins/observability_solution/observability/public/navigation_tree.ts b/x-pack/solutions/observability/plugins/observability/public/navigation_tree.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/navigation_tree.ts rename to x-pack/solutions/observability/plugins/observability/public/navigation_tree.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/404.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/404.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/404.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/404.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/alert_details.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/alert_details.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/alert_details.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/alert_details.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/alert_details.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/alert_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/alert_details.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/alert_details.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/alert_details_contextual_insights.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/alert_details_contextual_insights.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/alert_details_contextual_insights.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/alert_details_contextual_insights.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/alert_history.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/alert_history.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/alert_history.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/alert_history.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/assets/illustration_product_no_results_magnifying_glass.svg b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/assets/illustration_product_no_results_magnifying_glass.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/assets/illustration_product_no_results_magnifying_glass.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/assets/illustration_product_no_results_magnifying_glass.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/feedback_button.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/feedback_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/feedback_button.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/feedback_button.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/header_actions.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/header_actions.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/header_actions.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/header_actions.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/header_actions.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/header_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/header_actions.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/header_actions.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/index.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/related_alerts.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/related_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/related_alerts.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/related_alerts.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/source_bar.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/source_bar.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/source_bar.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/source_bar.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/source_bar.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/source_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/source_bar.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/source_bar.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/status_bar.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/status_bar.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/status_bar.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/status_bar.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/status_bar.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/status_bar.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/status_bar.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/status_bar.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/status_bar.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/status_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/components/status_bar.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/status_bar.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_add_investigation_item.ts b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_add_investigation_item.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_add_investigation_item.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_add_investigation_item.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_bulk_untrack_alerts.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_bulk_untrack_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_bulk_untrack_alerts.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_bulk_untrack_alerts.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_create_investigation.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_create_investigation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_create_investigation.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_create_investigation.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_fetch_investigations_by_alert.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_fetch_investigations_by_alert.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/hooks/use_fetch_investigations_by_alert.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/hooks/use_fetch_investigations_by_alert.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/mock/alert.ts b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/mock/alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/mock/alert.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/mock/alert.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alert_details/types.ts b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alert_details/types.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/alert_details/types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/alerts.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/alerts.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/alerts.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/alerts.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/alerts.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/alerts.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/alerts.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/components/alert_actions.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/alert_actions.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/components/alert_actions.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/alert_actions.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/components/alert_actions.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/alert_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/components/alert_actions.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/alert_actions.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/components/rule_stats.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/rule_stats.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/components/rule_stats.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/rule_stats.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/components/rule_stats.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/rule_stats.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/components/rule_stats.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/components/rule_stats.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/helpers/merge_bool_queries.ts b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/helpers/merge_bool_queries.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/helpers/merge_bool_queries.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/helpers/merge_bool_queries.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/alerts/helpers/parse_alert.ts b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/helpers/parse_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/alerts/helpers/parse_alert.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/alerts/helpers/parse_alert.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/annotations/annotation_apply_to.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotation_apply_to.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/annotations/annotation_apply_to.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotation_apply_to.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations_list.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations_list.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations_list.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations_list_chart.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations_list_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations_list_chart.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations_list_chart.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations_privileges.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations_privileges.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/annotations/annotations_privileges.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/annotations/annotations_privileges.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/annotations/create_annotation_btn.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/annotations/create_annotation_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/annotations/create_annotation_btn.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/annotations/create_annotation_btn.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/annotations/date_picker.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/annotations/date_picker.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/annotations/date_picker.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/annotations/date_picker.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/cases/cases.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/cases/cases.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/cases/cases.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/cases/cases.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/cases/components/cases.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/cases/components/cases.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/cases/components/cases.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/cases/components/cases.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/cases/components/cases.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/cases/components/cases.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/cases/components/cases.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/cases/components/cases.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/cases/components/empty_page.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/cases/components/empty_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/cases/components/empty_page.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/cases/components/empty_page.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/cases/components/feature_no_permissions.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/cases/components/feature_no_permissions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/cases/components/feature_no_permissions.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/cases/components/feature_no_permissions.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/landing/landing.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/landing/landing.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/landing/landing.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/landing/landing.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/chart_container/chart_container.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/chart_container/chart_container.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/chart_container/chart_container.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/chart_container/chart_container.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/chart_container/chart_container.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/chart_container/chart_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/chart_container/chart_container.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/chart_container/chart_container.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/data_assistant_flyout.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/data_assistant_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/data_assistant_flyout.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/data_assistant_flyout.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/data_sections.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/data_sections.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/data_sections.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/data_sections.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/date_picker.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/date_picker.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/date_picker.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/date_picker.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/date_picker.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/date_picker.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/date_picker.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/date_picker.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/index.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/date_picker/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/date_picker/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_actions/header_actions.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_actions/header_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_actions/header_actions.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_actions/header_actions.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_menu/header_menu.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_menu/header_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_menu/header_menu.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_menu/header_menu.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_menu/header_menu_portal.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_menu/header_menu_portal.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_menu/header_menu_portal.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_menu/header_menu_portal.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_menu/header_menu_portal.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_menu/header_menu_portal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/header_menu/header_menu_portal.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/header_menu/header_menu_portal.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.test.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.test.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/helpers/get_news_feed.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/news_feed.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/news_feed.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/news_feed.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/news_feed.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/news_feed.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/news_feed.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/news_feed/news_feed.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/news_feed/news_feed.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_onboarding_callout.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_onboarding_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_onboarding_callout.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_onboarding_callout.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/content.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/content.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/content.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/content.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/index.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/index.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/index.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_box.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_box.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_box.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_box.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_box.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_box.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_box.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_box.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_boxes.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_boxes.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_boxes.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_boxes.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_boxes.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_boxes.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_boxes.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_boxes.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_progress.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_progress.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_progress.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_progress.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_progress.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_progress.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/observability_status/observability_status_progress.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/observability_status/observability_status_progress.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/resources.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/resources.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/resources.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/resources.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/resources.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/resources.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/resources.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/resources.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/apm/apm_section.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/apm/apm_section.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/apm/apm_section.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/apm/apm_section.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/apm/apm_section.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/apm/apm_section.tsx similarity index 99% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/apm/apm_section.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/apm/apm_section.tsx index 2535dc07ef234..196e9cd6bd901 100644 --- a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/apm/apm_section.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/apm/apm_section.tsx @@ -72,7 +72,7 @@ export function APMSection({ bucketSize }: Props) { } }, // `forceUpdate` and `lastUpdated` should trigger a reload - // eslint-disable-next-line react-hooks/exhaustive-deps + [bucketSize, relativeStart, relativeEnd, absoluteStart, absoluteEnd, forceUpdate, lastUpdated] ); diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/apm/mock_data/apm.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/apm/mock_data/apm.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/apm/mock_data/apm.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/apm/mock_data/apm.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/empty/empty_section.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/empty/empty_section.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/empty/empty_section.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/empty/empty_section.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/empty/empty_section.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/empty/empty_section.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/empty/empty_section.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/empty/empty_section.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/empty/empty_sections.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/empty/empty_sections.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/empty/empty_sections.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/empty/empty_sections.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/error_panel/error_panel.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/error_panel/error_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/error_panel/error_panel.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/error_panel/error_panel.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/logs/logs_section.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/logs/logs_section.tsx similarity index 99% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/logs/logs_section.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/logs/logs_section.tsx index cc13fd6d1e788..1182e0cbdcb1a 100644 --- a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/logs/logs_section.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/logs/logs_section.tsx @@ -72,7 +72,7 @@ export function LogsSection({ bucketSize }: Props) { }, // `forceUpdate` and `lastUpdated` trigger a reload - // eslint-disable-next-line react-hooks/exhaustive-deps + [bucketSize, relativeStart, relativeEnd, absoluteStart, absoluteEnd, forceUpdate, lastUpdated] ); diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/host_link.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/host_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/host_link.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/host_link.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/lib/format_duration.test.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/lib/format_duration.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/lib/format_duration.test.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/lib/format_duration.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/lib/format_duration.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/lib/format_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/lib/format_duration.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/lib/format_duration.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/aix.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/aix.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/aix.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/aix.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/android.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/android.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/android.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/android.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/darwin.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/darwin.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/darwin.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/darwin.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/dragonfly.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/dragonfly.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/dragonfly.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/dragonfly.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/freebsd.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/freebsd.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/freebsd.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/freebsd.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/illumos.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/illumos.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/illumos.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/illumos.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/linux.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/linux.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/linux.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/linux.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/netbsd.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/netbsd.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/netbsd.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/netbsd.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/solaris.svg b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/solaris.svg similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/logos/solaris.svg rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/logos/solaris.svg diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/metric_with_sparkline.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/metric_with_sparkline.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/metric_with_sparkline.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/metric_with_sparkline.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/metrics_section.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/metrics_section.tsx similarity index 99% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/metrics_section.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/metrics_section.tsx index 99d526a66facd..e943d99fbaa43 100644 --- a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/metrics/metrics_section.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/metrics/metrics_section.tsx @@ -67,7 +67,6 @@ export function MetricsSection({ bucketSize }: Props) { }); } // `forceUpdate` and `lastUpdated` should trigger a reload - // eslint-disable-next-line react-hooks/exhaustive-deps }, [ bucketSize, relativeStart, diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/section_container.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/section_container.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/section_container.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/section_container.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/section_container.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/section_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/section_container.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/section_container.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/uptime/uptime_section.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/uptime/uptime_section.tsx similarity index 99% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/uptime/uptime_section.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/uptime/uptime_section.tsx index 673ee81c9b79c..b59a051e48d50 100644 --- a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/uptime/uptime_section.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/uptime/uptime_section.tsx @@ -65,7 +65,7 @@ export function UptimeSection({ bucketSize }: Props) { } }, // `forceUpdate` and `lastUpdated` should trigger a reload - // eslint-disable-next-line react-hooks/exhaustive-deps + [ bucketSize, relativeStart, diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/__stories__/core_vitals.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/__stories__/core_vitals.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/__stories__/core_vitals.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/__stories__/core_vitals.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/color_palette_flex_item.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/color_palette_flex_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/color_palette_flex_item.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/color_palette_flex_item.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vital_item.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vitals.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vitals.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vitals.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/core_vitals.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/get_core_web_vitals_lazy.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/palette_legends.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/palette_legends.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/palette_legends.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/palette_legends.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/service_name.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/service_name.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/service_name.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/service_name.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/translations.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/translations.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/translations.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/web_core_vitals_title.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/web_core_vitals_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/core_web_vitals/web_core_vitals_title.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/core_web_vitals/web_core_vitals_title.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/mock_data/ux.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/mock_data/ux.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/mock_data/ux.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/mock_data/ux.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/ux_section.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/ux_section.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/ux_section.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/ux_section.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/ux_section.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/ux_section.tsx similarity index 98% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/ux_section.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/ux_section.tsx index ec6aa5a3a9024..4267d4ad9872c 100644 --- a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/sections/ux/ux_section.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/sections/ux/ux_section.tsx @@ -64,7 +64,7 @@ export function UXSection({ bucketSize }: Props) { } }, // `forceUpdate` and `lastUpdated` should trigger a reload - // eslint-disable-next-line react-hooks/exhaustive-deps + [ bucketSize, relativeStart, diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/components/styled_stat/styled_stat.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/components/styled_stat/styled_stat.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/components/styled_stat/styled_stat.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/components/styled_stat/styled_stat.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/calculate_bucket_size.test.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/calculate_bucket_size.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/calculate_bucket_size.test.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/calculate_bucket_size.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/calculate_bucket_size.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/calculate_bucket_size.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/calculate_bucket_size.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/calculate_bucket_size.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/on_brush_end.test.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/on_brush_end.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/on_brush_end.test.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/on_brush_end.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/on_brush_end.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/on_brush_end.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/on_brush_end.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/on_brush_end.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/use_overview_metrics.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/use_overview_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/helpers/use_overview_metrics.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/helpers/use_overview_metrics.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/mock/alerts.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/alerts.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/mock/alerts.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/alerts.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/mock/apm.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/apm.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/mock/apm.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/apm.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/mock/logs.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/logs.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/mock/logs.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/logs.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/mock/metrics.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/metrics.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/mock/metrics.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/metrics.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/mock/news_feed.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/news_feed.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/mock/news_feed.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/news_feed.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/mock/uptime.mock.ts b/x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/uptime.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/mock/uptime.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/mock/uptime.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/overview.stories.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/overview.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/overview.stories.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/overview.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/overview/overview.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/overview/overview.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/overview/overview.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/overview/overview.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/delete_confirmation_modal.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/delete_confirmation_modal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/delete_confirmation_modal.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/delete_confirmation_modal.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/header_actions.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/header_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/header_actions.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/header_actions.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/no_rule_found_panel.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/no_rule_found_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/no_rule_found_panel.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/no_rule_found_panel.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/page_title_content.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/page_title_content.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/page_title_content.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/page_title_content.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/rule_details_tabs.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/rule_details_tabs.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/components/rule_details_tabs.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/components/rule_details_tabs.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/constants.ts b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/constants.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/helpers/get_health_color.ts b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/helpers/get_health_color.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/helpers/get_health_color.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/helpers/get_health_color.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/helpers/is_rule_editable.ts b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/helpers/is_rule_editable.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/helpers/is_rule_editable.ts rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/helpers/is_rule_editable.ts diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rule_details/rule_details.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rule_details/rule_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rule_details/rule_details.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rule_details/rule_details.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rules/global_logs_tab.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rules/global_logs_tab.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rules/global_logs_tab.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rules/global_logs_tab.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rules/rules.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rules/rules.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rules/rules.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rules/rules.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rules/rules.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rules/rules.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rules/rules.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rules/rules.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/pages/rules/rules_tab.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/rules/rules_tab.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/pages/rules/rules_tab.tsx rename to x-pack/solutions/observability/plugins/observability/public/pages/rules/rules_tab.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/plugin.mock.tsx b/x-pack/solutions/observability/plugins/observability/public/plugin.mock.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/plugin.mock.tsx rename to x-pack/solutions/observability/plugins/observability/public/plugin.mock.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/plugin.ts b/x-pack/solutions/observability/plugins/observability/public/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/plugin.ts rename to x-pack/solutions/observability/plugins/observability/public/plugin.ts diff --git a/x-pack/plugins/observability_solution/observability/public/routes/routes.tsx b/x-pack/solutions/observability/plugins/observability/public/routes/routes.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/routes/routes.tsx rename to x-pack/solutions/observability/plugins/observability/public/routes/routes.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts b/x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/rules/create_observability_rule_type_registry.ts rename to x-pack/solutions/observability/plugins/observability/public/rules/create_observability_rule_type_registry.ts diff --git a/x-pack/plugins/observability_solution/observability/public/rules/fixtures/example_alerts.ts b/x-pack/solutions/observability/plugins/observability/public/rules/fixtures/example_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/rules/fixtures/example_alerts.ts rename to x-pack/solutions/observability/plugins/observability/public/rules/fixtures/example_alerts.ts diff --git a/x-pack/plugins/observability_solution/observability/public/rules/observability_rule_type_registry_mock.ts b/x-pack/solutions/observability/plugins/observability/public/rules/observability_rule_type_registry_mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/rules/observability_rule_type_registry_mock.ts rename to x-pack/solutions/observability/plugins/observability/public/rules/observability_rule_type_registry_mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/rules/register_observability_rule_types.ts b/x-pack/solutions/observability/plugins/observability/public/rules/register_observability_rule_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/rules/register_observability_rule_types.ts rename to x-pack/solutions/observability/plugins/observability/public/rules/register_observability_rule_types.ts diff --git a/x-pack/plugins/observability_solution/observability/public/test_utils/use_global_storybook_theme.tsx b/x-pack/solutions/observability/plugins/observability/public/test_utils/use_global_storybook_theme.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/test_utils/use_global_storybook_theme.tsx rename to x-pack/solutions/observability/plugins/observability/public/test_utils/use_global_storybook_theme.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/typings/alerts.ts b/x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/typings/alerts.ts rename to x-pack/solutions/observability/plugins/observability/public/typings/alerts.ts diff --git a/x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts b/x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/typings/fetch_overview_data/index.ts rename to x-pack/solutions/observability/plugins/observability/public/typings/fetch_overview_data/index.ts diff --git a/x-pack/plugins/observability_solution/observability/public/typings/index.ts b/x-pack/solutions/observability/plugins/observability/public/typings/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/typings/index.ts rename to x-pack/solutions/observability/plugins/observability/public/typings/index.ts diff --git a/x-pack/plugins/observability_solution/observability/public/typings/utils.ts b/x-pack/solutions/observability/plugins/observability/public/typings/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/typings/utils.ts rename to x-pack/solutions/observability/plugins/observability/public/typings/utils.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/constants.ts b/x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/constants.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.test.tsx b/x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.test.tsx rename to x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.test.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx b/x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx rename to x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/get_alert_summary_time_range.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/index.ts b/x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/alert_summary_widget/index.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/alert_summary_widget/index.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/build_es_query/__snapshots__/build_es_query.test.ts.snap b/x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/__snapshots__/build_es_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/build_es_query/__snapshots__/build_es_query.test.ts.snap rename to x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/__snapshots__/build_es_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/observability/public/utils/build_es_query/build_es_query.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/build_es_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/build_es_query/build_es_query.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/build_es_query.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/build_es_query/build_es_query.ts b/x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/build_es_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/build_es_query/build_es_query.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/build_es_query.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/build_es_query/index.ts b/x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/build_es_query/index.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/build_es_query/index.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/date.ts b/x-pack/solutions/observability/plugins/observability/public/utils/date.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/date.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/date.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/datemath.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/datemath.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/datemath.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/datemath.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/datemath.ts b/x-pack/solutions/observability/plugins/observability/public/utils/datemath.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/datemath.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/datemath.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/format_alert_evaluation_value.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/format_alert_evaluation_value.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/format_alert_evaluation_value.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/format_alert_evaluation_value.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/format_alert_evaluation_value.ts b/x-pack/solutions/observability/plugins/observability/public/utils/format_alert_evaluation_value.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/format_alert_evaluation_value.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/format_alert_evaluation_value.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/format_stat_value.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/format_stat_value.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/format_stat_value.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/format_stat_value.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/format_stat_value.ts b/x-pack/solutions/observability/plugins/observability/public/utils/format_stat_value.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/format_stat_value.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/format_stat_value.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_alert_evaluation_unit_type_by_rule_type_id.ts b/x-pack/solutions/observability/plugins/observability/public/utils/get_alert_evaluation_unit_type_by_rule_type_id.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_alert_evaluation_unit_type_by_rule_type_id.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/get_alert_evaluation_unit_type_by_rule_type_id.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.ts b/x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_apm_trace_url.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/get_apm_trace_url.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/calculate_auto.js b/x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/calculate_auto.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/calculate_auto.js rename to x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/calculate_auto.js diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/index.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.ts b/x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/index.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/unit_to_seconds.ts b/x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/unit_to_seconds.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant/common/utils/get_bucket_size/unit_to_seconds.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/get_bucket_size/unit_to_seconds.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/get_time_zone.ts b/x-pack/solutions/observability/plugins/observability/public/utils/get_time_zone.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/get_time_zone.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/get_time_zone.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/investigation_item_helper.ts b/x-pack/solutions/observability/plugins/observability/public/utils/investigation_item_helper.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/investigation_item_helper.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/investigation_item_helper.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/is_alert_details_enabled.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/is_alert_details_enabled.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/is_alert_details_enabled.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/is_alert_details_enabled.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/is_alert_details_enabled.ts b/x-pack/solutions/observability/plugins/observability/public/utils/is_alert_details_enabled.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/is_alert_details_enabled.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/is_alert_details_enabled.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/kibana_react.mock.ts b/x-pack/solutions/observability/plugins/observability/public/utils/kibana_react.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/kibana_react.mock.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/kibana_react.mock.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/kibana_react.storybook_decorator.tsx b/x-pack/solutions/observability/plugins/observability/public/utils/kibana_react.storybook_decorator.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/kibana_react.storybook_decorator.tsx rename to x-pack/solutions/observability/plugins/observability/public/utils/kibana_react.storybook_decorator.tsx diff --git a/x-pack/plugins/observability_solution/observability/public/utils/kibana_react.ts b/x-pack/solutions/observability/plugins/observability/public/utils/kibana_react.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/kibana_react.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/kibana_react.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/no_data_config.ts b/x-pack/solutions/observability/plugins/observability/public/utils/no_data_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/no_data_config.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/no_data_config.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/test_helper.tsx b/x-pack/solutions/observability/plugins/observability/public/utils/test_helper.tsx similarity index 96% rename from x-pack/plugins/observability_solution/observability/public/utils/test_helper.tsx rename to x-pack/solutions/observability/plugins/observability/public/utils/test_helper.tsx index 16184c5621594..2612ae5567555 100644 --- a/x-pack/plugins/observability_solution/observability/public/utils/test_helper.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/utils/test_helper.tsx @@ -59,7 +59,7 @@ export const render = (component: React.ReactNode, config: Subset exploratoryView: { createExploratoryViewUrl: jest.fn(), getAppDataView: jest.fn(), - // eslint-disable-next-line @kbn/i18n/strings_should_be_translated_with_i18n + ExploratoryViewEmbeddable: () =>
Embeddable exploratory view
, }, }} diff --git a/x-pack/plugins/observability_solution/observability/public/utils/url.test.ts b/x-pack/solutions/observability/plugins/observability/public/utils/url.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/url.test.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/url.test.ts diff --git a/x-pack/plugins/observability_solution/observability/public/utils/url.ts b/x-pack/solutions/observability/plugins/observability/public/utils/url.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/public/utils/url.ts rename to x-pack/solutions/observability/plugins/observability/public/utils/url.ts diff --git a/x-pack/plugins/observability_solution/observability/scripts/storybook.js b/x-pack/solutions/observability/plugins/observability/scripts/storybook.js similarity index 100% rename from x-pack/plugins/observability_solution/observability/scripts/storybook.js rename to x-pack/solutions/observability/plugins/observability/scripts/storybook.js diff --git a/x-pack/plugins/observability_solution/observability/server/common/constants.ts b/x-pack/solutions/observability/plugins/observability/server/common/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/common/constants.ts rename to x-pack/solutions/observability/plugins/observability/server/common/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/server/features/cases_v1.ts b/x-pack/solutions/observability/plugins/observability/server/features/cases_v1.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/features/cases_v1.ts rename to x-pack/solutions/observability/plugins/observability/server/features/cases_v1.ts diff --git a/x-pack/plugins/observability_solution/observability/server/features/cases_v2.ts b/x-pack/solutions/observability/plugins/observability/server/features/cases_v2.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/features/cases_v2.ts rename to x-pack/solutions/observability/plugins/observability/server/features/cases_v2.ts diff --git a/x-pack/solutions/observability/plugins/observability/server/index.ts b/x-pack/solutions/observability/plugins/observability/server/index.ts new file mode 100644 index 0000000000000..913b52e7eb6fb --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability/server/index.ts @@ -0,0 +1,112 @@ +/* + * 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. + */ + +// TODO: https://github.com/elastic/kibana/issues/110905 + +import { offeringBasedSchema, schema, TypeOf } from '@kbn/config-schema'; +import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; +import { DEFAULT_ANNOTATION_INDEX } from '../common/annotations'; +import type { ObservabilityPluginSetup } from './plugin'; +import { createOrUpdateIndex, Mappings } from './utils/create_or_update_index'; +import { createOrUpdateIndexTemplate } from './utils/create_or_update_index_template'; +import { ScopedAnnotationsClient } from './lib/annotations/bootstrap_annotations'; +import { CustomThresholdLocators } from './lib/rules/custom_threshold/custom_threshold_executor'; +import { + unwrapEsResponse, + WrappedElasticsearchClientError, +} from '../common/utils/unwrap_es_response'; + +export { + rangeQuery, + kqlQuery, + termQuery, + termsQuery, + wildcardQuery, + existsQuery, +} from './utils/queries'; +export { getParsedFilterQuery } from './utils/get_parsed_filtered_query'; +export { getInspectResponse } from '../common/utils/get_inspect_response'; + +export * from './types'; + +const configSchema = schema.object({ + annotations: schema.object({ + enabled: schema.boolean({ defaultValue: true }), + index: schema.string({ defaultValue: DEFAULT_ANNOTATION_INDEX }), + }), + unsafe: schema.object({ + alertDetails: schema.object({ + metrics: schema.object({ + enabled: schema.boolean({ defaultValue: false }), + }), + logs: schema.object({ + enabled: schema.boolean({ defaultValue: false }), + }), + uptime: schema.object({ + enabled: schema.boolean({ defaultValue: false }), + }), + observability: schema.object({ + enabled: schema.boolean({ defaultValue: false }), + }), + }), + thresholdRule: schema.object({ + enabled: offeringBasedSchema({ + serverless: schema.boolean({ defaultValue: false }), + traditional: schema.boolean({ defaultValue: false }), + }), + }), + ruleFormV2: schema.object({ + enabled: schema.boolean({ defaultValue: false }), + }), + }), + customThresholdRule: schema.object({ + groupByPageSize: schema.number({ defaultValue: 10_000 }), + }), + enabled: schema.boolean({ defaultValue: true }), + createO11yGenericFeatureId: schema.boolean({ defaultValue: false }), +}); + +export const config: PluginConfigDescriptor = { + exposeToBrowser: { + unsafe: true, + aiAssistant: { + enabled: true, + feedback: { + enabled: true, + }, + }, + }, + schema: configSchema, + deprecations: ({ unused }) => [ + unused('unsafe.thresholdRule.enabled', { level: 'warning' }), + unused('unsafe.alertDetails.logs.enabled', { level: 'warning' }), + unused('unsafe.alertDetails.metrics.enabled', { level: 'warning' }), + unused('unsafe.alertDetails.observability.enabled', { level: 'warning' }), + ], +}; + +export type ObservabilityConfig = TypeOf; + +export const plugin = async (initContext: PluginInitializerContext) => { + const { ObservabilityPlugin } = await import('./plugin'); + return new ObservabilityPlugin(initContext); +}; + +export type { + Mappings, + ObservabilityPluginSetup, + ScopedAnnotationsClient, + CustomThresholdLocators, +}; +export { + createOrUpdateIndex, + createOrUpdateIndexTemplate, + unwrapEsResponse, + WrappedElasticsearchClientError, +}; + +export { uiSettings } from './ui_settings'; diff --git a/x-pack/plugins/observability_solution/observability/server/lib/annotations/bootstrap_annotations.ts b/x-pack/solutions/observability/plugins/observability/server/lib/annotations/bootstrap_annotations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/annotations/bootstrap_annotations.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/annotations/bootstrap_annotations.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/annotations/create_annotations_client.ts b/x-pack/solutions/observability/plugins/observability/server/lib/annotations/create_annotations_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/annotations/create_annotations_client.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/annotations/create_annotations_client.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/annotations/format_annotations.ts b/x-pack/solutions/observability/plugins/observability/server/lib/annotations/format_annotations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/annotations/format_annotations.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/annotations/format_annotations.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/annotations/mappings/annotation_mappings.ts b/x-pack/solutions/observability/plugins/observability/server/lib/annotations/mappings/annotation_mappings.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/annotations/mappings/annotation_mappings.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/annotations/mappings/annotation_mappings.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/annotations/permissions.ts b/x-pack/solutions/observability/plugins/observability/server/lib/annotations/permissions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/annotations/permissions.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/annotations/permissions.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts b/x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/annotations/register_annotation_apis.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/annotations/register_annotation_apis.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/constants.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/constants.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/constants.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.test.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.test.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/check_missing_group.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/check_missing_group.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/check_missing_group.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/check_missing_group.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_bucket_selector.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_bucket_selector.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_bucket_selector.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_bucket_selector.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_condition_script.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_condition_script.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_condition_script.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_condition_script.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_custom_metrics_aggregations.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_custom_metrics_aggregations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_custom_metrics_aggregations.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_custom_metrics_aggregations.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_last_value_aggregation.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_last_value_aggregation.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_last_value_aggregation.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_last_value_aggregation.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_rate_aggregation.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_rate_aggregation.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_rate_aggregation.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_rate_aggregation.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_timerange.test.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_timerange.test.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_timerange.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/create_timerange.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/create_timerange.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/evaluate_rule.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/format_alert_result.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/format_alert_result.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/format_alert_result.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/format_alert_result.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/get_data.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/get_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/get_data.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/get_data.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/get_values.test.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/get_values.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/get_values.test.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/get_values.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/get_values.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/get_values.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/get_values.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/get_values.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/metric_query.test.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/metric_query.test.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/metric_query.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/metric_query.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/metric_query.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/wrap_in_period.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/wrap_in_period.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/lib/wrap_in_period.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/lib/wrap_in_period.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/messages.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/messages.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/messages.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/messages.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_alert_result.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_alert_result.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_alert_result.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_alert_result.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_metric_params.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_metric_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_metric_params.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/mocks/custom_threshold_metric_params.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/register_custom_threshold_rule_type.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/register_custom_threshold_rule_type.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/register_custom_threshold_rule_type.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/register_custom_threshold_rule_type.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/translations.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/translations.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/translations.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/types.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/types.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/types.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/utils.test.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/utils.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/utils.test.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/utils.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/utils.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/utils.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/custom_threshold/utils.ts diff --git a/x-pack/plugins/observability_solution/observability/server/lib/rules/register_rule_types.ts b/x-pack/solutions/observability/plugins/observability/server/lib/rules/register_rule_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/lib/rules/register_rule_types.ts rename to x-pack/solutions/observability/plugins/observability/server/lib/rules/register_rule_types.ts diff --git a/x-pack/plugins/observability_solution/observability/server/plugin.ts b/x-pack/solutions/observability/plugins/observability/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/plugin.ts rename to x-pack/solutions/observability/plugins/observability/server/plugin.ts diff --git a/x-pack/plugins/observability_solution/observability/server/routes/assistant/route.ts b/x-pack/solutions/observability/plugins/observability/server/routes/assistant/route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/routes/assistant/route.ts rename to x-pack/solutions/observability/plugins/observability/server/routes/assistant/route.ts diff --git a/x-pack/plugins/observability_solution/observability/server/routes/create_observability_server_route.ts b/x-pack/solutions/observability/plugins/observability/server/routes/create_observability_server_route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/routes/create_observability_server_route.ts rename to x-pack/solutions/observability/plugins/observability/server/routes/create_observability_server_route.ts diff --git a/x-pack/plugins/observability_solution/observability/server/routes/get_global_observability_server_route_repository.ts b/x-pack/solutions/observability/plugins/observability/server/routes/get_global_observability_server_route_repository.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/routes/get_global_observability_server_route_repository.ts rename to x-pack/solutions/observability/plugins/observability/server/routes/get_global_observability_server_route_repository.ts diff --git a/x-pack/plugins/observability_solution/observability/server/routes/register_routes.ts b/x-pack/solutions/observability/plugins/observability/server/routes/register_routes.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/routes/register_routes.ts rename to x-pack/solutions/observability/plugins/observability/server/routes/register_routes.ts diff --git a/x-pack/plugins/observability_solution/observability/server/routes/rules/route.ts b/x-pack/solutions/observability/plugins/observability/server/routes/rules/route.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/routes/rules/route.ts rename to x-pack/solutions/observability/plugins/observability/server/routes/rules/route.ts diff --git a/x-pack/plugins/observability_solution/observability/server/routes/types.ts b/x-pack/solutions/observability/plugins/observability/server/routes/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/routes/types.ts rename to x-pack/solutions/observability/plugins/observability/server/routes/types.ts diff --git a/x-pack/plugins/observability_solution/observability/server/saved_objects/threshold.ts b/x-pack/solutions/observability/plugins/observability/server/saved_objects/threshold.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/saved_objects/threshold.ts rename to x-pack/solutions/observability/plugins/observability/server/saved_objects/threshold.ts diff --git a/x-pack/plugins/observability_solution/observability/server/services/index.test.ts b/x-pack/solutions/observability/plugins/observability/server/services/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/services/index.test.ts rename to x-pack/solutions/observability/plugins/observability/server/services/index.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/services/index.ts b/x-pack/solutions/observability/plugins/observability/server/services/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/services/index.ts rename to x-pack/solutions/observability/plugins/observability/server/services/index.ts diff --git a/x-pack/plugins/observability_solution/observability/server/types.ts b/x-pack/solutions/observability/plugins/observability/server/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/types.ts rename to x-pack/solutions/observability/plugins/observability/server/types.ts diff --git a/x-pack/plugins/observability_solution/observability/server/ui_settings.ts b/x-pack/solutions/observability/plugins/observability/server/ui_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/ui_settings.ts rename to x-pack/solutions/observability/plugins/observability/server/ui_settings.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts b/x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index_template.ts b/x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index_template.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/create_or_update_index_template.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/create_or_update_index_template.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/get_es_query_config.test.ts b/x-pack/solutions/observability/plugins/observability/server/utils/get_es_query_config.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/get_es_query_config.test.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/get_es_query_config.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/get_es_query_config.ts b/x-pack/solutions/observability/plugins/observability/server/utils/get_es_query_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/get_es_query_config.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/get_es_query_config.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/get_parsed_filtered_query.ts b/x-pack/solutions/observability/plugins/observability/server/utils/get_parsed_filtered_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/get_parsed_filtered_query.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/get_parsed_filtered_query.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/number.ts b/x-pack/solutions/observability/plugins/observability/server/utils/number.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/number.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/number.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/queries.test.ts b/x-pack/solutions/observability/plugins/observability/server/utils/queries.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/queries.test.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/queries.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/queries.ts b/x-pack/solutions/observability/plugins/observability/server/utils/queries.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/queries.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/queries.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/retry.test.ts b/x-pack/solutions/observability/plugins/observability/server/utils/retry.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/retry.test.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/retry.test.ts diff --git a/x-pack/plugins/observability_solution/observability/server/utils/retry.ts b/x-pack/solutions/observability/plugins/observability/server/utils/retry.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/server/utils/retry.ts rename to x-pack/solutions/observability/plugins/observability/server/utils/retry.ts diff --git a/x-pack/solutions/observability/plugins/observability/tsconfig.json b/x-pack/solutions/observability/plugins/observability/tsconfig.json new file mode 100644 index 0000000000000..7ae72a4bf995b --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability/tsconfig.json @@ -0,0 +1,118 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "public/**/*", + "public/**/*.json", + "server/**/*", + "typings/**/*", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/rule-data-utils", + "@kbn/triggers-actions-ui-plugin", + "@kbn/i18n", + "@kbn/deeplinks-observability", + "@kbn/es-query", + "@kbn/observability-get-padded-alert-time-range-util", + "@kbn/share-plugin", + "@kbn/data-plugin", + "@kbn/alerting-comparators", + "@kbn/guided-onboarding", + "@kbn/rison", + "@kbn/kibana-utils-plugin", + "@kbn/spaces-plugin", + "@kbn/utility-types", + "@kbn/core-http-server", + "@kbn/core", + "@kbn/inspector-plugin", + "@kbn/shared-ux-page-kibana-template", + "@kbn/observability-ai-assistant-plugin", + "@kbn/shared-ux-router", + "@kbn/kibana-react-plugin", + "@kbn/react-kibana-context-render", + "@kbn/observability-shared-plugin", + "@kbn/react-kibana-context-theme", + "@kbn/shared-ux-link-redirect-app", + "@kbn/usage-collection-plugin", + "@kbn/cases-components", + "@kbn/cases-plugin", + "@kbn/stack-alerts-plugin", + "@kbn/core-ui-settings-browser-mocks", + "@kbn/alerts-ui-shared", + "@kbn/core-notifications-browser", + "@kbn/core-ui-settings-browser", + "@kbn/rule-registry-plugin", + "@kbn/alerts-grouping", + "@kbn/grouping", + "@kbn/data-views-plugin", + "@kbn/core-http-browser", + "@kbn/visualization-ui-components", + "@kbn/event-annotation-components", + "@kbn/slo-schema", + "@kbn/event-annotation-common", + "@kbn/react-kibana-mount", + "@kbn/i18n-react", + "@kbn/expression-metric-vis-plugin", + "@kbn/charts-plugin", + "@kbn/alerting-plugin", + "@kbn/aiops-log-rate-analysis", + "@kbn/aiops-plugin", + "@kbn/field-types", + "@kbn/test-jest-helpers", + "@kbn/discover-plugin", + "@kbn/embeddable-plugin", + "@kbn/lens-plugin", + "@kbn/ui-actions-plugin", + "@kbn/unified-search-plugin", + "@kbn/lens-embeddable-utils", + "@kbn/std", + "@kbn/actions-plugin", + "@kbn/licensing-plugin", + "@kbn/core-chrome-browser", + "@kbn/navigation-plugin", + "@kbn/observability-alert-details", + "@kbn/investigation-shared", + "@kbn/observability-alerting-rule-utils", + "@kbn/ui-theme", + "@kbn/core-application-common", + "@kbn/securitysolution-ecs", + "@kbn/alerts-as-data-utils", + "@kbn/datemath", + "@kbn/logs-shared-plugin", + "@kbn/exploratory-view-plugin", + "@kbn/core-capabilities-common", + "@kbn/content-management-plugin", + "@kbn/cloud-plugin", + "@kbn/data-view-editor-plugin", + "@kbn/field-formats-plugin", + "@kbn/home-plugin", + "@kbn/data-view-field-editor-plugin", + "@kbn/guided-onboarding-plugin", + "@kbn/investigate-plugin", + "@kbn/license-management-plugin", + "@kbn/presentation-util-plugin", + "@kbn/security-plugin", + "@kbn/serverless", + "@kbn/core-application-browser", + "@kbn/core-theme-browser", + "@kbn/config-schema", + "@kbn/securitysolution-io-ts-utils", + "@kbn/core-elasticsearch-server", + "@kbn/logging", + "@kbn/safer-lodash-set", + "@kbn/features-plugin", + "@kbn/files-plugin", + "@kbn/server-route-repository", + "@kbn/io-ts-utils", + "@kbn/core-ui-settings-server-mocks", + "@kbn/es-types", + "@kbn/logging-mocks", + "@kbn/response-ops-rule-form", + "@kbn/streams-plugin" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/observability_solution/observability/typings/common.ts b/x-pack/solutions/observability/plugins/observability/typings/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability/typings/common.ts rename to x-pack/solutions/observability/plugins/observability/typings/common.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook/jest_setup.js b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/jest_setup.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook/jest_setup.js rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/jest_setup.js diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook/main.js b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/main.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook/main.js rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/main.js diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook/preview.js b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/preview.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/.storybook/preview.js rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/preview.js diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/storybook_decorator.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/storybook_decorator.tsx new file mode 100644 index 0000000000000..ce283bbeccf0a --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/storybook_decorator.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 React, { ComponentType } from 'react'; + +export function KibanaReactStorybookDecorator(Story: ComponentType) { + return ; +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/README.md b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/README.md similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/README.md rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/README.md diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/common/functions/changes/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/functions/changes/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/common/functions/changes/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/functions/changes/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/common/functions/lens.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/functions/lens.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/common/functions/lens.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/functions/lens.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/common/functions/visualize_esql.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/functions/visualize_esql.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/common/functions/visualize_esql.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/functions/visualize_esql.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/common/rule_connector.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/rule_connector.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/common/rule_connector.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/common/rule_connector.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/jest.config.js b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/jest.config.js new file mode 100644 index 0000000000000..5238f7a7cd889 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/jest.config.js @@ -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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: [ + '/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public', + '/x-pack/solutions/observability/plugins/observability_ai_assistant_app/common', + '/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server', + ], + setupFiles: [ + '/x-pack/solutions/observability/plugins/observability_ai_assistant_app/.storybook/jest_setup.js', + ], + collectCoverage: true, + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/observability_ai_assistant_app/{common,public,server}/**/*.{js,ts,tsx}', + ], + + coverageReporters: ['html'], +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/kibana.jsonc b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/kibana.jsonc new file mode 100644 index 0000000000000..8d509e50059a7 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/kibana.jsonc @@ -0,0 +1,49 @@ +{ + "type": "plugin", + "id": "@kbn/observability-ai-assistant-app-plugin", + "owner": [ + "@elastic/obs-ai-assistant" + ], + "group": "observability", + "visibility": "private", + "plugin": { + "id": "observabilityAIAssistantApp", + "browser": true, + "server": true, + "configPath": [ + "xpack", + "observabilityAIAssistantApp" + ], + "requiredPlugins": [ + "aiAssistantManagementSelection", + "observabilityAIAssistant", + "observabilityShared", + "observability", + "actions", + "data", + "dataViews", + "lens", + "ruleRegistry", + "uiActions", + "triggersActionsUi", + "share", + "licensing", + "ml", + "alerting", + "features", + "inference", + "logsDataAccess", + "spaces", + "slo", + "llmTasks" + ], + "optionalPlugins": [ + "cloud" + ], + "requiredBundles": [ + "kibanaReact", + "esqlDataGrid" + ], + "extraPublicDirs": [] + } +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/application.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/application.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/application.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/application.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/assets/elastic_ai_assistant.png b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/assets/elastic_ai_assistant.png similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/assets/elastic_ai_assistant.png rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/assets/elastic_ai_assistant.png diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/changes/change_list.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/changes/change_list.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/changes/change_list.stories.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/changes/change_list.stories.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/changes/change_list.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/changes/change_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/changes/change_list.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/changes/change_list.tsx diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/charts/spark_plot.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/charts/spark_plot.tsx new file mode 100644 index 0000000000000..afd7e9f4bceb3 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/charts/spark_plot.tsx @@ -0,0 +1,137 @@ +/* + * 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 { + AnnotationDomainType, + BarSeries, + Chart, + CurveType, + LineAnnotation, + LineSeries, + PartialTheme, + Position, + ScaleType, + Settings, + Tooltip, +} from '@elastic/charts'; +import { EuiFlexGroup, EuiPanel, EuiText } from '@elastic/eui'; +import { UI_SETTINGS } from '@kbn/data-service'; +import { i18n } from '@kbn/i18n'; +import moment from 'moment'; +import React from 'react'; +import { useChartTheme } from '../../hooks/use_chart_theme'; +import { useKibana } from '../../hooks/use_kibana'; + +function AnnotationTooltip({ timestamp, label }: { timestamp: number; label: React.ReactNode }) { + const dateFormat = useKibana().services.uiSettings.get(UI_SETTINGS.DATE_FORMAT); + const formattedTime = moment(timestamp).format(dateFormat); + + return ( + + + {formattedTime} + {label} + + + ); +} + +export function SparkPlot({ + type, + timeseries, + annotations, + compressed, +}: { + type: 'line' | 'bar'; + timeseries: Array<{ x: number; y: number | null }>; + annotations?: Array<{ + id: string; + x: number; + color: string; + icon: React.ReactNode; + label: React.ReactNode; + }>; + compressed?: boolean; +}) { + const defaultChartTheme = useChartTheme(); + + const sparkplotChartTheme: PartialTheme = { + chartMargins: { left: 0, right: 0, top: 0, bottom: 0 }, + chartPaddings: { + top: 12, + bottom: 12, + }, + lineSeriesStyle: { + point: { opacity: 0 }, + }, + areaSeriesStyle: { + point: { opacity: 0 }, + }, + }; + + return ( + + + + {type && type === 'bar' ? ( + + ) : ( + + )} + {annotations?.map((annotation) => { + return ( + { + return ( + + ); + }} + /> + ); + })} + + ); +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/index.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/index.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/lazy_nav_control.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/lazy_nav_control.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/nav_control/lazy_nav_control.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/nav_control/lazy_nav_control.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/page_template.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/page_template.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/page_template.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/page_template.tsx diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/entity_badge/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/entity_badge/index.tsx new file mode 100644 index 0000000000000..edfc956a448d1 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/entity_badge/index.tsx @@ -0,0 +1,26 @@ +/* + * 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 { EuiBadge, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import React from 'react'; + +export function EntityBadge({ + entity, + color, +}: { + entity: Record; + color?: React.ComponentProps['color']; +}) { + return ( + + {Object.entries(entity).map(([field, value]) => ( + + {`${field}:${value}`} + + ))} + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/mock/complete_root_cause_analysis.json b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/mock/complete_root_cause_analysis.json new file mode 100644 index 0000000000000..ec2ce7810bc97 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/mock/complete_root_cause_analysis.json @@ -0,0 +1,19532 @@ +[ + { + "role": "assistant", + "content": "", + "toolCalls": [ + { + "toolCallId": "call_IURenJnAu7MGepsXonmWtEbx", + "function": { + "name": "observe", + "arguments": { + "observe": true + } + } + } + ] + }, + { + "name": "observe", + "response": { + "content": "## Observations\n\nThe alert indicates that the `controller` service is experiencing a high number of 500 errors for the `/api/cart` endpoint. The error rate is 98.78%, significantly above the threshold of 1% over a 1-minute period. This is a pronounced and rapid onset of errors that suggests a severe and immediate issue with the `controller` service or its dependencies starting at `2024-11-02T10:56:42.498Z`.\n\n## Symptoms\n\n- **Onset**: Rapid\n- **Severity**: Pronounced\n- **Time of Change**: `2024-11-02T10:56:42.498Z`\n\nGiven the sudden and high volume of errors, the symptoms suggest a significant event such as a deployment, configuration change, or a failure in a critical dependency.\n\n## Next Steps\n\nThe next step is to further investigate the logs for the `controller` service to identify any changes or error patterns around the specified time.\n\n**Entity to Investigate**:\n- `service.name`: `controller`" + }, + "data": { + "content": "## Observations\n\nThe alert indicates that the `controller` service is experiencing a high number of 500 errors for the `/api/cart` endpoint. The error rate is 98.78%, significantly above the threshold of 1% over a 1-minute period. This is a pronounced and rapid onset of errors that suggests a severe and immediate issue with the `controller` service or its dependencies starting at `2024-11-02T10:56:42.498Z`.\n\n## Symptoms\n\n- **Onset**: Rapid\n- **Severity**: Pronounced\n- **Time of Change**: `2024-11-02T10:56:42.498Z`\n\nGiven the sudden and high volume of errors, the symptoms suggest a significant event such as a deployment, configuration change, or a failure in a critical dependency.\n\n## Next Steps\n\nThe next step is to further investigate the logs for the `controller` service to identify any changes or error patterns around the specified time.\n\n**Entity to Investigate**:\n- `service.name`: `controller`", + "investigations": [] + }, + "role": "tool", + "toolCallId": "call_IURenJnAu7MGepsXonmWtEbx" + }, + { + "role": "assistant", + "content": "", + "toolCalls": [ + { + "toolCallId": "call_6Vcfeg2e2IUC0gSX0bwejZl1", + "function": { + "name": "investigateEntity", + "arguments": { + "context": "Investigating the alert for the controller service, which indicates a high number of 500 errors for the /api/cart endpoint. Error rate is 98.78%, above the threshold of 1% over a 1-minute duration. Start time of the issue is 2024-11-02T10:56:42.498Z. Will review controller service logs for changes or error patterns around this time.", + "entity": { + "field": "service.name", + "value": "controller" + } + } + } + } + ] + }, + { + "name": "investigateEntity", + "role": "tool", + "toolCallId": "call_6Vcfeg2e2IUC0gSX0bwejZl1", + "response": { + "entity": { + "service.name": "controller" + }, + "relatedEntities": [ + { + "entity": { + "service.name": "frontend" + }, + "reason": "The frontend service interacts closely with the controller (ingress-nginx-controller). Requests directed to /api/cart initiate from frontendproxy which routes to frontend. Given the high error rate at the /api/cart endpoint, the issue might involve downstream calls from frontend to dependent services.", + "confidence": "high" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "The /api/cart endpoint directly involves manipulating or retrieving data from cartservice. Given the 500 errors on requests routed via the controller, it's likely that cartservice might be either causing or being affected by these failures.", + "confidence": "high" + }, + { + "entity": { + "service.name": "frontend-web" + }, + "reason": "URL referrer and path fragments suggest client-side interactions impacting the controller's ingress. Issues in the client's request construction or timing might be indirectly impacting how the controller handles these requests.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "checkoutservice" + }, + "reason": "Though the controller deals directly with cart interactions, completion of cart actions could trigger subsequent processes in checkoutservice. Errors during cart operations could thereby propagate issues if mismanaged upstream.", + "confidence": "low" + }, + { + "entity": { + "service.name": "coredns" + }, + "reason": "DNS resolution issues could lead to inability to locate the correct backend service IP for controller, causing errors in routing HTTP requests.", + "confidence": "low" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The `frontend` service is called by the `frontendproxy`, which is indicated as the `attributes.upstream.name` in `controller` logs. In the context provided, the `frontend` communicates with other backend services to process user interactions and might be an upstream dependency for the `controller`. The problem might cascade from `frontendproxy` to `frontend`.", + "confidence": "high" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "The `cartservice` handles shopping cart actions which map the `controller`'s `/api/cart` endpoint. If the `cartservice` has issues, they would cascade to the `controller` /api/cart endpoint that depends on this service for cart management functions.", + "confidence": "high" + }, + { + "entity": { + "service.name": "currencyservice" + }, + "reason": "Handling currency conversions, indirectly connected to cart operations. The issues might arise if currency conversion fails during cart operations, contributing to the 500 errors in the `controller`.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "frauddetectionservice" + }, + "reason": "No specific logs point directly; contextual relevance due to transaction handling. If fraud detection triggers false flags, it can affect cart transactions.", + "confidence": "low" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "The `cartservice` directly manages shopping cart operations over the gRPC protocol, and errors here could lead to repeated 500 errors in the `controller`.", + "confidence": "high" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The `frontend` service handles user interactions that are passed to the `controller`. Issues in `frontend` could lead to failures in `controller`, resulting in 500 errors.", + "confidence": "medium to high" + }, + { + "entity": { + "service.name": "loadgenerator" + }, + "reason": "The `loadgenerator` simulates high user traffic which might strain other services and indirectly cause 500 errors in the `controller`.", + "confidence": "medium" + }, + { + "entity": { + "service.name": "etcd" + }, + "reason": "As a control plane activity tracker for Ingress, indirect impacts from `etcd` inconsistencies can propagate as issues in services interacting via Ingress, including `controller`.", + "confidence": "medium" + } + ], + "summary": "### Characteristics of the `controller` Entity\n\n**1. Infrastructure & Environment:**\n\nThe `controller` service is deployed within a Kubernetes environment, specifically in the `ingress-nginx` namespace. The service is associated with a `controller` container running within the `ingress-nginx-controller-bc57996ff-r6blf` pod. This pod is scheduled on a node identified as `minikube`, and the service is part of the `ingress-nginx-controller` deployment. Additionally, the infrastructure is based on an ARM64 architecture, running Ubuntu 24.04.1 LTS, with deployment environment set to `opentelemetry-demo`.\n\n**2. Communication Characteristics:**\n\nThe `controller` service functions as an Ingress controller, managing incoming traffic and routing it to backend services. It processes HTTP requests, typically version 1.1, and communicates with other services via HTTP protocols. Key endpoints involved in the communication include:\n- Inbound requests are received at endpoints like `/api/cart` and `/api/checkout`.\n- Outbound requests are routed primarily to the `frontendproxy` service, evidenced by the upstream address `10.244.0.26:8080`.\n\nThe service handles both `GET` and `POST` requests, and its communication paths include requests from user agents like \"HeadlessChrome\" and \"python-requests\".\n\n**3. Context of Entity in Investigation:**\n\n**Reason for Investigation:**\nThe `controller` service is currently under investigation due to an alert triggered by a high number of 500 errors (98.78% error rate) occurring at the `/api/cart` endpoint. The significant spike in error rates is concerning and suggests a potential issue within the service or its interaction with dependencies.\n\n**Relation to Other Entities:**\nThe high error rates on the `controller` are likely impacting the overall user experience of the application, notably through the `/api/cart` functionality, which interacts with the `cartservice`. As the `controller` service forwards requests to the `frontendproxy`, which in turn interacts with various backend services like `cartservice`, `checkoutservice`, `currencyservice`, and others, the ripple effect of these errors might be felt across multiple services in the architecture. This interconnectedness necessitates thorough investigation of `controller's` logs and error patterns to isolate the root cause and mitigate the disruption in the flow of HTTP requests.\n\nBy understanding the behavior and interaction of the `controller` service within the broader microservices architecture, we aim to identify and resolve the underlying issue causing the increase in 500 errors. This involves examining logs for patterns, determining if recent changes or specific conditions triggered the fault, and analyzing dependencies that could contribute to the error rates observed. This step is integral to restoring normal operation and maintaining service reliability and user satisfaction.\n\n### Analysis of Log Patterns for service.name:controller\n\n#### Pattern Group: Request Errors\n- **Pattern:**\n ```\n .*?10\\\\.244\\\\.0\\\\.38.+?02.+?2024.+?10.+?0000.+?api.+?HTTP.+?1\\\\.1.+?python.+?requests.+?2\\\\.31\\\\.0.+?default.+?my.+?otel.+?demo.+?frontendproxy.+?8080.+?10\\\\.244\\\\.0\\\\.26.+?8080.*?\n ```\n - **Sample:**\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n - **Description:** This pattern represents request logs where an HTTP POST request to the `/api/cart` endpoint resulted in a `500 Internal Server Error`. The requests are from a client using `python-requests/2.31.0`.\n\n- **Count:** 263 occurrences\n\n- **Timeseries Analysis:**\n - **Trend:** The number of occurrences show fluctuation with no significant change in the pattern.\n - **Log Counts:** \n - Example timestamps and counts:\n - `2024-11-02T10:56:00.000Z: 6`\n - `2024-11-02T10:56:30.000Z: 2`\n - `2024-11-02T10:57:00.000Z: 0`\n\n### Summary\nBased on the provided logs patterns, the `controller` service is experiencing a high number of `500 Internal Server Errors` when handling POST requests to the `/api/cart` endpoint. This is evident from the consistent error logs observed at different timestamps. The alert threshold breach likely correlates with these error occurrences.\n\nNo other unusual patterns such as connection issues, startup messages, or garbage collection messages were identified in the logs around the error events. Further investigation on the backend or potential dependency issues (e.g., `cartservice`) might be needed to determine the exact cause of these errors.\n\n### Timeline of significant events\n\n- **2024-11-02T10:56:42.498Z**\n - **Alert Triggered**: High number of 500 errors for the /api/cart endpoint. Error rate is 98.78%, above the threshold of 1% over a 1-minute duration.\n \n- **2024-11-02T10:56:00.000Z**\n - **Log Entry**: 6 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - **Example Log**:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n \n- **2024-11-02T10:56:30.000Z**\n - **Log Entry**: 2 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - **Example Log**:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:35 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n\n### Context and reasoning\n\nThe `controller` service plays a critical role in handling incoming HTTP requests within the Kubernetes environment, specifically acting as an Ingress controller within the `ingress-nginx` namespace. The recent alert, triggered by a high number of 500 errors, indicates a significant disruption in the normal operations of the `controller` service, particularly impacting the `/api/cart` endpoint. The log entries leading up to and following the alert highlight a pattern of consistent `500 Internal Server Error` responses, specifically around the timestamp in question.\n\nThe pattern group identified, related to request errors, shows repeated failures for HTTP POST requests from a client using `python-requests/2.31.0`, likely directed towards the `cartservice` via the `frontendproxy`. This high error rate suggests an underlying issue either within the `controller` service itself, its communication path to the `frontendproxy`, or potentially further downstream with the backend services like `cartservice`.\n\nNo other unusual log patterns, such as connection issues or any system degradation messages were noted, indicating the problem is likely concentrated around the interaction between `controller` and its immediate dependencies rather than a broader system-wide issue. By correlating the timestamps and repeated error logs, a clear link can be drawn between the `500 Internal Server Error` responses and the timeline, further supporting the hypothesis of a specific fault affecting the `/api/cart` endpoint.\n\nFurther investigation into the dependencies of the `controller` service, especially focusing on the interactions with the `frontendproxy` and subsequently `cartservice`, is warranted to isolate and rectify the root cause of these error patterns." + }, + "data": { + "attachments": { + "alerts": [ + { + "kibana.alert.reason": "500 Errors is 98.78049, above the threshold of 1. (duration: 1 min, data view: otel_logs_data (Automated by Demo CLI), group: controller,/api/cart)", + "kibana.alert.evaluation.values": [ + 98.78048780487805 + ], + "kibana.alert.evaluation.threshold": [ + 1 + ], + "kibana.alert.group": [ + { + "field": "service.name", + "value": "controller" + }, + { + "field": "url.path", + "value": "/api/cart" + } + ], + "tags": [ + "demo", + "cli-created" + ], + "service.name": "controller", + "kibana.alert.rule.category": "Custom threshold", + "kibana.alert.rule.consumer": "logs", + "kibana.alert.rule.execution.uuid": "4187827d-686e-4098-98e3-21e13495798e", + "kibana.alert.rule.name": "NGINX 500s", + "kibana.alert.rule.parameters": { + "criteria": [ + { + "comparator": ">", + "metrics": [ + { + "name": "A", + "filter": "http.response.status_code:*", + "aggType": "count" + }, + { + "name": "B", + "filter": "http.response.status_code>=500", + "aggType": "count" + } + ], + "threshold": [ + 1 + ], + "timeSize": 1, + "timeUnit": "m", + "equation": "(B/A) * 100", + "label": "500 Errors" + } + ], + "alertOnNoData": false, + "alertOnGroupDisappear": false, + "searchConfiguration": { + "query": { + "query": "k8s.namespace.name: \"ingress-nginx\" AND url.path: /api/*", + "language": "kuery" + }, + "index": "otel_logs_data" + }, + "groupBy": [ + "service.name", + "url.path" + ] + }, + "kibana.alert.rule.producer": "observability", + "kibana.alert.rule.revision": 0, + "kibana.alert.rule.rule_type_id": "observability.rules.custom_threshold", + "kibana.alert.rule.tags": [ + "demo", + "cli-created" + ], + "kibana.alert.rule.uuid": "9055220c-8fb1-4f9f-be7c-0a33eb2bafc5", + "kibana.space_ids": [ + "default" + ], + "@timestamp": "2024-11-02T10:56:42.498Z", + "event.action": "open", + "event.kind": "signal", + "kibana.alert.rule.execution.timestamp": "2024-11-02T10:56:42.498Z", + "kibana.alert.action_group": "custom_threshold.fired", + "kibana.alert.flapping": false, + "kibana.alert.flapping_history": [ + true + ], + "kibana.alert.instance.id": "controller,/api/cart", + "kibana.alert.maintenance_window_ids": [], + "kibana.alert.consecutive_matches": 1, + "kibana.alert.status": "active", + "kibana.alert.uuid": "b97a1b20-d14b-4835-b948-bd7a423284eb", + "kibana.alert.severity_improving": false, + "kibana.alert.workflow_status": "open", + "kibana.alert.duration.us": 0, + "kibana.alert.start": "2024-11-02T10:56:42.498Z", + "kibana.alert.time_range": { + "gte": "2024-11-02T10:56:42.498Z" + }, + "kibana.version": "9.0.0" + }, + { + "kibana.alert.reason": "500 Errors is 100, above the threshold of 1. (duration: 1 min, data view: otel_logs_data (Automated by Demo CLI), group: controller,/api/checkout)", + "kibana.alert.evaluation.values": [ + 100 + ], + "kibana.alert.evaluation.threshold": [ + 1 + ], + "kibana.alert.group": [ + { + "field": "service.name", + "value": "controller" + }, + { + "field": "url.path", + "value": "/api/checkout" + } + ], + "tags": [ + "demo", + "cli-created" + ], + "service.name": "controller", + "kibana.alert.rule.category": "Custom threshold", + "kibana.alert.rule.consumer": "logs", + "kibana.alert.rule.execution.uuid": "4187827d-686e-4098-98e3-21e13495798e", + "kibana.alert.rule.name": "NGINX 500s", + "kibana.alert.rule.parameters": { + "criteria": [ + { + "comparator": ">", + "metrics": [ + { + "name": "A", + "filter": "http.response.status_code:*", + "aggType": "count" + }, + { + "name": "B", + "filter": "http.response.status_code>=500", + "aggType": "count" + } + ], + "threshold": [ + 1 + ], + "timeSize": 1, + "timeUnit": "m", + "equation": "(B/A) * 100", + "label": "500 Errors" + } + ], + "alertOnNoData": false, + "alertOnGroupDisappear": false, + "searchConfiguration": { + "query": { + "query": "k8s.namespace.name: \"ingress-nginx\" AND url.path: /api/*", + "language": "kuery" + }, + "index": "otel_logs_data" + }, + "groupBy": [ + "service.name", + "url.path" + ] + }, + "kibana.alert.rule.producer": "observability", + "kibana.alert.rule.revision": 0, + "kibana.alert.rule.rule_type_id": "observability.rules.custom_threshold", + "kibana.alert.rule.tags": [ + "demo", + "cli-created" + ], + "kibana.alert.rule.uuid": "9055220c-8fb1-4f9f-be7c-0a33eb2bafc5", + "kibana.space_ids": [ + "default" + ], + "@timestamp": "2024-11-02T10:56:42.498Z", + "event.action": "open", + "event.kind": "signal", + "kibana.alert.rule.execution.timestamp": "2024-11-02T10:56:42.498Z", + "kibana.alert.action_group": "custom_threshold.fired", + "kibana.alert.flapping": false, + "kibana.alert.flapping_history": [ + true + ], + "kibana.alert.instance.id": "controller,/api/checkout", + "kibana.alert.maintenance_window_ids": [], + "kibana.alert.consecutive_matches": 1, + "kibana.alert.status": "active", + "kibana.alert.uuid": "78472a9c-63a2-41ba-9812-47cebd48d833", + "kibana.alert.severity_improving": false, + "kibana.alert.workflow_status": "open", + "kibana.alert.duration.us": 0, + "kibana.alert.start": "2024-11-02T10:56:42.498Z", + "kibana.alert.time_range": { + "gte": "2024-11-02T10:56:42.498Z" + }, + "kibana.version": "9.0.0" + } + ], + "slos": [], + "analysis": { + "total": 56181, + "sampled": 1000, + "fields": [ + "@timestamp:date - 994 distinct values", + "app.label.component:keyword - 1 distinct values (`controller`)", + "attributes.event.name.text:text - 1 distinct values (`nginx.ingress.controller.error`)", + "attributes.event.name:keyword - 1 distinct values (`nginx.ingress.controller.error`)", + "attributes.http.request.id:keyword - 1000 distinct values (`87c973a800b3bd34d3679f0a12263c40`, `ee99fada68450d77be61deaae1f04008`, `80312e7e98e9171c8010e442784e7a04`, `a931c4f7d964f91f0a0750f3221dfa50`, `8c2e99672e225b279a7741671c976c93`, `eed4ff70db044f81adeda15bc1f3ad4c`, `dd730f83b894fc2adedfaf950cf5884c`, `4e35653560a824d6693d1e024906e9ce`, `36d6dfae2fe5d6fecbfaadd4fac5bde1`, `43c774bea806c21478f7ee57a449222b`, 990 more values)", + "attributes.http.request.method:keyword - 2 distinct values (`POST`, `GET`)", + "attributes.http.request.referrer:keyword - 2 distinct values (`http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/`, `http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart`)", + "attributes.http.request.size:long - 61 distinct values (`351`, `374`, `373`, `809`, `383`, `506`, `342`, `350`, `538`, `479`, 51 more values)", + "attributes.http.request.time:float - 90 distinct values (`3.172`, `1.103`, `0.053`, `4.434`, `0.019`, `3.328`, `1.01`, `3.197`, `3.133`, `2.566`, 80 more values)", + "attributes.http.response.body.size:long - 130 distinct values (`1144`, `1120`, `1024`, `19`, `1336`, `1198`, `1070`, `111157`, `111163`, `1271`, 120 more values)", + "attributes.http.response.status_code:long - 4 distinct values (`499`, `500`, `308`, `200`)", + "attributes.http.version:keyword - 1 distinct values (`1.1`)", + "attributes.log.file.path.text:text - 1 distinct values (`/var/log/pods/ingress-nginx_ingress-nginx-controller-bc57996ff-r6blf_35200065-5cde-4a7e-9018-0f0a4e2c5bb4/controller/0.log`)", + "attributes.log.file.path:keyword - 1 distinct values (`/var/log/pods/ingress-nginx_ingress-nginx-controller-bc57996ff-r6blf_35200065-5cde-4a7e-9018-0f0a4e2c5bb4/controller/0.log`)", + "attributes.log.iostream:keyword - 1 distinct values (`stdout`)", + "attributes.network.protocol.name.text:text - 1 distinct values (`http`)", + "attributes.network.protocol.name:keyword - 1 distinct values (`http`)", + "attributes.source.address:keyword - 1 distinct values (`10.244.0.38`)", + "attributes.upstream.address:keyword - 1 distinct values (`10.244.0.26:8080`)", + "attributes.upstream.name.text:text - 1 distinct values (`default-my-otel-demo-frontendproxy-8080`)", + "attributes.upstream.name:keyword - 1 distinct values (`default-my-otel-demo-frontendproxy-8080`)", + "attributes.upstream.response.size:keyword - 117 distinct values (`1149`, `1120`, `1029`, `19`, `1336`, `1203`, `1070`, `1276`, `1356`, `1105`, 107 more values)", + "attributes.upstream.response.status_code:keyword - 3 distinct values (`500`, `308`, `200`)", + "attributes.upstream.response.time:keyword - 89 distinct values (`3.171`, `1.007`, `1.103`, `0.053`, `4.434`, `3.328`, `1.010`, `3.197`, `3.132`, `2.565`, 79 more values)", + "attributes.url.domain:keyword - 2 distinct values (`icons`, ``)", + "attributes.url.extension:keyword - 7 distinct values (`css`, `Service/ResolveAll`, `Service/EventStream`, `png`, `svg`, `jpg`, `js`)", + "attributes.url.original.text:text - 167 distinct values (`/api/recommendations?productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, 165 more values)", + "attributes.url.original:keyword - 167 distinct values (`/api/recommendations?productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `/api/recommendations?productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `/api/cart?sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `/api/recommendations?productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `/api/data/`, `/api/cart?sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `/api/recommendations?productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `/api/recommendations?productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `/api/cart?sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, 157 more values)", + "attributes.url.path:keyword - 43 distinct values (`/api/products/0PUK6V6EV0`, `/api/products/9SIQT8TOJO`, `/api/products/LS4PSXUNUM`, `/api/data/`, `/api/products/L9ECAV7KIM`, `/api/data`, `/api/products/66VCHSJNUP`, `/api/products/2ZYFJ3GM2N`, `/cart`, `/images/products/NationalParkFoundationExplorascope.jpg`, 33 more values)", + "attributes.url.query:keyword - 126 distinct values (`productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, `productIds=&sessionId=0c122e28-e8fb-4ab5-9889-ac797b5f17cf¤cyCode=USD`, 116 more values)", + "attributes.url.scheme:keyword - 1 distinct values (``)", + "attributes.user_agent.name.text:text - 2 distinct values (`Python Requests`, `HeadlessChrome`)", + "attributes.user_agent.name:keyword - 2 distinct values (`Python Requests`, `HeadlessChrome`)", + "attributes.user_agent.original.text:text - 2 distinct values (`python-requests/2.31.0`, `Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36`)", + "attributes.user_agent.original:keyword - 2 distinct values (`python-requests/2.31.0`, `Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36`)", + "attributes.user_agent.version:keyword - 2 distinct values (`2.31`, `120.0.6099`)", + "body.text:text - 1000 distinct values (`10.244.0.38 - - [02/Nov/2024:10:37:56 +0000] \"GET /api/currency? HTTP/1.1\" 200 199 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 598 0.007 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 199 0.007 200 87c973a800b3bd34d3679f0a12263c40\n`, `10.244.0.38 - - [02/Nov/2024:10:46:11 +0000] \"GET /_next/static/chunks/pages/_app-c923ae378a182a07.js HTTP/1.1\" 200 111150 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 484 0.017 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 111008 0.018 200 ee99fada68450d77be61deaae1f04008\n`, 998 more values)", + "data_stream.dataset:keyword - 1 distinct values (`nginx_ingress_controller.error.otel`)", + "data_stream.namespace:keyword - 1 distinct values (`default`)", + "data_stream.type:keyword - 1 distinct values (`logs`)", + "deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "dropped_attributes_count:long - 1 distinct values (`0`)", + "event.dataset:keyword - 1 distinct values (`nginx_ingress_controller.error.otel`)", + "event.name:keyword - 1 distinct values (`nginx.ingress.controller.error`)", + "host.arch:keyword - 1 distinct values (`arm64`)", + "host.architecture:keyword - 1 distinct values (`arm64`)", + "host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "host.cpu.family:keyword - 1 distinct values (``)", + "host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "host.cpu.model.name:keyword - 1 distinct values (``)", + "host.cpu.stepping:keyword - 1 distinct values (`0`)", + "host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "host.os.full:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "host.os.platform:keyword - 1 distinct values (`linux`)", + "http.request.id:keyword - 1000 distinct values (`87c973a800b3bd34d3679f0a12263c40`, `ee99fada68450d77be61deaae1f04008`, `80312e7e98e9171c8010e442784e7a04`, `a931c4f7d964f91f0a0750f3221dfa50`, `8c2e99672e225b279a7741671c976c93`, `eed4ff70db044f81adeda15bc1f3ad4c`, `dd730f83b894fc2adedfaf950cf5884c`, `4e35653560a824d6693d1e024906e9ce`, `36d6dfae2fe5d6fecbfaadd4fac5bde1`, `43c774bea806c21478f7ee57a449222b`, 990 more values)", + "http.request.method:keyword - 2 distinct values (`POST`, `GET`)", + "http.request.referrer:keyword - 2 distinct values (`http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/`, `http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart`)", + "http.request.size:long - 61 distinct values (`351`, `374`, `373`, `809`, `383`, `506`, `342`, `350`, `538`, `479`, 51 more values)", + "http.request.time:float - 90 distinct values (`3.172`, `1.103`, `0.053`, `4.434`, `0.019`, `3.328`, `1.01`, `3.197`, `3.133`, `2.566`, 80 more values)", + "http.response.body.size:long - 130 distinct values (`1144`, `1120`, `1024`, `19`, `1336`, `1198`, `1070`, `111157`, `111163`, `1271`, 120 more values)", + "http.response.status_code:long - 4 distinct values (`499`, `500`, `308`, `200`)", + "http.version:keyword - 1 distinct values (`1.1`)", + "k8s.container.name:keyword - 1 distinct values (`controller`)", + "k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "k8s.deployment.name:keyword - 1 distinct values (`ingress-nginx-controller`)", + "k8s.namespace.name:keyword - 1 distinct values (`ingress-nginx`)", + "k8s.node.name:keyword - 1 distinct values (`minikube`)", + "k8s.pod.name:keyword - 1 distinct values (`ingress-nginx-controller-bc57996ff-r6blf`)", + "k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T08:56:56Z`)", + "k8s.pod.uid:keyword - 1 distinct values (`35200065-5cde-4a7e-9018-0f0a4e2c5bb4`)", + "kubernetes.deployment.name:keyword - 1 distinct values (`ingress-nginx-controller`)", + "kubernetes.namespace:keyword - 1 distinct values (`ingress-nginx`)", + "kubernetes.node.name:keyword - 1 distinct values (`minikube`)", + "kubernetes.pod.name:keyword - 1 distinct values (`ingress-nginx-controller-bc57996ff-r6blf`)", + "kubernetes.pod.uid:keyword - 1 distinct values (`35200065-5cde-4a7e-9018-0f0a4e2c5bb4`)", + "log.file.path:keyword - 1 distinct values (`/var/log/pods/ingress-nginx_ingress-nginx-controller-bc57996ff-r6blf_35200065-5cde-4a7e-9018-0f0a4e2c5bb4/controller/0.log`)", + "log.iostream:keyword - 1 distinct values (`stdout`)", + "message:text - 1000 distinct values (`10.244.0.38 - - [02/Nov/2024:10:37:56 +0000] \"GET /api/currency? HTTP/1.1\" 200 199 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 598 0.007 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 199 0.007 200 87c973a800b3bd34d3679f0a12263c40\n`, `10.244.0.38 - - [02/Nov/2024:10:46:11 +0000] \"GET /_next/static/chunks/pages/_app-c923ae378a182a07.js HTTP/1.1\" 200 111150 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 484 0.017 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 111008 0.018 200 ee99fada68450d77be61deaae1f04008\n`, 998 more values)", + "network.protocol.name:keyword - 1 distinct values (`http`)", + "observed_timestamp:date_nanos - 1000 distinct values (`2024-11-02T10:37:56.158731715Z`, `2024-11-02T10:46:11.961228541Z`, `2024-11-02T10:38:02.758802635Z`, `2024-11-02T10:54:51.563521629Z`, `2024-11-02T10:37:05.149442469Z`, `2024-11-02T10:49:01.961126259Z`, `2024-11-02T10:56:19.96308167Z`, `2024-11-02T10:42:06.760264887Z`, `2024-11-02T10:49:45.76210446Z`, `2024-11-02T10:54:02.562840801Z`, 990 more values)", + "os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.app.label.component:keyword - 1 distinct values (`controller`)", + "resource.attributes.deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "resource.attributes.host.arch:keyword - 1 distinct values (`arm64`)", + "resource.attributes.host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "resource.attributes.host.cpu.family:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "resource.attributes.host.cpu.model.name.text:text - 1 distinct values (``)", + "resource.attributes.host.cpu.model.name:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.stepping:keyword - 1 distinct values (`0`)", + "resource.attributes.host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "resource.attributes.host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "resource.attributes.host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "resource.attributes.host.name:keyword - 1 distinct values (`otel-daemonset-opentelemetry-collector-agent-7jlpk`)", + "resource.attributes.k8s.container.name.text:text - 1 distinct values (`controller`)", + "resource.attributes.k8s.container.name:keyword - 1 distinct values (`controller`)", + "resource.attributes.k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "resource.attributes.k8s.deployment.name:keyword - 1 distinct values (`ingress-nginx-controller`)", + "resource.attributes.k8s.namespace.name:keyword - 1 distinct values (`ingress-nginx`)", + "resource.attributes.k8s.node.name:keyword - 1 distinct values (`minikube`)", + "resource.attributes.k8s.pod.name:keyword - 1 distinct values (`ingress-nginx-controller-bc57996ff-r6blf`)", + "resource.attributes.k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T08:56:56Z`)", + "resource.attributes.k8s.pod.uid:keyword - 1 distinct values (`35200065-5cde-4a7e-9018-0f0a4e2c5bb4`)", + "resource.attributes.os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "resource.attributes.os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.service.name.text:text - 1 distinct values (`controller`)", + "resource.attributes.service.name:keyword - 1 distinct values (`controller`)", + "resource.dropped_attributes_count:long - 1 distinct values (`0`)", + "resource.schema_url:keyword - 1 distinct values (`https://opentelemetry.io/schemas/1.6.1`)", + "scope.dropped_attributes_count:long - 1 distinct values (`0`)", + "service.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "service.name:keyword - 1 distinct values (`controller`)", + "severity_number:byte - 1 distinct values (`0`)", + "source.address:keyword - 1 distinct values (`10.244.0.38`)", + "upstream.address:keyword - 1 distinct values (`10.244.0.26:8080`)", + "upstream.name:keyword - 1 distinct values (`default-my-otel-demo-frontendproxy-8080`)", + "upstream.response.size:keyword - 117 distinct values (`1149`, `1120`, `1029`, `19`, `1336`, `1203`, `1070`, `1276`, `1356`, `1105`, 107 more values)", + "upstream.response.status_code:keyword - 3 distinct values (`500`, `308`, `200`)", + "upstream.response.time:keyword - 89 distinct values (`3.171`, `1.007`, `1.103`, `0.053`, `4.434`, `3.328`, `1.010`, `3.197`, `3.132`, `2.565`, 79 more values)", + "url.domain:keyword - 2 distinct values (`icons`, ``)", + "url.extension:keyword - 7 distinct values (`css`, `Service/ResolveAll`, `Service/EventStream`, `png`, `svg`, `jpg`, `js`)", + "url.original:keyword - 167 distinct values (`/api/recommendations?productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `/api/recommendations?productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `/api/cart?sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `/api/recommendations?productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `/api/data/`, `/api/cart?sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `/api/recommendations?productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `/api/recommendations?productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `/api/cart?sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, 157 more values)", + "url.path:keyword - 43 distinct values (`/api/products/0PUK6V6EV0`, `/api/products/9SIQT8TOJO`, `/api/products/LS4PSXUNUM`, `/api/data/`, `/api/products/L9ECAV7KIM`, `/api/data`, `/api/products/66VCHSJNUP`, `/api/products/2ZYFJ3GM2N`, `/cart`, `/images/products/NationalParkFoundationExplorascope.jpg`, 33 more values)", + "url.query:keyword - 126 distinct values (`productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, `productIds=&sessionId=0c122e28-e8fb-4ab5-9889-ac797b5f17cf¤cyCode=USD`, 116 more values)", + "url.scheme:keyword - 1 distinct values (``)", + "user_agent.name:keyword - 2 distinct values (`Python Requests`, `HeadlessChrome`)", + "user_agent.original:keyword - 2 distinct values (`python-requests/2.31.0`, `Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36`)", + "user_agent.version:keyword - 2 distinct values (`2.31`, `120.0.6099`)" + ] + }, + "ownPatterns": [ + { + "field": "message", + "count": 54850, + "pattern": "HTTP/1.1 Mozilla/5.0 X11 Linux aarch64 AppleWebKit/537.36 KHTML like Gecko HeadlessChrome/120.0.6099.28 Safari/537.36 default-my-otel-demo-frontendproxy-8080", + "regex": ".*?HTTP/1\\.1.+?Mozilla/5\\.0.+?X11.+?Linux.+?aarch64.+?AppleWebKit/537\\.36.+?KHTML.+?like.+?Gecko.+?HeadlessChrome/120\\.0\\.6099\\.28.+?Safari/537\\.36.+?default-my-otel-demo-frontendproxy-8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:54:54 +0000] \"GET /icons/Chevron.svg HTTP/1.1\" 200 805 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 508 0.001 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 810 0.001 200 8693bfefd0668ca27fff0e929785a2c5\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:54:54 +0000] \"GET /icons/Chevron.svg HTTP/1.1\" 200 805 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 508 0.001 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 810 0.001 200 8693bfefd0668ca27fff0e929785a2c5\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.057Z", + "lastOccurrence": "2024-11-02T10:56:59.420Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 1385 + }, + { + "x": 1730543820000, + "y": 1172 + }, + { + "x": 1730543850000, + "y": 1520 + }, + { + "x": 1730543880000, + "y": 1312 + }, + { + "x": 1730543910000, + "y": 986 + }, + { + "x": 1730543940000, + "y": 1030 + }, + { + "x": 1730543970000, + "y": 1248 + }, + { + "x": 1730544000000, + "y": 1395 + }, + { + "x": 1730544030000, + "y": 1371 + }, + { + "x": 1730544060000, + "y": 1289 + }, + { + "x": 1730544090000, + "y": 1467 + }, + { + "x": 1730544120000, + "y": 1223 + }, + { + "x": 1730544150000, + "y": 1429 + }, + { + "x": 1730544180000, + "y": 1329 + }, + { + "x": 1730544210000, + "y": 1224 + }, + { + "x": 1730544240000, + "y": 1424 + }, + { + "x": 1730544270000, + "y": 1409 + }, + { + "x": 1730544300000, + "y": 1405 + }, + { + "x": 1730544330000, + "y": 1322 + }, + { + "x": 1730544360000, + "y": 1326 + }, + { + "x": 1730544390000, + "y": 1416 + }, + { + "x": 1730544420000, + "y": 1391 + }, + { + "x": 1730544450000, + "y": 1320 + }, + { + "x": 1730544480000, + "y": 1384 + }, + { + "x": 1730544510000, + "y": 1457 + }, + { + "x": 1730544540000, + "y": 1415 + }, + { + "x": 1730544570000, + "y": 1386 + }, + { + "x": 1730544600000, + "y": 1337 + }, + { + "x": 1730544630000, + "y": 1315 + }, + { + "x": 1730544660000, + "y": 1259 + }, + { + "x": 1730544690000, + "y": 1403 + }, + { + "x": 1730544720000, + "y": 1352 + }, + { + "x": 1730544750000, + "y": 1396 + }, + { + "x": 1730544780000, + "y": 1325 + }, + { + "x": 1730544810000, + "y": 1365 + }, + { + "x": 1730544840000, + "y": 1387 + }, + { + "x": 1730544870000, + "y": 1414 + }, + { + "x": 1730544900000, + "y": 1210 + }, + { + "x": 1730544930000, + "y": 1344 + }, + { + "x": 1730544960000, + "y": 1444 + }, + { + "x": 1730544990000, + "y": 1264 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "dip", + "significance": "medium", + "change_point": 4, + "p_value": 0.00005345763188668862, + "timestamp": "2024-11-02T10:38:30.000Z" + }, + "shortId": "hhpu", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1069, + "pattern": "GET HTTP/1.1 python-requests/2.31.0 default-my-otel-demo-frontendproxy-8080", + "regex": ".*?GET.+?HTTP/1\\.1.+?python-requests/2\\.31\\.0.+?default-my-otel-demo-frontendproxy-8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:55:01 +0000] \"GET /api/data HTTP/1.1\" 200 177 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 177 0.003 200 6cf0fcfd1259f68166701125d3c9761c\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:55:01 +0000] \"GET /api/data HTTP/1.1\" 200 177 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 177 0.003 200 6cf0fcfd1259f68166701125d3c9761c\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:32.391Z", + "lastOccurrence": "2024-11-02T10:56:57.316Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 25 + }, + { + "x": 1730543820000, + "y": 27 + }, + { + "x": 1730543850000, + "y": 26 + }, + { + "x": 1730543880000, + "y": 26 + }, + { + "x": 1730543910000, + "y": 26 + }, + { + "x": 1730543940000, + "y": 27 + }, + { + "x": 1730543970000, + "y": 24 + }, + { + "x": 1730544000000, + "y": 25 + }, + { + "x": 1730544030000, + "y": 22 + }, + { + "x": 1730544060000, + "y": 27 + }, + { + "x": 1730544090000, + "y": 20 + }, + { + "x": 1730544120000, + "y": 23 + }, + { + "x": 1730544150000, + "y": 29 + }, + { + "x": 1730544180000, + "y": 25 + }, + { + "x": 1730544210000, + "y": 23 + }, + { + "x": 1730544240000, + "y": 27 + }, + { + "x": 1730544270000, + "y": 26 + }, + { + "x": 1730544300000, + "y": 27 + }, + { + "x": 1730544330000, + "y": 25 + }, + { + "x": 1730544360000, + "y": 31 + }, + { + "x": 1730544390000, + "y": 21 + }, + { + "x": 1730544420000, + "y": 27 + }, + { + "x": 1730544450000, + "y": 25 + }, + { + "x": 1730544480000, + "y": 29 + }, + { + "x": 1730544510000, + "y": 23 + }, + { + "x": 1730544540000, + "y": 27 + }, + { + "x": 1730544570000, + "y": 24 + }, + { + "x": 1730544600000, + "y": 31 + }, + { + "x": 1730544630000, + "y": 22 + }, + { + "x": 1730544660000, + "y": 24 + }, + { + "x": 1730544690000, + "y": 27 + }, + { + "x": 1730544720000, + "y": 27 + }, + { + "x": 1730544750000, + "y": 27 + }, + { + "x": 1730544780000, + "y": 24 + }, + { + "x": 1730544810000, + "y": 25 + }, + { + "x": 1730544840000, + "y": 26 + }, + { + "x": 1730544870000, + "y": 29 + }, + { + "x": 1730544900000, + "y": 33 + }, + { + "x": 1730544930000, + "y": 34 + }, + { + "x": 1730544960000, + "y": 25 + }, + { + "x": 1730544990000, + "y": 28 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "jmoh", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1068, + "pattern": "10.244.0.38 02 2024 10 0000 GET HTTP 1.1 python requests 2.31.0 default my otel demo frontendproxy 8080 10.244.0.26 8080", + "regex": ".*?10\\.244\\.0\\.38.+?02.+?2024.+?10.+?0000.+?GET.+?HTTP.+?1\\.1.+?python.+?requests.+?2\\.31\\.0.+?default.+?my.+?otel.+?demo.+?frontendproxy.+?8080.+?10\\.244\\.0\\.26.+?8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:55:06 +0000] \"GET /api/cart HTTP/1.1\" 200 24 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 24 0.003 200 33934468a35902ed5b6dde14b1aca6a0\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:55:06 +0000] \"GET /api/cart HTTP/1.1\" 200 24 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 24 0.003 200 33934468a35902ed5b6dde14b1aca6a0\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:32.391Z", + "lastOccurrence": "2024-11-02T10:56:57.316Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 25 + }, + { + "x": 1730543820000, + "y": 27 + }, + { + "x": 1730543850000, + "y": 26 + }, + { + "x": 1730543880000, + "y": 26 + }, + { + "x": 1730543910000, + "y": 26 + }, + { + "x": 1730543940000, + "y": 27 + }, + { + "x": 1730543970000, + "y": 24 + }, + { + "x": 1730544000000, + "y": 25 + }, + { + "x": 1730544030000, + "y": 22 + }, + { + "x": 1730544060000, + "y": 27 + }, + { + "x": 1730544090000, + "y": 20 + }, + { + "x": 1730544120000, + "y": 23 + }, + { + "x": 1730544150000, + "y": 29 + }, + { + "x": 1730544180000, + "y": 25 + }, + { + "x": 1730544210000, + "y": 23 + }, + { + "x": 1730544240000, + "y": 27 + }, + { + "x": 1730544270000, + "y": 26 + }, + { + "x": 1730544300000, + "y": 27 + }, + { + "x": 1730544330000, + "y": 25 + }, + { + "x": 1730544360000, + "y": 31 + }, + { + "x": 1730544390000, + "y": 21 + }, + { + "x": 1730544420000, + "y": 27 + }, + { + "x": 1730544450000, + "y": 25 + }, + { + "x": 1730544480000, + "y": 29 + }, + { + "x": 1730544510000, + "y": 23 + }, + { + "x": 1730544540000, + "y": 27 + }, + { + "x": 1730544570000, + "y": 24 + }, + { + "x": 1730544600000, + "y": 31 + }, + { + "x": 1730544630000, + "y": 22 + }, + { + "x": 1730544660000, + "y": 24 + }, + { + "x": 1730544690000, + "y": 27 + }, + { + "x": 1730544720000, + "y": 27 + }, + { + "x": 1730544750000, + "y": 27 + }, + { + "x": 1730544780000, + "y": 24 + }, + { + "x": 1730544810000, + "y": 25 + }, + { + "x": 1730544840000, + "y": 26 + }, + { + "x": 1730544870000, + "y": 29 + }, + { + "x": 1730544900000, + "y": 32 + }, + { + "x": 1730544930000, + "y": 34 + }, + { + "x": 1730544960000, + "y": 25 + }, + { + "x": 1730544990000, + "y": 28 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "vzwi", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 262, + "pattern": "POST HTTP/1.1 python-requests/2.31.0 default-my-otel-demo-frontendproxy-8080", + "regex": ".*?POST.+?HTTP/1\\.1.+?python-requests/2\\.31\\.0.+?default-my-otel-demo-frontendproxy-8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:55:03 +0000] \"POST /api/checkout HTTP/1.1\" 200 984 \"-\" \"python-requests/2.31.0\" 780 0.068 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 984 0.069 200 f87d6397ec8b5740f05f1f3ca07adf50\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:55:03 +0000] \"POST /api/checkout HTTP/1.1\" 200 984 \"-\" \"python-requests/2.31.0\" 780 0.068 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 984 0.069 200 f87d6397ec8b5740f05f1f3ca07adf50\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.220Z", + "lastOccurrence": "2024-11-02T10:56:45.575Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 5 + }, + { + "x": 1730543820000, + "y": 10 + }, + { + "x": 1730543850000, + "y": 14 + }, + { + "x": 1730543880000, + "y": 3 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 12 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 6 + }, + { + "x": 1730544030000, + "y": 7 + }, + { + "x": 1730544060000, + "y": 5 + }, + { + "x": 1730544090000, + "y": 5 + }, + { + "x": 1730544120000, + "y": 5 + }, + { + "x": 1730544150000, + "y": 5 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 9 + }, + { + "x": 1730544240000, + "y": 5 + }, + { + "x": 1730544270000, + "y": 6 + }, + { + "x": 1730544300000, + "y": 14 + }, + { + "x": 1730544330000, + "y": 7 + }, + { + "x": 1730544360000, + "y": 10 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 4 + }, + { + "x": 1730544450000, + "y": 6 + }, + { + "x": 1730544480000, + "y": 6 + }, + { + "x": 1730544510000, + "y": 2 + }, + { + "x": 1730544540000, + "y": 3 + }, + { + "x": 1730544570000, + "y": 9 + }, + { + "x": 1730544600000, + "y": 5 + }, + { + "x": 1730544630000, + "y": 9 + }, + { + "x": 1730544660000, + "y": 3 + }, + { + "x": 1730544690000, + "y": 14 + }, + { + "x": 1730544720000, + "y": 13 + }, + { + "x": 1730544750000, + "y": 2 + }, + { + "x": 1730544780000, + "y": 5 + }, + { + "x": 1730544810000, + "y": 3 + }, + { + "x": 1730544840000, + "y": 7 + }, + { + "x": 1730544870000, + "y": 5 + }, + { + "x": 1730544900000, + "y": 11 + }, + { + "x": 1730544930000, + "y": 11 + }, + { + "x": 1730544960000, + "y": 6 + }, + { + "x": 1730544990000, + "y": 2 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "vdjm", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 263, + "pattern": "10.244.0.38 02 2024 10 0000 api HTTP 1.1 python requests 2.31.0 default my otel demo frontendproxy 8080 10.244.0.26 8080", + "regex": ".*?10\\.244\\.0\\.38.+?02.+?2024.+?10.+?0000.+?api.+?HTTP.+?1\\.1.+?python.+?requests.+?2\\.31\\.0.+?default.+?my.+?otel.+?demo.+?frontendproxy.+?8080.+?10\\.244\\.0\\.26.+?8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.220Z", + "lastOccurrence": "2024-11-02T10:56:45.575Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 5 + }, + { + "x": 1730543820000, + "y": 10 + }, + { + "x": 1730543850000, + "y": 14 + }, + { + "x": 1730543880000, + "y": 3 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 12 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 6 + }, + { + "x": 1730544030000, + "y": 7 + }, + { + "x": 1730544060000, + "y": 5 + }, + { + "x": 1730544090000, + "y": 5 + }, + { + "x": 1730544120000, + "y": 5 + }, + { + "x": 1730544150000, + "y": 5 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 9 + }, + { + "x": 1730544240000, + "y": 5 + }, + { + "x": 1730544270000, + "y": 6 + }, + { + "x": 1730544300000, + "y": 14 + }, + { + "x": 1730544330000, + "y": 7 + }, + { + "x": 1730544360000, + "y": 10 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 4 + }, + { + "x": 1730544450000, + "y": 6 + }, + { + "x": 1730544480000, + "y": 6 + }, + { + "x": 1730544510000, + "y": 2 + }, + { + "x": 1730544540000, + "y": 3 + }, + { + "x": 1730544570000, + "y": 9 + }, + { + "x": 1730544600000, + "y": 5 + }, + { + "x": 1730544630000, + "y": 9 + }, + { + "x": 1730544660000, + "y": 3 + }, + { + "x": 1730544690000, + "y": 14 + }, + { + "x": 1730544720000, + "y": 13 + }, + { + "x": 1730544750000, + "y": 2 + }, + { + "x": 1730544780000, + "y": 5 + }, + { + "x": 1730544810000, + "y": 3 + }, + { + "x": 1730544840000, + "y": 7 + }, + { + "x": 1730544870000, + "y": 5 + }, + { + "x": 1730544900000, + "y": 12 + }, + { + "x": 1730544930000, + "y": 11 + }, + { + "x": 1730544960000, + "y": 6 + }, + { + "x": 1730544990000, + "y": 2 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "hxyo", + "relevance": "critical", + "interesting": true + } + ], + "patternsFromOtherEntities": [], + "searches": [ + { + "fragments": [ + "10.244.0.38:8080", + "10.244.0.38", + "8080" + ], + "appearsAs": "This IP address and port are referenced as attributes.source.address, attributes.upstream.address in the investigated entity service.name:controller." + }, + { + "fragments": [ + "http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart", + "/api/cart" + ], + "appearsAs": "These URL fragments appear as attributes.http.request.referrer, attributes.url.original in the investigated entity service.name:controller." + }, + { + "fragments": [ + "/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF", + "sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57", + "currencyCode=CHF" + ], + "appearsAs": "These URL fragments appear as attributes.url.query in the investigated entity service.name:controller." + }, + { + "fragments": [ + "default-my-otel-demo-frontendproxy-8080", + "frontendproxy", + "frontend" + ], + "appearsAs": "These service names appear as attributes.upstream.name in the investigated entity service.name:controller." + }, + { + "fragments": [ + "e6bae77cfb5b598f1d725bc6cc52d06d", + "506" + ], + "appearsAs": " These fragments appear as attributes.http.request.time, attributes.http.response.status_code in the investigated entity service.name:controller." + } + ], + "relatedEntitiesSummaries": [ + "### Related Entities Analysis\n\n#### 1. Entity: service.name:frontend\n- **Indicators (Strength: Average to Strong):**\n - Field: `attributes.upstream.name` in service.name:controller - `default-my-otel-demo-frontendproxy-8080`\n - Field: `kubernetes.pod.name.text` in service.name:frontend - `my-otel-demo-frontend-5bbf4d78bc-qtwdr`\n - URL paths in logs that suggest interactions with the frontend service, specifically `/api/cart`.\n- **Reasoning:** The `frontend` service interacts closely with the `controller` (ingress-nginx-controller). Requests directed to `/api/cart` initiate from `frontendproxy` which routes to `frontend`. Given the high error rate at the `/api/cart` endpoint, the issue might involve downstream calls from `frontend` to dependent services.\n- **Overall Likeliness:** High. The `frontend` service is one of the primary services processing requests (user interactions) that subsequently hit the `controller`.\n\n#### 2. Entity: service.name:cartservice\n- **Indicators (Strength: Strong):**\n - Correspondence of session IDs in the request URLs or logs between controller and cartservice.\n - Mention of cart failures in `frontend` interactions - indicated by error logs involving failed RPC calls to `cartservice`.\n - Logs for service.name:cartservice with messages such as `GetCartAsync called with userId=1d9f48dd`.\n- **Reasoning:** The `/api/cart` endpoint directly involves manipulating or retrieving data from `cartservice`. Given the 500 errors on requests routed via the `controller`, it's likely that `cartservice` might be either causing or being affected by these failures.\n- **Overall Likeliness:** High. Direct involvement of `cartservice` is plausible given the issue is associated specifically with cart interactions.\n\n#### 3. Entity: service.name:frontend-web\n- **Indicators (Strength: Average):**\n - URL referrer and path fragments suggest client-side interactions impact the controller’s ingress.\n - URL fields from both controller logs and frontend-web logs such as `http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart`.\n- **Reasoning:** `frontend-web` represents the client-side application layer. Issues in the client's request construction or timing might be indirectly impacting how the `controller` handles these requests.\n- **Overall Likeliness:** Moderate. While not directly involved in backend processing, interactions originating from the frontend-web could potentially impact the backend flow.\n\n#### 4. Entity: service.name:checkoutservice\n- **Indicators (Strength: Weak):**\n - Shared URL fragments related to the checkout process (`/api/cart` could be an intermediate step).\n - Common use of `sessionId` and `currencyCode` seen in request attributes.\n- **Reasoning:** Though the controller deals directly with cart interactions, completion of cart actions could trigger subsequent processes in `checkoutservice`. Errors during cart operations could thereby propagate issues if mismanaged upstream.\n- **Overall Likeliness:** Low to Moderate. Contextually relevant but perhaps indirectly linked unless specific error propagation is identified.\n\n#### 5. Entity: service.name:coredns\n- **Indicators (Strength: Weak to Average):**\n - DNS logs showing interactions such as `10.244.0.38:45693 - 8080 \"A IN ingress-nginx-controller.ingress-nginx.svc.cluster.local. UDP 74`.\n- **Reasoning:** DNS resolution issues could lead to inability to locate the correct backend service IP for `controller`, causing errors in routing HTTP requests.\n- **Overall Likeliness:** Low. Potential indirect influence but less likely to be the primary cause.\n\n#### Possible Relationship Summary\nGiven these findings:\n\n1. **frontend** and **cartservice** are the most relevant entities with strong indicators of their dependencies and direct involvement in handling requests relevant to the `/api/cart` endpoint. Investigating these services in conjunction with `controller` will likely reveal root causes.\n2. **frontend-web** could be examined for potential client-side initiation issues leading to increased errors, but it remains secondary.\n3. **checkoutservice** may be potentially linked through a sequence of dependencies initiated post-cart operations but is less immediate.\n4. **coredns** could be impacting resolution, yet this remains an unlikely principal cause unless supported by specific DNS errors.\n\nFocus on examining logs and dependencies from `cartservice` and `frontend` to pinpoint exact causes for the reported 500 errors at the `/api/cart` endpoint managed by the controller service.", + "## Analysis and Identification of Related Entities\n\n### Relationship 1: `frontendproxy` (default-my-otel-demo-frontendproxy-8080)\n- **Related entity:** `service.name:frontendproxy`\n- **Indicator strength:** Strong, based on the matching `attributes.upstream.name` field.\n - **Indications:**\n - From `controller` logs: `attributes.upstream.name` = `default-my-otel-demo-frontendproxy-8080`\n - Upstream IP address: `attributes.upstream.address` = `10.244.0.26:8080` in controller logs coinciding with requests that resulted in `500` errors.\n- **Reason:** The `frontendproxy` service routes traffic to the backend services, including the `controller`. Since the `controller` service receives requests and directs traffic to `frontendproxy`, it points to a possible upstream dependency causing the 500 errors during the requests to `/api/cart`.\n- **Overall likeliness:** High. This entity is directly involved since it routes traffic within the system, and its downstream performance or errors reflect on the `controller`.\n\n### Relationship 2: `frontend`\n- **Related entity:** `service.name:frontend`\n- **Indicator strength:** Moderate, observing the infrastructure context and the dependency chain.\n - **Indications:** \n - The `frontend` service is called by the `frontendproxy`, which is indicated as the `attributes.upstream.name` in `controller` logs.\n- **Reason:** In the context provided, the `frontend` communicates with other backend services to process user interactions and might be an upstream dependency for the `controller`. The problem might cascade from `frontendproxy` to `frontend`.\n- **Overall likeliness:** High. This service is critical in handling user interactions, and problems here could cause issue propagation to `controller`.\n\n### Relationship 3: `cartservice`\n- **Related entity:** `service.name:cartservice`\n- **Indicator strength:** Moderate, based on its role in the architecture and likely correlation.\n - **Indications:**\n - The `cartservice` handles shopping cart actions which map the `controller`'s `/api/cart` endpoint.\n - **Reason:** If the `cartservice` has issues, they would cascade to the `controller` /api/cart endpoint that depends on this service for cart management functions.\n- **Overall likeliness:** High. It closely correlates with the endpoint's functionality and possible 500 errors due to backend service inconsistencies.\n\n### Relationship 4: `currencyservice`\n- **Related entity:** `service.name:currencyservice`\n- **Indicator strength:** Weak, contextual dependency but crucial interplay with `cart` operations.\n - **Indications:**\n - Handling currency conversions, indirectly connected to cart operations.\n- **Reason:** The issues might arise if currency conversion fails during cart operations, contributing to the 500 errors in the `controller`.\n- **Overall likeliness:** Moderate. Essential for part of the request chains during cart operations, but primary errors might occur upstream.\n\n### Relationship 5: `productcatalogservice`\n- **Related entity:** `service.name:productcatalogservice`\n- **Indicator strength:** Weak, as no direct log correlation but relevant in the context.\n - **Indications:**\n - Provides product data, indirectly required during cart operations.\n- **Reason:** Cart operations fetching/validating product data might fail, contributing to the `controller` errors when /api/cart requests involve fetching product data.\n- **Overall likeliness:** Moderate. Possible issues here can impact `cartservice` processes and propagate as 500 errors.\n\n### Relationship 6: `frauddetectionservice`\n- **Related entity:** `service.name:frauddetectionservice`\n- **Indicator strength:** Weak, speculative and based more on potential correlation.\n - **Indications:**\n - No specific logs point directly; contextual relevance due to transaction handling.\n- **Reason:** If fraud detection triggers false flags, it can affect cart transactions.\n- **Overall likeliness:** Low. Unlikely direct contributor and more as a consequential involvement in transaction failures.\n\n### Summary\n\nThe `frontendproxy`, `frontend`, and `cartservice` are the most probable related entities with high relevance to the errors indicated in the `controller` service. Investigations should focus on these first, focusing on log patterns and errors cascading through these entities causing the 500 errors on `/api/cart`. Indirect relations like `currencyservice`, `productcatalogservice`, and `frauddetectionservice` can also be explored as part of the broader context.", + "During the investigation of the alert for the `controller` service, we are identifying possible relationships to other entities. We will meticulously examine the evidence from logs, traces, and other relevant data to uncover dependencies and potential causes for the high number of 500 errors on the `/api/cart` endpoint.\n\n### Highly Relevant Entities and Relationships\n\n#### 1. Entity: service.name:frontendproxy\n\n- **Indicators of Evidence**\n - **Strong Indicator**: `attributes.upstream.name: default-my-otel-demo-frontendproxy-8080`\n - **Field Values in Investigated Entity (`controller`)**:\n - `\"attributes.upstream.name\": \"default-my-otel-demo-frontendproxy-8080\"`\n - `\"attributes.upstream.response.status_code\": [\"500\", \"200\", \"308\"]`\n - **Fingerprinting Evidence**:\n - `\"message\": \"10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \\\"POST /api/cart HTTP/1.1\\\" 500 32 \\\"-\\\" \\\"python-requests/2.31.0\\\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\"`\n\n- **Relationship and Context**\n - The `frontendproxy` service acts as the reverse proxy, routing incoming HTTP traffic to different backend services, including the `controller`. The errors appearing in the `controller` log indicate communication issues between the `controller` and the `frontendproxy`.\n\n- **Overall Likeliness**: High\n - Given the primary role of the `frontendproxy` in routing traffic to `controller`, coupled with the direct evidence in the logs, this entity is crucial to the situation at hand.\n\n#### 2. Entity: service.name:frontend\n\n- **Indicators of Evidence**\n - **Average Indicator**: `features.service.name: frontend`\n - **Field Values in Investigated Entity (`controller`)**:\n - `\"attributes.http.request.origin\": \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\"`\n - `\"/api/cart` endpoint related queries`\n\n- **Relationship and Context**:\n - The `frontend` service handles key operations related to user interactions before requests are passed to various backend services, including the `controller`. Issues in `frontend`, like poor handling of requests or incorrect data forwarding, might cascade downstream, resulting in 500 errors in the `controller`.\n\n- **Overall Likeliness**: Medium to High\n - Given the data pathway from user interactions handled by `frontend`, it’s essential to determine if `frontend` anomalies are contributing to the failure in `controller`.\n\n#### 3. Entity: service.name:cartservice\n\n- **Indicators of Evidence**\n - **Average Indicator**: `/api/cart` requests typically involving `cartservice`\n - **Field Values in Investigated Entity (`controller`)**:\n - `500 errors at \"/api/cart\"`\n\n- **Relationship and Context**:\n - The `cartservice` directly manages shopping cart operations over the gRPC protocol. While the HTTP API from `controller` might indicate communication failures with `cartservice`, these errors could also originate from improper data requests or transaction handling within `cartservice`.\n\n- **Overall Likeliness**: High\n - Investigating the interaction with `cartservice` can help distinguish if business logic errors or miscommunication between services lead to repeated 500 errors.\n\n### Moderately Relevant Entities\n\n#### 4. Entity: service.name:loadgenerator\n\n- **Indicators of Evidence**\n - **Weak Indicator**: Simulated high traffic which might put strain on other services causing errors.\n - **Field Values in Investigated Entity (`controller`)**:\n - General logged high traffic instances or increased load around the alert time.\n\n- **Relationship and Context**:\n - The `loadgenerator` mimics external user traffic managed by the Ingress and ultimately passed through nodes like `controller`. Excessive load can manifest as backend service overloads or timeouts, indirectly causing 500 errors in `controller`.\n\n- **Overall Likeliness**: Medium\n - Given the traffic simulation aspect, its role is probable but direct correlation to specific error occurrences in `controller` needs corroboration with other data points.\n\n### Less Likely but Contextually Relevant Entities\n\n#### 5. Entity: service.name:etcd\n\n- **Indicators of Evidence**\n - **Weak Indicator**: General mention in logs for Ingress control plane activity\n - **Field Values in Investigated Entity (`controller`)**:\n - `\"response count\": 0`, signifying Ingress data handling might be amiss during high traffic\n\n- **Relationship and Context**:\n - Possible indirect impact wherein control plane malfunctions or data inconsistencies in the `etcd` state can propagate as issues dispersed across services interacting via Ingress, including `controller`.\n\n- **Overall Likeliness**: Medium\n - This needs verifying integration with upstream Ingress state logs to validate contributions to observed `controller` issues.\n\n### Further Investigations and Likelihood Summary\n\nBased on logs and identified relationships, we will prioritize looking into:\n\n1. **Frontendproxy** - Checking its health, routing efficiency, and connections to `controller`.\n2. **Frontend** - Verifying its data handling during user interactions that lead to API cart errors.\n3. **Cartservice** - Ensuring logical transactions and gRPC communications, ruling out core service bugs.\n\nWe will cross-reference error logs, API traces, and dependency interactions tightly intertwined with the `controller` to form a comprehensive approach to resolution." + ], + "kbEntries": [ + { + "id": "System architecture", + "text": "The architecture described here outlines a microservices-based system, where each service is implemented in a distinct programming language and communicates via gRPC, HTTP, or TCP. This system is designed to handle simulated user traffic, supported by a variety of interconnected services and components.\n\n### System Architecture\n\n1. **`loadgenerator`** - Simulates external user traffic by sending HTTP requests, which are managed by an Nginx ingress controller. This ingress directs traffic to the `frontendproxy` service.\n\n2. **`frontendproxy` (Envoy)** - Acts as a reverse proxy, routing incoming traffic from `loadgenerator` to `frontend`.\n\n3. **`frontend` (Node.js)** - The core service for user interactions, receiving HTTP traffic from `frontendproxy` and interfacing with various backend services to fulfill requests.\n\n4. **`frontend-web` (RUM)** - A Real User Monitoring (RUM) layer that runs in the user's browser, enabling insights into end-user experiences and frontend performance.\n\n5. **`adservice`** - Delivers advertisements to the `frontend` using gRPC, enhancing the user experience with relevant ad content.\n\n6. **`cartservice`** - Manages shopping cart data, including adding and removing items. It communicates over gRPC and leverages a Redis cache for data persistence.\n\n7. **`currencyservice`** - Handles currency conversions and facilitates interactions between `cartservice` and `checkoutservice` over gRPC.\n\n8. **`checkoutservice`** - Coordinates the checkout process, calling various services for payments, shipping, and emails. It utilizes both gRPC and HTTP protocols to aggregate the necessary information for order completion.\n\n9. **`emailservice`** - Sends order confirmation emails to users via gRPC, triggered by interactions with `checkoutservice`.\n\n10. **`productcatalogservice`** - Maintains the product catalog, storing details about available items and providing this data to other services via gRPC.\n\n11. **`recommendationservice`** - Generates personalized product recommendations, accessed by `frontend` over gRPC.\n\n12. **`shippingservice`** - Manages shipping information, providing essential data to `checkoutservice` over gRPC.\n\n13. **`quoteservice`** - Supplies shipping quotes over HTTP, which are accessed by `shippingservice` to estimate shipping costs.\n\n14. **`paymentservice`** - Processes payment transactions through gRPC, enabling secure and efficient payments for `checkoutservice`.\n\n15. **`accountingservice`** - Responsible for recording transactions, it connects to a Kafka queue and interacts over TCP.\n\n16. **`frauddetectionservice`** - Monitors orders for potential fraud, also interfacing with the Kafka queue over TCP to receive relevant transaction data.\n\n17. **`imageprovider` (Nginx)** - Serves static images for the frontend interface, accessible over HTTP.\n\n18. **`queue` (Kafka)** - Acts as a central message broker, facilitating communication between `accountingservice` and `frauddetectionservice`.\n\n### Key Components\nThe system is structured to enable robust, distributed communication across services, allowing each component to focus on a specific aspect of the user experience or business logic. The ingress controller, in particular, plays a critical role in directing traffic, ensuring that incoming requests from `loadgenerator` are correctly routed through `frontendproxy` and into the system’s core services.\n\nThis architecture ensures that the system can handle high traffic loads and provides a modular, flexible framework to meet user demands while monitoring for performance and security.\n", + "tokens": 733, + "score": 3 + } + ] + } + } + }, + { + "role": "assistant", + "content": "", + "toolCalls": [ + { + "toolCallId": "call_DB13TclS3Gc9zUgCrWLrvDuu", + "function": { + "name": "observe", + "arguments": { + "observe": true + } + } + } + ] + }, + { + "name": "observe", + "response": { + "content": "### Context and Ongoing Investigation\n\nThe initial context indicated that the `controller` service was experiencing an alert due to a high number of `500 Internal Server Errors` on the `/api/cart` endpoint. The error rate was significantly high (98.78%), suggesting a severe issue within the `controller` service or its dependencies. During the initial investigation of the `controller` service, it was determined that the errors resulted from HTTP POST requests to the `/api/cart` endpoint emanating from a client using `python-requests/2.31.0`.\n\n### Key Observations and Analysis from Investigations\n\n#### 1. `controller` Service Characteristics\n\n- **Environment**: The `controller` service runs in a Kubernetes environment (`ingress-nginx` namespace), with the pod named `ingress-nginx-controller-bc57996ff-r6blf` on node `minikube`.\n- **Functionality**: Acts as an Ingress controller managing HTTP requests routing to backend services including the `frontendproxy`.\n- **Observations**:\n - Pattern showing consistent `500 Internal Server Error` for POST requests to `/api/cart`.\n - Most of these errors originate from requests routed through the `frontendproxy`.\n\n#### 2. Related Entities and Their Possible Impact\n\nEntities that closely interact with `controller` or are otherwise significant to `controller’s` functionality were assessed:\n\n1. **`frontend`**:\n - Interacts with the `controller` for routing requests.\n - Downstream dependencies and interactions might propagate errors.\n\n2. **`cartservice`**:\n - Directly involved in handling requests for the `/api/cart` endpoint.\n - Any issues here could cause `controller` errors.\n\n3. **`frontend-web`**:\n - Client-side interactions leading to requests to `/api/cart` via `controller`.\n - Potential timing or construction issues in requests.\n\n4. **Other entities (`checkoutservice`, `coredns`)**:\n - Indirectly related with varying degrees of confidence on impact.\n\n### Timeline of Significant Events\n\n1. **2024-11-02T10:56:00.000Z**:\n - **Observation**:\n - 6 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - Example Log:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n\n2. **2024-11-02T10:56:30.000Z**:\n - **Observation**:\n - 2 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - Example Log:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:35 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n\n3. **2024-11-02T10:56:42.498Z**:\n - **Alert Triggered**:\n - High number of 500 errors for the /api/cart endpoint. Error rate is 98.78%, above the threshold of 1% over a 1-minute duration.\n\n### Context and Reasoning\n\nThe `controller` service functions as the main ingress gateway, routing HTTP requests to the appropriate backend services including the `frontendproxy`, and more specifically the downstream `cartservice`. The nature of the high error rates observed at `/api/cart`, particularly for POST requests, suggests the problem could originate either at the `cartservice` backend or along the routing path between `controller`, `frontendproxy`, and `cartservice`.\n\n#### Potential Root Causes\n- **Backend Service Issue**:\n Given the direct involvement of `cartservice` in `/api/cart` operations, issues here could easily propagate into repeated 500 errors seen by the `controller`.\n- **Routing/Network Issues**:\n Communication path issues (e.g., `frontendproxy` to `cartservice`) causing errors in routing HTTP requests could result in these errors.\n\n### Next Steps\n\nGiven the strong patterns:\n\n1. **Investigate `cartservice`**:\n - As the downstream service handling `/api/cart` requests, issues here would directly contribute to the observed error patterns in `controller`.\n\n2. **Investigate `frontendproxy`**:\n - Since requests are routed through this service to `cartservice`, any routing or network issues here might also contribute to the errors.\n\nUpon investigating both entities, performing more detailed inspections of the logs and interactions might reveal issues that propagate these failures. This should help isolate the fault in the communication path or within the specific services causing the `500 Internal Server Errors` seen in `controller`.\n\n**Entities to Investigate Next**:\n- **cartservice**\n- **frontendproxy**\n\nThese investigations will provide further insights into whether the root cause is localized to `cartservice` itself or issues are emergent from the routing path involving `frontendproxy`." + }, + "data": { + "content": "### Context and Ongoing Investigation\n\nThe initial context indicated that the `controller` service was experiencing an alert due to a high number of `500 Internal Server Errors` on the `/api/cart` endpoint. The error rate was significantly high (98.78%), suggesting a severe issue within the `controller` service or its dependencies. During the initial investigation of the `controller` service, it was determined that the errors resulted from HTTP POST requests to the `/api/cart` endpoint emanating from a client using `python-requests/2.31.0`.\n\n### Key Observations and Analysis from Investigations\n\n#### 1. `controller` Service Characteristics\n\n- **Environment**: The `controller` service runs in a Kubernetes environment (`ingress-nginx` namespace), with the pod named `ingress-nginx-controller-bc57996ff-r6blf` on node `minikube`.\n- **Functionality**: Acts as an Ingress controller managing HTTP requests routing to backend services including the `frontendproxy`.\n- **Observations**:\n - Pattern showing consistent `500 Internal Server Error` for POST requests to `/api/cart`.\n - Most of these errors originate from requests routed through the `frontendproxy`.\n\n#### 2. Related Entities and Their Possible Impact\n\nEntities that closely interact with `controller` or are otherwise significant to `controller’s` functionality were assessed:\n\n1. **`frontend`**:\n - Interacts with the `controller` for routing requests.\n - Downstream dependencies and interactions might propagate errors.\n\n2. **`cartservice`**:\n - Directly involved in handling requests for the `/api/cart` endpoint.\n - Any issues here could cause `controller` errors.\n\n3. **`frontend-web`**:\n - Client-side interactions leading to requests to `/api/cart` via `controller`.\n - Potential timing or construction issues in requests.\n\n4. **Other entities (`checkoutservice`, `coredns`)**:\n - Indirectly related with varying degrees of confidence on impact.\n\n### Timeline of Significant Events\n\n1. **2024-11-02T10:56:00.000Z**:\n - **Observation**:\n - 6 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - Example Log:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n\n2. **2024-11-02T10:56:30.000Z**:\n - **Observation**:\n - 2 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - Example Log:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:35 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n\n3. **2024-11-02T10:56:42.498Z**:\n - **Alert Triggered**:\n - High number of 500 errors for the /api/cart endpoint. Error rate is 98.78%, above the threshold of 1% over a 1-minute duration.\n\n### Context and Reasoning\n\nThe `controller` service functions as the main ingress gateway, routing HTTP requests to the appropriate backend services including the `frontendproxy`, and more specifically the downstream `cartservice`. The nature of the high error rates observed at `/api/cart`, particularly for POST requests, suggests the problem could originate either at the `cartservice` backend or along the routing path between `controller`, `frontendproxy`, and `cartservice`.\n\n#### Potential Root Causes\n- **Backend Service Issue**:\n Given the direct involvement of `cartservice` in `/api/cart` operations, issues here could easily propagate into repeated 500 errors seen by the `controller`.\n- **Routing/Network Issues**:\n Communication path issues (e.g., `frontendproxy` to `cartservice`) causing errors in routing HTTP requests could result in these errors.\n\n### Next Steps\n\nGiven the strong patterns:\n\n1. **Investigate `cartservice`**:\n - As the downstream service handling `/api/cart` requests, issues here would directly contribute to the observed error patterns in `controller`.\n\n2. **Investigate `frontendproxy`**:\n - Since requests are routed through this service to `cartservice`, any routing or network issues here might also contribute to the errors.\n\nUpon investigating both entities, performing more detailed inspections of the logs and interactions might reveal issues that propagate these failures. This should help isolate the fault in the communication path or within the specific services causing the `500 Internal Server Errors` seen in `controller`.\n\n**Entities to Investigate Next**:\n- **cartservice**\n- **frontendproxy**\n\nThese investigations will provide further insights into whether the root cause is localized to `cartservice` itself or issues are emergent from the routing path involving `frontendproxy`.", + "investigations": [ + { + "attachments": { + "alerts": [ + { + "kibana.alert.reason": "500 Errors is 98.78049, above the threshold of 1. (duration: 1 min, data view: otel_logs_data (Automated by Demo CLI), group: controller,/api/cart)", + "kibana.alert.evaluation.values": [ + 98.78048780487805 + ], + "kibana.alert.evaluation.threshold": [ + 1 + ], + "kibana.alert.group": [ + { + "field": "service.name", + "value": "controller" + }, + { + "field": "url.path", + "value": "/api/cart" + } + ], + "tags": [ + "demo", + "cli-created" + ], + "service.name": "controller", + "kibana.alert.rule.category": "Custom threshold", + "kibana.alert.rule.consumer": "logs", + "kibana.alert.rule.execution.uuid": "4187827d-686e-4098-98e3-21e13495798e", + "kibana.alert.rule.name": "NGINX 500s", + "kibana.alert.rule.parameters": { + "criteria": [ + { + "comparator": ">", + "metrics": [ + { + "name": "A", + "filter": "http.response.status_code:*", + "aggType": "count" + }, + { + "name": "B", + "filter": "http.response.status_code>=500", + "aggType": "count" + } + ], + "threshold": [ + 1 + ], + "timeSize": 1, + "timeUnit": "m", + "equation": "(B/A) * 100", + "label": "500 Errors" + } + ], + "alertOnNoData": false, + "alertOnGroupDisappear": false, + "searchConfiguration": { + "query": { + "query": "k8s.namespace.name: \"ingress-nginx\" AND url.path: /api/*", + "language": "kuery" + }, + "index": "otel_logs_data" + }, + "groupBy": [ + "service.name", + "url.path" + ] + }, + "kibana.alert.rule.producer": "observability", + "kibana.alert.rule.revision": 0, + "kibana.alert.rule.rule_type_id": "observability.rules.custom_threshold", + "kibana.alert.rule.tags": [ + "demo", + "cli-created" + ], + "kibana.alert.rule.uuid": "9055220c-8fb1-4f9f-be7c-0a33eb2bafc5", + "kibana.space_ids": [ + "default" + ], + "@timestamp": "2024-11-02T10:56:42.498Z", + "event.action": "open", + "event.kind": "signal", + "kibana.alert.rule.execution.timestamp": "2024-11-02T10:56:42.498Z", + "kibana.alert.action_group": "custom_threshold.fired", + "kibana.alert.flapping": false, + "kibana.alert.flapping_history": [ + true + ], + "kibana.alert.instance.id": "controller,/api/cart", + "kibana.alert.maintenance_window_ids": [], + "kibana.alert.consecutive_matches": 1, + "kibana.alert.status": "active", + "kibana.alert.uuid": "b97a1b20-d14b-4835-b948-bd7a423284eb", + "kibana.alert.severity_improving": false, + "kibana.alert.workflow_status": "open", + "kibana.alert.duration.us": 0, + "kibana.alert.start": "2024-11-02T10:56:42.498Z", + "kibana.alert.time_range": { + "gte": "2024-11-02T10:56:42.498Z" + }, + "kibana.version": "9.0.0" + }, + { + "kibana.alert.reason": "500 Errors is 100, above the threshold of 1. (duration: 1 min, data view: otel_logs_data (Automated by Demo CLI), group: controller,/api/checkout)", + "kibana.alert.evaluation.values": [ + 100 + ], + "kibana.alert.evaluation.threshold": [ + 1 + ], + "kibana.alert.group": [ + { + "field": "service.name", + "value": "controller" + }, + { + "field": "url.path", + "value": "/api/checkout" + } + ], + "tags": [ + "demo", + "cli-created" + ], + "service.name": "controller", + "kibana.alert.rule.category": "Custom threshold", + "kibana.alert.rule.consumer": "logs", + "kibana.alert.rule.execution.uuid": "4187827d-686e-4098-98e3-21e13495798e", + "kibana.alert.rule.name": "NGINX 500s", + "kibana.alert.rule.parameters": { + "criteria": [ + { + "comparator": ">", + "metrics": [ + { + "name": "A", + "filter": "http.response.status_code:*", + "aggType": "count" + }, + { + "name": "B", + "filter": "http.response.status_code>=500", + "aggType": "count" + } + ], + "threshold": [ + 1 + ], + "timeSize": 1, + "timeUnit": "m", + "equation": "(B/A) * 100", + "label": "500 Errors" + } + ], + "alertOnNoData": false, + "alertOnGroupDisappear": false, + "searchConfiguration": { + "query": { + "query": "k8s.namespace.name: \"ingress-nginx\" AND url.path: /api/*", + "language": "kuery" + }, + "index": "otel_logs_data" + }, + "groupBy": [ + "service.name", + "url.path" + ] + }, + "kibana.alert.rule.producer": "observability", + "kibana.alert.rule.revision": 0, + "kibana.alert.rule.rule_type_id": "observability.rules.custom_threshold", + "kibana.alert.rule.tags": [ + "demo", + "cli-created" + ], + "kibana.alert.rule.uuid": "9055220c-8fb1-4f9f-be7c-0a33eb2bafc5", + "kibana.space_ids": [ + "default" + ], + "@timestamp": "2024-11-02T10:56:42.498Z", + "event.action": "open", + "event.kind": "signal", + "kibana.alert.rule.execution.timestamp": "2024-11-02T10:56:42.498Z", + "kibana.alert.action_group": "custom_threshold.fired", + "kibana.alert.flapping": false, + "kibana.alert.flapping_history": [ + true + ], + "kibana.alert.instance.id": "controller,/api/checkout", + "kibana.alert.maintenance_window_ids": [], + "kibana.alert.consecutive_matches": 1, + "kibana.alert.status": "active", + "kibana.alert.uuid": "78472a9c-63a2-41ba-9812-47cebd48d833", + "kibana.alert.severity_improving": false, + "kibana.alert.workflow_status": "open", + "kibana.alert.duration.us": 0, + "kibana.alert.start": "2024-11-02T10:56:42.498Z", + "kibana.alert.time_range": { + "gte": "2024-11-02T10:56:42.498Z" + }, + "kibana.version": "9.0.0" + } + ], + "slos": [], + "analysis": { + "total": 56181, + "sampled": 1000, + "fields": [ + "@timestamp:date - 994 distinct values", + "app.label.component:keyword - 1 distinct values (`controller`)", + "attributes.event.name.text:text - 1 distinct values (`nginx.ingress.controller.error`)", + "attributes.event.name:keyword - 1 distinct values (`nginx.ingress.controller.error`)", + "attributes.http.request.id:keyword - 1000 distinct values (`87c973a800b3bd34d3679f0a12263c40`, `ee99fada68450d77be61deaae1f04008`, `80312e7e98e9171c8010e442784e7a04`, `a931c4f7d964f91f0a0750f3221dfa50`, `8c2e99672e225b279a7741671c976c93`, `eed4ff70db044f81adeda15bc1f3ad4c`, `dd730f83b894fc2adedfaf950cf5884c`, `4e35653560a824d6693d1e024906e9ce`, `36d6dfae2fe5d6fecbfaadd4fac5bde1`, `43c774bea806c21478f7ee57a449222b`, 990 more values)", + "attributes.http.request.method:keyword - 2 distinct values (`POST`, `GET`)", + "attributes.http.request.referrer:keyword - 2 distinct values (`http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/`, `http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart`)", + "attributes.http.request.size:long - 61 distinct values (`351`, `374`, `373`, `809`, `383`, `506`, `342`, `350`, `538`, `479`, 51 more values)", + "attributes.http.request.time:float - 90 distinct values (`3.172`, `1.103`, `0.053`, `4.434`, `0.019`, `3.328`, `1.01`, `3.197`, `3.133`, `2.566`, 80 more values)", + "attributes.http.response.body.size:long - 130 distinct values (`1144`, `1120`, `1024`, `19`, `1336`, `1198`, `1070`, `111157`, `111163`, `1271`, 120 more values)", + "attributes.http.response.status_code:long - 4 distinct values (`499`, `500`, `308`, `200`)", + "attributes.http.version:keyword - 1 distinct values (`1.1`)", + "attributes.log.file.path.text:text - 1 distinct values (`/var/log/pods/ingress-nginx_ingress-nginx-controller-bc57996ff-r6blf_35200065-5cde-4a7e-9018-0f0a4e2c5bb4/controller/0.log`)", + "attributes.log.file.path:keyword - 1 distinct values (`/var/log/pods/ingress-nginx_ingress-nginx-controller-bc57996ff-r6blf_35200065-5cde-4a7e-9018-0f0a4e2c5bb4/controller/0.log`)", + "attributes.log.iostream:keyword - 1 distinct values (`stdout`)", + "attributes.network.protocol.name.text:text - 1 distinct values (`http`)", + "attributes.network.protocol.name:keyword - 1 distinct values (`http`)", + "attributes.source.address:keyword - 1 distinct values (`10.244.0.38`)", + "attributes.upstream.address:keyword - 1 distinct values (`10.244.0.26:8080`)", + "attributes.upstream.name.text:text - 1 distinct values (`default-my-otel-demo-frontendproxy-8080`)", + "attributes.upstream.name:keyword - 1 distinct values (`default-my-otel-demo-frontendproxy-8080`)", + "attributes.upstream.response.size:keyword - 117 distinct values (`1149`, `1120`, `1029`, `19`, `1336`, `1203`, `1070`, `1276`, `1356`, `1105`, 107 more values)", + "attributes.upstream.response.status_code:keyword - 3 distinct values (`500`, `308`, `200`)", + "attributes.upstream.response.time:keyword - 89 distinct values (`3.171`, `1.007`, `1.103`, `0.053`, `4.434`, `3.328`, `1.010`, `3.197`, `3.132`, `2.565`, 79 more values)", + "attributes.url.domain:keyword - 2 distinct values (`icons`, ``)", + "attributes.url.extension:keyword - 7 distinct values (`css`, `Service/ResolveAll`, `Service/EventStream`, `png`, `svg`, `jpg`, `js`)", + "attributes.url.original.text:text - 167 distinct values (`/api/recommendations?productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, 165 more values)", + "attributes.url.original:keyword - 167 distinct values (`/api/recommendations?productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `/api/recommendations?productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `/api/cart?sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `/api/recommendations?productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `/api/data/`, `/api/cart?sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `/api/recommendations?productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `/api/recommendations?productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `/api/cart?sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, 157 more values)", + "attributes.url.path:keyword - 43 distinct values (`/api/products/0PUK6V6EV0`, `/api/products/9SIQT8TOJO`, `/api/products/LS4PSXUNUM`, `/api/data/`, `/api/products/L9ECAV7KIM`, `/api/data`, `/api/products/66VCHSJNUP`, `/api/products/2ZYFJ3GM2N`, `/cart`, `/images/products/NationalParkFoundationExplorascope.jpg`, 33 more values)", + "attributes.url.query:keyword - 126 distinct values (`productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, `productIds=&sessionId=0c122e28-e8fb-4ab5-9889-ac797b5f17cf¤cyCode=USD`, 116 more values)", + "attributes.url.scheme:keyword - 1 distinct values (``)", + "attributes.user_agent.name.text:text - 2 distinct values (`Python Requests`, `HeadlessChrome`)", + "attributes.user_agent.name:keyword - 2 distinct values (`Python Requests`, `HeadlessChrome`)", + "attributes.user_agent.original.text:text - 2 distinct values (`python-requests/2.31.0`, `Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36`)", + "attributes.user_agent.original:keyword - 2 distinct values (`python-requests/2.31.0`, `Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36`)", + "attributes.user_agent.version:keyword - 2 distinct values (`2.31`, `120.0.6099`)", + "body.text:text - 1000 distinct values (`10.244.0.38 - - [02/Nov/2024:10:37:56 +0000] \"GET /api/currency? HTTP/1.1\" 200 199 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 598 0.007 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 199 0.007 200 87c973a800b3bd34d3679f0a12263c40\n`, `10.244.0.38 - - [02/Nov/2024:10:46:11 +0000] \"GET /_next/static/chunks/pages/_app-c923ae378a182a07.js HTTP/1.1\" 200 111150 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 484 0.017 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 111008 0.018 200 ee99fada68450d77be61deaae1f04008\n`, 998 more values)", + "data_stream.dataset:keyword - 1 distinct values (`nginx_ingress_controller.error.otel`)", + "data_stream.namespace:keyword - 1 distinct values (`default`)", + "data_stream.type:keyword - 1 distinct values (`logs`)", + "deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "dropped_attributes_count:long - 1 distinct values (`0`)", + "event.dataset:keyword - 1 distinct values (`nginx_ingress_controller.error.otel`)", + "event.name:keyword - 1 distinct values (`nginx.ingress.controller.error`)", + "host.arch:keyword - 1 distinct values (`arm64`)", + "host.architecture:keyword - 1 distinct values (`arm64`)", + "host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "host.cpu.family:keyword - 1 distinct values (``)", + "host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "host.cpu.model.name:keyword - 1 distinct values (``)", + "host.cpu.stepping:keyword - 1 distinct values (`0`)", + "host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "host.os.full:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "host.os.platform:keyword - 1 distinct values (`linux`)", + "http.request.id:keyword - 1000 distinct values (`87c973a800b3bd34d3679f0a12263c40`, `ee99fada68450d77be61deaae1f04008`, `80312e7e98e9171c8010e442784e7a04`, `a931c4f7d964f91f0a0750f3221dfa50`, `8c2e99672e225b279a7741671c976c93`, `eed4ff70db044f81adeda15bc1f3ad4c`, `dd730f83b894fc2adedfaf950cf5884c`, `4e35653560a824d6693d1e024906e9ce`, `36d6dfae2fe5d6fecbfaadd4fac5bde1`, `43c774bea806c21478f7ee57a449222b`, 990 more values)", + "http.request.method:keyword - 2 distinct values (`POST`, `GET`)", + "http.request.referrer:keyword - 2 distinct values (`http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/`, `http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart`)", + "http.request.size:long - 61 distinct values (`351`, `374`, `373`, `809`, `383`, `506`, `342`, `350`, `538`, `479`, 51 more values)", + "http.request.time:float - 90 distinct values (`3.172`, `1.103`, `0.053`, `4.434`, `0.019`, `3.328`, `1.01`, `3.197`, `3.133`, `2.566`, 80 more values)", + "http.response.body.size:long - 130 distinct values (`1144`, `1120`, `1024`, `19`, `1336`, `1198`, `1070`, `111157`, `111163`, `1271`, 120 more values)", + "http.response.status_code:long - 4 distinct values (`499`, `500`, `308`, `200`)", + "http.version:keyword - 1 distinct values (`1.1`)", + "k8s.container.name:keyword - 1 distinct values (`controller`)", + "k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "k8s.deployment.name:keyword - 1 distinct values (`ingress-nginx-controller`)", + "k8s.namespace.name:keyword - 1 distinct values (`ingress-nginx`)", + "k8s.node.name:keyword - 1 distinct values (`minikube`)", + "k8s.pod.name:keyword - 1 distinct values (`ingress-nginx-controller-bc57996ff-r6blf`)", + "k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T08:56:56Z`)", + "k8s.pod.uid:keyword - 1 distinct values (`35200065-5cde-4a7e-9018-0f0a4e2c5bb4`)", + "kubernetes.deployment.name:keyword - 1 distinct values (`ingress-nginx-controller`)", + "kubernetes.namespace:keyword - 1 distinct values (`ingress-nginx`)", + "kubernetes.node.name:keyword - 1 distinct values (`minikube`)", + "kubernetes.pod.name:keyword - 1 distinct values (`ingress-nginx-controller-bc57996ff-r6blf`)", + "kubernetes.pod.uid:keyword - 1 distinct values (`35200065-5cde-4a7e-9018-0f0a4e2c5bb4`)", + "log.file.path:keyword - 1 distinct values (`/var/log/pods/ingress-nginx_ingress-nginx-controller-bc57996ff-r6blf_35200065-5cde-4a7e-9018-0f0a4e2c5bb4/controller/0.log`)", + "log.iostream:keyword - 1 distinct values (`stdout`)", + "message:text - 1000 distinct values (`10.244.0.38 - - [02/Nov/2024:10:37:56 +0000] \"GET /api/currency? HTTP/1.1\" 200 199 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 598 0.007 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 199 0.007 200 87c973a800b3bd34d3679f0a12263c40\n`, `10.244.0.38 - - [02/Nov/2024:10:46:11 +0000] \"GET /_next/static/chunks/pages/_app-c923ae378a182a07.js HTTP/1.1\" 200 111150 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 484 0.017 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 111008 0.018 200 ee99fada68450d77be61deaae1f04008\n`, 998 more values)", + "network.protocol.name:keyword - 1 distinct values (`http`)", + "observed_timestamp:date_nanos - 1000 distinct values (`2024-11-02T10:37:56.158731715Z`, `2024-11-02T10:46:11.961228541Z`, `2024-11-02T10:38:02.758802635Z`, `2024-11-02T10:54:51.563521629Z`, `2024-11-02T10:37:05.149442469Z`, `2024-11-02T10:49:01.961126259Z`, `2024-11-02T10:56:19.96308167Z`, `2024-11-02T10:42:06.760264887Z`, `2024-11-02T10:49:45.76210446Z`, `2024-11-02T10:54:02.562840801Z`, 990 more values)", + "os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.app.label.component:keyword - 1 distinct values (`controller`)", + "resource.attributes.deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "resource.attributes.host.arch:keyword - 1 distinct values (`arm64`)", + "resource.attributes.host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "resource.attributes.host.cpu.family:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "resource.attributes.host.cpu.model.name.text:text - 1 distinct values (``)", + "resource.attributes.host.cpu.model.name:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.stepping:keyword - 1 distinct values (`0`)", + "resource.attributes.host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "resource.attributes.host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "resource.attributes.host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "resource.attributes.host.name:keyword - 1 distinct values (`otel-daemonset-opentelemetry-collector-agent-7jlpk`)", + "resource.attributes.k8s.container.name.text:text - 1 distinct values (`controller`)", + "resource.attributes.k8s.container.name:keyword - 1 distinct values (`controller`)", + "resource.attributes.k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "resource.attributes.k8s.deployment.name:keyword - 1 distinct values (`ingress-nginx-controller`)", + "resource.attributes.k8s.namespace.name:keyword - 1 distinct values (`ingress-nginx`)", + "resource.attributes.k8s.node.name:keyword - 1 distinct values (`minikube`)", + "resource.attributes.k8s.pod.name:keyword - 1 distinct values (`ingress-nginx-controller-bc57996ff-r6blf`)", + "resource.attributes.k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T08:56:56Z`)", + "resource.attributes.k8s.pod.uid:keyword - 1 distinct values (`35200065-5cde-4a7e-9018-0f0a4e2c5bb4`)", + "resource.attributes.os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "resource.attributes.os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.service.name.text:text - 1 distinct values (`controller`)", + "resource.attributes.service.name:keyword - 1 distinct values (`controller`)", + "resource.dropped_attributes_count:long - 1 distinct values (`0`)", + "resource.schema_url:keyword - 1 distinct values (`https://opentelemetry.io/schemas/1.6.1`)", + "scope.dropped_attributes_count:long - 1 distinct values (`0`)", + "service.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "service.name:keyword - 1 distinct values (`controller`)", + "severity_number:byte - 1 distinct values (`0`)", + "source.address:keyword - 1 distinct values (`10.244.0.38`)", + "upstream.address:keyword - 1 distinct values (`10.244.0.26:8080`)", + "upstream.name:keyword - 1 distinct values (`default-my-otel-demo-frontendproxy-8080`)", + "upstream.response.size:keyword - 117 distinct values (`1149`, `1120`, `1029`, `19`, `1336`, `1203`, `1070`, `1276`, `1356`, `1105`, 107 more values)", + "upstream.response.status_code:keyword - 3 distinct values (`500`, `308`, `200`)", + "upstream.response.time:keyword - 89 distinct values (`3.171`, `1.007`, `1.103`, `0.053`, `4.434`, `3.328`, `1.010`, `3.197`, `3.132`, `2.565`, 79 more values)", + "url.domain:keyword - 2 distinct values (`icons`, ``)", + "url.extension:keyword - 7 distinct values (`css`, `Service/ResolveAll`, `Service/EventStream`, `png`, `svg`, `jpg`, `js`)", + "url.original:keyword - 167 distinct values (`/api/recommendations?productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `/api/recommendations?productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `/api/cart?sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `/api/recommendations?productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `/api/data/`, `/api/cart?sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `/api/recommendations?productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `/api/recommendations?productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `/api/cart?sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, 157 more values)", + "url.path:keyword - 43 distinct values (`/api/products/0PUK6V6EV0`, `/api/products/9SIQT8TOJO`, `/api/products/LS4PSXUNUM`, `/api/data/`, `/api/products/L9ECAV7KIM`, `/api/data`, `/api/products/66VCHSJNUP`, `/api/products/2ZYFJ3GM2N`, `/cart`, `/images/products/NationalParkFoundationExplorascope.jpg`, 33 more values)", + "url.query:keyword - 126 distinct values (`productIds=&sessionId=cc71f7a4-0303-4404-8864-820628e21ca0¤cyCode=USD`, `sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF`, `productIds=&sessionId=389794a9-8298-4921-a2fd-523803ed73c3¤cyCode=`, `sessionId=140befa2-624a-4e98-a1c2-fa9d9ccbfbdd¤cyCode=`, `productIds=&sessionId=4cbd2d72-6719-4619-b0a8-09415f9ea500¤cyCode=USD`, `sessionId=b9f19d90-1824-463c-b9f6-95c894a8fc64¤cyCode=`, `productIds=&sessionId=933d52cf-c574-49e7-8432-86f958764dbe¤cyCode=`, `productIds=&sessionId=213624a6-bf31-46c4-aa67-8e2c102a8763¤cyCode=USD`, `sessionId=221a8b46-29b7-4d66-9536-62e1a0d3ad75¤cyCode=CHF`, `productIds=&sessionId=0c122e28-e8fb-4ab5-9889-ac797b5f17cf¤cyCode=USD`, 116 more values)", + "url.scheme:keyword - 1 distinct values (``)", + "user_agent.name:keyword - 2 distinct values (`Python Requests`, `HeadlessChrome`)", + "user_agent.original:keyword - 2 distinct values (`python-requests/2.31.0`, `Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36`)", + "user_agent.version:keyword - 2 distinct values (`2.31`, `120.0.6099`)" + ] + }, + "ownPatterns": [ + { + "field": "message", + "count": 54850, + "pattern": "HTTP/1.1 Mozilla/5.0 X11 Linux aarch64 AppleWebKit/537.36 KHTML like Gecko HeadlessChrome/120.0.6099.28 Safari/537.36 default-my-otel-demo-frontendproxy-8080", + "regex": ".*?HTTP/1\\.1.+?Mozilla/5\\.0.+?X11.+?Linux.+?aarch64.+?AppleWebKit/537\\.36.+?KHTML.+?like.+?Gecko.+?HeadlessChrome/120\\.0\\.6099\\.28.+?Safari/537\\.36.+?default-my-otel-demo-frontendproxy-8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:54:54 +0000] \"GET /icons/Chevron.svg HTTP/1.1\" 200 805 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 508 0.001 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 810 0.001 200 8693bfefd0668ca27fff0e929785a2c5\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:54:54 +0000] \"GET /icons/Chevron.svg HTTP/1.1\" 200 805 \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/\" \"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099.28 Safari/537.36\" 508 0.001 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 810 0.001 200 8693bfefd0668ca27fff0e929785a2c5\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.057Z", + "lastOccurrence": "2024-11-02T10:56:59.420Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 1385 + }, + { + "x": 1730543820000, + "y": 1172 + }, + { + "x": 1730543850000, + "y": 1520 + }, + { + "x": 1730543880000, + "y": 1312 + }, + { + "x": 1730543910000, + "y": 986 + }, + { + "x": 1730543940000, + "y": 1030 + }, + { + "x": 1730543970000, + "y": 1248 + }, + { + "x": 1730544000000, + "y": 1395 + }, + { + "x": 1730544030000, + "y": 1371 + }, + { + "x": 1730544060000, + "y": 1289 + }, + { + "x": 1730544090000, + "y": 1467 + }, + { + "x": 1730544120000, + "y": 1223 + }, + { + "x": 1730544150000, + "y": 1429 + }, + { + "x": 1730544180000, + "y": 1329 + }, + { + "x": 1730544210000, + "y": 1224 + }, + { + "x": 1730544240000, + "y": 1424 + }, + { + "x": 1730544270000, + "y": 1409 + }, + { + "x": 1730544300000, + "y": 1405 + }, + { + "x": 1730544330000, + "y": 1322 + }, + { + "x": 1730544360000, + "y": 1326 + }, + { + "x": 1730544390000, + "y": 1416 + }, + { + "x": 1730544420000, + "y": 1391 + }, + { + "x": 1730544450000, + "y": 1320 + }, + { + "x": 1730544480000, + "y": 1384 + }, + { + "x": 1730544510000, + "y": 1457 + }, + { + "x": 1730544540000, + "y": 1415 + }, + { + "x": 1730544570000, + "y": 1386 + }, + { + "x": 1730544600000, + "y": 1337 + }, + { + "x": 1730544630000, + "y": 1315 + }, + { + "x": 1730544660000, + "y": 1259 + }, + { + "x": 1730544690000, + "y": 1403 + }, + { + "x": 1730544720000, + "y": 1352 + }, + { + "x": 1730544750000, + "y": 1396 + }, + { + "x": 1730544780000, + "y": 1325 + }, + { + "x": 1730544810000, + "y": 1365 + }, + { + "x": 1730544840000, + "y": 1387 + }, + { + "x": 1730544870000, + "y": 1414 + }, + { + "x": 1730544900000, + "y": 1210 + }, + { + "x": 1730544930000, + "y": 1344 + }, + { + "x": 1730544960000, + "y": 1444 + }, + { + "x": 1730544990000, + "y": 1264 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "dip", + "significance": "medium", + "change_point": 4, + "p_value": 0.00005345763188668862, + "timestamp": "2024-11-02T10:38:30.000Z" + }, + "shortId": "hhpu", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1069, + "pattern": "GET HTTP/1.1 python-requests/2.31.0 default-my-otel-demo-frontendproxy-8080", + "regex": ".*?GET.+?HTTP/1\\.1.+?python-requests/2\\.31\\.0.+?default-my-otel-demo-frontendproxy-8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:55:01 +0000] \"GET /api/data HTTP/1.1\" 200 177 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 177 0.003 200 6cf0fcfd1259f68166701125d3c9761c\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:55:01 +0000] \"GET /api/data HTTP/1.1\" 200 177 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 177 0.003 200 6cf0fcfd1259f68166701125d3c9761c\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:32.391Z", + "lastOccurrence": "2024-11-02T10:56:57.316Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 25 + }, + { + "x": 1730543820000, + "y": 27 + }, + { + "x": 1730543850000, + "y": 26 + }, + { + "x": 1730543880000, + "y": 26 + }, + { + "x": 1730543910000, + "y": 26 + }, + { + "x": 1730543940000, + "y": 27 + }, + { + "x": 1730543970000, + "y": 24 + }, + { + "x": 1730544000000, + "y": 25 + }, + { + "x": 1730544030000, + "y": 22 + }, + { + "x": 1730544060000, + "y": 27 + }, + { + "x": 1730544090000, + "y": 20 + }, + { + "x": 1730544120000, + "y": 23 + }, + { + "x": 1730544150000, + "y": 29 + }, + { + "x": 1730544180000, + "y": 25 + }, + { + "x": 1730544210000, + "y": 23 + }, + { + "x": 1730544240000, + "y": 27 + }, + { + "x": 1730544270000, + "y": 26 + }, + { + "x": 1730544300000, + "y": 27 + }, + { + "x": 1730544330000, + "y": 25 + }, + { + "x": 1730544360000, + "y": 31 + }, + { + "x": 1730544390000, + "y": 21 + }, + { + "x": 1730544420000, + "y": 27 + }, + { + "x": 1730544450000, + "y": 25 + }, + { + "x": 1730544480000, + "y": 29 + }, + { + "x": 1730544510000, + "y": 23 + }, + { + "x": 1730544540000, + "y": 27 + }, + { + "x": 1730544570000, + "y": 24 + }, + { + "x": 1730544600000, + "y": 31 + }, + { + "x": 1730544630000, + "y": 22 + }, + { + "x": 1730544660000, + "y": 24 + }, + { + "x": 1730544690000, + "y": 27 + }, + { + "x": 1730544720000, + "y": 27 + }, + { + "x": 1730544750000, + "y": 27 + }, + { + "x": 1730544780000, + "y": 24 + }, + { + "x": 1730544810000, + "y": 25 + }, + { + "x": 1730544840000, + "y": 26 + }, + { + "x": 1730544870000, + "y": 29 + }, + { + "x": 1730544900000, + "y": 33 + }, + { + "x": 1730544930000, + "y": 34 + }, + { + "x": 1730544960000, + "y": 25 + }, + { + "x": 1730544990000, + "y": 28 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "jmoh", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1068, + "pattern": "10.244.0.38 02 2024 10 0000 GET HTTP 1.1 python requests 2.31.0 default my otel demo frontendproxy 8080 10.244.0.26 8080", + "regex": ".*?10\\.244\\.0\\.38.+?02.+?2024.+?10.+?0000.+?GET.+?HTTP.+?1\\.1.+?python.+?requests.+?2\\.31\\.0.+?default.+?my.+?otel.+?demo.+?frontendproxy.+?8080.+?10\\.244\\.0\\.26.+?8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:55:06 +0000] \"GET /api/cart HTTP/1.1\" 200 24 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 24 0.003 200 33934468a35902ed5b6dde14b1aca6a0\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:55:06 +0000] \"GET /api/cart HTTP/1.1\" 200 24 \"-\" \"python-requests/2.31.0\" 350 0.003 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 24 0.003 200 33934468a35902ed5b6dde14b1aca6a0\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:32.391Z", + "lastOccurrence": "2024-11-02T10:56:57.316Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 25 + }, + { + "x": 1730543820000, + "y": 27 + }, + { + "x": 1730543850000, + "y": 26 + }, + { + "x": 1730543880000, + "y": 26 + }, + { + "x": 1730543910000, + "y": 26 + }, + { + "x": 1730543940000, + "y": 27 + }, + { + "x": 1730543970000, + "y": 24 + }, + { + "x": 1730544000000, + "y": 25 + }, + { + "x": 1730544030000, + "y": 22 + }, + { + "x": 1730544060000, + "y": 27 + }, + { + "x": 1730544090000, + "y": 20 + }, + { + "x": 1730544120000, + "y": 23 + }, + { + "x": 1730544150000, + "y": 29 + }, + { + "x": 1730544180000, + "y": 25 + }, + { + "x": 1730544210000, + "y": 23 + }, + { + "x": 1730544240000, + "y": 27 + }, + { + "x": 1730544270000, + "y": 26 + }, + { + "x": 1730544300000, + "y": 27 + }, + { + "x": 1730544330000, + "y": 25 + }, + { + "x": 1730544360000, + "y": 31 + }, + { + "x": 1730544390000, + "y": 21 + }, + { + "x": 1730544420000, + "y": 27 + }, + { + "x": 1730544450000, + "y": 25 + }, + { + "x": 1730544480000, + "y": 29 + }, + { + "x": 1730544510000, + "y": 23 + }, + { + "x": 1730544540000, + "y": 27 + }, + { + "x": 1730544570000, + "y": 24 + }, + { + "x": 1730544600000, + "y": 31 + }, + { + "x": 1730544630000, + "y": 22 + }, + { + "x": 1730544660000, + "y": 24 + }, + { + "x": 1730544690000, + "y": 27 + }, + { + "x": 1730544720000, + "y": 27 + }, + { + "x": 1730544750000, + "y": 27 + }, + { + "x": 1730544780000, + "y": 24 + }, + { + "x": 1730544810000, + "y": 25 + }, + { + "x": 1730544840000, + "y": 26 + }, + { + "x": 1730544870000, + "y": 29 + }, + { + "x": 1730544900000, + "y": 32 + }, + { + "x": 1730544930000, + "y": 34 + }, + { + "x": 1730544960000, + "y": 25 + }, + { + "x": 1730544990000, + "y": 28 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "vzwi", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 262, + "pattern": "POST HTTP/1.1 python-requests/2.31.0 default-my-otel-demo-frontendproxy-8080", + "regex": ".*?POST.+?HTTP/1\\.1.+?python-requests/2\\.31\\.0.+?default-my-otel-demo-frontendproxy-8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:55:03 +0000] \"POST /api/checkout HTTP/1.1\" 200 984 \"-\" \"python-requests/2.31.0\" 780 0.068 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 984 0.069 200 f87d6397ec8b5740f05f1f3ca07adf50\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:55:03 +0000] \"POST /api/checkout HTTP/1.1\" 200 984 \"-\" \"python-requests/2.31.0\" 780 0.068 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 984 0.069 200 f87d6397ec8b5740f05f1f3ca07adf50\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.220Z", + "lastOccurrence": "2024-11-02T10:56:45.575Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 5 + }, + { + "x": 1730543820000, + "y": 10 + }, + { + "x": 1730543850000, + "y": 14 + }, + { + "x": 1730543880000, + "y": 3 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 12 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 6 + }, + { + "x": 1730544030000, + "y": 7 + }, + { + "x": 1730544060000, + "y": 5 + }, + { + "x": 1730544090000, + "y": 5 + }, + { + "x": 1730544120000, + "y": 5 + }, + { + "x": 1730544150000, + "y": 5 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 9 + }, + { + "x": 1730544240000, + "y": 5 + }, + { + "x": 1730544270000, + "y": 6 + }, + { + "x": 1730544300000, + "y": 14 + }, + { + "x": 1730544330000, + "y": 7 + }, + { + "x": 1730544360000, + "y": 10 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 4 + }, + { + "x": 1730544450000, + "y": 6 + }, + { + "x": 1730544480000, + "y": 6 + }, + { + "x": 1730544510000, + "y": 2 + }, + { + "x": 1730544540000, + "y": 3 + }, + { + "x": 1730544570000, + "y": 9 + }, + { + "x": 1730544600000, + "y": 5 + }, + { + "x": 1730544630000, + "y": 9 + }, + { + "x": 1730544660000, + "y": 3 + }, + { + "x": 1730544690000, + "y": 14 + }, + { + "x": 1730544720000, + "y": 13 + }, + { + "x": 1730544750000, + "y": 2 + }, + { + "x": 1730544780000, + "y": 5 + }, + { + "x": 1730544810000, + "y": 3 + }, + { + "x": 1730544840000, + "y": 7 + }, + { + "x": 1730544870000, + "y": 5 + }, + { + "x": 1730544900000, + "y": 11 + }, + { + "x": 1730544930000, + "y": 11 + }, + { + "x": 1730544960000, + "y": 6 + }, + { + "x": 1730544990000, + "y": 2 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "vdjm", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 263, + "pattern": "10.244.0.38 02 2024 10 0000 api HTTP 1.1 python requests 2.31.0 default my otel demo frontendproxy 8080 10.244.0.26 8080", + "regex": ".*?10\\.244\\.0\\.38.+?02.+?2024.+?10.+?0000.+?api.+?HTTP.+?1\\.1.+?python.+?requests.+?2\\.31\\.0.+?default.+?my.+?otel.+?demo.+?frontendproxy.+?8080.+?10\\.244\\.0\\.26.+?8080.*?", + "sample": "10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n", + "highlight": { + "service.name": [ + "controller" + ], + "resource.attributes.service.name": [ + "controller" + ] + }, + "metadata": { + "message": [ + "10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.220Z", + "lastOccurrence": "2024-11-02T10:56:45.575Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 5 + }, + { + "x": 1730543820000, + "y": 10 + }, + { + "x": 1730543850000, + "y": 14 + }, + { + "x": 1730543880000, + "y": 3 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 12 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 6 + }, + { + "x": 1730544030000, + "y": 7 + }, + { + "x": 1730544060000, + "y": 5 + }, + { + "x": 1730544090000, + "y": 5 + }, + { + "x": 1730544120000, + "y": 5 + }, + { + "x": 1730544150000, + "y": 5 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 9 + }, + { + "x": 1730544240000, + "y": 5 + }, + { + "x": 1730544270000, + "y": 6 + }, + { + "x": 1730544300000, + "y": 14 + }, + { + "x": 1730544330000, + "y": 7 + }, + { + "x": 1730544360000, + "y": 10 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 4 + }, + { + "x": 1730544450000, + "y": 6 + }, + { + "x": 1730544480000, + "y": 6 + }, + { + "x": 1730544510000, + "y": 2 + }, + { + "x": 1730544540000, + "y": 3 + }, + { + "x": 1730544570000, + "y": 9 + }, + { + "x": 1730544600000, + "y": 5 + }, + { + "x": 1730544630000, + "y": 9 + }, + { + "x": 1730544660000, + "y": 3 + }, + { + "x": 1730544690000, + "y": 14 + }, + { + "x": 1730544720000, + "y": 13 + }, + { + "x": 1730544750000, + "y": 2 + }, + { + "x": 1730544780000, + "y": 5 + }, + { + "x": 1730544810000, + "y": 3 + }, + { + "x": 1730544840000, + "y": 7 + }, + { + "x": 1730544870000, + "y": 5 + }, + { + "x": 1730544900000, + "y": 12 + }, + { + "x": 1730544930000, + "y": 11 + }, + { + "x": 1730544960000, + "y": 6 + }, + { + "x": 1730544990000, + "y": 2 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "hxyo", + "relevance": "critical", + "interesting": true + } + ], + "patternsFromOtherEntities": [], + "searches": [ + { + "fragments": [ + "10.244.0.38:8080", + "10.244.0.38", + "8080" + ], + "appearsAs": "This IP address and port are referenced as attributes.source.address, attributes.upstream.address in the investigated entity service.name:controller." + }, + { + "fragments": [ + "http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart", + "/api/cart" + ], + "appearsAs": "These URL fragments appear as attributes.http.request.referrer, attributes.url.original in the investigated entity service.name:controller." + }, + { + "fragments": [ + "/api/cart?sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57¤cyCode=CHF", + "sessionId=1d9f48dd-3313-4f9f-b83b-ff87635eca57", + "currencyCode=CHF" + ], + "appearsAs": "These URL fragments appear as attributes.url.query in the investigated entity service.name:controller." + }, + { + "fragments": [ + "default-my-otel-demo-frontendproxy-8080", + "frontendproxy", + "frontend" + ], + "appearsAs": "These service names appear as attributes.upstream.name in the investigated entity service.name:controller." + }, + { + "fragments": [ + "e6bae77cfb5b598f1d725bc6cc52d06d", + "506" + ], + "appearsAs": " These fragments appear as attributes.http.request.time, attributes.http.response.status_code in the investigated entity service.name:controller." + } + ], + "relatedEntitiesSummaries": [ + "### Related Entities Analysis\n\n#### 1. Entity: service.name:frontend\n- **Indicators (Strength: Average to Strong):**\n - Field: `attributes.upstream.name` in service.name:controller - `default-my-otel-demo-frontendproxy-8080`\n - Field: `kubernetes.pod.name.text` in service.name:frontend - `my-otel-demo-frontend-5bbf4d78bc-qtwdr`\n - URL paths in logs that suggest interactions with the frontend service, specifically `/api/cart`.\n- **Reasoning:** The `frontend` service interacts closely with the `controller` (ingress-nginx-controller). Requests directed to `/api/cart` initiate from `frontendproxy` which routes to `frontend`. Given the high error rate at the `/api/cart` endpoint, the issue might involve downstream calls from `frontend` to dependent services.\n- **Overall Likeliness:** High. The `frontend` service is one of the primary services processing requests (user interactions) that subsequently hit the `controller`.\n\n#### 2. Entity: service.name:cartservice\n- **Indicators (Strength: Strong):**\n - Correspondence of session IDs in the request URLs or logs between controller and cartservice.\n - Mention of cart failures in `frontend` interactions - indicated by error logs involving failed RPC calls to `cartservice`.\n - Logs for service.name:cartservice with messages such as `GetCartAsync called with userId=1d9f48dd`.\n- **Reasoning:** The `/api/cart` endpoint directly involves manipulating or retrieving data from `cartservice`. Given the 500 errors on requests routed via the `controller`, it's likely that `cartservice` might be either causing or being affected by these failures.\n- **Overall Likeliness:** High. Direct involvement of `cartservice` is plausible given the issue is associated specifically with cart interactions.\n\n#### 3. Entity: service.name:frontend-web\n- **Indicators (Strength: Average):**\n - URL referrer and path fragments suggest client-side interactions impact the controller’s ingress.\n - URL fields from both controller logs and frontend-web logs such as `http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart`.\n- **Reasoning:** `frontend-web` represents the client-side application layer. Issues in the client's request construction or timing might be indirectly impacting how the `controller` handles these requests.\n- **Overall Likeliness:** Moderate. While not directly involved in backend processing, interactions originating from the frontend-web could potentially impact the backend flow.\n\n#### 4. Entity: service.name:checkoutservice\n- **Indicators (Strength: Weak):**\n - Shared URL fragments related to the checkout process (`/api/cart` could be an intermediate step).\n - Common use of `sessionId` and `currencyCode` seen in request attributes.\n- **Reasoning:** Though the controller deals directly with cart interactions, completion of cart actions could trigger subsequent processes in `checkoutservice`. Errors during cart operations could thereby propagate issues if mismanaged upstream.\n- **Overall Likeliness:** Low to Moderate. Contextually relevant but perhaps indirectly linked unless specific error propagation is identified.\n\n#### 5. Entity: service.name:coredns\n- **Indicators (Strength: Weak to Average):**\n - DNS logs showing interactions such as `10.244.0.38:45693 - 8080 \"A IN ingress-nginx-controller.ingress-nginx.svc.cluster.local. UDP 74`.\n- **Reasoning:** DNS resolution issues could lead to inability to locate the correct backend service IP for `controller`, causing errors in routing HTTP requests.\n- **Overall Likeliness:** Low. Potential indirect influence but less likely to be the primary cause.\n\n#### Possible Relationship Summary\nGiven these findings:\n\n1. **frontend** and **cartservice** are the most relevant entities with strong indicators of their dependencies and direct involvement in handling requests relevant to the `/api/cart` endpoint. Investigating these services in conjunction with `controller` will likely reveal root causes.\n2. **frontend-web** could be examined for potential client-side initiation issues leading to increased errors, but it remains secondary.\n3. **checkoutservice** may be potentially linked through a sequence of dependencies initiated post-cart operations but is less immediate.\n4. **coredns** could be impacting resolution, yet this remains an unlikely principal cause unless supported by specific DNS errors.\n\nFocus on examining logs and dependencies from `cartservice` and `frontend` to pinpoint exact causes for the reported 500 errors at the `/api/cart` endpoint managed by the controller service.", + "## Analysis and Identification of Related Entities\n\n### Relationship 1: `frontendproxy` (default-my-otel-demo-frontendproxy-8080)\n- **Related entity:** `service.name:frontendproxy`\n- **Indicator strength:** Strong, based on the matching `attributes.upstream.name` field.\n - **Indications:**\n - From `controller` logs: `attributes.upstream.name` = `default-my-otel-demo-frontendproxy-8080`\n - Upstream IP address: `attributes.upstream.address` = `10.244.0.26:8080` in controller logs coinciding with requests that resulted in `500` errors.\n- **Reason:** The `frontendproxy` service routes traffic to the backend services, including the `controller`. Since the `controller` service receives requests and directs traffic to `frontendproxy`, it points to a possible upstream dependency causing the 500 errors during the requests to `/api/cart`.\n- **Overall likeliness:** High. This entity is directly involved since it routes traffic within the system, and its downstream performance or errors reflect on the `controller`.\n\n### Relationship 2: `frontend`\n- **Related entity:** `service.name:frontend`\n- **Indicator strength:** Moderate, observing the infrastructure context and the dependency chain.\n - **Indications:** \n - The `frontend` service is called by the `frontendproxy`, which is indicated as the `attributes.upstream.name` in `controller` logs.\n- **Reason:** In the context provided, the `frontend` communicates with other backend services to process user interactions and might be an upstream dependency for the `controller`. The problem might cascade from `frontendproxy` to `frontend`.\n- **Overall likeliness:** High. This service is critical in handling user interactions, and problems here could cause issue propagation to `controller`.\n\n### Relationship 3: `cartservice`\n- **Related entity:** `service.name:cartservice`\n- **Indicator strength:** Moderate, based on its role in the architecture and likely correlation.\n - **Indications:**\n - The `cartservice` handles shopping cart actions which map the `controller`'s `/api/cart` endpoint.\n - **Reason:** If the `cartservice` has issues, they would cascade to the `controller` /api/cart endpoint that depends on this service for cart management functions.\n- **Overall likeliness:** High. It closely correlates with the endpoint's functionality and possible 500 errors due to backend service inconsistencies.\n\n### Relationship 4: `currencyservice`\n- **Related entity:** `service.name:currencyservice`\n- **Indicator strength:** Weak, contextual dependency but crucial interplay with `cart` operations.\n - **Indications:**\n - Handling currency conversions, indirectly connected to cart operations.\n- **Reason:** The issues might arise if currency conversion fails during cart operations, contributing to the 500 errors in the `controller`.\n- **Overall likeliness:** Moderate. Essential for part of the request chains during cart operations, but primary errors might occur upstream.\n\n### Relationship 5: `productcatalogservice`\n- **Related entity:** `service.name:productcatalogservice`\n- **Indicator strength:** Weak, as no direct log correlation but relevant in the context.\n - **Indications:**\n - Provides product data, indirectly required during cart operations.\n- **Reason:** Cart operations fetching/validating product data might fail, contributing to the `controller` errors when /api/cart requests involve fetching product data.\n- **Overall likeliness:** Moderate. Possible issues here can impact `cartservice` processes and propagate as 500 errors.\n\n### Relationship 6: `frauddetectionservice`\n- **Related entity:** `service.name:frauddetectionservice`\n- **Indicator strength:** Weak, speculative and based more on potential correlation.\n - **Indications:**\n - No specific logs point directly; contextual relevance due to transaction handling.\n- **Reason:** If fraud detection triggers false flags, it can affect cart transactions.\n- **Overall likeliness:** Low. Unlikely direct contributor and more as a consequential involvement in transaction failures.\n\n### Summary\n\nThe `frontendproxy`, `frontend`, and `cartservice` are the most probable related entities with high relevance to the errors indicated in the `controller` service. Investigations should focus on these first, focusing on log patterns and errors cascading through these entities causing the 500 errors on `/api/cart`. Indirect relations like `currencyservice`, `productcatalogservice`, and `frauddetectionservice` can also be explored as part of the broader context.", + "During the investigation of the alert for the `controller` service, we are identifying possible relationships to other entities. We will meticulously examine the evidence from logs, traces, and other relevant data to uncover dependencies and potential causes for the high number of 500 errors on the `/api/cart` endpoint.\n\n### Highly Relevant Entities and Relationships\n\n#### 1. Entity: service.name:frontendproxy\n\n- **Indicators of Evidence**\n - **Strong Indicator**: `attributes.upstream.name: default-my-otel-demo-frontendproxy-8080`\n - **Field Values in Investigated Entity (`controller`)**:\n - `\"attributes.upstream.name\": \"default-my-otel-demo-frontendproxy-8080\"`\n - `\"attributes.upstream.response.status_code\": [\"500\", \"200\", \"308\"]`\n - **Fingerprinting Evidence**:\n - `\"message\": \"10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \\\"POST /api/cart HTTP/1.1\\\" 500 32 \\\"-\\\" \\\"python-requests/2.31.0\\\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\"`\n\n- **Relationship and Context**\n - The `frontendproxy` service acts as the reverse proxy, routing incoming HTTP traffic to different backend services, including the `controller`. The errors appearing in the `controller` log indicate communication issues between the `controller` and the `frontendproxy`.\n\n- **Overall Likeliness**: High\n - Given the primary role of the `frontendproxy` in routing traffic to `controller`, coupled with the direct evidence in the logs, this entity is crucial to the situation at hand.\n\n#### 2. Entity: service.name:frontend\n\n- **Indicators of Evidence**\n - **Average Indicator**: `features.service.name: frontend`\n - **Field Values in Investigated Entity (`controller`)**:\n - `\"attributes.http.request.origin\": \"http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart\"`\n - `\"/api/cart` endpoint related queries`\n\n- **Relationship and Context**:\n - The `frontend` service handles key operations related to user interactions before requests are passed to various backend services, including the `controller`. Issues in `frontend`, like poor handling of requests or incorrect data forwarding, might cascade downstream, resulting in 500 errors in the `controller`.\n\n- **Overall Likeliness**: Medium to High\n - Given the data pathway from user interactions handled by `frontend`, it’s essential to determine if `frontend` anomalies are contributing to the failure in `controller`.\n\n#### 3. Entity: service.name:cartservice\n\n- **Indicators of Evidence**\n - **Average Indicator**: `/api/cart` requests typically involving `cartservice`\n - **Field Values in Investigated Entity (`controller`)**:\n - `500 errors at \"/api/cart\"`\n\n- **Relationship and Context**:\n - The `cartservice` directly manages shopping cart operations over the gRPC protocol. While the HTTP API from `controller` might indicate communication failures with `cartservice`, these errors could also originate from improper data requests or transaction handling within `cartservice`.\n\n- **Overall Likeliness**: High\n - Investigating the interaction with `cartservice` can help distinguish if business logic errors or miscommunication between services lead to repeated 500 errors.\n\n### Moderately Relevant Entities\n\n#### 4. Entity: service.name:loadgenerator\n\n- **Indicators of Evidence**\n - **Weak Indicator**: Simulated high traffic which might put strain on other services causing errors.\n - **Field Values in Investigated Entity (`controller`)**:\n - General logged high traffic instances or increased load around the alert time.\n\n- **Relationship and Context**:\n - The `loadgenerator` mimics external user traffic managed by the Ingress and ultimately passed through nodes like `controller`. Excessive load can manifest as backend service overloads or timeouts, indirectly causing 500 errors in `controller`.\n\n- **Overall Likeliness**: Medium\n - Given the traffic simulation aspect, its role is probable but direct correlation to specific error occurrences in `controller` needs corroboration with other data points.\n\n### Less Likely but Contextually Relevant Entities\n\n#### 5. Entity: service.name:etcd\n\n- **Indicators of Evidence**\n - **Weak Indicator**: General mention in logs for Ingress control plane activity\n - **Field Values in Investigated Entity (`controller`)**:\n - `\"response count\": 0`, signifying Ingress data handling might be amiss during high traffic\n\n- **Relationship and Context**:\n - Possible indirect impact wherein control plane malfunctions or data inconsistencies in the `etcd` state can propagate as issues dispersed across services interacting via Ingress, including `controller`.\n\n- **Overall Likeliness**: Medium\n - This needs verifying integration with upstream Ingress state logs to validate contributions to observed `controller` issues.\n\n### Further Investigations and Likelihood Summary\n\nBased on logs and identified relationships, we will prioritize looking into:\n\n1. **Frontendproxy** - Checking its health, routing efficiency, and connections to `controller`.\n2. **Frontend** - Verifying its data handling during user interactions that lead to API cart errors.\n3. **Cartservice** - Ensuring logical transactions and gRPC communications, ruling out core service bugs.\n\nWe will cross-reference error logs, API traces, and dependency interactions tightly intertwined with the `controller` to form a comprehensive approach to resolution." + ], + "kbEntries": [ + { + "id": "System architecture", + "text": "The architecture described here outlines a microservices-based system, where each service is implemented in a distinct programming language and communicates via gRPC, HTTP, or TCP. This system is designed to handle simulated user traffic, supported by a variety of interconnected services and components.\n\n### System Architecture\n\n1. **`loadgenerator`** - Simulates external user traffic by sending HTTP requests, which are managed by an Nginx ingress controller. This ingress directs traffic to the `frontendproxy` service.\n\n2. **`frontendproxy` (Envoy)** - Acts as a reverse proxy, routing incoming traffic from `loadgenerator` to `frontend`.\n\n3. **`frontend` (Node.js)** - The core service for user interactions, receiving HTTP traffic from `frontendproxy` and interfacing with various backend services to fulfill requests.\n\n4. **`frontend-web` (RUM)** - A Real User Monitoring (RUM) layer that runs in the user's browser, enabling insights into end-user experiences and frontend performance.\n\n5. **`adservice`** - Delivers advertisements to the `frontend` using gRPC, enhancing the user experience with relevant ad content.\n\n6. **`cartservice`** - Manages shopping cart data, including adding and removing items. It communicates over gRPC and leverages a Redis cache for data persistence.\n\n7. **`currencyservice`** - Handles currency conversions and facilitates interactions between `cartservice` and `checkoutservice` over gRPC.\n\n8. **`checkoutservice`** - Coordinates the checkout process, calling various services for payments, shipping, and emails. It utilizes both gRPC and HTTP protocols to aggregate the necessary information for order completion.\n\n9. **`emailservice`** - Sends order confirmation emails to users via gRPC, triggered by interactions with `checkoutservice`.\n\n10. **`productcatalogservice`** - Maintains the product catalog, storing details about available items and providing this data to other services via gRPC.\n\n11. **`recommendationservice`** - Generates personalized product recommendations, accessed by `frontend` over gRPC.\n\n12. **`shippingservice`** - Manages shipping information, providing essential data to `checkoutservice` over gRPC.\n\n13. **`quoteservice`** - Supplies shipping quotes over HTTP, which are accessed by `shippingservice` to estimate shipping costs.\n\n14. **`paymentservice`** - Processes payment transactions through gRPC, enabling secure and efficient payments for `checkoutservice`.\n\n15. **`accountingservice`** - Responsible for recording transactions, it connects to a Kafka queue and interacts over TCP.\n\n16. **`frauddetectionservice`** - Monitors orders for potential fraud, also interfacing with the Kafka queue over TCP to receive relevant transaction data.\n\n17. **`imageprovider` (Nginx)** - Serves static images for the frontend interface, accessible over HTTP.\n\n18. **`queue` (Kafka)** - Acts as a central message broker, facilitating communication between `accountingservice` and `frauddetectionservice`.\n\n### Key Components\nThe system is structured to enable robust, distributed communication across services, allowing each component to focus on a specific aspect of the user experience or business logic. The ingress controller, in particular, plays a critical role in directing traffic, ensuring that incoming requests from `loadgenerator` are correctly routed through `frontendproxy` and into the system’s core services.\n\nThis architecture ensures that the system can handle high traffic loads and provides a modular, flexible framework to meet user demands while monitoring for performance and security.\n", + "tokens": 733, + "score": 3 + } + ] + }, + "entity": { + "service.name": "controller" + }, + "relatedEntities": [ + { + "entity": { + "service.name": "frontend" + }, + "reason": "The frontend service interacts closely with the controller (ingress-nginx-controller). Requests directed to /api/cart initiate from frontendproxy which routes to frontend. Given the high error rate at the /api/cart endpoint, the issue might involve downstream calls from frontend to dependent services.", + "confidence": "high" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "The /api/cart endpoint directly involves manipulating or retrieving data from cartservice. Given the 500 errors on requests routed via the controller, it's likely that cartservice might be either causing or being affected by these failures.", + "confidence": "high" + }, + { + "entity": { + "service.name": "frontend-web" + }, + "reason": "URL referrer and path fragments suggest client-side interactions impacting the controller's ingress. Issues in the client's request construction or timing might be indirectly impacting how the controller handles these requests.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "checkoutservice" + }, + "reason": "Though the controller deals directly with cart interactions, completion of cart actions could trigger subsequent processes in checkoutservice. Errors during cart operations could thereby propagate issues if mismanaged upstream.", + "confidence": "low" + }, + { + "entity": { + "service.name": "coredns" + }, + "reason": "DNS resolution issues could lead to inability to locate the correct backend service IP for controller, causing errors in routing HTTP requests.", + "confidence": "low" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The `frontend` service is called by the `frontendproxy`, which is indicated as the `attributes.upstream.name` in `controller` logs. In the context provided, the `frontend` communicates with other backend services to process user interactions and might be an upstream dependency for the `controller`. The problem might cascade from `frontendproxy` to `frontend`.", + "confidence": "high" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "The `cartservice` handles shopping cart actions which map the `controller`'s `/api/cart` endpoint. If the `cartservice` has issues, they would cascade to the `controller` /api/cart endpoint that depends on this service for cart management functions.", + "confidence": "high" + }, + { + "entity": { + "service.name": "currencyservice" + }, + "reason": "Handling currency conversions, indirectly connected to cart operations. The issues might arise if currency conversion fails during cart operations, contributing to the 500 errors in the `controller`.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "frauddetectionservice" + }, + "reason": "No specific logs point directly; contextual relevance due to transaction handling. If fraud detection triggers false flags, it can affect cart transactions.", + "confidence": "low" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "The `cartservice` directly manages shopping cart operations over the gRPC protocol, and errors here could lead to repeated 500 errors in the `controller`.", + "confidence": "high" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The `frontend` service handles user interactions that are passed to the `controller`. Issues in `frontend` could lead to failures in `controller`, resulting in 500 errors.", + "confidence": "medium to high" + }, + { + "entity": { + "service.name": "loadgenerator" + }, + "reason": "The `loadgenerator` simulates high user traffic which might strain other services and indirectly cause 500 errors in the `controller`.", + "confidence": "medium" + }, + { + "entity": { + "service.name": "etcd" + }, + "reason": "As a control plane activity tracker for Ingress, indirect impacts from `etcd` inconsistencies can propagate as issues in services interacting via Ingress, including `controller`.", + "confidence": "medium" + } + ], + "summary": "### Characteristics of the `controller` Entity\n\n**1. Infrastructure & Environment:**\n\nThe `controller` service is deployed within a Kubernetes environment, specifically in the `ingress-nginx` namespace. The service is associated with a `controller` container running within the `ingress-nginx-controller-bc57996ff-r6blf` pod. This pod is scheduled on a node identified as `minikube`, and the service is part of the `ingress-nginx-controller` deployment. Additionally, the infrastructure is based on an ARM64 architecture, running Ubuntu 24.04.1 LTS, with deployment environment set to `opentelemetry-demo`.\n\n**2. Communication Characteristics:**\n\nThe `controller` service functions as an Ingress controller, managing incoming traffic and routing it to backend services. It processes HTTP requests, typically version 1.1, and communicates with other services via HTTP protocols. Key endpoints involved in the communication include:\n- Inbound requests are received at endpoints like `/api/cart` and `/api/checkout`.\n- Outbound requests are routed primarily to the `frontendproxy` service, evidenced by the upstream address `10.244.0.26:8080`.\n\nThe service handles both `GET` and `POST` requests, and its communication paths include requests from user agents like \"HeadlessChrome\" and \"python-requests\".\n\n**3. Context of Entity in Investigation:**\n\n**Reason for Investigation:**\nThe `controller` service is currently under investigation due to an alert triggered by a high number of 500 errors (98.78% error rate) occurring at the `/api/cart` endpoint. The significant spike in error rates is concerning and suggests a potential issue within the service or its interaction with dependencies.\n\n**Relation to Other Entities:**\nThe high error rates on the `controller` are likely impacting the overall user experience of the application, notably through the `/api/cart` functionality, which interacts with the `cartservice`. As the `controller` service forwards requests to the `frontendproxy`, which in turn interacts with various backend services like `cartservice`, `checkoutservice`, `currencyservice`, and others, the ripple effect of these errors might be felt across multiple services in the architecture. This interconnectedness necessitates thorough investigation of `controller's` logs and error patterns to isolate the root cause and mitigate the disruption in the flow of HTTP requests.\n\nBy understanding the behavior and interaction of the `controller` service within the broader microservices architecture, we aim to identify and resolve the underlying issue causing the increase in 500 errors. This involves examining logs for patterns, determining if recent changes or specific conditions triggered the fault, and analyzing dependencies that could contribute to the error rates observed. This step is integral to restoring normal operation and maintaining service reliability and user satisfaction.\n\n### Analysis of Log Patterns for service.name:controller\n\n#### Pattern Group: Request Errors\n- **Pattern:**\n ```\n .*?10\\\\.244\\\\.0\\\\.38.+?02.+?2024.+?10.+?0000.+?api.+?HTTP.+?1\\\\.1.+?python.+?requests.+?2\\\\.31\\\\.0.+?default.+?my.+?otel.+?demo.+?frontendproxy.+?8080.+?10\\\\.244\\\\.0\\\\.26.+?8080.*?\n ```\n - **Sample:**\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n - **Description:** This pattern represents request logs where an HTTP POST request to the `/api/cart` endpoint resulted in a `500 Internal Server Error`. The requests are from a client using `python-requests/2.31.0`.\n\n- **Count:** 263 occurrences\n\n- **Timeseries Analysis:**\n - **Trend:** The number of occurrences show fluctuation with no significant change in the pattern.\n - **Log Counts:** \n - Example timestamps and counts:\n - `2024-11-02T10:56:00.000Z: 6`\n - `2024-11-02T10:56:30.000Z: 2`\n - `2024-11-02T10:57:00.000Z: 0`\n\n### Summary\nBased on the provided logs patterns, the `controller` service is experiencing a high number of `500 Internal Server Errors` when handling POST requests to the `/api/cart` endpoint. This is evident from the consistent error logs observed at different timestamps. The alert threshold breach likely correlates with these error occurrences.\n\nNo other unusual patterns such as connection issues, startup messages, or garbage collection messages were identified in the logs around the error events. Further investigation on the backend or potential dependency issues (e.g., `cartservice`) might be needed to determine the exact cause of these errors.\n\n### Timeline of significant events\n\n- **2024-11-02T10:56:42.498Z**\n - **Alert Triggered**: High number of 500 errors for the /api/cart endpoint. Error rate is 98.78%, above the threshold of 1% over a 1-minute duration.\n \n- **2024-11-02T10:56:00.000Z**\n - **Log Entry**: 6 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - **Example Log**:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:08 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n \n- **2024-11-02T10:56:30.000Z**\n - **Log Entry**: 2 occurrences of HTTP POST requests to the `/api/cart` endpoint resulting in `500 Internal Server Error`.\n - **Example Log**:\n ```\n 10.244.0.38 - - [02/Nov/2024:10:56:35 +0000] \"POST /api/cart HTTP/1.1\" 500 32 \"-\" \"python-requests/2.31.0\" 506 0.002 [default-my-otel-demo-frontendproxy-8080] [] 10.244.0.26:8080 32 0.002 500 e6bae77cfb5b598f1d725bc6cc52d06d\n ```\n\n### Context and reasoning\n\nThe `controller` service plays a critical role in handling incoming HTTP requests within the Kubernetes environment, specifically acting as an Ingress controller within the `ingress-nginx` namespace. The recent alert, triggered by a high number of 500 errors, indicates a significant disruption in the normal operations of the `controller` service, particularly impacting the `/api/cart` endpoint. The log entries leading up to and following the alert highlight a pattern of consistent `500 Internal Server Error` responses, specifically around the timestamp in question.\n\nThe pattern group identified, related to request errors, shows repeated failures for HTTP POST requests from a client using `python-requests/2.31.0`, likely directed towards the `cartservice` via the `frontendproxy`. This high error rate suggests an underlying issue either within the `controller` service itself, its communication path to the `frontendproxy`, or potentially further downstream with the backend services like `cartservice`.\n\nNo other unusual log patterns, such as connection issues or any system degradation messages were noted, indicating the problem is likely concentrated around the interaction between `controller` and its immediate dependencies rather than a broader system-wide issue. By correlating the timestamps and repeated error logs, a clear link can be drawn between the `500 Internal Server Error` responses and the timeline, further supporting the hypothesis of a specific fault affecting the `/api/cart` endpoint.\n\nFurther investigation into the dependencies of the `controller` service, especially focusing on the interactions with the `frontendproxy` and subsequently `cartservice`, is warranted to isolate and rectify the root cause of these error patterns." + } + ] + }, + "role": "tool", + "toolCallId": "call_DB13TclS3Gc9zUgCrWLrvDuu" + }, + { + "role": "assistant", + "content": "", + "toolCalls": [ + { + "toolCallId": "call_kstyq8qXoaWRX4CJQkC6wbhR", + "function": { + "name": "investigateEntity", + "arguments": { + "context": "As the downstream service handling /api/cart requests, issues here would directly contribute to error patterns in controller. High errors were observed in the controller for POST requests to the /api/cart endpoint resulting in '500 Internal Server Error'. Starting error rate was significantly high (98.78%), around 2024-11-02T10:56:42.498Z.", + "entity": { + "field": "service.name", + "value": "cartservice" + } + } + } + }, + { + "toolCallId": "call_zNoUwjdb2DJhxjhshLkgqlZw", + "function": { + "name": "investigateEntity", + "arguments": { + "context": "Requests are routed through this service to cartservice. Any routing or network issues here might also contribute to the 500 errors seen in controller. High error rate (98.78%) in controller for POST requests to the /api/cart endpoint starting at 2024-11-02T10:56:42.498Z.", + "entity": { + "field": "service.name", + "value": "frontend" + } + } + } + } + ] + }, + { + "name": "investigateEntity", + "role": "tool", + "toolCallId": "call_zNoUwjdb2DJhxjhshLkgqlZw", + "response": { + "entity": { + "service.name": "frontend" + }, + "relatedEntities": [ + { + "entity": { + "service.name": "controller" + }, + "reason": "`controller` service handles endpoints like `/api/cart`, which corresponds to failed transactions. They share common IP address and port patterns, indicating network interaction.", + "confidence": "very high" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "`frontend` service attempts to interact with `cartservice`. Connection errors from `frontend` indicate it is calling `cartservice` and facing issues getting responses, potentially causing the 500 errors.", + "confidence": "very high" + }, + { + "entity": { + "service.name": "frontend-web" + }, + "reason": "`frontend-web` captures real user interactions with the `/api/cart` endpoint. Helps trace the errors and delays externally perceived by users.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "coredns" + }, + "reason": "`coredns` is responsible for DNS resolution within the cluster and issues here could result in connectivity problems seen in `frontend`.", + "confidence": "moderate" + } + ], + "summary": "### Investigation of Entity `service.name:frontend`\n\n#### Context of Investigation\n\nThe `frontend` service is critical in this investigation due to its role in the overall request handling and the observed high error rate (98.78%) in the `controller` service for POST requests to the `/api/cart` endpoint. This issue began at `2024-11-02T10:56:42.498Z`. The `frontend` service routes requests to `cartservice`, a key interaction in this error occurrence.\n\n#### Infrastructure & Environment\n\n- **Environment**: The `frontend` operates within the `opentelemetry-demo` deployment environment.\n- **Deployment**: It is deployed on Kubernetes (k8s), specifically within the `default` namespace. \n- **Pod Information**: The pod name is `my-otel-demo-frontend-5bbf4d78bc-qtwdr`, on the `minikube` node. Each pod has a unique UID (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`), with logs stored at `/var/log/pods/`.\n- **Resource Attributes**: Hosts `Apple` Arm64 architecture processor (`host.cpu.vendor.id: Apple`), running `Ubuntu 24.04.1 LTS (Noble Numbat)`, indicating a Linux-based system.\n\n#### Communication Characteristics \n\n- **Protocols**: \n - The `frontend` service communicates primarily using HTTP for inbound requests and gRPC for backend service interactions. \n - gRPC is specifically used when the `frontend` communicates with `cartservice`, highlighted by recorded RPC errors in the logs.\n- **Endpoints**:\n - The `frontend` gets requests from `frontendproxy` (Envoy), acting as the reverse proxy.\n - The service then routes these requests to different backend services, including `cartservice`, via gRPC.\n - The critical IP noted in logs is `10.110.191.164:8080`, pointing to a potential endpoint for the `cartservice`.\n\n#### Context of Entity in Investigation\n\n- **Reason for Investigation**: The `frontend` service is under scrutiny due to its pivotal role in processing and routing incoming user requests. Any disruption in its communication or processing mechanism directly affects the functionality of connected services, notably `cartservice`, leading to high error rates observed in the `controller`.\n- **Relation to Other Entities**:\n - **Previous Entity**: `controller` - The `controller` service logs indicate a high number of 500 errors were triggered during POST requests to `/api/cart`.\n - **Dependencies**: `frontend` relies on successful communication with `cartservice` to fulfill these cart-related requests.\n- **Architectural Role**: The `frontend` is the nucleus for user interactions within this microservices architecture. Any network or communication issue in `frontend` can cascade, influencing its backend dependencies like `cartservice` and leading to broader service disruptions.\n\nThis comprehensive analysis of the `frontend` service’s infrastructure, communication protocols, and its investigative context emphasizes its critical position in the service chain responsible for the reported errors. Further scrutiny of the communication logs, particularly focusing on the gRPC interactions with `cartservice`, is essential to identify and mitigate the root cause of these failures.\n\nObservations for service `frontend`.\n\n### Connection Issues to Upstream Dependency\n\n1. **Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Sample**: \"14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080 (2024-11-02T10:56:12.143Z)\"\n - **Timeseries Observations**: \n - No occurrences before 2024-11-02T10:55:30.000Z.\n - Sharp increase at 2024-11-02T10:55:30.000Z (291 occurrences).\n - Further increase at 2024-11-02T10:56:00.000Z (381 occurrences).\n - Next timestamp at 2024-11-02T10:57:00.000Z showing a return to 0 occurrences.\n\n2. **Pattern**: \"INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"\n - **Sample**: \"13 INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"\n - **Timeseries Observations**:\n - No occurrences before 2024-11-02T10:55:30.000Z.\n - Slight increase at 2024-11-02T10:55:30.000Z (2 occurrences).\n - One more occurrence at 2024-11-02T10:56:00.000Z (1 occurrence).\n - No occurrences after 2024-11-02T10:56:30.000Z.\n\nThe significant spike in connection errors starting from 2024-11-02T10:55:30.000Z aligns with the high error rate in the `controller` service, suggesting a strong correlation between these established connection issues in the `frontend` service and the 500 errors seen in the `controller` service for POST requests to the `/api/cart` endpoint around the same time.\n\n### Possibly Relevant Log Patterns from coredns\n\n1. **Pattern**: \"INFO 10.244.0.26 AAAA IN my-otel-demo-frontend udp 39 false 512 NXDOMAIN qr,rd,ra 39\"\n - **Sample**: \"[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra 39 0.003716084s\"\n - **Timeseries Observations**:\n - Frequent steady occurrences of 6 events every 30 seconds.\n - No notable changes or spikes coinciding with the connection issues observed in the `frontend` service.\n\nFrom these observations, it appears that the connection refusal errors in the `frontend` service are likely caused by issues in communication with the `cartservice`, potentially as a result of intermittent network disruptions or dependency service failures at the IP 10.110.191.164. Further investigation should focus on the health and connectivity status of the `cartservice` around the specified time period.\n\n### Timeline of Significant Events\n\n1. **2024-11-02T10:55:30.000Z**\n - **Event**: Sharp increase in connection error logs.\n - **Log Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Details**: 291 occurrences reported.\n\n2. **2024-11-02T10:55:30.000Z**\n - **Event**: Appearance of an internal error in accessing cart services.\n - **Log Pattern**: \"INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error\"\n - **Details**: 2 occurrences reported.\n\n3. **2024-11-02T10:56:00.000Z**\n - **Event**: Further increase in connection error logs.\n - **Log Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Details**: 381 occurrences reported.\n\n4. **2024-11-02T10:56:00.000Z**\n - **Event**: Additional occurrence of an internal error in accessing cart services.\n - **Log Pattern**: \"INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error\"\n - **Details**: 1 occurrence reported.\n\n5. **2024-11-02T10:56:42.498Z**\n - **Event**: High error rate (98.78%) in the `controller` service for POST requests to the `/api/cart` endpoint begins.\n - **Details**: Corresponds to the timing of observed spikes in connection errors in the `frontend` service.\n\n6. **2024-11-02T10:57:00.000Z**\n - **Event**: Connection error logs return to zero occurrences.\n - **Log Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Details**: 0 occurrences reported.\n\n### Context and Reasoning\n\nThe `frontend` service is critical in this investigation due to its role in routing requests to the `cartservice`. The high error rates observed in the `controller` service's POST requests to the `/api/cart` endpoint started precisely at 2024-11-02T10:56:42.498Z, which is within the timeframe when the `frontend` service experienced significant connection issues with the `cartservice`.\n\nUpon analyzing log patterns, it is evident that the communication disruptions between the `frontend` service and the `cartservice` began at 2024-11-02T10:55:30.000Z with a sharp increase in connection errors, and these errors persisted until approximately 2024-11-02T10:57:00.000Z. During this period, numerous `ECONNREFUSED` errors were logged, indicating the `frontend` service's inability to establish a connection to the `cartservice` (IP 10.110.191.164:8080). This aligns with the timeline of the high error rates in the `controller` service, suggesting a direct correlation.\n\nFurthermore, the internal errors logged by the `frontend` service related to RPC errors and failed attempts to get the user cart during checkout reaffirm these connection problems. These errors underscore an impaired communication pathway to the `cartservice`, affecting the `controller` service's ability to process POST requests to the `/api/cart` endpoint.\n\nTherefore, the evidence strongly indicates that network or connection failures between the `frontend` service and its upstream dependency, `cartservice`, are the principal cause of the cascading 500 errors seen in the `controller` service. This highlights the critical position of the `frontend` service in ensuring stable communication pathways within the microservice architecture." + }, + "data": { + "attachments": { + "alerts": [], + "slos": [], + "analysis": { + "total": 98017, + "sampled": 1000, + "fields": [ + "@timestamp:date - 327 distinct values", + "app.label.component:keyword - 1 distinct values (`frontend`)", + "attributes.log.file.path.text:text - 1 distinct values (`/var/log/pods/default_my-otel-demo-frontend-5bbf4d78bc-qtwdr_a9fcfff9-3524-411e-8ac9-4e4341c1a121/frontend/0.log`)", + "attributes.log.file.path:keyword - 1 distinct values (`/var/log/pods/default_my-otel-demo-frontend-5bbf4d78bc-qtwdr_a9fcfff9-3524-411e-8ac9-4e4341c1a121/frontend/0.log`)", + "attributes.log.iostream:keyword - 1 distinct values (`stderr`)", + "body.text:text - 36 distinct values (` code: 13,\n`, ` details: 'cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"',\n`, 34 more values)", + "data_stream.dataset:keyword - 1 distinct values (`generic.otel`)", + "data_stream.namespace:keyword - 1 distinct values (`default`)", + "data_stream.type:keyword - 1 distinct values (`logs`)", + "deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "dropped_attributes_count:long - 1 distinct values (`0`)", + "event.dataset:keyword - 1 distinct values (`generic.otel`)", + "host.arch:keyword - 1 distinct values (`arm64`)", + "host.architecture:keyword - 1 distinct values (`arm64`)", + "host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "host.cpu.family:keyword - 1 distinct values (``)", + "host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "host.cpu.model.name:keyword - 1 distinct values (``)", + "host.cpu.stepping:keyword - 1 distinct values (`0`)", + "host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "host.os.full:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "host.os.platform:keyword - 1 distinct values (`linux`)", + "k8s.container.name:keyword - 1 distinct values (`frontend`)", + "k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "k8s.deployment.name:keyword - 1 distinct values (`my-otel-demo-frontend`)", + "k8s.namespace.name:keyword - 1 distinct values (`default`)", + "k8s.node.name:keyword - 1 distinct values (`minikube`)", + "k8s.pod.name:keyword - 1 distinct values (`my-otel-demo-frontend-5bbf4d78bc-qtwdr`)", + "k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T09:00:25Z`)", + "k8s.pod.uid:keyword - 1 distinct values (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`)", + "kubernetes.deployment.name:keyword - 1 distinct values (`my-otel-demo-frontend`)", + "kubernetes.namespace:keyword - 1 distinct values (`default`)", + "kubernetes.node.name:keyword - 1 distinct values (`minikube`)", + "kubernetes.pod.name:keyword - 1 distinct values (`my-otel-demo-frontend-5bbf4d78bc-qtwdr`)", + "kubernetes.pod.uid:keyword - 1 distinct values (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`)", + "log.file.path:keyword - 1 distinct values (`/var/log/pods/default_my-otel-demo-frontend-5bbf4d78bc-qtwdr_a9fcfff9-3524-411e-8ac9-4e4341c1a121/frontend/0.log`)", + "log.iostream:keyword - 1 distinct values (`stderr`)", + "message:text - 36 distinct values (` code: 13,\n`, ` details: 'cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"',\n`, 34 more values)", + "observed_timestamp:date_nanos - 1000 distinct values (`2024-11-02T10:56:50.564274379Z`, `2024-11-02T10:55:46.563453752Z`, `2024-11-02T10:56:52.76272763Z`, `2024-11-02T10:56:14.764728626Z`, `2024-11-02T10:55:51.964080879Z`, `2024-11-02T10:55:51.764216463Z`, `2024-11-02T10:56:50.564063629Z`, `2024-11-02T10:55:38.563141804Z`, `2024-11-02T10:55:53.963540672Z`, `2024-11-02T10:56:32.762493176Z`, 990 more values)", + "os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.app.label.component:keyword - 1 distinct values (`frontend`)", + "resource.attributes.deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "resource.attributes.host.arch:keyword - 1 distinct values (`arm64`)", + "resource.attributes.host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "resource.attributes.host.cpu.family:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "resource.attributes.host.cpu.model.name.text:text - 1 distinct values (``)", + "resource.attributes.host.cpu.model.name:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.stepping:keyword - 1 distinct values (`0`)", + "resource.attributes.host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "resource.attributes.host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "resource.attributes.host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "resource.attributes.host.name:keyword - 1 distinct values (`otel-daemonset-opentelemetry-collector-agent-7jlpk`)", + "resource.attributes.k8s.container.name.text:text - 1 distinct values (`frontend`)", + "resource.attributes.k8s.container.name:keyword - 1 distinct values (`frontend`)", + "resource.attributes.k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "resource.attributes.k8s.deployment.name:keyword - 1 distinct values (`my-otel-demo-frontend`)", + "resource.attributes.k8s.namespace.name:keyword - 1 distinct values (`default`)", + "resource.attributes.k8s.node.name:keyword - 1 distinct values (`minikube`)", + "resource.attributes.k8s.pod.name:keyword - 1 distinct values (`my-otel-demo-frontend-5bbf4d78bc-qtwdr`)", + "resource.attributes.k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T09:00:25Z`)", + "resource.attributes.k8s.pod.uid:keyword - 1 distinct values (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`)", + "resource.attributes.os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "resource.attributes.os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.service.name.text:text - 1 distinct values (`frontend`)", + "resource.attributes.service.name:keyword - 1 distinct values (`frontend`)", + "resource.dropped_attributes_count:long - 1 distinct values (`0`)", + "resource.schema_url:keyword - 1 distinct values (`https://opentelemetry.io/schemas/1.6.1`)", + "scope.dropped_attributes_count:long - 1 distinct values (`0`)", + "service.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "service.name:keyword - 1 distinct values (`frontend`)", + "severity_number:byte - 1 distinct values (`0`)" + ] + }, + "ownPatterns": [ + { + "field": "message", + "count": 3756, + "pattern": "at", + "regex": ".*?at.*?", + "sample": " at /app/.next/server/pages/api/cart.js:1:1025\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at /app/.next/server/pages/api/cart.js:1:1025\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 1103 + }, + { + "x": 1730544960000, + "y": 1411 + }, + { + "x": 1730544990000, + "y": 1242 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "qlqu", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 2366, + "pattern": "at app node_modules grpc grpc js build src", + "regex": ".*?at.+?app.+?node_modules.+?grpc.+?grpc.+?js.+?build.+?src.*?", + "sample": " at Object.onReceiveStatus (/app/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:360:141)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at Object.onReceiveStatus (/app/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:360:141)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 693 + }, + { + "x": 1730544960000, + "y": 896 + }, + { + "x": 1730544990000, + "y": 777 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "roms", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1014, + "pattern": "at app node_modules opentelemetry instrumentation grpc build src", + "regex": ".*?at.+?app.+?node_modules.+?opentelemetry.+?instrumentation.+?grpc.+?build.+?src.*?", + "sample": " at ServiceClientImpl.clientMethodTrace [as getCart] (/app/node_modules/@opentelemetry/instrumentation-grpc/build/src/instrumentation.js:211:42)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ServiceClientImpl.clientMethodTrace [as getCart] (/app/node_modules/@opentelemetry/instrumentation-grpc/build/src/instrumentation.js:211:42)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 297 + }, + { + "x": 1730544960000, + "y": 384 + }, + { + "x": 1730544990000, + "y": 333 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "eyqk", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 351, + "pattern": "at node:internal process task_queues", + "regex": ".*?at.+?node:internal.+?process.+?task_queues.*?", + "sample": " at process.processTicksAndRejections (node:internal/process/task_queues:77:11)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at process.processTicksAndRejections (node:internal/process/task_queues:77:11)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 104 + }, + { + "x": 1730544960000, + "y": 129 + }, + { + "x": 1730544990000, + "y": 118 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "mpyi", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at AsyncLocalStorage.run node:async_hooks 346 14", + "regex": ".*?at.+?AsyncLocalStorage\\.run.+?node:async_hooks.+?346.+?14.*?", + "sample": " at AsyncLocalStorage.run (node:async_hooks:346:14)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at AsyncLocalStorage.run (node:async_hooks:346:14)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "jsoq", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at AsyncLocalStorageContextManager.with app node_modules opentelemetry context async hooks build src AsyncLocalStorageContextManager.js 33 40", + "regex": ".*?at.+?AsyncLocalStorageContextManager\\.with.+?app.+?node_modules.+?opentelemetry.+?context.+?async.+?hooks.+?build.+?src.+?AsyncLocalStorageContextManager\\.js.+?33.+?40.*?", + "sample": " at AsyncLocalStorageContextManager.with (/app/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at AsyncLocalStorageContextManager.with (/app/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "viwd", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at ContextAPI.with app node_modules opentelemetry api build src api context.js 60 46", + "regex": ".*?at.+?ContextAPI\\.with.+?app.+?node_modules.+?opentelemetry.+?api.+?build.+?src.+?api.+?context\\.js.+?60.+?46.*?", + "sample": " at ContextAPI.with (/app/node_modules/@opentelemetry/api/build/src/api/context.js:60:46)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ContextAPI.with (/app/node_modules/@opentelemetry/api/build/src/api/context.js:60:46)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "agsa", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at new ZoneAwarePromise app node_modules zone.js bundles zone.umd.js 1340 33", + "regex": ".*?at.+?new.+?ZoneAwarePromise.+?app.+?node_modules.+?zone\\.js.+?bundles.+?zone\\.umd\\.js.+?1340.+?33.*?", + "sample": " at new ZoneAwarePromise (/app/node_modules/zone.js/bundles/zone.umd.js:1340:33) {\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at new ZoneAwarePromise (/app/node_modules/zone.js/bundles/zone.umd.js:1340:33) {\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "dhes", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "code", + "regex": ".*?code.*?", + "sample": " code: 14,\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " code: 14,\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "feod", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "for call at", + "regex": ".*?for.+?call.+?at.*?", + "sample": "for call at\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + "for call at\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "enzg", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at ServiceClientImpl anonymous /app/node_modules/@grpc/grpc-js/build/src/make-client.js", + "regex": ".*?at.+?ServiceClientImpl.+?anonymous.+?/app/node_modules/@grpc/grpc-js/build/src/make-client\\.js.*?", + "sample": " at ServiceClientImpl. (/app/node_modules/@grpc/grpc-js/build/src/make-client.js:105:19)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ServiceClientImpl. (/app/node_modules/@grpc/grpc-js/build/src/make-client.js:105:19)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "iook", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at ServiceClientImpl.makeUnaryRequest /app/node_modules/@grpc/grpc-js/build/src/client.js", + "regex": ".*?at.+?ServiceClientImpl\\.makeUnaryRequest.+?/app/node_modules/@grpc/grpc-js/build/src/client\\.js.*?", + "sample": " at ServiceClientImpl.makeUnaryRequest (/app/node_modules/@grpc/grpc-js/build/src/client.js:161:32)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ServiceClientImpl.makeUnaryRequest (/app/node_modules/@grpc/grpc-js/build/src/client.js:161:32)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "jvlx", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 335, + "pattern": "metadata Metadata internalRepr Map 0 options", + "regex": ".*?metadata.+?Metadata.+?internalRepr.+?Map.+?0.+?options.*?", + "sample": " metadata: Metadata { internalRepr: Map(0) {}, options: {} }\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " metadata: Metadata { internalRepr: Map(0) {}, options: {} }\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 97 + }, + { + "x": 1730544960000, + "y": 127 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "wczz", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 3, + "pattern": "internalRepr Map content-type Array", + "regex": ".*?internalRepr.+?Map.+?content-type.+?Array.*?", + "sample": " internalRepr: Map(1) { 'content-type' => [Array] },\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " internalRepr: Map(1) { 'content-type' => [Array] },\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.039Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "pcyb", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 3, + "pattern": "metadata Metadata", + "regex": ".*?metadata.+?Metadata.*?", + "sample": " metadata: Metadata {\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " metadata: Metadata {\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.039Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "tcak", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 3, + "pattern": "options", + "regex": ".*?options.*?", + "sample": " options: {}\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " options: {}\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.039Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "xbsw", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1005, + "pattern": "No connection established Last error connect ECONNREFUSED 10.110.191.164 8080 2024 11 02T10", + "regex": ".*?No.+?connection.+?established.+?Last.+?error.+?connect.+?ECONNREFUSED.+?10\\.110\\.191\\.164.+?8080.+?2024.+?11.+?02T10.*?", + "sample": "14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080 (2024-11-02T10:56:12.143Z)", + "highlight": { + "service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + "14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080 (2024-11-02T10:56:12.143Z)" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.676Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 291 + }, + { + "x": 1730544960000, + "y": 381 + }, + { + "x": 1730544990000, + "y": 333 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "pssf", + "relevance": "critical", + "interesting": true + }, + { + "field": "error.exception.message", + "count": 3, + "pattern": "INTERNAL cart failure failed to get user cart during checkout rpc error code Unavailable desc connection error desc transport Error while dialing dial tcp connect connection refused", + "regex": ".*?INTERNAL.+?cart.+?failure.+?failed.+?to.+?get.+?user.+?cart.+?during.+?checkout.+?rpc.+?error.+?code.+?Unavailable.+?desc.+?connection.+?error.+?desc.+?transport.+?Error.+?while.+?dialing.+?dial.+?tcp.+?connect.+?connection.+?refused.*?", + "sample": "13 INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"", + "highlight": { + "service.name": [ + "frontend" + ] + }, + "metadata": { + "error.exception.message": [ + "13 INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.038Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "crai", + "relevance": "critical", + "interesting": true + } + ], + "patternsFromOtherEntities": [ + { + "field": "message", + "count": 246, + "pattern": "INFO 10.244.0.26 AAAA IN my otel demo frontend udp 39 false 512 NXDOMAIN qr rd ra 39", + "regex": ".*?INFO.+?10\\.244\\.0\\.26.+?AAAA.+?IN.+?my.+?otel.+?demo.+?frontend.+?udp.+?39.+?false.+?512.+?NXDOMAIN.+?qr.+?rd.+?ra.+?39.*?", + "sample": "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra 39 0.003716084s\n", + "highlight": { + "body.text": [ + "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra" + ], + "message": [ + "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra" + ] + }, + "metadata": { + "service.name": [ + "coredns" + ], + "message": [ + "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra 39 0.003716084s\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.917Z", + "lastOccurrence": "2024-11-02T10:56:58.646Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 6 + }, + { + "x": 1730543820000, + "y": 6 + }, + { + "x": 1730543850000, + "y": 6 + }, + { + "x": 1730543880000, + "y": 6 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 6 + }, + { + "x": 1730543970000, + "y": 6 + }, + { + "x": 1730544000000, + "y": 6 + }, + { + "x": 1730544030000, + "y": 6 + }, + { + "x": 1730544060000, + "y": 6 + }, + { + "x": 1730544090000, + "y": 6 + }, + { + "x": 1730544120000, + "y": 6 + }, + { + "x": 1730544150000, + "y": 6 + }, + { + "x": 1730544180000, + "y": 6 + }, + { + "x": 1730544210000, + "y": 6 + }, + { + "x": 1730544240000, + "y": 6 + }, + { + "x": 1730544270000, + "y": 6 + }, + { + "x": 1730544300000, + "y": 6 + }, + { + "x": 1730544330000, + "y": 6 + }, + { + "x": 1730544360000, + "y": 6 + }, + { + "x": 1730544390000, + "y": 6 + }, + { + "x": 1730544420000, + "y": 6 + }, + { + "x": 1730544450000, + "y": 6 + }, + { + "x": 1730544480000, + "y": 6 + }, + { + "x": 1730544510000, + "y": 6 + }, + { + "x": 1730544540000, + "y": 6 + }, + { + "x": 1730544570000, + "y": 6 + }, + { + "x": 1730544600000, + "y": 6 + }, + { + "x": 1730544630000, + "y": 6 + }, + { + "x": 1730544660000, + "y": 6 + }, + { + "x": 1730544690000, + "y": 6 + }, + { + "x": 1730544720000, + "y": 6 + }, + { + "x": 1730544750000, + "y": 6 + }, + { + "x": 1730544780000, + "y": 6 + }, + { + "x": 1730544810000, + "y": 6 + }, + { + "x": 1730544840000, + "y": 6 + }, + { + "x": 1730544870000, + "y": 6 + }, + { + "x": 1730544900000, + "y": 6 + }, + { + "x": 1730544930000, + "y": 6 + }, + { + "x": 1730544960000, + "y": 6 + }, + { + "x": 1730544990000, + "y": 6 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "rlzf", + "relevance": "normal", + "interesting": false + } + ], + "searches": [ + { + "fragments": [ + "10.110.191.164:8080", + "10.110.191.164", + "8080" + ], + "appearsAs": "This IP address and port are referenced in the investigated entity 'frontend'." + }, + { + "fragments": [ + "/api/cart", + "cartservice", + "/api" + ], + "appearsAs": "These URL fragments appear as attributes.request.url in the investigated entity 'frontend'. They could be related to 'cartservice'." + }, + { + "fragments": [ + "000aa", + "000bbb" + ], + "appearsAs": "These ids appear as span.id and parent.id in the investigated entity 'frontend'. They could be referring to spans found on upstream or downstream services" + } + ], + "relatedEntitiesSummaries": [ + "## Possible Relationships to `service.name:frontend`\n\n### 1. Entity: `service.name:controller`\n- **Indicators:**\n - #### Average Indicator:\n - **IP Address and Port:**\n - `frontend`: `10.110.191.164:8080`\n - `controller`: `10.244.0.26:8080`\n - **URL Fragment:**\n - `frontend`: `/api/cart`\n - `controller`: `/api/cart?session`\n- **Relationship Reasoning:**\n - The `controller` service is highly likely to be making requests to, or routing through, the `frontend` service as evidenced by the URL fragments referring to the `/api/cart` endpoint seen in both entities. Additionally, they share common IP address and port patterns indicating network interaction.\n- **Relevance Assessment:**\n - **Very High**: Given that the `controller` service handles endpoints like `/api/cart`, which directly correspond to transactions failing with a high error rate, this entity is a critical part of the interaction chain and should be closely examined.\n\n### 2. Entity: `service.name:cartservice`\n- **Indicators:**\n - #### Strong Indicator:\n - **Direct Call References:**\n - `frontend`: `details: 'cart failure: failed to get user cart during checkout: rpc error: ... desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"'\n - `cartservice`: `url.full.text:\"http://my-otel-demo-cartservice:8080/oteldemo.CartService/GetCart\"`\n- **Relationship Reasoning:**\n - The `frontend` service attempts to interact with the `cartservice` as observed by the endpoint `/oteldemo.CartService/GetCart`. Connection errors from `frontend` indicate it is calling `cartservice` and facing issues getting responses, potentially causing the 500 errors.\n- **Relevance Assessment:**\n - **Very High**: Since `cartservice` manages user cart data and the connection errors reported in `frontend` logs directly correspond to attempts to communicate with `cartservice`, this entity is a probable cause of the service failures being observed.\n\n### 3. Entity: `service.name:frontend-web`\n- **Indicators:**\n - #### Average Indicator:\n - **URL Fragment:**\n - `frontend`: `/api/cart`\n - `frontend-web`: `/api/cart`\n - #### Weak Indicator:\n - **RUM Layer Mentions:**\n - `frontend`: `frontend-web (RUM)`\n - `frontend-web`: Described in System Architecture.\n- **Relationship Reasoning:**\n - `frontend-web` captures real user interactions with the `/api/cart` endpoint providing insights into the `frontend` service which might help trace the errors and delays externally perceived by users.\n- **Relevance Assessment:**\n - **Moderate**: While `frontend-web` can show the surface errors users are experiencing, it is more of an observability layer rather than directly causing the 500 errors or impacting the service interactions upstream.\n\n### 4. Entity: `service.name:frontendproxy`\n- **Indicators:**\n - #### Average Indicator:\n - **Network Routing Indicator:**\n - `frontend`: Receives traffic from `frontendproxy`\n - `frontendproxy`: Directs traffic to `frontend`\n - #### IP Address Mention:\n - Both services reference `8080`, indicating shared routing or proxying.\n- **Relationship Reasoning:**\n - `frontendproxy` routes traffic from external sources, including simulated user requests, to `frontend`. Any issues in this proxy layer could impact the incoming traffic to `frontend`, causing errors.\n- **Relevance Assessment:**\n - **High**: Considering `frontendproxy` handles traffic routing, any misconfiguration or failures here could lead to the issues observed on the `frontend`.\n\n### 5. Entity: `service.name:coredns`\n- **Indicators:**\n - #### Weak Indicators:\n - **DNS Resolution Events:**\n - Logs showing DNS queries involving `frontend`.\n - **IP Address and Port:**\n - Shared network interactions over common ports like `8080`.\n- **Relationship Reasoning:**\n - While not directly related to application logic, `coredns` is responsible for DNS resolution within the cluster, and issues here could result in connectivity problems seen in `frontend` when trying to reach `cartservice`.\n- **Relevance Assessment:**\n - **Moderate**: While less likely to be the root cause, DNS misconfigurations or failures could indirectly contribute to connectivity issues within services like `frontend`.\n\n### Summary\n\n1. **service.name:controller** - Very High relevance due to direct endpoint interaction.\n2. **service.name:cartservice** - Very High relevance for being the direct interaction target with observed failures.\n3. **service.name:frontend-web** - Moderate relevance in monitoring layer but not direct interaction.\n4. **service.name:frontendproxy** - High relevance for routing traffic to `frontend`.\n5. **service.name:coredns** - Moderate relevance for possible DNS resolution issues." + ], + "kbEntries": [ + { + "id": "System architecture", + "text": "The architecture described here outlines a microservices-based system, where each service is implemented in a distinct programming language and communicates via gRPC, HTTP, or TCP. This system is designed to handle simulated user traffic, supported by a variety of interconnected services and components.\n\n### System Architecture\n\n1. **`loadgenerator`** - Simulates external user traffic by sending HTTP requests, which are managed by an Nginx ingress controller. This ingress directs traffic to the `frontendproxy` service.\n\n2. **`frontendproxy` (Envoy)** - Acts as a reverse proxy, routing incoming traffic from `loadgenerator` to `frontend`.\n\n3. **`frontend` (Node.js)** - The core service for user interactions, receiving HTTP traffic from `frontendproxy` and interfacing with various backend services to fulfill requests.\n\n4. **`frontend-web` (RUM)** - A Real User Monitoring (RUM) layer that runs in the user's browser, enabling insights into end-user experiences and frontend performance.\n\n5. **`adservice`** - Delivers advertisements to the `frontend` using gRPC, enhancing the user experience with relevant ad content.\n\n6. **`cartservice`** - Manages shopping cart data, including adding and removing items. It communicates over gRPC and leverages a Redis cache for data persistence.\n\n7. **`currencyservice`** - Handles currency conversions and facilitates interactions between `cartservice` and `checkoutservice` over gRPC.\n\n8. **`checkoutservice`** - Coordinates the checkout process, calling various services for payments, shipping, and emails. It utilizes both gRPC and HTTP protocols to aggregate the necessary information for order completion.\n\n9. **`emailservice`** - Sends order confirmation emails to users via gRPC, triggered by interactions with `checkoutservice`.\n\n10. **`productcatalogservice`** - Maintains the product catalog, storing details about available items and providing this data to other services via gRPC.\n\n11. **`recommendationservice`** - Generates personalized product recommendations, accessed by `frontend` over gRPC.\n\n12. **`shippingservice`** - Manages shipping information, providing essential data to `checkoutservice` over gRPC.\n\n13. **`quoteservice`** - Supplies shipping quotes over HTTP, which are accessed by `shippingservice` to estimate shipping costs.\n\n14. **`paymentservice`** - Processes payment transactions through gRPC, enabling secure and efficient payments for `checkoutservice`.\n\n15. **`accountingservice`** - Responsible for recording transactions, it connects to a Kafka queue and interacts over TCP.\n\n16. **`frauddetectionservice`** - Monitors orders for potential fraud, also interfacing with the Kafka queue over TCP to receive relevant transaction data.\n\n17. **`imageprovider` (Nginx)** - Serves static images for the frontend interface, accessible over HTTP.\n\n18. **`queue` (Kafka)** - Acts as a central message broker, facilitating communication between `accountingservice` and `frauddetectionservice`.\n\n### Key Components\nThe system is structured to enable robust, distributed communication across services, allowing each component to focus on a specific aspect of the user experience or business logic. The ingress controller, in particular, plays a critical role in directing traffic, ensuring that incoming requests from `loadgenerator` are correctly routed through `frontendproxy` and into the system’s core services.\n\nThis architecture ensures that the system can handle high traffic loads and provides a modular, flexible framework to meet user demands while monitoring for performance and security.\n", + "tokens": 733, + "score": 5 + } + ] + } + } + }, + { + "name": "investigateEntity", + "role": "tool", + "toolCallId": "call_kstyq8qXoaWRX4CJQkC6wbhR", + "response": { + "entity": { + "service.name": "cartservice" + }, + "relatedEntities": [ + { + "entity": { + "service.name": "controller" + }, + "reason": "The controller service is responsible for managing /api/cart requests. Thus, it acts as a direct upstream service to cartservice. High errors were observed in the controller when interacting with cartservice.", + "confidence": "high" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The frontend service interacts directly with the controller, handling user interactions that lead to /api/cart requests which are eventually processed by cartservice.", + "confidence": "high" + }, + { + "entity": { + "service.name": "currencyservice" + }, + "reason": "The currencyservice interacts with cartservice to handle currency conversions, acting as an upstream dependency for cartservice when performing currency-related operations on cart items.", + "confidence": "medium-high" + }, + { + "entity": { + "service.name": "checkoutservice" + }, + "reason": "The checkoutservice relies on cart data from cartservice during the checkout process, making it a downstream service dependent on the correct functioning of cartservice.", + "confidence": "medium" + }, + { + "entity": { + "service.name": "loadgenerator" + }, + "reason": "The loadgenerator service generates simulated traffic which impacts cartservice directly when testing the system's resilience.", + "confidence": "medium" + }, + { + "entity": { + "service.name": "adservice" + }, + "reason": "The adservice might indirectly impact cartservice through the frontend service by affecting the overall user experience and potentially causing indirect latency.", + "confidence": "low-medium" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The `frontend` service is highly likely to be relevant as it has a direct interaction with the `cartservice` and would be significantly impacted by any issues within the `cartservice`.", + "confidence": "very high" + }, + { + "entity": { + "service.name": "valkey" + }, + "reason": "The `valkey` service is highly relevant because it is the data store for `cartservice`, directly affecting its behavior and performance.", + "confidence": "high" + }, + { + "entity": { + "service.name": "currencyservice" + }, + "reason": "The `currencyservice` may interact with `cartservice` to handle price conversions for the items in the cart. Problems with currency conversion could cause unexpected data formats or communication failures, leading to `500 Internal Server Error` in `cartservice`.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "checkoutservice" + }, + "reason": "The `checkoutservice` could potentially depend on `cartservice` to validate and finalize items in the user's cart as part of the checkout process. If the `cartservice` fails during these operations, it could propagate errors back up to the user level through `checkoutservice`.", + "confidence": "moderate" + } + ], + "summary": "Based on the context provided, including the system architecture and data samples, the entity `service.name:cartservice` can be described as follows:\n\n### Infrastructure & Environment\n`cartservice` operates within a microservices-based architecture. It is containerized and runs within a Kubernetes environment. Specifically, the data sample indicates that the service is deployed in the `default` Kubernetes namespace and is running on a pod named `my-otel-demo-cartservice-67575c6f84-vngzw` with an IP address of `10.244.0.61`. The service environment is tagged as `opentelemetry-demo`, indicating the use of OpenTelemetry for observability purposes. The infrastructure includes a Redis cache used by the cart service for data persistence.\n\n### Communication Characteristics (Protocols and Endpoints)\n`cartservice` primarily communicates using gRPC. It handles shopping cart data including adding and removing items. The service interacts with Redis (as indicated by the `labels.db_redis_flags` attribute). Additionally, the service integrates with external feature flag providers as seen from the `feature_flag_key` and `feature_flag_provider_name` attributes, which suggests it evaluates feature flags, possibly targeting the feature key `cartServiceFailure`. \n\nThe communication endpoints and protocols from the sample data are:\n- gRPC methods: `/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`\n- HTTP endpoint: `http://my-otel-demo-flagd:8013/flagd.evaluation.v1.Service/ResolveBoolean`\n- Redis database interactions: `HGET`, `HMSET`, `EXPIRE` commands targeting various identifiers like `my-otel-demo-valkey:6379`.\n\n### Context of Entity in Investigation\nThe cart service (`cartservice`) is being investigated as it is the downstream service handling `/api/cart` requests. Issues in `cartservice` are directly contributing to the error patterns in the controller layer for the `/api/cart` endpoint. A high error rate, culminating in `500 Internal Server Error` responses, started around `2024-11-02T10:56:42.498Z`. The context indicates that the cart service plays a crucial role in managing shopping cart operations.\n\nGiven the observed high error rates and the 500 errors, `cartservice` may be experiencing issues in processing gRPC calls, feature flag evaluations, or Redis caching, which could be causing failures that propagate upstream to the controller.\n\n### Related Entities and Previous Investigations\nPreviously, errors in the controller for POST requests to `/api/cart` have been observed. This investigation is a continuation, focusing on the downstream `cartservice` which is responsible for handling these requests. This service's interaction with other entities such as Redis (for caching cart data) and external feature flag services (potentially toggling functionality) suggest that any issues in these integrations could impact the `cartservice` performance and result in the observed errors upstream in the controller.\n\nThis detailed analysis moves us to further inspect specific logs, traces, and any interdependent service metrics that may provide clues about the root cause of the high error rate in `cartservice`.\n\n### Observations for service.name:cartservice\n\n#### Startup Messages\n1. **Pattern: \"OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated.\"**\n - **Count:** 78\n - **Trend:** There was a spike at **2024-11-02T10:55:30.000Z** with 78 occurrences. Before this timestamp, the value was consistently 0.\n\n2. **Pattern: \"OTEL-SDK: [224] 'MeterProvider' Disposed.\"**\n - **Count:** 4\n - **Trend:** Occurrences were persistently recorded as 0 until a brief spike at **2024-11-02T10:55:30.000Z** with 4 instances.\n\n3. **Pattern: \"exiting...\"**\n - **Count:** 3\n - **Trend:** Consistently 0 until a minor rise at **2024-11-02T10:55:30.000Z**, with 3 instances recorded.\n\n4. **Pattern: \"Application is shutting down...\"**\n - **Count:** 2\n - **Trend:** Log entries were consistently at 0 with a brief spike at **2024-11-02T10:55:30.000Z** showing 2 instances.\n\n#### Fatal Errors\n5. **Pattern: \"FATAL: Could not start, bad entrypoint!\"**\n - **Count:** 3\n - **Trend:** This pattern shows a significant change at **2024-11-02T10:55:30.000Z** with 2 occurrences at the change point and one additional at **2024-11-02T10:56:30.000Z**. Before this period, the occurrence rate was consistently 0.\n\n### Conclusion\n\nThe patterns observed indicate that there were significant startup issues with the `cartservice` around the **2024-11-02T10:55:30.000Z** mark. Specifically, the `cartservice` encountered a fatal error (\"FATAL: Could not start, bad entrypoint!\") that aligns precisely with the rise in errors noted during this period. This error indicates that the service failed to start due to a misconfiguration or issues with the entry point. This corresponds with the sudden spike in errors and `500 Internal Server Error` responses observed in the downstream controller making POST requests to the `/api/cart` endpoint. Furthermore, logs related to the service's deactivation and shutdown support the perspective that the service was not running successfully or consistently after this time.\n\n### Timeline of significant events\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated.”\n - **Description**: Spike detected with 78 occurrences, suggesting a potential issue within the service's runtime environment.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “OTEL-SDK: [224] 'MeterProvider' Disposed.”\n - **Description**: Sudden spike of 4 occurrences suggesting a significant change in the service’s telemetry setup or a potential abnormal shutdown initiation.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “exiting...”\n - **Description**: Log entries rose to 3 incidences, signaling the cart service may be initiating an unexpected exit.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “Application is shutting down...”\n - **Description**: 2 instances of this log message indicating the application is attempting to shut down around this time.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “FATAL: Could not start, bad entrypoint!”\n - **Description**: Abrupt fatal error occurs 2 times, implying a critical misconfiguration or startup failure.\n\n- **2024-11-02T10:56:30.000Z**: \n - **Log Message**: “FATAL: Could not start, bad entrypoint!”\n - **Description**: Another occurrence of the critical fatal error, indicating the issue persisted beyond the initial spike and may have contributed to continued disruptions.\n\n- **2024-11-02T10:56:42.498Z**: \n - **Alert**: High error rate observed in the controller (98.78% error rate for POST requests to /api/cart).\n - **Description**: Starts the period of significantly high error rates contributing to 500 Internal Server Error responses. \n\n### Context and reasoning\n\nGiven the high error rate (98.78%) starting from **2024-11-02T10:56:42.498Z** for POST requests to `/api/cart`, the `cartservice` is a critical component for investigation as it handles these requests directly. From logs, there is a clear indication that significant problems began around **2024-11-02T10:55:30.000Z**, approximately one minute before the heightened error rate was observed in the upstream controller.\n\n**1. Startup Issues**: Multiple startup-related log patterns such as instruments deactivation, disposal of the MeterProvider, and application exit/shutdown messages indicate that cartservice experienced troubles initializing. Notably, the log entries “FATAL: Could not start, bad entrypoint!” directly show critical failures in service entry points likely causing the downstream failures.\n\n**2. Fatal Errors**: The fatal errors precisely correlate with the timeframe where errors spiked in the upstream service (controller). The error messages “FATAL: Could not start, bad entrypoint!” occurring multiple times reflect a misconfiguration or critical code issue that prevented the service from running properly.\n\nThus, the evidence from log patterns strongly suggests that startup and initialization problems in `cartservice`, resulting in its inconsistent availability and operational failures, is the root cause of the observed high error rates and 500 Internal Server Errors in the controller's POST requests to `/api/cart`." + }, + "data": { + "attachments": { + "alerts": [], + "slos": [], + "analysis": { + "total": 41440, + "sampled": 1000, + "fields": [ + "@timestamp:date - 964 distinct values", + "agent.name.text:text - 1 distinct values (`opentelemetry/dotnet/elastic-dotnet`)", + "agent.name:keyword - 1 distinct values (`opentelemetry/dotnet/elastic-dotnet`)", + "agent.version:keyword - 1 distinct values (`1.0.0-alpha.4`)", + "container.id:keyword - 1 distinct values (`577d6250ad96a5d0016a42ed87bd5c3a63b86edd2af0a0c04b54a1cec2a1a50a`)", + "data_stream.dataset:keyword - 1 distinct values (`apm`)", + "data_stream.namespace:keyword - 1 distinct values (`default`)", + "data_stream.type:keyword - 1 distinct values (`traces`)", + "destination.address:keyword - 2 distinct values (`my-otel-demo-flagd`, `my-otel-demo-valkey`)", + "destination.port:long - 2 distinct values (`8013`, `6379`)", + "event.outcome:keyword - 1 distinct values (`success`)", + "event.success_count:byte - 1 distinct values (`1`)", + "host.hostname:keyword - 1 distinct values (`minikube`)", + "host.name.text:text - 1 distinct values (`minikube`)", + "host.name:keyword - 1 distinct values (`minikube`)", + "http.request.method:keyword - 1 distinct values (`POST`)", + "http.response.status_code:long - 1 distinct values (`200`)", + "kubernetes.namespace:keyword - 1 distinct values (`default`)", + "kubernetes.node.name.text:text - 1 distinct values (`minikube`)", + "kubernetes.node.name:keyword - 1 distinct values (`minikube`)", + "kubernetes.pod.name.text:text - 1 distinct values (`my-otel-demo-cartservice-67575c6f84-vngzw`)", + "kubernetes.pod.name:keyword - 1 distinct values (`my-otel-demo-cartservice-67575c6f84-vngzw`)", + "kubernetes.pod.uid:keyword - 1 distinct values (`8e441d5c-4d52-42f2-937e-1f3b84a6baed`)", + "labels.app_product_id:keyword - 8 distinct values (`66VCHSJNUP`, `L9ECAV7KIM`, `OLJCESPC7Z`, `0PUK6V6EV0`, `9SIQT8TOJO`, `LS4PSXUNUM`, `HQTGWGPNH4`, `6E92ZMYYFZ`)", + "labels.app_user_id:keyword - 418 distinct values (`11c5f5d4-37b4-46d4-a04e-a97fd71b8597`, `9017f637-12af-4671-b18c-0f86a58a7bbe`, `349478d0-862e-4b14-9d54-3120dd57865f`, `2a55d360-40c5-4a32-844b-4182e8050ca3`, `b9944e91-18d6-430c-90a5-4969e1917a2d`, `1ffeffe2-4e4a-47c4-8b33-e691f116c8cc`, `92ac0a92-4a23-4aa7-866b-44cd6b5d6e26`, `76765dfc-80f8-49db-8377-249e6930dd35`, `d5c375cc-6e38-45f8-b121-30fcb3ae1001`, `bdc5ebd9-a2ee-4dbf-8dae-b88a2b2b3643`, 408 more values)", + "labels.db_redis_flags:keyword - 2 distinct values (`DemandMaster`, `None`)", + "labels.feature_flag_key:keyword - 1 distinct values (`cartServiceFailure`)", + "labels.feature_flag_provider_name:keyword - 1 distinct values (`flagd Provider`)", + "labels.feature_flag_variant:keyword - 1 distinct values (`off`)", + "labels.grpc_method:keyword - 3 distinct values (`/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "labels.grpc_status_code:keyword - 1 distinct values (`0`)", + "labels.http_route:keyword - 3 distinct values (`/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "labels.k8s_deployment_name:keyword - 1 distinct values (`my-otel-demo-cartservice`)", + "labels.k8s_pod_ip:ip - 1 distinct values (`10.244.0.61`)", + "labels.k8s_pod_start_time:keyword - 1 distinct values (`2024-11-02T10:23:09Z`)", + "labels.network_protocol_version:keyword - 1 distinct values (`2`)", + "labels.service_namespace:keyword - 1 distinct values (`opentelemetry-demo`)", + "labels.transaction_id:keyword - 995 distinct values (`6b71cc6a08847a01`, `796c855656f17eb0`, `aaa6049d68006044`, `60ad645003eda9b7`, `be3e883fd0dd1a58`, `47247987037e78b3`, `180228f348c3d599`, `587dca65bb2463f3`, `c438d3e7c15d9a4f`, `0a9f738aa8e11c7e`, 985 more values)", + "numeric_labels.app_cart_items_count:scaled_float - 10 distinct values (`8`, `1`, `16`, `2`, `20`, `5`, `4`, `10`, `3`, `0`)", + "numeric_labels.app_product_quantity:scaled_float - 6 distinct values (`5`, `1`, `2`, `10`, `3`, `4`)", + "numeric_labels.db_redis_database_index:scaled_float - 1 distinct values (`0`)", + "observer.hostname:keyword - 1 distinct values (`Darios-MacBook-Pro-2.local`)", + "observer.type:keyword - 1 distinct values (`apm-server`)", + "observer.version:keyword - 1 distinct values (`8.15.0`)", + "parent.id:keyword - 999 distinct values (`76a22c35a2b363fb`, `6e363f007dd857fc`, `499ee35b7e0dc791`, `f05ead7365bb815b`, `46709d74aeb1ac57`, `c1e7aeb4f3b66351`, `d6e80a03ce62827e`, `5eff08ed000af546`, `80be4180f1c8985e`, `9154a028a223da28`, 989 more values)", + "processor.event:keyword - 2 distinct values (`transaction`, `span`)", + "service.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "service.framework.name.text:text - 1 distinct values (`Microsoft.AspNetCore`)", + "service.framework.name:keyword - 1 distinct values (`Microsoft.AspNetCore`)", + "service.language.name.text:text - 1 distinct values (`dotnet`)", + "service.language.name:keyword - 1 distinct values (`dotnet`)", + "service.name.text:text - 1 distinct values (`cartservice`)", + "service.name:keyword - 1 distinct values (`cartservice`)", + "service.node.name.text:text - 1 distinct values (`8e441d5c-4d52-42f2-937e-1f3b84a6baed`)", + "service.node.name:keyword - 1 distinct values (`8e441d5c-4d52-42f2-937e-1f3b84a6baed`)", + "service.target.name.text:text - 3 distinct values (`my-otel-demo-flagd:8013`, `flagd.evaluation.v1.Service`, 1 more values)", + "service.target.name:keyword - 3 distinct values (`my-otel-demo-flagd:8013`, `flagd.evaluation.v1.Service`, `my-otel-demo-valkey:6379`)", + "service.target.type:keyword - 3 distinct values (`http`, `grpc`, `redis`)", + "span.db.statement:keyword - 455 distinct values (`HGET dd1f04f3-aaf1-4a76-85e4-8c64a930684e`, `EXPIRE 2538c162-9908-11ef-8217-d64fba5f23b1`, `HGET 958266ce-2169-4a2a-bcd5-090fd75cf50b`, `HGET ba92c7a8-6623-4267-8512-9cf0cb23bbf8`, `HGET d96a9e44-a9ed-4f64-8f46-5d4acd05a1fa`, `HGET 4a0d4f33-09ee-4008-a826-027dd6e889c6`, `HGET 5bc59fca-3c11-4d71-9496-c9c29b9d37d1`, `HGET 0497c8a8-2da2-4ff7-80a7-ce647916277c`, `HGET 87d37a8f-cc58-483a-aad0-fc0c91421544`, `HGET 4dea82bc-1c58-4f0a-97fd-3a1369544dc0`, 445 more values)", + "span.db.type:keyword - 1 distinct values (`redis`)", + "span.destination.service.name.text:text - 3 distinct values (`http://my-otel-demo-flagd:8013`, `my-otel-demo-flagd:8013`, 1 more values)", + "span.destination.service.name:keyword - 3 distinct values (`http://my-otel-demo-flagd:8013`, `my-otel-demo-flagd:8013`, `my-otel-demo-valkey:6379`)", + "span.destination.service.resource:keyword - 2 distinct values (`my-otel-demo-flagd:8013`, `my-otel-demo-valkey:6379`)", + "span.destination.service.type:keyword - 2 distinct values (`external`, `db`)", + "span.duration.us:long - 399 distinct values (`501`, `154`, `355`, `3766`, `818`, `657`, `203`, `127`, `715`, `1092`, 389 more values)", + "span.id:keyword - 1000 distinct values (`6b71cc6a08847a01`, `796c855656f17eb0`, `aaa6049d68006044`, `60ad645003eda9b7`, `be3e883fd0dd1a58`, `47247987037e78b3`, `180228f348c3d599`, `587dca65bb2463f3`, `c438d3e7c15d9a4f`, `0a9f738aa8e11c7e`, 990 more values)", + "span.name.text:text - 5 distinct values (`POST`, `flagd.evaluation.v1.Service/ResolveBoolean`, 3 more values)", + "span.name:keyword - 5 distinct values (`POST`, `flagd.evaluation.v1.Service/ResolveBoolean`, `HMSET`, `EXPIRE`, `HGET`)", + "span.representative_count:scaled_float - 1 distinct values (`1`)", + "span.subtype:keyword - 3 distinct values (`http`, `grpc`, `redis`)", + "span.type:keyword - 2 distinct values (`external`, `db`)", + "tags:keyword - 1 distinct values (`_geoip_database_unavailable_GeoLite2-City.mmdb`)", + "timestamp.us:long - 1000 distinct values (`1730544111451828`, `1730544606786118`, `1730544573583321`, `1730544068214001`, `1730543971566630`, `1730544035740835`, `1730543892242334`, `1730544845301548`, `1730543919324800`, `1730544697032712`, 990 more values)", + "trace.id:keyword - 920 distinct values (`de1ed71d39ca87650a8401ae46f2cac0`, `1283785f372e3335e30ab82c53008ea6`, `be3fc18a45763f00d43954ef09300042`, `bffb395c41d9a23aa7acc6b1993f64c6`, `68df2f10f7b09e787c688046ae76f6ff`, `3ba13e99d34a48133415c71b9b523321`, `6405704384b681e891e1067b1c1e6e68`, `b137359ec568679804d48c699dd49df5`, `cce045bbbdbb711a2f5cae192c337cb3`, `85743f477e557162900c88409231222a`, 910 more values)", + "transaction.duration.us:long - 441 distinct values (`2497`, `2659`, `610`, `458`, `3158`, `1484`, `436`, `536`, `2602`, `3472`, 431 more values)", + "transaction.id:keyword - 469 distinct values (`60ad645003eda9b7`, `be3e883fd0dd1a58`, `180228f348c3d599`, `0a9f738aa8e11c7e`, `66622c930742b62b`, `2493315b88140ec7`, `7950f85af72baaa0`, `0fda0e8c0af2a975`, `0504e94fae4dd7f8`, `25ec77d0c132ceef`, 459 more values)", + "transaction.name.text:text - 3 distinct values (`POST /oteldemo.CartService/EmptyCart`, `POST /oteldemo.CartService/AddItem`, 1 more values)", + "transaction.name:keyword - 3 distinct values (`POST /oteldemo.CartService/EmptyCart`, `POST /oteldemo.CartService/AddItem`, `POST /oteldemo.CartService/GetCart`)", + "transaction.representative_count:scaled_float - 1 distinct values (`1`)", + "transaction.result:keyword - 1 distinct values (`HTTP 2xx`)", + "transaction.sampled:boolean - 1 distinct values (`true`)", + "transaction.type:keyword - 1 distinct values (`request`)", + "url.domain:keyword - 1 distinct values (`my-otel-demo-cartservice`)", + "url.full.text:text - 3 distinct values (`http://my-otel-demo-cartservice:8080/oteldemo.CartService/EmptyCart`, `http://my-otel-demo-cartservice:8080/oteldemo.CartService/AddItem`, 1 more values)", + "url.full:keyword - 3 distinct values (`http://my-otel-demo-cartservice:8080/oteldemo.CartService/EmptyCart`, `http://my-otel-demo-cartservice:8080/oteldemo.CartService/AddItem`, `http://my-otel-demo-cartservice:8080/oteldemo.CartService/GetCart`)", + "url.original.text:text - 4 distinct values (`http://my-otel-demo-flagd:8013/flagd.evaluation.v1.Service/ResolveBoolean`, `/oteldemo.CartService/EmptyCart`, 2 more values)", + "url.original:keyword - 4 distinct values (`http://my-otel-demo-flagd:8013/flagd.evaluation.v1.Service/ResolveBoolean`, `/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "url.path:keyword - 3 distinct values (`/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "url.port:long - 1 distinct values (`8080`)", + "url.scheme:keyword - 1 distinct values (`http`)", + "user_agent.device.name.text:text - 1 distinct values (`Other`)", + "user_agent.device.name:keyword - 1 distinct values (`Other`)", + "user_agent.name.text:text - 1 distinct values (`Other`)", + "user_agent.name:keyword - 1 distinct values (`Other`)", + "user_agent.original.text:text - 2 distinct values (`grpc-go/1.64.0`, `grpc-node-js/1.10.11`)", + "user_agent.original:keyword - 2 distinct values (`grpc-go/1.64.0`, `grpc-node-js/1.10.11`)" + ] + }, + "ownPatterns": [ + { + "field": "message", + "count": 8414, + "pattern": "called with userId", + "regex": ".*?called.+?with.+?userId.*?", + "sample": "GetCartAsync called with userId=f96ee88a-4745-45f1-885a-16c3de0c668a", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "GetCartAsync called with userId=f96ee88a-4745-45f1-885a-16c3de0c668a" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 226 + }, + { + "x": 1730543820000, + "y": 194 + }, + { + "x": 1730543850000, + "y": 270 + }, + { + "x": 1730543880000, + "y": 200 + }, + { + "x": 1730543910000, + "y": 164 + }, + { + "x": 1730543940000, + "y": 198 + }, + { + "x": 1730543970000, + "y": 192 + }, + { + "x": 1730544000000, + "y": 228 + }, + { + "x": 1730544030000, + "y": 230 + }, + { + "x": 1730544060000, + "y": 212 + }, + { + "x": 1730544090000, + "y": 222 + }, + { + "x": 1730544120000, + "y": 210 + }, + { + "x": 1730544150000, + "y": 240 + }, + { + "x": 1730544180000, + "y": 200 + }, + { + "x": 1730544210000, + "y": 204 + }, + { + "x": 1730544240000, + "y": 222 + }, + { + "x": 1730544270000, + "y": 216 + }, + { + "x": 1730544300000, + "y": 254 + }, + { + "x": 1730544330000, + "y": 218 + }, + { + "x": 1730544360000, + "y": 228 + }, + { + "x": 1730544390000, + "y": 214 + }, + { + "x": 1730544420000, + "y": 220 + }, + { + "x": 1730544450000, + "y": 218 + }, + { + "x": 1730544480000, + "y": 224 + }, + { + "x": 1730544510000, + "y": 228 + }, + { + "x": 1730544540000, + "y": 228 + }, + { + "x": 1730544570000, + "y": 232 + }, + { + "x": 1730544600000, + "y": 218 + }, + { + "x": 1730544630000, + "y": 232 + }, + { + "x": 1730544660000, + "y": 212 + }, + { + "x": 1730544690000, + "y": 236 + }, + { + "x": 1730544720000, + "y": 246 + }, + { + "x": 1730544750000, + "y": 218 + }, + { + "x": 1730544780000, + "y": 214 + }, + { + "x": 1730544810000, + "y": 210 + }, + { + "x": 1730544840000, + "y": 228 + }, + { + "x": 1730544870000, + "y": 228 + }, + { + "x": 1730544900000, + "y": 224 + }, + { + "x": 1730544930000, + "y": 56 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "bfeu", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4835, + "pattern": "Enqueued", + "regex": ".*?Enqueued.*?", + "sample": "Enqueued", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Enqueued" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 126 + }, + { + "x": 1730543820000, + "y": 121 + }, + { + "x": 1730543850000, + "y": 171 + }, + { + "x": 1730543880000, + "y": 109 + }, + { + "x": 1730543910000, + "y": 96 + }, + { + "x": 1730543940000, + "y": 134 + }, + { + "x": 1730543970000, + "y": 99 + }, + { + "x": 1730544000000, + "y": 130 + }, + { + "x": 1730544030000, + "y": 132 + }, + { + "x": 1730544060000, + "y": 119 + }, + { + "x": 1730544090000, + "y": 126 + }, + { + "x": 1730544120000, + "y": 118 + }, + { + "x": 1730544150000, + "y": 133 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 125 + }, + { + "x": 1730544240000, + "y": 124 + }, + { + "x": 1730544270000, + "y": 124 + }, + { + "x": 1730544300000, + "y": 161 + }, + { + "x": 1730544330000, + "y": 126 + }, + { + "x": 1730544360000, + "y": 140 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 120 + }, + { + "x": 1730544450000, + "y": 125 + }, + { + "x": 1730544480000, + "y": 128 + }, + { + "x": 1730544510000, + "y": 120 + }, + { + "x": 1730544540000, + "y": 123 + }, + { + "x": 1730544570000, + "y": 135 + }, + { + "x": 1730544600000, + "y": 120 + }, + { + "x": 1730544630000, + "y": 139 + }, + { + "x": 1730544660000, + "y": 113 + }, + { + "x": 1730544690000, + "y": 154 + }, + { + "x": 1730544720000, + "y": 154 + }, + { + "x": 1730544750000, + "y": 115 + }, + { + "x": 1730544780000, + "y": 120 + }, + { + "x": 1730544810000, + "y": 114 + }, + { + "x": 1730544840000, + "y": 133 + }, + { + "x": 1730544870000, + "y": 127 + }, + { + "x": 1730544900000, + "y": 139 + }, + { + "x": 1730544930000, + "y": 35 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "oacl", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4835, + "pattern": "ResponseReceived", + "regex": ".*?ResponseReceived.*?", + "sample": "ResponseReceived", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "ResponseReceived" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 126 + }, + { + "x": 1730543820000, + "y": 121 + }, + { + "x": 1730543850000, + "y": 171 + }, + { + "x": 1730543880000, + "y": 109 + }, + { + "x": 1730543910000, + "y": 96 + }, + { + "x": 1730543940000, + "y": 134 + }, + { + "x": 1730543970000, + "y": 99 + }, + { + "x": 1730544000000, + "y": 130 + }, + { + "x": 1730544030000, + "y": 132 + }, + { + "x": 1730544060000, + "y": 119 + }, + { + "x": 1730544090000, + "y": 126 + }, + { + "x": 1730544120000, + "y": 118 + }, + { + "x": 1730544150000, + "y": 133 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 125 + }, + { + "x": 1730544240000, + "y": 124 + }, + { + "x": 1730544270000, + "y": 124 + }, + { + "x": 1730544300000, + "y": 161 + }, + { + "x": 1730544330000, + "y": 126 + }, + { + "x": 1730544360000, + "y": 140 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 120 + }, + { + "x": 1730544450000, + "y": 125 + }, + { + "x": 1730544480000, + "y": 128 + }, + { + "x": 1730544510000, + "y": 120 + }, + { + "x": 1730544540000, + "y": 123 + }, + { + "x": 1730544570000, + "y": 135 + }, + { + "x": 1730544600000, + "y": 120 + }, + { + "x": 1730544630000, + "y": 139 + }, + { + "x": 1730544660000, + "y": 113 + }, + { + "x": 1730544690000, + "y": 154 + }, + { + "x": 1730544720000, + "y": 154 + }, + { + "x": 1730544750000, + "y": 115 + }, + { + "x": 1730544780000, + "y": 120 + }, + { + "x": 1730544810000, + "y": 114 + }, + { + "x": 1730544840000, + "y": 133 + }, + { + "x": 1730544870000, + "y": 127 + }, + { + "x": 1730544900000, + "y": 139 + }, + { + "x": 1730544930000, + "y": 35 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "hhud", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4835, + "pattern": "Sent", + "regex": ".*?Sent.*?", + "sample": "Sent", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Sent" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 126 + }, + { + "x": 1730543820000, + "y": 121 + }, + { + "x": 1730543850000, + "y": 171 + }, + { + "x": 1730543880000, + "y": 109 + }, + { + "x": 1730543910000, + "y": 96 + }, + { + "x": 1730543940000, + "y": 134 + }, + { + "x": 1730543970000, + "y": 99 + }, + { + "x": 1730544000000, + "y": 130 + }, + { + "x": 1730544030000, + "y": 132 + }, + { + "x": 1730544060000, + "y": 119 + }, + { + "x": 1730544090000, + "y": 126 + }, + { + "x": 1730544120000, + "y": 118 + }, + { + "x": 1730544150000, + "y": 133 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 125 + }, + { + "x": 1730544240000, + "y": 124 + }, + { + "x": 1730544270000, + "y": 124 + }, + { + "x": 1730544300000, + "y": 161 + }, + { + "x": 1730544330000, + "y": 126 + }, + { + "x": 1730544360000, + "y": 140 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 120 + }, + { + "x": 1730544450000, + "y": 125 + }, + { + "x": 1730544480000, + "y": 128 + }, + { + "x": 1730544510000, + "y": 120 + }, + { + "x": 1730544540000, + "y": 123 + }, + { + "x": 1730544570000, + "y": 135 + }, + { + "x": 1730544600000, + "y": 120 + }, + { + "x": 1730544630000, + "y": 139 + }, + { + "x": 1730544660000, + "y": 113 + }, + { + "x": 1730544690000, + "y": 154 + }, + { + "x": 1730544720000, + "y": 154 + }, + { + "x": 1730544750000, + "y": 115 + }, + { + "x": 1730544780000, + "y": 120 + }, + { + "x": 1730544810000, + "y": 114 + }, + { + "x": 1730544840000, + "y": 133 + }, + { + "x": 1730544870000, + "y": 127 + }, + { + "x": 1730544900000, + "y": 139 + }, + { + "x": 1730544930000, + "y": 35 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ttbh", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4441, + "pattern": "info 0", + "regex": ".*?info.+?0.*?", + "sample": "info: cartservice.cartstore.ValkeyCartStore[0]\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "info: cartservice.cartstore.ValkeyCartStore[0]\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.586Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 117 + }, + { + "x": 1730543820000, + "y": 104 + }, + { + "x": 1730543850000, + "y": 146 + }, + { + "x": 1730543880000, + "y": 103 + }, + { + "x": 1730543910000, + "y": 86 + }, + { + "x": 1730543940000, + "y": 110 + }, + { + "x": 1730543970000, + "y": 97 + }, + { + "x": 1730544000000, + "y": 119 + }, + { + "x": 1730544030000, + "y": 120 + }, + { + "x": 1730544060000, + "y": 110 + }, + { + "x": 1730544090000, + "y": 116 + }, + { + "x": 1730544120000, + "y": 109 + }, + { + "x": 1730544150000, + "y": 124 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 109 + }, + { + "x": 1730544240000, + "y": 115 + }, + { + "x": 1730544270000, + "y": 113 + }, + { + "x": 1730544300000, + "y": 137 + }, + { + "x": 1730544330000, + "y": 114 + }, + { + "x": 1730544360000, + "y": 122 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 113 + }, + { + "x": 1730544450000, + "y": 114 + }, + { + "x": 1730544480000, + "y": 117 + }, + { + "x": 1730544510000, + "y": 116 + }, + { + "x": 1730544540000, + "y": 117 + }, + { + "x": 1730544570000, + "y": 121 + }, + { + "x": 1730544600000, + "y": 112 + }, + { + "x": 1730544630000, + "y": 123 + }, + { + "x": 1730544660000, + "y": 108 + }, + { + "x": 1730544690000, + "y": 129 + }, + { + "x": 1730544720000, + "y": 132 + }, + { + "x": 1730544750000, + "y": 111 + }, + { + "x": 1730544780000, + "y": 111 + }, + { + "x": 1730544810000, + "y": 108 + }, + { + "x": 1730544840000, + "y": 120 + }, + { + "x": 1730544870000, + "y": 118 + }, + { + "x": 1730544900000, + "y": 120 + }, + { + "x": 1730544930000, + "y": 73 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "eahn", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4152, + "pattern": "Fetch cart", + "regex": ".*?Fetch.+?cart.*?", + "sample": "Fetch cart", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Fetch cart" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 112 + }, + { + "x": 1730543820000, + "y": 94 + }, + { + "x": 1730543850000, + "y": 132 + }, + { + "x": 1730543880000, + "y": 100 + }, + { + "x": 1730543910000, + "y": 80 + }, + { + "x": 1730543940000, + "y": 97 + }, + { + "x": 1730543970000, + "y": 96 + }, + { + "x": 1730544000000, + "y": 113 + }, + { + "x": 1730544030000, + "y": 113 + }, + { + "x": 1730544060000, + "y": 105 + }, + { + "x": 1730544090000, + "y": 111 + }, + { + "x": 1730544120000, + "y": 104 + }, + { + "x": 1730544150000, + "y": 119 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 100 + }, + { + "x": 1730544240000, + "y": 110 + }, + { + "x": 1730544270000, + "y": 107 + }, + { + "x": 1730544300000, + "y": 123 + }, + { + "x": 1730544330000, + "y": 107 + }, + { + "x": 1730544360000, + "y": 112 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 109 + }, + { + "x": 1730544450000, + "y": 108 + }, + { + "x": 1730544480000, + "y": 111 + }, + { + "x": 1730544510000, + "y": 114 + }, + { + "x": 1730544540000, + "y": 114 + }, + { + "x": 1730544570000, + "y": 112 + }, + { + "x": 1730544600000, + "y": 107 + }, + { + "x": 1730544630000, + "y": 114 + }, + { + "x": 1730544660000, + "y": 105 + }, + { + "x": 1730544690000, + "y": 115 + }, + { + "x": 1730544720000, + "y": 119 + }, + { + "x": 1730544750000, + "y": 109 + }, + { + "x": 1730544780000, + "y": 106 + }, + { + "x": 1730544810000, + "y": 105 + }, + { + "x": 1730544840000, + "y": 113 + }, + { + "x": 1730544870000, + "y": 113 + }, + { + "x": 1730544900000, + "y": 109 + }, + { + "x": 1730544930000, + "y": 27 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "xpjx", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 602, + "pattern": "called with userId 11ef 8217 d64fba5f23b1", + "regex": ".*?called.+?with.+?userId.+?11ef.+?8217.+?d64fba5f23b1.*?", + "sample": "GetCartAsync called with userId=fb462b14-9908-11ef-8217-d64fba5f23b1", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "GetCartAsync called with userId=fb462b14-9908-11ef-8217-d64fba5f23b1" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.219Z", + "lastOccurrence": "2024-11-02T10:55:34.364Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 12 + }, + { + "x": 1730543820000, + "y": 26 + }, + { + "x": 1730543850000, + "y": 34 + }, + { + "x": 1730543880000, + "y": 6 + }, + { + "x": 1730543910000, + "y": 16 + }, + { + "x": 1730543940000, + "y": 30 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 14 + }, + { + "x": 1730544030000, + "y": 18 + }, + { + "x": 1730544060000, + "y": 12 + }, + { + "x": 1730544090000, + "y": 10 + }, + { + "x": 1730544120000, + "y": 12 + }, + { + "x": 1730544150000, + "y": 12 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 22 + }, + { + "x": 1730544240000, + "y": 12 + }, + { + "x": 1730544270000, + "y": 14 + }, + { + "x": 1730544300000, + "y": 36 + }, + { + "x": 1730544330000, + "y": 18 + }, + { + "x": 1730544360000, + "y": 24 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 10 + }, + { + "x": 1730544450000, + "y": 14 + }, + { + "x": 1730544480000, + "y": 14 + }, + { + "x": 1730544510000, + "y": 4 + }, + { + "x": 1730544540000, + "y": 6 + }, + { + "x": 1730544570000, + "y": 26 + }, + { + "x": 1730544600000, + "y": 14 + }, + { + "x": 1730544630000, + "y": 22 + }, + { + "x": 1730544660000, + "y": 8 + }, + { + "x": 1730544690000, + "y": 34 + }, + { + "x": 1730544720000, + "y": 34 + }, + { + "x": 1730544750000, + "y": 4 + }, + { + "x": 1730544780000, + "y": 12 + }, + { + "x": 1730544810000, + "y": 6 + }, + { + "x": 1730544840000, + "y": 16 + }, + { + "x": 1730544870000, + "y": 12 + }, + { + "x": 1730544900000, + "y": 28 + }, + { + "x": 1730544930000, + "y": 8 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ckdv", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 382, + "pattern": "AddItemAsync called with userId 11ef 8217 d64fba5f23b1 productId quantity", + "regex": ".*?AddItemAsync.+?called.+?with.+?userId.+?11ef.+?8217.+?d64fba5f23b1.+?productId.+?quantity.*?", + "sample": "AddItemAsync called with userId=fc4e8196-9908-11ef-8217-d64fba5f23b1, productId=1YMWWN1N4O, quantity=10", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "AddItemAsync called with userId=fc4e8196-9908-11ef-8217-d64fba5f23b1, productId=1YMWWN1N4O, quantity=10" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.216Z", + "lastOccurrence": "2024-11-02T10:55:34.363Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 8 + }, + { + "x": 1730543820000, + "y": 14 + }, + { + "x": 1730543850000, + "y": 22 + }, + { + "x": 1730543880000, + "y": 6 + }, + { + "x": 1730543910000, + "y": 8 + }, + { + "x": 1730543940000, + "y": 22 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 10 + }, + { + "x": 1730544030000, + "y": 10 + }, + { + "x": 1730544060000, + "y": 8 + }, + { + "x": 1730544090000, + "y": 10 + }, + { + "x": 1730544120000, + "y": 8 + }, + { + "x": 1730544150000, + "y": 8 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 14 + }, + { + "x": 1730544240000, + "y": 8 + }, + { + "x": 1730544270000, + "y": 10 + }, + { + "x": 1730544300000, + "y": 20 + }, + { + "x": 1730544330000, + "y": 10 + }, + { + "x": 1730544360000, + "y": 16 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 6 + }, + { + "x": 1730544450000, + "y": 10 + }, + { + "x": 1730544480000, + "y": 10 + }, + { + "x": 1730544510000, + "y": 4 + }, + { + "x": 1730544540000, + "y": 6 + }, + { + "x": 1730544570000, + "y": 10 + }, + { + "x": 1730544600000, + "y": 6 + }, + { + "x": 1730544630000, + "y": 14 + }, + { + "x": 1730544660000, + "y": 4 + }, + { + "x": 1730544690000, + "y": 22 + }, + { + "x": 1730544720000, + "y": 18 + }, + { + "x": 1730544750000, + "y": 4 + }, + { + "x": 1730544780000, + "y": 8 + }, + { + "x": 1730544810000, + "y": 6 + }, + { + "x": 1730544840000, + "y": 12 + }, + { + "x": 1730544870000, + "y": 8 + }, + { + "x": 1730544900000, + "y": 16 + }, + { + "x": 1730544930000, + "y": 4 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "habq", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 216, + "pattern": "GetCartAsync called with userId", + "regex": ".*?GetCartAsync.+?called.+?with.+?userId.*?", + "sample": "GetCartAsync called with userId=", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "GetCartAsync called with userId=" + ] + }, + "firstOccurrence": "2024-11-02T10:36:36.912Z", + "lastOccurrence": "2024-11-02T10:55:33.022Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 10 + }, + { + "x": 1730543820000, + "y": 4 + }, + { + "x": 1730543850000, + "y": 6 + }, + { + "x": 1730543880000, + "y": 4 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 4 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 10 + }, + { + "x": 1730544030000, + "y": 10 + }, + { + "x": 1730544060000, + "y": 6 + }, + { + "x": 1730544090000, + "y": 2 + }, + { + "x": 1730544120000, + "y": 8 + }, + { + "x": 1730544150000, + "y": 8 + }, + { + "x": 1730544180000, + "y": 4 + }, + { + "x": 1730544210000, + "y": 6 + }, + { + "x": 1730544240000, + "y": 2 + }, + { + "x": 1730544270000, + "y": 4 + }, + { + "x": 1730544300000, + "y": 8 + }, + { + "x": 1730544330000, + "y": 4 + }, + { + "x": 1730544360000, + "y": 4 + }, + { + "x": 1730544390000, + "y": 2 + }, + { + "x": 1730544420000, + "y": 8 + }, + { + "x": 1730544450000, + "y": 4 + }, + { + "x": 1730544480000, + "y": 10 + }, + { + "x": 1730544510000, + "y": 2 + }, + { + "x": 1730544540000, + "y": 12 + }, + { + "x": 1730544570000, + "y": 8 + }, + { + "x": 1730544600000, + "y": 8 + }, + { + "x": 1730544630000, + "y": 6 + }, + { + "x": 1730544660000, + "y": 6 + }, + { + "x": 1730544690000, + "y": 2 + }, + { + "x": 1730544720000, + "y": 6 + }, + { + "x": 1730544750000, + "y": 6 + }, + { + "x": 1730544780000, + "y": 4 + }, + { + "x": 1730544810000, + "y": 2 + }, + { + "x": 1730544840000, + "y": 6 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 8 + }, + { + "x": 1730544930000, + "y": 4 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "tzfi", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 55, + "pattern": "Empty cart", + "regex": ".*?Empty.+?cart.*?", + "sample": "Empty cart", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Empty cart" + ] + }, + "firstOccurrence": "2024-11-02T10:36:41.806Z", + "lastOccurrence": "2024-11-02T10:55:32.654Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 1 + }, + { + "x": 1730543820000, + "y": 3 + }, + { + "x": 1730543850000, + "y": 3 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 2 + }, + { + "x": 1730543940000, + "y": 2 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 1 + }, + { + "x": 1730544030000, + "y": 2 + }, + { + "x": 1730544060000, + "y": 1 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 1 + }, + { + "x": 1730544150000, + "y": 1 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 2 + }, + { + "x": 1730544240000, + "y": 1 + }, + { + "x": 1730544270000, + "y": 1 + }, + { + "x": 1730544300000, + "y": 4 + }, + { + "x": 1730544330000, + "y": 2 + }, + { + "x": 1730544360000, + "y": 2 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 1 + }, + { + "x": 1730544450000, + "y": 1 + }, + { + "x": 1730544480000, + "y": 1 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 4 + }, + { + "x": 1730544600000, + "y": 2 + }, + { + "x": 1730544630000, + "y": 2 + }, + { + "x": 1730544660000, + "y": 1 + }, + { + "x": 1730544690000, + "y": 3 + }, + { + "x": 1730544720000, + "y": 4 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 1 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 1 + }, + { + "x": 1730544870000, + "y": 1 + }, + { + "x": 1730544900000, + "y": 3 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ldwf", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 55, + "pattern": "feature_flag", + "regex": ".*?feature_flag.*?", + "sample": "feature_flag", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "feature_flag" + ] + }, + "firstOccurrence": "2024-11-02T10:36:41.809Z", + "lastOccurrence": "2024-11-02T10:55:32.655Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 1 + }, + { + "x": 1730543820000, + "y": 3 + }, + { + "x": 1730543850000, + "y": 3 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 2 + }, + { + "x": 1730543940000, + "y": 2 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 1 + }, + { + "x": 1730544030000, + "y": 2 + }, + { + "x": 1730544060000, + "y": 1 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 1 + }, + { + "x": 1730544150000, + "y": 1 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 2 + }, + { + "x": 1730544240000, + "y": 1 + }, + { + "x": 1730544270000, + "y": 1 + }, + { + "x": 1730544300000, + "y": 4 + }, + { + "x": 1730544330000, + "y": 2 + }, + { + "x": 1730544360000, + "y": 2 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 1 + }, + { + "x": 1730544450000, + "y": 1 + }, + { + "x": 1730544480000, + "y": 1 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 4 + }, + { + "x": 1730544600000, + "y": 2 + }, + { + "x": 1730544630000, + "y": 2 + }, + { + "x": 1730544660000, + "y": 1 + }, + { + "x": 1730544690000, + "y": 3 + }, + { + "x": 1730544720000, + "y": 4 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 1 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 1 + }, + { + "x": 1730544870000, + "y": 1 + }, + { + "x": 1730544900000, + "y": 3 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "noer", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 2, + "pattern": "OTEL-SDK BatchActivityExportProcessor exporting to OtlpTraceExporter dropped items", + "regex": ".*?OTEL-SDK.+?BatchActivityExportProcessor.+?exporting.+?to.+?OtlpTraceExporter.+?dropped.+?items.*?", + "sample": "OTEL-SDK: [224] 'BatchActivityExportProcessor' exporting to 'OtlpTraceExporter' dropped '0' items.", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "OTEL-SDK: [224] 'BatchActivityExportProcessor' exporting to 'OtlpTraceExporter' dropped '0' items." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.580Z", + "lastOccurrence": "2024-11-02T10:55:36.580Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "fiia", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1, + "pattern": "my-otel-demo-valkey open", + "regex": ".*?my-otel-demo-valkey.+?open.*?", + "sample": "my-otel-demo-valkey (10.106.38.244:6379) open\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "my-otel-demo-valkey (10.106.38.244:6379) open\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:34.993Z", + "lastOccurrence": "2024-11-02T10:55:34.993Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "uzyf", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 78, + "pattern": "OTEL-SDK Instrument Meter has been deactivated", + "regex": ".*?OTEL-SDK.+?Instrument.+?Meter.+?has.+?been.+?deactivated.*?", + "sample": "OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated.", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.585Z", + "lastOccurrence": "2024-11-02T10:55:36.586Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 78 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "lciw", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 4, + "pattern": "OTEL-SDK Disposed", + "regex": ".*?OTEL-SDK.+?Disposed.*?", + "sample": "OTEL-SDK: [224] 'MeterProvider' Disposed.", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "OTEL-SDK: [224] 'MeterProvider' Disposed." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.581Z", + "lastOccurrence": "2024-11-02T10:55:36.586Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 4 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "woqa", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 3, + "pattern": "exiting", + "regex": ".*?exiting.*?", + "sample": "exiting...\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "exiting...\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:55.622Z", + "lastOccurrence": "2024-11-02T10:56:51.618Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 1 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ucuj", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 2, + "pattern": "Application is shutting down", + "regex": ".*?Application.+?is.+?shutting.+?down.*?", + "sample": "Application is shutting down...", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Application is shutting down..." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.560Z", + "lastOccurrence": "2024-11-02T10:55:36.560Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "cgip", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 3, + "pattern": "FATAL Could not start entrypoint", + "regex": ".*?FATAL.+?Could.+?not.+?start.+?entrypoint.*?", + "sample": "FATAL: Could not start, bad entrypoint!\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "FATAL: Could not start, bad entrypoint!\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:35.618Z", + "lastOccurrence": "2024-11-02T10:56:31.617Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 1 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "spike", + "significance": "high", + "change_point": 38, + "p_value": 1.8274885276877215e-20, + "timestamp": "2024-11-02T10:55:30.000Z" + }, + "shortId": "reqc", + "relevance": "critical", + "interesting": true + } + ], + "patternsFromOtherEntities": [ + { + "field": "message", + "count": 26, + "pattern": "I1102 replica_set.go Finished syncing logger replicaset-controller kind ReplicaSet key duration", + "regex": ".*?I1102.+?replica_set\\.go.+?Finished.+?syncing.+?logger.+?replicaset-controller.+?kind.+?ReplicaSet.+?key.+?duration.*?", + "sample": "I1102 10:55:33.013871 1 replica_set.go:679] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice-7b585f4fb7\" duration=\"101.333µs\"\n", + "highlight": { + "body.text": [ + "] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice" + ], + "message": [ + "] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice" + ] + }, + "metadata": { + "service.name": [ + "kube-controller-manager" + ], + "message": [ + "I1102 10:55:33.013871 1 replica_set.go:679] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice-7b585f4fb7\" duration=\"101.333µs\"\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:33.014Z", + "lastOccurrence": "2024-11-02T10:56:52.568Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 19 + }, + { + "x": 1730544960000, + "y": 2 + }, + { + "x": 1730544990000, + "y": 5 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "spike", + "significance": "high", + "change_point": 38, + "p_value": 7.313742705200763e-147, + "timestamp": "2024-11-02T10:55:30.000Z" + }, + "shortId": "ofdx", + "relevance": "normal", + "interesting": true + }, + { + "field": "message", + "count": 21, + "pattern": "object apiVersion events.k8s.io/v1 deprecatedCount deprecatedFirstTimestamp deprecatedLastTimestamp deprecatedSource component eventTime null kind Event metadata creationTimestamp managedFields apiVersion v1 fieldsType FieldsV1 fieldsV1", + "regex": ".*?object.+?apiVersion.+?events\\.k8s\\.io/v1.+?deprecatedCount.+?deprecatedFirstTimestamp.+?deprecatedLastTimestamp.+?deprecatedSource.+?component.+?eventTime.+?null.+?kind.+?Event.+?metadata.+?creationTimestamp.+?managedFields.+?apiVersion.+?v1.+?fieldsType.+?FieldsV1.+?fieldsV1.*?", + "sample": "{\"object\":{\"apiVersion\":\"events.k8s.io/v1\",\"deprecatedCount\":2,\"deprecatedFirstTimestamp\":\"2024-11-02T10:56:17Z\",\"deprecatedLastTimestamp\":\"2024-11-02T10:56:52Z\",\"deprecatedSource\":{\"component\":\"kubelet\",\"host\":\"minikube\"},\"eventTime\":null,\"kind\":\"Event\",\"metadata\":{\"creationTimestamp\":\"2024-11-02T10:56:17Z\",\"managedFields\":[{\"apiVersion\":\"v1\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:count\":{},\"f:firstTimestamp\":{},\"f:involvedObject\":{},\"f:lastTimestamp\":{},\"f:message\":{},\"f:reason\":{},\"f:reportingComponent\":{},\"f:reportingInstance\":{},\"f:source\":{\"f:component\":{},\"f:host\":{}},\"f:type\":{}},\"manager\":\"kubelet\",\"operation\":\"Update\",\"time\":\"2024-11-02T10:56:52Z\"}],\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz.1804217ce2cb3041\",\"namespace\":\"default\",\"resourceVersion\":\"375301\",\"uid\":\"cf211b63-a5e4-40c4-bed3-fe90aea76a38\"},\"note\":\"Back-off restarting failed container cartservice in pod my-otel-demo-cartservice-7b585f4fb7-79ccz_default(9580334a-7ef9-4ad5-baf6-0ad10ae49853)\",\"reason\":\"BackOff\",\"regarding\":{\"apiVersion\":\"v1\",\"fieldPath\":\"spec.containers{cartservice}\",\"kind\":\"Pod\",\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz\",\"namespace\":\"default\",\"resourceVersion\":\"375163\",\"uid\":\"9580334a-7ef9-4ad5-baf6-0ad10ae49853\"},\"reportingController\":\"kubelet\",\"reportingInstance\":\"minikube\",\"type\":\"Warning\"},\"type\":\"MODIFIED\"}", + "highlight": { + "message": [ + "},\"manager\":\"kubelet\",\"operation\":\"Update\",\"time\":\"2024-11-02T10:56:52Z\"}],\"name\":\"my-otel-demo-cartservice", + "375301\",\"uid\":\"cf211b63-a5e4-40c4-bed3-fe90aea76a38\"},\"note\":\"Back-off restarting failed container cartservice", + "in pod my-otel-demo-cartservice-7b585f4fb7-79ccz_default(9580334a-7ef9-4ad5-baf6-0ad10ae49853)\",\"reason", + "\":\"BackOff\",\"regarding\":{\"apiVersion\":\"v1\",\"fieldPath\":\"spec.containers{cartservice}\",\"kind\":\"Pod\",\"name", + "\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz\",\"namespace\":\"default\",\"resourceVersion\":\"375163\",\"uid\":" + ] + }, + "metadata": { + "service.name": [ + "unknown" + ], + "message": [ + "{\"object\":{\"apiVersion\":\"events.k8s.io/v1\",\"deprecatedCount\":2,\"deprecatedFirstTimestamp\":\"2024-11-02T10:56:17Z\",\"deprecatedLastTimestamp\":\"2024-11-02T10:56:52Z\",\"deprecatedSource\":{\"component\":\"kubelet\",\"host\":\"minikube\"},\"eventTime\":null,\"kind\":\"Event\",\"metadata\":{\"creationTimestamp\":\"2024-11-02T10:56:17Z\",\"managedFields\":[{\"apiVersion\":\"v1\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:count\":{},\"f:firstTimestamp\":{},\"f:involvedObject\":{},\"f:lastTimestamp\":{},\"f:message\":{},\"f:reason\":{},\"f:reportingComponent\":{},\"f:reportingInstance\":{},\"f:source\":{\"f:component\":{},\"f:host\":{}},\"f:type\":{}},\"manager\":\"kubelet\",\"operation\":\"Update\",\"time\":\"2024-11-02T10:56:52Z\"}],\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz.1804217ce2cb3041\",\"namespace\":\"default\",\"resourceVersion\":\"375301\",\"uid\":\"cf211b63-a5e4-40c4-bed3-fe90aea76a38\"},\"note\":\"Back-off restarting failed container cartservice in pod my-otel-demo-cartservice-7b585f4fb7-79ccz_default(9580334a-7ef9-4ad5-baf6-0ad10ae49853)\",\"reason\":\"BackOff\",\"regarding\":{\"apiVersion\":\"v1\",\"fieldPath\":\"spec.containers{cartservice}\",\"kind\":\"Pod\",\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz\",\"namespace\":\"default\",\"resourceVersion\":\"375163\",\"uid\":\"9580334a-7ef9-4ad5-baf6-0ad10ae49853\"},\"reportingController\":\"kubelet\",\"reportingInstance\":\"minikube\",\"type\":\"Warning\"},\"type\":\"MODIFIED\"}" + ] + }, + "firstOccurrence": "2024-11-02T10:55:33.051Z", + "lastOccurrence": "2024-11-02T10:56:52.563Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 16 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 4 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "spike", + "significance": "high", + "change_point": 38, + "p_value": 2.9750218550484796e-168, + "timestamp": "2024-11-02T10:55:30.000Z" + }, + "shortId": "lqan", + "relevance": "critical", + "interesting": true + } + ], + "searches": [ + { + "fragments": [ + "AddItemAsync called with userId", + "productId", + "quantity" + ], + "appearsAs": "userId, productId, and quantity are referenced in the request handling log entries in cartservice." + }, + { + "fragments": [ + "GetCartAsync called with userId" + ], + "appearsAs": "userId is referenced in the request handling log entries in cartservice." + }, + { + "fragments": [ + "Empty cart" + ], + "appearsAs": "Empty cart operation logs in cartservice." + }, + { + "fragments": [ + "cartServiceFailure" + ], + "appearsAs": "Feature flag 'cartServiceFailure' in cartservice." + }, + { + "fragments": [ + "10.244.0.61" + ], + "appearsAs": "IP address of the cartservice pod." + }, + { + "fragments": [ + "my-otel-demo-cartservice-67575c6f84-vngzw" + ], + "appearsAs": "Pod name of cartservice." + }, + { + "fragments": [ + "my-otel-demo-valkey:6379" + ], + "appearsAs": "Redis service used by cartservice." + }, + { + "fragments": [ + "/oteldemo.CartService/AddItem", + "/oteldemo.CartService/GetCart", + "/oteldemo.CartService/EmptyCart" + ], + "appearsAs": "Endpoints handled by cartservice." + }, + { + "fragments": [ + "flagd.evaluation.v1.Service" + ], + "appearsAs": "gRPC service involved in feature flag evaluation by cartservice." + }, + { + "fragments": [ + "HGET", + "EXPIRE", + "HMSET" + ], + "appearsAs": "Redis commands executed by cartservice." + } + ], + "relatedEntitiesSummaries": [ + "Based on the context provided, the following entities are potentially related to `service.name:cartservice` as either upstream or downstream dependencies. Below is a detailed analysis based on the indicators of relationships obtained from the observability data:\n\n### 1. Related Entity: `service.name:controller`\n- **Indicators**: \n - **Average Indicator**: The logs highlight high error rates (500 Internal Server Error) in the controller when POST requests to the `/api/cart` endpoint are made.\n - **Field values**: In controller logs, `message` contains references to the `/api/cart` endpoint, which is handled by `cartservice`.\n- **Reasoning**: \n - The `controller` service is responsible for managing /api/cart requests. Thus, it acts as a direct upstream service to `cartservice`.\n - It implies `controller` calls `cartservice` as part of handling requests, leading to the observed errors.\n- **Likeliness**: High\n - The `controller` service is likely a highly relevant entity since it directly interfaces with `cartservice`, with the errors surfacing in it when interacting with `cartservice`.\n\n### 2. Related Entity: `service.name:frontend`\n- **Indicators**:\n - **Strong Indicator**: The system architecture documentation shows that `frontend` interacts with various backend services, including those for user interactions such as adding items to the cart.\n - **Field values**: In the knowledge base, `frontend` receives HTTP traffic routed through `frontendproxy` and interacts with `cartservice`.\n- **Reasoning**:\n - `frontend` would act as a direct upstream service that communicates with `controller`, providing requests that eventually hit `cartservice`.\n- **Likeliness**: High\n - As `frontend` handles initial user interactions and routes requests to `cartservice`, it is essential in the request flow leading to `/api/cart` errors.\n\n### 3. Related Entity: `service.name:currencyservice`\n- **Indicators**:\n - **Strong Indicator**: The architecture description indicates `currencyservice` interacts with `cartservice` to handle currency conversions.\n - **Field values**: The entries show gRPC calls between `cartservice` and `currencyservice` for conversion operations.\n- **Reasoning**:\n - `currencyservice` may be an upstream dependency for `cartservice` for any currency-related manipulations on cart items.\n- **Likeliness**: Medium-High\n - While `currencyservice` interacts with `cartservice`, its exact influence on the direct issue might not be as strong as `controller` or `frontend`.\n\n### 4. Related Entity: `service.name:checkoutservice`\n- **Indicators**:\n - **Strong Indicator**: The architecture documentation lists `checkoutservice` as coordinating the checkout process involving interactions with `cartservice`.\n - **Field values**: Distributed tracing data could show `checkoutservice` making gRPC or HTTP calls to `cartservice`.\n- **Reasoning**:\n - `checkoutservice` is likely a downstream service that relies on the correct functioning of `cartservice` to gather cart data before proceeding to checkout operations.\n- **Likeliness**: Medium\n - Although primarily a downstream dependency, it processes important data from `cartservice`.\n\n### 5. Related Entity: `service.name:adservice`\n- **Indicators**:\n - **Weak Indicator**: `adservice` interfaces with `frontend` via gRPC to deliver ad content, it also might indirectly influence `cartservice` interactions if ads are part of the cart page.\n - **Field values**: Architectural details state `adservice` operates in the background to enhance user experience but no direct interaction with `cartservice`.\n- **Reasoning**:\n - While not directly connected, any latency in `adservice` may affect the overall user experience, causing indirect latency in calls that reach `cartservice`.\n- **Likeliness**: Low-Medium\n - Indirect connection and latent repercussions on user interactions with cart functionality.\n\n### 6. Related Entity: `service.name:loadgenerator`\n- **Indicators**:\n - **Average Indicator**: The `loadgenerator` service generates simulated traffic, handled by `frontendproxy` to stress-test services like `cartservice`.\n - **Field values**: Traffic from `loadgenerator` is routed through `frontendproxy` to reach core services, including `cartservice`.\n- **Reasoning**:\n - As an external input simulator, its traffic generation directly impacts `cartservice` when testing load resilience.\n- **Likeliness**: Medium\n - The errors can be a result of load tests conducted by `loadgenerator` surfacing bottlenecks in `cartservice`.\n\n### Summary\n\nTo conclude, the following entities are likely relevant to the issue in `service.name:cartservice`:\n\n1. **controller**: Direct upstream causing the 500 errors - High relevance.\n2. **frontend**: Upstream service initiating user interactions - High relevance.\n3. **currencyservice**: Upstream service for currency conversion - Medium-High relevance.\n4. **checkoutservice**: Downstream service relying on cart data - Medium relevance.\n5. **adservice**: Possible indirect impact due to latency - Low-Medium relevance.\n6. **loadgenerator**: Simulated traffic testing the system's resilience - Medium relevance.\n\nBy analyzing these entities, you can prioritize investigating `controller`, `frontend`, and `currencyservice` first, as they have the most direct and potentially impactful interactions with `cartservice`.", + "Based on the context provided, the architecture outlined in the knowledge base entry, the document analysis for the `cartservice`, and search keywords, several possible relationships with the `cartservice` can be identified. Below are the entities identified as highly relevant to the `cartservice`, along with the indicators, evidence, reasoning, and overall relevance.\n\n### 1. Entity: `service.name:frontend`\n\n#### Indicators and Evidence\n- **Average Indicator - URL Paths:**\n - `http://my-otel-demo-cartservice:8080/oteldemo.CartService/AddItem`\n - `http://my-otel-demo-cartservice:8080/oteldemo.CartService/GetCart`\n - `http://my-otel-demo-cartservice:8080/oteldemo.CartService/EmptyCart`\n- **Average Indicator - Logs:**\n - Observed in the search highlights for `service.name:frontend`: `@opentelemetry/api/build/src/api/context.js:60:46) at ServiceClientImpl.clientMethodTrace [as getCart]`\n- **Knowledge Base:**\n - The `frontend` is the core service for user interactions, receiving HTTP traffic and making requests to the `cartservice`.\n\n#### Relationship and Reasoning\nThe `frontend` service interacts directly with the `cartservice` by making requests to handle user shopping cart operations, such as adding items, retrieving the cart, and emptying the cart. Given the observed log entries and URL paths, it is reasonable to infer that the `frontend` service acts as a caller, while the `cartservice` acts as the callee. The high error rates observed in the context likely originate from the `frontend` making POST requests to the `/api/cart` endpoint handled by the `cartservice`.\n\n#### Likelihood of Relevance\n- **Very High:** The `frontend` service is highly likely to be relevant as it has a direct interaction with the `cartservice` and would be significantly impacted by any issues within the `cartservice`.\n\n### 2. Entity: `service.name:valkey`\n\n#### Indicators and Evidence\n- **Average Indicator - Redis Service:**\n - `my-otel-demo-valkey:6379`\n- **Average Indicator - Log Entries:**\n - Log patterns show Redis command execution by `cartservice`: `HGET`, `EXPIRE`, `HMSET`\n\n#### Relationship and Reasoning\nThe `valkey` service corresponds to the Redis instance that `cartservice` uses for data persistence. The `cartservice` makes frequent calls to Redis to perform operations such as fetching, expiring, and setting data, which is crucial for managing shopping cart state. As Redis is an upstream dependency, connection or data integrity issues here could directly contribute to the `500 Internal Server Errors` observed in the `cartservice`.\n\n#### Likelihood of Relevance\n- **High:** The `valkey` service is highly relevant because it is the data store for `cartservice`, directly affecting its behavior and performance.\n\n### 3. Entity: `service.name:currencyservice`\n\n#### Indicators and Evidence\n- **Average Indicator - gRPC Services:**\n - Mentioned in the architecture as handling currency conversions.\n- **Knowledge Base:**\n - Communicates with `cartservice` over gRPC to facilitate currency operations.\n\n#### Relationship and Reasoning\nThe `currencyservice` may interact with `cartservice` to handle price conversions for the items in the cart. Problems with currency conversion could cause unexpected data formats or communication failures, leading to `500 Internal Server Errors` in `cartservice`.\n\n#### Likelihood of Relevance\n- **Moderate:** While the interaction exists, whether it directly contributes to the 500 errors specifically observed at `/api/cart` endpoints would require further investigation.\n\n### 4. Entity: `service.name:checkoutservice`\n\n#### Indicators and Evidence\n- **Strong Indicator - gRPC Services:**\n - Interacts with `checkoutservice` during the checkout process.\n- **Knowledge Base:**\n - Handles interactions including calls to `cartservice` for finalizing orders.\n\n#### Relationship and Reasoning\nThe `checkoutservice` could potentially depend on `cartservice` to validate and finalize items in the user's cart as part of the checkout process. If the `cartservice` fails during these operations, it could propagate errors back up to the user level through `checkoutservice`.\n\n#### Likelihood of Relevance\n- **Moderate:** The relevance depends on whether the observed errors are occurring during checkout processes or general cart manipulations.\n\n### 5. Entity: `service.name:flagd`\n\n#### Indicators and Evidence\n- **Average Indicator - Feature Flag Evaluation:**\n - `flagd.evaluation.v1.Service`\n- **Log Metadata:**\n - `labels.feature_flag_key:keyword - cartServiceFailure`\n- **Trace Destination Service:**\n - `my-otel-demo-flagd:8013`\n\n#### Relationship and Reasoning\nThe `flagd` service is responsible for evaluating feature flags, such as the `cartServiceFailure`. If the feature flagging system is improperly toggled (e.g.: feature flag set to fail operations), it might contribute to the high error rates observed in `cartservice`.\n\n#### Likelihood of Relevance\n- **Moderate:** The feature flags might be causing or amplifying existing issues within the `cartservice`.\n\n### Summary\nFrom the observed data, the following entities are highly likely to be related to `cartservice` with respect to the given context:\n\n1. **`frontend`** - High relevance due to direct HTTP interaction with `cartservice`.\n2. **`valkey`** - High relevance as the Redis data store for `cartservice`.\n\nEntities with moderate likelihood:\n\n1. **`currencyservice`** - Related via gRPC for currency operations.\n2. **`checkoutservice`** - Potentially related during checkout processes.\n3. **`flagd`** - Related to feature flag evaluations involving `cartservice`.\n\nThese relationships cover both upstream dependencies affecting `cartservice` and downstream services impacted by `cartservice` issues, aiding in comprehensive issue diagnosis." + ], + "kbEntries": [ + { + "id": "System architecture", + "text": "The architecture described here outlines a microservices-based system, where each service is implemented in a distinct programming language and communicates via gRPC, HTTP, or TCP. This system is designed to handle simulated user traffic, supported by a variety of interconnected services and components.\n\n### System Architecture\n\n1. **`loadgenerator`** - Simulates external user traffic by sending HTTP requests, which are managed by an Nginx ingress controller. This ingress directs traffic to the `frontendproxy` service.\n\n2. **`frontendproxy` (Envoy)** - Acts as a reverse proxy, routing incoming traffic from `loadgenerator` to `frontend`.\n\n3. **`frontend` (Node.js)** - The core service for user interactions, receiving HTTP traffic from `frontendproxy` and interfacing with various backend services to fulfill requests.\n\n4. **`frontend-web` (RUM)** - A Real User Monitoring (RUM) layer that runs in the user's browser, enabling insights into end-user experiences and frontend performance.\n\n5. **`adservice`** - Delivers advertisements to the `frontend` using gRPC, enhancing the user experience with relevant ad content.\n\n6. **`cartservice`** - Manages shopping cart data, including adding and removing items. It communicates over gRPC and leverages a Redis cache for data persistence.\n\n7. **`currencyservice`** - Handles currency conversions and facilitates interactions between `cartservice` and `checkoutservice` over gRPC.\n\n8. **`checkoutservice`** - Coordinates the checkout process, calling various services for payments, shipping, and emails. It utilizes both gRPC and HTTP protocols to aggregate the necessary information for order completion.\n\n9. **`emailservice`** - Sends order confirmation emails to users via gRPC, triggered by interactions with `checkoutservice`.\n\n10. **`productcatalogservice`** - Maintains the product catalog, storing details about available items and providing this data to other services via gRPC.\n\n11. **`recommendationservice`** - Generates personalized product recommendations, accessed by `frontend` over gRPC.\n\n12. **`shippingservice`** - Manages shipping information, providing essential data to `checkoutservice` over gRPC.\n\n13. **`quoteservice`** - Supplies shipping quotes over HTTP, which are accessed by `shippingservice` to estimate shipping costs.\n\n14. **`paymentservice`** - Processes payment transactions through gRPC, enabling secure and efficient payments for `checkoutservice`.\n\n15. **`accountingservice`** - Responsible for recording transactions, it connects to a Kafka queue and interacts over TCP.\n\n16. **`frauddetectionservice`** - Monitors orders for potential fraud, also interfacing with the Kafka queue over TCP to receive relevant transaction data.\n\n17. **`imageprovider` (Nginx)** - Serves static images for the frontend interface, accessible over HTTP.\n\n18. **`queue` (Kafka)** - Acts as a central message broker, facilitating communication between `accountingservice` and `frauddetectionservice`.\n\n### Key Components\nThe system is structured to enable robust, distributed communication across services, allowing each component to focus on a specific aspect of the user experience or business logic. The ingress controller, in particular, plays a critical role in directing traffic, ensuring that incoming requests from `loadgenerator` are correctly routed through `frontendproxy` and into the system’s core services.\n\nThis architecture ensures that the system can handle high traffic loads and provides a modular, flexible framework to meet user demands while monitoring for performance and security.\n", + "tokens": 733, + "score": 5 + } + ] + } + } + }, + { + "role": "assistant", + "content": "", + "toolCalls": [ + { + "toolCallId": "call_KJwmI3xgY1gcstI4MVd4Olcf", + "function": { + "name": "observe", + "arguments": { + "observe": true + } + } + } + ] + }, + { + "name": "observe", + "response": { + "content": "### Acknowledgement of Investigations\n\nThe investigations of the `cartservice` and `frontend` services have provided valuable insights into the root cause of the high error rates observed in the `controller` service for POST requests to the `/api/cart` endpoint. The initial context indicated a severe and rapid onset of errors beginning at `2024-11-02T10:56:42.498Z`.\n\n### Key Observations\n\n**Investigation of Service `cartservice`**:\n- **Infrastructure & Environment**: The `cartservice` runs in a Kubernetes environment within the `default` namespace and uses Redis for data persistence.\n- **Log Patterns**:\n - Significant startup issues and fatal errors around `2024-11-02T10:55:30.000Z`.\n - A fatal \"bad entrypoint\" error prevented the service from starting correctly, leading to high error rates.\n- **Communication Endpoints**:\n - gRPC methods targeting shopping cart data.\n- **Critical Errors**:\n - \"FATAL: Could not start, bad entrypoint!\" log messages indicate critical failure.\n- **Implications**:\n - Startup issues likely prevented `cartservice` from responding to requests, causing downstream problems observed in the `controller` service.\n\n**Investigation of Service `frontend`**:\n- **Infrastructure & Environment**: The `frontend` service operates within a Kubernetes environment, communicating primarily via HTTP and gRPC.\n- **Log Patterns**:\n - Sharp increase in connection errors to the `cartservice` starting around `2024-11-02T10:55:30.000Z`.\n - \"ECONNREFUSED\" errors indicate failed attempts to connect to the `cartservice`.\n- **Communication Endpoints**:\n - Interacts with `cartservice` via gRPC.\n- **Critical Errors**:\n - \"No connection established\" and \"failed to get user cart during checkout\" errors.\n- **Implications**:\n - Communication failures between `frontend` and `cartservice` are strongly correlated with the high error rates in the `controller` service.\n\n### Timeline of Significant Events\n\n**2024-11-02T10:55:30.000Z**:\n- **`cartservice` Logs**:\n - \"OTEL-SDK: Instrument deactivation\" (78 occurrences), \"MeterProvider Disposed\" (4 occurrences), \"exiting...\" (3 occurrences), \"Application is shutting down...\" (2 occurrences), \"FATAL: Could not start, bad entrypoint!\" (2 occurrences).\n - **Meaning**: Indicates various startup and shutdown issues, especially the fatal entrypoint error that likely prevented the service from running correctly.\n\n**2024-11-02T10:55:30.000Z**:\n- **`frontend` Logs**:\n - \"No connection established\" errors (291 occurrences) and \"cart failure due to connection error\" (2 occurrences).\n - **Meaning**: Indicates immediate connection issues between `frontend` and `cartservice`.\n\n**2024-11-02T10:56:00.000Z**:\n- **`frontend` Logs**:\n - Further increase in \"No connection established\" errors (381 occurrences).\n - **Meaning**: Continued significant connection issues.\n\n**2024-11-02T10:56:30.000Z**:\n- **`cartservice` Logs**:\n - Another \"bad entrypoint\" fatal error (1 additional occurrence).\n - **Meaning**: Persistent startup issues continue to cause service failures.\n\n**2024-11-02T10:56:42.498Z**:\n- **Alert Triggered**:\n - High error rate (98.78%) in `controller` for POST requests to `/api/cart`.\n - **Meaning**: The timing aligns closely with the observed spikes in connection errors and startup issues, indicating a direct correlation.\n\n**2024-11-02T10:57:00.000Z**:\n- **`frontend` Logs**:\n - Connection errors return to zero occurrences.\n - **Meaning**: The immediate spike in connection issues appears to have subsided.\n\n### Context and Reasoning\n\nThe investigations reveal a clear temporal correlation and a logical causal pathway leading from the critical errors in `cartservice` to the observed high error rates in the `controller` service. The startup and initialization issues in `cartservice` around `2024-11-02T10:55:30.000Z` prevented it from functioning correctly, leading to connection refusal errors when `frontend` tried to access it. In turn, these failures propagated upstream, causing the `controller` to report high error rates for POST requests to the `/api/cart` endpoint.\n\n### Next Steps and Conclusion\n\n**Conclusion**:\n- The root cause of the high error rates in the `controller` service is the startup failure and persistent initialization issues in the `cartservice`.\n- These failures led to widespread connection refusal errors in `frontend`, which directly affected the ability of the `controller` to process requests to the `/api/cart` endpoint.\n\n**Recommendation**:\n- Address the misconfiguration or code issues in `cartservice` that are causing the fatal startup errors.\n- Ensure `cartservice` can reliably start and maintain stable communication with `frontend`.\n\nHaving thoroughly investigated the involved services, identified the key issues, and established the root cause, there is no need to further investigate other entities at this time. Conclude the investigation upon resolving the identified startup and initialization issues in `cartservice`." + }, + "data": { + "content": "### Acknowledgement of Investigations\n\nThe investigations of the `cartservice` and `frontend` services have provided valuable insights into the root cause of the high error rates observed in the `controller` service for POST requests to the `/api/cart` endpoint. The initial context indicated a severe and rapid onset of errors beginning at `2024-11-02T10:56:42.498Z`.\n\n### Key Observations\n\n**Investigation of Service `cartservice`**:\n- **Infrastructure & Environment**: The `cartservice` runs in a Kubernetes environment within the `default` namespace and uses Redis for data persistence.\n- **Log Patterns**:\n - Significant startup issues and fatal errors around `2024-11-02T10:55:30.000Z`.\n - A fatal \"bad entrypoint\" error prevented the service from starting correctly, leading to high error rates.\n- **Communication Endpoints**:\n - gRPC methods targeting shopping cart data.\n- **Critical Errors**:\n - \"FATAL: Could not start, bad entrypoint!\" log messages indicate critical failure.\n- **Implications**:\n - Startup issues likely prevented `cartservice` from responding to requests, causing downstream problems observed in the `controller` service.\n\n**Investigation of Service `frontend`**:\n- **Infrastructure & Environment**: The `frontend` service operates within a Kubernetes environment, communicating primarily via HTTP and gRPC.\n- **Log Patterns**:\n - Sharp increase in connection errors to the `cartservice` starting around `2024-11-02T10:55:30.000Z`.\n - \"ECONNREFUSED\" errors indicate failed attempts to connect to the `cartservice`.\n- **Communication Endpoints**:\n - Interacts with `cartservice` via gRPC.\n- **Critical Errors**:\n - \"No connection established\" and \"failed to get user cart during checkout\" errors.\n- **Implications**:\n - Communication failures between `frontend` and `cartservice` are strongly correlated with the high error rates in the `controller` service.\n\n### Timeline of Significant Events\n\n**2024-11-02T10:55:30.000Z**:\n- **`cartservice` Logs**:\n - \"OTEL-SDK: Instrument deactivation\" (78 occurrences), \"MeterProvider Disposed\" (4 occurrences), \"exiting...\" (3 occurrences), \"Application is shutting down...\" (2 occurrences), \"FATAL: Could not start, bad entrypoint!\" (2 occurrences).\n - **Meaning**: Indicates various startup and shutdown issues, especially the fatal entrypoint error that likely prevented the service from running correctly.\n\n**2024-11-02T10:55:30.000Z**:\n- **`frontend` Logs**:\n - \"No connection established\" errors (291 occurrences) and \"cart failure due to connection error\" (2 occurrences).\n - **Meaning**: Indicates immediate connection issues between `frontend` and `cartservice`.\n\n**2024-11-02T10:56:00.000Z**:\n- **`frontend` Logs**:\n - Further increase in \"No connection established\" errors (381 occurrences).\n - **Meaning**: Continued significant connection issues.\n\n**2024-11-02T10:56:30.000Z**:\n- **`cartservice` Logs**:\n - Another \"bad entrypoint\" fatal error (1 additional occurrence).\n - **Meaning**: Persistent startup issues continue to cause service failures.\n\n**2024-11-02T10:56:42.498Z**:\n- **Alert Triggered**:\n - High error rate (98.78%) in `controller` for POST requests to `/api/cart`.\n - **Meaning**: The timing aligns closely with the observed spikes in connection errors and startup issues, indicating a direct correlation.\n\n**2024-11-02T10:57:00.000Z**:\n- **`frontend` Logs**:\n - Connection errors return to zero occurrences.\n - **Meaning**: The immediate spike in connection issues appears to have subsided.\n\n### Context and Reasoning\n\nThe investigations reveal a clear temporal correlation and a logical causal pathway leading from the critical errors in `cartservice` to the observed high error rates in the `controller` service. The startup and initialization issues in `cartservice` around `2024-11-02T10:55:30.000Z` prevented it from functioning correctly, leading to connection refusal errors when `frontend` tried to access it. In turn, these failures propagated upstream, causing the `controller` to report high error rates for POST requests to the `/api/cart` endpoint.\n\n### Next Steps and Conclusion\n\n**Conclusion**:\n- The root cause of the high error rates in the `controller` service is the startup failure and persistent initialization issues in the `cartservice`.\n- These failures led to widespread connection refusal errors in `frontend`, which directly affected the ability of the `controller` to process requests to the `/api/cart` endpoint.\n\n**Recommendation**:\n- Address the misconfiguration or code issues in `cartservice` that are causing the fatal startup errors.\n- Ensure `cartservice` can reliably start and maintain stable communication with `frontend`.\n\nHaving thoroughly investigated the involved services, identified the key issues, and established the root cause, there is no need to further investigate other entities at this time. Conclude the investigation upon resolving the identified startup and initialization issues in `cartservice`.", + "investigations": [ + { + "attachments": { + "alerts": [], + "slos": [], + "analysis": { + "total": 41440, + "sampled": 1000, + "fields": [ + "@timestamp:date - 964 distinct values", + "agent.name.text:text - 1 distinct values (`opentelemetry/dotnet/elastic-dotnet`)", + "agent.name:keyword - 1 distinct values (`opentelemetry/dotnet/elastic-dotnet`)", + "agent.version:keyword - 1 distinct values (`1.0.0-alpha.4`)", + "container.id:keyword - 1 distinct values (`577d6250ad96a5d0016a42ed87bd5c3a63b86edd2af0a0c04b54a1cec2a1a50a`)", + "data_stream.dataset:keyword - 1 distinct values (`apm`)", + "data_stream.namespace:keyword - 1 distinct values (`default`)", + "data_stream.type:keyword - 1 distinct values (`traces`)", + "destination.address:keyword - 2 distinct values (`my-otel-demo-flagd`, `my-otel-demo-valkey`)", + "destination.port:long - 2 distinct values (`8013`, `6379`)", + "event.outcome:keyword - 1 distinct values (`success`)", + "event.success_count:byte - 1 distinct values (`1`)", + "host.hostname:keyword - 1 distinct values (`minikube`)", + "host.name.text:text - 1 distinct values (`minikube`)", + "host.name:keyword - 1 distinct values (`minikube`)", + "http.request.method:keyword - 1 distinct values (`POST`)", + "http.response.status_code:long - 1 distinct values (`200`)", + "kubernetes.namespace:keyword - 1 distinct values (`default`)", + "kubernetes.node.name.text:text - 1 distinct values (`minikube`)", + "kubernetes.node.name:keyword - 1 distinct values (`minikube`)", + "kubernetes.pod.name.text:text - 1 distinct values (`my-otel-demo-cartservice-67575c6f84-vngzw`)", + "kubernetes.pod.name:keyword - 1 distinct values (`my-otel-demo-cartservice-67575c6f84-vngzw`)", + "kubernetes.pod.uid:keyword - 1 distinct values (`8e441d5c-4d52-42f2-937e-1f3b84a6baed`)", + "labels.app_product_id:keyword - 8 distinct values (`66VCHSJNUP`, `L9ECAV7KIM`, `OLJCESPC7Z`, `0PUK6V6EV0`, `9SIQT8TOJO`, `LS4PSXUNUM`, `HQTGWGPNH4`, `6E92ZMYYFZ`)", + "labels.app_user_id:keyword - 418 distinct values (`11c5f5d4-37b4-46d4-a04e-a97fd71b8597`, `9017f637-12af-4671-b18c-0f86a58a7bbe`, `349478d0-862e-4b14-9d54-3120dd57865f`, `2a55d360-40c5-4a32-844b-4182e8050ca3`, `b9944e91-18d6-430c-90a5-4969e1917a2d`, `1ffeffe2-4e4a-47c4-8b33-e691f116c8cc`, `92ac0a92-4a23-4aa7-866b-44cd6b5d6e26`, `76765dfc-80f8-49db-8377-249e6930dd35`, `d5c375cc-6e38-45f8-b121-30fcb3ae1001`, `bdc5ebd9-a2ee-4dbf-8dae-b88a2b2b3643`, 408 more values)", + "labels.db_redis_flags:keyword - 2 distinct values (`DemandMaster`, `None`)", + "labels.feature_flag_key:keyword - 1 distinct values (`cartServiceFailure`)", + "labels.feature_flag_provider_name:keyword - 1 distinct values (`flagd Provider`)", + "labels.feature_flag_variant:keyword - 1 distinct values (`off`)", + "labels.grpc_method:keyword - 3 distinct values (`/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "labels.grpc_status_code:keyword - 1 distinct values (`0`)", + "labels.http_route:keyword - 3 distinct values (`/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "labels.k8s_deployment_name:keyword - 1 distinct values (`my-otel-demo-cartservice`)", + "labels.k8s_pod_ip:ip - 1 distinct values (`10.244.0.61`)", + "labels.k8s_pod_start_time:keyword - 1 distinct values (`2024-11-02T10:23:09Z`)", + "labels.network_protocol_version:keyword - 1 distinct values (`2`)", + "labels.service_namespace:keyword - 1 distinct values (`opentelemetry-demo`)", + "labels.transaction_id:keyword - 995 distinct values (`6b71cc6a08847a01`, `796c855656f17eb0`, `aaa6049d68006044`, `60ad645003eda9b7`, `be3e883fd0dd1a58`, `47247987037e78b3`, `180228f348c3d599`, `587dca65bb2463f3`, `c438d3e7c15d9a4f`, `0a9f738aa8e11c7e`, 985 more values)", + "numeric_labels.app_cart_items_count:scaled_float - 10 distinct values (`8`, `1`, `16`, `2`, `20`, `5`, `4`, `10`, `3`, `0`)", + "numeric_labels.app_product_quantity:scaled_float - 6 distinct values (`5`, `1`, `2`, `10`, `3`, `4`)", + "numeric_labels.db_redis_database_index:scaled_float - 1 distinct values (`0`)", + "observer.hostname:keyword - 1 distinct values (`Darios-MacBook-Pro-2.local`)", + "observer.type:keyword - 1 distinct values (`apm-server`)", + "observer.version:keyword - 1 distinct values (`8.15.0`)", + "parent.id:keyword - 999 distinct values (`76a22c35a2b363fb`, `6e363f007dd857fc`, `499ee35b7e0dc791`, `f05ead7365bb815b`, `46709d74aeb1ac57`, `c1e7aeb4f3b66351`, `d6e80a03ce62827e`, `5eff08ed000af546`, `80be4180f1c8985e`, `9154a028a223da28`, 989 more values)", + "processor.event:keyword - 2 distinct values (`transaction`, `span`)", + "service.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "service.framework.name.text:text - 1 distinct values (`Microsoft.AspNetCore`)", + "service.framework.name:keyword - 1 distinct values (`Microsoft.AspNetCore`)", + "service.language.name.text:text - 1 distinct values (`dotnet`)", + "service.language.name:keyword - 1 distinct values (`dotnet`)", + "service.name.text:text - 1 distinct values (`cartservice`)", + "service.name:keyword - 1 distinct values (`cartservice`)", + "service.node.name.text:text - 1 distinct values (`8e441d5c-4d52-42f2-937e-1f3b84a6baed`)", + "service.node.name:keyword - 1 distinct values (`8e441d5c-4d52-42f2-937e-1f3b84a6baed`)", + "service.target.name.text:text - 3 distinct values (`my-otel-demo-flagd:8013`, `flagd.evaluation.v1.Service`, 1 more values)", + "service.target.name:keyword - 3 distinct values (`my-otel-demo-flagd:8013`, `flagd.evaluation.v1.Service`, `my-otel-demo-valkey:6379`)", + "service.target.type:keyword - 3 distinct values (`http`, `grpc`, `redis`)", + "span.db.statement:keyword - 455 distinct values (`HGET dd1f04f3-aaf1-4a76-85e4-8c64a930684e`, `EXPIRE 2538c162-9908-11ef-8217-d64fba5f23b1`, `HGET 958266ce-2169-4a2a-bcd5-090fd75cf50b`, `HGET ba92c7a8-6623-4267-8512-9cf0cb23bbf8`, `HGET d96a9e44-a9ed-4f64-8f46-5d4acd05a1fa`, `HGET 4a0d4f33-09ee-4008-a826-027dd6e889c6`, `HGET 5bc59fca-3c11-4d71-9496-c9c29b9d37d1`, `HGET 0497c8a8-2da2-4ff7-80a7-ce647916277c`, `HGET 87d37a8f-cc58-483a-aad0-fc0c91421544`, `HGET 4dea82bc-1c58-4f0a-97fd-3a1369544dc0`, 445 more values)", + "span.db.type:keyword - 1 distinct values (`redis`)", + "span.destination.service.name.text:text - 3 distinct values (`http://my-otel-demo-flagd:8013`, `my-otel-demo-flagd:8013`, 1 more values)", + "span.destination.service.name:keyword - 3 distinct values (`http://my-otel-demo-flagd:8013`, `my-otel-demo-flagd:8013`, `my-otel-demo-valkey:6379`)", + "span.destination.service.resource:keyword - 2 distinct values (`my-otel-demo-flagd:8013`, `my-otel-demo-valkey:6379`)", + "span.destination.service.type:keyword - 2 distinct values (`external`, `db`)", + "span.duration.us:long - 399 distinct values (`501`, `154`, `355`, `3766`, `818`, `657`, `203`, `127`, `715`, `1092`, 389 more values)", + "span.id:keyword - 1000 distinct values (`6b71cc6a08847a01`, `796c855656f17eb0`, `aaa6049d68006044`, `60ad645003eda9b7`, `be3e883fd0dd1a58`, `47247987037e78b3`, `180228f348c3d599`, `587dca65bb2463f3`, `c438d3e7c15d9a4f`, `0a9f738aa8e11c7e`, 990 more values)", + "span.name.text:text - 5 distinct values (`POST`, `flagd.evaluation.v1.Service/ResolveBoolean`, 3 more values)", + "span.name:keyword - 5 distinct values (`POST`, `flagd.evaluation.v1.Service/ResolveBoolean`, `HMSET`, `EXPIRE`, `HGET`)", + "span.representative_count:scaled_float - 1 distinct values (`1`)", + "span.subtype:keyword - 3 distinct values (`http`, `grpc`, `redis`)", + "span.type:keyword - 2 distinct values (`external`, `db`)", + "tags:keyword - 1 distinct values (`_geoip_database_unavailable_GeoLite2-City.mmdb`)", + "timestamp.us:long - 1000 distinct values (`1730544111451828`, `1730544606786118`, `1730544573583321`, `1730544068214001`, `1730543971566630`, `1730544035740835`, `1730543892242334`, `1730544845301548`, `1730543919324800`, `1730544697032712`, 990 more values)", + "trace.id:keyword - 920 distinct values (`de1ed71d39ca87650a8401ae46f2cac0`, `1283785f372e3335e30ab82c53008ea6`, `be3fc18a45763f00d43954ef09300042`, `bffb395c41d9a23aa7acc6b1993f64c6`, `68df2f10f7b09e787c688046ae76f6ff`, `3ba13e99d34a48133415c71b9b523321`, `6405704384b681e891e1067b1c1e6e68`, `b137359ec568679804d48c699dd49df5`, `cce045bbbdbb711a2f5cae192c337cb3`, `85743f477e557162900c88409231222a`, 910 more values)", + "transaction.duration.us:long - 441 distinct values (`2497`, `2659`, `610`, `458`, `3158`, `1484`, `436`, `536`, `2602`, `3472`, 431 more values)", + "transaction.id:keyword - 469 distinct values (`60ad645003eda9b7`, `be3e883fd0dd1a58`, `180228f348c3d599`, `0a9f738aa8e11c7e`, `66622c930742b62b`, `2493315b88140ec7`, `7950f85af72baaa0`, `0fda0e8c0af2a975`, `0504e94fae4dd7f8`, `25ec77d0c132ceef`, 459 more values)", + "transaction.name.text:text - 3 distinct values (`POST /oteldemo.CartService/EmptyCart`, `POST /oteldemo.CartService/AddItem`, 1 more values)", + "transaction.name:keyword - 3 distinct values (`POST /oteldemo.CartService/EmptyCart`, `POST /oteldemo.CartService/AddItem`, `POST /oteldemo.CartService/GetCart`)", + "transaction.representative_count:scaled_float - 1 distinct values (`1`)", + "transaction.result:keyword - 1 distinct values (`HTTP 2xx`)", + "transaction.sampled:boolean - 1 distinct values (`true`)", + "transaction.type:keyword - 1 distinct values (`request`)", + "url.domain:keyword - 1 distinct values (`my-otel-demo-cartservice`)", + "url.full.text:text - 3 distinct values (`http://my-otel-demo-cartservice:8080/oteldemo.CartService/EmptyCart`, `http://my-otel-demo-cartservice:8080/oteldemo.CartService/AddItem`, 1 more values)", + "url.full:keyword - 3 distinct values (`http://my-otel-demo-cartservice:8080/oteldemo.CartService/EmptyCart`, `http://my-otel-demo-cartservice:8080/oteldemo.CartService/AddItem`, `http://my-otel-demo-cartservice:8080/oteldemo.CartService/GetCart`)", + "url.original.text:text - 4 distinct values (`http://my-otel-demo-flagd:8013/flagd.evaluation.v1.Service/ResolveBoolean`, `/oteldemo.CartService/EmptyCart`, 2 more values)", + "url.original:keyword - 4 distinct values (`http://my-otel-demo-flagd:8013/flagd.evaluation.v1.Service/ResolveBoolean`, `/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "url.path:keyword - 3 distinct values (`/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`)", + "url.port:long - 1 distinct values (`8080`)", + "url.scheme:keyword - 1 distinct values (`http`)", + "user_agent.device.name.text:text - 1 distinct values (`Other`)", + "user_agent.device.name:keyword - 1 distinct values (`Other`)", + "user_agent.name.text:text - 1 distinct values (`Other`)", + "user_agent.name:keyword - 1 distinct values (`Other`)", + "user_agent.original.text:text - 2 distinct values (`grpc-go/1.64.0`, `grpc-node-js/1.10.11`)", + "user_agent.original:keyword - 2 distinct values (`grpc-go/1.64.0`, `grpc-node-js/1.10.11`)" + ] + }, + "ownPatterns": [ + { + "field": "message", + "count": 8414, + "pattern": "called with userId", + "regex": ".*?called.+?with.+?userId.*?", + "sample": "GetCartAsync called with userId=f96ee88a-4745-45f1-885a-16c3de0c668a", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "GetCartAsync called with userId=f96ee88a-4745-45f1-885a-16c3de0c668a" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 226 + }, + { + "x": 1730543820000, + "y": 194 + }, + { + "x": 1730543850000, + "y": 270 + }, + { + "x": 1730543880000, + "y": 200 + }, + { + "x": 1730543910000, + "y": 164 + }, + { + "x": 1730543940000, + "y": 198 + }, + { + "x": 1730543970000, + "y": 192 + }, + { + "x": 1730544000000, + "y": 228 + }, + { + "x": 1730544030000, + "y": 230 + }, + { + "x": 1730544060000, + "y": 212 + }, + { + "x": 1730544090000, + "y": 222 + }, + { + "x": 1730544120000, + "y": 210 + }, + { + "x": 1730544150000, + "y": 240 + }, + { + "x": 1730544180000, + "y": 200 + }, + { + "x": 1730544210000, + "y": 204 + }, + { + "x": 1730544240000, + "y": 222 + }, + { + "x": 1730544270000, + "y": 216 + }, + { + "x": 1730544300000, + "y": 254 + }, + { + "x": 1730544330000, + "y": 218 + }, + { + "x": 1730544360000, + "y": 228 + }, + { + "x": 1730544390000, + "y": 214 + }, + { + "x": 1730544420000, + "y": 220 + }, + { + "x": 1730544450000, + "y": 218 + }, + { + "x": 1730544480000, + "y": 224 + }, + { + "x": 1730544510000, + "y": 228 + }, + { + "x": 1730544540000, + "y": 228 + }, + { + "x": 1730544570000, + "y": 232 + }, + { + "x": 1730544600000, + "y": 218 + }, + { + "x": 1730544630000, + "y": 232 + }, + { + "x": 1730544660000, + "y": 212 + }, + { + "x": 1730544690000, + "y": 236 + }, + { + "x": 1730544720000, + "y": 246 + }, + { + "x": 1730544750000, + "y": 218 + }, + { + "x": 1730544780000, + "y": 214 + }, + { + "x": 1730544810000, + "y": 210 + }, + { + "x": 1730544840000, + "y": 228 + }, + { + "x": 1730544870000, + "y": 228 + }, + { + "x": 1730544900000, + "y": 224 + }, + { + "x": 1730544930000, + "y": 56 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "bfeu", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4835, + "pattern": "Enqueued", + "regex": ".*?Enqueued.*?", + "sample": "Enqueued", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Enqueued" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 126 + }, + { + "x": 1730543820000, + "y": 121 + }, + { + "x": 1730543850000, + "y": 171 + }, + { + "x": 1730543880000, + "y": 109 + }, + { + "x": 1730543910000, + "y": 96 + }, + { + "x": 1730543940000, + "y": 134 + }, + { + "x": 1730543970000, + "y": 99 + }, + { + "x": 1730544000000, + "y": 130 + }, + { + "x": 1730544030000, + "y": 132 + }, + { + "x": 1730544060000, + "y": 119 + }, + { + "x": 1730544090000, + "y": 126 + }, + { + "x": 1730544120000, + "y": 118 + }, + { + "x": 1730544150000, + "y": 133 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 125 + }, + { + "x": 1730544240000, + "y": 124 + }, + { + "x": 1730544270000, + "y": 124 + }, + { + "x": 1730544300000, + "y": 161 + }, + { + "x": 1730544330000, + "y": 126 + }, + { + "x": 1730544360000, + "y": 140 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 120 + }, + { + "x": 1730544450000, + "y": 125 + }, + { + "x": 1730544480000, + "y": 128 + }, + { + "x": 1730544510000, + "y": 120 + }, + { + "x": 1730544540000, + "y": 123 + }, + { + "x": 1730544570000, + "y": 135 + }, + { + "x": 1730544600000, + "y": 120 + }, + { + "x": 1730544630000, + "y": 139 + }, + { + "x": 1730544660000, + "y": 113 + }, + { + "x": 1730544690000, + "y": 154 + }, + { + "x": 1730544720000, + "y": 154 + }, + { + "x": 1730544750000, + "y": 115 + }, + { + "x": 1730544780000, + "y": 120 + }, + { + "x": 1730544810000, + "y": 114 + }, + { + "x": 1730544840000, + "y": 133 + }, + { + "x": 1730544870000, + "y": 127 + }, + { + "x": 1730544900000, + "y": 139 + }, + { + "x": 1730544930000, + "y": 35 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "oacl", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4835, + "pattern": "ResponseReceived", + "regex": ".*?ResponseReceived.*?", + "sample": "ResponseReceived", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "ResponseReceived" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 126 + }, + { + "x": 1730543820000, + "y": 121 + }, + { + "x": 1730543850000, + "y": 171 + }, + { + "x": 1730543880000, + "y": 109 + }, + { + "x": 1730543910000, + "y": 96 + }, + { + "x": 1730543940000, + "y": 134 + }, + { + "x": 1730543970000, + "y": 99 + }, + { + "x": 1730544000000, + "y": 130 + }, + { + "x": 1730544030000, + "y": 132 + }, + { + "x": 1730544060000, + "y": 119 + }, + { + "x": 1730544090000, + "y": 126 + }, + { + "x": 1730544120000, + "y": 118 + }, + { + "x": 1730544150000, + "y": 133 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 125 + }, + { + "x": 1730544240000, + "y": 124 + }, + { + "x": 1730544270000, + "y": 124 + }, + { + "x": 1730544300000, + "y": 161 + }, + { + "x": 1730544330000, + "y": 126 + }, + { + "x": 1730544360000, + "y": 140 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 120 + }, + { + "x": 1730544450000, + "y": 125 + }, + { + "x": 1730544480000, + "y": 128 + }, + { + "x": 1730544510000, + "y": 120 + }, + { + "x": 1730544540000, + "y": 123 + }, + { + "x": 1730544570000, + "y": 135 + }, + { + "x": 1730544600000, + "y": 120 + }, + { + "x": 1730544630000, + "y": 139 + }, + { + "x": 1730544660000, + "y": 113 + }, + { + "x": 1730544690000, + "y": 154 + }, + { + "x": 1730544720000, + "y": 154 + }, + { + "x": 1730544750000, + "y": 115 + }, + { + "x": 1730544780000, + "y": 120 + }, + { + "x": 1730544810000, + "y": 114 + }, + { + "x": 1730544840000, + "y": 133 + }, + { + "x": 1730544870000, + "y": 127 + }, + { + "x": 1730544900000, + "y": 139 + }, + { + "x": 1730544930000, + "y": 35 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "hhud", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4835, + "pattern": "Sent", + "regex": ".*?Sent.*?", + "sample": "Sent", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Sent" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 126 + }, + { + "x": 1730543820000, + "y": 121 + }, + { + "x": 1730543850000, + "y": 171 + }, + { + "x": 1730543880000, + "y": 109 + }, + { + "x": 1730543910000, + "y": 96 + }, + { + "x": 1730543940000, + "y": 134 + }, + { + "x": 1730543970000, + "y": 99 + }, + { + "x": 1730544000000, + "y": 130 + }, + { + "x": 1730544030000, + "y": 132 + }, + { + "x": 1730544060000, + "y": 119 + }, + { + "x": 1730544090000, + "y": 126 + }, + { + "x": 1730544120000, + "y": 118 + }, + { + "x": 1730544150000, + "y": 133 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 125 + }, + { + "x": 1730544240000, + "y": 124 + }, + { + "x": 1730544270000, + "y": 124 + }, + { + "x": 1730544300000, + "y": 161 + }, + { + "x": 1730544330000, + "y": 126 + }, + { + "x": 1730544360000, + "y": 140 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 120 + }, + { + "x": 1730544450000, + "y": 125 + }, + { + "x": 1730544480000, + "y": 128 + }, + { + "x": 1730544510000, + "y": 120 + }, + { + "x": 1730544540000, + "y": 123 + }, + { + "x": 1730544570000, + "y": 135 + }, + { + "x": 1730544600000, + "y": 120 + }, + { + "x": 1730544630000, + "y": 139 + }, + { + "x": 1730544660000, + "y": 113 + }, + { + "x": 1730544690000, + "y": 154 + }, + { + "x": 1730544720000, + "y": 154 + }, + { + "x": 1730544750000, + "y": 115 + }, + { + "x": 1730544780000, + "y": 120 + }, + { + "x": 1730544810000, + "y": 114 + }, + { + "x": 1730544840000, + "y": 133 + }, + { + "x": 1730544870000, + "y": 127 + }, + { + "x": 1730544900000, + "y": 139 + }, + { + "x": 1730544930000, + "y": 35 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ttbh", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4441, + "pattern": "info 0", + "regex": ".*?info.+?0.*?", + "sample": "info: cartservice.cartstore.ValkeyCartStore[0]\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "info: cartservice.cartstore.ValkeyCartStore[0]\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.586Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 117 + }, + { + "x": 1730543820000, + "y": 104 + }, + { + "x": 1730543850000, + "y": 146 + }, + { + "x": 1730543880000, + "y": 103 + }, + { + "x": 1730543910000, + "y": 86 + }, + { + "x": 1730543940000, + "y": 110 + }, + { + "x": 1730543970000, + "y": 97 + }, + { + "x": 1730544000000, + "y": 119 + }, + { + "x": 1730544030000, + "y": 120 + }, + { + "x": 1730544060000, + "y": 110 + }, + { + "x": 1730544090000, + "y": 116 + }, + { + "x": 1730544120000, + "y": 109 + }, + { + "x": 1730544150000, + "y": 124 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 109 + }, + { + "x": 1730544240000, + "y": 115 + }, + { + "x": 1730544270000, + "y": 113 + }, + { + "x": 1730544300000, + "y": 137 + }, + { + "x": 1730544330000, + "y": 114 + }, + { + "x": 1730544360000, + "y": 122 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 113 + }, + { + "x": 1730544450000, + "y": 114 + }, + { + "x": 1730544480000, + "y": 117 + }, + { + "x": 1730544510000, + "y": 116 + }, + { + "x": 1730544540000, + "y": 117 + }, + { + "x": 1730544570000, + "y": 121 + }, + { + "x": 1730544600000, + "y": 112 + }, + { + "x": 1730544630000, + "y": 123 + }, + { + "x": 1730544660000, + "y": 108 + }, + { + "x": 1730544690000, + "y": 129 + }, + { + "x": 1730544720000, + "y": 132 + }, + { + "x": 1730544750000, + "y": 111 + }, + { + "x": 1730544780000, + "y": 111 + }, + { + "x": 1730544810000, + "y": 108 + }, + { + "x": 1730544840000, + "y": 120 + }, + { + "x": 1730544870000, + "y": 118 + }, + { + "x": 1730544900000, + "y": 120 + }, + { + "x": 1730544930000, + "y": 73 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "eahn", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 4152, + "pattern": "Fetch cart", + "regex": ".*?Fetch.+?cart.*?", + "sample": "Fetch cart", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Fetch cart" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.398Z", + "lastOccurrence": "2024-11-02T10:55:36.349Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 112 + }, + { + "x": 1730543820000, + "y": 94 + }, + { + "x": 1730543850000, + "y": 132 + }, + { + "x": 1730543880000, + "y": 100 + }, + { + "x": 1730543910000, + "y": 80 + }, + { + "x": 1730543940000, + "y": 97 + }, + { + "x": 1730543970000, + "y": 96 + }, + { + "x": 1730544000000, + "y": 113 + }, + { + "x": 1730544030000, + "y": 113 + }, + { + "x": 1730544060000, + "y": 105 + }, + { + "x": 1730544090000, + "y": 111 + }, + { + "x": 1730544120000, + "y": 104 + }, + { + "x": 1730544150000, + "y": 119 + }, + { + "x": 1730544180000, + "y": 100 + }, + { + "x": 1730544210000, + "y": 100 + }, + { + "x": 1730544240000, + "y": 110 + }, + { + "x": 1730544270000, + "y": 107 + }, + { + "x": 1730544300000, + "y": 123 + }, + { + "x": 1730544330000, + "y": 107 + }, + { + "x": 1730544360000, + "y": 112 + }, + { + "x": 1730544390000, + "y": 107 + }, + { + "x": 1730544420000, + "y": 109 + }, + { + "x": 1730544450000, + "y": 108 + }, + { + "x": 1730544480000, + "y": 111 + }, + { + "x": 1730544510000, + "y": 114 + }, + { + "x": 1730544540000, + "y": 114 + }, + { + "x": 1730544570000, + "y": 112 + }, + { + "x": 1730544600000, + "y": 107 + }, + { + "x": 1730544630000, + "y": 114 + }, + { + "x": 1730544660000, + "y": 105 + }, + { + "x": 1730544690000, + "y": 115 + }, + { + "x": 1730544720000, + "y": 119 + }, + { + "x": 1730544750000, + "y": 109 + }, + { + "x": 1730544780000, + "y": 106 + }, + { + "x": 1730544810000, + "y": 105 + }, + { + "x": 1730544840000, + "y": 113 + }, + { + "x": 1730544870000, + "y": 113 + }, + { + "x": 1730544900000, + "y": 109 + }, + { + "x": 1730544930000, + "y": 27 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "xpjx", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 602, + "pattern": "called with userId 11ef 8217 d64fba5f23b1", + "regex": ".*?called.+?with.+?userId.+?11ef.+?8217.+?d64fba5f23b1.*?", + "sample": "GetCartAsync called with userId=fb462b14-9908-11ef-8217-d64fba5f23b1", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "GetCartAsync called with userId=fb462b14-9908-11ef-8217-d64fba5f23b1" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.219Z", + "lastOccurrence": "2024-11-02T10:55:34.364Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 12 + }, + { + "x": 1730543820000, + "y": 26 + }, + { + "x": 1730543850000, + "y": 34 + }, + { + "x": 1730543880000, + "y": 6 + }, + { + "x": 1730543910000, + "y": 16 + }, + { + "x": 1730543940000, + "y": 30 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 14 + }, + { + "x": 1730544030000, + "y": 18 + }, + { + "x": 1730544060000, + "y": 12 + }, + { + "x": 1730544090000, + "y": 10 + }, + { + "x": 1730544120000, + "y": 12 + }, + { + "x": 1730544150000, + "y": 12 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 22 + }, + { + "x": 1730544240000, + "y": 12 + }, + { + "x": 1730544270000, + "y": 14 + }, + { + "x": 1730544300000, + "y": 36 + }, + { + "x": 1730544330000, + "y": 18 + }, + { + "x": 1730544360000, + "y": 24 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 10 + }, + { + "x": 1730544450000, + "y": 14 + }, + { + "x": 1730544480000, + "y": 14 + }, + { + "x": 1730544510000, + "y": 4 + }, + { + "x": 1730544540000, + "y": 6 + }, + { + "x": 1730544570000, + "y": 26 + }, + { + "x": 1730544600000, + "y": 14 + }, + { + "x": 1730544630000, + "y": 22 + }, + { + "x": 1730544660000, + "y": 8 + }, + { + "x": 1730544690000, + "y": 34 + }, + { + "x": 1730544720000, + "y": 34 + }, + { + "x": 1730544750000, + "y": 4 + }, + { + "x": 1730544780000, + "y": 12 + }, + { + "x": 1730544810000, + "y": 6 + }, + { + "x": 1730544840000, + "y": 16 + }, + { + "x": 1730544870000, + "y": 12 + }, + { + "x": 1730544900000, + "y": 28 + }, + { + "x": 1730544930000, + "y": 8 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ckdv", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 382, + "pattern": "AddItemAsync called with userId 11ef 8217 d64fba5f23b1 productId quantity", + "regex": ".*?AddItemAsync.+?called.+?with.+?userId.+?11ef.+?8217.+?d64fba5f23b1.+?productId.+?quantity.*?", + "sample": "AddItemAsync called with userId=fc4e8196-9908-11ef-8217-d64fba5f23b1, productId=1YMWWN1N4O, quantity=10", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "AddItemAsync called with userId=fc4e8196-9908-11ef-8217-d64fba5f23b1, productId=1YMWWN1N4O, quantity=10" + ] + }, + "firstOccurrence": "2024-11-02T10:36:34.216Z", + "lastOccurrence": "2024-11-02T10:55:34.363Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 8 + }, + { + "x": 1730543820000, + "y": 14 + }, + { + "x": 1730543850000, + "y": 22 + }, + { + "x": 1730543880000, + "y": 6 + }, + { + "x": 1730543910000, + "y": 8 + }, + { + "x": 1730543940000, + "y": 22 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 10 + }, + { + "x": 1730544030000, + "y": 10 + }, + { + "x": 1730544060000, + "y": 8 + }, + { + "x": 1730544090000, + "y": 10 + }, + { + "x": 1730544120000, + "y": 8 + }, + { + "x": 1730544150000, + "y": 8 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 14 + }, + { + "x": 1730544240000, + "y": 8 + }, + { + "x": 1730544270000, + "y": 10 + }, + { + "x": 1730544300000, + "y": 20 + }, + { + "x": 1730544330000, + "y": 10 + }, + { + "x": 1730544360000, + "y": 16 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 6 + }, + { + "x": 1730544450000, + "y": 10 + }, + { + "x": 1730544480000, + "y": 10 + }, + { + "x": 1730544510000, + "y": 4 + }, + { + "x": 1730544540000, + "y": 6 + }, + { + "x": 1730544570000, + "y": 10 + }, + { + "x": 1730544600000, + "y": 6 + }, + { + "x": 1730544630000, + "y": 14 + }, + { + "x": 1730544660000, + "y": 4 + }, + { + "x": 1730544690000, + "y": 22 + }, + { + "x": 1730544720000, + "y": 18 + }, + { + "x": 1730544750000, + "y": 4 + }, + { + "x": 1730544780000, + "y": 8 + }, + { + "x": 1730544810000, + "y": 6 + }, + { + "x": 1730544840000, + "y": 12 + }, + { + "x": 1730544870000, + "y": 8 + }, + { + "x": 1730544900000, + "y": 16 + }, + { + "x": 1730544930000, + "y": 4 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "habq", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 216, + "pattern": "GetCartAsync called with userId", + "regex": ".*?GetCartAsync.+?called.+?with.+?userId.*?", + "sample": "GetCartAsync called with userId=", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "GetCartAsync called with userId=" + ] + }, + "firstOccurrence": "2024-11-02T10:36:36.912Z", + "lastOccurrence": "2024-11-02T10:55:33.022Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 10 + }, + { + "x": 1730543820000, + "y": 4 + }, + { + "x": 1730543850000, + "y": 6 + }, + { + "x": 1730543880000, + "y": 4 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 4 + }, + { + "x": 1730543970000, + "y": 2 + }, + { + "x": 1730544000000, + "y": 10 + }, + { + "x": 1730544030000, + "y": 10 + }, + { + "x": 1730544060000, + "y": 6 + }, + { + "x": 1730544090000, + "y": 2 + }, + { + "x": 1730544120000, + "y": 8 + }, + { + "x": 1730544150000, + "y": 8 + }, + { + "x": 1730544180000, + "y": 4 + }, + { + "x": 1730544210000, + "y": 6 + }, + { + "x": 1730544240000, + "y": 2 + }, + { + "x": 1730544270000, + "y": 4 + }, + { + "x": 1730544300000, + "y": 8 + }, + { + "x": 1730544330000, + "y": 4 + }, + { + "x": 1730544360000, + "y": 4 + }, + { + "x": 1730544390000, + "y": 2 + }, + { + "x": 1730544420000, + "y": 8 + }, + { + "x": 1730544450000, + "y": 4 + }, + { + "x": 1730544480000, + "y": 10 + }, + { + "x": 1730544510000, + "y": 2 + }, + { + "x": 1730544540000, + "y": 12 + }, + { + "x": 1730544570000, + "y": 8 + }, + { + "x": 1730544600000, + "y": 8 + }, + { + "x": 1730544630000, + "y": 6 + }, + { + "x": 1730544660000, + "y": 6 + }, + { + "x": 1730544690000, + "y": 2 + }, + { + "x": 1730544720000, + "y": 6 + }, + { + "x": 1730544750000, + "y": 6 + }, + { + "x": 1730544780000, + "y": 4 + }, + { + "x": 1730544810000, + "y": 2 + }, + { + "x": 1730544840000, + "y": 6 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 8 + }, + { + "x": 1730544930000, + "y": 4 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "tzfi", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 55, + "pattern": "Empty cart", + "regex": ".*?Empty.+?cart.*?", + "sample": "Empty cart", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Empty cart" + ] + }, + "firstOccurrence": "2024-11-02T10:36:41.806Z", + "lastOccurrence": "2024-11-02T10:55:32.654Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 1 + }, + { + "x": 1730543820000, + "y": 3 + }, + { + "x": 1730543850000, + "y": 3 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 2 + }, + { + "x": 1730543940000, + "y": 2 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 1 + }, + { + "x": 1730544030000, + "y": 2 + }, + { + "x": 1730544060000, + "y": 1 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 1 + }, + { + "x": 1730544150000, + "y": 1 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 2 + }, + { + "x": 1730544240000, + "y": 1 + }, + { + "x": 1730544270000, + "y": 1 + }, + { + "x": 1730544300000, + "y": 4 + }, + { + "x": 1730544330000, + "y": 2 + }, + { + "x": 1730544360000, + "y": 2 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 1 + }, + { + "x": 1730544450000, + "y": 1 + }, + { + "x": 1730544480000, + "y": 1 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 4 + }, + { + "x": 1730544600000, + "y": 2 + }, + { + "x": 1730544630000, + "y": 2 + }, + { + "x": 1730544660000, + "y": 1 + }, + { + "x": 1730544690000, + "y": 3 + }, + { + "x": 1730544720000, + "y": 4 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 1 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 1 + }, + { + "x": 1730544870000, + "y": 1 + }, + { + "x": 1730544900000, + "y": 3 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ldwf", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 55, + "pattern": "feature_flag", + "regex": ".*?feature_flag.*?", + "sample": "feature_flag", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "feature_flag" + ] + }, + "firstOccurrence": "2024-11-02T10:36:41.809Z", + "lastOccurrence": "2024-11-02T10:55:32.655Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 1 + }, + { + "x": 1730543820000, + "y": 3 + }, + { + "x": 1730543850000, + "y": 3 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 2 + }, + { + "x": 1730543940000, + "y": 2 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 1 + }, + { + "x": 1730544030000, + "y": 2 + }, + { + "x": 1730544060000, + "y": 1 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 1 + }, + { + "x": 1730544150000, + "y": 1 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 2 + }, + { + "x": 1730544240000, + "y": 1 + }, + { + "x": 1730544270000, + "y": 1 + }, + { + "x": 1730544300000, + "y": 4 + }, + { + "x": 1730544330000, + "y": 2 + }, + { + "x": 1730544360000, + "y": 2 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 1 + }, + { + "x": 1730544450000, + "y": 1 + }, + { + "x": 1730544480000, + "y": 1 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 4 + }, + { + "x": 1730544600000, + "y": 2 + }, + { + "x": 1730544630000, + "y": 2 + }, + { + "x": 1730544660000, + "y": 1 + }, + { + "x": 1730544690000, + "y": 3 + }, + { + "x": 1730544720000, + "y": 4 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 1 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 1 + }, + { + "x": 1730544870000, + "y": 1 + }, + { + "x": 1730544900000, + "y": 3 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "noer", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 2, + "pattern": "OTEL-SDK BatchActivityExportProcessor exporting to OtlpTraceExporter dropped items", + "regex": ".*?OTEL-SDK.+?BatchActivityExportProcessor.+?exporting.+?to.+?OtlpTraceExporter.+?dropped.+?items.*?", + "sample": "OTEL-SDK: [224] 'BatchActivityExportProcessor' exporting to 'OtlpTraceExporter' dropped '0' items.", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "OTEL-SDK: [224] 'BatchActivityExportProcessor' exporting to 'OtlpTraceExporter' dropped '0' items." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.580Z", + "lastOccurrence": "2024-11-02T10:55:36.580Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "fiia", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1, + "pattern": "my-otel-demo-valkey open", + "regex": ".*?my-otel-demo-valkey.+?open.*?", + "sample": "my-otel-demo-valkey (10.106.38.244:6379) open\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "my-otel-demo-valkey (10.106.38.244:6379) open\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:34.993Z", + "lastOccurrence": "2024-11-02T10:55:34.993Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "uzyf", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 78, + "pattern": "OTEL-SDK Instrument Meter has been deactivated", + "regex": ".*?OTEL-SDK.+?Instrument.+?Meter.+?has.+?been.+?deactivated.*?", + "sample": "OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated.", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.585Z", + "lastOccurrence": "2024-11-02T10:55:36.586Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 78 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "lciw", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 4, + "pattern": "OTEL-SDK Disposed", + "regex": ".*?OTEL-SDK.+?Disposed.*?", + "sample": "OTEL-SDK: [224] 'MeterProvider' Disposed.", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "OTEL-SDK: [224] 'MeterProvider' Disposed." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.581Z", + "lastOccurrence": "2024-11-02T10:55:36.586Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 4 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "woqa", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 3, + "pattern": "exiting", + "regex": ".*?exiting.*?", + "sample": "exiting...\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "exiting...\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:55.622Z", + "lastOccurrence": "2024-11-02T10:56:51.618Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 1 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 1 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "ucuj", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 2, + "pattern": "Application is shutting down", + "regex": ".*?Application.+?is.+?shutting.+?down.*?", + "sample": "Application is shutting down...", + "highlight": { + "service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "Application is shutting down..." + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.560Z", + "lastOccurrence": "2024-11-02T10:55:36.560Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "cgip", + "relevance": "unusual", + "interesting": true + }, + { + "field": "message", + "count": 3, + "pattern": "FATAL Could not start entrypoint", + "regex": ".*?FATAL.+?Could.+?not.+?start.+?entrypoint.*?", + "sample": "FATAL: Could not start, bad entrypoint!\n", + "highlight": { + "service.name": [ + "cartservice" + ], + "resource.attributes.service.name": [ + "cartservice" + ] + }, + "metadata": { + "message": [ + "FATAL: Could not start, bad entrypoint!\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:35.618Z", + "lastOccurrence": "2024-11-02T10:56:31.617Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 0 + }, + { + "x": 1730544990000, + "y": 1 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "spike", + "significance": "high", + "change_point": 38, + "p_value": 1.8274885276877215e-20, + "timestamp": "2024-11-02T10:55:30.000Z" + }, + "shortId": "reqc", + "relevance": "critical", + "interesting": true + } + ], + "patternsFromOtherEntities": [ + { + "field": "message", + "count": 26, + "pattern": "I1102 replica_set.go Finished syncing logger replicaset-controller kind ReplicaSet key duration", + "regex": ".*?I1102.+?replica_set\\.go.+?Finished.+?syncing.+?logger.+?replicaset-controller.+?kind.+?ReplicaSet.+?key.+?duration.*?", + "sample": "I1102 10:55:33.013871 1 replica_set.go:679] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice-7b585f4fb7\" duration=\"101.333µs\"\n", + "highlight": { + "body.text": [ + "] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice" + ], + "message": [ + "] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice" + ] + }, + "metadata": { + "service.name": [ + "kube-controller-manager" + ], + "message": [ + "I1102 10:55:33.013871 1 replica_set.go:679] \"Finished syncing\" logger=\"replicaset-controller\" kind=\"ReplicaSet\" key=\"default/my-otel-demo-cartservice-7b585f4fb7\" duration=\"101.333µs\"\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:33.014Z", + "lastOccurrence": "2024-11-02T10:56:52.568Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 19 + }, + { + "x": 1730544960000, + "y": 2 + }, + { + "x": 1730544990000, + "y": 5 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "spike", + "significance": "high", + "change_point": 38, + "p_value": 7.313742705200763e-147, + "timestamp": "2024-11-02T10:55:30.000Z" + }, + "shortId": "ofdx", + "relevance": "normal", + "interesting": true + }, + { + "field": "message", + "count": 21, + "pattern": "object apiVersion events.k8s.io/v1 deprecatedCount deprecatedFirstTimestamp deprecatedLastTimestamp deprecatedSource component eventTime null kind Event metadata creationTimestamp managedFields apiVersion v1 fieldsType FieldsV1 fieldsV1", + "regex": ".*?object.+?apiVersion.+?events\\.k8s\\.io/v1.+?deprecatedCount.+?deprecatedFirstTimestamp.+?deprecatedLastTimestamp.+?deprecatedSource.+?component.+?eventTime.+?null.+?kind.+?Event.+?metadata.+?creationTimestamp.+?managedFields.+?apiVersion.+?v1.+?fieldsType.+?FieldsV1.+?fieldsV1.*?", + "sample": "{\"object\":{\"apiVersion\":\"events.k8s.io/v1\",\"deprecatedCount\":2,\"deprecatedFirstTimestamp\":\"2024-11-02T10:56:17Z\",\"deprecatedLastTimestamp\":\"2024-11-02T10:56:52Z\",\"deprecatedSource\":{\"component\":\"kubelet\",\"host\":\"minikube\"},\"eventTime\":null,\"kind\":\"Event\",\"metadata\":{\"creationTimestamp\":\"2024-11-02T10:56:17Z\",\"managedFields\":[{\"apiVersion\":\"v1\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:count\":{},\"f:firstTimestamp\":{},\"f:involvedObject\":{},\"f:lastTimestamp\":{},\"f:message\":{},\"f:reason\":{},\"f:reportingComponent\":{},\"f:reportingInstance\":{},\"f:source\":{\"f:component\":{},\"f:host\":{}},\"f:type\":{}},\"manager\":\"kubelet\",\"operation\":\"Update\",\"time\":\"2024-11-02T10:56:52Z\"}],\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz.1804217ce2cb3041\",\"namespace\":\"default\",\"resourceVersion\":\"375301\",\"uid\":\"cf211b63-a5e4-40c4-bed3-fe90aea76a38\"},\"note\":\"Back-off restarting failed container cartservice in pod my-otel-demo-cartservice-7b585f4fb7-79ccz_default(9580334a-7ef9-4ad5-baf6-0ad10ae49853)\",\"reason\":\"BackOff\",\"regarding\":{\"apiVersion\":\"v1\",\"fieldPath\":\"spec.containers{cartservice}\",\"kind\":\"Pod\",\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz\",\"namespace\":\"default\",\"resourceVersion\":\"375163\",\"uid\":\"9580334a-7ef9-4ad5-baf6-0ad10ae49853\"},\"reportingController\":\"kubelet\",\"reportingInstance\":\"minikube\",\"type\":\"Warning\"},\"type\":\"MODIFIED\"}", + "highlight": { + "message": [ + "},\"manager\":\"kubelet\",\"operation\":\"Update\",\"time\":\"2024-11-02T10:56:52Z\"}],\"name\":\"my-otel-demo-cartservice", + "375301\",\"uid\":\"cf211b63-a5e4-40c4-bed3-fe90aea76a38\"},\"note\":\"Back-off restarting failed container cartservice", + "in pod my-otel-demo-cartservice-7b585f4fb7-79ccz_default(9580334a-7ef9-4ad5-baf6-0ad10ae49853)\",\"reason", + "\":\"BackOff\",\"regarding\":{\"apiVersion\":\"v1\",\"fieldPath\":\"spec.containers{cartservice}\",\"kind\":\"Pod\",\"name", + "\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz\",\"namespace\":\"default\",\"resourceVersion\":\"375163\",\"uid\":" + ] + }, + "metadata": { + "service.name": [ + "unknown" + ], + "message": [ + "{\"object\":{\"apiVersion\":\"events.k8s.io/v1\",\"deprecatedCount\":2,\"deprecatedFirstTimestamp\":\"2024-11-02T10:56:17Z\",\"deprecatedLastTimestamp\":\"2024-11-02T10:56:52Z\",\"deprecatedSource\":{\"component\":\"kubelet\",\"host\":\"minikube\"},\"eventTime\":null,\"kind\":\"Event\",\"metadata\":{\"creationTimestamp\":\"2024-11-02T10:56:17Z\",\"managedFields\":[{\"apiVersion\":\"v1\",\"fieldsType\":\"FieldsV1\",\"fieldsV1\":{\"f:count\":{},\"f:firstTimestamp\":{},\"f:involvedObject\":{},\"f:lastTimestamp\":{},\"f:message\":{},\"f:reason\":{},\"f:reportingComponent\":{},\"f:reportingInstance\":{},\"f:source\":{\"f:component\":{},\"f:host\":{}},\"f:type\":{}},\"manager\":\"kubelet\",\"operation\":\"Update\",\"time\":\"2024-11-02T10:56:52Z\"}],\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz.1804217ce2cb3041\",\"namespace\":\"default\",\"resourceVersion\":\"375301\",\"uid\":\"cf211b63-a5e4-40c4-bed3-fe90aea76a38\"},\"note\":\"Back-off restarting failed container cartservice in pod my-otel-demo-cartservice-7b585f4fb7-79ccz_default(9580334a-7ef9-4ad5-baf6-0ad10ae49853)\",\"reason\":\"BackOff\",\"regarding\":{\"apiVersion\":\"v1\",\"fieldPath\":\"spec.containers{cartservice}\",\"kind\":\"Pod\",\"name\":\"my-otel-demo-cartservice-7b585f4fb7-79ccz\",\"namespace\":\"default\",\"resourceVersion\":\"375163\",\"uid\":\"9580334a-7ef9-4ad5-baf6-0ad10ae49853\"},\"reportingController\":\"kubelet\",\"reportingInstance\":\"minikube\",\"type\":\"Warning\"},\"type\":\"MODIFIED\"}" + ] + }, + "firstOccurrence": "2024-11-02T10:55:33.051Z", + "lastOccurrence": "2024-11-02T10:56:52.563Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 16 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 4 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "spike", + "significance": "high", + "change_point": 38, + "p_value": 2.9750218550484796e-168, + "timestamp": "2024-11-02T10:55:30.000Z" + }, + "shortId": "lqan", + "relevance": "critical", + "interesting": true + } + ], + "searches": [ + { + "fragments": [ + "AddItemAsync called with userId", + "productId", + "quantity" + ], + "appearsAs": "userId, productId, and quantity are referenced in the request handling log entries in cartservice." + }, + { + "fragments": [ + "GetCartAsync called with userId" + ], + "appearsAs": "userId is referenced in the request handling log entries in cartservice." + }, + { + "fragments": [ + "Empty cart" + ], + "appearsAs": "Empty cart operation logs in cartservice." + }, + { + "fragments": [ + "cartServiceFailure" + ], + "appearsAs": "Feature flag 'cartServiceFailure' in cartservice." + }, + { + "fragments": [ + "10.244.0.61" + ], + "appearsAs": "IP address of the cartservice pod." + }, + { + "fragments": [ + "my-otel-demo-cartservice-67575c6f84-vngzw" + ], + "appearsAs": "Pod name of cartservice." + }, + { + "fragments": [ + "my-otel-demo-valkey:6379" + ], + "appearsAs": "Redis service used by cartservice." + }, + { + "fragments": [ + "/oteldemo.CartService/AddItem", + "/oteldemo.CartService/GetCart", + "/oteldemo.CartService/EmptyCart" + ], + "appearsAs": "Endpoints handled by cartservice." + }, + { + "fragments": [ + "flagd.evaluation.v1.Service" + ], + "appearsAs": "gRPC service involved in feature flag evaluation by cartservice." + }, + { + "fragments": [ + "HGET", + "EXPIRE", + "HMSET" + ], + "appearsAs": "Redis commands executed by cartservice." + } + ], + "relatedEntitiesSummaries": [ + "Based on the context provided, the following entities are potentially related to `service.name:cartservice` as either upstream or downstream dependencies. Below is a detailed analysis based on the indicators of relationships obtained from the observability data:\n\n### 1. Related Entity: `service.name:controller`\n- **Indicators**: \n - **Average Indicator**: The logs highlight high error rates (500 Internal Server Error) in the controller when POST requests to the `/api/cart` endpoint are made.\n - **Field values**: In controller logs, `message` contains references to the `/api/cart` endpoint, which is handled by `cartservice`.\n- **Reasoning**: \n - The `controller` service is responsible for managing /api/cart requests. Thus, it acts as a direct upstream service to `cartservice`.\n - It implies `controller` calls `cartservice` as part of handling requests, leading to the observed errors.\n- **Likeliness**: High\n - The `controller` service is likely a highly relevant entity since it directly interfaces with `cartservice`, with the errors surfacing in it when interacting with `cartservice`.\n\n### 2. Related Entity: `service.name:frontend`\n- **Indicators**:\n - **Strong Indicator**: The system architecture documentation shows that `frontend` interacts with various backend services, including those for user interactions such as adding items to the cart.\n - **Field values**: In the knowledge base, `frontend` receives HTTP traffic routed through `frontendproxy` and interacts with `cartservice`.\n- **Reasoning**:\n - `frontend` would act as a direct upstream service that communicates with `controller`, providing requests that eventually hit `cartservice`.\n- **Likeliness**: High\n - As `frontend` handles initial user interactions and routes requests to `cartservice`, it is essential in the request flow leading to `/api/cart` errors.\n\n### 3. Related Entity: `service.name:currencyservice`\n- **Indicators**:\n - **Strong Indicator**: The architecture description indicates `currencyservice` interacts with `cartservice` to handle currency conversions.\n - **Field values**: The entries show gRPC calls between `cartservice` and `currencyservice` for conversion operations.\n- **Reasoning**:\n - `currencyservice` may be an upstream dependency for `cartservice` for any currency-related manipulations on cart items.\n- **Likeliness**: Medium-High\n - While `currencyservice` interacts with `cartservice`, its exact influence on the direct issue might not be as strong as `controller` or `frontend`.\n\n### 4. Related Entity: `service.name:checkoutservice`\n- **Indicators**:\n - **Strong Indicator**: The architecture documentation lists `checkoutservice` as coordinating the checkout process involving interactions with `cartservice`.\n - **Field values**: Distributed tracing data could show `checkoutservice` making gRPC or HTTP calls to `cartservice`.\n- **Reasoning**:\n - `checkoutservice` is likely a downstream service that relies on the correct functioning of `cartservice` to gather cart data before proceeding to checkout operations.\n- **Likeliness**: Medium\n - Although primarily a downstream dependency, it processes important data from `cartservice`.\n\n### 5. Related Entity: `service.name:adservice`\n- **Indicators**:\n - **Weak Indicator**: `adservice` interfaces with `frontend` via gRPC to deliver ad content, it also might indirectly influence `cartservice` interactions if ads are part of the cart page.\n - **Field values**: Architectural details state `adservice` operates in the background to enhance user experience but no direct interaction with `cartservice`.\n- **Reasoning**:\n - While not directly connected, any latency in `adservice` may affect the overall user experience, causing indirect latency in calls that reach `cartservice`.\n- **Likeliness**: Low-Medium\n - Indirect connection and latent repercussions on user interactions with cart functionality.\n\n### 6. Related Entity: `service.name:loadgenerator`\n- **Indicators**:\n - **Average Indicator**: The `loadgenerator` service generates simulated traffic, handled by `frontendproxy` to stress-test services like `cartservice`.\n - **Field values**: Traffic from `loadgenerator` is routed through `frontendproxy` to reach core services, including `cartservice`.\n- **Reasoning**:\n - As an external input simulator, its traffic generation directly impacts `cartservice` when testing load resilience.\n- **Likeliness**: Medium\n - The errors can be a result of load tests conducted by `loadgenerator` surfacing bottlenecks in `cartservice`.\n\n### Summary\n\nTo conclude, the following entities are likely relevant to the issue in `service.name:cartservice`:\n\n1. **controller**: Direct upstream causing the 500 errors - High relevance.\n2. **frontend**: Upstream service initiating user interactions - High relevance.\n3. **currencyservice**: Upstream service for currency conversion - Medium-High relevance.\n4. **checkoutservice**: Downstream service relying on cart data - Medium relevance.\n5. **adservice**: Possible indirect impact due to latency - Low-Medium relevance.\n6. **loadgenerator**: Simulated traffic testing the system's resilience - Medium relevance.\n\nBy analyzing these entities, you can prioritize investigating `controller`, `frontend`, and `currencyservice` first, as they have the most direct and potentially impactful interactions with `cartservice`.", + "Based on the context provided, the architecture outlined in the knowledge base entry, the document analysis for the `cartservice`, and search keywords, several possible relationships with the `cartservice` can be identified. Below are the entities identified as highly relevant to the `cartservice`, along with the indicators, evidence, reasoning, and overall relevance.\n\n### 1. Entity: `service.name:frontend`\n\n#### Indicators and Evidence\n- **Average Indicator - URL Paths:**\n - `http://my-otel-demo-cartservice:8080/oteldemo.CartService/AddItem`\n - `http://my-otel-demo-cartservice:8080/oteldemo.CartService/GetCart`\n - `http://my-otel-demo-cartservice:8080/oteldemo.CartService/EmptyCart`\n- **Average Indicator - Logs:**\n - Observed in the search highlights for `service.name:frontend`: `@opentelemetry/api/build/src/api/context.js:60:46) at ServiceClientImpl.clientMethodTrace [as getCart]`\n- **Knowledge Base:**\n - The `frontend` is the core service for user interactions, receiving HTTP traffic and making requests to the `cartservice`.\n\n#### Relationship and Reasoning\nThe `frontend` service interacts directly with the `cartservice` by making requests to handle user shopping cart operations, such as adding items, retrieving the cart, and emptying the cart. Given the observed log entries and URL paths, it is reasonable to infer that the `frontend` service acts as a caller, while the `cartservice` acts as the callee. The high error rates observed in the context likely originate from the `frontend` making POST requests to the `/api/cart` endpoint handled by the `cartservice`.\n\n#### Likelihood of Relevance\n- **Very High:** The `frontend` service is highly likely to be relevant as it has a direct interaction with the `cartservice` and would be significantly impacted by any issues within the `cartservice`.\n\n### 2. Entity: `service.name:valkey`\n\n#### Indicators and Evidence\n- **Average Indicator - Redis Service:**\n - `my-otel-demo-valkey:6379`\n- **Average Indicator - Log Entries:**\n - Log patterns show Redis command execution by `cartservice`: `HGET`, `EXPIRE`, `HMSET`\n\n#### Relationship and Reasoning\nThe `valkey` service corresponds to the Redis instance that `cartservice` uses for data persistence. The `cartservice` makes frequent calls to Redis to perform operations such as fetching, expiring, and setting data, which is crucial for managing shopping cart state. As Redis is an upstream dependency, connection or data integrity issues here could directly contribute to the `500 Internal Server Errors` observed in the `cartservice`.\n\n#### Likelihood of Relevance\n- **High:** The `valkey` service is highly relevant because it is the data store for `cartservice`, directly affecting its behavior and performance.\n\n### 3. Entity: `service.name:currencyservice`\n\n#### Indicators and Evidence\n- **Average Indicator - gRPC Services:**\n - Mentioned in the architecture as handling currency conversions.\n- **Knowledge Base:**\n - Communicates with `cartservice` over gRPC to facilitate currency operations.\n\n#### Relationship and Reasoning\nThe `currencyservice` may interact with `cartservice` to handle price conversions for the items in the cart. Problems with currency conversion could cause unexpected data formats or communication failures, leading to `500 Internal Server Errors` in `cartservice`.\n\n#### Likelihood of Relevance\n- **Moderate:** While the interaction exists, whether it directly contributes to the 500 errors specifically observed at `/api/cart` endpoints would require further investigation.\n\n### 4. Entity: `service.name:checkoutservice`\n\n#### Indicators and Evidence\n- **Strong Indicator - gRPC Services:**\n - Interacts with `checkoutservice` during the checkout process.\n- **Knowledge Base:**\n - Handles interactions including calls to `cartservice` for finalizing orders.\n\n#### Relationship and Reasoning\nThe `checkoutservice` could potentially depend on `cartservice` to validate and finalize items in the user's cart as part of the checkout process. If the `cartservice` fails during these operations, it could propagate errors back up to the user level through `checkoutservice`.\n\n#### Likelihood of Relevance\n- **Moderate:** The relevance depends on whether the observed errors are occurring during checkout processes or general cart manipulations.\n\n### 5. Entity: `service.name:flagd`\n\n#### Indicators and Evidence\n- **Average Indicator - Feature Flag Evaluation:**\n - `flagd.evaluation.v1.Service`\n- **Log Metadata:**\n - `labels.feature_flag_key:keyword - cartServiceFailure`\n- **Trace Destination Service:**\n - `my-otel-demo-flagd:8013`\n\n#### Relationship and Reasoning\nThe `flagd` service is responsible for evaluating feature flags, such as the `cartServiceFailure`. If the feature flagging system is improperly toggled (e.g.: feature flag set to fail operations), it might contribute to the high error rates observed in `cartservice`.\n\n#### Likelihood of Relevance\n- **Moderate:** The feature flags might be causing or amplifying existing issues within the `cartservice`.\n\n### Summary\nFrom the observed data, the following entities are highly likely to be related to `cartservice` with respect to the given context:\n\n1. **`frontend`** - High relevance due to direct HTTP interaction with `cartservice`.\n2. **`valkey`** - High relevance as the Redis data store for `cartservice`.\n\nEntities with moderate likelihood:\n\n1. **`currencyservice`** - Related via gRPC for currency operations.\n2. **`checkoutservice`** - Potentially related during checkout processes.\n3. **`flagd`** - Related to feature flag evaluations involving `cartservice`.\n\nThese relationships cover both upstream dependencies affecting `cartservice` and downstream services impacted by `cartservice` issues, aiding in comprehensive issue diagnosis." + ], + "kbEntries": [ + { + "id": "System architecture", + "text": "The architecture described here outlines a microservices-based system, where each service is implemented in a distinct programming language and communicates via gRPC, HTTP, or TCP. This system is designed to handle simulated user traffic, supported by a variety of interconnected services and components.\n\n### System Architecture\n\n1. **`loadgenerator`** - Simulates external user traffic by sending HTTP requests, which are managed by an Nginx ingress controller. This ingress directs traffic to the `frontendproxy` service.\n\n2. **`frontendproxy` (Envoy)** - Acts as a reverse proxy, routing incoming traffic from `loadgenerator` to `frontend`.\n\n3. **`frontend` (Node.js)** - The core service for user interactions, receiving HTTP traffic from `frontendproxy` and interfacing with various backend services to fulfill requests.\n\n4. **`frontend-web` (RUM)** - A Real User Monitoring (RUM) layer that runs in the user's browser, enabling insights into end-user experiences and frontend performance.\n\n5. **`adservice`** - Delivers advertisements to the `frontend` using gRPC, enhancing the user experience with relevant ad content.\n\n6. **`cartservice`** - Manages shopping cart data, including adding and removing items. It communicates over gRPC and leverages a Redis cache for data persistence.\n\n7. **`currencyservice`** - Handles currency conversions and facilitates interactions between `cartservice` and `checkoutservice` over gRPC.\n\n8. **`checkoutservice`** - Coordinates the checkout process, calling various services for payments, shipping, and emails. It utilizes both gRPC and HTTP protocols to aggregate the necessary information for order completion.\n\n9. **`emailservice`** - Sends order confirmation emails to users via gRPC, triggered by interactions with `checkoutservice`.\n\n10. **`productcatalogservice`** - Maintains the product catalog, storing details about available items and providing this data to other services via gRPC.\n\n11. **`recommendationservice`** - Generates personalized product recommendations, accessed by `frontend` over gRPC.\n\n12. **`shippingservice`** - Manages shipping information, providing essential data to `checkoutservice` over gRPC.\n\n13. **`quoteservice`** - Supplies shipping quotes over HTTP, which are accessed by `shippingservice` to estimate shipping costs.\n\n14. **`paymentservice`** - Processes payment transactions through gRPC, enabling secure and efficient payments for `checkoutservice`.\n\n15. **`accountingservice`** - Responsible for recording transactions, it connects to a Kafka queue and interacts over TCP.\n\n16. **`frauddetectionservice`** - Monitors orders for potential fraud, also interfacing with the Kafka queue over TCP to receive relevant transaction data.\n\n17. **`imageprovider` (Nginx)** - Serves static images for the frontend interface, accessible over HTTP.\n\n18. **`queue` (Kafka)** - Acts as a central message broker, facilitating communication between `accountingservice` and `frauddetectionservice`.\n\n### Key Components\nThe system is structured to enable robust, distributed communication across services, allowing each component to focus on a specific aspect of the user experience or business logic. The ingress controller, in particular, plays a critical role in directing traffic, ensuring that incoming requests from `loadgenerator` are correctly routed through `frontendproxy` and into the system’s core services.\n\nThis architecture ensures that the system can handle high traffic loads and provides a modular, flexible framework to meet user demands while monitoring for performance and security.\n", + "tokens": 733, + "score": 5 + } + ] + }, + "entity": { + "service.name": "cartservice" + }, + "relatedEntities": [ + { + "entity": { + "service.name": "controller" + }, + "reason": "The controller service is responsible for managing /api/cart requests. Thus, it acts as a direct upstream service to cartservice. High errors were observed in the controller when interacting with cartservice.", + "confidence": "high" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The frontend service interacts directly with the controller, handling user interactions that lead to /api/cart requests which are eventually processed by cartservice.", + "confidence": "high" + }, + { + "entity": { + "service.name": "currencyservice" + }, + "reason": "The currencyservice interacts with cartservice to handle currency conversions, acting as an upstream dependency for cartservice when performing currency-related operations on cart items.", + "confidence": "medium-high" + }, + { + "entity": { + "service.name": "checkoutservice" + }, + "reason": "The checkoutservice relies on cart data from cartservice during the checkout process, making it a downstream service dependent on the correct functioning of cartservice.", + "confidence": "medium" + }, + { + "entity": { + "service.name": "loadgenerator" + }, + "reason": "The loadgenerator service generates simulated traffic which impacts cartservice directly when testing the system's resilience.", + "confidence": "medium" + }, + { + "entity": { + "service.name": "adservice" + }, + "reason": "The adservice might indirectly impact cartservice through the frontend service by affecting the overall user experience and potentially causing indirect latency.", + "confidence": "low-medium" + }, + { + "entity": { + "service.name": "frontend" + }, + "reason": "The `frontend` service is highly likely to be relevant as it has a direct interaction with the `cartservice` and would be significantly impacted by any issues within the `cartservice`.", + "confidence": "very high" + }, + { + "entity": { + "service.name": "valkey" + }, + "reason": "The `valkey` service is highly relevant because it is the data store for `cartservice`, directly affecting its behavior and performance.", + "confidence": "high" + }, + { + "entity": { + "service.name": "currencyservice" + }, + "reason": "The `currencyservice` may interact with `cartservice` to handle price conversions for the items in the cart. Problems with currency conversion could cause unexpected data formats or communication failures, leading to `500 Internal Server Error` in `cartservice`.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "checkoutservice" + }, + "reason": "The `checkoutservice` could potentially depend on `cartservice` to validate and finalize items in the user's cart as part of the checkout process. If the `cartservice` fails during these operations, it could propagate errors back up to the user level through `checkoutservice`.", + "confidence": "moderate" + } + ], + "summary": "Based on the context provided, including the system architecture and data samples, the entity `service.name:cartservice` can be described as follows:\n\n### Infrastructure & Environment\n`cartservice` operates within a microservices-based architecture. It is containerized and runs within a Kubernetes environment. Specifically, the data sample indicates that the service is deployed in the `default` Kubernetes namespace and is running on a pod named `my-otel-demo-cartservice-67575c6f84-vngzw` with an IP address of `10.244.0.61`. The service environment is tagged as `opentelemetry-demo`, indicating the use of OpenTelemetry for observability purposes. The infrastructure includes a Redis cache used by the cart service for data persistence.\n\n### Communication Characteristics (Protocols and Endpoints)\n`cartservice` primarily communicates using gRPC. It handles shopping cart data including adding and removing items. The service interacts with Redis (as indicated by the `labels.db_redis_flags` attribute). Additionally, the service integrates with external feature flag providers as seen from the `feature_flag_key` and `feature_flag_provider_name` attributes, which suggests it evaluates feature flags, possibly targeting the feature key `cartServiceFailure`. \n\nThe communication endpoints and protocols from the sample data are:\n- gRPC methods: `/oteldemo.CartService/EmptyCart`, `/oteldemo.CartService/AddItem`, `/oteldemo.CartService/GetCart`\n- HTTP endpoint: `http://my-otel-demo-flagd:8013/flagd.evaluation.v1.Service/ResolveBoolean`\n- Redis database interactions: `HGET`, `HMSET`, `EXPIRE` commands targeting various identifiers like `my-otel-demo-valkey:6379`.\n\n### Context of Entity in Investigation\nThe cart service (`cartservice`) is being investigated as it is the downstream service handling `/api/cart` requests. Issues in `cartservice` are directly contributing to the error patterns in the controller layer for the `/api/cart` endpoint. A high error rate, culminating in `500 Internal Server Error` responses, started around `2024-11-02T10:56:42.498Z`. The context indicates that the cart service plays a crucial role in managing shopping cart operations.\n\nGiven the observed high error rates and the 500 errors, `cartservice` may be experiencing issues in processing gRPC calls, feature flag evaluations, or Redis caching, which could be causing failures that propagate upstream to the controller.\n\n### Related Entities and Previous Investigations\nPreviously, errors in the controller for POST requests to `/api/cart` have been observed. This investigation is a continuation, focusing on the downstream `cartservice` which is responsible for handling these requests. This service's interaction with other entities such as Redis (for caching cart data) and external feature flag services (potentially toggling functionality) suggest that any issues in these integrations could impact the `cartservice` performance and result in the observed errors upstream in the controller.\n\nThis detailed analysis moves us to further inspect specific logs, traces, and any interdependent service metrics that may provide clues about the root cause of the high error rate in `cartservice`.\n\n### Observations for service.name:cartservice\n\n#### Startup Messages\n1. **Pattern: \"OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated.\"**\n - **Count:** 78\n - **Trend:** There was a spike at **2024-11-02T10:55:30.000Z** with 78 occurrences. Before this timestamp, the value was consistently 0.\n\n2. **Pattern: \"OTEL-SDK: [224] 'MeterProvider' Disposed.\"**\n - **Count:** 4\n - **Trend:** Occurrences were persistently recorded as 0 until a brief spike at **2024-11-02T10:55:30.000Z** with 4 instances.\n\n3. **Pattern: \"exiting...\"**\n - **Count:** 3\n - **Trend:** Consistently 0 until a minor rise at **2024-11-02T10:55:30.000Z**, with 3 instances recorded.\n\n4. **Pattern: \"Application is shutting down...\"**\n - **Count:** 2\n - **Trend:** Log entries were consistently at 0 with a brief spike at **2024-11-02T10:55:30.000Z** showing 2 instances.\n\n#### Fatal Errors\n5. **Pattern: \"FATAL: Could not start, bad entrypoint!\"**\n - **Count:** 3\n - **Trend:** This pattern shows a significant change at **2024-11-02T10:55:30.000Z** with 2 occurrences at the change point and one additional at **2024-11-02T10:56:30.000Z**. Before this period, the occurrence rate was consistently 0.\n\n### Conclusion\n\nThe patterns observed indicate that there were significant startup issues with the `cartservice` around the **2024-11-02T10:55:30.000Z** mark. Specifically, the `cartservice` encountered a fatal error (\"FATAL: Could not start, bad entrypoint!\") that aligns precisely with the rise in errors noted during this period. This error indicates that the service failed to start due to a misconfiguration or issues with the entry point. This corresponds with the sudden spike in errors and `500 Internal Server Error` responses observed in the downstream controller making POST requests to the `/api/cart` endpoint. Furthermore, logs related to the service's deactivation and shutdown support the perspective that the service was not running successfully or consistently after this time.\n\n### Timeline of significant events\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “OTEL-SDK: [224] Instrument 'process.runtime.dotnet.jit.compilation_time', Meter 'OpenTelemetry.Instrumentation.Runtime' has been deactivated.”\n - **Description**: Spike detected with 78 occurrences, suggesting a potential issue within the service's runtime environment.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “OTEL-SDK: [224] 'MeterProvider' Disposed.”\n - **Description**: Sudden spike of 4 occurrences suggesting a significant change in the service’s telemetry setup or a potential abnormal shutdown initiation.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “exiting...”\n - **Description**: Log entries rose to 3 incidences, signaling the cart service may be initiating an unexpected exit.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “Application is shutting down...”\n - **Description**: 2 instances of this log message indicating the application is attempting to shut down around this time.\n\n- **2024-11-02T10:55:30.000Z**: \n - **Log Message**: “FATAL: Could not start, bad entrypoint!”\n - **Description**: Abrupt fatal error occurs 2 times, implying a critical misconfiguration or startup failure.\n\n- **2024-11-02T10:56:30.000Z**: \n - **Log Message**: “FATAL: Could not start, bad entrypoint!”\n - **Description**: Another occurrence of the critical fatal error, indicating the issue persisted beyond the initial spike and may have contributed to continued disruptions.\n\n- **2024-11-02T10:56:42.498Z**: \n - **Alert**: High error rate observed in the controller (98.78% error rate for POST requests to /api/cart).\n - **Description**: Starts the period of significantly high error rates contributing to 500 Internal Server Error responses. \n\n### Context and reasoning\n\nGiven the high error rate (98.78%) starting from **2024-11-02T10:56:42.498Z** for POST requests to `/api/cart`, the `cartservice` is a critical component for investigation as it handles these requests directly. From logs, there is a clear indication that significant problems began around **2024-11-02T10:55:30.000Z**, approximately one minute before the heightened error rate was observed in the upstream controller.\n\n**1. Startup Issues**: Multiple startup-related log patterns such as instruments deactivation, disposal of the MeterProvider, and application exit/shutdown messages indicate that cartservice experienced troubles initializing. Notably, the log entries “FATAL: Could not start, bad entrypoint!” directly show critical failures in service entry points likely causing the downstream failures.\n\n**2. Fatal Errors**: The fatal errors precisely correlate with the timeframe where errors spiked in the upstream service (controller). The error messages “FATAL: Could not start, bad entrypoint!” occurring multiple times reflect a misconfiguration or critical code issue that prevented the service from running properly.\n\nThus, the evidence from log patterns strongly suggests that startup and initialization problems in `cartservice`, resulting in its inconsistent availability and operational failures, is the root cause of the observed high error rates and 500 Internal Server Errors in the controller's POST requests to `/api/cart`." + }, + { + "attachments": { + "alerts": [], + "slos": [], + "analysis": { + "total": 98017, + "sampled": 1000, + "fields": [ + "@timestamp:date - 327 distinct values", + "app.label.component:keyword - 1 distinct values (`frontend`)", + "attributes.log.file.path.text:text - 1 distinct values (`/var/log/pods/default_my-otel-demo-frontend-5bbf4d78bc-qtwdr_a9fcfff9-3524-411e-8ac9-4e4341c1a121/frontend/0.log`)", + "attributes.log.file.path:keyword - 1 distinct values (`/var/log/pods/default_my-otel-demo-frontend-5bbf4d78bc-qtwdr_a9fcfff9-3524-411e-8ac9-4e4341c1a121/frontend/0.log`)", + "attributes.log.iostream:keyword - 1 distinct values (`stderr`)", + "body.text:text - 36 distinct values (` code: 13,\n`, ` details: 'cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"',\n`, 34 more values)", + "data_stream.dataset:keyword - 1 distinct values (`generic.otel`)", + "data_stream.namespace:keyword - 1 distinct values (`default`)", + "data_stream.type:keyword - 1 distinct values (`logs`)", + "deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "dropped_attributes_count:long - 1 distinct values (`0`)", + "event.dataset:keyword - 1 distinct values (`generic.otel`)", + "host.arch:keyword - 1 distinct values (`arm64`)", + "host.architecture:keyword - 1 distinct values (`arm64`)", + "host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "host.cpu.family:keyword - 1 distinct values (``)", + "host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "host.cpu.model.name:keyword - 1 distinct values (``)", + "host.cpu.stepping:keyword - 1 distinct values (`0`)", + "host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "host.os.full:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "host.os.platform:keyword - 1 distinct values (`linux`)", + "k8s.container.name:keyword - 1 distinct values (`frontend`)", + "k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "k8s.deployment.name:keyword - 1 distinct values (`my-otel-demo-frontend`)", + "k8s.namespace.name:keyword - 1 distinct values (`default`)", + "k8s.node.name:keyword - 1 distinct values (`minikube`)", + "k8s.pod.name:keyword - 1 distinct values (`my-otel-demo-frontend-5bbf4d78bc-qtwdr`)", + "k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T09:00:25Z`)", + "k8s.pod.uid:keyword - 1 distinct values (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`)", + "kubernetes.deployment.name:keyword - 1 distinct values (`my-otel-demo-frontend`)", + "kubernetes.namespace:keyword - 1 distinct values (`default`)", + "kubernetes.node.name:keyword - 1 distinct values (`minikube`)", + "kubernetes.pod.name:keyword - 1 distinct values (`my-otel-demo-frontend-5bbf4d78bc-qtwdr`)", + "kubernetes.pod.uid:keyword - 1 distinct values (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`)", + "log.file.path:keyword - 1 distinct values (`/var/log/pods/default_my-otel-demo-frontend-5bbf4d78bc-qtwdr_a9fcfff9-3524-411e-8ac9-4e4341c1a121/frontend/0.log`)", + "log.iostream:keyword - 1 distinct values (`stderr`)", + "message:text - 36 distinct values (` code: 13,\n`, ` details: 'cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"',\n`, 34 more values)", + "observed_timestamp:date_nanos - 1000 distinct values (`2024-11-02T10:56:50.564274379Z`, `2024-11-02T10:55:46.563453752Z`, `2024-11-02T10:56:52.76272763Z`, `2024-11-02T10:56:14.764728626Z`, `2024-11-02T10:55:51.964080879Z`, `2024-11-02T10:55:51.764216463Z`, `2024-11-02T10:56:50.564063629Z`, `2024-11-02T10:55:38.563141804Z`, `2024-11-02T10:55:53.963540672Z`, `2024-11-02T10:56:32.762493176Z`, 990 more values)", + "os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.app.label.component:keyword - 1 distinct values (`frontend`)", + "resource.attributes.deployment.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "resource.attributes.host.arch:keyword - 1 distinct values (`arm64`)", + "resource.attributes.host.cpu.cache.l2.size:long - 1 distinct values (`0`)", + "resource.attributes.host.cpu.family:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.model.id:keyword - 1 distinct values (`0x000`)", + "resource.attributes.host.cpu.model.name.text:text - 1 distinct values (``)", + "resource.attributes.host.cpu.model.name:keyword - 1 distinct values (``)", + "resource.attributes.host.cpu.stepping:keyword - 1 distinct values (`0`)", + "resource.attributes.host.cpu.vendor.id:keyword - 1 distinct values (`Apple`)", + "resource.attributes.host.ip:ip - 2 distinct values (`10.244.0.19`, `fe80::28ce:acff:fe42:368e`)", + "resource.attributes.host.mac:keyword - 1 distinct values (`2A-CE-AC-42-36-8E`)", + "resource.attributes.host.name:keyword - 1 distinct values (`otel-daemonset-opentelemetry-collector-agent-7jlpk`)", + "resource.attributes.k8s.container.name.text:text - 1 distinct values (`frontend`)", + "resource.attributes.k8s.container.name:keyword - 1 distinct values (`frontend`)", + "resource.attributes.k8s.container.restart_count:keyword - 1 distinct values (`0`)", + "resource.attributes.k8s.deployment.name:keyword - 1 distinct values (`my-otel-demo-frontend`)", + "resource.attributes.k8s.namespace.name:keyword - 1 distinct values (`default`)", + "resource.attributes.k8s.node.name:keyword - 1 distinct values (`minikube`)", + "resource.attributes.k8s.pod.name:keyword - 1 distinct values (`my-otel-demo-frontend-5bbf4d78bc-qtwdr`)", + "resource.attributes.k8s.pod.start_time:keyword - 1 distinct values (`2024-10-26T09:00:25Z`)", + "resource.attributes.k8s.pod.uid:keyword - 1 distinct values (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`)", + "resource.attributes.os.description:keyword - 1 distinct values (`Ubuntu 24.04.1 LTS (Noble Numbat) (Linux otel-daemonset-opentelemetry-collector-agent-7jlpk 6.10.4-linuxkit #1 SMP Wed Oct 2 16:38:00 UTC 2024 aarch64)`)", + "resource.attributes.os.type:keyword - 1 distinct values (`linux`)", + "resource.attributes.service.name.text:text - 1 distinct values (`frontend`)", + "resource.attributes.service.name:keyword - 1 distinct values (`frontend`)", + "resource.dropped_attributes_count:long - 1 distinct values (`0`)", + "resource.schema_url:keyword - 1 distinct values (`https://opentelemetry.io/schemas/1.6.1`)", + "scope.dropped_attributes_count:long - 1 distinct values (`0`)", + "service.environment:keyword - 1 distinct values (`opentelemetry-demo`)", + "service.name:keyword - 1 distinct values (`frontend`)", + "severity_number:byte - 1 distinct values (`0`)" + ] + }, + "ownPatterns": [ + { + "field": "message", + "count": 3756, + "pattern": "at", + "regex": ".*?at.*?", + "sample": " at /app/.next/server/pages/api/cart.js:1:1025\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at /app/.next/server/pages/api/cart.js:1:1025\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 1103 + }, + { + "x": 1730544960000, + "y": 1411 + }, + { + "x": 1730544990000, + "y": 1242 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "qlqu", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 2366, + "pattern": "at app node_modules grpc grpc js build src", + "regex": ".*?at.+?app.+?node_modules.+?grpc.+?grpc.+?js.+?build.+?src.*?", + "sample": " at Object.onReceiveStatus (/app/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:360:141)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at Object.onReceiveStatus (/app/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:360:141)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 693 + }, + { + "x": 1730544960000, + "y": 896 + }, + { + "x": 1730544990000, + "y": 777 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "roms", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1014, + "pattern": "at app node_modules opentelemetry instrumentation grpc build src", + "regex": ".*?at.+?app.+?node_modules.+?opentelemetry.+?instrumentation.+?grpc.+?build.+?src.*?", + "sample": " at ServiceClientImpl.clientMethodTrace [as getCart] (/app/node_modules/@opentelemetry/instrumentation-grpc/build/src/instrumentation.js:211:42)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ServiceClientImpl.clientMethodTrace [as getCart] (/app/node_modules/@opentelemetry/instrumentation-grpc/build/src/instrumentation.js:211:42)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 297 + }, + { + "x": 1730544960000, + "y": 384 + }, + { + "x": 1730544990000, + "y": 333 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "eyqk", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 351, + "pattern": "at node:internal process task_queues", + "regex": ".*?at.+?node:internal.+?process.+?task_queues.*?", + "sample": " at process.processTicksAndRejections (node:internal/process/task_queues:77:11)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at process.processTicksAndRejections (node:internal/process/task_queues:77:11)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 104 + }, + { + "x": 1730544960000, + "y": 129 + }, + { + "x": 1730544990000, + "y": 118 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "mpyi", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at AsyncLocalStorage.run node:async_hooks 346 14", + "regex": ".*?at.+?AsyncLocalStorage\\.run.+?node:async_hooks.+?346.+?14.*?", + "sample": " at AsyncLocalStorage.run (node:async_hooks:346:14)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at AsyncLocalStorage.run (node:async_hooks:346:14)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "jsoq", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at AsyncLocalStorageContextManager.with app node_modules opentelemetry context async hooks build src AsyncLocalStorageContextManager.js 33 40", + "regex": ".*?at.+?AsyncLocalStorageContextManager\\.with.+?app.+?node_modules.+?opentelemetry.+?context.+?async.+?hooks.+?build.+?src.+?AsyncLocalStorageContextManager\\.js.+?33.+?40.*?", + "sample": " at AsyncLocalStorageContextManager.with (/app/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at AsyncLocalStorageContextManager.with (/app/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "viwd", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at ContextAPI.with app node_modules opentelemetry api build src api context.js 60 46", + "regex": ".*?at.+?ContextAPI\\.with.+?app.+?node_modules.+?opentelemetry.+?api.+?build.+?src.+?api.+?context\\.js.+?60.+?46.*?", + "sample": " at ContextAPI.with (/app/node_modules/@opentelemetry/api/build/src/api/context.js:60:46)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ContextAPI.with (/app/node_modules/@opentelemetry/api/build/src/api/context.js:60:46)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "agsa", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at new ZoneAwarePromise app node_modules zone.js bundles zone.umd.js 1340 33", + "regex": ".*?at.+?new.+?ZoneAwarePromise.+?app.+?node_modules.+?zone\\.js.+?bundles.+?zone\\.umd\\.js.+?1340.+?33.*?", + "sample": " at new ZoneAwarePromise (/app/node_modules/zone.js/bundles/zone.umd.js:1340:33) {\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at new ZoneAwarePromise (/app/node_modules/zone.js/bundles/zone.umd.js:1340:33) {\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "dhes", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "code", + "regex": ".*?code.*?", + "sample": " code: 14,\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " code: 14,\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "feod", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "for call at", + "regex": ".*?for.+?call.+?at.*?", + "sample": "for call at\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + "for call at\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "enzg", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at ServiceClientImpl anonymous /app/node_modules/@grpc/grpc-js/build/src/make-client.js", + "regex": ".*?at.+?ServiceClientImpl.+?anonymous.+?/app/node_modules/@grpc/grpc-js/build/src/make-client\\.js.*?", + "sample": " at ServiceClientImpl. (/app/node_modules/@grpc/grpc-js/build/src/make-client.js:105:19)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ServiceClientImpl. (/app/node_modules/@grpc/grpc-js/build/src/make-client.js:105:19)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "iook", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 338, + "pattern": "at ServiceClientImpl.makeUnaryRequest /app/node_modules/@grpc/grpc-js/build/src/client.js", + "regex": ".*?at.+?ServiceClientImpl\\.makeUnaryRequest.+?/app/node_modules/@grpc/grpc-js/build/src/client\\.js.*?", + "sample": " at ServiceClientImpl.makeUnaryRequest (/app/node_modules/@grpc/grpc-js/build/src/client.js:161:32)\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " at ServiceClientImpl.makeUnaryRequest (/app/node_modules/@grpc/grpc-js/build/src/client.js:161:32)\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 99 + }, + { + "x": 1730544960000, + "y": 128 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "jvlx", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 335, + "pattern": "metadata Metadata internalRepr Map 0 options", + "regex": ".*?metadata.+?Metadata.+?internalRepr.+?Map.+?0.+?options.*?", + "sample": " metadata: Metadata { internalRepr: Map(0) {}, options: {} }\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " metadata: Metadata { internalRepr: Map(0) {}, options: {} }\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.678Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 97 + }, + { + "x": 1730544960000, + "y": 127 + }, + { + "x": 1730544990000, + "y": 111 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "wczz", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 3, + "pattern": "internalRepr Map content-type Array", + "regex": ".*?internalRepr.+?Map.+?content-type.+?Array.*?", + "sample": " internalRepr: Map(1) { 'content-type' => [Array] },\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " internalRepr: Map(1) { 'content-type' => [Array] },\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.039Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "pcyb", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 3, + "pattern": "metadata Metadata", + "regex": ".*?metadata.+?Metadata.*?", + "sample": " metadata: Metadata {\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " metadata: Metadata {\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.039Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "tcak", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 3, + "pattern": "options", + "regex": ".*?options.*?", + "sample": " options: {}\n", + "highlight": { + "service.name": [ + "frontend" + ], + "resource.attributes.service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + " options: {}\n" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.039Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "xbsw", + "relevance": "normal", + "interesting": false + }, + { + "field": "message", + "count": 1005, + "pattern": "No connection established Last error connect ECONNREFUSED 10.110.191.164 8080 2024 11 02T10", + "regex": ".*?No.+?connection.+?established.+?Last.+?error.+?connect.+?ECONNREFUSED.+?10\\.110\\.191\\.164.+?8080.+?2024.+?11.+?02T10.*?", + "sample": "14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080 (2024-11-02T10:56:12.143Z)", + "highlight": { + "service.name": [ + "frontend" + ] + }, + "metadata": { + "message": [ + "14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080 (2024-11-02T10:56:12.143Z)" + ] + }, + "firstOccurrence": "2024-11-02T10:55:36.676Z", + "lastOccurrence": "2024-11-02T10:56:59.370Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 291 + }, + { + "x": 1730544960000, + "y": 381 + }, + { + "x": 1730544990000, + "y": 333 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "pssf", + "relevance": "critical", + "interesting": true + }, + { + "field": "error.exception.message", + "count": 3, + "pattern": "INTERNAL cart failure failed to get user cart during checkout rpc error code Unavailable desc connection error desc transport Error while dialing dial tcp connect connection refused", + "regex": ".*?INTERNAL.+?cart.+?failure.+?failed.+?to.+?get.+?user.+?cart.+?during.+?checkout.+?rpc.+?error.+?code.+?Unavailable.+?desc.+?connection.+?error.+?desc.+?transport.+?Error.+?while.+?dialing.+?dial.+?tcp.+?connect.+?connection.+?refused.*?", + "sample": "13 INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"", + "highlight": { + "service.name": [ + "frontend" + ] + }, + "metadata": { + "error.exception.message": [ + "13 INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"" + ] + }, + "firstOccurrence": "2024-11-02T10:55:43.710Z", + "lastOccurrence": "2024-11-02T10:56:15.038Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 0 + }, + { + "x": 1730543820000, + "y": 0 + }, + { + "x": 1730543850000, + "y": 0 + }, + { + "x": 1730543880000, + "y": 0 + }, + { + "x": 1730543910000, + "y": 0 + }, + { + "x": 1730543940000, + "y": 0 + }, + { + "x": 1730543970000, + "y": 0 + }, + { + "x": 1730544000000, + "y": 0 + }, + { + "x": 1730544030000, + "y": 0 + }, + { + "x": 1730544060000, + "y": 0 + }, + { + "x": 1730544090000, + "y": 0 + }, + { + "x": 1730544120000, + "y": 0 + }, + { + "x": 1730544150000, + "y": 0 + }, + { + "x": 1730544180000, + "y": 0 + }, + { + "x": 1730544210000, + "y": 0 + }, + { + "x": 1730544240000, + "y": 0 + }, + { + "x": 1730544270000, + "y": 0 + }, + { + "x": 1730544300000, + "y": 0 + }, + { + "x": 1730544330000, + "y": 0 + }, + { + "x": 1730544360000, + "y": 0 + }, + { + "x": 1730544390000, + "y": 0 + }, + { + "x": 1730544420000, + "y": 0 + }, + { + "x": 1730544450000, + "y": 0 + }, + { + "x": 1730544480000, + "y": 0 + }, + { + "x": 1730544510000, + "y": 0 + }, + { + "x": 1730544540000, + "y": 0 + }, + { + "x": 1730544570000, + "y": 0 + }, + { + "x": 1730544600000, + "y": 0 + }, + { + "x": 1730544630000, + "y": 0 + }, + { + "x": 1730544660000, + "y": 0 + }, + { + "x": 1730544690000, + "y": 0 + }, + { + "x": 1730544720000, + "y": 0 + }, + { + "x": 1730544750000, + "y": 0 + }, + { + "x": 1730544780000, + "y": 0 + }, + { + "x": 1730544810000, + "y": 0 + }, + { + "x": 1730544840000, + "y": 0 + }, + { + "x": 1730544870000, + "y": 0 + }, + { + "x": 1730544900000, + "y": 0 + }, + { + "x": 1730544930000, + "y": 2 + }, + { + "x": 1730544960000, + "y": 1 + }, + { + "x": 1730544990000, + "y": 0 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "crai", + "relevance": "critical", + "interesting": true + } + ], + "patternsFromOtherEntities": [ + { + "field": "message", + "count": 246, + "pattern": "INFO 10.244.0.26 AAAA IN my otel demo frontend udp 39 false 512 NXDOMAIN qr rd ra 39", + "regex": ".*?INFO.+?10\\.244\\.0\\.26.+?AAAA.+?IN.+?my.+?otel.+?demo.+?frontend.+?udp.+?39.+?false.+?512.+?NXDOMAIN.+?qr.+?rd.+?ra.+?39.*?", + "sample": "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra 39 0.003716084s\n", + "highlight": { + "body.text": [ + "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra" + ], + "message": [ + "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra" + ] + }, + "metadata": { + "service.name": [ + "coredns" + ], + "message": [ + "[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra 39 0.003716084s\n" + ] + }, + "firstOccurrence": "2024-11-02T10:36:30.917Z", + "lastOccurrence": "2024-11-02T10:56:58.646Z", + "timeseries": [ + { + "x": 1730543790000, + "y": 6 + }, + { + "x": 1730543820000, + "y": 6 + }, + { + "x": 1730543850000, + "y": 6 + }, + { + "x": 1730543880000, + "y": 6 + }, + { + "x": 1730543910000, + "y": 6 + }, + { + "x": 1730543940000, + "y": 6 + }, + { + "x": 1730543970000, + "y": 6 + }, + { + "x": 1730544000000, + "y": 6 + }, + { + "x": 1730544030000, + "y": 6 + }, + { + "x": 1730544060000, + "y": 6 + }, + { + "x": 1730544090000, + "y": 6 + }, + { + "x": 1730544120000, + "y": 6 + }, + { + "x": 1730544150000, + "y": 6 + }, + { + "x": 1730544180000, + "y": 6 + }, + { + "x": 1730544210000, + "y": 6 + }, + { + "x": 1730544240000, + "y": 6 + }, + { + "x": 1730544270000, + "y": 6 + }, + { + "x": 1730544300000, + "y": 6 + }, + { + "x": 1730544330000, + "y": 6 + }, + { + "x": 1730544360000, + "y": 6 + }, + { + "x": 1730544390000, + "y": 6 + }, + { + "x": 1730544420000, + "y": 6 + }, + { + "x": 1730544450000, + "y": 6 + }, + { + "x": 1730544480000, + "y": 6 + }, + { + "x": 1730544510000, + "y": 6 + }, + { + "x": 1730544540000, + "y": 6 + }, + { + "x": 1730544570000, + "y": 6 + }, + { + "x": 1730544600000, + "y": 6 + }, + { + "x": 1730544630000, + "y": 6 + }, + { + "x": 1730544660000, + "y": 6 + }, + { + "x": 1730544690000, + "y": 6 + }, + { + "x": 1730544720000, + "y": 6 + }, + { + "x": 1730544750000, + "y": 6 + }, + { + "x": 1730544780000, + "y": 6 + }, + { + "x": 1730544810000, + "y": 6 + }, + { + "x": 1730544840000, + "y": 6 + }, + { + "x": 1730544870000, + "y": 6 + }, + { + "x": 1730544900000, + "y": 6 + }, + { + "x": 1730544930000, + "y": 6 + }, + { + "x": 1730544960000, + "y": 6 + }, + { + "x": 1730544990000, + "y": 6 + }, + { + "x": 1730545020000, + "y": 0 + } + ], + "change": { + "type": "stationary", + "significance": null + }, + "shortId": "rlzf", + "relevance": "normal", + "interesting": false + } + ], + "searches": [ + { + "fragments": [ + "10.110.191.164:8080", + "10.110.191.164", + "8080" + ], + "appearsAs": "This IP address and port are referenced in the investigated entity 'frontend'." + }, + { + "fragments": [ + "/api/cart", + "cartservice", + "/api" + ], + "appearsAs": "These URL fragments appear as attributes.request.url in the investigated entity 'frontend'. They could be related to 'cartservice'." + }, + { + "fragments": [ + "000aa", + "000bbb" + ], + "appearsAs": "These ids appear as span.id and parent.id in the investigated entity 'frontend'. They could be referring to spans found on upstream or downstream services" + } + ], + "relatedEntitiesSummaries": [ + "## Possible Relationships to `service.name:frontend`\n\n### 1. Entity: `service.name:controller`\n- **Indicators:**\n - #### Average Indicator:\n - **IP Address and Port:**\n - `frontend`: `10.110.191.164:8080`\n - `controller`: `10.244.0.26:8080`\n - **URL Fragment:**\n - `frontend`: `/api/cart`\n - `controller`: `/api/cart?session`\n- **Relationship Reasoning:**\n - The `controller` service is highly likely to be making requests to, or routing through, the `frontend` service as evidenced by the URL fragments referring to the `/api/cart` endpoint seen in both entities. Additionally, they share common IP address and port patterns indicating network interaction.\n- **Relevance Assessment:**\n - **Very High**: Given that the `controller` service handles endpoints like `/api/cart`, which directly correspond to transactions failing with a high error rate, this entity is a critical part of the interaction chain and should be closely examined.\n\n### 2. Entity: `service.name:cartservice`\n- **Indicators:**\n - #### Strong Indicator:\n - **Direct Call References:**\n - `frontend`: `details: 'cart failure: failed to get user cart during checkout: rpc error: ... desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"'\n - `cartservice`: `url.full.text:\"http://my-otel-demo-cartservice:8080/oteldemo.CartService/GetCart\"`\n- **Relationship Reasoning:**\n - The `frontend` service attempts to interact with the `cartservice` as observed by the endpoint `/oteldemo.CartService/GetCart`. Connection errors from `frontend` indicate it is calling `cartservice` and facing issues getting responses, potentially causing the 500 errors.\n- **Relevance Assessment:**\n - **Very High**: Since `cartservice` manages user cart data and the connection errors reported in `frontend` logs directly correspond to attempts to communicate with `cartservice`, this entity is a probable cause of the service failures being observed.\n\n### 3. Entity: `service.name:frontend-web`\n- **Indicators:**\n - #### Average Indicator:\n - **URL Fragment:**\n - `frontend`: `/api/cart`\n - `frontend-web`: `/api/cart`\n - #### Weak Indicator:\n - **RUM Layer Mentions:**\n - `frontend`: `frontend-web (RUM)`\n - `frontend-web`: Described in System Architecture.\n- **Relationship Reasoning:**\n - `frontend-web` captures real user interactions with the `/api/cart` endpoint providing insights into the `frontend` service which might help trace the errors and delays externally perceived by users.\n- **Relevance Assessment:**\n - **Moderate**: While `frontend-web` can show the surface errors users are experiencing, it is more of an observability layer rather than directly causing the 500 errors or impacting the service interactions upstream.\n\n### 4. Entity: `service.name:frontendproxy`\n- **Indicators:**\n - #### Average Indicator:\n - **Network Routing Indicator:**\n - `frontend`: Receives traffic from `frontendproxy`\n - `frontendproxy`: Directs traffic to `frontend`\n - #### IP Address Mention:\n - Both services reference `8080`, indicating shared routing or proxying.\n- **Relationship Reasoning:**\n - `frontendproxy` routes traffic from external sources, including simulated user requests, to `frontend`. Any issues in this proxy layer could impact the incoming traffic to `frontend`, causing errors.\n- **Relevance Assessment:**\n - **High**: Considering `frontendproxy` handles traffic routing, any misconfiguration or failures here could lead to the issues observed on the `frontend`.\n\n### 5. Entity: `service.name:coredns`\n- **Indicators:**\n - #### Weak Indicators:\n - **DNS Resolution Events:**\n - Logs showing DNS queries involving `frontend`.\n - **IP Address and Port:**\n - Shared network interactions over common ports like `8080`.\n- **Relationship Reasoning:**\n - While not directly related to application logic, `coredns` is responsible for DNS resolution within the cluster, and issues here could result in connectivity problems seen in `frontend` when trying to reach `cartservice`.\n- **Relevance Assessment:**\n - **Moderate**: While less likely to be the root cause, DNS misconfigurations or failures could indirectly contribute to connectivity issues within services like `frontend`.\n\n### Summary\n\n1. **service.name:controller** - Very High relevance due to direct endpoint interaction.\n2. **service.name:cartservice** - Very High relevance for being the direct interaction target with observed failures.\n3. **service.name:frontend-web** - Moderate relevance in monitoring layer but not direct interaction.\n4. **service.name:frontendproxy** - High relevance for routing traffic to `frontend`.\n5. **service.name:coredns** - Moderate relevance for possible DNS resolution issues." + ], + "kbEntries": [ + { + "id": "System architecture", + "text": "The architecture described here outlines a microservices-based system, where each service is implemented in a distinct programming language and communicates via gRPC, HTTP, or TCP. This system is designed to handle simulated user traffic, supported by a variety of interconnected services and components.\n\n### System Architecture\n\n1. **`loadgenerator`** - Simulates external user traffic by sending HTTP requests, which are managed by an Nginx ingress controller. This ingress directs traffic to the `frontendproxy` service.\n\n2. **`frontendproxy` (Envoy)** - Acts as a reverse proxy, routing incoming traffic from `loadgenerator` to `frontend`.\n\n3. **`frontend` (Node.js)** - The core service for user interactions, receiving HTTP traffic from `frontendproxy` and interfacing with various backend services to fulfill requests.\n\n4. **`frontend-web` (RUM)** - A Real User Monitoring (RUM) layer that runs in the user's browser, enabling insights into end-user experiences and frontend performance.\n\n5. **`adservice`** - Delivers advertisements to the `frontend` using gRPC, enhancing the user experience with relevant ad content.\n\n6. **`cartservice`** - Manages shopping cart data, including adding and removing items. It communicates over gRPC and leverages a Redis cache for data persistence.\n\n7. **`currencyservice`** - Handles currency conversions and facilitates interactions between `cartservice` and `checkoutservice` over gRPC.\n\n8. **`checkoutservice`** - Coordinates the checkout process, calling various services for payments, shipping, and emails. It utilizes both gRPC and HTTP protocols to aggregate the necessary information for order completion.\n\n9. **`emailservice`** - Sends order confirmation emails to users via gRPC, triggered by interactions with `checkoutservice`.\n\n10. **`productcatalogservice`** - Maintains the product catalog, storing details about available items and providing this data to other services via gRPC.\n\n11. **`recommendationservice`** - Generates personalized product recommendations, accessed by `frontend` over gRPC.\n\n12. **`shippingservice`** - Manages shipping information, providing essential data to `checkoutservice` over gRPC.\n\n13. **`quoteservice`** - Supplies shipping quotes over HTTP, which are accessed by `shippingservice` to estimate shipping costs.\n\n14. **`paymentservice`** - Processes payment transactions through gRPC, enabling secure and efficient payments for `checkoutservice`.\n\n15. **`accountingservice`** - Responsible for recording transactions, it connects to a Kafka queue and interacts over TCP.\n\n16. **`frauddetectionservice`** - Monitors orders for potential fraud, also interfacing with the Kafka queue over TCP to receive relevant transaction data.\n\n17. **`imageprovider` (Nginx)** - Serves static images for the frontend interface, accessible over HTTP.\n\n18. **`queue` (Kafka)** - Acts as a central message broker, facilitating communication between `accountingservice` and `frauddetectionservice`.\n\n### Key Components\nThe system is structured to enable robust, distributed communication across services, allowing each component to focus on a specific aspect of the user experience or business logic. The ingress controller, in particular, plays a critical role in directing traffic, ensuring that incoming requests from `loadgenerator` are correctly routed through `frontendproxy` and into the system’s core services.\n\nThis architecture ensures that the system can handle high traffic loads and provides a modular, flexible framework to meet user demands while monitoring for performance and security.\n", + "tokens": 733, + "score": 5 + } + ] + }, + "entity": { + "service.name": "frontend" + }, + "relatedEntities": [ + { + "entity": { + "service.name": "controller" + }, + "reason": "`controller` service handles endpoints like `/api/cart`, which corresponds to failed transactions. They share common IP address and port patterns, indicating network interaction.", + "confidence": "very high" + }, + { + "entity": { + "service.name": "cartservice" + }, + "reason": "`frontend` service attempts to interact with `cartservice`. Connection errors from `frontend` indicate it is calling `cartservice` and facing issues getting responses, potentially causing the 500 errors.", + "confidence": "very high" + }, + { + "entity": { + "service.name": "frontend-web" + }, + "reason": "`frontend-web` captures real user interactions with the `/api/cart` endpoint. Helps trace the errors and delays externally perceived by users.", + "confidence": "moderate" + }, + { + "entity": { + "service.name": "coredns" + }, + "reason": "`coredns` is responsible for DNS resolution within the cluster and issues here could result in connectivity problems seen in `frontend`.", + "confidence": "moderate" + } + ], + "summary": "### Investigation of Entity `service.name:frontend`\n\n#### Context of Investigation\n\nThe `frontend` service is critical in this investigation due to its role in the overall request handling and the observed high error rate (98.78%) in the `controller` service for POST requests to the `/api/cart` endpoint. This issue began at `2024-11-02T10:56:42.498Z`. The `frontend` service routes requests to `cartservice`, a key interaction in this error occurrence.\n\n#### Infrastructure & Environment\n\n- **Environment**: The `frontend` operates within the `opentelemetry-demo` deployment environment.\n- **Deployment**: It is deployed on Kubernetes (k8s), specifically within the `default` namespace. \n- **Pod Information**: The pod name is `my-otel-demo-frontend-5bbf4d78bc-qtwdr`, on the `minikube` node. Each pod has a unique UID (`a9fcfff9-3524-411e-8ac9-4e4341c1a121`), with logs stored at `/var/log/pods/`.\n- **Resource Attributes**: Hosts `Apple` Arm64 architecture processor (`host.cpu.vendor.id: Apple`), running `Ubuntu 24.04.1 LTS (Noble Numbat)`, indicating a Linux-based system.\n\n#### Communication Characteristics \n\n- **Protocols**: \n - The `frontend` service communicates primarily using HTTP for inbound requests and gRPC for backend service interactions. \n - gRPC is specifically used when the `frontend` communicates with `cartservice`, highlighted by recorded RPC errors in the logs.\n- **Endpoints**:\n - The `frontend` gets requests from `frontendproxy` (Envoy), acting as the reverse proxy.\n - The service then routes these requests to different backend services, including `cartservice`, via gRPC.\n - The critical IP noted in logs is `10.110.191.164:8080`, pointing to a potential endpoint for the `cartservice`.\n\n#### Context of Entity in Investigation\n\n- **Reason for Investigation**: The `frontend` service is under scrutiny due to its pivotal role in processing and routing incoming user requests. Any disruption in its communication or processing mechanism directly affects the functionality of connected services, notably `cartservice`, leading to high error rates observed in the `controller`.\n- **Relation to Other Entities**:\n - **Previous Entity**: `controller` - The `controller` service logs indicate a high number of 500 errors were triggered during POST requests to `/api/cart`.\n - **Dependencies**: `frontend` relies on successful communication with `cartservice` to fulfill these cart-related requests.\n- **Architectural Role**: The `frontend` is the nucleus for user interactions within this microservices architecture. Any network or communication issue in `frontend` can cascade, influencing its backend dependencies like `cartservice` and leading to broader service disruptions.\n\nThis comprehensive analysis of the `frontend` service’s infrastructure, communication protocols, and its investigative context emphasizes its critical position in the service chain responsible for the reported errors. Further scrutiny of the communication logs, particularly focusing on the gRPC interactions with `cartservice`, is essential to identify and mitigate the root cause of these failures.\n\nObservations for service `frontend`.\n\n### Connection Issues to Upstream Dependency\n\n1. **Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Sample**: \"14 UNAVAILABLE: No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080 (2024-11-02T10:56:12.143Z)\"\n - **Timeseries Observations**: \n - No occurrences before 2024-11-02T10:55:30.000Z.\n - Sharp increase at 2024-11-02T10:55:30.000Z (291 occurrences).\n - Further increase at 2024-11-02T10:56:00.000Z (381 occurrences).\n - Next timestamp at 2024-11-02T10:57:00.000Z showing a return to 0 occurrences.\n\n2. **Pattern**: \"INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"\n - **Sample**: \"13 INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing: dial tcp 10.110.191.164:8080: connect: connection refused\"\n - **Timeseries Observations**:\n - No occurrences before 2024-11-02T10:55:30.000Z.\n - Slight increase at 2024-11-02T10:55:30.000Z (2 occurrences).\n - One more occurrence at 2024-11-02T10:56:00.000Z (1 occurrence).\n - No occurrences after 2024-11-02T10:56:30.000Z.\n\nThe significant spike in connection errors starting from 2024-11-02T10:55:30.000Z aligns with the high error rate in the `controller` service, suggesting a strong correlation between these established connection issues in the `frontend` service and the 500 errors seen in the `controller` service for POST requests to the `/api/cart` endpoint around the same time.\n\n### Possibly Relevant Log Patterns from coredns\n\n1. **Pattern**: \"INFO 10.244.0.26 AAAA IN my-otel-demo-frontend udp 39 false 512 NXDOMAIN qr,rd,ra 39\"\n - **Sample**: \"[INFO] 10.244.0.26:59273 - 48617 \"AAAA IN my-otel-demo-frontend. udp 39 false 512\" NXDOMAIN qr,rd,ra 39 0.003716084s\"\n - **Timeseries Observations**:\n - Frequent steady occurrences of 6 events every 30 seconds.\n - No notable changes or spikes coinciding with the connection issues observed in the `frontend` service.\n\nFrom these observations, it appears that the connection refusal errors in the `frontend` service are likely caused by issues in communication with the `cartservice`, potentially as a result of intermittent network disruptions or dependency service failures at the IP 10.110.191.164. Further investigation should focus on the health and connectivity status of the `cartservice` around the specified time period.\n\n### Timeline of Significant Events\n\n1. **2024-11-02T10:55:30.000Z**\n - **Event**: Sharp increase in connection error logs.\n - **Log Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Details**: 291 occurrences reported.\n\n2. **2024-11-02T10:55:30.000Z**\n - **Event**: Appearance of an internal error in accessing cart services.\n - **Log Pattern**: \"INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error\"\n - **Details**: 2 occurrences reported.\n\n3. **2024-11-02T10:56:00.000Z**\n - **Event**: Further increase in connection error logs.\n - **Log Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Details**: 381 occurrences reported.\n\n4. **2024-11-02T10:56:00.000Z**\n - **Event**: Additional occurrence of an internal error in accessing cart services.\n - **Log Pattern**: \"INTERNAL: cart failure: failed to get user cart during checkout: rpc error: code = Unavailable desc = connection error\"\n - **Details**: 1 occurrence reported.\n\n5. **2024-11-02T10:56:42.498Z**\n - **Event**: High error rate (98.78%) in the `controller` service for POST requests to the `/api/cart` endpoint begins.\n - **Details**: Corresponds to the timing of observed spikes in connection errors in the `frontend` service.\n\n6. **2024-11-02T10:57:00.000Z**\n - **Event**: Connection error logs return to zero occurrences.\n - **Log Pattern**: \"No connection established. Last error: connect ECONNREFUSED 10.110.191.164:8080\"\n - **Details**: 0 occurrences reported.\n\n### Context and Reasoning\n\nThe `frontend` service is critical in this investigation due to its role in routing requests to the `cartservice`. The high error rates observed in the `controller` service's POST requests to the `/api/cart` endpoint started precisely at 2024-11-02T10:56:42.498Z, which is within the timeframe when the `frontend` service experienced significant connection issues with the `cartservice`.\n\nUpon analyzing log patterns, it is evident that the communication disruptions between the `frontend` service and the `cartservice` began at 2024-11-02T10:55:30.000Z with a sharp increase in connection errors, and these errors persisted until approximately 2024-11-02T10:57:00.000Z. During this period, numerous `ECONNREFUSED` errors were logged, indicating the `frontend` service's inability to establish a connection to the `cartservice` (IP 10.110.191.164:8080). This aligns with the timeline of the high error rates in the `controller` service, suggesting a direct correlation.\n\nFurthermore, the internal errors logged by the `frontend` service related to RPC errors and failed attempts to get the user cart during checkout reaffirm these connection problems. These errors underscore an impaired communication pathway to the `cartservice`, affecting the `controller` service's ability to process POST requests to the `/api/cart` endpoint.\n\nTherefore, the evidence strongly indicates that network or connection failures between the `frontend` service and its upstream dependency, `cartservice`, are the principal cause of the cascading 500 errors seen in the `controller` service. This highlights the critical position of the `frontend` service in ensuring stable communication pathways within the microservice architecture." + } + ] + }, + "role": "tool", + "toolCallId": "call_KJwmI3xgY1gcstI4MVd4Olcf" + }, + { + "role": "assistant", + "content": "", + "toolCalls": [ + { + "toolCallId": "call_1Y45Vw3lRUFLsImFilvrXPos", + "function": { + "name": "endProcessAndWriteReport", + "arguments": { + "endProcess": true + } + } + } + ] + }, + { + "name": "endProcessAndWriteReport", + "role": "tool", + "toolCallId": "call_1Y45Vw3lRUFLsImFilvrXPos", + "response": { + "report": "# Root Cause Analysis (RCA) Report\n\n## 1. Introduction\n\n### Overview\nThis RCA report investigates the elevated error rates in the `controller` service and its downstream dependencies. The incident was first detected by an alert indicating an unusually high number of 500 Internal Server Errors on the `/api/cart` endpoint, with an error rate of 98.78%, significantly exceeding the 1% threshold over a 1-minute period. The primary entities investigated were the `controller`, `cartservice`, and `frontend` services.\n\n### Initial Hypothesis\nThe initial hypothesis proposed that either a deployment, a critical configuration change, or a dependency failure caused the high error rate in the `controller` service.\n\n## 2. Investigation Summary\n\n### Proposed Hypotheses\n1. **Resource exhaustion in `controller`**:\n - **Evidence**:\n - **Strong:** High error rate specifically for POST requests to the `/api/cart` endpoint.\n - **Weak:** No indications of resource limits being exceeded in the `controller` service.\n2. **Upstream latency or failure from `frontendproxy`**:\n - **Evidence**:\n - **Strong:** Error patterns suggested connectivity issues starting from the `frontendproxy`.\n - **Weak:** Eventually ruled out as communication problems upstream of the `controller`.\n3. **Backend service issue or configuration error in `cartservice`**:\n - **Evidence**:\n - **Strong:** Identified startup issues and fatal errors in `cartservice`.\n - **Weak:** None.\n\n### Discarded Hypotheses\n- **Resource exhaustion in `controller`**: Ruled out due to stable resource usage.\n- **Upstream latency or failure from `frontendproxy`**: Connectivity issues traced further downstream to `cartservice`.\n\n### Investigated Entities\n- `controller`\n- `frontend`\n- `cartservice`\n\n## 3. Cause and Effect\n\n### Cause\nThe root cause was identified as a startup failure in the `cartservice`, with fatal \"bad entrypoint\" errors preventing the service from starting correctly.\n\n### Effect\nThe startup issues in `cartservice` caused connection failures, leading to `frontend` being unable to establish connections. This resulted in `controller` reporting a high number of 500 errors for POST requests to the `/api/cart` endpoint, thus impacting user-facing services relying on this endpoint.\n\n## 4. Evidence for Root Cause\n\n### Log Patterns\n- **`cartservice` Logs**: Repeated \"FATAL: Could not start, bad entrypoint!\" errors indicating startup failures.\n- **`frontend` Logs**: \"ECONNREFUSED\" errors and spikes in \"No connection established\" errors to `cartservice`.\n- **`controller` Logs**: High frequency of 500 errors for HTTP POST requests to `/api/cart`.\n\n### Alerts and SLOs\n- An alert was triggered at `2024-11-02T10:56:42.498Z` due to a high error rate of 98.78% for the `/api/cart` endpoint.\n\n### Data Analysis\n- **Memory and CPU usage** of `controller` remained stable, ruling out resource exhaustion.\n- **Network traffic** analysis showed no abnormalities at the `controller` level but issues at the connectivity to `cartservice`.\n\n## 5. Proposed Impact\n\n### Affected Services\n- `controller`\n- `frontend`\n- `cartservice`\n\n### Performance Degradation\n- High error rate and degraded performance for the `/api/cart` endpoint.\n- Impact on downstream services and user-facing operations reliant on `cartservice`.\n\n### User Impact\n- Elevated latency and failed transactions affecting users trying to access and modify shopping cart data.\n\n## 6. Timeline of Significant Events\n\n- **2024-11-02T10:55:30.000Z**:\n - `cartservice` logs indicate a series of startup issues, marked by \"FATAL: Could not start, bad entrypoint!\" errors.\n - `frontend` logs show initial \"No connection established\" errors to `cartservice`.\n\n- **2024-11-02T10:56:00.000Z**:\n - `frontend` logs continue to show increased \"No connection established\" errors.\n\n- **2024-11-02T10:56:30.000Z**:\n - Additional \"bad entrypoint\" errors recorded in `cartservice` logs.\n\n- **2024-11-02T10:56:42.498Z**:\n - Alert triggered due to a high error rate of 98.78% for `/api/cart` in `controller`.\n\n- **2024-11-02T10:57:00.000Z**:\n - `frontend` logs show a return to zero connection errors as the startup issue in `cartservice` stabilizes.\n\n## 7. Conclusion and Next Steps\n\n### Conclusion\nThe investigation concludes that the root cause of the incident was the startup failure and persistent initialization issues in `cartservice`. This prevented `cartservice` from functioning correctly, causing connection refusal errors in `frontend`, which in turn resulted in the `controller` reporting high error rates for POST requests to the `/api/cart` endpoint.\n\n### Next Steps\n1. **Fixes or Mitigations**:\n - Address and rectify the misconfiguration or code issues in `cartservice` causing fatal startup errors.\n - Ensure proper configuration and reliable startup for `cartservice` moving forward.\n\n2. **Monitoring Improvements**:\n - Implement more granular alerts and monitoring for `cartservice` startup and initialization errors.\n - Enhance network error monitoring between `frontend` and `cartservice`.\n\n3. **Further Investigations**:\n - Monitor `cartservice` and observe for any recurrent patterns indicating startup issues.\n - Investigate the potential for automated failover or redundancy mechanisms to handle startup failures in critical services.\n\nThis concluded RCA encapsulates the findings from the investigations and provides clear guidance on addressing identified issues.\n\n---\n\n**Prepared by:**\nElastic Observability Support Team", + "timeline": { + "events": [ + { + "@timestamp": "2024-11-02T10:55:30.000Z", + "severity": "unusual", + "type": "event", + "description": "`cartservice` logs indicate a series of startup issues, marked by 'FATAL: Could not start, bad entrypoint!' errors." + }, + { + "@timestamp": "2024-11-02T10:55:30.000Z", + "severity": "unusual", + "type": "event", + "description": "`frontend` logs show initial 'No connection established' errors to `cartservice`." + }, + { + "@timestamp": "2024-11-02T10:56:00.000Z", + "severity": "unusual", + "type": "event", + "description": "`frontend` logs continue to show increased 'No connection established' errors." + }, + { + "@timestamp": "2024-11-02T10:56:30.000Z", + "severity": "unusual", + "type": "event", + "description": "Additional 'bad entrypoint' errors recorded in `cartservice` logs." + }, + { + "@timestamp": "2024-11-02T10:56:42.498Z", + "severity": "critical", + "type": "alert", + "description": "Alert triggered due to a high error rate of 98.78% for `/api/cart` in `controller`." + }, + { + "@timestamp": "2024-11-02T10:57:00.000Z", + "severity": "info", + "type": "event", + "description": "`frontend` logs show a return to zero connection errors as the startup issue in `cartservice` stabilizes." + } + ] + } + } + } +] diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/mock/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/mock/index.ts new file mode 100644 index 0000000000000..5068c8d5055fb --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/mock/index.ts @@ -0,0 +1,26 @@ +/* + * 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 { + InvestigateEntityToolMessage, + RootCauseAnalysisEvent, +} from '@kbn/observability-ai-server/root_cause_analysis'; +import { RCA_INVESTIGATE_ENTITY_TOOL_NAME } from '@kbn/observability-ai-common/root_cause_analysis'; +import { MessageRole } from '@kbn/inference-common'; +import { Required } from 'utility-types'; +// @ts-ignore +import completeRootCauseAnalysisJson from './complete_root_cause_analysis.json'; + +export const completeRootCauseAnalysis = completeRootCauseAnalysisJson as RootCauseAnalysisEvent[]; + +export const controllerEntityHealthAnalysis = completeRootCauseAnalysis.find( + (event) => + 'role' in event && + event.role === MessageRole.Tool && + event.name === RCA_INVESTIGATE_ENTITY_TOOL_NAME && + event.response.entity['service.name'] === 'cartservice' +) as Required; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.stories.tsx new file mode 100644 index 0000000000000..6328835af1f63 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.stories.tsx @@ -0,0 +1,37 @@ +/* + * 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 { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { RootCauseAnalysisCallout } from '.'; + +const stories: Meta<{}> = { + title: 'RCA/Callout', + component: RootCauseAnalysisCallout, +}; + +export default stories; + +export const Default: Story<{}> = () => { + return ( + {}} + onCompleteInBackgroundClick={() => {}} + completeInBackground + /> + ); +}; + +export const CompleteInBackgroundDisabled: Story<{}> = () => { + return ( + {}} + onCompleteInBackgroundClick={() => {}} + completeInBackground={false} + /> + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.tsx new file mode 100644 index 0000000000000..0487172aca6a6 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_callout/index.tsx @@ -0,0 +1,106 @@ +/* + * 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 { + EuiButton, + EuiCallOut, + EuiCheckbox, + EuiFlexGroup, + EuiFlexItem, + EuiFormLabel, + EuiPanel, + EuiText, + EuiTitle, + useGeneratedHtmlId, +} from '@elastic/eui'; +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { AssistantAvatar } from '@kbn/observability-ai-assistant-plugin/public'; +import { css } from '@emotion/css'; + +export function RootCauseAnalysisCallout({ + onClick, + onCompleteInBackgroundClick, + completeInBackground, +}: { + onClick: () => void; + onCompleteInBackgroundClick: () => void; + completeInBackground: boolean; +}) { + const checkboxId = useGeneratedHtmlId(); + + return ( + + + + + + + + +

+ {i18n.translate('xpack.observabilityAiAssistant.rca.calloutTitle', { + defaultMessage: 'AI-assisted root cause analysis', + })} +

+
+
+
+ + + {i18n.translate('xpack.observabilityAiAssistant.rca.calloutText', { + defaultMessage: `Start an automated investigation that will analyze + log patterns, SLOs and alerts for entities and provide an evidence- + based root cause analysis of issues in your system.`, + })} + + + + + { + onCompleteInBackgroundClick(); + }} + checked={completeInBackground} + /> + + {i18n.translate( + 'xpack.observabilityAiAssistant.rootCauseAnalysisCallout.keepAnalysisRunningInFormLabelLabel', + { defaultMessage: 'Keep analysis running in background' } + )} + + + + {i18n.translate('xpack.observabilityAiAssistant.rca.calloutText', { + defaultMessage: 'Start analysis', + })} + + +
+
+
+
+ ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_collapsible_panel/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_collapsible_panel/index.tsx new file mode 100644 index 0000000000000..8cdf518f84abe --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_collapsible_panel/index.tsx @@ -0,0 +1,31 @@ +/* + * 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 { EuiAccordion, EuiPanel, EuiSpacer, useGeneratedHtmlId } from '@elastic/eui'; +import React from 'react'; +import { RootCauseAnalysisPanel } from '../rca_panel'; + +export function RootCauseAnalysisCollapsiblePanel({ + title, + content, + color, + isDisabled, +}: { + title: React.ReactNode; + content: React.ReactNode; + color?: React.ComponentProps['color']; + isDisabled?: boolean; +}) { + const htmlId = useGeneratedHtmlId(); + return ( + + + + {content} + + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_container/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_container/index.stories.tsx new file mode 100644 index 0000000000000..492d6ecc59386 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_container/index.stories.tsx @@ -0,0 +1,59 @@ +/* + * 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 { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { noop } from 'lodash'; +import { RootCauseAnalysisContainer } from '.'; +// @ts-ignore +import fullAnalysis from '../mock/complete_root_cause_analysis.json'; + +const stories: Meta<{}> = { + title: 'RCA/Container', + component: RootCauseAnalysisContainer, +}; + +export default stories; + +const handlers = { + onStartAnalysisClick: noop, + onStopAnalysisClick: noop, + onResetAnalysisClick: noop, + onCompleteInBackgroundClick: noop, + onClearAnalysisClick: noop, +}; + +export const Empty: Story<{}> = () => { + return ; +}; + +export const Loading: Story<{}> = () => { + return ; +}; + +export const LoadingWithoutCompleteInBackground: Story<{}> = () => { + return ; +}; + +const error = new Error('Failed to load analysis'); + +export const WithError: Story<{}> = () => { + return ( + + ); +}; + +export const Completed: Story<{}> = () => { + return ( + + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_container/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_container/index.tsx new file mode 100644 index 0000000000000..1651f039bdbf5 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_container/index.tsx @@ -0,0 +1,338 @@ +/* + * 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 { + RCA_END_PROCESS_TOOL_NAME, + RCA_INVESTIGATE_ENTITY_TOOL_NAME, + RCA_OBSERVE_TOOL_NAME, +} from '@kbn/observability-ai-common/root_cause_analysis'; +import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiText, useEuiTheme } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { AssistantMessage, MessageRole, ToolMessage } from '@kbn/inference-common'; +import type { + RootCauseAnalysisEvent, + RootCauseAnalysisToolMessage, + RootCauseAnalysisToolRequest, + ToolErrorMessage, +} from '@kbn/observability-ai-server/root_cause_analysis'; +import { findLast } from 'lodash'; +import React from 'react'; +import { css } from '@emotion/css'; +import { EntityBadge } from '../entity_badge'; +import { RootCauseAnalysisCallout } from '../rca_callout'; +import { RootCauseAnalysisEntityInvestigation } from '../rca_entity_investigation'; +import { RootCauseAnalysisObservationPanel } from '../rca_observation_panel'; +import { RootCauseAnalysisReport } from '../rca_report'; +import { RootCauseAnalysisStepItem } from '../rca_step'; +import { RootCauseAnalysisStopButton } from '../rca_stop_button'; + +export function RootCauseAnalysisContainer({ + events, + completeInBackground, + onStartAnalysisClick, + onStopAnalysisClick, + onResetAnalysisClick, + onClearAnalysisClick, + onCompleteInBackgroundClick, + loading, + error, +}: { + events?: RootCauseAnalysisEvent[]; + completeInBackground: boolean; + onStartAnalysisClick: () => void; + onStopAnalysisClick: () => void; + onResetAnalysisClick: () => void; + onClearAnalysisClick: () => void; + onCompleteInBackgroundClick: () => void; + loading: boolean; + error?: Error; +}) { + const theme = useEuiTheme(); + + if (!events?.length && !loading && !error) { + return ( + + ); + } + + const elements: React.ReactElement[] = []; + + const toolResponsesById = new Map( + events + ?.filter( + (event): event is Extract => + event.role === MessageRole.Tool + ) + .map((event) => [event.toolCallId, event]) + ); + + events?.forEach((event) => { + if (event.role === MessageRole.Assistant) { + event.toolCalls.forEach((toolCall) => { + switch (toolCall.function.name) { + case RCA_OBSERVE_TOOL_NAME: + elements.push( + getObservationItem( + toolCall.function.arguments.title, + toolResponsesById.get(toolCall.toolCallId) + ) + ); + break; + + case RCA_INVESTIGATE_ENTITY_TOOL_NAME: + case RCA_END_PROCESS_TOOL_NAME: + const response = toolResponsesById.get(toolCall.toolCallId); + const element = response ? getToolResponseItem(response) : undefined; + if (element) { + elements.push(element); + } + break; + } + }); + } + }); + + const clearButton = ( + { + onClearAnalysisClick(); + }} + iconType="crossInCircle" + > + {i18n.translate('xpack.observabilityAiAssistant.rca.clearButtonLabel', { + defaultMessage: 'Clear', + })} + + ); + + const restartButton = ( + { + onResetAnalysisClick(); + }} + iconType="refresh" + > + {i18n.translate('xpack.observabilityAiAssistant.rca.restartButtonLabel', { + defaultMessage: 'Restart', + })} + + ); + + if (loading) { + const label = getLoadingLabel(events); + elements.push( + { + onStopAnalysisClick(); + }} + /> + ) + } + loading + /> + ); + } else if (error) { + elements.push( + + {clearButton} + {restartButton} +
+ } + /> + ); + } else { + // completed + elements.push( + + {i18n.translate('xpack.observabilityAiAssistant.rca.analysisCompleted', { + defaultMessage: 'Completed analysis', + })} + + } + iconType="checkInCircleFilled" + color="primary" + button={ + + {clearButton} + {restartButton} + + } + /> + ); + } + + return ( + + {elements.map((element, index) => { + return React.cloneElement(element, { key: index }); + })} + + ); +} + +function getLoadingLabel(events?: RootCauseAnalysisEvent[]) { + const lastAssistantMessage = findLast( + events, + (event): event is Extract => + event.role === MessageRole.Assistant + ); + + if (lastAssistantMessage) { + const toolResponsesByToolCallId = new Map( + events + ?.filter( + (event): event is Extract => + event.role === MessageRole.Tool + ) + .map((event) => [event.toolCallId, event]) + ); + const pendingToolCalls = lastAssistantMessage.toolCalls.filter((event) => { + const response = toolResponsesByToolCallId.get(event.toolCallId); + + return !response; + }); + + const allInvestigateEntityToolCalls = pendingToolCalls.filter( + (event): event is RootCauseAnalysisToolRequest => + event.function.name === RCA_INVESTIGATE_ENTITY_TOOL_NAME + ); + + if (allInvestigateEntityToolCalls.length) { + return ( + + + {i18n.translate('xpack.observabilityAiAssistant.rca.investigatingEntitiesTextLabel', { + defaultMessage: 'Investigating entities', + })} + + + + {allInvestigateEntityToolCalls.map((toolCall) => { + return ( + + + + ); + })} + + + + ); + } + + if (pendingToolCalls[0]?.function.name === RCA_END_PROCESS_TOOL_NAME) { + return i18n.translate('xpack.observabilityAiAssistant.rca.finalizingReport', { + defaultMessage: 'Finalizing report', + }); + } + } + + return i18n.translate('xpack.observabilityAiAssistant.rca.analysisLoadingLabel', { + defaultMessage: 'Thinking...', + }); +} + +function getToolResponseErrorItem(response: ToolErrorMessage['response']) { + return ( + + ); +} + +function getToolResponseItem( + message: RootCauseAnalysisToolMessage | ToolErrorMessage +): React.ReactElement | null { + if (message.name === 'observe') { + return null; + } + + if (message.name === 'error') { + return getToolResponseErrorItem(message.response); + } + + if (message.name === 'investigateEntity') { + return ( + + ); + } + + return ( + + ); +} + +function getObservationItem( + title: React.ReactNode, + toolResponse?: RootCauseAnalysisToolMessage | ToolErrorMessage +) { + let content: string | undefined; + switch (toolResponse?.name) { + case 'observe': + content = toolResponse.response.content; + break; + + case 'error': + content = i18n.translate('xpack.observabilityAiAssistant.rca.failedObservation', { + defaultMessage: 'Failed to generate observations', + }); + break; + } + + return ( + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_investigation/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_investigation/index.stories.tsx new file mode 100644 index 0000000000000..0601a0cdf1f6f --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_investigation/index.stories.tsx @@ -0,0 +1,31 @@ +/* + * 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 { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { RootCauseAnalysisEntityInvestigation } from '.'; +import { controllerEntityHealthAnalysis } from '../mock'; + +const stories: Meta<{}> = { + title: 'RCA/EntityInvestigation', + component: RootCauseAnalysisEntityInvestigation, +}; + +export default stories; + +export const Default: Story<{}> = () => { + return ( + + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_investigation/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_investigation/index.tsx new file mode 100644 index 0000000000000..b74f5969fa08f --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_investigation/index.tsx @@ -0,0 +1,57 @@ +/* + * 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 { EuiFlexGroup, EuiFlexItem, EuiMarkdownFormat, EuiPanel, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import type { EntityInvestigation } from '@kbn/observability-ai-server/root_cause_analysis/tasks/investigate_entity/types'; +import React from 'react'; +import { EntityBadge } from '../entity_badge'; +import { RootCauseAnalysisCollapsiblePanel } from '../rca_collapsible_panel'; +import { RootCauseAnalysisEntityLogPatternTable } from '../rca_entity_log_pattern_table'; + +export function RootCauseAnalysisEntityInvestigation({ + summary, + entity, + ownPatterns, + patternsFromOtherEntities, +}: { + summary: string; + entity: Record; +} & Pick) { + return ( + + +

+ {i18n.translate( + 'xpack.observabilityAiAssistant.rootCauseAnalysisEntityInvestigation.title', + { + defaultMessage: 'Investigation', + } + )} +

+
+ + + +
+ } + content={ + + + {summary} + + + + } + /> + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_log_pattern_table/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_log_pattern_table/index.stories.tsx new file mode 100644 index 0000000000000..16596832eff89 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_log_pattern_table/index.stories.tsx @@ -0,0 +1,30 @@ +/* + * 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 { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { RootCauseAnalysisEntityLogPatternTable } from '.'; +import { controllerEntityHealthAnalysis } from '../mock'; + +const stories: Meta<{}> = { + title: 'RCA/EntityLogPatternTable', + component: RootCauseAnalysisEntityLogPatternTable, +}; + +export default stories; + +export const Default: Story<{}> = () => { + return ( + + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_log_pattern_table/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_log_pattern_table/index.tsx new file mode 100644 index 0000000000000..10d78eef6d475 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_entity_log_pattern_table/index.tsx @@ -0,0 +1,299 @@ +/* + * 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 { + EuiBadge, + EuiBasicTable, + EuiBasicTableColumn, + EuiCheckbox, + EuiFlexGroup, + EuiFlexItem, + EuiText, + EuiThemeComputed, +} from '@elastic/eui'; +import { css } from '@emotion/css'; +import { i18n } from '@kbn/i18n'; +import { formatInteger } from '@kbn/observability-utils-common/format/integer'; +import { highlightPatternFromRegex } from '@kbn/observability-utils-common/llm/log_analysis/highlight_patterns_from_regex'; +import type { EntityInvestigation } from '@kbn/observability-ai-server/root_cause_analysis/tasks/investigate_entity/types'; +import React, { useMemo, useState } from 'react'; +import { orderBy } from 'lodash'; +import type { AnalyzedLogPattern } from '@kbn/observability-ai-server/root_cause_analysis/tasks/analyze_log_patterns'; +import { useTheme } from '../../../hooks/use_theme'; +import { SparkPlot } from '../../charts/spark_plot'; + +const badgeClassName = css` + width: 100%; + .euiBadge__content { + justify-content: center; + } +`; + +const PER_PAGE = 5; + +export function RootCauseAnalysisEntityLogPatternTable({ + entity, + ownPatterns, + patternsFromOtherEntities, +}: Pick & { + entity: Record; +}) { + const theme = useTheme(); + + const [showUsualPatterns, setShowUsualPatterns] = useState(false); + + const [pageIndex, setPageIndex] = useState(0); + + const columns = useMemo((): Array> => { + return [ + { + field: 'relevance', + name: '', + width: '128px', + render: (_, { relevance, metadata }) => { + const color = getRelevanceColor(relevance); + + return ( + + {relevance} + + ); + }, + }, + { + field: 'pattern', + name: i18n.translate( + 'xpack.observabilityAiAssistant.rca.logPatternTable.messageColumnTitle', + { defaultMessage: 'Message' } + ), + render: (_, { regex, sample }) => { + return ( + + ); + }, + }, + { + field: 'count', + name: i18n.translate( + 'xpack.observabilityAiAssistant.rca.logPatternTable.countColumnTitle', + { defaultMessage: 'Count' } + ), + width: '96px', + render: (_, { count }) => { + return ( + + {formatInteger(count)} + + ); + }, + }, + { + field: 'change', + name: i18n.translate( + 'xpack.observabilityAiAssistant.rca.logPatternTable.changeColumnTitle', + { defaultMessage: 'Change' } + ), + width: '128px', + render: (_, { change }) => { + return getChangeBadge(change); + }, + }, + { + field: 'timeseries', + width: '128px', + name: i18n.translate( + 'xpack.observabilityAiAssistant.rca.logPatternTable.trendColumnTitle', + { defaultMessage: 'Trend' } + ), + render: (_, { timeseries, change }) => { + return ( + + ); + }, + }, + ]; + }, [theme]); + + const allPatterns = useMemo(() => { + return [...ownPatterns, ...patternsFromOtherEntities]; + }, [ownPatterns, patternsFromOtherEntities]); + + const items = useMemo(() => { + return allPatterns.filter((pattern) => { + if (!showUsualPatterns) { + return pattern.relevance !== 'normal'; + } + return pattern; + }); + }, [allPatterns, showUsualPatterns]); + + const visibleItems = useMemo(() => { + const start = pageIndex * PER_PAGE; + return orderBy(items, (item) => relevanceToInt(item.relevance), 'desc').slice( + start, + start + PER_PAGE + ); + }, [pageIndex, items]); + + const paginationOptions = useMemo(() => { + return { + pageIndex, + totalItemCount: items.length, + pageSize: PER_PAGE, + }; + }, [pageIndex, items.length]); + + return ( + + + + + {i18n.translate( + 'xpack.observabilityAiAssistant.rootCauseAnalysisEntityInvestigation.logPatternsTableTitle', + { + defaultMessage: 'Showing {count} of {total} log patterns', + values: { + total: items.length, + count: visibleItems.length, + }, + } + )} + + + + + { + setShowUsualPatterns((prev) => !prev); + }} + /> + + {i18n.translate( + 'xpack.observabilityAiAssistant.rca.logPatternTable.showUsualPatternsCheckbox', + { + defaultMessage: 'Show unremarkable patterns', + } + )} + + + + + { + setPageIndex(criteria.page.index); + }} + /> + + ); +} + +function getRelevanceColor(relevance: 'normal' | 'unusual' | 'warning' | 'critical') { + switch (relevance) { + case 'normal': + return 'plain'; + + case 'critical': + return 'danger'; + + case 'warning': + return 'warning'; + + case 'unusual': + return 'primary'; + } +} + +function getSignificanceColor(significance: 'high' | 'medium' | 'low' | null) { + switch (significance) { + case 'high': + return 'danger'; + + case 'medium': + return 'warning'; + + case 'low': + case null: + return 'plain'; + } +} + +function relevanceToInt(relevance: 'normal' | 'unusual' | 'warning' | 'critical') { + switch (relevance) { + case 'normal': + return 0; + case 'unusual': + return 1; + case 'warning': + return 2; + case 'critical': + return 3; + } +} + +function getAnnotationsFromChangePoint({ + change, + theme, + timeseries, +}: { + change: AnalyzedLogPattern['change']; + theme: EuiThemeComputed<{}>; + timeseries: Array<{ x: number; y: number }>; +}): Required['annotations']> { + if (!change.change_point || !change.type) { + return []; + } + + const color = getSignificanceColor(change.significance); + + return [ + { + color: color === 'plain' ? theme.colors.subduedText : theme.colors[color], + id: '1', + icon: '*', + label: {change.type}, + x: timeseries[change.change_point].x, + }, + ]; +} + +export function getChangeBadge(change: AnalyzedLogPattern['change']) { + return ( + + {change.significance ?? 'No change'} + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_observation_panel/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_observation_panel/index.stories.tsx new file mode 100644 index 0000000000000..5ec46729e7c74 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_observation_panel/index.stories.tsx @@ -0,0 +1,36 @@ +/* + * 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 { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { RootCauseAnalysisObservationPanel } from '.'; + +const stories: Meta<{}> = { + title: 'RCA/ObservationPanel', + component: RootCauseAnalysisObservationPanel, +}; + +const content = + 'The high rate of HTTP 500 errors in the controller service for the /api/cart endpoint is likely due to issues with the upstream service default-my-otel-demo-frontendproxy-8080, as indicated by logs showing upstream prematurely closed connections. The next step is to investigate the health and performance of the upstream service default-my-otel-demo-frontendproxy-8080.'; + +export default stories; + +export const Default: Story<{}> = () => { + return ( + + ); +}; + +export const Loading: Story<{}> = () => { + return ( + + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_observation_panel/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_observation_panel/index.tsx new file mode 100644 index 0000000000000..ee00f568ca688 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_observation_panel/index.tsx @@ -0,0 +1,64 @@ +/* + * 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 { + EuiFlexGroup, + EuiFlexItem, + EuiLoadingSpinner, + EuiMarkdownFormat, + EuiText, + EuiTitle, + useEuiTheme, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { css } from '@emotion/css'; +import { RootCauseAnalysisCollapsiblePanel } from '../rca_collapsible_panel'; + +export function RootCauseAnalysisObservationPanel({ + content, + title, + loading, +}: { + content?: string; + title: React.ReactNode; + loading?: boolean; +}) { + const theme = useEuiTheme().euiTheme; + return ( + + +

+ {i18n.translate('xpack.observabilityAiAssistant.rca.observationPanelTitle', { + defaultMessage: 'Observations', + })} +

+
+ + + + {title} + + {loading ? : null} + + +
+ } + color="success" + content={content ? {content} : null} + /> + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_panel/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_panel/index.tsx new file mode 100644 index 0000000000000..2ad1225a10f71 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_panel/index.tsx @@ -0,0 +1,36 @@ +/* + * 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 { EuiPanel } from '@elastic/eui'; +import { css } from '@emotion/css'; +import { rgba } from 'polished'; +import React from 'react'; +import { useTheme } from '../../../hooks/use_theme'; + +export function RootCauseAnalysisPanel({ + children, + color, +}: { + children: React.ReactElement; + color?: React.ComponentProps['color']; +}) { + const theme = useTheme(); + + const panelClassName = + color && color !== 'transparent' && color !== 'plain' && color !== 'subdued' + ? css` + border: 1px solid; + border-color: ${rgba(theme.colors[color], 0.25)}; + ` + : undefined; + + return ( + + {children} + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_report/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_report/index.stories.tsx new file mode 100644 index 0000000000000..cb32631fc7a73 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_report/index.stories.tsx @@ -0,0 +1,31 @@ +/* + * 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 { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { RootCauseAnalysisReport } from '.'; + +const report = + '## 1. Understanding the Context and Hypothesis\n\n### Context:\n- **Issue:** High rate of HTTP 500 errors for the `/api/cart` endpoint in the `controller` service.\n- **Objective:** Investigate internal issues or anomalies that could explain the alert.\n\n### Hypothesis:\n- The high rate of HTTP 500 errors could be due to internal issues within the `controller` service, such as resource exhaustion, misconfigurations, or upstream service failures.\n\n## 2. Entity Overview\n\n### Entity: `controller`\n- **Environment:** Kubernetes pod, running in `opentelemetry-demo`\n- **Language:** Not specified\n- **Communication:** HTTP\n- **Cloud Provider:** Not specified, but running on `minikube`\n\n## 3. Identifying Related Entities\n\n### Upstream Dependencies:\n- **Upstream Service:** `default-my-otel-demo-frontendproxy-8080`\n - **Evidence:** Log entries show frequent API calls to `default-my-otel-demo-frontendproxy-8080` for various endpoints, including `/api/cart`.\n\n### Downstream Dependencies:\n- **Downstream Service:** Not explicitly mentioned, but the `controller` service is likely serving multiple endpoints, including `/api/cart`.\n\n### Infrastructure:\n- **Pod:** `ingress-nginx-controller-bc57996ff-qrd25`\n - **Evidence:** Logs and metadata indicate the `controller` service is running in this pod.\n\n## 4. Health Status Assessment\n\n### Active Alerts:\n- **Alert:** Custom threshold alert for HTTP 500 errors on `/api/cart` endpoint.\n - **Reason:** Custom equation is 100, above the threshold of 5.\n - **Duration:** 1 min\n - **Data View:** logs-*\n - **Group:** `controller`, `/api/cart`\n - **Evaluation Values:** [100]\n - **Threshold:** [5]\n - **Status:** Active\n - **Start Time:** 2024-10-21T08:51:51.846Z\n\n### SLO Performance:\n- **No SLOs** specified for this entity.\n\n### Log Patterns and Anomalies:\n- **Normal Logs:**\n - Logs show normal GET and POST requests with HTTP 200 responses.\n- **Critical Logs:**\n - Logs indicate upstream prematurely closed connection while reading upstream, leading to HTTP 500 errors.\n - Example: `2024/10/21 08:37:11 [error] 36#36: *3518505 upstream prematurely closed connection while reading upstream, client: 10.244.0.117, server: otel-demo.internal, request: "POST /flagservice/flagd.evaluation.v1.Service/EventStream HTTP/1.1", upstream: "http://10.244.0.119:8080/flagservice/flagd.evaluation.v1.Service/EventStream", host: "ingress-nginx-controller.ingress-nginx.svc.cluster.local", referrer: "http://ingress-nginx-controller.ingress-nginx.svc.cluster.local/cart"`\n\n## 5. Relevance of Entity to the Investigation\n\n### Relevance:\n- The `controller` service is directly related to the investigation due to the elevated HTTP 500 error rate on the `/api/cart` endpoint.\n- The critical log entries suggest that the issue might be related to upstream service failures, specifically the `default-my-otel-demo-frontendproxy-8080` service.\n\n### Signs Aligning with Hypothesis:\n- **Resource Exhaustion:** Not explicitly indicated in the logs, but the high rate of HTTP 500 errors could be a symptom.\n- **Upstream Service Failures:** Logs indicate upstream prematurely closed connections, which aligns with the hypothesis of upstream service issues.\n\n## 6. Timeline of Significant Events\n\n### Timeline:\n1. **2024-10-21T08:37:11.050Z:** Critical log entry indicating upstream prematurely closed connection while reading upstream.\n2. **2024-10-21T08:51:51.846Z:** Alert for high rate of HTTP 500 errors on `/api/cart` endpoint becomes active.\n3. **2024-10-21T09:34:52.720Z:** Alert status remains active with a custom equation value of 100, above the threshold of 5.\n\n## 7. Next Steps or Root Cause Identification\n\n### Next Steps:\n1. **Investigate Upstream Service (`default-my-otel-demo-frontendproxy-8080`):**\n - Check the health and performance of the upstream service.\n - Look for any signs of resource exhaustion, connection issues, or misconfigurations.\n2. **Review Recent Changes:**\n - Check for any recent deployments or configuration changes in the `controller` service and its upstream dependencies.\n3. **Analyze Resource Usage:**\n - Monitor CPU, memory, and network usage for the `controller` service to identify any resource-related issues.\n\n### Potential Root Cause:\n- **Upstream Service Failures:** The critical log entries indicating upstream prematurely closed connections suggest that the root cause might be related to issues in the upstream service (`default-my-otel-demo-frontendproxy-8080`), leading to HTTP 500 errors in the `controller` service.\n\nBy following these steps, we can further narrow down the root cause and take appropriate actions to resolve the issue.'; + +const stories: Meta<{}> = { + title: 'RCA/Report', + component: RootCauseAnalysisReport, +}; + +export default stories; + +export const Default: Story<{}> = () => { + return ( + + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_report/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_report/index.tsx new file mode 100644 index 0000000000000..cd793786eb6cb --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_report/index.tsx @@ -0,0 +1,42 @@ +/* + * 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 { i18n } from '@kbn/i18n'; +import { + EuiFlexGroup, + EuiHorizontalRule, + EuiMarkdownFormat, + EuiPanel, + EuiTitle, +} from '@elastic/eui'; +import type { SignificantEventsTimeline } from '@kbn/observability-ai-server/root_cause_analysis'; + +export function RootCauseAnalysisReport({ + report, + timeline, +}: { + report: string; + timeline: SignificantEventsTimeline; +}) { + return ( + + + + +

+ {i18n.translate('xpack.observabilityAiAssistant.rootCauseAnalysisReport.title', { + defaultMessage: 'Report', + })} +

+
+
+
+ + {report} +
+ ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_step/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_step/index.stories.tsx new file mode 100644 index 0000000000000..fa5b184800216 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_step/index.stories.tsx @@ -0,0 +1,60 @@ +/* + * 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 { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { EuiBadge, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { RootCauseAnalysisStepItem } from '.'; + +const stories: Meta<{}> = { + title: 'RCA/StepItem', + component: RootCauseAnalysisStepItem, +}; + +export default stories; + +export const Default: Story<{}> = () => { + return ( + + Investigating + service.name:controller +
+ } + /> + ); +}; + +export const Loading: Story<{}> = () => { + return ( + + Investigating + service.name:controller + + } + /> + ); +}; + +export const WithColor: Story<{}> = () => { + return ( + + Investigating + service.name:controller + + } + /> + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_step/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_step/index.tsx new file mode 100644 index 0000000000000..d887c75c1b4a5 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_step/index.tsx @@ -0,0 +1,73 @@ +/* + * 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 { + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiLoadingSpinner, + EuiPanel, + EuiText, +} from '@elastic/eui'; +import { css } from '@emotion/css'; +import React from 'react'; +import { RootCauseAnalysisPanel } from '../rca_panel'; + +export interface RootCauseAnalysisStepItemProps { + label: React.ReactNode; + loading?: boolean; + color?: React.ComponentProps['color']; + button?: React.ReactElement; + iconType?: React.ComponentProps['type']; +} + +export function RootCauseAnalysisStepItem({ + label, + loading, + color, + iconType, + button, +}: RootCauseAnalysisStepItemProps) { + return ( + + + + + {loading ? ( + + ) : ( + + )} + + + + + {label} + + + {button ? {button} : null} + + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_stop_button/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_stop_button/index.tsx new file mode 100644 index 0000000000000..7ef0b175b636d --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_stop_button/index.tsx @@ -0,0 +1,26 @@ +/* + * 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 { i18n } from '@kbn/i18n'; +import { EuiButton } from '@elastic/eui'; + +export function RootCauseAnalysisStopButton({ onClick }: { onClick: () => void }) { + return ( + { + onClick(); + }} + iconType="stopFilled" + color="text" + > + {i18n.translate('xpack.observabilityAiAssistant.rca.stopAnalysisButtonLabel', { + defaultMessage: 'Stop', + })} + + ); +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_task_step/index.stories.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_task_step/index.stories.tsx new file mode 100644 index 0000000000000..4bc31dcf7cc4f --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_task_step/index.stories.tsx @@ -0,0 +1,65 @@ +/* + * 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 { Meta, Story } from '@storybook/react'; +import React from 'react'; +import { EuiBadge, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { RootCauseAnalysisTaskStepItem } from '.'; +import { EntityBadge } from '../entity_badge'; + +const stories: Meta<{}> = { + title: 'RCA/TaskStepItem', + component: RootCauseAnalysisTaskStepItem, +}; + +export default stories; + +export const Pending: Story<{}> = () => { + return ( + + Investigating + + + + + } + /> + ); +}; + +export const Completed: Story<{}> = () => { + return ( + + Completed investigation + + + + + } + /> + ); +}; + +export const Failure: Story<{}> = () => { + return ( + + Failed investigating + service.name:controller + + } + /> + ); +}; diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_task_step/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_task_step/index.tsx new file mode 100644 index 0000000000000..b29d8a834745d --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/rca/rca_task_step/index.tsx @@ -0,0 +1,37 @@ +/* + * 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 { RootCauseAnalysisStepItem } from '../rca_step'; + +export function RootCauseAnalysisTaskStepItem({ + label, + status, +}: { + label: React.ReactNode; + status: 'pending' | 'completed' | 'failure'; +}) { + let color: React.ComponentProps['color']; + let iconType: React.ComponentProps['iconType']; + + let loading: boolean | undefined; + + if (status === 'failure') { + color = 'danger'; + iconType = 'alert'; + } else if (status === 'completed') { + color = 'success'; + iconType = 'checkInCircleFilled'; + } else { + color = 'primary'; + loading = true; + } + + return ( + + ); +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/technical_preview_badge.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/technical_preview_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/technical_preview_badge.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/components/technical_preview_badge.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/changes/index.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/changes/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/changes/index.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/changes/index.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/lens.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/lens.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/lens.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/lens.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/visualize_esql.test.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/visualize_esql.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/visualize_esql.test.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/visualize_esql.test.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/visualize_esql.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/visualize_esql.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/functions/visualize_esql.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/functions/visualize_esql.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_kibana.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_kibana.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_kibana.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_kibana.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_license.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_license.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_license.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_license.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_app_service.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_app_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_app_service.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_app_service.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_chat_service.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_chat_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_chat_service.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_chat_service.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_router.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_router.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_router.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/__storybook_mocks__/use_observability_ai_assistant_router.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/is_nav_control_visible.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/is_nav_control_visible.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/is_nav_control_visible.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/is_nav_control_visible.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_chart_theme.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_chart_theme.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_chart_theme.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_chart_theme.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_force_update.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_force_update.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_force_update.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_force_update.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_kibana.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_kibana.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_kibana.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_license.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_license.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_license.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_license.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_local_storage.test.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_local_storage.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_local_storage.test.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_local_storage.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_local_storage.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_local_storage.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_local_storage.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_local_storage.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_nav_control_scope.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_nav_control_scope.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_nav_control_scope.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_nav_control_scope.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_nav_control_screen_context.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_nav_control_screen_context.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_nav_control_screen_context.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_nav_control_screen_context.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_chat_service.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_chat_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_chat_service.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_chat_service.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_params.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_params.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_params.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_router.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_router.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_router.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_observability_ai_assistant_router.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_theme.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_theme.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_theme.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/hooks/use_theme.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/index.ts new file mode 100644 index 0000000000000..9fd8b9158f4c8 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/index.ts @@ -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 type { PluginInitializer, PluginInitializerContext } from '@kbn/core/public'; +import { ConfigSchema, ObservabilityAIAssistantAppPlugin } from './plugin'; +import type { + ObservabilityAIAssistantAppPluginSetupDependencies, + ObservabilityAIAssistantAppPluginStartDependencies, + ObservabilityAIAssistantAppPublicSetup, + ObservabilityAIAssistantAppPublicStart, +} from './types'; + +export type { ObservabilityAIAssistantAppPublicSetup, ObservabilityAIAssistantAppPublicStart }; + +export const plugin: PluginInitializer< + ObservabilityAIAssistantAppPublicSetup, + ObservabilityAIAssistantAppPublicStart, + ObservabilityAIAssistantAppPluginSetupDependencies, + ObservabilityAIAssistantAppPluginStartDependencies +> = (pluginInitializerContext: PluginInitializerContext) => + new ObservabilityAIAssistantAppPlugin(pluginInitializerContext); diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/plugin.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/plugin.tsx new file mode 100644 index 0000000000000..218b663525dbd --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/plugin.tsx @@ -0,0 +1,169 @@ +/* + * 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, { lazy } from 'react'; +import ReactDOM from 'react-dom'; +import { + type AppMountParameters, + DEFAULT_APP_CATEGORIES, + type CoreSetup, + type CoreStart, + type Plugin, + type PluginInitializerContext, +} from '@kbn/core/public'; +import type { Logger } from '@kbn/logging'; +import { i18n } from '@kbn/i18n'; +import { AI_ASSISTANT_APP_ID } from '@kbn/deeplinks-observability'; +import { createAppService, AIAssistantAppService } from '@kbn/ai-assistant'; +import { withSuspense } from '@kbn/shared-ux-utility'; +import type { + ObservabilityAIAssistantAppPluginSetupDependencies, + ObservabilityAIAssistantAppPluginStartDependencies, + ObservabilityAIAssistantAppPublicSetup, + ObservabilityAIAssistantAppPublicStart, +} from './types'; +import { getObsAIAssistantConnectorType } from './rule_connector'; +import { NavControlInitiator } from './components/nav_control/lazy_nav_control'; +import { SharedProviders } from './utils/shared_providers'; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigSchema {} + +export class ObservabilityAIAssistantAppPlugin + implements + Plugin< + ObservabilityAIAssistantAppPublicSetup, + ObservabilityAIAssistantAppPublicStart, + ObservabilityAIAssistantAppPluginSetupDependencies, + ObservabilityAIAssistantAppPluginStartDependencies + > +{ + logger: Logger; + appService: AIAssistantAppService | undefined; + isServerless: boolean; + + constructor(context: PluginInitializerContext) { + this.logger = context.logger.get(); + this.isServerless = context.env.packageInfo.buildFlavor === 'serverless'; + } + + setup( + coreSetup: CoreSetup, + _: ObservabilityAIAssistantAppPluginSetupDependencies + ): ObservabilityAIAssistantAppPublicSetup { + coreSetup.application.register({ + id: AI_ASSISTANT_APP_ID, + title: i18n.translate('xpack.observabilityAiAssistant.appTitle', { + defaultMessage: 'Observability AI Assistant', + }), + euiIconType: 'logoObservability', + appRoute: '/app/observabilityAIAssistant', + category: DEFAULT_APP_CATEGORIES.observability, + visibleIn: [], + deepLinks: [ + { + id: 'conversations', + title: i18n.translate('xpack.observabilityAiAssistant.conversationsDeepLinkTitle', { + defaultMessage: 'Conversations', + }), + path: '/conversations/new', + }, + ], + mount: async (appMountParameters: AppMountParameters) => { + // Load application bundle and Get start services + const [{ Application }, [coreStart, pluginsStart]] = await Promise.all([ + import('./application'), + coreSetup.getStartServices() as Promise< + [CoreStart, ObservabilityAIAssistantAppPluginStartDependencies, unknown] + >, + ]); + + ReactDOM.render( + , + appMountParameters.element + ); + + return () => { + ReactDOM.unmountComponentAtNode(appMountParameters.element); + }; + }, + }); + + return {}; + } + + start( + coreStart: CoreStart, + pluginsStart: ObservabilityAIAssistantAppPluginStartDependencies + ): ObservabilityAIAssistantAppPublicStart { + const appService = (this.appService = createAppService({ + pluginsStart, + })); + const isEnabled = appService.isEnabled(); + if (isEnabled) { + coreStart.chrome.navControls.registerRight({ + mount: (element) => { + ReactDOM.render( + , + element, + () => {} + ); + + return () => {}; + }, + // right before the user profile + order: 1001, + }); + } + + const service = pluginsStart.observabilityAIAssistant.service; + + service.register(async ({ registerRenderFunction }) => { + const { registerFunctions } = await import('./functions'); + + await registerFunctions({ pluginsStart, registerRenderFunction }); + }); + + const withProviders =

(Component: React.ComponentType

) => + React.forwardRef((props: P, ref: React.Ref) => ( + + + + )); + + const LazilyLoadedRootCauseAnalysisContainer = withSuspense( + withProviders( + lazy(() => + import('./components/rca/rca_container').then((m) => ({ + default: m.RootCauseAnalysisContainer, + })) + ) + ) + ); + + pluginsStart.triggersActionsUi.actionTypeRegistry.register( + getObsAIAssistantConnectorType(service) + ); + return { + RootCauseAnalysisContainer: LazilyLoadedRootCauseAnalysisContainer, + }; + } +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/routes/config.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/routes/config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/routes/config.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/routes/config.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/routes/conversations/conversation_view_with_props.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/routes/conversations/conversation_view_with_props.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/routes/conversations/conversation_view_with_props.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/routes/conversations/conversation_view_with_props.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/ai_assistant.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/ai_assistant.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/ai_assistant.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/ai_assistant.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/ai_assistant_params.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/ai_assistant_params.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/ai_assistant_params.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/ai_assistant_params.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/translations.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/translations.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/translations.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/types.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/rule_connector/types.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/rule_connector/types.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/types.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/types.ts new file mode 100644 index 0000000000000..22bdf2b12236e --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/types.ts @@ -0,0 +1,69 @@ +/* + * 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 { LensPublicSetup, LensPublicStart } from '@kbn/lens-plugin/public'; +import type { + DataViewsPublicPluginSetup, + DataViewsPublicPluginStart, +} from '@kbn/data-views-plugin/public'; +import type { UiActionsSetup, UiActionsStart } from '@kbn/ui-actions-plugin/public'; +import type { + ObservabilityAIAssistantPublicSetup, + ObservabilityAIAssistantPublicStart, +} from '@kbn/observability-ai-assistant-plugin/public'; +import type { SharePluginSetup, SharePluginStart } from '@kbn/share-plugin/public'; +import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/public'; +import type { + ObservabilitySharedPluginSetup, + ObservabilitySharedPluginStart, +} from '@kbn/observability-shared-plugin/public'; +import type { MlPluginSetup, MlPluginStart } from '@kbn/ml-plugin/public'; +import type { + TriggersAndActionsUIPublicPluginSetup, + TriggersAndActionsUIPublicPluginStart, +} from '@kbn/triggers-actions-ui-plugin/public'; +import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; +import type { + AIAssistantManagementSelectionPluginPublicStart, + AIAssistantManagementSelectionPluginPublicSetup, +} from '@kbn/ai-assistant-management-plugin/public'; +import type { RootCauseAnalysisContainer } from './components/rca/rca_container'; + +export interface ObservabilityAIAssistantAppPublicStart { + RootCauseAnalysisContainer: React.ExoticComponent< + React.ComponentProps + >; +} +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ObservabilityAIAssistantAppPublicSetup {} + +export interface ObservabilityAIAssistantAppPluginStartDependencies { + licensing: LicensingPluginStart; + share: SharePluginStart; + lens: LensPublicStart; + dataViews: DataViewsPublicPluginStart; + uiActions: UiActionsStart; + observabilityAIAssistant: ObservabilityAIAssistantPublicStart; + observabilityShared: ObservabilitySharedPluginStart; + ml: MlPluginStart; + triggersActionsUi: TriggersAndActionsUIPublicPluginStart; + data: DataPublicPluginStart; + aiAssistantManagementSelection: AIAssistantManagementSelectionPluginPublicStart; +} + +export interface ObservabilityAIAssistantAppPluginSetupDependencies { + licensing: LicensingPluginSetup; + share: SharePluginSetup; + lens: LensPublicSetup; + dataViews: DataViewsPublicPluginSetup; + uiActions: UiActionsSetup; + observabilityAIAssistant: ObservabilityAIAssistantPublicSetup; + observabilityShared: ObservabilitySharedPluginSetup; + ml: MlPluginSetup; + triggersActionsUi: TriggersAndActionsUIPublicPluginSetup; + aiAssistantManagementSelection: AIAssistantManagementSelectionPluginPublicSetup; +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/utils/non_nullable.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/utils/non_nullable.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/utils/non_nullable.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/utils/non_nullable.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/utils/safe_json_parse.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/utils/safe_json_parse.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/utils/safe_json_parse.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/utils/safe_json_parse.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/utils/shared_providers.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/utils/shared_providers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/public/utils/shared_providers.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/public/utils/shared_providers.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/.eslintrc.json b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/.eslintrc.json similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/.eslintrc.json rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/.eslintrc.json diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/README.md b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/README.md new file mode 100644 index 0000000000000..f8d10c679e622 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/README.md @@ -0,0 +1,37 @@ +# Observability AI Assistant Evaluation Framework + +## Overview + +This tool is developed for our team working on the Elastic Observability platform, specifically focusing on evaluating the Observability AI Assistant. It simplifies scripting and evaluating various scenarios with the Large Language Model (LLM) integration. + +## Setup requirements + +- An Elasticsearch instance +- A Kibana instance +- At least one .gen-ai connector set up + +## Running evaluations + +Run the tool using: + +`$ node x-pack/solutions/observability/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/index.js` + +This will evaluate all existing scenarios, and write the evaluation results to the terminal. + +### Configuration + +#### Kibana and Elasticsearch + +By default, the tool will look for a Kibana instance running locally (at `http://localhost:5601`, which is the default address for running Kibana in development mode). It will also attempt to read the Kibana config file for the Elasticsearch address & credentials. If you want to override these settings, use `--kibana` and `--es`. Only basic auth is supported, e.g. `--kibana http://username:password@localhost:5601`. If you want to use a specific space, use `--spaceId` + +#### Connector + +Use `--connectorId` to specify a `.gen-ai` or `.bedrock` connector to use. If none are given, it will prompt you to select a connector based on the ones that are available. If only a single supported connector is found, it will be used without prompting. + +#### Persisting conversations + +By default, completed conversations are not persisted. If you do want to persist them, for instance for reviewing purposes, set the `--persist` flag to store them. This will also generate a clickable link in the output of the evaluation that takes you to the conversation. + +If you want to clear conversations on startup, use the `--clear` flag. This only works when `--persist` is enabled. If `--spaceId` is set, only conversations for the current space will be cleared. + +When storing conversations, the name of the scenario is used as a title. Set the `--autoTitle` flag to have the LLM generate a title for you. diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/alert_templates/templates.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/alert_templates/templates.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/alert_templates/templates.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/alert_templates/templates.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/cli.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/cli.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/cli.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/cli.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/evaluation.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/evaluation.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/evaluation.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/evaluation.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/get_service_urls.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/get_service_urls.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/get_service_urls.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/get_service_urls.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/index.js b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/index.js similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/index.js rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/index.js diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/read_kibana_config.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/read_kibana_config.ts new file mode 100644 index 0000000000000..e6a44cbb4a549 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/read_kibana_config.ts @@ -0,0 +1,44 @@ +/* + * 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 path from 'path'; +import fs from 'fs'; +import yaml from 'js-yaml'; +import { identity, pickBy } from 'lodash'; + +export type KibanaConfig = ReturnType; + +export const readKibanaConfig = () => { + const kibanaConfigDir = path.join(__filename, '../../../../../../../../config'); + const kibanaDevConfig = path.join(kibanaConfigDir, 'kibana.dev.yml'); + const kibanaConfig = path.join(kibanaConfigDir, 'kibana.yml'); + + const loadedKibanaConfig = (yaml.load( + fs.readFileSync(fs.existsSync(kibanaDevConfig) ? kibanaDevConfig : kibanaConfig, 'utf8') + ) || {}) as {}; + + const cliEsCredentials = pickBy( + { + 'elasticsearch.username': process.env.ELASTICSEARCH_USERNAME, + 'elasticsearch.password': process.env.ELASTICSEARCH_PASSWORD, + 'elasticsearch.hosts': process.env.ELASTICSEARCH_HOST, + }, + identity + ) as { + 'elasticsearch.username'?: string; + 'elasticsearch.password'?: string; + 'elasticsearch.hosts'?: string; + }; + + return { + 'elasticsearch.hosts': 'http://localhost:9200', + 'elasticsearch.username': 'elastic', + 'elasticsearch.password': 'changeme', + ...loadedKibanaConfig, + ...cliEsCredentials, + }; +}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/alerts/index.spec.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/alerts/index.spec.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/alerts/index.spec.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/alerts/index.spec.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/apm/index.spec.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/apm/index.spec.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/apm/index.spec.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/apm/index.spec.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/elasticsearch/index.spec.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/elasticsearch/index.spec.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/elasticsearch/index.spec.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/elasticsearch/index.spec.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/esql/index.spec.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/esql/index.spec.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/esql/index.spec.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/esql/index.spec.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/kb/index.spec.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/kb/index.spec.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/scenarios/kb/index.spec.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/scenarios/kb/index.spec.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/select_connector.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/select_connector.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/select_connector.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/select_connector.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/services/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/services/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/services/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/services/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/setup_synthtrace.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/setup_synthtrace.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/setup_synthtrace.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/setup_synthtrace.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/types.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/scripts/evaluation/types.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/types.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/clients/create_observability_ai_assistant_app_es_client.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/clients/create_observability_ai_assistant_app_es_client.ts new file mode 100644 index 0000000000000..babb6c1273370 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/clients/create_observability_ai_assistant_app_es_client.ts @@ -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 { createObservabilityEsClient } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; +import { ElasticsearchClient, Logger } from '@kbn/core/server'; + +export async function createObservabilityAIAssistantAppEsClient({ + client, + logger, +}: { + client: ElasticsearchClient; + logger: Logger; +}) { + const esClient = createObservabilityEsClient({ + client, + logger, + plugin: 'observabilityAIAssistantApp', + }); + + return esClient; +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/clients/elasticsearch/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/clients/elasticsearch/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/clients/elasticsearch/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/clients/elasticsearch/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/config.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/config.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/config.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/alerts.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/alerts.ts similarity index 95% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/alerts.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/alerts.ts index 5408dbbf4ab4f..bf797bb170606 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/alerts.ts +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/alerts.ts @@ -196,17 +196,17 @@ export function registerAlertsFunction({ lte: end, }, }, - ...kqlQuery, - ...(!includeRecovered - ? [ - { - term: { - [ALERT_STATUS]: ALERT_STATUS_ACTIVE, - }, - }, - ] - : []), }, + ...kqlQuery, + ...(!includeRecovered + ? [ + { + term: { + [ALERT_STATUS]: ALERT_STATUS_ACTIVE, + }, + }, + ] + : []), ], }, }, diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/changes/get_log_changes.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/changes/get_log_changes.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/changes/get_log_changes.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/changes/get_log_changes.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/changes/get_metric_changes.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/changes/get_metric_changes.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/changes/get_metric_changes.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/changes/get_metric_changes.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/changes/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/changes/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/changes/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/changes/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/documentation.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/documentation.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/documentation.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/documentation.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/lens.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/lens.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/lens.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/lens.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.test.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.test.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/correct_query_with_actions.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.test.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.test.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/get_errors_with_commands.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/validate_esql_query.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/validate_esql_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/query/validate_esql_query.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/query/validate_esql_query.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/visualize_esql.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/visualize_esql.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/functions/visualize_esql.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/functions/visualize_esql.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/plugin.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/plugin.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/plugin.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/rule_connector/convert_schema_to_open_api.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/convert_schema_to_open_api.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/rule_connector/convert_schema_to_open_api.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/convert_schema_to_open_api.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/rule_connector/index.test.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/rule_connector/index.test.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.test.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/server/rule_connector/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_app/server/rule_connector/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/types.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/types.ts new file mode 100644 index 0000000000000..cd9f578d99093 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/types.ts @@ -0,0 +1,81 @@ +/* + * 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 { + PluginSetupContract as ActionsPluginSetup, + PluginStartContract as ActionsPluginStart, +} from '@kbn/actions-plugin/server'; +import type { AlertingServerSetup, AlertingServerStart } from '@kbn/alerting-plugin/server'; +import type { + DataViewsServerPluginSetup, + DataViewsServerPluginStart, +} from '@kbn/data-views-plugin/server'; +import type { FeaturesPluginStart, FeaturesPluginSetup } from '@kbn/features-plugin/server'; +import type { LicensingPluginSetup, LicensingPluginStart } from '@kbn/licensing-plugin/server'; +import type { + ObservabilityAIAssistantServerSetup, + ObservabilityAIAssistantServerStart, +} from '@kbn/observability-ai-assistant-plugin/server'; +import type { + RuleRegistryPluginSetupContract, + RuleRegistryPluginStartContract, +} from '@kbn/rule-registry-plugin/server'; +import type { ServerlessPluginSetup, ServerlessPluginStart } from '@kbn/serverless/server'; +import type { + TaskManagerSetupContract, + TaskManagerStartContract, +} from '@kbn/task-manager-plugin/server'; +import type { CloudSetup, CloudStart } from '@kbn/cloud-plugin/server'; +import type { SecurityPluginSetup, SecurityPluginStart } from '@kbn/security-plugin/server'; +import type { ObservabilityPluginSetup } from '@kbn/observability-plugin/server'; +import type { InferenceServerStart, InferenceServerSetup } from '@kbn/inference-plugin/server'; +import type { LogsDataAccessPluginStart } from '@kbn/logs-data-access-plugin/server'; +import type { LlmTasksPluginStart } from '@kbn/llm-tasks-plugin/server'; +import type { SLOServerStart, SLOServerSetup } from '@kbn/slo-plugin/server'; +import type { SpacesPluginStart, SpacesPluginSetup } from '@kbn/spaces-plugin/server'; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ObservabilityAIAssistantAppServerStart {} +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ObservabilityAIAssistantAppServerSetup {} + +export interface ObservabilityAIAssistantAppPluginStartDependencies { + observabilityAIAssistant: ObservabilityAIAssistantServerStart; + ruleRegistry: RuleRegistryPluginStartContract; + alerting: AlertingServerStart; + licensing: LicensingPluginStart; + actions: ActionsPluginStart; + security: SecurityPluginStart; + features: FeaturesPluginStart; + taskManager: TaskManagerStartContract; + dataViews: DataViewsServerPluginStart; + cloud?: CloudStart; + serverless?: ServerlessPluginStart; + inference: InferenceServerStart; + logsDataAccess: LogsDataAccessPluginStart; + slo: SLOServerStart; + spaces: SpacesPluginStart; + llmTasks: LlmTasksPluginStart; +} + +export interface ObservabilityAIAssistantAppPluginSetupDependencies { + observabilityAIAssistant: ObservabilityAIAssistantServerSetup; + ruleRegistry: RuleRegistryPluginSetupContract; + alerting: AlertingServerSetup; + licensing: LicensingPluginSetup; + actions: ActionsPluginSetup; + security: SecurityPluginSetup; + features: FeaturesPluginSetup; + taskManager: TaskManagerSetupContract; + dataViews: DataViewsServerPluginSetup; + observability: ObservabilityPluginSetup; + cloud?: CloudSetup; + serverless?: ServerlessPluginSetup; + inference: InferenceServerSetup; + slo: SLOServerSetup; + spaces: SpacesPluginSetup; +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/util/get_log_sources.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/util/get_log_sources.ts new file mode 100644 index 0000000000000..6532e686a2eb2 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/util/get_log_sources.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 { IUiSettingsClient } from '@kbn/core/server'; +import { OBSERVABILITY_LOGS_DATA_ACCESS_LOG_SOURCES_ID } from '@kbn/management-settings-ids'; + +export function getLogSources({ uiSettings }: { uiSettings: IUiSettingsClient }) { + return uiSettings.get(OBSERVABILITY_LOGS_DATA_ACCESS_LOG_SOURCES_ID) as Promise; +} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/tsconfig.json b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/tsconfig.json new file mode 100644 index 0000000000000..7e3de7940f22b --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/tsconfig.json @@ -0,0 +1,87 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "../../../../typings/**/*", + "common/**/*", + "public/**/*", + "scripts/**/*", + "typings/**/*", + "public/**/*.json", + "server/**/*", + ".storybook/**/*.tsx" + ], + "kbn_references": [ + "@kbn/es-types", + "@kbn/observability-ai-assistant-plugin", + "@kbn/field-formats-plugin", + "@kbn/core", + "@kbn/typed-react-router-config", + "@kbn/i18n", + "@kbn/management-settings-ids", + "@kbn/triggers-actions-ui-plugin", + "@kbn/shared-ux-utility", + "@kbn/data-views-plugin", + "@kbn/lens-embeddable-utils", + "@kbn/lens-plugin", + "@kbn/expressions-plugin", + "@kbn/ui-actions-plugin", + "@kbn/esql-utils", + "@kbn/visualization-utils", + "@kbn/ai-assistant-management-plugin", + "@kbn/kibana-react-plugin", + "@kbn/licensing-plugin", + "@kbn/logging", + "@kbn/deeplinks-observability", + "@kbn/share-plugin", + "@kbn/observability-shared-plugin", + "@kbn/ml-plugin", + "@kbn/data-plugin", + "@kbn/react-kibana-context-theme", + "@kbn/shared-ux-link-redirect-app", + "@kbn/dev-cli-runner", + "@kbn/tooling-log", + "@kbn/babel-register", + "@kbn/expect", + "@kbn/apm-synthtrace-client", + "@kbn/alerting-plugin", + "@kbn/apm-synthtrace", + "@kbn/esql-datagrid", + "@kbn/alerting-comparators", + "@kbn/core-lifecycle-browser", + "@kbn/inference-plugin", + "@kbn/ai-assistant", + "@kbn/apm-utils", + "@kbn/config-schema", + "@kbn/es-query", + "@kbn/rule-registry-plugin", + "@kbn/esql-validation-autocomplete", + "@kbn/esql-ast", + "@kbn/field-types", + "@kbn/security-plugin", + "@kbn/observability-plugin", + "@kbn/actions-plugin", + "@kbn/stack-connectors-plugin", + "@kbn/features-plugin", + "@kbn/serverless", + "@kbn/task-manager-plugin", + "@kbn/cloud-plugin", + "@kbn/logs-data-access-plugin", + "@kbn/ai-assistant-common", + "@kbn/observability-utils-server", + "@kbn/observability-utils-common", + "@kbn/slo-plugin", + "@kbn/spaces-plugin", + "@kbn/data-service", + "@kbn/inference-common", + "@kbn/observability-ai-server", + "@kbn/observability-ai-common", + "@kbn/llm-tasks-plugin", + "@kbn/product-doc-common", + ], + "exclude": [ + "target/**/*" + ] +} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/README.md b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/README.md similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/README.md rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/README.md diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/common/ui_settings.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/common/ui_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/common/ui_settings.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/common/ui_settings.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_management/jest.config.js b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/jest.config.js new file mode 100644 index 0000000000000..99b1d23eb5bd4 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/jest.config.js @@ -0,0 +1,16 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/plugins/observability_ai_assistant_management'], + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/observability_ai_assistant_management/{common,public,server}/**/*.{js,ts,tsx}', + ], +}; diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/kibana.jsonc b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/kibana.jsonc rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/app.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/app.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/app.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/app.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/constants.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/constants.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/constants.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/context/app_context.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/context/app_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/context/app_context.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/context/app_context.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/helpers/categorize_entries.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/helpers/categorize_entries.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/helpers/categorize_entries.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/helpers/categorize_entries.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/helpers/test_helper.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/helpers/test_helper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/helpers/test_helper.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/helpers/test_helper.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_app_context.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_app_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_app_context.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_app_context.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_entry.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_entry.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_entry.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_entry.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_user_instruction.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_user_instruction.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_user_instruction.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_create_knowledge_base_user_instruction.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_delete_knowledge_base_entry.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_delete_knowledge_base_entry.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_delete_knowledge_base_entry.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_delete_knowledge_base_entry.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_get_knowledge_base_entries.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_get_knowledge_base_entries.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_get_knowledge_base_entries.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_get_knowledge_base_entries.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_get_product_doc_status.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_get_product_doc_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_get_product_doc_status.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_get_product_doc_status.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_get_user_instructions.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_get_user_instructions.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_get_user_instructions.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_get_user_instructions.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_import_knowledge_base_entries.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_import_knowledge_base_entries.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_import_knowledge_base_entries.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_import_knowledge_base_entries.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_install_product_doc.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_install_product_doc.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_install_product_doc.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_install_product_doc.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_kibana.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_kibana.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_kibana.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_kibana.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_observability_management_params.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_observability_management_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_observability_management_params.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_observability_management_params.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_observability_management_router.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_observability_management_router.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_observability_management_router.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_observability_management_router.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_uninstall_product_doc.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_uninstall_product_doc.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/hooks/use_uninstall_product_doc.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/hooks/use_uninstall_product_doc.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/plugin.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/plugin.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/plugin.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_bulk_import_flyout.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_bulk_import_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_bulk_import_flyout.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_bulk_import_flyout.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_category_flyout.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_category_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_category_flyout.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_category_flyout.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_manual_entry_flyout.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_manual_entry_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_manual_entry_flyout.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_manual_entry_flyout.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_user_instruction_flyout.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_user_instruction_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_user_instruction_flyout.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_edit_user_instruction_flyout.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.test.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.test.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.test.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/knowledge_base_tab.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/redirect_to_home_if_unauthorized.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/redirect_to_home_if_unauthorized.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/redirect_to_home_if_unauthorized.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/redirect_to_home_if_unauthorized.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/search_connector_tab.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_page.test.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_page.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_page.test.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_page.test.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_page.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_page.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_page.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/product_doc_entry.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/product_doc_entry.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/product_doc_entry.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/product_doc_entry.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.test.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.test.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.test.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/settings_tab.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/ui_settings.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/ui_settings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/components/settings_tab/ui_settings.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/components/settings_tab/ui_settings.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/config.tsx b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/public/routes/config.tsx rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/public/routes/config.tsx diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/server/config.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/server/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/server/config.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/server/config.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/server/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/server/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/server/index.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/server/index.ts diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_management/server/plugin.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/observability_ai_assistant_management/server/plugin.ts rename to x-pack/solutions/observability/plugins/observability_ai_assistant_management/server/plugin.ts diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_management/tsconfig.json b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/tsconfig.json new file mode 100644 index 0000000000000..982fda386cc1e --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_management/tsconfig.json @@ -0,0 +1,35 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/home-plugin", + "@kbn/kibana-react-plugin", + "@kbn/management-plugin", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/typed-react-router-config", + "@kbn/core-chrome-browser", + "@kbn/observability-ai-assistant-plugin", + "@kbn/serverless", + "@kbn/management-settings-components-field-row", + "@kbn/observability-shared-plugin", + "@kbn/config-schema", + "@kbn/core-ui-settings-common", + "@kbn/logs-data-access-plugin", + "@kbn/core-plugins-browser", + "@kbn/ai-assistant", + "@kbn/core-plugins-server", + "@kbn/product-doc-base-plugin" + ], + "exclude": [ + "target/**/*" + ] +} diff --git a/x-pack/plugins/serverless_observability/.gitignore b/x-pack/solutions/observability/plugins/serverless_observability/.gitignore similarity index 100% rename from x-pack/plugins/serverless_observability/.gitignore rename to x-pack/solutions/observability/plugins/serverless_observability/.gitignore diff --git a/x-pack/plugins/serverless_observability/README.mdx b/x-pack/solutions/observability/plugins/serverless_observability/README.mdx similarity index 100% rename from x-pack/plugins/serverless_observability/README.mdx rename to x-pack/solutions/observability/plugins/serverless_observability/README.mdx diff --git a/x-pack/plugins/serverless_observability/common/index.ts b/x-pack/solutions/observability/plugins/serverless_observability/common/index.ts similarity index 100% rename from x-pack/plugins/serverless_observability/common/index.ts rename to x-pack/solutions/observability/plugins/serverless_observability/common/index.ts diff --git a/x-pack/plugins/serverless_observability/kibana.jsonc b/x-pack/solutions/observability/plugins/serverless_observability/kibana.jsonc similarity index 100% rename from x-pack/plugins/serverless_observability/kibana.jsonc rename to x-pack/solutions/observability/plugins/serverless_observability/kibana.jsonc diff --git a/x-pack/solutions/observability/plugins/serverless_observability/package.json b/x-pack/solutions/observability/plugins/serverless_observability/package.json new file mode 100644 index 0000000000000..8097ad8f5b8bd --- /dev/null +++ b/x-pack/solutions/observability/plugins/serverless_observability/package.json @@ -0,0 +1,11 @@ +{ + "name": "@kbn/serverless-observability", + "version": "1.0.0", + "license": "Elastic License 2.0", + "private": true, + "scripts": { + "build": "yarn plugin-helpers build", + "plugin-helpers": "node ../../../../../scripts/plugin_helpers", + "kbn": "node ../../../../../scripts/kbn" + } +} \ No newline at end of file diff --git a/x-pack/plugins/serverless_observability/public/index.ts b/x-pack/solutions/observability/plugins/serverless_observability/public/index.ts similarity index 100% rename from x-pack/plugins/serverless_observability/public/index.ts rename to x-pack/solutions/observability/plugins/serverless_observability/public/index.ts diff --git a/x-pack/plugins/serverless_observability/public/logs_signal/overview_registration.ts b/x-pack/solutions/observability/plugins/serverless_observability/public/logs_signal/overview_registration.ts similarity index 100% rename from x-pack/plugins/serverless_observability/public/logs_signal/overview_registration.ts rename to x-pack/solutions/observability/plugins/serverless_observability/public/logs_signal/overview_registration.ts diff --git a/x-pack/plugins/serverless_observability/public/navigation_tree.ts b/x-pack/solutions/observability/plugins/serverless_observability/public/navigation_tree.ts similarity index 100% rename from x-pack/plugins/serverless_observability/public/navigation_tree.ts rename to x-pack/solutions/observability/plugins/serverless_observability/public/navigation_tree.ts diff --git a/x-pack/plugins/serverless_observability/public/plugin.ts b/x-pack/solutions/observability/plugins/serverless_observability/public/plugin.ts similarity index 100% rename from x-pack/plugins/serverless_observability/public/plugin.ts rename to x-pack/solutions/observability/plugins/serverless_observability/public/plugin.ts diff --git a/x-pack/plugins/serverless_observability/public/types.ts b/x-pack/solutions/observability/plugins/serverless_observability/public/types.ts similarity index 100% rename from x-pack/plugins/serverless_observability/public/types.ts rename to x-pack/solutions/observability/plugins/serverless_observability/public/types.ts diff --git a/x-pack/plugins/serverless_observability/server/config.ts b/x-pack/solutions/observability/plugins/serverless_observability/server/config.ts similarity index 100% rename from x-pack/plugins/serverless_observability/server/config.ts rename to x-pack/solutions/observability/plugins/serverless_observability/server/config.ts diff --git a/x-pack/plugins/serverless_observability/server/index.ts b/x-pack/solutions/observability/plugins/serverless_observability/server/index.ts similarity index 100% rename from x-pack/plugins/serverless_observability/server/index.ts rename to x-pack/solutions/observability/plugins/serverless_observability/server/index.ts diff --git a/x-pack/plugins/serverless_observability/server/plugin.ts b/x-pack/solutions/observability/plugins/serverless_observability/server/plugin.ts similarity index 100% rename from x-pack/plugins/serverless_observability/server/plugin.ts rename to x-pack/solutions/observability/plugins/serverless_observability/server/plugin.ts diff --git a/x-pack/plugins/serverless_observability/server/types.ts b/x-pack/solutions/observability/plugins/serverless_observability/server/types.ts similarity index 100% rename from x-pack/plugins/serverless_observability/server/types.ts rename to x-pack/solutions/observability/plugins/serverless_observability/server/types.ts diff --git a/x-pack/solutions/observability/plugins/serverless_observability/tsconfig.json b/x-pack/solutions/observability/plugins/serverless_observability/tsconfig.json new file mode 100644 index 0000000000000..11bf6220cf12d --- /dev/null +++ b/x-pack/solutions/observability/plugins/serverless_observability/tsconfig.json @@ -0,0 +1,35 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "index.ts", + "common/**/*.ts", + "public/**/*.ts", + "public/**/*.tsx", + "server/**/*.ts", + "../../../../../typings/**/*" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/config-schema", + "@kbn/management-plugin", + "@kbn/serverless", + "@kbn/observability-shared-plugin", + "@kbn/i18n", + "@kbn/management-cards-navigation", + "@kbn/data-plugin", + "@kbn/observability-plugin", + "@kbn/io-ts-utils", + "@kbn/serverless-observability-settings", + "@kbn/core-chrome-browser", + "@kbn/discover-plugin", + "@kbn/security-plugin", + "@kbn/search-types", + "@kbn/streams-plugin", + ] +} diff --git a/x-pack/solutions/observability/plugins/streams/common/types.ts b/x-pack/solutions/observability/plugins/streams/common/types.ts index 59cdd1cf9c4b9..7917864706c2d 100644 --- a/x-pack/solutions/observability/plugins/streams/common/types.ts +++ b/x-pack/solutions/observability/plugins/streams/common/types.ts @@ -73,6 +73,7 @@ export type ProcessingDefinition = z.infer; export const fieldDefinitionSchema = z.object({ name: z.string(), type: z.enum(['keyword', 'match_only_text', 'long', 'double', 'date', 'boolean', 'ip']), + format: z.optional(z.string()), }); export type FieldDefinition = z.infer; @@ -87,22 +88,21 @@ export type StreamChild = z.infer; export const streamWithoutIdDefinitonSchema = z.object({ processing: z.array(processingDefinitionSchema).default([]), fields: z.array(fieldDefinitionSchema).default([]), + managed: z.boolean().default(true), children: z.array(streamChildSchema).default([]), }); export type StreamWithoutIdDefinition = z.infer; +export const unmanagedElasticsearchAsset = z.object({ + type: z.enum(['ingest_pipeline', 'component_template', 'index_template', 'data_stream']), + id: z.string(), +}); +export type UnmanagedElasticsearchAsset = z.infer; + export const streamDefinitonSchema = streamWithoutIdDefinitonSchema.extend({ id: z.string(), - managed: z.boolean().default(true), - unmanaged_elasticsearch_assets: z.optional( - z.array( - z.object({ - type: z.enum(['ingest_pipeline', 'component_template', 'index_template', 'data_stream']), - id: z.string(), - }) - ) - ), + unmanaged_elasticsearch_assets: z.optional(z.array(unmanagedElasticsearchAsset)), }); export type StreamDefinition = z.infer; diff --git a/x-pack/solutions/observability/plugins/streams/server/lib/streams/component_templates/generate_layer.ts b/x-pack/solutions/observability/plugins/streams/server/lib/streams/component_templates/generate_layer.ts index a99b9be261911..04dcc8c5dafcb 100644 --- a/x-pack/solutions/observability/plugins/streams/server/lib/streams/component_templates/generate_layer.ts +++ b/x-pack/solutions/observability/plugins/streams/server/lib/streams/component_templates/generate_layer.ts @@ -29,6 +29,9 @@ export function generateLayer( // @timestamp can't ignore malformed dates as it's used for sorting in logsdb (property as MappingDateProperty).ignore_malformed = false; } + if (field.type === 'date' && field.format) { + (property as MappingDateProperty).format = field.format; + } properties[field.name] = property; }); return { diff --git a/x-pack/solutions/observability/plugins/streams/server/lib/streams/ingest_pipelines/generate_ingest_pipeline.ts b/x-pack/solutions/observability/plugins/streams/server/lib/streams/ingest_pipelines/generate_ingest_pipeline.ts index eb09df8831304..e7c9c784a8123 100644 --- a/x-pack/solutions/observability/plugins/streams/server/lib/streams/ingest_pipelines/generate_ingest_pipeline.ts +++ b/x-pack/solutions/observability/plugins/streams/server/lib/streams/ingest_pipelines/generate_ingest_pipeline.ts @@ -12,20 +12,24 @@ import { logsDefaultPipelineProcessors } from './logs_default_pipeline'; import { isRoot } from '../helpers/hierarchy'; import { getProcessingPipelineName } from './name'; +function generateProcessingSteps(definition: StreamDefinition) { + return definition.processing.map((processor) => { + const { type, ...config } = processor.config; + return { + [type]: { + ...config, + if: processor.condition ? conditionToPainless(processor.condition) : undefined, + }, + }; + }); +} + export function generateIngestPipeline(id: string, definition: StreamDefinition) { return { id: getProcessingPipelineName(id), processors: [ ...(isRoot(definition.id) ? logsDefaultPipelineProcessors : []), - ...definition.processing.map((processor) => { - const { type, ...config } = processor.config; - return { - [type]: { - ...config, - if: processor.condition ? conditionToPainless(processor.condition) : undefined, - }, - }; - }), + ...generateProcessingSteps(definition), { pipeline: { name: `${id}@stream.reroutes`, @@ -40,3 +44,14 @@ export function generateIngestPipeline(id: string, definition: StreamDefinition) version: ASSET_VERSION, }; } + +export function generateClassicIngestPipelineBody(definition: StreamDefinition) { + return { + processors: generateProcessingSteps(definition), + _meta: { + description: `Stream-managed pipeline for the ${definition.id} stream`, + managed: true, + }, + version: ASSET_VERSION, + }; +} diff --git a/x-pack/solutions/observability/plugins/streams/server/lib/streams/stream_crud.ts b/x-pack/solutions/observability/plugins/streams/server/lib/streams/stream_crud.ts index c158280bec161..5066ecd61a601 100644 --- a/x-pack/solutions/observability/plugins/streams/server/lib/streams/stream_crud.ts +++ b/x-pack/solutions/observability/plugins/streams/server/lib/streams/stream_crud.ts @@ -7,6 +7,8 @@ import { IScopedClusterClient } from '@kbn/core-elasticsearch-server'; import { Logger } from '@kbn/logging'; +import { IngestPipeline, IngestProcessorContainer } from '@elastic/elasticsearch/lib/api/types'; +import { set } from '@kbn/safer-lodash-set'; import { IndicesDataStream } from '@elastic/elasticsearch/lib/api/types'; import { STREAMS_INDEX } from '../../../common/constants'; import { FieldDefinition, StreamDefinition } from '../../../common/types'; @@ -24,7 +26,10 @@ import { getAncestors } from './helpers/hierarchy'; import { generateIndexTemplate } from './index_templates/generate_index_template'; import { deleteTemplate, upsertTemplate } from './index_templates/manage_index_templates'; import { getIndexTemplateName } from './index_templates/name'; -import { generateIngestPipeline } from './ingest_pipelines/generate_ingest_pipeline'; +import { + generateClassicIngestPipelineBody, + generateIngestPipeline, +} from './ingest_pipelines/generate_ingest_pipeline'; import { generateReroutePipeline } from './ingest_pipelines/generate_reroute_pipeline'; import { deleteIngestPipeline, @@ -45,6 +50,63 @@ interface DeleteStreamParams extends BaseParams { logger: Logger; } +export async function deleteUnmanagedStreamObjects({ + id, + scopedClusterClient, + logger, +}: DeleteStreamParams) { + const unmanagedAssets = await getUnmanagedElasticsearchAssets({ + name: id, + scopedClusterClient, + }); + const pipelineName = unmanagedAssets.find((asset) => asset.type === 'ingest_pipeline')?.id; + if (pipelineName) { + const { targetPipelineName, targetPipeline, referencesStreamManagedPipeline } = + await findStreamManagedPipelineReference(scopedClusterClient, pipelineName, id); + if (referencesStreamManagedPipeline) { + const streamManagedPipelineName = getProcessingPipelineName(id); + const updatedProcessors = targetPipeline.processors!.filter( + (processor) => + !(processor.pipeline && processor.pipeline.name === streamManagedPipelineName) + ); + await scopedClusterClient.asCurrentUser.ingest.putPipeline({ + id: targetPipelineName, + body: { + processors: updatedProcessors, + }, + }); + } + } + await deleteDataStream({ + esClient: scopedClusterClient.asCurrentUser, + name: id, + logger, + }); + try { + await deleteIngestPipeline({ + esClient: scopedClusterClient.asCurrentUser, + id: getProcessingPipelineName(id), + logger, + }); + } catch (e) { + // if the pipeline doesn't exist, we don't need to delete it + if (!(e.meta?.statusCode === 404)) { + throw e; + } + } + try { + await scopedClusterClient.asInternalUser.delete({ + id, + index: STREAMS_INDEX, + refresh: 'wait_for', + }); + } catch (e) { + if (e.meta?.statusCode !== 404) { + throw e; + } + } +} + export async function deleteStreamObjects({ id, scopedClusterClient, logger }: DeleteStreamParams) { await deleteDataStream({ esClient: scopedClusterClient.asCurrentUser, @@ -82,7 +144,7 @@ async function upsertInternalStream({ definition, scopedClusterClient }: BasePar return scopedClusterClient.asInternalUser.index({ id: definition.id, index: STREAMS_INDEX, - document: { ...definition, managed: true }, + document: { ...definition }, refresh: 'wait_for', }); } @@ -103,14 +165,20 @@ export async function listStreams({ }); const dataStreams = await listDataStreamsAsStreams({ scopedClusterClient }); - let definitions = response.hits.hits.map((hit) => ({ ...hit._source!, managed: true })); + let definitions = response.hits.hits.map((hit) => ({ ...hit._source! })); const hasAccess = await Promise.all( definitions.map((definition) => checkReadAccess({ id: definition.id, scopedClusterClient })) ); definitions = definitions.filter((_, index) => hasAccess[index]); + const definitionMap = new Map(definitions.map((definition) => [definition.id, definition])); + dataStreams.forEach((dataStream) => { + if (!definitionMap.has(dataStream.id)) { + definitionMap.set(dataStream.id, dataStream); + } + }); return { - definitions: [...definitions, ...dataStreams], + definitions: Array.from(definitionMap.values()), }; } @@ -158,7 +226,6 @@ export async function readStream({ return { definition: { ...definition, - managed: true, }, }; } catch (e) { @@ -169,35 +236,42 @@ export async function readStream({ } } -export async function readDataStreamAsStream({ - id, +export async function readDataStreamAsStream({ id, scopedClusterClient }: ReadStreamParams) { + const definition: StreamDefinition = { + id, + managed: false, + children: [], + fields: [], + processing: [], + }; + + definition.unmanaged_elasticsearch_assets = await getUnmanagedElasticsearchAssets({ + name: id, + scopedClusterClient, + }); + + return { definition }; +} + +interface ReadUnmanagedAssetsParams extends BaseParams { + name: string; +} + +async function getUnmanagedElasticsearchAssets({ + name, scopedClusterClient, - skipAccessCheck, -}: ReadStreamParams) { +}: ReadUnmanagedAssetsParams) { let dataStream: IndicesDataStream; try { - const response = await scopedClusterClient.asInternalUser.indices.getDataStream({ name: id }); + const response = await scopedClusterClient.asInternalUser.indices.getDataStream({ name }); dataStream = response.data_streams[0]; } catch (e) { if (e.meta?.statusCode === 404) { - throw new DefinitionNotFound(`Stream definition for ${id} not found.`); + throw new DefinitionNotFound(`Stream definition for ${name} not found.`); } throw e; } - const definition: StreamDefinition = { - id, - managed: false, - children: [], - fields: [], - processing: [], - }; - if (!skipAccessCheck) { - const hasAccess = await checkReadAccess({ id, scopedClusterClient }); - if (!hasAccess) { - throw new DefinitionNotFound(`Stream definition for ${id} not found.`); - } - } // retrieve linked index template, component template and ingest pipeline const templateName = dataStream.template; const componentTemplates: string[] = []; @@ -215,9 +289,9 @@ export async function readDataStreamAsStream({ }); const ingestPipelineId = currentIndex[writeIndexName].settings?.index?.default_pipeline!; - definition.unmanaged_elasticsearch_assets = [ + return [ { - type: 'ingest_pipeline', + type: 'ingest_pipeline' as const, id: ingestPipelineId, }, ...componentTemplates.map((componentTemplateName) => ({ @@ -225,16 +299,14 @@ export async function readDataStreamAsStream({ id: componentTemplateName, })), { - type: 'index_template', + type: 'index_template' as const, id: templateName, }, { - type: 'data_stream', - id, + type: 'data_stream' as const, + id: name, }, ]; - - return { definition }; } interface ReadAncestorsParams extends BaseParams { @@ -378,8 +450,12 @@ export async function syncStream({ logger, }: SyncStreamParams) { if (!definition.managed) { - // TODO For now, we just don't allow reads at all - later on we will relax this to allow certain operations, but they will use a completely different syncing logic - throw new Error('Cannot sync an unmanaged stream'); + await syncUnmanagedStream({ scopedClusterClient, definition, logger }); + await upsertInternalStream({ + scopedClusterClient, + definition, + }); + return; } const componentTemplate = generateLayer(definition.id, definition); await upsertComponent({ @@ -432,6 +508,163 @@ export async function syncStream({ }); } +interface ExecutionPlanStep { + method: string; + path: string; + body?: Record; +} + +async function syncUnmanagedStream({ scopedClusterClient, definition, logger }: SyncStreamParams) { + if (definition.managed) { + throw new Error('Got an unmanaged stream that is marked as managed'); + } + if (definition.fields.length) { + throw new Error( + 'Unmanaged streams cannot have managed fields, please edit the component templates directly' + ); + } + if (definition.children.length) { + throw new Error('Unmanaged streams cannot have managed children, coming soon'); + } + const unmanagedAssets = await getUnmanagedElasticsearchAssets({ + name: definition.id, + scopedClusterClient, + }); + const executionPlan: ExecutionPlanStep[] = []; + const streamManagedPipelineName = getProcessingPipelineName(definition.id); + const pipelineName = unmanagedAssets.find((asset) => asset.type === 'ingest_pipeline')?.id; + if (!pipelineName) { + throw new Error('Unmanaged stream needs a default ingest pipeline'); + } + if (pipelineName === streamManagedPipelineName) { + throw new Error('Unmanaged stream cannot have the @stream pipeline as the default pipeline'); + } + await ensureStreamManagedPipelineReference( + scopedClusterClient, + pipelineName, + definition, + executionPlan + ); + + if (definition.processing.length) { + // if the stream has processing, we need to create or update the stream managed pipeline + executionPlan.push({ + method: 'PUT', + path: `/_ingest/pipeline/${streamManagedPipelineName}`, + body: generateClassicIngestPipelineBody(definition), + }); + } else { + const pipelineExists = Boolean( + await tryGettingPipeline({ scopedClusterClient, id: streamManagedPipelineName }) + ); + // no processing, just delete the pipeline if it exists. The reference to the pipeline won't break anything + if (pipelineExists) { + executionPlan.push({ + method: 'DELETE', + path: `/_ingest/pipeline/${streamManagedPipelineName}`, + }); + } + } + + await executePlan(executionPlan, scopedClusterClient); +} + +async function executePlan( + executionPlan: ExecutionPlanStep[], + scopedClusterClient: IScopedClusterClient +) { + for (const step of executionPlan) { + await scopedClusterClient.asCurrentUser.transport.request({ + method: step.method, + path: step.path, + body: step.body, + }); + } +} + +async function findStreamManagedPipelineReference( + scopedClusterClient: IScopedClusterClient, + pipelineName: string, + streamId: string +): Promise<{ + targetPipelineName: string; + targetPipeline: IngestPipeline; + referencesStreamManagedPipeline: boolean; +}> { + const streamManagedPipelineName = getProcessingPipelineName(streamId); + const pipeline = (await tryGettingPipeline({ scopedClusterClient, id: pipelineName })) || { + processors: [], + }; + const streamProcessor = pipeline.processors?.find( + (processor) => processor.pipeline && processor.pipeline.name === streamManagedPipelineName + ); + const customProcessor = pipeline.processors?.findLast( + (processor) => processor.pipeline && processor.pipeline.name.endsWith('@custom') + ); + if (streamProcessor) { + return { + targetPipelineName: pipelineName, + targetPipeline: pipeline, + referencesStreamManagedPipeline: true, + }; + } + if (customProcessor) { + // go one level deeper, find the latest @custom leaf pipeline + return await findStreamManagedPipelineReference( + scopedClusterClient, + customProcessor.pipeline!.name, + streamId + ); + } + return { + targetPipelineName: pipelineName, + targetPipeline: pipeline, + referencesStreamManagedPipeline: false, + }; +} + +async function ensureStreamManagedPipelineReference( + scopedClusterClient: IScopedClusterClient, + pipelineName: string, + definition: StreamDefinition, + executionPlan: ExecutionPlanStep[] +) { + const streamManagedPipelineName = getProcessingPipelineName(definition.id); + const { targetPipelineName, targetPipeline, referencesStreamManagedPipeline } = + await findStreamManagedPipelineReference(scopedClusterClient, pipelineName, definition.id); + if (!referencesStreamManagedPipeline) { + const callStreamManagedPipelineProcessor: IngestProcessorContainer = { + pipeline: { + name: streamManagedPipelineName, + if: `ctx._index == '${definition.id}'`, + ignore_missing_pipeline: true, + description: + "Call the stream's managed pipeline - do not change this manually but instead use the streams UI or API", + }, + }; + executionPlan.push({ + method: 'PUT', + path: `/_ingest/pipeline/${targetPipelineName}`, + body: set( + { ...targetPipeline }, + 'processors', + (targetPipeline.processors || []).concat(callStreamManagedPipelineProcessor) + ), + }); + } +} + +async function tryGettingPipeline({ scopedClusterClient, id }: ReadStreamParams) { + try { + return (await scopedClusterClient.asCurrentUser.ingest.getPipeline({ id }))[id]; + } catch (e) { + if (e.meta?.statusCode === 404) { + return; + } + throw e; + } +} + export async function streamsEnabled({ scopedClusterClient }: BaseParams) { return await scopedClusterClient.asInternalUser.indices.exists({ index: STREAMS_INDEX, diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/index.ts b/x-pack/solutions/observability/plugins/streams/server/routes/index.ts index cf130e99db3fc..e6c53e33e217e 100644 --- a/x-pack/solutions/observability/plugins/streams/server/routes/index.ts +++ b/x-pack/solutions/observability/plugins/streams/server/routes/index.ts @@ -15,6 +15,8 @@ import { listStreamsRoute } from './streams/list'; import { readStreamRoute } from './streams/read'; import { resyncStreamsRoute } from './streams/resync'; import { sampleStreamRoute } from './streams/sample'; +import { schemaFieldsSimulationRoute } from './streams/schema/fields_simulation'; +import { unmappedFieldsRoute } from './streams/schema/unmapped_fields'; import { streamsStatusRoutes } from './streams/settings'; export const streamsRouteRepository = { @@ -29,6 +31,8 @@ export const streamsRouteRepository = { ...esqlRoutes, ...disableStreamsRoute, ...sampleStreamRoute, + ...unmappedFieldsRoute, + ...schemaFieldsSimulationRoute, }; export type StreamsRouteRepository = typeof streamsRouteRepository; diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/delete.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/delete.ts index a2092838792cf..d6bf5fbb84d8f 100644 --- a/x-pack/solutions/observability/plugins/streams/server/routes/streams/delete.ts +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/delete.ts @@ -16,7 +16,12 @@ import { SecurityException, } from '../../lib/streams/errors'; import { createServerRoute } from '../create_server_route'; -import { syncStream, readStream, deleteStreamObjects } from '../../lib/streams/stream_crud'; +import { + syncStream, + readStream, + deleteStreamObjects, + deleteUnmanagedStreamObjects, +} from '../../lib/streams/stream_crud'; import { MalformedStreamId } from '../../lib/streams/errors/malformed_stream_id'; import { getParentId } from '../../lib/streams/helpers/hierarchy'; @@ -47,14 +52,6 @@ export const deleteStreamRoute = createServerRoute({ try { const { scopedClusterClient } = await getScopedClients({ request }); - const parentId = getParentId(params.path.id); - if (!parentId) { - throw new MalformedStreamId('Cannot delete root stream'); - } - - // need to update parent first to cut off documents streaming down - await updateParentStream(scopedClusterClient, params.path.id, parentId, logger); - await deleteStream(scopedClusterClient, params.path.id, logger); return { acknowledged: true }; @@ -83,6 +80,18 @@ export async function deleteStream( ) { try { const { definition } = await readStream({ scopedClusterClient, id }); + if (!definition.managed) { + await deleteUnmanagedStreamObjects({ scopedClusterClient, id, logger }); + return; + } + + const parentId = getParentId(id); + if (!parentId) { + throw new MalformedStreamId('Cannot delete root stream'); + } + + // need to update parent first to cut off documents streaming down + await updateParentStream(scopedClusterClient, id, parentId, logger); for (const child of definition.children) { await deleteStream(scopedClusterClient, child.id, logger); } diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/edit.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/edit.ts index e280796bc9780..19867018ce25f 100644 --- a/x-pack/solutions/observability/plugins/streams/server/routes/streams/edit.ts +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/edit.ts @@ -50,6 +50,17 @@ export const editStreamRoute = createServerRoute({ handler: async ({ response, params, logger, request, getScopedClients }) => { try { const { scopedClusterClient } = await getScopedClients({ request }); + const streamDefinition = { ...params.body, id: params.path.id }; + + if (!streamDefinition.managed) { + await syncStream({ + scopedClusterClient, + definition: { ...streamDefinition, id: params.path.id }, + rootDefinition: undefined, + logger, + }); + return { acknowledged: true }; + } await validateStreamChildren(scopedClusterClient, params.path.id, params.body.children); await validateAncestorFields(scopedClusterClient, params.path.id, params.body.fields); @@ -58,8 +69,6 @@ export const editStreamRoute = createServerRoute({ const parentId = getParentId(params.path.id); let parentDefinition: StreamDefinition | undefined; - const streamDefinition = { ...params.body, id: params.path.id }; - // always need to go from the leaves to the parent when syncing ingest pipelines, otherwise data // will be routed before the data stream is ready diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/enable.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/enable.ts index cfcb97f9b3581..ee49a93aaacbb 100644 --- a/x-pack/solutions/observability/plugins/streams/server/routes/streams/enable.ts +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/enable.ts @@ -31,12 +31,12 @@ export const enableStreamsRoute = createServerRoute({ response, logger, getScopedClients, - }): Promise<{ acknowledged: true }> => { + }): Promise<{ acknowledged: true; message: string }> => { try { const { scopedClusterClient } = await getScopedClients({ request }); const alreadyEnabled = await streamsEnabled({ scopedClusterClient }); if (alreadyEnabled) { - return { acknowledged: true }; + return { acknowledged: true, message: 'Streams was already enabled' }; } await createStreamsIndex(scopedClusterClient); await syncStream({ @@ -44,7 +44,11 @@ export const enableStreamsRoute = createServerRoute({ definition: rootStreamDefinition, logger, }); - return { acknowledged: true }; + return { + acknowledged: true, + message: + 'Streams enabled - reload your browser window to show the streams UI in the navigation', + }; } catch (e) { if (e instanceof SecurityException) { throw badRequest(e); diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/fork.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/fork.ts index 070dc66b9ab10..9ec61d27619e2 100644 --- a/x-pack/solutions/observability/plugins/streams/server/routes/streams/fork.ts +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/fork.ts @@ -58,7 +58,11 @@ export const forkStreamsRoute = createServerRoute({ id: params.path.id, }); - const childDefinition = { ...params.body.stream, children: [], managed: true }; + if (rootDefinition.managed === false) { + throw new MalformedStreamId('Cannot fork a stream that is not managed'); + } + + const childDefinition = { ...params.body.stream, children: [] }; // check whether root stream has a child of the given name already if (rootDefinition.children.some((child) => child.id === childDefinition.id)) { diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/list.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/list.ts index 774a256e5ba4a..f98c635830bda 100644 --- a/x-pack/solutions/observability/plugins/streams/server/routes/streams/list.ts +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/list.ts @@ -29,14 +29,14 @@ export const listStreamsRoute = createServerRoute({ response, request, getScopedClients, - }): Promise<{ definitions: StreamDefinition[]; trees: StreamTree[] }> => { + }): Promise<{ definitions: StreamDefinition[] }> => { try { const { scopedClusterClient } = await getScopedClients({ request }); const { definitions } = await listStreams({ scopedClusterClient }); - const trees = asTrees(definitions); - - return { definitions, trees }; + return { + definitions, + }; } catch (e) { if (e instanceof DefinitionNotFound) { throw notFound(e); @@ -46,33 +46,3 @@ export const listStreamsRoute = createServerRoute({ } }, }); - -export interface StreamTree { - id: string; - children: StreamTree[]; -} - -function asTrees(definitions: Array<{ id: string; managed?: boolean }>) { - const trees: StreamTree[] = []; - const ids = definitions - .filter((definition) => definition.managed) - .map((definition) => definition.id); - - ids.sort((a, b) => a.split('.').length - b.split('.').length); - - ids.forEach((id) => { - let currentTree = trees; - let existingNode: StreamTree | undefined; - // traverse the tree following the prefix of the current id. - // once we reach the leaf, the current id is added as child - this works because the ids are sorted by depth - while ((existingNode = currentTree.find((node) => id.startsWith(node.id)))) { - currentTree = existingNode.children; - } - if (!existingNode) { - const newNode = { id, children: [] }; - currentTree.push(newNode); - } - }); - - return trees; -} diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/schema/fields_simulation.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/schema/fields_simulation.ts new file mode 100644 index 0000000000000..01aa61a302a39 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/schema/fields_simulation.ts @@ -0,0 +1,207 @@ +/* + * 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 { z } from '@kbn/zod'; +import { notFound, internal } from '@hapi/boom'; +import { getFlattenedObject } from '@kbn/std'; +import { fieldDefinitionSchema } from '../../../../common/types'; +import { createServerRoute } from '../../create_server_route'; +import { DefinitionNotFound } from '../../../lib/streams/errors'; +import { checkReadAccess } from '../../../lib/streams/stream_crud'; + +const SAMPLE_SIZE = 200; + +export const schemaFieldsSimulationRoute = createServerRoute({ + endpoint: 'POST /api/streams/{id}/schema/fields_simulation', + options: { + access: 'internal', + }, + security: { + authz: { + enabled: false, + reason: + 'This API delegates security to the currently logged in user and their Elasticsearch permissions.', + }, + }, + params: z.object({ + path: z.object({ id: z.string() }), + body: z.object({ + field_definitions: z.array(fieldDefinitionSchema), + }), + }), + handler: async ({ + response, + params, + request, + logger, + getScopedClients, + }): Promise<{ + status: 'unknown' | 'success' | 'failure'; + simulationError: string | null; + documentsWithRuntimeFieldsApplied: unknown[] | null; + }> => { + try { + const { scopedClusterClient } = await getScopedClients({ request }); + + const hasAccess = await checkReadAccess({ id: params.path.id, scopedClusterClient }); + if (!hasAccess) { + throw new DefinitionNotFound(`Stream definition for ${params.path.id} not found.`); + } + + const propertiesForSample = Object.fromEntries( + params.body.field_definitions.map((field) => [field.name, { type: 'keyword' }]) + ); + + const documentSamplesSearchBody = { + // Add keyword runtime mappings so we can pair with exists, this is to attempt to "miss" less documents for the simulation. + runtime_mappings: propertiesForSample, + query: { + bool: { + filter: Object.keys(propertiesForSample).map((field) => ({ + exists: { field }, + })), + }, + }, + sort: [ + { + '@timestamp': { + order: 'desc', + }, + }, + ], + size: SAMPLE_SIZE, + }; + + const sampleResults = await scopedClusterClient.asCurrentUser.search({ + index: params.path.id, + ...documentSamplesSearchBody, + }); + + if ( + (typeof sampleResults.hits.total === 'object' && sampleResults.hits.total?.value === 0) || + sampleResults.hits.total === 0 || + !sampleResults.hits.total + ) { + return { + status: 'unknown', + simulationError: null, + documentsWithRuntimeFieldsApplied: null, + }; + } + + const propertiesForSimulation = Object.fromEntries( + params.body.field_definitions.map((field) => [ + field.name, + { type: field.type, ...(field.format ? { format: field.format } : {}) }, + ]) + ); + + const fieldDefinitionKeys = Object.keys(propertiesForSimulation); + + const sampleResultsAsSimulationDocs = sampleResults.hits.hits.map((hit) => ({ + _index: params.path.id, + _id: hit._id, + _source: Object.fromEntries( + Object.entries(getFlattenedObject(hit._source as Record)).filter( + ([k]) => fieldDefinitionKeys.includes(k) || k === '@timestamp' + ) + ), + })); + + const simulationBody = { + docs: sampleResultsAsSimulationDocs, + component_template_substitutions: { + [`${params.path.id}@stream.layer`]: { + template: { + mappings: { + dynamic: 'strict', + properties: propertiesForSimulation, + }, + }, + }, + }, + }; + + // TODO: We should be using scopedClusterClient.asCurrentUser.simulate.ingest() but the ES JS lib currently has a bug. The types also aren't available yet, so we use any. + const simulation = (await scopedClusterClient.asCurrentUser.transport.request({ + method: 'POST', + path: `_ingest/_simulate`, + body: simulationBody, + })) as any; + + const hasErrors = simulation.docs.some((doc: any) => doc.doc.error !== undefined); + + if (hasErrors) { + const documentWithError = simulation.docs.find((doc: any) => { + return doc.doc.error !== undefined; + }); + + return { + status: 'failure', + simulationError: JSON.stringify( + // Use the first error as a representative error + documentWithError.doc.error + ), + documentsWithRuntimeFieldsApplied: null, + }; + } + + // Convert the field definitions to a format that can be used in runtime mappings (match_only_text -> keyword) + const propertiesCompatibleWithRuntimeMappings = Object.fromEntries( + params.body.field_definitions.map((field) => [ + field.name, + { + type: field.type === 'match_only_text' ? 'keyword' : field.type, + ...(field.format ? { format: field.format } : {}), + }, + ]) + ); + + const runtimeFieldsSearchBody = { + runtime_mappings: propertiesCompatibleWithRuntimeMappings, + sort: [ + { + '@timestamp': { + order: 'desc', + }, + }, + ], + size: SAMPLE_SIZE, + fields: params.body.field_definitions.map((field) => field.name), + _source: false, + }; + + // This gives us a "fields" representation rather than _source from the simulation + const runtimeFieldsResult = await scopedClusterClient.asCurrentUser.search({ + index: params.path.id, + ...runtimeFieldsSearchBody, + }); + + return { + status: 'success', + simulationError: null, + documentsWithRuntimeFieldsApplied: runtimeFieldsResult.hits.hits + .map((hit) => { + if (!hit.fields) { + return {}; + } + return Object.keys(hit.fields).reduce>((acc, field) => { + acc[field] = hit.fields![field][0]; + return acc; + }, {}); + }) + .filter((doc) => Object.keys(doc).length > 0), + }; + } catch (e) { + if (e instanceof DefinitionNotFound) { + throw notFound(e); + } + + throw internal(e); + } + }, +}); diff --git a/x-pack/solutions/observability/plugins/streams/server/routes/streams/schema/unmapped_fields.ts b/x-pack/solutions/observability/plugins/streams/server/routes/streams/schema/unmapped_fields.ts new file mode 100644 index 0000000000000..15bcb964b8fd6 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams/server/routes/streams/schema/unmapped_fields.ts @@ -0,0 +1,103 @@ +/* + * 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 { z } from '@kbn/zod'; +import { internal, notFound } from '@hapi/boom'; +import { getFlattenedObject } from '@kbn/std'; +import { DefinitionNotFound } from '../../../lib/streams/errors'; +import { checkReadAccess, readAncestors, readStream } from '../../../lib/streams/stream_crud'; +import { createServerRoute } from '../../create_server_route'; + +const SAMPLE_SIZE = 500; + +export const unmappedFieldsRoute = createServerRoute({ + endpoint: 'GET /api/streams/{id}/schema/unmapped_fields', + options: { + access: 'internal', + }, + security: { + authz: { + enabled: false, + reason: + 'This API delegates security to the currently logged in user and their Elasticsearch permissions.', + }, + }, + params: z.object({ + path: z.object({ id: z.string() }), + }), + handler: async ({ + response, + params, + request, + logger, + getScopedClients, + }): Promise<{ unmappedFields: string[] }> => { + try { + const { scopedClusterClient } = await getScopedClients({ request }); + + const hasAccess = await checkReadAccess({ id: params.path.id, scopedClusterClient }); + if (!hasAccess) { + throw new DefinitionNotFound(`Stream definition for ${params.path.id} not found.`); + } + + const streamEntity = await readStream({ + scopedClusterClient, + id: params.path.id, + }); + + const searchBody = { + sort: [ + { + '@timestamp': { + order: 'desc', + }, + }, + ], + size: SAMPLE_SIZE, + }; + + const results = await scopedClusterClient.asCurrentUser.search({ + index: params.path.id, + ...searchBody, + }); + + const sourceFields = new Set(); + + results.hits.hits.forEach((hit) => { + Object.keys(getFlattenedObject(hit._source as Record)).forEach((field) => { + sourceFields.add(field); + }); + }); + + // Mapped fields from the stream's definition and inherited from ancestors + const mappedFields = new Set(); + + streamEntity.definition.fields.forEach((field) => mappedFields.add(field.name)); + + const { ancestors } = await readAncestors({ + id: params.path.id, + scopedClusterClient, + }); + + for (const ancestor of ancestors) { + ancestor.definition.fields.forEach((field) => mappedFields.add(field.name)); + } + + const unmappedFields = Array.from(sourceFields) + .filter((field) => !mappedFields.has(field)) + .sort(); + + return { unmappedFields }; + } catch (e) { + if (e instanceof DefinitionNotFound) { + throw notFound(e); + } + + throw internal(e); + } + }, +}); diff --git a/x-pack/solutions/observability/plugins/streams/tsconfig.json b/x-pack/solutions/observability/plugins/streams/tsconfig.json index 4cec623f68286..fbb8515998fb3 100644 --- a/x-pack/solutions/observability/plugins/streams/tsconfig.json +++ b/x-pack/solutions/observability/plugins/streams/tsconfig.json @@ -29,6 +29,8 @@ "@kbn/licensing-plugin", "@kbn/server-route-repository-client", "@kbn/observability-utils-server", - "@kbn/observability-utils-common" + "@kbn/observability-utils-common", + "@kbn/std", + "@kbn/safer-lodash-set" ] } diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/preview_table/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/preview_table/index.tsx index 22db6ff294079..d200e6b3b40be 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/preview_table/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/preview_table/index.tsx @@ -8,7 +8,13 @@ import { EuiDataGrid } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useEffect, useMemo, useState } from 'react'; -export function PreviewTable({ documents }: { documents: unknown[] }) { +export function PreviewTable({ + documents, + displayColumns, +}: { + documents: unknown[]; + displayColumns?: string[]; +}) { const [height, setHeight] = useState('100px'); useEffect(() => { // set height to 100% after a short delay otherwise it doesn't calculate correctly @@ -19,6 +25,8 @@ export function PreviewTable({ documents }: { documents: unknown[] }) { }, []); const columns = useMemo(() => { + if (displayColumns) return displayColumns; + const cols = new Set(); documents.forEach((doc) => { if (!doc || typeof doc !== 'object') { @@ -29,7 +37,7 @@ export function PreviewTable({ documents }: { documents: unknown[] }) { }); }); return Array.from(cols); - }, [documents]); + }, [displayColumns, documents]); const gridColumns = useMemo(() => { return Array.from(columns).map((column) => ({ diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/classic.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/classic.tsx new file mode 100644 index 0000000000000..1664b322b5a8e --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/classic.tsx @@ -0,0 +1,142 @@ +/* + * 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 { i18n } from '@kbn/i18n'; +import { ReadStreamDefinition, StreamDefinition } from '@kbn/streams-plugin/common'; +import { EuiFlexGroup, EuiListGroup, EuiText } from '@elastic/eui'; +import { useStreamsAppParams } from '../../hooks/use_streams_app_params'; +import { RedirectTo } from '../redirect_to'; +import { StreamDetailEnriching } from '../stream_detail_enriching'; +import { useKibana } from '../../hooks/use_kibana'; +import { Wrapper } from './wrapper'; + +type ManagementSubTabs = 'enrich' | 'overview'; + +function isValidManagementSubTab(value: string): value is ManagementSubTabs { + return ['enrich', 'overview'].includes(value); +} + +export function ClassicStreamDetailManagement({ + definition, + refreshDefinition, +}: { + definition: ReadStreamDefinition; + refreshDefinition: () => void; +}) { + const { + path: { key, subtab }, + } = useStreamsAppParams('/{key}/management/{subtab}'); + + const tabs = { + overview: { + content: , + label: i18n.translate('xpack.streams.streamDetailView.overviewTab', { + defaultMessage: 'Overview', + }), + }, + enrich: { + content: ( + + ), + label: i18n.translate('xpack.streams.streamDetailView.enrichingTab', { + defaultMessage: 'Extract field', + }), + }, + }; + + if (!isValidManagementSubTab(subtab)) { + return ( + + ); + } + + return ; +} + +function UnmanagedStreamOverview({ definition }: { definition: StreamDefinition }) { + const { + core: { + http: { basePath }, + }, + } = useKibana(); + const groupedAssets = (definition.unmanaged_elasticsearch_assets ?? []).reduce((acc, asset) => { + const title = assetToTitle(asset); + if (title) { + acc[title] = acc[title] ?? []; + acc[title].push(asset); + } + return acc; + }, {} as Record>); + return ( + + +

+ {i18n.translate('xpack.streams.streamDetailView.unmanagedStreamOverview', { + defaultMessage: + 'This stream is not managed. Follow the links to stack management to change the related Elasticsearch objects.', + })} +

+ + {Object.entries(groupedAssets).map(([title, assets]) => ( +
+ +

{title}

+
+ ({ + label: asset.id, + href: basePath.prepend(assetToLink(asset)), + iconType: 'index', + target: '_blank', + }))} + /> +
+ ))} + + ); +} + +function assetToLink(asset: { type: string; id: string }) { + switch (asset.type) { + case 'index_template': + return `/app/management/data/index_management/templates/${asset.id}`; + case 'component_template': + return `/app/management/data/index_management/component_templates/${asset.id}`; + case 'data_stream': + return `/app/management/data/index_management/data_streams/${asset.id}`; + case 'ingest_pipeline': + return `/app/management/ingest/ingest_pipelines?pipeline=${asset.id}`; + default: + return ''; + } +} + +function assetToTitle(asset: { type: string; id: string }) { + switch (asset.type) { + case 'index_template': + return i18n.translate('xpack.streams.streamDetailView.indexTemplate', { + defaultMessage: 'Index template', + }); + case 'component_template': + return i18n.translate('xpack.streams.streamDetailView.componentTemplate', { + defaultMessage: 'Component template', + }); + case 'data_stream': + return i18n.translate('xpack.streams.streamDetailView.dataStream', { + defaultMessage: 'Data stream', + }); + case 'ingest_pipeline': + return i18n.translate('xpack.streams.streamDetailView.ingestPipeline', { + defaultMessage: 'Ingest pipeline', + }); + default: + return ''; + } +} diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/index.tsx index 4f3d207c91789..24567fe8d80a3 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/index.tsx @@ -5,205 +5,34 @@ * 2.0. */ import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { ReadStreamDefinition, StreamDefinition } from '@kbn/streams-plugin/common'; -import { css } from '@emotion/css'; -import { EuiButtonGroup, EuiFlexGroup, EuiFlexItem, EuiListGroup, EuiText } from '@elastic/eui'; -import { useStreamsAppParams } from '../../hooks/use_streams_app_params'; -import { RedirectTo } from '../redirect_to'; -import { useStreamsAppRouter } from '../../hooks/use_streams_app_router'; -import { StreamDetailRouting } from '../stream_detail_routing'; -import { StreamDetailEnriching } from '../stream_detail_enriching'; -import { StreamDetailSchemaEditor } from '../stream_detail_schema_editor'; -import { useKibana } from '../../hooks/use_kibana'; - -type ManagementSubTabs = 'route' | 'enrich' | 'schemaEditor'; - -function isValidManagementSubTab(value: string): value is ManagementSubTabs { - return ['route', 'enrich', 'schemaEditor'].includes(value); -} +import { ReadStreamDefinition } from '@kbn/streams-plugin/common'; +import { WiredStreamDetailManagement } from './wired'; +import { ClassicStreamDetailManagement } from './classic'; export function StreamDetailManagement({ definition, refreshDefinition, + isLoadingDefinition, }: { definition?: ReadStreamDefinition; refreshDefinition: () => void; + isLoadingDefinition: boolean; }) { - const { - path: { key, subtab }, - } = useStreamsAppParams('/{key}/management/{subtab}'); - const router = useStreamsAppRouter(); - - if (subtab === 'overview') { - if (!definition) { - return null; - } - if (definition.managed) { - return ( - - ); - } - return ; - } - - const tabs = { - route: { - content: ( - - ), - label: i18n.translate('xpack.streams.streamDetailView.routingTab', { - defaultMessage: 'Streams Partitioning', - }), - }, - enrich: { - content: ( - - ), - label: i18n.translate('xpack.streams.streamDetailView.enrichingTab', { - defaultMessage: 'Extract field', - }), - }, - schemaEditor: { - content: ( - - ), - label: i18n.translate('xpack.streams.streamDetailView.schemaEditorTab', { - defaultMessage: 'Schema editor', - }), - }, - }; - - if (!isValidManagementSubTab(subtab)) { - return ( - - ); + if (!definition) { + return null; } - if (definition && !definition.managed) { + if (definition.managed) { return ( - ); } - const selectedTabObject = tabs[subtab]; - - return ( - - - { - router.push('/{key}/management/{subtab}', { - path: { key, subtab: optionId }, - query: {}, - }); - }} - options={Object.keys(tabs).map((id) => ({ - id, - label: tabs[id as ManagementSubTabs].label, - }))} - /> - - - {selectedTabObject.content} - - - ); -} - -function assetToLink(asset: { type: string; id: string }) { - switch (asset.type) { - case 'index_template': - return `/app/management/data/index_management/templates/${asset.id}`; - case 'component_template': - return `/app/management/data/index_management/component_templates/${asset.id}`; - case 'data_stream': - return `/app/management/data/index_management/data_streams/${asset.id}`; - case 'ingest_pipeline': - return `/app/management/ingest/ingest_pipelines?pipeline=${asset.id}`; - default: - return ''; - } -} - -function assetToTitle(asset: { type: string; id: string }) { - switch (asset.type) { - case 'index_template': - return i18n.translate('xpack.streams.streamDetailView.indexTemplate', { - defaultMessage: 'Index template', - }); - case 'component_template': - return i18n.translate('xpack.streams.streamDetailView.componentTemplate', { - defaultMessage: 'Component template', - }); - case 'data_stream': - return i18n.translate('xpack.streams.streamDetailView.dataStream', { - defaultMessage: 'Data stream', - }); - case 'ingest_pipeline': - return i18n.translate('xpack.streams.streamDetailView.ingestPipeline', { - defaultMessage: 'Ingest pipeline', - }); - default: - return ''; - } -} - -function UnmanagedStreamOverview({ definition }: { definition: StreamDefinition }) { - const { - core: { - http: { basePath }, - }, - } = useKibana(); - const groupedAssets = (definition.unmanaged_elasticsearch_assets ?? []).reduce((acc, asset) => { - const title = assetToTitle(asset); - if (title) { - acc[title] = acc[title] ?? []; - acc[title].push(asset); - } - return acc; - }, {} as Record>); return ( - - -

- {i18n.translate('xpack.streams.streamDetailView.unmanagedStreamOverview', { - defaultMessage: - 'This stream is not managed. Follow the links to stack management to change the related Elasticsearch objects.', - })} -

-
- {Object.entries(groupedAssets).map(([title, assets]) => ( -
- -

{title}

-
- ({ - label: asset.id, - href: basePath.prepend(assetToLink(asset)), - iconType: 'index', - target: '_blank', - }))} - /> -
- ))} -
+ ); } diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/wired.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/wired.tsx new file mode 100644 index 0000000000000..6b4888c8d4668 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/wired.tsx @@ -0,0 +1,74 @@ +/* + * 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 { i18n } from '@kbn/i18n'; +import { ReadStreamDefinition } from '@kbn/streams-plugin/common'; +import { useStreamsAppParams } from '../../hooks/use_streams_app_params'; +import { RedirectTo } from '../redirect_to'; +import { StreamDetailRouting } from '../stream_detail_routing'; +import { StreamDetailEnriching } from '../stream_detail_enriching'; +import { StreamDetailSchemaEditor } from '../stream_detail_schema_editor'; +import { Wrapper } from './wrapper'; + +type ManagementSubTabs = 'route' | 'enrich' | 'schemaEditor'; + +function isValidManagementSubTab(value: string): value is ManagementSubTabs { + return ['route', 'enrich', 'schemaEditor'].includes(value); +} + +export function WiredStreamDetailManagement({ + definition, + refreshDefinition, + isLoadingDefinition, +}: { + definition?: ReadStreamDefinition; + refreshDefinition: () => void; + isLoadingDefinition: boolean; +}) { + const { + path: { key, subtab }, + } = useStreamsAppParams('/{key}/management/{subtab}'); + + const tabs = { + route: { + content: ( + + ), + label: i18n.translate('xpack.streams.streamDetailView.routingTab', { + defaultMessage: 'Streams Partitioning', + }), + }, + enrich: { + content: ( + + ), + label: i18n.translate('xpack.streams.streamDetailView.enrichingTab', { + defaultMessage: 'Extract field', + }), + }, + schemaEditor: { + content: ( + + ), + label: i18n.translate('xpack.streams.streamDetailView.schemaEditorTab', { + defaultMessage: 'Schema editor', + }), + }, + }; + + if (!isValidManagementSubTab(subtab)) { + return ( + + ); + } + + return ; +} diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/wrapper.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/wrapper.tsx new file mode 100644 index 0000000000000..92d80924298fc --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_management/wrapper.tsx @@ -0,0 +1,57 @@ +/* + * 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 { EuiButtonGroup, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import React from 'react'; +import { css } from '@emotion/css'; +import { useStreamsAppRouter } from '../../hooks/use_streams_app_router'; + +export function Wrapper({ + tabs, + streamId, + subtab, +}: { + tabs: Record; + streamId: string; + subtab: string; +}) { + const router = useStreamsAppRouter(); + return ( + + + { + router.push('/{key}/management/{subtab}', { + path: { key: streamId, subtab: optionId }, + query: {}, + }); + }} + options={Object.keys(tabs).map((id) => ({ + id, + label: tabs[id].label, + }))} + /> + + + {tabs[subtab].content} + + + ); +} diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_overview/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_overview/index.tsx index c051d114317ea..28af5f4f104c1 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_overview/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_overview/index.tsx @@ -8,15 +8,15 @@ import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiPanel } from '@elastic/eui'; import { calculateAuto } from '@kbn/calculate-auto'; import { i18n } from '@kbn/i18n'; import { useDateRange } from '@kbn/observability-utils-browser/hooks/use_date_range'; -import { StreamDefinition } from '@kbn/streams-plugin/common'; import moment from 'moment'; import React, { useMemo } from 'react'; +import { ReadStreamDefinition } from '@kbn/streams-plugin/common'; import { useKibana } from '../../hooks/use_kibana'; import { useStreamsAppFetch } from '../../hooks/use_streams_app_fetch'; import { ControlledEsqlChart } from '../esql_chart/controlled_esql_chart'; import { StreamsAppSearchBar } from '../streams_app_search_bar'; -export function StreamDetailOverview({ definition }: { definition?: StreamDefinition }) { +export function StreamDetailOverview({ definition }: { definition?: ReadStreamDefinition }) { const { dependencies: { start: { diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/index.tsx index ca58051f9db2b..2b829aca37b86 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/index.tsx @@ -78,7 +78,12 @@ export function StreamDetailRouting({ const closeModal = () => routingAppState.setShowDeleteModal(false); return ( - <> + {routingAppState.showDeleteModal && routingAppState.childUnderEdit && ( - + ); } diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_parent.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_parent.tsx new file mode 100644 index 0000000000000..5f8b6f4af0ffe --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_parent.tsx @@ -0,0 +1,36 @@ +/* + * 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 { EuiBadge } from '@elastic/eui'; +import React from 'react'; +import { useStreamsAppRouter } from '../../hooks/use_streams_app_router'; + +export const FieldParent = ({ + parent, + linkEnabled = false, +}: { + parent: string; + linkEnabled?: boolean; +}) => { + const router = useStreamsAppRouter(); + return linkEnabled ? ( + + {parent} + + ) : ( + {parent} + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_status.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_status.tsx new file mode 100644 index 0000000000000..dda456a9f49f7 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_status.tsx @@ -0,0 +1,41 @@ +/* + * 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 { EuiBadge } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; + +export type FieldStatus = 'inherited' | 'mapped' | 'unmapped'; + +export const FIELD_STATUS_MAP = { + inherited: { + color: 'hollow', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorInheritedStatusLabel', { + defaultMessage: 'Inherited', + }), + }, + mapped: { + color: 'success', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorMappedStatusLabel', { + defaultMessage: 'Mapped', + }), + }, + unmapped: { + color: 'default', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorUnmappedStatusLabel', { + defaultMessage: 'Unmapped', + }), + }, +}; + +export const FieldStatus = ({ status }: { status: FieldStatus }) => { + return ( + <> + {FIELD_STATUS_MAP[status].label} + + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_type.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_type.tsx new file mode 100644 index 0000000000000..a278d22dcd3ec --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/field_type.tsx @@ -0,0 +1,67 @@ +/* + * 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 { EuiFlexGroup, EuiFlexItem, EuiToken } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FieldDefinition } from '@kbn/streams-plugin/common/types'; +import React from 'react'; + +export const FIELD_TYPE_MAP = { + boolean: { + icon: 'tokenBoolean', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableBooleanType', { + defaultMessage: 'Boolean', + }), + }, + date: { + icon: 'tokenDate', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableDateType', { + defaultMessage: 'Date', + }), + }, + keyword: { + icon: 'tokenKeyword', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableKeywordType', { + defaultMessage: 'Keyword', + }), + }, + match_only_text: { + icon: 'tokenText', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableTextType', { + defaultMessage: 'Text', + }), + }, + long: { + icon: 'tokenNumber', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableNumberType', { + defaultMessage: 'Number', + }), + }, + double: { + icon: 'tokenNumber', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableNumberType', { + defaultMessage: 'Number', + }), + }, + ip: { + icon: 'tokenIP', + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableIpType', { + defaultMessage: 'IP', + }), + }, +}; + +export const FieldType = ({ type }: { type: FieldDefinition['type'] }) => { + return ( + + + + + {`${FIELD_TYPE_MAP[type].label}`} + + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/fields_table.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/fields_table.tsx new file mode 100644 index 0000000000000..b50fdee7e6ae9 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/fields_table.tsx @@ -0,0 +1,355 @@ +/* + * 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, { useMemo, useState } from 'react'; +import { + EuiButtonIcon, + EuiContextMenu, + EuiDataGrid, + EuiPopover, + EuiSearchBar, + useGeneratedHtmlId, +} from '@elastic/eui'; +import type { + EuiContextMenuPanelDescriptor, + EuiContextMenuPanelItemDescriptor, + EuiDataGridProps, + Query, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import useToggle from 'react-use/lib/useToggle'; +import { ReadStreamDefinition } from '@kbn/streams-plugin/common/types'; +import { FieldType } from './field_type'; +import { FieldStatus } from './field_status'; +import { FieldEntry, SchemaEditorEditingState } from './hooks/use_editing_state'; +import { SchemaEditorUnpromotingState } from './hooks/use_unpromoting_state'; +import { FieldParent } from './field_parent'; + +interface FieldsTableContainerProps { + definition: ReadStreamDefinition; + unmappedFieldsResult?: string[]; + isLoadingUnmappedFields: boolean; + query?: Query; + editingState: SchemaEditorEditingState; + unpromotingState: SchemaEditorUnpromotingState; +} + +const COLUMNS = { + name: { + display: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTablenameHeader', { + defaultMessage: 'Field', + }), + }, + type: { + display: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTabletypeHeader', { + defaultMessage: 'Type', + }), + }, + format: { + display: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableformatHeader', { + defaultMessage: 'Format', + }), + }, + parent: { + display: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTableFieldParentHeader', { + defaultMessage: 'Field Parent (Stream)', + }), + }, + status: { + display: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldsTablestatusHeader', { + defaultMessage: 'Status', + }), + }, +}; + +export const EMPTY_CONTENT = '-----'; + +export const FieldsTableContainer = ({ + definition, + unmappedFieldsResult, + isLoadingUnmappedFields, + query, + editingState, + unpromotingState, +}: FieldsTableContainerProps) => { + const inheritedFields = useMemo(() => { + return definition.inheritedFields.map((field) => ({ + name: field.name, + type: field.type, + format: field.format, + parent: field.from, + status: 'inherited' as const, + })); + }, [definition]); + + const filteredInheritedFields = useMemo(() => { + if (!query) return inheritedFields; + return EuiSearchBar.Query.execute(query, inheritedFields, { + defaultFields: ['name', 'type'], + }); + }, [inheritedFields, query]); + + const mappedFields = useMemo(() => { + return definition.fields.map((field) => ({ + name: field.name, + type: field.type, + format: field.format, + parent: definition.id, + status: 'mapped' as const, + })); + }, [definition]); + + const filteredMappedFields = useMemo(() => { + if (!query) return mappedFields; + return EuiSearchBar.Query.execute(query, mappedFields, { + defaultFields: ['name', 'type'], + }); + }, [mappedFields, query]); + + const unmappedFields = useMemo(() => { + return unmappedFieldsResult + ? unmappedFieldsResult.map((field) => ({ + name: field, + parent: definition.id, + status: 'unmapped' as const, + })) + : []; + }, [definition.id, unmappedFieldsResult]); + + const filteredUnmappedFields = useMemo(() => { + if (!unmappedFieldsResult) return []; + if (!query) return unmappedFields; + return EuiSearchBar.Query.execute(query, unmappedFields, { + defaultFields: ['name'], + }); + }, [unmappedFieldsResult, query, unmappedFields]); + + const allFilteredFields = useMemo(() => { + return [...filteredInheritedFields, ...filteredMappedFields, ...filteredUnmappedFields]; + }, [filteredInheritedFields, filteredMappedFields, filteredUnmappedFields]); + + return ( + + ); +}; + +interface FieldsTableProps { + definition: ReadStreamDefinition; + fields: FieldEntry[]; + editingState: SchemaEditorEditingState; + unpromotingState: SchemaEditorUnpromotingState; +} + +const FieldsTable = ({ definition, fields, editingState, unpromotingState }: FieldsTableProps) => { + const [visibleColumns, setVisibleColumns] = useState(Object.keys(COLUMNS)); + + const trailingColumns = useMemo(() => { + return [ + { + id: 'actions', + width: 40, + headerCellRender: () => null, + rowCellRender: ({ rowIndex }) => { + const field = fields[rowIndex]; + + let actions: ActionsCellActionsDescriptor[] = []; + + switch (field.status) { + case 'mapped': + actions = [ + { + name: i18n.translate('xpack.streams.actions.viewFieldLabel', { + defaultMessage: 'View field', + }), + disabled: editingState.isSaving, + onClick: (fieldEntry: FieldEntry) => { + editingState.selectField(fieldEntry, false); + }, + }, + { + name: i18n.translate('xpack.streams.actions.editFieldLabel', { + defaultMessage: 'Edit field', + }), + disabled: editingState.isSaving, + onClick: (fieldEntry: FieldEntry) => { + editingState.selectField(fieldEntry, true); + }, + }, + { + name: i18n.translate('xpack.streams.actions.unpromoteFieldLabel', { + defaultMessage: 'Unmap field', + }), + disabled: unpromotingState.isUnpromotingField, + onClick: (fieldEntry: FieldEntry) => { + unpromotingState.setSelectedField(fieldEntry.name); + }, + }, + ]; + break; + case 'unmapped': + actions = [ + { + name: i18n.translate('xpack.streams.actions.viewFieldLabel', { + defaultMessage: 'View field', + }), + disabled: editingState.isSaving, + onClick: (fieldEntry: FieldEntry) => { + editingState.selectField(fieldEntry, false); + }, + }, + { + name: i18n.translate('xpack.streams.actions.mapFieldLabel', { + defaultMessage: 'Map field', + }), + disabled: editingState.isSaving, + onClick: (fieldEntry: FieldEntry) => { + editingState.selectField(fieldEntry, true); + }, + }, + ]; + break; + case 'inherited': + actions = [ + { + name: i18n.translate('xpack.streams.actions.viewFieldLabel', { + defaultMessage: 'View field', + }), + disabled: editingState.isSaving, + onClick: (fieldEntry: FieldEntry) => { + editingState.selectField(fieldEntry, false); + }, + }, + ]; + break; + } + + return ( + ({ + name: action.name, + icon: action.icon, + onClick: (event) => { + action.onClick(field); + }, + })), + }, + ]} + /> + ); + }, + }, + ] as EuiDataGridProps['trailingControlColumns']; + }, [editingState, fields, unpromotingState]); + + return ( + ({ + id: columnId, + ...COLUMNS[columnId as keyof typeof COLUMNS], + }))} + columnVisibility={{ + visibleColumns, + setVisibleColumns, + canDragAndDropColumns: false, + }} + toolbarVisibility={false} + rowCount={fields.length} + renderCellValue={({ rowIndex, columnId }) => { + const field = fields[rowIndex]; + if (columnId === 'type') { + const fieldType = field.type; + if (!fieldType) return EMPTY_CONTENT; + return ; + } else if (columnId === 'parent') { + return ; + } else if (columnId === 'status') { + return ; + } else { + return field[columnId as keyof FieldEntry] || EMPTY_CONTENT; + } + }} + trailingControlColumns={trailingColumns} + gridStyle={{ + border: 'none', + rowHover: 'none', + header: 'underline', + }} + /> + ); +}; + +export const ActionsCell = ({ panels }: { panels: EuiContextMenuPanelDescriptor[] }) => { + const contextMenuPopoverId = useGeneratedHtmlId({ + prefix: 'fieldsTableContextMenuPopover', + }); + + const [popoverIsOpen, togglePopoverIsOpen] = useToggle(false); + + return ( + { + togglePopoverIsOpen(); + }} + /> + } + isOpen={popoverIsOpen} + closePopover={() => togglePopoverIsOpen(false)} + > + ({ + ...panel, + items: panel.items?.map((item) => ({ + name: item.name, + icon: item.icon, + onClick: (event) => { + if (item.onClick) { + item.onClick(event as any); + } + togglePopoverIsOpen(false); + }, + })), + }))} + /> + + ); +}; + +export type ActionsCellActionsDescriptor = Omit & { + onClick: (field: FieldEntry) => void; +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/children_affected_callout.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/children_affected_callout.tsx new file mode 100644 index 0000000000000..1cb9cbd2dd045 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/children_affected_callout.tsx @@ -0,0 +1,33 @@ +/* + * 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 { EuiCallOut } from '@elastic/eui'; +import { StreamDefinition } from '@kbn/streams-plugin/common/types'; +import { i18n } from '@kbn/i18n'; + +export const ChildrenAffectedCallout = ({ + childStreams, +}: { + childStreams: StreamDefinition['children']; +}) => { + return ( + + {i18n.translate('xpack.streams.childStreamsWarning.text', { + defaultMessage: "Editing this field will affect it's dependant streams: {affectedStreams} ", + values: { + affectedStreams: childStreams.map((stream) => stream.id).join(', '), + }, + })} + + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_form_format.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_form_format.tsx new file mode 100644 index 0000000000000..98f5d899c1074 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_form_format.tsx @@ -0,0 +1,39 @@ +/* + * 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 { EuiFieldText } from '@elastic/eui'; +import React from 'react'; +import { FieldDefinition } from '@kbn/streams-plugin/common/types'; +import { SchemaEditorEditingState } from '../hooks/use_editing_state'; + +type FieldFormFormatProps = Pick< + SchemaEditorEditingState, + 'nextFieldType' | 'nextFieldFormat' | 'setNextFieldFormat' +>; + +export const typeSupportsFormat = (type?: FieldDefinition['type']) => { + if (!type) return false; + return ['date'].includes(type); +}; + +export const FieldFormFormat = ({ + nextFieldType: fieldType, + nextFieldFormat: value, + setNextFieldFormat: onChange, +}: FieldFormFormatProps) => { + if (!typeSupportsFormat(fieldType)) { + return null; + } + return ( + onChange(e.target.value)} + /> + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_form_type.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_form_type.tsx new file mode 100644 index 0000000000000..c4e601e306f1d --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_form_type.tsx @@ -0,0 +1,44 @@ +/* + * 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 { EuiSelect } from '@elastic/eui'; +import React from 'react'; +import { SchemaEditorEditingState } from '../hooks/use_editing_state'; + +type FieldFormTypeProps = Pick; + +const TYPE_OPTIONS = { + long: 'Long', + double: 'Double', + keyword: 'Keyword', + match_only_text: 'Text (match_only_text)', + boolean: 'Boolean', + ip: 'IP', + date: 'Date', +} as const; + +type FieldTypeOption = keyof typeof TYPE_OPTIONS; + +export const FieldFormType = ({ + nextFieldType: value, + setNextFieldType: onChange, +}: FieldFormTypeProps) => { + return ( + { + onChange(event.target.value as FieldTypeOption); + }} + value={value} + options={Object.entries(TYPE_OPTIONS).map(([optionKey, optionValue]) => ({ + text: optionValue, + value: optionKey, + }))} + /> + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_summary.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_summary.tsx new file mode 100644 index 0000000000000..796e7531258d3 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/field_summary.tsx @@ -0,0 +1,216 @@ +/* + * 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 { + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiHorizontalRule, + EuiIconTip, + EuiSpacer, + EuiTitle, +} from '@elastic/eui'; +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { useStreamsAppRouter } from '../../../hooks/use_streams_app_router'; +import { FieldParent } from '../field_parent'; +import { FieldStatus } from '../field_status'; +import { FieldFormFormat, typeSupportsFormat } from './field_form_format'; +import { FieldFormType } from './field_form_type'; +import { SchemaEditorFlyoutProps } from '.'; +import { FieldType } from '../field_type'; + +const EMPTY_CONTENT = '-----'; + +const title = i18n.translate('xpack.streams.streamDetailSchemaEditorFieldSummaryTitle', { + defaultMessage: 'Field summary', +}); + +const FIELD_SUMMARIES = { + fieldStatus: { + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldSummaryFieldNameHeader', { + defaultMessage: 'Status', + }), + }, + fieldType: { + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldSummaryFieldTypeHeader', { + defaultMessage: 'Type', + }), + }, + fieldFormat: { + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldSummaryFieldFormatHeader', { + defaultMessage: 'Format', + }), + }, + fieldParent: { + label: i18n.translate('xpack.streams.streamDetailSchemaEditorFieldSummaryFieldParentHeader', { + defaultMessage: 'Field Parent', + }), + }, +}; + +export const FieldSummary = (props: SchemaEditorFlyoutProps) => { + const { + selectedField, + isEditing, + nextFieldType, + setNextFieldType, + nextFieldFormat, + setNextFieldFormat, + toggleIsEditing, + } = props; + + const router = useStreamsAppRouter(); + + if (!selectedField) { + return null; + } + + return ( + + + + + {title} + + + {selectedField.status !== 'inherited' && !isEditing ? ( + + + + toggleIsEditing()} + iconType="pencil" + > + {i18n.translate('xpack.streams.fieldSummary.editButtonLabel', { + defaultMessage: 'Edit', + })} + + + + + ) : selectedField.status === 'inherited' ? ( + + + + + {i18n.translate('xpack.streams.fieldSummary.editInParentButtonLabel', { + defaultMessage: 'Edit in parent stream', + })} + + + + + ) : null} + + + + + + + + + {FIELD_SUMMARIES.fieldStatus.label}{' '} + + + + + + + + + + + + + + + + + + + {FIELD_SUMMARIES.fieldType.label} + + + + {isEditing ? ( + + ) : selectedField.type ? ( + + ) : ( + `${EMPTY_CONTENT}` + )} + + + + + + {typeSupportsFormat(nextFieldType) && ( + <> + + + + {FIELD_SUMMARIES.fieldFormat.label} + + + + {isEditing ? ( + + ) : ( + `${selectedField.format ?? EMPTY_CONTENT}` + )} + + + + + )} + + + + + {FIELD_SUMMARIES.fieldParent.label} + + + + + + + + + + + + + + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/index.tsx new file mode 100644 index 0000000000000..8bbdd6abf9ad3 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/index.tsx @@ -0,0 +1,104 @@ +/* + * 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 { StreamsRepositoryClient } from '@kbn/streams-plugin/public/api'; +import { + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiFlyout, + EuiFlyoutBody, + EuiFlyoutHeader, + EuiFlyoutFooter, + EuiTitle, + EuiButton, +} from '@elastic/eui'; +import React from 'react'; +import { i18n } from '@kbn/i18n'; +import { ReadStreamDefinition } from '@kbn/streams-plugin/common'; +import { SchemaEditorEditingState } from '../hooks/use_editing_state'; +import { ChildrenAffectedCallout } from './children_affected_callout'; +import { SamplePreviewTable } from './sample_preview_table'; +import { FieldSummary } from './field_summary'; + +export type SchemaEditorFlyoutProps = { + streamsRepositoryClient: StreamsRepositoryClient; + definition: ReadStreamDefinition; +} & SchemaEditorEditingState; + +export const SchemaEditorFlyout = (props: SchemaEditorFlyoutProps) => { + const { + definition, + streamsRepositoryClient, + selectedField, + reset, + nextFieldDefinition, + isEditing, + isSaving, + saveChanges, + } = props; + + return ( + reset()} maxWidth="500px"> + + + + +

{selectedField?.name}

+
+
+
+
+ + + + + {isEditing && definition.children.length > 0 ? ( + + + + ) : null} + + + + + + + + + + reset()} + flush="left" + > + {i18n.translate('xpack.streams.schemaEditorFlyout.closeButtonLabel', { + defaultMessage: 'Cancel', + })} + + + + saveChanges && saveChanges()} + > + {i18n.translate('xpack.streams.fieldForm.saveButtonLabel', { + defaultMessage: 'Save changes', + })} + + + + +
+ ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/sample_preview_table.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/sample_preview_table.tsx new file mode 100644 index 0000000000000..8c04a0b70e3be --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/flyout/sample_preview_table.tsx @@ -0,0 +1,116 @@ +/* + * 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, { useMemo } from 'react'; +import { StreamsRepositoryClient } from '@kbn/streams-plugin/public/api'; +import { ReadStreamDefinition } from '@kbn/streams-plugin/common'; +import { FieldDefinition } from '@kbn/streams-plugin/common/types'; +import { css } from '@emotion/react'; +import { i18n } from '@kbn/i18n'; +import { EuiCallOut } from '@elastic/eui'; +import { getFormattedError } from '../../../util/errors'; +import { useStreamsAppFetch } from '../../../hooks/use_streams_app_fetch'; +import { PreviewTable } from '../../preview_table'; +import { isFullFieldDefinition } from '../hooks/use_editing_state'; +import { LoadingPanel } from '../../loading_panel'; + +interface SamplePreviewTableProps { + definition: ReadStreamDefinition; + nextFieldDefinition?: Partial; + streamsRepositoryClient: StreamsRepositoryClient; +} + +export const SamplePreviewTable = (props: SamplePreviewTableProps) => { + const { nextFieldDefinition, ...rest } = props; + if (isFullFieldDefinition(nextFieldDefinition)) { + return ; + } else { + return null; + } +}; + +const SAMPLE_DOCUMENTS_TO_SHOW = 20; + +const SamplePreviewTableContent = ({ + definition, + nextFieldDefinition, + streamsRepositoryClient, +}: SamplePreviewTableProps & { nextFieldDefinition: FieldDefinition }) => { + const { value, loading, error } = useStreamsAppFetch( + ({ signal }) => { + return streamsRepositoryClient.fetch('POST /api/streams/{id}/schema/fields_simulation', { + signal, + params: { + path: { + id: definition.id, + }, + body: { + field_definitions: [nextFieldDefinition], + }, + }, + }); + }, + [definition.id, nextFieldDefinition, streamsRepositoryClient], + { + disableToastOnError: true, + } + ); + + const columns = useMemo(() => { + return [nextFieldDefinition.name]; + }, [nextFieldDefinition.name]); + + if (loading) { + return ; + } + + if ( + value && + (value.status === 'unknown' || value.documentsWithRuntimeFieldsApplied?.length === 0) + ) { + return ( + + {i18n.translate('xpack.streams.samplePreviewTable.unknownStatus', { + defaultMessage: + "Couldn't simulate changes due to a lack of indexed documents with this field", + })} + + ); + } + + if ((value && value.status === 'failure') || error) { + const formattedError = getFormattedError(error); + return ( + + {value?.simulationError ?? formattedError?.message} + + ); + } + + if (value && value.status === 'success' && value.documentsWithRuntimeFieldsApplied) { + return ( +
+ +
+ ); + } + + return null; +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/hooks/use_editing_state.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/hooks/use_editing_state.tsx new file mode 100644 index 0000000000000..9fc6288c1daf7 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/hooks/use_editing_state.tsx @@ -0,0 +1,180 @@ +/* + * 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 { FieldDefinition, ReadStreamDefinition } from '@kbn/streams-plugin/common/types'; +import { StreamsRepositoryClient } from '@kbn/streams-plugin/public/api'; +import { useCallback, useMemo, useState } from 'react'; +import useToggle from 'react-use/lib/useToggle'; +import { useAbortController } from '@kbn/observability-utils-browser/hooks/use_abort_controller'; +import { ToastsStart } from '@kbn/core-notifications-browser'; +import { i18n } from '@kbn/i18n'; +import { FieldStatus } from '../field_status'; + +export type SchemaEditorEditingState = ReturnType; + +export interface FieldEntry { + name: FieldDefinition['name']; + type?: FieldDefinition['type']; + format?: FieldDefinition['format']; + parent: string; + status: FieldStatus; +} + +export type EditableFieldDefinition = FieldEntry; + +export const useEditingState = ({ + streamsRepositoryClient, + definition, + refreshDefinition, + refreshUnmappedFields, + toastsService, +}: { + streamsRepositoryClient: StreamsRepositoryClient; + definition: ReadStreamDefinition; + refreshDefinition: () => void; + refreshUnmappedFields: () => void; + toastsService: ToastsStart; +}) => { + const abortController = useAbortController(); + /* Whether the field is being edited, otherwise it's just displayed. */ + const [isEditing, toggleIsEditing] = useToggle(false); + /* Whether changes are being persisted */ + const [isSaving, toggleIsSaving] = useToggle(false); + /* Holds errors from saving changes */ + const [error, setError] = useState(); + + /* Represents the currently selected field. This should not be edited directly. */ + const [selectedField, setSelectedField] = useState(); + + /** Dirty state */ + /* Dirty state of the field type */ + const [nextFieldType, setNextFieldType] = useState(); + /* Dirty state of the field format */ + const [nextFieldFormat, setNextFieldFormat] = useState< + EditableFieldDefinition['format'] | undefined + >(); + /* Full dirty definition entry that can be persisted against a stream */ + const nextFieldDefinition = useMemo(() => { + return selectedField + ? { + name: selectedField.name, + type: nextFieldType, + ...(nextFieldFormat && nextFieldType === 'date' ? { format: nextFieldFormat } : {}), + } + : undefined; + }, [nextFieldFormat, nextFieldType, selectedField]); + + const selectField = useCallback( + (field: EditableFieldDefinition, selectAndEdit?: boolean) => { + setSelectedField(field); + setNextFieldType(field.type); + setNextFieldFormat(field.format); + toggleIsEditing(selectAndEdit !== undefined ? selectAndEdit : false); + }, + [toggleIsEditing] + ); + + const reset = useCallback(() => { + setSelectedField(undefined); + setNextFieldType(undefined); + setNextFieldFormat(undefined); + toggleIsEditing(false); + toggleIsSaving(false); + setError(undefined); + }, [toggleIsEditing, toggleIsSaving]); + + const saveChanges = useMemo(() => { + return selectedField && + isFullFieldDefinition(nextFieldDefinition) && + hasChanges(selectedField, nextFieldDefinition) + ? async () => { + toggleIsSaving(true); + try { + await streamsRepositoryClient.fetch(`PUT /api/streams/{id}`, { + signal: abortController.signal, + params: { + path: { + id: definition.id, + }, + body: { + processing: definition.processing, + children: definition.children, + fields: [ + ...definition.fields.filter((field) => field.name !== nextFieldDefinition.name), + nextFieldDefinition, + ], + }, + }, + }); + toastsService.addSuccess( + i18n.translate('xpack.streams.streamDetailSchemaEditorEditSuccessToast', { + defaultMessage: '{field} was successfully edited', + values: { field: nextFieldDefinition.name }, + }) + ); + reset(); + refreshDefinition(); + refreshUnmappedFields(); + } catch (e) { + toggleIsSaving(false); + setError(e); + toastsService.addError(e, { + title: i18n.translate('xpack.streams.streamDetailSchemaEditorEditErrorToast', { + defaultMessage: 'Something went wrong editing the {field} field', + values: { field: nextFieldDefinition.name }, + }), + }); + } + } + : undefined; + }, [ + abortController.signal, + definition.children, + definition.fields, + definition.id, + definition.processing, + nextFieldDefinition, + refreshDefinition, + refreshUnmappedFields, + reset, + selectedField, + streamsRepositoryClient, + toastsService, + toggleIsSaving, + ]); + + return { + selectedField, + selectField, + isEditing, + toggleIsEditing, + nextFieldType, + setNextFieldType, + nextFieldFormat, + setNextFieldFormat, + isSaving, + saveChanges, + reset, + error, + nextFieldDefinition, + }; +}; + +export const isFullFieldDefinition = ( + value?: Partial +): value is FieldDefinition => { + return !!value && !!value.name && !!value.type; +}; + +const hasChanges = ( + selectedField: Partial, + nextFieldEntry: Partial +) => { + return ( + selectedField.type !== nextFieldEntry.type || selectedField.format !== nextFieldEntry.format + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/hooks/use_unpromoting_state.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/hooks/use_unpromoting_state.tsx new file mode 100644 index 0000000000000..b6e30c87cd7b4 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/hooks/use_unpromoting_state.tsx @@ -0,0 +1,93 @@ +/* + * 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 { StreamsRepositoryClient } from '@kbn/streams-plugin/public/api'; +import { useCallback, useState } from 'react'; +import useToggle from 'react-use/lib/useToggle'; +import { useAbortController } from '@kbn/observability-utils-browser/hooks/use_abort_controller'; +import { ToastsStart } from '@kbn/core-notifications-browser'; +import { i18n } from '@kbn/i18n'; +import { ReadStreamDefinition } from '@kbn/streams-plugin/common'; + +export type SchemaEditorUnpromotingState = ReturnType; + +export const useUnpromotingState = ({ + streamsRepositoryClient, + definition, + refreshDefinition, + refreshUnmappedFields, + toastsService, +}: { + streamsRepositoryClient: StreamsRepositoryClient; + definition: ReadStreamDefinition; + refreshDefinition: () => void; + refreshUnmappedFields: () => void; + toastsService: ToastsStart; +}) => { + const abortController = useAbortController(); + /* Represents the currently persisted state of the selected field. This should not be edited directly. */ + const [selectedField, setSelectedField] = useState(); + /* Whether changes are being persisted */ + const [isUnpromotingField, toggleIsUnpromotingField] = useToggle(false); + /* Holds errors from saving changes */ + const [error, setError] = useState(); + + const unpromoteField = useCallback(async () => { + if (!selectedField) { + return; + } + toggleIsUnpromotingField(true); + try { + await streamsRepositoryClient.fetch(`PUT /api/streams/{id}`, { + signal: abortController.signal, + params: { + path: { + id: definition.id, + }, + body: { + processing: definition.processing, + children: definition.children, + fields: definition.fields.filter((field) => field.name !== selectedField), + }, + }, + }); + toggleIsUnpromotingField(false); + setSelectedField(undefined); + refreshDefinition(); + refreshUnmappedFields(); + toastsService.addSuccess( + i18n.translate('xpack.streams.streamDetailSchemaEditorUnmapSuccessToast', { + defaultMessage: '{field} was successfully unmapped', + values: { field: selectedField }, + }) + ); + } catch (e) { + toggleIsUnpromotingField(false); + setError(e); + toastsService.addError(e, { + title: i18n.translate('xpack.streams.streamDetailSchemaEditorUnmapErrorToast', { + defaultMessage: 'Something went wrong unmapping the {field} field', + values: { field: selectedField }, + }), + }); + } + }, [ + abortController.signal, + definition.children, + definition.fields, + definition.id, + definition.processing, + refreshDefinition, + refreshUnmappedFields, + selectedField, + streamsRepositoryClient, + toastsService, + toggleIsUnpromotingField, + ]); + + return { selectedField, setSelectedField, isUnpromotingField, unpromoteField, error }; +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/index.tsx index 7d3e9322e8d4f..3ca410e74ffdb 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/index.tsx @@ -4,15 +4,138 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { StreamDefinition } from '@kbn/streams-plugin/common'; -import React from 'react'; - -export function StreamDetailSchemaEditor({ - definition: _definition, - refreshDefinition: _refreshDefinition, -}: { - definition?: StreamDefinition; +import React, { useEffect, useState } from 'react'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiProgress, + EuiSearchBar, + EuiPortal, + Query, +} from '@elastic/eui'; +import { ReadStreamDefinition } from '@kbn/streams-plugin/common'; +import { css } from '@emotion/css'; +import { useEditingState } from './hooks/use_editing_state'; +import { SchemaEditorFlyout } from './flyout'; +import { useKibana } from '../../hooks/use_kibana'; +import { useUnpromotingState } from './hooks/use_unpromoting_state'; +import { SimpleSearchBar } from './simple_search_bar'; +import { UnpromoteFieldModal } from './unpromote_field_modal'; +import { useStreamsAppFetch } from '../../hooks/use_streams_app_fetch'; +import { FieldsTableContainer } from './fields_table'; + +interface SchemaEditorProps { + definition?: ReadStreamDefinition; refreshDefinition: () => void; -}) { - return <>{'TODO'}; + isLoadingDefinition: boolean; +} + +export function StreamDetailSchemaEditor(props: SchemaEditorProps) { + if (!props.definition) return null; + return ; } + +const Content = ({ + definition, + refreshDefinition, + isLoadingDefinition, +}: Required) => { + const { + dependencies: { + start: { + streams: { streamsRepositoryClient }, + }, + }, + core: { + notifications: { toasts }, + }, + } = useKibana(); + + const [query, setQuery] = useState(EuiSearchBar.Query.MATCH_ALL); + + const { + value: unmappedFieldsValue, + loading: isLoadingUnmappedFields, + refresh: refreshUnmappedFields, + } = useStreamsAppFetch( + ({ signal }) => { + return streamsRepositoryClient.fetch('GET /api/streams/{id}/schema/unmapped_fields', { + signal, + params: { + path: { + id: definition.id, + }, + }, + }); + }, + [definition.id, streamsRepositoryClient] + ); + + const editingState = useEditingState({ + definition, + streamsRepositoryClient, + refreshDefinition, + refreshUnmappedFields, + toastsService: toasts, + }); + + const unpromotingState = useUnpromotingState({ + definition, + streamsRepositoryClient, + refreshDefinition, + refreshUnmappedFields, + toastsService: toasts, + }); + + const { reset } = editingState; + + // If the definition changes (e.g. navigating to parent stream), reset the entire editing state. + useEffect(() => { + reset(); + }, [definition.id, reset]); + + return ( + + + {isLoadingDefinition || isLoadingUnmappedFields ? ( + + + + ) : null} + + setQuery(nextQuery.query ?? undefined)} + /> + + + + + + {editingState.selectedField && ( + + )} + + {unpromotingState.selectedField && ( + + )} + + + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/simple_search_bar.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/simple_search_bar.tsx new file mode 100644 index 0000000000000..93e972c4b999a --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/simple_search_bar.tsx @@ -0,0 +1,30 @@ +/* + * 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 { EuiSearchBar, EuiSearchBarProps } from '@elastic/eui'; +import React from 'react'; + +/* Simple search bar that doesn't attempt to integrate with unified search */ +export const SimpleSearchBar = ({ + query, + onChange, +}: { + query: EuiSearchBarProps['query']; + onChange: Required['onChange']; +}) => { + return ( + { + onChange(nextQuery); + }} + /> + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/unpromote_field_modal.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/unpromote_field_modal.tsx new file mode 100644 index 0000000000000..59d66b44eec44 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_schema_editor/unpromote_field_modal.tsx @@ -0,0 +1,58 @@ +/* + * 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 { + EuiButton, + EuiModal, + EuiModalBody, + EuiModalFooter, + EuiModalHeader, + EuiModalHeaderTitle, + useGeneratedHtmlId, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { SchemaEditorUnpromotingState } from './hooks/use_unpromoting_state'; + +export const UnpromoteFieldModal = ({ + unpromotingState, +}: { + unpromotingState: SchemaEditorUnpromotingState; +}) => { + const { setSelectedField, selectedField, unpromoteField, isUnpromotingField } = unpromotingState; + + const modalTitleId = useGeneratedHtmlId(); + + if (!selectedField) return null; + + return ( + setSelectedField(undefined)}> + + {selectedField} + + + + {i18n.translate('xpack.streams.unpromoteFieldModal.unpromoteFieldWarning', { + defaultMessage: 'Are you sure you want to unmap this field from template mappings?', + })} + + + + unpromoteField()} + disabled={isUnpromotingField} + color="danger" + fill + > + {i18n.translate('xpack.streams.unpromoteFieldModal.unpromoteFieldButtonLabel', { + defaultMessage: 'Unmap field', + })} + + + + ); +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_view/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_view/index.tsx index b0a2307f7b2b7..9ebc5a92f54db 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_view/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_view/index.tsx @@ -29,7 +29,11 @@ export function StreamDetailView() { }, } = useKibana(); - const { value: streamEntity, refresh } = useStreamsAppFetch( + const { + value: streamEntity, + refresh, + loading, + } = useStreamsAppFetch( ({ signal }) => { return streamsRepositoryClient.fetch('GET /api/streams/{id}', { signal, @@ -58,7 +62,13 @@ export function StreamDetailView() { }, { name: 'management', - content: , + content: ( + + ), label: i18n.translate('xpack.streams.streamDetailView.managementTab', { defaultMessage: 'Management', }), diff --git a/x-pack/solutions/observability/plugins/streams_app/public/util/errors.ts b/x-pack/solutions/observability/plugins/streams_app/public/util/errors.ts new file mode 100644 index 0000000000000..e215ad1bb7f97 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/util/errors.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. + */ + +export const getFormattedError = (error?: Error) => { + if ( + error && + 'body' in error && + typeof error.body === 'object' && + !!error.body && + 'message' in error.body && + typeof error.body.message === 'string' + ) { + return new Error(error.body.message); + } +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/tsconfig.json b/x-pack/solutions/observability/plugins/streams_app/tsconfig.json index b1184bebbe2bd..7a77dae1922d0 100644 --- a/x-pack/solutions/observability/plugins/streams_app/tsconfig.json +++ b/x-pack/solutions/observability/plugins/streams_app/tsconfig.json @@ -36,5 +36,6 @@ "@kbn/code-editor", "@kbn/ui-theme", "@kbn/navigation-plugin", + "@kbn/core-notifications-browser", ] } diff --git a/x-pack/plugins/observability_solution/synthetics/.buildkite/pipelines/flaky.js b/x-pack/solutions/observability/plugins/synthetics/.buildkite/pipelines/flaky.js similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/.buildkite/pipelines/flaky.js rename to x-pack/solutions/observability/plugins/synthetics/.buildkite/pipelines/flaky.js diff --git a/x-pack/solutions/observability/plugins/synthetics/.buildkite/pipelines/flaky.sh b/x-pack/solutions/observability/plugins/synthetics/.buildkite/pipelines/flaky.sh new file mode 100755 index 0000000000000..9763f45c1101c --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/.buildkite/pipelines/flaky.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +UUID="$(cat /proc/sys/kernel/random/uuid)" +export UUID + +node x-pack/solutions/observability/plugins/synthetics/.buildkite/pipelines/flaky.js | buildkite-agent pipeline upload diff --git a/x-pack/solutions/observability/plugins/synthetics/README.md b/x-pack/solutions/observability/plugins/synthetics/README.md new file mode 100644 index 0000000000000..cde8956844597 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/README.md @@ -0,0 +1,121 @@ +# Uptime Monitoring + +## Purpose + +The purpose of this plugin is to provide users of Heartbeat more visibility of what's happening +in their infrastructure. + +## Layout + +There are three sections to the app, `common`, `public`, and `server`. + +### common + +Contains runtime types types, constants and a few other files. + +Notably, we use `io-ts`/`fp-ts` functions and types to help provide +additional runtime safety for our API requests/responses. + +### public + +We use Redux and associated tools for managing our app state. Components come in the usual `connect`ed and +presentational varieties. + +The `lib` directory controls bootstrapping code and adapter types. + +There is a `pages` directory; each view gets its own page component. + +The principal structure of the app is stored in `uptime_app.tsx`. + +### server + +The `lib` directory contains `adapters`, which are connections to external resources like Kibana +Server, Elasticsearch, etc. In addition, it contains domains, which are libraries that provide +functionality via adapters. + +The `requests` directory contains functions responsible for querying Elasticsearch and parsing its +responses. + +There's also a `rest_api` folder that defines the structure of the RESTful API endpoints. + +## Testing + +### Unit tests + +Documentation: https://www.elastic.co/guide/en/kibana/current/development-tests.html#_unit_testing + +``` +yarn test:jest x-pack/solutions/observability/plugins/synthetics +``` + +### Functional tests + +In one shell, from **~/kibana/x-pack**: +`node scripts/functional_tests_server.js` + +In another shell, from **~kibana/x-pack**: +`node ../scripts/functional_test_runner.js --grep="{TEST_NAME}"`. + +#### API tests + +If instead you need to run API tests, start up the test server and then in another shell, from **~kibana/x-pack**: +`node ../scripts/functional_test_runner.js --config test/api_integration/config.ts --grep="{TEST_NAME}"`. + +You can update snapshots by prefixing the runner command with `env UPDATE_UPTIME_FIXTURES=1` + +You can access the functional test server's Kibana at `http://localhost:5620/`. + +You can login with username `elastic` and password `changeme` by default. + +If you want to freeze a UI or API test you can include an async call like `await new Promise(r => setTimeout(r, 1000 * 60))` +to freeze the execution for 60 seconds if you need to click around or check things in the state that is loaded. + +#### Running --ssl tests + +Some of our tests require there to be an SSL connection between Kibana and Elasticsearch. + +We can run these tests like described above, but with some special config. + +`node scripts/functional_tests_server.js --config=test/functional_with_es_ssl/config.ts` + +`node scripts/functional_test_runner.js --config=test/functional_with_es_ssl/config.ts` + +#### Running accessibility tests + +We maintain a suite of Accessibility tests (you may see them referred to elsewhere as `a11y` tests). + +These tests render each of our pages and ensure that the inputs and other elements contain the +attributes necessary to ensure all users are able to make use of Kibana (for example, users relying +on screen readers). + +The commands for running these tests are very similar to the other functional tests described above. + +From the `~/x-pack` directory: + +Start the server: `node scripts/functional_tests_server --config test/accessibility/config.ts` + +Run the uptime `a11y` tests: `node scripts/functional_test_runner.js --config test/accessibility/config.ts --grep=uptime` + + +## Deployment agnostic API Integration Tests +The Synthetics tests are located under `x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics` folder. In order to run the SLO tests of your interest, you can grep accordingly. Use the commands below to run all SLO tests (`grep=SyntheticsAPITests`) on stateful or serverless. + +### Stateful + +``` +# start server +node scripts/functional_tests_server --config x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.stateful.config.ts + +# run tests +node scripts/functional_test_runner --config x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.stateful.config.ts --grep=SyntheticsAPITests +``` + +### Serverless + +``` +# start server +node scripts/functional_tests_server --config x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.serverless.config.ts + +# run tests +node scripts/functional_test_runner --config x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.serverless.config.ts --grep=SyntheticsAPITests +``` diff --git a/x-pack/plugins/observability_solution/synthetics/__mocks__/@kbn/code-editor/index.ts b/x-pack/solutions/observability/plugins/synthetics/__mocks__/@kbn/code-editor/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/__mocks__/@kbn/code-editor/index.ts rename to x-pack/solutions/observability/plugins/synthetics/__mocks__/@kbn/code-editor/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/capabilities.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/capabilities.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/capabilities.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/capabilities.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/client_defaults.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/client_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/client_defaults.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/client_defaults.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/context_defaults.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/context_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/context_defaults.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/context_defaults.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/data_filters.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/data_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/data_filters.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/data_filters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/data_test_subjects.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/data_test_subjects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/data_test_subjects.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/data_test_subjects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/monitor_defaults.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/monitor_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/monitor_defaults.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/monitor_defaults.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/monitor_management.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/monitor_management.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/monitor_management.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/monitor_management.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/plugin.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/plugin.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/plugin.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/settings_defaults.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/settings_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/settings_defaults.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/settings_defaults.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/client_defaults.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics/client_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/client_defaults.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics/client_defaults.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/rest_api.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics/rest_api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/synthetics/rest_api.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics/rest_api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/synthetics_alerts.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/synthetics_alerts.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/synthetics_alerts.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/constants/ui.ts b/x-pack/solutions/observability/plugins/synthetics/common/constants/ui.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/constants/ui.ts rename to x-pack/solutions/observability/plugins/synthetics/common/constants/ui.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/field_names.ts b/x-pack/solutions/observability/plugins/synthetics/common/field_names.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/field_names.ts rename to x-pack/solutions/observability/plugins/synthetics/common/field_names.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/formatters/format_space_name.ts b/x-pack/solutions/observability/plugins/synthetics/common/formatters/format_space_name.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/formatters/format_space_name.ts rename to x-pack/solutions/observability/plugins/synthetics/common/formatters/format_space_name.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/formatters/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/formatters/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/formatters/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/formatters/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/lib/combine_filters_and_user_search.test.ts b/x-pack/solutions/observability/plugins/synthetics/common/lib/combine_filters_and_user_search.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/lib/combine_filters_and_user_search.test.ts rename to x-pack/solutions/observability/plugins/synthetics/common/lib/combine_filters_and_user_search.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/lib/combine_filters_and_user_search.ts b/x-pack/solutions/observability/plugins/synthetics/common/lib/combine_filters_and_user_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/lib/combine_filters_and_user_search.ts rename to x-pack/solutions/observability/plugins/synthetics/common/lib/combine_filters_and_user_search.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/lib/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/lib/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/lib/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/lib/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/lib/schedule_to_time.test.ts b/x-pack/solutions/observability/plugins/synthetics/common/lib/schedule_to_time.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/lib/schedule_to_time.test.ts rename to x-pack/solutions/observability/plugins/synthetics/common/lib/schedule_to_time.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/lib/schedule_to_time.ts b/x-pack/solutions/observability/plugins/synthetics/common/lib/schedule_to_time.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/lib/schedule_to_time.ts rename to x-pack/solutions/observability/plugins/synthetics/common/lib/schedule_to_time.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/lib/stringify_kueries.test.ts b/x-pack/solutions/observability/plugins/synthetics/common/lib/stringify_kueries.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/lib/stringify_kueries.test.ts rename to x-pack/solutions/observability/plugins/synthetics/common/lib/stringify_kueries.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/lib/stringify_kueries.ts b/x-pack/solutions/observability/plugins/synthetics/common/lib/stringify_kueries.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/lib/stringify_kueries.ts rename to x-pack/solutions/observability/plugins/synthetics/common/lib/stringify_kueries.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/requests/get_certs_request_body.ts b/x-pack/solutions/observability/plugins/synthetics/common/requests/get_certs_request_body.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/requests/get_certs_request_body.ts rename to x-pack/solutions/observability/plugins/synthetics/common/requests/get_certs_request_body.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/alert_actions.test.ts b/x-pack/solutions/observability/plugins/synthetics/common/rules/alert_actions.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/rules/alert_actions.test.ts rename to x-pack/solutions/observability/plugins/synthetics/common/rules/alert_actions.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/alert_actions.ts b/x-pack/solutions/observability/plugins/synthetics/common/rules/alert_actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/rules/alert_actions.ts rename to x-pack/solutions/observability/plugins/synthetics/common/rules/alert_actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/status_rule.test.ts b/x-pack/solutions/observability/plugins/synthetics/common/rules/status_rule.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/rules/status_rule.test.ts rename to x-pack/solutions/observability/plugins/synthetics/common/rules/status_rule.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/status_rule.ts b/x-pack/solutions/observability/plugins/synthetics/common/rules/status_rule.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/rules/status_rule.ts rename to x-pack/solutions/observability/plugins/synthetics/common/rules/status_rule.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/synthetics/translations.ts b/x-pack/solutions/observability/plugins/synthetics/common/rules/synthetics/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/rules/synthetics/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/common/rules/synthetics/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/synthetics_rule_field_map.ts b/x-pack/solutions/observability/plugins/synthetics/common/rules/synthetics_rule_field_map.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/rules/synthetics_rule_field_map.ts rename to x-pack/solutions/observability/plugins/synthetics/common/rules/synthetics_rule_field_map.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/rules/types.ts b/x-pack/solutions/observability/plugins/synthetics/common/rules/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/rules/types.ts rename to x-pack/solutions/observability/plugins/synthetics/common/rules/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/alert_rules/common.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alert_rules/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/alert_rules/common.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alert_rules/common.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/alerts/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alerts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/alerts/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alerts/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/alerts/status_check.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alerts/status_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/alerts/status_check.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alerts/status_check.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/alerts/tls.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alerts/tls.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/alerts/tls.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/alerts/tls.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/certs.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/certs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/certs.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/certs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/common.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/common.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/common.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/dynamic_settings.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor/state.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor/state.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor/state.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor/state.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/alert_config.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/alert_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/alert_config.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/alert_config.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/alert_config_schema.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/alert_config_schema.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/alert_config_schema.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/alert_config_schema.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/config_key.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/config_key.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/config_key.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/config_key.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/filters.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/filters.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/filters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/locations.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/locations.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_configs.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_configs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_configs.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_configs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_meta_data.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_meta_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_meta_data.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_meta_data.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_types.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_types.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_types_project.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_types_project.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/monitor_types_project.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/monitor_types_project.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/sort_field.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/sort_field.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/sort_field.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/sort_field.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/state.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/state.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/state.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/state.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/synthetics_overview_status.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/synthetics_overview_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/synthetics_overview_status.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/synthetics_overview_status.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/synthetics_params.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/synthetics_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/synthetics_params.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/synthetics_params.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/synthetics_private_locations.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/synthetics_private_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/monitor_management/synthetics_private_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/monitor_management/synthetics_private_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/network_events.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/network_events.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/network_events.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/error_state.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/error_state.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/error_state.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/error_state.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/histogram.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/histogram.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/histogram.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/histogram.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/observer.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/observer.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/observer.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/observer.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/ping.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/ping.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/ping.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/synthetics.test.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/synthetics.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/synthetics.test.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/synthetics.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/synthetics.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/synthetics.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/ping/synthetics.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/ping/synthetics.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/snapshot/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/snapshot/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/snapshot/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/snapshot/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/snapshot/snapshot_count.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/snapshot/snapshot_count.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/snapshot/snapshot_count.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/snapshot/snapshot_count.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/runtime_types/synthetics_service_api_key.ts b/x-pack/solutions/observability/plugins/synthetics/common/runtime_types/synthetics_service_api_key.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/runtime_types/synthetics_service_api_key.ts rename to x-pack/solutions/observability/plugins/synthetics/common/runtime_types/synthetics_service_api_key.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/saved_objects/private_locations.ts b/x-pack/solutions/observability/plugins/synthetics/common/saved_objects/private_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/saved_objects/private_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/common/saved_objects/private_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/translations/translations.ts b/x-pack/solutions/observability/plugins/synthetics/common/translations/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/translations/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/common/translations/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/types/default_alerts.ts b/x-pack/solutions/observability/plugins/synthetics/common/types/default_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/types/default_alerts.ts rename to x-pack/solutions/observability/plugins/synthetics/common/types/default_alerts.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/types/index.ts b/x-pack/solutions/observability/plugins/synthetics/common/types/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/types/index.ts rename to x-pack/solutions/observability/plugins/synthetics/common/types/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/types/monitor_validation.ts b/x-pack/solutions/observability/plugins/synthetics/common/types/monitor_validation.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/types/monitor_validation.ts rename to x-pack/solutions/observability/plugins/synthetics/common/types/monitor_validation.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/types/overview.ts b/x-pack/solutions/observability/plugins/synthetics/common/types/overview.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/types/overview.ts rename to x-pack/solutions/observability/plugins/synthetics/common/types/overview.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/types/saved_objects.ts b/x-pack/solutions/observability/plugins/synthetics/common/types/saved_objects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/types/saved_objects.ts rename to x-pack/solutions/observability/plugins/synthetics/common/types/saved_objects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/types/synthetics_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/common/types/synthetics_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/types/synthetics_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/common/types/synthetics_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/utils/as_mutable_array.ts b/x-pack/solutions/observability/plugins/synthetics/common/utils/as_mutable_array.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/utils/as_mutable_array.ts rename to x-pack/solutions/observability/plugins/synthetics/common/utils/as_mutable_array.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/utils/es_search.ts b/x-pack/solutions/observability/plugins/synthetics/common/utils/es_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/utils/es_search.ts rename to x-pack/solutions/observability/plugins/synthetics/common/utils/es_search.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/utils/get_synthetics_monitor_url.ts b/x-pack/solutions/observability/plugins/synthetics/common/utils/get_synthetics_monitor_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/utils/get_synthetics_monitor_url.ts rename to x-pack/solutions/observability/plugins/synthetics/common/utils/get_synthetics_monitor_url.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/utils/location_formatter.ts b/x-pack/solutions/observability/plugins/synthetics/common/utils/location_formatter.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/utils/location_formatter.ts rename to x-pack/solutions/observability/plugins/synthetics/common/utils/location_formatter.ts diff --git a/x-pack/plugins/observability_solution/synthetics/common/utils/t_enum.ts b/x-pack/solutions/observability/plugins/synthetics/common/utils/t_enum.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/common/utils/t_enum.ts rename to x-pack/solutions/observability/plugins/synthetics/common/utils/t_enum.ts diff --git a/x-pack/solutions/observability/plugins/synthetics/e2e/README.md b/x-pack/solutions/observability/plugins/synthetics/e2e/README.md new file mode 100644 index 0000000000000..e3be14c9aced8 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/README.md @@ -0,0 +1,32 @@ +## How to run these tests + +These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated +script for standing up the test server. + +### Start the server + +From `~/x-pack/solutions/observability/plugins/synthetics/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you +with an example run command when it finishes. + +### Run the tests + +From the same directory you can now run `node e2e.js --runner`. + +In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. + + +## Uptime App Tests + +These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated +script for standing up the test server. + +### Start the server + +From `~/x-pack/solutions/observability/plugins/synthetics/scripts`, run `node uptime_e2e.js --server`. Wait for the server to startup. It will provide you +with an example run command when it finishes. + +### Run the tests + +From the same directory you can now run `node node uptime_e2e.js --runner`. + +In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/solutions/observability/plugins/synthetics/e2e/config.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/config.ts new file mode 100644 index 0000000000000..ff04a6d7bf166 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/config.ts @@ -0,0 +1,84 @@ +/* + * 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 { FtrConfigProviderContext } from '@kbn/test'; +import { CA_CERT_PATH } from '@kbn/dev-utils'; +import { get } from 'lodash'; +import { commonFunctionalServices } from '@kbn/ftr-common-functional-services'; +import { commonFunctionalUIServices } from '@kbn/ftr-common-functional-ui-services'; +import { readKibanaConfig } from '@kbn/observability-synthetics-test-data'; + +const MANIFEST_KEY = 'xpack.uptime.service.manifestUrl'; +const SERVICE_PASSWORD = 'xpack.uptime.service.password'; +const SERVICE_USERNAME = 'xpack.uptime.service.username'; + +async function config({ readConfigFile }: FtrConfigProviderContext) { + const kibanaCommonTestsConfig = await readConfigFile( + require.resolve('@kbn/test-suites-src/common/config') + ); + const xpackFunctionalTestsConfig = await readConfigFile( + require.resolve('@kbn/test-suites-xpack/functional/config.base') + ); + + const kibanaConfig = readKibanaConfig(); + + const manifestUrl = process.env.SYNTHETICS_SERVICE_MANIFEST ?? get(kibanaConfig, MANIFEST_KEY); + const serviceUsername = + process.env.SYNTHETICS_SERVICE_USERNAME ?? get(kibanaConfig, SERVICE_USERNAME); + const servicePassword = + process.env.SYNTHETICS_SERVICE_PASSWORD ?? get(kibanaConfig, SERVICE_PASSWORD); + + return { + ...kibanaCommonTestsConfig.getAll(), + + services: { + ...commonFunctionalServices, + ...commonFunctionalUIServices, + }, + + esTestCluster: { + ...xpackFunctionalTestsConfig.get('esTestCluster'), + serverArgs: [ + ...xpackFunctionalTestsConfig.get('esTestCluster.serverArgs'), + // define custom es server here + // API Keys is enabled at the top level + 'xpack.security.enabled=true', + 'xpack.ml.enabled=false', + ], + }, + + kbnTestServer: { + ...xpackFunctionalTestsConfig.get('kbnTestServer'), + sourceArgs: process.env.WATCH_ENABLED + ? [] + : [...xpackFunctionalTestsConfig.get('kbnTestServer.sourceArgs'), '--no-watch'], + serverArgs: [ + ...xpackFunctionalTestsConfig.get('kbnTestServer.serverArgs'), + '--csp.strict=false', + '--home.disableWelcomeScreen=true', + '--csp.warnLegacyBrowsers=false', + // define custom kibana server args here + `--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`, + // `--elasticsearch.ignoreVersionMismatch=${process.env.CI ? 'false' : 'true'}`, + `--elasticsearch.username=kibana_system`, + `--elasticsearch.password=changeme`, + '--xpack.reporting.enabled=false', + `--xpack.uptime.service.manifestUrl=${manifestUrl}`, + `--xpack.uptime.service.username=${ + process.env.SYNTHETICS_REMOTE_ENABLED + ? serviceUsername + : 'localKibanaIntegrationTestsUser' + }`, + `--xpack.uptime.service.password=${servicePassword}`, + '--uiSettings.overrides.observability:enableLegacyUptimeApp=true', + ], + }, + }; +} + +// eslint-disable-next-line import/no-default-export +export default config; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/browser/data.json.gz b/x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/browser/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/browser/data.json.gz rename to x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/browser/data.json.gz diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/browser/mappings.json b/x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/browser/mappings.json similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/browser/mappings.json rename to x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/browser/mappings.json diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz b/x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz rename to x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/full_heartbeat/mappings.json b/x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/full_heartbeat/mappings.json similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/full_heartbeat/mappings.json rename to x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/full_heartbeat/mappings.json diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/synthetics_data/data.json.gz b/x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/synthetics_data/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/fixtures/es_archiver/synthetics_data/data.json.gz rename to x-pack/solutions/observability/plugins/synthetics/e2e/fixtures/es_archiver/synthetics_data/data.json.gz diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/make_checks.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/helpers/make_checks.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/helpers/make_checks.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/helpers/make_checks.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/make_ping.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/helpers/make_ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/helpers/make_ping.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/helpers/make_ping.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/helpers/make_tls.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/helpers/make_tls.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/helpers/make_tls.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/helpers/make_tls.ts diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/utils.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/helpers/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/helpers/utils.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/helpers/utils.ts diff --git a/x-pack/solutions/observability/plugins/synthetics/e2e/index.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/index.ts new file mode 100644 index 0000000000000..faec8474541d9 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/index.ts @@ -0,0 +1,9 @@ +/* + * 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 { loginPageProvider } from './page_objects/login'; +export { utilsPageProvider } from './page_objects/utils'; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/kibana.jsonc b/x-pack/solutions/observability/plugins/synthetics/e2e/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/kibana.jsonc rename to x-pack/solutions/observability/plugins/synthetics/e2e/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx b/x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/page_objects/login.tsx rename to x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/login.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/page_objects/utils.tsx b/x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/utils.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/page_objects/utils.tsx rename to x-pack/solutions/observability/plugins/synthetics/e2e/page_objects/utils.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/add_monitor.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/add_monitor.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/add_monitor.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/add_monitor.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alert_rules/custom_status_alert.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alert_rules/custom_status_alert.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alert_rules/custom_status_alert.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alert_rules/custom_status_alert.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alert_rules/default_status_alert.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alert_rules/default_status_alert.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alert_rules/default_status_alert.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alert_rules/default_status_alert.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alert_rules/sample_docs/sample_docs.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alert_rules/sample_docs/sample_docs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alert_rules/sample_docs/sample_docs.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alert_rules/sample_docs/sample_docs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alerting_default.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alerting_default.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/alerting_default.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/alerting_default.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/data_retention.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/data_retention.journey.ts similarity index 98% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/data_retention.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/data_retention.journey.ts index 1dd2fe3a44aed..4640e2adf9eee 100644 --- a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/data_retention.journey.ts +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/data_retention.journey.ts @@ -7,7 +7,7 @@ import { journey, step, expect, Page } from '@elastic/synthetics'; import { RetryService } from '@kbn/ftr-common-functional-services'; -import { recordVideo } from '../../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { syntheticsAppPageProvider } from '../page_objects/synthetics_app'; import { byTestId, assertText } from '../../helpers/utils'; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/detail_flyout.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/detail_flyout.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/detail_flyout.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/detail_flyout.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/getting_started.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/getting_started.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/getting_started.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/getting_started.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/global_parameters.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/global_parameters.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/global_parameters.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/global_parameters.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/index.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/index.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/management_list.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/management_list.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/management_list.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/management_list.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/monitor_details_page/monitor_summary.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/monitor_details_page/monitor_summary.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/monitor_details_page/monitor_summary.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/monitor_details_page/monitor_summary.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/monitor_form_validation.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/monitor_form_validation.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/monitor_form_validation.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/monitor_form_validation.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/monitor_selector.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/monitor_selector.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/monitor_selector.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/monitor_selector.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/overview_scrolling.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/overview_scrolling.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/overview_scrolling.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/overview_scrolling.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/overview_search.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/overview_search.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/overview_search.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/overview_search.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/overview_sorting.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/overview_sorting.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/overview_sorting.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/overview_sorting.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/private_locations.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/private_locations.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/private_locations.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/private_locations.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts similarity index 97% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts index 44cfcbebc6616..2c1a873b0db53 100644 --- a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/project_api_keys.journey.ts @@ -7,7 +7,7 @@ import { journey, step, expect, before } from '@elastic/synthetics'; import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; -import { recordVideo } from '../../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; journey('ProjectAPIKeys', async ({ page }) => { recordVideo(page); diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/project_monitor_read_only.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/project_monitor_read_only.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/project_monitor_read_only.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/project_monitor_read_only.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/add_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/add_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/add_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/add_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/add_monitor_project.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/add_monitor_project.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/add_monitor_project.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/add_monitor_project.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/data/browser_docs.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/data/browser_docs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/data/browser_docs.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/data/browser_docs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/settings.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/settings.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/synthetics_services.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/synthetics_services.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/services/synthetics_services.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/services/synthetics_services.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/step_details.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/step_details.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/step_details.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/step_details.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/test_now_mode.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/test_now_mode.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/test_now_mode.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/test_now_mode.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/test_run_details.journey.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/test_run_details.journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/journeys/test_run_details.journey.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/journeys/test_run_details.journey.ts diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/page_objects/synthetics_app.tsx b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/page_objects/synthetics_app.tsx similarity index 99% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/page_objects/synthetics_app.tsx rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/page_objects/synthetics_app.tsx index f9eb448615de8..2f3d0099192f4 100644 --- a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/page_objects/synthetics_app.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/page_objects/synthetics_app.tsx @@ -7,7 +7,7 @@ import { expect, Page } from '@elastic/synthetics'; import { RetryService } from '@kbn/ftr-common-functional-services'; import { FormMonitorType } from '@kbn/synthetics-plugin/common/runtime_types/monitor_management'; -import { recordVideo } from '../../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { loginPageProvider } from '../../page_objects/login'; import { utilsPageProvider } from '../../page_objects/utils'; diff --git a/x-pack/plugins/observability_solution/synthetics/e2e/synthetics/page_objects/utils.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/page_objects/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/e2e/synthetics/page_objects/utils.ts rename to x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/page_objects/utils.ts diff --git a/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/synthetics_run.ts b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/synthetics_run.ts new file mode 100644 index 0000000000000..4f097c6926872 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/synthetics/synthetics_run.ts @@ -0,0 +1,43 @@ +/* + * 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 { SyntheticsRunner, argv } from '@kbn/observability-synthetics-test-data'; +import { FtrConfigProviderContext } from '@kbn/test'; +import path from 'path'; + +const { headless, grep, bail: pauseOnError } = argv; + +async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { + const kibanaConfig = await readConfigFile(require.resolve('../config.ts')); + return { + ...kibanaConfig.getAll(), + testRunner: async ({ getService }: any) => { + const syntheticsRunner = new SyntheticsRunner(getService, { + headless, + match: grep, + pauseOnError, + }); + + await syntheticsRunner.setup(); + const fixturesDir = path.join(__dirname, '../fixtures/es_archiver/'); + + await syntheticsRunner.loadTestData(fixturesDir, [ + 'synthetics_data', + 'full_heartbeat', + 'browser', + ]); + + await syntheticsRunner.loadTestFiles(async () => { + require('./journeys'); + }); + + await syntheticsRunner.run(); + }, + }; +} + +// eslint-disable-next-line import/no-default-export +export default runE2ETests; diff --git a/x-pack/solutions/observability/plugins/synthetics/e2e/tsconfig.json b/x-pack/solutions/observability/plugins/synthetics/e2e/tsconfig.json new file mode 100644 index 0000000000000..e7607627a625d --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/e2e/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "exclude": ["tmp", "target/**/*"], + "include": ["**/*"], + "compilerOptions": { + "outDir": "target/types", + "types": ["node"], + "isolatedModules": false + }, + "kbn_references": [ + "@kbn/test", + "@kbn/dev-utils", + "@kbn/ux-plugin/e2e", + "@kbn/ftr-common-functional-services", + "@kbn/synthetics-plugin", + "@kbn/observability-synthetics-test-data", + "@kbn/ftr-common-functional-ui-services" + ] +} diff --git a/x-pack/solutions/observability/plugins/synthetics/jest.config.js b/x-pack/solutions/observability/plugins/synthetics/jest.config.js new file mode 100644 index 0000000000000..39f032812a29f --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/plugins/synthetics'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/observability/plugins/synthetics', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/synthetics/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/observability_solution/synthetics/kibana.jsonc b/x-pack/solutions/observability/plugins/synthetics/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/kibana.jsonc rename to x-pack/solutions/observability/plugins/synthetics/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/field_selector.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/field_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/field_selector.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/field_selector.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/monitor_configuration.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/monitor_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/monitor_configuration.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/monitor_configuration.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/monitor_filters_form.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/monitor_filters_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/monitor_filters_form.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/monitor_filters_form.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/monitors_open_configuration.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/monitors_open_configuration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/monitors_open_configuration.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/monitors_open_configuration.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/optional_text.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/optional_text.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/optional_text.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/optional_text.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/show_selected_filters.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/show_selected_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/show_selected_filters.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/show_selected_filters.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/utils.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/common/utils.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/common/utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/constants.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/constants.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/constants.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/hooks/use_fetch_synthetics_suggestions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/hooks/use_fetch_synthetics_suggestions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/hooks/use_fetch_synthetics_suggestions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/hooks/use_fetch_synthetics_suggestions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/monitors_embeddable_factory.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/monitors_embeddable_factory.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/monitors_embeddable_factory.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/monitors_embeddable_factory.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/monitors_grid_component.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/monitors_grid_component.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/monitors_grid_component.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/monitors_grid_component.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/redux_store.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/redux_store.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/redux_store.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/redux_store.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/types.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/monitors_overview/types.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/monitors_overview/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/register_embeddables.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/register_embeddables.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/register_embeddables.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/register_embeddables.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/stats_overview/redux_store.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/stats_overview/redux_store.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/stats_overview/redux_store.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/stats_overview/redux_store.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/stats_overview/stats_overview_component.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/stats_overview/stats_overview_component.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/stats_overview/stats_overview_component.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/stats_overview/stats_overview_component.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/stats_overview/stats_overview_embeddable_factory.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/stats_overview/stats_overview_embeddable_factory.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/stats_overview/stats_overview_embeddable_factory.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/stats_overview/stats_overview_embeddable_factory.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/synthetics_embeddable_context.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/synthetics_embeddable_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/synthetics_embeddable_context.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/synthetics_embeddable_context.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/compatibility_check.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/compatibility_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/compatibility_check.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/compatibility_check.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/create_monitors_overview_panel_action.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/create_monitors_overview_panel_action.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/create_monitors_overview_panel_action.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/create_monitors_overview_panel_action.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/create_stats_overview_panel_action.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/create_stats_overview_panel_action.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/create_stats_overview_panel_action.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/create_stats_overview_panel_action.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/register_ui_actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/register_ui_actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/embeddables/ui_actions/register_ui_actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/embeddables/ui_actions/register_ui_actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/locators/edit_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/locators/edit_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/locators/edit_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/locators/edit_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/locators/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/locators/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/locators/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/locators/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/locators/monitor_detail.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/locators/monitor_detail.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/locators/monitor_detail.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/locators/monitor_detail.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/locators/settings.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/locators/settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/locators/settings.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/locators/settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/alert_tls.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/alert_tls.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/alert_tls.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/alert_tls.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/condition_locations_value.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/condition_locations_value.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/condition_locations_value.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/condition_locations_value.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/condition_window_value.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/condition_window_value.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/condition_window_value.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/condition_window_value.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_filters.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_filters.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_filters.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_popover_expression.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_popover_expression.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_popover_expression.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_popover_expression.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_selector.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_selector.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_selector.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_selector.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_selector.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/field_selector.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/field_selector.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/fields.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/fields.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/fields.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/fields.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/for_the_last_expression.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/for_the_last_expression.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/for_the_last_expression.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/for_the_last_expression.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/group_by_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/group_by_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/group_by_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/group_by_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/popover_expression.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/popover_expression.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/common/popover_expression.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/common/popover_expression.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/hooks/translations.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/hooks/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/hooks/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/hooks/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/hooks/use_fetch_synthetics_suggestions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/hooks/use_fetch_synthetics_suggestions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/hooks/use_fetch_synthetics_suggestions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/hooks/use_fetch_synthetics_suggestions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/hooks/use_synthetics_rules.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/hooks/use_synthetics_rules.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/hooks/use_synthetics_rules.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/hooks/use_synthetics_rules.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/query_bar.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/query_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/query_bar.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/query_bar.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/rule_name_with_loading.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/rule_name_with_loading.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/rule_name_with_loading.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/rule_name_with_loading.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/status_rule_expression.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/status_rule_expression.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/status_rule_expression.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/status_rule_expression.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/status_rule_ui.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/status_rule_ui.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/status_rule_ui.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/status_rule_ui.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/tls_rule_ui.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/tls_rule_ui.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/tls_rule_ui.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/tls_rule_ui.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/toggle_alert_flyout_button.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/toggle_alert_flyout_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/alerts/toggle_alert_flyout_button.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/alerts/toggle_alert_flyout_button.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_monitors.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_monitors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_monitors.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_monitors.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_refresh_btn.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_refresh_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_refresh_btn.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_refresh_btn.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_search.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_search.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_search.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_search.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/cert_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/cert_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificate_title.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificate_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificate_title.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificate_title.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates_list.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates_list.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/certificates_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/fingerprint_col.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/monitor_page_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/monitor_page_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/monitor_page_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/monitor_page_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/translations.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/use_cert_search.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/use_cert_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/use_cert_search.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/use_cert_search.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/use_cert_status.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/use_cert_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/certificates/use_cert_status.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/certificates/use_cert_status.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/alerting_callout/alerting_callout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/add_to_dashboard.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/add_to_dashboard.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/add_to_dashboard.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/add_to_dashboard.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/auto_refresh_button.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/auto_refresh_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/auto_refresh_button.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/auto_refresh_button.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/embeddable_panel_wrapper.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/embeddable_panel_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/embeddable_panel_wrapper.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/embeddable_panel_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/filter_status_button.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/filter_status_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/filter_status_button.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/filter_status_button.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/last_refreshed.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/last_refreshed.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/last_refreshed.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/last_refreshed.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/location_status_badges.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/location_status_badges.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/location_status_badges.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/location_status_badges.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_details_panel.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_details_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_details_panel.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_details_panel.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx similarity index 99% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx index 90d30606b860d..b09d82ab03c5f 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_inspect.tsx @@ -72,7 +72,6 @@ const MonitorInspect = ({ isValid, monitorFields }: InspectorProps) => { } // FIXME: Dario couldn't find a solution for monitorFields // which is not memoized downstream - // eslint-disable-next-line react-hooks/exhaustive-deps }, [isInspecting, hideParams]); let flyout; diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_location_select.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_location_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_location_select.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_location_select.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_type_badge.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_type_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/monitor_type_badge.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/monitor_type_badge.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/page_loader.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/page_loader.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/page_loader.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/page_loader.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/panel_with_title.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/panel_with_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/panel_with_title.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/panel_with_title.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/permissions.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/permissions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/permissions.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/permissions.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/refresh_button.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/refresh_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/refresh_button.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/refresh_button.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/table_title.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/table_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/table_title.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/table_title.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/thershold_indicator.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/thershold_indicator.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/thershold_indicator.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/thershold_indicator.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/use_std_error_logs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/use_std_error_logs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/use_std_error_logs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/use_std_error_logs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/view_document.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/view_document.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/components/view_document.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/components/view_document.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/date_picker/synthetics_date_picker.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/action_menu.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/action_menu.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/action_menu_content.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/action_menu_content.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/action_menu_content.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/inspector_header_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/inspector_header_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/header/inspector_header_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/header/inspector_header_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/add_monitor.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/add_monitor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/add_monitor.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/add_monitor.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/error_details_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/error_details_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/error_details_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/error_details_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/manage_rules_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/manage_rules_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/manage_rules_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/manage_rules_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/step_details_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/step_details_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/step_details_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/step_details_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/test_details_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/test_details_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/test_details_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/test_details_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/view_alerts.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/view_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/links/view_alerts.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/links/view_alerts.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/browser_steps_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/journey_screenshot_preview.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx similarity index 97% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx index 25f0ed0843472..a0e6d2ca6d29f 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/result_details_successful.tsx @@ -39,7 +39,6 @@ export const ResultDetailsSuccessful = ({ }); // FIXME: Dario is not sure what step._id is being used for, // so he'll leave it in place - // eslint-disable-next-line react-hooks/exhaustive-deps }, [timestamp, monitorId, stepIndex, location, step._id]); const { currentStep } = useJourneySteps( diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/single_ping_result.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/single_ping_result.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/single_ping_result.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/single_ping_result.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/status_badge.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/status_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/status_badge.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/status_badge.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/step_duration_text.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/step_duration_text.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/step_duration_text.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/step_duration_text.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/use_retrieve_step_image.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/use_retrieve_step_image.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/monitor_test_result/use_retrieve_step_image.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/monitor_test_result/use_retrieve_step_image.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/page_template/synthetics_page_template.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/page_template/synthetics_page_template.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/page_template/synthetics_page_template.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/page_template/synthetics_page_template.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_events.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/react_router_helpers/link_for_eui.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/empty_thumbnail.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_last_screenshot.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_last_screenshot.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_last_screenshot.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_last_screenshot.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_screenshot_dialog.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/journey_step_screenshot_container.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_image.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_image.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_image.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_image.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_size.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_size.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_size.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/screenshot/screenshot_size.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/common/step_field_trend/step_field_trend.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/error_duration.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/error_duration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/error_duration.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/error_duration.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/error_started_at.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/error_started_at.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/error_started_at.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/error_started_at.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/error_timeline.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/error_timeline.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/error_timeline.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/error_timeline.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/failed_tests_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/failed_tests_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/failed_tests_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/failed_tests_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/resolved_at.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/resolved_at.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/components/resolved_at.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/components/resolved_at.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/error_details_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/error_details_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/error_details_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/error_details_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_details_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_details_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_details_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_details_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_failed_tests.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_failed_tests.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_failed_tests.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_error_failed_tests.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_find_my_killer_state.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_find_my_killer_state.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_find_my_killer_state.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_find_my_killer_state.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_step_details.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_step_details.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/hooks/use_step_details.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/hooks/use_step_details.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/route_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/route_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/error_details/route_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/error_details/route_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/form_fields/service_locations.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/form_fields/service_locations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/form_fields/service_locations.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/form_fields/service_locations.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/getting_started_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/simple_monitor_form.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/advanced/index.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/advanced/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/advanced/index.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/advanced/index.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/constants.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/constants.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/constants.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/edit_monitor_not_found.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/edit_monitor_not_found.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/edit_monitor_not_found.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/edit_monitor_not_found.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/code_editor.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/code_editor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/code_editor.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/code_editor.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/combo_box.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/header_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/index_response_body_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/key_value_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/monitor_type_radio_group.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/monitor_type_radio_group.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/monitor_type_radio_group.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/monitor_type_radio_group.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/optional_label.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/optional_label.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/optional_label.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/optional_label.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/request_body_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/script_recorder_fields.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/source_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/connection_profile.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/connection_profile.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/connection_profile.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/connection_profile.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_config_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_disabled_callout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_disabled_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_disabled_callout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_disabled_callout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_download_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_download_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_download_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_download_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_exceeded_callout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_exceeded_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_exceeded_callout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_exceeded_callout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_fields.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_latency_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_latency_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_latency_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_latency_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_upload_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_upload_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_upload_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/throttling_upload_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/use_connection_profiles.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/use_connection_profiles.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/use_connection_profiles.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/throttling/use_connection_profiles.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/uploader.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/uploader.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/uploader.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/fields/uploader.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/controlled_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/controlled_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/controlled_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/controlled_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/defaults.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/disclaimer.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_wrappers.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_wrappers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_wrappers.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/field_wrappers.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/form_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/form_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/form_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/form_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/formatter.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/index.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/index.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/index.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/submit.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/submit.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/submit.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/submit.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/validation.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_clone_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_clone_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_clone_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_clone_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_is_edit_flow.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_is_edit_flow.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_is_edit_flow.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_is_edit_flow.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_not_found.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_not_found.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_not_found.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_not_found.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx similarity index 98% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx index 4bd8b503a247c..b9359b0357844 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx @@ -44,7 +44,6 @@ export const useMonitorSave = ({ monitorData }: { monitorData?: SyntheticsMonito } // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [monitorData]); useEffect(() => { diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_validate_field.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_validate_field.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_validate_field.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_validate_field.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/locations_loading_error.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/locations_loading_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/locations_loading_error.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/locations_loading_error.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_add_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_details_portal.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_details_portal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_details_portal.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_details_portal.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/monitor_edit_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/portals.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/portals.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/portals.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/portals.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/can_use_public_locations_callout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/can_use_public_locations_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/can_use_public_locations_callout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/can_use_public_locations_callout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/index.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/index.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/index.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/inspect_monitor_portal.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/inspect_monitor_portal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/inspect_monitor_portal.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/inspect_monitor_portal.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type_portal.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type_portal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type_portal.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/monitor_type_portal.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/read_only_callout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/read_only_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/read_only_callout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/read_only_callout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_fields.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_fields.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_fields.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/steps/step_fields.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/types.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/types.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/use_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/use_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_add_edit/use_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/use_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_error_failed_step.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_error_failed_step.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_error_failed_step.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_error_failed_step.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_failed_tests_by_step.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_failed_tests_by_step.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_failed_tests_by_step.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_failed_tests_by_step.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_fetch_active_alerts.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_fetch_active_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_fetch_active_alerts.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_fetch_active_alerts.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_journey_steps.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_journey_steps.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_journey_steps.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_journey_steps.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_errors.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_errors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_errors.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_errors.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_latest_ping.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_latest_ping.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_latest_ping.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_latest_ping.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_pings.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_pings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_pings.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_pings.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_filters.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_filters.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_filters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_id.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_id.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_id.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_query_id.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_range_from.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_range_from.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_range_from.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_monitor_range_from.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_location.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_location.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_location.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_location.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_monitor.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_monitor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_monitor.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/hooks/use_selected_monitor.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/alerts_icon.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/alerts_icon.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/alerts_icon.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/alerts_icon.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/monitor_detail_alerts.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/monitor_detail_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/monitor_detail_alerts.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_alerts/monitor_detail_alerts.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_last_run.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_last_run.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_last_run.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_last_run.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_location.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_location.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_location.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_location.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_page_title.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_page_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_page_title.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_page_title.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_details_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_icon.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_icon.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_icon.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_icon.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_tab_content.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_tab_content.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_tab_content.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/errors_tab_content.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_by_step.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_by_step.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_by_step.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_by_step.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_count.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_count.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_count.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/failed_tests_count.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/monitor_errors.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/monitor_errors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/monitor_errors.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_errors/monitor_errors.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_history/monitor_history.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_history/monitor_history.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_history/monitor_history.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_history/monitor_history.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_not_found_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_not_found_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_not_found_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_not_found_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_pending_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_searchable_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_searchable_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_searchable_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_searchable_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_selector.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_selector.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_selector.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/monitor_selector.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts similarity index 98% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts index 0988e6c2aefc5..6e9e8decd7e6c 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_selector/use_recently_viewed_monitors.ts @@ -94,7 +94,6 @@ export const useRecentlyViewedMonitors = () => { } // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [monitorQueryId]); return useMemo( diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/labels.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/labels.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/labels.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/labels.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_cell_tooltip.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_cell_tooltip.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_cell_tooltip.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_cell_tooltip.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_chart_theme.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_chart_theme.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_chart_theme.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_chart_theme.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_data.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_header.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_header.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_header.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_legend.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_legend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_legend.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_legend.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_panel.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_panel.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/monitor_status_panel.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_status/use_monitor_status_data.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/alert_actions.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/alert_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/alert_actions.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/alert_actions.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_panel.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_panel.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_panel.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_sparklines.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_sparklines.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_sparklines.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/availability_sparklines.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_panel.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_panel.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_panel.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_sparklines.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_sparklines.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_sparklines.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_sparklines.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_trend.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_trend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_trend.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/duration_trend.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/edit_monitor_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/edit_monitor_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/edit_monitor_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/edit_monitor_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/last_test_run.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/last_test_run.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/last_test_run.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/last_test_run.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/locations_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/locations_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/locations_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/locations_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_alerts.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_alerts.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_alerts.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_count.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_count.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_count.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_count.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_sparklines.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_sparklines.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_sparklines.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_complete_sparklines.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_details_panel_container.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_details_panel_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_details_panel_container.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_details_panel_container.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_error_sparklines.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_error_sparklines.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_error_sparklines.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_error_sparklines.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_errors_count.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_errors_count.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_errors_count.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_errors_count.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_summary.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_summary.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_summary.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_summary.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_total_runs_count.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_total_runs_count.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_total_runs_count.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_total_runs_count.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/status_filter.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/status_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/status_filter.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/status_filter.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/step_duration_panel.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/step_duration_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/step_duration_panel.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/step_duration_panel.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table_header.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table_header.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/test_runs_table_header.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/route_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/route_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/route_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/route_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/run_test_manually.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/run_test_manually.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/run_test_manually.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/run_test_manually.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/use_monitor_details_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/use_monitor_details_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitor_details/use_monitor_details_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitor_details/use_monitor_details_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_button.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_button.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_button.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_group.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_group.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_group.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/filter_group.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/list_filters.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/list_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/list_filters.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/list_filters.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/monitor_filters/use_filters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/no_monitors_found.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/search_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/show_all_spaces.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/show_all_spaces.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/common/show_all_spaces.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/common/show_all_spaces.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/create_monitor_button.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/create_monitor_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/create_monitor_button.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/create_monitor_button.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_can_use_public_loc_id.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_can_use_public_loc_id.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_can_use_public_loc_id.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_can_use_public_loc_id.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_create_slo.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_create_slo.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_create_slo.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_create_slo.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors_count.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors_count.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors_count.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors_count.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_filters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_list.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_query_filters.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_query_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_query_filters.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_monitor_query_filters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_overview_status.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_overview_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_overview_status.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_overview_status.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/disabled_callout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/disabled_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/disabled_callout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/disabled_callout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/labels.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/labels.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/labels.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/labels.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/loader/loader.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_errors/monitor_async_error.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_container.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_container.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_container.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/bulk_operations.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/bulk_operations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/bulk_operations.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/bulk_operations.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/labels.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/labels.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/labels.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/labels.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_details_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_details_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_details_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_details_link.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_enabled.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_enabled.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_enabled.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_enabled.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list_header.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list_header.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_list_header.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_locations.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_locations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_locations.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_locations.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_stats.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_stats.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_stats.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_stats.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs_sparkline.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs_sparkline.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs_sparkline.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_stats/monitor_test_runs_sparkline.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/page_header/monitors_page_header.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/page_header/monitors_page_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/page_header/monitors_page_header.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/page_header/monitors_page_header.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/show_sync_errors.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/show_sync_errors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/show_sync_errors.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/show_sync_errors.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/labels.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/labels.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/labels.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/labels.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/synthetics_enablement.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/synthetics_enablement.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/synthetics_enablement.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/synthetics_enablement/synthetics_enablement.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/monitors_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/monitors_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/monitors_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/monitors_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_group_item.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_group_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_group_item.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_group_item.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_items_by_group.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_items_by_group.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_items_by_group.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/grid_items_by_group.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_fields.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_fields.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_fields.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_fields.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_menu.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_menu.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/group_menu.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/use_filtered_group_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/use_filtered_group_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/use_filtered_group_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/grid_by_group/use_filtered_group_monitors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_body.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_body.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_body.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_body.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item/metric_item_extra.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item_icon.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item_icon.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item_icon.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/metric_item_icon.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_alerts.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_alerts.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_alerts.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_count.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_count.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_count.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_count.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_sparklines.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_sparklines.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_sparklines.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_errors/overview_errors_sparklines.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid_item_loader.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid_item_loader.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid_item_loader.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_grid_item_loader.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_loader.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_loader.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_loader.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_loader.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_pagination_info.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_pagination_info.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_pagination_info.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_pagination_info.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/quick_filters.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_fields.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_fields.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_fields.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_fields.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_menu.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_menu.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/sort_menu.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/types.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/types.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/overview_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/types.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/types.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/use_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/use_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/overview/use_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/use_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/route_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/route_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/monitors_page/route_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/monitors_page/route_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/add_connector_flyout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/add_connector_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/add_connector_flyout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/add_connector_flyout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/alert_defaults_form.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/alert_defaults_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/alert_defaults_form.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/alert_defaults_form.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/connector_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/connector_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/connector_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/connector_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/default_email.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/default_email.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/default_email.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/default_email.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/hooks/use_alerting_defaults.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/hooks/use_alerting_defaults.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/hooks/use_alerting_defaults.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/hooks/use_alerting_defaults.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/translations.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/validation.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/validation.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/alerting_defaults/validation.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/alerting_defaults/validation.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/components/optional_text.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/components/optional_text.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/components/optional_text.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/components/optional_text.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/components/tags_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/components/tags_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/components/tags_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/components/tags_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/common.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/common.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/common.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/common.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/common.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/common.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/common.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/dsl_retention_tab.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/dsl_retention_tab.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/dsl_retention_tab.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/dsl_retention_tab.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/ilm_retention_tab.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/ilm_retention_tab.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/ilm_retention_tab.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/ilm_retention_tab.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/index.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/index.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/index.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/policy_labels.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/policy_labels.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/policy_labels.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/policy_labels.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/unprivileged.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/unprivileged.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/unprivileged.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/unprivileged.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/use_management_locator.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/use_management_locator.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/data_retention/use_management_locator.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/data_retention/use_management_locator.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/add_param_flyout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/add_param_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/add_param_flyout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/add_param_flyout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/add_param_form.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/add_param_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/add_param_form.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/add_param_form.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/param_value_field.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/param_value_field.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/param_value_field.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/param_value_field.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/params_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/params_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/params_text.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_text.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/global_params/params_text.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/global_params/params_text.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_data_stream_statuses.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_get_ilm_policies.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_params_list.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_params_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/hooks/use_params_list.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/hooks/use_params_list.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/page_header.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/page_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/page_header.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/page_header.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/policy_link.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/policy_link.tsx similarity index 97% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/policy_link.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/policy_link.tsx index 3918e20bccabd..782c8ebd34f67 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/policy_link.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/policy_link.tsx @@ -26,7 +26,6 @@ export const PolicyLink = ({ name }: { name: string }) => { return ilmLocator?.getLocation({ page: 'policy_edit', policyName: name }); // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [name]); if (!data) { diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/add_location_flyout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/add_location_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/add_location_flyout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/add_location_flyout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/agent_policy_needed.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/agent_policy_needed.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/agent_policy_needed.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/agent_policy_needed.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/copy_name.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/copy_name.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/copy_name.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/copy_name.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/delete_location.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/delete_location.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/delete_location.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/delete_location.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/empty_locations.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/empty_locations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/empty_locations.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/empty_locations.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_location_monitors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts similarity index 95% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts index 6b3899a5b44c8..4f3790edddec4 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/hooks/use_locations_api.ts @@ -46,7 +46,6 @@ export const usePrivateLocationsAPI = () => { } // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [formData]); const onSubmit = (data: NewLocation) => { @@ -67,7 +66,6 @@ export const usePrivateLocationsAPI = () => { } // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [deleteId]); return { diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/location_form.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/location_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/location_form.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/location_form.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/locations_table.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/locations_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/locations_table.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/locations_table.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/manage_empty_state.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/manage_empty_state.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/manage_empty_state.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/manage_empty_state.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/manage_private_locations.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/policy_hosts.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/policy_hosts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/policy_hosts.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/policy_hosts.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/policy_name.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/policy_name.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/policy_name.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/policy_name.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/view_location_monitors.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/view_location_monitors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/private_locations/view_location_monitors.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/private_locations/view_location_monitors.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/api_key_btn.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/help_commands.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/help_commands.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/help_commands.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/help_commands.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx similarity index 99% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx index 4a8752e8b9926..07d0b83c15e51 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/project_api_keys/project_api_keys.tsx @@ -40,7 +40,6 @@ export const ProjectAPIKeys = () => { return null; // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [loadAPIKey, canUsePublicLocations]); useEffect(() => { diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/route_config.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/route_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/route_config.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/route_config.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/settings_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/settings_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/settings_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/settings_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/use_settings_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/use_settings_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/settings/use_settings_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/settings/use_settings_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/data_formatting.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/types.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/types.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/common/network_data/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/error_callout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/error_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/error_callout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/error_callout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings_prev.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings_prev.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings_prev.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_network_timings_prev.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_object_metrics.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_object_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_object_metrics.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_object_metrics.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_prev_object_metrics.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_prev_object_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_prev_object_metrics.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_prev_object_metrics.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_detail_page.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_detail_page.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_detail_page.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_detail_page.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_details_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_details_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_details_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_details_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_metrics.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_metrics.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_metrics.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_prev_metrics.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_prev_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_prev_metrics.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/hooks/use_step_prev_metrics.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/network_timings_breakdown.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/network_timings_breakdown.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/network_timings_breakdown.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/network_timings_breakdown.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/route_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/route_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/route_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/route_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_detail_page.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_detail_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_detail_page.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_detail_page.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_details_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_details_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_details_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_details_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/definitions_popover.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/definitions_popover.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/definitions_popover.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/definitions_popover.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/labels.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/labels.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/labels.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/labels.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/step_metrics.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/step_metrics.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/step_metrics.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_metrics/step_metrics.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_number_nav.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_number_nav.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_number_nav.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_number_nav.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_objects/color_palette.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_objects/color_palette.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_objects/color_palette.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_objects/color_palette.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_count_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_count_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_count_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_count_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_weight_list.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_weight_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_weight_list.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_objects/object_weight_list.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_page_nav.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_page_nav.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_page_nav.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_page_nav.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx similarity index 97% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx index cde0cb93fed11..dfd7d3db11007 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/last_successful_screenshot.tsx @@ -37,7 +37,6 @@ export const LastSuccessfulScreenshot = ({ }); // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [step._id, step['@timestamp']]); return ( diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/step_image.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/step_image.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/step_image.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_screenshot/step_image.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/breakdown_legend.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/breakdown_legend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/breakdown_legend.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/breakdown_legend.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/network_timings_donut.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/network_timings_donut.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/network_timings_donut.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_timing_breakdown/network_timings_donut.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_title.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_title.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_title.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/use_step_waterfall_metrics.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/README.md b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/README.md similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/README.md rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/README.md diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/constants.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/constants.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/constants.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/context/waterfall_context.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/context/waterfall_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/context/waterfall_context.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/context/waterfall_context.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/middle_truncated_text.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/sidebar.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/sidebar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/sidebar.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/sidebar.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/styles.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/styles.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/styles.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/styles.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/translations.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/use_bar_charts.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_bar_chart.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_bar_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_bar_chart.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_bar_chart.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_container.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_fixed_axis.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_fixed_axis.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_fixed_axis.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_fixed_axis.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_chart_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/use_flyout.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout_table.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout_table.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_flyout/waterfall_flyout_table.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/network_requests_total.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_legend_item.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_legend_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_legend_item.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_legend_item.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_mime_legend.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_search.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_tick_axis.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_timing_legend.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_timing_legend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_timing_legend.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_header/waterfall_timing_legend.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_icon.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_test_helper.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_test_helper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_test_helper.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_test_helper.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_marker_trend.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_markers.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_markers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_markers.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_marker/waterfall_markers.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_sidebar_item.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/step_details_page/step_waterfall_chart/waterfall/waterfall_tooltip_content.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/browser/browser_test_results.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/browser/browser_test_results.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/browser/browser_test_results.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/browser/browser_test_results.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts similarity index 99% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts index c5b11dc272233..553278f180bdf 100644 --- a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts +++ b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_browser_run_once_monitors.ts @@ -189,7 +189,6 @@ export const useBrowserRunOnceMonitors = ({ return Promise.resolve(null); // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Synthetics folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [checkGroupCheckSum, setCheckGroupResults, lastRefresh]); // Whenever a new found document is fetched, update lastUpdated diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_run_once_errors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_run_once_errors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_run_once_errors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_run_once_errors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_simple_run_once_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_simple_run_once_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_simple_run_once_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_simple_run_once_monitors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_test_flyout_open.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_test_flyout_open.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_test_flyout_open.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_test_flyout_open.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_tick_tick.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_tick_tick.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_tick_tick.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_tick_tick.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/manual_test_run_mode.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/manual_test_run_mode.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/manual_test_run_mode.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/manual_test_run_mode.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/simple_test_results.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/simple_test_results.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/simple_test_results.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/simple_test_results.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/expand_row.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/expand_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/expand_row.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/expand_row.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_error.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_error.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_error.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/ping_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/response_code.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/response_code.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/response_code.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/columns/response_code.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/expanded_row.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/expanded_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/expanded_row.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/expanded_row.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/headers.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/headers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/headers.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/headers.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_list_table.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_list_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_list_table.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_list_table.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_redirects.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_redirects.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_redirects.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/ping_redirects.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/translations.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/use_ping_expanded.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/use_ping_expanded.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/use_ping_expanded.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/ping_list/use_ping_expanded.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/simple_test_results.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/simple_test_results.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/simple/simple_test_results.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/simple/simple_test_results.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_result_header.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_result_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_now_mode/test_result_header.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_result_header.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/step_details.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/step_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/step_details.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/step_details.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/step_info.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/step_info.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/step_info.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/step_info.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/step_number_nav.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/step_number_nav.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/step_number_nav.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/step_number_nav.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_date.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_date.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_date.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_date.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_details_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_details_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_details_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_details_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_error_info.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_error_info.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_error_info.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/components/test_run_error_info.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/hooks/use_test_run_details_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/hooks/use_test_run_details_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/hooks/use_test_run_details_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/hooks/use_test_run_details_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/route_config.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/route_config.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/route_config.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/route_config.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/step_screenshot_details.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/step_screenshot_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/step_screenshot_details.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/step_screenshot_details.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/step_tabs.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/step_tabs.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/step_tabs.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/step_tabs.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/test_run_details.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/test_run_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/test_run_details.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/test_run_details.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/test_run_steps.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/test_run_steps.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/components/test_run_details/test_run_steps.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/components/test_run_details/test_run_steps.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_data_view_context.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_embeddable_context.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_embeddable_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_embeddable_context.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_embeddable_context.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_refresh_context.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_refresh_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_refresh_context.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_refresh_context.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_settings_context.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_settings_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_settings_context.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_settings_context.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_shared_context.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_shared_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/contexts/synthetics_shared_context.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/contexts/synthetics_shared_context.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_absolute_date.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_absolute_date.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_absolute_date.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_absolute_date.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_absolute_date.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_absolute_date.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_absolute_date.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_absolute_date.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_composite_image.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_composite_image.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_composite_image.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_composite_image.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_composite_image.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_composite_image.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_composite_image.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_composite_image.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_dimensions.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_dimensions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_dimensions.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_dimensions.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_edit_monitor_locator.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_edit_monitor_locator.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_edit_monitor_locator.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_edit_monitor_locator.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_enablement.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_enablement.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_enablement.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_enablement.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_fleet_permissions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_fleet_permissions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_fleet_permissions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_fleet_permissions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_location_name.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_location_name.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_location_name.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_location_name.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_location_name.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_location_name.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_location_name.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_location_name.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_locations.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_alert_enable.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_alert_enable.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_alert_enable.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_alert_enable.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_detail.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_detail.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_detail.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_detail.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_detail_locator.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_detail_locator.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_detail_locator.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_detail_locator.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_enable_handler.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_enable_handler.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_enable_handler.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_enable_handler.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_name.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_name.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_name.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_name.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_name.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_name.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitor_name.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitor_name.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_monitors_sorted_by_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_redux_es_search.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_redux_es_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_redux_es_search.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_redux_es_search.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_status_by_location.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_status_by_location.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_status_by_location.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_status_by_location.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_status_by_location_overview.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_status_by_location_overview.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_status_by_location_overview.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_status_by_location_overview.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_synthetics_priviliges.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_url_params.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_url_params.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_url_params.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_url_params.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_url_params.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/hooks/use_url_params.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/hooks/use_url_params.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/monitor_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/monitor_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/monitor_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/monitor_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/tls_alert.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/tls_alert.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/tls_alert.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/tls_alert.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/validate_tls_alert.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/validate_tls_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/validate_tls_alert.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/lazy_wrapper/validate_tls_alert.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/monitor_status.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/monitor_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/monitor_status.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/monitor_status.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/tls.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/tls.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/tls.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/tls.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/types.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/lib/alert_types/types.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/lib/alert_types/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/render_app.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/render_app.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/render_app.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/render_app.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/routes.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/routes.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/routes.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/routes.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/alert_rules/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/alert_rules/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/api.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/api.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/api.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/api.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/models.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/models.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/models.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/models.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/browser_journey/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/browser_journey/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certificates/certificates.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certificates/certificates.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certificates/certificates.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certificates/certificates.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/certs/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/certs/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/elasticsearch/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/elasticsearch/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/global_params/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/global_params/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/manual_test_runs/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/manual_test_runs/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_details/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_details/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/helpers.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/helpers.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/helpers.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/models.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/models.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/models.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/models.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_management/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/monitor_management/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/network_events/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/network_events/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/effects.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/effects.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/effects.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/effects.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/models.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/models.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/models.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/models.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/overview_status/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/overview_status/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/private_locations/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/private_locations/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_effect.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/root_effect.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_effect.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/root_effect.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_reducer.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/root_reducer.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/service_locations/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/service_locations/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/settings/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/settings/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/models.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/models.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/models.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/models.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/status_heatmap/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/status_heatmap/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/store.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/store.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/store.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/store.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/api.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/api.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/effects.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/effects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/effects.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/effects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/synthetics_enablement/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/synthetics_enablement/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ui/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/ui/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ui/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/ui/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ui/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/ui/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ui/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/ui/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ui/selectors.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/ui/selectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/ui/selectors.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/ui/selectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/utils/actions.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/utils/actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/utils/actions.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/utils/actions.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/utils/fetch_effect.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/utils/fetch_effect.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/utils/fetch_effect.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/utils/fetch_effect.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/utils/http_error.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/utils/http_error.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/state/utils/http_error.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/state/utils/http_error.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/synthetics_app.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/synthetics_app.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/adapters/capabilities_adapter.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/adapters/capabilities_adapter.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/adapters/capabilities_adapter.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/adapters/capabilities_adapter.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/adapters/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/adapters/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/adapters/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/adapters/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/filters/filter_fields.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/filters/filter_fields.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/filters/filter_fields.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/filters/filter_fields.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/format.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/format.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/format.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/format.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/format.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/format.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/format.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/format.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/test_helpers.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/test_helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/formatting/test_helpers.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/formatting/test_helpers.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/check_pings.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/check_pings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/check_pings.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/check_pings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/compose_screenshot_images.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/sort_pings.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/sort_pings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/sort_pings.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/sort_pings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/monitor_test_result/test_time_formats.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_plugin_start_mock.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_plugin_start_mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_plugin_start_mock.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_plugin_start_mock.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_store.mock.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_store.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_store.mock.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/synthetics_store.mock.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/ut_router_history.mock.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/ut_router_history.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/__mocks__/ut_router_history.mock.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/ut_router_history.mock.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/helper_with_redux.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/helper_with_redux.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/helper_with_redux.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/helper_with_redux.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/testing/rtl_helpers.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/get_supported_url_params.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/parse_absolute_date.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/url_params/stringify_url_params.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/validators/is_url_valid.test.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/validators/is_url_valid.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/validators/is_url_valid.test.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/validators/is_url_valid.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/validators/is_url_valid.ts b/x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/validators/is_url_valid.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/apps/synthetics/utils/validators/is_url_valid.ts rename to x-pack/solutions/observability/plugins/synthetics/public/apps/synthetics/utils/validators/is_url_valid.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/hooks/use_base_chart_theme.ts b/x-pack/solutions/observability/plugins/synthetics/public/hooks/use_base_chart_theme.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/hooks/use_base_chart_theme.ts rename to x-pack/solutions/observability/plugins/synthetics/public/hooks/use_base_chart_theme.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/hooks/use_capabilities.ts b/x-pack/solutions/observability/plugins/synthetics/public/hooks/use_capabilities.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/hooks/use_capabilities.ts rename to x-pack/solutions/observability/plugins/synthetics/public/hooks/use_capabilities.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/hooks/use_date_format.test.tsx b/x-pack/solutions/observability/plugins/synthetics/public/hooks/use_date_format.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/hooks/use_date_format.test.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/hooks/use_date_format.test.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/hooks/use_date_format.ts b/x-pack/solutions/observability/plugins/synthetics/public/hooks/use_date_format.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/hooks/use_date_format.ts rename to x-pack/solutions/observability/plugins/synthetics/public/hooks/use_date_format.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/hooks/use_form_wrapped.tsx b/x-pack/solutions/observability/plugins/synthetics/public/hooks/use_form_wrapped.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/hooks/use_form_wrapped.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/hooks/use_form_wrapped.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/hooks/use_kibana_space.tsx b/x-pack/solutions/observability/plugins/synthetics/public/hooks/use_kibana_space.tsx similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/hooks/use_kibana_space.tsx rename to x-pack/solutions/observability/plugins/synthetics/public/hooks/use_kibana_space.tsx diff --git a/x-pack/plugins/observability_solution/synthetics/public/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/plugin.ts b/x-pack/solutions/observability/plugins/synthetics/public/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/plugin.ts rename to x-pack/solutions/observability/plugins/synthetics/public/plugin.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/utils/api_service/api_service.ts b/x-pack/solutions/observability/plugins/synthetics/public/utils/api_service/api_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/utils/api_service/api_service.ts rename to x-pack/solutions/observability/plugins/synthetics/public/utils/api_service/api_service.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/utils/api_service/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/utils/api_service/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/utils/api_service/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/utils/api_service/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/utils/kibana_service/index.ts b/x-pack/solutions/observability/plugins/synthetics/public/utils/kibana_service/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/utils/kibana_service/index.ts rename to x-pack/solutions/observability/plugins/synthetics/public/utils/kibana_service/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/public/utils/kibana_service/kibana_service.ts b/x-pack/solutions/observability/plugins/synthetics/public/utils/kibana_service/kibana_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/public/utils/kibana_service/kibana_service.ts rename to x-pack/solutions/observability/plugins/synthetics/public/utils/kibana_service/kibana_service.ts diff --git a/x-pack/plugins/observability_solution/synthetics/scripts/base_e2e.js b/x-pack/solutions/observability/plugins/synthetics/scripts/base_e2e.js similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/scripts/base_e2e.js rename to x-pack/solutions/observability/plugins/synthetics/scripts/base_e2e.js diff --git a/x-pack/plugins/observability_solution/synthetics/scripts/e2e.js b/x-pack/solutions/observability/plugins/synthetics/scripts/e2e.js similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/scripts/e2e.js rename to x-pack/solutions/observability/plugins/synthetics/scripts/e2e.js diff --git a/x-pack/plugins/observability_solution/synthetics/scripts/generate_monitors.js b/x-pack/solutions/observability/plugins/synthetics/scripts/generate_monitors.js similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/scripts/generate_monitors.js rename to x-pack/solutions/observability/plugins/synthetics/scripts/generate_monitors.js diff --git a/x-pack/plugins/observability_solution/synthetics/scripts/tasks/generate_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/scripts/tasks/generate_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/scripts/tasks/generate_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/scripts/tasks/generate_monitors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/action_variables.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/action_variables.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/action_variables.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/action_variables.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/common.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/common.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/common.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/common.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/common.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/common.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/common.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/message_utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/message_utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/message_utils.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/message_utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/queries/filter_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/queries/filter_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/queries/filter_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/queries/filter_monitors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/queries/query_monitor_status_alert.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/queries/query_monitor_status_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/queries/query_monitor_status_alert.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/queries/query_monitor_status_alert.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/status_rule_executor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/status_rule_executor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/status_rule_executor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/status_rule_executor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/status_rule_executor.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/status_rule_executor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/status_rule_executor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/status_rule_executor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/types.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/types.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/status_rule/utils.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/status_rule/utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/message_utils.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/message_utils.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/message_utils.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/message_utils.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/message_utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/message_utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/message_utils.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/message_utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/tls_rule.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/tls_rule.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/tls_rule.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/tls_rule.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/tls_rule_executor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/tls_rule_executor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/tls_rule_executor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/tls_rule_executor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/tls_rule_executor.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/tls_rule_executor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/tls_rule/tls_rule_executor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/tls_rule/tls_rule_executor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/alert_rules/translations.ts b/x-pack/solutions/observability/plugins/synthetics/server/alert_rules/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/alert_rules/translations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/alert_rules/translations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/common/pings/monitor_status_heatmap.ts b/x-pack/solutions/observability/plugins/synthetics/server/common/pings/monitor_status_heatmap.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/common/pings/monitor_status_heatmap.ts rename to x-pack/solutions/observability/plugins/synthetics/server/common/pings/monitor_status_heatmap.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/common/pings/query_pings.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/common/pings/query_pings.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/common/pings/query_pings.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/common/pings/query_pings.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/common/pings/query_pings.ts b/x-pack/solutions/observability/plugins/synthetics/server/common/pings/query_pings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/common/pings/query_pings.ts rename to x-pack/solutions/observability/plugins/synthetics/server/common/pings/query_pings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/common/unzip_project_code.ts b/x-pack/solutions/observability/plugins/synthetics/server/common/unzip_project_code.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/common/unzip_project_code.ts rename to x-pack/solutions/observability/plugins/synthetics/server/common/unzip_project_code.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/config.ts b/x-pack/solutions/observability/plugins/synthetics/server/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/config.ts rename to x-pack/solutions/observability/plugins/synthetics/server/config.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/constants/settings.ts b/x-pack/solutions/observability/plugins/synthetics/server/constants/settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/constants/settings.ts rename to x-pack/solutions/observability/plugins/synthetics/server/constants/settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/feature.ts b/x-pack/solutions/observability/plugins/synthetics/server/feature.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/feature.ts rename to x-pack/solutions/observability/plugins/synthetics/server/feature.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/lib.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/lib.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/lib.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/lib.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/lib.ts b/x-pack/solutions/observability/plugins/synthetics/server/lib.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/lib.ts rename to x-pack/solutions/observability/plugins/synthetics/server/lib.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/plugin.ts b/x-pack/solutions/observability/plugins/synthetics/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/plugin.ts rename to x-pack/solutions/observability/plugins/synthetics/server/plugin.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_certs.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_certs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_certs.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_certs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_index_pattern.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_index_pattern.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_index_pattern.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_index_pattern.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_details.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_details.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_details.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_details.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_failed_steps.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_failed_steps.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_failed_steps.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_failed_steps.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_failed_steps.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_failed_steps.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_failed_steps.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_failed_steps.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot_blocks.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot_blocks.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot_blocks.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot_blocks.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot_blocks.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot_blocks.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_screenshot_blocks.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_screenshot_blocks.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_steps.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_steps.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_steps.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_steps.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_steps.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_steps.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_journey_steps.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_journey_steps.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_last_successful_check.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_last_successful_check.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_last_successful_check.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_last_successful_check.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_last_successful_check.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_last_successful_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_last_successful_check.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_last_successful_check.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_network_events.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_network_events.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_network_events.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_network_events.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/get_network_events.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/get_network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/get_network_events.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/get_network_events.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/journey_screenshots.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/journey_screenshots.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/journey_screenshots.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/journey_screenshots.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/queries/test_helpers.ts b/x-pack/solutions/observability/plugins/synthetics/server/queries/test_helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/queries/test_helpers.ts rename to x-pack/solutions/observability/plugins/synthetics/server/queries/test_helpers.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/certs/get_certificates.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/certs/get_certificates.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/certs/get_certificates.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/certs/get_certificates.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/certs/get_certificates.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/certs/get_certificates.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/certs/get_certificates.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/certs/get_certificates.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/common.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/common.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/common.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/common.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/common.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/common.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/common.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/create_route_with_auth.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/create_route_with_auth.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/create_route_with_auth.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/create_route_with_auth.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/create_route_with_auth.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/create_route_with_auth.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/create_route_with_auth.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/create_route_with_auth.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/default_alert_service.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/default_alert_service.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/default_alert_service.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/default_alert_service.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/default_alert_service.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/default_alert_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/default_alert_service.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/default_alert_service.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/enable_default_alert.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/enable_default_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/enable_default_alert.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/enable_default_alert.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/get_action_connectors.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/get_action_connectors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/get_action_connectors.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/get_action_connectors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/get_connector_types.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/get_connector_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/get_connector_types.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/get_connector_types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/get_default_alert.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/get_default_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/get_default_alert.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/get_default_alert.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/update_default_alert.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/update_default_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/default_alerts/update_default_alert.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/default_alerts/update_default_alert.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/filters/filters.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/filters/filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/filters/filters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/filters/filters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/fleet/get_has_integration_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/fleet/get_has_integration_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/fleet/get_has_integration_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/fleet/get_has_integration_monitors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/add_monitor_api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/utils.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/utils.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/utils.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/utils.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor/utils.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor/utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor_project.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/add_monitor_project.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/add_monitor_project.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/bulk_cruds/add_monitor_bulk.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/add_monitor_bulk.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/bulk_cruds/add_monitor_bulk.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/add_monitor_bulk.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/bulk_cruds/edit_monitor_bulk.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/edit_monitor_bulk.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/bulk_cruds/edit_monitor_bulk.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/edit_monitor_bulk.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/delete_integration.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/delete_integration.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/delete_integration.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/delete_integration.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/delete_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/delete_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/delete_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/delete_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/delete_monitor_project.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/delete_monitor_project.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/delete_monitor_project.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/delete_monitor_project.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/edit_monitor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/edit_monitor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/edit_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/edit_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/formatters/saved_object_to_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_api_key.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_api_key.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_api_key.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitor_project.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitor_project.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitor_project.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitor_project.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitors_list.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitors_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/get_monitors_list.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/get_monitors_list.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/inspect_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/inspect_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/inspect_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/inspect_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/monitor_validation.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/monitor_validation.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/monitor_validation.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/monitor_validation.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/monitor_validation.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/monitor_validation.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/monitor_validation.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/monitor_validation.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/services/delete_monitor_api.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/services/delete_monitor_api.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/services/delete_monitor_api.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/services/delete_monitor_api.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/services/validate_space_id.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/services/validate_space_id.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/monitor_cruds/services/validate_space_id.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/monitor_cruds/services/validate_space_id.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/network_events/get_network_events.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/network_events/get_network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/network_events/get_network_events.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/network_events/get_network_events.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/network_events/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/network_events/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/network_events/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/network_events/index.ts diff --git a/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status.ts new file mode 100644 index 0000000000000..fb3ff320c8cf6 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status.ts @@ -0,0 +1,23 @@ +/* + * 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 { OverviewStatusService } from './overview_status_service'; +import { SyntheticsRestApiRouteFactory } from '../types'; +import { OverviewStatusState } from '../../../common/runtime_types'; +import { SYNTHETICS_API_URLS } from '../../../common/constants'; +import { OverviewStatusSchema } from '../common'; + +export const createGetCurrentStatusRoute: SyntheticsRestApiRouteFactory = () => ({ + method: 'GET', + path: SYNTHETICS_API_URLS.OVERVIEW_STATUS, + validate: { + query: OverviewStatusSchema, + }, + handler: async (routeContext): Promise => { + const statusOverview = new OverviewStatusService(routeContext); + return await statusOverview.getOverviewStatus(); + }, +}); diff --git a/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status_service.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status_service.test.ts new file mode 100644 index 0000000000000..677f499b2a722 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status_service.test.ts @@ -0,0 +1,793 @@ +/* + * 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 { SavedObjectsFindResult } from '@kbn/core-saved-objects-api-server'; +import * as monitorsFns from '../../saved_objects/synthetics_monitor/get_all_monitors'; +import { EncryptedSyntheticsMonitorAttributes } from '../../../common/runtime_types'; +import { getUptimeESMockClient } from '../../queries/test_helpers'; + +import * as commonLibs from '../common'; +import * as allLocationsFn from '../../synthetics_service/get_all_locations'; +import { OverviewStatusService, SUMMARIES_PAGE_SIZE } from './overview_status_service'; +import times from 'lodash/times'; +import { flatten } from 'lodash'; +const japanLoc = { + id: 'asia_japan', + label: 'Asia/Pacific - Japan', +}; + +const germanyLoc = { + id: 'europe_germany', + label: 'Europe - Germany', +}; + +const allLocations: any = [japanLoc, germanyLoc]; +jest.spyOn(allLocationsFn, 'getAllLocations').mockResolvedValue({ + publicLocations: allLocations, + privateLocations: [], + allLocations, +}); + +jest.mock('../../saved_objects/synthetics_monitor/get_all_monitors', () => ({ + ...jest.requireActual('../../saved_objects/synthetics_monitor/get_all_monitors'), + getAllMonitors: jest.fn(), +})); + +jest.spyOn(commonLibs, 'getMonitors').mockResolvedValue({ + per_page: 10, + saved_objects: [ + { + id: 'mon-1', + attributes: { + enabled: false, + locations: [{ id: 'us-east1' }, { id: 'us-west1' }, { id: 'japan' }], + }, + }, + { + id: 'mon-2', + attributes: { + enabled: true, + locations: [{ id: 'us-east1' }, { id: 'us-west1' }, { id: 'japan' }], + schedule: { + number: '10', + unit: 'm', + }, + }, + }, + ], +} as any); + +describe('current status route', () => { + const testMonitors = [ + { + attributes: { + config_id: 'id1', + id: 'id1', + type: 'browser', + enabled: true, + name: 'test monitor 1', + project_id: 'project-id', + tags: ['tag-1', 'tag-2'], + schedule: { + number: '1', + unit: 'm', + }, + locations: [japanLoc], + }, + }, + { + attributes: { + id: 'id2', + config_id: 'id2', + enabled: true, + type: 'browser', + name: 'test monitor 2', + project_id: 'project-id', + tags: ['tag-1', 'tag-2'], + schedule: { + number: '1', + unit: 'm', + }, + locations: allLocations, + }, + }, + ]; + + describe('OverviewStatusService', () => { + it('parses expected agg fields', async () => { + const { esClient, syntheticsEsClient } = getUptimeESMockClient(); + + esClient.search.mockResponseOnce( + getEsResponse({ + buckets: [ + { + key: { + monitorId: 'id1', + locationId: japanLoc.id, + }, + status: { + key: japanLoc.id, + top: [ + { + metrics: { + 'monitor.status': 'up', + }, + sort: ['2022-09-15T16:19:16.724Z'], + }, + ], + }, + }, + { + key: { + monitorId: 'id2', + locationId: japanLoc.id, + }, + status: { + key: japanLoc.id, + top: [ + { + metrics: { + 'monitor.status': 'up', + }, + sort: ['2022-09-15T16:19:16.724Z'], + }, + ], + }, + }, + { + key: { + monitorId: 'id2', + locationId: germanyLoc.id, + }, + status: { + key: germanyLoc.id, + top: [ + { + metrics: { + 'monitor.status': 'down', + }, + sort: ['2022-09-15T16:19:16.724Z'], + }, + ], + }, + }, + ], + }) + ); + const routeContext: any = { + request: {}, + syntheticsEsClient, + }; + + const overviewStatusService = new OverviewStatusService(routeContext); + overviewStatusService.getMonitorConfigs = jest.fn().mockResolvedValue(testMonitors as any); + expect(await overviewStatusService.getOverviewStatus()).toMatchInlineSnapshot(` + Object { + "allIds": Array [ + "id1", + "id2", + ], + "allMonitorsCount": 2, + "disabledConfigs": Object {}, + "disabledCount": 0, + "disabledMonitorQueryIds": Array [], + "disabledMonitorsCount": 0, + "down": 1, + "downConfigs": Object { + "id2-europe_germany": Object { + "configId": "id2", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "europe_germany", + "locationLabel": "Europe - Germany", + "monitorQueryId": "id2", + "name": "test monitor 2", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "down", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": "2022-09-15T16:19:16.724Z", + "type": "browser", + "updated_at": undefined, + }, + }, + "enabledMonitorQueryIds": Array [ + "id1", + "id2", + ], + "pending": 0, + "pendingConfigs": Object {}, + "projectMonitorsCount": 0, + "up": 2, + "upConfigs": Object { + "id1-asia_japan": Object { + "configId": "id1", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "asia_japan", + "locationLabel": "Asia/Pacific - Japan", + "monitorQueryId": "id1", + "name": "test monitor 1", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "up", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": "2022-09-15T16:19:16.724Z", + "type": "browser", + "updated_at": undefined, + }, + "id2-asia_japan": Object { + "configId": "id2", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "asia_japan", + "locationLabel": "Asia/Pacific - Japan", + "monitorQueryId": "id2", + "name": "test monitor 2", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "up", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": "2022-09-15T16:19:16.724Z", + "type": "browser", + "updated_at": undefined, + }, + }, + } + `); + }); + + it('handles limits with multiple requests', async () => { + const { esClient, syntheticsEsClient } = getUptimeESMockClient(); + esClient.search.mockResponseOnce( + getEsResponse({ + after: {}, + buckets: flatten( + times(SUMMARIES_PAGE_SIZE).map(() => [ + { + key: { + monitorId: 'id1', + locationId: japanLoc.id, + }, + status: { + key: japanLoc.id, + top: [ + { + metrics: { + 'monitor.status': 'up', + }, + sort: ['2022-09-15T16:19:16.724Z'], + }, + ], + }, + }, + { + key: { + monitorId: 'id2', + locationId: japanLoc.id, + }, + status: { + key: japanLoc.id, + top: [ + { + metrics: { + 'monitor.status': 'up', + }, + sort: ['2022-09-15T16:19:16.724Z'], + }, + ], + }, + }, + { + key: { + monitorId: 'id2', + locationId: germanyLoc.id, + }, + status: { + key: germanyLoc.id, + top: [ + { + metrics: { + 'monitor.status': 'down', + }, + sort: ['2022-09-15T16:19:16.724Z'], + }, + ], + }, + }, + ]) + ), + }) + ); + + const routeContext: any = { + request: {}, + syntheticsEsClient, + }; + + const overviewStatusService = new OverviewStatusService(routeContext); + overviewStatusService.getMonitorConfigs = jest.fn().mockResolvedValue(testMonitors as any); + + expect(await overviewStatusService.getOverviewStatus()).toMatchInlineSnapshot(` + Object { + "allIds": Array [ + "id1", + "id2", + ], + "allMonitorsCount": 2, + "disabledConfigs": Object {}, + "disabledCount": 0, + "disabledMonitorQueryIds": Array [], + "disabledMonitorsCount": 0, + "down": 1, + "downConfigs": Object { + "id2-europe_germany": Object { + "configId": "id2", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "europe_germany", + "locationLabel": "Europe - Germany", + "monitorQueryId": "id2", + "name": "test monitor 2", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "down", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": "2022-09-15T16:19:16.724Z", + "type": "browser", + "updated_at": undefined, + }, + }, + "enabledMonitorQueryIds": Array [ + "id1", + "id2", + ], + "pending": 0, + "pendingConfigs": Object {}, + "projectMonitorsCount": 0, + "up": 2, + "upConfigs": Object { + "id1-asia_japan": Object { + "configId": "id1", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "asia_japan", + "locationLabel": "Asia/Pacific - Japan", + "monitorQueryId": "id1", + "name": "test monitor 1", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "up", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": "2022-09-15T16:19:16.724Z", + "type": "browser", + "updated_at": undefined, + }, + "id2-asia_japan": Object { + "configId": "id2", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "asia_japan", + "locationLabel": "Asia/Pacific - Japan", + "monitorQueryId": "id2", + "name": "test monitor 2", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "up", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": "2022-09-15T16:19:16.724Z", + "type": "browser", + "updated_at": undefined, + }, + }, + } + `); + expect(esClient.search).toHaveBeenCalledTimes(2); + }); + + it('handles pending configs', async () => { + const { esClient, syntheticsEsClient } = getUptimeESMockClient(); + esClient.search.mockResponseOnce( + getEsResponse({ + buckets: [], + }) + ); + const routeContext: any = { + request: {}, + syntheticsEsClient, + }; + + const overviewStatusService = new OverviewStatusService(routeContext); + overviewStatusService.getMonitorConfigs = jest.fn().mockResolvedValue(testMonitors as any); + expect(await overviewStatusService.getOverviewStatus()).toMatchInlineSnapshot(` + Object { + "allIds": Array [ + "id1", + "id2", + ], + "allMonitorsCount": 2, + "disabledConfigs": Object {}, + "disabledCount": 0, + "disabledMonitorQueryIds": Array [], + "disabledMonitorsCount": 0, + "down": 0, + "downConfigs": Object {}, + "enabledMonitorQueryIds": Array [ + "id1", + "id2", + ], + "pending": 3, + "pendingConfigs": Object { + "id1-asia_japan": Object { + "configId": "id1", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "asia_japan", + "locationLabel": "Asia/Pacific - Japan", + "monitorQueryId": "id1", + "name": "test monitor 1", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "unknown", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": undefined, + "type": "browser", + "updated_at": undefined, + }, + "id2-asia_japan": Object { + "configId": "id2", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "asia_japan", + "locationLabel": "Asia/Pacific - Japan", + "monitorQueryId": "id2", + "name": "test monitor 2", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "unknown", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": undefined, + "type": "browser", + "updated_at": undefined, + }, + "id2-europe_germany": Object { + "configId": "id2", + "isEnabled": true, + "isStatusAlertEnabled": false, + "locationId": "europe_germany", + "locationLabel": "Europe - Germany", + "monitorQueryId": "id2", + "name": "test monitor 2", + "projectId": "project-id", + "schedule": "1", + "spaceId": undefined, + "status": "unknown", + "tags": Array [ + "tag-1", + "tag-2", + ], + "timestamp": undefined, + "type": "browser", + "updated_at": undefined, + }, + }, + "projectMonitorsCount": 0, + "up": 0, + "upConfigs": Object {}, + } + `); + }); + }); + + describe('getStatus', () => { + jest.spyOn(allLocationsFn, 'getAllLocations').mockResolvedValue({ + publicLocations: allLocations, + privateLocations: [], + allLocations: [ + { + id: 'us_central_qa', + label: 'US Central QA', + }, + { + id: 'us_central', + label: 'North America - US Central', + }, + ] as any, + }); + + it.each([ + [['US Central QA'], 1], + [['North America - US Central'], 1], + [['North America - US Central', 'US Central QA'], 2], + [undefined, 2], + ])('handles disabled count when using location filters', async (locations, disabledCount) => { + jest.spyOn(monitorsFns, 'getAllMonitors').mockResolvedValue([ + { + type: 'synthetics-monitor', + id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', + attributes: { + enabled: false, + schedule: { + number: '3', + unit: 'm', + }, + config_id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', + locations: [ + { + isServiceManaged: true, + label: 'US Central QA', + id: 'us_central_qa', + }, + { + isServiceManaged: true, + label: 'North America - US Central', + id: 'us_central', + }, + ], + origin: 'project', + id: 'a-test2-default', + }, + references: [], + migrationVersion: { + 'synthetics-monitor': '8.6.0', + }, + coreMigrationVersion: '8.0.0', + updated_at: '2023-02-28T14:31:37.641Z', + created_at: '2023-02-28T14:31:37.641Z', + version: 'Wzg0MzkzLDVd', + namespaces: ['default'], + score: null, + sort: ['a', 3013], + } as unknown as SavedObjectsFindResult, + ]); + const { esClient, syntheticsEsClient } = getUptimeESMockClient(); + esClient.msearch.mockResponseOnce({ + responses: [ + getEsResponse({ + buckets: [ + { + key: 'id1', + location: { + buckets: [ + { + key: 'Asia/Pacific - Japan', + status: { + hits: { + hits: [ + { + _source: { + '@timestamp': '2022-09-15T16:08:16.724Z', + monitor: { + status: 'up', + id: 'id1', + }, + summary: { + up: 1, + down: 0, + }, + config_id: 'id1', + observer: { + geo: { + name: 'Asia/Pacific - Japan', + }, + }, + }, + }, + ], + }, + }, + }, + ], + }, + }, + { + key: 'id2', + location: { + buckets: [ + { + key: 'Asia/Pacific - Japan', + status: { + hits: { + hits: [ + { + _source: { + '@timestamp': '2022-09-15T16:09:16.724Z', + monitor: { + status: 'up', + id: 'id2', + }, + summary: { + up: 1, + down: 0, + }, + config_id: 'id2', + observer: { + geo: { + name: 'Asia/Pacific - Japan', + }, + }, + }, + }, + ], + }, + }, + }, + { + key: 'Europe - Germany', + status: { + hits: { + hits: [ + { + _source: { + '@timestamp': '2022-09-15T16:19:16.724Z', + monitor: { + status: 'down', + id: 'id2', + }, + summary: { + down: 1, + up: 0, + }, + config_id: 'id2', + observer: { + geo: { + name: 'Europe - Germany', + }, + }, + }, + }, + ], + }, + }, + }, + ], + }, + }, + ], + }), + ], + took: 605, + }); + + const overviewStatusService = new OverviewStatusService({ + request: { + query: { + locations, + }, + }, + syntheticsEsClient, + } as any); + + const result = await overviewStatusService.getOverviewStatus(); + + expect(result).toEqual( + expect.objectContaining({ + disabledCount, + }) + ); + }); + + it.each([ + [['US Central QA'], 1], + [['North America - US Central'], 1], + [['North America - US Central', 'US Central QA'], 2], + [undefined, 2], + ])('handles pending count when using location filters', async (locations, pending) => { + jest.spyOn(monitorsFns, 'getAllMonitors').mockResolvedValue([ + { + type: 'synthetics-monitor', + id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', + attributes: { + enabled: true, + schedule: { + number: '3', + unit: 'm', + }, + config_id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', + locations: [ + { + isServiceManaged: true, + label: 'US Central QA', + id: 'us_central_qa', + }, + { + isServiceManaged: true, + label: 'North America - US Central', + id: 'us_central', + }, + ], + origin: 'project', + id: 'a-test2-default', + }, + references: [], + migrationVersion: { + 'synthetics-monitor': '8.6.0', + }, + coreMigrationVersion: '8.0.0', + updated_at: '2023-02-28T14:31:37.641Z', + created_at: '2023-02-28T14:31:37.641Z', + version: 'Wzg0MzkzLDVd', + namespaces: ['default'], + score: null, + sort: ['a', 3013], + } as unknown as SavedObjectsFindResult, + ]); + const { esClient, syntheticsEsClient } = getUptimeESMockClient(); + esClient.search.mockResponseOnce( + getEsResponse({ + buckets: [], + }) + ); + + const overviewStatusService = new OverviewStatusService({ + request: { + query: { + locations, + }, + }, + syntheticsEsClient, + } as any); + + const result = await overviewStatusService.getOverviewStatus(); + + expect(result.pending).toEqual(pending); + }); + }); +}); + +function getEsResponse({ buckets, after }: { buckets: any[]; after?: any }) { + return { + took: 605, + timed_out: false, + _shards: { + total: 3, + successful: 3, + skipped: 0, + failed: 0, + }, + hits: { + hits: [], + }, + aggregations: { + monitors: { + buckets, + after_key: after, + }, + }, + }; +} diff --git a/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status_service.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status_service.ts new file mode 100644 index 0000000000000..5ff8a870db9de --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/overview_status_service.ts @@ -0,0 +1,363 @@ +/* + * 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 moment from 'moment/moment'; +import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SavedObjectsFindResult } from '@kbn/core-saved-objects-api-server'; +import { isEmpty } from 'lodash'; +import { withApmSpan } from '@kbn/apm-data-access-plugin/server/utils/with_apm_span'; +import { asMutableArray } from '../../../common/utils/as_mutable_array'; +import { getMonitorFilters, OverviewStatusQuery } from '../common'; +import { + getAllMonitors, + processMonitors, +} from '../../saved_objects/synthetics_monitor/get_all_monitors'; +import { ConfigKey } from '../../../common/constants/monitor_management'; +import { RouteContext } from '../types'; +import { + EncryptedSyntheticsMonitorAttributes, + OverviewStatusMetaData, +} from '../../../common/runtime_types'; +import { isStatusEnabled } from '../../../common/runtime_types/monitor_management/alert_config'; +import { + FINAL_SUMMARY_FILTER, + getRangeFilter, + getTimespanFilter, +} from '../../../common/constants/client_defaults'; + +type LocationStatus = Array<{ + status: string; + locationId: string; + timestamp: string; +}>; + +export const SUMMARIES_PAGE_SIZE = 5000; + +export class OverviewStatusService { + filterData: { + locationFilter?: string[] | string; + filtersStr?: string; + } = {}; + constructor( + private readonly routeContext: RouteContext, OverviewStatusQuery> + ) {} + + async getOverviewStatus() { + const { request } = this.routeContext; + const queryParams = request.query as OverviewStatusQuery; + + this.filterData = await getMonitorFilters({ + ...queryParams, + context: this.routeContext, + }); + + const [allConfigs, statusResult] = await Promise.all([ + this.getMonitorConfigs(), + this.getQueryResult(), + ]); + + const { up, down, pending, upConfigs, downConfigs, pendingConfigs, disabledConfigs } = + this.processOverviewStatus(allConfigs, statusResult); + + const { + enabledMonitorQueryIds, + disabledMonitorQueryIds, + allIds, + disabledCount, + disabledMonitorsCount, + projectMonitorsCount, + } = processMonitors(allConfigs, this.filterData?.locationFilter); + + return { + allIds, + allMonitorsCount: allConfigs.length, + disabledMonitorsCount, + projectMonitorsCount, + enabledMonitorQueryIds, + disabledMonitorQueryIds, + disabledCount, + up, + down, + pending, + upConfigs, + downConfigs, + pendingConfigs, + disabledConfigs, + }; + } + + getEsDataFilters() { + const { spaceId, request } = this.routeContext; + const params = request.query || {}; + const { + scopeStatusByLocation = true, + tags, + monitorTypes, + projects, + showFromAllSpaces, + } = params; + const { locationFilter } = this.filterData; + const getTermFilter = (field: string, value: string | string[] | undefined) => { + if (!value || isEmpty(value)) { + return []; + } + if (Array.isArray(value)) { + return [ + { + terms: { + [field]: value, + }, + }, + ]; + } + return [ + { + term: { + [field]: value, + }, + }, + ]; + }; + const filters: QueryDslQueryContainer[] = [ + ...(showFromAllSpaces ? [] : [{ term: { 'meta.space_id': spaceId } }]), + ...getTermFilter('monitor.type', monitorTypes), + ...getTermFilter('tags', tags), + ...getTermFilter('monitor.project.id', projects), + ]; + + if (scopeStatusByLocation && !isEmpty(locationFilter) && locationFilter) { + filters.push({ + terms: { + 'observer.name': locationFilter, + }, + }); + } + return filters; + } + + async getQueryResult() { + return withApmSpan('monitor_status_data', async () => { + const range = { + // max monitor schedule period is 4 hours, 20 minute subtraction is to be on safe side + from: moment().subtract(4, 'hours').subtract(20, 'minutes').toISOString(), + to: 'now', + }; + + let hasMoreData = true; + const monitorByIds = new Map(); + let afterKey: any; + let count = 0; + + do { + const result = await this.routeContext.syntheticsEsClient.search( + { + body: { + size: 0, + query: { + bool: { + filter: [ + FINAL_SUMMARY_FILTER, + getRangeFilter({ from: range.from, to: range.to }), + getTimespanFilter({ from: 'now-15m', to: 'now' }), + ...this.getEsDataFilters(), + ] as QueryDslQueryContainer[], + }, + }, + aggs: { + monitors: { + composite: { + size: SUMMARIES_PAGE_SIZE, + sources: asMutableArray([ + { + monitorId: { + terms: { + field: 'monitor.id', + }, + }, + }, + { + locationId: { + terms: { + field: 'observer.name', + }, + }, + }, + ] as const), + after: afterKey, + }, + aggs: { + status: { + top_metrics: { + metrics: { + field: 'monitor.status', + }, + sort: { + '@timestamp': 'desc', + }, + }, + }, + }, + }, + }, + }, + }, + 'getCurrentStatusOverview' + count + ); + count += 1; + const data = result.body.aggregations?.monitors; + + hasMoreData = (data?.buckets ?? []).length >= SUMMARIES_PAGE_SIZE; + afterKey = data?.after_key; + + data?.buckets.forEach(({ status: statusAgg, key: bKey }) => { + const monitorId = String(bKey.monitorId); + const locationId = String(bKey.locationId); + const status = String(statusAgg.top?.[0].metrics?.['monitor.status']); + const timestamp = String(statusAgg.top[0].sort[0]); + if (!monitorByIds.has(String(monitorId))) { + monitorByIds.set(monitorId, []); + } + monitorByIds.get(monitorId)?.push({ status, locationId, timestamp }); + }); + } while (hasMoreData && afterKey); + return monitorByIds; + }); + } + + processOverviewStatus( + monitors: Array>, + statusData: Map + ) { + let up = 0; + let down = 0; + const upConfigs: Record = {}; + const downConfigs: Record = {}; + const pendingConfigs: Record = {}; + const disabledConfigs: Record = {}; + + const enabledMonitors = monitors.filter((monitor) => monitor.attributes[ConfigKey.ENABLED]); + const disabledMonitors = monitors.filter((monitor) => !monitor.attributes[ConfigKey.ENABLED]); + + const queryLocIds = this.filterData?.locationFilter; + + disabledMonitors.forEach((monitor) => { + const monitorQueryId = monitor.attributes[ConfigKey.MONITOR_QUERY_ID]; + const meta = this.getMonitorMeta(monitor); + monitor.attributes[ConfigKey.LOCATIONS]?.forEach((location) => { + disabledConfigs[`${meta.configId}-${location.id}`] = { + monitorQueryId, + status: 'disabled', + locationId: location.id, + locationLabel: location.label, + ...meta, + }; + }); + }); + + enabledMonitors.forEach((monitor) => { + const monitorId = monitor.attributes[ConfigKey.MONITOR_QUERY_ID]; + const monitorStatus = statusData.get(monitorId); + + // discard any locations that are not in the monitorLocationsMap for the given monitor as well as those which are + // in monitorLocationsMap but not in listOfLocations + const monLocations = monitor.attributes[ConfigKey.LOCATIONS]; + monLocations?.forEach((monLocation) => { + if (!isEmpty(queryLocIds) && !queryLocIds?.includes(monLocation.id)) { + // filter out location provided via query + return; + } + const locData = monitorStatus?.find((loc) => loc.locationId === monLocation.id); + const meta = { + monitorQueryId: monitorId, + locationId: monLocation.id, + timestamp: locData?.timestamp, + locationLabel: monLocation.label, + ...this.getMonitorMeta(monitor), + }; + const monLocId = `${meta.configId}-${monLocation.id}`; + if (locData) { + if (locData.status === 'down') { + down += 1; + downConfigs[monLocId] = { + ...meta, + status: 'down', + }; + } else if (locData.status === 'up') { + up += 1; + upConfigs[monLocId] = { + ...meta, + status: 'up', + }; + } + } else { + pendingConfigs[monLocId] = { + status: 'unknown', + ...meta, + }; + } + }); + }); + + return { + up, + down, + pending: Object.values(pendingConfigs).length, + upConfigs, + downConfigs, + pendingConfigs, + disabledConfigs, + }; + } + + async getMonitorConfigs() { + const { savedObjectsClient, request } = this.routeContext; + const { query, showFromAllSpaces } = request.query || {}; + /** + * Walk through all monitor saved objects, bucket IDs by disabled/enabled status. + * + * Track max period to make sure the snapshot query should reach back far enough to catch + * latest ping for all enabled monitors. + */ + + const { filtersStr } = this.filterData; + + return await getAllMonitors({ + soClient: savedObjectsClient, + showFromAllSpaces, + search: query ? `${query}*` : '', + filter: filtersStr, + fields: [ + ConfigKey.ENABLED, + ConfigKey.LOCATIONS, + ConfigKey.MONITOR_QUERY_ID, + ConfigKey.CONFIG_ID, + ConfigKey.SCHEDULE, + ConfigKey.MONITOR_SOURCE_TYPE, + ConfigKey.MONITOR_TYPE, + ConfigKey.NAME, + ConfigKey.TAGS, + ConfigKey.PROJECT_ID, + ConfigKey.ALERT_CONFIG, + ], + }); + } + + getMonitorMeta(monitor: SavedObjectsFindResult) { + return { + name: monitor.attributes[ConfigKey.NAME], + configId: monitor.attributes[ConfigKey.CONFIG_ID], + schedule: monitor.attributes[ConfigKey.SCHEDULE].number, + tags: monitor.attributes[ConfigKey.TAGS], + isEnabled: monitor.attributes[ConfigKey.ENABLED], + type: monitor.attributes[ConfigKey.MONITOR_TYPE], + projectId: monitor.attributes[ConfigKey.PROJECT_ID], + isStatusAlertEnabled: isStatusEnabled(monitor.attributes[ConfigKey.ALERT_CONFIG]), + updated_at: monitor.updated_at, + spaceId: monitor.namespaces?.[0], + }; + } +} diff --git a/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/utils.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/utils.test.ts new file mode 100644 index 0000000000000..fef2927d7bd3a --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/utils.test.ts @@ -0,0 +1,27 @@ +/* + * 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 { periodToMs } from './utils'; + +describe('periodToMs', () => { + it('returns 0 for unsupported unit type', () => { + // @ts-expect-error Providing invalid value to test handler in function + expect(periodToMs({ number: '10', unit: 'rad' })).toEqual(0); + }); + + it('converts seconds', () => { + expect(periodToMs({ number: '10', unit: 's' })).toEqual(10_000); + }); + + it('converts minutes', () => { + expect(periodToMs({ number: '1', unit: 'm' })).toEqual(60_000); + }); + + it('converts hours', () => { + expect(periodToMs({ number: '1', unit: 'h' })).toEqual(3_600_000); + }); +}); diff --git a/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/utils.ts new file mode 100644 index 0000000000000..d02509a70e562 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_status/utils.ts @@ -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. + */ + +/** + * Helper function that converts a monitor's schedule to a value to use to generate + * an appropriate look-back window for snapshot count. + * @param schedule a number/unit pair that represents how often a configured monitor runs + * @returns schedule interval in ms + */ +import datemath, { Unit } from '@kbn/datemath'; + +export function periodToMs(schedule: { number: string; unit: Unit }) { + if (Object.keys(datemath.unitsMap).indexOf(schedule.unit) === -1) return 0; + + return parseInt(schedule.number, 10) * datemath.unitsMap[schedule.unit].base; +} diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/overview_trends/fetch_trends.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_trends/fetch_trends.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/overview_trends/fetch_trends.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/overview_trends/fetch_trends.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/overview_trends/overview_trends.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_trends/overview_trends.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/overview_trends/overview_trends.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/overview_trends/overview_trends.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/overview_trends/overview_trends.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/overview_trends/overview_trends.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/overview_trends/overview_trends.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/overview_trends/overview_trends.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/get_pings.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/pings/get_pings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/pings/get_pings.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/pings/get_pings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/pings/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/pings/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/pings/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/journey_screenshot_blocks.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/pings/journey_screenshot_blocks.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/pings/journey_screenshot_blocks.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/pings/journey_screenshot_blocks.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/journey_screenshots.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/pings/journey_screenshots.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/pings/journey_screenshots.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/pings/journey_screenshots.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/journeys.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/pings/journeys.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/pings/journeys.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/pings/journeys.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/last_successful_check.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/pings/last_successful_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/pings/last_successful_check.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/pings/last_successful_check.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/pings/ping_heatmap.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/pings/ping_heatmap.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/pings/ping_heatmap.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/pings/ping_heatmap.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/dynamic_settings.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/add_param.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/add_param.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/add_param.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/add_param.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/delete_param.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/delete_param.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/delete_param.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/delete_param.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/delete_params_bulk.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/delete_params_bulk.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/delete_params_bulk.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/delete_params_bulk.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/edit_param.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/edit_param.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/edit_param.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/edit_param.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/params.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/params.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/params/params.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/params/params.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/add_private_location.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/add_private_location.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/add_private_location.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/add_private_location.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/delete_private_location.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/delete_private_location.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/delete_private_location.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/delete_private_location.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/get_agent_policies.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/get_agent_policies.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/get_agent_policies.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/get_agent_policies.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/get_location_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/get_location_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/get_location_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/get_location_monitors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/get_private_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/get_private_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/get_private_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/get_private_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/helpers.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/helpers.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/helpers.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/helpers.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/helpers.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/helpers.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/helpers.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/private_locations/migrate_legacy_private_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/settings.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/settings.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/settings/sync_global_params.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/settings/sync_global_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/settings/sync_global_params.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/settings/sync_global_params.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/suggestions/route.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/suggestions/route.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/suggestions/route.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/suggestions/route.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/enablement.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/enablement.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/get_service_allowed.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/get_service_allowed.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/get_service_allowed.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/get_service_allowed.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/get_service_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/get_service_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/get_service_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/get_service_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/install_index_templates.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/install_index_templates.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/install_index_templates.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/install_index_templates.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/run_once_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/run_once_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/run_once_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/run_once_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/service_errors.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/service_errors.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/service_errors.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/service_errors.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/test_now_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/synthetics_service/test_now_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/telemetry/monitor_upgrade_sender.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/telemetry/monitor_upgrade_sender.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/telemetry/monitor_upgrade_sender.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/telemetry/monitor_upgrade_sender.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/telemetry/monitor_upgrade_sender.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/telemetry/monitor_upgrade_sender.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/telemetry/monitor_upgrade_sender.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/telemetry/monitor_upgrade_sender.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/routes/types.ts b/x-pack/solutions/observability/plugins/synthetics/server/routes/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/routes/types.ts rename to x-pack/solutions/observability/plugins/synthetics/server/routes/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/runtime_types/private_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/runtime_types/private_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/runtime_types/private_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/runtime_types/private_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/runtime_types/settings.ts b/x-pack/solutions/observability/plugins/synthetics/server/runtime_types/settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/runtime_types/settings.ts rename to x-pack/solutions/observability/plugins/synthetics/server/runtime_types/settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.6.0.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.6.0.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.6.0.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.6.0.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.6.0.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.6.0.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.6.0.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.6.0.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.8.0.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.8.0.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.8.0.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.8.0.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.8.0.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.8.0.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.8.0.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.8.0.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.9.0.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.9.0.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.9.0.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.9.0.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.9.0.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.9.0.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/8.9.0.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/8.9.0.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.5.0.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.5.0.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.5.0.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.5.0.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.7.0.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.7.0.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.7.0.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/monitors/test_fixtures/8.7.0.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/private_locations/model_version_1.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/private_locations/model_version_1.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/private_locations/model_version_1.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/private_locations/model_version_1.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/private_locations/model_version_1.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/private_locations/model_version_1.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/migrations/private_locations/model_version_1.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/migrations/private_locations/model_version_1.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/private_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/private_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/private_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/private_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/saved_objects.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/saved_objects.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/saved_objects.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/saved_objects.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/service_api_key.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/service_api_key.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/service_api_key.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/service_api_key.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts similarity index 75% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts index 8cae1ef32a8c3..ebf034d9eb7fb 100644 --- a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts +++ b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts @@ -11,8 +11,9 @@ import { SavedObjectsFindResult, } from '@kbn/core-saved-objects-api-server'; import { intersection } from 'lodash'; +import { withApmSpan } from '@kbn/apm-data-access-plugin/server/utils'; +import { periodToMs } from '../../routes/overview_status/utils'; import { syntheticsMonitorType } from '../../../common/types/saved_objects'; -import { periodToMs } from '../../routes/overview_status/overview_status'; import { ConfigKey, EncryptedSyntheticsMonitorAttributes, @@ -34,26 +35,28 @@ export const getAllMonitors = async ({ filter?: string; showFromAllSpaces?: boolean; } & Pick) => { - const finder = soClient.createPointInTimeFinder({ - type: syntheticsMonitorType, - perPage: 1000, - search, - sortField, - sortOrder, - fields, - filter, - searchFields, - ...(showFromAllSpaces && { namespaces: ['*'] }), - }); + return withApmSpan('get_all_monitors', async () => { + const finder = soClient.createPointInTimeFinder({ + type: syntheticsMonitorType, + perPage: 5000, + search, + sortField, + sortOrder, + fields, + filter, + searchFields, + ...(showFromAllSpaces && { namespaces: ['*'] }), + }); - const hits: Array> = []; - for await (const result of finder.find()) { - hits.push(...result.saved_objects); - } + const hits: Array> = []; + for await (const result of finder.find()) { + hits.push(...result.saved_objects); + } - finder.close().catch(() => {}); + finder.close().catch(() => {}); - return hits; + return hits; + }); }; export const processMonitors = ( @@ -86,13 +89,13 @@ export const processMonitors = ( monitorQueryIdToConfigIdMap[attrs[ConfigKey.MONITOR_QUERY_ID]] = attrs[ConfigKey.CONFIG_ID]; - const monitorLocations = attrs[ConfigKey.LOCATIONS].map((location) => location.id); + const monitorLocIds = attrs[ConfigKey.LOCATIONS].map((location) => location.id); if (attrs[ConfigKey.ENABLED] === false) { const queriedLocations = Array.isArray(queryLocations) ? queryLocations : [queryLocations]; const intersectingLocations = intersection( - monitorLocations, - queryLocations ? queriedLocations : monitorLocations + monitorLocIds, + queryLocations ? queriedLocations : monitorLocIds ); disabledCount += intersectingLocations.length; disabledMonitorsCount += 1; @@ -101,9 +104,9 @@ export const processMonitors = ( enabledMonitorQueryIds.push(attrs[ConfigKey.MONITOR_QUERY_ID]); monitorLocationsMap[attrs[ConfigKey.MONITOR_QUERY_ID]] = queryLocations - ? intersection(monitorLocations, queryLocations) - : monitorLocations; - listOfLocationsSet = new Set([...listOfLocationsSet, ...monitorLocations]); + ? intersection(monitorLocIds, queryLocations) + : monitorLocIds; + listOfLocationsSet = new Set([...listOfLocationsSet, ...monitorLocIds]); maxPeriod = Math.max(maxPeriod, periodToMs(attrs[ConfigKey.SCHEDULE])); } diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_param.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_param.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_param.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_param.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_settings.ts b/x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/saved_objects/synthetics_settings.ts rename to x-pack/solutions/observability/plugins/synthetics/server/saved_objects/synthetics_settings.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/server.ts b/x-pack/solutions/observability/plugins/synthetics/server/server.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/server.ts rename to x-pack/solutions/observability/plugins/synthetics/server/server.ts diff --git a/x-pack/solutions/observability/plugins/synthetics/server/synthetics_route_wrapper.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_route_wrapper.ts new file mode 100644 index 0000000000000..24abf55d53c43 --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_route_wrapper.ts @@ -0,0 +1,117 @@ +/* + * 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 { withApmSpan } from '@kbn/apm-data-access-plugin/server/utils/with_apm_span'; +import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; +import { isEmpty } from 'lodash'; +import { isKibanaResponse } from '@kbn/core-http-server'; +import { syntheticsServiceApiKey } from './saved_objects/service_api_key'; +import { isTestUser, SyntheticsEsClient } from './lib'; +import { SYNTHETICS_INDEX_PATTERN } from '../common/constants'; +import { checkIndicesReadPrivileges } from './synthetics_service/authentication/check_has_privilege'; +import { SyntheticsRouteWrapper } from './routes/types'; + +export const syntheticsRouteWrapper: SyntheticsRouteWrapper = ( + syntheticsRoute, + server, + syntheticsMonitorClient +) => ({ + ...syntheticsRoute, + options: { + ...(syntheticsRoute.options ?? {}), + }, + security: { + authz: { + requiredPrivileges: [ + 'uptime-read', + ...(syntheticsRoute.requiredPrivileges ?? []), + ...(syntheticsRoute?.writeAccess ? ['uptime-write'] : []), + ], + }, + }, + handler: async (context, request, response) => { + return withApmSpan('synthetics_route_handler', async () => { + const { elasticsearch, savedObjects, uiSettings } = await context.core; + + const { client: esClient } = elasticsearch; + const savedObjectsClient = savedObjects.getClient({ + includedHiddenTypes: [syntheticsServiceApiKey.name], + }); + + // specifically needed for the synthetics service api key generation + server.authSavedObjectsClient = savedObjectsClient; + + const syntheticsEsClient = new SyntheticsEsClient( + savedObjectsClient, + esClient.asCurrentUser, + { + request, + uiSettings, + isDev: Boolean(server.isDev) && !isTestUser(server), + heartbeatIndices: SYNTHETICS_INDEX_PATTERN, + } + ); + + server.syntheticsEsClient = syntheticsEsClient; + + const spaceId = server.spaces?.spacesService.getSpaceId(request) ?? DEFAULT_SPACE_ID; + + try { + const res = await syntheticsRoute.handler({ + syntheticsEsClient, + savedObjectsClient, + context, + request, + response, + server, + spaceId, + syntheticsMonitorClient, + }); + if (isKibanaResponse(res)) { + return res; + } + + const inspectData = await syntheticsEsClient.getInspectData(syntheticsRoute.path); + + if (Array.isArray(res)) { + if (isEmpty(inspectData)) { + return response.ok({ + body: res, + }); + } else { + return response.ok({ + body: { + result: res, + ...inspectData, + }, + }); + } + } + + return response.ok({ + body: { + ...res, + ...inspectData, + }, + }); + } catch (e) { + if (e.statusCode === 403) { + const privileges = await checkIndicesReadPrivileges(syntheticsEsClient); + if (!privileges.has_all_requested) { + return response.forbidden({ + body: { + message: + 'MissingIndicesPrivileges: You do not have permission to read from the synthetics-* indices. Please contact your administrator.', + }, + }); + } + } + server.logger.error(e); + throw e; + } + }); + }, +}); diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/authentication/check_has_privilege.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/authentication/check_has_privilege.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/authentication/check_has_privilege.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/authentication/check_has_privilege.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/common.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/common.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/common.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/formatting_utils.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/formatting_utils.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/formatting_utils.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/formatting_utils.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/formatting_utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/formatting_utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/formatting_utils.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/formatting_utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/lightweight_param_formatter.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/browser_formatters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/common_formatters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/formatters.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/formatters.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/formatters.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/formatters.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/formatters.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/formatters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/formatters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/formatting_utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/formatting_utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/formatting_utils.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/formatting_utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/http_formatters.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/http_formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/http_formatters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/http_formatters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/icmp_formatters.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/icmp_formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/icmp_formatters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/icmp_formatters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/processors_formatter.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/processors_formatter.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/processors_formatter.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/processors_formatter.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/tcp_formatters.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/tcp_formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/tcp_formatters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/tcp_formatters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/tls_formatters.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/tls_formatters.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/private_formatters/tls_formatters.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/private_formatters/tls_formatters.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/browser.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/browser.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/browser.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/browser.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/browser.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/browser.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/browser.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/browser.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/common.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/common.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/common.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/common.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/common.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/common.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/common.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/convert_to_data_stream.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/format_configs.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/formatting_utils.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/formatting_utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/formatting_utils.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/formatting_utils.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/http.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/http.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/http.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/http.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/icmp.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/icmp.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/icmp.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/icmp.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/tcp.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/tcp.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/tcp.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/tcp.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/tls.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/tls.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/public_formatters/tls.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/public_formatters/tls.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/variable_parser.js b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/variable_parser.js similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/formatters/variable_parser.js rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/formatters/variable_parser.js diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_all_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_all_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_all_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_all_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_api_key.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_api_key.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_es_hosts.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_es_hosts.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_es_hosts.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_es_hosts.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_es_hosts.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_es_hosts.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_es_hosts.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_es_hosts.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_private_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_private_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_private_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_private_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_service_locations.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_service_locations.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_service_locations.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_service_locations.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_service_locations.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_service_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/get_service_locations.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/get_service_locations.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/clean_up_task.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/clean_up_task.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/clean_up_task.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/clean_up_task.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/test_policy.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/test_policy.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/private_location/test_policy.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/private_location/test_policy.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/browser_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/common_fields.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/http_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/icmp_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/normalizers/tcp_monitor.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/project_monitor/project_monitor_formatter.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/service_api_client.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/service_api_client.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/service_api_client.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/service_api_client.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/service_api_client.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/service_api_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/service_api_client.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/service_api_client.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_service.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_service.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_service.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_service.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_service.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_service.ts similarity index 97% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_service.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_service.ts index c223de84c42dc..164515ad76c1b 100644 --- a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/synthetics_service.ts +++ b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/synthetics_service.ts @@ -309,9 +309,10 @@ export class SyntheticsService { return this.server.coreStart?.elasticsearch.client.asInternalUser; } - async getOutput() { + async getOutput({ inspect }: { inspect: boolean } = { inspect: false }) { const { apiKey, isValid } = await getAPIKeyForSyntheticsService({ server: this.server }); - if (!isValid) { + // do not check for api key validity if inspecting + if (!isValid && !inspect) { this.server.logger.error( 'API key is not valid. Cannot push monitor configuration to synthetics public testing locations' ); @@ -332,7 +333,7 @@ export class SyntheticsService { const monitors = this.formatConfigs(config); const license = await this.getLicense(); - const output = await this.getOutput(); + const output = await this.getOutput({ inspect: true }); if (output) { return await this.apiClient.inspect({ monitors, @@ -356,11 +357,18 @@ export class SyntheticsService { if (output) { this.logger.debug(`1 monitor will be pushed to synthetics service.`); - this.syncErrors = await this.apiClient.post({ - monitors, - output, - license, - }); + this.apiClient + .post({ + monitors, + output, + license, + }) + .then((res) => { + this.syncErrors = res; + }) + .catch((e) => { + this.logger.error(e); + }); } return this.syncErrors; } catch (e) { diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/fake_kibana_request.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/fake_kibana_request.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/fake_kibana_request.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/fake_kibana_request.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/mocks.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/mocks.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/mocks.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/mocks.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/secrets.ts b/x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/secrets.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/synthetics_service/utils/secrets.ts rename to x-pack/solutions/observability/plugins/synthetics/server/synthetics_service/utils/secrets.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/telemetry/__mocks__/index.ts b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/telemetry/__mocks__/index.ts rename to x-pack/solutions/observability/plugins/synthetics/server/telemetry/__mocks__/index.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/telemetry/constants.ts b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/telemetry/constants.ts rename to x-pack/solutions/observability/plugins/synthetics/server/telemetry/constants.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/telemetry/queue.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/queue.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/telemetry/queue.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/telemetry/queue.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/telemetry/queue.ts b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/queue.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/telemetry/queue.ts rename to x-pack/solutions/observability/plugins/synthetics/server/telemetry/queue.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.test.ts b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.test.ts rename to x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.test.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.ts b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/telemetry/sender.ts rename to x-pack/solutions/observability/plugins/synthetics/server/telemetry/sender.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/telemetry/types.ts b/x-pack/solutions/observability/plugins/synthetics/server/telemetry/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/telemetry/types.ts rename to x-pack/solutions/observability/plugins/synthetics/server/telemetry/types.ts diff --git a/x-pack/plugins/observability_solution/synthetics/server/types.ts b/x-pack/solutions/observability/plugins/synthetics/server/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/synthetics/server/types.ts rename to x-pack/solutions/observability/plugins/synthetics/server/types.ts diff --git a/x-pack/solutions/observability/plugins/synthetics/tsconfig.json b/x-pack/solutions/observability/plugins/synthetics/tsconfig.json new file mode 100644 index 0000000000000..ece2a3934e60c --- /dev/null +++ b/x-pack/solutions/observability/plugins/synthetics/tsconfig.json @@ -0,0 +1,113 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "__mocks__/**/*", + "common/**/*", + "scripts/**/*", + "public/**/*", + "server/**/*", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/alerting-plugin", + "@kbn/ml-plugin", + "@kbn/triggers-actions-ui-plugin", + "@kbn/observability-plugin", + "@kbn/fleet-plugin", + "@kbn/unified-search-plugin", + "@kbn/i18n", + "@kbn/core", + "@kbn/config-schema", + "@kbn/server-http-tools", + "@kbn/datemath", + "@kbn/share-plugin", + "@kbn/discover-plugin", + "@kbn/home-plugin", + "@kbn/embeddable-plugin", + "@kbn/data-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/inspector-plugin", + "@kbn/cases-plugin", + "@kbn/cloud-plugin", + "@kbn/data-views-plugin", + "@kbn/spaces-plugin", + "@kbn/core-doc-links-browser", + "@kbn/usage-collection-plugin", + "@kbn/kibana-react-plugin", + "@kbn/i18n-react", + "@kbn/securitysolution-io-ts-utils", + "@kbn/es-query", + "@kbn/stack-connectors-plugin", + "@kbn/rule-data-utils", + "@kbn/core-http-browser", + "@kbn/core-notifications-browser", + "@kbn/rison", + "@kbn/licensing-plugin", + "@kbn/rule-registry-plugin", + "@kbn/encrypted-saved-objects-plugin", + "@kbn/security-plugin", + "@kbn/logging-mocks", + "@kbn/task-manager-plugin", + "@kbn/es-types", + "@kbn/core-http-server-mocks", + "@kbn/utility-types", + "@kbn/telemetry-plugin", + "@kbn/core-elasticsearch-client-server-mocks", + "@kbn/core-saved-objects-api-server", + "@kbn/core-saved-objects-common", + "@kbn/features-plugin", + "@kbn/bfetch-plugin", + "@kbn/actions-plugin", + "@kbn/core-elasticsearch-server", + "@kbn/core-saved-objects-api-server-mocks", + "@kbn/core-saved-objects-server", + "@kbn/shared-ux-prompt-not-found", + "@kbn/logging", + "@kbn/shared-ux-router", + "@kbn/alerts-as-data-utils", + "@kbn/exploratory-view-plugin", + "@kbn/observability-shared-plugin", + "@kbn/core-http-server", + "@kbn/std", + "@kbn/core-saved-objects-server-mocks", + "@kbn/shared-ux-page-kibana-template", + "@kbn/observability-ai-assistant-plugin", + "@kbn/unified-doc-viewer-plugin", + "@kbn/code-editor", + "@kbn/code-editor-mock", + "@kbn/securitysolution-io-ts-types", + "@kbn/shared-ux-link-redirect-app", + "@kbn/serverless", + "@kbn/repo-info", + "@kbn/index-management-plugin", + "@kbn/license-management-plugin", + "@kbn/react-kibana-mount", + "@kbn/react-kibana-context-render", + "@kbn/react-kibana-context-theme", + "@kbn/search-types", + "@kbn/core-lifecycle-browser", + "@kbn/ui-actions-browser", + "@kbn/presentation-publishing", + "@kbn/presentation-containers", + "@kbn/ui-actions-plugin", + "@kbn/presentation-util-plugin", + "@kbn/core-application-browser", + "@kbn/dashboard-plugin", + "@kbn/search-types", + "@kbn/slo-schema", + "@kbn/alerting-types", + "@kbn/babel-register", + "@kbn/slo-plugin", + "@kbn/ebt-tools", + "@kbn/alerting-types", + "@kbn/core-chrome-browser", + "@kbn/core-rendering-browser", + "@kbn/index-lifecycle-management-common-shared", + "@kbn/core-http-server-utils", + "@kbn/apm-data-access-plugin" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/observability_solution/uptime/.buildkite/pipelines/flaky.js b/x-pack/solutions/observability/plugins/uptime/.buildkite/pipelines/flaky.js similarity index 100% rename from x-pack/plugins/observability_solution/uptime/.buildkite/pipelines/flaky.js rename to x-pack/solutions/observability/plugins/uptime/.buildkite/pipelines/flaky.js diff --git a/x-pack/solutions/observability/plugins/uptime/.buildkite/pipelines/flaky.sh b/x-pack/solutions/observability/plugins/uptime/.buildkite/pipelines/flaky.sh new file mode 100755 index 0000000000000..9763f45c1101c --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/.buildkite/pipelines/flaky.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +UUID="$(cat /proc/sys/kernel/random/uuid)" +export UUID + +node x-pack/solutions/observability/plugins/synthetics/.buildkite/pipelines/flaky.js | buildkite-agent pipeline upload diff --git a/x-pack/solutions/observability/plugins/uptime/README.md b/x-pack/solutions/observability/plugins/uptime/README.md new file mode 100644 index 0000000000000..18ba1830b2a53 --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/README.md @@ -0,0 +1,97 @@ +# Uptime Monitoring + +## Purpose + +The purpose of this plugin is to provide users of Heartbeat more visibility of what's happening +in their infrastructure. + +## Layout + +There are three sections to the app, `common`, `public`, and `server`. + +### common + +Contains runtime types types, constants and a few other files. + +Notably, we use `io-ts`/`fp-ts` functions and types to help provide +additional runtime safety for our API requests/responses. + +### public + +We use Redux and associated tools for managing our app state. Components come in the usual `connect`ed and +presentational varieties. + +The `lib` directory controls bootstrapping code and adapter types. + +There is a `pages` directory; each view gets its own page component. + +The principal structure of the app is stored in `uptime_app.tsx`. + +### server + +The `lib` directory contains `adapters`, which are connections to external resources like Kibana +Server, Elasticsearch, etc. In addition, it contains domains, which are libraries that provide +functionality via adapters. + +The `requests` directory contains functions responsible for querying Elasticsearch and parsing its +responses. + +There's also a `rest_api` folder that defines the structure of the RESTful API endpoints. + +## Testing + +### Unit tests + +Documentation: https://www.elastic.co/guide/en/kibana/current/development-tests.html#_unit_testing + +``` +yarn test:jest x-pack/solutions/observability/plugins/synthetics +``` + +### Functional tests + +In one shell, from **~/kibana/x-pack**: +`node scripts/functional_tests_server.js` + +In another shell, from **~kibana/x-pack**: +`node ../scripts/functional_test_runner.js --grep="{TEST_NAME}"`. + +#### API tests + +If instead you need to run API tests, start up the test server and then in another shell, from **~kibana/x-pack**: +`node ../scripts/functional_test_runner.js --config test/api_integration/config.ts --grep="{TEST_NAME}"`. + +You can update snapshots by prefixing the runner command with `env UPDATE_UPTIME_FIXTURES=1` + +You can access the functional test server's Kibana at `http://localhost:5620/`. + +You can login with username `elastic` and password `changeme` by default. + +If you want to freeze a UI or API test you can include an async call like `await new Promise(r => setTimeout(r, 1000 * 60))` +to freeze the execution for 60 seconds if you need to click around or check things in the state that is loaded. + +#### Running --ssl tests + +Some of our tests require there to be an SSL connection between Kibana and Elasticsearch. + +We can run these tests like described above, but with some special config. + +`node scripts/functional_tests_server.js --config=test/functional_with_es_ssl/config.ts` + +`node scripts/functional_test_runner.js --config=test/functional_with_es_ssl/config.ts` + +#### Running accessibility tests + +We maintain a suite of Accessibility tests (you may see them referred to elsewhere as `a11y` tests). + +These tests render each of our pages and ensure that the inputs and other elements contain the +attributes necessary to ensure all users are able to make use of Kibana (for example, users relying +on screen readers). + +The commands for running these tests are very similar to the other functional tests described above. + +From the `~/x-pack` directory: + +Start the server: `node scripts/functional_tests_server --config test/accessibility/config.ts` + +Run the uptime `a11y` tests: `node scripts/functional_test_runner.js --config test/accessibility/config.ts --grep=uptime` diff --git a/x-pack/plugins/observability_solution/uptime/common/config.ts b/x-pack/solutions/observability/plugins/uptime/common/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/config.ts rename to x-pack/solutions/observability/plugins/uptime/common/config.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/capabilities.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/capabilities.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/capabilities.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/capabilities.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/chart_format_limits.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/chart_format_limits.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/chart_format_limits.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/chart_format_limits.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/client_defaults.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/client_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/client_defaults.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/client_defaults.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/context_defaults.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/context_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/context_defaults.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/context_defaults.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/index.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/plugin.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/plugin.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/plugin.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/query.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/query.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/query.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/query.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/rest_api.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/rest_api.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/rest_api.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/rest_api.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/settings_defaults.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/settings_defaults.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/settings_defaults.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/settings_defaults.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/synthetics_alerts.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/synthetics_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/synthetics_alerts.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/synthetics_alerts.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/ui.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/ui.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/ui.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/ui.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/constants/uptime_alerts.ts b/x-pack/solutions/observability/plugins/uptime/common/constants/uptime_alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/constants/uptime_alerts.ts rename to x-pack/solutions/observability/plugins/uptime/common/constants/uptime_alerts.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/index.ts b/x-pack/solutions/observability/plugins/uptime/common/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/__snapshots__/assert_close_to.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/common/lib/__snapshots__/assert_close_to.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/__snapshots__/assert_close_to.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/common/lib/__snapshots__/assert_close_to.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/assert_close_to.test.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/assert_close_to.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/assert_close_to.test.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/assert_close_to.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/assert_close_to.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/assert_close_to.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/assert_close_to.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/assert_close_to.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/combine_filters_and_user_search.test.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/combine_filters_and_user_search.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/combine_filters_and_user_search.test.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/combine_filters_and_user_search.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/combine_filters_and_user_search.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/combine_filters_and_user_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/combine_filters_and_user_search.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/combine_filters_and_user_search.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/get_histogram_interval.test.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/get_histogram_interval.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/get_histogram_interval.test.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/get_histogram_interval.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/get_histogram_interval.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/get_histogram_interval.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/get_histogram_interval.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/get_histogram_interval.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/index.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/ml.test.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/ml.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/ml.test.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/ml.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/ml.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/ml.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/ml.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/ml.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/stringify_kueries.test.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/stringify_kueries.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/stringify_kueries.test.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/stringify_kueries.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/lib/stringify_kueries.ts b/x-pack/solutions/observability/plugins/uptime/common/lib/stringify_kueries.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/lib/stringify_kueries.ts rename to x-pack/solutions/observability/plugins/uptime/common/lib/stringify_kueries.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/requests/get_certs_request_body.ts b/x-pack/solutions/observability/plugins/uptime/common/requests/get_certs_request_body.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/requests/get_certs_request_body.ts rename to x-pack/solutions/observability/plugins/uptime/common/requests/get_certs_request_body.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/rules/alert_actions.test.ts b/x-pack/solutions/observability/plugins/uptime/common/rules/alert_actions.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/rules/alert_actions.test.ts rename to x-pack/solutions/observability/plugins/uptime/common/rules/alert_actions.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/rules/alert_actions.ts b/x-pack/solutions/observability/plugins/uptime/common/rules/alert_actions.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/rules/alert_actions.ts rename to x-pack/solutions/observability/plugins/uptime/common/rules/alert_actions.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/rules/legacy_uptime/translations.ts b/x-pack/solutions/observability/plugins/uptime/common/rules/legacy_uptime/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/rules/legacy_uptime/translations.ts rename to x-pack/solutions/observability/plugins/uptime/common/rules/legacy_uptime/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/rules/types.ts b/x-pack/solutions/observability/plugins/uptime/common/rules/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/rules/types.ts rename to x-pack/solutions/observability/plugins/uptime/common/rules/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/rules/uptime_rule_field_map.ts b/x-pack/solutions/observability/plugins/uptime/common/rules/uptime_rule_field_map.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/rules/uptime_rule_field_map.ts rename to x-pack/solutions/observability/plugins/uptime/common/rules/uptime_rule_field_map.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/common.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/common.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/common.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/index.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/status_check.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/status_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/status_check.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/status_check.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/tls.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/tls.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/alerts/tls.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/alerts/tls.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/certs.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/certs.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/certs.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/certs.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/common.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/common.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/common.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/dynamic_settings.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/index.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/monitor/index.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/monitor/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/monitor/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/monitor/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/monitor/locations.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/monitor/locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/monitor/locations.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/monitor/locations.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/monitor/state.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/monitor/state.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/monitor/state.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/monitor/state.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/network_events.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/network_events.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/network_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/error_state.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/error_state.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/error_state.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/error_state.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/histogram.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/histogram.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/histogram.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/histogram.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/index.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/observer.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/observer.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/observer.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/observer.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/ping.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/ping.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/ping.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/synthetics.test.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/synthetics.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/synthetics.test.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/synthetics.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/synthetics.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/synthetics.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/ping/synthetics.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/ping/synthetics.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/snapshot/index.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/snapshot/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/snapshot/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/snapshot/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/runtime_types/snapshot/snapshot_count.ts b/x-pack/solutions/observability/plugins/uptime/common/runtime_types/snapshot/snapshot_count.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/runtime_types/snapshot/snapshot_count.ts rename to x-pack/solutions/observability/plugins/uptime/common/runtime_types/snapshot/snapshot_count.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/translations.ts b/x-pack/solutions/observability/plugins/uptime/common/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/translations.ts rename to x-pack/solutions/observability/plugins/uptime/common/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/translations/translations.ts b/x-pack/solutions/observability/plugins/uptime/common/translations/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/translations/translations.ts rename to x-pack/solutions/observability/plugins/uptime/common/translations/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/types/index.ts b/x-pack/solutions/observability/plugins/uptime/common/types/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/types/index.ts rename to x-pack/solutions/observability/plugins/uptime/common/types/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/types/integration_deprecation.ts b/x-pack/solutions/observability/plugins/uptime/common/types/integration_deprecation.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/types/integration_deprecation.ts rename to x-pack/solutions/observability/plugins/uptime/common/types/integration_deprecation.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/types/monitor_duration.ts b/x-pack/solutions/observability/plugins/uptime/common/types/monitor_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/types/monitor_duration.ts rename to x-pack/solutions/observability/plugins/uptime/common/types/monitor_duration.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/types/synthetics_monitor.ts b/x-pack/solutions/observability/plugins/uptime/common/types/synthetics_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/types/synthetics_monitor.ts rename to x-pack/solutions/observability/plugins/uptime/common/types/synthetics_monitor.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/utils/as_mutable_array.ts b/x-pack/solutions/observability/plugins/uptime/common/utils/as_mutable_array.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/utils/as_mutable_array.ts rename to x-pack/solutions/observability/plugins/uptime/common/utils/as_mutable_array.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/utils/es_search.ts b/x-pack/solutions/observability/plugins/uptime/common/utils/es_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/utils/es_search.ts rename to x-pack/solutions/observability/plugins/uptime/common/utils/es_search.ts diff --git a/x-pack/plugins/observability_solution/uptime/common/utils/get_monitor_url.ts b/x-pack/solutions/observability/plugins/uptime/common/utils/get_monitor_url.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/common/utils/get_monitor_url.ts rename to x-pack/solutions/observability/plugins/uptime/common/utils/get_monitor_url.ts diff --git a/x-pack/solutions/observability/plugins/uptime/e2e/README.md b/x-pack/solutions/observability/plugins/uptime/e2e/README.md new file mode 100644 index 0000000000000..35b3a05f639da --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/e2e/README.md @@ -0,0 +1,32 @@ +## How to run these tests + +These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated +script for standing up the test server. + +### Start the server + +From `~/x-pack/solutions/observability/plugins/synthetics/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you +with an example run command when it finishes. + +### Run the tests + +From the same directory you can now run `node e2e.js --runner`. + +In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. + + +## Uptime App Tests + +These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated +script for standing up the test server. + +### Start the server + +From `~/x-pack/solutions/observability/plugins/uptime/scripts`, run `node uptime_e2e.js --server`. Wait for the server to startup. It will provide you +with an example run command when it finishes. + +### Run the tests + +From the same directory you can now run `node uptime_e2e.js --runner`. + +In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/solutions/observability/plugins/uptime/e2e/config.ts b/x-pack/solutions/observability/plugins/uptime/e2e/config.ts new file mode 100644 index 0000000000000..f38a590ed1502 --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/e2e/config.ts @@ -0,0 +1,79 @@ +/* + * 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 { FtrConfigProviderContext } from '@kbn/test'; +import { CA_CERT_PATH } from '@kbn/dev-utils'; +import { commonFunctionalServices } from '@kbn/ftr-common-functional-services'; +import { commonFunctionalUIServices } from '@kbn/ftr-common-functional-ui-services'; +import { readKibanaConfig } from '@kbn/observability-synthetics-test-data'; +const MANIFEST_KEY = 'xpack.uptime.service.manifestUrl'; +const SERVICE_PASSWORD = 'xpack.uptime.service.password'; +const SERVICE_USERNAME = 'xpack.uptime.service.username'; + +async function config({ readConfigFile }: FtrConfigProviderContext) { + const kibanaCommonTestsConfig = await readConfigFile( + require.resolve('@kbn/test-suites-src/common/config') + ); + const xpackFunctionalTestsConfig = await readConfigFile( + require.resolve('@kbn/test-suites-xpack/functional/config.base') + ); + + const kibanaConfig = readKibanaConfig(); + + const manifestUrl = process.env.SYNTHETICS_SERVICE_MANIFEST ?? kibanaConfig[MANIFEST_KEY]; + const serviceUsername = process.env.SYNTHETICS_SERVICE_USERNAME ?? kibanaConfig[SERVICE_USERNAME]; + const servicePassword = process.env.SYNTHETICS_SERVICE_PASSWORD ?? kibanaConfig[SERVICE_PASSWORD]; + + return { + ...kibanaCommonTestsConfig.getAll(), + + services: { + ...commonFunctionalServices, + ...commonFunctionalUIServices, + }, + + esTestCluster: { + ...xpackFunctionalTestsConfig.get('esTestCluster'), + serverArgs: [ + ...xpackFunctionalTestsConfig.get('esTestCluster.serverArgs'), + // define custom es server here + // API Keys is enabled at the top level + 'xpack.security.enabled=true', + ], + }, + + kbnTestServer: { + ...xpackFunctionalTestsConfig.get('kbnTestServer'), + sourceArgs: process.env.WATCH_ENABLED + ? [] + : [...xpackFunctionalTestsConfig.get('kbnTestServer.sourceArgs'), '--no-watch'], + serverArgs: [ + ...xpackFunctionalTestsConfig.get('kbnTestServer.serverArgs'), + '--csp.strict=false', + '--home.disableWelcomeScreen=true', + '--csp.warnLegacyBrowsers=false', + // define custom kibana server args here + `--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`, + // `--elasticsearch.ignoreVersionMismatch=${process.env.CI ? 'false' : 'true'}`, + `--elasticsearch.username=kibana_system`, + `--elasticsearch.password=changeme`, + '--xpack.reporting.enabled=false', + `--xpack.uptime.service.manifestUrl=${manifestUrl}`, + `--xpack.uptime.service.username=${ + process.env.SYNTHETICS_REMOTE_ENABLED + ? serviceUsername + : 'localKibanaIntegrationTestsUser' + }`, + `--xpack.uptime.service.password=${servicePassword}`, + '--uiSettings.overrides.observability:enableLegacyUptimeApp=true', + ], + }, + }; +} + +// eslint-disable-next-line import/no-default-export +export default config; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/browser/data.json.gz b/x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/browser/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/browser/data.json.gz rename to x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/browser/data.json.gz diff --git a/x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/browser/mappings.json b/x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/browser/mappings.json similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/browser/mappings.json rename to x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/browser/mappings.json diff --git a/x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz b/x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz rename to x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/full_heartbeat/data.json.gz diff --git a/x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/full_heartbeat/mappings.json b/x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/full_heartbeat/mappings.json similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/full_heartbeat/mappings.json rename to x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/full_heartbeat/mappings.json diff --git a/x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/synthetics_data/data.json.gz b/x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/synthetics_data/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/fixtures/es_archiver/synthetics_data/data.json.gz rename to x-pack/solutions/observability/plugins/uptime/e2e/fixtures/es_archiver/synthetics_data/data.json.gz diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/make_checks.ts b/x-pack/solutions/observability/plugins/uptime/e2e/helpers/make_checks.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/helpers/make_checks.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/helpers/make_checks.ts diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/make_ping.ts b/x-pack/solutions/observability/plugins/uptime/e2e/helpers/make_ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/helpers/make_ping.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/helpers/make_ping.ts diff --git a/x-pack/plugins/observability_solution/uptime/e2e/helpers/make_tls.ts b/x-pack/solutions/observability/plugins/uptime/e2e/helpers/make_tls.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/helpers/make_tls.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/helpers/make_tls.ts diff --git a/x-pack/solutions/observability/plugins/uptime/e2e/helpers/utils.ts b/x-pack/solutions/observability/plugins/uptime/e2e/helpers/utils.ts new file mode 100644 index 0000000000000..f340ef8b78b3a --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/e2e/helpers/utils.ts @@ -0,0 +1,58 @@ +/* + * 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 { expect, Page } from '@elastic/synthetics'; + +export async function waitForLoadingToFinish({ page }: { page: Page }) { + while (true) { + if (!(await page.isVisible(byTestId('kbnLoadingMessage'), { timeout: 5000 }))) break; + await page.waitForTimeout(1000); + } +} + +export async function loginToKibana({ + page, + user, +}: { + page: Page; + user?: { username: string; password: string }; +}) { + await page.fill('[data-test-subj=loginUsername]', user?.username ?? 'elastic', { + timeout: 60 * 1000, + }); + + await page.fill('[data-test-subj=loginPassword]', user?.password ?? 'changeme'); + + await page.click('[data-test-subj=loginSubmit]'); + + await waitForLoadingToFinish({ page }); +} + +export const byTestId = (testId: string) => { + return `[data-test-subj=${testId}]`; +}; + +export const assertText = async ({ page, text }: { page: Page; text: string }) => { + const element = await page.waitForSelector(`text=${text}`); + expect(await element.isVisible()).toBeTruthy(); +}; + +export const assertNotText = async ({ page, text }: { page: Page; text: string }) => { + expect(await page.$(`text=${text}`)).toBeFalsy(); +}; + +export const getQuerystring = (params: object) => { + return Object.entries(params) + .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value)) + .join('&'); +}; + +export const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); + +export const TIMEOUT_60_SEC = { + timeout: 60 * 1000, +}; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/page_objects/login.tsx b/x-pack/solutions/observability/plugins/uptime/e2e/page_objects/login.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/page_objects/login.tsx rename to x-pack/solutions/observability/plugins/uptime/e2e/page_objects/login.tsx diff --git a/x-pack/plugins/observability_solution/uptime/e2e/page_objects/utils.tsx b/x-pack/solutions/observability/plugins/uptime/e2e/page_objects/utils.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/page_objects/utils.tsx rename to x-pack/solutions/observability/plugins/uptime/e2e/page_objects/utils.tsx diff --git a/x-pack/solutions/observability/plugins/uptime/e2e/tsconfig.json b/x-pack/solutions/observability/plugins/uptime/e2e/tsconfig.json new file mode 100644 index 0000000000000..631b6f4194445 --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/e2e/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "exclude": ["tmp", "target/**/*"], + "include": ["**/*"], + "compilerOptions": { + "outDir": "target/types", + "types": ["node"], + "isolatedModules": false + }, + "kbn_references": [ + "@kbn/test", + "@kbn/dev-utils", + "@kbn/ux-plugin/e2e", + "@kbn/ftr-common-functional-services", + "@kbn/apm-plugin", + "@kbn/ftr-common-functional-ui-services", + "@kbn/observability-synthetics-test-data" + ] +} diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/default_email_settings.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/default_email_settings.ts similarity index 97% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/default_email_settings.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/default_email_settings.ts index 2865084aa29e8..2050134a26d69 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/default_email_settings.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/default_email_settings.ts @@ -6,13 +6,13 @@ */ import { journey, step, before } from '@elastic/synthetics'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { assertNotText, assertText, byTestId, waitForLoadingToFinish, } from '../../../helpers/utils'; -import { recordVideo } from '../../../helpers/record_video'; import { settingsPageProvider } from '../../page_objects/settings'; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/index.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/index.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/status_alert_flyouts_in_alerting_app.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/status_alert_flyouts_in_alerting_app.ts similarity index 98% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/status_alert_flyouts_in_alerting_app.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/status_alert_flyouts_in_alerting_app.ts index b3cdfbe134935..ddd3501244109 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/status_alert_flyouts_in_alerting_app.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/status_alert_flyouts_in_alerting_app.ts @@ -7,8 +7,8 @@ import { journey, step, expect, before } from '@elastic/synthetics'; import { RetryService } from '@kbn/ftr-common-functional-services'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { byTestId, assertText, waitForLoadingToFinish } from '../../../helpers/utils'; -import { recordVideo } from '../../../helpers/record_video'; import { loginPageProvider } from '../../../page_objects/login'; journey('StatusFlyoutInAlertingApp', async ({ page, params }) => { diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/tls_alert_flyouts_in_alerting_app.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/tls_alert_flyouts_in_alerting_app.ts similarity index 95% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/tls_alert_flyouts_in_alerting_app.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/tls_alert_flyouts_in_alerting_app.ts index f8ac13ff0361a..2209a1b12a803 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/alerts/tls_alert_flyouts_in_alerting_app.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/alerts/tls_alert_flyouts_in_alerting_app.ts @@ -6,8 +6,8 @@ */ import { journey, step, before, expect } from '@elastic/synthetics'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { byTestId, assertText, waitForLoadingToFinish } from '../../../helpers/utils'; -import { recordVideo } from '../../../helpers/record_video'; import { loginPageProvider } from '../../../page_objects/login'; journey('TlsFlyoutInAlertingApp', async ({ page, params }) => { diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/data_view_permissions.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/data_view_permissions.ts similarity index 96% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/data_view_permissions.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/data_view_permissions.ts index f8b74dabc027b..ee3ead7d615c4 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/data_view_permissions.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/data_view_permissions.ts @@ -7,8 +7,8 @@ import { journey, step, expect, before } from '@elastic/synthetics'; import { callKibana } from '@kbn/apm-plugin/server/test_helpers/create_apm_users/helpers/call_kibana'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { byTestId, TIMEOUT_60_SEC, waitForLoadingToFinish } from '../../helpers/utils'; -import { recordVideo } from '../../helpers/record_video'; import { loginPageProvider } from '../../page_objects/login'; journey('DataViewPermissions', async ({ page, params }) => { diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/index.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/index.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/locations/index.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/locations/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/locations/index.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/locations/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/locations/locations.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/locations/locations.ts similarity index 97% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/locations/locations.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/locations/locations.ts index afb5ebf0c04a1..efda8352d93b1 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/locations/locations.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/locations/locations.ts @@ -6,7 +6,7 @@ */ import { journey, step, before, Page } from '@elastic/synthetics'; -import { recordVideo } from '../../../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { makeChecksWithStatus } from '../../../helpers/make_checks'; import { monitorDetailsPageProvider } from '../../page_objects/monitor_details'; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/index.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/index.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/monitor_alerts.journey.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/monitor_alerts.journey.ts similarity index 97% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/monitor_alerts.journey.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/monitor_alerts.journey.ts index 88a174f76cc59..6e5ed114d72de 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/monitor_alerts.journey.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/monitor_alerts.journey.ts @@ -7,8 +7,8 @@ import { journey, step, expect, before, Page } from '@elastic/synthetics'; import { noop } from 'lodash'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { byTestId, delay } from '../../../helpers/utils'; -import { recordVideo } from '../../../helpers/record_video'; import { monitorDetailsPageProvider } from '../../page_objects/monitor_details'; const dateRangeStart = '2019-09-10T12:40:08.078Z'; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/monitor_details.journey.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/monitor_details.journey.ts similarity index 96% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/monitor_details.journey.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/monitor_details.journey.ts index f46081c7b3823..b54d462cdfaa3 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/monitor_details.journey.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/monitor_details.journey.ts @@ -6,8 +6,8 @@ */ import { journey, step, before, Page } from '@elastic/synthetics'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { byTestId } from '../../../helpers/utils'; -import { recordVideo } from '../../../helpers/record_video'; import { monitorDetailsPageProvider } from '../../page_objects/monitor_details'; const dateRangeStart = '2019-09-10T12:40:08.078Z'; diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/ping_redirects.journey.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/ping_redirects.journey.ts similarity index 97% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/ping_redirects.journey.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/ping_redirects.journey.ts index 502217721381d..d90438721715a 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/monitor_details/ping_redirects.journey.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/monitor_details/ping_redirects.journey.ts @@ -6,8 +6,8 @@ */ import { journey, step, expect, before, Page } from '@elastic/synthetics'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { byTestId, delay } from '../../../helpers/utils'; -import { recordVideo } from '../../../helpers/record_video'; import { makeChecksWithStatus } from '../../../helpers/make_checks'; import { monitorDetailsPageProvider } from '../../page_objects/monitor_details'; diff --git a/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/step_duration.journey.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/step_duration.journey.ts new file mode 100644 index 0000000000000..41f31681fd06f --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/step_duration.journey.ts @@ -0,0 +1,55 @@ +/* + * 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 { journey, step, expect } from '@elastic/synthetics'; +import { RetryService } from '@kbn/ftr-common-functional-services'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; +import { loginPageProvider } from '../../page_objects/login'; + +journey('StepsDuration', async ({ page, params }) => { + recordVideo(page); + + const retry: RetryService = params.getService('retry'); + + const login = loginPageProvider({ page }); + + const queryParams = new URLSearchParams({ + dateRangeStart: '2021-11-21T22:06:06.502Z', + dateRangeEnd: '2021-11-21T22:10:08.203Z', + }).toString(); + + const baseUrl = `${params.kibanaUrl}/app/uptime`; + + step('Go to uptime', async () => { + await page.goto(`${baseUrl}?${queryParams}`, { + waitUntil: 'networkidle', + }); + await login.loginToKibana(); + }); + + step('Go to monitor details', async () => { + await page.click('text="test-monitor - inline"'); + expect(page.url()).toBe(`${baseUrl}/monitor/dGVzdC1tb25pdG9yLWlubGluZQ==/?${queryParams}`); + }); + + step('Go to journey details', async () => { + await page.click('text=18 seconds'); + expect(page.url()).toBe(`${baseUrl}/journey/9f217c22-4b17-11ec-b976-aa665a54da40/steps`); + }); + + step('Check for monitor duration', async () => { + await retry.tryForTime(90 * 1000, async () => { + await page.click('text="6 Steps - 3 succeeded"'); + await page.waitForTimeout(2 * 1000); + await page.hover('text=8.9 sec'); + await page.waitForSelector('text=Explore'); + expect(await page.$('text=Explore')).toBeTruthy(); + await page.waitForSelector('text=area chart'); + expect(await page.$('text=area chart')).toBeTruthy(); + }); + }); +}); diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/uptime.journey.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/uptime.journey.ts similarity index 96% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/uptime.journey.ts rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/uptime.journey.ts index 81559169deff3..f27cd3acba3cf 100644 --- a/x-pack/plugins/observability_solution/uptime/e2e/uptime/journeys/uptime.journey.ts +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/journeys/uptime.journey.ts @@ -6,8 +6,8 @@ */ import { journey, step, before } from '@elastic/synthetics'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { byTestId, waitForLoadingToFinish } from '../../helpers/utils'; -import { recordVideo } from '../../helpers/record_video'; journey('UptimeOverview', ({ page, params }) => { recordVideo(page); diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/page_objects/monitor_details.tsx b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/page_objects/monitor_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/page_objects/monitor_details.tsx rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/page_objects/monitor_details.tsx diff --git a/x-pack/plugins/observability_solution/uptime/e2e/uptime/page_objects/settings.tsx b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/page_objects/settings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/e2e/uptime/page_objects/settings.tsx rename to x-pack/solutions/observability/plugins/uptime/e2e/uptime/page_objects/settings.tsx diff --git a/x-pack/solutions/observability/plugins/uptime/e2e/uptime/synthetics_run.ts b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/synthetics_run.ts new file mode 100644 index 0000000000000..26a3b9e2e27bb --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/e2e/uptime/synthetics_run.ts @@ -0,0 +1,51 @@ +/* + * 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 { FtrConfigProviderContext } from '@kbn/test'; +import path from 'path'; +import { SyntheticsRunner, argv } from '@kbn/observability-synthetics-test-data'; + +const { headless, grep, bail: pauseOnError } = argv; + +async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { + const kibanaConfig = await readConfigFile(require.resolve('../config.ts')); + return { + ...kibanaConfig.getAll(), + testRunner: async ({ getService }: any) => { + const syntheticsRunner = new SyntheticsRunner(getService, { + headless, + match: grep, + pauseOnError, + }); + + await syntheticsRunner.setup(); + const fixturesDir = path.join(__dirname, '../fixtures/es_archiver/'); + + await syntheticsRunner.loadTestData(fixturesDir, [ + 'synthetics_data', + 'full_heartbeat', + 'browser', + ]); + + await syntheticsRunner.loadTestFiles(async (reload) => { + if (reload) { + const dirPath = require.resolve('./journeys').replace('index.ts', ''); + Object.keys(require.cache).forEach(function (key) { + if (key.startsWith(dirPath)) { + delete require.cache[key]; + } + }); + } + require(path.join(__dirname, './journeys')); + }); + + await syntheticsRunner.run(); + }, + }; +} + +// eslint-disable-next-line import/no-default-export +export default runE2ETests; diff --git a/x-pack/solutions/observability/plugins/uptime/jest.config.js b/x-pack/solutions/observability/plugins/uptime/jest.config.js new file mode 100644 index 0000000000000..25cbce3066e46 --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/observability/plugins/uptime'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/observability/plugins/uptime', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/observability/plugins/uptime/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/observability_solution/uptime/kibana.jsonc b/x-pack/solutions/observability/plugins/uptime/kibana.jsonc similarity index 100% rename from x-pack/plugins/observability_solution/uptime/kibana.jsonc rename to x-pack/solutions/observability/plugins/uptime/kibana.jsonc diff --git a/x-pack/plugins/observability_solution/uptime/public/index.ts b/x-pack/solutions/observability/plugins/uptime/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/kibana_services.ts b/x-pack/solutions/observability/plugins/uptime/public/kibana_services.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/kibana_services.ts rename to x-pack/solutions/observability/plugins/uptime/public/kibana_services.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/render_app.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/render_app.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/render_app.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/render_app.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/uptime_app.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/uptime_app.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/uptime_overview_fetcher.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/uptime_overview_fetcher.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/uptime_overview_fetcher.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/uptime_overview_fetcher.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/uptime_page_template.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/uptime_page_template.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/uptime_page_template.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/uptime_page_template.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/use_no_data_config.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/use_no_data_config.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/app/use_no_data_config.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/app/use_no_data_config.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_monitors.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_monitors.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_monitors.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_monitors.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_search.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_search.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_search.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_search.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_status.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_status.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_status.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/__snapshots__/cert_status.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_monitors.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_monitors.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_monitors.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_monitors.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_monitors.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_monitors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_monitors.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_monitors.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_refresh_btn.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_refresh_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_refresh_btn.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_refresh_btn.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_search.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_search.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_search.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_search.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_search.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_search.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_search.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_search.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_status.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_status.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_status.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_status.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_status.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/cert_status.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/cert_status.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/certificate_title.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificate_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/certificate_title.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificate_title.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/certificates_list.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificates_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/certificates_list.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificates_list.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/certificates_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificates_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/certificates_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/certificates_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/fingerprint_col.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/fingerprint_col.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/fingerprint_col.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/fingerprint_col.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/fingerprint_col.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/fingerprint_col.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/fingerprint_col.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/fingerprint_col.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/use_cert_search.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/use_cert_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/certificates/use_cert_search.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/certificates/use_cert_search.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/__snapshots__/location_link.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/__snapshots__/location_link.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/__snapshots__/location_link.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/__snapshots__/location_link.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_page_link.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_page_link.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_page_link.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_page_link.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_tags.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_tags.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_tags.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/__snapshots__/monitor_tags.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/alerts/uptime_edit_alert_flyout.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/alerts/uptime_edit_alert_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/alerts/uptime_edit_alert_flyout.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/alerts/uptime_edit_alert_flyout.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_empty_state.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_empty_state.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_empty_state.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_empty_state.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_wrapper.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_wrapper.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_wrapper.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/chart_wrapper.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart_legend_row.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart_legend_row.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart_legend_row.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/donut_chart_legend_row.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/monitor_bar_series.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/monitor_bar_series.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/__snapshots__/monitor_bar_series.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/__snapshots__/monitor_bar_series.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/annotation_tooltip.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/annotation_tooltip.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/annotation_tooltip.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/annotation_tooltip.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_empty_state.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_wrapper.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_wrapper.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_wrapper.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/chart_wrapper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/chart_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/chart_wrapper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/chart_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/chart_wrapper/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/donut_chart_legend_row.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_chart.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_chart.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_chart.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_charts.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_charts.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_charts.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_charts.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_line_bar_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_line_bar_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_line_bar_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_line_bar_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_line_series_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_line_series_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/duration_line_series_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/duration_line_series_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/get_tick_format.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/get_tick_format.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/get_tick_format.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/get_tick_format.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/get_tick_format.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/get_tick_format.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/get_tick_format.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/get_tick_format.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/monitor_bar_series.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/ping_histogram.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/ping_histogram.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/ping_histogram.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/ping_histogram.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/ping_histogram.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/ping_histogram.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/ping_histogram.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/ping_histogram.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/utils.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/utils.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/utils.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/utils.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/utils.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/charts/utils.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/charts/utils.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/action_menu.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/action_menu.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/action_menu.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/action_menu.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/action_menu_content.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/action_menu_content.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/action_menu_content.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/action_menu_content.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/action_menu_content.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/action_menu_content.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/action_menu_content.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/action_menu_content.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/inspector_header_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/inspector_header_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/inspector_header_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/inspector_header_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/manage_monitors_btn.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/manage_monitors_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/header/manage_monitors_btn.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/header/manage_monitors_btn.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/higher_order/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/higher_order/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/higher_order/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/higher_order/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/higher_order/responsive_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/location_link.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/location_link.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/location_link.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/location_link.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/location_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/location_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/location_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/location_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_page_link.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_page_link.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_page_link.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_page_link.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_page_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_page_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_page_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_page_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_tags.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_tags.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_tags.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_tags.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_tags.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_tags.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/monitor_tags.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/monitor_tags.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/react_router_helpers/link_for_eui.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/step_detail_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/step_detail_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/step_detail_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/step_detail_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/uptime_date_picker.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/uptime_date_picker.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/uptime_date_picker.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/uptime_date_picker.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/uptime_date_picker.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/uptime_date_picker.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/common/uptime_date_picker.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/common/uptime_date_picker.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/deprecate_notice_modal.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/deprecate_notice_modal.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/deprecate_notice_modal.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/deprecate_notice_modal.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/index.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/index.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/index.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_custom_assets_extension.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_custom_assets_extension.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_custom_assets_extension.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_custom_assets_extension.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_create_extension.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_create_extension.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_create_extension.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_create_extension.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_edit_extension.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_edit_extension.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_edit_extension.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/lazy_synthetics_policy_edit_extension.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_custom_assets_extension.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_custom_assets_extension.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_custom_assets_extension.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_custom_assets_extension.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_edit_policy_extension_wrapper.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_edit_policy_extension_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_edit_policy_extension_wrapper.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_edit_policy_extension_wrapper.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension_wrapper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension_wrapper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension_wrapper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension_wrapper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/use_edit_monitor_locator.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/use_edit_monitor_locator.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/fleet_package/use_edit_monitor_locator.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/fleet_package/use_edit_monitor_locator.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/__snapshots__/monitor_charts.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/__snapshots__/monitor_charts.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/__snapshots__/monitor_charts.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/__snapshots__/monitor_charts.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/confirm_delete.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/confirm_delete.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/confirm_delete.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/confirm_delete.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/ml_integerations.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/ml_integerations.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/ml_integerations.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/__snapshots__/ml_integerations.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/confirm_alert_delete.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/confirm_alert_delete.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/confirm_alert_delete.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/confirm_alert_delete.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/confirm_delete.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/license_info.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/license_info.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/license_info.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/license_info.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/license_info.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/license_info.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/license_info.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/license_info.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/manage_ml_job.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/manage_ml_job.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/manage_ml_job.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/manage_ml_job.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_integeration.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_integeration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_integeration.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_integeration.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_integerations.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_integerations.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_integerations.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_integerations.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_job_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_manage_job.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_manage_job.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/ml_manage_job.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_manage_job.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/translations.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/translations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/translations.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/translations.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/use_anomaly_alert.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/use_anomaly_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ml/use_anomaly_alert.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ml/use_anomaly_alert.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_charts.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_charts.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_charts.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_charts.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_charts.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_charts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_charts.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_charts.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_duration/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_duration/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_duration/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_duration/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_duration/monitor_duration_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_title.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_title.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_title.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_title.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_title.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/monitor_title.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/monitor_title.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_histogram/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_histogram/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_histogram/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_histogram/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_histogram/ping_histogram_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_histogram/ping_histogram_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_histogram/ping_histogram_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_histogram/ping_histogram_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/ping_headers.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/ping_headers.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/ping_headers.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/__snapshots__/ping_headers.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/expand_row.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/failed_step.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/failed_step.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/failed_step.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/failed_step.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_error.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_error.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_error.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_status.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_status.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_status.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_available.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/no_image_display.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/ping_timestamp.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_caption.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/step_image_popover.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts similarity index 97% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts index bc85b45857c23..9d3e14431f6bb 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/ping_timestamp/use_in_progress_image.ts @@ -45,7 +45,6 @@ export const useInProgressImage = ({ if (hasIntersected && !hasImage) return getJourneyScreenshot(imgPath); // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [hasIntersected, imgPath, skippedStep, retryLoading]); useEffect(() => { diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/response_code.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/response_code.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/columns/response_code.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/columns/response_code.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/doc_link_body.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/expanded_row.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/headers.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/headers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/headers.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/headers.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/index.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/index.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/index.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/location_name.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/location_name.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/location_name.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/location_name.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_headers.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_headers.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_headers.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_headers.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_header.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_header.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_header.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_table.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_table.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_list_table.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_redirects.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_redirects.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/ping_redirects.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/ping_redirects.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/response_code.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/response_code.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/response_code.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/response_code.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/use_pings.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/use_pings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/ping_list/use_pings.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/ping_list/use_pings.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/monitor_status.bar.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/monitor_status.bar.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/monitor_status.bar.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/monitor_status.bar.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/ssl_certificate.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/ssl_certificate.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/ssl_certificate.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/ssl_certificate.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/status_by_location.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/status_by_location.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/status_by_location.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/__snapshots__/status_by_location.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/__snapshots__/tag_label.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/__snapshots__/tag_label.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/__snapshots__/tag_label.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/__snapshots__/tag_label.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/availability_reporting.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/location_status_tags.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/availability_reporting/tag_label.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/location_availability/location_availability.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/monitor_status.bar.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/monitor_status.bar.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/monitor_status.bar.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/monitor_status.bar.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/ssl_certificate.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/ssl_certificate.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/ssl_certificate.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/ssl_certificate.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/monitor_redirects.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/monitor_redirects.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/monitor_redirects.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/monitor_redirects.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/ssl_certificate.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/ssl_certificate.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/ssl_certificate.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/ssl_certificate.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_bar.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_by_location.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_by_location.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_by_location.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/status_by_location.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/use_status_bar.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/use_status_bar.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/use_status_bar.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_bar/use_status_bar.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_by_location.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_by_location.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_by_location.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_by_location.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_details.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_details.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_details.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_details.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_details_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_details_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/status_details_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/status_details_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/status_details/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/status_details/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_detail_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_detail_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_detail_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_detail_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_nav.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_nav.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_nav.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_nav.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_title.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_title.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_title.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/step_page_title.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumb.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumb.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumb.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumb.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumbs.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumbs.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumbs.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_monitor_breadcrumbs.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/use_step_waterfall_metrics.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/data_formatting.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/types.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/types.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_chart_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_filter.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_flyout.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/step_detail/waterfall/waterfall_sidebar_item.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/README.md b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/README.md similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/README.md rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/README.md diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/constants.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/constants.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/constants.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/legend.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/legend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/legend.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/legend.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/middle_truncated_text.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/network_requests_total.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/sidebar.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/sidebar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/sidebar.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/sidebar.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/styles.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/styles.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/styles.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/styles.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_bar_charts.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/use_flyout.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_bar_chart.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_bar_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_bar_chart.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_bar_chart.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart_fixed_axis.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart_fixed_axis.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart_fixed_axis.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_chart_fixed_axis.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_flyout_table.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_flyout_table.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_flyout_table.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_flyout_table.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_icon.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_test_helper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_test_helper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_test_helper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_test_helper.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_marker_trend.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_markers.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_markers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_markers.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_markers.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/components/waterfall_tooltip_content.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/context/waterfall_chart.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/context/waterfall_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/context/waterfall_chart.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/context/waterfall_chart.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/index.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/index.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/index.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/types.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/types.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/monitor/synthetics/waterfall/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/__snapshots__/snapshot_heading.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/__snapshots__/snapshot_heading.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/__snapshots__/snapshot_heading.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/__snapshots__/snapshot_heading.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_expression_popover.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_expression_popover.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_expression_popover.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_expression_popover.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_field_number.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_query_bar/query_bar.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_query_bar/query_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_query_bar/query_bar.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_query_bar/query_bar.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_tls.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_tls.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alert_tls.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alert_tls.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_monitor_status.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_monitor_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_monitor_status.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_monitor_status.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_tls.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_tls.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_tls.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/alert_tls.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/toggle_alert_flyout_button.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/toggle_alert_flyout_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/toggle_alert_flyout_button.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/toggle_alert_flyout_button.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/uptime_alerts_flyout_wrapper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/uptime_alerts_flyout_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/uptime_alerts_flyout_wrapper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/uptime_alerts_flyout_wrapper.tsx diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts new file mode 100644 index 0000000000000..99f5aae823777 --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/alerts_containers/use_snap_shot.ts @@ -0,0 +1,34 @@ +/* + * 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 { useFetcher } from '@kbn/observability-shared-plugin/public'; +import { useGenerateUpdatedKueryString } from '../../../../hooks'; +import { fetchSnapshotCount } from '../../../../state/api'; + +export const useSnapShotCount = ({ query, filters }: { query: string; filters?: [] | string }) => { + const parsedFilters = + filters === undefined || typeof filters === 'string' + ? '' + : JSON.stringify(Array.from(Object.entries(filters))); + + const [esKuery, error] = useGenerateUpdatedKueryString(query, parsedFilters, undefined, true); + + const { data, loading } = useFetcher( + () => + fetchSnapshotCount({ + dateRangeStart: 'now-24h', + dateRangeEnd: 'now', + filters: error ? undefined : esKuery, + }), + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Uptime folks can fix it + + [esKuery, query] + ); + + return { count: data || { total: 0, up: 0, down: 0 }, loading }; +}; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/anomaly_alert.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/anomaly_alert.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/anomaly_alert.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/anomaly_alert.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/anomaly_alert/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/down_number_select.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/down_number_select.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/down_number_select.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/down_number_select.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/time_expression_select.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/time_expression_select.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/time_expression_select.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/time_expression_select.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/availability_expression_select.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/availability_expression_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/availability_expression_select.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/availability_expression_select.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/down_number_select.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/status_expression_select.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/status_expression_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/status_expression_select.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/status_expression_select.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_expression_select.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_unit_selectable.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_unit_selectable.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_unit_selectable.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/time_unit_selectable.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/add_filter_btn.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/alert_monitor_status.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_call_out.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_call_out.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_call_out.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_call_out.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_callout.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_callout.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_callout.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_status_alert/old_alert_callout.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/toggle_alert_flyout_button.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/uptime_alerts_flyout_wrapper.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/uptime_alerts_flyout_wrapper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/alerts/uptime_alerts_flyout_wrapper.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/alerts/uptime_alerts_flyout_wrapper.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_error.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_error.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_error.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_loading.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_loading.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_loading.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/empty_state/empty_state_loading.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/empty_state/use_has_data.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/empty_state/use_has_data.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/empty_state/use_has_data.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/empty_state/use_has_data.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/selected_filters.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/selected_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/selected_filters.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/selected_filters.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/translations.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/translations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/filter_group/translations.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/filter_group/translations.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/index.ts diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx new file mode 100644 index 0000000000000..629fa01a034a4 --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/integration_deprecation/index.tsx @@ -0,0 +1,54 @@ +/* + * 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, { useState, useEffect } from 'react'; +import { EuiSpacer } from '@elastic/eui'; +import { useFetcher } from '@kbn/observability-shared-plugin/public'; +import { useSelector } from 'react-redux'; +import { getHasIntegrationMonitors } from '../../../state/api/has_integration_monitors'; +import { monitorListSelector } from '../../../state/selectors'; +import { IntegrationDeprecationCallout } from './integration_deprecation_callout'; + +export const INTEGRATION_DEPRECATION_SESSION_STORAGE_KEY = + 'SYNTHETICS_INTEGRATION_DEPRECATION_HAS_BEEN_DISMISSED'; + +export const IntegrationDeprecation = () => { + const monitorList = useSelector(monitorListSelector); + const noticeHasBeenDismissed = + window.sessionStorage.getItem(INTEGRATION_DEPRECATION_SESSION_STORAGE_KEY) === 'true'; + const { data, loading } = useFetcher(() => { + // load it when list is loaded + if (!noticeHasBeenDismissed && monitorList.isLoaded) { + return getHasIntegrationMonitors(); + } + return undefined; + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Uptime folks can fix it + }, [monitorList.isLoaded]); + const hasIntegrationMonitors = !loading && data && data.hasIntegrationMonitors; + const [shouldShowNotice, setShouldShowNotice] = useState( + Boolean(hasIntegrationMonitors && !noticeHasBeenDismissed) + ); + + const handleDismissDeprecationNotice = () => { + window.sessionStorage.setItem(INTEGRATION_DEPRECATION_SESSION_STORAGE_KEY, 'true'); + setShouldShowNotice(false); + }; + + useEffect(() => { + setShouldShowNotice(Boolean(hasIntegrationMonitors && !noticeHasBeenDismissed)); + }, [hasIntegrationMonitors, noticeHasBeenDismissed]); + + return shouldShowNotice ? ( + <> + + + + ) : null; +}; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation_callout.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation_callout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation_callout.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/integration_deprecation/integration_deprecation_callout.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/filter_status_button.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/filter_status_button.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/filter_status_button.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/filter_status_button.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/status_filter.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/status_filter.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/status_filter.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/__snapshots__/status_filter.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/cert_status_column.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/cert_status_column.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/cert_status_column.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/cert_status_column.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/define_connectors.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/enable_alert.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_name_col.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_name_col.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_name_col.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_name_col.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/status_badge.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/columns/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/columns/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/filter_status_button.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_group.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_group.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_group.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_group.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_link.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_link.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_link.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/integration_link.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/monitor_list_drawer.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/monitor_list_drawer.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/monitor_list_drawer.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/monitor_list_drawer.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/most_recent_error.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/most_recent_error.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/most_recent_error.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/__snapshots__/most_recent_error.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/actions_popover_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_group.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_group.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_group.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_group.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/actions_popover/integration_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/data.json b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/data.json similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/data.json rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/data.json diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/enabled_alerts.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/enabled_alerts.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/enabled_alerts.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/enabled_alerts.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_group.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_group.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_group.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_group.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_link.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_link.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_link.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/integration_link.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/list_drawer_container.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/list_drawer_container.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/list_drawer_container.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/list_drawer_container.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_list_drawer.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_status_row.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_url.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_url.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_url.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/monitor_url.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_error.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_run.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_run.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_run.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_drawer/most_recent_run.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_header.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_header.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_header.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_header.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/monitor_list_page_size_select.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_meesage.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_meesage.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_meesage.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_meesage.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_message.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_message.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_message.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/no_items_message.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/overview_page_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/overview_page_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/overview_page_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/overview_page_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/parse_timestamp.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/status_filter.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/troubleshoot_popover.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/troubleshoot_popover.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/troubleshoot_popover.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/troubleshoot_popover.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/types.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/types.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/query_bar.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/query_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/query_bar.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/query_bar.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/query_bar/use_query_bar.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/__snapshots__/snapshot.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/__snapshots__/snapshot.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/__snapshots__/snapshot.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/__snapshots__/snapshot.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/snapshot.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/snapshot_heading.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/snapshot_heading.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot/snapshot_heading.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/snapshot_heading.tsx diff --git a/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts new file mode 100644 index 0000000000000..af14d8f78289d --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot/use_snap_shot.ts @@ -0,0 +1,32 @@ +/* + * 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 { useContext } from 'react'; +import { useSelector } from 'react-redux'; +import { useFetcher } from '@kbn/observability-shared-plugin/public'; +import { useGetUrlParams } from '../../../hooks'; +import { esKuerySelector } from '../../../state/selectors'; +import { UptimeRefreshContext } from '../../../contexts'; +import { fetchSnapshotCount } from '../../../state/api'; + +export const useSnapShotCount = () => { + const { dateRangeStart, dateRangeEnd, query } = useGetUrlParams(); + + const { lastRefresh } = useContext(UptimeRefreshContext); + + const esKuery = useSelector(esKuerySelector); + + const { data, loading } = useFetcher( + () => fetchSnapshotCount({ query, dateRangeStart, dateRangeEnd, filters: esKuery }), + // FIXME: Dario thinks there is a better way to do this but + // he's getting tired and maybe the Uptime folks can fix it + + [dateRangeStart, dateRangeEnd, esKuery, lastRefresh, query] + ); + + return { count: data || { total: 0, up: 0, down: 0 }, loading }; +}; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot_heading.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot_heading.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/snapshot_heading.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/snapshot_heading.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/status_panel.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/status_panel.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/overview/status_panel.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/overview/status_panel.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/__snapshots__/certificate_form.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/__snapshots__/certificate_form.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/__snapshots__/certificate_form.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/__snapshots__/certificate_form.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/__snapshots__/indices_form.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/__snapshots__/indices_form.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/__snapshots__/indices_form.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/__snapshots__/indices_form.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/add_connector_flyout.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/add_connector_flyout.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/add_connector_flyout.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/add_connector_flyout.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/alert_defaults_form.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/alert_defaults_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/alert_defaults_form.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/alert_defaults_form.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/certificate_form.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/certificate_form.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/certificate_form.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/certificate_form.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/certificate_form.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/certificate_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/certificate_form.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/certificate_form.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/default_email.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/default_email.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/default_email.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/default_email.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/indices_form.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/indices_form.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/indices_form.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/indices_form.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/indices_form.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/indices_form.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/indices_form.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/indices_form.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/settings_actions.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/settings_actions.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/settings_actions.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/settings_actions.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/settings_bottom_bar.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/settings_bottom_bar.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/settings_bottom_bar.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/settings_bottom_bar.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/use_settings_errors.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/use_settings_errors.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/settings/use_settings_errors.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/settings/use_settings_errors.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx similarity index 98% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx index 7eab37d2b9afe..af4c1ed3915ac 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/stderr_logs.tsx @@ -92,7 +92,6 @@ export const StdErrorLogs = ({ return ''; // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [checkGroup, timestamp]); const search = { diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_duration.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_duration.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_duration.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_duration.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/screenshot_link.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/screenshot_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/screenshot_link.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/screenshot_link.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx similarity index 98% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx index 606019c99429d..6af149efe453f 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx @@ -42,7 +42,6 @@ export const StepScreenshots = ({ step }: Props) => { } // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [step._id, step['@timestamp']]); const lastSuccessfulCheck: Ping | undefined = data; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_field_trend.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_image.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_image.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/step_image.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/step_image.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/steps_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_check_steps.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_check_steps.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_check_steps.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_check_steps.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_expanded_row.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_std_error_logs.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_std_error_logs.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/check_steps/use_std_error_logs.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/check_steps/use_std_error_logs.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/code_block_accordion.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/code_block_accordion.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/code_block_accordion.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/code_block_accordion.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_event.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_event.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_event.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_event.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_event.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_event.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_event.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_event.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/console_output_event_list.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/empty_journey.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/empty_journey.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/empty_journey.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/empty_journey.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/empty_journey.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/empty_journey.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/empty_journey.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/empty_journey.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/executed_step.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/executed_step.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/executed_step.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/executed_step.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/executed_step.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/executed_step.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/executed_step.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/executed_step.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/status_badge.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/status_badge.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/status_badge.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/status_badge.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/status_badge.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/status_badge.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/status_badge.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/status_badge.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx similarity index 99% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx index b7d2f6d85fe2b..2e5b8aac0d720 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/step_screenshot_display.tsx @@ -137,7 +137,6 @@ export const StepScreenshotDisplay: FC = ({ } // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [basePath, checkGroup, imgSrc, stepIndex, isScreenshotRef, lastRefresh]); const refDimensions = useMemo(() => { diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/components/synthetics/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/components/synthetics/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx similarity index 96% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx index 7abbdf3fde8c8..e3fb9f4b3bb3b 100644 --- a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx +++ b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_data_view_context.tsx @@ -28,7 +28,6 @@ export const UptimeDataViewContextProvider: FC< } // FIXME: Dario thinks there is a better way to do this but // he's getting tired and maybe the Uptime folks can fix it - // eslint-disable-next-line react-hooks/exhaustive-deps }, [heartbeatIndices, indexStatus?.indexExists]); return ; diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_refresh_context.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_refresh_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_refresh_context.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_refresh_context.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_settings_context.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_settings_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_settings_context.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_settings_context.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_startup_plugins_context.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_startup_plugins_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_startup_plugins_context.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_startup_plugins_context.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_theme_context.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_theme_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/contexts/uptime_theme_context.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/contexts/uptime_theme_context.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/__snapshots__/use_url_params.test.tsx.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/__snapshots__/use_url_params.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/__snapshots__/use_url_params.test.tsx.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/__snapshots__/use_url_params.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_base_chart_theme.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_base_chart_theme.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_base_chart_theme.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_base_chart_theme.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_breadcrumbs.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_breadcrumbs.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_breadcrumbs.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_breadcrumbs.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_breadcrumbs.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_breadcrumbs.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_breadcrumbs.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_cert_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_cert_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_cert_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_cert_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_composite_image.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_composite_image.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_composite_image.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_composite_image.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_composite_image.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_composite_image.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_composite_image.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_composite_image.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_filter_update.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_filter_update.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_filter_update.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_filter_update.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_filter_update.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_filter_update.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_filter_update.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_filter_update.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_init_app.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_init_app.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_init_app.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_init_app.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_mapping_check.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_mapping_check.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_mapping_check.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_mapping_check.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_mapping_check.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_mapping_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_mapping_check.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_mapping_check.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_monitor.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_monitor.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_monitor.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_overview_filter_check.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_overview_filter_check.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_overview_filter_check.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_overview_filter_check.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_overview_filter_check.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_overview_filter_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_overview_filter_check.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_overview_filter_check.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_search_text.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_search_text.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_search_text.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_search_text.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_selected_filters.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_selected_filters.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_selected_filters.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_selected_filters.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_selected_filters.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_selected_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_selected_filters.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_selected_filters.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_update_kuery_string.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_update_kuery_string.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_update_kuery_string.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_update_kuery_string.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_url_params.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_url_params.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_url_params.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_url_params.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_url_params.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/hooks/use_url_params.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/hooks/use_url_params.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/legacy_screenshot_ref.mock.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/legacy_screenshot_ref.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/legacy_screenshot_ref.mock.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/legacy_screenshot_ref.mock.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/legacy_use_composite_image.mock.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/legacy_use_composite_image.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/legacy_use_composite_image.mock.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/legacy_use_composite_image.mock.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/uptime_plugin_start_mock.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/uptime_plugin_start_mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/uptime_plugin_start_mock.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/uptime_plugin_start_mock.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/uptime_store.mock.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/uptime_store.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/uptime_store.mock.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/uptime_store.mock.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/ut_router_history.mock.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/ut_router_history.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/__mocks__/ut_router_history.mock.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/__mocks__/ut_router_history.mock.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/adapters/framework/capabilities_adapter.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/adapters/framework/capabilities_adapter.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/adapters/framework/capabilities_adapter.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/adapters/framework/capabilities_adapter.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/common.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/common.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/common.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/duration_anomaly.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/duration_anomaly.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/duration_anomaly.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/duration_anomaly.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/duration_anomaly.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/duration_anomaly.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/duration_anomaly.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/duration_anomaly.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/monitor_status.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/monitor_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/monitor_status.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/monitor_status.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/tls_alert.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/tls_alert.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/tls_alert.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/tls_alert.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_monitor_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_monitor_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_monitor_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_monitor_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_tls_alert.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_tls_alert.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_tls_alert.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/lazy_wrapper/validate_tls_alert.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/monitor_status.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/monitor_status.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/monitor_status.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/monitor_status.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/monitor_status.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/monitor_status.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/monitor_status.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/monitor_status.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/tls.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/tls.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/tls.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/tls.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/tls_legacy.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/tls_legacy.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/alert_types/tls_legacy.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/alert_types/tls_legacy.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/formatting.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/formatting.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/formatting.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/formatting.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/get_chart_date_label.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/get_chart_date_label.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/get_chart_date_label.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/get_chart_date_label.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/get_label_format.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/charts/is_within_current_date.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/compose_screenshot_images.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/convert_measurements.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/convert_measurements.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/convert_measurements.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/convert_measurements.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/convert_measurements.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/convert_measurements.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/convert_measurements.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/convert_measurements.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/enzyme_helpers.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/enzyme_helpers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/enzyme_helpers.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/enzyme_helpers.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/helper_with_redux.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/helper_with_redux.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/helper_with_redux.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/helper_with_redux.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/add_base_path.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/add_base_path.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/add_base_path.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/add_base_path.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/build_href.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/build_href.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/build_href.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/build_href.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_apm_href.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_infra_href.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/get_logging_href.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/observability_integration/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/observability_integration/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/parse_search.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/parse_search.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/parse_search.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/parse_search.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/parse_search.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/parse_search.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/parse_search.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/parse_search.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/rtl_helpers.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/rtl_helpers.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/rtl_helpers.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/rtl_helpers.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/series_has_down_values.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/series_has_down_values.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/series_has_down_values.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/series_has_down_values.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/series_has_down_values.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/series_has_down_values.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/series_has_down_values.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/series_has_down_values.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/test_helpers.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/test_helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/test_helpers.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/test_helpers.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/__snapshots__/get_supported_url_params.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/__snapshots__/get_supported_url_params.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/__snapshots__/get_supported_url_params.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/__snapshots__/get_supported_url_params.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/get_supported_url_params.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/parse_absolute_date.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/stringify_url_params.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/stringify_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/helper/url_params/stringify_url_params.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/helper/url_params/stringify_url_params.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/lib.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/lib.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/lib/lib.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/lib/lib.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/certificates.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/certificates.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/certificates.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/certificates.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/certificates.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/certificates.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/certificates.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/certificates.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/mapping_error.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/mapping_error.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/mapping_error.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/mapping_error.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/monitor.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/monitor.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/monitor.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/monitor.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/monitor.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/monitor.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/monitor.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/monitor.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/not_found.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/not_found.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/not_found.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/not_found.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/not_found.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/not_found.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/not_found.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/not_found.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/overview.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/overview.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/overview.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/overview.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/overview.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/overview.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/overview.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/overview.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/settings.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/settings.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/settings.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/settings.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/settings.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/settings.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/settings.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/settings.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/checks_navigation.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/checks_navigation.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/checks_navigation.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/checks_navigation.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/step_detail_page.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/step_detail_page.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/step_detail_page.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/step_detail_page.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.test.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.test.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.test.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/synthetics/synthetics_checks.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/translations.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/pages/translations.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/pages/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/routes.tsx b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/routes.tsx similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/routes.tsx rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/routes.tsx diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/dynamic_settings.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/index_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/index_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/index_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/index_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/journey.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/journey.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/journey.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/ml_anomaly.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/ml_anomaly.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/ml_anomaly.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/ml_anomaly.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor_duration.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor_duration.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor_duration.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor_list.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor_list.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor_list.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/monitor_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/monitor_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/network_events.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/network_events.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/network_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/ping.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/ping.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/ping.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/selected_filters.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/selected_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/selected_filters.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/selected_filters.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/snapshot.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/snapshot.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/snapshot.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/snapshot.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/types.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/types.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/ui.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/ui.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/ui.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/ui.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/utils.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/actions/utils.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/actions/utils.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/alerts/alerts.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/alerts/alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/alerts/alerts.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/alerts/alerts.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/__snapshots__/snapshot.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/__snapshots__/snapshot.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/__snapshots__/snapshot.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/__snapshots__/snapshot.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/alerts.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/alerts.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/alerts.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/alerts.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/dynamic_settings.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/has_integration_monitors.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/has_integration_monitors.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/has_integration_monitors.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/has_integration_monitors.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/index_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/index_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/index_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/index_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/journey.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/journey.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/journey.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/ml_anomaly.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/ml_anomaly.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/ml_anomaly.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/ml_anomaly.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor_duration.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor_duration.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor_duration.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor_list.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor_list.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor_list.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/monitor_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/monitor_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/network_events.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/network_events.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/network_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/ping.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/ping.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/ping.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/snapshot.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/snapshot.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/snapshot.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/snapshot.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/snapshot.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/snapshot.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/snapshot.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/snapshot.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/types.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/types.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/utils.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/api/utils.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/api/utils.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/certificates/certificates.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/certificates/certificates.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/certificates/certificates.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/certificates/certificates.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/dynamic_settings.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/fetch_effect.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/fetch_effect.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/fetch_effect.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/fetch_effect.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/fetch_effect.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/fetch_effect.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/fetch_effect.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/fetch_effect.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/index_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/index_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/index_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/index_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/journey.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/journey.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/journey.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/journey.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/journey.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/journey.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/journey.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/ml_anomaly.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/ml_anomaly.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/ml_anomaly.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/ml_anomaly.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor_duration.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor_duration.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor_duration.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor_list.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor_list.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor_list.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/monitor_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/monitor_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/network_events.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/network_events.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/network_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/ping.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/ping.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/ping.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/synthetic_journey_blocks.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/synthetic_journey_blocks.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/effects/synthetic_journey_blocks.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/effects/synthetic_journey_blocks.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/kibana_service.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/kibana_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/kibana_service.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/kibana_service.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/dynamic_settings.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/index_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/index_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/index_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/index_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/journey.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/journey.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/journey.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/journey.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ml_anomaly.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ml_anomaly.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ml_anomaly.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ml_anomaly.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_duration.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_duration.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_duration.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_list.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_list.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_list.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_status.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_status.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_status.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_status.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_status.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/monitor_status.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/monitor_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/network_events.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/network_events.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/network_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ping.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ping.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ping.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ping.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ping_list.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ping_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ping_list.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ping_list.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/selected_filters.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/selected_filters.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/selected_filters.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/selected_filters.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/selected_filters.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/selected_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/selected_filters.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/selected_filters.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/synthetics.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/synthetics.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/synthetics.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/synthetics.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/synthetics.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/synthetics.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/synthetics.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/synthetics.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/types.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/types.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ui.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ui.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ui.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ui.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ui.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ui.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/ui.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/ui.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/utils.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/reducers/utils.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/reducers/utils.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/selectors/index.test.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/selectors/index.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/selectors/index.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/selectors/index.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/selectors/index.ts b/x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/selectors/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/legacy_uptime/state/selectors/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/legacy_uptime/state/selectors/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/locators/overview.test.ts b/x-pack/solutions/observability/plugins/uptime/public/locators/overview.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/locators/overview.test.ts rename to x-pack/solutions/observability/plugins/uptime/public/locators/overview.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/locators/overview.ts b/x-pack/solutions/observability/plugins/uptime/public/locators/overview.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/locators/overview.ts rename to x-pack/solutions/observability/plugins/uptime/public/locators/overview.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/plugin.ts b/x-pack/solutions/observability/plugins/uptime/public/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/plugin.ts rename to x-pack/solutions/observability/plugins/uptime/public/plugin.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/utils/api_service/api_service.ts b/x-pack/solutions/observability/plugins/uptime/public/utils/api_service/api_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/utils/api_service/api_service.ts rename to x-pack/solutions/observability/plugins/uptime/public/utils/api_service/api_service.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/utils/api_service/index.ts b/x-pack/solutions/observability/plugins/uptime/public/utils/api_service/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/utils/api_service/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/utils/api_service/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/utils/kibana_service/index.ts b/x-pack/solutions/observability/plugins/uptime/public/utils/kibana_service/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/utils/kibana_service/index.ts rename to x-pack/solutions/observability/plugins/uptime/public/utils/kibana_service/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/public/utils/kibana_service/kibana_service.ts b/x-pack/solutions/observability/plugins/uptime/public/utils/kibana_service/kibana_service.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/public/utils/kibana_service/kibana_service.ts rename to x-pack/solutions/observability/plugins/uptime/public/utils/kibana_service/kibana_service.ts diff --git a/x-pack/plugins/observability_solution/uptime/scripts/base_e2e.js b/x-pack/solutions/observability/plugins/uptime/scripts/base_e2e.js similarity index 100% rename from x-pack/plugins/observability_solution/uptime/scripts/base_e2e.js rename to x-pack/solutions/observability/plugins/uptime/scripts/base_e2e.js diff --git a/x-pack/plugins/observability_solution/uptime/scripts/uptime_e2e.js b/x-pack/solutions/observability/plugins/uptime/scripts/uptime_e2e.js similarity index 100% rename from x-pack/plugins/observability_solution/uptime/scripts/uptime_e2e.js rename to x-pack/solutions/observability/plugins/uptime/scripts/uptime_e2e.js diff --git a/x-pack/plugins/observability_solution/uptime/server/constants/settings.ts b/x-pack/solutions/observability/plugins/uptime/server/constants/settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/constants/settings.ts rename to x-pack/solutions/observability/plugins/uptime/server/constants/settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/index.ts b/x-pack/solutions/observability/plugins/uptime/server/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/adapters/framework/adapter_types.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/adapters/framework/adapter_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/adapters/framework/adapter_types.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/adapters/framework/adapter_types.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/adapters/framework/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/adapters/framework/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/adapters/framework/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/adapters/framework/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/adapters/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/adapters/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/adapters/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/adapters/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/action_variables.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/action_variables.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/action_variables.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/action_variables.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/common.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/common.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/common.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/common.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/common.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/common.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/common.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/common.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_monitor_status.yaml b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_monitor_status.yaml similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_monitor_status.yaml rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_monitor_status.yaml diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_uptime_tls.yaml b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_uptime_tls.yaml similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_uptime_tls.yaml rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/docs/params_property_synthetics_uptime_tls.yaml diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/status_check.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/status_check.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/status_check.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/status_check.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/status_check.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/status_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/status_check.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/status_check.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/test_utils/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/test_utils/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/test_utils/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/test_utils/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls_legacy.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls_legacy.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls_legacy.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls_legacy.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls_legacy.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls_legacy.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/tls_legacy.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/tls_legacy.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/translations.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/translations.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/translations.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/types.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/alerts/types.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/alerts/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/__snapshots__/license.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/__snapshots__/license.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/__snapshots__/license.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/__snapshots__/license.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/license.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/license.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/license.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/license.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/license.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/license.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/domains/license.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/domains/license.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/__snapshots__/get_filter_clause.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/__snapshots__/get_filter_clause.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/__snapshots__/get_filter_clause.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/__snapshots__/get_filter_clause.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/get_filter_clause.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/get_filter_clause.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/get_filter_clause.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/get_filter_clause.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/get_filter_clause.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/get_filter_clause.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/get_filter_clause.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/get_filter_clause.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/make_date_rate_filter.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/make_date_rate_filter.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/make_date_rate_filter.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/make_date_rate_filter.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/object_to_array.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/object_to_array.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/object_to_array.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/object_to_array.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/parse_relative_date.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/parse_relative_date.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/helper/parse_relative_date.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/helper/parse_relative_date.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/lib.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/lib.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/lib.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/lib.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/lib.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/lib.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/lib.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/lib.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__fixtures__/monitor_charts_mock.json b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__fixtures__/monitor_charts_mock.json similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__fixtures__/monitor_charts_mock.json rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__fixtures__/monitor_charts_mock.json diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/generate_filter_aggs.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/generate_filter_aggs.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/generate_filter_aggs.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/generate_filter_aggs.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_details.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_details.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_details.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_details.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_duration.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_duration.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_duration.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_monitor_duration.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_ping_histogram.test.ts.snap b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_ping_histogram.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_ping_histogram.test.ts.snap rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/__snapshots__/get_ping_histogram.test.ts.snap diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/generate_filter_aggs.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_certs.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_certs.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_certs.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_certs.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_certs.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_certs.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_certs.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_certs.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_index_pattern.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_index_pattern.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_index_pattern.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_index_pattern.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_index_status.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_index_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_index_status.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_index_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_details.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_details.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_details.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_details.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_details.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_details.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_details.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_details.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_failed_steps.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_screenshot_blocks.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_steps.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_steps.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_steps.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_steps.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_steps.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_steps.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_journey_steps.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_journey_steps.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_last_successful_check.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_latest_monitor.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_availability.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_details.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_details.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_details.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_details.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_details.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_details.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_details.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_details.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_duration.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_locations.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_locations.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_locations.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_states.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_states.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_states.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_states.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_status.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_status.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_status.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_status.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_status.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_monitor_status.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_monitor_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_network_events.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_network_events.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_network_events.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_network_events.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_network_events.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_network_events.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_network_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_ping_histogram.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_pings.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_pings.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_pings.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_pings.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_pings.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_pings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_pings.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_pings.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_snapshot_counts.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_snapshot_counts.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/get_snapshot_counts.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/get_snapshot_counts.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/fetch_chunk.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/fetch_chunk.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/fetch_chunk.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/fetch_chunk.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/find_potential_matches.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/find_potential_matches.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/find_potential_matches.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/find_potential_matches.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/get_query_string_filter.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/monitor_summary_iterator.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/query_context.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/query_context.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/query_context.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/query_context.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/refine_potential_matches.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/refine_potential_matches.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/refine_potential_matches.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/refine_potential_matches.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/test_helpers.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/test_helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/test_helpers.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/test_helpers.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/types.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/search/types.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/search/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/test_helpers.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/test_helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/requests/test_helpers.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/requests/test_helpers.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/migrations.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/migrations.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/migrations.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/migrations.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/migrations.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/migrations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/migrations.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/migrations.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/saved_objects.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/saved_objects.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/saved_objects.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/saved_objects.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/create_route_with_auth.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/create_route_with_auth.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/create_route_with_auth.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/create_route_with_auth.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/dynamic_settings.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/dynamic_settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/dynamic_settings.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/dynamic_settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/index_state/get_index_status.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/index_state/get_index_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/index_state/get_index_status.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/index_state/get_index_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/index_state/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/index_state/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/index_state/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/index_state/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitor_list.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitor_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitor_list.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitor_list.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitor_locations.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitor_locations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitor_locations.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitor_locations.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitor_status.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitor_status.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitor_status.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitor_status.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitors_details.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitors_details.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitors_details.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitors_details.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitors_durations.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitors_durations.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/monitors/monitors_durations.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/monitors/monitors_durations.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/network_events/get_network_events.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/network_events/get_network_events.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/network_events/get_network_events.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/network_events/get_network_events.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/network_events/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/network_events/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/network_events/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/network_events/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/get_ping_histogram.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/get_ping_histogram.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/get_ping_histogram.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/get_ping_histogram.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/get_pings.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/get_pings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/get_pings.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/get_pings.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshot_blocks.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshots.test.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshots.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshots.test.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshots.test.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshots.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshots.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journey_screenshots.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journey_screenshots.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journeys.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journeys.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/pings/journeys.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/pings/journeys.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/snapshot/get_snapshot_count.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/snapshot/get_snapshot_count.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/snapshot/get_snapshot_count.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/snapshot/get_snapshot_count.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/snapshot/index.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/snapshot/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/snapshot/index.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/snapshot/index.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/synthetics/last_successful_check.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/synthetics/last_successful_check.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/synthetics/last_successful_check.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/synthetics/last_successful_check.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/types.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/types.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/types.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/uptime_route_wrapper.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/uptime_route_wrapper.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/routes/uptime_route_wrapper.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/routes/uptime_route_wrapper.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts b/x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/legacy_uptime/uptime_server.ts rename to x-pack/solutions/observability/plugins/uptime/server/legacy_uptime/uptime_server.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/plugin.ts b/x-pack/solutions/observability/plugins/uptime/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/plugin.ts rename to x-pack/solutions/observability/plugins/uptime/server/plugin.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/runtime_types/settings.ts b/x-pack/solutions/observability/plugins/uptime/server/runtime_types/settings.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/runtime_types/settings.ts rename to x-pack/solutions/observability/plugins/uptime/server/runtime_types/settings.ts diff --git a/x-pack/plugins/observability_solution/uptime/server/types.ts b/x-pack/solutions/observability/plugins/uptime/server/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/uptime/server/types.ts rename to x-pack/solutions/observability/plugins/uptime/server/types.ts diff --git a/x-pack/solutions/observability/plugins/uptime/tsconfig.json b/x-pack/solutions/observability/plugins/uptime/tsconfig.json new file mode 100644 index 0000000000000..5de407dc03b8c --- /dev/null +++ b/x-pack/solutions/observability/plugins/uptime/tsconfig.json @@ -0,0 +1,84 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "scripts/**/*", + "public/**/*", + "public/legacy_uptime/components/monitor/status_details/location_map/embeddables/low_poly_layer.json", + "server/**/*", + "server/legacy_uptime/lib/requests/__fixtures__/monitor_charts_mock.json", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/config-schema", + "@kbn/i18n", + "@kbn/fleet-plugin", + "@kbn/alerting-plugin", + "@kbn/datemath", + "@kbn/stack-connectors-plugin", + "@kbn/triggers-actions-ui-plugin", + "@kbn/kibana-react-plugin", + "@kbn/observability-shared-plugin", + "@kbn/observability-plugin", + "@kbn/i18n-react", + "@kbn/shared-ux-page-kibana-template", + "@kbn/test-jest-helpers", + "@kbn/ml-anomaly-utils", + "@kbn/exploratory-view-plugin", + "@kbn/ml-plugin", + "@kbn/rison", + "@kbn/shared-ux-router", + "@kbn/unified-search-plugin", + "@kbn/core-http-browser", + "@kbn/es-query", + "@kbn/data-views-plugin", + "@kbn/ui-theme", + "@kbn/rule-data-utils", + "@kbn/kibana-utils-plugin", + "@kbn/data-plugin", + "@kbn/ml-error-utils", + "@kbn/core-http-browser-mocks", + "@kbn/securitysolution-io-ts-utils", + "@kbn/share-plugin", + "@kbn/discover-plugin", + "@kbn/home-plugin", + "@kbn/embeddable-plugin", + "@kbn/inspector-plugin", + "@kbn/cases-plugin", + "@kbn/cloud-plugin", + "@kbn/spaces-plugin", + "@kbn/core-doc-links-browser", + "@kbn/usage-collection-plugin", + "@kbn/core-application-browser", + "@kbn/encrypted-saved-objects-plugin", + "@kbn/task-manager-plugin", + "@kbn/features-plugin", + "@kbn/rule-registry-plugin", + "@kbn/security-plugin", + "@kbn/bfetch-plugin", + "@kbn/alerts-as-data-utils", + "@kbn/std", + "@kbn/utility-types", + "@kbn/licensing-plugin", + "@kbn/es-types", + "@kbn/safer-lodash-set", + "@kbn/core-elasticsearch-client-server-mocks", + "@kbn/core-http-server", + "@kbn/actions-plugin", + "@kbn/core-saved-objects-server", + "@kbn/observability-ai-assistant-plugin", + "@kbn/shared-ux-link-redirect-app", + "@kbn/repo-info", + "@kbn/react-kibana-context-render", + "@kbn/react-kibana-context-theme", + "@kbn/react-kibana-mount", + "@kbn/deeplinks-observability", + "@kbn/ebt-tools", + "@kbn/core-rendering-browser", + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/observability_solution/ux/.buildkite/pipelines/flaky.js b/x-pack/solutions/observability/plugins/ux/.buildkite/pipelines/flaky.js similarity index 100% rename from x-pack/plugins/observability_solution/ux/.buildkite/pipelines/flaky.js rename to x-pack/solutions/observability/plugins/ux/.buildkite/pipelines/flaky.js diff --git a/x-pack/solutions/observability/plugins/ux/.buildkite/pipelines/flaky.sh b/x-pack/solutions/observability/plugins/ux/.buildkite/pipelines/flaky.sh new file mode 100644 index 0000000000000..f6a329e3b5f4a --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/.buildkite/pipelines/flaky.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +UUID="$(cat /proc/sys/kernel/random/uuid)" +export UUID + +node x-pack/solutions/observability/plugins/ux/.buildkite/pipelines/flaky.js | buildkite-agent pipeline upload diff --git a/x-pack/plugins/observability_solution/ux/.storybook/main.js b/x-pack/solutions/observability/plugins/ux/.storybook/main.js similarity index 100% rename from x-pack/plugins/observability_solution/ux/.storybook/main.js rename to x-pack/solutions/observability/plugins/ux/.storybook/main.js diff --git a/x-pack/plugins/observability_solution/ux/CONTRIBUTING.md b/x-pack/solutions/observability/plugins/ux/CONTRIBUTING.md similarity index 100% rename from x-pack/plugins/observability_solution/ux/CONTRIBUTING.md rename to x-pack/solutions/observability/plugins/ux/CONTRIBUTING.md diff --git a/x-pack/plugins/observability_solution/ux/common/agent_name.ts b/x-pack/solutions/observability/plugins/ux/common/agent_name.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/agent_name.ts rename to x-pack/solutions/observability/plugins/ux/common/agent_name.ts diff --git a/x-pack/plugins/observability_solution/ux/common/config.ts b/x-pack/solutions/observability/plugins/ux/common/config.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/config.ts rename to x-pack/solutions/observability/plugins/ux/common/config.ts diff --git a/x-pack/plugins/observability_solution/ux/common/elasticsearch_fieldnames.ts b/x-pack/solutions/observability/plugins/ux/common/elasticsearch_fieldnames.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/elasticsearch_fieldnames.ts rename to x-pack/solutions/observability/plugins/ux/common/elasticsearch_fieldnames.ts diff --git a/x-pack/plugins/observability_solution/ux/common/environment_filter_values.ts b/x-pack/solutions/observability/plugins/ux/common/environment_filter_values.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/environment_filter_values.ts rename to x-pack/solutions/observability/plugins/ux/common/environment_filter_values.ts diff --git a/x-pack/plugins/observability_solution/ux/common/environment_rt.ts b/x-pack/solutions/observability/plugins/ux/common/environment_rt.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/environment_rt.ts rename to x-pack/solutions/observability/plugins/ux/common/environment_rt.ts diff --git a/x-pack/plugins/observability_solution/ux/common/fetch_options.ts b/x-pack/solutions/observability/plugins/ux/common/fetch_options.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/fetch_options.ts rename to x-pack/solutions/observability/plugins/ux/common/fetch_options.ts diff --git a/x-pack/plugins/observability_solution/ux/common/transaction_types.ts b/x-pack/solutions/observability/plugins/ux/common/transaction_types.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/transaction_types.ts rename to x-pack/solutions/observability/plugins/ux/common/transaction_types.ts diff --git a/x-pack/plugins/observability_solution/ux/common/utils/merge_projection.ts b/x-pack/solutions/observability/plugins/ux/common/utils/merge_projection.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/utils/merge_projection.ts rename to x-pack/solutions/observability/plugins/ux/common/utils/merge_projection.ts diff --git a/x-pack/plugins/observability_solution/ux/common/utils/pick_keys.ts b/x-pack/solutions/observability/plugins/ux/common/utils/pick_keys.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/utils/pick_keys.ts rename to x-pack/solutions/observability/plugins/ux/common/utils/pick_keys.ts diff --git a/x-pack/plugins/observability_solution/ux/common/ux_ui_filter.ts b/x-pack/solutions/observability/plugins/ux/common/ux_ui_filter.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/common/ux_ui_filter.ts rename to x-pack/solutions/observability/plugins/ux/common/ux_ui_filter.ts diff --git a/x-pack/solutions/observability/plugins/ux/e2e/README.md b/x-pack/solutions/observability/plugins/ux/e2e/README.md new file mode 100644 index 0000000000000..4aa66d4fa313a --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/e2e/README.md @@ -0,0 +1,15 @@ +## How to run these tests + +These tests rely on the Kibana functional test runner. There is a Kibana config in this directory, and a dedicated +script for standing up the test server. + +### Start the server + +From `~/x-pack/solutions/observability/plugins/ux/scripts`, run `node e2e.js --server`. Wait for the server to startup. It will provide you +with an example run command when it finishes. + +### Run the tests + +From this directory, `~/x-pack/solutions/observability/plugins/ux/e2e`, you can now run `node ../../../../../../scripts/functional_test_runner --config synthetics_run.ts`. + +In addition to the usual flags like `--grep`, you can also specify `--no-headless` in order to view your tests as you debug/develop. diff --git a/x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_8.0.0/data.json.gz b/x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_8.0.0/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_8.0.0/data.json.gz rename to x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_8.0.0/data.json.gz diff --git a/x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_8.0.0/mappings.json b/x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_8.0.0/mappings.json similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_8.0.0/mappings.json rename to x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_8.0.0/mappings.json diff --git a/x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_test_data/data.json.gz b/x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_test_data/data.json.gz similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_test_data/data.json.gz rename to x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_test_data/data.json.gz diff --git a/x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_test_data/mappings.json b/x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_test_data/mappings.json similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/fixtures/rum_test_data/mappings.json rename to x-pack/solutions/observability/plugins/ux/e2e/fixtures/rum_test_data/mappings.json diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/core_web_vitals.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/core_web_vitals.ts similarity index 96% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/core_web_vitals.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/core_web_vitals.ts index 6aeebbb913b13..a40073644803d 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/core_web_vitals.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/core_web_vitals.ts @@ -6,7 +6,7 @@ */ import { journey, step, expect, before } from '@elastic/synthetics'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { UXDashboardDatePicker } from '../page_objects/date_picker'; import { loginToKibana, waitForLoadingToFinish } from './utils'; diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/index.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/index.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/index.ts diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/inp.journey.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/inp.journey.ts similarity index 98% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/inp.journey.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/inp.journey.ts index 451b5b749a936..215325caeb40f 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/inp.journey.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/inp.journey.ts @@ -7,7 +7,7 @@ import { journey, step, expect, before } from '@elastic/synthetics'; import { Client } from '@elastic/elasticsearch'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { loginToKibana, waitForLoadingToFinish } from './utils'; const addTestTransaction = async (params: any) => { diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/page_views.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/page_views.ts similarity index 97% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/page_views.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/page_views.ts index cdae75f724d44..ec91050fb6d26 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/page_views.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/page_views.ts @@ -6,7 +6,7 @@ */ import { journey, step, expect, before } from '@elastic/synthetics'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { UXDashboardDatePicker } from '../page_objects/date_picker'; import { byTestId, loginToKibana, waitForLoadingToFinish } from './utils'; diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/url_ux_query.journey.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/url_ux_query.journey.ts similarity index 95% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/url_ux_query.journey.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/url_ux_query.journey.ts index 24c1847b5cd06..730952254f1d5 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/url_ux_query.journey.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/url_ux_query.journey.ts @@ -6,7 +6,7 @@ */ import { journey, step, expect, before } from '@elastic/synthetics'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { UXDashboardDatePicker } from '../page_objects/date_picker'; import { byTestId, loginToKibana, waitForLoadingToFinish } from './utils'; diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/utils.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/utils.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/utils.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/utils.ts diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_client_metrics.journey.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_client_metrics.journey.ts similarity index 97% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/ux_client_metrics.journey.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_client_metrics.journey.ts index 97cad67b91a7f..ad8f569dbd47c 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_client_metrics.journey.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_client_metrics.journey.ts @@ -6,7 +6,7 @@ */ import { journey, step, expect, before } from '@elastic/synthetics'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { UXDashboardDatePicker } from '../page_objects/date_picker'; import { byTestId, loginToKibana, waitForLoadingToFinish } from './utils'; diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_js_errors.journey.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_js_errors.journey.ts similarity index 96% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/ux_js_errors.journey.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_js_errors.journey.ts index 9f573bf5e149c..4c685c4db4f42 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_js_errors.journey.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_js_errors.journey.ts @@ -6,7 +6,7 @@ */ import { journey, step, expect, before } from '@elastic/synthetics'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { UXDashboardDatePicker } from '../page_objects/date_picker'; import { byTestId, loginToKibana, waitForLoadingToFinish } from './utils'; diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_long_task_metric_journey.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_long_task_metric_journey.ts similarity index 96% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/ux_long_task_metric_journey.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_long_task_metric_journey.ts index eb9bad1c763d3..5e55610e87933 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_long_task_metric_journey.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_long_task_metric_journey.ts @@ -6,7 +6,7 @@ */ import { journey, step, before, expect } from '@elastic/synthetics'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { UXDashboardDatePicker } from '../page_objects/date_picker'; import { byTestId, loginToKibana, waitForLoadingToFinish } from './utils'; diff --git a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_visitor_breakdown.journey.ts b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_visitor_breakdown.journey.ts similarity index 96% rename from x-pack/plugins/observability_solution/ux/e2e/journeys/ux_visitor_breakdown.journey.ts rename to x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_visitor_breakdown.journey.ts index 86e804f947515..92e51d4c16c36 100644 --- a/x-pack/plugins/observability_solution/ux/e2e/journeys/ux_visitor_breakdown.journey.ts +++ b/x-pack/solutions/observability/plugins/ux/e2e/journeys/ux_visitor_breakdown.journey.ts @@ -6,7 +6,7 @@ */ import { journey, step, before } from '@elastic/synthetics'; -import { recordVideo } from '../helpers/record_video'; +import { recordVideo } from '@kbn/observability-synthetics-test-data'; import { UXDashboardDatePicker } from '../page_objects/date_picker'; import { byLensTestId, loginToKibana, waitForLoadingToFinish } from './utils'; diff --git a/x-pack/plugins/observability_solution/ux/e2e/page_objects/dashboard.ts b/x-pack/solutions/observability/plugins/ux/e2e/page_objects/dashboard.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/page_objects/dashboard.ts rename to x-pack/solutions/observability/plugins/ux/e2e/page_objects/dashboard.ts diff --git a/x-pack/plugins/observability_solution/ux/e2e/page_objects/date_picker.ts b/x-pack/solutions/observability/plugins/ux/e2e/page_objects/date_picker.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/page_objects/date_picker.ts rename to x-pack/solutions/observability/plugins/ux/e2e/page_objects/date_picker.ts diff --git a/x-pack/plugins/observability_solution/ux/e2e/page_objects/login.tsx b/x-pack/solutions/observability/plugins/ux/e2e/page_objects/login.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/page_objects/login.tsx rename to x-pack/solutions/observability/plugins/ux/e2e/page_objects/login.tsx diff --git a/x-pack/plugins/observability_solution/ux/e2e/page_objects/utils.tsx b/x-pack/solutions/observability/plugins/ux/e2e/page_objects/utils.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/e2e/page_objects/utils.tsx rename to x-pack/solutions/observability/plugins/ux/e2e/page_objects/utils.tsx diff --git a/x-pack/solutions/observability/plugins/ux/e2e/synthetics_run.ts b/x-pack/solutions/observability/plugins/ux/e2e/synthetics_run.ts new file mode 100644 index 0000000000000..84287949caa28 --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/e2e/synthetics_run.ts @@ -0,0 +1,39 @@ +/* + * 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 { FtrConfigProviderContext } from '@kbn/test'; +import path from 'path'; +import { SyntheticsRunner, argv } from '@kbn/observability-synthetics-test-data'; + +const { headless, grep, bail: pauseOnError } = argv; + +async function runE2ETests({ readConfigFile }: FtrConfigProviderContext) { + const kibanaConfig = await readConfigFile(require.resolve('@kbn/synthetics-e2e/config')); + + return { + ...kibanaConfig.getAll(), + testRunner: async ({ getService }: any) => { + const syntheticsRunner = new SyntheticsRunner(getService, { + headless, + match: grep, + pauseOnError, + }); + + await syntheticsRunner.setup(); + + const fixturesDir = path.join(__dirname, '../e2e/fixtures/'); + + await syntheticsRunner.loadTestData(fixturesDir, ['rum_8.0.0', 'rum_test_data']); + await syntheticsRunner.loadTestFiles(async () => { + require('./journeys'); + }); + await syntheticsRunner.run(); + }, + }; +} + +// eslint-disable-next-line import/no-default-export +export default runE2ETests; diff --git a/x-pack/solutions/observability/plugins/ux/e2e/tsconfig.json b/x-pack/solutions/observability/plugins/ux/e2e/tsconfig.json new file mode 100644 index 0000000000000..0ead299c18fcf --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/e2e/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "exclude": ["tmp", "target/**/*"], + "include": ["./**/*"], + "compilerOptions": { + "outDir": "target/types", + "types": ["node"] + }, + "kbn_references": [ + "@kbn/test", + "@kbn/observability-synthetics-test-data", + ] +} diff --git a/x-pack/solutions/observability/plugins/ux/jest.config.js b/x-pack/solutions/observability/plugins/ux/jest.config.js new file mode 100644 index 0000000000000..2ea37f49e3d53 --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/jest.config.js @@ -0,0 +1,14 @@ +/* + * 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. + */ + +const path = require('path'); + +module.exports = { + preset: '@kbn/test', + rootDir: path.resolve(__dirname, '../../../../..'), + roots: ['/x-pack/solutions/observability/plugins/ux'], +}; diff --git a/x-pack/solutions/observability/plugins/ux/kibana.jsonc b/x-pack/solutions/observability/plugins/ux/kibana.jsonc new file mode 100644 index 0000000000000..6626a9e414612 --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/kibana.jsonc @@ -0,0 +1,49 @@ +{ + "type": "plugin", + "id": "@kbn/ux-plugin", + "owner": [ + "@elastic/obs-ux-management-team" + ], + "group": "observability", + "visibility": "private", + "plugin": { + "id": "ux", + "browser": true, + "server": true, + "configPath": [ + "xpack", + "ux" + ], + "requiredPlugins": [ + "features", + "data", + "dataViews", + "exploratoryView", + "licensing", + "triggersActionsUi", + "observabilityShared", + "embeddable", + "inspector", + "apm" + ], + "optionalPlugins": [ + "cloud", + "usageCollection", + "taskManager", + "actions", + "alerts", + "observability", + "security", + "maps", + "lens", + "observabilityAIAssistant", + "spaces" + ], + "requiredBundles": [ + "kibanaReact", + "exploratoryView", + "observability", + "maps" + ] + } +} diff --git a/x-pack/plugins/observability_solution/ux/public/application/application.test.tsx b/x-pack/solutions/observability/plugins/ux/public/application/application.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/application/application.test.tsx rename to x-pack/solutions/observability/plugins/ux/public/application/application.test.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/application/ux_app.tsx b/x-pack/solutions/observability/plugins/ux/public/application/ux_app.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/application/ux_app.tsx rename to x-pack/solutions/observability/plugins/ux/public/application/ux_app.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/action_menu/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/action_menu/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/action_menu/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/action_menu/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/action_menu/inpector_link.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/action_menu/inpector_link.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/action_menu/inpector_link.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/action_menu/inpector_link.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/breakdowns/breakdown_filter.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/breakdowns/breakdown_filter.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/breakdowns/breakdown_filter.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/breakdowns/breakdown_filter.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/chart_wrapper/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/chart_wrapper/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/chart_wrapper/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/chart_wrapper/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/__snapshots__/visitor_breakdown_chart.test.tsx.snap b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/__snapshots__/visitor_breakdown_chart.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/__snapshots__/visitor_breakdown_chart.test.tsx.snap rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/__snapshots__/visitor_breakdown_chart.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/page_load_dist_chart.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/page_load_dist_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/page_load_dist_chart.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/page_load_dist_chart.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/page_views_chart.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/page_views_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/page_views_chart.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/page_views_chart.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/use_exp_view_attrs.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/use_exp_view_attrs.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/use_exp_view_attrs.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/use_exp_view_attrs.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.test.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.test.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.test.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/charts/visitor_breakdown_chart.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/client_metrics/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/client_metrics/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/client_metrics/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/client_metrics/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/client_metrics/metrics.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/client_metrics/metrics.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/client_metrics/metrics.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/client_metrics/metrics.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/csm_shared_context/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/csm_shared_context/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/csm_shared_context/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/csm_shared_context/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/empty_state_loading.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/empty_state_loading.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/empty_state_loading.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/empty_state_loading.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/environment_filter/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/environment_filter/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/environment_filter/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/environment_filter/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/hooks/use_has_rum_data.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/hooks/use_has_rum_data.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/hooks/use_has_rum_data.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/hooks/use_has_rum_data.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/hooks/use_local_uifilters.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/hooks/use_local_uifilters.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/hooks/use_local_uifilters.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/hooks/use_local_uifilters.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/hooks/use_ux_query.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/hooks/use_ux_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/hooks/use_ux_query.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/hooks/use_ux_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/impactful_metrics/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/impactful_metrics/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/impactful_metrics/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/impactful_metrics/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/impactful_metrics/js_errors.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/impactful_metrics/js_errors.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/impactful_metrics/js_errors.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/impactful_metrics/js_errors.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/queries.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/queries.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/queries.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/queries.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_filters.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/selected_wildcards.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/percentile_annotations.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/percentile_annotations.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/percentile_annotations.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/percentile_annotations.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/reset_percentile_zoom.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/reset_percentile_zoom.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/reset_percentile_zoom.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/reset_percentile_zoom.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/types.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_load_distribution/types.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_load_distribution/types.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_views_trend/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_views_trend/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/page_views_trend/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/page_views_trend/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/panels/page_load_and_views.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/panels/page_load_and_views.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/panels/page_load_and_views.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/panels/page_load_and_views.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/panels/visitor_breakdowns.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/panels/visitor_breakdowns.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/panels/visitor_breakdowns.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/panels/visitor_breakdowns.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/panels/web_application_select.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/panels/web_application_select.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/panels/web_application_select.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/panels/web_application_select.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/rum_dashboard.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/rum_dashboard.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/rum_dashboard.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/rum_dashboard.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/rum_datepicker/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/rum_datepicker/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/rum_datepicker/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/rum_datepicker/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/rum_home.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/rum_home.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/rum_home.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/rum_home.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/translations.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/translations.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/translations.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/service_name_filter/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/service_name_filter/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/service_name_filter/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/service_name_filter/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/url_search/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/url_search/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/url_search/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/url_search/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/url_search/render_option.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/url_search/render_option.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/url_search/render_option.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/url_search/render_option.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/url_search/use_url_search.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/url_search/use_url_search.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/url_filter/url_search/use_url_search.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/url_filter/url_search/use_url_search.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/user_percentile/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/user_percentile/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/user_percentile/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/user_percentile/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/utils/test_helper.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/utils/test_helper.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/utils/test_helper.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/utils/test_helper.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/format_to_sec.test.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/format_to_sec.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/format_to_sec.test.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/format_to_sec.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.test.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.test.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.test.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/key_ux_metrics.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/translations.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/translations.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_metrics/translations.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_metrics/translations.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_overview_fetchers.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_overview_fetchers.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/ux_overview_fetchers.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/ux_overview_fetchers.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__mocks__/regions_layer.mock.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__mocks__/regions_layer.mock.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__mocks__/regions_layer.mock.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__mocks__/regions_layer.mock.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/embedded_map.test.tsx.snap b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/embedded_map.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/embedded_map.test.tsx.snap rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/embedded_map.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/map_tooltip.test.tsx.snap b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/map_tooltip.test.tsx.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/map_tooltip.test.tsx.snap rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__snapshots__/map_tooltip.test.tsx.snap diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__stories__/map_tooltip.stories.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__stories__/map_tooltip.stories.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__stories__/map_tooltip.stories.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/__stories__/map_tooltip.stories.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.test.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.test.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.test.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/embedded_map.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/index.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/index.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/index.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/index.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.test.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.test.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.test.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.tsx b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.tsx rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/map_tooltip.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.test.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.test.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_layer_list.ts diff --git a/x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_map_filters.ts b/x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_map_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_map_filters.ts rename to x-pack/solutions/observability/plugins/ux/public/components/app/rum_dashboard/visitor_breakdown_map/use_map_filters.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/plugin_context.ts b/x-pack/solutions/observability/plugins/ux/public/context/plugin_context.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/plugin_context.ts rename to x-pack/solutions/observability/plugins/ux/public/context/plugin_context.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/constants.ts b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/constants.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/constants.ts rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/constants.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/helpers.test.ts b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/helpers.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/helpers.test.ts rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/helpers.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/helpers.ts b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/helpers.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/helpers.ts rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/helpers.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/mock_url_params_context_provider.tsx b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/mock_url_params_context_provider.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/mock_url_params_context_provider.tsx rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/mock_url_params_context_provider.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/resolve_url_params.ts b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/resolve_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/resolve_url_params.ts rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/resolve_url_params.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/types.ts b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/types.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/types.ts rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/types.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/url_params_context.test.tsx b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/url_params_context.test.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/url_params_context.test.tsx rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/url_params_context.test.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/url_params_context.tsx b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/url_params_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/url_params_context.tsx rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/url_params_context.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/use_url_params.ts b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/use_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/use_url_params.ts rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/use_url_params.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/url_params_context/use_ux_url_params.ts b/x-pack/solutions/observability/plugins/ux/public/context/url_params_context/use_ux_url_params.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/url_params_context/use_ux_url_params.ts rename to x-pack/solutions/observability/plugins/ux/public/context/url_params_context/use_ux_url_params.ts diff --git a/x-pack/plugins/observability_solution/ux/public/context/use_ux_plugin_context.tsx b/x-pack/solutions/observability/plugins/ux/public/context/use_ux_plugin_context.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/context/use_ux_plugin_context.tsx rename to x-pack/solutions/observability/plugins/ux/public/context/use_ux_plugin_context.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_breakpoints.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_breakpoints.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_breakpoints.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_breakpoints.ts diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_client_metrics_query.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_client_metrics_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_client_metrics_query.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_client_metrics_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_core_web_vitals_query.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_core_web_vitals_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_core_web_vitals_query.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_core_web_vitals_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_date_range_redirect.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_date_range_redirect.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_date_range_redirect.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_date_range_redirect.ts diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_deep_object_identity.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_deep_object_identity.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_deep_object_identity.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_deep_object_identity.ts diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_dynamic_data_view.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_dynamic_data_view.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_dynamic_data_view.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_dynamic_data_view.ts diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_environments_fetcher.tsx b/x-pack/solutions/observability/plugins/ux/public/hooks/use_environments_fetcher.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_environments_fetcher.tsx rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_environments_fetcher.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_fetcher.tsx b/x-pack/solutions/observability/plugins/ux/public/hooks/use_fetcher.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_fetcher.tsx rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_fetcher.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_inp_query.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_inp_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_inp_query.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_inp_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_js_errors_query.tsx b/x-pack/solutions/observability/plugins/ux/public/hooks/use_js_errors_query.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_js_errors_query.tsx rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_js_errors_query.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_kibana_services.tsx b/x-pack/solutions/observability/plugins/ux/public/hooks/use_kibana_services.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_kibana_services.tsx rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_kibana_services.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_long_task_metrics_query.tsx b/x-pack/solutions/observability/plugins/ux/public/hooks/use_long_task_metrics_query.tsx similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_long_task_metrics_query.tsx rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_long_task_metrics_query.tsx diff --git a/x-pack/plugins/observability_solution/ux/public/hooks/use_static_data_view.ts b/x-pack/solutions/observability/plugins/ux/public/hooks/use_static_data_view.ts similarity index 91% rename from x-pack/plugins/observability_solution/ux/public/hooks/use_static_data_view.ts rename to x-pack/solutions/observability/plugins/ux/public/hooks/use_static_data_view.ts index 51ebe9e4c28bf..be4a382b8ad56 100644 --- a/x-pack/plugins/observability_solution/ux/public/hooks/use_static_data_view.ts +++ b/x-pack/solutions/observability/plugins/ux/public/hooks/use_static_data_view.ts @@ -12,7 +12,6 @@ export function useStaticDataView() { const { exploratoryView } = useKibanaServices(); const { data, loading } = useFetcher(async () => { return exploratoryView.getAppDataView('ux'); - // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return { diff --git a/x-pack/plugins/observability_solution/ux/public/index.ts b/x-pack/solutions/observability/plugins/ux/public/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/index.ts rename to x-pack/solutions/observability/plugins/ux/public/index.ts diff --git a/x-pack/plugins/observability_solution/ux/public/plugin.ts b/x-pack/solutions/observability/plugins/ux/public/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/plugin.ts rename to x-pack/solutions/observability/plugins/ux/public/plugin.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/client_metrics_query.test.ts.snap b/x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/client_metrics_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/client_metrics_query.test.ts.snap rename to x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/client_metrics_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/core_web_vitals_query.test.ts.snap b/x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/core_web_vitals_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/core_web_vitals_query.test.ts.snap rename to x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/core_web_vitals_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/js_errors_query.test.ts.snap b/x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/js_errors_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/js_errors_query.test.ts.snap rename to x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/js_errors_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/long_task_metrics_query.test.ts.snap b/x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/long_task_metrics_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/long_task_metrics_query.test.ts.snap rename to x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/long_task_metrics_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/service_name_query.test.ts.snap b/x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/service_name_query.test.ts.snap similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/__snapshots__/service_name_query.test.ts.snap rename to x-pack/solutions/observability/plugins/ux/public/services/data/__snapshots__/service_name_query.test.ts.snap diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/call_date_math.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/call_date_math.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/call_date_math.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/call_date_math.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/client_metrics_query.test.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/client_metrics_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/client_metrics_query.test.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/client_metrics_query.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/client_metrics_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/client_metrics_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/client_metrics_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/client_metrics_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/core_web_vitals_query.test.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/core_web_vitals_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/core_web_vitals_query.test.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/core_web_vitals_query.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/core_web_vitals_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/core_web_vitals_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/core_web_vitals_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/core_web_vitals_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/environments_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/environments_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/environments_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/environments_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/get_es_filter.test.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/get_es_filter.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/get_es_filter.test.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/get_es_filter.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/get_es_filter.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/get_es_filter.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/get_es_filter.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/get_es_filter.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/get_exp_view_filter.test.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/get_exp_view_filter.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/get_exp_view_filter.test.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/get_exp_view_filter.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/get_exp_view_filter.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/get_exp_view_filter.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/get_exp_view_filter.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/get_exp_view_filter.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/has_rum_data_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/has_rum_data_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/has_rum_data_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/has_rum_data_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/inp_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/inp_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/inp_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/inp_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/js_errors_query.test.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/js_errors_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/js_errors_query.test.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/js_errors_query.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/js_errors_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/js_errors_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/js_errors_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/js_errors_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/long_task_metrics_query.test.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/long_task_metrics_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/long_task_metrics_query.test.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/long_task_metrics_query.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/long_task_metrics_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/long_task_metrics_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/long_task_metrics_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/long_task_metrics_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/projections.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/projections.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/projections.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/projections.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/range_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/range_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/range_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/range_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/service_name_query.test.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/service_name_query.test.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/service_name_query.test.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/service_name_query.test.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/service_name_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/service_name_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/service_name_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/service_name_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/data/url_search_query.ts b/x-pack/solutions/observability/plugins/ux/public/services/data/url_search_query.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/data/url_search_query.ts rename to x-pack/solutions/observability/plugins/ux/public/services/data/url_search_query.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/rest/call_api.ts b/x-pack/solutions/observability/plugins/ux/public/services/rest/call_api.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/rest/call_api.ts rename to x-pack/solutions/observability/plugins/ux/public/services/rest/call_api.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/rest/create_call_apm_api.ts b/x-pack/solutions/observability/plugins/ux/public/services/rest/create_call_apm_api.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/rest/create_call_apm_api.ts rename to x-pack/solutions/observability/plugins/ux/public/services/rest/create_call_apm_api.ts diff --git a/x-pack/plugins/observability_solution/ux/public/services/rest/data_view.ts b/x-pack/solutions/observability/plugins/ux/public/services/rest/data_view.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/public/services/rest/data_view.ts rename to x-pack/solutions/observability/plugins/ux/public/services/rest/data_view.ts diff --git a/x-pack/solutions/observability/plugins/ux/readme.md b/x-pack/solutions/observability/plugins/ux/readme.md new file mode 100644 index 0000000000000..0f39b686260aa --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/readme.md @@ -0,0 +1,14 @@ +# Documentation for UX UI developers + +https://docs.elastic.dev/kibana-dev-docs/welcome + +## Running E2E Tests + +The tests are managed via the `scripts/e2e.js` file. This script accepts numerous options. + +From the Kibana root you can run `node x-pack/solutions/observability/plugins/ux/scripts/e2e.js` to simply stand up the stack, load data, and run the tests. + +If you are developing a new test, it is better to stand up the stack in one shell and load data/run tests in a second session. You can do this by running: + +- `node ./x-pack/solutions/observability/plugins/ux/scripts/e2e.js --server` +- `node ./x-pack/solutions/observability/plugins/ux/scripts/e2e.js --runner`, you can also specify `--grep "{TEST_NAME}"` to run a specific series of tests diff --git a/x-pack/plugins/observability_solution/ux/scripts/e2e.js b/x-pack/solutions/observability/plugins/ux/scripts/e2e.js similarity index 100% rename from x-pack/plugins/observability_solution/ux/scripts/e2e.js rename to x-pack/solutions/observability/plugins/ux/scripts/e2e.js diff --git a/x-pack/plugins/observability_solution/ux/server/index.ts b/x-pack/solutions/observability/plugins/ux/server/index.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/server/index.ts rename to x-pack/solutions/observability/plugins/ux/server/index.ts diff --git a/x-pack/plugins/observability_solution/ux/server/plugin.ts b/x-pack/solutions/observability/plugins/ux/server/plugin.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/server/plugin.ts rename to x-pack/solutions/observability/plugins/ux/server/plugin.ts diff --git a/x-pack/solutions/observability/plugins/ux/tsconfig.json b/x-pack/solutions/observability/plugins/ux/tsconfig.json new file mode 100644 index 0000000000000..3358b1a772821 --- /dev/null +++ b/x-pack/solutions/observability/plugins/ux/tsconfig.json @@ -0,0 +1,56 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "../../../../../typings/**/*", + "common/**/*", + "public/**/*", + "server/**/*", + "typings/**/*", + "public/**/*.json" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/data-plugin", + "@kbn/embeddable-plugin", + "@kbn/home-plugin", + "@kbn/inspector-plugin", + "@kbn/kibana-react-plugin", + "@kbn/apm-plugin", + "@kbn/features-plugin", + "@kbn/licensing-plugin", + "@kbn/maps-plugin", + "@kbn/observability-plugin", + "@kbn/lens-plugin", + "@kbn/i18n", + "@kbn/io-ts-utils", + "@kbn/data-views-plugin", + "@kbn/core-http-browser", + "@kbn/datemath", + "@kbn/ui-theme", + "@kbn/typed-react-router-config", + "@kbn/utility-types", + "@kbn/server-route-repository", + "@kbn/es-types", + "@kbn/shared-ux-page-kibana-template", + "@kbn/i18n-react", + "@kbn/es-query", + "@kbn/exploratory-view-plugin", + "@kbn/observability-shared-plugin", + "@kbn/shared-ux-router", + "@kbn/observability-ai-assistant-plugin", + "@kbn/config-schema", + "@kbn/shared-ux-link-redirect-app", + "@kbn/apm-data-view", + "@kbn/spaces-plugin", + "@kbn/deeplinks-observability", + "@kbn/react-kibana-context-render", + "@kbn/react-kibana-context-theme", + "@kbn/search-types", + "@kbn/server-route-repository-utils", + "@kbn/core-chrome-browser" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/observability_solution/ux/typings/ui_filters.ts b/x-pack/solutions/observability/plugins/ux/typings/ui_filters.ts similarity index 100% rename from x-pack/plugins/observability_solution/ux/typings/ui_filters.ts rename to x-pack/solutions/observability/plugins/ux/typings/ui_filters.ts diff --git a/packages/kbn-data-stream-adapter/README.md b/x-pack/solutions/security/packages/data-stream-adapter/README.md similarity index 100% rename from packages/kbn-data-stream-adapter/README.md rename to x-pack/solutions/security/packages/data-stream-adapter/README.md diff --git a/x-pack/solutions/security/packages/data-stream-adapter/index.ts b/x-pack/solutions/security/packages/data-stream-adapter/index.ts new file mode 100644 index 0000000000000..211fc4f9b5f17 --- /dev/null +++ b/x-pack/solutions/security/packages/data-stream-adapter/index.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. + */ + +export { DataStreamAdapter } from './src/data_stream_adapter'; +export { DataStreamSpacesAdapter } from './src/data_stream_spaces_adapter'; + +export { retryTransientEsErrors, ecsFieldMap } from '@kbn/index-adapter'; +export type { + SetComponentTemplateParams, + SetIndexTemplateParams, + InstallParams, + EcsFieldMap, +} from '@kbn/index-adapter'; + +export * from '@kbn/index-adapter/src/field_maps/types'; diff --git a/x-pack/solutions/security/packages/data-stream-adapter/jest.config.js b/x-pack/solutions/security/packages/data-stream-adapter/jest.config.js new file mode 100644 index 0000000000000..a5e7d4348c737 --- /dev/null +++ b/x-pack/solutions/security/packages/data-stream-adapter/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/data-stream-adapter'], +}; diff --git a/packages/kbn-data-stream-adapter/kibana.jsonc b/x-pack/solutions/security/packages/data-stream-adapter/kibana.jsonc similarity index 100% rename from packages/kbn-data-stream-adapter/kibana.jsonc rename to x-pack/solutions/security/packages/data-stream-adapter/kibana.jsonc diff --git a/x-pack/solutions/security/packages/data-stream-adapter/package.json b/x-pack/solutions/security/packages/data-stream-adapter/package.json new file mode 100644 index 0000000000000..ff622fd59305c --- /dev/null +++ b/x-pack/solutions/security/packages/data-stream-adapter/package.json @@ -0,0 +1,7 @@ +{ + "name": "@kbn/data-stream-adapter", + "version": "1.0.0", + "description": "Utility library for Elasticsearch Data Stream management", + "license": "Elastic License 2.0", + "private": true +} diff --git a/packages/kbn-data-stream-adapter/src/create_or_update_data_stream.test.ts b/x-pack/solutions/security/packages/data-stream-adapter/src/create_or_update_data_stream.test.ts similarity index 93% rename from packages/kbn-data-stream-adapter/src/create_or_update_data_stream.test.ts rename to x-pack/solutions/security/packages/data-stream-adapter/src/create_or_update_data_stream.test.ts index e2141d4afb740..35112e96ecb09 100644 --- a/packages/kbn-data-stream-adapter/src/create_or_update_data_stream.test.ts +++ b/x-pack/solutions/security/packages/data-stream-adapter/src/create_or_update_data_stream.test.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { IndicesDataStream } from '@elastic/elasticsearch/lib/api/types'; diff --git a/packages/kbn-data-stream-adapter/src/create_or_update_data_stream.ts b/x-pack/solutions/security/packages/data-stream-adapter/src/create_or_update_data_stream.ts similarity index 94% rename from packages/kbn-data-stream-adapter/src/create_or_update_data_stream.ts rename to x-pack/solutions/security/packages/data-stream-adapter/src/create_or_update_data_stream.ts index 2b0fba3fb0ac0..56e3d3a63548a 100644 --- a/packages/kbn-data-stream-adapter/src/create_or_update_data_stream.ts +++ b/x-pack/solutions/security/packages/data-stream-adapter/src/create_or_update_data_stream.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { IndicesDataStream } from '@elastic/elasticsearch/lib/api/types'; diff --git a/x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts b/x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts new file mode 100644 index 0000000000000..68771a4b2e07f --- /dev/null +++ b/x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_adapter.ts @@ -0,0 +1,37 @@ +/* + * 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 { SetIndexTemplateParams } from '@kbn/index-adapter'; +import { IndexAdapter, type InstallParams } from '@kbn/index-adapter'; +import { createOrUpdateDataStream } from './create_or_update_data_stream'; + +export class DataStreamAdapter extends IndexAdapter { + public setIndexTemplate(params: SetIndexTemplateParams) { + super.setIndexTemplate({ ...params, isDataStream: true }); + } + + public async install(params: InstallParams) { + this.installed = true; + const { logger, pluginStop$, tasksTimeoutMs } = params; + const esClient = await params.esClient; + + await this.installTemplates(params); + + const installFn = this.getInstallFn({ logger, pluginStop$, tasksTimeoutMs }); + + // create data stream when everything is ready + await installFn( + createOrUpdateDataStream({ + name: this.name, + esClient, + logger, + totalFieldsLimit: this.totalFieldsLimit, + }), + `${this.name} data stream` + ); + } +} diff --git a/packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts b/x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts similarity index 81% rename from packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts rename to x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts index df131920b7bf9..5fbb986fc647d 100644 --- a/packages/kbn-data-stream-adapter/src/data_stream_spaces_adapter.ts +++ b/x-pack/solutions/security/packages/data-stream-adapter/src/data_stream_spaces_adapter.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { diff --git a/x-pack/solutions/security/packages/data-stream-adapter/tsconfig.json b/x-pack/solutions/security/packages/data-stream-adapter/tsconfig.json new file mode 100644 index 0000000000000..0df371ef60210 --- /dev/null +++ b/x-pack/solutions/security/packages/data-stream-adapter/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + ] + }, + "include": ["**/*.ts"], + "kbn_references": [ + "@kbn/core", + "@kbn/index-adapter", + ], + "exclude": [ + "target/**/*" + ], +} diff --git a/x-pack/packages/security-solution/data_table/README.md b/x-pack/solutions/security/packages/data_table/README.md similarity index 100% rename from x-pack/packages/security-solution/data_table/README.md rename to x-pack/solutions/security/packages/data_table/README.md diff --git a/x-pack/packages/security-solution/data_table/common/types/data_table/index.ts b/x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/common/types/data_table/index.ts rename to x-pack/solutions/security/packages/data_table/common/types/data_table/index.ts diff --git a/x-pack/packages/security-solution/data_table/common/types/detail_panel.ts b/x-pack/solutions/security/packages/data_table/common/types/detail_panel.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/common/types/detail_panel.ts rename to x-pack/solutions/security/packages/data_table/common/types/detail_panel.ts diff --git a/x-pack/packages/security-solution/data_table/common/types/header_actions/index.ts b/x-pack/solutions/security/packages/data_table/common/types/header_actions/index.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/common/types/header_actions/index.ts rename to x-pack/solutions/security/packages/data_table/common/types/header_actions/index.ts diff --git a/x-pack/packages/security-solution/data_table/common/types/index.ts b/x-pack/solutions/security/packages/data_table/common/types/index.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/common/types/index.ts rename to x-pack/solutions/security/packages/data_table/common/types/index.ts diff --git a/x-pack/packages/security-solution/data_table/common/types/risk_scores.ts b/x-pack/solutions/security/packages/data_table/common/types/risk_scores.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/common/types/risk_scores.ts rename to x-pack/solutions/security/packages/data_table/common/types/risk_scores.ts diff --git a/x-pack/packages/security-solution/data_table/common/types/session_view/index.ts b/x-pack/solutions/security/packages/data_table/common/types/session_view/index.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/common/types/session_view/index.ts rename to x-pack/solutions/security/packages/data_table/common/types/session_view/index.ts diff --git a/x-pack/packages/security-solution/data_table/components/data_table/column_headers/default_headers.ts b/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/default_headers.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/column_headers/default_headers.ts rename to x-pack/solutions/security/packages/data_table/components/data_table/column_headers/default_headers.ts diff --git a/x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.test.tsx b/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.test.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.test.tsx rename to x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.test.tsx diff --git a/x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx b/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/column_headers/helpers.tsx rename to x-pack/solutions/security/packages/data_table/components/data_table/column_headers/helpers.tsx diff --git a/x-pack/packages/security-solution/data_table/components/data_table/column_headers/translations.ts b/x-pack/solutions/security/packages/data_table/components/data_table/column_headers/translations.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/column_headers/translations.ts rename to x-pack/solutions/security/packages/data_table/components/data_table/column_headers/translations.ts diff --git a/x-pack/packages/security-solution/data_table/components/data_table/constants.ts b/x-pack/solutions/security/packages/data_table/components/data_table/constants.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/constants.ts rename to x-pack/solutions/security/packages/data_table/components/data_table/constants.ts diff --git a/x-pack/packages/security-solution/data_table/components/data_table/data_table.stories.tsx b/x-pack/solutions/security/packages/data_table/components/data_table/data_table.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/data_table.stories.tsx rename to x-pack/solutions/security/packages/data_table/components/data_table/data_table.stories.tsx diff --git a/x-pack/packages/security-solution/data_table/components/data_table/helpers.test.tsx b/x-pack/solutions/security/packages/data_table/components/data_table/helpers.test.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/helpers.test.tsx rename to x-pack/solutions/security/packages/data_table/components/data_table/helpers.test.tsx diff --git a/x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx b/x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/helpers.tsx rename to x-pack/solutions/security/packages/data_table/components/data_table/helpers.tsx diff --git a/x-pack/packages/security-solution/data_table/components/data_table/index.test.tsx b/x-pack/solutions/security/packages/data_table/components/data_table/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/index.test.tsx rename to x-pack/solutions/security/packages/data_table/components/data_table/index.test.tsx diff --git a/x-pack/packages/security-solution/data_table/components/data_table/index.tsx b/x-pack/solutions/security/packages/data_table/components/data_table/index.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/index.tsx rename to x-pack/solutions/security/packages/data_table/components/data_table/index.tsx diff --git a/x-pack/packages/security-solution/data_table/components/data_table/pagination.ts b/x-pack/solutions/security/packages/data_table/components/data_table/pagination.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/pagination.ts rename to x-pack/solutions/security/packages/data_table/components/data_table/pagination.ts diff --git a/x-pack/packages/security-solution/data_table/components/data_table/types.ts b/x-pack/solutions/security/packages/data_table/components/data_table/types.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/types.ts rename to x-pack/solutions/security/packages/data_table/components/data_table/types.ts diff --git a/x-pack/packages/security-solution/data_table/components/data_table/utils.ts b/x-pack/solutions/security/packages/data_table/components/data_table/utils.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/data_table/utils.ts rename to x-pack/solutions/security/packages/data_table/components/data_table/utils.ts diff --git a/x-pack/packages/security-solution/data_table/components/toolbar/bulk_actions/types.ts b/x-pack/solutions/security/packages/data_table/components/toolbar/bulk_actions/types.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/toolbar/bulk_actions/types.ts rename to x-pack/solutions/security/packages/data_table/components/toolbar/bulk_actions/types.ts diff --git a/x-pack/packages/security-solution/data_table/components/toolbar/unit/index.ts b/x-pack/solutions/security/packages/data_table/components/toolbar/unit/index.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/toolbar/unit/index.ts rename to x-pack/solutions/security/packages/data_table/components/toolbar/unit/index.ts diff --git a/x-pack/packages/security-solution/data_table/components/toolbar/unit/styles.tsx b/x-pack/solutions/security/packages/data_table/components/toolbar/unit/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/components/toolbar/unit/styles.tsx rename to x-pack/solutions/security/packages/data_table/components/toolbar/unit/styles.tsx diff --git a/x-pack/packages/security-solution/data_table/components/toolbar/unit/translations.ts b/x-pack/solutions/security/packages/data_table/components/toolbar/unit/translations.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/components/toolbar/unit/translations.ts rename to x-pack/solutions/security/packages/data_table/components/toolbar/unit/translations.ts diff --git a/x-pack/packages/security-solution/data_table/hooks/use_selector.tsx b/x-pack/solutions/security/packages/data_table/hooks/use_selector.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/hooks/use_selector.tsx rename to x-pack/solutions/security/packages/data_table/hooks/use_selector.tsx diff --git a/x-pack/packages/security-solution/data_table/index.ts b/x-pack/solutions/security/packages/data_table/index.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/index.ts rename to x-pack/solutions/security/packages/data_table/index.ts diff --git a/x-pack/solutions/security/packages/data_table/jest.config.js b/x-pack/solutions/security/packages/data_table/jest.config.js new file mode 100644 index 0000000000000..5b21976680c68 --- /dev/null +++ b/x-pack/solutions/security/packages/data_table/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + roots: ['/x-pack/solutions/security/packages/data_table'], + rootDir: '../../../../..', +}; diff --git a/x-pack/packages/security-solution/data_table/kibana.jsonc b/x-pack/solutions/security/packages/data_table/kibana.jsonc similarity index 100% rename from x-pack/packages/security-solution/data_table/kibana.jsonc rename to x-pack/solutions/security/packages/data_table/kibana.jsonc diff --git a/x-pack/packages/security-solution/data_table/mock/demo_data/endpoint/library_load_event.ts b/x-pack/solutions/security/packages/data_table/mock/demo_data/endpoint/library_load_event.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/demo_data/endpoint/library_load_event.ts rename to x-pack/solutions/security/packages/data_table/mock/demo_data/endpoint/library_load_event.ts diff --git a/x-pack/packages/security-solution/data_table/mock/demo_data/endpoint/process_execution_malware_prevention_alert.ts b/x-pack/solutions/security/packages/data_table/mock/demo_data/endpoint/process_execution_malware_prevention_alert.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/demo_data/endpoint/process_execution_malware_prevention_alert.ts rename to x-pack/solutions/security/packages/data_table/mock/demo_data/endpoint/process_execution_malware_prevention_alert.ts diff --git a/x-pack/packages/security-solution/data_table/mock/demo_data/endpoint/registry_modification_event.ts b/x-pack/solutions/security/packages/data_table/mock/demo_data/endpoint/registry_modification_event.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/demo_data/endpoint/registry_modification_event.ts rename to x-pack/solutions/security/packages/data_table/mock/demo_data/endpoint/registry_modification_event.ts diff --git a/x-pack/packages/security-solution/data_table/mock/demo_data/timeline.ts b/x-pack/solutions/security/packages/data_table/mock/demo_data/timeline.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/demo_data/timeline.ts rename to x-pack/solutions/security/packages/data_table/mock/demo_data/timeline.ts diff --git a/x-pack/packages/security-solution/data_table/mock/global_state.ts b/x-pack/solutions/security/packages/data_table/mock/global_state.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/global_state.ts rename to x-pack/solutions/security/packages/data_table/mock/global_state.ts diff --git a/x-pack/packages/security-solution/data_table/mock/header.ts b/x-pack/solutions/security/packages/data_table/mock/header.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/header.ts rename to x-pack/solutions/security/packages/data_table/mock/header.ts diff --git a/x-pack/packages/security-solution/data_table/mock/mock_local_storage.ts b/x-pack/solutions/security/packages/data_table/mock/mock_local_storage.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/mock_local_storage.ts rename to x-pack/solutions/security/packages/data_table/mock/mock_local_storage.ts diff --git a/x-pack/packages/security-solution/data_table/mock/mock_source.ts b/x-pack/solutions/security/packages/data_table/mock/mock_source.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/mock_source.ts rename to x-pack/solutions/security/packages/data_table/mock/mock_source.ts diff --git a/x-pack/packages/security-solution/data_table/mock/mock_timeline_data.ts b/x-pack/solutions/security/packages/data_table/mock/mock_timeline_data.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/mock_timeline_data.ts rename to x-pack/solutions/security/packages/data_table/mock/mock_timeline_data.ts diff --git a/x-pack/packages/security-solution/data_table/mock/test_providers.tsx b/x-pack/solutions/security/packages/data_table/mock/test_providers.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/mock/test_providers.tsx rename to x-pack/solutions/security/packages/data_table/mock/test_providers.tsx diff --git a/x-pack/packages/security-solution/data_table/package.json b/x-pack/solutions/security/packages/data_table/package.json similarity index 100% rename from x-pack/packages/security-solution/data_table/package.json rename to x-pack/solutions/security/packages/data_table/package.json diff --git a/x-pack/packages/security-solution/data_table/store/data_table/actions.ts b/x-pack/solutions/security/packages/data_table/store/data_table/actions.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/actions.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/actions.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/defaults.ts b/x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/defaults.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/defaults.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/helpers.test.tsx b/x-pack/solutions/security/packages/data_table/store/data_table/helpers.test.tsx similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/helpers.test.tsx rename to x-pack/solutions/security/packages/data_table/store/data_table/helpers.test.tsx diff --git a/x-pack/packages/security-solution/data_table/store/data_table/helpers.ts b/x-pack/solutions/security/packages/data_table/store/data_table/helpers.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/helpers.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/helpers.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/index.ts b/x-pack/solutions/security/packages/data_table/store/data_table/index.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/index.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/index.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/inputs.ts b/x-pack/solutions/security/packages/data_table/store/data_table/inputs.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/inputs.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/inputs.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/model.ts b/x-pack/solutions/security/packages/data_table/store/data_table/model.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/model.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/model.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/reducer.ts b/x-pack/solutions/security/packages/data_table/store/data_table/reducer.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/reducer.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/reducer.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/selectors.ts b/x-pack/solutions/security/packages/data_table/store/data_table/selectors.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/selectors.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/selectors.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/translations.ts b/x-pack/solutions/security/packages/data_table/store/data_table/translations.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/translations.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/translations.ts diff --git a/x-pack/packages/security-solution/data_table/store/data_table/types.ts b/x-pack/solutions/security/packages/data_table/store/data_table/types.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/store/data_table/types.ts rename to x-pack/solutions/security/packages/data_table/store/data_table/types.ts diff --git a/x-pack/solutions/security/packages/data_table/tsconfig.json b/x-pack/solutions/security/packages/data_table/tsconfig.json new file mode 100644 index 0000000000000..d44a419c3ba4e --- /dev/null +++ b/x-pack/solutions/security/packages/data_table/tsconfig.json @@ -0,0 +1,26 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": ["jest", "node", "react"] + }, + "include": ["**/*.ts", "**/*.tsx"], + "exclude": ["target/**/*"], + "kbn_references": [ + "@kbn/cell-actions", + "@kbn/timelines-plugin", + "@kbn/es-query", + "@kbn/triggers-actions-ui-plugin", + "@kbn/securitysolution-ecs", + "@kbn/safer-lodash-set", + "@kbn/i18n", + "@kbn/ui-theme", + "@kbn/kibana-react-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/i18n-react", + "@kbn/ui-actions-plugin", + "@kbn/data-views-plugin", + "@kbn/field-formats-plugin", + "@kbn/data-plugin" + ] +} diff --git a/x-pack/packages/security-solution/data_table/utils/use_mount_appended.ts b/x-pack/solutions/security/packages/data_table/utils/use_mount_appended.ts similarity index 100% rename from x-pack/packages/security-solution/data_table/utils/use_mount_appended.ts rename to x-pack/solutions/security/packages/data_table/utils/use_mount_appended.ts diff --git a/x-pack/packages/security-solution/distribution_bar/README.md b/x-pack/solutions/security/packages/distribution_bar/README.md similarity index 100% rename from x-pack/packages/security-solution/distribution_bar/README.md rename to x-pack/solutions/security/packages/distribution_bar/README.md diff --git a/x-pack/packages/security-solution/distribution_bar/index.ts b/x-pack/solutions/security/packages/distribution_bar/index.ts similarity index 100% rename from x-pack/packages/security-solution/distribution_bar/index.ts rename to x-pack/solutions/security/packages/distribution_bar/index.ts diff --git a/x-pack/solutions/security/packages/distribution_bar/jest.config.js b/x-pack/solutions/security/packages/distribution_bar/jest.config.js new file mode 100644 index 0000000000000..296ff5369079c --- /dev/null +++ b/x-pack/solutions/security/packages/distribution_bar/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + roots: ['/x-pack/solutions/security/packages/distribution_bar'], + rootDir: '../../../../..', +}; diff --git a/x-pack/packages/security-solution/distribution_bar/kibana.jsonc b/x-pack/solutions/security/packages/distribution_bar/kibana.jsonc similarity index 100% rename from x-pack/packages/security-solution/distribution_bar/kibana.jsonc rename to x-pack/solutions/security/packages/distribution_bar/kibana.jsonc diff --git a/x-pack/packages/security-solution/distribution_bar/package.json b/x-pack/solutions/security/packages/distribution_bar/package.json similarity index 100% rename from x-pack/packages/security-solution/distribution_bar/package.json rename to x-pack/solutions/security/packages/distribution_bar/package.json diff --git a/x-pack/packages/security-solution/distribution_bar/src/distribution_bar.stories.tsx b/x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/distribution_bar/src/distribution_bar.stories.tsx rename to x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.stories.tsx diff --git a/x-pack/packages/security-solution/distribution_bar/src/distribution_bar.test.tsx b/x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.test.tsx similarity index 100% rename from x-pack/packages/security-solution/distribution_bar/src/distribution_bar.test.tsx rename to x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.test.tsx diff --git a/x-pack/packages/security-solution/distribution_bar/src/distribution_bar.tsx b/x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx similarity index 100% rename from x-pack/packages/security-solution/distribution_bar/src/distribution_bar.tsx rename to x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx diff --git a/x-pack/solutions/security/packages/distribution_bar/tsconfig.json b/x-pack/solutions/security/packages/distribution_bar/tsconfig.json new file mode 100644 index 0000000000000..277fe500caa48 --- /dev/null +++ b/x-pack/solutions/security/packages/distribution_bar/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@testing-library/jest-dom", + "@testing-library/react", + ] + }, + "include": ["**/*.ts", "**/*.tsx"], + "kbn_references": [ + "@kbn/ui-theme", + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/README.md b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/README.md similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/README.md rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/README.md diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/hooks/use_add_to_new_case/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/add_to_new_case/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/chat/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/copy_to_clipboard/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/actions/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/actions/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/indices_check_context/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/indices_check_context/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/indices_check_context/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/indices_check_context/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/results_rollup_context/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/results_rollup_context/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/results_rollup_context/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/contexts/results_rollup_context/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_context/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/ilm_phases_empty_prompt/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/hooks/use_is_historical_results_tour_active/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/hooks/use_is_historical_results_tour_active/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/hooks/use_is_historical_results_tour_active/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/hooks/use_is_historical_results_tour_active/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/contexts/historical_results_context/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/error_empty_prompt/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/historical_results_tour/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/reducers/fetch_historical_results_reducer.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_historical_results/utils/fetch_historical_results.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_ilm_explain/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/hooks/use_stats/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_fields_tabs/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/check_success_empty_prompt/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/compare_fields_table/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/ecs_allowed_values/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_body/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/empty_prompt_title/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/historical_check_fields/utils/get_incompatible_and_same_family_fields_from_historical_result.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/legacy_historical_check_fields/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/historical_result/utils/is_non_legacy_historical_result.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/historical_results_list/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_date_picker/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_date_picker/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_date_picker/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_date_picker/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_outcome_filter/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_outcome_filter/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_outcome_filter/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_outcome_filter/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/hooks/use_historical_results_pagination/reducers/historical_results_pagination_reducer.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/reducers/fetch_historical_results_query_reducer.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/historical_results/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/hooks/use_current_window_width/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_callout/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/incompatible_tab/utils/get_incompatible_table_columns.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_invalid_values/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/index_stats_panel/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/all_tab/utils/get_all_table_columns.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/custom_callout/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/get_custom_table_columns.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/custom_tab/utils/markdown.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/ecs_compliant_tab/utils/get_ecs_compliant_table_columns.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/sticky_actions/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/sticky_actions/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/sticky_actions/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/sticky_actions/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/get_ecs_compliant_badge_color.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/latest_results/latest_check_fields/utils/is_timestamp_field_missing.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_callout/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/get_same_family_table_columns.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/same_family_tab/utils/markdown.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_check_flyout/utils/get_formatted_check_time.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/index_result_badge/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/loading_empty_prompt/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/loading_empty_prompt/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/loading_empty_prompt/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/loading_empty_prompt/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/ilm_phase_counts/utils/get_pattern_ilm_phase_description.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/get_pattern_result_tooltip.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/pattern_label/utils/show_result.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/pattern_summary/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/remote_clusters_callout/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/columns.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/summary_table/utils/get_show_pagination.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_check_text_color.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_index_result_tooltip.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/get_page_index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/ilm_explain.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_index_names.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/should_create_pattern_rollup.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/indices_details/pattern/utils/stats.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/chart_legend_item/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/chart_legend_item/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/chart_legend_item/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/chart_legend_item/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/no_data/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_fill_color.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_layers_multi_dimensional.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_legend_items.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/get_path_to_flattened_bucket_map.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/storage_treemap/utils/stats.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_details/storage_details/utils/get_flattened_buckets.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/ilm_phase_filter/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_all/utils/get_all_indices_to_check.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/helpers.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/errors_viewer/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/errors_popover/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/check_status/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/get_error_summaries.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/data_quality_summary/summary_actions/utils/markdown.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_abort_controller_ref/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/reducer.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/reducer.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/reducer.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/reducer.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_indices_check/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_is_mounted_ref/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/constants.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/constants.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/constants.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/constants.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/hooks/use_stored_pattern_results/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/get_pattern_rollups_with_latest_check_result.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/metadata.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/stats.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/hooks/use_results_rollup/utils/storage.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/allowed_values/mock_allowed_values.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/allowed_values/mock_allowed_values.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/allowed_values/mock_allowed_values.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/allowed_values/mock_allowed_values.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/data_quality_check_result/mock_index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/data_quality_check_result/mock_index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/data_quality_check_result/mock_index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/data_quality_check_result/mock_index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/enriched_field_metadata/mock_enriched_field_metadata.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/enriched_field_metadata/mock_enriched_field_metadata.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/enriched_field_metadata/mock_enriched_field_metadata.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/enriched_field_metadata/mock_enriched_field_metadata.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/historical_results/mock_historical_results_response.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/historical_results/mock_historical_results_response.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/historical_results/mock_historical_results_response.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/historical_results/mock_historical_results_response.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/ilm_explain/mock_ilm_explain.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/ilm_explain/mock_ilm_explain.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/ilm_explain/mock_ilm_explain.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/ilm_explain/mock_ilm_explain.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/indices_get_mapping_index_mapping_record/mock_indices_get_mapping_index_mapping_record.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/indices_get_mapping_index_mapping_record/mock_indices_get_mapping_index_mapping_record.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/indices_get_mapping_index_mapping_record/mock_indices_get_mapping_index_mapping_record.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/indices_get_mapping_index_mapping_record/mock_indices_get_mapping_index_mapping_record.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_properties/mock_mappings_properties.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_properties/mock_mappings_properties.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_properties/mock_mappings_properties.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_properties/mock_mappings_properties.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_response/mock_mappings_response.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_response/mock_mappings_response.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_response/mock_mappings_response.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/mappings_response/mock_mappings_response.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata_with_same_family.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata_with_same_family.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata_with_same_family.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/partitioned_field_metadata/mock_partitioned_field_metadata_with_same_family.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_alerts_pattern_rollup.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_alerts_pattern_rollup.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_alerts_pattern_rollup.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_alerts_pattern_rollup.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_auditbeat_pattern_rollup.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_auditbeat_pattern_rollup.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_auditbeat_pattern_rollup.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_auditbeat_pattern_rollup.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_packetbeat_pattern_rollup.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_packetbeat_pattern_rollup.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_packetbeat_pattern_rollup.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/pattern_rollup/mock_packetbeat_pattern_rollup.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_auditbeat_index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_auditbeat_index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_auditbeat_index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_auditbeat_index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_packetbeat_index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_packetbeat_index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_packetbeat_index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/stats/mock_stats_packetbeat_index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/test_providers.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/test_providers.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/test_providers.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/test_providers.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/format.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/format.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/format.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/format.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_data_quality_context_props.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_data_quality_context_props.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_data_quality_context_props.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_data_quality_context_props.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_indices_check_context_props.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_indices_check_context_props.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_indices_check_context_props.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_indices_check_context_props.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_results_rollup_context_props.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_results_rollup_context_props.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_results_rollup_context_props.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/test_providers/utils/get_merged_results_rollup_context_props.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/unallowed_values/mock_unallowed_values.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/unallowed_values/mock_unallowed_values.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/unallowed_values/mock_unallowed_values.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/unallowed_values/mock_unallowed_values.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/use_results_rollup/mock_use_results_rollup.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/use_results_rollup/mock_use_results_rollup.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/mock/use_results_rollup/mock_use_results_rollup.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/mock/use_results_rollup/mock_use_results_rollup.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stat/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stat_label/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stat_label/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stat_label/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stat_label/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stats_rollup/index.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/generate_historical_results_stub/index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/generate_historical_results_stub/index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/generate_historical_results_stub/index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/generate_historical_results_stub/index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_check_state_stub/index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_check_state_stub/index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_check_state_stub/index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_check_state_stub/index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_historical_result_stub/index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_historical_result_stub/index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_historical_result_stub/index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_historical_result_stub/index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_pattern_rollup_stub/index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_pattern_rollup_stub/index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_pattern_rollup_stub/index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/stub/get_pattern_rollup_stub/index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/styles.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/styles.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/styles.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/styles.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/translations.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/types.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/types.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/types.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/types.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/check_index.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_mappings.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/fetch_unallowed_values.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_ilm_phase_description.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_incompatible_stat_badge_color.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_summary_table_items.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_value_request_items.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_value_request_items.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_value_request_items.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_value_request_items.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_values_request_items.test.tsx b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_values_request_items.test.tsx similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_values_request_items.test.tsx rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/get_unallowed_values_request_items.test.tsx diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/markdown.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/metadata.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.test.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.test.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.test.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.test.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/data_quality_panel/utils/stats.ts diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/index.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/index.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/index.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/index.ts diff --git a/x-pack/solutions/security/packages/ecs_data_quality_dashboard/jest.config.js b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/jest.config.js new file mode 100644 index 0000000000000..773d813a166b9 --- /dev/null +++ b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/jest.config.js @@ -0,0 +1,26 @@ +/* + * 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. + */ + +module.exports = { + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/packages/ecs_data_quality_dashboard_impl', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/**/*.{ts,tsx}', + '!/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/**/{__test__,__snapshots__,__examples__,*mock*,stub,tests,test_helpers,integration_tests,types}/**/*', + '!/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/**/*mock*.{ts,tsx}', + '!/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/**/*.test.{ts,tsx}', + '!/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/**/*.d.ts', + '!/x-pack/solutions/security/packages/ecs_data_quality_dashboard/impl/**/*.config.ts', + ], + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/ecs_data_quality_dashboard'], + setupFilesAfterEnv: [ + '/x-pack/solutions/security/packages/ecs_data_quality_dashboard/setup_tests.ts', + ], +}; diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/kibana.jsonc b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/kibana.jsonc similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/kibana.jsonc rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/kibana.jsonc diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/package.json b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/package.json similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/package.json rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/package.json diff --git a/x-pack/packages/security-solution/ecs_data_quality_dashboard/setup_tests.ts b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/setup_tests.ts similarity index 100% rename from x-pack/packages/security-solution/ecs_data_quality_dashboard/setup_tests.ts rename to x-pack/solutions/security/packages/ecs_data_quality_dashboard/setup_tests.ts diff --git a/x-pack/solutions/security/packages/ecs_data_quality_dashboard/tsconfig.json b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/tsconfig.json new file mode 100644 index 0000000000000..2d76e9b8b0b4b --- /dev/null +++ b/x-pack/solutions/security/packages/ecs_data_quality_dashboard/tsconfig.json @@ -0,0 +1,30 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/ui-theme", + "@kbn/core-http-browser", + "@kbn/core-http-browser-mocks", + "@kbn/elastic-assistant", + "@kbn/triggers-actions-ui-plugin", + "@kbn/core", + "@kbn/core-notifications-browser", + "@kbn/core-notifications-browser-mocks", + ] +} diff --git a/x-pack/plugins/threat_intelligence/.storybook/main.js b/x-pack/solutions/security/packages/expandable-flyout/.storybook/main.js similarity index 100% rename from x-pack/plugins/threat_intelligence/.storybook/main.js rename to x-pack/solutions/security/packages/expandable-flyout/.storybook/main.js diff --git a/x-pack/solutions/security/packages/expandable-flyout/README.md b/x-pack/solutions/security/packages/expandable-flyout/README.md new file mode 100644 index 0000000000000..003df10e222e5 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/README.md @@ -0,0 +1,112 @@ +# @kbn/expandable-flyout + +## Purpose + +This package offers an expandable flyout UI component and a way to manage the data displayed in it. The component leverages the [EuiFlyout](https://github.com/elastic/eui/tree/main/src/components/flyout) from the EUI library. + +The flyout is composed of 3 sections: +- a right section (primary section) that opens first +- a left wider section to show more details +- a preview section, that overlays the right section. This preview section can display multiple panels one after the other and displays a `Back` button + +> Run `yarn storybook expandable_flyout` to take a quick look at the expandable flyout in action + +## Design decisions + +The expandable-flyout is making some strict UI design decisions: +- when in collapsed mode (i.e. when only the right/preview section is open), the flyout's width linearly grows from its minimum value of 380px to its maximum value of 750px +- when in expanded mode (i.e. when the left section is opened), the flyout's width changes depending on the browser's width: + - if the window is smaller than 1600px, the flyout takes the entire browser window (minus 48px of padding on the left) + - for windows bigger than 1600px, the flyout's width is 80% of the entire browser window (with a max width of 1500px for the left section, and 750px for the right section) + +> While the expandable-flyout will work on very small screens, having both the right and left sections visible at the same time will not be a good experience to the user. We recommend only showing the right panel, and therefore handling this situation when you build your panels by considering hiding the actions that could open the left panel (like the expand details button in the [FlyoutNavigation](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx)). + +## State persistence + +The expandable flyout offers 2 ways of managing its state: + +### Memory storage + +The default behavior saves the state of the flyout in memory. The state is internal to the package and based on an isolated redux context. Using this mode means the state will not be persisted when sharing url or reloading browser pages. + +### Url storage + +The second way (done by setting the `urlKey` prop to a string value) saves the state of the flyout in the url. This allows the flyout to be automatically reopened when users refresh the browser page, or when users share an url. The `urlKey` will be used as the url parameter. + +**_Note: the word `memory` cannot be used as an `urlKey` as it is reserved for the memory storage behavior. You can use any other string value, try to use something that should be unique._** + +> We highly recommend NOT nesting flyouts in your code, as it would cause conflicts for the url keys. We recommend instead to build multiple panels, with each their own context to manage their data (for example, take a look at the Security Solution [setup](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout)). +> +> A good solution is for example to have one instance of a flyout at a page level, and then have multiple panels that can be opened in that flyout. + + +## Package API + +The ExpandableFlyout [React component](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/expandable-flyout/src/index.tsx) renders the UI, leveraging an [EuiFlyout](https://eui.elastic.co/#/layout/flyout). + +To retrieve the flyout's layout (left, right and preview panels), you can utilize [useExpandableFlyoutState](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_state.ts). + +To control (or mutate) flyout's layout, you can utilize [useExpandableFlyoutApi](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_api.ts). + +**Expandable Flyout API** exposes the following methods: +- **openFlyout**: open the flyout with a set of panels +- **openRightPanel**: open a right panel +- **openLeftPanel**: open a left panel +- **openPreviewPanel**: open a preview panel +- **closeRightPanel**: close the right panel +- **closeLeftPanel**: close the left panel +- **closePreviewPanel**: close the preview panels +- **previousPreviewPanel**: navigate to the previous preview panel +- **closeFlyout**: close the flyout + +> The expandable flyout propagates the `onClose` callback from the EuiFlyout component. As we recommend having a single instance of the flyout in your application, it's up to the application's code to dispatch the event (through Redux, window events, observable, prop drilling...). + +When calling `openFlyout`, the right panel state is automatically appended in the `history` slice in the redux context. To access the flyout's history, you can use the [useExpandableFlyoutHistory](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_history.ts) hook. + +## Usage + +To use the expandable flyout in your plugin, first you need wrap your code with the [context provider](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/packages/expandable-flyout/src/context.tsx) at a high enough level as follows: +```typescript jsx +// state stored in the url + + ... + + + +// state stored in memory + + ... + +``` + +Then use the [React UI component](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/packages/expandable-flyout/src/index.tsx) where you need: + +```typescript jsx + +``` +_where `myPanels` is a list of all the panels that can be rendered in the flyout_ + +## Optional properties + +The expandable flyout now offers a way for users to change some of the flyout's UI properties. These are done via a gear icon in the top right corner of the flyout, to the left of the close icon. + +The gear icon can be hidden by setting the `hideSettings` property to `true` in the flyout's custom props. +The `typeDisabled` property allows to disable the push/overlay toggle. +```typescript +flyoutCustomProps?: { + hideSettings?: boolean; + typeDisabled?: boolean, +}; +``` + +At the moment, clicking on the gear icon opens a popover that allows you to toggle the flyout between `overlay` and `push` modes (see [EUI](https://eui.elastic.co/#/layout/flyout#push-versus-overlay)). The default value is `overlay`. The package remembers the selected value in local storage, only for expandable flyout that have a urlKey. The state of memory flyouts is not persisted. + +## Terminology + +### Section + +One of the 3 areas of the flyout (**left**, **right** or **preview**). + +### Panel + +A set of properties defining what's displayed in one of the flyout section (see interface [here](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/packages/expandable-flyout/src/types.ts)). diff --git a/x-pack/solutions/security/packages/expandable-flyout/__mocks__/index.tsx b/x-pack/solutions/security/packages/expandable-flyout/__mocks__/index.tsx new file mode 100644 index 0000000000000..fa058e26c2889 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/__mocks__/index.tsx @@ -0,0 +1,29 @@ +/* + * 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 { IStorage } from '@kbn/kibana-utils-plugin/public'; + +export const ExpandableFlyout = jest.fn(); + +export const localStorageMock = (): IStorage => { + let store: Record = {}; + + return { + getItem: (key: string) => { + return store[key] || null; + }, + setItem: (key: string, value: unknown) => { + store[key] = value; + }, + clear() { + store = {}; + }, + removeItem(key: string) { + delete store[key]; + }, + }; +}; diff --git a/x-pack/solutions/security/packages/expandable-flyout/index.ts b/x-pack/solutions/security/packages/expandable-flyout/index.ts new file mode 100644 index 0000000000000..4b5cd448428c9 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/index.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. + */ + +export { ExpandableFlyout } from './src'; + +export { useExpandableFlyoutApi } from './src/hooks/use_expandable_flyout_api'; +export { useExpandableFlyoutState } from './src/hooks/use_expandable_flyout_state'; +export { useExpandableFlyoutHistory } from './src/hooks/use_expandable_flyout_history'; + +export { type FlyoutPanels as ExpandableFlyoutState } from './src/store/state'; + +export { ExpandableFlyoutProvider } from './src/provider'; + +export type { ExpandableFlyoutProps } from './src'; +export type { FlyoutPanelProps, PanelPath, ExpandableFlyoutApi } from './src/types'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/jest.config.js b/x-pack/solutions/security/packages/expandable-flyout/jest.config.js new file mode 100644 index 0000000000000..0caae916a926f --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/expandable-flyout'], +}; diff --git a/packages/kbn-expandable-flyout/kibana.jsonc b/x-pack/solutions/security/packages/expandable-flyout/kibana.jsonc similarity index 100% rename from packages/kbn-expandable-flyout/kibana.jsonc rename to x-pack/solutions/security/packages/expandable-flyout/kibana.jsonc diff --git a/x-pack/solutions/security/packages/expandable-flyout/package.json b/x-pack/solutions/security/packages/expandable-flyout/package.json new file mode 100644 index 0000000000000..c5da13192d169 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/package.json @@ -0,0 +1,7 @@ +{ + "name": "@kbn/expandable-flyout", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0", + "sideEffects": false +} \ No newline at end of file diff --git a/packages/kbn-expandable-flyout/src/components/container.test.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/container.test.tsx similarity index 91% rename from packages/kbn-expandable-flyout/src/components/container.test.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/container.test.tsx index 5482d73893c3a..8cf8466901bad 100644 --- a/packages/kbn-expandable-flyout/src/components/container.test.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/container.test.tsx @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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'; diff --git a/packages/kbn-expandable-flyout/src/components/container.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/container.tsx similarity index 95% rename from packages/kbn-expandable-flyout/src/components/container.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/container.tsx index 9d858d08be23c..9679a43bb45f2 100644 --- a/packages/kbn-expandable-flyout/src/components/container.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/container.tsx @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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, { memo, useCallback, useMemo } from 'react'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/components/left_section.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/left_section.tsx new file mode 100644 index 0000000000000..243e01d136622 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/left_section.tsx @@ -0,0 +1,28 @@ +/* + * 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 { EuiFlexItem } from '@elastic/eui'; +import React, { memo } from 'react'; +import { LEFT_SECTION_TEST_ID } from './test_ids'; + +interface LeftSectionProps { + /** + * Component to be rendered + */ + component: React.ReactElement; +} + +/** + * Left section of the expanded flyout rendering a panel + */ +export const LeftSection: React.FC = memo(({ component }: LeftSectionProps) => ( + + {component} + +)); + +LeftSection.displayName = 'LeftSection'; diff --git a/packages/kbn-expandable-flyout/src/components/preview_section.test.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.test.tsx similarity index 83% rename from packages/kbn-expandable-flyout/src/components/preview_section.test.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.test.tsx index a6f927ca4eb0d..a250a746439f2 100644 --- a/packages/kbn-expandable-flyout/src/components/preview_section.test.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.test.tsx @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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'; diff --git a/packages/kbn-expandable-flyout/src/components/preview_section.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.tsx similarity index 93% rename from packages/kbn-expandable-flyout/src/components/preview_section.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.tsx index d759e5500534b..690917e55b5b5 100644 --- a/packages/kbn-expandable-flyout/src/components/preview_section.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.tsx @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { diff --git a/packages/kbn-expandable-flyout/src/components/resizable_container.test.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/resizable_container.test.tsx similarity index 78% rename from packages/kbn-expandable-flyout/src/components/resizable_container.test.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/resizable_container.test.tsx index b15c2b53c78c7..07b9deffa9143 100644 --- a/packages/kbn-expandable-flyout/src/components/resizable_container.test.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/resizable_container.test.tsx @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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'; diff --git a/packages/kbn-expandable-flyout/src/components/resizable_container.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/resizable_container.tsx similarity index 90% rename from packages/kbn-expandable-flyout/src/components/resizable_container.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/resizable_container.tsx index d5e8f2c1b0801..4eba95175fece 100644 --- a/packages/kbn-expandable-flyout/src/components/resizable_container.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/resizable_container.tsx @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { EuiResizableContainer } from '@elastic/eui'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/components/right_section.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/right_section.tsx new file mode 100644 index 0000000000000..1cde5e5e8605f --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/right_section.tsx @@ -0,0 +1,30 @@ +/* + * 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 { EuiFlexItem } from '@elastic/eui'; +import React, { memo } from 'react'; +import { RIGHT_SECTION_TEST_ID } from './test_ids'; + +interface RightSectionProps { + /** + * Component to be rendered + */ + component: React.ReactElement; +} + +/** + * Right section of the expanded flyout rendering a panel + */ +export const RightSection: React.FC = memo( + ({ component }: RightSectionProps) => ( + + {component} + + ) +); + +RightSection.displayName = 'RightSection'; diff --git a/packages/kbn-expandable-flyout/src/components/settings_menu.test.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/settings_menu.test.tsx similarity index 95% rename from packages/kbn-expandable-flyout/src/components/settings_menu.test.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/settings_menu.test.tsx index f9a6991f55b52..c9452172d86c3 100644 --- a/packages/kbn-expandable-flyout/src/components/settings_menu.test.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/settings_menu.test.tsx @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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'; diff --git a/packages/kbn-expandable-flyout/src/components/settings_menu.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/settings_menu.tsx similarity index 78% rename from packages/kbn-expandable-flyout/src/components/settings_menu.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/components/settings_menu.tsx index e632f8bb0172c..99e49d73f0190 100644 --- a/packages/kbn-expandable-flyout/src/components/settings_menu.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/settings_menu.tsx @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { @@ -37,39 +35,66 @@ import { } from './test_ids'; import { selectPushVsOverlay, useDispatch, useSelector } from '../store/redux'; -const SETTINGS_MENU_ICON_BUTTON = i18n.translate('expandableFlyout.settingsMenu.popoverButton', { - defaultMessage: 'Open flyout settings menu', -}); +const SETTINGS_MENU_ICON_BUTTON = i18n.translate( + 'securitySolutionPackages.expandableFlyout.settingsMenu.popoverButton', + { + defaultMessage: 'Open flyout settings menu', + } +); const SETTINGS_MENU_ICON_BUTTON_TOOLTIP = i18n.translate( - 'expandableFlyout.settingsMenu.popoverButton', + 'securitySolutionPackages.expandableFlyout.settingsMenu.popoverButton', + { + defaultMessage: 'Flyout settings', + } +); +const SETTINGS_MENU_TITLE = i18n.translate( + 'securitySolutionPackages.expandableFlyout.settingsMenu.popoverTitle', { defaultMessage: 'Flyout settings', } ); -const SETTINGS_MENU_TITLE = i18n.translate('expandableFlyout.settingsMenu.popoverTitle', { - defaultMessage: 'Flyout settings', -}); -const FLYOUT_TYPE_TITLE = i18n.translate('expandableFlyout.settingsMenu.flyoutTypeTitle', { - defaultMessage: 'Flyout type', -}); -const FLYOUT_TYPE_OVERLAY_MODE = i18n.translate('expandableFlyout.settingsMenu.overlayMode', { - defaultMessage: 'Overlay', -}); -const FLYOUT_TYPE_PUSH_MODE = i18n.translate('expandableFlyout.settingsMenu.pushMode', { - defaultMessage: 'Push', -}); -const FLYOUT_TYPE_OVERLAY_TOOLTIP = i18n.translate('expandableFlyout.settingsMenu.overlayTooltip', { - defaultMessage: 'Displays the flyout over the page', -}); -const FLYOUT_TYPE_PUSH_TOOLTIP = i18n.translate('expandableFlyout.settingsMenu.pushTooltip', { - defaultMessage: 'Displays the flyout next to the page', -}); -const FLYOUT_RESIZE_TITLE = i18n.translate('expandableFlyout.renderMenu.flyoutResizeTitle', { - defaultMessage: 'Flyout size', -}); -const FLYOUT_RESIZE_BUTTON = i18n.translate('expandableFlyout.renderMenu.flyoutResizeButton', { - defaultMessage: 'Reset size', -}); +const FLYOUT_TYPE_TITLE = i18n.translate( + 'securitySolutionPackages.expandableFlyout.settingsMenu.flyoutTypeTitle', + { + defaultMessage: 'Flyout type', + } +); +const FLYOUT_TYPE_OVERLAY_MODE = i18n.translate( + 'securitySolutionPackages.expandableFlyout.settingsMenu.overlayMode', + { + defaultMessage: 'Overlay', + } +); +const FLYOUT_TYPE_PUSH_MODE = i18n.translate( + 'securitySolutionPackages.expandableFlyout.settingsMenu.pushMode', + { + defaultMessage: 'Push', + } +); +const FLYOUT_TYPE_OVERLAY_TOOLTIP = i18n.translate( + 'securitySolutionPackages.expandableFlyout.settingsMenu.overlayTooltip', + { + defaultMessage: 'Displays the flyout over the page', + } +); +const FLYOUT_TYPE_PUSH_TOOLTIP = i18n.translate( + 'securitySolutionPackages.expandableFlyout.settingsMenu.pushTooltip', + { + defaultMessage: 'Displays the flyout next to the page', + } +); +const FLYOUT_RESIZE_TITLE = i18n.translate( + 'securitySolutionPackages.expandableFlyout.renderMenu.flyoutResizeTitle', + { + defaultMessage: 'Flyout size', + } +); +const FLYOUT_RESIZE_BUTTON = i18n.translate( + 'securitySolutionPackages.expandableFlyout.renderMenu.flyoutResizeButton', + { + defaultMessage: 'Reset size', + } +); export interface FlyoutCustomProps { /** diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/components/test_ids.ts b/x-pack/solutions/security/packages/expandable-flyout/src/components/test_ids.ts new file mode 100644 index 0000000000000..b6b2888423b8f --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/test_ids.ts @@ -0,0 +1,48 @@ +/* + * 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 FLYOUT_TEST_ID = 'resizableFlyout'; + +export const RIGHT_SECTION_TEST_ID = 'rightSection'; + +export const LEFT_SECTION_TEST_ID = 'leftSection'; + +export const PREVIEW_SECTION_TEST_ID = 'previewSection'; + +export const PREVIEW_SECTION_CLOSE_BUTTON_TEST_ID = 'previewSectionCloseButton'; + +export const PREVIEW_SECTION_BACK_BUTTON_TEST_ID = 'previewSectionBackButton'; + +export const PREVIEW_SECTION_HEADER_TEST_ID = 'previewSectionHeader'; + +export const SETTINGS_MENU_BUTTON_TEST_ID = 'settingsMenuButton'; + +export const SETTINGS_MENU_FLYOUT_TYPE_TITLE_TEST_ID = 'settingsMenuFlyoutTypeTitle'; + +export const SETTINGS_MENU_FLYOUT_TYPE_INFORMATION_ICON_TEST_ID = + 'settingsMenuFlyoutTypeInformationIcon'; + +export const SETTINGS_MENU_FLYOUT_TYPE_BUTTON_GROUP_TEST_ID = 'settingsMenuFlyoutTypeButtonGroup'; + +export const SETTINGS_MENU_FLYOUT_TYPE_BUTTON_GROUP_OVERLAY_TEST_ID = + 'settingsMenuFlyoutTypeButtonGroupOverlayOption'; + +export const SETTINGS_MENU_FLYOUT_TYPE_BUTTON_GROUP_PUSH_TEST_ID = + 'settingsMenuFlyoutTypeButtonGroupPushOption'; + +export const SETTINGS_MENU_FLYOUT_RESIZE_TITLE_TEST_ID = 'settingsMenuFlyoutSizeTitle'; + +export const SETTINGS_MENU_FLYOUT_RESIZE_INFORMATION_ICON_TEST_ID = + 'settingsMenuFlyoutSizeInformationIcon'; + +export const SETTINGS_MENU_FLYOUT_RESIZE_BUTTON_TEST_ID = 'settingsMenuFlyoutSizeButton'; + +export const RESIZABLE_LEFT_SECTION_TEST_ID = 'resizableLeftSection'; + +export const RESIZABLE_RIGHT_SECTION_TEST_ID = 'resizableRightSection'; + +export const RESIZABLE_BUTTON_TEST_ID = 'resizableButton'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/components/translations.ts b/x-pack/solutions/security/packages/expandable-flyout/src/components/translations.ts new file mode 100644 index 0000000000000..da499ef0904c0 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/translations.ts @@ -0,0 +1,22 @@ +/* + * 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'; + +export const BACK_BUTTON = i18n.translate( + 'securitySolutionPackages.expandableFlyout.previewSection.backButton', + { + defaultMessage: 'Back', + } +); + +export const CLOSE_BUTTON = i18n.translate( + 'securitySolutionPackages.expandableFlyout.previewSection.closeButton', + { + defaultMessage: 'Close', + } +); diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/constants.ts b/x-pack/solutions/security/packages/expandable-flyout/src/constants.ts new file mode 100644 index 0000000000000..8d50802ed2fcb --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/constants.ts @@ -0,0 +1,17 @@ +/* + * 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 is a reserved word that we use as an id when no urlKey is provided and we are in memory storage mode + */ +export const REDUX_ID_FOR_MEMORY_STORAGE = 'memory'; + +export const EXPANDABLE_FLYOUT_LOCAL_STORAGE = 'expandableFlyout.ui'; +export const PUSH_VS_OVERLAY_LOCAL_STORAGE = 'pushVsOverlay'; +export const USER_COLLAPSED_WIDTH_LOCAL_STORAGE = 'collapsedWidth'; +export const USER_EXPANDED_WIDTH_LOCAL_STORAGE = 'expandedWidth'; +export const USER_SECTION_WIDTHS_LOCAL_STORAGE = 'sectionWidths'; diff --git a/packages/kbn-expandable-flyout/src/context.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/context.tsx similarity index 79% rename from packages/kbn-expandable-flyout/src/context.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/context.tsx index 65074a512ad8c..cedd89991783f 100644 --- a/packages/kbn-expandable-flyout/src/context.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/context.tsx @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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, { createContext, memo, useContext, useMemo } from 'react'; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_api.ts similarity index 88% rename from packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_api.ts index e1fe482f448f9..a00a1ec696ff5 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_api.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { useCallback, useMemo } from 'react'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_history.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_history.ts new file mode 100644 index 0000000000000..b82f1b7569b15 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_history.ts @@ -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 { REDUX_ID_FOR_MEMORY_STORAGE } from '../constants'; +import { useExpandableFlyoutContext } from '../context'; +import { selectHistoryById, useSelector } from '../store/redux'; + +/** + * This hook allows you to access the flyout state, read open right, left and preview panels. + */ +export const useExpandableFlyoutHistory = () => { + const { urlKey } = useExpandableFlyoutContext(); + // if no urlKey is provided, we are in memory storage mode and use the reserved word 'memory' + const id = urlKey || REDUX_ID_FOR_MEMORY_STORAGE; + return useSelector(selectHistoryById(id)); +}; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_state.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_state.ts new file mode 100644 index 0000000000000..bf1c17039d5f8 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_expandable_flyout_state.ts @@ -0,0 +1,22 @@ +/* + * 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 { useMemo } from 'react'; +import { REDUX_ID_FOR_MEMORY_STORAGE } from '../constants'; +import { useExpandableFlyoutContext } from '../context'; +import { selectPanelsById, useSelector } from '../store/redux'; + +/** + * This hook allows you to access the flyout state, read open right, left and preview panels. + */ +export const useExpandableFlyoutState = () => { + const { urlKey } = useExpandableFlyoutContext(); + // if no urlKey is provided, we are in memory storage mode and use the reserved word 'memory' + const id = useMemo(() => urlKey || REDUX_ID_FOR_MEMORY_STORAGE, [urlKey]); + + return useSelector(selectPanelsById(id)); +}; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_initialize_from_local_storage.test.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_initialize_from_local_storage.test.ts similarity index 89% rename from packages/kbn-expandable-flyout/src/hooks/use_initialize_from_local_storage.test.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_initialize_from_local_storage.test.ts index cc3623f9238c6..de56bb563e788 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_initialize_from_local_storage.test.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_initialize_from_local_storage.test.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { renderHook } from '@testing-library/react'; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_initialize_from_local_storage.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_initialize_from_local_storage.ts similarity index 84% rename from packages/kbn-expandable-flyout/src/hooks/use_initialize_from_local_storage.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_initialize_from_local_storage.ts index 9c88fe29e75d7..56e027f21dbc4 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_initialize_from_local_storage.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_initialize_from_local_storage.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { diff --git a/packages/kbn-expandable-flyout/src/hooks/use_sections.test.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_sections.test.tsx similarity index 90% rename from packages/kbn-expandable-flyout/src/hooks/use_sections.test.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_sections.test.tsx index 8dc4aacaefbcf..f5c7e7f0fb4ac 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_sections.test.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_sections.test.tsx @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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'; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_sections.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_sections.ts similarity index 86% rename from packages/kbn-expandable-flyout/src/hooks/use_sections.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_sections.ts index 5267030790e38..882f2a691550e 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_sections.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_sections.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { useMemo } from 'react'; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_window_width.test.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_window_width.test.ts similarity index 91% rename from packages/kbn-expandable-flyout/src/hooks/use_window_width.test.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_window_width.test.ts index 696191e7fbdf6..906d9cc961a64 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_window_width.test.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_window_width.test.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { renderHook } from '@testing-library/react'; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_window_width.ts b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_window_width.ts similarity index 87% rename from packages/kbn-expandable-flyout/src/hooks/use_window_width.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_window_width.ts index 3df9eef08a4f8..02bc196220966 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_window_width.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/hooks/use_window_width.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { useLayoutEffect, useState } from 'react'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/index.stories.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/index.stories.tsx new file mode 100644 index 0000000000000..4667cf64e2991 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/index.stories.tsx @@ -0,0 +1,369 @@ +/* + * 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 type { Story } from '@storybook/react'; +import { + EuiButton, + EuiFlexGroup, + EuiFlexItem, + EuiFlyoutBody, + EuiFlyoutFooter, + EuiFlyoutHeader, + EuiPanel, + EuiTitle, +} from '@elastic/eui'; +import { ExpandableFlyout } from '.'; +import { TestProvider } from './test/provider'; +import { initialUiState, State } from './store/state'; + +export default { + component: ExpandableFlyout, + title: 'ExpandableFlyout', +}; + +const registeredPanels = [ + { + key: 'right', + component: () => ( + <> + + +

{'Right panel header'}

+
+
+ +

{'Example of a right component body'}

+
+ + + + {'Footer button'} + + + + + ), + }, + { + key: 'left', + component: () => ( + + + + +

{'Left panel header'}

+
+
+

{'Example of a left component content'}

+ +
+
+ ), + }, + { + key: 'preview1', + component: () => ( + + + + +

{'Preview panel header'}

+
+
+

{'Example of a preview component content'}

+ +
+
+ ), + }, + { + key: 'preview2', + component: () => ( + + + + +

{'Second preview panel header'}

+
+
+

{'Example of another preview component content'}

+ +
+
+ ), + }, +]; + +export const Right: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: undefined, + preview: undefined, + history: [{ id: 'right' }], + }, + }, + }, + ui: initialUiState, + }; + + return ( + + + + ); +}; + +export const Left: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: undefined, + history: [{ id: 'right' }], + }, + }, + }, + ui: initialUiState, + }; + + return ( + + + + ); +}; + +export const Preview: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: [ + { + id: 'preview1', + }, + ], + history: [{ id: 'right' }], + }, + }, + }, + ui: initialUiState, + }; + + return ( + + + + ); +}; + +export const MultiplePreviews: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: [ + { + id: 'preview1', + }, + { + id: 'preview2', + }, + ], + history: [{ id: 'right' }], + }, + }, + }, + ui: initialUiState, + }; + + return ( + + + + ); +}; + +export const CollapsedPushMode: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: undefined, + preview: undefined, + history: [{ id: 'right' }], + }, + }, + }, + ui: { + ...initialUiState, + pushVsOverlay: 'push', + }, + }; + + return ( + + + + ); +}; + +export const ExpandedPushMode: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: undefined, + history: [{ id: 'right' }], + }, + }, + }, + ui: { + ...initialUiState, + pushVsOverlay: 'push', + }, + }; + + return ( + + + + ); +}; + +export const DisableTypeSelection: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: undefined, + history: [{ id: 'right' }], + }, + }, + }, + ui: initialUiState, + }; + + return ( + + + + ); +}; + +export const ResetWidths: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: undefined, + history: [{ id: 'right' }], + }, + }, + }, + ui: initialUiState, + }; + + return ( + + + + ); +}; + +export const DisableResizeWidthSelection: Story = () => { + const state: State = { + panels: { + byId: { + memory: { + right: { + id: 'right', + }, + left: { + id: 'left', + }, + preview: undefined, + history: [{ id: 'right' }], + }, + }, + }, + ui: initialUiState, + }; + + return ( + + + + ); +}; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/index.test.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/index.test.tsx new file mode 100644 index 0000000000000..4ac5d79462374 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/index.test.tsx @@ -0,0 +1,67 @@ +/* + * 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 { render } from '@testing-library/react'; + +import { Panel } from './types'; +import { ExpandableFlyout } from '.'; +import { useWindowWidth } from './hooks/use_window_width'; +import { TestProvider } from './test/provider'; +import { REDUX_ID_FOR_MEMORY_STORAGE } from './constants'; +import { initialUiState } from './store/state'; + +jest.mock('./hooks/use_window_width'); + +const registeredPanels: Panel[] = [ + { + key: 'key', + component: () =>
{'component'}
, + }, +]; + +describe('ExpandableFlyout', () => { + it(`should not render flyout if window width is 0`, () => { + (useWindowWidth as jest.Mock).mockReturnValue(0); + + const result = render( + + + + ); + + expect(result.asFragment()).toMatchInlineSnapshot(``); + }); + + it(`should render flyout`, () => { + (useWindowWidth as jest.Mock).mockReturnValue(1000); + + const state = { + panels: { + byId: { + [REDUX_ID_FOR_MEMORY_STORAGE]: { + right: { + id: 'key', + }, + left: undefined, + preview: undefined, + history: [{ id: 'key' }], + }, + }, + }, + ui: initialUiState, + }; + + const { getByTestId } = render( + + + + ); + + expect(getByTestId('TEST')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/index.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/index.tsx new file mode 100644 index 0000000000000..06aef10305895 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/index.tsx @@ -0,0 +1,62 @@ +/* + * 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, { useMemo } from 'react'; +import type { Interpolation, Theme } from '@emotion/react'; +import { EuiFlyoutProps } from '@elastic/eui'; +import { EuiFlyoutResizableProps } from '@elastic/eui/src/components/flyout/flyout_resizable'; +import { Container } from './components/container'; +import { useWindowWidth } from './hooks/use_window_width'; +import { useInitializeFromLocalStorage } from './hooks/use_initialize_from_local_storage'; +import { FlyoutCustomProps } from './components/settings_menu'; +import type { Panel } from './types'; + +export interface ExpandableFlyoutProps extends Omit { + /** + * List of all registered panels available for render + */ + registeredPanels: Panel[]; + /** + * Allows for custom styles to be passed to the EuiFlyout component + */ + customStyles?: Interpolation; + /** + * Callback function to let application's code the flyout is closed + */ + onClose?: EuiFlyoutProps['onClose']; + /** + * Set of properties that drive a settings menu + */ + flyoutCustomProps?: FlyoutCustomProps; + /** + * Optional data test subject string to be used on the EuiFlyoutResizable component + */ + 'data-test-subj'?: string; +} + +/** + * Expandable flyout UI React component. + * Displays 3 sections (right, left, preview) depending on the panels in the context. + * + * The behavior expects that the left and preview sections should only be displayed is a right section + * is already rendered. + */ +export const ExpandableFlyout: React.FC = ({ ...props }) => { + const windowWidth = useWindowWidth(); + + useInitializeFromLocalStorage(); + + const container = useMemo(() => , [props]); + + if (windowWidth === 0) { + return null; + } + + return <>{container}; +}; + +ExpandableFlyout.displayName = 'ExpandableFlyout'; diff --git a/packages/kbn-expandable-flyout/src/provider.test.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/provider.test.tsx similarity index 88% rename from packages/kbn-expandable-flyout/src/provider.test.tsx rename to x-pack/solutions/security/packages/expandable-flyout/src/provider.test.tsx index 0d8e935098a3f..9005a95003d96 100644 --- a/packages/kbn-expandable-flyout/src/provider.test.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/provider.test.tsx @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/provider.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/provider.tsx new file mode 100644 index 0000000000000..e84d1128c99d3 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/provider.tsx @@ -0,0 +1,100 @@ +/* + * 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 { createKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; +import React, { FC, PropsWithChildren, useEffect, useMemo } from 'react'; +import { Provider as ReduxProvider } from 'react-redux'; +import { useHistory } from 'react-router-dom'; +import { ExpandableFlyoutContextProvider, useExpandableFlyoutContext } from './context'; +import { FlyoutPanels } from './store/state'; +import { useExpandableFlyoutState } from './hooks/use_expandable_flyout_state'; +import { Context, selectNeedsSync, store, useDispatch, useSelector } from './store/redux'; +import { urlChangedAction } from './store/actions'; + +/** + * Dispatches actions when url state changes and initializes the state when the app is loaded with flyout url parameters + */ +export const UrlSynchronizer = () => { + const { urlKey } = useExpandableFlyoutContext(); + const panels = useExpandableFlyoutState(); + const needsSync = useSelector(selectNeedsSync()); + const dispatch = useDispatch(); + + const history = useHistory(); + + const urlStorage = useMemo( + () => + createKbnUrlStateStorage({ + history, + useHash: false, + useHashQuery: false, + }), + [history] + ); + + useEffect(() => { + if (!urlKey) { + return; + } + + const currentValue = urlStorage.get(urlKey); + + // Dispatch current value to redux store as it does not happen automatically + if (currentValue) { + dispatch( + urlChangedAction({ + ...currentValue, + preview: currentValue?.preview?.at(-1), + id: urlKey, + }) + ); + } + + const subscription = urlStorage.change$(urlKey).subscribe((value) => { + dispatch(urlChangedAction({ ...value, preview: value?.preview?.at(-1), id: urlKey })); + }); + + return () => subscription.unsubscribe(); + }, [dispatch, urlKey, urlStorage]); + + useEffect(() => { + if (!needsSync || !panels || !urlKey) { + return; + } + + const { left, right, preview } = panels; + urlStorage.set(urlKey, { left, right, preview: [preview?.at(-1)] }); + }, [needsSync, panels, urlKey, urlStorage]); + + return null; +}; + +interface ExpandableFlyoutProviderProps { + /** + * Unique key to be used as url parameter to store the state of the flyout. + * Providing this will save the state of the flyout in the url. + * The word `memory` is reserved, do NOT use it! + */ + urlKey?: string; +} + +/** + * Wrap your plugin with this context for the ExpandableFlyout React component. + */ +export const ExpandableFlyoutProvider: FC> = ({ + children, + urlKey, +}) => { + return ( + + + {urlKey ? : null} + {children} + + + ); +}; diff --git a/packages/kbn-expandable-flyout/src/store/actions.ts b/x-pack/solutions/security/packages/expandable-flyout/src/store/actions.ts similarity index 93% rename from packages/kbn-expandable-flyout/src/store/actions.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/store/actions.ts index 49e28befa3456..890f0bd01c927 100644 --- a/packages/kbn-expandable-flyout/src/store/actions.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/store/actions.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { createAction } from '@reduxjs/toolkit'; diff --git a/packages/kbn-expandable-flyout/src/store/middlewares.test.ts b/x-pack/solutions/security/packages/expandable-flyout/src/store/middlewares.test.ts similarity index 95% rename from packages/kbn-expandable-flyout/src/store/middlewares.test.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/store/middlewares.test.ts index 680a5619b0b64..efedee53b2d10 100644 --- a/packages/kbn-expandable-flyout/src/store/middlewares.test.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/store/middlewares.test.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { localStorageMock } from '../../__mocks__'; diff --git a/packages/kbn-expandable-flyout/src/store/middlewares.ts b/x-pack/solutions/security/packages/expandable-flyout/src/store/middlewares.ts similarity index 91% rename from packages/kbn-expandable-flyout/src/store/middlewares.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/store/middlewares.ts index 4fb5354535caf..e9ec4cf3bd165 100644 --- a/packages/kbn-expandable-flyout/src/store/middlewares.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/store/middlewares.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { Action, Dispatch } from '@reduxjs/toolkit'; diff --git a/packages/kbn-expandable-flyout/src/store/reducers.test.ts b/x-pack/solutions/security/packages/expandable-flyout/src/store/reducers.test.ts similarity index 98% rename from packages/kbn-expandable-flyout/src/store/reducers.test.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/store/reducers.test.ts index e77a53c911319..f273b117fc894 100644 --- a/packages/kbn-expandable-flyout/src/store/reducers.test.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/store/reducers.test.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { FlyoutPanelProps } from '../types'; diff --git a/packages/kbn-expandable-flyout/src/store/reducers.ts b/x-pack/solutions/security/packages/expandable-flyout/src/store/reducers.ts similarity index 93% rename from packages/kbn-expandable-flyout/src/store/reducers.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/store/reducers.ts index be2c47344526e..1d998aa47f5af 100644 --- a/packages/kbn-expandable-flyout/src/store/reducers.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/store/reducers.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { createReducer } from '@reduxjs/toolkit'; diff --git a/packages/kbn-expandable-flyout/src/store/redux.ts b/x-pack/solutions/security/packages/expandable-flyout/src/store/redux.ts similarity index 85% rename from packages/kbn-expandable-flyout/src/store/redux.ts rename to x-pack/solutions/security/packages/expandable-flyout/src/store/redux.ts index 7f37017652bbc..5651ea29cd164 100644 --- a/packages/kbn-expandable-flyout/src/store/redux.ts +++ b/x-pack/solutions/security/packages/expandable-flyout/src/store/redux.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { createContext } from 'react'; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts b/x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts new file mode 100644 index 0000000000000..c5b7471a4b661 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/store/state.ts @@ -0,0 +1,138 @@ +/* + * 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 { FlyoutPanelProps } from '../..'; + +export interface FlyoutPanels { + /** + * Panel to render in the left section + */ + left: FlyoutPanelProps | undefined; + /** + * Panel to render in the right section + */ + right: FlyoutPanelProps | undefined; + /** + * Panels to render in the preview section + */ + preview: FlyoutPanelProps[] | undefined; + /* + * History of the right panels that were opened + */ + history: FlyoutPanelProps[]; +} + +export interface PanelsState { + /** + * Store the panels for multiple flyouts + */ + byId: { + [id: string]: FlyoutPanels; + }; + /** + * Is the flyout in sync with external storage (eg. url)? + * This value can be used in useEffect for example, to control whether we should + * call an external state sync method. + */ + needsSync?: boolean; +} + +export const initialPanelsState: PanelsState = { + byId: {}, + needsSync: false, +}; + +export interface DefaultWidthsState { + /** + * Default width for the right section (calculated from the window width) + */ + rightWidth: number; + /** + * Default width for the left section (calculated from the window width) + */ + leftWidth: number; + /** + * Default width for the preview section (calculated from the window width) + */ + previewWidth: number; + /** + * Value of the right width in percentage (of the flyout total width) + */ + rightPercentage: number; + /** + * Value of the left width in percentage (of the flyout total width) + */ + leftPercentage: number; + /** + * Value of the preview width in percentage (of the flyout total width) + */ + previewPercentage: number; +} + +export interface UserFlyoutWidthsState { + /** + * Width of the collapsed flyout + */ + collapsedWidth?: number; + /** + * Width of the expanded flyout + */ + expandedWidth?: number; +} + +export interface UserSectionWidthsState { + /** + * Percentage for the left section + */ + leftPercentage: number | undefined; + /** + * Percentage for the right section + */ + rightPercentage: number | undefined; +} + +export interface UiState { + /** + * Push vs overlay information + */ + pushVsOverlay: 'push' | 'overlay'; + /** + * Default widths for the flyout + */ + defaultWidths: DefaultWidthsState; + /** + * User resized widths for the flyout + */ + userFlyoutWidths: UserFlyoutWidthsState; + /** + * User resized left and right section widths for the flyout + */ + userSectionWidths: UserSectionWidthsState; +} + +export const initialUiState: UiState = { + pushVsOverlay: 'overlay', + defaultWidths: {} as DefaultWidthsState, + userFlyoutWidths: {}, + userSectionWidths: {} as UserSectionWidthsState, +}; + +export interface State { + /** + * All panels related information + */ + panels: PanelsState; + /** + * All ui related information + */ + ui: UiState; +} + +export const initialState: State = { + panels: initialPanelsState, + ui: initialUiState, +}; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/test/provider.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/test/provider.tsx new file mode 100644 index 0000000000000..f031f9ca86567 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/test/provider.tsx @@ -0,0 +1,55 @@ +/* + * 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 { Provider as ReduxProvider } from 'react-redux'; +import { configureStore } from '@reduxjs/toolkit'; +import React, { FC, PropsWithChildren } from 'react'; +import { I18nProvider } from '@kbn/i18n-react'; +import { + savePushVsOverlayToLocalStorageMiddleware, + saveUserSectionWidthsToLocalStorageMiddleware, + saveUserFlyoutWidthsToLocalStorageMiddleware, +} from '../store/middlewares'; +import { ExpandableFlyoutContextProvider } from '../context'; +import { panelsReducer, uiReducer } from '../store/reducers'; +import { Context } from '../store/redux'; +import { initialState, State } from '../store/state'; + +interface TestProviderProps { + state?: State; + urlKey?: string; +} + +export const TestProvider: FC> = ({ + children, + state = initialState, + urlKey, +}) => { + const store = configureStore({ + reducer: { + panels: panelsReducer, + ui: uiReducer, + }, + devTools: false, + preloadedState: state, + middleware: [ + savePushVsOverlayToLocalStorageMiddleware, + saveUserSectionWidthsToLocalStorageMiddleware, + saveUserFlyoutWidthsToLocalStorageMiddleware, + ], + }); + + return ( + + + + {children} + + + + ); +}; diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/types.ts b/x-pack/solutions/security/packages/expandable-flyout/src/types.ts new file mode 100644 index 0000000000000..6266572c42100 --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/src/types.ts @@ -0,0 +1,92 @@ +/* + * 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'; + +export interface ExpandableFlyoutApi { + /** + * Open the flyout with left, right and/or preview panels + */ + openFlyout: (panels: { + left?: FlyoutPanelProps; + right?: FlyoutPanelProps; + preview?: FlyoutPanelProps; + }) => void; + /** + * Replaces the current right panel with a new one + */ + openRightPanel: (panel: FlyoutPanelProps) => void; + /** + * Replaces the current left panel with a new one + */ + openLeftPanel: (panel: FlyoutPanelProps) => void; + /** + * Add a new preview panel to the list of current preview panels + */ + openPreviewPanel: (panel: FlyoutPanelProps) => void; + /** + * Closes right panel + */ + closeRightPanel: () => void; + /** + * Closes left panel + */ + closeLeftPanel: () => void; + /** + * Closes all preview panels + */ + closePreviewPanel: () => void; + /** + * Go back to previous preview panel + */ + previousPreviewPanel: () => void; + /** + * Close all panels and closes flyout + */ + closeFlyout: () => void; +} + +export interface PanelPath { + /** + * Top level tab that to be displayed + */ + tab: string; + /** + * Optional secondary level to be displayed under top level tab + */ + subTab?: string; +} + +export interface FlyoutPanelProps { + /** + * Unique key to identify the panel + */ + id: string; + /** + * Any parameters necessary for the initial requests within the flyout + */ + params?: Record; + /** + * Tracks the path for what to show in a panel, such as activated tab and subtab + */ + path?: PanelPath; + /** + * Tracks visual state such as whether the panel is collapsed + */ + state?: Record; +} + +export interface Panel { + /** + * Unique key used to identify the panel + */ + key?: string; + /** + * Component to be rendered + */ + component: (props: FlyoutPanelProps) => React.ReactElement; +} diff --git a/x-pack/solutions/security/packages/expandable-flyout/tsconfig.json b/x-pack/solutions/security/packages/expandable-flyout/tsconfig.json new file mode 100644 index 0000000000000..7759b8cc851bd --- /dev/null +++ b/x-pack/solutions/security/packages/expandable-flyout/tsconfig.json @@ -0,0 +1,26 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@testing-library/jest-dom", + "@testing-library/react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/kibana-utils-plugin", + "@kbn/i18n-react" + ] +} diff --git a/x-pack/packages/security-solution/features/README.mdx b/x-pack/solutions/security/packages/features/README.mdx similarity index 100% rename from x-pack/packages/security-solution/features/README.mdx rename to x-pack/solutions/security/packages/features/README.mdx diff --git a/x-pack/packages/security-solution/features/config.ts b/x-pack/solutions/security/packages/features/config.ts similarity index 100% rename from x-pack/packages/security-solution/features/config.ts rename to x-pack/solutions/security/packages/features/config.ts diff --git a/x-pack/packages/security-solution/features/index.ts b/x-pack/solutions/security/packages/features/index.ts similarity index 100% rename from x-pack/packages/security-solution/features/index.ts rename to x-pack/solutions/security/packages/features/index.ts diff --git a/x-pack/solutions/security/packages/features/jest.config.js b/x-pack/solutions/security/packages/features/jest.config.js new file mode 100644 index 0000000000000..8179ac021e815 --- /dev/null +++ b/x-pack/solutions/security/packages/features/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/features'], +}; diff --git a/x-pack/packages/security-solution/features/keys.ts b/x-pack/solutions/security/packages/features/keys.ts similarity index 100% rename from x-pack/packages/security-solution/features/keys.ts rename to x-pack/solutions/security/packages/features/keys.ts diff --git a/x-pack/packages/security-solution/features/kibana.jsonc b/x-pack/solutions/security/packages/features/kibana.jsonc similarity index 100% rename from x-pack/packages/security-solution/features/kibana.jsonc rename to x-pack/solutions/security/packages/features/kibana.jsonc diff --git a/x-pack/packages/security-solution/features/package.json b/x-pack/solutions/security/packages/features/package.json similarity index 100% rename from x-pack/packages/security-solution/features/package.json rename to x-pack/solutions/security/packages/features/package.json diff --git a/x-pack/packages/security-solution/features/privileges.ts b/x-pack/solutions/security/packages/features/privileges.ts similarity index 100% rename from x-pack/packages/security-solution/features/privileges.ts rename to x-pack/solutions/security/packages/features/privileges.ts diff --git a/x-pack/packages/security-solution/features/product_features.ts b/x-pack/solutions/security/packages/features/product_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/product_features.ts rename to x-pack/solutions/security/packages/features/product_features.ts diff --git a/x-pack/packages/security-solution/features/src/assistant/index.ts b/x-pack/solutions/security/packages/features/src/assistant/index.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/assistant/index.ts rename to x-pack/solutions/security/packages/features/src/assistant/index.ts diff --git a/x-pack/packages/security-solution/features/src/assistant/kibana_features.ts b/x-pack/solutions/security/packages/features/src/assistant/kibana_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/assistant/kibana_features.ts rename to x-pack/solutions/security/packages/features/src/assistant/kibana_features.ts diff --git a/x-pack/packages/security-solution/features/src/assistant/kibana_sub_features.ts b/x-pack/solutions/security/packages/features/src/assistant/kibana_sub_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/assistant/kibana_sub_features.ts rename to x-pack/solutions/security/packages/features/src/assistant/kibana_sub_features.ts diff --git a/x-pack/packages/security-solution/features/src/assistant/product_feature_config.ts b/x-pack/solutions/security/packages/features/src/assistant/product_feature_config.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/assistant/product_feature_config.ts rename to x-pack/solutions/security/packages/features/src/assistant/product_feature_config.ts diff --git a/x-pack/packages/security-solution/features/src/attack_discovery/index.ts b/x-pack/solutions/security/packages/features/src/attack_discovery/index.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/attack_discovery/index.ts rename to x-pack/solutions/security/packages/features/src/attack_discovery/index.ts diff --git a/x-pack/packages/security-solution/features/src/attack_discovery/kibana_features.ts b/x-pack/solutions/security/packages/features/src/attack_discovery/kibana_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/attack_discovery/kibana_features.ts rename to x-pack/solutions/security/packages/features/src/attack_discovery/kibana_features.ts diff --git a/x-pack/packages/security-solution/features/src/attack_discovery/product_feature_config.ts b/x-pack/solutions/security/packages/features/src/attack_discovery/product_feature_config.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/attack_discovery/product_feature_config.ts rename to x-pack/solutions/security/packages/features/src/attack_discovery/product_feature_config.ts diff --git a/x-pack/packages/security-solution/features/src/cases/index.ts b/x-pack/solutions/security/packages/features/src/cases/index.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/index.ts rename to x-pack/solutions/security/packages/features/src/cases/index.ts diff --git a/x-pack/packages/security-solution/features/src/cases/product_feature_config.ts b/x-pack/solutions/security/packages/features/src/cases/product_feature_config.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/product_feature_config.ts rename to x-pack/solutions/security/packages/features/src/cases/product_feature_config.ts diff --git a/x-pack/packages/security-solution/features/src/cases/types.ts b/x-pack/solutions/security/packages/features/src/cases/types.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/types.ts rename to x-pack/solutions/security/packages/features/src/cases/types.ts diff --git a/x-pack/packages/security-solution/features/src/cases/v1_features/kibana_features.ts b/x-pack/solutions/security/packages/features/src/cases/v1_features/kibana_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/v1_features/kibana_features.ts rename to x-pack/solutions/security/packages/features/src/cases/v1_features/kibana_features.ts diff --git a/x-pack/packages/security-solution/features/src/cases/v1_features/kibana_sub_features.ts b/x-pack/solutions/security/packages/features/src/cases/v1_features/kibana_sub_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/v1_features/kibana_sub_features.ts rename to x-pack/solutions/security/packages/features/src/cases/v1_features/kibana_sub_features.ts diff --git a/x-pack/packages/security-solution/features/src/cases/v1_features/types.ts b/x-pack/solutions/security/packages/features/src/cases/v1_features/types.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/v1_features/types.ts rename to x-pack/solutions/security/packages/features/src/cases/v1_features/types.ts diff --git a/x-pack/packages/security-solution/features/src/cases/v2_features/kibana_features.ts b/x-pack/solutions/security/packages/features/src/cases/v2_features/kibana_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/v2_features/kibana_features.ts rename to x-pack/solutions/security/packages/features/src/cases/v2_features/kibana_features.ts diff --git a/x-pack/packages/security-solution/features/src/cases/v2_features/kibana_sub_features.ts b/x-pack/solutions/security/packages/features/src/cases/v2_features/kibana_sub_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/cases/v2_features/kibana_sub_features.ts rename to x-pack/solutions/security/packages/features/src/cases/v2_features/kibana_sub_features.ts diff --git a/x-pack/packages/security-solution/features/src/constants.ts b/x-pack/solutions/security/packages/features/src/constants.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/constants.ts rename to x-pack/solutions/security/packages/features/src/constants.ts diff --git a/x-pack/packages/security-solution/features/src/helpers.ts b/x-pack/solutions/security/packages/features/src/helpers.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/helpers.ts rename to x-pack/solutions/security/packages/features/src/helpers.ts diff --git a/x-pack/packages/security-solution/features/src/product_features_keys.ts b/x-pack/solutions/security/packages/features/src/product_features_keys.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/product_features_keys.ts rename to x-pack/solutions/security/packages/features/src/product_features_keys.ts diff --git a/x-pack/packages/security-solution/features/src/product_features_privileges.ts b/x-pack/solutions/security/packages/features/src/product_features_privileges.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/product_features_privileges.ts rename to x-pack/solutions/security/packages/features/src/product_features_privileges.ts diff --git a/x-pack/packages/security-solution/features/src/security/index.ts b/x-pack/solutions/security/packages/features/src/security/index.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/security/index.ts rename to x-pack/solutions/security/packages/features/src/security/index.ts diff --git a/x-pack/packages/security-solution/features/src/security/kibana_features.ts b/x-pack/solutions/security/packages/features/src/security/kibana_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/security/kibana_features.ts rename to x-pack/solutions/security/packages/features/src/security/kibana_features.ts diff --git a/x-pack/packages/security-solution/features/src/security/kibana_sub_features.ts b/x-pack/solutions/security/packages/features/src/security/kibana_sub_features.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/security/kibana_sub_features.ts rename to x-pack/solutions/security/packages/features/src/security/kibana_sub_features.ts diff --git a/x-pack/packages/security-solution/features/src/security/product_feature_config.ts b/x-pack/solutions/security/packages/features/src/security/product_feature_config.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/security/product_feature_config.ts rename to x-pack/solutions/security/packages/features/src/security/product_feature_config.ts diff --git a/x-pack/packages/security-solution/features/src/security/types.ts b/x-pack/solutions/security/packages/features/src/security/types.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/security/types.ts rename to x-pack/solutions/security/packages/features/src/security/types.ts diff --git a/x-pack/packages/security-solution/features/src/types.ts b/x-pack/solutions/security/packages/features/src/types.ts similarity index 100% rename from x-pack/packages/security-solution/features/src/types.ts rename to x-pack/solutions/security/packages/features/src/types.ts diff --git a/x-pack/solutions/security/packages/features/tsconfig.json b/x-pack/solutions/security/packages/features/tsconfig.json new file mode 100644 index 0000000000000..bc415fbae622b --- /dev/null +++ b/x-pack/solutions/security/packages/features/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + ] + }, + "include": ["**/*.ts", "**/*.tsx"], + "kbn_references": [ + "@kbn/features-plugin", + "@kbn/utility-types", + "@kbn/i18n", + "@kbn/core-application-common", + "@kbn/cases-plugin", + "@kbn/securitysolution-rules", + "@kbn/securitysolution-list-constants", + ], + "exclude": ["target/**/*"] +} diff --git a/packages/kbn-index-adapter/README.md b/x-pack/solutions/security/packages/index-adapter/README.md similarity index 100% rename from packages/kbn-index-adapter/README.md rename to x-pack/solutions/security/packages/index-adapter/README.md diff --git a/x-pack/solutions/security/packages/index-adapter/index.ts b/x-pack/solutions/security/packages/index-adapter/index.ts new file mode 100644 index 0000000000000..8f5bf5446863c --- /dev/null +++ b/x-pack/solutions/security/packages/index-adapter/index.ts @@ -0,0 +1,21 @@ +/* + * 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 { IndexAdapter } from './src/index_adapter'; +export { IndexPatternAdapter, type InstallIndex } from './src/index_pattern_adapter'; +export { retryTransientEsErrors } from './src/retry_transient_es_errors'; +export { ecsFieldMap, type EcsFieldMap } from './src/field_maps/ecs_field_map'; +export { createOrUpdateIndexTemplate } from './src/create_or_update_index_template'; +export { createOrUpdateComponentTemplate } from './src/create_or_update_component_template'; + +export type { + SetComponentTemplateParams, + SetIndexTemplateParams, + IndexAdapterParams, + InstallParams, +} from './src/index_adapter'; +export * from './src/field_maps/types'; diff --git a/x-pack/solutions/security/packages/index-adapter/jest.config.js b/x-pack/solutions/security/packages/index-adapter/jest.config.js new file mode 100644 index 0000000000000..5162be5bba837 --- /dev/null +++ b/x-pack/solutions/security/packages/index-adapter/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/index-adapter'], +}; diff --git a/packages/kbn-index-adapter/kibana.jsonc b/x-pack/solutions/security/packages/index-adapter/kibana.jsonc similarity index 100% rename from packages/kbn-index-adapter/kibana.jsonc rename to x-pack/solutions/security/packages/index-adapter/kibana.jsonc diff --git a/x-pack/solutions/security/packages/index-adapter/package.json b/x-pack/solutions/security/packages/index-adapter/package.json new file mode 100644 index 0000000000000..557f2133488cd --- /dev/null +++ b/x-pack/solutions/security/packages/index-adapter/package.json @@ -0,0 +1,7 @@ +{ + "name": "@kbn/index-adapter", + "version": "1.0.0", + "description": "Utility library for Elasticsearch index management", + "license": "Elastic License 2.0", + "private": true +} \ No newline at end of file diff --git a/packages/kbn-index-adapter/src/create_or_update_component_template.test.ts b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.test.ts similarity index 96% rename from packages/kbn-index-adapter/src/create_or_update_component_template.test.ts rename to x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.test.ts index 2bedbec8691b2..c99952689b7b0 100644 --- a/packages/kbn-index-adapter/src/create_or_update_component_template.test.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.test.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; diff --git a/packages/kbn-index-adapter/src/create_or_update_component_template.ts b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.ts similarity index 91% rename from packages/kbn-index-adapter/src/create_or_update_component_template.ts rename to x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.ts index 73abf92c9e4af..6a7f87539de9b 100644 --- a/packages/kbn-index-adapter/src/create_or_update_component_template.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_component_template.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { diff --git a/packages/kbn-index-adapter/src/create_or_update_index.test.ts b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index.test.ts similarity index 92% rename from packages/kbn-index-adapter/src/create_or_update_index.test.ts rename to x-pack/solutions/security/packages/index-adapter/src/create_or_update_index.test.ts index 6c32b183e1fda..22d126782f68c 100644 --- a/packages/kbn-index-adapter/src/create_or_update_index.test.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index.test.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; diff --git a/packages/kbn-index-adapter/src/create_or_update_index.ts b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index.ts similarity index 94% rename from packages/kbn-index-adapter/src/create_or_update_index.ts rename to x-pack/solutions/security/packages/index-adapter/src/create_or_update_index.ts index ff825c61305b7..ce9528d8277fc 100644 --- a/packages/kbn-index-adapter/src/create_or_update_index.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { IndexName } from '@elastic/elasticsearch/lib/api/types'; diff --git a/packages/kbn-index-adapter/src/create_or_update_index_template.test.ts b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.test.ts similarity index 94% rename from packages/kbn-index-adapter/src/create_or_update_index_template.test.ts rename to x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.test.ts index 5f53c329e8cd5..eb85b0931f9ef 100644 --- a/packages/kbn-index-adapter/src/create_or_update_index_template.test.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.test.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; diff --git a/packages/kbn-index-adapter/src/create_or_update_index_template.ts b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.ts similarity index 83% rename from packages/kbn-index-adapter/src/create_or_update_index_template.ts rename to x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.ts index 586b76ff44f29..d7e4b25771b86 100644 --- a/packages/kbn-index-adapter/src/create_or_update_index_template.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/create_or_update_index_template.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { diff --git a/packages/kbn-index-adapter/src/field_maps/ecs_field_map.ts b/x-pack/solutions/security/packages/index-adapter/src/field_maps/ecs_field_map.ts similarity index 88% rename from packages/kbn-index-adapter/src/field_maps/ecs_field_map.ts rename to x-pack/solutions/security/packages/index-adapter/src/field_maps/ecs_field_map.ts index a15c8480e6fc4..424c2af01d4c2 100644 --- a/packages/kbn-index-adapter/src/field_maps/ecs_field_map.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/field_maps/ecs_field_map.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { EcsFlat } from '@elastic/ecs'; diff --git a/packages/kbn-index-adapter/src/field_maps/mapping_from_field_map.test.ts b/x-pack/solutions/security/packages/index-adapter/src/field_maps/mapping_from_field_map.test.ts similarity index 90% rename from packages/kbn-index-adapter/src/field_maps/mapping_from_field_map.test.ts rename to x-pack/solutions/security/packages/index-adapter/src/field_maps/mapping_from_field_map.test.ts index 5a4bffd3c46a5..7d8a17a84fe42 100644 --- a/packages/kbn-index-adapter/src/field_maps/mapping_from_field_map.test.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/field_maps/mapping_from_field_map.test.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { mappingFromFieldMap } from './mapping_from_field_map'; diff --git a/packages/kbn-index-adapter/src/field_maps/mapping_from_field_map.ts b/x-pack/solutions/security/packages/index-adapter/src/field_maps/mapping_from_field_map.ts similarity index 78% rename from packages/kbn-index-adapter/src/field_maps/mapping_from_field_map.ts rename to x-pack/solutions/security/packages/index-adapter/src/field_maps/mapping_from_field_map.ts index 0d416ae8356e9..c40dcbef695c5 100644 --- a/packages/kbn-index-adapter/src/field_maps/mapping_from_field_map.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/field_maps/mapping_from_field_map.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { MappingTypeMapping } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; diff --git a/x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts b/x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts new file mode 100644 index 0000000000000..9c96fa2d796f6 --- /dev/null +++ b/x-pack/solutions/security/packages/index-adapter/src/field_maps/types.ts @@ -0,0 +1,71 @@ +/* + * 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 interface AllowedValue { + description?: string; + name?: string; +} + +export interface MultiField { + flat_name: string; + name: string; + type: string; +} + +export interface EcsMetadata { + allowed_values?: AllowedValue[]; + dashed_name: string; + description: string; + doc_values?: boolean; + example?: string | number | boolean; + flat_name: string; + ignore_above?: number; + index?: boolean; + level: string; + multi_fields?: MultiField[]; + name: string; + normalize: string[]; + required?: boolean; + scaling_factor?: number; + short: string; + type: string; + properties?: Record; +} + +export type FieldMap = Record< + T, + { + type: string; + required: boolean; + array?: boolean; + doc_values?: boolean; + enabled?: boolean; + fields?: Record; + format?: string; + ignore_above?: number; + multi_fields?: MultiField[]; + index?: boolean; + path?: string; + scaling_factor?: number; + dynamic?: boolean | 'strict'; + properties?: Record; + inference_id?: string; + copy_to?: string; + } +>; + +// This utility type flattens all the keys of a schema object and its nested objects as a union type. +// Its purpose is to ensure that the FieldMap keys are always in sync with the schema object. +// It assumes all optional fields of the schema are required in the field map, they can always be omitted from the resulting type. +export type SchemaFieldMapKeys< + T extends Record, + Key = keyof T +> = Key extends string + ? NonNullable extends Record + ? `${Key}` | `${Key}.${SchemaFieldMapKeys>}` + : `${Key}` + : never; diff --git a/packages/kbn-index-adapter/src/index_adapter.ts b/x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts similarity index 92% rename from packages/kbn-index-adapter/src/index_adapter.ts rename to x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts index eef2ce529d78a..f8395db9fa9b9 100644 --- a/packages/kbn-index-adapter/src/index_adapter.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/index_adapter.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { diff --git a/packages/kbn-index-adapter/src/index_pattern_adapter.ts b/x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts similarity index 90% rename from packages/kbn-index-adapter/src/index_pattern_adapter.ts rename to x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts index 38a96a3c65b83..ae5e692cd55bc 100644 --- a/packages/kbn-index-adapter/src/index_pattern_adapter.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/index_pattern_adapter.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { createIndex, updateIndices } from './create_or_update_index'; diff --git a/packages/kbn-index-adapter/src/install_with_timeout.test.ts b/x-pack/solutions/security/packages/index-adapter/src/install_with_timeout.test.ts similarity index 80% rename from packages/kbn-index-adapter/src/install_with_timeout.test.ts rename to x-pack/solutions/security/packages/index-adapter/src/install_with_timeout.test.ts index 6743604ba24f3..43cdb8ce734ae 100644 --- a/packages/kbn-index-adapter/src/install_with_timeout.test.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/install_with_timeout.test.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { loggerMock } from '@kbn/logging-mocks'; diff --git a/packages/kbn-index-adapter/src/install_with_timeout.ts b/x-pack/solutions/security/packages/index-adapter/src/install_with_timeout.ts similarity index 81% rename from packages/kbn-index-adapter/src/install_with_timeout.ts rename to x-pack/solutions/security/packages/index-adapter/src/install_with_timeout.ts index 79b78b7bb6569..bb88b29cfe95b 100644 --- a/packages/kbn-index-adapter/src/install_with_timeout.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/install_with_timeout.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { firstValueFrom, type Observable } from 'rxjs'; diff --git a/packages/kbn-index-adapter/src/resource_installer_utils.test.ts b/x-pack/solutions/security/packages/index-adapter/src/resource_installer_utils.test.ts similarity index 92% rename from packages/kbn-index-adapter/src/resource_installer_utils.test.ts rename to x-pack/solutions/security/packages/index-adapter/src/resource_installer_utils.test.ts index 31d4a3abcbb0d..2067d17e5cb36 100644 --- a/packages/kbn-index-adapter/src/resource_installer_utils.test.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/resource_installer_utils.test.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { getIndexTemplate, getComponentTemplate } from './resource_installer_utils'; diff --git a/packages/kbn-index-adapter/src/resource_installer_utils.ts b/x-pack/solutions/security/packages/index-adapter/src/resource_installer_utils.ts similarity index 87% rename from packages/kbn-index-adapter/src/resource_installer_utils.ts rename to x-pack/solutions/security/packages/index-adapter/src/resource_installer_utils.ts index eb6e2490000b2..dbe958dc019d7 100644 --- a/packages/kbn-index-adapter/src/resource_installer_utils.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/resource_installer_utils.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { diff --git a/packages/kbn-index-adapter/src/retry_transient_es_errors.test.ts b/x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.test.ts similarity index 87% rename from packages/kbn-index-adapter/src/retry_transient_es_errors.test.ts rename to x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.test.ts index 1b4582587f972..9120bdab51866 100644 --- a/packages/kbn-index-adapter/src/retry_transient_es_errors.test.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.test.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { loggingSystemMock } from '@kbn/core/server/mocks'; diff --git a/packages/kbn-index-adapter/src/retry_transient_es_errors.ts b/x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts similarity index 79% rename from packages/kbn-index-adapter/src/retry_transient_es_errors.ts rename to x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts index 2b6ddea509824..6dd568de3b98c 100644 --- a/packages/kbn-index-adapter/src/retry_transient_es_errors.ts +++ b/x-pack/solutions/security/packages/index-adapter/src/retry_transient_es_errors.ts @@ -1,10 +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", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". + * 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 { Logger } from '@kbn/core/server'; diff --git a/x-pack/solutions/security/packages/index-adapter/tsconfig.json b/x-pack/solutions/security/packages/index-adapter/tsconfig.json new file mode 100644 index 0000000000000..fb98020940ad0 --- /dev/null +++ b/x-pack/solutions/security/packages/index-adapter/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + ] + }, + "include": ["**/*.ts"], + "kbn_references": [ + "@kbn/core", + "@kbn/std", + "@kbn/safer-lodash-set", + "@kbn/logging-mocks", + ], + "exclude": [ + "target/**/*" + ], +} diff --git a/x-pack/packages/security-solution/navigation/README.mdx b/x-pack/solutions/security/packages/navigation/README.mdx similarity index 100% rename from x-pack/packages/security-solution/navigation/README.mdx rename to x-pack/solutions/security/packages/navigation/README.mdx diff --git a/x-pack/packages/security-solution/navigation/index.ts b/x-pack/solutions/security/packages/navigation/index.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/index.ts rename to x-pack/solutions/security/packages/navigation/index.ts diff --git a/x-pack/solutions/security/packages/navigation/jest.config.js b/x-pack/solutions/security/packages/navigation/jest.config.js new file mode 100644 index 0000000000000..e452a9a064f1c --- /dev/null +++ b/x-pack/solutions/security/packages/navigation/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/navigation'], +}; diff --git a/x-pack/packages/security-solution/navigation/kibana.jsonc b/x-pack/solutions/security/packages/navigation/kibana.jsonc similarity index 100% rename from x-pack/packages/security-solution/navigation/kibana.jsonc rename to x-pack/solutions/security/packages/navigation/kibana.jsonc diff --git a/x-pack/packages/security-solution/navigation/landing_links.ts b/x-pack/solutions/security/packages/navigation/landing_links.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/landing_links.ts rename to x-pack/solutions/security/packages/navigation/landing_links.ts diff --git a/x-pack/packages/security-solution/navigation/links.ts b/x-pack/solutions/security/packages/navigation/links.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/links.ts rename to x-pack/solutions/security/packages/navigation/links.ts diff --git a/x-pack/packages/security-solution/navigation/mocks/context.ts b/x-pack/solutions/security/packages/navigation/mocks/context.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/mocks/context.ts rename to x-pack/solutions/security/packages/navigation/mocks/context.ts diff --git a/x-pack/packages/security-solution/navigation/mocks/navigation.ts b/x-pack/solutions/security/packages/navigation/mocks/navigation.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/mocks/navigation.ts rename to x-pack/solutions/security/packages/navigation/mocks/navigation.ts diff --git a/x-pack/packages/security-solution/navigation/package.json b/x-pack/solutions/security/packages/navigation/package.json similarity index 100% rename from x-pack/packages/security-solution/navigation/package.json rename to x-pack/solutions/security/packages/navigation/package.json diff --git a/x-pack/packages/security-solution/navigation/src/__mocks__/context.tsx b/x-pack/solutions/security/packages/navigation/src/__mocks__/context.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/__mocks__/context.tsx rename to x-pack/solutions/security/packages/navigation/src/__mocks__/context.tsx diff --git a/x-pack/packages/security-solution/navigation/src/__mocks__/navigation.ts b/x-pack/solutions/security/packages/navigation/src/__mocks__/navigation.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/__mocks__/navigation.ts rename to x-pack/solutions/security/packages/navigation/src/__mocks__/navigation.ts diff --git a/x-pack/solutions/security/packages/navigation/src/constants.ts b/x-pack/solutions/security/packages/navigation/src/constants.ts new file mode 100644 index 0000000000000..eb77907b59f52 --- /dev/null +++ b/x-pack/solutions/security/packages/navigation/src/constants.ts @@ -0,0 +1,104 @@ +/* + * 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 SECURITY_UI_APP_ID = 'securitySolutionUI' as const; + +export { SecurityPageName } from '@kbn/deeplinks-security'; + +export enum LinkCategoryType { + title = 'title', + collapsibleTitle = 'collapsibleTitle', + accordion = 'accordion', + separator = 'separator', +} + +/** + * External (non-Security) page names that need to be linked in the Security navigation. + * Format: `:/`. + * + * `pluginId`: is the id of the plugin that owns the deep link + * + * `deepLinkId`: is the id of the deep link inside the plugin. + * Keep empty for the root page of the plugin, e.g. `osquery:` + * + * `path`: is the path to append to the plugin and deep link. + * This is optional and only needed if the path is not registered in the plugin's `deepLinks`. e.g. `integrations:/browse/security` + * The path should not be used for links displayed in the main left navigation, since highlighting won't work. + **/ +export enum ExternalPageName { + // Discover + discover = 'discover:', + // Osquery + osquery = 'osquery:', + // Analytics + maps = 'maps:', + visualize = 'visualize:', + // Machine Learning + // Ref: src/platform/packages/private/default-nav/ml/default_navigation.ts + mlOverview = 'ml:overview', + mlNotifications = 'ml:notifications', + mlMemoryUsage = 'ml:memoryUsage', + mlAnomalyDetection = 'ml:anomalyDetection', + mlAnomalyExplorer = 'ml:anomalyExplorer', + mlSingleMetricViewer = 'ml:singleMetricViewer', + mlSuppliedConfigurations = 'ml:suppliedConfigurations', + mlSettings = 'ml:settings', + mlDataFrameAnalytics = 'ml:dataFrameAnalytics', + mlResultExplorer = 'ml:resultExplorer', + mlAnalyticsMap = 'ml:analyticsMap', + mlNodesOverview = 'ml:nodesOverview', + mlNodes = 'ml:nodes', + mlFileUpload = 'ml:fileUpload', + mlIndexDataVisualizer = 'ml:indexDataVisualizer', + mlESQLdataVisualizer = 'ml:esqlDataVisualizer', + mlDataDrift = 'ml:dataDrift', + mlExplainLogRateSpikes = 'ml:logRateAnalysis', + mlLogPatternAnalysis = 'ml:logPatternAnalysis', + mlChangePointDetections = 'ml:changePointDetections', + // Dev Tools + // Ref: src/platform/packages/private/default-nav/devtools/default_navigation.ts + devTools = 'dev_tools:', + // Fleet + // Ref: x-pack/plugins/fleet/public/deep_links.ts + fleet = 'fleet:', + fleetAgents = 'fleet:agents', + fleetPolicies = 'fleet:policies', + fleetEnrollmentTokens = 'fleet:enrollment_tokens', + fleetUninstallTokens = 'fleet:uninstall_tokens', + fleetDataStreams = 'fleet:data_streams', + fleetSettings = 'fleet:settings', + // Integrations + // No deepLinkId registered, using path for the security search + integrationsSecurity = 'integrations:/browse/security', + // Management + // Ref: src/platform/packages/private/default-nav/management/default_navigation.ts + management = 'management:', + managementIngestPipelines = 'management:ingest_pipelines', + managementPipelines = 'management:pipelines', + managementIndexManagement = 'management:index_management', + managementTransforms = 'management:transform', + managementMaintenanceWindows = 'management:maintenanceWindows', + managementTriggersActions = 'management:triggersActions', + managementCases = 'management:cases', + managementTriggersActionsConnectors = 'management:triggersActionsConnectors', + managementReporting = 'management:reporting', + managementJobsListLink = 'management:jobsListLink', + managementDataViews = 'management:dataViews', + managementObjects = 'management:objects', + managementApiKeys = 'management:api_keys', + managementTags = 'management:tags', + managementFiles = 'management:filesManagement', + managementSpaces = 'management:spaces', + managementSettings = 'management:settings', + // Cloud UI + // These are links to Cloud UI outside Kibana + // Special Format: : + // cloudUrlKey Ref: x-pack/plugins/security_solution_serverless/public/navigation/links/util.ts + cloudUsersAndRoles = 'cloud:usersAndRoles', + cloudBilling = 'cloud:billing', + cloudPerformance = 'cloud:performance', +} diff --git a/x-pack/packages/security-solution/navigation/src/context.tsx b/x-pack/solutions/security/packages/navigation/src/context.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/context.tsx rename to x-pack/solutions/security/packages/navigation/src/context.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/beta_badge.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/beta_badge.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/beta_badge.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/beta_badge.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/index.ts b/x-pack/solutions/security/packages/navigation/src/landing_links/index.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/index.ts rename to x-pack/solutions/security/packages/navigation/src/landing_links/index.ts diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons.stories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons.stories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons.stories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories.stories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories.stories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories.stories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories_goups.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories_goups.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories_goups.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories_goups.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories_groups.stories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories_groups.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories_groups.stories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories_groups.stories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories_groups.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories_groups.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_categories_groups.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_categories_groups.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_groups.stories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_groups.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_groups.stories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_groups.stories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_groups.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_groups.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_groups.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_groups.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_groups.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_groups.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_icons_groups.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_icons_groups.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_image_card.stories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_image_card.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_image_card.stories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_image_card.stories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_image_card.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_image_card.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_image_card.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_image_card.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_image_card.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_image_card.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_image_card.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_image_card.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images.stories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images.stories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images.stories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images_cards.stories.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images_cards.stories.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images_cards.stories.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images_cards.stories.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images_cards.test.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images_cards.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images_cards.test.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images_cards.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images_cards.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images_cards.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/landing_links_images_cards.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/landing_links_images_cards.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/lazy.tsx b/x-pack/solutions/security/packages/navigation/src/landing_links/lazy.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/lazy.tsx rename to x-pack/solutions/security/packages/navigation/src/landing_links/lazy.tsx diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/translations.ts b/x-pack/solutions/security/packages/navigation/src/landing_links/translations.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/translations.ts rename to x-pack/solutions/security/packages/navigation/src/landing_links/translations.ts diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/utils.test.ts b/x-pack/solutions/security/packages/navigation/src/landing_links/utils.test.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/utils.test.ts rename to x-pack/solutions/security/packages/navigation/src/landing_links/utils.test.ts diff --git a/x-pack/packages/security-solution/navigation/src/landing_links/utils.ts b/x-pack/solutions/security/packages/navigation/src/landing_links/utils.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/landing_links/utils.ts rename to x-pack/solutions/security/packages/navigation/src/landing_links/utils.ts diff --git a/x-pack/packages/security-solution/navigation/src/links.test.tsx b/x-pack/solutions/security/packages/navigation/src/links.test.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/links.test.tsx rename to x-pack/solutions/security/packages/navigation/src/links.test.tsx diff --git a/x-pack/packages/security-solution/navigation/src/links.tsx b/x-pack/solutions/security/packages/navigation/src/links.tsx similarity index 100% rename from x-pack/packages/security-solution/navigation/src/links.tsx rename to x-pack/solutions/security/packages/navigation/src/links.tsx diff --git a/x-pack/packages/security-solution/navigation/src/navigation.test.ts b/x-pack/solutions/security/packages/navigation/src/navigation.test.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/navigation.test.ts rename to x-pack/solutions/security/packages/navigation/src/navigation.test.ts diff --git a/x-pack/packages/security-solution/navigation/src/navigation.ts b/x-pack/solutions/security/packages/navigation/src/navigation.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/navigation.ts rename to x-pack/solutions/security/packages/navigation/src/navigation.ts diff --git a/x-pack/packages/security-solution/navigation/src/types.ts b/x-pack/solutions/security/packages/navigation/src/types.ts similarity index 100% rename from x-pack/packages/security-solution/navigation/src/types.ts rename to x-pack/solutions/security/packages/navigation/src/types.ts diff --git a/x-pack/solutions/security/packages/navigation/tsconfig.json b/x-pack/solutions/security/packages/navigation/tsconfig.json new file mode 100644 index 0000000000000..41296e15768c5 --- /dev/null +++ b/x-pack/solutions/security/packages/navigation/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@testing-library/jest-dom", + "@testing-library/react" + ] + }, + "include": ["**/*.ts", "**/*.tsx"], + "kbn_references": [ + "@kbn/i18n", + "@kbn/core", + "@kbn/deeplinks-security" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/packages/security-solution/side_nav/README.mdx b/x-pack/solutions/security/packages/side_nav/README.mdx similarity index 100% rename from x-pack/packages/security-solution/side_nav/README.mdx rename to x-pack/solutions/security/packages/side_nav/README.mdx diff --git a/x-pack/packages/security-solution/side_nav/index.ts b/x-pack/solutions/security/packages/side_nav/index.ts similarity index 100% rename from x-pack/packages/security-solution/side_nav/index.ts rename to x-pack/solutions/security/packages/side_nav/index.ts diff --git a/x-pack/solutions/security/packages/side_nav/jest.config.js b/x-pack/solutions/security/packages/side_nav/jest.config.js new file mode 100644 index 0000000000000..11d774a650450 --- /dev/null +++ b/x-pack/solutions/security/packages/side_nav/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/side_nav'], +}; diff --git a/x-pack/packages/security-solution/side_nav/kibana.jsonc b/x-pack/solutions/security/packages/side_nav/kibana.jsonc similarity index 100% rename from x-pack/packages/security-solution/side_nav/kibana.jsonc rename to x-pack/solutions/security/packages/side_nav/kibana.jsonc diff --git a/x-pack/packages/security-solution/side_nav/package.json b/x-pack/solutions/security/packages/side_nav/package.json similarity index 100% rename from x-pack/packages/security-solution/side_nav/package.json rename to x-pack/solutions/security/packages/side_nav/package.json diff --git a/x-pack/packages/security-solution/side_nav/panel.ts b/x-pack/solutions/security/packages/side_nav/panel.ts similarity index 100% rename from x-pack/packages/security-solution/side_nav/panel.ts rename to x-pack/solutions/security/packages/side_nav/panel.ts diff --git a/x-pack/packages/security-solution/side_nav/src/beta_badge.tsx b/x-pack/solutions/security/packages/side_nav/src/beta_badge.tsx similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/beta_badge.tsx rename to x-pack/solutions/security/packages/side_nav/src/beta_badge.tsx diff --git a/x-pack/packages/security-solution/side_nav/src/index.tsx b/x-pack/solutions/security/packages/side_nav/src/index.tsx similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/index.tsx rename to x-pack/solutions/security/packages/side_nav/src/index.tsx diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav.stories.tsx b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav.stories.tsx similarity index 99% rename from x-pack/packages/security-solution/side_nav/src/solution_side_nav.stories.tsx rename to x-pack/solutions/security/packages/side_nav/src/solution_side_nav.stories.tsx index 4ac035f717c83..d67e36949ae98 100644 --- a/x-pack/packages/security-solution/side_nav/src/solution_side_nav.stories.tsx +++ b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav.stories.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { SolutionNav } from '@kbn/shared-ux-page-solution-nav'; import { LinkCategoryType } from '@kbn/security-solution-navigation'; -import readme from '../../README.mdx'; +import readme from '../README.mdx'; import { SolutionSideNav as SolutionSideNavComponent, type SolutionSideNavProps, diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav.styles.ts b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav.styles.ts similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/solution_side_nav.styles.ts rename to x-pack/solutions/security/packages/side_nav/src/solution_side_nav.styles.ts diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav.test.tsx b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav.test.tsx similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/solution_side_nav.test.tsx rename to x-pack/solutions/security/packages/side_nav/src/solution_side_nav.test.tsx diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/solution_side_nav.tsx rename to x-pack/solutions/security/packages/side_nav/src/solution_side_nav.tsx diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav_panel.styles.ts b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav_panel.styles.ts similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/solution_side_nav_panel.styles.ts rename to x-pack/solutions/security/packages/side_nav/src/solution_side_nav_panel.styles.ts diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav_panel.test.tsx b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav_panel.test.tsx similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/solution_side_nav_panel.test.tsx rename to x-pack/solutions/security/packages/side_nav/src/solution_side_nav_panel.test.tsx diff --git a/x-pack/packages/security-solution/side_nav/src/solution_side_nav_panel.tsx b/x-pack/solutions/security/packages/side_nav/src/solution_side_nav_panel.tsx similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/solution_side_nav_panel.tsx rename to x-pack/solutions/security/packages/side_nav/src/solution_side_nav_panel.tsx diff --git a/x-pack/packages/security-solution/side_nav/src/telemetry/const.ts b/x-pack/solutions/security/packages/side_nav/src/telemetry/const.ts similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/telemetry/const.ts rename to x-pack/solutions/security/packages/side_nav/src/telemetry/const.ts diff --git a/x-pack/packages/security-solution/side_nav/src/telemetry/telemetry_context.tsx b/x-pack/solutions/security/packages/side_nav/src/telemetry/telemetry_context.tsx similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/telemetry/telemetry_context.tsx rename to x-pack/solutions/security/packages/side_nav/src/telemetry/telemetry_context.tsx diff --git a/x-pack/packages/security-solution/side_nav/src/types.ts b/x-pack/solutions/security/packages/side_nav/src/types.ts similarity index 100% rename from x-pack/packages/security-solution/side_nav/src/types.ts rename to x-pack/solutions/security/packages/side_nav/src/types.ts diff --git a/x-pack/solutions/security/packages/side_nav/tsconfig.json b/x-pack/solutions/security/packages/side_nav/tsconfig.json new file mode 100644 index 0000000000000..12c35d948e0d0 --- /dev/null +++ b/x-pack/solutions/security/packages/side_nav/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@testing-library/jest-dom", + "@testing-library/react", + "@kbn/ambient-ui-types" + ] + }, + "include": ["**/*.ts", "**/*.tsx"], + "kbn_references": [ + "@kbn/i18n", + "@kbn/analytics", + "@kbn/shared-ux-page-solution-nav", + "@kbn/security-solution-navigation", + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/packages/security-solution/storybook/config/README.mdx b/x-pack/solutions/security/packages/storybook/config/README.mdx similarity index 100% rename from x-pack/packages/security-solution/storybook/config/README.mdx rename to x-pack/solutions/security/packages/storybook/config/README.mdx diff --git a/x-pack/packages/security-solution/storybook/config/constants.ts b/x-pack/solutions/security/packages/storybook/config/constants.ts similarity index 100% rename from x-pack/packages/security-solution/storybook/config/constants.ts rename to x-pack/solutions/security/packages/storybook/config/constants.ts diff --git a/x-pack/packages/security-solution/storybook/config/index.ts b/x-pack/solutions/security/packages/storybook/config/index.ts similarity index 100% rename from x-pack/packages/security-solution/storybook/config/index.ts rename to x-pack/solutions/security/packages/storybook/config/index.ts diff --git a/x-pack/solutions/security/packages/storybook/config/kibana.jsonc b/x-pack/solutions/security/packages/storybook/config/kibana.jsonc new file mode 100644 index 0000000000000..141b69563ed37 --- /dev/null +++ b/x-pack/solutions/security/packages/storybook/config/kibana.jsonc @@ -0,0 +1,7 @@ +{ + "type": "shared-common", + "id": "@kbn/security-solution-storybook-config", + "owner": "@elastic/security-threat-hunting-explore", + "group": "security", + "visibility": "private" +} diff --git a/x-pack/solutions/security/packages/storybook/config/main.ts b/x-pack/solutions/security/packages/storybook/config/main.ts new file mode 100644 index 0000000000000..8fd00f77083a8 --- /dev/null +++ b/x-pack/solutions/security/packages/storybook/config/main.ts @@ -0,0 +1,16 @@ +/* + * 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 { defaultConfig } from '@kbn/storybook'; + +module.exports = { + ...defaultConfig, + stories: ['../../../**/*.stories.+(tsx|mdx)'], + reactOptions: { + strictMode: true, + }, +}; diff --git a/x-pack/packages/security-solution/storybook/config/manager.ts b/x-pack/solutions/security/packages/storybook/config/manager.ts similarity index 100% rename from x-pack/packages/security-solution/storybook/config/manager.ts rename to x-pack/solutions/security/packages/storybook/config/manager.ts diff --git a/x-pack/packages/security-solution/storybook/config/package.json b/x-pack/solutions/security/packages/storybook/config/package.json similarity index 100% rename from x-pack/packages/security-solution/storybook/config/package.json rename to x-pack/solutions/security/packages/storybook/config/package.json diff --git a/x-pack/packages/security-solution/storybook/config/preview.ts b/x-pack/solutions/security/packages/storybook/config/preview.ts similarity index 100% rename from x-pack/packages/security-solution/storybook/config/preview.ts rename to x-pack/solutions/security/packages/storybook/config/preview.ts diff --git a/x-pack/solutions/security/packages/storybook/config/tsconfig.json b/x-pack/solutions/security/packages/storybook/config/tsconfig.json new file mode 100644 index 0000000000000..8ef38ac430bcc --- /dev/null +++ b/x-pack/solutions/security/packages/storybook/config/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "@kbn/ambient-storybook-types", + ] + }, + "include": [ + "**/*.ts" + ], + "kbn_references": [ + "@kbn/storybook", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/packages/security-solution/upselling/README.mdx b/x-pack/solutions/security/packages/upselling/README.mdx similarity index 100% rename from x-pack/packages/security-solution/upselling/README.mdx rename to x-pack/solutions/security/packages/upselling/README.mdx diff --git a/x-pack/packages/security-solution/upselling/helpers/index.tsx b/x-pack/solutions/security/packages/upselling/helpers/index.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/helpers/index.tsx rename to x-pack/solutions/security/packages/upselling/helpers/index.tsx diff --git a/x-pack/packages/security-solution/upselling/images/entity_paywall.png b/x-pack/solutions/security/packages/upselling/images/entity_paywall.png similarity index 100% rename from x-pack/packages/security-solution/upselling/images/entity_paywall.png rename to x-pack/solutions/security/packages/upselling/images/entity_paywall.png diff --git a/x-pack/solutions/security/packages/upselling/jest.config.js b/x-pack/solutions/security/packages/upselling/jest.config.js new file mode 100644 index 0000000000000..d64e79c15976c --- /dev/null +++ b/x-pack/solutions/security/packages/upselling/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/packages/upselling'], +}; diff --git a/x-pack/packages/security-solution/upselling/kibana.jsonc b/x-pack/solutions/security/packages/upselling/kibana.jsonc similarity index 100% rename from x-pack/packages/security-solution/upselling/kibana.jsonc rename to x-pack/solutions/security/packages/upselling/kibana.jsonc diff --git a/x-pack/packages/security-solution/upselling/messages/index.tsx b/x-pack/solutions/security/packages/upselling/messages/index.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/messages/index.tsx rename to x-pack/solutions/security/packages/upselling/messages/index.tsx diff --git a/x-pack/packages/security-solution/upselling/package.json b/x-pack/solutions/security/packages/upselling/package.json similarity index 100% rename from x-pack/packages/security-solution/upselling/package.json rename to x-pack/solutions/security/packages/upselling/package.json diff --git a/x-pack/packages/security-solution/upselling/pages/attack_discovery/index.test.tsx b/x-pack/solutions/security/packages/upselling/pages/attack_discovery/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/attack_discovery/index.test.tsx rename to x-pack/solutions/security/packages/upselling/pages/attack_discovery/index.test.tsx diff --git a/x-pack/packages/security-solution/upselling/pages/attack_discovery/index.tsx b/x-pack/solutions/security/packages/upselling/pages/attack_discovery/index.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/attack_discovery/index.tsx rename to x-pack/solutions/security/packages/upselling/pages/attack_discovery/index.tsx diff --git a/x-pack/packages/security-solution/upselling/pages/attack_discovery/page_title/index.test.tsx b/x-pack/solutions/security/packages/upselling/pages/attack_discovery/page_title/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/attack_discovery/page_title/index.test.tsx rename to x-pack/solutions/security/packages/upselling/pages/attack_discovery/page_title/index.test.tsx diff --git a/x-pack/packages/security-solution/upselling/pages/attack_discovery/page_title/index.tsx b/x-pack/solutions/security/packages/upselling/pages/attack_discovery/page_title/index.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/attack_discovery/page_title/index.tsx rename to x-pack/solutions/security/packages/upselling/pages/attack_discovery/page_title/index.tsx diff --git a/x-pack/packages/security-solution/upselling/pages/attack_discovery/page_title/translations.ts b/x-pack/solutions/security/packages/upselling/pages/attack_discovery/page_title/translations.ts similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/attack_discovery/page_title/translations.ts rename to x-pack/solutions/security/packages/upselling/pages/attack_discovery/page_title/translations.ts diff --git a/x-pack/packages/security-solution/upselling/pages/entity_analytics.test.tsx b/x-pack/solutions/security/packages/upselling/pages/entity_analytics.test.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/entity_analytics.test.tsx rename to x-pack/solutions/security/packages/upselling/pages/entity_analytics.test.tsx diff --git a/x-pack/packages/security-solution/upselling/pages/entity_analytics.tsx b/x-pack/solutions/security/packages/upselling/pages/entity_analytics.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/entity_analytics.tsx rename to x-pack/solutions/security/packages/upselling/pages/entity_analytics.tsx diff --git a/x-pack/packages/security-solution/upselling/pages/translations.ts b/x-pack/solutions/security/packages/upselling/pages/translations.ts similarity index 100% rename from x-pack/packages/security-solution/upselling/pages/translations.ts rename to x-pack/solutions/security/packages/upselling/pages/translations.ts diff --git a/x-pack/solutions/security/packages/upselling/sections/attack_discovery/assistant_avatar/assistant_avatar.tsx b/x-pack/solutions/security/packages/upselling/sections/attack_discovery/assistant_avatar/assistant_avatar.tsx new file mode 100644 index 0000000000000..912b7be80bbc1 --- /dev/null +++ b/x-pack/solutions/security/packages/upselling/sections/attack_discovery/assistant_avatar/assistant_avatar.tsx @@ -0,0 +1,47 @@ +/* + * 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'; + +interface Props { + className?: string; + size?: keyof typeof sizeMap; +} + +export const sizeMap = { + xl: 64, + l: 48, + m: 32, + s: 24, + xs: 16, + xxs: 12, +}; + +/** + * Default Elastic AI Assistant logo + * + * @deprecated This component will soon be replaced by `AssistantIcon` from `@kbn/ai-assistant-icon`. + */ +export const AssistantAvatar = ({ className, size = 's' }: Props) => ( + + + + + + +); diff --git a/x-pack/packages/security-solution/upselling/sections/attack_discovery/index.test.tsx b/x-pack/solutions/security/packages/upselling/sections/attack_discovery/index.test.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/sections/attack_discovery/index.test.tsx rename to x-pack/solutions/security/packages/upselling/sections/attack_discovery/index.test.tsx diff --git a/x-pack/packages/security-solution/upselling/sections/attack_discovery/index.tsx b/x-pack/solutions/security/packages/upselling/sections/attack_discovery/index.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/sections/attack_discovery/index.tsx rename to x-pack/solutions/security/packages/upselling/sections/attack_discovery/index.tsx diff --git a/x-pack/packages/security-solution/upselling/sections/attack_discovery/translations.ts b/x-pack/solutions/security/packages/upselling/sections/attack_discovery/translations.ts similarity index 100% rename from x-pack/packages/security-solution/upselling/sections/attack_discovery/translations.ts rename to x-pack/solutions/security/packages/upselling/sections/attack_discovery/translations.ts diff --git a/x-pack/packages/security-solution/upselling/sections/entity_analytics.tsx b/x-pack/solutions/security/packages/upselling/sections/entity_analytics.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/sections/entity_analytics.tsx rename to x-pack/solutions/security/packages/upselling/sections/entity_analytics.tsx diff --git a/x-pack/packages/security-solution/upselling/service/index.ts b/x-pack/solutions/security/packages/upselling/service/index.ts similarity index 100% rename from x-pack/packages/security-solution/upselling/service/index.ts rename to x-pack/solutions/security/packages/upselling/service/index.ts diff --git a/x-pack/packages/security-solution/upselling/service/types.ts b/x-pack/solutions/security/packages/upselling/service/types.ts similarity index 100% rename from x-pack/packages/security-solution/upselling/service/types.ts rename to x-pack/solutions/security/packages/upselling/service/types.ts diff --git a/x-pack/packages/security-solution/upselling/service/upselling_service.test.tsx b/x-pack/solutions/security/packages/upselling/service/upselling_service.test.tsx similarity index 100% rename from x-pack/packages/security-solution/upselling/service/upselling_service.test.tsx rename to x-pack/solutions/security/packages/upselling/service/upselling_service.test.tsx diff --git a/x-pack/packages/security-solution/upselling/service/upselling_service.ts b/x-pack/solutions/security/packages/upselling/service/upselling_service.ts similarity index 100% rename from x-pack/packages/security-solution/upselling/service/upselling_service.ts rename to x-pack/solutions/security/packages/upselling/service/upselling_service.ts diff --git a/x-pack/solutions/security/packages/upselling/tsconfig.json b/x-pack/solutions/security/packages/upselling/tsconfig.json new file mode 100644 index 0000000000000..653738495ed81 --- /dev/null +++ b/x-pack/solutions/security/packages/upselling/tsconfig.json @@ -0,0 +1,27 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@testing-library/jest-dom", + "@testing-library/react", + "@kbn/ambient-ui-types" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx" + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/security-solution-navigation", + "@kbn/shared-ux-page-kibana-template", + ], + "exclude": [ + "target/**/*" + ] +} diff --git a/x-pack/plugins/ecs_data_quality_dashboard/README.md b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/README.md similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/README.md rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/README.md diff --git a/x-pack/plugins/ecs_data_quality_dashboard/common/constants.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/common/constants.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/common/constants.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/common/constants.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/common/types.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/common/types.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/common/types.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/common/types.ts diff --git a/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/jest.config.js b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/jest.config.js new file mode 100644 index 0000000000000..82d84541051b0 --- /dev/null +++ b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/{common,lib,server}/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/ecs_data_quality_dashboard', + coverageReporters: ['text', 'html'], + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/plugins/ecs_data_quality_dashboard'], + preset: '@kbn/test', +}; diff --git a/x-pack/plugins/ecs_data_quality_dashboard/kibana.jsonc b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/kibana.jsonc similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/kibana.jsonc rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/kibana.jsonc diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_metering_stats_index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_metering_stats_index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_metering_stats_index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_metering_stats_index.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_green_index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_green_index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_green_index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_green_index.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_yellow_index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_yellow_index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_yellow_index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/mock_stats_yellow_index.ts diff --git a/x-pack/plugins/integration_assistant/server/__mocks__/request.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/request.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/__mocks__/request.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/request.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/request_context.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/request_context.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/request_context.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/request_context.ts diff --git a/x-pack/plugins/integration_assistant/server/__mocks__/response.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/response.ts similarity index 100% rename from x-pack/plugins/integration_assistant/server/__mocks__/response.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/response.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/server.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/test_adapters.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/test_adapters.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/__mocks__/test_adapters.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/__mocks__/test_adapters.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_authorized_index_names.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_authorized_index_names.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_authorized_index_names.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_authorized_index_names.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_available_indices.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_available_indices.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_available_indices.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_available_indices.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_hits_total.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_range_filtered_indices.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/helpers/get_unallowed_field_requests.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/index.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/build_response/index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/build_response/index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/build_response/index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/build_response/index.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_data_stream.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_field_map.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_field_map.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_field_map.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/data_stream/results_field_map.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_available_indices.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_ilm_explain.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_ilm_explain.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_ilm_explain.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_ilm_explain.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_mappings.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_mappings.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_mappings.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_mappings.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_stats.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_stats.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/fetch_stats.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/fetch_stats.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/get_unallowed_field_values.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/get_unallowed_field_values.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/get_unallowed_field_values.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/get_unallowed_field_values.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/lib/index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/lib/index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/lib/index.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/plugin.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/plugin.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/plugin.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/plugin.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_ilm_explain.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_mappings.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_index_stats.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/get_unallowed_field_values.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/index.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/get_index_results_latest.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/index.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/index.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/index.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/index.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/post_index_results.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.test.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.test.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.test.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.test.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/privileges.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/results.mock.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/results.mock.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/results.mock.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/results.mock.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/translations.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/translations.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/routes/results/translations.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/routes/results/translations.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/schemas/common.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/common.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/schemas/common.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/common.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_ilm_explain.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_ilm_explain.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_ilm_explain.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_ilm_explain.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_index_mappings.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_index_mappings.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_index_mappings.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_index_mappings.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_index_stats.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_index_stats.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_index_stats.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_index_stats.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_unallowed_field_values.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_unallowed_field_values.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/schemas/get_unallowed_field_values.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/get_unallowed_field_values.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/schemas/result.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/result.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/schemas/result.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/result.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/schemas/utils/string_to_non_negative_number.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/utils/string_to_non_negative_number.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/schemas/utils/string_to_non_negative_number.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/schemas/utils/string_to_non_negative_number.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/translations.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/translations.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/translations.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/translations.ts diff --git a/x-pack/plugins/ecs_data_quality_dashboard/server/types.ts b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/types.ts similarity index 100% rename from x-pack/plugins/ecs_data_quality_dashboard/server/types.ts rename to x-pack/solutions/security/plugins/ecs_data_quality_dashboard/server/types.ts diff --git a/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/tsconfig.json b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/tsconfig.json new file mode 100644 index 0000000000000..14c001e40eff0 --- /dev/null +++ b/x-pack/solutions/security/plugins/ecs_data_quality_dashboard/tsconfig.json @@ -0,0 +1,34 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "server/lib/**/*", + "server/**/*", + // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 + "server/**/*.json", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/core-http-server", + "@kbn/licensing-plugin", + "@kbn/core-http-request-handler-context-server", + "@kbn/securitysolution-io-ts-utils", + "@kbn/securitysolution-io-ts-types", + "@kbn/i18n", + "@kbn/core-http-router-server-mocks", + "@kbn/logging-mocks", + "@kbn/data-stream-adapter", + "@kbn/spaces-plugin", + "@kbn/core-elasticsearch-server-mocks", + "@kbn/core-elasticsearch-server", + "@kbn/core-security-common", + "@kbn/datemath", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/solutions/security/plugins/elastic_assistant/README.md b/x-pack/solutions/security/plugins/elastic_assistant/README.md new file mode 100755 index 0000000000000..bb5d441cdaa18 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/README.md @@ -0,0 +1,30 @@ +# Elastic AI Assistant + +This plugin implements (only) server APIs for the `Elastic AI Assistant`. + +This plugin does NOT contain UI components. See `x-pack/platform/packages/shared/kbn-elastic-assistant` for React components. + +## Maintainers + +Maintained by the Security Solution team + +## Graph structure + +### Default Assistant graph + +![DefaultAssistantGraph](./docs/img/default_assistant_graph.png) + +### Default Attack discovery graph + +![DefaultAttackDiscoveryGraph](./docs/img/default_attack_discovery_graph.png) + +## Development + +### Generate graph structure + +To generate the graph structure, run `yarn draw-graph` from the plugin directory. +The graphs will be generated in the `docs/img` directory of the plugin. + +### Testing + +To run the tests for this plugin, run `node scripts/jest --watch x-pack/solutions/security/plugins/elastic_assistant/jest.config.js --coverage` from the Kibana root directory. diff --git a/x-pack/plugins/elastic_assistant/common/anonymization/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/common/anonymization/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/common/anonymization/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/common/anonymization/index.ts diff --git a/x-pack/plugins/elastic_assistant/common/constants.ts b/x-pack/solutions/security/plugins/elastic_assistant/common/constants.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/common/constants.ts rename to x-pack/solutions/security/plugins/elastic_assistant/common/constants.ts diff --git a/x-pack/plugins/elastic_assistant/docs/img/default_assistant_graph.png b/x-pack/solutions/security/plugins/elastic_assistant/docs/img/default_assistant_graph.png similarity index 100% rename from x-pack/plugins/elastic_assistant/docs/img/default_assistant_graph.png rename to x-pack/solutions/security/plugins/elastic_assistant/docs/img/default_assistant_graph.png diff --git a/x-pack/plugins/elastic_assistant/docs/img/default_attack_discovery_graph.png b/x-pack/solutions/security/plugins/elastic_assistant/docs/img/default_attack_discovery_graph.png similarity index 100% rename from x-pack/plugins/elastic_assistant/docs/img/default_attack_discovery_graph.png rename to x-pack/solutions/security/plugins/elastic_assistant/docs/img/default_attack_discovery_graph.png diff --git a/x-pack/solutions/security/plugins/elastic_assistant/jest.config.js b/x-pack/solutions/security/plugins/elastic_assistant/jest.config.js new file mode 100644 index 0000000000000..88be4c9828e98 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/elastic_assistant/{common,lib,server}/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/elastic_assistant', + coverageReporters: ['text', 'html'], + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/plugins/elastic_assistant'], + preset: '@kbn/test', +}; diff --git a/x-pack/plugins/elastic_assistant/kibana.jsonc b/x-pack/solutions/security/plugins/elastic_assistant/kibana.jsonc similarity index 100% rename from x-pack/plugins/elastic_assistant/kibana.jsonc rename to x-pack/solutions/security/plugins/elastic_assistant/kibana.jsonc diff --git a/x-pack/plugins/elastic_assistant/package.json b/x-pack/solutions/security/plugins/elastic_assistant/package.json similarity index 100% rename from x-pack/plugins/elastic_assistant/package.json rename to x-pack/solutions/security/plugins/elastic_assistant/package.json diff --git a/x-pack/plugins/elastic_assistant/scripts/create_conversations.js b/x-pack/solutions/security/plugins/elastic_assistant/scripts/create_conversations.js similarity index 86% rename from x-pack/plugins/elastic_assistant/scripts/create_conversations.js rename to x-pack/solutions/security/plugins/elastic_assistant/scripts/create_conversations.js index b08f1419af0c9..a770c63561fd3 100644 --- a/x-pack/plugins/elastic_assistant/scripts/create_conversations.js +++ b/x-pack/solutions/security/plugins/elastic_assistant/scripts/create_conversations.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../src/setup_node_env'); +require('../../../../../../src/setup_node_env'); require('./create_conversations_script').create(); diff --git a/x-pack/plugins/elastic_assistant/scripts/create_conversations_script.ts b/x-pack/solutions/security/plugins/elastic_assistant/scripts/create_conversations_script.ts similarity index 98% rename from x-pack/plugins/elastic_assistant/scripts/create_conversations_script.ts rename to x-pack/solutions/security/plugins/elastic_assistant/scripts/create_conversations_script.ts index 2fd388e299f6f..cae2e4d6185b4 100644 --- a/x-pack/plugins/elastic_assistant/scripts/create_conversations_script.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/scripts/create_conversations_script.ts @@ -19,7 +19,7 @@ import { getCreateConversationSchemaMock } from '../server/__mocks__/conversatio /** * Developer script for creating conversations. - * node x-pack/plugins/elastic_assistant/scripts/create_conversations + * node x-pack/solutions/security/plugins/elastic_assistant/scripts/create_conversations */ export const create = async () => { const logger = new ToolingLog({ diff --git a/x-pack/plugins/elastic_assistant/scripts/draw_graph.js b/x-pack/solutions/security/plugins/elastic_assistant/scripts/draw_graph.js similarity index 85% rename from x-pack/plugins/elastic_assistant/scripts/draw_graph.js rename to x-pack/solutions/security/plugins/elastic_assistant/scripts/draw_graph.js index dd920c79c32ec..a1c5fc312a4f4 100644 --- a/x-pack/plugins/elastic_assistant/scripts/draw_graph.js +++ b/x-pack/solutions/security/plugins/elastic_assistant/scripts/draw_graph.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../src/setup_node_env'); +require('../../../../../../src/setup_node_env'); require('./draw_graph_script').draw(); diff --git a/x-pack/plugins/elastic_assistant/scripts/draw_graph_script.ts b/x-pack/solutions/security/plugins/elastic_assistant/scripts/draw_graph_script.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/scripts/draw_graph_script.ts rename to x-pack/solutions/security/plugins/elastic_assistant/scripts/draw_graph_script.ts diff --git a/x-pack/plugins/elastic_assistant/scripts/model_evaluator.js b/x-pack/solutions/security/plugins/elastic_assistant/scripts/model_evaluator.js similarity index 86% rename from x-pack/plugins/elastic_assistant/scripts/model_evaluator.js rename to x-pack/solutions/security/plugins/elastic_assistant/scripts/model_evaluator.js index a7b46e00d6f2d..5cfc2909ac15d 100644 --- a/x-pack/plugins/elastic_assistant/scripts/model_evaluator.js +++ b/x-pack/solutions/security/plugins/elastic_assistant/scripts/model_evaluator.js @@ -5,5 +5,5 @@ * 2.0. */ -require('../../../../src/setup_node_env'); +require('../../../../../../src/setup_node_env'); require('./model_evaluator_script').evaluateModels(); diff --git a/x-pack/plugins/elastic_assistant/scripts/model_evaluator_script.ts b/x-pack/solutions/security/plugins/elastic_assistant/scripts/model_evaluator_script.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/scripts/model_evaluator_script.ts rename to x-pack/solutions/security/plugins/elastic_assistant/scripts/model_evaluator_script.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/action_result_data.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/action_result_data.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/action_result_data.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/action_result_data.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/alerts.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/alerts.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/alerts.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/alerts.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/anonymization_fields_schema.mock.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/anonymization_fields_schema.mock.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/anonymization_fields_schema.mock.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/anonymization_fields_schema.mock.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/attack_discovery_schema.mock.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/attack_discovery_schema.mock.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/attack_discovery_schema.mock.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/attack_discovery_schema.mock.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/conversations_schema.mock.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/conversations_schema.mock.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/conversations_schema.mock.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/conversations_schema.mock.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/data_clients.mock.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/data_clients.mock.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/data_clients.mock.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/data_clients.mock.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/defend_insights_schema.mock.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/defend_insights_schema.mock.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/defend_insights_schema.mock.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/defend_insights_schema.mock.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/docs_from_directory_loader.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/docs_from_directory_loader.ts similarity index 83% rename from x-pack/plugins/elastic_assistant/server/__mocks__/docs_from_directory_loader.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/docs_from_directory_loader.ts index e8cdf4b20dbde..5120b308cae19 100644 --- a/x-pack/plugins/elastic_assistant/server/__mocks__/docs_from_directory_loader.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/docs_from_directory_loader.ts @@ -16,7 +16,7 @@ export const mockExampleQueryDocsFromDirectoryLoader: Document[] = [ '[[esql-example-queries]]\n\nThe following is an example an ES|QL query:\n\n```\nFROM logs-*\n| WHERE NOT CIDR_MATCH(destination.ip, "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16")\n| STATS destcount = COUNT(destination.ip) by user.name, host.name\n| ENRICH ldap_lookup_new ON user.name\n| WHERE group.name IS NOT NULL\n| EVAL follow_up = CASE(\n destcount >= 100, "true",\n "false")\n| SORT destcount desc\n| KEEP destcount, host.name, user.name, group.name, follow_up\n```\n', metadata: { source: - '/Users/andrew.goldstein/Projects/forks/andrew-goldstein/kibana/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0001.asciidoc', + '/Users/andrew.goldstein/Projects/forks/andrew-goldstein/kibana/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0001.asciidoc', }, }, { @@ -24,7 +24,7 @@ export const mockExampleQueryDocsFromDirectoryLoader: Document[] = [ '[[esql-example-queries]]\n\nThe following is an example an ES|QL query:\n\n```\nfrom logs-*\n| grok dns.question.name "%{DATA}\\\\.%{GREEDYDATA:dns.question.registered_domain:string}"\n| stats unique_queries = count_distinct(dns.question.name) by dns.question.registered_domain, process.name\n| where unique_queries > 5\n| sort unique_queries desc\n```\n', metadata: { source: - '/Users/andrew.goldstein/Projects/forks/andrew-goldstein/kibana/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0002.asciidoc', + '/Users/andrew.goldstein/Projects/forks/andrew-goldstein/kibana/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0002.asciidoc', }, }, { @@ -32,7 +32,7 @@ export const mockExampleQueryDocsFromDirectoryLoader: Document[] = [ '[[esql-example-queries]]\n\nThe following is an example an ES|QL query:\n\n```\nfrom logs-*\n| where event.code is not null\n| stats event_code_count = count(event.code) by event.code,host.name\n| enrich win_events on event.code with EVENT_DESCRIPTION\n| where EVENT_DESCRIPTION is not null and host.name is not null\n| rename EVENT_DESCRIPTION as event.description\n| sort event_code_count desc\n| keep event_code_count,event.code,host.name,event.description\n```\n', metadata: { source: - '/Users/andrew.goldstein/Projects/forks/andrew-goldstein/kibana/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0003.asciidoc', + '/Users/andrew.goldstein/Projects/forks/andrew-goldstein/kibana/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0003.asciidoc', }, }, ]; diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/knowledge_base_entry_schema.mock.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/knowledge_base_entry_schema.mock.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/knowledge_base_entry_schema.mock.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/knowledge_base_entry_schema.mock.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/lang_chain_messages.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/lang_chain_messages.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/lang_chain_messages.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/lang_chain_messages.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/prompts_schema.mock.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/prompts_schema.mock.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/prompts_schema.mock.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/prompts_schema.mock.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/raw_attack_discoveries.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/raw_attack_discoveries.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/raw_attack_discoveries.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/raw_attack_discoveries.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/request.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/request.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/request.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/request.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/request_context.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/request_context.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/request_context.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/request_context.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/response.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/response.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/response.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/response.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/server.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/server.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/server.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/server.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/test_adapters.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/test_adapters.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/test_adapters.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/test_adapters.ts diff --git a/x-pack/plugins/elastic_assistant/server/__mocks__/user.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/user.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/__mocks__/user.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/__mocks__/user.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/field_maps_configuration.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/field_maps_configuration.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/field_maps_configuration.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/field_maps_configuration.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/anonymization_fields/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/append_conversation_messages.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/append_conversation_messages.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/append_conversation_messages.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/append_conversation_messages.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/create_conversation.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/delete_conversation.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/field_maps_configuration.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/field_maps_configuration.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/field_maps_configuration.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/field_maps_configuration.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/get_conversation.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/transforms.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/transforms.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/transforms.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/transforms.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/conversations/update_conversation.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/field_maps_configuration.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/field_maps_configuration.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/field_maps_configuration.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/field_maps_configuration.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/get_defend_insight.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/defend_insights/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/find.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/find.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/find.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/find.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/find.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/find.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/find.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/find.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/index.test.ts diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/index.ts new file mode 100644 index 0000000000000..f17ffac7d42ac --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/index.ts @@ -0,0 +1,133 @@ +/* + * 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 { AuditLogger, AuthenticatedUser, ElasticsearchClient, Logger } from '@kbn/core/server'; + +import { DEFAULT_NAMESPACE_STRING } from '@kbn/core-saved-objects-utils-server'; +import { ESSearchRequest, ESSearchResponse } from '@kbn/es-types'; +import { estypes } from '@elastic/elasticsearch'; +import { IIndexPatternString } from '../types'; +import { getIndexTemplateAndPattern } from '../lib/data_stream/helpers'; +import { DocumentsDataWriter } from '../lib/data_stream/documents_data_writer'; +import { FindResponse, findDocuments } from './find'; + +export interface AIAssistantDataClientParams { + elasticsearchClientPromise: Promise; + kibanaVersion: string; + spaceId: string; + auditLogger?: AuditLogger; + logger: Logger; + indexPatternsResourceName: string; + currentUser: AuthenticatedUser | null; +} + +export class AIAssistantDataClient { + /** Kibana space id the document index are part of */ + public readonly spaceId: string; + + /** User creating, modifying, deleting, or updating a document */ + private readonly currentUser: AuthenticatedUser | null; + + private writerCache: Map = new Map(); + + public indexTemplateAndPattern: IIndexPatternString; + + constructor(public readonly options: AIAssistantDataClientParams) { + this.indexTemplateAndPattern = getIndexTemplateAndPattern( + this.options.indexPatternsResourceName, + this.options.spaceId ?? DEFAULT_NAMESPACE_STRING + ); + this.currentUser = this.options.currentUser; + this.spaceId = this.options.spaceId; + } + + public getWriter = async (): Promise => { + const spaceId = this.spaceId; + if (this.writerCache.get(spaceId)) { + return this.writerCache.get(spaceId) as DocumentsDataWriter; + } + await this.initializeWriter(spaceId, this.indexTemplateAndPattern.alias); + return this.writerCache.get(spaceId) as DocumentsDataWriter; + }; + + private async initializeWriter(spaceId: string, index: string): Promise { + const esClient = await this.options.elasticsearchClientPromise; + const writer = new DocumentsDataWriter({ + esClient, + spaceId, + index, + logger: this.options.logger, + user: { id: this.currentUser?.profile_uid, name: this.currentUser?.username }, + }); + + this.writerCache.set(spaceId, writer); + return writer; + } + + public getReader = async () => { + const indexPatterns = this.indexTemplateAndPattern.alias; + + return { + search: async >( + request: TSearchRequest + ): Promise> => { + try { + const esClient = await this.options.elasticsearchClientPromise; + return (await esClient.search({ + ...request, + index: indexPatterns, + ignore_unavailable: true, + seq_no_primary_term: true, + })) as unknown as ESSearchResponse; + } catch (err) { + this.options.logger.error( + `Error performing search in AIAssistantDataClient - ${err.message}` + ); + throw err; + } + }, + }; + }; + + public findDocuments = async ({ + perPage, + page, + sortField, + sortOrder, + filter, + fields, + aggs, + mSearch, + }: { + perPage: number; + page: number; + sortField?: string; + sortOrder?: string; + filter?: string; + fields?: string[]; + aggs?: Record; + mSearch?: { + filter: string; + perPage: number; + }; + }): Promise>> => { + const esClient = await this.options.elasticsearchClientPromise; + return findDocuments({ + esClient, + fields, + page, + perPage, + filter, + sortField, + index: this.indexTemplateAndPattern.alias, + sortOrder: sortOrder as estypes.SortOrder, + logger: this.options.logger, + aggs, + mSearch, + }); + }; +} diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/audit_events.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/audit_events.test.ts new file mode 100644 index 0000000000000..8d65d9e628285 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/audit_events.test.ts @@ -0,0 +1,181 @@ +/* + * 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 { + knowledgeBaseAuditEvent, + KnowledgeBaseAuditAction, + AUDIT_OUTCOME, + AUDIT_CATEGORY, + AUDIT_TYPE, +} from './audit_events'; + +describe('knowledgeBaseAuditEvent', () => { + it('should generate a success event with id', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + id: '123', + outcome: AUDIT_OUTCOME.SUCCESS, + }); + + expect(event).toEqual({ + message: 'User has created knowledge base entry [id=123]', + event: { + action: KnowledgeBaseAuditAction.CREATE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.CREATION], + outcome: AUDIT_OUTCOME.SUCCESS, + }, + }); + }); + it('should generate a success event with name', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + name: 'My document', + outcome: AUDIT_OUTCOME.SUCCESS, + }); + + expect(event).toEqual({ + message: 'User has created knowledge base entry [name="My document"]', + event: { + action: KnowledgeBaseAuditAction.CREATE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.CREATION], + outcome: AUDIT_OUTCOME.SUCCESS, + }, + }); + }); + it('should generate a success event with name and id', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + name: 'My document', + id: '123', + outcome: AUDIT_OUTCOME.SUCCESS, + }); + + expect(event).toEqual({ + message: 'User has created knowledge base entry [id=123, name="My document"]', + event: { + action: KnowledgeBaseAuditAction.CREATE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.CREATION], + outcome: AUDIT_OUTCOME.SUCCESS, + }, + }); + }); + + it('should generate a success event without id or name', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + outcome: AUDIT_OUTCOME.SUCCESS, + }); + + expect(event).toEqual({ + message: 'User has created a knowledge base entry', + event: { + action: KnowledgeBaseAuditAction.CREATE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.CREATION], + outcome: AUDIT_OUTCOME.SUCCESS, + }, + }); + }); + + it('should generate a failure event with an error', () => { + const error = new Error('Test error'); + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + id: '456', + error, + }); + + expect(event).toEqual({ + message: 'Failed attempt to create knowledge base entry [id=456]', + event: { + action: KnowledgeBaseAuditAction.CREATE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.CREATION], + outcome: AUDIT_OUTCOME.FAILURE, + }, + error: { + code: error.name, + message: error.message, + }, + }); + }); + + it('should handle unknown outcome', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + id: '789', + outcome: AUDIT_OUTCOME.UNKNOWN, + }); + + expect(event).toEqual({ + message: 'User is creating knowledge base entry [id=789]', + event: { + action: KnowledgeBaseAuditAction.CREATE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.CREATION], + outcome: AUDIT_OUTCOME.UNKNOWN, + }, + }); + }); + + it('should handle update action', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.UPDATE, + id: '123', + outcome: AUDIT_OUTCOME.SUCCESS, + }); + + expect(event).toEqual({ + message: 'User has updated knowledge base entry [id=123]', + event: { + action: KnowledgeBaseAuditAction.UPDATE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.CHANGE], + outcome: AUDIT_OUTCOME.SUCCESS, + }, + }); + }); + + it('should handle delete action', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.DELETE, + id: '123', + }); + + expect(event).toEqual({ + message: 'User has deleted knowledge base entry [id=123]', + event: { + action: KnowledgeBaseAuditAction.DELETE, + category: [AUDIT_CATEGORY.DATABASE], + type: [AUDIT_TYPE.DELETION], + outcome: AUDIT_OUTCOME.SUCCESS, + }, + }); + }); + + it('should default to success if outcome is not provided and no error exists', () => { + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + }); + + expect(event.event?.outcome).toBe(AUDIT_OUTCOME.SUCCESS); + }); + + it('should prioritize error outcome over provided outcome', () => { + const error = new Error('Error with priority'); + const event = knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + outcome: AUDIT_OUTCOME.SUCCESS, + error, + }); + + expect(event.event?.outcome).toBe(AUDIT_OUTCOME.FAILURE); + }); +}); diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/audit_events.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/audit_events.ts new file mode 100644 index 0000000000000..584efd603f4b7 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/audit_events.ts @@ -0,0 +1,94 @@ +/* + * 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 { EcsEvent } from '@kbn/core/server'; +import { AuditEvent } from '@kbn/security-plugin/server'; +import { ArrayElement } from '@kbn/utility-types'; + +export enum AUDIT_TYPE { + CHANGE = 'change', + DELETION = 'deletion', + ACCESS = 'access', + CREATION = 'creation', +} + +export enum AUDIT_CATEGORY { + AUTHENTICATION = 'authentication', + DATABASE = 'database', + WEB = 'web', +} + +export enum AUDIT_OUTCOME { + FAILURE = 'failure', + SUCCESS = 'success', + UNKNOWN = 'unknown', +} + +export enum KnowledgeBaseAuditAction { + CREATE = 'knowledge_base_entry_create', + UPDATE = 'knowledge_base_entry_update', + DELETE = 'knowledge_base_entry_delete', +} + +type VerbsTuple = [string, string, string]; +const knowledgeBaseEventVerbs: Record = { + knowledge_base_entry_create: ['create', 'creating', 'created'], + knowledge_base_entry_update: ['update', 'updating', 'updated'], + knowledge_base_entry_delete: ['delete', 'deleting', 'deleted'], +}; + +const knowledgeBaseEventTypes: Record> = { + knowledge_base_entry_create: AUDIT_TYPE.CREATION, + knowledge_base_entry_update: AUDIT_TYPE.CHANGE, + knowledge_base_entry_delete: AUDIT_TYPE.DELETION, +}; + +export interface KnowledgeBaseAuditEventParams { + action: KnowledgeBaseAuditAction; + error?: Error; + id?: string; + name?: string; + outcome?: EcsEvent['outcome']; +} + +export function knowledgeBaseAuditEvent({ + action, + error, + id, + name, + outcome, +}: KnowledgeBaseAuditEventParams): AuditEvent { + let doc = 'a knowledge base entry'; + if (id && name) { + doc = `knowledge base entry [id=${id}, name="${name}"]`; + } else if (id) { + doc = `knowledge base entry [id=${id}]`; + } else if (name) { + doc = `knowledge base entry [name="${name}"]`; + } + const [present, progressive, past] = knowledgeBaseEventVerbs[action]; + const message = error + ? `Failed attempt to ${present} ${doc}` + : outcome === 'unknown' + ? `User is ${progressive} ${doc}` + : `User has ${past} ${doc}`; + const type = knowledgeBaseEventTypes[action]; + + return { + message, + event: { + action, + category: [AUDIT_CATEGORY.DATABASE], + type: type ? [type] : undefined, + outcome: error ? AUDIT_OUTCOME.FAILURE : outcome ?? AUDIT_OUTCOME.SUCCESS, + }, + error: error && { + code: error.name, + message: error.message, + }, + }; +} diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts similarity index 90% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts index 8e1d749c7f78b..cda1781c3a1e9 100644 --- a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/create_knowledge_base_entry.ts @@ -8,6 +8,7 @@ import { v4 as uuidv4 } from 'uuid'; import { AnalyticsServiceSetup, + type AuditLogger, AuthenticatedUser, ElasticsearchClient, Logger, @@ -18,6 +19,7 @@ import { KnowledgeBaseEntryResponse, KnowledgeBaseEntryUpdateProps, } from '@kbn/elastic-assistant-common'; +import { AUDIT_OUTCOME, KnowledgeBaseAuditAction, knowledgeBaseAuditEvent } from './audit_events'; import { CREATE_KNOWLEDGE_BASE_ENTRY_ERROR_EVENT, CREATE_KNOWLEDGE_BASE_ENTRY_SUCCESS_EVENT, @@ -26,6 +28,7 @@ import { getKnowledgeBaseEntry } from './get_knowledge_base_entry'; import { CreateKnowledgeBaseEntrySchema, UpdateKnowledgeBaseEntrySchema } from './types'; export interface CreateKnowledgeBaseEntryParams { + auditLogger?: AuditLogger; esClient: ElasticsearchClient; knowledgeBaseIndex: string; logger: Logger; @@ -37,6 +40,7 @@ export interface CreateKnowledgeBaseEntryParams { } export const createKnowledgeBaseEntry = async ({ + auditLogger, esClient, knowledgeBaseIndex, spaceId, @@ -75,13 +79,27 @@ export const createKnowledgeBaseEntry = async ({ logger, user, }); - + auditLogger?.log( + knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + id: newKnowledgeBaseEntry?.id, + name: newKnowledgeBaseEntry?.name, + outcome: AUDIT_OUTCOME.SUCCESS, + }) + ); telemetry.reportEvent(CREATE_KNOWLEDGE_BASE_ENTRY_SUCCESS_EVENT.eventType, telemetryPayload); return newKnowledgeBaseEntry; } catch (err) { logger.error( `Error creating Knowledge Base Entry: ${err} with kbResource: ${knowledgeBaseEntry.name}` ); + auditLogger?.log( + knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + outcome: AUDIT_OUTCOME.FAILURE, + error: err, + }) + ); telemetry.reportEvent(CREATE_KNOWLEDGE_BASE_ENTRY_ERROR_EVENT.eventType, { ...telemetryPayload, errorMessage: err.message ?? 'Unknown error', diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/field_maps_configuration.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/field_maps_configuration.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/field_maps_configuration.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/field_maps_configuration.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/get_knowledge_base_entry.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.test.tsx b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.test.tsx similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.test.tsx rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.test.tsx diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.test.ts diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts new file mode 100644 index 0000000000000..0065066455475 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/index.ts @@ -0,0 +1,697 @@ +/* + * 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 { + MlTrainedModelDeploymentNodesStats, + MlTrainedModelStats, + SearchTotalHits, +} from '@elastic/elasticsearch/lib/api/types'; +import type { MlPluginSetup } from '@kbn/ml-plugin/server'; +import type { KibanaRequest } from '@kbn/core-http-server'; +import { Document } from 'langchain/document'; +import type { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; +import { + DocumentEntryType, + DocumentEntry, + IndexEntry, + KnowledgeBaseEntryCreateProps, + KnowledgeBaseEntryResponse, + Metadata, +} from '@kbn/elastic-assistant-common'; +import pRetry from 'p-retry'; +import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { StructuredTool } from '@langchain/core/tools'; +import { AnalyticsServiceSetup, AuditLogger, ElasticsearchClient } from '@kbn/core/server'; +import { IndexPatternsFetcher } from '@kbn/data-views-plugin/server'; +import { map } from 'lodash'; +import { AIAssistantDataClient, AIAssistantDataClientParams } from '..'; +import { GetElser } from '../../types'; +import { createKnowledgeBaseEntry, transformToCreateSchema } from './create_knowledge_base_entry'; +import { EsDocumentEntry, EsIndexEntry, EsKnowledgeBaseEntrySchema } from './types'; +import { transformESSearchToKnowledgeBaseEntry } from './transforms'; +import { SECURITY_LABS_RESOURCE, USER_RESOURCE } from '../../routes/knowledge_base/constants'; +import { + getKBVectorSearchQuery, + getStructuredToolForIndexEntry, + isModelAlreadyExistsError, +} from './helpers'; +import { getKBUserFilter } from '../../routes/knowledge_base/entries/utils'; +import { + loadSecurityLabs, + getSecurityLabsDocsCount, +} from '../../lib/langchain/content_loaders/security_labs_loader'; +import { ASSISTANT_ELSER_INFERENCE_ID } from './field_maps_configuration'; + +/** + * Params for when creating KbDataClient in Request Context Factory. Useful if needing to modify + * configuration after initial plugin start + */ +export interface GetAIAssistantKnowledgeBaseDataClientParams { + modelIdOverride?: string; + manageGlobalKnowledgeBaseAIAssistant?: boolean; +} + +export interface KnowledgeBaseDataClientParams extends AIAssistantDataClientParams { + ml: MlPluginSetup; + getElserId: GetElser; + getIsKBSetupInProgress: () => boolean; + ingestPipelineResourceName: string; + setIsKBSetupInProgress: (isInProgress: boolean) => void; + manageGlobalKnowledgeBaseAIAssistant: boolean; +} +export class AIAssistantKnowledgeBaseDataClient extends AIAssistantDataClient { + constructor(public readonly options: KnowledgeBaseDataClientParams) { + super(options); + } + + public get isSetupInProgress() { + return this.options.getIsKBSetupInProgress(); + } + /** + * Returns whether setup of the Knowledge Base can be performed (essentially an ML features check) + * + */ + public isSetupAvailable = async () => { + // ML plugin requires request to retrieve capabilities, which are in turn scoped to the user from the request, + // so we just test the API for a 404 instead to determine if ML is 'available' + // TODO: expand to include memory check, see https://github.com/elastic/ml-team/issues/1208#issuecomment-2115770318 + try { + const esClient = await this.options.elasticsearchClientPromise; + await esClient.ml.getMemoryStats({ human: true }); + } catch (error) { + return false; + } + return true; + }; + + /** + * Downloads and installs ELSER model if not already installed + * + * @param soClient SavedObjectsClientContract for installing ELSER so that ML SO's are in sync + */ + private installModel = async ({ soClient }: { soClient: SavedObjectsClientContract }) => { + const elserId = await this.options.getElserId(); + this.options.logger.debug(`Installing ELSER model '${elserId}'...`); + + try { + await this.options.ml + // TODO: Potentially plumb soClient through DataClient from pluginStart + .trainedModelsProvider({} as KibanaRequest, soClient) + .installElasticModel(elserId); + } catch (error) { + this.options.logger.error(`Error installing ELSER model '${elserId}':\n${error}`); + } + }; + + /** + * Returns whether ELSER is installed/ready to deploy + * + * @returns Promise indicating whether the model is installed + */ + public isModelInstalled = async (): Promise => { + const elserId = await this.options.getElserId(); + this.options.logger.debug(`Checking if ELSER model '${elserId}' is installed...`); + + try { + const esClient = await this.options.elasticsearchClientPromise; + const getResponse = await esClient.ml.getTrainedModels({ + model_id: elserId, + include: 'definition_status', + }); + return Boolean(getResponse.trained_model_configs[0]?.fully_defined); + } catch (error) { + if (!isModelAlreadyExistsError(error)) { + this.options.logger.error( + `Error checking if ELSER model '${elserId}' is installed:\n${error}` + ); + } + return false; + } + }; + + /** + * Checks if the inference endpoint is deployed and allocated in Elasticsearch + * + * @returns Promise indicating whether the model is deployed + */ + public isInferenceEndpointExists = async (): Promise => { + try { + const esClient = await this.options.elasticsearchClientPromise; + + const inferenceExists = !!(await esClient.inference.get({ + inference_id: ASSISTANT_ELSER_INFERENCE_ID, + task_type: 'sparse_embedding', + })); + if (!inferenceExists) { + return false; + } + const elserId = await this.options.getElserId(); + const getResponse = await esClient.ml.getTrainedModelsStats({ + model_id: elserId, + }); + + // For standardized way of checking deployment status see: https://github.com/elastic/elasticsearch/issues/106986 + const isReadyESS = (stats: MlTrainedModelStats) => + stats.deployment_stats?.state === 'started' && + stats.deployment_stats?.allocation_status.state === 'fully_allocated'; + + const isReadyServerless = (stats: MlTrainedModelStats) => + (stats.deployment_stats?.nodes as unknown as MlTrainedModelDeploymentNodesStats[])?.some( + (node) => node.routing_state.routing_state === 'started' + ); + + return getResponse.trained_model_stats?.some( + (stats) => isReadyESS(stats) || isReadyServerless(stats) + ); + } catch (error) { + this.options.logger.debug( + `Error checking if Inference endpoint ${ASSISTANT_ELSER_INFERENCE_ID} exists: ${error}` + ); + return false; + } + }; + + public createInferenceEndpoint = async () => { + const elserId = await this.options.getElserId(); + this.options.logger.debug(`Deploying ELSER model '${elserId}'...`); + const esClient = await this.options.elasticsearchClientPromise; + + try { + await esClient.inference.delete({ + inference_id: ASSISTANT_ELSER_INFERENCE_ID, + // it's being used in the mapping so we need to force delete + force: true, + }); + this.options.logger.debug(`Deleted existing inference endpoint for ELSER model '${elserId}'`); + } catch (error) { + this.options.logger.error( + `Error deleting inference endpoint for ELSER model '${elserId}':\n${error}` + ); + } + + try { + await esClient.inference.put({ + task_type: 'sparse_embedding', + inference_id: ASSISTANT_ELSER_INFERENCE_ID, + inference_config: { + service: 'elasticsearch', + service_settings: { + adaptive_allocations: { + enabled: true, + min_number_of_allocations: 0, + max_number_of_allocations: 8, + }, + num_threads: 1, + model_id: elserId, + }, + task_settings: {}, + }, + }); + + // await for the model to be deployed + await this.isInferenceEndpointExists(); + } catch (error) { + this.options.logger.error( + `Error creating inference endpoint for ELSER model '${elserId}':\n${error}` + ); + throw new Error(`Error creating inference endpoint for ELSER model '${elserId}':\n${error}`); + } + }; + + /** + * Downloads and deploys recommended ELSER (if not already), then loads ES|QL docs + * + * NOTE: Before automatically installing ELSER in the background, we should perform deployment resource checks + * Only necessary for ESS, as Serverless can always auto-install if `productTier === complete` + * See ml-team issue for providing 'dry run' flag to perform these checks: https://github.com/elastic/ml-team/issues/1208 + * + * @param options + * @param options.soClient SavedObjectsClientContract for installing ELSER so that ML SO's are in sync + * + * @returns Promise + */ + public setupKnowledgeBase = async ({ + soClient, + ignoreSecurityLabs = false, + }: { + soClient: SavedObjectsClientContract; + ignoreSecurityLabs?: boolean; + }): Promise => { + if (this.options.getIsKBSetupInProgress()) { + this.options.logger.debug('Knowledge Base setup already in progress'); + return; + } + + this.options.logger.debug('Starting Knowledge Base setup...'); + this.options.setIsKBSetupInProgress(true); + const elserId = await this.options.getElserId(); + + // Delete legacy ESQL knowledge base docs if they exist, and silence the error if they do not + try { + const esClient = await this.options.elasticsearchClientPromise; + const legacyESQL = await esClient.deleteByQuery({ + index: this.indexTemplateAndPattern.alias, + query: { + bool: { + must: [{ terms: { 'metadata.kbResource': ['esql', 'unknown'] } }], + }, + }, + }); + if (legacyESQL?.total != null && legacyESQL?.total > 0) { + this.options.logger.info( + `Removed ${legacyESQL?.total} ESQL knowledge base docs from knowledge base data stream: ${this.indexTemplateAndPattern.alias}.` + ); + } + // Delete any existing Security Labs content + const securityLabsDocs = await esClient.deleteByQuery({ + index: this.indexTemplateAndPattern.alias, + query: { + bool: { + must: [{ terms: { kb_resource: [SECURITY_LABS_RESOURCE] } }], + }, + }, + }); + if (securityLabsDocs?.total) { + this.options.logger.info( + `Removed ${securityLabsDocs?.total} Security Labs knowledge base docs from knowledge base data stream: ${this.indexTemplateAndPattern.alias}.` + ); + } + } catch (e) { + this.options.logger.info('No legacy ESQL or Security Labs knowledge base docs to delete'); + } + + try { + const isInstalled = await this.isModelInstalled(); + if (!isInstalled) { + await this.installModel({ soClient }); + await pRetry( + async () => + (await this.isModelInstalled()) + ? Promise.resolve() + : Promise.reject(new Error('Model not installed')), + { minTimeout: 10000, maxTimeout: 10000, retries: 10 } + ); + this.options.logger.debug(`ELSER model '${elserId}' successfully installed!`); + } else { + this.options.logger.debug(`ELSER model '${elserId}' is already installed`); + } + + const inferenceExists = await this.isInferenceEndpointExists(); + if (!inferenceExists) { + await this.createInferenceEndpoint(); + + this.options.logger.debug( + `Inference endpoint for ELSER model '${elserId}' successfully deployed!` + ); + } else { + this.options.logger.debug( + `Inference endpoint for ELSER model '${elserId}' is already deployed` + ); + } + + this.options.logger.debug(`Checking if Knowledge Base docs have been loaded...`); + + if (!ignoreSecurityLabs) { + const labsDocsLoaded = await this.isSecurityLabsDocsLoaded(); + if (!labsDocsLoaded) { + this.options.logger.debug(`Loading Security Labs KB docs...`); + await loadSecurityLabs(this, this.options.logger); + } else { + this.options.logger.debug(`Security Labs Knowledge Base docs already loaded!`); + } + } + } catch (e) { + this.options.setIsKBSetupInProgress(false); + this.options.logger.error(`Error setting up Knowledge Base: ${e.message}`); + throw new Error(`Error setting up Knowledge Base: ${e.message}`); + } finally { + this.options.setIsKBSetupInProgress(false); + } + }; + + // TODO make this function private + // no telemetry, no audit logs + /** + * Adds LangChain Documents to the knowledge base + * + * @param {Array>} documents - LangChain Documents to add to the knowledge base + * @param global whether these entries should be added globally, i.e. empty users[] + */ + public addKnowledgeBaseDocuments = async ({ + documents, + global = false, + }: { + documents: Array>; + global?: boolean; + }): Promise => { + const writer = await this.getWriter(); + const changedAt = new Date().toISOString(); + const authenticatedUser = this.options.currentUser; + if (authenticatedUser == null) { + throw new Error( + 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' + ); + } + + if (global && !this.options.manageGlobalKnowledgeBaseAIAssistant) { + throw new Error('User lacks privileges to create global knowledge base entries'); + } + + const { errors, docs_created: docsCreated } = await writer.bulk({ + documentsToCreate: documents.map((doc) => { + // v1 schema has metadata nested in a `metadata` object + return transformToCreateSchema({ + createdAt: changedAt, + spaceId: this.spaceId, + user: authenticatedUser, + entry: { + type: DocumentEntryType.value, + name: 'unknown', + text: doc.pageContent, + kbResource: doc.metadata.kbResource ?? 'unknown', + required: doc.metadata.required ?? false, + source: doc.metadata.source ?? 'unknown', + }, + global, + }); + }), + authenticatedUser, + }); + const created = + docsCreated.length > 0 + ? await this.findDocuments({ + page: 1, + perPage: 10000, + filter: docsCreated.map((c) => `_id:${c}`).join(' OR '), + }) + : undefined; + // Intentionally no telemetry here - this path only used to install security docs + // Plans to make this function private in a different PR so no user entry ever is created in this path + this.options.logger.debug(`created: ${created?.data.hits.hits.length ?? '0'}`); + this.options.logger.debug(() => `errors: ${JSON.stringify(errors, null, 2)}`); + + return created?.data ? transformESSearchToKnowledgeBaseEntry(created?.data) : []; + }; + + /** + * Returns if user's KB docs exists + */ + + public isUserDataExists = async (): Promise => { + const user = this.options.currentUser; + if (user == null) { + throw new Error( + 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' + ); + } + + const esClient = await this.options.elasticsearchClientPromise; + + try { + const vectorSearchQuery = getKBVectorSearchQuery({ + kbResource: USER_RESOURCE, + required: false, + user, + }); + + const result = await esClient.search({ + index: this.indexTemplateAndPattern.alias, + size: 0, + query: vectorSearchQuery, + track_total_hits: true, + }); + + return !!(result.hits?.total as SearchTotalHits).value; + } catch (e) { + this.options.logger.debug(`Error checking if user's KB docs exist: ${e.message}`); + return false; + } + }; + + /** + * Returns if allSecurity Labs KB docs have been loaded + */ + public isSecurityLabsDocsLoaded = async (): Promise => { + const user = this.options.currentUser; + if (user == null) { + throw new Error( + 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' + ); + } + + const expectedDocsCount = await getSecurityLabsDocsCount({ logger: this.options.logger }); + + const esClient = await this.options.elasticsearchClientPromise; + + try { + const vectorSearchQuery = getKBVectorSearchQuery({ + kbResource: SECURITY_LABS_RESOURCE, + required: false, + user, + }); + + const result = await esClient.search({ + index: this.indexTemplateAndPattern.alias, + size: 0, + query: vectorSearchQuery, + track_total_hits: true, + }); + + const existingDocs = (result.hits?.total as SearchTotalHits).value; + + if (existingDocs !== expectedDocsCount) { + this.options.logger.debug( + `Security Labs docs are not loaded, existing docs: ${existingDocs}, expected docs: ${expectedDocsCount}` + ); + } + return existingDocs === expectedDocsCount; + } catch (e) { + this.options.logger.info(`Error checking if Security Labs docs are loaded: ${e.message}`); + return false; + } + }; + + /** + * Performs similarity search to retrieve LangChain Documents from the knowledge base + */ + public getKnowledgeBaseDocumentEntries = async ({ + filter, + kbResource, + query, + required, + }: { + filter?: QueryDslQueryContainer; + kbResource?: string; + query: string; + required?: boolean; + }): Promise => { + const user = this.options.currentUser; + if (user == null) { + throw new Error( + 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' + ); + } + + const esClient = await this.options.elasticsearchClientPromise; + + const vectorSearchQuery = getKBVectorSearchQuery({ + filter, + kbResource, + query, + required, + user, + }); + + try { + const result = await esClient.search({ + index: this.indexTemplateAndPattern.alias, + size: 10, + query: vectorSearchQuery, + }); + + const results = result.hits.hits.map((hit) => { + const metadata = { + source: hit?._source?.source, + required: hit?._source?.required, + kbResource: hit?._source?.kb_resource, + }; + return new Document({ + pageContent: hit?._source?.text ?? '', + metadata, + }); + }); + + this.options.logger.debug( + () => + `getKnowledgeBaseDocuments() - Similarity Search Query:\n ${JSON.stringify( + vectorSearchQuery + )}` + ); + this.options.logger.debug( + () => + `getKnowledgeBaseDocuments() - Similarity Search returned [${JSON.stringify( + results.length + )}] results` + ); + + return results; + } catch (e) { + this.options.logger.error(`Error performing KB Similarity Search: ${e.message}`); + return []; + } + }; + + /** + * Returns all global and current user's private `required` document entries. + */ + public getRequiredKnowledgeBaseDocumentEntries = async (): Promise => { + const user = this.options.currentUser; + if (user == null) { + throw new Error( + 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' + ); + } + + try { + const userFilter = getKBUserFilter(user); + const results = await this.findDocuments({ + // Note: This is a magic number to set some upward bound as to not blow the context with too + // many historical KB entries. Ideally we'd query for all and token trim. + perPage: 100, + page: 1, + sortField: 'created_at', + sortOrder: 'asc', + filter: `${userFilter} AND type:document AND kb_resource:user AND required:true`, + }); + this.options.logger.debug( + `kbDataClient.getRequiredKnowledgeBaseDocumentEntries() - results:\n${JSON.stringify( + results + )}` + ); + + if (results) { + return transformESSearchToKnowledgeBaseEntry(results.data) as DocumentEntry[]; + } + } catch (e) { + this.options.logger.error( + `kbDataClient.getRequiredKnowledgeBaseDocumentEntries() - Failed to fetch DocumentEntries` + ); + return []; + } + + return []; + }; + + /** + * Creates a new Knowledge Base Entry. + * + * @param knowledgeBaseEntry + * @param global + */ + public createKnowledgeBaseEntry = async ({ + auditLogger, + knowledgeBaseEntry, + telemetry, + global = false, + }: { + auditLogger?: AuditLogger; + knowledgeBaseEntry: KnowledgeBaseEntryCreateProps; + global?: boolean; + telemetry: AnalyticsServiceSetup; + }): Promise => { + const authenticatedUser = this.options.currentUser; + + if (authenticatedUser == null) { + throw new Error( + 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' + ); + } + + if (global && !this.options.manageGlobalKnowledgeBaseAIAssistant) { + throw new Error('User lacks privileges to create global knowledge base entries'); + } + + this.options.logger.debug( + () => `Creating Knowledge Base Entry:\n ${JSON.stringify(knowledgeBaseEntry, null, 2)}` + ); + this.options.logger.debug(`kbIndex: ${this.indexTemplateAndPattern.alias}`); + const esClient = await this.options.elasticsearchClientPromise; + return createKnowledgeBaseEntry({ + auditLogger, + esClient, + knowledgeBaseIndex: this.indexTemplateAndPattern.alias, + logger: this.options.logger, + spaceId: this.spaceId, + user: authenticatedUser, + knowledgeBaseEntry, + global, + telemetry, + }); + }; + + /** + * Returns AssistantTools for any 'relevant' KB IndexEntries that exist in the knowledge base. + * + * Note: Accepts esClient so retrieval can be scoped to the current user as esClient on kbDataClient + * is scoped to system user. + */ + public getAssistantTools = async ({ + esClient, + }: { + esClient: ElasticsearchClient; + }): Promise => { + const user = this.options.currentUser; + if (user == null) { + throw new Error( + 'Authenticated user not found! Ensure kbDataClient was initialized from a request.' + ); + } + + try { + const elserId = ASSISTANT_ELSER_INFERENCE_ID; + const userFilter = getKBUserFilter(user); + const results = await this.findDocuments({ + // Note: This is a magic number to set some upward bound as to not blow the context with too + // many registered tools. As discussed in review, this will initially be mitigated by caps on + // the IndexEntries field lengths, context trimming at the graph layer (before compilation), + // and eventually some sort of tool discovery sub-graph or generic retriever to scale tool usage. + perPage: 23, + page: 1, + sortField: 'created_at', + sortOrder: 'asc', + filter: `${userFilter} AND type:index`, + }); + this.options.logger.debug( + `kbDataClient.getAssistantTools() - results:\n${JSON.stringify(results, null, 2)}` + ); + + if (results) { + const entries = transformESSearchToKnowledgeBaseEntry(results.data) as IndexEntry[]; + const indexPatternFetcher = new IndexPatternsFetcher(esClient); + const existingIndices = await indexPatternFetcher.getExistingIndices(map(entries, 'index')); + return ( + entries + // Filter out any IndexEntries that don't have an existing index + .filter((entry) => existingIndices.includes(entry.index)) + .map((indexEntry) => { + return getStructuredToolForIndexEntry({ + indexEntry, + esClient, + logger: this.options.logger, + elserId, + }); + }) + ); + } + } catch (e) { + this.options.logger.error(`kbDataClient.getAssistantTools() - Failed to fetch IndexEntries`); + return []; + } + + return []; + }; +} diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/ingest_pipeline.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/ingest_pipeline.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/ingest_pipeline.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/ingest_pipeline.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/transforms.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/knowledge_base/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/field_maps_configuration.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/field_maps_configuration.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/field_maps_configuration.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/field_maps_configuration.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_data_clients/prompts/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/create_resource_installation_helper.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_service/helpers.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/helpers.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_service/helpers.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/helpers.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_service/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_service/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/helpers.ts diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts new file mode 100644 index 0000000000000..32a1a30fec255 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/index.test.ts @@ -0,0 +1,786 @@ +/* + * 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 { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; +import { IndicesGetDataStreamResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { errors as EsErrors } from '@elastic/elasticsearch'; +import { ReplaySubject, Subject } from 'rxjs'; +import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; +import { DEFAULT_NAMESPACE_STRING } from '@kbn/core-saved-objects-utils-server'; +import { conversationsDataClientMock } from '../__mocks__/data_clients.mock'; +import { authenticatedUser } from '../__mocks__/user'; +import { AIAssistantConversationsDataClient } from '../ai_assistant_data_clients/conversations'; +import { AIAssistantService, AIAssistantServiceOpts } from '.'; +import { retryUntil } from './create_resource_installation_helper.test'; +import { mlPluginMock } from '@kbn/ml-plugin/public/mocks'; +import type { MlPluginSetup } from '@kbn/ml-plugin/server'; +import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; + +jest.mock('../ai_assistant_data_clients/conversations', () => ({ + AIAssistantConversationsDataClient: jest.fn(), +})); + +const licensing = Promise.resolve( + licensingMock.createRequestHandlerContext({ + license: { type: 'enterprise' }, + }) +); +let logger: ReturnType<(typeof loggingSystemMock)['createLogger']>; +const clusterClient = elasticsearchServiceMock.createClusterClient().asInternalUser; + +const SimulateTemplateResponse = { + template: { + aliases: { + alias_name_1: { + is_hidden: true, + }, + alias_name_2: { + is_hidden: true, + }, + }, + mappings: { enabled: false }, + settings: {}, + }, +}; + +const GetAliasResponse = { + '.kibana-elastic-ai-assistant-conversations-default-000001': { + aliases: { + alias_1: { + is_hidden: true, + }, + alias_2: { + is_hidden: true, + }, + }, + }, +}; + +const GetDataStreamResponse: IndicesGetDataStreamResponse = { + data_streams: [ + { + name: 'ignored', + generation: 1, + timestamp_field: { name: 'ignored' }, + hidden: true, + indices: [ + { + index_name: 'ignored', + index_uuid: 'ignored', + managed_by: 'Data stream lifecycle', + prefer_ilm: false, + }, + ], + status: 'green', + template: 'ignored', + next_generation_managed_by: 'Data stream lifecycle', + prefer_ilm: false, + rollover_on_write: false, + }, + ], +}; + +const getSpaceResourcesInitialized = async ( + assistantService: AIAssistantService, + namespace: string = DEFAULT_NAMESPACE_STRING +) => { + const { result } = await assistantService.getSpaceResourcesInitializationPromise(namespace); + return result; +}; + +const conversationsDataClient = conversationsDataClientMock.create(); + +const mockUser1 = authenticatedUser; + +describe('AI Assistant Service', () => { + let pluginStop$: Subject; + let assistantServiceOpts: AIAssistantServiceOpts; + let ml: MlPluginSetup; + + beforeEach(() => { + jest.resetAllMocks(); + logger = loggingSystemMock.createLogger(); + pluginStop$ = new ReplaySubject(1); + jest.spyOn(global.Math, 'random').mockReturnValue(0.01); + clusterClient.indices.simulateTemplate.mockImplementation(async () => SimulateTemplateResponse); + clusterClient.indices.simulateIndexTemplate.mockImplementation( + async () => SimulateTemplateResponse + ); + clusterClient.indices.getAlias.mockImplementation(async () => GetAliasResponse); + clusterClient.indices.getDataStream.mockImplementation(async () => GetDataStreamResponse); + ml = mlPluginMock.createSetupContract() as unknown as MlPluginSetup; // Missing SharedServices mock, so manually mocking trainedModelsProvider + ml.trainedModelsProvider = jest.fn().mockImplementation(() => ({ + getELSER: jest.fn().mockImplementation(() => '.elser_model_2'), + })); + assistantServiceOpts = { + logger, + elasticsearchClientPromise: Promise.resolve(clusterClient), + pluginStop$, + kibanaVersion: '8.8.0', + ml, + taskManager: taskManagerMock.createSetup(), + productDocManager: Promise.resolve({ + getStatus: jest.fn(), + install: jest.fn(), + update: jest.fn(), + uninstall: jest.fn(), + }), + }; + }); + + afterEach(() => { + pluginStop$.next(); + pluginStop$.complete(); + }); + + describe('AIAssistantService()', () => { + test('should correctly initialize common resources', async () => { + const assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => (await assistantService.isInitialized()) === true + ); + + expect(assistantService.isInitialized()).toEqual(true); + + expect(clusterClient.cluster.putComponentTemplate).toHaveBeenCalledTimes(6); + + const expectedTemplates = [ + '.kibana-elastic-ai-assistant-component-template-conversations', + '.kibana-elastic-ai-assistant-component-template-knowledge-base', + '.kibana-elastic-ai-assistant-component-template-prompts', + '.kibana-elastic-ai-assistant-component-template-anonymization-fields', + '.kibana-elastic-ai-assistant-component-template-attack-discovery', + '.kibana-elastic-ai-assistant-component-template-defend-insights', + ]; + expectedTemplates.forEach((t, i) => { + expect(clusterClient.cluster.putComponentTemplate.mock.calls[i][0].name).toEqual(t); + }); + }); + + test('should log error and set initialized to false if creating/updating common component template throws error', async () => { + clusterClient.cluster.putComponentTemplate.mockRejectedValueOnce(new Error('fail')); + const assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); + + expect(assistantService.isInitialized()).toEqual(false); + expect(logger.error).toHaveBeenCalledWith( + `Error installing component template .kibana-elastic-ai-assistant-component-template-conversations - fail` + ); + }); + }); + + describe('createAIAssistantConversationsDataClient()', () => { + let assistantService: AIAssistantService; + beforeEach(() => { + (AIAssistantConversationsDataClient as jest.Mock).mockImplementation( + () => conversationsDataClient + ); + (clusterClient.search as unknown as jest.Mock).mockResolvedValue({ + hits: { hits: [], total: { value: 0 } }, + }); + }); + + test('should create new AIAssistantConversationsDataClient', async () => { + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + await assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }); + + expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ + logger, + elasticsearchClientPromise: Promise.resolve(clusterClient), + spaceId: 'default', + indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', + currentUser: mockUser1, + kibanaVersion: '8.8.0', + }); + }); + + test('should retry initializing common resources if common resource initialization failed', async () => { + clusterClient.cluster.putComponentTemplate.mockRejectedValueOnce(new Error('fail')); + + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); + + expect(assistantService.isInitialized()).toEqual(false); + + expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); + expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); + expect(clusterClient.indices.create).not.toHaveBeenCalled(); + + const result = await assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }); + + expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).toHaveBeenCalled(); + + expect(clusterClient.indices.createDataStream).not.toHaveBeenCalled(); + expect(clusterClient.indices.getDataStream).toHaveBeenCalled(); + + expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ + logger, + elasticsearchClientPromise: Promise.resolve(clusterClient), + spaceId: 'default', + indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', + currentUser: mockUser1, + kibanaVersion: '8.8.0', + }); + + expect(result).not.toBe(null); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith( + `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` + ); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "default"`); + }); + + test('should not retry initializing common resources if common resource initialization is in progress', async () => { + // this is the initial call that fails + clusterClient.cluster.putComponentTemplate.mockRejectedValueOnce(new Error('fail')); + + // this is the retry call that we'll artificially inflate the duration of + clusterClient.cluster.putComponentTemplate.mockImplementationOnce(async () => { + await new Promise((r) => setTimeout(r, 1000)); + return { acknowledged: true }; + }); + + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); + + expect(assistantService.isInitialized()).toEqual(false); + + expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); + expect(clusterClient.indices.create).not.toHaveBeenCalled(); + + // call createAIAssistantConversationsDataClient at the same time which will trigger the retries + const result = await Promise.all([ + assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }), + assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }), + ]); + + expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).toHaveBeenCalled(); + + expect(clusterClient.indices.createDataStream).not.toHaveBeenCalled(); + expect(clusterClient.indices.getDataStream).toHaveBeenCalled(); + + expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ + elasticsearchClientPromise: Promise.resolve(clusterClient), + spaceId: 'default', + indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', + currentUser: mockUser1, + kibanaVersion: '8.8.0', + logger, + }); + + expect(result[0]).not.toBe(null); + expect(result[1]).not.toBe(null); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith( + `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` + ); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "default"`); + expect(logger.info).toHaveBeenCalledWith( + `Resource installation for "default" succeeded after retry` + ); + expect(logger.info).toHaveBeenCalledWith( + `Skipped retrying common resource initialization because it is already being retried.` + ); + }); + + test('should retry initializing space specific resources if space specific resource initialization failed', async () => { + clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => ({ + ...SimulateTemplateResponse, + template: { + ...SimulateTemplateResponse.template, + mappings: {}, + }, + })); + + clusterClient.indices.simulateIndexTemplate.mockImplementationOnce(async () => ({ + ...SimulateTemplateResponse, + template: { + ...SimulateTemplateResponse.template, + mappings: {}, + }, + })); + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + const result = await assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }); + + expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ + elasticsearchClientPromise: Promise.resolve(clusterClient), + spaceId: 'default', + indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', + currentUser: mockUser1, + kibanaVersion: '8.8.0', + logger, + }); + + expect(result).not.toBe(null); + + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "default"`); + expect(logger.info).toHaveBeenCalledWith( + `Resource installation for "default" succeeded after retry` + ); + }); + + test('should not retry initializing context specific resources if context specific resource initialization is in progress', async () => { + // this is the initial call that fails + clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => ({ + ...SimulateTemplateResponse, + template: { + ...SimulateTemplateResponse.template, + mappings: {}, + }, + })); + + clusterClient.indices.simulateIndexTemplate.mockImplementationOnce(async () => ({ + ...SimulateTemplateResponse, + template: { + ...SimulateTemplateResponse.template, + mappings: {}, + }, + })); + + // this is the retry call that we'll artificially inflate the duration of + clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => { + await new Promise((r) => setTimeout(r, 1000)); + return SimulateTemplateResponse; + }); + + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + const createAIAssistantDatastreamClientWithDelay = async (delayMs: number | null) => { + if (delayMs) { + await new Promise((r) => setTimeout(r, delayMs)); + } + + return assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }); + }; + + const result = await Promise.all([ + createAIAssistantDatastreamClientWithDelay(null), + createAIAssistantDatastreamClientWithDelay(1), + ]); + + expect(AIAssistantConversationsDataClient).toHaveBeenCalledTimes(2); + expect(AIAssistantConversationsDataClient).toHaveBeenCalledWith({ + elasticsearchClientPromise: Promise.resolve(clusterClient), + spaceId: 'default', + indexPatternsResourceName: '.kibana-elastic-ai-assistant-conversations', + currentUser: mockUser1, + kibanaVersion: '8.8.0', + logger, + }); + + expect(result[0]).not.toBe(null); + expect(result[1]).not.toBe(null); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + + // Should only log the retry once because the second call should + // leverage the outcome of the first retry + expect( + logger.info.mock.calls.filter( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (calls: any[]) => calls[0] === `Retrying resource initialization for "default"` + ).length + ).toEqual(1); + expect( + logger.info.mock.calls.filter( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (calls: any[]) => calls[0] === `Resource installation for "default" succeeded after retry` + ).length + ).toEqual(1); + }); + + test('should throttle retries of initializing context specific resources', async () => { + // this is the initial call that fails + clusterClient.indices.simulateTemplate.mockImplementation(async () => ({ + ...SimulateTemplateResponse, + template: { + ...SimulateTemplateResponse.template, + mappings: {}, + }, + })); + + clusterClient.indices.simulateIndexTemplate.mockImplementation(async () => ({ + ...SimulateTemplateResponse, + template: { + ...SimulateTemplateResponse.template, + mappings: {}, + }, + })); + + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + const createAIAssistantDatastreamClientWithDelay = async (delayMs: number | null) => { + if (delayMs) { + await new Promise((r) => setTimeout(r, delayMs)); + } + + return assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }); + }; + + await Promise.all([ + createAIAssistantDatastreamClientWithDelay(null), + createAIAssistantDatastreamClientWithDelay(1), + createAIAssistantDatastreamClientWithDelay(2), + ]); + + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + + // Should only log the retry once because the second and third retries should be throttled + expect( + logger.info.mock.calls.filter( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (calls: any[]) => calls[0] === `Retrying resource initialization for "default"` + ).length + ).toEqual(1); + }); + + test('should return null if retrying common resources initialization fails again', async () => { + let failCount = 0; + clusterClient.cluster.putComponentTemplate.mockImplementation(() => { + throw new Error(`fail ${++failCount}`); + }); + + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil('error log called', async () => logger.error.mock.calls.length > 0, 1); + + expect(assistantService.isInitialized()).toEqual(false); + + expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); + expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); + expect(clusterClient.indices.create).not.toHaveBeenCalled(); + + const result = await assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'test', + currentUser: mockUser1, + licensing, + }); + + expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); + expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); + expect(clusterClient.indices.create).not.toHaveBeenCalled(); + + expect(result).toBe(null); + expect(AIAssistantConversationsDataClient).not.toHaveBeenCalled(); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith( + `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` + ); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "test"`); + + expect(logger.warn).toHaveBeenCalledWith( + `Common resources were not initialized, cannot initialize resources for test` + ); + expect(logger.warn).toHaveBeenCalledWith( + `Common resources were not initialized, cannot initialize resources for test` + ); + expect(logger.warn).toHaveBeenCalledWith( + `There was an error in the framework installing spaceId-level resources and creating concrete indices for spaceId "test" - Retry failed with errors: Failure during installation of create or update .kibana-elastic-ai-assistant-component-template-conversations component template. fail 1` + ); + }); + + test('should return null if retrying common resources initialization fails again with same error', async () => { + clusterClient.cluster.putComponentTemplate.mockRejectedValue(new Error('fail')); + + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil('error log called', async () => logger.error.mock.calls.length > 0); + + expect(assistantService.isInitialized()).toEqual(false); + + // Installing component template failed so no calls to install context-specific resources + // should be made + expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); + expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); + expect(clusterClient.indices.create).not.toHaveBeenCalled(); + + const result = await assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'test', + currentUser: mockUser1, + licensing, + }); + + expect(clusterClient.indices.putIndexTemplate).not.toHaveBeenCalled(); + expect(clusterClient.indices.getAlias).not.toHaveBeenCalled(); + expect(clusterClient.indices.putSettings).not.toHaveBeenCalled(); + expect(clusterClient.indices.create).not.toHaveBeenCalled(); + + expect(result).toBe(null); + expect(AIAssistantConversationsDataClient).not.toHaveBeenCalled(); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith( + `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` + ); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith(`Retrying resource initialization for "test"`); + expect(logger.warn).toHaveBeenCalledWith( + `Common resources were not initialized, cannot initialize resources for test` + ); + expect(logger.warn).toHaveBeenCalledWith( + `Common resources were not initialized, cannot initialize resources for test` + ); + expect(logger.warn).toHaveBeenCalledWith( + `There was an error in the framework installing spaceId-level resources and creating concrete indices for spaceId "test" - Retry failed with errors: Failure during installation of create or update .kibana-elastic-ai-assistant-component-template-conversations component template. fail` + ); + }); + + test('should return null if retrying space specific initialization fails again', async () => { + clusterClient.indices.simulateTemplate.mockImplementationOnce(async () => ({ + ...SimulateTemplateResponse, + template: { + ...SimulateTemplateResponse.template, + mappings: {}, + }, + })); + clusterClient.indices.putIndexTemplate.mockRejectedValue(new Error('fail index template')); + + assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + const result = await assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'test', + currentUser: mockUser1, + licensing, + }); + + expect(AIAssistantConversationsDataClient).not.toHaveBeenCalled(); + expect(result).toBe(null); + expect(logger.info).toHaveBeenCalledWith(`Retrying common resource initialization`); + expect(logger.info).toHaveBeenCalledWith( + `Installing component template .kibana-elastic-ai-assistant-component-template-conversations` + ); + + expect(logger.warn).toHaveBeenCalledWith( + `Common resources were not initialized, cannot initialize resources for test` + ); + expect(logger.warn).toHaveBeenCalledWith( + `Common resources were not initialized, cannot initialize resources for test` + ); + expect(logger.warn).toHaveBeenCalledWith( + `There was an error in the framework installing spaceId-level resources and creating concrete indices for spaceId \"test\" - Retry failed with errors: Failure during installation of create or update .kibana-elastic-ai-assistant-index-template-conversations index template. No mappings would be generated for .kibana-elastic-ai-assistant-index-template-conversations, possibly due to failed/misconfigured bootstrapping` + ); + }); + }); + + describe('retries', () => { + test('should retry adding component template for transient ES errors', async () => { + clusterClient.cluster.putComponentTemplate + .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) + .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) + .mockResolvedValue({ acknowledged: true }); + const assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + expect(clusterClient.cluster.putComponentTemplate).toHaveBeenCalledTimes(8); + + const expectedTemplates = [ + '.kibana-elastic-ai-assistant-component-template-conversations', + '.kibana-elastic-ai-assistant-component-template-conversations', + '.kibana-elastic-ai-assistant-component-template-conversations', + '.kibana-elastic-ai-assistant-component-template-knowledge-base', + '.kibana-elastic-ai-assistant-component-template-prompts', + '.kibana-elastic-ai-assistant-component-template-anonymization-fields', + '.kibana-elastic-ai-assistant-component-template-attack-discovery', + '.kibana-elastic-ai-assistant-component-template-defend-insights', + ]; + expectedTemplates.forEach((t, i) => { + expect(clusterClient.cluster.putComponentTemplate.mock.calls[i][0].name).toEqual(t); + }); + }); + + test('should retry updating index template for transient ES errors', async () => { + clusterClient.indices.putIndexTemplate + .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) + .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) + .mockResolvedValue({ acknowledged: true }); + const assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + expect(assistantService.isInitialized()).toEqual(true); + + await retryUntil( + 'space resources initialized', + async () => (await getSpaceResourcesInitialized(assistantService)) === true + ); + + expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledTimes(8); + const expectedTemplates = [ + '.kibana-elastic-ai-assistant-index-template-conversations', + '.kibana-elastic-ai-assistant-index-template-conversations', + '.kibana-elastic-ai-assistant-index-template-conversations', + '.kibana-elastic-ai-assistant-index-template-knowledge-base', + '.kibana-elastic-ai-assistant-index-template-prompts', + '.kibana-elastic-ai-assistant-index-template-anonymization-fields', + '.kibana-elastic-ai-assistant-index-template-attack-discovery', + '.kibana-elastic-ai-assistant-index-template-defend-insights', + ]; + expectedTemplates.forEach((t, i) => { + expect(clusterClient.indices.putIndexTemplate.mock.calls[i][0].name).toEqual(t); + }); + }); + + test('should retry updating index settings for existing indices for transient ES errors', async () => { + clusterClient.indices.putSettings + .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) + .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) + .mockResolvedValue({ acknowledged: true }); + const assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + await retryUntil( + 'space resources initialized', + async () => (await getSpaceResourcesInitialized(assistantService)) === true + ); + + expect(clusterClient.indices.putSettings).toHaveBeenCalledTimes(8); + }); + + test('should retry updating index mappings for existing indices for transient ES errors', async () => { + clusterClient.indices.putMapping + .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) + .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) + .mockResolvedValue({ acknowledged: true }); + const assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + await retryUntil( + 'space resources initialized', + async () => (await getSpaceResourcesInitialized(assistantService)) === true + ); + + expect(clusterClient.indices.putMapping).toHaveBeenCalledTimes(8); + }); + + test('should retry creating concrete index for transient ES errors', async () => { + clusterClient.indices.getDataStream.mockImplementation(async () => ({ + data_streams: [], + })); + clusterClient.indices.createDataStream + .mockRejectedValueOnce(new EsErrors.ConnectionError('foo')) + .mockRejectedValueOnce(new EsErrors.TimeoutError('timeout')) + .mockResolvedValue({ acknowledged: true }); + (clusterClient.search as unknown as jest.Mock).mockResolvedValue({ + hits: { hits: [], total: { value: 0 } }, + }); + + const assistantService = new AIAssistantService(assistantServiceOpts); + + await retryUntil( + 'AI Assistant service initialized', + async () => assistantService.isInitialized() === true + ); + + await assistantService.createAIAssistantConversationsDataClient({ + logger, + spaceId: 'default', + currentUser: mockUser1, + licensing, + }); + + await retryUntil( + 'space resources initialized', + async () => (await getSpaceResourcesInitialized(assistantService)) === true + ); + + expect(clusterClient.indices.createDataStream).toHaveBeenCalledTimes(6); + }); + }); +}); diff --git a/x-pack/plugins/elastic_assistant/server/ai_assistant_service/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/ai_assistant_service/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/ai_assistant_service/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/README.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/README.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/README.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/README.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0001.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0001.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0001.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0001.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0002.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0002.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0002.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0002.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0003.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0003.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0003.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0003.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0004.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0004.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0004.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0004.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0005.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0005.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0005.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0005.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0006.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0006.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0006.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0006.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0007.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0007.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0007.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0007.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0008.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0008.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0008.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0008.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0009.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0009.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0009.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0009.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0010.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0010.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0010.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0010.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0011.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0011.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0011.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0011.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0012.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0012.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0012.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0012.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0013.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0013.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0013.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0013.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0014.asciidoc b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0014.asciidoc similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0014.asciidoc rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/esql/example_queries/esql_example_query_0014.asciidoc diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_announcement.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_announcement.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_announcement.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_announcement.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_helping_security_leaders_navigate_todays_threat_landscape.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_helping_security_leaders_navigate_todays_threat_landscape.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_helping_security_leaders_navigate_todays_threat_landscape.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/2022_elastic_global_threat_report_helping_security_leaders_navigate_todays_threat_landscape.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/500ms_to_midnight.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/500ms_to_midnight.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/500ms_to_midnight.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/500ms_to_midnight.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/a_peek_behind_the_bpfdoor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/a_peek_behind_the_bpfdoor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/a_peek_behind_the_bpfdoor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/a_peek_behind_the_bpfdoor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/accelerating_elastic_detection_tradecraft_with_llms.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/accelerating_elastic_detection_tradecraft_with_llms.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/accelerating_elastic_detection_tradecraft_with_llms.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/accelerating_elastic_detection_tradecraft_with_llms.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/advanced_techniques_used_in_malaysian_focused_apt_campaign.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/advanced_techniques_used_in_malaysian_focused_apt_campaign.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/advanced_techniques_used_in_malaysian_focused_apt_campaign.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/advanced_techniques_used_in_malaysian_focused_apt_campaign.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/an_elastic_approach_to_large_scale_dynamic_malware_analysis.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/an_elastic_approach_to_large_scale_dynamic_malware_analysis.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/an_elastic_approach_to_large_scale_dynamic_malware_analysis.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/an_elastic_approach_to_large_scale_dynamic_malware_analysis.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/analysis_of_log4shell_cve_2021_45046.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/analysis_of_log4shell_cve_2021_45046.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/analysis_of_log4shell_cve_2021_45046.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/analysis_of_log4shell_cve_2021_45046.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/attack_chain_leads_to_xworm_and_agenttesla.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/attack_chain_leads_to_xworm_and_agenttesla.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/attack_chain_leads_to_xworm_and_agenttesla.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/attack_chain_leads_to_xworm_and_agenttesla.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/automating_security_protections_rapid_response_to_malware.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/automating_security_protections_rapid_response_to_malware.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/automating_security_protections_rapid_response_to_malware.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/automating_security_protections_rapid_response_to_malware.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/behind_the_scenes_global_threat_report.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/behind_the_scenes_global_threat_report.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/behind_the_scenes_global_threat_report.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/behind_the_scenes_global_threat_report.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/betting_on_bots.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/betting_on_bots.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/betting_on_bots.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/betting_on_bots.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/beyond_the_wail.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/beyond_the_wail.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/beyond_the_wail.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/beyond_the_wail.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bits_and_bytes_analyzing_bitsloth.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bits_and_bytes_analyzing_bitsloth.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bits_and_bytes_analyzing_bitsloth.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bits_and_bytes_analyzing_bitsloth.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_configuration_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_configuration_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_configuration_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_configuration_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_loader.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_loader.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_loader.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/blister_loader.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_configuration_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_configuration_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_configuration_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_configuration_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_scanner.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_scanner.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_scanner.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bpfdoor_scanner.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bughatch_malware_analysis.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bughatch_malware_analysis.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/bughatch_malware_analysis.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/bughatch_malware_analysis.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/callout_example.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/callout_example.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/callout_example.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/callout_example.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/click_click_boom_automating_protections_testing_with_detonate.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/click_click_boom_automating_protections_testing_with_detonate.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/click_click_boom_automating_protections_testing_with_detonate.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/click_click_boom_automating_protections_testing_with_detonate.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cloud_monitoring_and_detection_with_elastic_security.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cloud_monitoring_and_detection_with_elastic_security.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cloud_monitoring_and_detection_with_elastic_security.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cloud_monitoring_and_detection_with_elastic_security.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cobalt_strike_beacon_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cobalt_strike_beacon_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cobalt_strike_beacon_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cobalt_strike_beacon_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_and_operationalizing_threat_data_from_the_mozi_botnet.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_and_operationalizing_threat_data_from_the_mozi_botnet.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_and_operationalizing_threat_data_from_the_mozi_botnet.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_and_operationalizing_threat_data_from_the_mozi_botnet.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_cobalt_strike_beacons_with_the_elastic_stack.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_cobalt_strike_beacons_with_the_elastic_stack.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_cobalt_strike_beacons_with_the_elastic_stack.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/collecting_cobalt_strike_beacons_with_the_elastic_stack.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_campaign_analysis.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_campaign_analysis.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_campaign_analysis.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_campaign_analysis.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_malware_analysis.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_malware_analysis.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_malware_analysis.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cuba_ransomware_malware_analysis.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cups_overflow.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cups_overflow.md similarity index 97% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cups_overflow.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cups_overflow.md index 2be741a88b697..aac67e6329fb8 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/cups_overflow.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/cups_overflow.md @@ -23,6 +23,15 @@ tags: - CVE-2024-47177 --- +## Update October 2, 2024 + +The following packages introduced out-of-the-box (OOTB) rules to detect the exploitation of these vulnerabilities. Please check your "Prebuilt Security Detection Rules" integration versions or visit the [Downloadable rule updates](https://www.elastic.co/guide/en/security/current/prebuilt-rules-downloadable-updates.html) site. + +- Stack Version 8.15 - Package Version 8.15.6+ +- Stack Version 8.14 - Package Version 8.14.12+ +- Stack Version 8.13 - Package Version 8.13.18+ +- Stack Version 8.12 - Package Version 8.12.23+ + ## Key takeaways * On September 26, 2024, security researcher Simone Margaritelli (@evilsocket) disclosed multiple vulnerabilities affecting the `cups-browsed`, `libscupsfilters`, and `libppd` components of the CUPS printing system, impacting versions \<= 2.0.1. @@ -232,4 +241,4 @@ We expect more to be revealed as the initial disclosure was labeled part 1. Ulti * [https://www.cve.org/CVERecord?id=CVE-2024-47176](https://www.cve.org/CVERecord?id=CVE-2024-47176) * [https://www.cve.org/CVERecord?id=CVE-2024-47177](https://www.cve.org/CVERecord?id=CVE-2024-47177) -*The release and timing of any features or functionality described in this post remain at Elastic's sole discretion. Any features or functionality not currently available may not be delivered on time or at all.* \ No newline at end of file +*The release and timing of any features or functionality described in this post remain at Elastic's sole discretion. Any features or functionality not currently available may not be delivered on time or at all.* diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dac_beta_release.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dac_beta_release.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dac_beta_release.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dac_beta_release.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dancing_the_night_away_with_named_pipes.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dancing_the_night_away_with_named_pipes.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dancing_the_night_away_with_named_pipes.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dancing_the_night_away_with_named_pipes.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/deep_dive_into_the_ttd_ecosystem.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/deep_dive_into_the_ttd_ecosystem.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/deep_dive_into_the_ttd_ecosystem.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/deep_dive_into_the_ttd_ecosystem.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_credential_access.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_credential_access.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_credential_access.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_credential_access.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_domain_generation_algorithm_activity_with_new_kibana_integration.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_domain_generation_algorithm_activity_with_new_kibana_integration.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_domain_generation_algorithm_activity_with_new_kibana_integration.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detect_domain_generation_algorithm_activity_with_new_kibana_integration.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_and_responding_to_dirty_pipe_with_elastic.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_and_responding_to_dirty_pipe_with_elastic.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_and_responding_to_dirty_pipe_with_elastic.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_and_responding_to_dirty_pipe_with_elastic.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_living_off_the_land_attacks_with_new_elastic_integration.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_living_off_the_land_attacks_with_new_elastic_integration.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_living_off_the_land_attacks_with_new_elastic_integration.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_living_off_the_land_attacks_with_new_elastic_integration.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_log4j2_with_elastic_security.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_log4j2_with_elastic_security.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_log4j2_with_elastic_security.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detecting_log4j2_with_elastic_security.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_and_response_for_the_actively_exploited_proxyshell_vulnerabilities.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_and_response_for_the_actively_exploited_proxyshell_vulnerabilities.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_and_response_for_the_actively_exploited_proxyshell_vulnerabilities.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_and_response_for_the_actively_exploited_proxyshell_vulnerabilities.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_rules_for_sigred_vulnerability.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_rules_for_sigred_vulnerability.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_rules_for_sigred_vulnerability.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/detection_rules_for_sigred_vulnerability.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dipping_into_danger.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dipping_into_danger.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dipping_into_danger.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dipping_into_danger.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/disclosing_the_bloodalchemy_backdoor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/disclosing_the_bloodalchemy_backdoor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/disclosing_the_bloodalchemy_backdoor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/disclosing_the_bloodalchemy_backdoor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dismantling_smart_app_control.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dismantling_smart_app_control.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dismantling_smart_app_control.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dismantling_smart_app_control.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_four.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_four.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_four.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_four.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_one.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_one.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_one.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_one.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_three.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_three.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_three.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_three.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_two.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_two.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_two.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dissecting_remcos_rat_part_two.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/doing_time_with_the_yipphb_dropper.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/doing_time_with_the_yipphb_dropper.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/doing_time_with_the_yipphb_dropper.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/doing_time_with_the_yipphb_dropper.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/doubling_down_etw_callstacks.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/doubling_down_etw_callstacks.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/doubling_down_etw_callstacks.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/doubling_down_etw_callstacks.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_code_of_conduct.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_code_of_conduct.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_code_of_conduct.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_code_of_conduct.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_strikes_using_a_new_variant_of_rustbucket.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_strikes_using_a_new_variant_of_rustbucket.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_strikes_using_a_new_variant_of_rustbucket.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/dprk_strikes_using_a_new_variant_of_rustbucket.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/effective_parenting_detecting_lrpc_based_parent_pid_spoofing.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/effective_parenting_detecting_lrpc_based_parent_pid_spoofing.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/effective_parenting_detecting_lrpc_based_parent_pid_spoofing.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/effective_parenting_detecting_lrpc_based_parent_pid_spoofing.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_advances_llm_security.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_advances_llm_security.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_advances_llm_security.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_advances_llm_security.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_catches_dprk_passing_out_kandykorn.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_catches_dprk_passing_out_kandykorn.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_catches_dprk_passing_out_kandykorn.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_catches_dprk_passing_out_kandykorn.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_charms_spectralviper.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_charms_spectralviper.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_charms_spectralviper.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_charms_spectralviper.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_protects_against_data_wiper_malware_targeting_ukraine_hermeticwiper.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_protects_against_data_wiper_malware_targeting_ukraine_hermeticwiper.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_protects_against_data_wiper_malware_targeting_ukraine_hermeticwiper.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_protects_against_data_wiper_malware_targeting_ukraine_hermeticwiper.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2023_global_threat_report_spring_edition.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2023_global_threat_report_spring_edition.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2023_global_threat_report_spring_edition.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2023_global_threat_report_spring_edition.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2024_gtr.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2024_gtr.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2024_gtr.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_publishes_2024_gtr.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_releases_debmm.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_releases_debmm.md similarity index 99% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_releases_debmm.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_releases_debmm.md index e0348caa59269..883b84f1eb441 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_releases_debmm.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_releases_debmm.md @@ -434,7 +434,7 @@ Covering non-commodity malware (APTs, zero-days, etc.) and emerging threats (new The expert tier focuses on advanced automation, seamless integration with other security tools, and continuous improvement through regular updates and external collaboration. While proactive threat hunting is essential for maintaining a solid security posture, it complements the ruleset management process by identifying new patterns and insights that can be incorporated into detection rules. Teams implement sophisticated automation for rule updates, ensuring continuous integration of advanced detections. At Elastic, our team is constantly refining our rulesets through daily triage, regular updates, and sharing [threat hunt queries](https://github.com/elastic/detection-rules/tree/main/hunting) in our public GitHub repository to help the community improve their detection capabilities. -![DEBMM - Tier 4](/assets/images/elastic-releases-debmm/image7.png "DEBMM - Tier 4") +![DEBMM - Tier 4](/assets/images/elastic-releases-debmm/image1.png "DEBMM - Tier 4") ##### Criteria @@ -480,11 +480,11 @@ Once you understand the DEBMM and its tiers, you can begin applying it to assess The following steps will guide you through the process: -**1. Audit Your Current Maturity Tier**: Evaluate your existing detection rulesets against the criteria outlined in the DEBMM. Identify your rulesets' strengths, weaknesses, and most significant risks to help determine your current maturity tier. For more details, see the [Example Questionnaire](#Example-Questionnaire). +**1. Audit Your Current Maturity Tier:** Evaluate your existing detection rulesets against the criteria outlined in the DEBMM. Identify your rulesets' strengths, weaknesses, and most significant risks to help determine your current maturity tier. For more details, see the [Example Questionnaire](#Example-Questionnaire). -**2. Understand the Scope of Effort: **Recognize the significant and sustained effort required to move from one tier to the next. As teams progress through the tiers, the complexity and depth of activities increase, requiring more resources, advanced skills, and comprehensive strategies. For example, transitioning from Tier 1 to Tier 2 involves systematic rule tuning and detailed gap analysis, while advancing to Tier 3 and Tier 4 requires robust external validation processes, proactive threat hunting, and sophisticated automation. +**2. Understand the Scope of Effort:** Recognize the significant and sustained effort required to move from one tier to the next. As teams progress through the tiers, the complexity and depth of activities increase, requiring more resources, advanced skills, and comprehensive strategies. For example, transitioning from Tier 1 to Tier 2 involves systematic rule tuning and detailed gap analysis, while advancing to Tier 3 and Tier 4 requires robust external validation processes, proactive threat hunting, and sophisticated automation. -**3. Set Goals for Progression: **Define specific goals for advancing to the next tier. Use the qualitative and quantitative measures to set clear objectives for each criterion. +**3. Set Goals for Progression:** Define specific goals for advancing to the next tier. Use the qualitative and quantitative measures to set clear objectives for each criterion. **4. Develop a Roadmap:** Create a detailed plan outlining the actions needed to achieve the goals. Include timelines, resources, and responsible team members. Ensure foundational practices from lower tiers are consistently applied as you progress while identifying opportunities for quick wins or significant impact by first addressing the most critical and riskiest areas for improvement. diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_response_to_the_the_spring4shell_vulnerability_cve_2022_22965.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_response_to_the_the_spring4shell_vulnerability_cve_2022_22965.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_response_to_the_the_spring4shell_vulnerability_cve_2022_22965.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_response_to_the_the_spring4shell_vulnerability_cve_2022_22965.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_discovers_lobshot_malware.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_discovers_lobshot_malware.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_discovers_lobshot_malware.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_discovers_lobshot_malware.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_releases_llm_safety_report.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_releases_llm_safety_report.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_releases_llm_safety_report.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_releases_llm_safety_report.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_steps_through_the_r77_rootkit.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_steps_through_the_r77_rootkit.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_steps_through_the_r77_rootkit.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_labs_steps_through_the_r77_rootkit.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_opens_public_detection_rules_repo.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_opens_public_detection_rules_repo.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_opens_public_detection_rules_repo.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_opens_public_detection_rules_repo.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_research_roundup.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_research_roundup.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_research_roundup.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_research_roundup.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_uncovers_blister_malware_campaign.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_uncovers_blister_malware_campaign.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_uncovers_blister_malware_campaign.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_security_uncovers_blister_malware_campaign.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_users_protected_from_suddenicon_supply_chain_attack.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_users_protected_from_suddenicon_supply_chain_attack.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_users_protected_from_suddenicon_supply_chain_attack.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastic_users_protected_from_suddenicon_supply_chain_attack.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastics_2022_global_threat_report_a_roadmap_for_navigating_todays_growing_threatscape.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastics_2022_global_threat_report_a_roadmap_for_navigating_todays_growing_threatscape.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/elastics_2022_global_threat_report_a_roadmap_for_navigating_todays_growing_threatscape.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elastics_2022_global_threat_report_a_roadmap_for_navigating_todays_growing_threatscape.md diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elevate_your_threat_hunting.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elevate_your_threat_hunting.md new file mode 100644 index 0000000000000..dcf4e4839bbf9 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/elevate_your_threat_hunting.md @@ -0,0 +1,226 @@ +--- +title: "Elevate Your Threat Hunting with Elastic" +slug: "elevate-your-threat-hunting" +date: "2024-10-18" +description: "Elastic is releasing a threat hunting package designed to aid defenders with proactive detection queries to identify actor-agnostic intrusions." +author: + - slug: terrance-dejesus + - slug: mika-ayenson + - slug: samir-bousseaden + - slug: justin-ibarra +image: "elevate-your-threat-hunting.jpg" +category: + - slug: security-operations +tags: + - threat hunting +--- + +We are excited to announce a new resource in the Elastic [Detection Rules](https://github.com/elastic/detection-rules) repository: a collection of hunting queries powered by various Elastic query languages! + +These hunting queries can be found under the [Hunting](https://github.com/elastic/detection-rules/tree/main/hunting) package. This initiative is designed to empower our community with specialized threat hunting queries and resources across multiple platforms, complementing our robust SIEM and EDR ruleset. These are developed to be consistent with the paradigms and methodologies we discuss in the Elastic [Threat Hunting guide](https://www.elastic.co/security/threat-hunting). + +## Why Threat Hunting? + +Threat hunting is a proactive approach to security that involves searching for hidden threats that evade conventional detection solutions while assuming breach. At Elastic, we recognize the importance of threat hunting in strengthening security defenses and are committed to facilitating this critical activity. + +While we commit a substantial amount of time and effort towards building out resilient detections, we understand that alerting on malicious behavior is only one part of an effective overall strategy. Threat hunting moves the needle to the left, allowing for a more proactive approach to understanding and securing the environment. + +The idea is that the rules and hunt queries will supplement each other in many ways. Most hunts also serve as great pivot points once an alert has triggered, as a powerful means to ascertain related details and paint a full picture. They are just as useful when it comes to triaging as proactively hunting. + +Additionally, we often find ourselves writing resilient and robust logic that just doesn’t meet the criteria for a rule, whether it is too noisy or not specific enough. This will serve as an additional means to preserve the value of these research outcomes in the form of these queries. + +## What We Are Providing + +The new Hunting package provides a diverse range of hunting queries targeting all the same environments as our rules do, and potentially even more, including: + +* Endpoints (Windows, Linux, macOS) +* Cloud (CSPs, SaaS providers, etc.) +* Network +* Large Language Models (LLM) +* Any other Elastic [integration](https://www.elastic.co/integrations) or datasource that adds value + +These queries are crafted by our security experts to help you gather initial data that is required to test your hypothesis during your hunts. These queries also include names and descriptions that may be a starting point for your hunting efforts as well. All of this valuable information is then stored in an index file (both YAML and Markdown) for management, ease-of-use and centralizing our collection of hunting queries. + +### Hunting Package + +The Hunting package has also been made to be its own module within Detection Rules with a few simple commands for easy management and searching throughout the catalogue of hunting queries. Our goal is not to provide an out-of-the-box hunting tool, but rather a foundation for programmatically managing and eventually leveraging these hunting queries. + +Existing Commands: + +**Generate Markdown** - Load TOML files or path of choice and convert to Markdown representation in respective locations. +![](/assets/images/elevate-your-threat-hunting/image6.png "") + +**Refresh Index** - Refresh indexes from the collection of queries, both YAML and Markdown. +![](/assets/images/elevate-your-threat-hunting/image4.png "") + +**Search** - Search for hunting queries based on MITRE tactic, technique or subtechnique IDs. Also includes the ability to search per data source. +![](/assets/images/elevate-your-threat-hunting/image5.png "") + +**Run Query** - Run query of choice against a particular stack to identify hits (requires pre-auth). Generates a search link for easy pivot. +![](/assets/images/elevate-your-threat-hunting/image8.png "") + +**View Hunt**- View a hunting file in TOML or JSON format. +![](/assets/images/elevate-your-threat-hunting/image7.png "") + +**Hunt Summary**- Generate count statistics based on breakdown of integration, platform, or language +![](/assets/images/elevate-your-threat-hunting/image2.png "") + +## Benefits of these Hunt Queries + +Each hunting query will be saved in its respective TOML file for programmatic use, but also have a replicated markdown file that serves as a quick reference for manual tasks or review. We understand that while automation is crucial to hunting maturity, often hunters may want a quick and easy copy-paste job to reveal events of interest. Our collection of hunt queries and CLI options offers several advantages to both novice and experienced threat hunters. Each query in the library is designed to serve as a powerful tool for detecting hidden threats, as well as offering additional layers of investigation during incident response. + +* Programmatic and Manual Flexibility: Each query is structured in a standardized TOML format for programmatic use, but also offers a Markdown version for those who prefer manual interaction. +* Scalable queries: Our hunt queries are designed with scalability in mind, leveraging the power of Elastic’s versatile and latest query languages such as ES|QL. This scalability ensures that you can continuously adapt your hunting efforts as your organization’s infrastructure grows, maintaining high levels of visibility and security. +* Integration with Elastic’s Product: These queries integrate with the Elastic Stack and our automation enables you to test quickly, enabling you to pivot through Elastic’s Security UI for deeper analysis. +* Diverse Query Types Available: Out hunt queries support a wide variety of query languages, including KQL, EQL, ES|QL, OsQuery, and YARA, making them adaptable across different data sources and environments. Whether hunting across endpoints, cloud environments, or specific integrations like Okta or LLMs, users can leverage the right language for their unique needs. +* Extended Coverage for Elastic Prebuilt Rules: While Elastic’s prebuilt detection rules offer robust coverage, there are always scenarios where vendor detection logic may not fully meet operational needs due to the specific environment or nature of the threat. These hunting queries help to fill in those gaps by offering broader and more nuanced coveraged, particularly for behaviors that don’t nearly fit into rule-based detections. +* Stepping stone for hunt initialization or pivoting: These queries serve as an initial approach to kickstart investigations or pivot from initial findings. Whether used proactively to identify potential threats or reactively to expand upon triggered alerts, these queries can provide additional context and insights based on threat hunter hypothesis and workflows. +* MITRE ATT&CK Alignment: Every hunt query includes MITRE ATT&CK mappings to provide contextual insight and help prioritize the investigation of threats according to threat behaviors. +* Community and Maintenance: This hunting module lives within the broader Elastic Detection Rules repository, ensuring continual updates alongside our prebuilt rules. Community contributions also enable our users to collaborate and expand unique ways to hunt. + +As we understand the fast-paced nature of hunting and need for automation, we have included searching capabilities and a run option to quickly identify if you have matching results from any hunting queries in this library. + +## Details of Each Hunting Analytic + +Each hunting search query in our repository includes the following details to maximize its effectiveness and ease of use: + +* **Data Source or Integration**: The origin of the data utilized in the hunt. +* **Name**: A descriptive title for the hunting query. +* **Hypothesis**: The underlying assumption or threat scenario the hunt aims to investigate. This is representated as the description. +* **Query(s)**: Provided in one of several formats, including ES|QL, EQL, KQL, or OsQuery. +* **Notes**: Additional information on how to pivot within the data, key indicators to watch for, and other valuable insights. +* **References**: Links to relevant resources and documentation that support the hunt. +* **Mapping to MITRE ATT&CK**: How the hunt correlates to known tactics, techniques, and procedures in the MITRE ATT&CK framework. + +![](/assets/images/elevate-your-threat-hunting/image9.png "") + +For those who prefer a more hands-on approach, we also provide TOML files for programmatic consumption. Additionally, we offer an easy converter to Markdown for users who prefer to manually copy and paste the hunts into their systems. + +### Hunting Query Creation Example: + +In the following example, we will explore a basic hunting cycle for the purpose of creating a new hunting query that we want to use in later hunting cycles. Note that this is an oversimplified hunting cycle that may require several more steps in a real-world application. + +**Hypothesis**: We assume that a threat adversary (TA) is targeting identity providers (IdPs), specifically Okta, by compromising cloud accounts by identifying runtime instances in CI/CD pipelines that use client credentials for authentication with Okta’s API. Their goal is to identify unsecure credentials, take these and obtain an access token whose assumed credentials are tied to an Okta administrator. + +**Evidence**: We suspect that in order to identify evidence of this, we need Okta system logs that report API activity, specifically any public client app sending access token requests where the grant type provided are client credentials. We also suspect that because the TA is unaware of the mapped OAuth scopes for this application, that when the access token request is sent, it may fail due to the incorrect OAuth scopes being explicitly sent. We also know that demonstrating proof-of-possession (DPoP) is not required for our client applications during authentication workflow because doing so would be disruptive to operations so we prioritize operability over security. + +Below is the python code used to emulate the behavior of attempting to get an access token with stolen client credentials where the scope is `okta.trustedOrigins.manage` so the actor can add a new cross-origins (CORS) policy and route client authentication through their own server. + +``` +import requests + +okta_domain = "TARGET_DOMAIN" +client_id = "STOLEN_CLIENT_ID" +client_secret = "STOLEN_CLIENT_CREDENTIALS" + +# Prepare the request +auth_url = f"{okta_domain}/oauth2/default/v1/token" +auth_data = { + "grant_type": "client_credentials", + "scope": "okta.trustedOrigins.manage" +} +auth_headers = { + "Accept": "application/json", + "Content-Type": "application/x-www-form-urlencoded", + "Authorization": f"Basic {client_id}:{client_secret}" +} +# Make the request +response = requests.post(auth_url, headers=auth_headers, data=auth_data) + +# Handle the response +if response.ok: + token = response.json().get("access_token") + print(f"Token: {token}") +else: + print(f"Error: {response.text}") +``` + +Following this behavior, we formulate a query as such for hunting where we filter out some known client applications like DataDog and Elastic’s Okta integrations. + +``` +from logs-okta.system* +| where @timestamp > NOW() - 7 day +| where + event.dataset == "okta.system" + + // filter on failed access token grant requests where source is a public client app + and event.action == "app.oauth2.as.token.grant" + and okta.actor.type == "PublicClientApp" + and okta.outcome.result == "FAILURE" + + // filter out known Elastic and Datadog actors + and not ( + okta.actor.display_name LIKE "Elastic%" + or okta.actor.display_name LIKE "Datadog%" + ) + + // filter for scopes that are not implicitly granted + and okta.outcome.reason == "no_matching_scope" +``` + +As shown below, we identify matching results and begin to pivot and dive deeper into this investigation, eventually involving incident response (IR) and escalating appropriately. + +![](/assets/images/elevate-your-threat-hunting/image10.png "") + +During our after actions report (AAR), we take note of the query that helped identify these compromised credentials and decide to preserve this as a hunting query in our forked Detection Rules repository. It doesn’t quite make sense to create a detection rule based on the fidelity of this and knowing the constant development work we do with custom applications that interact with the Okta APIs, therefore we reserve it as a hunting query. + +Creating a new hunting query TOML file in the `hunting/okta/queries` package, we add the following information: + +``` +author = "EvilC0rp Defenders" +description = """Long Description of Hunt Intentions""" +integration = ["okta"] +uuid = "0b936024-71d9-11ef-a9be-f661ea17fbcc" +name = "Failed OAuth Access Token Retrieval via Public Client App" +language = ["ES|QL"] +license = "Apache License 2.0" +notes = [Array of useful notes from our investigation] +mitre = ['T1550.001'] +query = [Our query as shown above] +``` + +With the file saved we run `python -m hunting generate-markdown FILEPATH` to generate the markdown version of it in `hunting/okta/docs/`. + +![](/assets/images/elevate-your-threat-hunting/image1.png "") + +Once saved, we can view our new hunting content by using the `view-rule` command or search for it by running the `search` command, specifying Okta as the data source and [T1550.001](https://attack.mitre.org/techniques/T1550/001/) as the subtechnique we are looking for. + +![](/assets/images/elevate-your-threat-hunting/image7.png "") + +![](/assets/images/elevate-your-threat-hunting/image5.png "") + +Last but not least, we can check that the query runs successfully by using the `run-query` command as long as we save a `.detection-rules-cfg-yaml` file with our Elasticsearch authentication details, which will tell us if we have matching results or not. + +![](/assets/images/elevate-your-threat-hunting/image8.png "") + +Now we can refresh our hunting indexes with the `refresh-index` command and ensure that our markdown file has been created. + +![](/assets/images/elevate-your-threat-hunting/image11.png "") + +## How We Plan to Expand + +Our aim is to continually enhance the Hunting package with additional queries, covering an even wider array of threat scenarios. We will update this resource based on: + +* **Emerging Threats**: Developing new queries as new types of cyber threats arise. +* **Community Feedbac**k: Incorporating suggestions and improvements proposed by our community. +* **Fill Gaps Where Traditional alerting Fails**: While we understand the power of our advanced SIEM and EDR, we also understand how some situations favor hunting instead. +* **Longevity and Maintenance**: Our hunting package lives within the very same repository we actively manage our out-of-the-box (OOTB) prebuilt detection rules for the Elastic SIEM. As a result, we plan to routinely add and update our hunting resources. +* **New Features**: Develop new features and commands to aid users with the repository of their hunting efforts. + +Our expansion would not be complete without sharing to the rest of the community in an effort to provide value wherever possible. The adoption of these resources or even paradigms surrounding threat scenarios is an important effort by our team to help hunting efforts. + +Lastly, we acknowledge and applaud the existing hunting efforts done or in-progress by our industry peers and community. We also acknowledge that maintaining such a package of hunting analytics and/or queries requires consistency and careful planning. Thus this package will receive continued support and additional hunting queries added over time, often aligning with our detection research efforts or community submissions! + +## Get Involved + +Explore the Hunting resources, utilize the queries and python package, participate in our community discussion forums to share your experiences and contribute to the evolution of this resource. Your feedback is crucial for us to refine and expand our offerings. + +* [Detection Rules Community Slack Channel](https://elasticstack.slack.com/archives/C016E72DWDS) +* Hunting “[Getting Started](https://github.com/elastic/detection-rules/tree/main/hunting)” Doc +* [Elastic Security Labs](https://twitter.com/elasticseclabs) on X + +## Conclusion + +With the expansion of these hunting resources, Elastic reaffirms its commitment to advancing cybersecurity defenses. This resource is designed for both experienced threat hunters and those new to the field, providing the tools needed to detect and mitigate sophisticated cyber threats effectively. + +Stay tuned for more updates, and happy hunting! \ No newline at end of file diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/embedding_security_in_llm_workflows.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/embedding_security_in_llm_workflows.md similarity index 96% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/embedding_security_in_llm_workflows.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/embedding_security_in_llm_workflows.md index f211ccf4f21ae..2a5c78a686f81 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/embedding_security_in_llm_workflows.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/embedding_security_in_llm_workflows.md @@ -22,16 +22,16 @@ We recently concluded one of our quarterly Elastic OnWeek events, which provides Elastic provides the ability to audit LLM applications for malicious behaviors; we’ll show you one approach with just four steps: - 1. Intercepting and analyzing the LLM requests and responses + 1. Intercepting and analyzing the LLM requests and responses 2. Enriching data with LLM-specific analysis results 3. Sending data to Elastic Security - 4. Writing ES|QL detection rules that can later be used to respond + 4. Writing ES|QL detection rules that can later be used to respond -This approach reflects our ongoing efforts to explore and implement advanced detection strategies, including developing detection rules tailored specifically for LLMs, while keeping pace with emerging generative AI technologies and security challenges. Building on this foundation, last year marked a significant enhancement to our toolkit and overall capability to continue this proactive path forward. +This approach reflects our ongoing efforts to explore and implement advanced detection strategies, including developing detection rules tailored specifically for LLMs, while keeping pace with emerging generative AI technologies and security challenges. Building on this foundation, last year marked a significant enhancement to our toolkit and overall capability to continue this proactive path forward. Elastic [released](https://www.elastic.co/blog/introducing-elastic-ai-assistant) the AI Assistant for Security, introducing how the open generative AI sidekick is powered by the [Search AI Platform](https://www.elastic.co/platform) — a collection of relevant tools for developing advanced search applications. Backed by machine learning (ML) and artificial intelligence (AI), this AI Assistant provides powerful pre-built workflows like alert summarization, workflow suggestions, query conversions, and agent integration advice. I highly recommend you read more on Elastic’s [AI Assistant](https://www.elastic.co/elasticsearch/ai-assistant) about how the capabilities seamlessly span across Observability and Security. -We can use the AI Assistant’s capabilities as a third-party LLM application to capture, audit, and analyze requests and responses for convenience and to run experiments. Once data is in an index, writing behavioral detections on it becomes business as usual — we can also leverage the entire security detection engine. Even though we’re proxying the Elastic AI Assistant LLM activity in this experiment, it’s merely used as a vehicle to demonstrate auditing LLM-based applications. Furthermore, this proxy approach is intended for third-party applications to ship data to [Elastic Security](https://www.elastic.co/guide/en/security/current/es-overview.html). +We can use the AI Assistant’s capabilities as a third-party LLM application to capture, audit, and analyze requests and responses for convenience and to run experiments. Once data is in an index, writing behavioral detections on it becomes business as usual — we can also leverage the entire security detection engine. Even though we’re proxying the Elastic AI Assistant LLM activity in this experiment, it’s merely used as a vehicle to demonstrate auditing LLM-based applications. Furthermore, this proxy approach is intended for third-party applications to ship data to [Elastic Security](https://www.elastic.co/guide/en/security/current/es-overview.html). We can introduce security mechanisms into the application's lifecycle by intercepting LLM activity or leveraging observable LLM metrics. It’s common practice to address prompt-based threats by [implementing various safety tactics](https://platform.openai.com/docs/guides/safety-best-practices): @@ -46,18 +46,18 @@ We can introduce security mechanisms into the application's lifecycle by interce 9. **HITL Feedback for Model Training**: Learn from human-in-the-loop, flagged issues to refine the model over time 10. **Restrict API Access**: Limit model access based on specific needs and user verification -Two powerful features provided by OpenAI, and many other LLM implementers, is the ability to [submit end-user IDs](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids) and check content against a [moderation API](https://platform.openai.com/docs/guides/moderation), features that set the bar for LLM safety. Sending hashed IDs along with the original request aids in abuse detection and provides targeted feedback, allowing unique user identification without sending personal information. Alternatively, OpenAI's moderation endpoint helps developers identify potentially harmful content like hate speech, self-harm encouragement, or violence, allowing them to filter such content. It even goes a step further by detecting threats and intent to self-harm. +Two powerful features provided by OpenAI, and many other LLM implementers, is the ability to [submit end-user IDs](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids) and check content against a [moderation API](https://platform.openai.com/docs/guides/moderation), features that set the bar for LLM safety. Sending hashed IDs along with the original request aids in abuse detection and provides targeted feedback, allowing unique user identification without sending personal information. Alternatively, OpenAI's moderation endpoint helps developers identify potentially harmful content like hate speech, self-harm encouragement, or violence, allowing them to filter such content. It even goes a step further by detecting threats and intent to self-harm. -Despite all of the recommendations and best practices to protect against malicious prompts, we recognize that there is no single perfect solution. When using capabilities like OpenAI’s API, some of these threats may be detected by the content filter, which will respond with a usage policy violation notification: +Despite all of the recommendations and best practices to protect against malicious prompts, we recognize that there is no single perfect solution. When using capabilities like OpenAI’s API, some of these threats may be detected by the content filter, which will respond with a usage policy violation notification: ![Violation notification from OpenAI](/assets/images/embedding-security-in-llm-workflows/image5.png) -This content filtering is beneficial to address many issues; however, it cannot identify further threats in the broader context of the environment, application ecosystem, or other alerts that may appear. The more we can integrate generative AI use cases into our existing protection capabilities, the more control and possibilities we have to address potential threats. Furthermore, even if LLM safeguards are in place to stop rudimentary attacks, we can still use the detection engine to alert and take future remediation actions instead of silently blocking or permitting abuse. +This content filtering is beneficial to address many issues; however, it cannot identify further threats in the broader context of the environment, application ecosystem, or other alerts that may appear. The more we can integrate generative AI use cases into our existing protection capabilities, the more control and possibilities we have to address potential threats. Furthermore, even if LLM safeguards are in place to stop rudimentary attacks, we can still use the detection engine to alert and take future remediation actions instead of silently blocking or permitting abuse. ## Proxying LLM Requests and Setup -The optimal security solution integrates additional safeguards directly within the LLM application's ecosystem. This allows enriching alerts with the complete context surrounding requests and responses. As requests are sent to the LLM, we can intercept and analyze them for potential malicious activity. If necessary, a response action can be triggered to defer subsequent HTTP calls. Similarly, inspecting the LLM's response can uncover further signs of malicious behavior. +The optimal security solution integrates additional safeguards directly within the LLM application's ecosystem. This allows enriching alerts with the complete context surrounding requests and responses. As requests are sent to the LLM, we can intercept and analyze them for potential malicious activity. If necessary, a response action can be triggered to defer subsequent HTTP calls. Similarly, inspecting the LLM's response can uncover further signs of malicious behavior. Using a proxy to handle these interactions offers several advantages: @@ -123,7 +123,7 @@ def azure_openai_proxy(): }) ``` -With the Flask server, you can configure the [OpenAI Kibana Connector](https://www.elastic.co/guide/en/kibana/current/openai-action-type.html) to use your proxy. +With the Flask server, you can configure the [OpenAI Kibana Connector](https://www.elastic.co/guide/en/kibana/current/openai-action-type.html) to use your proxy. ![](/assets/images/embedding-security-in-llm-workflows/image10.png) @@ -148,7 +148,7 @@ The LangSmith Proxy is designed to simplify LLM API interaction. It's a sidecar **It’s important to understand that even though documented lists of protections do not accompany some LLMs, simply trying some of these prompts may be immediately denied or result in banning on whatever platform used to submit the prompt. We recommend experimenting with caution and understand the SLA prior to sending any malicious prompts. Since this exploration leverages OpenAI’s resources, we recommend following the bugcrowd [guidance](https://bugcrowd.com/openai) and sign up for an additional testing account using your @bugcrowdninja.com email address.** -Here is a list of several plausible examples to illustrate detection opportunities. Each LLM topic includes the OWASP description, an example prompt, a sample document, the detection opportunity, and potential actions users could take if integrating additional security mechanisms in their workflow. +Here is a list of several plausible examples to illustrate detection opportunities. Each LLM topic includes the OWASP description, an example prompt, a sample document, the detection opportunity, and potential actions users could take if integrating additional security mechanisms in their workflow. While this list is currently not extensive, Elastic Security Labs is currently undertaking a number of initiatives to ensure future development, and formalization of rules will continue. @@ -175,7 +175,7 @@ FROM azure-openai-logs | OR response.choices LIKE "*I'm sorry, but I can't assist*" ``` -A slightly more advanced query detects more than two similar attempts within the last day. +A slightly more advanced query detects more than two similar attempts within the last day. ``` sql FROM azure-openai-logs @@ -197,7 +197,7 @@ FROM azure-openai-logs **Sample Response**: ![](/assets/images/embedding-security-in-llm-workflows/image17.png) -With the additional analysis from OpenAI’s filtering, we can immediately detect the first occurrence of abuse. +With the additional analysis from OpenAI’s filtering, we can immediately detect the first occurrence of abuse. **Detection Rule Opportunity**: ``` sql @@ -241,7 +241,7 @@ This query detects suspicious behavior related to Molotov Cocktails across multi - **Session-Level Analysis**: By grouping events by connectorId, it analyzes the complete sequence of attempts within a session. It then calculates the total number of attempts (```attempts = count(*)```) and the highest sensitivity score (```max_sensitivity = max(analysis.llm_guard_response_scores.Sensitive)```) across all attempts in that session - **Flagging High-Risk Sessions**: It filters sessions with at least one attempt (```attempts >= 1```) and a maximum sensitivity score exceeding 0.5 (```max_sensitivity > 0.5```). This threshold helps focus on sessions where users persistently discussed or revealed potentially risky content. -By analyzing these factors across multiple events within a session, we can start building an approach to detect a pattern of escalating discussions, even if individual events might not be flagged alone. +By analyzing these factors across multiple events within a session, we can start building an approach to detect a pattern of escalating discussions, even if individual events might not be flagged alone. ### LLM02 - insecure output handling @@ -280,13 +280,13 @@ FROM azure-openai-logs | WHERE total_attempts >= 2 ``` -This pseudo query detects potential insecure output handling by identifying LLM responses containing scripting elements or cookie access attempts, which are common in Cross-Site Scripting (XSS) attacks. It is a shell that could be extended by allow or block lists for well-known keywords. +This pseudo query detects potential insecure output handling by identifying LLM responses containing scripting elements or cookie access attempts, which are common in Cross-Site Scripting (XSS) attacks. It is a shell that could be extended by allow or block lists for well-known keywords. ### LLM04 - model DoS **OWASP Description**: Overloading LLMs with resource-heavy operations can cause service disruptions and increased costs. Reference [here](https://github.com/OWASP/www-project-top-10-for-large-language-model-applications/blob/main/2_0_vulns/LLM04_ModelDoS.md). -**Example**: An adversary may send complex prompts that consume excessive computational resources. +**Example**: An adversary may send complex prompts that consume excessive computational resources. **Prompt**: ![](/assets/images/embedding-security-in-llm-workflows/image2.png) @@ -304,9 +304,9 @@ FROM azure-openai-logs | WHERE total_attempts >= 2 ``` -This detection illustrates another simple example of how the LLM response is used to identify potentially abusive behavior. Although this example may not represent a traditional security threat, it could emulate how adversaries can impose costs on victims, either consuming resources or tokens. +This detection illustrates another simple example of how the LLM response is used to identify potentially abusive behavior. Although this example may not represent a traditional security threat, it could emulate how adversaries can impose costs on victims, either consuming resources or tokens. -**Example 2**: An adversary may send complex prompts that consume excessive computational resources. +**Example 2**: An adversary may send complex prompts that consume excessive computational resources. **Prompt**: ![](/assets/images/embedding-security-in-llm-workflows/image16.png) @@ -314,7 +314,7 @@ This detection illustrates another simple example of how the LLM response is use **Sample Response**: ![](/assets/images/embedding-security-in-llm-workflows/image14.png) -At a glance, this prompt appears to be benign. However, excessive requests and verbose responses in a short time can significantly increase costs. +At a glance, this prompt appears to be benign. However, excessive requests and verbose responses in a short time can significantly increase costs. **Detection Rule Opportunity**: @@ -332,7 +332,7 @@ In the context of example 2, this working query efficiently tracks and analyzes **OWASP Description**: Failure to protect against disclosure of sensitive information in LLM outputs can result in legal consequences or a loss of competitive advantage. Reference [here](https://github.com/OWASP/www-project-top-10-for-large-language-model-applications/blob/main/2_0_vulns/LLM06_SensitiveInformationDisclosure.md). -**Example**: An adversary may craft prompts to extract sensitive information embedded in the training data. +**Example**: An adversary may craft prompts to extract sensitive information embedded in the training data. **Prompt**: ![](/assets/images/embedding-security-in-llm-workflows/image1.png) @@ -359,8 +359,8 @@ By routing LLM requests through a proxy, we can capitalize on specialized securi We don’t deep-dive on every tool available, but several open-source tools have emerged to offer varying approaches to analyzing and securing LLM interactions. Some of these tools are backed by machine learning models trained to detect malicious prompts: - - **Rebuff** ([GitHub](https://github.com/protectai/rebuff)): Utilizes machine learning to identify and mitigate attempts at social engineering, phishing, and other malicious activities through LLM interactions. Example usage involves passing request content through Rebuff's analysis engine and tagging requests with a "malicious" boolean field based on the findings. - - **LLM-Guard** ([GitHub](https://github.com/protectai/llm-guard)): Provides a rule-based engine for detecting harmful patterns in LLM requests. LLM-Guard can categorize detected threats based on predefined categories, enriching requests with detailed threat classifications. + - **Rebuff** ([GitHub](https://github.com/protectai/rebuff)): Utilizes machine learning to identify and mitigate attempts at social engineering, phishing, and other malicious activities through LLM interactions. Example usage involves passing request content through Rebuff's analysis engine and tagging requests with a "malicious" boolean field based on the findings. + - **LLM-Guard** ([GitHub](https://github.com/protectai/llm-guard)): Provides a rule-based engine for detecting harmful patterns in LLM requests. LLM-Guard can categorize detected threats based on predefined categories, enriching requests with detailed threat classifications. - **LangKit** ([GitHub](https://github.com/whylabs/langkit/tree/main)): A toolkit designed for monitoring and securing LLMs, LangKit can analyze request content for signs of adversarial inputs or unintended model behaviors. It offers hooks for integrating custom analysis functions. - **Vigil-LLM** ([GitHub](https://github.com/deadbits/vigil-llm)): Focuses on real-time monitoring and alerting for suspicious LLM requests. Integration into the proxy layer allows for immediate flagging potential security issues, enriching the request data with vigilance scores. - **Open-Prompt Injection** ([GitHub](https://github.com/liu00222/Open-Prompt-Injection)): Offers methodologies and tools for detecting prompt injection attacks, allowing for the enrichment of request data with specific indicators of compromise related to prompt injection techniques. @@ -463,9 +463,9 @@ In Part two of this series, we will discuss how we’ve taken a more formal appr ## Alternative Options for LLM Application Auditing -While using a proxy may be straightforward, other approaches may better suit a production setup; for example: +While using a proxy may be straightforward, other approaches may better suit a production setup; for example: - - Utilizing [application performance monitoring](https://www.elastic.co/observability/application-performance-monitoring) (APM) + - Utilizing [application performance monitoring](https://www.elastic.co/observability/application-performance-monitoring) (APM) - Using the OpenTelemetry integration - Modifying changes in Kibana directly to audit and trace LLM activity @@ -477,17 +477,17 @@ Elastic [APM](https://www.elastic.co/guide/en/observability/current/apm.html) pr ### Utilizing OpenTelemetry for Enhanced Observability -For applications already employing OpenTelemetry, leveraging its [integration](https://www.elastic.co/guide/en/observability/current/apm-open-telemetry.html) with Elastic APM can enhance observability without requiring extensive instrumentation changes. This integration supports capturing a wide array of telemetry data, including traces and metrics, which can be seamlessly sent to the Elastic Stack. This approach allows developers to continue using familiar libraries while benefiting from the robust monitoring capabilities of Elastic. OpenTelemetry’s compatibility across multiple programming languages and its [support through Elastic’s native protocol](https://www.elastic.co/guide/en/observability/current/apm-open-telemetry.html) (OTLP) facilitate straightforward data transmission, providing a robust foundation for monitoring distributed systems. Compared to the proxy example, this approach more natively ingests data than maintaining an independent index and logging mechanism to Elastic. +For applications already employing OpenTelemetry, leveraging its [integration](https://www.elastic.co/guide/en/observability/current/apm-open-telemetry.html) with Elastic APM can enhance observability without requiring extensive instrumentation changes. This integration supports capturing a wide array of telemetry data, including traces and metrics, which can be seamlessly sent to the Elastic Stack. This approach allows developers to continue using familiar libraries while benefiting from the robust monitoring capabilities of Elastic. OpenTelemetry’s compatibility across multiple programming languages and its [support through Elastic’s native protocol](https://www.elastic.co/guide/en/observability/current/apm-open-telemetry.html) (OTLP) facilitate straightforward data transmission, providing a robust foundation for monitoring distributed systems. Compared to the proxy example, this approach more natively ingests data than maintaining an independent index and logging mechanism to Elastic. ### LLM Auditing with Kibana -Like writing custom logic for your LLM application to audit and ship data, you can test the approach with Elastic’s AI Assistant. If you're comfortable with TypeScript, consider deploying a local Elastic instance using the Kibana [Getting Started Guide](https://www.elastic.co/guide/en/kibana/current/development-getting-started.html). Once set up, navigate to the [Elastic AI Assistant](https://github.com/elastic/kibana/tree/main/x-pack/plugins/elastic_assistant) and configure it to intercept LLM requests and responses for auditing and analysis. Note: This approach primarily tracks Elastic-specific LLM integration compared to using APM and other integrations or a proxy to track third-party applications. It should only be considered for experimentation and exploratory testing purposes. +Like writing custom logic for your LLM application to audit and ship data, you can test the approach with Elastic’s AI Assistant. If you're comfortable with TypeScript, consider deploying a local Elastic instance using the Kibana [Getting Started Guide](https://www.elastic.co/guide/en/kibana/current/development-getting-started.html). Once set up, navigate to the [Elastic AI Assistant](https://github.com/elastic/kibana/tree/main/x-pack/solutions/security/plugins/elastic_assistant) and configure it to intercept LLM requests and responses for auditing and analysis. Note: This approach primarily tracks Elastic-specific LLM integration compared to using APM and other integrations or a proxy to track third-party applications. It should only be considered for experimentation and exploratory testing purposes. -Fortunately, Kibana is already instrumented with APM, so if you configure an APM server, you will automatically start ingesting logs from this source (by setting ```elastic.apm.active: true```). See the [README](https://github.com/elastic/kibana/blob/main/x-pack/plugins/elastic_assistant/server/lib/langchain/tracers/README.mdx) for more details. +Fortunately, Kibana is already instrumented with APM, so if you configure an APM server, you will automatically start ingesting logs from this source (by setting ```elastic.apm.active: true```). See the [README](https://github.com/elastic/kibana/blob/main/x-pack/platform/packages/shared/kbn-langchain/server/tracers/README.mdx) for more details. ## Closing Thoughts -As we continue with this exploration into integrating security practices within the lifecycle of large language models at Elastic, it's clear that embedding security into LLM workflows can provide a path forward for creating safer and more reliable applications. These contrived examples, drawn from our work during OnWeek, illustrate how someone can proactively detect, alert, and triage malicious activity, leveraging the security solutions that analysts find most intuitive and effective. +As we continue with this exploration into integrating security practices within the lifecycle of large language models at Elastic, it's clear that embedding security into LLM workflows can provide a path forward for creating safer and more reliable applications. These contrived examples, drawn from our work during OnWeek, illustrate how someone can proactively detect, alert, and triage malicious activity, leveraging the security solutions that analysts find most intuitive and effective. It’s also worth noting that with the example proxy approach, we can incorporate a model to actively detect and prevent requests. Additionally, we can triage the LLM response before sending it back to the user if we’ve identified malicious threats. At this point, we have the flexibility to extend our security protections to cover a variety of defensive approaches. In this case, there is a fine line between security and performance, as each additional check will consume time and impede the natural conversational flow that users would expect. diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/embracing_offensive_tooling_building_detections_against_koadic_using_eql.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/embracing_offensive_tooling_building_detections_against_koadic_using_eql.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/embracing_offensive_tooling_building_detections_against_koadic_using_eql.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/embracing_offensive_tooling_building_detections_against_koadic_using_eql.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_configuration_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_configuration_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_configuration_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_configuration_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_dynamic_configuration_extraction.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_dynamic_configuration_extraction.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_dynamic_configuration_extraction.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/emotet_dynamic_configuration_extraction.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_applications_of_chatgpt_to_improve_detection_response_and_understanding.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_applications_of_chatgpt_to_improve_detection_response_and_understanding.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_applications_of_chatgpt_to_improve_detection_response_and_understanding.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_applications_of_chatgpt_to_improve_detection_response_and_understanding.md diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_aws_sts_assumeroot.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_aws_sts_assumeroot.md new file mode 100644 index 0000000000000..b00b2cc5938a4 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_aws_sts_assumeroot.md @@ -0,0 +1,363 @@ +--- +title: "Exploring AWS STS AssumeRoot" +subtitle: "AssumeRoot Abuse and Detection Strategies in AWS Organizations" +slug: "exploring-aws-sts-assumeroot" +date: "2024-12-09" +description: "Explore AWS STS AssumeRoot, its risks, detection strategies, and practical scenarios to secure against privilege escalation and account compromise using Elastic's SIEM and CloudTrail data." +author: + - slug: terrance-dejesus +image: "Security Labs Images 20.jpg" +category: + - slug: security-research +--- + +## Preamble + +Welcome to another installment of AWS detection engineering with Elastic. This article will dive into the new AWS [Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html) (STS) API operation, [AssumeRoot](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html), simulate some practical behavior in a sandbox AWS environment, and explore detection capabilities within Elastic’s SIEM. + +What to expect from this article: + +* Basic insight into AWS STS web service +* Insight into STS’ AssumeRoot API operation +* Threat scenario using AssumeRoot with Terraform and Python code +* Detection and hunting opportunities for potential AssumeRoot abuse + +## Understanding AWS STS and the AssumeRoot API + +AWS Security Token Service (STS) is a web service that enables users, accounts, and roles to request temporary, limited-privilege credentials. For IAM users, their accounts are typically registered in AWS Identity and Access Management (IAM), where either a login profile is attached for accessing the console or access keys, and secrets are created for programmatic use by services like Lambda, EC2, and others. + +While IAM credentials are persistent, [**STS credentials**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html#sts-regionalization) are temporary. These credentials \- comprising an access key, secret key, and session token \- are granted upon request and are valid for a specific period. Requests are typically sent to the global `sts.amazonaws.com` endpoint, which responds with temporary credentials for a user or role. These credentials can then be used to access other AWS services on behalf of the specified user or role, as long as the action is explicitly allowed by the associated permission policy. + +This process is commonly known as assuming a role, executed via the [`AssumeRole`](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API. It is frequently used in AWS environments and organizations for various scenarios. For example: + +* An EC2 instance with an attached role will automatically use `AssumeRole` to retrieve temporary credentials for API requests. +* Similarly, Lambda functions often invoke `AssumeRole` to authenticate and perform their designated actions. + +Although `AssumeRole` is incredibly useful, it can pose a risk if roles are over-permissioned by the organization. Misconfigured policies with excessive permissions can allow adversaries to abuse these roles, especially in environments where the [Principle of Least Privilege](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec_permissions_least_privileges.html) (PoLP) is not strictly enforced. Note that the security risks associated with AssumeRole are typically attributed to misconfigurations or not following best security practices by organizations. These are not the result of AssumeRole or even AssumeRoot development decisions. + +### Introduction to AssumeRoot + +AWS recently introduced the `AssumeRoot` API operation to STS. Similar to `AssumeRole`, it allows users to retrieve temporary credentials \- but specifically for the [root user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) of a member account in an AWS organization. + +### What Are Member Accounts? + +In AWS, [member accounts](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_access.html) are separate accounts within an organization that have their own IAM users, services, and roles. These accounts are distinct from the management account, but they still fall under the same organizational hierarchy. Each AWS organization is created with a unique root account tied to the email address used during its setup. Similarly, every member account requires a root user or email address at the time of its creation, effectively establishing its own root identity. + +### How Does AssumeRoot Work? + +When a privileged user in the management account needs root-level privileges for a member account, they can use the `AssumeRoot` API to retrieve temporary credentials for the member account's root user. Unlike `AssumeRole`, where the target principal is a user ARN, the target principal for `AssumeRoot` is the member account ID itself. Additionally, a task policy ARN must be specified, which defines the specific permissions allowed with the temporary credentials. + +Here are the available task policy ARNs for `AssumeRoot`: + +* [IAMAuditRootUserCredentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-iam-awsmanpol.html#security-iam-awsmanpol-IAMAuditRootUserCredentials) +* [IAMCreateRootUserPassword](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-iam-awsmanpol.html#security-iam-awsmanpol-IAMCreateRootUserPassword) +* [IAMDeleteRootUserCredentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-iam-awsmanpol.html#security-iam-awsmanpol-IAMDeleteRootUserCredentials) +* [S3UnlockBucketPolicy](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-iam-awsmanpol.html#security-iam-awsmanpol-S3UnlockBucketPolicy) +* [SQSUnlockQueuePolicy](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-iam-awsmanpol.html#security-iam-awsmanpol-SQSUnlockQueuePolicy) + +### Potential Abuse of Task Policies + +While these predefined task policies limit what can be done with `AssumeRoot`, their scope can still be theoretically abused in the right circumstances. For example: + +* **IAMCreateRootUserPassword**: This policy grants the [`iam:CreateLoginProfile`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateLoginProfile.html) permission, allowing the creation of a login profile for a user that typically doesn't require console access. If an adversary gains access to programmatic credentials, they could create a login profile and gain console access to the account that is more persistent. +* **IAMDeleteRootUserCredentials**: This policy allows the deletion of root credentials, but also grants permissions like [`iam:ListAccessKeys`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) and [`iam:ListMFADevices`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADevices.html). These permissions could help an adversary gather critical information about access credentials or MFA configurations for further exploitation. + +## AssumeRoot in Action + +Now that we understand how AssumeRoot works at a high level, how it differs from AssumeRole, and the potential risks associated with improper security practices, let’s walk through a practical scenario to simulate its usage. It should be noted that this is one of many potential scenarios where AssumeRoot may or could be abused. As of this article's publication, no active abuse has been reported in the wild, as expected with a newer AWS functionality. + +Below is a simple depiction of what we will accomplish in the following sections: + +![AssumeRoot scenario workflow](/assets/images/exploring-aws-sts-assumeroot/image3.png) + +Before diving in, it’s important to highlight that we’re using an admin-level IAM user configured as the default profile for our local AWS CLI. This setup enables us to properly configure the environment using [Terraform](https://developer.hashicorp.com/terraform) and simulate potential threat scenarios in AWS for detection purposes. + +### Member Account Creation + +The first step is to enable centralized root access for member accounts, as outlined in the [AWS documentation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts.html). Centralized root access allows us to group all AWS accounts into a single organization, with each member account having its own root user. + +Next, we manually create a member account within our organization through the Accounts section in the AWS Management Console. For this scenario, the key requirement is to note the member account ID, a unique 12-digit number. For our example, we’ll assume this ID is `000000000001` and name it *AWSAssumeRoot*. Centralized management of AWS accounts is a common practice for organizations that may separate different operational services into separate AWS accounts but want to maintain centralized management. + +![AWS console showing management account and member account *AWSAssumeRoot*](/assets/images/exploring-aws-sts-assumeroot/image4.png) + +We also add the member account as the [delegated administrator](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_delegate_policies.html) for centralized root access as well, which allows that root member account to have centralized root access for any other member accounts of the organization. + +While we won’t cover it in depth, we have also enabled the new [Resource control policies](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) (RCPs) within Identity and Access Management (IAM), which will allow central administration over permissions granted to resources within accounts in our organization, but by default, the *RCPFullAWSAccess* policy allows all permissions to all services for all principals and is attached directly to root. + +### Environment Setup + +For our simulation, we use Terraform to create an overly permissive IAM user named compromised\_user. This user is granted the predefined [AdministratorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html) policy, which provides admin-level privileges. Additionally, we generated an access key for this user while intentionally omitting a login profile to reflect a typical setup where credentials are used programmatically. This is not an uncommon practice, especially in developer environments. + +Below is the `main.tf` configuration used to create the resources: + +``` +provider "aws" { + region = var.region +} + +data "aws_region" "current" {} + +# Create an IAM user with AdministratorAccess (simulated compromised user) +resource "aws_iam_user" "compromised_user" { + name = "CompromisedUser" +} + +# Attach AdministratorAccess Policy to the compromised user +resource "aws_iam_user_policy_attachment" "compromised_user_policy" { + user = aws_iam_user.compromised_user.name + policy_arn = "arn:aws:iam::aws:policy/AdministratorAccess" +} + +# Create access keys for the compromised user +resource "aws_iam_access_key" "compromised_user_key" { + user = aws_iam_user.compromised_user.name +} +``` + +We also define an `outputs.tf` file to capture key details about the environment, such as the region, access credentials, and the user ARN: + +``` +output "aws_region" { + description = "AWS Region where the resources are deployed" + value = var.region +} + +output "compromised_user_access_key" { + value = aws_iam_access_key.compromised_user_key.id + sensitive = true + description = "Access key for the compromised IAM user" +} + +output "compromised_user_secret_key" { + value = aws_iam_access_key.compromised_user_key.secret + sensitive = true + description = "Secret key for the compromised IAM user" +} + +output "compromised_user_name" { + value = aws_iam_user.compromised_user.name + description = "Name of the compromised IAM user" +} + +output "compromised_user_arn" { + value = aws_iam_user.compromised_user.arn + description = "ARN of the compromised IAM user" +} +``` + +Once we run `terraform apply`, the configuration creates a highly permissive IAM user (`compromised_user`) with associated credentials. These credentials simulate those that an adversary might obtain for initial access or escalating privileges. + +This is one of the first hurdles for an adversary, collecting valid credentials. In today’s threat landscape information stealer malware and phishing campaigns are more common than ever, aimed at obtaining credentials that can be sold or used for lateral movement. While this is a hurdle, the probability of compromised credentials for initial access is high \- such as those with [SCATTERED SPIDER](https://www.cisa.gov/sites/default/files/2023-11/aa23-320a_scattered_spider_0.pdf) and [SCARLETEEL](https://sysdig.com/blog/scarleteel-2-0/). + +![](/assets/images/exploring-aws-sts-assumeroot/image1.png) + +### Establish an STS Client Session with Stolen Credentials + +The next step is to establish an STS client session using the compromised credentials (`compromised_user` access key and secret key). This session allows the adversary to make requests to AWS STS on behalf of the compromised user. + +Here’s the Python code to establish the STS client using the [AWS Boto3 SDK](https://aws.amazon.com/sdk-for-python/) (the AWS SDK used to create, configure, and manage AWS services, such as Amazon EC2 and Amazon S3). This Python code is used to create the STS client with stolen IAM user credentials: + +``` + sts_client = boto3.client( + "sts", + aws_access_key_id=compromised_access_key, + aws_secret_access_key=compromised_secret_key, + region_name=region, + endpoint_url=f'https://sts.{region}.amazonaws.com' + ) + ``` + +![Terminal output when creating STS client with stolen IAM user credentials](/assets/images/exploring-aws-sts-assumeroot/image7.png) + +**Note:** During testing, we discovered that the `endpoint_url` must explicitly point to `https://sts..amazonaws.com`. Omitting this may result in an `InvalidOperation` error when attempting to invoke the `AssumeRoot` API. + +This STS client session forms the foundation for simulating an adversary's actions as we have taken compromised credentials and initiated our malicious actions. + +### Assume Root for Member Account on Behalf of Compromised User + +After establishing an STS client session as the compromised user, we can proceed to call the AssumeRoot API. This request allows us to assume the root identity of a member account within an AWS Organization. For the request, the TargetPrincipal is set to the member account ID we obtained earlier, the session duration is set to 900 seconds (15 minutes), and the TaskPolicyArn is defined as `IAMCreateRootUserPassword`. This policy scopes the permissions to actions related to creating or managing root login credentials. + +A notable permission included in this policy is [`CreateLoginProfile`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateLoginProfile.html), which enables the creation of a login password for the root user. This allows access to the AWS Management Console as the root user. + +Below is the Python code to assume root of member account `000000000001`, with permissions scoped by *IAMCreateRootUserPassword*. + +``` +response = sts_client.assume_root( + TargetPrincipal=member_account_id, + DurationSeconds=900, + TaskPolicyArn={"arn": "arn:aws:iam::aws:policy/root-task/IAMCreateRootUserPassword"}, +) +root_temp_creds = response["Credentials"] +``` + +If the AssumeRoot request is successful, the response provides temporary credentials (`root_temp_creds`) for the root account of the target member. These credentials include an access key, secret key, and session token, enabling temporary root-level access for the duration of the session. + +![Terminal output showing AssumeRoot with IAMCreateRootUserPassword for AWSAssumeRoot member account +](/assets/images/exploring-aws-sts-assumeroot/image6.png) + +### Creating a Login Profile for the Member Root Account + +With temporary root credentials in hand, the next step is to establish an authenticated IAM client session as the root user of the member account. Using this session, we can call the `create_login_profile()` method. This method allows us to assign a login password to the root user, enabling console access. + +The following Python code establishes an authenticated IAM client and creates a login profile: + +``` +iam_client = boto3.client( + "iam", + aws_access_key_id=root_temp_creds["AccessKeyId"], + aws_secret_access_key=root_temp_creds["SecretAccessKey"], + aws_session_token=root_temp_creds["SessionToken"], +) + +response = iam_client.create_login_profile() +``` + +It’s worth noting that the `create_login_profile()` method requires no explicit parameters for the root user, as it acts on the credentials of the currently authenticated session. In this case, it will apply to the root user of the member account. + +![Terminal output showing IAM client established as Root member account and CreateLoginProfile request](/assets/images/exploring-aws-sts-assumeroot/image5.png) + + +### Reset the Administrator Password and Login to the AWS Console + +At this stage, we’re nearly complete\! Let’s recap the progress so far: + +1. Using compromised IAM user credentials, we established an STS session to assume the identity of an overly permissive user. +2. Leveraging this session, we assumed the identity of the root user of a target member account, acquiring temporary credentials scoped to the `IAMCreateRootUserPassword` task policy. +3. With these temporary root credentials, we established an IAM client session and successfully created a login profile for the root user. + +The final step involves resetting the root user password to gain permanent access to the AWS Management Console. To do this, visit the AWS console login page and attempt to log in as the root user. Select the “Forgot Password” option to initiate the password recovery process. This will prompt a CAPTCHA challenge, after which a password reset link is sent to the root user’s email address. This would be the third roadblock for an adversary as they would need access to the root user’s email inbox to continue with the password reset workflow. It should be acknowledged that if *CreateLoginProfile* is called, you can specify the password for the user and enforce a “password reset required”. However, this is not allowed for root accounts by default, and for good reason by AWS. Unlike the first hurdle of having valid credentials, access to a user’s inbox may prove more difficult and less likely, but again, with enough motivation and resources, it is still possible. + +![Password recovery request from AWS sign-in for root](/assets/images/exploring-aws-sts-assumeroot/image2.png) + +After selecting the password reset link, you can set a new password for the root user. This step provides lasting access to the console as the root user. Unlike the temporary credentials obtained earlier, this access is no longer limited by the session duration or scoped permissions of the IAMCreateRootUserPassword policy, granting unrestricted administrative control over the member account. + +![Successful login as root for AWSAssumeRoot member account](/assets/images/exploring-aws-sts-assumeroot/image8.png) + +**Before moving on, if you followed along and tried this in your environment, we want to gently remind you to use Terraform to remove testing resources** using the terraform destroy command in the same folder where you initialized and deployed the resources. + +## Detection and Hunting Opportunities + +While exploring cloud features and APIs from an adversary's perspective is insightful, our ultimate responsibility lies in detecting and mitigating malicious or anomalous behavior, alerting stakeholders, and responding effectively. Also, while such a scenario has not been publicly documented in the wild, we should not wait to be a victim either and be reactive, hence the reason for our whitebox scenario. + +The following detection and hunting queries rely on AWS CloudTrail data ingested into the Elastic Stack using the [AWS integration](https://www.elastic.co/docs/current/integrations/aws). If your environment differs, you may need to adjust these queries for custom ingestion processes or adapt them for a different SIEM or query tool. + +**Note:** Ensure that AWS CloudTrail is enabled for all accounts in your organization to provide comprehensive visibility into activity across your AWS environment. You may also need to enable the specific trail used for monitoring across the entire organization so all member accounts are observed properly. + +### Hunting \- Unusual Action for IAM User Access Key + +This query identifies potentially compromised IAM access keys that are used to make unusual API calls. It sorts the results in ascending order to surface less frequent API calls within the last two weeks. This query can be adjusted to account for different API calls or include other CloudTrail-specific fields. + +Hunting Query: [AWS IAM Unusual AWS Access Key Usage for User](https://github.com/elastic/detection-rules/blob/7b88b36d294407cc1ea2ab1b0acbbbf3104162a9/hunting/aws/docs/iam_unusual_access_key_usage_for_user.md) + +MITRE ATT\&CK: + +* T1078.004 \- [Valid Accounts: Cloud Accounts](https://attack.mitre.org/techniques/T1078/004/) + +Language: ES|QL + +``` +FROM logs-aws.cloudtrail* +| WHERE @timestamp > now() - 14 day +| WHERE + event.dataset == "aws.cloudtrail" + and event.outcome == "success" + and aws.cloudtrail.user_identity.access_key_id IS NOT NULL + and aws.cloudtrail.resources.arn IS NOT NULL + and event.action NOT IN ("GetObject") +| EVAL daily_buckets = DATE_TRUNC(1 days, @timestamp) +| STATS + api_counts = count(*) by daily_buckets, aws.cloudtrail.user_identity.arn, aws.cloudtrail.user_identity.access_key_id, aws.cloudtrail.resources.arn, event.action +| WHERE api_counts < 2 +| SORT api_counts ASC +``` + +### Detection \- Unusual Assume Root Action by Rare IAM User + +Detection Rule: [AWS STS AssumeRoot by Rare User and Member Account](https://github.com/elastic/detection-rules/blob/main/rules/integrations/aws/privilege_escalation_sts_assume_root_from_rare_user_and_member_account.toml) + +This query identifies instances where the `AssumeRoot` API call is made by an IAM user ARN and member account that have not performed this action in the last 14 days. This anomaly-based detection uses Elastic’s [New Terms](https://www.elastic.co/guide/en/security/current/rules-ui-create.html#create-new-terms-rule) detection rule. + +* The `aws.cloudtrail.user_identity.arn` field identifies the source IAM user from the management AWS account. +* The `aws.cloudtrail.resources.account_id` field reflects the target member account. + +MITRE ATT\&CK: + +* T1548.005 \- [Temporary Elevated Cloud Access](https://attack.mitre.org/techniques/T1548/005/) +* T1098.003 \- [Additional Cloud Roles](https://attack.mitre.org/techniques/T1098/003/) + +Language: KQL + +``` +event.dataset: "aws.cloudtrail" + and event.provider: "sts.amazonaws.com" + and event.action: "AssumeRoot" + and event.outcome: "success" +``` + +New Term Fields: +If any combination of these fields has not been seen executing AssumeRoot within the last 14 days, an alert is generated. + +* `aws.cloudtrail.user_identity.arn` +* `aws.cloudtrail.resources.account_id` + +### Detection \- Self-Created Login Profile for Root Member Account + +This query detects instances where a login profile is created for a root member account by the root account itself, potentially indicating unauthorized or anomalous behavior. + +Detection Rule: [AWS IAM Login Profile Added for Root](https://github.com/elastic/detection-rules/blob/4374128458d116211d5d22993b6d87f6c82a30a0/rules/integrations/aws/persistence_iam_create_login_profile_for_root.toml) + +MITRE ATT\&CK: + +* T1098.003 \- [Account Manipulation: Additional Cloud Roles](https://attack.mitre.org/techniques/T1098/003/) +* T1548.005 \- [Abuse Elevation Control Mechanism: Temporary Elevated Cloud Access](https://attack.mitre.org/techniques/T1548/005/) +* T1078.004 \- [Valid Accounts: Cloud Accounts](https://attack.mitre.org/techniques/T1078/004/) + +Language: ES|QL + +``` +FROM logs-aws.cloudtrail* +| WHERE + // filter for CloudTrail logs from IAM + event.dataset == "aws.cloudtrail" + and event.provider == "iam.amazonaws.com" + // filter for successful CreateLoginProfile API call + and event.action == "CreateLoginProfile" + and event.outcome == "success" + // filter for Root member account + and aws.cloudtrail.user_identity.type == "Root" + // filter for an access key existing which sources from AssumeRoot + and aws.cloudtrail.user_identity.access_key_id IS NOT NULL + // filter on the request parameters not including UserName which assumes self-assignment + and NOT TO_LOWER(aws.cloudtrail.request_parameters) LIKE "*username*" +| keep + @timestamp, + aws.cloudtrail.request_parameters, + aws.cloudtrail.response_elements, + aws.cloudtrail.user_identity.type, + aws.cloudtrail.user_identity.arn, + aws.cloudtrail.user_identity.access_key_id, + cloud.account.id, + event.action, + source.address + source.geo.continent_name, + source.geo.region_name, + source.geo.city_name, + user_agent.original, + user.id +``` + +These detections are specific to our scenario, however, are not fully inclusive regarding all potential AssumeRoot abuse. If you choose to explore and discover some additional hunting or threat detection opportunities, feel free to share in our [Detection Rules](https://github.com/elastic/detection-rules) repository or the [Threat Hunting](https://github.com/elastic/detection-rules/tree/main/hunting) library of ours. + +## Hardening Practices for AssumeRoot Use + +AWS [documentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) contains several important considerations for best security practices regarding IAM, STS, and many other services. However, cloud security is not a “one size fits all” workflow and security practices should be tailored to your environment, risk-tolerance, and more. + +**Visibility is Key:** If you can’t see it, you can’t protect it. Start by enabling CloudTrail with organization-wide trails to log activity across all accounts. Focus on capturing IAM and STS operations for insights into access and permission usage. Pair this with Security Hub for continuous monitoring and tools like Elastic or GuardDuty to hunt for unusual AssumeRoot actions. + +**Lock Down AssumeRoot Permissions:** Scope AssumeRoot usage to critical tasks only, like audits or recovery, by restricting task policies to essentials like IAMAuditRootUserCredentials. Assign these permissions to specific roles in the management account and keep those roles tightly controlled. Regularly review and remove unnecessary permissions to maintain the PLoP. + +**MFA and Guardrails for Root Access:** Enforce MFA for all users, especially those with access to AssumeRoot. Use AWS Organizations to disable root credential recovery unless absolutely needed and remove unused root credentials entirely. RCPs can help centralize and tighten permissions for tasks involving AssumeRoot or other sensitive operations. + +# Conclusion + +We hope this article provides valuable insight into AWS’ AssumeRoot API operation, how it can be abused by adversaries, and some threat detection and hunting guidance. Abusing AssumeRoot is one of many living-off-the-cloud (LotC) techniques that adversaries have the capability to target, but we encourage others to explore, research, and share their findings accordingly with the community and AWS. \ No newline at end of file diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_qbot_attack_pattern.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_qbot_attack_pattern.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_qbot_attack_pattern.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_qbot_attack_pattern.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_ref2731_intrusion_set.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_ref2731_intrusion_set.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_ref2731_intrusion_set.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_the_ref2731_intrusion_set.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_windows_uac_bypasses_techniques_and_detection_strategies.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_windows_uac_bypasses_techniques_and_detection_strategies.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_windows_uac_bypasses_techniques_and_detection_strategies.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/exploring_windows_uac_bypasses_techniques_and_detection_strategies.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/extracting_cobalt_strike_beacon_configurations.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/extracting_cobalt_strike_beacon_configurations.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/extracting_cobalt_strike_beacon_configurations.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/extracting_cobalt_strike_beacon_configurations.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/fall_2023_global_threat_report_outro.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/fall_2023_global_threat_report_outro.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/fall_2023_global_threat_report_outro.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/fall_2023_global_threat_report_outro.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/false_file_immutability.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/false_file_immutability.md similarity index 98% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/false_file_immutability.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/false_file_immutability.md index 17830f2f3dab7..94d14462751a7 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/false_file_immutability.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/false_file_immutability.md @@ -11,12 +11,12 @@ category: - slug: vulnerability-updates --- -# Introduction +## Introduction This article will discuss a previously-unnamed vulnerability class in Windows, showing how long-standing incorrect assumptions in the design of core Windows features can result in both undefined behavior and security vulnerabilities. We will demonstrate how one such vulnerability in the Windows 11 kernel can be exploited to achieve arbitrary code execution with kernel privileges. -# Windows file sharing +## Windows file sharing When an application opens a file on Windows, it typically uses some form of the Win32 [**CreateFile**](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilew) API. @@ -43,7 +43,7 @@ Sharing isn’t mandatory. Callers can pass a share mode of zero to obtain exclu > An open file that is not shared (dwShareMode set to zero) cannot be opened again, either by the application that opened it or by another application, until its handle has been closed. This is also referred to as exclusive access. -## Sharing enforcement +### Sharing enforcement In the kernel, sharing is enforced by filesystem drivers. As a file is opened, it’s the responsibility of the filesystem driver to call [**IoCheckShareAccess**](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-iocheckshareaccess) or [**IoCheckLinkShareAccess**](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-iochecklinkshareaccess) to see whether the requested **DesiredAccess**/**ShareMode** tuple is compatible with any existing handles to the file being opened. [NTFS](https://learn.microsoft.com/en-us/windows-server/storage/file-server/ntfs-overview) is the primary filesystem on Windows, but it’s closed-source, so for illustrative purposes we’ll instead look at Microsoft’s FastFAT sample code performing [the same check](https://github.com/Microsoft/Windows-driver-samples/blob/622212c3fff587f23f6490a9da939fb85968f651/filesys/fastfat/create.c#L6822-L6884). Unlike an IDA decompilation, it even comes with comments! @@ -119,7 +119,7 @@ if (FlagOn(*DesiredAccess, FILE_WRITE_DATA) || DeleteOnClose) { Another way to think of this check is that **ZwMapViewOfSection(SEC_IMAGE)** implies no-write-sharing as long as the view exists. -# Authenticode +## Authenticode The [Windows Authenticode Specification](https://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/authenticode_pe.docx) describes a way to employ cryptography to “sign” PE files. A “digital signature” cryptographically attests that the PE was produced by a particular entity. Digital signatures are tamper-evident, meaning that any material modification of signed files should be detectable because the digital signature will no longer match. Digital signatures are typically appended to the end of PE files. @@ -128,7 +128,7 @@ The [Windows Authenticode Specification](https://download.microsoft.com/download Authenticode can’t apply traditional hashing (e.g. **sha256sum**) in this case, because the act of appending the signature would change the file’s hash, breaking the signature it just generated. Instead, the Authenticode specification describes an algorithm to skip specific portions of the PE file that will be changed during the signing process. This algorithm is called **authentihash**. You can use authentihash with any hashing algorithm, such as SHA256. When a PE file is digitally signed, the file’s authentihash is what’s actually signed. -## Code integrity +### Code integrity Windows has a few different ways to validate Authenticode signatures. User mode applications can call [**WinVerifyTrust**](https://learn.microsoft.com/en-us/windows/win32/api/wintrust/nf-wintrust-winverifytrust) to validate a file’s signature in user mode. The Code Integrity (CI) subsystem, residing in ```ci.dll```, validates signatures in the kernel. If [Hypervisor-Protected Code Integrity](https://learn.microsoft.com/en-us/windows-hardware/drivers/bringup/device-guard-and-credential-guard) is running, the Secure Kernel employs ```skci.dll``` to validate Authenticode. This article will focus on Code Integrity (```ci.dll```) in the regular kernel. @@ -148,7 +148,7 @@ User Mode Code Integrity (UMCI): KMCI and UMCI implement different policies for different scenarios. For example, the policy for Protected Processes is different from that of INTEGRITYCHECK. -# Incorrect assumptions +## Incorrect assumptions Microsoft [documentation](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea) implies that files successfully opened without write sharing can’t be modified by another user or process. @@ -176,7 +176,7 @@ If those paged-out pages are later touched, the CPU will issue a page fault and Note the following exception: The memory manager may treat PE-relocated pages as unmodified, dynamically reapplying relocations during page faults. -## Page hashes +### Page hashes Page hashes are a list of hashes of each 4KB page within a PE file. Since pages are 4KB, page faults typically occur on 4KB of data at a time. Full Authenticode verification requires the entire contiguous PE file, which isn’t available during a page fault. Page hashes allow the MM to validate hashes of individual pages during page faults. @@ -187,7 +187,7 @@ CI can also compute them on-the-fly during signature validation, a mechanism we Page hashes are not free - they use CPU and slow down page faults. They’re not used in most cases. -# Attacking code integrity +## Attacking code integrity Imagine a scenario where a ransomware operator wants to ransom a hospital, so they send a phishing email to a hospital employee. The employee opens the email attachment and enables macros, running the ransomware. The ransomware employs a UAC bypass to immediately elevate to admin, then attempts to terminate any security software on the system so it can operate unhindered. Anti-Malware services run as [Protected Process Light](https://learn.microsoft.com/en-us/windows/win32/services/protecting-anti-malware-services-) (PPL), protecting them from tampering by malware with admin rights, so the ransomware can’t terminate the Anti-Malware service. @@ -202,7 +202,7 @@ When a network redirector is in use, the server on the other end of the pipe nee An attacker can employ a network redirector to modify a PPL’s DLL server-side, bypassing sharing restrictions. This means that PEs backing an executable image section are incorrectly assumed to be immutable. This is a class of vulnerability that we are calling **False File Immutability** (FFI). -## Paging exploitation +### Paging exploitation If an attacker successfully exploits False File Immutability to inject code into an in-use PE, wouldn’t page hashes catch such an attack? The answer is: sometimes. If we look at the following table, we can see that page hashes are enforced for kernel drivers and Protected Processes, but not for PPL, so let’s pretend we’re an attacker targeting PPL. @@ -219,7 +219,7 @@ Last year at Black Hat Asia 2023 ([abstract](https://www.blackhat.com/asia-23/br Alongside the presentation, we released the [PPLFault exploit](https://github.com/gabriellandau/PPLFault) which demonstrates the vulnerability by dumping the memory of an otherwise-protected PPL. We also released the GodFault exploit chain, which combines the PPLFault Admin-to-PPL exploit with the AngryOrchard PPL-to-kernel exploit to achieve full read/write control of physical memory from user mode. We did this to motivate Microsoft to take action on a vulnerability that MSRC [declined to fix](https://www.elastic.co/security-labs/forget-vulnerable-drivers-admin-is-all-you-need) because it did not meet their [servicing criteria](https://www.microsoft.com/en-us/msrc/windows-security-servicing-criteria). Thankfully, the Windows Defender team at Microsoft stepped up, [releasing a fix](https://x.com/GabrielLandau/status/1757818200127946922) in February 2024 that enforces dynamic page hashes for executable images loaded over network redirectors, breaking PPLFault. -# New research +## New research Above, we discussed Authenticode signatures embedded within PE files. In addition to embedded signatures, Windows supports a form of detached signature called a [security catalog](https://learn.microsoft.com/en-us/windows-hardware/drivers/install/catalog-files). Security catalogs (.cat files) are essentially a list of signed authentihashes. Every PE with an authentihash in that list is considered to be signed by that signer. Windows keeps a large collection of catalog files in ```C:\Windows\System32\CatRoot``` which CI loads, validates, and caches. @@ -240,7 +240,7 @@ Breaking this down, we see a few key insights. First, **ZwCreateSection(SEC_COMM Next, the file is opened without **FILE_SHARE_WRITE**, meaning write sharing is denied. This is intended to prevent modification of the security catalog during processing. However, as we have shown above, this is a bad assumption and another example of False File Immutability. It should be possible, in theory, to perform a PPLFault-style attack on security catalog processing. -## Planning the attack +### Planning the attack ![](/assets/images/false-file-immutability/image11.png) @@ -254,7 +254,7 @@ The general flow of the attack is as follows: 7. CI finds the malicious driver’s authentihash in the catalog and loads the driver. At this point, the attacker has achieved arbitrary code execution in the kernel. -## Implementation and considerations +### Implementation and considerations The plan is to use a PPLFault-style attack, but there are some important differences in this situation. PPLFault used an [opportunistic lock](https://learn.microsoft.com/en-us/windows/win32/fileio/opportunistic-locks) (oplock) to deterministically freeze the victim process’s initialization. This gave the attacker time to switch over to the payload and flush the system working set. Unfortunately, we couldn’t find any good opportunities for oplocks here. Instead, we’re going to pursue a probabilistic approach: rapidly toggling the security catalog between the malicious and benign versions. @@ -279,14 +279,14 @@ The attacker wins if CI validates a benign catalog then parses a malicious one. ![Code Integrity validating a benign catalog, then parsing a malicious one](/assets/images/false-file-immutability/image20.png) -## Exploit demo +### Exploit demo We named the exploit **ItsNotASecurityBoundary** as an homage to MSRC's [policy](https://www.microsoft.com/en-us/msrc/windows-security-servicing-criteria) that "Administrator-to-kernel is not a security boundary.” The code is in GitHub [here](https://github.com/gabriellandau/ItsNotASecurityBoundary). Demo video [here](https://drive.google.com/file/d/13Uw38ZrNeYwfoIuD76qlLgyXP8kRc8Nz/view?usp=sharing). -# Understanding these vulnerabilities +## Understanding these vulnerabilities In order to properly defend against these vulnerabilities, we first need to understand them better. @@ -311,7 +311,7 @@ First, the attacking client sets a packet’s structure’s length field to 16 b Double-read vulnerabilities frequently apply to shared-memory scenarios. They commonly occur in drivers that operate on user-writable buffers. Due to False File Immutability, developers need to be aware that their scope is actually much wider, and includes all files writable by attackers. Denying write sharing does not necessarily prevent file modification. -## Affected Operations +### Affected Operations What types of operations are affected by False File Immutability? @@ -322,7 +322,7 @@ What types of operations are affected by False File Immutability? | Regular I/O | **ReadFile** **ZwReadFile** | 1. Avoid double reads\ 2. Copy the file to a heap buffer before processing | -## What else could be vulnerable? +### What else could be vulnerable? Looking for potentially-vulnerable calls to **ZwMapViewOfSection** in the NT kernel yields quite a few interesting functions: @@ -339,27 +339,27 @@ Looking outside of the NT kernel, we can find other drivers to investigate: ![Potentially-vulnerable uses of **ZwMapViewOfSection** in Windows 11 kernel drivers](/assets/images/false-file-immutability/image1.png) -## Don’t forget about user mode +### Don’t forget about user mode We’ve mostly been discussing the kernel up to this point, but it’s important to note that any user mode application that calls **ReadFile**, **MapViewOfFile**, or **LoadLibrary** on an attacker-controllable file, denying write sharing for immutability, may be vulnerable. Here’s a few hypothetical examples. -### MapViewOfFile +#### MapViewOfFile Imagine an application that is split into two components - a low-privileged worker process with network access, and a privileged service that installs updates. The worker downloads updates and stages them to a specific folder. When the privileged service sees a new update staged, it first validates the signature before installing the update. An attacker could abuse FFI to modify the update after the signature check. -### ReadFile +#### ReadFile Since files are subject to double-read vulnerabilities, anything that parses complex file formats may be vulnerable, including antivirus engines and search indexers. -### LoadLibrary +#### LoadLibrary Some applications rely on UMCI to prevent attackers from loading malicious DLLs into their processes. As we’ve shown with PPLFault, FFI can defeat UMCI. -# Stopping the exploit +## Stopping the exploit Per their official servicing guidelines, MSRC won’t service Admin -> Kernel vulnerabilities by default. In this parlance, servicing means “fix via security update.” This type of vulnerability, however, allows malware to bypass [AV Process Protections](https://learn.microsoft.com/en-us/windows/win32/services/protecting-anti-malware-services-), leaving AV and EDR vulnerable to instant-kill attacks. @@ -376,7 +376,7 @@ As mentioned above in the Affected Operations section, applications can mitigate An alternative mitigation strategy to break these types of exploits is to pin the pages of the file mapping into physical memory using an API such as **MmProbeAndLockPages**. This prevents eviction of those pages when the attacker empties the working set. -## End-user detection and mitigation +### End-user detection and mitigation Fortunately, there is a way for end-users to mitigate this exploit without changes from Microsoft – Hypervisor Protected Code Integrity (HVCI). If HVCI is enabled, CI.dll doesn’t do catalog parsing at all. Instead, it sends the catalog contents to the Secure Kernel, which runs in a separate virtual machine on the same host. The Secure Kernel stores the received catalog contents in its own heap, from which signature validation and parsing are performed. Just like with the **ExAllocatePool** mitigation described above, the exploit is mitigated because file changes have no effect on the heap copy. @@ -387,7 +387,7 @@ The probabilistic nature of this attack means that there are likely many failed ![**Microsoft-Windows-CodeIntegrity/Operational** event log showing an invalid security catalog](/assets/images/false-file-immutability/image4.png) -# Disclosure +## Disclosure The disclosure timeline is as follows: - 2024-02-14: We reported ItsNotASecurityBoundary and FineButWeCanStillEasilyStopIt to MSRC as VULN-119340, suggesting **ExAllocatePool** and **MmProbeAndLockPages** as simple low-risk fixes @@ -397,7 +397,7 @@ The disclosure timeline is as follows: - 2024-06-14: MSRC closed the case, stating "We have completed our investigation and determined that the case doesn't meet our bar for servicing at this time. As a result, we have opened a next-version candidate bug for the issue, and it will be evaluated for upcoming releases. Thanks, again, for sharing this report with us." -# Fixing Code Integrity +## Fixing Code Integrity Looking at the original implementation of **CI!I_MapAndSizeDataFile**, we can see the legacy code calling **ZwCreateSection** and **ZwMapViewOfSection**: @@ -408,7 +408,7 @@ Contrast that with the new **CI!CipMapAndSizeDataFileWithMDL**, which follows th ![The new **CI!CipMapAndSizeDataFileWithMDL** has a mitigation](/assets/images/false-file-immutability/image3.png) -# Summary and conclusion +## Summary and conclusion Today we discussed and named a bug class: **False File Immutability**. We are aware of two public exploits that leverage it, PPLFault and ItsNotASecurityBoundary. diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/finding_truth_in_the_shadows.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/finding_truth_in_the_shadows.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/finding_truth_in_the_shadows.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/finding_truth_in_the_shadows.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/flare_on_9_solutions_burning_down_the_house.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/flare_on_9_solutions_burning_down_the_house.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/flare_on_9_solutions_burning_down_the_house.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/flare_on_9_solutions_burning_down_the_house.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/forecast_and_recommendations_2022_elastic_global_threat_report.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/forecast_and_recommendations_2022_elastic_global_threat_report.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/forecast_and_recommendations_2022_elastic_global_threat_report.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/forecast_and_recommendations_2022_elastic_global_threat_report.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/forget_vulnerable_drivers_admin_is_all_you_need.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/forget_vulnerable_drivers_admin_is_all_you_need.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/forget_vulnerable_drivers_admin_is_all_you_need.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/forget_vulnerable_drivers_admin_is_all_you_need.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/formbook_adopts_cab_less_approach.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/formbook_adopts_cab_less_approach.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/formbook_adopts_cab_less_approach.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/formbook_adopts_cab_less_approach.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/get_injectedthreadex_detection_thread_creation_trampolines.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/get_injectedthreadex_detection_thread_creation_trampolines.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/get_injectedthreadex_detection_thread_creation_trampolines.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/get_injectedthreadex_detection_thread_creation_trampolines.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_gooey_with_guloader_downloader.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_gooey_with_guloader_downloader.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_gooey_with_guloader_downloader.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_gooey_with_guloader_downloader.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_the_most_out_of_transforms_in_elastic.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_the_most_out_of_transforms_in_elastic.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_the_most_out_of_transforms_in_elastic.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/getting_the_most_out_of_transforms_in_elastic.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ghostpulse_haunts_victims_using_defense_evasion_bag_o_tricks.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ghostpulse_haunts_victims_using_defense_evasion_bag_o_tricks.md similarity index 98% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ghostpulse_haunts_victims_using_defense_evasion_bag_o_tricks.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ghostpulse_haunts_victims_using_defense_evasion_bag_o_tricks.md index a96832f5de73c..21392357f1322 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ghostpulse_haunts_victims_using_defense_evasion_bag_o_tricks.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ghostpulse_haunts_victims_using_defense_evasion_bag_o_tricks.md @@ -10,8 +10,15 @@ image: "photo-edited-05@2x.jpg" category: - slug: attack-pattern - slug: malware-analysis +tags: + - ghostpulse + - ref8207 --- +## Update + +In October 2024, we released an update to stage 2 of GHOSTPULSE that includes new evasion techniques. You can check it out [here](https://www.elastic.co/security-labs/tricks-and-treats). + ## Preamble Elastic Security Labs has observed a campaign to compromise users with signed [MSIX](https://learn.microsoft.com/en-us/windows/msix/overview) application packages to gain initial access. The campaign leverages a stealthy loader we call GHOSTPULSE which decrypts and injects its final payload to evade detection. @@ -71,7 +78,7 @@ Next, GHOSTPULSE builds an Import Address Table (IAT) incorporating essential AP ![Stage 1 hashing algorithm](/assets/images/ghostpulse-haunts-victims-using-defense-evasion-bag-o-tricks/image13.png) -``` +``` python # Python code used for API hashing def calculate_api_name_hash(api_name): value = 0 @@ -82,7 +89,7 @@ def calculate_api_name_hash(api_name): Below is the Stage 1 IAT structure reconstructed from the GHOSTPULSE malware sample, provided for reference: -``` +``` c struct core_stage1_IAT { void *kernel32_LoadLibraryW; @@ -124,7 +131,7 @@ It then proceeds with its operation by reading and parsing the file named `hando The initial phase involves identifying the commencement of the encrypted data by searching for the IDAT string in the file, which is followed by a distinctive 4-byte tag value. If the tag corresponds to the value stored in the malware's configuration, the malware extracts the bytes of the encrypted blob. The initial structure is as follows: -``` +``` c struct initial_idat_chunk { DWORD size_of_chunk; @@ -145,7 +152,7 @@ struct initial_idat_chunk In the second step, the malware locates the next occurrence of IDAT and proceeds to extract the encrypted chunks that follow it which has the following format: -``` +``` c struct next_idat_chunk { DWORD size_of_chunk; @@ -174,7 +181,7 @@ This technique is known as “module stomping”. The following image shows the Stage 2 initiates by constructing a new IAT structure and utilizing the CRC32 algorithm as the API name hashing mechanism. The following is the IAT structure of stage 2: -``` +``` c struct core_stage2_IAT { void *kernel32_module; @@ -244,7 +251,7 @@ Concerning NT functions, the malware reads the ntdll.dll library from disk and w The following is the structure used by the malware to store NT API offsets: -``` +``` c struct __unaligned __declspec(align(4)) core_stage2_nt_offsets_table { __int64 ntdll_module; diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/globally_distributed_stealers.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/globally_distributed_stealers.md similarity index 99% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/globally_distributed_stealers.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/globally_distributed_stealers.md index 65a42ae95c13b..5a452164b6a10 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/globally_distributed_stealers.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/globally_distributed_stealers.md @@ -181,7 +181,7 @@ To fully leverage detection capabilities listed below for these threats with Ela - [Connection to WebService by an Unsigned Binary](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/command_and_control_connection_to_webservice_by_an_unsigned_binary.toml) - [Connection to WebService by a Signed Binary Proxy](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/command_and_control_connection_to_webservice_by_a_signed_binary_proxy.toml) - - [Suspicious DNS Query from Mounted Virtual Disk](https://github.com/elastic/endpoint-rules/blob/main/rules/command_and_control_execution_wevsvc_from_virtual_disk.toml) + - [Suspicious DNS Query from Mounted Virtual Disk](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/windows/command_and_control_suspicious_dns_query_from_mounted_virtual_disk.toml) - [Suspicious Access to Web Browser Credential Stores](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/credential_access_suspicious_access_to_web_browser_credential_stores.toml) - [Web Browser Credential Access via Unsigned Process](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/credential_access_web_browser_credential_access_via_unsigned_process.toml) - [Access to Browser Credentials from Suspicious Memory](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/credential_access_access_to_browser_credentials_from_suspicious_memory.toml) diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/going_coast_to_coast_climbing_the_pyramid_with_the_deimos_implant.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/going_coast_to_coast_climbing_the_pyramid_with_the_deimos_implant.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/going_coast_to_coast_climbing_the_pyramid_with_the_deimos_implant.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/going_coast_to_coast_climbing_the_pyramid_with_the_deimos_implant.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/google_cloud_for_cyber_data_analytics.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/google_cloud_for_cyber_data_analytics.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/google_cloud_for_cyber_data_analytics.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/google_cloud_for_cyber_data_analytics.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_one.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_one.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_one.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_one.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_two.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_two.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_two.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/google_workspace_attack_surface_part_two.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/grimresource.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/grimresource.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/grimresource.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/grimresource.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/gtr_multipart_series_overview.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/gtr_multipart_series_overview.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/gtr_multipart_series_overview.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/gtr_multipart_series_overview.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/handy_elastic_tools_for_the_enthusiastic_detection_engineer.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/handy_elastic_tools_for_the_enthusiastic_detection_engineer.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/handy_elastic_tools_for_the_enthusiastic_detection_engineer.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/handy_elastic_tools_for_the_enthusiastic_detection_engineer.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_lateral_movement_using_event_query_language.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_lateral_movement_using_event_query_language.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_lateral_movement_using_event_query_language.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_lateral_movement_using_event_query_language.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_1.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_1.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_1.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_1.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_2.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_2.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_2.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_persistence_using_elastic_security_part_2.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_suspicious_windows_libraries_for_execution_and_evasion.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_suspicious_windows_libraries_for_execution_and_evasion.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_suspicious_windows_libraries_for_execution_and_evasion.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_for_suspicious_windows_libraries_for_execution_and_evasion.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory_net_attacks.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory_net_attacks.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory_net_attacks.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/hunting_memory_net_attacks.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/icedid_configuration_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/icedid_configuration_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/icedid_configuration_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/icedid_configuration_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/icedids_network_infrastructure_is_alive_and_well.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/icedids_network_infrastructure_is_alive_and_well.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/icedids_network_infrastructure_is_alive_and_well.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/icedids_network_infrastructure_is_alive_and_well.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/identifying_beaconing_malware_using_elastic.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/identifying_beaconing_malware_using_elastic.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/identifying_beaconing_malware_using_elastic.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/identifying_beaconing_malware_using_elastic.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ingesting_threat_data_with_the_threat_intel_filebeat_module.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ingesting_threat_data_with_the_threat_intel_filebeat_module.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ingesting_threat_data_with_the_threat_intel_filebeat_module.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ingesting_threat_data_with_the_threat_intel_filebeat_module.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/inital_research_of_jokerspy.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/inital_research_of_jokerspy.md similarity index 97% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/inital_research_of_jokerspy.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/inital_research_of_jokerspy.md index 4adcfcecaa03a..12c65e414ddd5 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/inital_research_of_jokerspy.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/inital_research_of_jokerspy.md @@ -173,11 +173,6 @@ Techniques and Sub techniques represent how an adversary achieves a tactical goa ## Detection logic -### Prevention - -- [Non-Native Dylib Extracted into Suspicious Directory](https://github.com/elastic/endpoint-rules/blob/1006a4d9a3d95e35149a3640fadf68a32c02afa9/rules/execution_dylib_extracted_to_new_directory.toml#L10) -- [Potential Privilege Escalation via TCC bypass with fake TCC.db](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/privilege_escalation_potential_privilege_escalation_via_tcc_bypass_with_fake_tcc.db.toml) - ### YARA Elastic Security has created YARA rules to identify this activity. Below are YARA rules to identify the JOKERSPY backdoor and SwiftBelt tool. diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/inside_microsofts_plan_to_kill_pplfault.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/inside_microsofts_plan_to_kill_pplfault.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/inside_microsofts_plan_to_kill_pplfault.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/inside_microsofts_plan_to_kill_pplfault.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/into_the_weeds_how_we_run_detonate.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/into_the_weeds_how_we_run_detonate.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/into_the_weeds_how_we_run_detonate.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/into_the_weeds_how_we_run_detonate.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/introducing_the_ref5961_intrusion_set.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/introducing_the_ref5961_intrusion_set.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/introducing_the_ref5961_intrusion_set.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/introducing_the_ref5961_intrusion_set.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/introduction_to_hexrays_decompilation_internals.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/introduction_to_hexrays_decompilation_internals.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/introduction_to_hexrays_decompilation_internals.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/introduction_to_hexrays_decompilation_internals.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/invisible_miners_unveiling_ghostengine.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/invisible_miners_unveiling_ghostengine.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/invisible_miners_unveiling_ghostengine.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/invisible_miners_unveiling_ghostengine.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/itw_windows_lpe_0days_insights_and_detection_strategies.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/itw_windows_lpe_0days_insights_and_detection_strategies.md similarity index 98% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/itw_windows_lpe_0days_insights_and_detection_strategies.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/itw_windows_lpe_0days_insights_and_detection_strategies.md index 3a0ef112df819..7801e7762e00e 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/itw_windows_lpe_0days_insights_and_detection_strategies.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/itw_windows_lpe_0days_insights_and_detection_strategies.md @@ -137,7 +137,7 @@ process.name :"dwm.exe" and user.id:S-1-5-90-0-* and ![DWM dropping reflective DLL to disk post exploit execution](/assets/images/itw-windows-lpe-0days-insights-and-detection-strategies/image5.png) -Below is a [detection](https://github.com/elastic/endpoint-rules/blob/20833cbeaac4284ecf9818b44438bda4bc3cae18/rules/privilege_escalation_logonui_dcomp.toml) EQL query that looks for the LogonUI DLL load hijack: +Below is a [detection](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/windows/privilege_escalation_potential_privilege_escalation_via_logonui.toml) EQL query that looks for the LogonUI DLL load hijack: ``` library where process.executable : "?:\\Windows\\System32\\LogonUI.exe" and @@ -282,7 +282,7 @@ api where process.pid != 4 and process.Ext.api.name : "WriteProcessMemory" process.Ext.api.parameters.address > 281474976710655 ``` -Here is an example of these [alerts](https://github.com/elastic/endpoint-rules/blob/20833cbeaac4284ecf9818b44438bda4bc3cae18/rules/privilege_escalation_api_kernel_address_space.toml) triggering on exploits leveraging this primitive: +Here is an example of these [alerts](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/windows/privilege_escalation_suspicious_kernel_mode_address_manipulation.tom) triggering on exploits leveraging this primitive: ![Detection of PreviousMode abuse](/assets/images/itw-windows-lpe-0days-insights-and-detection-strategies/image7.png) diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/katz_and_mouse_game.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/katz_and_mouse_game.md new file mode 100644 index 0000000000000..b9db8c5a904ad --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/katz_and_mouse_game.md @@ -0,0 +1,414 @@ +--- +title: "Katz and Mouse Game: MaaS Infostealers Adapt to Patched Chrome Defenses" +slug: "katz-and-mouse-game" +date: "2024-10-28" +description: "Elastic Security Labs breaks down bypass implementations from the infostealer ecosystem’s reaction to Chrome 127's Application-Bound Encryption scheme." +author: + - slug: jia-yu-chan + - slug: salim-bitam + - slug: daniel-stepanic + - slug: samir-bousseaden + - slug: cyril-francois + - slug: seth-goodwin +image: "Security Labs Images 2.jpg" +category: + - slug: malware-analysis +tags: + - infostealer + - chrome + - cookie + - VIDAR + - STEALC + - LUMMA + - METASTEALER + - PHEMEDRONE + - XENOSTEALER +--- + +# Introduction + +In July, Google [announced](https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html) a new protection mechanism for cookies stored within Chrome on Windows, known as Application-Bound Encryption. There is no doubt this security implementation has raised the bar and directly impacted the malware ecosystem. After months with this new feature, many infostealers have written new code to bypass this protection (as the Chrome Security Team predicted) in order to stay competitive in the market and deliver capabilities that reliably retrieve cookie data from Chrome browsers. + +Elastic Security Labs has been tracking a subset of this activity, identifying multiple techniques used by different malware families to circumvent App-Bound Encryption. While the ecosystem is still evolving in light of this pressure, our goal is to share technical details that help organizations understand and defend against these techniques. In this article, we will cover the different methods used by the following infostealer families: + + - STEALC/VIDAR + - METASTEALER + - PHEMEDRONE + - XENOSTEALER + - LUMMA + +# Key takeaways + + - Latest versions of infostealers implement bypasses around Google’s recent cookie protection feature using Application-Bound Encryption + - Techniques include integrating offensive security tool ChromeKatz, leveraging COM to interact with Chrome services and decrypt the app-bound encryption key, and using the remote debugging feature within Chrome + - Defenders should actively monitor for different cookie bypass techniques against Chrome on Windows in anticipation of future mitigations and bypasses likely to emerge in the near- to mid-term + - Elastic Security provides mitigations through memory signatures, behavioral rules, and hunting opportunities to enable faster identification and response to infostealer activity + +# Background + +Generically speaking, cookies are used by web applications to store visitor information in the browser the visitor uses to access that web app. This information helps the web app track that user, their preferences, and other information from location to location– even across devices. + +The authentication token is one use of the client-side data storage structures that enables much of how modern web interactivity works. These tokens are stored by the browser after the user has successfully authenticated with a web application. After username and password, after multifactor authentication (MFA) via one-time passcodes or biometrics, the web application “remembers” your browser is you via the exchange of this token with each subsequent web request. + +A malicious actor who gets access to a valid authentication token can reuse it to impersonate the user to that web service with the ability to take over accounts, steal personal or financial information, or perform other actions as that user such as transfer financial assets. + +Cybercriminals use infostealers to steal and commoditize this type of information for their financial gain. + +## Google Chrome Cookie Security + +Legacy versions of Google Chrome on Windows used the Windows native [Data Protection API](https://learn.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection) (DPAPI) to encrypt cookies and protect them from other user contexts. This provided adequate protection against several attack scenarios, but any malicious software running in the targeted user’s context could decrypt these cookies using the DPAPI methods directly. Unfortunately, this context is exactly the niche that infostealers often find themselves in after social engineering for initial access. The DPAPI scheme is now [well known to attackers](https://posts.specterops.io/operational-guidance-for-offensive-user-dpapi-abuse-1fb7fac8b107) with several attack vectors; from local decryption using the API, to stealing the masterkey and decrypting remotely, to abusing the domain-wide backup DPAPI key in an enterprise environment. + +With the release of Chrome 127 in July 2024, Google [implemented](https://developer.chrome.com/release-notes/127) Application-Bound Encryption of browser data. This mechanism directly addressed many common DPAPI attacks against Windows Chrome browser data–including cookies. It does this by storing the data in encrypted datafiles, and using a service running as SYSTEM to verify any decryption attempts are coming from the Chrome process before returning the key to that process for decryption of the stored data. + +![Chrome 127 Application-Bound Encryption Scheme. Source: https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html](/assets/images/katz-and-mouse-game/image5.png) + + + +While it is our view that this encryption scheme is not a panacea to protect all browser data (as the Chrome Security Team acknowledges in their release) we do feel it has been successful in driving malware authors to TTPs that are more overtly malicious, and easier for defenders to identify and respond to. + +# Stealer Bypass Techniques, Summarized + +The following sections will describe specific infostealer techniques used to bypass Google’s App-Bound Encryption feature as observed by Elastic. Although this isn’t an exhaustive compilation of bypasses, and development of these families is ongoing, they represent an interesting dynamic within the infostealer space showing how malware developers responded to Google’s recently updated security control. The techniques observed by our team include: + + - Remote debugging via Chrome’s DevTools Protocol + - Reading process memory of Chrome network service process (ChromeKatz and ```ReadProcessMemory``` (RPM)) + - Elevating to ```SYSTEM``` then decrypting ```app_bound_encryption_key``` with the ```DecryptData``` method of ```GoogleChromeElevationService``` through COM + +![Timeline of events](/assets/images/katz-and-mouse-game/image30.png) + +## STEALC/VIDAR + +Our team observed new code introduced to STEALC/VIDAR related to the cookie bypass technique around September 20th. These were atypical samples that stood out from previous versions and were implemented as embedded 64-bit PE files along with conditional checks. Encrypted values in the SQLite databases where Chrome stores its data are now prefixed with v20, indicating that the values are now encrypted using application-bound encryption. + +> [STEALC](https://malpedia.caad.fkie.fraunhofer.de/details/win.stealc) was introduced in 2023 and was developed with “heavy inspiration” from other more established stealers such as [RACOON](https://malpedia.caad.fkie.fraunhofer.de/details/win.raccoon) and [VIDAR](https://malpedia.caad.fkie.fraunhofer.de/details/win.vidar). STEALC and VIDAR have continued concurrent development, and in the case of App-Bound Encryption bypasses have settled on the same implementation. + +During the extraction of encrypted data from the databases the malware checks for this prefix. If it begins with ```v20```, a child process is spawned using the embedded PE file in the ```.data``` section of the binary. This program is responsible for extracting unencrypted cookie values residing in one of Chrome's child processes. + +![Embedded PE file](/assets/images/katz-and-mouse-game/image2.png) + +This embedded binary creates a hidden desktop via ```OpenDesktopA``` / ```CreateDesktopA``` then uses ```CreateToolhelp32Snapshot``` to scan and terminate all ```chrome.exe``` processes. A new ```chrome.exe``` process is then started with the new desktop object. Based on the installed version of Chrome, the malware selects a signature pattern for the Chromium feature [CookieMonster](https://www.chromium.org/developers/design-documents/network-stack/cookiemonster/), an internal component used to manage cookies. + +![Signature pattern for ```CookieMonster```](/assets/images/katz-and-mouse-game/image38.png) + +We used the [signature patterns](https://github.com/Meckazin/ChromeKatz/blob/9152004174e9a0b2d092c70ebc75efbf80fa1098/CookieKatz/Main.cpp#L123) to pivot to existing code developed for an offensive security tool called [ChromeKatz](https://github.com/Meckazin/ChromeKatz). At this time, the patterns have been removed from the ChromeKatz repository and replaced with a new technique. Based on our analysis, the malware author appears to have reimplemented ChromeKatz within STEALC in order to bypass the app-bound encryption protection feature. + +Once the malware identifies a matching signature, it enumerates Chrome’s child processes to check for the presence of the ```--utility-sub-type=network.mojom.NetworkService``` command-line flag. This flag indicates that the process is the network service responsible for handling all internet communication. It becomes a prime target as it holds the sensitive data the attacker seeks, as described in MDSec’s [post](https://www.mdsec.co.uk/2021/01/breaking-the-browser-a-tale-of-ipc-credentials-and-backdoors/). It then returns a handle for that specific child process. + +![Enumerating for Chrome’s network service](/assets/images/katz-and-mouse-game/image37.png) + +Next, it enumerates each module in the network service child process to find and retrieve the base address and size of ```chrome.dll``` loaded into memory. STEALC uses [```CredentialKatz::FindDllPattern```](https://github.com/Meckazin/ChromeKatz/blob/767047dcf8f53c70be5e3e0859c5eee3f129d758/CredentialKatz/Memory.cpp#L280) and [```CookieKatz::FindPattern```](https://github.com/Meckazin/ChromeKatz/blob/767047dcf8f53c70be5e3e0859c5eee3f129d758/CookieKatz/Memory.cpp#L435) to locate the CookieMonster instances. There are 2 calls to ```CredentialKatz::FindDllPattern```. + +![Calls to ```CredentialKatz::FindDllPattern```](/assets/images/katz-and-mouse-game/image17.png) + +In the first call to ```CredentialKatz::FindDllPattern```, it tries to locate one of the signature patterns (depending on the victim’s Chrome version) in ```chrome.dll```. Once found, STEALC now has a reference pointer to that memory location where the byte sequence begins which is the function ```net::CookieMonster::~CookieMonster```, destructor of the ```CookieMonster``` class. + +![Byte sequence for ```net::CookieMonster::~CookieMonster``` found in ```chrome.dll```](/assets/images/katz-and-mouse-game/image14.png) + +The second call to ```CredentialKatz::FindDllPattern``` passes in the function address for ```net::CookieMonster::~CookieMonster(void)``` as an argument for the byte sequence search, resulting in STEALC having a pointer to ```CookieMonster```’s Virtual Function Pointer struct. + +![```CookieMonster```’s vtable in ```chrome.dll```](/assets/images/katz-and-mouse-game/image19.png) + +The following method used by STEALC is again, identical to ChromeKatz, where it locates ```CookieMonster``` instances by scanning memory chunks in the ```chrome.dll``` module for pointers referencing the ```CookieMonster``` vtable. Since the vtable is a constant across all objects of a given class, any ```CookieMonster``` object will have the same vtable pointer. When a match is identified, STEALC treats the memory location as a ```CookieMonster``` instance and stores its address in an array. + +![Using ```CookieKatz::FindPattern``` to locate ```CookieMonster``` instances](/assets/images/katz-and-mouse-game/image16.png) + +For each identified ```CookieMonster``` instance, STEALC accesses the internal ```CookieMap``` structure located at an offset of ```+0x30```, and which is a binary tree. Each node within this tree contains pointers to ```CanonicalCookieChrome``` structures. ```CanonicalCookieChrome``` structures hold unencrypted cookie data, making it accessible for extraction. STEALC then initiates a tree traversal by passing the first node into a dedicated traversal function. + +![Initiating ```CookieMap``` tree traversal for each ```CookieMonster``` instance found](/assets/images/katz-and-mouse-game/image20.png) + +For each node, it calls ```ReadProcessMemory``` to access the ```CanonicalCookieChrome``` structure from the target process’s memory, then further processing it in ```jy::GenerateExfilString```. + +![```CookieMap``` traversal subroutine](/assets/images/katz-and-mouse-game/image31.png) + +STEALC formats the extracted cookie data by converting the expiration date to UNIX format and verifying the presence of the ```HttpOnly``` and ```Secure``` flags. It then appends details such as the cookie's name, value, domain, path, and the ```HttpOnly``` and ```Secure``` into a final string for exfiltration. [```OptimizedString```](https://github.com/Meckazin/ChromeKatz/blob/9152004174e9a0b2d092c70ebc75efbf80fa1098/CookieKatz/Memory.cpp#L10) structs are used in place of strings, so string values can either be the string itself, or if the string length is greater than 23, it will point to the address storing the string. + +![Constructing string for data exfiltration](/assets/images/katz-and-mouse-game/image23.png) + +## METASTEALER + +[METASTEALER](https://malpedia.caad.fkie.fraunhofer.de/details/win.metastealer), first observed in 2022, recently upgraded its ability to steal Chrome data, bypassing Google’s latest mitigation efforts. On September 30th, the malware authors announced this update via their Telegram channel, highlighting its enhanced capability to extract sensitive information, including cookies, despite the security changes in Chrome's version ```129+```. + +![METASTEALER announcement and translation](/assets/images/katz-and-mouse-game/image26.png) + +![source: https://x.com/g0njxa/status/1840761619686568319/](/assets/images/katz-and-mouse-game/image28.png) + +The [first sample](https://www.virustotal.com/gui/file/973a9056040af402d6f92f436a287ea164fae09c263f80aba0b8d5366ed9957a) observed in the wild by our team was discovered on September 30th, the same day the authors promoted the update. Despite claims that the malware operates without needing ```Administrator``` privileges, our testing revealed it does require elevated access, as it attempts to impersonate the ```SYSTEM``` token during execution. + +![Code comparison between an old and a new version of the family](/assets/images/katz-and-mouse-game/image11.png) + +As shown in the screenshots above, the ```get_decryption``` method now includes a new Boolean parameter. This value is set to ```TRUE``` if the encrypted data (cookie) begins with the ```v20``` prefix, indicating that the cookie is encrypted using Chrome's latest encryption method. The updated function retains backward compatibility, still supporting the decryption of cookies from older Chrome versions if present on the infected machine. + +The malware then attempts to access the ```Local State``` or ```LocalPrefs.json``` files located in the Chrome profile directory. Both files are JSON formatted and store encryption keys (```encrypted_key```) for older Chrome versions and ```app_bound_encrypted_key``` for newer ones. If the flag is set to ```TRUE```, the malware specifically uses the ```app_bound_encrypted_key``` to decrypt cookies in line with the updated Chrome encryption method. + +![```app_bound_encrypted_key``` extracted from Chrome json file](/assets/images/katz-and-mouse-game/image13.png) + +In this case, the malware first impersonates the ```SYSTEM``` token using a newly introduced class called ```ContextSwitcher```. + +![New class for TOKEN impersonation](/assets/images/katz-and-mouse-game/image35.png) + +It then decrypts the key by creating an instance via the COM of the Chrome service responsible for decryption, named ```GoogleChromeElevationService```, using the CLSID ```708860E0-F641-4611-8895-7D867DD3675B```. Once initialized, it invokes the [```DecryptData```](https://github.com/chromium/chromium/blob/225f82f8025e4f93981310fd33daa71dc972bfa9/chrome/elevation_service/elevator.cc#L155) method to decrypt the ```app_bound_encrypted_key``` key which will be used to decrypt the encrypted cookies. + +![New class ```ComInvoker``` to invoke methods from ```GoogleChromeElevationService``` service](/assets/images/katz-and-mouse-game/image8.png) + +METASTEALER employs a technique similar to the one demonstrated in a [gist](https://gist.github.com/snovvcrash/caded55a318bbefcb6cc9ee30e82f824) shared [on X](https://x.com/snovvcrash/status/1839715912812802162) on September 27th, which may have served as inspiration for the malware authors. Both approaches leverage similar methods to bypass Chrome's encryption mechanisms and extract sensitive data. + +## PHEMEDRONE + +This [open-source stealer](https://malpedia.caad.fkie.fraunhofer.de/details/win.phemedrone_stealer) caught the world’s attention earlier in the year through its usage of a Windows SmartScreen vulnerability (CVE-2023-36025). While its development is still occurring on Telegram, our team found a recent [release](https://www.virustotal.com/gui/file/1067d27007ea862ddd68e90ef68b6d17fa18f9305c09f72bad04d00102a60b8c) (2.3.2) submitted at the end of September including new cookie grabber functionality for Chrome. + +![```README.txt``` within PHEMEDRONE project](/assets/images/katz-and-mouse-game/image10.png) + +The malware first enumerates the different profiles within Chrome, then performs a browser check using function (```BrowserHelpers.NewEncryption```) checking for the Chrome browser with a version greater than or equal to ```127```. + +![Chrome version verification in PHEMEDRONE](/assets/images/katz-and-mouse-game/image27.png) + +If the condition matches, PHEMEDRONE uses a combination of helper functions to extract the cookies. + +![High-level functions used cookie extraction in PHEMEDRONE](/assets/images/katz-and-mouse-game/image34.png) + +By viewing the ```ChromeDevToolsWrapper``` class and its different functions, we can see that PHEMEDRONE sets up a remote debugging session within Chrome to access the cookies. The default port (```9222```) is used along with window-position set to ```-2400```,```-2400``` which is set off-screen preventing any visible window from alerting the victim. + +![New Chrome process in remote debug mode](/assets/images/katz-and-mouse-game/image15.png) + +Next, the malware establishes a WebSocket connection to Chrome’s debugging interface making a request using deprecated Chrome DevTools Protocol method (```Network.getAllCookies```). + +![Chrome DevTools Protocol used to retrieve cookies](/assets/images/katz-and-mouse-game/image24.png) + +The cookies are then returned from the previous request in plaintext, below is a network capture showing this behavior: + +![Cookie data within network capture](/assets/images/katz-and-mouse-game/image32.png) + +## XENOSTEALER + +[XENOSTEALER](https://github.com/moom825/XenoStealer/) is an open-source infostealer hosted on GitHub. It appeared in July 2024 and is under active development at the time of this publication. Notably, the Chrome bypass feature was committed on September 26, 2024. + +The approach taken by XENOSTEALER is similar to that of METASTEALER. It first parses the JSON file under a given Chrome profile to extract the ```app_bound_encrypted_key```. However, the decryption process occurs within a Chrome process. To achieve this, XENOSTEALER launches an instance of ```Chrome.exe```, then injects code using a helper class called [```SharpInjector```](https://github.com/moom825/XenoStealer/blob/d1c7e242183a2c8582c179a1b546f0a5cdff5f75/XenoStealer/Injector/SharpInjector.cs), passing the encrypted key as a parameter. + +The injected code subsequently calls the ```DecryptData``` method from the ```GoogleChromeElevationService``` to obtain the decrypted key. + +![Source code of the injected code](/assets/images/katz-and-mouse-game/image29.png) + +## LUMMA + +In mid-October, the latest version of [LUMMA](https://malpedia.caad.fkie.fraunhofer.de/details/win.lumma) implemented a new method to bypass Chrome cookie protection, as reported by [@g0njxa](https://x.com/g0njxa). + +![](/assets/images/katz-and-mouse-game/image40.png) + +We analyzed a recent version of LUMMA, confirming that it managed to successfully recover the cookie data from the latest version of Google Chrome (```130.0.6723.70```). LUMMA first creates a visible Chrome process via ```Kernel32!CreateProcessW```. + +![Dump of ```CreateProcessW lpApplicationName``` parameter](/assets/images/katz-and-mouse-game/image3.png) + +This activity was followed up in the debugger with multiple calls to ```NtReadVirtualMemory``` where we identified LUMMA searching within the Chrome process for ```chrome.dll```. + +![LUMMA seeks ```chrome.dll``` in Chrome](/assets/images/katz-and-mouse-game/image7.png) + +Once found, the malware copies the ```chrome.dll``` image to its own process memory using ```NtReadVirtualMemory```. In a similar fashion to the ChromeKatz technique, Lumma leverages pattern scanning to target Chrome’s ```CookieMonster``` component. + +![Lumma’s pattern scanning](/assets/images/katz-and-mouse-game/image36.png) + +Lumma uses an obfuscated signature pattern to pinpoint the ```CookieMonster``` functionality: + +``` +3Rf5Zn7oFA2a????k4fAsdxx????l8xX5vJnm47AUJ8uXUv2bA0s34S6AfFA????kdamAY3?PdE????6G????L8v6D8MJ4uq????k70a?oAj7a3????????K3smA????maSd?3l4 +``` + +Below is the YARA rule after de-obfuscation: + +``` +rule lumma_stealer +{ + meta: + author = "Elastic Security Labs" + strings: + $lumma_pattern = { 56 57 48 83 EC 28 89 D7 48 89 CE E8 ?? ?? ?? ?? 85 FF 74 08 48 89 F1 E8 ?? ?? ?? ?? 48 89 F0 48 83 C4 28 5F 5E C3 CC CC CC CC CC CC CC CC CC CC 56 57 48 83 EC 38 48 89 CE 48 8B 05 ?? ?? ?? ?? 48 31 E0 48 89 44 24 ?? 48 8D 79 ?? ?? ?? ?? 28 E8 ?? ?? ?? ?? 48 8B 46 20 48 8B 4E 28 48 8B 96 ?? ?? ?? ?? 4C 8D 44 24 ?? 49 89 10 48 C7 86 ?? ?? ?? ?? ?? ?? ?? ?? 48 89 FA FF 15 ?? ?? ?? ?? 48 8B 4C 24 ?? 48 31 E1} + condition: + all of them +} +``` + +After decoding and searching for the pattern in ```chrome.dll```, this leads to the ```CookieMonster``` destructor ([```net::CookieMonster::~CookieMonster```](https://chromium.googlesource.com/chromium/src/net/+/master/cookies/cookie_monster.cc#657)). + +![Lumma pattern match on ```CookieMonster```](/assets/images/katz-and-mouse-game/image25.png) + +The cookies are then identified in memory and dumped out in clear text from the Chrome process. + +![LUMMA dumping the cookie in clear text from Chrome](/assets/images/katz-and-mouse-game/image21.png) + +Once completed, LUMMA sends out the cookies along with the other requested data as multiple zip files (xor encrypted and base64 encoded) to the C2 server. + +![Received stolen cookies on the C2 side](/assets/images/katz-and-mouse-game/image12.png) + +# Detection + +Below are the following behavioral detections that can be used to identify techniques used by information stealers: + + - [Web Browser Credential Access via Unusual Process](https://github.com/elastic/protections-artifacts/blob/da25aa57994ee265583227dbe6fe02261b65415c/behavior/rules/windows/credential_access_web_browser_credential_access_via_unusual_process.toml#L8) + - [Web Browser Credential Access via Unsigned Process](https://github.com/elastic/protections-artifacts/blob/da25aa57994ee265583227dbe6fe02261b65415c/behavior/rules/windows/credential_access_web_browser_credential_access_via_unsigned_process.toml#L8) + - [Access to Browser Credentials from Suspicious Memory](https://github.com/elastic/protections-artifacts/blob/da25aa57994ee265583227dbe6fe02261b65415c/behavior/rules/windows/credential_access_access_to_browser_credentials_from_suspicious_memory.toml#L8) + - [Failed Access Attempt to Web Browser Files](https://github.com/elastic/protections-artifacts/blob/da25aa57994ee265583227dbe6fe02261b65415c/behavior/rules/windows/credential_access_failed_access_attempt_to_web_browser_files.toml#L8) + - [Browser Debugging from Unusual Parent](https://github.com/elastic/protections-artifacts/blob/da25aa57994ee265583227dbe6fe02261b65415c/behavior/rules/windows/credential_access_browser_debugging_from_unusual_parent.toml#L3) + - [Potential Browser Information Discovery](https://github.com/elastic/protections-artifacts/blob/da25aa57994ee265583227dbe6fe02261b65415c/behavior/rules/windows/discovery_potential_browser_information_discovery.toml#L8) + +Additionally, the following queries can be used for hunting diverse related abnormal behaviors: + +## Cookies access by an unusual process + +This query uses file open events and aggregate accesses by process, then looks for ones that are observed in unique hosts and with a low total access count: + +``` sql +FROM logs-endpoint.events.file-default* +| where event.category == "file" and event.action == "open" and file.name == "Cookies" and file.path like "*Chrome*" +| keep file.path, process.executable, agent.id +| eval process_path = replace(to_lower(process.executable), """c:\\users\\[a-zA-Z0-9\.\-\_\$]+\\""", "c:\\\\users\\\\user\\\\") +| stats agents_count = COUNT_DISTINCT(agent.id), access_count= count(*) by process_path +| where agents_count <= 2 and access_count <=2 +``` + +Below example of matches from diverse information stealers including the updated ones with new Chrome cookies stealing capabilities: + +![ES|QL query results for suspicious browser cookies file access](/assets/images/katz-and-mouse-game/image22.png) + +METASTEALER behavior tends to first terminate all running chrome instances then calls [```CoCreateInstance```](https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-cocreateinstance) to instantiate the Google Chrome [elevation service](https://chromium.googlesource.com/chromium/src/+/main/chrome/elevation_service/), this series of events can be expressed with the following EQL query: + +``` sql +sequence by host.id with maxspan=1s +[process where event.action == "end" and process.name == "chrome.exe"] with runs=5 +[process where event.action == "start" and process.name == "elevation_service.exe"] +``` + +![EQL query results for suspicious browser termination](/assets/images/katz-and-mouse-game/image4.png) + +The previous hunt indicates suspicious agents but doesn't identify the source process. By [enabling registry object access auditing through event 4663](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) on the Chrome Elevation service CLSID registry key ```{708860E0-F641-4611-8895-7D867DD3675B}```, we can detect unusual processes attempting to access that key: + +![Google Chrome Elevation COM registry access](/assets/images/katz-and-mouse-game/image9.png) + +``` sql +FROM logs-system.security-default* | where event.code == "4663" and winlog.event_data.ObjectName == "\\REGISTRY\\MACHINE\\SOFTWARE\\Classes\\CLSID\\{708860E0-F641-4611-8895-7D867DD3675B}" and not winlog.event_data.ProcessName in ("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe") and not winlog.event_data.ProcessName like "C:\\\\Program Files\\\\Google\\\\Chrome\\\\Application\\\\*\\\\elevation_service.exe" | stats agents_count = COUNT_DISTINCT(agent.id), access_count= count(*) by winlog.event_data.ProcessName | where agents_count <= 2 and access_count <=2 +``` + +Below is an example of matches on the METASTEALER malware while calling ```CoCreateInstance (CLSID_Elevator)```: + +![ES|QL query results for suspicious access to chrome elevation service registry](/assets/images/katz-and-mouse-game/image39.png) + +The [PHEMEDRONE](https://malpedia.caad.fkie.fraunhofer.de/details/win.phemedrone_stealer) stealer uses the [known](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) browser debugging method to collect cookies via Chromium API, this can be observed in the following screenshot where we can see an instance of NodeJs communicating with a browser instance with debugging enabled over port ```9222```: + +![PHEMEDRONE - network connection to chrome over port ```9222```](/assets/images/katz-and-mouse-game/image33.png) + +The following EQL query can be used to look for unusual processes performing similar behavior: + +``` sql +sequence by host.id, destination.port with maxspan=5s +[network where event.action == "disconnect_received" and + network.direction == "ingress" and + process.executable in~ ("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", +"C:\\Program Files\\Microsoft\\Edge\\Application\\msedge.exe") and + source.address like "127.*" and destination.address like "127.*"] +[network where event.action == "disconnect_received" and network.direction == "egress" and not + process.executable in~ ("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", +"C:\\Program Files\\Microsoft\\Edge\\Application\\msedge.exe") and source.address like "127.*" and destination.address like "127.*"] +``` + +![EQL query results for browser debugging activity](/assets/images/katz-and-mouse-game/image1.png) + +## Chrome Browser Spawned from an Unusual Parent + +The STEALC sample that uses ChromeKatz implementation spawns an instance of Google Chrome to load the user default profile, while looking for normal parent executables, it turns out it’s limited to Chrome signed parents and Explorer.exe, the following ES|QL query can be used to find unusual parents: + +``` sql +FROM logs-endpoint.events.process-* +| where event.category == "process" and event.type == "start" and to_lower(process.name) == "chrome.exe" and process.command_line like "*--profile-directory=Default*" +| eval process_parent_path = replace(to_lower(process.parent.executable), """c:\\users\\[a-zA-Z0-9\.\-\_\$]+\\""", "c:\\\\users\\\\user\\\\") +| stats agents_count = COUNT_DISTINCT(agent.id), total_executions = count(*) by process_parent_path +| where agents_count == 1 and total_executions <= 10 +``` + +![ES|QL query results for chrome browser spawned from an unusual parent](/assets/images/katz-and-mouse-game/image18.png) + +## Untrusted Binaries from Chrome Application folder + +Since the Chrome elevation service [trusts](https://github.com/chromium/chromium/blob/main/chrome/elevation_service/caller_validation.cc#L33-L56) binaries running from the Chrome ```program files``` folder, the following queries can be used to hunt for unsigned or untrusted binaries executed or loaded from there: + +### Unsigned DLLs loaded from google chrome application folder + +``` sql +FROM logs-endpoint.events.library* +| where event.category == "library" and event.action == "load" and to_lower(dll.path) like "c:\\\\program files\\\\google\\\\chrome\\\\application\\\\*" and not (dll.code_signature.trusted == true) +| keep process.executable, dll.path, dll.hash.sha256, agent.id +| stats agents_count = COUNT_DISTINCT(agent.id), total_executions = count(*) by process.executable, dll.path, dll.hash.sha256 +| where agents_count == 1 and total_executions <= 10 +``` + +### Unsigned executable launched from google chrome application folder + +``` sql +FROM logs-endpoint.events.process* +| where event.category == "library" and event.type == "start" and (to_lower(process.executable) like "c:\\\\program files\\\\google\\\\chrome\\\\application\\\\*" or to_lower(process.executable) like "c:\\\\scoped_dir\\\\program files\\\\google\\\\chrome\\\\application\\\\*") +and not (process.code_signature.trusted == true and process.code_signature.subject_name == "Goole LLC") +| keep process.executable,process.hash.sha256, agent.id +| stats agents_count = COUNT_DISTINCT(agent.id), total_executions = count(*) by process.executable, process.hash.sha256 +| where agents_count == 1 and total_executions <= 10 +``` + +![ES|QL query results for malicious DLL loaded by Chrome](/assets/images/katz-and-mouse-game/image6.png) + +# Conclusion + +Google has raised the bar implementing new security controls to protect cookie data within Chrome. As expected, this has caused malware developers to develop or integrate their own bypasses. We hope Google will continue to innovate to provide stronger protection for user data. + +Organizations and defenders should consistently monitor for unusual endpoint activity. While these new techniques may be successful, they are also noisy and detectable with the right security instrumentation, processes, and personnel. + +## Stealer Bypasses and MITRE ATT&CK + +Elastic uses the [MITRE ATT&CK](https://attack.mitre.org/) framework to document common tactics, techniques, and procedures that threats use against enterprise networks. + +### Tactics + +Tactics represent the why of a technique or sub-technique. It is the adversary’s tactical goal: the reason for performing an action. + + - [Credential Access](https://attack.mitre.org/tactics/TA0006/) + - [Defense Evasion](https://attack.mitre.org/tactics/TA0005/) + - [Discovery](https://attack.mitre.org/tactics/TA0007/) + - [Execution](https://attack.mitre.org/tactics/TA0002/) + +### Techniques + +Techniques represent how an adversary achieves a tactical goal by performing an action. + + - [Steal Web Session Cookie](https://attack.mitre.org/techniques/T1539/) + - [Process Injection](https://attack.mitre.org/techniques/T1055/) + - [Credentials from Password Stores](https://attack.mitre.org/techniques/T1555/) + - [System Information Discovery](https://attack.mitre.org/techniques/T1082/) + - [Process Discovery](https://attack.mitre.org/techniques/T1057/) + - [Inter-Process Communication: Component Object Model](https://attack.mitre.org/techniques/T1559/001/) + +## YARA + +Elastic Security has created YARA rules to identify this activity. + + - [Windows.Trojan.Stealc](https://github.com/elastic/protections-artifacts/blob/main/yara/rules/Windows_Trojan_Stealc.yar) + - [Windows.Infostealer.PhemedroneStealer](https://github.com/elastic/protections-artifacts/blob/main/yara/rules/Windows_Infostealer_PhemedroneStealer.yar) + - [Windows.Trojan.MetaStealer](https://github.com/elastic/protections-artifacts/blob/main/yara/rules/Windows_Trojan_MetaStealer.yar) + - [Windows.Trojan.Xeno](https://github.com/elastic/protections-artifacts/blob/main/yara/rules/Windows_Trojan_Xeno.yar) + - [Windows.Trojan.Lumma](https://github.com/elastic/protections-artifacts/blob/main/yara/rules/Windows_Trojan_Lumma.yar) + - [Windows.Infostealer.Generic](https://github.com/elastic/protections-artifacts/blob/main/yara/rules/Windows_Infostealer_Generic.yar) + +## Observations + +All observables are also available for [download](https://github.com/elastic/labs-releases/tree/main/indicators/app-bound_bypass) in both ECS and STIX format. + +The following observables were discussed in this research. + +| Observable | Type | Name | Reference | +|-----|-----|-----|-----| +| 27e4a3627d7df2b22189dd4bebc559ae1986d49a8f4e35980b428fadb66cf23d | SHA-256 | num.exe | STEALC | +| 08d9d4e6489dc5b05a6caa434fc36ad6c1bd8c8eb08888f61cbed094eac6cb37 | SHA-256 | HardCoreCrack.exe | PHEMEDRONE | +| 43cb70d31daa43d24e5b063f4309281753176698ad2aba9c557d80cf710f9b1d | SHA-256 | Ranginess.exe | METASTEALER | +| 84033def9ffa70c7b77ce9a7f6008600c0145c28fe5ea0e56dfafd8474fb8176 | SHA-256 | | LUMMA | +| b74733d68e95220ab0630a68ddf973b0c959fd421628e639c1b91e465ba9299b | SHA-256 | XenoStealer.exe | XENOSTEALER | + + +## References +The following were referenced throughout the above research: + + - [https://developer.chrome.com/release-notes/127](https://developer.chrome.com/release-notes/127) +- [https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html](https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html) diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/kernel_etw_best_etw.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/kernel_etw_best_etw.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/kernel_etw_best_etw.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/kernel_etw_best_etw.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/knotweed_assessment_summary.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/knotweed_assessment_summary.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/knotweed_assessment_summary.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/knotweed_assessment_summary.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/linux_detection_engineering_with_auditd.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/linux_detection_engineering_with_auditd.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/linux_detection_engineering_with_auditd.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/linux_detection_engineering_with_auditd.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/luna_ransomware_attack_pattern.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/luna_ransomware_attack_pattern.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/luna_ransomware_attack_pattern.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/luna_ransomware_attack_pattern.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/monitoring_okta_threats_with_elastic_security.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/monitoring_okta_threats_with_elastic_security.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/monitoring_okta_threats_with_elastic_security.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/monitoring_okta_threats_with_elastic_security.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/naplistener_more_bad_dreams_from_the_developers_of_siestagraph.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/naplistener_more_bad_dreams_from_the_developers_of_siestagraph.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/naplistener_more_bad_dreams_from_the_developers_of_siestagraph.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/naplistener_more_bad_dreams_from_the_developers_of_siestagraph.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_configuration_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_configuration_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_configuration_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_configuration_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_dynamic_configuration_extraction.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_dynamic_configuration_extraction.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_dynamic_configuration_extraction.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/netwire_dynamic_configuration_extraction.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/nimbuspwn_leveraging_vulnerabilities_to_exploit_linux_via_privilege_escalation.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/nimbuspwn_leveraging_vulnerabilities_to_exploit_linux_via_privilege_escalation.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/nimbuspwn_leveraging_vulnerabilities_to_exploit_linux_via_privilege_escalation.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/nimbuspwn_leveraging_vulnerabilities_to_exploit_linux_via_privilege_escalation.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/not_sleeping_anymore_somnirecords_wakeup_call.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/not_sleeping_anymore_somnirecords_wakeup_call.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/not_sleeping_anymore_somnirecords_wakeup_call.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/not_sleeping_anymore_somnirecords_wakeup_call.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/okta_and_lapsus_what_you_need_to_know.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/okta_and_lapsus_what_you_need_to_know.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/okta_and_lapsus_what_you_need_to_know.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/okta_and_lapsus_what_you_need_to_know.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/operation_bleeding_bear.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/operation_bleeding_bear.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/operation_bleeding_bear.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/operation_bleeding_bear.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/parallax_payload_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/parallax_payload_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/parallax_payload_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/parallax_payload_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/peeling_back_the_curtain_with_call_stacks.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/peeling_back_the_curtain_with_call_stacks.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/peeling_back_the_curtain_with_call_stacks.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/peeling_back_the_curtain_with_call_stacks.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/phoreal_malware_targets_the_southeast_asian_financial_sector.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/phoreal_malware_targets_the_southeast_asian_financial_sector.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/phoreal_malware_targets_the_southeast_asian_financial_sector.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/phoreal_malware_targets_the_southeast_asian_financial_sector.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/pikabot_i_choose_you.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/pikabot_i_choose_you.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/pikabot_i_choose_you.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/pikabot_i_choose_you.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/playing_defense_against_gamaredon_group.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/playing_defense_against_gamaredon_group.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/playing_defense_against_gamaredon_group.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/playing_defense_against_gamaredon_group.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/practical_security_engineering_stateful_detection.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/practical_security_engineering_stateful_detection.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/practical_security_engineering_stateful_detection.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/practical_security_engineering_stateful_detection.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/primer_on_persistence_mechanisms.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/primer_on_persistence_mechanisms.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/primer_on_persistence_mechanisms.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/primer_on_persistence_mechanisms.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection_jp.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection_jp.md similarity index 99% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection_jp.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection_jp.md index 7c239d1f48127..6bfc447cff63c 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection_jp.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/protecting_your_devices_from_information_theft_keylogger_protection_jp.md @@ -1,7 +1,7 @@ --- title: "情報窃取から端末を守る" slug: "protecting-your-devices-from-information-theft-keylogger-protection-jp" -date: "2020-05-30" +date: "2024-05-30" subtitle: "Windows APIの挙動を用いたキーロガー検知" description: "本記事ではElastic Securityにおいて、エンドポイント保護を担っているElastic Defendに今年(バージョン8.12より)新たに追加された、キーロガーおよびキーロギング検出機能について紹介します。" author: diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_configuration_extractor.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_configuration_extractor.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_configuration_extractor.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_configuration_extractor.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_malware_analysis.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_malware_analysis.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_malware_analysis.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/qbot_malware_analysis.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_in_the_honeypot_how_we_capture_keys.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_in_the_honeypot_how_we_capture_keys.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_in_the_honeypot_how_we_capture_keys.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_in_the_honeypot_how_we_capture_keys.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_interrupted_sodinokibi_and_the_supply_chain.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_interrupted_sodinokibi_and_the_supply_chain.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_interrupted_sodinokibi_and_the_supply_chain.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ransomware_interrupted_sodinokibi_and_the_supply_chain.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ref2924_howto_maintain_persistence_as_an_advanced_threat.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ref2924_howto_maintain_persistence_as_an_advanced_threat.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/ref2924_howto_maintain_persistence_as_an_advanced_threat.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/ref2924_howto_maintain_persistence_as_an_advanced_threat.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/revisiting_blister_new_developments_of_the_blister_loader.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/revisiting_blister_new_developments_of_the_blister_loader.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/revisiting_blister_new_developments_of_the_blister_loader.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/revisiting_blister_new_developments_of_the_blister_loader.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sandboxing_antimalware_products.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sandboxing_antimalware_products.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sandboxing_antimalware_products.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sandboxing_antimalware_products.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sequel_on_persistence_mechanisms.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sequel_on_persistence_mechanisms.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sequel_on_persistence_mechanisms.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sequel_on_persistence_mechanisms.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/siestagraph_new_implant_uncovered_in_asean_member_foreign_ministry.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/siestagraph_new_implant_uncovered_in_asean_member_foreign_ministry.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/siestagraph_new_implant_uncovered_in_asean_member_foreign_ministry.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/siestagraph_new_implant_uncovered_in_asean_member_foreign_ministry.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/signaling_from_within_how_ebpf_interacts_with_signals.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/signaling_from_within_how_ebpf_interacts_with_signals.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/signaling_from_within_how_ebpf_interacts_with_signals.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/signaling_from_within_how_ebpf_interacts_with_signals.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sinking_macos_pirate_ships.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sinking_macos_pirate_ships.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sinking_macos_pirate_ships.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sinking_macos_pirate_ships.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sneak_peek_elastic_2022_global_threat_report.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sneak_peek_elastic_2022_global_threat_report.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/sneak_peek_elastic_2022_global_threat_report.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/sneak_peek_elastic_2022_global_threat_report.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/spring_cleaning_with_latrodectus.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/spring_cleaning_with_latrodectus.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/spring_cleaning_with_latrodectus.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/spring_cleaning_with_latrodectus.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/starter_guide_to_understanding_okta.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/starter_guide_to_understanding_okta.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/starter_guide_to_understanding_okta.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/starter_guide_to_understanding_okta.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/stixy_situations_ecsaping_your_threat_data.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/stixy_situations_ecsaping_your_threat_data.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/stixy_situations_ecsaping_your_threat_data.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/stixy_situations_ecsaping_your_threat_data.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/stopping_vulnerable_driver_attacks.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/stopping_vulnerable_driver_attacks.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/stopping_vulnerable_driver_attacks.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/stopping_vulnerable_driver_attacks.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/storm_on_the_horizon.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/storm_on_the_horizon.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/storm_on_the_horizon.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/storm_on_the_horizon.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/streamlining_esql_query_and_rule_validation.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/streamlining_esql_query_and_rule_validation.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/streamlining_esql_query_and_rule_validation.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/streamlining_esql_query_and_rule_validation.md diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/streamlining_security_integrating_amazon_bedrock.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/streamlining_security_integrating_amazon_bedrock.md new file mode 100644 index 0000000000000..9ba2b033a851e --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/streamlining_security_integrating_amazon_bedrock.md @@ -0,0 +1,237 @@ +--- +title: "Streamlining Security: Integrating Amazon Bedrock with Elastic" +slug: "streamlining-security-integrating-amazon-bedrock" +date: "2024-11-14" +description: "This article will guide you through the process of setting up the Amazon Bedrock integration and enabling Elastic's prebuilt detection rules to streamline your security operations." +author: + - slug: shashank-k-s +image: "Security Labs Images 36.jpg" +category: + - slug: security-research +--- + +# Preamble + +In the ever-evolving landscape of cloud computing, maintaining robust security while ensuring compliance is a critical challenge for organizations of all sizes. As businesses increasingly adopt the cloud, the complexity of managing and securing data across various platforms grows exponentially. + +[Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html), with its powerful foundation of machine learning and AI services, offers a scalable, secure environment for organizations to develop and deploy intelligent applications. However, to fully harness the potential of these innovations, it’s essential to implement a streamlined approach to security and compliance. + +Integrating Elastic with Amazon Bedrock can significantly enhance security monitoring and compliance management within your cloud environment. This integration leverages Elastic’s search, observability, and security capabilities to optimize how you manage and secure applications and data hosted on Amazon Bedrock. + +Elastic’s [security information and event management (SIEM) capabilities](https://www.elastic.co/security/siem) can be used to analyze logs and monitor events generated by applications running on Amazon Bedrock. This allows for the detection of potential security threats in real-time and automated response actions to mitigate risks. + +This article will guide you through the process of setting up Amazon Bedrock integration and enabling our prebuilt detection rules to streamline your security operations. We will cover the following key aspects: + + 1. **Prerequisites for Elastic Amazon Bedrock Integration:** Understanding the core requirements for setting up Elastic Amazon Bedrock integration for cloud security. + 2. **Setting Up Amazon Bedrock Integration**: Step-by-step instructions to set up Amazon Bedrock in your existing AWS infrastructure. + 3. **Enabling Prebuilt Security Rules**: How to leverage [prebuilt rules](https://www.elastic.co/guide/en/security/current/rules-ui-management.html) to detect high-confidence policy violations and other security threats. + 4. **Exploring High-Confidence Misconduct Blocks Detection:** An in-depth look at a specific prebuilt rule designed to detect high-confidence misconduct blocks within Amazon Bedrocklogs. + 5. **Demonstrate an Exploit Case Scenario for Amazon Bedrock:** Using a sample python script to simulate interactions with an Amazon Bedrock model for testing exploit scenarios that could trigger Elastic prebuilt detection rules. + +# Prerequisites for Elastic Amazon Bedrock Integration + +## Elastic Integration for Amazon Bedrock + +The Amazon Bedrock integration collects Amazon Bedrock model invocation logs and runtime metrics with Elastic Agent. For a deeper dive on the integration, documentation can be found in our [documentation.](https://www.elastic.co/docs/current/integrations/aws_bedrock) + +Below are the list of prerequisites to have a complete and successful configuration of Amazon Bedrock Elastic Integration: + + * AWS Account Setup + * Elastic Cloud Requirements + * Terraform (Optional) + +### AWS Account Setup + + * **Active AWS Account**: Ensure you have an active AWS account with the appropriate permissions to deploy and manage resources on Amazon Bedrock. + * **Amazon Bedrock Setup**: Confirm that Amazon Bedrock is correctly configured and operational within your AWS environment. This includes setting up AI models, datasets, and other resources necessary for your applications. Refer to [Getting started with Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started.html) for additional information on the setup. + * **IAM Roles and Permissions**: Create or configure Identity and Access Management (IAM) roles with the necessary permissions to allow Elastic to access Amazon Bedrock resources. These roles should have sufficient privileges to read logs, metrics, and traces from AWS services. Additional details of the requirements can be found in our [AWS documentation](https://www.elastic.co/docs/current/integrations/aws#requirements). + +### Elastic Cloud Requirements + +| [Version](https://www.elastic.co/docs/current/integrations/aws_bedrock#changelog) | 0.7.0 (Beta) | +| :---- | :---- | +| **Compatible Kibana version(s)** | 8.13.0 or higher for integration version 0.2.0 and above. Minimum Kibana Version 8.12.0 | +| [**Supported Serverless project types**](https://www.elastic.co/docs/current/integrations/serverless/support) | Security Observability | +| [**Subscription level**](https://www.elastic.co/subscriptions) | Basic | +| [**Level of support**](https://www.elastic.co/docs/current/integrations/support) | Elastic | + +**Note:** Since the integration is in Beta Release Stage, please enable ***Display Beta Integrations in the browse integration section of the Management pane in your Elastic stack.*** + +![](/assets/images/streamlining-security-integrating-amazon-bedrock/image1.png) + +### Terraform + +[Terraform](https://www.terraform.io/) is an open source infrastructure-as-code (IaC) tool created by HashiCorp that allows you to define, provision, and manage cloud and on-premises infrastructure in a consistent and repeatable way. + +This is an optional step, but good to have as the next sections of the article we use this tool to set up the required AWS Infrastructure. Deep dive on installation and docs can be found [here](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli). + +# Setting Up Amazon Bedrock Integration + +In this section of the article, we will walk through the steps to set up Amazon Bedrock integration with Elastic in two parts: + + 1. **Setting Up AWS Infrastructure with Terraform**: In this section, we'll walk through the steps to set up an AWS infrastructure using Terraform. We'll create an S3 bucket, an EC2 instance with the necessary IAM roles and policies to access the S3 bucket, and configure security groups to allow SSH access. This setup is ideal for scenarios where you need an EC2 instance to interact with S3, such as for data processing or storage. + 2. **Elastic Agent and Integration Setup**: In this section, we'll walk through the steps to install Elastic Agent on the AWS EC2 instance and Configure the Amazon Bedrock Integration. + +### Setting Up AWS Infrastructure with Terraform + +The high-level configuration process will involve the following steps: + + 1. Configuring ```providers.tf``` + 2. Configuring ```variables.tf``` + 3. Configuring ```outputs.tf``` + 4. Configuring ```main.tf``` + +The ```providers.tf``` file typically contains the configuration for any Terraform providers you are using in your project. In our example, it includes the configuration for the AWS provider. Here is the [sample content](https://gist.github.com/shashank-elastic/290218cd4e787f65fbcbfd6423a0ca85#file-providers-tf) of our ```providers.tf``` file. The ```profile``` mentioned in the ```providers.tf``` should be configured in the user’s space of the AWS credentials file ```(~/.aws/credentials)```. Refer to [Configuration and credential file settings \- AWS Command Line Interface](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-files.html#cli-configure-files-format-profile), which is also highlighted in the credential section of Elastic’s [AWS documentation](https://www.elastic.co/docs/current/integrations/aws#aws-credentials). + +The ```variables.tf``` file contains the variable definitions used throughout your Terraform configuration. For our scenario, it includes the definition for the aws\_region and resource\_labels. Here is the [sample content](https://gist.github.com/shashank-elastic/290218cd4e787f65fbcbfd6423a0ca85#file-variables-tf) of our ```variables.tf``` file. + +The ```outputs.tf``` file typically contains the output definitions for your Terraform configuration. These outputs can be used to display useful information after your infrastructure is provisioned. Here is the [sample content](https://gist.github.com/shashank-elastic/290218cd4e787f65fbcbfd6423a0ca85#file-outputs-tf) of our ```outputs.tf``` file + +The ```main.tf``` file typically contains the collection of all of these resources such as data sources, S3 bucket and bucket policy, Amazon Bedrock Model Invocation Log configuration, SQS Queue configuration, IAM Role and Policies required by the EC2 instance that would install Elastic Agent and stream logs and Amazon Bedrock Guardrail configuration. Here is the [sample content](https://gist.github.com/shashank-elastic/290218cd4e787f65fbcbfd6423a0ca85#file-main-tf) of our ```main.tf``` file. + +Once the ```main.tf``` is configured according to the requirements we can then initialize, plan and apply the terraform configuration. + +``` +terraform init // initializes the directory and sets up state files in backend +terraform plan // command creates an execution plan +terraform apply // command applies the configuration aka execution step +``` + +To tear down the infrastructure that terraform has previously created one can use the ```terraform destroy``` command. + +Once the infrastructure setup is completed, necessary resource identifiers are provided via ```outputs.tf.``` We can conduct a basic verification of the infrastructure created using the following steps: + + 1. Verify the S3 Bucket created from the Terraform, one can either use aws cli command reference [list-buckets — AWS CLI 1.34.10 Command Reference](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-buckets.html) or navigate via AWS console to verify the same. 2. Verify the SQS Queue created from the terraform, one can either use aws cli command reference [list-queues — AWS CLI 1.34.10 Command Reference](https://docs.aws.amazon.com/cli/latest/reference/sqs/list-queues.html) or navigate via AWS console to verify the same. + 3. Verify the EC2 Instance created from the AWS console and connect to the ec2-instance via [Connect using EC2 Instance Connect \- Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-methods.html#ec2-instance-connect-connecting-console) and run ```aws s3 ls example-bucket-name``` to check if the instance has access to the created S3 bucket. + 4. Verify the Amazon Bedrock Guardrail created from the Terraform, once can either use Amazon Bedrock API [ListGuardrails \- Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_ListGuardrails.html) or navigate via AWS console to verify the same. + +### Setting Up Elastic Agent and Integration Setup + +To install Elastic Agent on the AWS EC2 instance and configure the Amazon Bedrock integration, create an agent policy using the guided steps in [Elastic Agent policies | Fleet and Elastic Agent Guide \[8.15\]](https://www.elastic.co/guide/en/fleet/current/agent-policy.html). Then log into to the ec2-instance created in the infrastructure setup steps via [Connect using EC2 Instance Connect \- Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-methods.html#ec2-instance-connect-connecting-console), and install the elastic agent using the guided steps in [Install Elastic Agents | Fleet and Elastic Agent Guide \[8.15\]](https://www.elastic.co/guide/en/fleet/current/elastic-agent-installation.html). During the agent installation, remember to select the agent policy created at the beginning of this setup process and use the relevant agent installation method depending on the instance created. Finally, ensure the agent is properly configured and there is incoming data from the agent. + +To configure the Amazon Bedrock integration in the newly-created policy, add the Amazon Bedrock integration using the guided steps: [Add an Elastic Agent integration to a policy](https://www.elastic.co/guide/en/fleet/current/add-integration-to-policy.html). Enable Beta Integrations to use Amazon Bedrock integration as displayed in the image below. + +![](/assets/images/streamlining-security-integrating-amazon-bedrock/image4.png) + +Configure the Integration with AWS Access Keys to access the AWS account where Amazon Bedrock is configured. Use the Collect Logs from S3 bucket and specify the Bucket ARN created in the setup step. Please note to use either the S3 Bucket or the SQS Queue URL during the setup and *not both*. Add this integration to the existing policy where the ec2-instance is configured. + +![](/assets/images/streamlining-security-integrating-amazon-bedrock/image8.png) + +### Verify Amazon Bedrock Model Invocation Log Ingestions + +Once the Elastic Agent and integration setup is completed, we can conduct a basic verification of the integration to determine if the logs are being ingested as expected by using the following example API call: + +``` +aws bedrock-runtime converse \ +--model-id "anthropic.claude-3-5-sonnet-20240620-v1:0" \ +--messages '[{"role":"user","content":[{"text":"Hello "}]}]' \ +--inference-config '{"maxTokens":2000,"stopSequences":[],"temperature":1,"topP":0.999}' \ +--additional-model-request-fields '{"top_k":250}' \ +--region us-east-1 +``` + +The example API call assumes a working setup with aws cli and there is access for the foundational model [Anthropic Claude Messages API \- Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-anthropic-claude-messages.html). If the user does not have access to the model one can simply request access for models from the model-access page as suggested in [Access Amazon Bedrock foundation models](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html), or we can optionally change the API call to any existing model the user can access. + +On successful execution of the above API call, the Amazon Bedrock Model invocation logs are populated and in Kibana ```logs-aws_bedrock.invocation-default``` should be populated with those invocation logs. We can use the following simple ES|QL query to return recently ingested events. + +``` +from logs-aws_bedrock.invocation-* | LIMIT 10 +``` + +# Enable Prebuilt Detection Rules + +To enable prebuilt detection rules, first login to the elastic instance and from the left pane navigation navigate to Security → Rules → Detection rules (SIEM). Filter for “Data Source: Amazon Bedrock” from the tags section. + +Enable the available prebuilt rules. For prebuilt rules, the Setup information contains a helper guide to setup AWS Guardrails for Amazon Bedrock, which is accomplished in the [Setting Up AWS Infrastructure with Terraform](?tab=t.0#bookmark=id.5wbf10usmxhz) step if the example is followed correctly and the terraform has the Amazon Bedrock Guardrail configuration. Please note this setup is vital for some of the rules to generate alerts–we need to ensure the guardrail is set up accordingly if skipped in the infrastructure setup stage. + +![](/assets/images/streamlining-security-integrating-amazon-bedrock/image3.png) + +# Exploring High-Confidence Misconduct Blocks Detection + +Let’s simulate a real world scenario in which a user queries a topic denied to the Amazon Bedrock model. Navigate to the Amazon Bedrock section in the Amazon UI Console, and use the left navigation pane to navigate to the Guardrails subsection under Safeguards. Use the sample guardrail created during our setup instructions for this exercise, and use the test option to run a model invocation with the guardrails and query the denied topic configured. + +![](/assets/images/streamlining-security-integrating-amazon-bedrock/image6.png) + +Repeat the query at least 6 times as the prebuilt rule is designed to alert on greater than 5 high confidence blocks. When the Alert schedule runs, we can see an alert populate for ```Unusual High Confidence Misconduct Blocks Detected.``` + +![](/assets/images/streamlining-security-integrating-amazon-bedrock/image7.png) + +# Demonstrate an Exploit Case Scenario for Amazon Bedrock + +To simulate an Amazon Bedrock Security bypass, we need an exploit simulation script to interact with Amazon Bedrock models. The exploit script example we provide simulates the following attack pattern: + + * Attempts multiple successive requests to use denied model resources within AWS Bedrock + * Generates multiple successive validation exception errors within Amazon Bedrock + * User consistently generates high input token counts, submits numerous requests, and receives large responses that mimic patterns of resource exhaustion + * Combines repeated high-confidence 'BLOCKED' actions coupled with specific violation codes such as 'MISCONDUCT', indicating persistent misuse or attempts to probe the model's ethical boundaries + +```py +class BedrockModelSimulator: + def __init__(self, profile_name, region_name): + // Create a Boto3 Session Client for Ineration + def generate_args_invoke_model(self, model_id, user_message, tokens): // Generate Model Invocation parameters + guardrail_id = <> + guardrail_version = <> + + guardrail_config = { + "guardrailIdentifier": guardrail_id, + "guardrailVersion": guardrail_version, + "trace": "enabled" + } + conversation = [ + { + "role": "user", + "content": [{"text": user_message}], + } + ] + inference_config = {"maxTokens": tokens, "temperature": 0.7, "topP": 1} + additional_model_request_fields = {} + + kwargs = { + "modelId": model_id, + "messages": conversation, + "inferenceConfig": inference_config, + "additionalModelRequestFields": additional_model_request_fields + "guardrailConfig" : guardrail_config + } + return kwargs + + def invoke_model(self, invocation_arguments): + for _ in range(count): + try: + // Invoke Model With right invocation_arguments + except ClientError as e: + // Error meesage + +def main(): + profile_name = <> + region_name = 'us-east-1' + denied_model_id = // Use a denied model + denied_model_user_message = // Sample Message + available_model_id = // Use an available model + validation_exception_user_message = // Sample Message + resource_exploit_user_message = // A very big message for resource exhuastion + denied_topic_user_message = // Sample Message that can query denied topic configured + simulator = BedrockModelSimulator(profile_name, region_name) + denied_model_invocation_arguments = simulator.generate_args_invoke_model(denied_model_id, denied_model_user_message, 200) + simulator.invoke_model(denied_model_invocation_arguments) + validation_exception_invocation_arguments = simulator.generate_args_invoke_model(available_model_id, validation_exception_user_message, 6000) + simulator.invoke_model(validation_exception_invocation_arguments) + resource_exhaustion_invocation_arguments = simulator.generate_args_invoke_available_model(available_model_id, resource_exploit_user_message, 4096) + simulator.invoke_model(resource_exhaustion_invocation_arguments) + denied_topic_invocation_arguments = simulator.generate_args_invoke_available_model_guardrail(available_model_id, denied_topic_user_message, 4096) + simulator.invoke_model(denied_topic_invocation_arguments) + +if __name__ == "__main__": + main() +``` + +**Note:** The GUARDRAIL\_ID and GUARDRAIL\_VERSION can be found in ```outputs.tf``` + +When executed in a controlled environment, the provided script simulates an exploit scenario that would generate detection alerts in Elastic Security. When analyzing these alerts using the Elastic Attack Discovery feature, the script creates attack chains that show the relationships between various alerts, giving analysts a clear understanding of how multiple alerts might be part of a larger attack. + +![](/assets/images/streamlining-security-integrating-amazon-bedrock/image2.png) + +# Conclusion + +Integrating Elastic with Amazon Bedrock empowers organizations to maintain a secure and compliant cloud environment while maximizing the benefits of AI and machine learning. By leveraging Elastic’s advanced security and observability tools, businesses can proactively detect threats, automate compliance reporting, and gain deeper insights into their cloud operations. Increasingly, enterprises rely on opaque data sources and technologies to reveal the most serious threats-- our commitment to transparent security is evident in our open artifacts, integrations, and source code. \ No newline at end of file diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/testing_okta_visibility_and_detection_dorothy.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/testing_okta_visibility_and_detection_dorothy.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/testing_okta_visibility_and_detection_dorothy.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/testing_okta_visibility_and_detection_dorothy.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/thawing_the_permafrost_of_icedid_summary.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/thawing_the_permafrost_of_icedid_summary.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/thawing_the_permafrost_of_icedid_summary.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/thawing_the_permafrost_of_icedid_summary.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/the_elastic_container_project.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/the_elastic_container_project.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/the_elastic_container_project.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/the_elastic_container_project.md diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/tricks_and_treats.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/tricks_and_treats.md new file mode 100644 index 0000000000000..d7a98fe2b7258 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/tricks_and_treats.md @@ -0,0 +1,141 @@ +--- +title: "Tricks and Treats: GHOSTPULSE’s new pixel-level deception" +slug: "tricks-and-treats" +date: "2024-10-19" +description: "The updated GHOSTPULSE malware has evolved to embed malicious data directly within pixel structures, making it harder to detect and requiring new analysis and detection techniques." +author: + - slug: salim-bitam +image: "tricks-and-treats.jpg" +category: + - slug: malware-analysis +tags: + - ghostpulse + - lummastealer + - ref8207 +--- + +## Update + +This research covers an update to stage 2 of GHOSTPULSE, [originally disclosed](https://www.elastic.co/security-labs/ghostpulse-haunts-victims-using-defense-evasion-bag-o-tricks#stage-2) by Elastic Security Labs in October 2023. + +## Key takeaways + +1. GHOSTPULSE has shifted from using the IDAT chunk of PNG files to embedding its encrypted configuration and payload within the pixel structure. +1. Recent campaigns involve tricking victims with creative social engineering techniques, such as CAPTCHA validations that trigger malicious commands through Windows keyboard shortcuts. +1. Elastic Security has enhanced its YARA rules and updated the configuration extractor tool to detect and analyze both the old and new versions of GHOSTPULSE. + +## Preamble + +The GHOSTPULSE malware family (also known as HIJACKLOADER or IDATLOADER) has continuously evolved since its discovery in 2023, evading detection with increasingly developed techniques. + +In its earlier iterations, GHOSTPULSE abused the IDAT chunk of PNG files to hide malicious payloads, as detailed in a [previous article from Elastic Security Labs](https://www.elastic.co/security-labs/ghostpulse-haunts-victims-using-defense-evasion-bag-o-tricks). However, recent analysis has uncovered a significant change in its algorithm. Instead of extracting the payload from the IDAT chunk, the latest version of GHOSTPULSE now parses the pixels of the image to retrieve its configuration and payload. This new approach involves embedding malicious data directly within the pixel structure. + +In this research publication, we’ll explore this new pixel-based algorithm and compare it with the previous IDAT chunk technique with updated detection rules. + +## Introduction + +Recently, we've observed several campaigns involving LUMMA STEALER using GHOSTPULSE as its loader, a topic also explored by [HarfangLab](https://harfanglab.io/insidethelab/hijackloader-abusing-genuine-certificates/). These campaigns stand out due to their [creative social engineering tactics](https://www.secureworks.com/blog/fake-human-verification-prompt-delivers-infostealers). Victims are tricked into validating a CAPTCHA, but the website instructs them to execute a series of Windows keyboard shortcuts instead of the usual process. These shortcuts trigger a command copied to the clipboard by malicious JavaScript. This leads to a PowerShell script being executed, initiating the infection chain by downloading and executing a GHOSTPULSE payload. + +![Social engineer lure website](/assets/images/tricks-and-treats/image1.png "Lure website") + +In previous versions of GHOSTPULSE, it was delivered as part of a multi-file package. This package typically contained a benign executable, an infected DLL loaded by the executable, and a PNG file storing the encrypted configuration. + +However, in the latest version, GHOSTPULSE has streamlined its deployment. Now, the entire package consists of a single file—a benign but compromised executable that includes the PNG file within its resources section. + +![Large embedded PNG file in the resources section](/assets/images/tricks-and-treats/image2.png "Large embedded PNG file in the resources section") + +## Technical analysis + +The updated second stage of the malware retains much of its previous structure, including using the same hashing algorithm for resolving Windows API names. However, the most significant change is in how the malware now locates its configuration, which holds both the payload and critical instructions for its deployment. + +The following is a screenshot showing the pseudocode of both implementations: + +![Pseudocode code comparison between old and new algorithm](/assets/images/tricks-and-treats/image4.png "Pseudocode code comparison between old and new algorithm") + +In earlier versions, GHOSTPULSE would parse a PNG file for an encrypted data blob, which was divided into chunks and stored sequentially. The malware’s parsing process was straightforward: it would search for a specific marker within the file—in this case, the IDAT string. Once found, the malware would check for a 4-byte tag that followed the string. The encrypted chunk would be extracted if this tag matched the expected value. This process continues for every occurrence of the IDAT string that comes after until the full encrypted payload is collected. + +In the new version, the encrypted configuration is stored in the pixels of the image. The malware constructs a byte array by extracting each pixel's `RED`, `GREEN`, and `BLUE` (RGB) values sequentially using standard Windows APIs from the [GdiPlus(GDI+)](https://learn.microsoft.com/en-us/windows/win32/gdiplus/-gdiplus-gdi-start) library. Once the byte array is built, the malware searches for the start of a structure that contains the encrypted GHOSTPULSE configuration, including the XOR key needed for decryption. It does this by looping through the byte array in 16-byte blocks. For each block, the first 4 bytes represent a CRC32 hash, and the next 12 bytes are the data to be hashed. The malware computes the CRC32 of the 12 bytes and checks if it matches the hash. If a match is found, it extracts the offset of the encrypted GHOSTPULSE configuration, its size, and the 4-byte XOR key, and then XOR decrypts it. + +The following diagram provides a visual breakdown of this process: + +![](/assets/images/tricks-and-treats/image5.png) + +## Updated configuration extractor + +Based on these findings, we have updated our configuration extractor to support both versions of GHOSTPULSE. This tool takes a PNG file as input and outputs the embedded payload. You can find the updated tool in our [labs-releases repository](https://github.com/elastic/labs-releases/tree/main/tools/ghostpulse). + +![](/assets/images/tricks-and-treats/image3.png) + +## Detecting GHOSTPULSE with YARA + +The original [GHOSTPULSE YARA](https://github.com/elastic/protections-artifacts/blob/main/yara/rules/Windows_Trojan_GhostPulse.yar) rule still prevents the final stage of an infection and is built into Elastic Defend. The updated sample can be detected using the following YARA rules and will be included with Elastic Defend in a future release. + +Elastic Security has updated the GHOSTPULSE YARA rules to identify this activity: + +``` +rule Windows_Trojan_GHOSTPULSE_1 { + meta: + author = "Elastic Security" + creation_date = "2024-10-15" + last_modified = "2024-10-15" + os = "Windows" + arch = "x86" + category_type = "Trojan" + family = "GHOSTPULSE" + threat_name = "Windows.Trojan.GHOSTPULSE" + license = "Elastic License v2" + + strings: + $stage_1 = { 49 63 D0 42 8B 0C 0A 41 03 CA 89 0C 1A 8B 05 ?? ?? ?? ?? 44 03 C0 8B 05 ?? ?? ?? ?? 44 3B C0 } + $stage_2 = { 48 89 01 48 8B 84 24 D8 00 00 00 48 8B 4C 24 78 8B 49 0C 89 08 C7 44 24 44 00 00 00 00 } + + condition: + any of them +} + +rule Windows_Trojan_GHOSTPULSE_2 { + meta: + author = "Elastic Security" + creation_date = "2024-10-10" + last_modified = "2024-10-10" + os = "Windows" + arch = "x86" + category_type = "Trojan" + family = "GHOSTPULSE" + threat_name = "Windows.Trojan.GHOSTPULSE" + license = "Elastic License v2" + + strings: + $a1 = { 48 83 EC 18 C7 04 24 00 00 00 00 8B 04 24 48 8B 4C 24 20 0F B7 04 41 85 C0 74 0A 8B 04 24 FF C0 89 04 24 EB E6 C7 44 24 08 00 00 00 00 8B 04 24 FF C8 8B C0 48 8B 4C 24 20 0F B7 04 41 83 F8 5C } + + condition: + all of them +} +``` + +## Conclusion + +In summary, the GHOSTPULSE malware family has evolved since its release in 2023, with this recent update marking one of the most significant changes. + +As attackers continue to innovate, defenders must adapt by utilizing updated tools and techniques to mitigate these threats effectively. We are excited to share our newly developed configuration extractor tool, designed to analyze the older and newer versions of GHOSTPULSE. This tool empowers researchers and cybersecurity professionals by providing enhanced capabilities for understanding and combating these evolving threats. As the landscape of cyber threats changes, collaboration, and innovation remain essential for effective protection. + +## Observations + +All observables are also available for [download](https://github.com/elastic/labs-releases/tree/main/indicators/ghostpulse) in both ECS and STIX format. + +The following observables were discussed in this research. + +| Observable | Type | Name | Reference | +|------------------------------------------------------------------|-------------|-----------------|------------------------------------------| +| `57ebf79c384366162cb0f13de0de4fc1300ebb733584e2d8887505f22f877077` | SHA-256 | `Setup.exe` | GHOSTPULSE sample | +| `b54d9db283e6c958697bfc4f97a5dd0ba585bc1d05267569264a2d700f0799ae` | SHA-256 | `Setup_light.exe` | GHOSTPULSE sample | +| `winrar01.b-cdn[.]net` | domain-name | | Infrastructure hosting GHOSTPULSE sample | +| `reinforcenh[.]shop` | domain-name | | LUMMASTEALER C2 | +| `stogeneratmns[.]shop` | domain-name | | LUMMASTEALER C2 | +| `fragnantbui[.]shop` | domain-name | | LUMMASTEALER C2 | +| `drawzhotdog[.]shop` | domain-name | | LUMMASTEALER C2 | +| `vozmeatillu[.]shop` | domain-name | | LUMMASTEALER C2 | +| `offensivedzvju[.]shop` | domain-name | | LUMMASTEALER C2 | +| `ghostreedmnu[.]shop` | domain-name | | LUMMASTEALER C2 | +| `gutterydhowi[.]shop` | domain-name | | LUMMASTEALER C2 | +| `riderratttinow[.]shop` | domain-name | | LUMMASTEALER C2 | \ No newline at end of file diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/twice_around_the_dance_floor_with_pipedance.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/twice_around_the_dance_floor_with_pipedance.md similarity index 99% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/twice_around_the_dance_floor_with_pipedance.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/twice_around_the_dance_floor_with_pipedance.md index 4775edad80247..1767d5edd4c94 100644 --- a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/twice_around_the_dance_floor_with_pipedance.md +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/twice_around_the_dance_floor_with_pipedance.md @@ -230,7 +230,7 @@ PIPEDANCE is designed to conduct covert operations using named pipes and has var ### Detection -- [Suspicious Windows Service Execution](https://github.com/elastic/endpoint-rules/blob/main/rules/privilege_escalation_suspicious_services_child.toml) +- [Suspicious Windows Service Execution](https://github.com/elastic/protections-artifacts/blob/main/behavior/rules/windows/privilege_escalation_suspicious_windows_service_execution.toml) - [NullSessionPipe Registry Modification](https://www.elastic.co/guide/en/security/current/nullsessionpipe-registry-modification.html) - [Potential Lateral Tool Transfer via SMB Share](https://www.elastic.co/guide/en/security/master/potential-lateral-tool-transfer-via-smb-share.html) diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unlocking_power_safely_privilege_escalation_via_linux_process_capabilities.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unlocking_power_safely_privilege_escalation_via_linux_process_capabilities.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unlocking_power_safely_privilege_escalation_via_linux_process_capabilities.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unlocking_power_safely_privilege_escalation_via_linux_process_capabilities.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unmasking_financial_services_intrusion_ref0657.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unmasking_financial_services_intrusion_ref0657.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unmasking_financial_services_intrusion_ref0657.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unmasking_financial_services_intrusion_ref0657.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unpacking_icedid.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unpacking_icedid.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unpacking_icedid.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unpacking_icedid.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unveiling_malware_behavior_trends.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unveiling_malware_behavior_trends.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/unveiling_malware_behavior_trends.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/unveiling_malware_behavior_trends.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/update_to_the_ref2924_intrusion_set_and_related_campaigns.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/update_to_the_ref2924_intrusion_set_and_related_campaigns.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/update_to_the_ref2924_intrusion_set_and_related_campaigns.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/update_to_the_ref2924_intrusion_set_and_related_campaigns.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/upping_the_ante_detecting_in_memory_threats_with_kernel_call_stacks.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/upping_the_ante_detecting_in_memory_threats_with_kernel_call_stacks.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/upping_the_ante_detecting_in_memory_threats_with_kernel_call_stacks.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/upping_the_ante_detecting_in_memory_threats_with_kernel_call_stacks.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_and_esre_to_find_similar_user_sessions.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_and_esre_to_find_similar_user_sessions.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_and_esre_to_find_similar_user_sessions.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_and_esre_to_find_similar_user_sessions.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_to_summarize_user_sessions.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_to_summarize_user_sessions.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_to_summarize_user_sessions.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/using_llms_to_summarize_user_sessions.md diff --git a/x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/vulnerability_summary_follina.md b/x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/vulnerability_summary_follina.md similarity index 100% rename from x-pack/plugins/elastic_assistant/server/knowledge_base/security_labs/vulnerability_summary_follina.md rename to x-pack/solutions/security/plugins/elastic_assistant/server/knowledge_base/security_labs/vulnerability_summary_follina.md diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymization_fields.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymization_fields.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymization_fields.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymization_fields.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymized_alerts.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymized_alerts.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymized_alerts.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_anonymized_alerts.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_attack_discoveries.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_attack_discoveries.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_attack_discoveries.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_attack_discoveries.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_examples.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_examples.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_examples.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_examples.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_experiment_connector.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_experiment_connector.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_experiment_connector.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_experiment_connector.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_runs.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_runs.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_runs.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/__mocks__/mock_runs.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/constants.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/constants.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/constants.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/constants.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/example_input/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_default_prompt_template/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_example_attack_discoveries_with_replacements/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/get_run_attack_discoveries_with_replacements/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_custom_evaluator/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_discoveries_with_original_values/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_evaluator_llm/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/helpers/get_graph_input_overrides/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/evaluation/run_evaluations/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/constants.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/constants.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/constants.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/constants.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/helpers/get_generate_or_end_decision/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_end/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_generate_or_refine_or_end_decision/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/helpers/get_should_end/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/generate_or_refine_or_end/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_results/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/helpers/get_has_zero_alerts/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_refine_or_end_decision/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/helpers/get_should_end/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/refine_or_end/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/get_retrieve_or_generate/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/edges/retrieve_anonymized_alerts_or_generate/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_hallucination_failures_reached/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/helpers/get_max_retries_reached/index.ts diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/index.ts new file mode 100644 index 0000000000000..14794ab893623 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/index.ts @@ -0,0 +1,122 @@ +/* + * 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 { ElasticsearchClient, Logger } from '@kbn/core/server'; +import { Replacements } from '@kbn/elastic-assistant-common'; +import { AnonymizationFieldResponse } from '@kbn/elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen'; +import type { ActionsClientLlm } from '@kbn/langchain/server'; +import type { CompiledStateGraph } from '@langchain/langgraph'; +import { END, START, StateGraph } from '@langchain/langgraph'; + +import { NodeType } from './constants'; +import { getGenerateOrEndEdge } from './edges/generate_or_end'; +import { getGenerateOrRefineOrEndEdge } from './edges/generate_or_refine_or_end'; +import { getRefineOrEndEdge } from './edges/refine_or_end'; +import { getRetrieveAnonymizedAlertsOrGenerateEdge } from './edges/retrieve_anonymized_alerts_or_generate'; +import { getDefaultGraphState } from './state'; +import { getGenerateNode } from './nodes/generate'; +import { getRefineNode } from './nodes/refine'; +import { getRetrieveAnonymizedAlertsNode } from './nodes/retriever'; +import type { GraphState } from './types'; + +export interface GetDefaultAttackDiscoveryGraphParams { + alertsIndexPattern?: string; + anonymizationFields: AnonymizationFieldResponse[]; + esClient: ElasticsearchClient; + llm: ActionsClientLlm; + logger?: Logger; + onNewReplacements?: (replacements: Replacements) => void; + replacements?: Replacements; + size: number; +} + +export type DefaultAttackDiscoveryGraph = ReturnType; + +/** + * This function returns a compiled state graph that represents the default + * Attack discovery graph. + * + * Refer to the following diagram for this graph: + * x-pack/solutions/security/plugins/elastic_assistant/docs/img/default_attack_discovery_graph.png + */ +export const getDefaultAttackDiscoveryGraph = ({ + alertsIndexPattern, + anonymizationFields, + esClient, + llm, + logger, + onNewReplacements, + replacements, + size, +}: GetDefaultAttackDiscoveryGraphParams): CompiledStateGraph< + GraphState, + Partial, + 'generate' | 'refine' | 'retrieve_anonymized_alerts' | '__start__' +> => { + try { + const graphState = getDefaultGraphState(); + + // get nodes: + const retrieveAnonymizedAlertsNode = getRetrieveAnonymizedAlertsNode({ + alertsIndexPattern, + anonymizationFields, + esClient, + logger, + onNewReplacements, + replacements, + size, + }); + + const generateNode = getGenerateNode({ + llm, + logger, + }); + + const refineNode = getRefineNode({ + llm, + logger, + }); + + // get edges: + const generateOrEndEdge = getGenerateOrEndEdge(logger); + + const generatOrRefineOrEndEdge = getGenerateOrRefineOrEndEdge(logger); + + const refineOrEndEdge = getRefineOrEndEdge(logger); + + const retrieveAnonymizedAlertsOrGenerateEdge = + getRetrieveAnonymizedAlertsOrGenerateEdge(logger); + + // create the graph: + const graph = new StateGraph({ channels: graphState }) + .addNode(NodeType.RETRIEVE_ANONYMIZED_ALERTS_NODE, retrieveAnonymizedAlertsNode) + .addNode(NodeType.GENERATE_NODE, generateNode) + .addNode(NodeType.REFINE_NODE, refineNode) + .addConditionalEdges(START, retrieveAnonymizedAlertsOrGenerateEdge, { + generate: NodeType.GENERATE_NODE, + retrieve_anonymized_alerts: NodeType.RETRIEVE_ANONYMIZED_ALERTS_NODE, + }) + .addConditionalEdges(NodeType.RETRIEVE_ANONYMIZED_ALERTS_NODE, generateOrEndEdge, { + end: END, + generate: NodeType.GENERATE_NODE, + }) + .addConditionalEdges(NodeType.GENERATE_NODE, generatOrRefineOrEndEdge, { + end: END, + generate: NodeType.GENERATE_NODE, + refine: NodeType.REFINE_NODE, + }) + .addConditionalEdges(NodeType.REFINE_NODE, refineOrEndEdge, { + end: END, + refine: NodeType.REFINE_NODE, + }); + + // compile the graph: + return graph.compile(); + } catch (e) { + throw new Error(`Unable to compile AttackDiscoveryGraph\n${e}`); + } +}; diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_anonymization_fields.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_anonymization_fields.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_anonymization_fields.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_anonymization_fields.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_open_and_acknowledged_alerts_query_results.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_open_and_acknowledged_alerts_query_results.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_open_and_acknowledged_alerts_query_results.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/mock/mock_open_and_acknowledged_alerts_query_results.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/discard_previous_generations/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_alerts_context_prompt/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_anonymized_alerts_from_state/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/helpers/get_use_unrefined_results/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/schema/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/schema/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/schema/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/generate/schema/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/add_trailing_backticks_if_necessary/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/extract_json/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.test.tsx b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.test.tsx similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.test.tsx rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.test.tsx diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.tsx b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.tsx similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.tsx rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/generations_are_repeating/index.tsx diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_chain_with_format_instructions/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_combined_attack_discovery_prompt/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_continue_prompt/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_default_attack_discovery_prompt/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/get_output_parser/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/parse_combined_or_throw/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/helpers/response_is_hallucinated/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/discard_previous_refinements/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_combined_refine_prompt/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_default_refine_prompt/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/helpers/get_use_unrefined_results/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/refine/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/anonymized_alerts_retriever/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/helpers/get_anonymized_alerts/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/nodes/retriever/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/state/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/graphs/default_attack_discovery_graph/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/create_attack_discovery/create_attack_discovery.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/field_maps_configuration/field_maps_configuration.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/field_maps_configuration/field_maps_configuration.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/field_maps_configuration/field_maps_configuration.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/field_maps_configuration/field_maps_configuration.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_all_attack_discoveries/find_all_attack_discoveries.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_all_attack_discoveries/find_all_attack_discoveries.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_all_attack_discoveries/find_all_attack_discoveries.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_all_attack_discoveries/find_all_attack_discoveries.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/find_attack_discovery_by_connector_id/find_attack_discovery_by_connector_id.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/get_attack_discovery/get_attack_discovery.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/transforms/transforms.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/transforms/transforms.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/transforms/transforms.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/transforms/transforms.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/attack_discovery/persistence/update_attack_discovery/update_attack_discovery.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/build_response/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/build_response/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/build_response/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/build_response/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/data_stream/documents_data_writer.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/data_stream/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/data_stream/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/data_stream/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/data_stream/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/executor.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/executor.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/executor.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/executor.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/executor.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/executor.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/executor.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/executor.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/content_loaders/add_required_kb_resource_metadata.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/content_loaders/security_labs_loader.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/content_loaders/security_labs_loader.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/content_loaders/security_labs_loader.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/content_loaders/security_labs_loader.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/executors/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/executors/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/executors/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/constants.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/constants.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/constants.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/constants.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/graph.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/graph.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/graph.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/graph.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/execute_tools.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/execute_tools.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/execute_tools.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/execute_tools.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/generate_chat_title.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/generate_chat_title.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/generate_chat_title.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/generate_chat_title.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/get_persisted_conversation.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/get_persisted_conversation.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/get_persisted_conversation.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/get_persisted_conversation.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/model_input.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/model_input.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/model_input.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/model_input.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/persist_conversation_changes.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/persist_conversation_changes.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/persist_conversation_changes.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/persist_conversation_changes.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/respond.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/respond.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/respond.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/respond.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/run_agent.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/run_agent.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/run_agent.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/run_agent.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/step_router.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/step_router.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/step_router.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/step_router.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/translations.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/translations.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/translations.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/nodes/translations.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/prompts.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/prompts.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/prompts.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/prompts.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/default_assistant_graph/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/graphs/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/graphs/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/helpers.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/helpers.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/tracers/apm/with_assistant_span.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/tracers/apm/with_assistant_span.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/tracers/apm/with_assistant_span.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/tracers/apm/with_assistant_span.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/types.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/langchain/types.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/langchain/types.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/parse_stream.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/parse_stream.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/parse_stream.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/parse_stream.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/parse_stream.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/parse_stream.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/parse_stream.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/parse_stream.ts diff --git a/x-pack/plugins/elastic_assistant/server/lib/telemetry/event_based_telemetry.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/lib/telemetry/event_based_telemetry.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/lib/telemetry/event_based_telemetry.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/lib/telemetry/event_based_telemetry.ts diff --git a/x-pack/plugins/elastic_assistant/server/plugin.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/plugin.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/plugin.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/plugin.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/bulk_actions_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/anonymization_fields/find_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/get/get_attack_discovery.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/helpers/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/cancel/cancel_attack_discovery.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/handle_graph_error/index.tsx diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/invoke_attack_discovery_graph/index.tsx b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/invoke_attack_discovery_graph/index.tsx similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/invoke_attack_discovery_graph/index.tsx rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/invoke_attack_discovery_graph/index.tsx diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.test.tsx b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.test.tsx similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.test.tsx rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.test.tsx diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.tsx b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.tsx similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.tsx rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/request_is_valid/index.tsx diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/translations.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/translations.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/translations.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/helpers/throw_if_error_counts_exceeded/translations.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/attack_discovery/post/post_attack_discovery.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/capabilities/get_capabilities_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/chat/chat_complete_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/chat/chat_complete_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/chat/chat_complete_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/chat/chat_complete_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/chat/chat_complete_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/chat/chat_complete_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/chat/chat_complete_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/chat/chat_complete_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/custom_http_request_error.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/custom_http_request_error.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/custom_http_request_error.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/custom_http_request_error.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insight.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/get_defend_insights.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/defend_insights/post_defend_insights.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/get_evaluate.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/get_graphs_from_names/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/get_graphs_from_names/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/evaluate/get_graphs_from_names/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/get_graphs_from_names/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/post_evaluate.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/evaluate/utils.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/utils.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/evaluate/utils.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/evaluate/utils.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/helpers.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/helpers.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/helpers.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/helpers.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/helpers.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/helpers.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/helpers.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/helpers.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/index.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/index.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/index.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/index.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/constants.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/constants.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/constants.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/constants.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts similarity index 90% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts index 01e8c9ebf3f08..82c8b4e0148fd 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/bulk_actions_route.ts @@ -6,7 +6,12 @@ */ import moment from 'moment'; -import { AnalyticsServiceSetup, IKibanaResponse, KibanaResponseFactory } from '@kbn/core/server'; +import { + AnalyticsServiceSetup, + AuditLogger, + IKibanaResponse, + KibanaResponseFactory, +} from '@kbn/core/server'; import { transformError } from '@kbn/securitysolution-es-utils'; import { @@ -20,6 +25,11 @@ import { } from '@kbn/elastic-assistant-common'; import { buildRouteValidationWithZod } from '@kbn/elastic-assistant-common/impl/schemas/common'; +import { + AUDIT_OUTCOME, + KnowledgeBaseAuditAction, + knowledgeBaseAuditEvent, +} from '../../../ai_assistant_data_clients/knowledge_base/audit_events'; import { CREATE_KNOWLEDGE_BASE_ENTRY_SUCCESS_EVENT } from '../../../lib/telemetry/event_based_telemetry'; import { performChecks } from '../../helpers'; import { KNOWLEDGE_BASE_ENTRIES_TABLE_MAX_PAGE_SIZE } from '../../../../common/constants'; @@ -62,7 +72,8 @@ const buildBulkResponse = ( deleted = [], skipped = [], }: KnowledgeBaseEntryBulkCrudActionResults & { errors: BulkOperationError[] }, - telemetry: AnalyticsServiceSetup + telemetry: AnalyticsServiceSetup, + auditLogger?: AuditLogger ): IKibanaResponse => { const numSucceeded = updated.length + created.length + deleted.length; const numSkipped = skipped.length; @@ -90,6 +101,39 @@ const buildBulkResponse = ( sharing: entry.users.length ? 'private' : 'global', ...(entry.type === 'document' ? { source: entry.source } : {}), }); + auditLogger?.log( + knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.CREATE, + id: entry.id, + name: entry.name, + outcome: AUDIT_OUTCOME.SUCCESS, + }) + ); + }); + } + + if (updated.length) { + updated.forEach((entry) => { + auditLogger?.log( + knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.UPDATE, + id: entry.id, + name: entry.name, + outcome: AUDIT_OUTCOME.SUCCESS, + }) + ); + }); + } + + if (deleted.length) { + deleted.forEach((deletedId) => { + auditLogger?.log( + knowledgeBaseAuditEvent({ + action: KnowledgeBaseAuditAction.DELETE, + id: deletedId, + outcome: AUDIT_OUTCOME.SUCCESS, + }) + ); }); } if (numFailed > 0) { @@ -308,7 +352,8 @@ export const bulkActionKnowledgeBaseEntriesRoute = (router: ElasticAssistantPlug skipped: [], errors, }, - ctx.elasticAssistant.telemetry + ctx.elasticAssistant.telemetry, + ctx.elasticAssistant.auditLogger ); } catch (err) { const error = transformError(err); diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts similarity index 98% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts index 8a4004e4a236a..cd1216713e18a 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/create_route.ts @@ -63,6 +63,7 @@ export const createKnowledgeBaseEntryRoute = (router: ElasticAssistantPluginRout const createResponse = await kbDataClient?.createKnowledgeBaseEntry({ knowledgeBaseEntry: request.body, global: request.body.users != null && request.body.users.length === 0, + auditLogger: ctx.elasticAssistant.auditLogger, telemetry: ctx.elasticAssistant.telemetry, }); diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/find_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/entries/utils.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_kb_resource.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_indices.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/get_knowledge_base_status.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/knowledge_base/post_knowledge_base.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/post_actions_connector_execute.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/post_actions_connector_execute.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/post_actions_connector_execute.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/post_actions_connector_execute.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/bulk_actions_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/prompts/find_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/find_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/prompts/find_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/find_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/prompts/find_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/find_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/prompts/find_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/prompts/find_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/register_routes.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/register_routes.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/register_routes.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/register_routes.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/request_context_factory.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/request_context_factory.ts similarity index 98% rename from x-pack/plugins/elastic_assistant/server/routes/request_context_factory.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/request_context_factory.ts index 30045b3da8ad9..08ef1bb1828d6 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/request_context_factory.ts +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/request_context_factory.ts @@ -62,7 +62,7 @@ export class RequestContextFactory implements IRequestContextFactory { core: coreContext, actions: startPlugins.actions, - + auditLogger: coreStart.security.audit?.asScoped(request), logger: this.logger, getServerBasePath: () => core.http.basePath.serverBasePath, @@ -94,7 +94,6 @@ export class RequestContextFactory implements IRequestContextFactory { capabilityPath: 'securitySolutionAssistant.*', } ); - return this.assistantService.createAIAssistantKnowledgeBaseDataClient({ spaceId: getSpaceId(), logger: this.logger, diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/append_conversation_messages_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/bulk_actions_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/create_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/create_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/create_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/create_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/create_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/create_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/create_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/create_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/delete_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/delete_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/delete_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/delete_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/delete_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/delete_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/delete_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/delete_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/find_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/find_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/find_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/find_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/find_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/find_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/find_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/find_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/read_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/read_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/read_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/read_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/read_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/read_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/read_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/read_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/update_route.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/update_route.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/update_route.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/update_route.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/user_conversations/update_route.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/update_route.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/user_conversations/update_route.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/user_conversations/update_route.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/utils.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/utils.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/utils.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/utils.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/routes/utils.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/routes/utils.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/routes/utils.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/routes/utils.ts diff --git a/x-pack/plugins/elastic_assistant/server/services/app_context.test.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/services/app_context.test.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/services/app_context.test.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/services/app_context.test.ts diff --git a/x-pack/plugins/elastic_assistant/server/services/app_context.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/services/app_context.ts similarity index 100% rename from x-pack/plugins/elastic_assistant/server/services/app_context.ts rename to x-pack/solutions/security/plugins/elastic_assistant/server/services/app_context.ts diff --git a/x-pack/solutions/security/plugins/elastic_assistant/server/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/server/types.ts new file mode 100755 index 0000000000000..1102d4b7b8441 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/server/types.ts @@ -0,0 +1,250 @@ +/* + * 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 { + PluginSetupContract as ActionsPluginSetup, + PluginStartContract as ActionsPluginStart, +} from '@kbn/actions-plugin/server'; +import type { + AuthenticatedUser, + CoreRequestHandlerContext, + CoreSetup, + AnalyticsServiceSetup, + CustomRequestHandlerContext, + IRouter, + KibanaRequest, + Logger, + AuditLogger, +} from '@kbn/core/server'; +import type { LlmTasksPluginStart } from '@kbn/llm-tasks-plugin/server'; +import { type MlPluginSetup } from '@kbn/ml-plugin/server'; +import { DynamicStructuredTool, Tool } from '@langchain/core/tools'; +import { SpacesPluginSetup, SpacesPluginStart } from '@kbn/spaces-plugin/server'; +import { TaskManagerSetupContract } from '@kbn/task-manager-plugin/server'; +import { ElasticsearchClient } from '@kbn/core/server'; +import { + AttackDiscoveryPostRequestBody, + DefendInsightsPostRequestBody, + AssistantFeatures, + ExecuteConnectorRequestBody, + Replacements, +} from '@kbn/elastic-assistant-common'; +import { AnonymizationFieldResponse } from '@kbn/elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen'; +import { + LicensingApiRequestHandlerContext, + LicensingPluginStart, +} from '@kbn/licensing-plugin/server'; +import { + ActionsClientChatBedrockConverse, + ActionsClientChatOpenAI, + ActionsClientChatVertexAI, + ActionsClientGeminiChatModel, + ActionsClientLlm, +} from '@kbn/langchain/server'; +import type { InferenceServerStart } from '@kbn/inference-plugin/server'; + +import { ProductDocBaseStartContract } from '@kbn/product-doc-base-plugin/server'; +import type { GetAIAssistantKnowledgeBaseDataClientParams } from './ai_assistant_data_clients/knowledge_base'; +import { AttackDiscoveryDataClient } from './lib/attack_discovery/persistence'; +import { AIAssistantConversationsDataClient } from './ai_assistant_data_clients/conversations'; +import type { GetRegisteredFeatures, GetRegisteredTools } from './services/app_context'; +import { AIAssistantDataClient } from './ai_assistant_data_clients'; +import { AIAssistantKnowledgeBaseDataClient } from './ai_assistant_data_clients/knowledge_base'; +import type { DefendInsightsDataClient } from './ai_assistant_data_clients/defend_insights'; + +export const PLUGIN_ID = 'elasticAssistant' as const; + +/** The plugin setup interface */ +export interface ElasticAssistantPluginSetup { + actions: ActionsPluginSetup; +} + +/** The plugin start interface */ +export interface ElasticAssistantPluginStart { + /** + * Actions plugin start contract. + */ + actions: ActionsPluginStart; + /** + * Inference plugin start contract. + */ + inference: InferenceServerStart; + /** + * Register features to be used by the elastic assistant. + * + * Note: Be sure to use the pluginName that is sent in the request headers by your plugin to ensure it is extracted + * and the correct features are available. See {@link getPluginNameFromRequest} for more details. + * + * @param pluginName Name of the plugin the features should be registered to + * @param features Partial to be registered with for the given plugin + */ + registerFeatures: (pluginName: string, features: Partial) => void; + /** + * Get the registered features for a given plugin name. + * @param pluginName Name of the plugin to get the features for + */ + getRegisteredFeatures: GetRegisteredFeatures; + /** + * Register tools to be used by the elastic assistant. + * + * Note: Be sure to use the pluginName that is sent in the request headers by your plugin to ensure it is extracted + * and the correct tools are selected. See {@link getPluginNameFromRequest} for more details. + * + * @param pluginName Name of the plugin the tool should be registered to + * @param tools AssistantTools to be registered with for the given plugin + */ + registerTools: (pluginName: string, tools: AssistantTool[]) => void; + /** + * Get the registered tools for a given plugin name. + * @param pluginName Name of the plugin to get the tools for + */ + getRegisteredTools: GetRegisteredTools; +} + +export interface ElasticAssistantPluginSetupDependencies { + actions: ActionsPluginSetup; + ml: MlPluginSetup; + taskManager: TaskManagerSetupContract; + spaces?: SpacesPluginSetup; +} +export interface ElasticAssistantPluginStartDependencies { + actions: ActionsPluginStart; + llmTasks: LlmTasksPluginStart; + inference: InferenceServerStart; + spaces?: SpacesPluginStart; + licensing: LicensingPluginStart; + productDocBase: ProductDocBaseStartContract; +} + +export interface ElasticAssistantApiRequestHandlerContext { + core: CoreRequestHandlerContext; + actions: ActionsPluginStart; + auditLogger?: AuditLogger; + getRegisteredFeatures: GetRegisteredFeatures; + getRegisteredTools: GetRegisteredTools; + logger: Logger; + getServerBasePath: () => string; + getSpaceId: () => string; + getCurrentUser: () => AuthenticatedUser | null; + getAIAssistantConversationsDataClient: () => Promise; + getAIAssistantKnowledgeBaseDataClient: ( + params?: GetAIAssistantKnowledgeBaseDataClientParams + ) => Promise; + getAttackDiscoveryDataClient: () => Promise; + getDefendInsightsDataClient: () => Promise; + getAIAssistantPromptsDataClient: () => Promise; + getAIAssistantAnonymizationFieldsDataClient: () => Promise; + llmTasks: LlmTasksPluginStart; + inference: InferenceServerStart; + telemetry: AnalyticsServiceSetup; +} +/** + * @internal + */ +export type ElasticAssistantRequestHandlerContext = CustomRequestHandlerContext<{ + elasticAssistant: ElasticAssistantApiRequestHandlerContext; + licensing: LicensingApiRequestHandlerContext; +}>; + +export type ElasticAssistantPluginRouter = IRouter; + +export type ElasticAssistantPluginCoreSetupDependencies = CoreSetup< + ElasticAssistantPluginStartDependencies, + ElasticAssistantPluginStart +>; + +export type GetElser = () => Promise | never; + +export interface AssistantResourceNames { + componentTemplate: { + conversations: string; + knowledgeBase: string; + prompts: string; + anonymizationFields: string; + attackDiscovery: string; + defendInsights: string; + }; + indexTemplate: { + conversations: string; + knowledgeBase: string; + prompts: string; + anonymizationFields: string; + attackDiscovery: string; + defendInsights: string; + }; + aliases: { + conversations: string; + knowledgeBase: string; + prompts: string; + anonymizationFields: string; + attackDiscovery: string; + defendInsights: string; + }; + indexPatterns: { + conversations: string; + knowledgeBase: string; + prompts: string; + anonymizationFields: string; + attackDiscovery: string; + defendInsights: string; + }; + pipelines: { + knowledgeBase: string; + }; +} + +export interface IIndexPatternString { + pattern: string; + alias: string; + name: string; + basePattern: string; + validPrefixes?: string[]; + secondaryAlias?: string; +} + +/** + * Interfaces for registering tools to be used by the elastic assistant + */ + +export interface AssistantTool { + id: string; + name: string; + description: string; + sourceRegister: string; + isSupported: (params: AssistantToolParams) => boolean; + getTool: (params: AssistantToolParams) => Tool | DynamicStructuredTool | null; +} + +export type AssistantToolLlm = + | ActionsClientChatBedrockConverse + | ActionsClientChatOpenAI + | ActionsClientGeminiChatModel + | ActionsClientChatVertexAI; + +export interface AssistantToolParams { + alertsIndexPattern?: string; + anonymizationFields?: AnonymizationFieldResponse[]; + inference?: InferenceServerStart; + isEnabledKnowledgeBase: boolean; + connectorId?: string; + esClient: ElasticsearchClient; + kbDataClient?: AIAssistantKnowledgeBaseDataClient; + langChainTimeout?: number; + llm?: ActionsClientLlm | AssistantToolLlm; + llmTasks?: LlmTasksPluginStart; + isOssModel?: boolean; + logger: Logger; + onNewReplacements?: (newReplacements: Replacements) => void; + replacements?: Replacements; + request: KibanaRequest< + unknown, + unknown, + ExecuteConnectorRequestBody | AttackDiscoveryPostRequestBody | DefendInsightsPostRequestBody + >; + size?: number; + telemetry?: AnalyticsServiceSetup; +} diff --git a/x-pack/solutions/security/plugins/elastic_assistant/tsconfig.json b/x-pack/solutions/security/plugins/elastic_assistant/tsconfig.json new file mode 100644 index 0000000000000..c8bb305725e98 --- /dev/null +++ b/x-pack/solutions/security/plugins/elastic_assistant/tsconfig.json @@ -0,0 +1,60 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + }, + "include": [ + "common/**/*", + "server/lib/**/*", + "server/**/*", + "scripts/**/*.ts", + // must declare *.json explicitly per https://github.com/microsoft/TypeScript/issues/25636 + "server/**/*.json", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/core-http-server", + "@kbn/licensing-plugin", + "@kbn/securitysolution-es-utils", + "@kbn/actions-plugin", + "@kbn/logging-mocks", + "@kbn/core-elasticsearch-server-mocks", + "@kbn/core-logging-server-mocks", + "@kbn/utility-types-jest", + "@kbn/utility-types", + "@kbn/tooling-log", + "@kbn/core-elasticsearch-server", + "@kbn/logging", + "@kbn/ml-plugin", + "@kbn/elastic-assistant-common", + "@kbn/core-http-router-server-mocks", + "@kbn/data-stream-adapter", + "@kbn/core-saved-objects-utils-server", + "@kbn/core-elasticsearch-client-server-mocks", + "@kbn/task-manager-plugin", + "@kbn/es-query", + "@kbn/es-types", + "@kbn/config-schema", + "@kbn/spaces-plugin", + "@kbn/ml-response-stream", + "@kbn/data-plugin", + "@kbn/i18n", + "@kbn/core-security-common", + "@kbn/core-saved-objects-api-server", + "@kbn/langchain", + "@kbn/stack-connectors-plugin", + "@kbn/security-plugin", + "@kbn/apm-utils", + "@kbn/std", + "@kbn/zod", + "@kbn/inference-plugin", + "@kbn/data-views-plugin", + "@kbn/core-analytics-server", + "@kbn/llm-tasks-plugin", + "@kbn/product-doc-base-plugin" + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/x-pack/solutions/security/plugins/threat_intelligence/.storybook/main.js b/x-pack/solutions/security/plugins/threat_intelligence/.storybook/main.js new file mode 100644 index 0000000000000..86b48c32f103e --- /dev/null +++ b/x-pack/solutions/security/plugins/threat_intelligence/.storybook/main.js @@ -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. + */ + +module.exports = require('@kbn/storybook').defaultConfig; diff --git a/x-pack/plugins/threat_intelligence/CONTRIBUTING.md b/x-pack/solutions/security/plugins/threat_intelligence/CONTRIBUTING.md similarity index 98% rename from x-pack/plugins/threat_intelligence/CONTRIBUTING.md rename to x-pack/solutions/security/plugins/threat_intelligence/CONTRIBUTING.md index e7408742371e8..ae7357bef4d0a 100644 --- a/x-pack/plugins/threat_intelligence/CONTRIBUTING.md +++ b/x-pack/solutions/security/plugins/threat_intelligence/CONTRIBUTING.md @@ -127,7 +127,7 @@ If changes are made to how developers build, test, interact with, or release cod **Unit tests:** -`npm run test:jest --config ./x-pack/plugins/threat_intelligence` +`npm run test:jest --config ./x-pack/solutions/security/plugins/threat_intelligence` **E2E tests:** diff --git a/x-pack/solutions/security/plugins/threat_intelligence/README.md b/x-pack/solutions/security/plugins/threat_intelligence/README.md new file mode 100755 index 0000000000000..033b065dcdd20 --- /dev/null +++ b/x-pack/solutions/security/plugins/threat_intelligence/README.md @@ -0,0 +1,91 @@ +# Threat Intelligence + +Elastic Threat Intelligence makes it easy to analyze and investigate potential security threats by aggregating data from multiple sources in one place. You’ll be able to view data from all activated threat intelligence feeds and take action. + +### Where to find the UI for this plugin? + +The Threat Intelligence UI is displayed in Kibana Security, under the Explore section. + +## Development setup + +### Kibana development in general + +Best source - [internal Kibana docs](https://docs.elastic.dev/kibana-dev-docs/getting-started/welcome). If you have any issues with setting up your Kibana dev environment [#kibana](https://elastic.slack.com/archives/C0D8P2XK5) Slack channel is a good way to get help. + +### Essential `kibana.yml` settings + +You can make a copy of `kibana.yml` file into `kibana.dev.yml` and make adjustments to the settings. External documentation on the flags available is [here](https://www.elastic.co/guide/en/kibana/current/settings.html) + +It is recommended to set `server.basePath: "/kbn"` to make you local instance persist the base Kibana path. If you don't do it, the base path will be a random string every time you start Kibana. Any other value than `/kbn` will also work. + +### Getting Threat Intelligence feeds data into Kibana + +There are many ways to get data for you local development. We first focus on getting Threat Intelligence data specifically. + +### Setting up filebeat threatintel integrations locally + +1. install [mage](https://github.com/magefile/mage). It is a Go build tool used to build `beats`. Installation from the sources requires Go lang set up. A simpler option might be to install it from a package manager available in your system (eg. `brew` on MacOs) or use their [binary distribution](https://github.com/magefile/mage/releases) +1. start Elasticsearch and Kibana +1. clone [beats](https://github.com/elastic/beats) repository +1. inside beats repository, update `x-pack/filebeat/filebeat.yml` with your local Elasticsearch and Kibana connection configs + + ``` + output.elasticsearch: + hosts: ["localhost:9200"] + username: "elastic" + password: "changeme" + + setup.kibana: + host: "localhost:5601" // make sure to run Kibana with --no-base-path option or specify server.basePath in Kibana config and use it here as a path, eg. localhost:5601/kbn + ``` + +1. go into `x-pack/filebeat` (that's where security related modules live) +1. build filebeat `mage build` +1. enable `threatintel` module by running `./filebeat modules enable threatintel` +1. enable specific Threat Intelligence integrations by updating `modules.d/threatintel.yml`. Update `enable` to `true` in every integration you want to enable and configs specific for these integrations. The bare minimum is to enable Abuse.CH feeds `abuseurl`, `abusemalware` and `malwarebazaar`. +1. run `./filebeat setup -E setup.dashboards.directory=build/kibana` to set up predefined dashboards +1. run `./filebeat -e` to start filebeat +1. to validate that the set up works, wait for some Threat Intel data to be ingested and then go in Analytics > Discover in your local Kibana to search `event.category : threat and event.type : indicator`. You should see some documents returned by this search. Abuse.CH feeds are up to date so you should see the results from the last 7 days. + +### More ways to get data + +There are many more tools available for getting the data for testing or local development, depending on the data type and usecase. + +- Kibana development docs > [Add data](https://docs.elastic.dev/kibana-dev-docs/getting-started/sample-data) +- [Dev/Design/Testing Environments and Frameworks](https://docs.google.com/document/d/1DGCcLMnVKQ_STlkbS4E0m4kbPivNtR8iMlg_IoCuCEw/edit#) gathered by Security Engineering Productivity team + +### Generate fixtures for local testing + +You can generate large volumes of threat indicators on demand with the following script: + +``` +node scripts/generate_indicators.js +``` + +see the file in order to adjust the amount of indicators generated. The default is one million. + +## E2E + +### Running locally + +Cypress tests are integrated with the Security Solution ones. Please refer to https://github.com/elastic/kibana/blob/main/x-pack/test/security_solution_cypress/cypress/README.md for more information + +## FAQ + +### How is the Threat Intelligence code loaded in Kibana? + +The Threat Intelligence plugin is loaded lazily within the [security_solution](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution) plugin, +from `x-pack/plugins/security_solution/public/threat_intelligence` owned by the Threat Hunting Investigations Team. + +## QA and demo for implemented features + +One way to QA and demo the feature merged into `main` branch is to run the latest `main` locally. +Another option is to deploy a Staging instance. For Staging environment snapshots are being build every night with the latest state of the `main` branch. More documentation can be found [here](https://cloud.elastic.dev/environments/Staging/#automatic-termination-of-staging-deployments) + +## Contributing + +See [CONTRIBUTING.md](https://github.com/elastic/kibana/blob/main/x-pack/solutions/security/plugins/threat_intelligence/CONTRIBUTING.md) for information on contributing. + +## Issues + +Please report any issues in [this GitHub project](https://github.com/orgs/elastic/projects/758/). \ No newline at end of file diff --git a/x-pack/plugins/threat_intelligence/common/constants.ts b/x-pack/solutions/security/plugins/threat_intelligence/common/constants.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/common/constants.ts rename to x-pack/solutions/security/plugins/threat_intelligence/common/constants.ts diff --git a/x-pack/plugins/threat_intelligence/common/types/indicator.ts b/x-pack/solutions/security/plugins/threat_intelligence/common/types/indicator.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/common/types/indicator.ts rename to x-pack/solutions/security/plugins/threat_intelligence/common/types/indicator.ts diff --git a/x-pack/solutions/security/plugins/threat_intelligence/jest.config.js b/x-pack/solutions/security/plugins/threat_intelligence/jest.config.js new file mode 100644 index 0000000000000..9524dca683991 --- /dev/null +++ b/x-pack/solutions/security/plugins/threat_intelligence/jest.config.js @@ -0,0 +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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../', + roots: ['/x-pack/solutions/security/plugins/threat_intelligence'], +}; diff --git a/x-pack/plugins/threat_intelligence/kibana.jsonc b/x-pack/solutions/security/plugins/threat_intelligence/kibana.jsonc similarity index 100% rename from x-pack/plugins/threat_intelligence/kibana.jsonc rename to x-pack/solutions/security/plugins/threat_intelligence/kibana.jsonc diff --git a/x-pack/plugins/threat_intelligence/package.json b/x-pack/solutions/security/plugins/threat_intelligence/package.json similarity index 100% rename from x-pack/plugins/threat_intelligence/package.json rename to x-pack/solutions/security/plugins/threat_intelligence/package.json diff --git a/x-pack/plugins/threat_intelligence/public/components/date_formatter.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/date_formatter.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/date_formatter.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/date_formatter.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/date_formatter.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/date_formatter.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/date_formatter.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/date_formatter.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/date_formatter.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/date_formatter.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/date_formatter.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/date_formatter.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/empty_state.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/empty_state.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/empty_state.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/empty_state.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/empty_state.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/empty_state.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/empty_state.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/empty_state.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/layout.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/layout.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/layout.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/layout.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/layout.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/layout.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/layout.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/layout.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/layout.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/layout.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/layout.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/layout.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/no_results.svg b/x-pack/solutions/security/plugins/threat_intelligence/public/components/no_results.svg similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/no_results.svg rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/no_results.svg diff --git a/x-pack/plugins/threat_intelligence/public/components/paywall.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/paywall.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/paywall.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/paywall.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/paywall.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/paywall.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/paywall.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/paywall.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/test_ids.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/components/test_ids.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/test_ids.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/test_ids.ts diff --git a/x-pack/plugins/threat_intelligence/public/components/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/components/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/components/update_status.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/update_status.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/update_status.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/update_status.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/components/update_status.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/components/update_status.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/components/update_status.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/components/update_status.tsx diff --git a/x-pack/plugins/threat_intelligence/public/constants/common.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/constants/common.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/constants/common.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/constants/common.ts diff --git a/x-pack/plugins/threat_intelligence/public/constants/navigation.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/constants/navigation.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/constants/navigation.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/constants/navigation.ts diff --git a/x-pack/plugins/threat_intelligence/public/constants/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/constants/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/constants/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/constants/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/containers/enterprise_guard.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/enterprise_guard.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/enterprise_guard.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/enterprise_guard.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/enterprise_guard.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/enterprise_guard.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/enterprise_guard.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/enterprise_guard.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/field_types_provider.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/field_types_provider.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/field_types_provider.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/field_types_provider.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/filters_global.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/filters_global.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/filters_global.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/filters_global.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/indicators_page_wrapper.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/indicators_page_wrapper.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/indicators_page_wrapper.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/indicators_page_wrapper.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/inspector.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/inspector.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/inspector.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/inspector.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/integrations_guard.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/integrations_guard.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/integrations_guard.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/integrations_guard.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/integrations_guard.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/integrations_guard.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/integrations_guard.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/integrations_guard.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/security_solution_context.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/security_solution_context.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/security_solution_context.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/security_solution_context.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/security_solution_page_wrapper.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/security_solution_page_wrapper.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/security_solution_page_wrapper.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/security_solution_page_wrapper.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/security_solution_plugin_template_wrapper.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/security_solution_plugin_template_wrapper.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/security_solution_plugin_template_wrapper.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/security_solution_plugin_template_wrapper.tsx diff --git a/x-pack/plugins/threat_intelligence/public/containers/test_ids.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/test_ids.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/containers/test_ids.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/containers/test_ids.ts diff --git a/x-pack/plugins/threat_intelligence/public/hooks/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_documentation_link.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_documentation_link.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_documentation_link.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_documentation_link.tsx diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_field_types.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_field_types.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_field_types.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_field_types.ts diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_inspector.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_inspector.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_inspector.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_inspector.ts diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_integrations.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_integrations.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_integrations.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_integrations.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_integrations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_integrations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_integrations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_integrations.ts diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_integrations_page_link.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_integrations_page_link.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_integrations_page_link.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_integrations_page_link.tsx diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_kibana.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_kibana.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_kibana.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_kibana.ts diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_kibana_ui_settings.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_kibana_ui_settings.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_kibana_ui_settings.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_kibana_ui_settings.tsx diff --git a/x-pack/plugins/threat_intelligence/public/hooks/use_security_context.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_security_context.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/hooks/use_security_context.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/hooks/use_security_context.ts diff --git a/x-pack/plugins/threat_intelligence/public/index.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/index.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/index.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/index.ts diff --git a/x-pack/plugins/threat_intelligence/public/mocks/mock_field_type_map.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_field_type_map.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/mock_field_type_map.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_field_type_map.ts diff --git a/x-pack/plugins/threat_intelligence/public/mocks/mock_indicators_filters_context.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_indicators_filters_context.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/mock_indicators_filters_context.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_indicators_filters_context.tsx diff --git a/x-pack/plugins/threat_intelligence/public/mocks/mock_kibana_timelines_service.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_kibana_timelines_service.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/mock_kibana_timelines_service.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_kibana_timelines_service.tsx diff --git a/x-pack/plugins/threat_intelligence/public/mocks/mock_kibana_triggers_actions_ui_service.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_kibana_triggers_actions_ui_service.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/mock_kibana_triggers_actions_ui_service.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_kibana_triggers_actions_ui_service.tsx diff --git a/x-pack/plugins/threat_intelligence/public/mocks/mock_kibana_ui_settings_service.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_kibana_ui_settings_service.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/mock_kibana_ui_settings_service.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_kibana_ui_settings_service.ts diff --git a/x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_security_context.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/mock_security_context.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_security_context.tsx diff --git a/x-pack/plugins/threat_intelligence/public/mocks/mock_use_kibana_for_filters.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_use_kibana_for_filters.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/mock_use_kibana_for_filters.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/mock_use_kibana_for_filters.ts diff --git a/x-pack/plugins/threat_intelligence/public/mocks/story_providers.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/story_providers.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/story_providers.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/story_providers.tsx diff --git a/x-pack/plugins/threat_intelligence/public/mocks/test_providers.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/mocks/test_providers.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/mocks/test_providers.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/mocks/test_providers.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/components/add_to_block_list.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/containers/flyout.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/containers/flyout.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/containers/flyout.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/containers/flyout.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/containers/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/containers/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/containers/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/containers/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/hooks/use_policies.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/hooks/use_set_url_params.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/hooks/use_set_url_params.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/hooks/use_set_url_params.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/hooks/use_set_url_params.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/block_list/utils/can_add_to_block_list.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_existing_case.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/add_to_new_case.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/attachment_children.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/attachment_children.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/attachment_children.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/attachment_children.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/comment_children.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/comment_children.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/comment_children.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/comment_children.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/comment_children.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/comment_children.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/comment_children.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/comment_children.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/comment_children.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/comment_children.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/comment_children.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/comment_children.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/styles.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/styles.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/styles.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/styles.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/components/test_ids.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/test_ids.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/components/test_ids.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/components/test_ids.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_case_permission.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/hooks/use_indicator_by_id.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/services/fetch_indicator_by_id.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/utils/attachments.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/utils/attachments.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/utils/attachments.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/utils/attachments.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/cases/utils/attachments.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/utils/attachments.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/cases/utils/attachments.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/cases/utils/attachments.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/empty_page/empty_page.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/empty_page.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/empty_page/empty_page.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/empty_page.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/empty_page/empty_page.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/empty_page.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/empty_page/empty_page.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/empty_page.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/empty_page/empty_page.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/empty_page.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/empty_page/empty_page.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/empty_page.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/empty_page/integrations_light.svg b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/integrations_light.svg similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/empty_page/integrations_light.svg rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/integrations_light.svg diff --git a/x-pack/plugins/threat_intelligence/public/modules/empty_page/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/empty_page/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/empty_page/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/barchart.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/legend_action.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/styles.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/styles.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/styles.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/styles.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/test_ids.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/test_ids.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/test_ids.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/test_ids.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/copy_to_clipboard.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_label.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_label.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_label.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_label.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/field_value.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/tlp_badge.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/common/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/common/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/block.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/empty_prompt.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/fields_table.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/flyout.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/highlighted_values_table.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/highlighted_values_table.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/highlighted_values_table.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/highlighted_values_table.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/indicator_value_actions.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/json_tab.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/overview_tab.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/table_tab.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/take_action.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/test_ids.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/test_ids.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/test_ids.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/test_ids.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/flyout/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/flyout/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/actions_row_cell.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/actions_row_cell.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/actions_row_cell.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/actions_row_cell.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/cell_actions.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/cell_actions.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/cell_actions.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/cell_actions.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/cell_popover_renderer.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/cell_popover_renderer.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/cell_popover_renderer.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/cell_popover_renderer.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/cell_renderer.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/cell_renderer.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/cell_renderer.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/cell_renderer.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/field_browser.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/more_actions.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/open_flyout_button.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/styles.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/styles.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/styles.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/styles.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/table.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/table.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/table.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/table.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/table.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/table.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/test_ids.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/test_ids.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/test_ids.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/test_ids.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/components/table/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/containers/block_list_provider.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/containers/block_list_provider.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/containers/block_list_provider.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/containers/block_list_provider.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/containers/filters.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/containers/filters.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/containers/filters.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/containers/filters.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/test_ids.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/test_ids.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/test_ids.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/test_ids.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_aggregated_indicators.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_block_list_context.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_block_list_context.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_block_list_context.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_block_list_context.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_column_settings.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_filters_context.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_filters_context.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_filters_context.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_filters_context.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_flyout_context.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_flyout_context.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_flyout_context.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_flyout_context.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_indicators.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_sourcerer_data_view.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_sourcerer_data_view.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_sourcerer_data_view.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_sourcerer_data_view.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_table_context.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_table_context.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_table_context.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_table_context.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_toolbar_options.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_total_count.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/pages/indicators.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/pages/indicators.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/pages/indicators.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/pages/indicators.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/pages/indicators.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/pages/indicators.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/pages/indicators.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/pages/indicators.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_aggregated_indicators.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/services/fetch_indicators.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/utils/field_value.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/field_value.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/utils/field_value.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/field_value.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/utils/field_value.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/field_value.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/utils/field_value.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/field_value.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/utils/get_field_schema.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/get_field_schema.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/utils/get_field_schema.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/get_field_schema.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/utils/get_indicator_query_params.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/get_indicator_query_params.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/utils/get_indicator_query_params.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/get_indicator_query_params.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/utils/unwrap_value.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_in.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/filter_out.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/query_bar.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/query_bar.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/query_bar.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/query_bar.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/components/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/components/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/components/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filter_in_out.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filters.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filters.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filters.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/hooks/use_filters.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/utils/filter.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/utils/filter.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/utils/filter.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/utils/filter.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/query_bar/utils/filter.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/utils/filter.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/query_bar/utils/filter.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/query_bar/utils/filter.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/add_to_timeline.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.stories.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.stories.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.stories.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/investigate_in_timeline.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/styles.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/styles.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/styles.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/styles.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/components/translations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/translations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/components/translations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/components/translations.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_add_to_timeline.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.test.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.test.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.test.tsx diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/hooks/use_investigate_in_timeline.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/timeline/utils/data_provider.ts diff --git a/x-pack/plugins/threat_intelligence/public/plugin.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/plugin.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/plugin.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/plugin.tsx diff --git a/x-pack/plugins/threat_intelligence/public/types.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/types.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/types.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/types.ts diff --git a/x-pack/plugins/threat_intelligence/public/utils/dates.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/dates.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/utils/dates.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/utils/dates.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/utils/dates.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/dates.tsx similarity index 100% rename from x-pack/plugins/threat_intelligence/public/utils/dates.tsx rename to x-pack/solutions/security/plugins/threat_intelligence/public/utils/dates.tsx diff --git a/x-pack/plugins/threat_intelligence/public/utils/filter_integrations.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/filter_integrations.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/utils/filter_integrations.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/utils/filter_integrations.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/utils/filter_integrations.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/filter_integrations.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/utils/filter_integrations.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/utils/filter_integrations.ts diff --git a/x-pack/plugins/threat_intelligence/public/utils/search.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/search.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/utils/search.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/utils/search.ts diff --git a/x-pack/plugins/threat_intelligence/public/utils/security_solution_links.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/security_solution_links.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/utils/security_solution_links.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/utils/security_solution_links.test.ts diff --git a/x-pack/plugins/threat_intelligence/public/utils/security_solution_links.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/utils/security_solution_links.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/public/utils/security_solution_links.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/utils/security_solution_links.ts diff --git a/x-pack/plugins/threat_intelligence/scripts/generate_indicators.js b/x-pack/solutions/security/plugins/threat_intelligence/scripts/generate_indicators.js similarity index 100% rename from x-pack/plugins/threat_intelligence/scripts/generate_indicators.js rename to x-pack/solutions/security/plugins/threat_intelligence/scripts/generate_indicators.js diff --git a/x-pack/plugins/threat_intelligence/server/index.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/index.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/index.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/index.ts diff --git a/x-pack/plugins/threat_intelligence/server/plugin.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/plugin.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/plugin.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/plugin.ts diff --git a/x-pack/plugins/threat_intelligence/server/search_strategy.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/search_strategy.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/search_strategy.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/search_strategy.ts diff --git a/x-pack/plugins/threat_intelligence/server/types.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/types.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/types.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/types.ts diff --git a/x-pack/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.test.ts diff --git a/x-pack/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/utils/calculate_barchart_time_interval.ts diff --git a/x-pack/plugins/threat_intelligence/server/utils/get_indicator_query_params.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/utils/get_indicator_query_params.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/utils/get_indicator_query_params.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/utils/get_indicator_query_params.ts diff --git a/x-pack/plugins/threat_intelligence/server/utils/get_runtime_mappings.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/utils/get_runtime_mappings.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/utils/get_runtime_mappings.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/utils/get_runtime_mappings.ts diff --git a/x-pack/plugins/threat_intelligence/server/utils/indicator_name.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/utils/indicator_name.test.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/utils/indicator_name.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/utils/indicator_name.test.ts diff --git a/x-pack/plugins/threat_intelligence/server/utils/indicator_name.ts b/x-pack/solutions/security/plugins/threat_intelligence/server/utils/indicator_name.ts similarity index 100% rename from x-pack/plugins/threat_intelligence/server/utils/indicator_name.ts rename to x-pack/solutions/security/plugins/threat_intelligence/server/utils/indicator_name.ts diff --git a/x-pack/solutions/security/plugins/threat_intelligence/tsconfig.json b/x-pack/solutions/security/plugins/threat_intelligence/tsconfig.json new file mode 100644 index 0000000000000..ffac934023eb6 --- /dev/null +++ b/x-pack/solutions/security/plugins/threat_intelligence/tsconfig.json @@ -0,0 +1,39 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + "scripts/**/*", + "public/**/*.json", + "server/**/*.json", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/cases-plugin", + "@kbn/timelines-plugin", + "@kbn/core", + "@kbn/data-plugin", + "@kbn/unified-search-plugin", + "@kbn/triggers-actions-ui-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/i18n-react", + "@kbn/data-views-plugin", + "@kbn/es-query", + "@kbn/rule-registry-plugin", + "@kbn/inspector-plugin", + "@kbn/shared-ux-page-kibana-template-types", + "@kbn/doc-links", + "@kbn/i18n", + "@kbn/kibana-react-plugin", + "@kbn/utility-types", + "@kbn/ui-theme", + "@kbn/securitysolution-io-ts-list-types", + "@kbn/core-ui-settings-browser", + "@kbn/search-types" + ], + "exclude": ["target/**/*"] +} diff --git a/x-pack/plugins/timelines/README.md b/x-pack/solutions/security/plugins/timelines/README.md similarity index 100% rename from x-pack/plugins/timelines/README.md rename to x-pack/solutions/security/plugins/timelines/README.md diff --git a/x-pack/plugins/timelines/common/api/search_strategy/index.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/index.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/index.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/index_fields.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/index_fields.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/index_fields.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/index_fields.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/filter_query.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/filter_query.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/filter_query.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/filter_query.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/language.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/language.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/language.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/language.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/order.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/order.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/order.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/order.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/pagination.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/pagination.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/pagination.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/pagination.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/runtime_mappings.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/runtime_mappings.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/runtime_mappings.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/runtime_mappings.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/sort.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/sort.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/sort.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/sort.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/timeline_events_queries.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/timeline_events_queries.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/timeline_events_queries.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/timeline_events_queries.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/model/timerange.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/timerange.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/model/timerange.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/model/timerange.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/eql.test.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/eql.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/eql.test.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/eql.test.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/eql.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/eql.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/eql.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/eql.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_all.test.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_all.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/events_all.test.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_all.test.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_all.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_all.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/events_all.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_all.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_details.test.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_details.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/events_details.test.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_details.test.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_details.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_details.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/events_details.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_details.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.test.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.test.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.test.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/kpi.test.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/kpi.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/kpi.test.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/kpi.test.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/kpi.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/kpi.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/kpi.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/kpi.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/mocks/base_timeline_request.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/mocks/base_timeline_request.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/mocks/base_timeline_request.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/mocks/base_timeline_request.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.test.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/request_basic.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.test.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/request_basic.test.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/request_basic.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/request_basic.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/request_paginated.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/request_paginated.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/request_paginated.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/request_paginated.ts diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/timeline.ts b/x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/timeline.ts similarity index 100% rename from x-pack/plugins/timelines/common/api/search_strategy/timeline/timeline.ts rename to x-pack/solutions/security/plugins/timelines/common/api/search_strategy/timeline/timeline.ts diff --git a/x-pack/plugins/timelines/common/constants.ts b/x-pack/solutions/security/plugins/timelines/common/constants.ts similarity index 100% rename from x-pack/plugins/timelines/common/constants.ts rename to x-pack/solutions/security/plugins/timelines/common/constants.ts diff --git a/x-pack/plugins/timelines/common/experimental_features.ts b/x-pack/solutions/security/plugins/timelines/common/experimental_features.ts similarity index 100% rename from x-pack/plugins/timelines/common/experimental_features.ts rename to x-pack/solutions/security/plugins/timelines/common/experimental_features.ts diff --git a/x-pack/plugins/timelines/common/index.ts b/x-pack/solutions/security/plugins/timelines/common/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/index.ts rename to x-pack/solutions/security/plugins/timelines/common/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/common/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/common/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/common/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/eql/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/eql/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/eql/validation/helpers.mock.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/helpers.mock.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/eql/validation/helpers.mock.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/helpers.mock.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/eql/validation/helpers.test.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/helpers.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/eql/validation/helpers.test.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/helpers.test.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/eql/validation/helpers.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/helpers.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/eql/validation/helpers.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/helpers.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/eql/validation/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/eql/validation/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/eql/validation/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/index_fields/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/index_fields/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/timeline/events/all/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/all/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/timeline/events/details/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/details/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/eql/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/timeline/events/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/timeline/events/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/events/last_event_time/index.ts diff --git a/x-pack/plugins/timelines/common/search_strategy/timeline/index.ts b/x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/search_strategy/timeline/index.ts rename to x-pack/solutions/security/plugins/timelines/common/search_strategy/timeline/index.ts diff --git a/x-pack/plugins/timelines/common/typed_json.ts b/x-pack/solutions/security/plugins/timelines/common/typed_json.ts similarity index 100% rename from x-pack/plugins/timelines/common/typed_json.ts rename to x-pack/solutions/security/plugins/timelines/common/typed_json.ts diff --git a/x-pack/plugins/timelines/common/types/index.ts b/x-pack/solutions/security/plugins/timelines/common/types/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/types/index.ts rename to x-pack/solutions/security/plugins/timelines/common/types/index.ts diff --git a/x-pack/plugins/timelines/common/types/timeline/actions/index.ts b/x-pack/solutions/security/plugins/timelines/common/types/timeline/actions/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/types/timeline/actions/index.ts rename to x-pack/solutions/security/plugins/timelines/common/types/timeline/actions/index.ts diff --git a/x-pack/plugins/timelines/common/types/timeline/cells/index.ts b/x-pack/solutions/security/plugins/timelines/common/types/timeline/cells/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/types/timeline/cells/index.ts rename to x-pack/solutions/security/plugins/timelines/common/types/timeline/cells/index.ts diff --git a/x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts b/x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/types/timeline/data_provider/index.ts rename to x-pack/solutions/security/plugins/timelines/common/types/timeline/data_provider/index.ts diff --git a/x-pack/plugins/timelines/common/types/timeline/index.ts b/x-pack/solutions/security/plugins/timelines/common/types/timeline/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/types/timeline/index.ts rename to x-pack/solutions/security/plugins/timelines/common/types/timeline/index.ts diff --git a/x-pack/plugins/timelines/common/types/timeline/rows/index.ts b/x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/types/timeline/rows/index.ts rename to x-pack/solutions/security/plugins/timelines/common/types/timeline/rows/index.ts diff --git a/x-pack/plugins/timelines/common/utility_types.ts b/x-pack/solutions/security/plugins/timelines/common/utility_types.ts similarity index 100% rename from x-pack/plugins/timelines/common/utility_types.ts rename to x-pack/solutions/security/plugins/timelines/common/utility_types.ts diff --git a/x-pack/plugins/timelines/common/utils/accessibility/helpers.test.tsx b/x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.test.tsx similarity index 100% rename from x-pack/plugins/timelines/common/utils/accessibility/helpers.test.tsx rename to x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.test.tsx diff --git a/x-pack/plugins/timelines/common/utils/accessibility/helpers.ts b/x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts similarity index 100% rename from x-pack/plugins/timelines/common/utils/accessibility/helpers.ts rename to x-pack/solutions/security/plugins/timelines/common/utils/accessibility/helpers.ts diff --git a/x-pack/plugins/timelines/common/utils/accessibility/index.ts b/x-pack/solutions/security/plugins/timelines/common/utils/accessibility/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/utils/accessibility/index.ts rename to x-pack/solutions/security/plugins/timelines/common/utils/accessibility/index.ts diff --git a/x-pack/plugins/timelines/common/utils/api.ts b/x-pack/solutions/security/plugins/timelines/common/utils/api.ts similarity index 100% rename from x-pack/plugins/timelines/common/utils/api.ts rename to x-pack/solutions/security/plugins/timelines/common/utils/api.ts diff --git a/x-pack/plugins/timelines/common/utils/field_formatters.test.ts b/x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.test.ts similarity index 100% rename from x-pack/plugins/timelines/common/utils/field_formatters.test.ts rename to x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.test.ts diff --git a/x-pack/plugins/timelines/common/utils/field_formatters.ts b/x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts similarity index 100% rename from x-pack/plugins/timelines/common/utils/field_formatters.ts rename to x-pack/solutions/security/plugins/timelines/common/utils/field_formatters.ts diff --git a/x-pack/plugins/timelines/common/utils/index.ts b/x-pack/solutions/security/plugins/timelines/common/utils/index.ts similarity index 100% rename from x-pack/plugins/timelines/common/utils/index.ts rename to x-pack/solutions/security/plugins/timelines/common/utils/index.ts diff --git a/x-pack/plugins/timelines/common/utils/to_array.ts b/x-pack/solutions/security/plugins/timelines/common/utils/to_array.ts similarity index 100% rename from x-pack/plugins/timelines/common/utils/to_array.ts rename to x-pack/solutions/security/plugins/timelines/common/utils/to_array.ts diff --git a/x-pack/solutions/security/plugins/timelines/jest.config.js b/x-pack/solutions/security/plugins/timelines/jest.config.js new file mode 100644 index 0000000000000..5ce00c1a0a303 --- /dev/null +++ b/x-pack/solutions/security/plugins/timelines/jest.config.js @@ -0,0 +1,18 @@ +/* + * 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. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../..', + roots: ['/x-pack/solutions/security/plugins/timelines'], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/solutions/security/plugins/timelines', + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/solutions/security/plugins/timelines/{common,public,server}/**/*.{ts,tsx}', + ], +}; diff --git a/x-pack/plugins/timelines/kibana.jsonc b/x-pack/solutions/security/plugins/timelines/kibana.jsonc similarity index 100% rename from x-pack/plugins/timelines/kibana.jsonc rename to x-pack/solutions/security/plugins/timelines/kibana.jsonc diff --git a/x-pack/plugins/timelines/public/assets/illustration_product_no_results_magnifying_glass.svg b/x-pack/solutions/security/plugins/timelines/public/assets/illustration_product_no_results_magnifying_glass.svg similarity index 100% rename from x-pack/plugins/timelines/public/assets/illustration_product_no_results_magnifying_glass.svg rename to x-pack/solutions/security/plugins/timelines/public/assets/illustration_product_no_results_magnifying_glass.svg diff --git a/x-pack/plugins/timelines/public/components/clipboard/clipboard.tsx b/x-pack/solutions/security/plugins/timelines/public/components/clipboard/clipboard.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/clipboard/clipboard.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/clipboard/clipboard.tsx diff --git a/x-pack/plugins/timelines/public/components/clipboard/translations.ts b/x-pack/solutions/security/plugins/timelines/public/components/clipboard/translations.ts similarity index 100% rename from x-pack/plugins/timelines/public/components/clipboard/translations.ts rename to x-pack/solutions/security/plugins/timelines/public/components/clipboard/translations.ts diff --git a/x-pack/plugins/timelines/public/components/clipboard/with_copy_to_clipboard.tsx b/x-pack/solutions/security/plugins/timelines/public/components/clipboard/with_copy_to_clipboard.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/clipboard/with_copy_to_clipboard.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/clipboard/with_copy_to_clipboard.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.test.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.test.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.test.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.test.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/column_toggle.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/column_toggle.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/column_toggle.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/column_toggle.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/copy.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/copy.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/copy.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/copy.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/filter_for_value.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/filter_for_value.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/filter_for_value.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/filter_for_value.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/filter_out_value.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/filter_out_value.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/filter_out_value.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/filter_out_value.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/overflow.test.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/overflow.test.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/overflow.test.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/overflow.test.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/overflow.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/overflow.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/overflow.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/overflow.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/translations.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/translations.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/translations.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/translations.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/actions/types.ts b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/types.ts similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/actions/types.ts rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/actions/types.ts diff --git a/x-pack/plugins/timelines/public/components/hover_actions/index.tsx b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/index.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/index.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/index.tsx diff --git a/x-pack/plugins/timelines/public/components/hover_actions/utils.ts b/x-pack/solutions/security/plugins/timelines/public/components/hover_actions/utils.ts similarity index 100% rename from x-pack/plugins/timelines/public/components/hover_actions/utils.ts rename to x-pack/solutions/security/plugins/timelines/public/components/hover_actions/utils.ts diff --git a/x-pack/plugins/timelines/public/components/index.tsx b/x-pack/solutions/security/plugins/timelines/public/components/index.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/index.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/index.tsx diff --git a/x-pack/plugins/timelines/public/components/last_updated/index.test.tsx b/x-pack/solutions/security/plugins/timelines/public/components/last_updated/index.test.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/last_updated/index.test.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/last_updated/index.test.tsx diff --git a/x-pack/plugins/timelines/public/components/last_updated/index.tsx b/x-pack/solutions/security/plugins/timelines/public/components/last_updated/index.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/last_updated/index.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/last_updated/index.tsx diff --git a/x-pack/plugins/timelines/public/components/last_updated/translations.ts b/x-pack/solutions/security/plugins/timelines/public/components/last_updated/translations.ts similarity index 100% rename from x-pack/plugins/timelines/public/components/last_updated/translations.ts rename to x-pack/solutions/security/plugins/timelines/public/components/last_updated/translations.ts diff --git a/x-pack/plugins/timelines/public/components/loading/index.tsx b/x-pack/solutions/security/plugins/timelines/public/components/loading/index.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/loading/index.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/loading/index.tsx diff --git a/x-pack/plugins/timelines/public/components/tooltip_with_keyboard_shortcut/index.tsx b/x-pack/solutions/security/plugins/timelines/public/components/tooltip_with_keyboard_shortcut/index.tsx similarity index 100% rename from x-pack/plugins/timelines/public/components/tooltip_with_keyboard_shortcut/index.tsx rename to x-pack/solutions/security/plugins/timelines/public/components/tooltip_with_keyboard_shortcut/index.tsx diff --git a/x-pack/plugins/timelines/public/hooks/use_add_to_timeline.ts b/x-pack/solutions/security/plugins/timelines/public/hooks/use_add_to_timeline.ts similarity index 100% rename from x-pack/plugins/timelines/public/hooks/use_add_to_timeline.ts rename to x-pack/solutions/security/plugins/timelines/public/hooks/use_add_to_timeline.ts diff --git a/x-pack/plugins/timelines/public/hooks/use_app_toasts.ts b/x-pack/solutions/security/plugins/timelines/public/hooks/use_app_toasts.ts similarity index 100% rename from x-pack/plugins/timelines/public/hooks/use_app_toasts.ts rename to x-pack/solutions/security/plugins/timelines/public/hooks/use_app_toasts.ts diff --git a/x-pack/plugins/timelines/public/hooks/use_selector.tsx b/x-pack/solutions/security/plugins/timelines/public/hooks/use_selector.tsx similarity index 100% rename from x-pack/plugins/timelines/public/hooks/use_selector.tsx rename to x-pack/solutions/security/plugins/timelines/public/hooks/use_selector.tsx diff --git a/x-pack/plugins/timelines/public/index.ts b/x-pack/solutions/security/plugins/timelines/public/index.ts similarity index 100% rename from x-pack/plugins/timelines/public/index.ts rename to x-pack/solutions/security/plugins/timelines/public/index.ts diff --git a/x-pack/plugins/timelines/public/methods/index.tsx b/x-pack/solutions/security/plugins/timelines/public/methods/index.tsx similarity index 100% rename from x-pack/plugins/timelines/public/methods/index.tsx rename to x-pack/solutions/security/plugins/timelines/public/methods/index.tsx diff --git a/x-pack/plugins/timelines/public/mock/browser_fields.ts b/x-pack/solutions/security/plugins/timelines/public/mock/browser_fields.ts similarity index 100% rename from x-pack/plugins/timelines/public/mock/browser_fields.ts rename to x-pack/solutions/security/plugins/timelines/public/mock/browser_fields.ts diff --git a/x-pack/plugins/timelines/public/mock/index.ts b/x-pack/solutions/security/plugins/timelines/public/mock/index.ts similarity index 100% rename from x-pack/plugins/timelines/public/mock/index.ts rename to x-pack/solutions/security/plugins/timelines/public/mock/index.ts diff --git a/x-pack/plugins/timelines/public/mock/index_pattern.ts b/x-pack/solutions/security/plugins/timelines/public/mock/index_pattern.ts similarity index 100% rename from x-pack/plugins/timelines/public/mock/index_pattern.ts rename to x-pack/solutions/security/plugins/timelines/public/mock/index_pattern.ts diff --git a/x-pack/plugins/timelines/public/mock/kibana_react.mock.ts b/x-pack/solutions/security/plugins/timelines/public/mock/kibana_react.mock.ts similarity index 100% rename from x-pack/plugins/timelines/public/mock/kibana_react.mock.ts rename to x-pack/solutions/security/plugins/timelines/public/mock/kibana_react.mock.ts diff --git a/x-pack/plugins/timelines/public/mock/mock_and_providers.tsx b/x-pack/solutions/security/plugins/timelines/public/mock/mock_and_providers.tsx similarity index 100% rename from x-pack/plugins/timelines/public/mock/mock_and_providers.tsx rename to x-pack/solutions/security/plugins/timelines/public/mock/mock_and_providers.tsx diff --git a/x-pack/plugins/timelines/public/mock/mock_data_providers.tsx b/x-pack/solutions/security/plugins/timelines/public/mock/mock_data_providers.tsx similarity index 100% rename from x-pack/plugins/timelines/public/mock/mock_data_providers.tsx rename to x-pack/solutions/security/plugins/timelines/public/mock/mock_data_providers.tsx diff --git a/x-pack/plugins/timelines/public/mock/mock_hover_actions.tsx b/x-pack/solutions/security/plugins/timelines/public/mock/mock_hover_actions.tsx similarity index 100% rename from x-pack/plugins/timelines/public/mock/mock_hover_actions.tsx rename to x-pack/solutions/security/plugins/timelines/public/mock/mock_hover_actions.tsx diff --git a/x-pack/plugins/timelines/public/mock/mock_local_storage.ts b/x-pack/solutions/security/plugins/timelines/public/mock/mock_local_storage.ts similarity index 100% rename from x-pack/plugins/timelines/public/mock/mock_local_storage.ts rename to x-pack/solutions/security/plugins/timelines/public/mock/mock_local_storage.ts diff --git a/x-pack/plugins/timelines/public/mock/plugin_mock.tsx b/x-pack/solutions/security/plugins/timelines/public/mock/plugin_mock.tsx similarity index 100% rename from x-pack/plugins/timelines/public/mock/plugin_mock.tsx rename to x-pack/solutions/security/plugins/timelines/public/mock/plugin_mock.tsx diff --git a/x-pack/plugins/timelines/public/mock/test_providers.tsx b/x-pack/solutions/security/plugins/timelines/public/mock/test_providers.tsx similarity index 100% rename from x-pack/plugins/timelines/public/mock/test_providers.tsx rename to x-pack/solutions/security/plugins/timelines/public/mock/test_providers.tsx diff --git a/x-pack/plugins/timelines/public/plugin.ts b/x-pack/solutions/security/plugins/timelines/public/plugin.ts similarity index 100% rename from x-pack/plugins/timelines/public/plugin.ts rename to x-pack/solutions/security/plugins/timelines/public/plugin.ts diff --git a/x-pack/plugins/timelines/public/store/timeline/actions.ts b/x-pack/solutions/security/plugins/timelines/public/store/timeline/actions.ts similarity index 100% rename from x-pack/plugins/timelines/public/store/timeline/actions.ts rename to x-pack/solutions/security/plugins/timelines/public/store/timeline/actions.ts diff --git a/x-pack/plugins/timelines/public/store/timeline/helpers.ts b/x-pack/solutions/security/plugins/timelines/public/store/timeline/helpers.ts similarity index 100% rename from x-pack/plugins/timelines/public/store/timeline/helpers.ts rename to x-pack/solutions/security/plugins/timelines/public/store/timeline/helpers.ts diff --git a/x-pack/plugins/timelines/public/store/timeline/index.ts b/x-pack/solutions/security/plugins/timelines/public/store/timeline/index.ts similarity index 100% rename from x-pack/plugins/timelines/public/store/timeline/index.ts rename to x-pack/solutions/security/plugins/timelines/public/store/timeline/index.ts diff --git a/x-pack/plugins/timelines/public/store/timeline/reducer.ts b/x-pack/solutions/security/plugins/timelines/public/store/timeline/reducer.ts similarity index 100% rename from x-pack/plugins/timelines/public/store/timeline/reducer.ts rename to x-pack/solutions/security/plugins/timelines/public/store/timeline/reducer.ts diff --git a/x-pack/plugins/timelines/public/types.ts b/x-pack/solutions/security/plugins/timelines/public/types.ts similarity index 100% rename from x-pack/plugins/timelines/public/types.ts rename to x-pack/solutions/security/plugins/timelines/public/types.ts diff --git a/x-pack/plugins/timelines/server/config.ts b/x-pack/solutions/security/plugins/timelines/server/config.ts similarity index 100% rename from x-pack/plugins/timelines/server/config.ts rename to x-pack/solutions/security/plugins/timelines/server/config.ts diff --git a/x-pack/solutions/security/plugins/timelines/server/index.ts b/x-pack/solutions/security/plugins/timelines/server/index.ts new file mode 100644 index 0000000000000..5a0f514fd8048 --- /dev/null +++ b/x-pack/solutions/security/plugins/timelines/server/index.ts @@ -0,0 +1,42 @@ +/* + * 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 { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/server'; +import { schema } from '@kbn/config-schema'; +import { ConfigSchema } from './config'; + +export async function plugin(initializerContext: PluginInitializerContext) { + const { TimelinesPlugin } = await import('./plugin'); + return new TimelinesPlugin(initializerContext); +} + +export type { TimelinesPluginUI, TimelinesPluginStart } from './types'; + +const configSchema = schema.object({ + /** + * For internal use. A list of string values (comma delimited) that will enable experimental + * type of functionality that is not yet released. Valid values for this settings need to + * be defined in: + * `x-pack/solutions/security/plugins/timelines/common/experimental_features.ts` + * under the `allowedExperimentalValues` object + * + * @example + * xpack.timelines.enableExperimental: + * - someCrazyFeature + * - someEvenCrazierFeature + */ + enableExperimental: schema.arrayOf(schema.string(), { + defaultValue: () => [], + }), +}); + +export const config: PluginConfigDescriptor = { + exposeToBrowser: { + enableExperimental: true, + }, + schema: configSchema, +}; diff --git a/x-pack/plugins/timelines/server/plugin.ts b/x-pack/solutions/security/plugins/timelines/server/plugin.ts similarity index 100% rename from x-pack/plugins/timelines/server/plugin.ts rename to x-pack/solutions/security/plugins/timelines/server/plugin.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/index_fields/index.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/index.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/index_fields/index.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/index.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/index_fields/mock.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/mock.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/index_fields/mock.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/mock.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/index_fields/parse_options.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/parse_options.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/index_fields/parse_options.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/index_fields/parse_options.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/eql/__mocks__/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/__mocks__/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/eql/__mocks__/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/__mocks__/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/eql/helpers.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/helpers.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/eql/helpers.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/helpers.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/eql/helpers.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/helpers.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/eql/helpers.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/helpers.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/eql/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/eql/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/eql/parse_options.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/parse_options.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/eql/parse_options.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/eql/parse_options.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/helpers.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/all/query.events_all.dsl.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/details/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/details/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/details/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/details/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/details/query.events_details.dsl.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/query.kpi.dsl.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/query.kpi.dsl.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/query.kpi.dsl.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/kpi/query.kpi.dsl.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/events/last_event_time/query.events_last_event_time.dsl.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_ecs_objects.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/build_object_recursive.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/constants.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/constants.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/constants.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/constants.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/format_timeline_data.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.test.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.test.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.test.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.test.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_nested_parent_path.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_timestamp.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_timestamp.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_timestamp.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/get_timestamp.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/is_agg_cardinality_aggregate.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/is_agg_cardinality_aggregate.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/helpers/is_agg_cardinality_aggregate.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/helpers/is_agg_cardinality_aggregate.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/index.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/factory/types.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/types.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/factory/types.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/factory/types.ts diff --git a/x-pack/plugins/timelines/server/search_strategy/timeline/index.ts b/x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/index.ts similarity index 100% rename from x-pack/plugins/timelines/server/search_strategy/timeline/index.ts rename to x-pack/solutions/security/plugins/timelines/server/search_strategy/timeline/index.ts diff --git a/x-pack/plugins/timelines/server/types.ts b/x-pack/solutions/security/plugins/timelines/server/types.ts similarity index 100% rename from x-pack/plugins/timelines/server/types.ts rename to x-pack/solutions/security/plugins/timelines/server/types.ts diff --git a/x-pack/plugins/timelines/server/utils/beat_schema/fields.json b/x-pack/solutions/security/plugins/timelines/server/utils/beat_schema/fields.json similarity index 100% rename from x-pack/plugins/timelines/server/utils/beat_schema/fields.json rename to x-pack/solutions/security/plugins/timelines/server/utils/beat_schema/fields.json diff --git a/x-pack/plugins/timelines/server/utils/beat_schema/fields.json.d.ts b/x-pack/solutions/security/plugins/timelines/server/utils/beat_schema/fields.json.d.ts similarity index 100% rename from x-pack/plugins/timelines/server/utils/beat_schema/fields.json.d.ts rename to x-pack/solutions/security/plugins/timelines/server/utils/beat_schema/fields.json.d.ts diff --git a/x-pack/plugins/timelines/server/utils/build_query.ts b/x-pack/solutions/security/plugins/timelines/server/utils/build_query.ts similarity index 100% rename from x-pack/plugins/timelines/server/utils/build_query.ts rename to x-pack/solutions/security/plugins/timelines/server/utils/build_query.ts diff --git a/x-pack/plugins/timelines/server/utils/filters.ts b/x-pack/solutions/security/plugins/timelines/server/utils/filters.ts similarity index 100% rename from x-pack/plugins/timelines/server/utils/filters.ts rename to x-pack/solutions/security/plugins/timelines/server/utils/filters.ts diff --git a/x-pack/solutions/security/plugins/timelines/tsconfig.json b/x-pack/solutions/security/plugins/timelines/tsconfig.json new file mode 100644 index 0000000000000..fa908c501885a --- /dev/null +++ b/x-pack/solutions/security/plugins/timelines/tsconfig.json @@ -0,0 +1,47 @@ + +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "common/**/*", + "public/**/*", + "server/**/*", + // have to declare *.json explicitly due to https://github.com/microsoft/TypeScript/issues/25636 + "server/**/*.json", + "public/**/*.json", + "../../../../../typings/**/*" + ], + "kbn_references": [ + "@kbn/core", + "@kbn/data-plugin", + "@kbn/cases-plugin", + "@kbn/alerting-plugin", + "@kbn/utility-types", + "@kbn/es-query", + "@kbn/securitysolution-ecs", + "@kbn/securitysolution-t-grid", + "@kbn/rule-data-utils", + "@kbn/rule-registry-plugin", + "@kbn/data-views-plugin", + "@kbn/kibana-react-plugin", + "@kbn/kibana-utils-plugin", + "@kbn/ui-theme", + "@kbn/i18n-react", + "@kbn/i18n", + "@kbn/security-plugin", + "@kbn/safer-lodash-set", + "@kbn/alerts-as-data-utils", + "@kbn/logging", + "@kbn/search-errors", + "@kbn/search-types", + "@kbn/react-kibana-mount", + "@kbn/field-formats-plugin", + "@kbn/config-schema", + "@kbn/zod" + ], + "exclude": [ + "target/**/*" + ] +} diff --git a/x-pack/test/accessibility/apps/group1/spaces.ts b/x-pack/test/accessibility/apps/group1/spaces.ts index 324e3bcbcdccd..87cedf0f7d47c 100644 --- a/x-pack/test/accessibility/apps/group1/spaces.ts +++ b/x-pack/test/accessibility/apps/group1/spaces.ts @@ -54,6 +54,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.spaceSelector.clickCreateSpace(); await PageObjects.spaceSelector.clickEnterSpaceName(); await PageObjects.spaceSelector.addSpaceName('space_a'); + await PageObjects.spaceSelector.changeSolutionView('classic'); await a11y.testAppSnapshot(); }); @@ -90,6 +91,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.spaceSelector.clickCreateSpace(); await PageObjects.spaceSelector.clickEnterSpaceName(); await PageObjects.spaceSelector.addSpaceName('space_b'); + await PageObjects.spaceSelector.changeSolutionView('classic'); await PageObjects.spaceSelector.clickSaveSpaceCreation(); await PageObjects.common.navigateToApp('home'); await PageObjects.spaceSelector.openSpacesNav(); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/index.ts index dc85feb741eb8..777479a631ec9 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/index.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/index.ts @@ -23,18 +23,6 @@ export default function alertingTests({ loadTestFile, getService }: FtrProviderC loadTestFile(require.resolve('./backfill')); loadTestFile(require.resolve('./find')); loadTestFile(require.resolve('./find_internal')); - loadTestFile(require.resolve('./create')); - loadTestFile(require.resolve('./delete')); - loadTestFile(require.resolve('./disable')); - loadTestFile(require.resolve('./enable')); - loadTestFile(require.resolve('./execution_status')); - loadTestFile(require.resolve('./get')); - loadTestFile(require.resolve('./get_alert_state')); - loadTestFile(require.resolve('./get_alert_summary')); - loadTestFile(require.resolve('./rule_types')); - loadTestFile(require.resolve('./retain_api_key')); - loadTestFile(require.resolve('./bulk_untrack')); - loadTestFile(require.resolve('./bulk_untrack_by_query')); }); }); } diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group5/config.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/config.ts new file mode 100644 index 0000000000000..f999da061b90b --- /dev/null +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group5/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 { createTestConfig } from '../../common/config'; + +// eslint-disable-next-line import/no-default-export +export default createTestConfig('security_and_spaces', { + disabledPlugins: [], + license: 'trial', + ssl: true, + enableActionsProxy: true, + publicBaseUrl: true, + testFiles: [require.resolve('./tests')], + useDedicatedTaskRunner: true, +}); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/bulk_untrack.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/bulk_untrack.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/bulk_untrack.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/bulk_untrack.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/bulk_untrack_by_query.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/bulk_untrack_by_query.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/bulk_untrack_by_query.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/bulk_untrack_by_query.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/create.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/create.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/create.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/create.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/delete.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/delete.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/delete.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/delete.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/disable.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/disable.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/disable.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/disable.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/enable.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/enable.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/enable.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/enable.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/execution_status.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/execution_status.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/execution_status.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/execution_status.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/get.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/get.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get_alert_state.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/get_alert_state.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get_alert_state.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/get_alert_state.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get_alert_summary.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/get_alert_summary.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/get_alert_summary.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/get_alert_summary.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/index.ts new file mode 100644 index 0000000000000..cdc805dfa0b92 --- /dev/null +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/index.ts @@ -0,0 +1,38 @@ +/* + * 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 { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { setupSpacesAndUsers, tearDown } from '../../../setup'; + +// eslint-disable-next-line import/no-default-export +export default function alertingApiIntegrationTests({ + loadTestFile, + getService, +}: FtrProviderContext) { + describe('Alerts - Group 5', function () { + before(async () => { + await setupSpacesAndUsers(getService); + }); + + after(async () => { + await tearDown(getService); + }); + + loadTestFile(require.resolve('./create')); + loadTestFile(require.resolve('./delete')); + loadTestFile(require.resolve('./disable')); + loadTestFile(require.resolve('./enable')); + loadTestFile(require.resolve('./execution_status')); + loadTestFile(require.resolve('./get')); + loadTestFile(require.resolve('./get_alert_state')); + loadTestFile(require.resolve('./get_alert_summary')); + loadTestFile(require.resolve('./rule_types')); + loadTestFile(require.resolve('./retain_api_key')); + loadTestFile(require.resolve('./bulk_untrack')); + loadTestFile(require.resolve('./bulk_untrack_by_query')); + }); +} diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/retain_api_key.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/retain_api_key.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/retain_api_key.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/retain_api_key.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/rule_types.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/rule_types.ts similarity index 100% rename from x-pack/test/alerting_api_integration/security_and_spaces/group1/tests/alerting/rule_types.ts rename to x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/alerting/rule_types.ts diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/index.ts new file mode 100644 index 0000000000000..b48e5d216a544 --- /dev/null +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group5/tests/index.ts @@ -0,0 +1,15 @@ +/* + * 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 { FtrProviderContext } from '../../../../common/ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default function alertingApiIntegrationTests({ loadTestFile }: FtrProviderContext) { + describe('alerting api integration security and spaces enabled', function () { + loadTestFile(require.resolve('./alerting')); + }); +} diff --git a/x-pack/test/api_integration/apis/cloud_security_posture/config.ts b/x-pack/test/api_integration/apis/cloud_security_posture/config.ts index 5f335f116fefe..28ac1f643041b 100644 --- a/x-pack/test/api_integration/apis/cloud_security_posture/config.ts +++ b/x-pack/test/api_integration/apis/cloud_security_posture/config.ts @@ -5,13 +5,27 @@ * 2.0. */ -import { FtrConfigProviderContext } from '@kbn/test'; +import { FtrConfigProviderContext, getKibanaCliLoggers } from '@kbn/test'; export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const baseIntegrationTestsConfig = await readConfigFile(require.resolve('../../config.ts')); + const baseConfig = await readConfigFile(require.resolve('../../config.ts')); return { - ...baseIntegrationTestsConfig.getAll(), + ...baseConfig.getAll(), testFiles: [require.resolve('.')], + kbnTestServer: { + ...baseConfig.get('kbnTestServer'), + serverArgs: [ + ...baseConfig.get('kbnTestServer.serverArgs'), + `--logging.loggers=${JSON.stringify([ + ...getKibanaCliLoggers(baseConfig.get('kbnTestServer.serverArgs')), + { + name: 'plugins.cloudSecurityPosture', + level: 'all', + appenders: ['default'], + }, + ])}`, + ], + }, }; } diff --git a/x-pack/test/api_integration/apis/cloud_security_posture/graph.ts b/x-pack/test/api_integration/apis/cloud_security_posture/graph.ts new file mode 100644 index 0000000000000..4ff483bff343d --- /dev/null +++ b/x-pack/test/api_integration/apis/cloud_security_posture/graph.ts @@ -0,0 +1,51 @@ +/* + * 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 { + ELASTIC_HTTP_VERSION_HEADER, + X_ELASTIC_INTERNAL_ORIGIN_REQUEST, +} from '@kbn/core-http-common'; +import type { Agent } from 'supertest'; +import type { GraphRequest } from '@kbn/cloud-security-posture-common/types/graph/latest'; +import { FtrProviderContext } from '@kbn/ftr-common-functional-services'; +import { result } from '../../../cloud_security_posture_api/utils'; + +export default function (providerContext: FtrProviderContext) { + const { getService } = providerContext; + + const logger = getService('log'); + const supertest = getService('supertest'); + + const postGraph = (agent: Agent, body: GraphRequest, auth?: { user: string; pass: string }) => { + let req = agent + .post('/internal/cloud_security_posture/graph') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .set('kbn-xsrf', 'xxxx'); + + if (auth) { + req = req.auth(auth.user, auth.pass); + } + + return req.send(body); + }; + + describe('POST /internal/cloud_security_posture/graph', () => { + // TODO: fix once feature flag is enabled for the API + describe.skip('Feature flag', () => { + it('should return 404 when feature flag is not toggled', async () => { + await postGraph(supertest, { + query: { + eventIds: [], + start: 'now-1d/d', + end: 'now/d', + }, + }).expect(result(404, logger)); + }); + }); + }); +} diff --git a/x-pack/test/api_integration/apis/cloud_security_posture/index.ts b/x-pack/test/api_integration/apis/cloud_security_posture/index.ts index fa11aab67b279..46f594be3ed38 100644 --- a/x-pack/test/api_integration/apis/cloud_security_posture/index.ts +++ b/x-pack/test/api_integration/apis/cloud_security_posture/index.ts @@ -20,6 +20,7 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./benchmark/v2')); loadTestFile(require.resolve('./rules/v1')); loadTestFile(require.resolve('./rules/v2')); + loadTestFile(require.resolve('./graph')); // Place your tests files under this directory and add the following here: // loadTestFile(require.resolve('./your test name')); diff --git a/x-pack/test/api_integration/apis/entity_manager/count.ts b/x-pack/test/api_integration/apis/entity_manager/count.ts new file mode 100644 index 0000000000000..a191536339163 --- /dev/null +++ b/x-pack/test/api_integration/apis/entity_manager/count.ts @@ -0,0 +1,421 @@ +/* + * 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 moment from 'moment'; +import expect from 'expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; +import { + createEntityTypeDefinition, + createEntitySourceDefinition, + countEntities, +} from './helpers/request'; +import { createIndexWithDocuments, createIndexWithEntities } from './helpers/data_generation'; +import { clearEntityDefinitions } from './helpers/clear_entity_definitions'; + +export default function ({ getService }: FtrProviderContext) { + const esClient = getService('es'); + const supertest = getService('supertest'); + + describe('_count API', () => { + let cleanup: Function[] = []; + + before(() => clearEntityDefinitions(esClient)); + + afterEach(async () => { + await Promise.all([clearEntityDefinitions(esClient), ...cleanup.map((fn) => fn())]); + cleanup = []; + }); + + it('returns correct count for single source definition', async () => { + const source = { + id: 'source-1-with-services', + type_id: '20-services', + index_patterns: ['index-1-with-services'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: 'custom_timestamp', + }; + await createEntityTypeDefinition(supertest, { + type: { id: '20-services', display_name: '20-services' }, + }); + await createEntitySourceDefinition(supertest, { source }); + + cleanup.push( + await createIndexWithEntities(esClient, { + index: 'index-1-with-services', + count: 20, + source, + }) + ); + + const result = await countEntities(supertest, {}, 200); + + expect(result).toEqual({ total: 20, types: { '20-services': 20 }, errors: [] }); + }); + + it('aggregates total count across types', async () => { + const sourceType1 = { + id: 'source-1-with-20-chumbles', + type_id: 'chumble', + index_patterns: ['index-1-with-chumbles'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: 'custom_timestamp', + }; + await createEntityTypeDefinition(supertest, { + type: { id: 'chumble', display_name: 'chumble' }, + }); + await createEntitySourceDefinition(supertest, { source: sourceType1 }); + + const sourceType2 = { + id: 'source-1-with-15-shleems', + type_id: 'shleem', + index_patterns: ['index-1-with-shleems'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }; + await createEntityTypeDefinition(supertest, { + type: { id: 'shleem', display_name: 'shleem' }, + }); + await createEntitySourceDefinition(supertest, { source: sourceType2 }); + + const sourceType3 = { + id: 'source-1-with-25-shmuckles', + type_id: 'shmuckle', + index_patterns: ['index-1-with-shmuckles'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }; + await createEntityTypeDefinition(supertest, { + type: { id: 'shmuckle', display_name: 'shmuckle' }, + }); + await createEntitySourceDefinition(supertest, { source: sourceType3 }); + + cleanup = await Promise.all([ + createIndexWithEntities(esClient, { + index: 'index-1-with-chumbles', + count: 20, + source: sourceType1, + }), + createIndexWithEntities(esClient, { + index: 'index-1-with-shleems', + count: 15, + source: sourceType2, + }), + createIndexWithEntities(esClient, { + index: 'index-1-with-shmuckles', + count: 25, + source: sourceType3, + }), + ]); + + // counts all existing types + let result = await countEntities(supertest, {}, 200); + + expect(result).toEqual({ + total: 60, + types: { + shleem: 15, + chumble: 20, + shmuckle: 25, + }, + errors: [], + }); + + // only counts requested types + result = await countEntities(supertest, { types: ['shleem', 'shmuckle'] }, 200); + + expect(result).toEqual({ + total: 40, + types: { + shleem: 15, + shmuckle: 25, + }, + errors: [], + }); + }); + + it('aggregates type count across sources', async () => { + await createEntityTypeDefinition(supertest, { type: { id: 'fleeb', display_name: 'fleeb' } }); + await Promise.all([ + createEntitySourceDefinition(supertest, { + source: { + id: 'source-1-with-5-fleebs', + type_id: 'fleeb', + index_patterns: ['index-1-with-fleebs'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + }), + createEntitySourceDefinition(supertest, { + source: { + id: 'source-2-with-5-fleebs', + type_id: 'fleeb', + index_patterns: ['index-2-with-fleebs'], + identity_fields: ['servicename_field'], + metadata_fields: [], + filters: [], + timestamp_field: 'custom_timestamp', + }, + }), + ]); + + cleanup = await Promise.all([ + createIndexWithDocuments(esClient, { + index: 'index-1-with-fleebs', + properties: { + '@timestamp': { type: 'date' }, + 'service.name': { type: 'keyword' }, + }, + documents: [ + { '@timestamp': moment().toISOString(), 'service.name': 'service-one' }, + { '@timestamp': moment().toISOString(), 'service.name': 'service-two' }, + { '@timestamp': moment().toISOString(), 'service.name': 'service-three' }, + { '@timestamp': moment().toISOString(), 'service.name': 'service-four' }, + { '@timestamp': moment().toISOString(), 'service.name': 'service-five' }, + ], + }), + createIndexWithDocuments(esClient, { + index: 'index-2-with-fleebs', + properties: { + custom_timestamp: { type: 'date' }, + servicename_field: { type: 'keyword' }, + }, + documents: [ + { custom_timestamp: moment().toISOString(), servicename_field: 'service-three' }, + { custom_timestamp: moment().toISOString(), servicename_field: 'service-four' }, + { custom_timestamp: moment().toISOString(), servicename_field: 'service-five' }, + { custom_timestamp: moment().toISOString(), servicename_field: 'service-six' }, + { custom_timestamp: moment().toISOString(), servicename_field: 'service-seven' }, + ], + }), + ]); + + const result = await countEntities(supertest, { types: ['fleeb'] }, 200); + + expect(result).toEqual({ total: 7, types: { fleeb: 7 }, errors: [] }); + }); + + it('respects start and end parameters', async () => { + const now = moment(); + + await createEntityTypeDefinition(supertest, { + type: { id: 'grumbo', display_name: 'grumbo' }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'source-1-with-grumbos', + type_id: 'grumbo', + index_patterns: ['index-1-with-grumbos'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + }); + + cleanup.push( + await createIndexWithDocuments(esClient, { + index: 'index-1-with-grumbos', + properties: { + '@timestamp': { type: 'date' }, + 'service.name': { type: 'keyword' }, + }, + documents: [ + { '@timestamp': moment(now).toISOString(), 'service.name': 'service-one' }, + { + '@timestamp': moment(now).subtract(10, 'minute').toISOString(), + 'service.name': 'service-two', + }, + { + '@timestamp': moment(now).subtract(20, 'minute').toISOString(), + 'service.name': 'service-three', + }, + { + '@timestamp': moment(now).subtract(30, 'minute').toISOString(), + 'service.name': 'service-four', + }, + { + '@timestamp': moment(now).subtract(30, 'minute').toISOString(), + 'service.name': 'service-five', + }, + ], + }) + ); + + const result = await countEntities( + supertest, + { + start: moment(now).subtract(25, 'minute').toISOString(), + end: now.toISOString(), + }, + 200 + ); + + expect(result).toEqual({ total: 3, types: { grumbo: 3 }, errors: [] }); + }); + + it('respects filters parameters', async () => { + const sourceType1 = { + id: 'source-1-with-chumbles', + type_id: 'chumble', + index_patterns: ['index-1-with-chumbles'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + }; + await createEntityTypeDefinition(supertest, { + type: { id: 'chumble', display_name: 'chumble' }, + }); + await createEntitySourceDefinition(supertest, { source: sourceType1 }); + + const sourceType2 = { + id: 'source-1-with-shleems', + type_id: 'shleem', + index_patterns: ['index-1-with-shleems'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + }; + await createEntityTypeDefinition(supertest, { + type: { id: 'shleem', display_name: 'shleem' }, + }); + await createEntitySourceDefinition(supertest, { source: sourceType2 }); + + const sourceType3 = { + id: 'source-1-with-shmuckles', + type_id: 'shmuckle', + index_patterns: ['index-1-with-shmuckles'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + }; + await createEntityTypeDefinition(supertest, { + type: { id: 'shmuckle', display_name: 'shmuckle' }, + }); + await createEntitySourceDefinition(supertest, { source: sourceType3 }); + + cleanup = await Promise.all([ + createIndexWithDocuments(esClient, { + index: 'index-1-with-chumbles', + properties: { + 'service.name': { type: 'keyword' }, + 'service.environment': { type: 'keyword' }, + }, + documents: [ + { 'service.name': 'service-one', 'service.environment': 'prod' }, + { 'service.name': 'service-one' }, + ], + }), + createIndexWithDocuments(esClient, { + index: 'index-1-with-shleems', + properties: { + 'service.name': { type: 'keyword' }, + 'service.environment': { type: 'keyword' }, + }, + documents: [ + { 'service.name': 'service-two', 'service.environment': 'staging' }, + { 'service.name': 'service-three', 'service.environment': 'prod' }, + { 'service.name': 'service-three', 'service.environment': 'dev' }, + ], + }), + createIndexWithDocuments(esClient, { + index: 'index-1-with-shmuckles', + properties: { + 'service.name': { type: 'keyword' }, + }, + documents: [ + { 'service.name': 'service-two' }, + { 'service.name': 'service-three' }, + { 'service.name': 'service-three' }, + ], + }), + ]); + + const result = await countEntities( + supertest, + { filters: ['service.environment: prod'] }, + 200 + ); + + expect(result).toEqual({ + total: 2, + types: { + chumble: 1, + shleem: 1, + shmuckle: 0, + }, + errors: [], + }); + }); + + it('is resilient to invalid sources', async () => { + await createEntityTypeDefinition(supertest, { + type: { id: 'chumble', display_name: 'chumble' }, + }); + await Promise.all([ + createEntitySourceDefinition(supertest, { + source: { + id: 'source-with-chumbles', + type_id: 'chumble', + index_patterns: ['index-1-with-chumbles'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + }, + }), + createEntitySourceDefinition(supertest, { + source: { + id: 'invalid-source-with-chumbles', + type_id: 'chumble', + index_patterns: ['index-2-with-chumbles'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + }, + }), + ]); + + cleanup = await Promise.all([ + createIndexWithDocuments(esClient, { + index: 'index-1-with-chumbles', + properties: { + 'service.name': { type: 'keyword' }, + }, + documents: [{ 'service.name': 'service-one' }], + }), + createIndexWithDocuments(esClient, { + index: 'index-2-with-chumbles', + properties: { + 'service.environment': { type: 'keyword' }, + }, + documents: [{ 'service.name': 'service-two' }], + }), + ]); + + const result = await countEntities(supertest, {}, 200); + + expect(result).toEqual({ + total: 1, + types: { + chumble: 1, + }, + errors: [ + 'Mandatory fields [service.name] are not mapped for source [source: invalid-source-with-chumbles, type: chumble] with index patterns [index-2-with-chumbles]', + ], + }); + }); + }); +} diff --git a/x-pack/test/api_integration/apis/entity_manager/helpers/clear_entity_definitions.ts b/x-pack/test/api_integration/apis/entity_manager/helpers/clear_entity_definitions.ts new file mode 100644 index 0000000000000..5306e2b6d932a --- /dev/null +++ b/x-pack/test/api_integration/apis/entity_manager/helpers/clear_entity_definitions.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 { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { DEFINITIONS_ALIAS } from '@kbn/entityManager-plugin/server/lib/v2/constants'; + +export async function clearEntityDefinitions(esClient: ElasticsearchClient) { + await esClient.deleteByQuery({ + index: DEFINITIONS_ALIAS, + query: { + match_all: {}, + }, + refresh: true, + }); +} diff --git a/x-pack/test/api_integration/apis/entity_manager/helpers/data_generation.ts b/x-pack/test/api_integration/apis/entity_manager/helpers/data_generation.ts new file mode 100644 index 0000000000000..2f784e6a75533 --- /dev/null +++ b/x-pack/test/api_integration/apis/entity_manager/helpers/data_generation.ts @@ -0,0 +1,72 @@ +/* + * 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 moment from 'moment'; +import { v4 as uuidv4 } from 'uuid'; +import { Client } from '@elastic/elasticsearch'; +import { MappingProperty, PropertyName } from '@elastic/elasticsearch/lib/api/types'; +import { EntitySourceDefinition } from '@kbn/entityManager-plugin/server/lib/v2/types'; + +export async function createIndexWithDocuments( + client: Client, + options: { + index: string; + properties: Record; + documents: Array>; + } +) { + await client.indices.create({ + index: options.index, + mappings: { + dynamic: false, + properties: options.properties, + }, + }); + + const bulkActions = options.documents.flatMap((doc) => { + return [{ create: { _index: options.index } }, doc]; + }); + + await client.bulk({ + body: bulkActions, + refresh: 'wait_for', + }); + + return () => client.indices.delete({ index: options.index }); +} + +export async function createIndexWithEntities( + client: Client, + options: { + index: string; + source: EntitySourceDefinition; + count: number; + } +) { + const { source, index, count } = options; + const documents = new Array(count).fill(null).map(() => { + return { + ...(source.timestamp_field ? { [source.timestamp_field]: moment().toISOString() } : {}), + ...source.identity_fields.concat(source.metadata_fields).reduce((fields, field) => { + fields[field] = uuidv4(); + return fields; + }, {} as Record), + }; + }); + + return createIndexWithDocuments(client, { + index, + documents, + properties: { + ...(source.timestamp_field ? { [source.timestamp_field]: { type: 'date' } } : {}), + ...source.identity_fields.concat(source.metadata_fields).reduce((fields, field) => { + fields[field] = { type: 'keyword' }; + return fields; + }, {} as Record), + }, + }); +} diff --git a/x-pack/test/api_integration/apis/entity_manager/helpers/request.ts b/x-pack/test/api_integration/apis/entity_manager/helpers/request.ts index c21f33cc8793a..3ef606320cb08 100644 --- a/x-pack/test/api_integration/apis/entity_manager/helpers/request.ts +++ b/x-pack/test/api_integration/apis/entity_manager/helpers/request.ts @@ -8,6 +8,7 @@ import { Agent } from 'supertest'; import { EntityDefinition, EntityDefinitionUpdate } from '@kbn/entities-schema'; import { EntityDefinitionWithState } from '@kbn/entityManager-plugin/server/lib/entities/types'; +import { EntitySourceDefinition } from '@kbn/entityManager-plugin/server/lib/v2/types'; export interface Auth { username: string; @@ -89,3 +90,69 @@ export const upgradeBuiltinDefinitions = async ( .expect(200); return response.body; }; + +export const createEntityTypeDefinition = ( + supertest: Agent, + params: { + type: { + id: string; + display_name: string; + }; + } +) => { + return supertest + .post('/internal/entities/v2/definitions/types') + .set('kbn-xsrf', 'xxx') + .send({ type: params.type }) + .expect(201); +}; + +export const createEntitySourceDefinition = ( + supertest: Agent, + params: { + source: EntitySourceDefinition; + } +) => { + return supertest + .post('/internal/entities/v2/definitions/sources') + .set('kbn-xsrf', 'xxx') + .send({ source: params.source }) + .expect(201); +}; + +export const searchEntities = async ( + supertest: Agent, + params: { + type: string; + start?: string; + end?: string; + metadata_fields?: string[]; + filters?: string[]; + }, + expectedCode?: number +) => { + const response = await supertest + .post('/internal/entities/v2/_search') + .set('kbn-xsrf', 'xxx') + .send(params) + .expect(expectedCode ?? 200); + return response.body; +}; + +export const countEntities = async ( + supertest: Agent, + params: { + types?: string[]; + filters?: string[]; + start?: string; + end?: string; + }, + expectedCode?: number +) => { + const response = await supertest + .post('/internal/entities/v2/_count') + .set('kbn-xsrf', 'xxx') + .send(params) + .expect(expectedCode ?? 200); + return response.body; +}; diff --git a/x-pack/test/api_integration/apis/entity_manager/index.ts b/x-pack/test/api_integration/apis/entity_manager/index.ts index 8f7af35e5c8ad..960eedb25df5f 100644 --- a/x-pack/test/api_integration/apis/entity_manager/index.ts +++ b/x-pack/test/api_integration/apis/entity_manager/index.ts @@ -13,5 +13,7 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./builtin_definitions')); loadTestFile(require.resolve('./definitions')); + loadTestFile(require.resolve('./count')); + loadTestFile(require.resolve('./search')); }); } diff --git a/x-pack/test/api_integration/apis/entity_manager/search.ts b/x-pack/test/api_integration/apis/entity_manager/search.ts new file mode 100644 index 0000000000000..a20364c7256e4 --- /dev/null +++ b/x-pack/test/api_integration/apis/entity_manager/search.ts @@ -0,0 +1,816 @@ +/* + * 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 moment from 'moment'; +import expect from 'expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; +import { + createEntitySourceDefinition, + createEntityTypeDefinition, + searchEntities, +} from './helpers/request'; +import { createIndexWithDocuments } from './helpers/data_generation'; +import { clearEntityDefinitions } from './helpers/clear_entity_definitions'; + +export default function ({ getService }: FtrProviderContext) { + const esClient = getService('es'); + const supertest = getService('supertest'); + + describe('_search API', () => { + let cleanup: Function[] = []; + + before(() => clearEntityDefinitions(esClient)); + + afterEach(async () => { + await Promise.all([clearEntityDefinitions(esClient), ...cleanup.map((fn) => fn())]); + cleanup = []; + }); + + it('returns 404 when no matching sources', async () => { + await searchEntities(supertest, { type: 'undefined-type' }, 404); + }); + + it('resolves entities from sources with timestamp', async () => { + const now = moment(); + + cleanup.push( + await createIndexWithDocuments(esClient, { + index: 'index-1-with-services', + properties: { + custom_timestamp: { type: 'date' }, + 'service.name': { type: 'keyword' }, + }, + documents: [ + { + custom_timestamp: moment(now).subtract(1, 'minute').toISOString(), + 'service.name': 'service-one', + }, + { + custom_timestamp: moment(now).subtract(2, 'minute').toISOString(), + 'service.name': 'service-two', + }, + { + custom_timestamp: moment(now).subtract(1, 'hour').toISOString(), + 'service.name': 'service-three', + }, + ], + }) + ); + + await createEntityTypeDefinition(supertest, { + type: { id: 'services-with-timestamp', display_name: 'services-with-timestamp' }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'source-1-with-services', + type_id: 'services-with-timestamp', + index_patterns: ['index-1-with-services'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: 'custom_timestamp', + }, + }); + + const { entities, errors } = await searchEntities(supertest, { + type: 'services-with-timestamp', + start: moment(now).subtract(10, 'minute').toISOString(), + end: now.toISOString(), + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.last_seen_timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'entity.id': 'service-one', + 'entity.display_name': 'service-one', + 'entity.type': 'services-with-timestamp', + 'service.name': 'service-one', + }, + { + 'entity.last_seen_timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'entity.id': 'service-two', + 'entity.display_name': 'service-two', + 'entity.type': 'services-with-timestamp', + 'service.name': 'service-two', + }, + ]); + }); + + it('resolves entities from sources without timestamp', async () => { + cleanup.push( + await createIndexWithDocuments(esClient, { + index: 'index-1-with-home-appliances', + properties: { 'appliance.name': { type: 'keyword' } }, + documents: [ + { 'appliance.name': 'rice cooker' }, + { 'appliance.name': 'kettle' }, + { 'appliance.name': 'dishwasher' }, + ], + }) + ); + + await createEntityTypeDefinition(supertest, { + type: { id: 'home-appliances', display_name: 'home-appliances' }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'appliances-no-timestamp', + type_id: 'home-appliances', + index_patterns: ['index-1-with-home-appliances'], + identity_fields: ['appliance.name'], + metadata_fields: [], + filters: [], + }, + }); + + const { entities, errors } = await searchEntities(supertest, { + type: 'home-appliances', + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.id': 'dishwasher', + 'entity.display_name': 'dishwasher', + 'entity.type': 'home-appliances', + 'appliance.name': 'dishwasher', + }, + { + 'entity.id': 'kettle', + 'entity.display_name': 'kettle', + 'entity.type': 'home-appliances', + 'appliance.name': 'kettle', + }, + { + 'entity.id': 'rice cooker', + 'entity.display_name': 'rice cooker', + 'entity.type': 'home-appliances', + 'appliance.name': 'rice cooker', + }, + ]); + }); + + it('merges entities from different sources', async () => { + const now = moment(); + + cleanup = await Promise.all([ + createIndexWithDocuments(esClient, { + index: 'index-1-with-hosts', + properties: { + '@timestamp': { type: 'date' }, + 'host.name': { type: 'keyword' }, + 'agent.name': { type: 'keyword' }, + }, + documents: [ + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'host.name': 'host-uno', + 'agent.name': 'agent-a', + }, + { + '@timestamp': moment(now).subtract(3, 'minute').toISOString(), + 'host.name': 'host-uno', + 'agent.name': 'agent-b', + }, + { + '@timestamp': moment(now).subtract(3, 'minute').toISOString(), + 'host.name': 'host-dos', + 'agent.name': 'agent-3', + }, + { + '@timestamp': moment(now).subtract(4, 'minute').toISOString(), + 'host.name': 'host-tres', + }, + ], + }), + + createIndexWithDocuments(esClient, { + index: 'index-2-with-hosts', + properties: { + timestamp: { type: 'date' }, + hostname_field: { type: 'keyword' }, + 'agent.name': { type: 'keyword' }, + }, + documents: [ + { + timestamp: moment(now).subtract(2, 'minute').toISOString(), + hostname_field: 'host-uno', + 'agent.name': 'agent-1', + }, + { + timestamp: moment(now).subtract(2, 'minute').toISOString(), + hostname_field: 'host-dos', + 'agent.name': 'agent-k', + }, + { + timestamp: moment(now).subtract(5, 'minute').toISOString(), + hostname_field: 'host-four', + }, + ], + }), + ]); + + await createEntityTypeDefinition(supertest, { + type: { id: 'hosts-with-agents', display_name: 'hosts-with-agents' }, + }); + await Promise.all([ + createEntitySourceDefinition(supertest, { + source: { + id: 'hosts-with-agents-1', + type_id: 'hosts-with-agents', + index_patterns: ['index-1-with-hosts'], + identity_fields: ['host.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + }), + createEntitySourceDefinition(supertest, { + source: { + id: 'hosts-with-agents-2', + type_id: 'hosts-with-agents', + index_patterns: ['index-2-with-hosts'], + identity_fields: ['hostname_field'], + metadata_fields: [], + filters: [], + timestamp_field: 'timestamp', + }, + }), + ]); + + const { entities, errors } = await searchEntities(supertest, { + type: 'hosts-with-agents', + start: moment(now).subtract(10, 'minute').toISOString(), + end: moment(now).toISOString(), + metadata_fields: ['agent.name'], + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.id': 'host-uno', + 'entity.display_name': 'host-uno', + 'entity.type': 'hosts-with-agents', + 'entity.last_seen_timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'host.name': 'host-uno', + hostname_field: 'host-uno', + 'agent.name': expect.arrayContaining(['agent-a', 'agent-b', 'agent-1']), + }, + { + 'entity.id': 'host-dos', + 'entity.display_name': 'host-dos', + 'entity.type': 'hosts-with-agents', + 'entity.last_seen_timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'host.name': 'host-dos', + hostname_field: 'host-dos', + 'agent.name': expect.arrayContaining(['agent-3', 'agent-k']), + }, + { + 'entity.id': 'host-tres', + 'entity.display_name': 'host-tres', + 'entity.type': 'hosts-with-agents', + 'entity.last_seen_timestamp': moment(now).subtract(4, 'minute').toISOString(), + 'host.name': 'host-tres', + 'agent.name': null, + }, + { + 'entity.id': 'host-four', + 'entity.display_name': 'host-four', + 'entity.type': 'hosts-with-agents', + 'entity.last_seen_timestamp': moment(now).subtract(5, 'minute').toISOString(), + hostname_field: 'host-four', + 'agent.name': null, + }, + ]); + }); + + it('includes source and additional metadata fields', async () => { + const now = moment(); + + cleanup = await Promise.all([ + createIndexWithDocuments(esClient, { + index: 'index-1-with-services', + properties: { + '@timestamp': { type: 'date' }, + 'service.name': { type: 'keyword' }, + 'agent.name': { type: 'keyword' }, + 'host.name': { type: 'keyword' }, + }, + documents: [ + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'service.name': 'service-one', + 'agent.name': 'agent-one', + 'host.name': 'host-one', + }, + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'service.name': 'service-one', + 'agent.name': 'agent-one', + 'host.name': 'host-one', + }, + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'service.name': 'service-one', + 'host.name': 'host-two', + }, + { + '@timestamp': moment(now).subtract(3, 'minute').toISOString(), + 'service.name': 'service-two', + 'host.name': 'host-three', + }, + ], + }), + + createIndexWithDocuments(esClient, { + index: 'index-2-with-services', + properties: { + '@timestamp': { type: 'date' }, + 'service.name': { type: 'keyword' }, + 'agent.name': { type: 'keyword' }, + 'host.name': { type: 'keyword' }, + }, + documents: [ + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'service.name': 'service-one', + 'agent.name': 'agent-one', + 'host.name': 'host-one', + }, + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'service.name': 'service-one', + 'agent.name': 'agent-ten', + 'host.name': 'host-ten', + }, + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'service.name': 'service-two', + 'agent.name': 'agent-nine', + 'host.name': 'host-nine', + }, + ], + }), + ]); + + await createEntityTypeDefinition(supertest, { + type: { id: 'services-with-hosts', display_name: 'services-with-hosts' }, + }); + await Promise.all([ + createEntitySourceDefinition(supertest, { + source: { + id: 'source-1-with-services', + type_id: 'services-with-hosts', + index_patterns: ['index-1-with-services'], + identity_fields: ['service.name'], + metadata_fields: ['host.name'], + filters: [], + timestamp_field: '@timestamp', + }, + }), + createEntitySourceDefinition(supertest, { + source: { + id: 'source-2-with-services', + type_id: 'services-with-hosts', + index_patterns: ['index-2-with-services'], + identity_fields: ['service.name'], + metadata_fields: ['host.name'], + filters: [], + timestamp_field: '@timestamp', + }, + }), + ]); + + const { entities, errors } = await searchEntities(supertest, { + type: 'services-with-hosts', + metadata_fields: ['agent.name', 'non.existing.metadata.field'], + start: moment(now).subtract(5, 'minute').toISOString(), + end: moment(now).toISOString(), + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.last_seen_timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'entity.id': 'service-one', + 'entity.display_name': 'service-one', + 'entity.type': 'services-with-hosts', + 'service.name': 'service-one', + 'agent.name': expect.arrayContaining(['agent-one', 'agent-ten']), + 'host.name': expect.arrayContaining(['host-one', 'host-two', 'host-ten']), + }, + { + 'entity.last_seen_timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'entity.id': 'service-two', + 'entity.display_name': 'service-two', + 'entity.type': 'services-with-hosts', + 'service.name': 'service-two', + 'agent.name': 'agent-nine', + 'host.name': expect.arrayContaining(['host-three', 'host-nine']), + }, + ]); + }); + + it('respects filters', async () => { + const now = moment(); + + cleanup.push( + await createIndexWithDocuments(esClient, { + index: 'index-1-with-services', + properties: { + '@timestamp': { type: 'date' }, + 'service.name': { type: 'keyword' }, + 'service.environment': { type: 'keyword' }, + 'service.url': { type: 'keyword' }, + }, + documents: [ + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'service.name': 'service-one', + 'service.environment': 'prod', + 'service.url': 'http://prod.service-one.com', + }, + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'service.name': 'service-one', + 'service.environment': 'staging', + 'service.url': 'http://staging.service-one.com', + }, + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'service.name': 'service-two', + 'service.environment': 'prod', + 'service.url': 'http://prod.service-two.com', + }, + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'service.name': 'service-two', + 'service.environment': 'staging', + 'service.url': 'http://staging.service-two.com', + }, + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'service.name': 'service-three', + 'service.environment': 'prod', + 'service.url': 'http://prod.service-three.com', + }, + ], + }) + ); + + await createEntityTypeDefinition(supertest, { + type: { id: 'service-one-type', display_name: 'service-one-type' }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'source-1-with-services', + type_id: 'service-one-type', + index_patterns: ['index-1-with-services'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: ['service.name: service-one'], + timestamp_field: '@timestamp', + }, + }); + + const { entities, errors } = await searchEntities(supertest, { + type: 'service-one-type', + start: moment(now).subtract(5, 'minute').toISOString(), + end: moment(now).toISOString(), + filters: ['service.environment: prod'], + metadata_fields: ['service.environment', 'service.url'], + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.last_seen_timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'entity.id': 'service-one', + 'entity.display_name': 'service-one', + 'entity.type': 'service-one-type', + 'service.name': 'service-one', + 'service.environment': 'prod', + 'service.url': 'http://prod.service-one.com', + }, + ]); + }); + + it('resolves entities with multiple identity fields', async () => { + const now = moment(); + + cleanup.push( + await createIndexWithDocuments(esClient, { + index: 'index-1-with-cars', + properties: { + '@timestamp': { type: 'date' }, + 'car.brand': { type: 'keyword' }, + 'car.model': { type: 'keyword' }, + }, + documents: [ + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'car.brand': 'Fiat', + 'car.model': 'Multipla', + }, + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'car.brand': 'Citroen', + 'car.model': 'ZX break', + }, + ], + }) + ); + + await createEntityTypeDefinition(supertest, { + type: { id: 'most-refined-cars', display_name: 'most-refined-cars' }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'source-1-with-cars', + type_id: 'most-refined-cars', + index_patterns: ['index-1-with-cars'], + identity_fields: ['car.brand', 'car.model'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + display_name: 'car.model', + }, + }); + + const { entities, errors } = await searchEntities(supertest, { + type: 'most-refined-cars', + start: moment(now).subtract(5, 'minute').toISOString(), + end: moment(now).toISOString(), + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.last_seen_timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'entity.id': 'Citroen:ZX break', + 'entity.display_name': 'ZX break', + 'entity.type': 'most-refined-cars', + 'car.brand': 'Citroen', + 'car.model': 'ZX break', + }, + { + 'entity.last_seen_timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'entity.id': 'Fiat:Multipla', + 'entity.display_name': 'Multipla', + 'entity.type': 'most-refined-cars', + 'car.brand': 'Fiat', + 'car.model': 'Multipla', + }, + ]); + }); + + it('resolves entities with multiple identity fields across sources', async () => { + const now = moment(); + + cleanup = await Promise.all([ + createIndexWithDocuments(esClient, { + index: 'index-1-with-cars', + properties: { + '@timestamp': { type: 'date' }, + 'car.brand': { type: 'keyword' }, + 'car.model': { type: 'keyword' }, + 'car.color': { type: 'keyword' }, + }, + documents: [ + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'car.brand': 'Fiat', + 'car.model': 'Multipla', + 'car.color': 'cyan', + }, + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'car.brand': 'Citroen', + 'car.model': 'ZX break', + 'car.color': 'white', + }, + ], + }), + + createIndexWithDocuments(esClient, { + index: 'index-2-with-cars', + properties: { + '@timestamp': { type: 'date' }, + car_brand: { type: 'keyword' }, + car_model: { type: 'keyword' }, + 'car.color': { type: 'keyword' }, + }, + documents: [ + { + '@timestamp': moment(now).subtract(2, 'minute').toISOString(), + car_brand: 'Fiat', + car_model: 'Multipla', + 'car.color': 'purple', + }, + { + '@timestamp': moment(now).subtract(1, 'minute').toISOString(), + car_brand: 'Citroen', + car_model: 'ZX break', + 'car.color': 'orange', + }, + ], + }), + ]); + + await createEntityTypeDefinition(supertest, { + type: { id: 'most-refined-cars', display_name: 'most-refined-cars' }, + }); + await Promise.all([ + createEntitySourceDefinition(supertest, { + source: { + id: 'source-1-with-cars', + type_id: 'most-refined-cars', + index_patterns: ['index-1-with-cars'], + identity_fields: ['car.brand', 'car.model'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + }), + createEntitySourceDefinition(supertest, { + source: { + id: 'source-2-with-cars', + type_id: 'most-refined-cars', + index_patterns: ['index-2-with-cars'], + identity_fields: ['car_brand', 'car_model'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + }), + ]); + + const { entities, errors } = await searchEntities(supertest, { + type: 'most-refined-cars', + start: moment(now).subtract(5, 'minute').toISOString(), + end: moment(now).toISOString(), + metadata_fields: ['car.color'], + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.last_seen_timestamp': moment(now).subtract(1, 'minute').toISOString(), + 'entity.id': 'Citroen:ZX break', + 'entity.display_name': 'Citroen:ZX break', + 'entity.type': 'most-refined-cars', + 'car.brand': 'Citroen', + 'car.model': 'ZX break', + car_brand: 'Citroen', + car_model: 'ZX break', + 'car.color': expect.arrayContaining(['white', 'orange']), + }, + { + 'entity.last_seen_timestamp': moment(now).subtract(2, 'minute').toISOString(), + 'entity.id': 'Fiat:Multipla', + 'entity.display_name': 'Fiat:Multipla', + 'entity.type': 'most-refined-cars', + 'car.brand': 'Fiat', + 'car.model': 'Multipla', + car_brand: 'Fiat', + car_model: 'Multipla', + 'car.color': expect.arrayContaining(['cyan', 'purple']), + }, + ]); + }); + + it('casts conflicting mappings to keywords', async () => { + cleanup = await Promise.all([ + await createIndexWithDocuments(esClient, { + index: 'index-service-name-as-keyword', + properties: { 'service.name': { type: 'keyword' } }, + documents: [{ 'service.name': 'service-name-as-keyword' }], + }), + + await createIndexWithDocuments(esClient, { + index: 'index-service-name-as-text', + properties: { 'service.name': { type: 'text' } }, + documents: [{ 'service.name': 'service-name-as-text' }], + }), + + await createIndexWithDocuments(esClient, { + index: 'index-service-name-as-long', + properties: { 'service.name': { type: 'long' } }, + documents: [{ 'service.name': 123 }], + }), + ]); + + await createEntityTypeDefinition(supertest, { + type: { + id: 'type-with-conflicting-mappings', + display_name: 'type-with-conflicting-mappings', + }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'conflicting-mappings', + type_id: 'type-with-conflicting-mappings', + index_patterns: ['index-service-name-as-*'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + }, + }); + + const { entities, errors } = await searchEntities(supertest, { + type: 'type-with-conflicting-mappings', + }); + + expect(errors).toEqual([]); + expect(entities).toEqual([ + { + 'entity.id': '123', + 'entity.display_name': '123', + 'entity.type': 'type-with-conflicting-mappings', + 'service.name': '123', + }, + { + 'entity.id': 'service-name-as-keyword', + 'entity.display_name': 'service-name-as-keyword', + 'entity.type': 'type-with-conflicting-mappings', + 'service.name': 'service-name-as-keyword', + }, + { + 'entity.id': 'service-name-as-text', + 'entity.display_name': 'service-name-as-text', + 'entity.type': 'type-with-conflicting-mappings', + 'service.name': 'service-name-as-text', + }, + ]); + }); + + it('returns error if index does not exist', async () => { + await createEntityTypeDefinition(supertest, { + type: { id: 'type-with-non-existing-index', display_name: 'type-with-non-existing-index' }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'non-existing-index', + type_id: 'type-with-non-existing-index', + index_patterns: ['non-existing-index-pattern*', 'non-existing-index'], + identity_fields: ['service.name'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + }); + + const { entities, errors } = await searchEntities(supertest, { + type: 'type-with-non-existing-index', + }); + expect(errors).toEqual([ + 'No index found for source [source: non-existing-index, type: type-with-non-existing-index] with index patterns [non-existing-index-pattern*, non-existing-index]', + ]); + expect(entities).toEqual([]); + }); + + it('returns error if mandatory fields are not mapped', async () => { + cleanup.push( + await createIndexWithDocuments(esClient, { + index: 'unmapped-id-fields', + properties: { 'service.environment': { type: 'keyword' } }, + documents: [ + { + '@timestamp': moment().toISOString(), + 'service.name': 'service-one', + 'service.environment': 'prod', + }, + ], + }) + ); + + await createEntityTypeDefinition(supertest, { + type: { id: 'type-with-unmapped-id-fields', display_name: 'type-with-unmapped-id-fields' }, + }); + await createEntitySourceDefinition(supertest, { + source: { + id: 'unmapped-fields', + type_id: 'type-with-unmapped-id-fields', + index_patterns: ['unmapped-id-fields'], + identity_fields: ['service.name', 'service.environment'], + metadata_fields: [], + filters: [], + timestamp_field: '@timestamp', + }, + }); + + const { entities, errors } = await searchEntities(supertest, { + type: 'type-with-unmapped-id-fields', + }); + expect(errors).toEqual([ + 'Mandatory fields [service.name, @timestamp] are not mapped for source [source: unmapped-fields, type: type-with-unmapped-id-fields] with index patterns [unmapped-id-fields]', + ]); + expect(entities).toEqual([]); + }); + }); +} diff --git a/x-pack/test/api_integration/apis/streams/classic.ts b/x-pack/test/api_integration/apis/streams/classic.ts new file mode 100644 index 0000000000000..25a7238a757ca --- /dev/null +++ b/x-pack/test/api_integration/apis/streams/classic.ts @@ -0,0 +1,163 @@ +/* + * 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 expect from '@kbn/expect'; +import { JsonObject } from '@kbn/utility-types'; +import { + deleteStream, + enableStreams, + fetchDocument, + getStream, + indexDocument, + listStreams, + putStream, +} from './helpers/requests'; +import { FtrProviderContext } from '../../ftr_provider_context'; +import { waitForDocumentInIndex } from '../../../alerting_api_integration/observability/helpers/alerting_wait_for_helpers'; +import { cleanUpRootStream } from './helpers/cleanup'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + const esClient = getService('es'); + const retryService = getService('retry'); + const logger = getService('log'); + + describe('Classic streams', () => { + after(async () => { + await cleanUpRootStream(esClient); + }); + + before(async () => { + await enableStreams(supertest); + }); + + it('Shows non-wired data streams', async () => { + const doc = { + message: '2023-01-01T00:00:10.000Z error test', + }; + const response = await indexDocument(esClient, 'logs-test-default', doc); + expect(response.result).to.eql('created'); + const streams = await listStreams(supertest); + const classicStream = streams.definitions.find( + (stream: JsonObject) => stream.id === 'logs-test-default' + ); + expect(classicStream).to.eql({ + id: 'logs-test-default', + managed: false, + children: [], + fields: [], + processing: [], + }); + }); + + it('Allows setting processing on classic streams', async () => { + const response = await putStream(supertest, 'logs-test-default', { + managed: false, + children: [], + fields: [], + processing: [ + { + config: { + type: 'grok', + field: 'message', + patterns: [ + '%{TIMESTAMP_ISO8601:inner_timestamp} %{LOGLEVEL:log.level} %{GREEDYDATA:message2}', + ], + }, + }, + ], + }); + expect(response).to.have.property('acknowledged', true); + const streamBody = await getStream(supertest, 'logs-test-default'); + expect(streamBody).to.eql({ + id: 'logs-test-default', + managed: false, + children: [], + inheritedFields: [], + fields: [], + processing: [ + { + config: { + type: 'grok', + field: 'message', + patterns: [ + '%{TIMESTAMP_ISO8601:inner_timestamp} %{LOGLEVEL:log.level} %{GREEDYDATA:message2}', + ], + }, + }, + ], + }); + }); + + it('Executes processing on classic streams', async () => { + const doc = { + '@timestamp': '2024-01-01T00:00:10.000Z', + message: '2023-01-01T00:00:10.000Z error test', + }; + const response = await indexDocument(esClient, 'logs-test-default', doc); + expect(response.result).to.eql('created'); + await waitForDocumentInIndex({ + esClient, + indexName: 'logs-test-default', + retryService, + logger, + docCountTarget: 2, + }); + const result = await fetchDocument(esClient, 'logs-test-default', response._id); + expect(result._source).to.eql({ + '@timestamp': '2024-01-01T00:00:10.000Z', + message: '2023-01-01T00:00:10.000Z error test', + inner_timestamp: '2023-01-01T00:00:10.000Z', + message2: 'test', + log: { + level: 'error', + }, + }); + }); + + it('Allows removing processing on classic streams', async () => { + const response = await putStream(supertest, 'logs-test-default', { + managed: false, + children: [], + fields: [], + processing: [], + }); + expect(response).to.have.property('acknowledged', true); + }); + + it('Executes processing on classic streams after removing processing', async () => { + const doc = { + // default logs pipeline fills in timestamp with current date if not set + message: '2023-01-01T00:00:10.000Z info mylogger this is the message', + }; + const response = await indexDocument(esClient, 'logs-test-default', doc); + expect(response.result).to.eql('created'); + await waitForDocumentInIndex({ + esClient, + indexName: 'logs-test-default', + retryService, + logger, + docCountTarget: 3, + }); + const result = await fetchDocument(esClient, 'logs-test-default', response._id); + expect(result._source).to.eql({ + // accept any date + '@timestamp': (result._source as { [key: string]: unknown })['@timestamp'], + message: '2023-01-01T00:00:10.000Z info mylogger this is the message', + }); + }); + + it('Allows deleting classic streams', async () => { + await deleteStream(supertest, 'logs-test-default'); + const streams = await listStreams(supertest); + const classicStream = streams.definitions.find( + (stream: JsonObject) => stream.id === 'logs-test-default' + ); + expect(classicStream).to.eql(undefined); + }); + }); +} diff --git a/x-pack/test/api_integration/apis/streams/helpers/requests.ts b/x-pack/test/api_integration/apis/streams/helpers/requests.ts index 7d656e4aacf5e..43e7f02b7a750 100644 --- a/x-pack/test/api_integration/apis/streams/helpers/requests.ts +++ b/x-pack/test/api_integration/apis/streams/helpers/requests.ts @@ -42,6 +42,18 @@ export async function putStream(supertest: Agent, name: string, body: JsonObject return response.body; } +export async function getStream(supertest: Agent, name: string) { + const req = supertest.get(`/api/streams/${name}`).set('kbn-xsrf', 'xxx'); + const response = await req.send().expect(200); + return response.body; +} + +export async function listStreams(supertest: Agent) { + const req = supertest.get(`/api/streams`).set('kbn-xsrf', 'xxx'); + const response = await req.send().expect(200); + return response.body; +} + export async function deleteStream(supertest: Agent, id: string) { const req = supertest.delete(`/api/streams/${id}`).set('kbn-xsrf', 'xxx'); const response = await req.send().expect(200); diff --git a/x-pack/test/api_integration/apis/streams/index.ts b/x-pack/test/api_integration/apis/streams/index.ts index 4ef3fce385248..14decb2400196 100644 --- a/x-pack/test/api_integration/apis/streams/index.ts +++ b/x-pack/test/api_integration/apis/streams/index.ts @@ -11,6 +11,7 @@ export default function ({ loadTestFile }: FtrProviderContext) { describe('Streams Endpoints', () => { loadTestFile(require.resolve('./full_flow')); loadTestFile(require.resolve('./enrichment')); + loadTestFile(require.resolve('./classic')); loadTestFile(require.resolve('./flush_config')); }); } diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor.ts new file mode 100644 index 0000000000000..1e985975db1d4 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor.ts @@ -0,0 +1,304 @@ +/* + * 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 expect from '@kbn/expect'; +import { RoleCredentials, SamlAuthProviderType } from '@kbn/ftr-common-functional-services'; +import epct from 'expect'; +import moment from 'moment/moment'; +import { v4 as uuidv4 } from 'uuid'; +import { omit, omitBy } from 'lodash'; +import { + ConfigKey, + MonitorTypeEnum, + HTTPFields, + PrivateLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { formatKibanaNamespace } from '@kbn/synthetics-plugin/common/formatters'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { DEFAULT_FIELDS } from '@kbn/synthetics-plugin/common/constants/monitor_defaults'; +import { + removeMonitorEmptyValues, + transformPublicKeys, +} from '@kbn/synthetics-plugin/server/routes/monitor_cruds/formatters/saved_object_to_monitor'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export const addMonitorAPIHelper = async ( + supertestAPI: any, + monitor: any, + statusCode = 200, + roleAuthc: RoleCredentials, + samlAuth: SamlAuthProviderType +) => { + const result = await supertestAPI + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(roleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(statusCode); + + if (statusCode === 200) { + const { created_at: createdAt, updated_at: updatedAt, id, config_id: configId } = result.body; + expect(id).not.empty(); + expect(configId).not.empty(); + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + return { + rawBody: result.body, + body: { + ...omit(result.body, ['created_at', 'updated_at', 'id', 'config_id', 'form_monitor_type']), + }, + }; + } + return result.body; +}; + +export const keyToOmitList = [ + 'created_at', + 'updated_at', + 'id', + 'config_id', + 'form_monitor_type', + 'spaceId', + 'private_locations', +]; + +export const omitMonitorKeys = (monitor: any) => { + return omitBy(omit(transformPublicKeys(monitor), keyToOmitList), removeMonitorEmptyValues); +}; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('AddNewMonitorsUI', function () { + const supertestAPI = getService('supertestWithoutAuth'); + const samlAuth = getService('samlAuth'); + const kibanaServer = getService('kibanaServer'); + const monitorTestService = new SyntheticsMonitorTestService(getService); + const privateLocationsService = new PrivateLocationTestService(getService); + + let privateLocation: PrivateLocation; + let _httpMonitorJson: HTTPFields; + let httpMonitorJson: HTTPFields; + let editorRoleAuthc: RoleCredentials; + + const addMonitorAPI = async (monitor: any, statusCode = 200) => { + return addMonitorAPIHelper(supertestAPI, monitor, statusCode, editorRoleAuthc, samlAuth); + }; + + const deleteMonitor = async ( + monitorId?: string | string[], + statusCode = 200, + spaceId?: string + ) => { + return monitorTestService.deleteMonitor(editorRoleAuthc, monitorId, statusCode, spaceId); + }; + + before(async () => { + _httpMonitorJson = getFixtureJson('http_monitor'); + await kibanaServer.savedObjects.cleanStandardList(); + editorRoleAuthc = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + }); + + beforeEach(async () => { + privateLocation = await privateLocationsService.addTestPrivateLocation(); + httpMonitorJson = { + ..._httpMonitorJson, + locations: [privateLocation], + }; + }); + + it('returns the newly added monitor', async () => { + const newMonitor = httpMonitorJson; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + expect(apiResponse).eql(omitMonitorKeys(newMonitor)); + }); + + it('returns bad request if payload is invalid for HTTP monitor', async () => { + // Delete a required property to make payload invalid + const newMonitor = { ...httpMonitorJson, 'check.request.headers': null }; + await addMonitorAPI(newMonitor, 400); + }); + + it('returns bad request if monitor type is invalid', async () => { + const newMonitor = { ...httpMonitorJson, type: 'invalid-data-steam' }; + + const apiResponse = await addMonitorAPI(newMonitor, 400); + + expect(apiResponse.message).eql('Invalid value "invalid-data-steam" supplied to "type"'); + }); + + it('can create valid monitors without all defaults', async () => { + // Delete a required property to make payload invalid + const newMonitor = { + name: 'Sample name', + type: 'http', + urls: 'https://elastic.co', + locations: [privateLocation], + }; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + expect(apiResponse).eql( + omitMonitorKeys({ + ...DEFAULT_FIELDS[MonitorTypeEnum.HTTP], + ...newMonitor, + }) + ); + }); + + it('can disable retries', async () => { + const maxAttempts = 1; + const newMonitor = { + max_attempts: maxAttempts, + urls: 'https://elastic.co', + name: `Sample name ${uuidv4()}`, + type: 'http', + locations: [privateLocation], + }; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + epct(apiResponse).toEqual(epct.objectContaining({ retest_on_failure: false })); + }); + + it('can enable retries with max attempts', async () => { + const maxAttempts = 2; + const newMonitor = { + max_attempts: maxAttempts, + urls: 'https://elastic.co', + name: `Sample name ${uuidv4()}`, + type: 'http', + locations: [privateLocation], + }; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + epct(apiResponse).toEqual(epct.objectContaining({ retest_on_failure: true })); + }); + + it('can enable retries', async () => { + const newMonitor = { + retest_on_failure: false, + urls: 'https://elastic.co', + name: `Sample name ${uuidv4()}`, + type: 'http', + locations: [privateLocation], + }; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + epct(apiResponse).toEqual(epct.objectContaining({ retest_on_failure: false })); + }); + + it('cannot create a invalid monitor without a monitor type', async () => { + // Delete a required property to make payload invalid + const newMonitor = { + name: 'Sample name', + url: 'https://elastic.co', + locations: [privateLocation], + }; + await addMonitorAPI(newMonitor, 400); + }); + + it('omits unknown keys', async () => { + // Delete a required property to make payload invalid + const newMonitor = { + name: 'Sample name', + url: 'https://elastic.co', + unknownKey: 'unknownValue', + type: 'http', + locations: [privateLocation], + }; + const apiResponse = await addMonitorAPI(newMonitor, 400); + expect(apiResponse.message).not.to.have.keys( + 'Invalid monitor key(s) for http type: unknownKey","attributes":{"details":"Invalid monitor key(s) for http type: unknownKey' + ); + }); + + it('sets namespace to Kibana space when not set to a custom namespace', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + const EXPECTED_NAMESPACE = formatKibanaNamespace(SPACE_ID); + privateLocation = await privateLocationsService.addTestPrivateLocation(SPACE_ID); + const monitor = { + ...httpMonitorJson, + [ConfigKey.NAMESPACE]: 'default', + locations: [privateLocation], + }; + let monitorId = ''; + + try { + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + const apiResponse = await supertestAPI + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + monitorId = apiResponse.body.id; + expect(apiResponse.body[ConfigKey.NAMESPACE]).eql(EXPECTED_NAMESPACE); + } finally { + await deleteMonitor(monitorId, 200, SPACE_ID); + } + }); + + it('preserves the passed namespace when preserve_namespace is passed', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + privateLocation = await privateLocationsService.addTestPrivateLocation(SPACE_ID); + const monitor = { + ...httpMonitorJson, + [ConfigKey.NAMESPACE]: 'default', + locations: [privateLocation], + }; + let monitorId = ''; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + try { + const apiResponse = await supertestAPI + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .query({ preserve_namespace: true }) + .set(editorRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + monitorId = apiResponse.body.id; + expect(apiResponse.body[ConfigKey.NAMESPACE]).eql('default'); + } finally { + await deleteMonitor(monitorId, 200, SPACE_ID); + } + }); + + it('sets namespace to custom namespace when set', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + privateLocation = await privateLocationsService.addTestPrivateLocation(SPACE_ID); + const monitor = { + ...httpMonitorJson, + locations: [privateLocation], + }; + let monitorId = ''; + + try { + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + const apiResponse = await supertestAPI + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + monitorId = apiResponse.body.id; + expect(apiResponse.body[ConfigKey.NAMESPACE]).eql(monitor[ConfigKey.NAMESPACE]); + } finally { + await deleteMonitor(monitorId, 200, SPACE_ID); + } + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_private_location.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_private_location.ts new file mode 100644 index 0000000000000..a940a5aec756b --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_private_location.ts @@ -0,0 +1,562 @@ +/* + * 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 moment from 'moment'; +import semver from 'semver'; +import { v4 as uuidv4 } from 'uuid'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + ConfigKey, + HTTPFields, + PrivateLocation, + ServiceLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { omit } from 'lodash'; +import { PackagePolicy } from '@kbn/fleet-plugin/common'; +import expect from '@kbn/expect'; +import rawExpect from 'expect'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { comparePolicies, getTestSyntheticsPolicy } from './sample_data/test_policy'; +import { + INSTALLED_VERSION, + PrivateLocationTestService, +} from '../../../services/synthetics_private_location'; +import { addMonitorAPIHelper, keyToOmitList, omitMonitorKeys } from './create_monitor'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('PrivateLocationAddMonitor', function () { + // see details: https://github.com/elastic/kibana/issues/204204 + this.tags(['failsOnMKI']); + const kibanaServer = getService('kibanaServer'); + const supertestAPI = getService('supertestWithoutAuth'); + const supertestWithAuth = getService('supertest'); + const samlAuth = getService('samlAuth'); + + let testFleetPolicyID: string; + let editorUser: RoleCredentials; + let privateLocations: PrivateLocation[] = []; + const testPolicyName = 'Fleet test server policy' + Date.now(); + + let _httpMonitorJson: HTTPFields; + let httpMonitorJson: HTTPFields; + const monitorTestService = new SyntheticsMonitorTestService(getService); + const testPrivateLocations = new PrivateLocationTestService(getService); + + const addMonitorAPI = async (monitor: any, statusCode = 200) => { + return addMonitorAPIHelper(supertestAPI, monitor, statusCode, editorUser, samlAuth); + }; + + const deleteMonitor = async ( + monitorId?: string | string[], + statusCode = 200, + spaceId?: string + ) => { + return monitorTestService.deleteMonitor(editorUser, monitorId, statusCode, spaceId); + }; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + await testPrivateLocations.installSyntheticsPackage(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + + _httpMonitorJson = getFixtureJson('http_monitor'); + }); + + beforeEach(() => { + httpMonitorJson = { + ..._httpMonitorJson, + locations: privateLocations ? [privateLocations[0]] : [], + }; + }); + + it('adds a test fleet policy', async () => { + const apiResponse = await testPrivateLocations.addFleetPolicy(testPolicyName); + testFleetPolicyID = apiResponse.body.item.id; + }); + + it('add a test private location', async () => { + privateLocations = await testPrivateLocations.setTestLocations([testFleetPolicyID]); + + const apiResponse = await supertestAPI + .get(SYNTHETICS_API_URLS.SERVICE_LOCATIONS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const testResponse: Array = [ + { + id: testFleetPolicyID, + isServiceManaged: false, + isInvalid: false, + label: privateLocations[0].label, + geo: { + lat: 0, + lon: 0, + }, + agentPolicyId: testFleetPolicyID, + }, + ]; + + rawExpect(apiResponse.body.locations).toEqual(rawExpect.arrayContaining(testResponse)); + }); + + it('does not add a monitor if there is an error in creating integration', async () => { + const newMonitor = { ...httpMonitorJson }; + const invalidName = 'invalid name'; + + const location = { + id: 'invalidLocation', + label: privateLocations[0].label, + isServiceManaged: false, + geo: { + lat: 0, + lon: 0, + }, + }; + + newMonitor.name = invalidName; + + const apiResponse = await supertestAPI + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ ...newMonitor, locations: [location] }) + .expect(400); + + expect(apiResponse.body).eql({ + statusCode: 400, + error: 'Bad Request', + message: `Invalid locations specified. Private Location(s) 'invalidLocation' not found. Available private locations are '${privateLocations[0].label}'`, + }); + + const apiGetResponse = await supertestAPI + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + `?query="${invalidName}"`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + // verify that no monitor was added + expect(apiGetResponse.body.monitors?.length).eql(0); + }); + + let newMonitorId: string; + + it('adds a monitor in private location', async () => { + const newMonitor = { + ...httpMonitorJson, + locations: [privateLocations[0]], + }; + + const { body, rawBody } = await addMonitorAPI(newMonitor); + + expect(body).eql(omitMonitorKeys(newMonitor)); + newMonitorId = rawBody.id; + }); + + it('added an integration for previously added monitor', async () => { + const apiResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy?.policy_id).eql(testFleetPolicyID); + + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: httpMonitorJson.name, + id: newMonitorId, + location: { id: testFleetPolicyID, name: privateLocations[0].label }, + }) + ); + }); + + let testFleetPolicyID2: string; + let newLocations: PrivateLocation[] = []; + + it('edits a monitor with additional private location', async () => { + const resPolicy = await testPrivateLocations.addFleetPolicy(testPolicyName + 1); + testFleetPolicyID2 = resPolicy.body.item.id; + + newLocations = await testPrivateLocations.setTestLocations([ + testFleetPolicyID, + testFleetPolicyID2, + ]); + + httpMonitorJson.locations.push({ + id: testFleetPolicyID2, + agentPolicyId: testFleetPolicyID2, + label: newLocations[1].label, + isServiceManaged: false, + geo: { + lat: 0, + lon: 0, + }, + }); + + const apiResponse = await supertestAPI + .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + newMonitorId) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(httpMonitorJson); + + const { created_at: createdAt, updated_at: updatedAt } = apiResponse.body; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(omit(apiResponse.body, keyToOmitList)).eql( + omitMonitorKeys({ + ...omit(httpMonitorJson, ['urls']), + url: httpMonitorJson.urls, + updated_at: updatedAt, + revision: 2, + }) + ); + }); + + it('added an integration for second location in edit monitor', async () => { + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + let packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy.policy_id).eql(testFleetPolicyID); + + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: httpMonitorJson.name, + id: newMonitorId, + location: { id: testFleetPolicyID, name: privateLocations[0].label }, + }) + ); + + packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID2 + '-default' + ); + + expect(packagePolicy.policy_id).eql(testFleetPolicyID2); + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: httpMonitorJson.name, + id: newMonitorId, + location: { + name: newLocations[1].label, + id: testFleetPolicyID2, + }, + }) + ); + }); + + it('deletes integration for a removed location from monitor', async () => { + httpMonitorJson.locations = httpMonitorJson.locations.filter( + ({ id }) => id !== testFleetPolicyID2 + ); + + await supertestAPI + .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + newMonitorId + '?internal=true') + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(httpMonitorJson) + .expect(200); + + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + let packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy.policy_id).eql(testFleetPolicyID); + + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: httpMonitorJson.name, + id: newMonitorId, + location: { id: testFleetPolicyID, name: privateLocations[0].label }, + }) + ); + + packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID2 + '-default' + ); + + expect(packagePolicy).eql(undefined); + }); + + it('deletes integration for a deleted monitor', async () => { + await deleteMonitor(newMonitorId); + + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy).eql(undefined); + }); + + // it('handles spaces', async () => { + // const username = 'admin'; + // const password = `${username}-password`; + // const roleName = 'uptime-role'; + // const SPACE_ID = `test-space-${uuidv4()}`; + // const SPACE_NAME = `test-space-name ${uuidv4()}`; + // let monitorId = ''; + // const monitor = { + // ...httpMonitorJson, + // name: `Test monitor ${uuidv4()}`, + // [ConfigKey.NAMESPACE]: 'default', + // locations: [ + // { + // id: testFleetPolicyID, + // agentPolicyId: testFleetPolicyID, + // label: 'Test private location 0', + // isServiceManaged: false, + // geo: { + // lat: 0, + // lon: 0, + // }, + // }, + // ], + // }; + + // try { + // await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + // await security.role.create(roleName, { + // kibana: [ + // { + // feature: { + // uptime: ['all'], + // actions: ['all'], + // }, + // spaces: ['*'], + // }, + // ], + // }); + // await security.user.create(username, { + // password, + // roles: [roleName], + // full_name: 'a kibana user', + // }); + // const apiResponse = await supertestWithoutAuth + // .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + // .auth(username, password) + // .set('kbn-xsrf', 'true') + // .send(monitor) + // .expect(200); + + // const { created_at: createdAt, updated_at: updatedAt } = apiResponse.body; + // expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + // expect(omit(apiResponse.body, keyToOmitList)).eql( + // omitMonitorKeys({ + // ...monitor, + // [ConfigKey.NAMESPACE]: formatKibanaNamespace(SPACE_ID), + // url: apiResponse.body.url, + // }) + // ); + // monitorId = apiResponse.body.id; + + // const policyResponse = await supertestWithAuth.get( + // '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + // ); + + // const packagePolicy = policyResponse.body.items.find( + // (pkgPolicy: PackagePolicy) => + // pkgPolicy.id === monitorId + '-' + testFleetPolicyID + `-${SPACE_ID}` + // ); + + // expect(packagePolicy.policy_id).eql(testFleetPolicyID); + // expect(packagePolicy.name).eql(`${monitor.name}-Test private location 0-${SPACE_ID}`); + // comparePolicies( + // packagePolicy, + // getTestSyntheticsPolicy({ + // name: monitor.name, + // id: monitorId, + // location: { id: testFleetPolicyID }, + // namespace: formatKibanaNamespace(SPACE_ID), + // spaceId: SPACE_ID, + // }) + // ); + // await supertestWithoutAuth + // .delete(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + // .auth(username, password) + // .set('kbn-xsrf', 'true') + // .send({ ids: [monitorId] }) + // .expect(200); + // } finally { + // await security.user.delete(username); + // await security.role.delete(roleName); + // } + // }); + + it('handles is_tls_enabled true', async () => { + let monitorId = ''; + + const monitor = { + ...httpMonitorJson, + locations: [ + { + id: testFleetPolicyID, + label: privateLocations[0].label, + isServiceManaged: false, + }, + ], + [ConfigKey.METADATA]: { + is_tls_enabled: true, + }, + }; + + try { + const apiResponse = await supertestAPI + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + + monitorId = apiResponse.body.id; + + const policyResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = policyResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === monitorId + '-' + testFleetPolicyID + `-default` + ); + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: monitor.name, + id: monitorId, + location: { id: testFleetPolicyID, name: privateLocations[0].label }, + isTLSEnabled: true, + }) + ); + } finally { + await deleteMonitor(monitorId); + } + }); + + it('handles is_tls_enabled false', async () => { + let monitorId = ''; + + const monitor = { + ...httpMonitorJson, + locations: [ + { + id: testFleetPolicyID, + label: privateLocations[0].label, + isServiceManaged: false, + }, + ], + [ConfigKey.METADATA]: { + is_tls_enabled: false, + }, + }; + + try { + const apiResponse = await supertestAPI + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + + monitorId = apiResponse.body.id; + + const policyResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = policyResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === monitorId + '-' + testFleetPolicyID + `-default` + ); + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: monitor.name, + id: monitorId, + location: { id: testFleetPolicyID, name: privateLocations[0].label }, + }) + ); + } finally { + await deleteMonitor(monitorId); + } + }); + + it('handles auto upgrading policies', async () => { + let monitorId = ''; + + const monitor = { + ...httpMonitorJson, + name: `Test monitor ${uuidv4()}`, + [ConfigKey.NAMESPACE]: 'default', + locations: [ + { + id: testFleetPolicyID, + label: privateLocations[0].label, + isServiceManaged: false, + }, + ], + }; + + try { + const apiResponse = await supertestAPI + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + monitorId = apiResponse.body.id; + + const policyResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = policyResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === monitorId + '-' + testFleetPolicyID + `-default` + ); + + expect(packagePolicy.package.version).eql(INSTALLED_VERSION); + + await supertestWithAuth.post('/api/fleet/setup').set('kbn-xsrf', 'true').send().expect(200); + const policyResponseAfterUpgrade = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + const packagePolicyAfterUpgrade = policyResponseAfterUpgrade.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === monitorId + '-' + testFleetPolicyID + `-default` + ); + expect(semver.gte(packagePolicyAfterUpgrade.package.version, INSTALLED_VERSION)).eql(true); + } finally { + await deleteMonitor(monitorId); + } + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_project.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_project.ts new file mode 100644 index 0000000000000..d8f7e78607293 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_project.ts @@ -0,0 +1,2194 @@ +/* + * 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 { v4 as uuidv4 } from 'uuid'; +import expect from '@kbn/expect'; +import rawExpect from 'expect'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + ConfigKey, + ProjectMonitorsRequest, + PrivateLocation, + ServiceLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { formatKibanaNamespace } from '@kbn/synthetics-plugin/common/formatters'; +import { REQUEST_TOO_LARGE } from '@kbn/synthetics-plugin/server/routes/monitor_cruds/add_monitor_project'; +import { PackagePolicy } from '@kbn/fleet-plugin/common'; +import { + PROFILE_VALUES_ENUM, + PROFILES_MAP, +} from '@kbn/synthetics-plugin/common/constants/monitor_defaults'; +import { syntheticsMonitorType } from '@kbn/synthetics-plugin/common/types/saved_objects'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { comparePolicies } from './sample_data/test_policy'; +import { + getTestProjectSyntheticsPolicy, + getTestProjectSyntheticsPolicyLightweight, +} from './sample_data/test_project_monitor_policy'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('AddProjectMonitors', function () { + const supertest = getService('supertestWithoutAuth'); + const supertestWithAuth = getService('supertest'); + const kibanaServer = getService('kibanaServer'); + const monitorTestService = new SyntheticsMonitorTestService(getService); + const testPrivateLocations = new PrivateLocationTestService(getService); + const samlAuth = getService('samlAuth'); + + let projectMonitors: ProjectMonitorsRequest; + let httpProjectMonitors: ProjectMonitorsRequest; + let tcpProjectMonitors: ProjectMonitorsRequest; + let icmpProjectMonitors: ProjectMonitorsRequest; + let editorUser: RoleCredentials; + let viewerUser: RoleCredentials; + let privateLocations: PrivateLocation[] = []; + + let testPolicyId1 = ''; + let testPolicyId2 = ''; + const testPolicyName = 'Fleet test server policy' + Date.now(); + + const setUniqueIds = (request: ProjectMonitorsRequest) => { + return { + ...request, + monitors: request.monitors.map((monitor) => ({ ...monitor, id: uuidv4() })), + }; + }; + + const deleteMonitor = async ( + journeyId: string, + projectId: string, + space: string = 'default' + ) => { + try { + const response = await supertest + .get(`/s/${space}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: "${journeyId}" AND ${syntheticsMonitorType}.attributes.project_id: "${projectId}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const { monitors } = response.body; + if (monitors[0]?.config_id) { + await monitorTestService.deleteMonitor(editorUser, monitors[0].config_id, 200, space); + } + } catch (e) { + // eslint-disable-next-line no-console + console.error(e); + } + }; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + viewerUser = await samlAuth.createM2mApiKeyWithRoleScope('viewer'); + await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + await testPrivateLocations.installSyntheticsPackage(); + + const apiResponse1 = await testPrivateLocations.addFleetPolicy(testPolicyName); + const apiResponse2 = await testPrivateLocations.addFleetPolicy(`${testPolicyName}-2`); + testPolicyId1 = apiResponse1.body.item.id; + testPolicyId2 = apiResponse2.body.item.id; + privateLocations = await testPrivateLocations.setTestLocations([ + testPolicyId1, + testPolicyId2, + ]); + await supertest + .post(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ key: 'testGlobalParam', value: 'testGlobalParamValue' }) + .expect(200); + await supertest + .post(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ key: 'testGlobalParam2', value: 'testGlobalParamValue2' }) + .expect(200); + const spaces = (await kibanaServer.spaces.list()) as Array<{ + id: string; + }>; + for (let i = 0; i < spaces.length; i++) { + if (spaces[i].id !== 'default') await kibanaServer.spaces.delete(spaces[i].id); + } + }); + + beforeEach(async () => { + await kibanaServer.savedObjects.clean({ + types: ['synthetics-monitor', 'ingest-package-policies'], + }); + const formatLocations = (monitors: ProjectMonitorsRequest['monitors']) => { + return monitors.map((monitor) => { + return { + ...monitor, + /* cannot configure public locations for deployment agnostic tests + * they would fail in MKI and ESS due to missing mock location */ + locations: [], + privateLocations: [privateLocations[0].label], + }; + }); + }; + projectMonitors = setUniqueIds({ + monitors: formatLocations(getFixtureJson('project_browser_monitor').monitors), + }); + httpProjectMonitors = setUniqueIds({ + monitors: formatLocations(getFixtureJson('project_http_monitor').monitors), + }); + tcpProjectMonitors = setUniqueIds({ + monitors: formatLocations(getFixtureJson('project_tcp_monitor').monitors), + }); + icmpProjectMonitors = setUniqueIds({ + monitors: formatLocations(getFixtureJson('project_icmp_monitor').monitors), + }); + }); + + it('project monitors - returns 404 for non-existing spaces', async () => { + const project = `test-project-${uuidv4()}`; + await supertest + .put( + `/s/i_dont_exist${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(404); + }); + + it('project monitors - handles browser monitors', async () => { + const successfulMonitors = [projectMonitors.monitors[0]]; + const project = `test-project-${uuidv4()}`; + + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + expect(body).eql({ + updatedMonitors: [], + createdMonitors: successfulMonitors.map((monitor) => monitor.id), + failedMonitors: [], + }); + + for (const monitor of successfulMonitors) { + const journeyId = monitor.id; + const createdMonitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ filter: `${syntheticsMonitorType}.attributes.journey_id: ${journeyId}` }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const decryptedCreatedMonitor = await monitorTestService.getMonitor( + createdMonitorsResponse.body.monitors[0].config_id, + { + internal: true, + user: editorUser, + } + ); + + expect(decryptedCreatedMonitor.rawBody).to.eql({ + __ui: { + script_source: { + file_name: '', + is_generated_script: false, + }, + }, + config_id: decryptedCreatedMonitor.rawBody.config_id, + custom_heartbeat_id: `${journeyId}-${project}-default`, + enabled: true, + alert: { + status: { + enabled: true, + }, + tls: { + enabled: true, + }, + }, + 'filter_journeys.match': 'check if title is present', + 'filter_journeys.tags': [], + form_monitor_type: 'multistep', + ignore_https_errors: false, + journey_id: journeyId, + locations: [ + { + geo: { + lat: 0, + lon: 0, + }, + id: testPolicyId1, + agentPolicyId: testPolicyId1, + isServiceManaged: false, + label: privateLocations[0].label, + }, + ], + name: 'check if title is present', + namespace: 'default', + origin: 'project', + original_space: 'default', + playwright_options: '{"headless":true,"chromiumSandbox":false}', + playwright_text_assertion: '', + project_id: project, + params: '', + revision: 1, + schedule: { + number: '10', + unit: 'm', + }, + screenshots: 'on', + 'service.name': '', + synthetics_args: [], + tags: [], + throttling: PROFILES_MAP[PROFILE_VALUES_ENUM.DEFAULT], + 'ssl.certificate': '', + 'ssl.certificate_authorities': '', + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': 'full', + 'ssl.key': '', + 'ssl.key_passphrase': '', + 'source.inline.script': '', + 'source.project.content': + 'UEsDBBQACAAIAON5qVQAAAAAAAAAAAAAAAAfAAAAZXhhbXBsZXMvdG9kb3MvYmFzaWMuam91cm5leS50c22Q0WrDMAxF3/sVF7MHB0LMXlc6RvcN+wDPVWNviW0sdUsp/fe5SSiD7UFCWFfHujIGlpnkybwxFTZfoY/E3hsaLEtwhs9RPNWKDU12zAOxkXRIbN4tB9d9pFOJdO6EN2HMqQguWN9asFBuQVMmJ7jiWNII9fIXrbabdUYr58l9IhwhQQZCYORCTFFUC31Btj21NRc7Mq4Nds+4bDD/pNVgT9F52Jyr2Fa+g75LAPttg8yErk+S9ELpTmVotlVwnfNCuh2lepl3+JflUmSBJ3uggt1v9INW/lHNLKze9dJe1J3QJK8pSvWkm6aTtCet5puq+x63+AFQSwcIAPQ3VfcAAACcAQAAUEsBAi0DFAAIAAgA43mpVAD0N1X3AAAAnAEAAB8AAAAAAAAAAAAgAKSBAAAAAGV4YW1wbGVzL3RvZG9zL2Jhc2ljLmpvdXJuZXkudHNQSwUGAAAAAAEAAQBNAAAARAEAAAAA', + timeout: null, + type: 'browser', + 'url.port': null, + urls: '', + id: `${journeyId}-${project}-default`, + hash: 'ekrjelkjrelkjre', + max_attempts: 2, + updated_at: decryptedCreatedMonitor.rawBody.updated_at, + created_at: decryptedCreatedMonitor.rawBody.created_at, + labels: {}, + }); + } + }); + + it('project monitors - allows throttling false for browser monitors', async () => { + const successfulMonitors = [projectMonitors.monitors[0]]; + const project = `test-project-${uuidv4()}`; + + try { + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + ...projectMonitors, + monitors: [{ ...projectMonitors.monitors[0], throttling: false }], + }) + .expect(200); + expect(body).eql({ + updatedMonitors: [], + createdMonitors: successfulMonitors.map((monitor) => monitor.id), + failedMonitors: [], + }); + + for (const monitor of successfulMonitors) { + const journeyId = monitor.id; + const createdMonitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ filter: `${syntheticsMonitorType}.attributes.journey_id: ${journeyId}` }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const decryptedCreatedMonitor = await monitorTestService.getMonitor( + createdMonitorsResponse.body.monitors[0].config_id, + { user: editorUser } + ); + + expect(decryptedCreatedMonitor.body.throttling).to.eql({ + value: null, + id: 'no-throttling', + label: 'No throttling', + }); + } + } finally { + await Promise.all([ + successfulMonitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - handles http monitors', async () => { + const kibanaVersion = await kibanaServer.version.get(); + const successfulMonitors = [httpProjectMonitors.monitors[1]]; + const project = `test-project-${uuidv4()}`; + + try { + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(httpProjectMonitors) + .expect(200); + + expect(body).eql({ + updatedMonitors: [], + createdMonitors: successfulMonitors.map((monitor) => monitor.id), + failedMonitors: [ + { + id: httpProjectMonitors.monitors[0].id, + details: `\`http\` project monitors must have exactly one value for field \`urls\` in version \`${kibanaVersion}\`. Your monitor was not created or updated.`, + reason: 'Invalid Heartbeat configuration', + }, + { + id: httpProjectMonitors.monitors[0].id, + details: `The following Heartbeat options are not supported for ${httpProjectMonitors.monitors[0].type} project monitors in ${kibanaVersion}: check.response.body|unsupportedKey.nestedUnsupportedKey. You monitor was not created or updated.`, + reason: 'Unsupported Heartbeat option', + }, + ], + }); + + for (const monitor of successfulMonitors) { + const journeyId = monitor.id; + const isTLSEnabled = Object.keys(monitor).some((key) => key.includes('ssl')); + const createdMonitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ filter: `${syntheticsMonitorType}.attributes.journey_id: ${journeyId}` }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const { rawBody: decryptedCreatedMonitor } = await monitorTestService.getMonitor( + createdMonitorsResponse.body.monitors[0].config_id, + { + internal: true, + user: editorUser, + } + ); + + expect(decryptedCreatedMonitor).to.eql({ + __ui: { + is_tls_enabled: isTLSEnabled, + }, + 'check.request.method': 'POST', + 'check.response.status': ['200'], + config_id: decryptedCreatedMonitor.config_id, + custom_heartbeat_id: `${journeyId}-${project}-default`, + 'check.response.body.negative': [], + 'check.response.body.positive': ['${testLocal1}', 'saved'], + 'check.response.json': [ + { description: 'check status', expression: 'foo.bar == "myValue"' }, + ], + 'check.response.headers': {}, + proxy_url: '${testGlobalParam2}', + 'check.request.body': { + type: 'text', + value: '', + }, + params: JSON.stringify({ + testLocal1: 'testLocalParamsValue', + testGlobalParam2: 'testGlobalParamOverwrite', + }), + 'check.request.headers': { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + enabled: false, + alert: { + status: { + enabled: true, + }, + tls: { + enabled: true, + }, + }, + form_monitor_type: 'http', + journey_id: journeyId, + locations: [ + { + geo: { + lat: 0, + lon: 0, + }, + id: testPolicyId1, + agentPolicyId: testPolicyId1, + isServiceManaged: false, + label: privateLocations[0].label, + }, + ], + max_redirects: '0', + name: monitor.name, + namespace: 'default', + origin: 'project', + original_space: 'default', + project_id: project, + username: '', + password: '', + proxy_headers: {}, + 'response.include_body': 'always', + 'response.include_headers': false, + 'response.include_body_max_bytes': '900', + revision: 1, + schedule: { + number: '60', + unit: 'm', + }, + 'service.name': '', + 'ssl.certificate': '', + 'ssl.certificate_authorities': '', + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': isTLSEnabled ? 'strict' : 'full', + 'ssl.key': '', + 'ssl.key_passphrase': '', + tags: Array.isArray(monitor.tags) ? monitor.tags : monitor.tags?.split(','), + timeout: '80', + type: 'http', + urls: Array.isArray(monitor.urls) ? monitor.urls?.[0] : monitor.urls, + 'url.port': null, + id: `${journeyId}-${project}-default`, + hash: 'ekrjelkjrelkjre', + mode: 'any', + ipv6: true, + ipv4: true, + max_attempts: 2, + labels: {}, + updated_at: decryptedCreatedMonitor.updated_at, + created_at: decryptedCreatedMonitor.created_at, + }); + } + } finally { + await Promise.all([ + successfulMonitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - handles tcp monitors', async () => { + const successfulMonitors = [tcpProjectMonitors.monitors[0], tcpProjectMonitors.monitors[1]]; + const kibanaVersion = await kibanaServer.version.get(); + const project = `test-project-${uuidv4()}`; + + try { + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(tcpProjectMonitors) + .expect(200); + + expect(body).eql({ + updatedMonitors: [], + createdMonitors: successfulMonitors.map((monitor) => monitor.id), + failedMonitors: [ + { + id: tcpProjectMonitors.monitors[2].id, + details: `\`tcp\` project monitors must have exactly one value for field \`hosts\` in version \`${kibanaVersion}\`. Your monitor was not created or updated.`, + reason: 'Invalid Heartbeat configuration', + }, + { + id: tcpProjectMonitors.monitors[2].id, + details: `The following Heartbeat options are not supported for ${tcpProjectMonitors.monitors[0].type} project monitors in ${kibanaVersion}: ports|unsupportedKey.nestedUnsupportedKey. You monitor was not created or updated.`, + reason: 'Unsupported Heartbeat option', + }, + ], + }); + + for (const monitor of successfulMonitors) { + const journeyId = monitor.id; + const isTLSEnabled = Object.keys(monitor).some((key) => key.includes('ssl')); + const createdMonitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ filter: `${syntheticsMonitorType}.attributes.journey_id: ${journeyId}` }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const { rawBody: decryptedCreatedMonitor } = await monitorTestService.getMonitor( + createdMonitorsResponse.body.monitors[0].config_id, + { + internal: true, + user: editorUser, + } + ); + + expect(decryptedCreatedMonitor).to.eql({ + __ui: { + is_tls_enabled: isTLSEnabled, + }, + config_id: decryptedCreatedMonitor.config_id, + custom_heartbeat_id: `${journeyId}-${project}-default`, + 'check.receive': '', + 'check.send': '', + enabled: true, + alert: { + status: { + enabled: true, + }, + tls: { + enabled: true, + }, + }, + form_monitor_type: 'tcp', + journey_id: journeyId, + locations: [ + { + geo: { + lat: 0, + lon: 0, + }, + id: testPolicyId1, + agentPolicyId: testPolicyId1, + isServiceManaged: false, + label: privateLocations[0].label, + }, + ], + name: monitor.name, + namespace: 'default', + origin: 'project', + original_space: 'default', + project_id: project, + revision: 1, + schedule: { + number: '1', + unit: 'm', + }, + proxy_url: '', + proxy_use_local_resolver: false, + 'service.name': '', + 'ssl.certificate': '', + 'ssl.certificate_authorities': '', + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': isTLSEnabled ? 'strict' : 'full', + 'ssl.key': '', + 'ssl.key_passphrase': '', + tags: Array.isArray(monitor.tags) ? monitor.tags : monitor.tags?.split(','), + timeout: '16', + type: 'tcp', + hosts: Array.isArray(monitor.hosts) ? monitor.hosts?.[0] : monitor.hosts, + 'url.port': null, + urls: '', + id: `${journeyId}-${project}-default`, + hash: 'ekrjelkjrelkjre', + mode: 'any', + ipv6: true, + ipv4: true, + params: '', + max_attempts: 2, + labels: {}, + updated_at: decryptedCreatedMonitor.updated_at, + created_at: decryptedCreatedMonitor.created_at, + }); + } + } finally { + await Promise.all([ + successfulMonitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - handles icmp monitors', async () => { + const successfulMonitors = [icmpProjectMonitors.monitors[0], icmpProjectMonitors.monitors[1]]; + const kibanaVersion = await kibanaServer.version.get(); + const project = `test-project-${uuidv4()}`; + + try { + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(icmpProjectMonitors) + .expect(200); + expect(body).eql({ + updatedMonitors: [], + createdMonitors: successfulMonitors.map((monitor) => monitor.id), + failedMonitors: [ + { + id: icmpProjectMonitors.monitors[2].id, + details: `\`icmp\` project monitors must have exactly one value for field \`hosts\` in version \`${kibanaVersion}\`. Your monitor was not created or updated.`, + reason: 'Invalid Heartbeat configuration', + }, + { + id: icmpProjectMonitors.monitors[2].id, + details: `The following Heartbeat options are not supported for ${icmpProjectMonitors.monitors[0].type} project monitors in ${kibanaVersion}: unsupportedKey.nestedUnsupportedKey. You monitor was not created or updated.`, + reason: 'Unsupported Heartbeat option', + }, + ], + }); + + for (const monitor of successfulMonitors) { + const journeyId = monitor.id; + const createdMonitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ filter: `${syntheticsMonitorType}.attributes.journey_id: ${journeyId}` }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const { rawBody: decryptedCreatedMonitor } = await monitorTestService.getMonitor( + createdMonitorsResponse.body.monitors[0].config_id, + { + internal: true, + user: editorUser, + } + ); + + expect(decryptedCreatedMonitor).to.eql({ + config_id: decryptedCreatedMonitor.config_id, + custom_heartbeat_id: `${journeyId}-${project}-default`, + enabled: true, + alert: { + status: { + enabled: true, + }, + tls: { + enabled: true, + }, + }, + form_monitor_type: 'icmp', + journey_id: journeyId, + locations: [ + { + geo: { + lat: 0, + lon: 0, + }, + id: testPolicyId1, + agentPolicyId: testPolicyId1, + isServiceManaged: false, + label: privateLocations[0].label, + }, + ], + name: monitor.name, + namespace: 'default', + origin: 'project', + original_space: 'default', + project_id: project, + revision: 1, + schedule: { + number: '1', + unit: 'm', + }, + 'service.name': '', + tags: Array.isArray(monitor.tags) ? monitor.tags : monitor.tags?.split(','), + timeout: '16', + type: 'icmp', + hosts: Array.isArray(monitor.hosts) ? monitor.hosts?.[0] : monitor.hosts, + wait: + monitor.wait?.slice(-1) === 's' + ? monitor.wait?.slice(0, -1) + : `${parseInt(monitor.wait?.slice(0, -1) || '1', 10) * 60}`, + id: `${journeyId}-${project}-default`, + hash: 'ekrjelkjrelkjre', + mode: 'any', + ipv4: true, + ipv6: true, + params: '', + max_attempts: 2, + updated_at: decryptedCreatedMonitor.updated_at, + created_at: decryptedCreatedMonitor.created_at, + labels: {}, + }); + } + } finally { + await Promise.all([ + successfulMonitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - returns a list of successfully created monitors', async () => { + const project = `test-project-${uuidv4()}`; + try { + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + + expect(body).eql({ + updatedMonitors: [], + failedMonitors: [], + createdMonitors: projectMonitors.monitors.map((monitor) => monitor.id), + }); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - returns a list of successfully updated monitors', async () => { + const project = `test-project-${uuidv4()}`; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + + expect(body).eql({ + createdMonitors: [], + failedMonitors: [], + updatedMonitors: projectMonitors.monitors.map((monitor) => monitor.id), + }); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - validates monitor type', async () => { + const project = `test-project-${uuidv4()}`; + + try { + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: [{ ...projectMonitors.monitors[0], schedule: '3m', tags: '' }] }) + .expect(200); + + expect(body).eql({ + updatedMonitors: [], + failedMonitors: [ + { + details: 'Invalid value "3m" supplied to "schedule"', + id: projectMonitors.monitors[0].id, + payload: { + content: + 'UEsDBBQACAAIAON5qVQAAAAAAAAAAAAAAAAfAAAAZXhhbXBsZXMvdG9kb3MvYmFzaWMuam91cm5leS50c22Q0WrDMAxF3/sVF7MHB0LMXlc6RvcN+wDPVWNviW0sdUsp/fe5SSiD7UFCWFfHujIGlpnkybwxFTZfoY/E3hsaLEtwhs9RPNWKDU12zAOxkXRIbN4tB9d9pFOJdO6EN2HMqQguWN9asFBuQVMmJ7jiWNII9fIXrbabdUYr58l9IhwhQQZCYORCTFFUC31Btj21NRc7Mq4Nds+4bDD/pNVgT9F52Jyr2Fa+g75LAPttg8yErk+S9ELpTmVotlVwnfNCuh2lepl3+JflUmSBJ3uggt1v9INW/lHNLKze9dJe1J3QJK8pSvWkm6aTtCet5puq+x63+AFQSwcIAPQ3VfcAAACcAQAAUEsBAi0DFAAIAAgA43mpVAD0N1X3AAAAnAEAAB8AAAAAAAAAAAAgAKSBAAAAAGV4YW1wbGVzL3RvZG9zL2Jhc2ljLmpvdXJuZXkudHNQSwUGAAAAAAEAAQBNAAAARAEAAAAA', + filter: { + match: 'check if title is present', + }, + id: projectMonitors.monitors[0].id, + locations: [], + privateLocations: [privateLocations[0].label], + name: 'check if title is present', + params: {}, + playwrightOptions: { + chromiumSandbox: false, + headless: true, + }, + schedule: '3m', + tags: '', + throttling: { + download: 5, + latency: 20, + upload: 3, + }, + type: 'browser', + hash: 'ekrjelkjrelkjre', + max_attempts: 2, + }, + reason: "Couldn't save or update monitor because of an invalid configuration.", + }, + ], + createdMonitors: [], + }); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - saves space as data stream namespace', async () => { + const project = `test-project-${uuidv4()}`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + try { + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...projectMonitors.monitors[0], + privateLocations: [spaceScopedPrivateLocation.label], + }, + ], + }) + .expect(200); + // expect monitor not to have been deleted + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { monitors } = getResponse.body; + expect(monitors.length).eql(1); + expect(monitors[0][ConfigKey.NAMESPACE]).eql(formatKibanaNamespace(SPACE_ID)); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project, SPACE_ID); + } + }); + + it('project monitors - browser - handles custom namespace', async () => { + const project = `test-project-${uuidv4()}`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + const customNamespace = 'custom.namespace'; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + try { + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...projectMonitors.monitors[0], + namespace: customNamespace, + privateLocations: [spaceScopedPrivateLocation.label], + }, + ], + }) + .expect(200); + // expect monitor not to have been deleted + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .expect(200); + const { monitors } = getResponse.body; + expect(monitors.length).eql(1); + expect(monitors[0][ConfigKey.NAMESPACE]).eql(customNamespace); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project, SPACE_ID); + } + }); + + it('project monitors - lightweight - handles custom namespace', async () => { + const project = `test-project-${uuidv4()}`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + const customNamespace = 'custom.namespace'; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + try { + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...httpProjectMonitors.monitors[1], + namespace: customNamespace, + privateLocations: [spaceScopedPrivateLocation.label], + }, + ], + }) + .expect(200); + + // expect monitor not to have been deleted + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${httpProjectMonitors.monitors[1].id}`, + }) + .set('kbn-xsrf', 'true') + .expect(200); + const { monitors } = getResponse.body; + expect(monitors.length).eql(1); + expect(monitors[0][ConfigKey.NAMESPACE]).eql(customNamespace); + } finally { + await deleteMonitor(httpProjectMonitors.monitors[1].id, project, SPACE_ID); + } + }); + + it('project monitors - browser - handles custom namespace errors', async () => { + const project = `test-project-${uuidv4()}`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + const customNamespace = 'custom-namespace'; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + const { body } = await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...projectMonitors.monitors[0], + namespace: customNamespace, + privateLocations: [spaceScopedPrivateLocation.label], + }, + ], + }) + .expect(200); + // expect monitor not to have been deleted + expect(body).to.eql({ + createdMonitors: [], + failedMonitors: [ + { + details: 'Namespace contains invalid characters', + id: projectMonitors.monitors[0].id, + reason: 'Invalid namespace', + }, + ], + updatedMonitors: [], + }); + }); + + it('project monitors - lightweight - handles custom namespace errors', async () => { + const project = `test-project-${uuidv4()}`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + const customNamespace = 'custom-namespace'; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + const { body } = await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...httpProjectMonitors.monitors[1], + namespace: customNamespace, + privateLocations: [spaceScopedPrivateLocation.label], + }, + ], + }) + .expect(200); + // expect monitor not to have been deleted + expect(body).to.eql({ + createdMonitors: [], + failedMonitors: [ + { + details: 'Namespace contains invalid characters', + id: httpProjectMonitors.monitors[1].id, + reason: 'Invalid namespace', + }, + ], + updatedMonitors: [], + }); + }); + + it('project monitors - handles editing with spaces', async () => { + const project = `test-project-${uuidv4()}`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + try { + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: projectMonitors.monitors.map((monitor) => ({ + ...monitor, + privateLocations: [spaceScopedPrivateLocation.label], + })), + }) + .expect(200); + // expect monitor not to have been deleted + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set('kbn-xsrf', 'true') + .expect(200); + + const decryptedCreatedMonitor = await monitorTestService.getMonitor( + getResponse.body.monitors[0].config_id, + { internal: true, space: SPACE_ID, user: editorUser } + ); + const { monitors } = getResponse.body; + expect(monitors.length).eql(1); + expect(decryptedCreatedMonitor.body[ConfigKey.SOURCE_PROJECT_CONTENT]).eql( + projectMonitors.monitors[0].content + ); + + const updatedSource = 'updatedSource'; + // update monitor + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + ...projectMonitors, + monitors: [ + { + ...projectMonitors.monitors[0], + content: updatedSource, + privateLocations: [spaceScopedPrivateLocation.label], + }, + ], + }) + .expect(200); + const getResponseUpdated = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .expect(200); + const { monitors: monitorsUpdated } = getResponseUpdated.body; + expect(monitorsUpdated.length).eql(1); + + const decryptedUpdatedMonitor = await monitorTestService.getMonitor( + monitorsUpdated[0].config_id, + { internal: true, space: SPACE_ID, user: editorUser } + ); + expect(decryptedUpdatedMonitor.body[ConfigKey.SOURCE_PROJECT_CONTENT]).eql(updatedSource); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project, SPACE_ID); + } + }); + + it('project monitors - formats custom id appropriately', async () => { + const project = `test project ${uuidv4()}`; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + try { + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...projectMonitors.monitors[0], + privateLocations: [spaceScopedPrivateLocation.label], + }, + ], + }) + .expect(200); + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .expect(200); + const { monitors } = getResponse.body; + expect(monitors.length).eql(1); + expect(monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]).eql( + `${projectMonitors.monitors[0].id}-${project}-${SPACE_ID}` + ); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project, SPACE_ID); + } + }); + + it('project monitors - is able to decrypt monitor when updated after hydration', async () => { + const project = `test-project-${uuidv4()}`; + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + + const response = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const { monitors } = response.body; + + // update project monitor via push api + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + + expect(body).eql({ + updatedMonitors: [projectMonitors.monitors[0].id], + createdMonitors: [], + failedMonitors: [], + }); + + // ensure that monitor can still be decrypted + await monitorTestService.getMonitor(monitors[0]?.config_id, { user: editorUser }); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => deleteMonitor(monitor.id, project)), + ]); + } + }); + + it('project monitors - is able to enable and disable monitors', async () => { + const project = `test-project-${uuidv4()}`; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + ...projectMonitors, + monitors: [ + { + ...projectMonitors.monitors[0], + enabled: false, + }, + ], + }) + .expect(200); + const response = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { monitors } = response.body; + expect(monitors[0].enabled).eql(false); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - cannot update project monitors with read only privileges', async () => { + const project = `test-project-${uuidv4()}`; + + const secondMonitor = { + ...projectMonitors.monitors[0], + id: 'test-id-2', + privateLocations: [privateLocations[0].label], + }; + const testMonitors = [projectMonitors.monitors[0], secondMonitor]; + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(viewerUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: testMonitors }) + .expect(403); + }); + + it('creates integration policies for project monitors with private locations', async () => { + const project = `test-project-${uuidv4()}`; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + ...projectMonitors, + monitors: [ + { ...projectMonitors.monitors[0], privateLocations: [privateLocations[0].label] }, + ], + }) + .expect(200); + + const monitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + `${monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]}-${testPolicyId1}` + ); + expect(packagePolicy.name).eql( + `${projectMonitors.monitors[0].id}-${project}-default-${privateLocations[0].label}` + ); + expect(packagePolicy.policy_id).eql(testPolicyId1); + + const configId = monitorsResponse.body.monitors[0].config_id; + const id = monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]; + + comparePolicies( + packagePolicy, + getTestProjectSyntheticsPolicy({ + inputs: {}, + name: `check if title is present-${privateLocations[0].label}`, + id, + configId, + projectId: project, + locationId: testPolicyId1, + locationName: privateLocations[0].label, + }) + ); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project); + + const packagesResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + expect(packagesResponse.body.items.length).eql(0); + } + }); + + it('creates integration policies for project monitors with private locations - lightweight', async () => { + const project = `test-project-${uuidv4()}`; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + ...httpProjectMonitors, + monitors: [ + { + ...httpProjectMonitors.monitors[1], + 'check.request.body': '${testGlobalParam}', + privateLocations: [privateLocations[0].label], + }, + ], + }) + .expect(200); + + const monitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${httpProjectMonitors.monitors[1].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + `${monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]}-${testPolicyId1}` + ); + expect(packagePolicy.name).eql( + `${httpProjectMonitors.monitors[1].id}-${project}-default-${privateLocations[0].label}` + ); + expect(packagePolicy.policy_id).eql(testPolicyId1); + + const configId = monitorsResponse.body.monitors[0].config_id; + const id = monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]; + + comparePolicies( + packagePolicy, + getTestProjectSyntheticsPolicyLightweight({ + inputs: {}, + name: 'My Monitor 3', + id, + configId, + projectId: project, + locationName: privateLocations[0].label, + locationId: testPolicyId1, + }) + ); + } finally { + await deleteMonitor(httpProjectMonitors.monitors[1].id, project); + + const packagesResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + expect(packagesResponse.body.items.length).eql(0); + } + }); + + it('deletes integration policies for project monitors when private location is removed from the monitor - lightweight', async () => { + const project = `test-project-${uuidv4()}`; + + const monitorRequest = { + monitors: [ + { + ...httpProjectMonitors.monitors[1], + privateLocations: [privateLocations[0].label, privateLocations[1].label], + }, + ], + }; + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitorRequest) + .expect(200); + + const monitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${monitorRequest.monitors[0].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + `${monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]}-${testPolicyId1}` + ); + + expect(packagePolicy.policy_id).eql(testPolicyId1); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { ...monitorRequest.monitors[0], privateLocations: [privateLocations[1].label] }, + ], + }) + .expect(200); + + const apiResponsePolicy2 = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy2 = apiResponsePolicy2.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + `${monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]}-${testPolicyId1}` + ); + + expect(packagePolicy2).eql(undefined); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project); + } + }); + + it('deletes integration policies for project monitors when private location is removed from the monitor', async () => { + const project = `test-project-${uuidv4()}`; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...projectMonitors.monitors[0], + privateLocations: [privateLocations[0].label, privateLocations[1].label], + }, + ], + }) + .expect(200); + + const monitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + `${monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]}-${testPolicyId1}` + ); + + expect(packagePolicy.policy_id).eql(testPolicyId1); + + const configId = monitorsResponse.body.monitors[0].config_id; + const id = monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]; + + comparePolicies( + packagePolicy, + getTestProjectSyntheticsPolicy({ + inputs: {}, + name: `check if title is present-${privateLocations[0].label}`, + id, + configId, + projectId: project, + locationId: testPolicyId1, + locationName: privateLocations[0].label, + }) + ); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { ...projectMonitors.monitors[0], privateLocations: [privateLocations[1].label] }, + ], + }) + .expect(200); + + const apiResponsePolicy2 = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy2 = apiResponsePolicy2.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + `${monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]}-${testPolicyId1}` + ); + + expect(packagePolicy2).eql(undefined); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project); + + const apiResponsePolicy2 = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + expect(apiResponsePolicy2.body.items.length).eql(0); + } + }); + + it('handles updating package policies when project monitors are updated', async () => { + const project = `test-project-${uuidv4()}`; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...projectMonitors.monitors[0], + privateLocations: [privateLocations[0].label], + }, + ], + }); + + const monitorsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const configId = monitorsResponse.body.monitors[0].id; + const id = monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]; + const policyId = `${id}-${testPolicyId1}`; + + const packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => pkgPolicy.id === policyId + ); + + expect(packagePolicy.policy_id).eql(testPolicyId1); + + comparePolicies( + packagePolicy, + getTestProjectSyntheticsPolicy({ + inputs: {}, + name: `check if title is present-${privateLocations[0].label}`, + id, + configId, + projectId: project, + locationId: testPolicyId1, + locationName: privateLocations[0].label, + }) + ); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...projectMonitors.monitors[0], + namespace: 'custom_namespace', + privateLocations: [privateLocations[0].label], + enabled: false, + }, + ], + }); + + const apiResponsePolicy2 = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const configId2 = monitorsResponse.body.monitors[0].id; + const id2 = monitorsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID]; + const policyId2 = `${id}-${testPolicyId1}`; + + const packagePolicy2 = apiResponsePolicy2.body.items.find( + (pkgPolicy: PackagePolicy) => pkgPolicy.id === policyId2 + ); + + comparePolicies( + packagePolicy2, + getTestProjectSyntheticsPolicy({ + inputs: { enabled: { value: false, type: 'bool' } }, + name: `check if title is present-${privateLocations[0].label}`, + id: id2, + configId: configId2, + projectId: project, + locationId: testPolicyId1, + locationName: privateLocations[0].label, + namespace: 'custom_namespace', + }) + ); + } finally { + await deleteMonitor(projectMonitors.monitors[0].id, project); + + const apiResponsePolicy2 = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + expect(apiResponsePolicy2.body.items.length).eql(0); + } + }); + + // this test is skipped because it would fail in MKI due to public locations not being available + it.skip('handles location formatting for both private and public locations', async () => { + const project = `test-project-${uuidv4()}`; + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { ...projectMonitors.monitors[0], privateLocations: [privateLocations[0].label] }, + ], + }); + + const updatedMonitorsResponse = await Promise.all( + projectMonitors.monitors.map((monitor) => { + return supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${monitor.id}`, + internal: true, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + }) + ); + + updatedMonitorsResponse.forEach( + (response: { + body: { monitors: Array<{ locations: Array }> }; + }) => { + expect(response.body.monitors[0].locations).eql([ + { + id: 'dev', + label: 'Dev Service', + geo: { lat: 0, lon: 0 }, + isServiceManaged: true, + }, + { + label: privateLocations[0].label, + isServiceManaged: false, + agentPolicyId: testPolicyId1, + id: testPolicyId1, + geo: { + lat: 0, + lon: 0, + }, + }, + ]); + } + ); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('only allows 250 requests at a time', async () => { + const project = `test-project-${uuidv4()}`; + const monitors = []; + for (let i = 0; i < 251; i++) { + monitors.push({ + ...projectMonitors.monitors[0], + id: `test-id-${i}`, + name: `test-name-${i}`, + }); + } + + try { + const { + body: { message }, + } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors, + }) + .expect(400); + + expect(message).to.eql(REQUEST_TOO_LARGE); + } finally { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ ...projectMonitors, project }); + } + }); + + it('project monitors - cannot update a monitor of one type to another type', async () => { + const project = `test-project-${uuidv4()}`; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + const { body } = await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [{ ...httpProjectMonitors.monitors[1], id: projectMonitors.monitors[0].id }], + }) + .expect(200); + expect(body).eql({ + createdMonitors: [], + updatedMonitors: [], + failedMonitors: [ + { + details: `Monitor ${projectMonitors.monitors[0].id} of type browser cannot be updated to type http. Please delete the monitor first and try again.`, + payload: { + 'check.request': { + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + method: 'POST', + }, + 'check.response': { + body: { + positive: ['${testLocal1}', 'saved'], + }, + status: [200], + json: [{ description: 'check status', expression: 'foo.bar == "myValue"' }], + }, + enabled: false, + hash: 'ekrjelkjrelkjre', + id: projectMonitors.monitors[0].id, + locations: [], + privateLocations: [privateLocations[0].label], + name: 'My Monitor 3', + response: { + include_body: 'always', + include_body_max_bytes: 900, + }, + 'response.include_headers': false, + schedule: 60, + timeout: '80s', + type: 'http', + tags: 'tag2,tag2', + urls: ['http://localhost:9200'], + 'ssl.verification_mode': 'strict', + params: { + testGlobalParam2: 'testGlobalParamOverwrite', + testLocal1: 'testLocalParamsValue', + }, + proxy_url: '${testGlobalParam2}', + max_attempts: 2, + }, + reason: 'Cannot update monitor to different type.', + }, + ], + }); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => { + return deleteMonitor(monitor.id, project); + }), + ]); + } + }); + + it('project monitors - handles alert config without adding arbitrary fields', async () => { + const project = `test-project-${uuidv4()}`; + const testAlert = { + status: { + enabled: false, + doesnotexit: true, + tls: { + enabled: true, + }, + }, + }; + try { + await supertest + .put( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...httpProjectMonitors.monitors[1], + alert: testAlert, + }, + ], + }) + .expect(200); + const getResponse = await supertest + .get(`${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${httpProjectMonitors.monitors[1].id}`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { monitors } = getResponse.body; + expect(monitors.length).eql(1); + expect(monitors[0][ConfigKey.ALERT_CONFIG]).eql({ + status: { + enabled: testAlert.status.enabled, + }, + tls: { + enabled: true, + }, + }); + } finally { + await deleteMonitor(httpProjectMonitors.monitors[1].id, project); + } + }); + + it('project monitors - handles sending invalid public location', async () => { + const project = `test-project-${uuidv4()}`; + try { + const response = await supertest + .put( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...httpProjectMonitors.monitors[1], + locations: ['does not exist'], + }, + ], + }) + .expect(200); + rawExpect(response.body).toEqual({ + createdMonitors: [], + failedMonitors: [ + { + details: rawExpect.stringContaining( + "Invalid locations specified. Elastic managed Location(s) 'does not exist' not found." + ), + id: httpProjectMonitors.monitors[1].id, + payload: { + 'check.request': { + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + method: 'POST', + }, + 'check.response': { + body: { + positive: ['${testLocal1}', 'saved'], + }, + status: [200], + json: [ + { + description: 'check status', + expression: 'foo.bar == "myValue"', + }, + ], + }, + enabled: false, + hash: 'ekrjelkjrelkjre', + id: httpProjectMonitors.monitors[1].id, + locations: ['does not exist'], + privateLocations: [privateLocations[0].label], + name: 'My Monitor 3', + response: { + include_body: 'always', + include_body_max_bytes: 900, + }, + 'response.include_headers': false, + schedule: 60, + 'ssl.verification_mode': 'strict', + tags: 'tag2,tag2', + timeout: '80s', + type: 'http', + urls: ['http://localhost:9200'], + params: { + testGlobalParam2: 'testGlobalParamOverwrite', + testLocal1: 'testLocalParamsValue', + }, + proxy_url: '${testGlobalParam2}', + max_attempts: 2, + }, + reason: "Couldn't save or update monitor because of an invalid configuration.", + }, + ], + updatedMonitors: [], + }); + } finally { + await deleteMonitor(httpProjectMonitors.monitors[1].id, project); + } + }); + + it('project monitors - handles sending invalid private locations', async () => { + const project = `test-project-${uuidv4()}`; + try { + const response = await supertest + .put( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...httpProjectMonitors.monitors[1], + locations: [], + privateLocations: ['does not exist'], + }, + ], + }) + .expect(200); + expect(response.body).eql({ + createdMonitors: [], + failedMonitors: [ + { + details: `Invalid locations specified. Private Location(s) 'does not exist' not found. Available private locations are '${privateLocations[0].label}|${privateLocations[1].label}'`, + id: httpProjectMonitors.monitors[1].id, + payload: { + 'check.request': { + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + method: 'POST', + }, + 'check.response': { + body: { + positive: ['${testLocal1}', 'saved'], + }, + status: [200], + json: [ + { + description: 'check status', + expression: 'foo.bar == "myValue"', + }, + ], + }, + enabled: false, + hash: 'ekrjelkjrelkjre', + id: httpProjectMonitors.monitors[1].id, + privateLocations: ['does not exist'], + name: 'My Monitor 3', + response: { + include_body: 'always', + include_body_max_bytes: 900, + }, + 'response.include_headers': false, + schedule: 60, + 'ssl.verification_mode': 'strict', + tags: 'tag2,tag2', + timeout: '80s', + type: 'http', + urls: ['http://localhost:9200'], + locations: [], + params: { + testGlobalParam2: 'testGlobalParamOverwrite', + testLocal1: 'testLocalParamsValue', + }, + proxy_url: '${testGlobalParam2}', + max_attempts: 2, + }, + reason: "Couldn't save or update monitor because of an invalid configuration.", + }, + ], + updatedMonitors: [], + }); + } finally { + await deleteMonitor(httpProjectMonitors.monitors[1].id, project); + } + }); + + it('project monitors - handles no locations specified', async () => { + const project = `test-project-${uuidv4()}`; + try { + const response = await supertest + .put( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: [ + { + ...httpProjectMonitors.monitors[1], + privateLocations: [], + locations: [], + }, + ], + }) + .expect(200); + expect(response.body).eql({ + createdMonitors: [], + failedMonitors: [ + { + details: 'You must add at least one location or private location to this monitor.', + id: httpProjectMonitors.monitors[1].id, + payload: { + 'check.request': { + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + method: 'POST', + }, + 'check.response': { + body: { + positive: ['${testLocal1}', 'saved'], + }, + status: [200], + json: [ + { + description: 'check status', + expression: 'foo.bar == "myValue"', + }, + ], + }, + enabled: false, + hash: 'ekrjelkjrelkjre', + id: httpProjectMonitors.monitors[1].id, + privateLocations: [], + name: 'My Monitor 3', + response: { + include_body: 'always', + include_body_max_bytes: 900, + }, + 'response.include_headers': false, + schedule: 60, + 'ssl.verification_mode': 'strict', + tags: 'tag2,tag2', + timeout: '80s', + type: 'http', + urls: ['http://localhost:9200'], + locations: [], + params: { + testGlobalParam2: 'testGlobalParamOverwrite', + testLocal1: 'testLocalParamsValue', + }, + proxy_url: '${testGlobalParam2}', + max_attempts: 2, + }, + reason: "Couldn't save or update monitor because of an invalid configuration.", + }, + ], + updatedMonitors: [], + }); + } finally { + await deleteMonitor(httpProjectMonitors.monitors[1].id, project); + } + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_project_private_location.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_project_private_location.ts new file mode 100644 index 0000000000000..a8f98dac2bf61 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_project_private_location.ts @@ -0,0 +1,162 @@ +/* + * 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 { v4 as uuidv4 } from 'uuid'; +import expect from '@kbn/expect'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { ProjectMonitorsRequest } from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('AddProjectMonitorsPrivateLocations', function () { + const supertest = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + + let projectMonitors: ProjectMonitorsRequest; + let editorUser: RoleCredentials; + + const monitorTestService = new SyntheticsMonitorTestService(getService); + + let testPolicyId; + let testPrivateLocationName: string; + const testPolicyName = `Fleet test server policy ${uuidv4()}`; + const testPrivateLocationsService = new PrivateLocationTestService(getService); + + const setUniqueIds = (request: ProjectMonitorsRequest) => { + return { + ...request, + monitors: request.monitors.map((monitor) => ({ ...monitor, id: uuidv4() })), + }; + }; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + await testPrivateLocationsService.installSyntheticsPackage(); + + const apiResponse = await testPrivateLocationsService.addFleetPolicy(testPolicyName); + testPolicyId = apiResponse.body.item.id; + const testPrivateLocations = await testPrivateLocationsService.setTestLocations([ + testPolicyId, + ]); + testPrivateLocationName = testPrivateLocations[0].label; + }); + + after(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + }); + + beforeEach(() => { + projectMonitors = setUniqueIds({ + monitors: getFixtureJson('project_browser_monitor').monitors.map( + (monitor: Record) => { + return { + ...monitor, + name: `test-monitor-${uuidv4()}`, + type: 'browser', + locations: [], + privateLocations: [testPrivateLocationName], + }; + } + ), + }); + }); + + it('project monitors - returns a failed monitor when creating integration fails', async () => { + const project = `test-project-${uuidv4()}`; + + const secondMonitor = { + ...projectMonitors.monitors[0], + id: 'test-id-2', + privateLocations: ['Test private location 7'], + }; + const testMonitors = [ + projectMonitors.monitors[0], + { + ...secondMonitor, + name: '!@#$%^&*()_++[\\-\\]- wow name', + }, + ]; + try { + const { body, status } = await monitorTestService.addProjectMonitors( + project, + testMonitors, + editorUser + ); + expect(status).eql(200); + expect(body.createdMonitors.length).eql(1); + expect(body.failedMonitors[0].reason).eql( + "Couldn't save or update monitor because of an invalid configuration." + ); + } finally { + await Promise.all([ + testMonitors.map((monitor) => { + return monitorTestService.deleteMonitorByJourney( + monitor.id, + project, + 'default', + editorUser + ); + }), + ]); + } + }); + + it('project monitors - returns a failed monitor when editing integration fails', async () => { + const project = `test-project-${uuidv4()}`; + + const secondMonitor = { + ...projectMonitors.monitors[0], + id: 'test-id-2', + privateLocations: [testPrivateLocationName], + }; + const testMonitors = [projectMonitors.monitors[0], secondMonitor]; + const { body, status: status0 } = await monitorTestService.addProjectMonitors( + project, + testMonitors, + editorUser + ); + expect(status0).eql(200); + + expect(body.createdMonitors.length).eql(2); + const { body: editedBody, status: editedStatus } = + await monitorTestService.addProjectMonitors(project, testMonitors, editorUser); + expect(editedStatus).eql(200); + + expect(editedBody.createdMonitors.length).eql(0); + expect(editedBody.updatedMonitors.length).eql(2); + + testMonitors[1].name = '!@#$%^&*()_++[\\-\\]- wow name'; + testMonitors[1].privateLocations = ['Test private location 8']; + + const { body: editedBodyError, status } = await monitorTestService.addProjectMonitors( + project, + testMonitors, + editorUser + ); + expect(status).eql(200); + expect(editedBodyError.createdMonitors.length).eql(0); + expect(editedBodyError.updatedMonitors.length).eql(1); + expect(editedBodyError.failedMonitors.length).eql(1); + expect(editedBodyError.failedMonitors[0].details).eql( + `Invalid locations specified. Private Location(s) 'Test private location 8' not found. Available private locations are '${testPrivateLocationName}'` + ); + expect(editedBodyError.failedMonitors[0].reason).eql( + "Couldn't save or update monitor because of an invalid configuration." + ); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_public_api.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_public_api.ts new file mode 100644 index 0000000000000..2c41d5c58f298 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_monitor_public_api.ts @@ -0,0 +1,280 @@ +/* + * 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 expect from '@kbn/expect'; +import rawExpect from 'expect'; +import { v4 as uuidv4 } from 'uuid'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { PrivateLocation } from '@kbn/synthetics-plugin/common/runtime_types'; +import { DEFAULT_FIELDS } from '@kbn/synthetics-plugin/common/constants/monitor_defaults'; +import { LOCATION_REQUIRED_ERROR } from '@kbn/synthetics-plugin/server/routes/monitor_cruds/monitor_validation'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { addMonitorAPIHelper, omitMonitorKeys } from './create_monitor'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('AddNewMonitorsPublicAPI', function () { + const supertestAPI = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + let editorUser: RoleCredentials; + let privateLocation: PrivateLocation; + const privateLocationTestService = new PrivateLocationTestService(getService); + + async function addMonitorAPI(monitor: any, statusCode: number = 200) { + return await addMonitorAPIHelper(supertestAPI, monitor, statusCode, editorUser, samlAuth); + } + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + privateLocation = await privateLocationTestService.addTestPrivateLocation(); + }); + + after(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + }); + + it('should return error for empty monitor', async function () { + const { message } = await addMonitorAPI({}, 400); + expect(message).eql('Invalid value "undefined" supplied to "type"'); + }); + + it('return error if no location specified', async () => { + const { message } = await addMonitorAPI({ type: 'http' }, 400); + expect(message).eql(LOCATION_REQUIRED_ERROR); + }); + + it('return error if invalid location specified', async () => { + const { message } = await addMonitorAPI({ type: 'http', locations: ['mars'] }, 400); + rawExpect(message).toContain( + "Invalid locations specified. Elastic managed Location(s) 'mars' not found." + ); + }); + + it('return error if invalid private location specified', async () => { + const { message } = await addMonitorAPI( + { + type: 'http', + locations: ['mars'], + privateLocations: ['moon'], + }, + 400 + ); + expect(message).eql('Invalid monitor key(s) for http type: privateLocations'); + + const result = await addMonitorAPI( + { + type: 'http', + locations: ['mars'], + private_locations: ['moon'], + }, + 400 + ); + rawExpect(result.message).toContain("Private Location(s) 'moon' not found."); + }); + + it('return error for origin project', async () => { + const { message } = await addMonitorAPI( + { + type: 'http', + locations: ['dev'], + url: 'https://www.google.com', + origin: 'project', + }, + 400 + ); + expect(message).eql('Unsupported origin type project, only ui type is supported via API.'); + }); + + describe('HTTP Monitor', () => { + const defaultFields = DEFAULT_FIELDS.http; + it('return error empty http', async () => { + const { message, attributes } = await addMonitorAPI( + { + type: 'http', + locations: [], + private_locations: [privateLocation.id], + }, + 400 + ); + + expect(message).eql('Monitor is not a valid monitor of type http'); + expect(attributes).eql({ + details: + 'Invalid field "url", must be a non-empty string. | Invalid value "undefined" supplied to "name"', + payload: { type: 'http' }, + }); + }); + + it('base http monitor', async () => { + const monitor = { + type: 'http', + private_locations: [privateLocation.id], + url: 'https://www.google.com', + }; + const { body: result } = await addMonitorAPI(monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation], + name: 'https://www.google.com', + }) + ); + }); + + it('can enable retries', async () => { + const name = `test name ${uuidv4()}`; + const monitor = { + type: 'http', + private_locations: [privateLocation.id], + url: 'https://www.google.com', + name, + retest_on_failure: true, + }; + const { body: result } = await addMonitorAPI(monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation], + name, + retest_on_failure: true, + }) + ); + }); + + it('can disable retries', async () => { + const name = `test name ${uuidv4()}`; + const monitor = { + type: 'http', + private_locations: [privateLocation.id], + url: 'https://www.google.com', + name, + retest_on_failure: false, + }; + const { body: result } = await addMonitorAPI(monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation], + name, + max_attempts: 1, + retest_on_failure: undefined, // this key is not part of the SO and should not be defined + }) + ); + }); + }); + + describe('TCP Monitor', () => { + const defaultFields = DEFAULT_FIELDS.tcp; + + it('base tcp monitor', async () => { + const monitor = { + type: 'tcp', + private_locations: [privateLocation.id], + host: 'https://www.google.com/', + }; + const { body: result } = await addMonitorAPI(monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation], + name: 'https://www.google.com/', + }) + ); + }); + }); + + describe('ICMP Monitor', () => { + const defaultFields = DEFAULT_FIELDS.icmp; + + it('base icmp monitor', async () => { + const monitor = { + type: 'icmp', + private_locations: [privateLocation.id], + host: 'https://8.8.8.8', + }; + const { body: result } = await addMonitorAPI(monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation], + name: 'https://8.8.8.8', + }) + ); + }); + }); + + describe('Browser Monitor', () => { + const defaultFields = DEFAULT_FIELDS.browser; + + it('empty browser monitor', async () => { + const monitor = { + type: 'browser', + private_locations: [privateLocation.id], + name: 'simple journey', + }; + const result = await addMonitorAPI(monitor, 400); + + expect(result).eql({ + statusCode: 400, + error: 'Bad Request', + message: 'Monitor is not a valid monitor of type browser', + attributes: { + details: 'source.inline.script: Script is required for browser monitor.', + payload: { type: 'browser', name: 'simple journey' }, + }, + }); + }); + + it('base browser monitor', async () => { + const monitor = { + type: 'browser', + private_locations: [privateLocation.id], + name: 'simple journey', + 'source.inline.script': 'step("simple journey", async () => {});', + }; + const { body: result } = await addMonitorAPI(monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation], + }) + ); + }); + + it('base browser monitor with inline_script', async () => { + const monitor = { + type: 'browser', + private_locations: [privateLocation.id], + name: 'simple journey inline_script', + inline_script: 'step("simple journey", async () => {});', + }; + const { body: result } = await addMonitorAPI(monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation], + }) + ); + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_update_params.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_update_params.ts new file mode 100644 index 0000000000000..4f4068008cd40 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/create_update_params.ts @@ -0,0 +1,385 @@ +/* + * 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 { v4 as uuidv4 } from 'uuid'; +import { pick } from 'lodash'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import expect from '@kbn/expect'; +import { syntheticsParamType } from '@kbn/synthetics-plugin/common/types/saved_objects'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +function assertHas(actual: unknown, expected: object) { + expect(pick(actual, Object.keys(expected))).eql(expected); +} + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe.skip('AddEditParams', function () { + const samlAuth = getService('samlAuth'); + const supertest = getService('supertestWithoutAuth'); + let adminRoleAuthc: RoleCredentials; + + const kServer = getService('kibanaServer'); + const testParam = { + key: 'test', + value: 'test', + }; + const testPrivateLocations = new PrivateLocationTestService(getService); + + before(async () => { + await testPrivateLocations.installSyntheticsPackage(); + adminRoleAuthc = await samlAuth.createM2mApiKeyWithRoleScope('admin'); + await kServer.savedObjects.clean({ types: [syntheticsParamType] }); + }); + + it('adds a test param', async () => { + await supertest + .post(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(testParam) + .expect(200); + + const getResponse = await supertest + .get(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + assertHas(getResponse.body[0], testParam); + }); + + it('handles tags and description', async () => { + const tagsAndDescription = { + tags: ['a tag'], + description: 'test description', + }; + const testParam2 = { + ...testParam, + ...tagsAndDescription, + }; + await supertest + .post(SYNTHETICS_API_URLS.PARAMS) + .send(testParam2) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const getResponse = await supertest + .get(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + assertHas(getResponse.body[0], testParam2); + }); + + it('handles editing a param', async () => { + const expectedUpdatedParam = { + key: 'testUpdated', + value: 'testUpdated', + tags: ['a tag'], + description: 'test description', + }; + + await supertest + .post(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(testParam) + .expect(200); + + const getResponse = await supertest + .get(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const param = getResponse.body[0]; + assertHas(param, testParam); + + await supertest + .put(SYNTHETICS_API_URLS.PARAMS + '/' + param.id) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({}) + .expect(400); + + await supertest + .put(SYNTHETICS_API_URLS.PARAMS + '/' + param.id) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const updatedGetResponse = await supertest + .get(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const actualUpdatedParam = updatedGetResponse.body[0]; + assertHas(actualUpdatedParam, expectedUpdatedParam); + }); + + it('handles partial editing a param', async () => { + const newParam = { + key: 'testUpdated', + value: 'testUpdated', + tags: ['a tag'], + description: 'test description', + }; + + const response = await supertest + .post(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(newParam) + .expect(200); + const paramId = response.body.id; + + const getResponse = await supertest + .get(SYNTHETICS_API_URLS.PARAMS + '/' + paramId) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + assertHas(getResponse.body, newParam); + + await supertest + .put(SYNTHETICS_API_URLS.PARAMS + '/' + paramId) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + key: 'testUpdated', + }) + .expect(200); + + await supertest + .put(SYNTHETICS_API_URLS.PARAMS + '/' + paramId) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + key: 'testUpdatedAgain', + value: 'testUpdatedAgain', + }) + .expect(200); + + const updatedGetResponse = await supertest + .get(SYNTHETICS_API_URLS.PARAMS + '/' + paramId) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + assertHas(updatedGetResponse.body, { + ...newParam, + key: 'testUpdatedAgain', + value: 'testUpdatedAgain', + }); + }); + + it('handles spaces', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + + await kServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + await supertest + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(testParam) + .expect(200); + + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(getResponse.body[0].namespaces).eql([SPACE_ID]); + assertHas(getResponse.body[0], testParam); + }); + + it('handles editing a param in spaces', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + + await kServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + const expectedUpdatedParam = { + key: 'testUpdated', + value: 'testUpdated', + tags: ['a tag'], + description: 'test description', + }; + + await supertest + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(testParam) + .expect(200); + + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const param = getResponse.body[0]; + assertHas(param, testParam); + + await supertest + .put(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}/${param.id}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(expectedUpdatedParam) + .expect(200); + + const updatedGetResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const actualUpdatedParam = updatedGetResponse.body[0]; + assertHas(actualUpdatedParam, expectedUpdatedParam); + }); + + it('does not allow editing a param in created in one space in a different space', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + const SPACE_ID_TWO = `test-space-${uuidv4()}-two`; + const SPACE_NAME_TWO = `test-space-name ${uuidv4()} 2`; + + await kServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + await kServer.spaces.create({ id: SPACE_ID_TWO, name: SPACE_NAME_TWO }); + + const updatedParam = { + key: 'testUpdated', + value: 'testUpdated', + tags: ['a tag'], + description: 'test description', + }; + + await supertest + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(testParam) + .expect(200); + + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const param = getResponse.body[0]; + assertHas(param, testParam); + + // space does exist so get request should be 200 + await supertest + .get(`/s/${SPACE_ID_TWO}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + await supertest + .put(`/s/${SPACE_ID_TWO}${SYNTHETICS_API_URLS.PARAMS}/${param.id}}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(updatedParam) + .expect(404); + + const updatedGetResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const actualUpdatedParam = updatedGetResponse.body[0]; + assertHas(actualUpdatedParam, testParam); + }); + + it('handles invalid spaces', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + + await kServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + await supertest + .post(`/s/doesnotexist${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(testParam) + .expect(404); + }); + + it('handles editing with invalid spaces', async () => { + const updatedParam = { + key: 'testUpdated', + value: 'testUpdated', + tags: ['a tag'], + description: 'test description', + }; + + await supertest + .post(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(testParam) + .expect(200); + const getResponse = await supertest + .get(SYNTHETICS_API_URLS.PARAMS) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const param = getResponse.body[0]; + assertHas(param, testParam); + + await supertest + .put(`/s/doesnotexist${SYNTHETICS_API_URLS.PARAMS}/${param.id}}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(updatedParam) + .expect(404); + }); + + it('handles share across spaces', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + + await kServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + await supertest + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ ...testParam, share_across_spaces: true }) + .expect(200); + + const getResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(getResponse.body[0].namespaces).eql(['*']); + assertHas(getResponse.body[0], testParam); + }); + + it('should not return values for non admin user', async () => { + const resp = await supertest + .get(`${SYNTHETICS_API_URLS.PARAMS}`) + .set(adminRoleAuthc.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + const params = resp.body; + expect(params.length).to.eql(6); + params.forEach((param: any) => { + expect(param.value).to.eql(undefined); + expect(param.key).to.not.empty(); + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/delete_monitor.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/delete_monitor.ts new file mode 100644 index 0000000000000..3e1582ea3ec2b --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/delete_monitor.ts @@ -0,0 +1,164 @@ +/* + * 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 { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + EncryptedSyntheticsSavedMonitor, + HTTPFields, + MonitorFields, + PrivateLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import expect from '@kbn/expect'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('DeleteMonitorRoute', function () { + const supertest = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + + const testPrivateLocations = new PrivateLocationTestService(getService); + const monitorTestService = new SyntheticsMonitorTestService(getService); + + let _httpMonitorJson: HTTPFields; + let httpMonitorJson: HTTPFields; + let editorUser: RoleCredentials; + let testPolicyId = ''; + let privateLocations: PrivateLocation[]; + + const saveMonitor = async ( + monitor: MonitorFields + ): Promise => { + const res = await supertest + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor); + + expect(res.status).to.eql(200, JSON.stringify(res.body)); + + return res.body; + }; + + const deleteMonitor = async (monitorId?: string | string[], statusCode = 200) => { + return monitorTestService.deleteMonitor(editorUser, monitorId, statusCode, 'default'); + }; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + await testPrivateLocations.installSyntheticsPackage(); + const testPolicyName = 'Fleet test server policy' + Date.now(); + const apiResponse = await testPrivateLocations.addFleetPolicy(testPolicyName); + testPolicyId = apiResponse.body.item.id; + privateLocations = await testPrivateLocations.setTestLocations([testPolicyId]); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + + _httpMonitorJson = getFixtureJson('http_monitor'); + }); + + beforeEach(() => { + httpMonitorJson = { + ..._httpMonitorJson, + locations: [privateLocations[0]], + }; + }); + + it('deletes monitor by id', async () => { + const { id: monitorId } = await saveMonitor(httpMonitorJson as MonitorFields); + + const deleteResponse = await deleteMonitor(monitorId); + + expect(deleteResponse.body).eql([{ id: monitorId, deleted: true }]); + + // Hit get endpoint and expect 404 as well + await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(404); + }); + + it('deletes monitor by param id', async () => { + const { id: monitorId } = await saveMonitor(httpMonitorJson as MonitorFields); + + const deleteResponse = await monitorTestService.deleteMonitorByIdParam( + editorUser, + monitorId, + 200, + 'default' + ); + + expect(deleteResponse.body).eql([{ id: monitorId, deleted: true }]); + + // Hit get endpoint and expect 404 as well + await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(404); + }); + + it('throws error if both body and param are missing', async () => { + await supertest + .delete(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .send() + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(400); + }); + + it('deletes multiple monitors by id', async () => { + const { id: monitorId } = await saveMonitor(httpMonitorJson as MonitorFields); + const { id: monitorId2 } = await saveMonitor({ + ...httpMonitorJson, + name: 'another -2', + } as MonitorFields); + + const deleteResponse = await deleteMonitor([monitorId2, monitorId]); + + expect( + deleteResponse.body.sort((a: { id: string }, b: { id: string }) => (a.id > b.id ? 1 : -1)) + ).eql( + [ + { id: monitorId2, deleted: true }, + { id: monitorId, deleted: true }, + ].sort((a, b) => (a.id > b.id ? 1 : -1)) + ); + + // Hit get endpoint and expect 404 as well + await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(404); + }); + + it('returns 404 if monitor id is not found', async () => { + const invalidMonitorId = 'invalid-id'; + const expected404Message = `Monitor id ${invalidMonitorId} not found!`; + + const deleteResponse = await deleteMonitor(invalidMonitorId); + + expect(deleteResponse.status).eql(200); + expect(deleteResponse.body).eql([ + { + id: invalidMonitorId, + deleted: false, + error: expected404Message, + }, + ]); + }); + + it('validates empty monitor id', async () => { + await deleteMonitor(undefined, 400); + await deleteMonitor([], 400); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/delete_monitor_project.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/delete_monitor_project.ts new file mode 100644 index 0000000000000..e2eecb91cb154 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/delete_monitor_project.ts @@ -0,0 +1,521 @@ +/* + * 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 { v4 as uuidv4 } from 'uuid'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + ConfigKey, + ProjectMonitorsRequest, + PrivateLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { REQUEST_TOO_LARGE } from '@kbn/synthetics-plugin/server/routes/monitor_cruds/delete_monitor_project'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { PackagePolicy } from '@kbn/fleet-plugin/common'; +import expect from '@kbn/expect'; +import { syntheticsMonitorType } from '@kbn/synthetics-plugin/common/types/saved_objects'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('DeleteProjectMonitors', function () { + const supertest = getService('supertestWithoutAuth'); + const supertestWithAuth = getService('supertest'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + + let projectMonitors: ProjectMonitorsRequest; + let editorUser: RoleCredentials; + let privateLocation: PrivateLocation; + + const testPrivateLocationsService = new PrivateLocationTestService(getService); + + const setUniqueIdsAndLocations = ( + request: ProjectMonitorsRequest, + privateLocations: PrivateLocation[] = [] + ) => { + return { + ...request, + monitors: request.monitors.map((monitor) => ({ + ...monitor, + id: uuidv4(), + locations: [], + privateLocations: privateLocations.map((location) => location.label), + })), + }; + }; + + before(async () => { + await testPrivateLocationsService.installSyntheticsPackage(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + }); + + beforeEach(async () => { + await kibanaServer.savedObjects.clean({ types: ['synthetics-private-location'] }); + privateLocation = await testPrivateLocationsService.addTestPrivateLocation(); + projectMonitors = setUniqueIdsAndLocations(getFixtureJson('project_browser_monitor'), [ + privateLocation, + ]); + }); + + it('only allows 250 requests at a time', async () => { + const project = 'test-brower-suite'; + const monitors = []; + for (let i = 0; i < 251; i++) { + monitors.push({ + ...projectMonitors.monitors[0], + id: `test-id-${i}`, + name: `test-name-${i}`, + }); + } + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitors.slice(0, 250) }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitors.slice(250, 251) }) + .expect(200); + + const savedObjectsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total } = savedObjectsResponse.body; + expect(total).to.eql(251); + + const response = await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(400); + const { message } = response.body; + expect(message).to.eql(REQUEST_TOO_LARGE); + } finally { + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(0, 250) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(250, 251) }) + .expect(200); + } + }); + + it('project monitors - handles browser monitors', async () => { + const monitorToDelete = 'second-monitor-id'; + const monitors = [ + projectMonitors.monitors[0], + { + ...projectMonitors.monitors[0], + id: monitorToDelete, + }, + ]; + const project = 'test-brower-suite'; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors }) + .expect(200); + + const savedObjectsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total } = savedObjectsResponse.body; + expect(total).to.eql(2); + const monitorsToDelete = [monitorToDelete]; + + const response = await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + + expect(response.body.deleted_monitors).to.eql(monitorsToDelete); + + const responseAfterDeletion = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total: totalAfterDeletion } = responseAfterDeletion.body; + expect(totalAfterDeletion).to.eql(1); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + } + }); + + it('does not delete monitors from a different project', async () => { + const monitors = [...projectMonitors.monitors]; + const project = 'test-brower-suite'; + const secondProject = 'second-project'; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + secondProject + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors }) + .expect(200); + + const savedObjectsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const secondProjectSavedObjectResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${secondProject}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total } = savedObjectsResponse.body; + const { total: secondProjectTotal } = secondProjectSavedObjectResponse.body; + expect(total).to.eql(monitors.length); + expect(secondProjectTotal).to.eql(monitors.length); + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + const response = await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + + expect(response.body.deleted_monitors).to.eql(monitorsToDelete); + + const responseAfterDeletion = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const secondResponseAfterDeletion = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${secondProject}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total: totalAfterDeletion } = responseAfterDeletion.body; + const { total: secondProjectTotalAfterDeletion } = secondResponseAfterDeletion.body; + expect(totalAfterDeletion).to.eql(0); + expect(secondProjectTotalAfterDeletion).to.eql(monitors.length); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace( + '{projectName}', + secondProject + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + } + }); + + it('does not delete monitors from the same project in a different space project', async () => { + const monitors = [...projectMonitors.monitors]; + const project = 'test-brower-suite'; + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await testPrivateLocationsService.addTestPrivateLocation( + SPACE_ID + ); + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.map((monitor) => ({ + ...monitor, + privateLocations: [privateLocation.label], + })), + }) + .expect(200); + + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.map((monitor) => ({ + ...monitor, + privateLocations: [spaceScopedPrivateLocation.label], + })), + }) + .expect(200); + + const savedObjectsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const secondSpaceProjectSavedObjectResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total } = savedObjectsResponse.body; + const { total: secondSpaceTotal } = secondSpaceProjectSavedObjectResponse.body; + + expect(total).to.eql(monitors.length); + expect(secondSpaceTotal).to.eql(monitors.length); + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + const response = await supertest + .delete( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + + expect(response.body.deleted_monitors).to.eql(monitorsToDelete); + + const responseAfterDeletion = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const secondSpaceResponseAfterDeletion = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total: totalAfterDeletion } = responseAfterDeletion.body; + const { total: secondProjectTotalAfterDeletion } = secondSpaceResponseAfterDeletion.body; + expect(totalAfterDeletion).to.eql(monitors.length); + expect(secondProjectTotalAfterDeletion).to.eql(0); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + } + }); + + it('deletes integration policies when project monitors are deleted', async () => { + const monitors = [ + { ...projectMonitors.monitors[0], privateLocations: [privateLocation.label] }, + ]; + const project = 'test-brower-suite'; + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors }) + .expect(200); + + const savedObjectsResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total } = savedObjectsResponse.body; + expect(total).to.eql(monitors.length); + const apiResponsePolicy = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponsePolicy.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + savedObjectsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID] + + '-' + + privateLocation.id + ); + expect(packagePolicy.policy_id).to.be(privateLocation.id); + + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + const response = await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + + expect(response.body.deleted_monitors).to.eql(monitorsToDelete); + + const responseAfterDeletion = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.project_id: "${project}"`, + }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const { total: totalAfterDeletion } = responseAfterDeletion.body; + expect(totalAfterDeletion).to.eql(0); + const apiResponsePolicy2 = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy2 = apiResponsePolicy2.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === + savedObjectsResponse.body.monitors[0][ConfigKey.CUSTOM_HEARTBEAT_ID] + + '-' + + privateLocation.id + ); + expect(packagePolicy2).to.be(undefined); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete }) + .expect(200); + } + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/edit_monitor.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/edit_monitor.ts new file mode 100644 index 0000000000000..755fdad3aa196 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/edit_monitor.ts @@ -0,0 +1,370 @@ +/* + * 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 moment from 'moment'; +import { v4 as uuidv4 } from 'uuid'; +import { omit } from 'lodash'; +import { + ConfigKey, + EncryptedSyntheticsSavedMonitor, + HTTPFields, + MonitorFields, + PrivateLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import expect from '@kbn/expect'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { omitResponseTimestamps, omitEmptyValues } from './helpers/monitor'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('EditMonitorAPI', function () { + const supertestWithAuth = getService('supertest'); + const supertest = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + + const testPrivateLocations = new PrivateLocationTestService(getService); + const monitorTestService = new SyntheticsMonitorTestService(getService); + + let _httpMonitorJson: HTTPFields; + let httpMonitorJson: HTTPFields; + let testPolicyId = ''; + let editorUser: RoleCredentials; + let privateLocations: PrivateLocation[]; + + const saveMonitor = async (monitor: MonitorFields, spaceId?: string) => { + const apiURL = spaceId + ? `/s/${spaceId}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}` + : SYNTHETICS_API_URLS.SYNTHETICS_MONITORS; + const res = await supertest + .post(apiURL + '?internal=true') + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + + const { url, created_at: createdAt, updated_at: updatedAt, ...rest } = res.body; + + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + return rest as EncryptedSyntheticsSavedMonitor; + }; + + const editMonitor = async (modifiedMonitor: MonitorFields, monitorId: string) => { + const res = await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId + '?internal=true') + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(modifiedMonitor); + + expect(res.status).eql(200, JSON.stringify(res.body)); + + const { created_at: createdAt, updated_at: updatedAt } = res.body; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + return omit(res.body, ['created_at', 'updated_at']); + }; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + await supertestWithAuth.post('/api/fleet/setup').set('kbn-xsrf', 'true').send().expect(200); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const testPolicyName = 'Fleet test server policy' + Date.now(); + const apiResponse = await testPrivateLocations.addFleetPolicy(testPolicyName); + testPolicyId = apiResponse.body.item.id; + privateLocations = await testPrivateLocations.setTestLocations([testPolicyId]); + _httpMonitorJson = getFixtureJson('http_monitor'); + }); + + after(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + }); + + beforeEach(() => { + httpMonitorJson = { ..._httpMonitorJson, locations: [privateLocations[0]] }; + }); + + it('edits the monitor', async () => { + const newMonitor = httpMonitorJson; + + const savedMonitor = await saveMonitor(newMonitor as MonitorFields); + const monitorId = savedMonitor[ConfigKey.CONFIG_ID]; + + expect(omitResponseTimestamps(savedMonitor)).eql( + omitEmptyValues({ + ...newMonitor, + [ConfigKey.MONITOR_QUERY_ID]: monitorId, + [ConfigKey.CONFIG_ID]: monitorId, + }) + ); + + const updates: Partial = { + [ConfigKey.URLS]: 'https://modified-host.com', + [ConfigKey.NAME]: 'Modified name', + [ConfigKey.LOCATIONS]: [privateLocations[0]], + [ConfigKey.REQUEST_HEADERS_CHECK]: { + sampleHeader2: 'sampleValue2', + }, + [ConfigKey.METADATA]: { + script_source: { + is_generated_script: false, + file_name: 'test-file.name', + }, + }, + }; + + const modifiedMonitor = { + ...savedMonitor, + ...updates, + [ConfigKey.METADATA]: { + ...newMonitor[ConfigKey.METADATA], + ...updates[ConfigKey.METADATA], + }, + } as any; + + const editResponse = await editMonitor(modifiedMonitor, monitorId); + + expect(editResponse).eql( + omitEmptyValues({ + ...modifiedMonitor, + revision: 2, + }) + ); + }); + + it('strips unknown keys from monitor edits', async () => { + const newMonitor = { ...httpMonitorJson, name: 'yet another' }; + + const savedMonitor = await saveMonitor(newMonitor as MonitorFields); + const monitorId = savedMonitor[ConfigKey.CONFIG_ID]; + + const { created_at: createdAt, updated_at: updatedAt } = savedMonitor; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(omitResponseTimestamps(savedMonitor)).eql( + omitEmptyValues({ + ...newMonitor, + [ConfigKey.MONITOR_QUERY_ID]: monitorId, + [ConfigKey.CONFIG_ID]: monitorId, + }) + ); + + const updates: Partial = { + [ConfigKey.URLS]: 'https://modified-host.com', + [ConfigKey.NAME]: 'Modified name like that', + [ConfigKey.LOCATIONS]: [privateLocations[0]], + [ConfigKey.REQUEST_HEADERS_CHECK]: { + sampleHeader2: 'sampleValue2', + }, + [ConfigKey.METADATA]: { + script_source: { + is_generated_script: false, + file_name: 'test-file.name', + }, + }, + unknownkey: 'unknownvalue', + } as Partial; + + const modifiedMonitor = omit( + { + ...updates, + [ConfigKey.METADATA]: { + ...newMonitor[ConfigKey.METADATA], + ...updates[ConfigKey.METADATA], + }, + }, + ['unknownkey'] + ); + + const editResponse = await editMonitor(modifiedMonitor as MonitorFields, monitorId); + + expect(editResponse).eql( + omitEmptyValues({ + ...savedMonitor, + ...modifiedMonitor, + revision: 2, + }) + ); + expect(editResponse).not.to.have.keys('unknownkey'); + }); + + it('returns 404 if monitor id is not present', async () => { + const invalidMonitorId = 'invalid-id'; + const expected404Message = `Monitor id ${invalidMonitorId} not found!`; + + const editResponse = await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + invalidMonitorId) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(httpMonitorJson) + .expect(404); + + expect(editResponse.body.message).eql(expected404Message); + }); + + it('returns bad request if payload is invalid for HTTP monitor', async () => { + const { id: monitorId, ...savedMonitor } = await saveMonitor( + httpMonitorJson as MonitorFields + ); + + // Delete a required property to make payload invalid + const toUpdate = { ...savedMonitor, 'check.request.headers': null }; + + const apiResponse = await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(toUpdate); + + expect(apiResponse.status).eql(400); + }); + + it('returns bad request if monitor type is invalid', async () => { + const { id: monitorId, ...savedMonitor } = await saveMonitor({ + ...httpMonitorJson, + name: 'test monitor - 11', + } as MonitorFields); + + const toUpdate = { ...savedMonitor, type: 'invalid-data-steam' }; + + const apiResponse = await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(toUpdate); + + expect(apiResponse.status).eql(400); + expect(apiResponse.body.message).eql( + 'Monitor type cannot be changed from http to invalid-data-steam.' + ); + }); + + it('sets config hash to empty string on edits', async () => { + const newMonitor = httpMonitorJson; + const configHash = 'djrhefje'; + + const savedMonitor = await saveMonitor({ + ...(newMonitor as MonitorFields), + [ConfigKey.CONFIG_HASH]: configHash, + name: 'test monitor - 12', + }); + const monitorId = savedMonitor[ConfigKey.CONFIG_ID]; + const { created_at: createdAt, updated_at: updatedAt } = savedMonitor; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(savedMonitor).eql( + omitEmptyValues({ + ...newMonitor, + [ConfigKey.CONFIG_ID]: monitorId, + [ConfigKey.MONITOR_QUERY_ID]: monitorId, + name: 'test monitor - 12', + hash: configHash, + }) + ); + + const updates: Partial = { + [ConfigKey.URLS]: 'https://modified-host.com', + name: 'test monitor - 12', + } as Partial; + + const modifiedMonitor = { + ...newMonitor, + ...updates, + [ConfigKey.METADATA]: { + ...newMonitor[ConfigKey.METADATA], + ...updates[ConfigKey.METADATA], + }, + }; + + const editResponse = await editMonitor(modifiedMonitor as MonitorFields, monitorId); + + expect(editResponse).eql( + omitEmptyValues({ + ...modifiedMonitor, + [ConfigKey.CONFIG_ID]: monitorId, + [ConfigKey.MONITOR_QUERY_ID]: monitorId, + [ConfigKey.CONFIG_HASH]: '', + revision: 2, + }) + ); + expect(editResponse).not.to.have.keys('unknownkey'); + }); + + it('handles spaces', async () => { + const name = 'Monitor with private location'; + + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + const spaceScopedPrivateLocation = await testPrivateLocations.addTestPrivateLocation( + SPACE_ID + ); + const newMonitor = { + name, + type: 'http', + urls: 'https://elastic.co', + locations: [spaceScopedPrivateLocation], + }; + + const savedMonitor = await saveMonitor(newMonitor as MonitorFields, SPACE_ID); + + const monitorId = savedMonitor[ConfigKey.CONFIG_ID]; + const toUpdate = { + ...savedMonitor, + urls: 'https://google.com', + }; + await supertest + .put(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}/${monitorId}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(toUpdate) + .expect(200); + + const updatedResponse = await monitorTestService.getMonitor(monitorId, { + space: SPACE_ID, + internal: true, + user: editorUser, + }); + + // ensure monitor was updated + expect(updatedResponse.body.urls).eql(toUpdate.urls); + + // update a second time, ensures AAD was not corrupted + const toUpdate2 = { + ...savedMonitor, + urls: 'https://google.com', + }; + + await supertest + .put(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}/${monitorId}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(toUpdate2) + .expect(200); + + const updatedResponse2 = await monitorTestService.getMonitor(monitorId, { + space: SPACE_ID, + internal: true, + user: editorUser, + }); + + // ensure monitor was updated + expect(updatedResponse2.body.urls).eql(toUpdate2.urls); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/edit_monitor_public_api.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/edit_monitor_public_api.ts new file mode 100644 index 0000000000000..bb659523a5132 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/edit_monitor_public_api.ts @@ -0,0 +1,301 @@ +/* + * 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 expect from '@kbn/expect'; +import rawExpect from 'expect'; +import { v4 as uuidv4 } from 'uuid'; +import { omit } from 'lodash'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { DEFAULT_FIELDS } from '@kbn/synthetics-plugin/common/constants/monitor_defaults'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import moment from 'moment'; +import { PrivateLocation } from '@kbn/synthetics-plugin/common/runtime_types'; +import { LOCATION_REQUIRED_ERROR } from '@kbn/synthetics-plugin/server/routes/monitor_cruds/monitor_validation'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { addMonitorAPIHelper, omitMonitorKeys } from './create_monitor'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('EditMonitorsPublicAPI', function () { + const supertestAPI = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + const testPrivateLocations = new PrivateLocationTestService(getService); + let editorUser: RoleCredentials; + let privateLocation1: PrivateLocation; + let privateLocation2: PrivateLocation; + + async function addMonitorAPI(monitor: any, statusCode: number = 200) { + return await addMonitorAPIHelper(supertestAPI, monitor, statusCode, editorUser, samlAuth); + } + + async function editMonitorAPI(id: string, monitor: any, statusCode: number = 200) { + return await editMonitorAPIHelper(id, monitor, statusCode); + } + + async function editMonitorAPIHelper(monitorId: string, monitor: any, statusCode = 200) { + const result = await supertestAPI + .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + `/${monitorId}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor); + + expect(result.status).eql(statusCode, JSON.stringify(result.body)); + + if (statusCode === 200) { + const { + created_at: createdAt, + updated_at: updatedAt, + id, + config_id: configId, + } = result.body; + expect(id).not.empty(); + expect(configId).not.empty(); + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + return { + rawBody: result.body, + body: { + ...omit(result.body, [ + 'created_at', + 'updated_at', + 'id', + 'config_id', + 'form_monitor_type', + ]), + }, + }; + } + return result.body; + } + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + await testPrivateLocations.installSyntheticsPackage(); + privateLocation1 = await testPrivateLocations.addTestPrivateLocation(); + privateLocation2 = await testPrivateLocations.addTestPrivateLocation(); + }); + + after(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + }); + let monitorId = 'test-id'; + + const defaultFields = DEFAULT_FIELDS.http; + + it('adds test monitor', async () => { + const monitor = { + type: 'http', + private_locations: [privateLocation1.id], + url: 'https://www.google.com', + }; + const { body: result, rawBody } = await addMonitorAPI(monitor); + monitorId = rawBody.id; + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation1], + name: 'https://www.google.com', + }) + ); + }); + + it('should return error for empty monitor', async function () { + const errMessage = 'Monitor must be a non-empty object'; + const testCases = [{}, null, undefined, false, [], '']; + for (const testCase of testCases) { + const { message } = await editMonitorAPI(monitorId, testCase, 400); + expect(message).eql(errMessage); + } + }); + + it('return error if type is being changed', async () => { + const { message } = await editMonitorAPI(monitorId, { type: 'tcp' }, 400); + expect(message).eql('Monitor type cannot be changed from http to tcp.'); + }); + + it('return error if monitor not found', async () => { + const { message } = await editMonitorAPI('invalid-monitor-id', { type: 'tcp' }, 404); + expect(message).eql('Monitor id invalid-monitor-id not found!'); + }); + + it('return error if invalid location specified', async () => { + const { message } = await editMonitorAPI( + monitorId, + { type: 'http', locations: ['mars'] }, + 400 + ); + rawExpect(message).toContain( + "Invalid locations specified. Elastic managed Location(s) 'mars' not found." + ); + }); + + it('return error if invalid private location specified', async () => { + const { message } = await editMonitorAPI( + monitorId, + { + type: 'http', + locations: ['mars'], + privateLocations: ['moon'], + }, + 400 + ); + expect(message).eql('Invalid monitor key(s) for http type: privateLocations'); + + const result = await editMonitorAPI( + monitorId, + { + type: 'http', + locations: ['mars'], + private_locations: ['moon'], + }, + 400 + ); + rawExpect(result.message).toContain("Private Location(s) 'moon' not found."); + }); + + it('throws an error if empty locations', async () => { + const monitor = { + locations: [], + private_locations: [], + }; + const { message } = await editMonitorAPI(monitorId, monitor, 400); + + expect(message).eql(LOCATION_REQUIRED_ERROR); + }); + + it('cannot change origin type', async () => { + const monitor = { + origin: 'project', + }; + const result = await editMonitorAPI(monitorId, monitor, 400); + + expect(result).eql({ + statusCode: 400, + error: 'Bad Request', + message: 'Unsupported origin type project, only ui type is supported via API.', + attributes: { + details: 'Unsupported origin type project, only ui type is supported via API.', + payload: { origin: 'project' }, + }, + }); + }); + + const updates: any = {}; + + it('can change name of monitor', async () => { + updates.name = `updated name ${uuidv4()}`; + const monitor = { + name: updates.name, + }; + const { body: result } = await editMonitorAPI(monitorId, monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + ...updates, + locations: [privateLocation1], + revision: 2, + url: 'https://www.google.com', + }) + ); + }); + + it('prevents duplicate name of monitor', async () => { + const name = `test name ${uuidv4()}`; + const monitor = { + name, + type: 'http', + private_locations: [privateLocation1.id], + url: 'https://www.google.com', + }; + // create one monitor with one name + await addMonitorAPI(monitor); + // create another monitor with a different name + const { body: result, rawBody } = await addMonitorAPI({ + ...monitor, + name: 'test name', + }); + const newMonitorId = rawBody.id; + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...monitor, + locations: [privateLocation1], + name: 'test name', + }) + ); + + const editResult = await editMonitorAPI( + newMonitorId, + { + name, + }, + 400 + ); + + expect(editResult).eql({ + statusCode: 400, + error: 'Bad Request', + message: `Monitor name must be unique, "${name}" already exists.`, + attributes: { + details: `Monitor name must be unique, "${name}" already exists.`, + }, + }); + }); + + it('can add a second private location to existing monitor', async () => { + const monitor = { + private_locations: [privateLocation1.id, privateLocation2.id], + }; + + const { body: result } = await editMonitorAPI(monitorId, monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...updates, + revision: 3, + url: 'https://www.google.com', + locations: [privateLocation1, privateLocation2], + }) + ); + }); + + it('can remove private location from existing monitor', async () => { + const monitor = { + private_locations: [privateLocation2.id], + }; + + const { body: result } = await editMonitorAPI(monitorId, monitor); + + expect(result).eql( + omitMonitorKeys({ + ...defaultFields, + ...updates, + revision: 4, + url: 'https://www.google.com', + locations: [privateLocation2], + }) + ); + }); + + it('can not remove all locations', async () => { + const monitor = { + locations: [], + private_locations: [], + }; + + const { message } = await editMonitorAPI(monitorId, monitor, 400); + + expect(message).eql(LOCATION_REQUIRED_ERROR); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/enable_default_alerting.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/enable_default_alerting.ts new file mode 100644 index 0000000000000..231195be88e44 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/enable_default_alerting.ts @@ -0,0 +1,330 @@ +/* + * 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 expect from '@kbn/expect'; +import rawExpect from 'expect'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { omit } from 'lodash'; +import { HTTPFields, PrivateLocation } from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { DYNAMIC_SETTINGS_DEFAULTS } from '@kbn/synthetics-plugin/common/constants/settings_defaults'; + +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { addMonitorAPIHelper, omitMonitorKeys } from './create_monitor'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('EnableDefaultAlerting', function () { + const supertest = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const retry = getService('retry'); + const samlAuth = getService('samlAuth'); + + let _httpMonitorJson: HTTPFields; + let httpMonitorJson: HTTPFields; + let editorUser: RoleCredentials; + let privateLocation: PrivateLocation; + + const privateLocationTestService = new PrivateLocationTestService(getService); + + const addMonitorAPI = async (monitor: any, statusCode = 200) => { + return addMonitorAPIHelper(supertest, monitor, statusCode, editorUser, samlAuth); + }; + + after(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + }); + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + _httpMonitorJson = getFixtureJson('http_monitor'); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + }); + + beforeEach(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + privateLocation = await privateLocationTestService.addTestPrivateLocation(); + httpMonitorJson = { + ..._httpMonitorJson, + locations: [privateLocation], + }; + await supertest + .put(SYNTHETICS_API_URLS.DYNAMIC_SETTINGS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(DYNAMIC_SETTINGS_DEFAULTS) + .expect(200); + }); + + it('returns the created alerted when called', async () => { + const apiResponse = await supertest + .post(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + const omitFields = [ + 'apiKeyOwner', + 'createdBy', + 'updatedBy', + 'id', + 'updatedAt', + 'createdAt', + 'scheduledTaskId', + 'executionStatus', + 'monitoring', + 'nextRun', + 'lastRun', + 'snoozeSchedule', + 'viewInAppRelativeUrl', + ]; + + const statusRule = apiResponse.body.statusRule; + const tlsRule = apiResponse.body.tlsRule; + + rawExpect(omit(statusRule, omitFields)).toEqual( + omit(defaultAlertRules.statusRule, omitFields) + ); + rawExpect(omit(tlsRule, omitFields)).toEqual(omit(defaultAlertRules.tlsRule, omitFields)); + }); + + it('enables alert when new monitor is added', async () => { + const newMonitor = httpMonitorJson; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + expect(apiResponse).eql(omitMonitorKeys({ ...newMonitor, spaceId: 'default' })); + + await retry.tryForTime(30 * 1000, async () => { + const res = await supertest + .get(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(res.body.statusRule.ruleTypeId).eql('xpack.synthetics.alerts.monitorStatus'); + expect(res.body.tlsRule.ruleTypeId).eql('xpack.synthetics.alerts.tls'); + }); + }); + + it('deletes (and recreates) the default rule when settings are updated', async () => { + const newMonitor = httpMonitorJson; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + expect(apiResponse).eql(omitMonitorKeys(newMonitor)); + + await retry.tryForTime(30 * 1000, async () => { + const res = await supertest + .get(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(res.body.statusRule.ruleTypeId).eql('xpack.synthetics.alerts.monitorStatus'); + expect(res.body.tlsRule.ruleTypeId).eql('xpack.synthetics.alerts.tls'); + }); + const settings = await supertest + .put(SYNTHETICS_API_URLS.DYNAMIC_SETTINGS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + defaultStatusRuleEnabled: false, + defaultTLSRuleEnabled: false, + }); + + expect(settings.body.defaultStatusRuleEnabled).eql(false); + expect(settings.body.defaultTLSRuleEnabled).eql(false); + + await supertest + .put(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + await retry.tryForTime(30 * 1000, async () => { + const res = await supertest + .get(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(res.body.statusRule).eql(null); + expect(res.body.tlsRule).eql(null); + }); + + const settings2 = await supertest + .put(SYNTHETICS_API_URLS.DYNAMIC_SETTINGS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + defaultStatusRuleEnabled: true, + defaultTLSRuleEnabled: true, + }) + .expect(200); + + expect(settings2.body.defaultStatusRuleEnabled).eql(true); + expect(settings2.body.defaultTLSRuleEnabled).eql(true); + + await supertest + .put(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + await retry.tryForTime(30 * 1000, async () => { + const res = await supertest + .get(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(res.body.statusRule.ruleTypeId).eql('xpack.synthetics.alerts.monitorStatus'); + expect(res.body.tlsRule.ruleTypeId).eql('xpack.synthetics.alerts.tls'); + }); + }); + + it('doesnt throw errors when rule has already been deleted', async () => { + const newMonitor = httpMonitorJson; + + const { body: apiResponse } = await addMonitorAPI(newMonitor); + + expect(apiResponse).eql(omitMonitorKeys(newMonitor)); + + await retry.tryForTime(30 * 1000, async () => { + const res = await supertest + .get(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(res.body.statusRule.ruleTypeId).eql('xpack.synthetics.alerts.monitorStatus'); + expect(res.body.tlsRule.ruleTypeId).eql('xpack.synthetics.alerts.tls'); + }); + + const settings = await supertest + .put(SYNTHETICS_API_URLS.DYNAMIC_SETTINGS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + defaultStatusRuleEnabled: false, + defaultTLSRuleEnabled: false, + }) + .expect(200); + + expect(settings.body.defaultStatusRuleEnabled).eql(false); + expect(settings.body.defaultTLSRuleEnabled).eql(false); + + await supertest + .put(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + await retry.tryForTime(30 * 1000, async () => { + const res = await supertest + .get(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(res.body.statusRule).eql(null); + expect(res.body.tlsRule).eql(null); + }); + + // call api again with the same settings, make sure its 200 + await supertest + .put(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + await retry.tryForTime(30 * 1000, async () => { + const res = await supertest + .get(SYNTHETICS_API_URLS.ENABLE_DEFAULT_ALERTING) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(res.body.statusRule).eql(null); + expect(res.body.tlsRule).eql(null); + }); + }); + }); +} + +const defaultAlertRules = { + statusRule: { + id: '574e82f0-1672-11ee-8e7d-c985c0ef6c2e', + notifyWhen: null, + consumer: 'uptime', + alertTypeId: 'xpack.synthetics.alerts.monitorStatus', + tags: ['SYNTHETICS_DEFAULT_ALERT'], + name: 'Synthetics status internal rule', + enabled: true, + throttle: null, + apiKeyOwner: 'any', + apiKeyCreatedByUser: true, + createdBy: 'any', + updatedBy: 'any', + muteAll: false, + mutedInstanceIds: [], + revision: 0, + running: false, + schedule: { interval: '1m' }, + actions: [], + params: {}, + snoozeSchedule: [], + updatedAt: '2023-06-29T11:44:44.488Z', + createdAt: '2023-06-29T11:44:44.488Z', + scheduledTaskId: '574e82f0-1672-11ee-8e7d-c985c0ef6c2e', + executionStatus: { + status: 'ok', + lastExecutionDate: '2023-06-29T11:47:55.331Z', + lastDuration: 64, + }, + ruleTypeId: 'xpack.synthetics.alerts.monitorStatus', + viewInAppRelativeUrl: '/app/observability/alerts/rules/574e82f0-1672-11ee-8e7d-c985c0ef6c2e', + }, + tlsRule: { + id: '574eaa00-1672-11ee-8e7d-c985c0ef6c2e', + notifyWhen: null, + consumer: 'uptime', + alertTypeId: 'xpack.synthetics.alerts.tls', + tags: ['SYNTHETICS_DEFAULT_ALERT'], + name: 'Synthetics internal TLS rule', + enabled: true, + throttle: null, + apiKeyOwner: 'elastic_admin', + apiKeyCreatedByUser: true, + createdBy: 'elastic_admin', + updatedBy: 'elastic_admin', + muteAll: false, + mutedInstanceIds: [], + revision: 0, + running: false, + schedule: { interval: '1m' }, + actions: [], + params: {}, + snoozeSchedule: [], + updatedAt: '2023-06-29T11:44:44.489Z', + createdAt: '2023-06-29T11:44:44.489Z', + scheduledTaskId: '574eaa00-1672-11ee-8e7d-c985c0ef6c2e', + executionStatus: { + status: 'ok', + lastExecutionDate: '2023-06-29T11:44:46.214Z', + lastDuration: 193, + }, + ruleTypeId: 'xpack.synthetics.alerts.tls', + viewInAppRelativeUrl: '/app/observability/alerts/rules/574e82f0-1672-11ee-8e7d-c985c0ef6c2e', + }, +}; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/browser_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/browser_monitor.json new file mode 100644 index 0000000000000..1cb2d39685bf2 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/browser_monitor.json @@ -0,0 +1,60 @@ +{ + "type": "browser", + "enabled": true, + "alert": { + "status": { + "enabled": true + } + }, + "journey_id": "", + "project_id": "", + "schedule": { + "number": "3", + "unit": "m" + }, + "service.name": "", + "config_id": "", + "tags": ["cookie-test", "browser"], + "timeout": "16", + "__ui": { + "script_source": { + "is_generated_script": false, + "file_name": "" + }, + "is_tls_enabled": false + }, + "source.inline.script": "step(\"Visit /users api route\", async () => {\\n const response = await page.goto('https://nextjs-test-synthetics.vercel.app/api/users');\\n expect(response.status()).toEqual(200);\\n});", + "source.project.content": "", + "params": "", + "screenshots": "on", + "synthetics_args": [], + "filter_journeys.match": "", + "filter_journeys.tags": [], + "ignore_https_errors": false, + "throttling": { + "value": { + "download": "5", + "latency": "20", + "upload": "3" + }, + "id": "default", + "label": "Default" + }, + "locations": ["dev"], + "name": "Test HTTP Monitor 03", + "namespace": "testnamespace", + "origin": "ui", + "form_monitor_type": "multistep", + "url.port": null, + "id": "", + "hash": "", + "playwright_options": "", + "playwright_text_assertion": "", + "ssl.certificate": "", + "ssl.certificate_authorities": "", + "ssl.supported_protocols": ["TLSv1.1", "TLSv1.2", "TLSv1.3"], + "ssl.verification_mode": "full", + "revision": 1, + "max_attempts": 2, + "labels": {} +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/http_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/http_monitor.json new file mode 100644 index 0000000000000..47d0637a7cd91 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/http_monitor.json @@ -0,0 +1,83 @@ +{ + "type": "http", + "enabled": true, + "alert": { + "status": { + "enabled": true + } + }, + "tags": [ + "tag1", + "tag2" + ], + "schedule": { + "number": "5", + "unit": "m" + }, + "service.name": "", + "config_id": "", + "timeout": "180", + "__ui": { + "is_tls_enabled": false + }, + "max_attempts": 2, + "max_redirects": "3", + "password": "test", + "urls": "https://nextjs-test-synthetics.vercel.app/api/users", + "url.port": null, + "proxy_url": "http://proxy.com", + "proxy_headers": {}, + "check.response.body.negative": [], + "check.response.body.positive": [], + "check.response.json": [], + "response.include_body": "never", + "response.include_body_max_bytes": "1024", + "check.request.headers": { + "sampleHeader": "sampleHeaderValue" + }, + "response.include_headers": true, + "check.response.status": [ + "200", + "201" + ], + "check.request.body": { + "value": "testValue", + "type": "json" + }, + "check.response.headers": {}, + "check.request.method": "", + "username": "test-username", + "ssl.certificate_authorities": "t.string", + "ssl.certificate": "t.string", + "ssl.key": "t.string", + "ssl.key_passphrase": "t.string", + "ssl.verification_mode": "certificate", + "ssl.supported_protocols": [ + "TLSv1.1", + "TLSv1.2" + ], + "name": "test-monitor-name", + "locations": [ + { + "id": "dev", + "label": "Dev Service", + "geo": { + "lat": 0, + "lon": 0 + }, + "isServiceManaged": true + } + ], + "namespace": "testnamespace", + "revision": 1, + "origin": "ui", + "form_monitor_type": "http", + "journey_id": "", + "id": "", + "hash": "", + "mode": "any", + "ipv4": true, + "ipv6": true, + "params": "", + "labels": {} +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/icmp_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/icmp_monitor.json new file mode 100644 index 0000000000000..8f97e8de7424d --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/icmp_monitor.json @@ -0,0 +1,35 @@ +{ + "type": "icmp", + "locations": ["dev"], + "journey_id": "", + "enabled": true, + "alert": { + "status": { + "enabled": true + } + }, + "schedule": { + "number": "3", + "unit": "m" + }, + "config_id": "", + "service.name": "example-service-name", + "tags": [ + "tagT1", + "tagT2" + ], + "timeout": "16", + "hosts": "192.33.22.111:3333", + "wait": "1", + "name": "Test HTTP Monitor 04", + "namespace": "testnamespace", + "origin": "ui", + "form_monitor_type": "icmp", + "id": "", + "hash": "", + "mode": "any", + "ipv4": true, + "ipv6": true, + "params": "", + "max_attempts": 2 +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/inspect_browser_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/inspect_browser_monitor.json new file mode 100644 index 0000000000000..2307e4dcbfaf8 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/inspect_browser_monitor.json @@ -0,0 +1,85 @@ +{ + "type": "browser", + "form_monitor_type": "multistep", + "enabled": true, + "alert": { + "status": { + "enabled": true + } + }, + "schedule": { + "number": "10", + "unit": "m" + }, + "service.name": "", + "config_id": "0088b13c-9bb0-4fc6-a0b5-63b9b024eabb", + "tags": [], + "timeout": null, + "name": "check if title is present", + "locations": [ + { + "id": "dev", + "label": "Dev Service", + "geo": { + "lat": 0, + "lon": 0 + }, + "isServiceManaged": true + } + ], + "namespace": "default", + "origin": "project", + "journey_id": "bb82f7de-d832-4b14-8097-38a464d5fe49", + "hash": "ekrjelkjrelkjre", + "id": "bb82f7de-d832-4b14-8097-38a464d5fe49-test-project-cb47c83a-45e7-416a-9301-cb476b5bff01-default", + "params": "", + "project_id": "test-project-cb47c83a-45e7-416a-9301-cb476b5bff01", + "playwright_options": "{\"headless\":true,\"chromiumSandbox\":false}", + "__ui": { + "script_source": { + "is_generated_script": false, + "file_name": "" + } + }, + "url.port": null, + "source.inline.script": "", + "source.project.content": "UEsDBBQACAAIAON5qVQAAAAAAAAAAAAAAAAfAAAAZXhhbXBsZXMvdG9kb3MvYmFzaWMuam91cm5leS50c22Q0WrDMAxF3/sVF7MHB0LMXlc6RvcN+wDPVWNviW0sdUsp/fe5SSiD7UFCWFfHujIGlpnkybwxFTZfoY/E3hsaLEtwhs9RPNWKDU12zAOxkXRIbN4tB9d9pFOJdO6EN2HMqQguWN9asFBuQVMmJ7jiWNII9fIXrbabdUYr58l9IhwhQQZCYORCTFFUC31Btj21NRc7Mq4Nds+4bDD/pNVgT9F52Jyr2Fa+g75LAPttg8yErk+S9ELpTmVotlVwnfNCuh2lepl3+JflUmSBJ3uggt1v9INW/lHNLKze9dJe1J3QJK8pSvWkm6aTtCet5puq+x63+AFQSwcIAPQ3VfcAAACcAQAAUEsBAi0DFAAIAAgA43mpVAD0N1X3AAAAnAEAAB8AAAAAAAAAAAAgAKSBAAAAAGV4YW1wbGVzL3RvZG9zL2Jhc2ljLmpvdXJuZXkudHNQSwUGAAAAAAEAAQBNAAAARAEAAAAA", + "playwright_text_assertion": "", + "urls": "", + "screenshots": "on", + "synthetics_args": [], + "filter_journeys.match": "check if title is present", + "filter_journeys.tags": [], + "ignore_https_errors": false, + "throttling": { + "value": { + "download": "5", + "upload": "3", + "latency": "20" + }, + "id": "default", + "label": "Default" + }, + "ssl.certificate_authorities": "", + "ssl.certificate": "", + "ssl.key": "", + "ssl.key_passphrase": "", + "ssl.verification_mode": "full", + "ssl.supported_protocols": [ + "TLSv1.1", + "TLSv1.2", + "TLSv1.3" + ], + "original_space": "default", + "custom_heartbeat_id": "bb82f7de-d832-4b14-8097-38a464d5fe49-test-project-cb47c83a-45e7-416a-9301-cb476b5bff01-default", + "revision": 1, + "source.inline": { + "type": "inline", + "script": "", + "fileName": "" + }, + "service": { + "name": "" + }, + "max_attempts": 2 +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_browser_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_browser_monitor.json new file mode 100644 index 0000000000000..18cea933e7974 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_browser_monitor.json @@ -0,0 +1,30 @@ +{ + "keep_stale": true, + "project": "test-suite", + "monitors": [{ + "throttling": { + "download": 5, + "upload": 3, + "latency": 20 + }, + "schedule": 10, + "locations": [ + "dev" + ], + "params": {}, + "playwrightOptions": { + "headless": true, + "chromiumSandbox": false + }, + "name": "check if title is present", + "id": "check-if-title-is-present", + "tags": [], + "content": "UEsDBBQACAAIAON5qVQAAAAAAAAAAAAAAAAfAAAAZXhhbXBsZXMvdG9kb3MvYmFzaWMuam91cm5leS50c22Q0WrDMAxF3/sVF7MHB0LMXlc6RvcN+wDPVWNviW0sdUsp/fe5SSiD7UFCWFfHujIGlpnkybwxFTZfoY/E3hsaLEtwhs9RPNWKDU12zAOxkXRIbN4tB9d9pFOJdO6EN2HMqQguWN9asFBuQVMmJ7jiWNII9fIXrbabdUYr58l9IhwhQQZCYORCTFFUC31Btj21NRc7Mq4Nds+4bDD/pNVgT9F52Jyr2Fa+g75LAPttg8yErk+S9ELpTmVotlVwnfNCuh2lepl3+JflUmSBJ3uggt1v9INW/lHNLKze9dJe1J3QJK8pSvWkm6aTtCet5puq+x63+AFQSwcIAPQ3VfcAAACcAQAAUEsBAi0DFAAIAAgA43mpVAD0N1X3AAAAnAEAAB8AAAAAAAAAAAAgAKSBAAAAAGV4YW1wbGVzL3RvZG9zL2Jhc2ljLmpvdXJuZXkudHNQSwUGAAAAAAEAAQBNAAAARAEAAAAA", + "filter": { + "match": "check if title is present" + }, + "hash": "ekrjelkjrelkjre", + "max_attempts": 2, + "type": "browser" + }] +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_http_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_http_monitor.json new file mode 100644 index 0000000000000..05e1ebed01aec --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_http_monitor.json @@ -0,0 +1,86 @@ +{ + "project": "test-suite", + "keep_stale": false, + "monitors": [ + { + "locations": ["dev"], + "type": "http", + "enabled": false, + "id": "my-monitor-2", + "name": "My Monitor 2", + "urls": [ + "http://localhost:9200", + "http://anotherurl:9200" + ], + "schedule": 60, + "timeout": "80s", + "check.request": { + "method": "POST", + "headers": { + "Content-Type": "application/x-www-form-urlencoded" + } + }, + "response": { + "include_body": "always" + }, + "response.include_headers": false, + "check.response": { + "status": [ + 200 + ], + "body": [ + "Saved", + "saved" + ] + }, + "unsupportedKey": { + "nestedUnsupportedKey": "unsupportedValue" + }, + "hash": "ekrjelkjrelkjre" + }, + { + "locations": ["dev"], + "type": "http", + "enabled": false, + "id": "my-monitor-3", + "name": "My Monitor 3", + "proxy_url": "${testGlobalParam2}", + "urls": [ + "http://localhost:9200" + ], + "schedule": 60, + "timeout": "80s", + "check.request": { + "method": "POST", + "headers": { + "Content-Type": "application/x-www-form-urlencoded" + } + }, + "response": { + "include_body": "always", + "include_body_max_bytes": 900 + }, + "tags": "tag2,tag2", + "response.include_headers": false, + "check.response": { + "status": [ + 200 + ], + "body":{ + "positive": [ + "${testLocal1}", + "saved" + ] + }, + "json": [{"description":"check status","expression":"foo.bar == \"myValue\""}] + }, + "hash": "ekrjelkjrelkjre", + "ssl.verification_mode": "strict", + "params": { + "testLocal1": "testLocalParamsValue", + "testGlobalParam2": "testGlobalParamOverwrite" + }, + "max_attempts": 2 + } + ] +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_icmp_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_icmp_monitor.json new file mode 100644 index 0000000000000..63e4215e46cca --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_icmp_monitor.json @@ -0,0 +1,47 @@ + + + +{ + "project": "test-suite", + "keep_stale": true, + "monitors": [ + { + "locations": [ "dev" ], + "type": "icmp", + "id": "Cloudflare-DNS", + "name": "Cloudflare DNS", + "hosts": [ "1.1.1.1" ], + "schedule": 1, + "tags": [ "service:smtp", "org:google" ], + "privateLocations": [ "Test private location 0" ], + "wait": "30s", + "hash": "ekrjelkjrelkjre" + }, + { + "locations": [ "dev" ], + "type": "icmp", + "id": "Cloudflare-DNS-2", + "name": "Cloudflare DNS 2", + "hosts": "1.1.1.1", + "schedule": 1, + "tags": "tag1,tag2", + "privateLocations": [ "Test private location 0" ], + "wait": "1m", + "hash": "ekrjelkjrelkjre" + }, + { + "locations": [ "dev" ], + "type": "icmp", + "id": "Cloudflare-DNS-3", + "name": "Cloudflare DNS 3", + "hosts": "1.1.1.1,2.2.2.2", + "schedule": 1, + "tags": "tag1,tag2", + "privateLocations": [ "Test private location 0" ], + "unsupportedKey": { + "nestedUnsupportedKey": "unnsuportedValue" + }, + "hash": "ekrjelkjrelkjre" + } + ] +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_tcp_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_tcp_monitor.json new file mode 100644 index 0000000000000..26382b010ec3e --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/project_tcp_monitor.json @@ -0,0 +1,44 @@ +{ + "project": "test-suite", + "keep_stale": true, + "monitors": [ + { + "locations": [ "dev" ], + "type": "tcp", + "id": "gmail-smtp", + "name": "GMail SMTP", + "hosts": [ "smtp.gmail.com:587" ], + "schedule": 1, + "tags": [ "service:smtp", "org:google" ], + "privateLocations": [ ], + "hash": "ekrjelkjrelkjre", + "ssl.verification_mode": "strict" + }, + { + "locations": [ "dev" ], + "type": "tcp", + "id": "always-down", + "name": "Always Down", + "hosts": "localhost:18278", + "schedule": 1, + "tags": "tag1,tag2", + "privateLocations": [ ], + "hash": "ekrjelkjrelkjre" + }, + { + "locations": [ "dev" ], + "type": "tcp", + "id": "always-down", + "name": "Always Down", + "hosts": ["localhost", "anotherhost"], + "ports": ["5698"], + "schedule": 1, + "tags": "tag1,tag2", + "privateLocations": [ ], + "unsupportedKey": { + "nestedUnsupportedKey": "unnsuportedValue" + }, + "hash": "ekrjelkjrelkjre" + } + ] +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/tcp_monitor.json b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/tcp_monitor.json new file mode 100644 index 0000000000000..9cc646a36c943 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/fixtures/tcp_monitor.json @@ -0,0 +1,43 @@ +{ + "type": "tcp", + "locations": ["dev"], + "enabled": true, + "config_id": "", + "schedule": { + "number": "3", + "unit": "m" + }, + "service.name": "", + "tags": [], + "timeout": "16", + "__ui": { + "is_tls_enabled": true + }, + "hosts": "example-host:40", + "urls": "example-host:40", + "url.port": null, + "proxy_url": "", + "proxy_use_local_resolver": false, + "check.receive": "", + "check.send": "", + "ssl.certificate_authorities": "", + "ssl.certificate": "", + "ssl.key": "", + "ssl.key_passphrase": "examplepassphrase", + "ssl.verification_mode": "full", + "ssl.supported_protocols": [ + "TLSv1.1", + "TLSv1.3" + ], + "name": "Test HTTP Monitor 04", + "namespace": "testnamespace", + "origin": "ui", + "form_monitor_type": "tcp", + "id": "", + "hash": "", + "mode": "any", + "ipv4": true, + "ipv6": true, + "params": "", + "max_attempts": 2 +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_filters.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_filters.ts new file mode 100644 index 0000000000000..cd6f8ff2f7275 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_filters.ts @@ -0,0 +1,87 @@ +/* + * 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 { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import expect from '@kbn/expect'; +import { PrivateLocation } from '@kbn/synthetics-plugin/common/runtime_types'; +import { syntheticsMonitorType } from '@kbn/synthetics-plugin/common/types/saved_objects'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('getMonitorFilters', function () { + const kibanaServer = getService('kibanaServer'); + const supertest = getService('supertestWithoutAuth'); + const samlAuth = getService('samlAuth'); + + const privateLocationTestService = new PrivateLocationTestService(getService); + + let editorUser: RoleCredentials; + let privateLocation: PrivateLocation; + + after(async () => { + await kibanaServer.savedObjects.clean({ types: [syntheticsMonitorType] }); + }); + + before(async () => { + await kibanaServer.savedObjects.clean({ types: [syntheticsMonitorType] }); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + privateLocation = await privateLocationTestService.addTestPrivateLocation(); + }); + + it('get list of filters', async () => { + const apiResponse = await supertest + .get(SYNTHETICS_API_URLS.FILTERS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(apiResponse.body).eql({ + monitorTypes: [], + tags: [], + locations: [], + projects: [], + schedules: [], + }); + }); + + it('get list of filters with monitorTypes', async () => { + const newMonitor = { + name: 'Sample name', + type: 'http', + urls: 'https://elastic.co', + tags: ['apm', 'synthetics'], + locations: [privateLocation], + }; + + await supertest + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(newMonitor) + .expect(200); + + const apiResponse = await supertest + .get(SYNTHETICS_API_URLS.FILTERS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(apiResponse.body).eql({ + monitorTypes: [{ label: 'http', count: 1 }], + tags: [ + { label: 'apm', count: 1 }, + { label: 'synthetics', count: 1 }, + ], + locations: [{ label: privateLocation.id, count: 1 }], + projects: [], + schedules: [{ label: '3', count: 1 }], + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_monitor.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_monitor.ts new file mode 100644 index 0000000000000..d35e1bfc01831 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_monitor.ts @@ -0,0 +1,354 @@ +/* + * 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 { omit } from 'lodash'; +import moment from 'moment'; +import { v4 as uuidv4 } from 'uuid'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + ConfigKey, + EncryptedSyntheticsSavedMonitor, + MonitorFields, + PrivateLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import expect from '@kbn/expect'; +import { secretKeys } from '@kbn/synthetics-plugin/common/constants/monitor_management'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; +import { omitMonitorKeys } from './create_monitor'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; +import { getFixtureJson } from './helpers/get_fixture_json'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('getSyntheticsMonitors', function () { + const supertest = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const retry = getService('retry'); + const samlAuth = getService('samlAuth'); + const monitorTestService = new SyntheticsMonitorTestService(getService); + const privateLocationTestService = new PrivateLocationTestService(getService); + + let _monitors: MonitorFields[]; + let monitors: MonitorFields[]; + let editorUser: RoleCredentials; + let privateLocation: PrivateLocation; + + const saveMonitor = async (monitor: MonitorFields, spaceId?: string) => { + let url = SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '?internal=true'; + if (spaceId) { + url = '/s/' + spaceId + url; + } + const res = await supertest + .post(url) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor); + + expect(res.status).eql(200, JSON.stringify(res.body)); + + return res.body as EncryptedSyntheticsSavedMonitor; + }; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + privateLocation = await privateLocationTestService.addTestPrivateLocation(); + await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + _monitors = [ + getFixtureJson('icmp_monitor'), + getFixtureJson('tcp_monitor'), + getFixtureJson('http_monitor'), + getFixtureJson('browser_monitor'), + ].map((mon) => ({ + ...mon, + locations: [privateLocation], + })); + }); + + beforeEach(() => { + monitors = _monitors; + }); + + // FLAKY: https://github.com/elastic/kibana/issues/204069 + describe.skip('get many monitors', () => { + it('without params', async () => { + const uuid = uuidv4(); + const [mon1, mon2] = await Promise.all( + monitors.map((mon, i) => saveMonitor({ ...mon, name: `${mon.name}-${uuid}-${i}` })) + ); + + const apiResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '?perPage=1000&internal=true') // 1000 to sort of load all saved monitors + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const found: MonitorFields[] = apiResponse.body.monitors.filter(({ id }: MonitorFields) => + [mon1.id, mon2.id].includes(id) + ); + found.sort(({ id: a }) => (a === mon2.id ? 1 : a === mon1.id ? -1 : 0)); + const foundMonitors = found.map( + (fields) => fields as unknown as EncryptedSyntheticsSavedMonitor + ); + + const expected = [mon1, mon2]; + + /** + * These dates are dynamically generated by the server, so we can't + * compare them directly. Instead, we'll just check that they're valid. + */ + foundMonitors.forEach(({ updated_at: updatedAt, created_at: createdAt }) => { + expect(moment(createdAt).isValid()).to.be(true); + expect(moment(updatedAt).isValid()).to.be(true); + }); + + expect(foundMonitors.map((fm) => omit(fm, 'updated_at', 'created_at', 'spaceId'))).eql( + expected.map((expectedMon) => + omit(expectedMon, ['updated_at', 'created_at', ...secretKeys]) + ) + ); + }); + + it('with page params', async () => { + const allMonitors = [...monitors, ...monitors]; + for (const mon of allMonitors) { + await saveMonitor({ ...mon, name: mon.name + Date.now() }); + } + + await retry.try(async () => { + const firstPageResp = await supertest + .get(`${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}?page=1&perPage=2`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const secondPageResp = await supertest + .get(`${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}?page=2&perPage=3`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(firstPageResp.body.total).greaterThan(6); + expect(firstPageResp.body.monitors.length).eql(2); + expect(secondPageResp.body.monitors.length).eql(3); + + expect(firstPageResp.body.monitors[0].id).not.eql(secondPageResp.body.monitors[0].id); + }); + }); + + it('with single monitorQueryId filter', async () => { + const uuid = uuidv4(); + const [_, { id: id2 }] = await Promise.all( + monitors + .map((mon, i) => ({ ...mon, name: `mon.name-${uuid}-${i}` })) + .map((mon) => saveMonitor(mon)) + ); + + const resp = await supertest + .get( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}?page=1&perPage=10&monitorQueryIds=${id2}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const resultMonitorIds = resp.body.monitors.map(({ id }: Partial) => id); + expect(resultMonitorIds.length).eql(1); + expect(resultMonitorIds).eql([id2]); + }); + + it('with multiple monitorQueryId filter', async () => { + const uuid = uuidv4(); + const [_, { id: id2 }, { id: id3 }] = await Promise.all( + monitors + .map((mon, i) => ({ ...mon, name: `${mon.name}-${uuid}-${i}` })) + .map((monT) => saveMonitor(monT)) + ); + + const resp = await supertest + .get( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}?page=1&perPage=10&sortField=name.keyword&sortOrder=asc&monitorQueryIds=${id2}&monitorQueryIds=${id3}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const resultMonitorIds = resp.body.monitors.map(({ id }: Partial) => id); + + expect(resultMonitorIds.length).eql(2); + expect(resultMonitorIds).eql([id2, id3]); + }); + + it('monitorQueryId respects custom_heartbeat_id while filtering', async () => { + const customHeartbeatId0 = 'custom-heartbeat-id-test-01'; + const customHeartbeatId1 = 'custom-heartbeat-id-test-02'; + await Promise.all( + [ + { + ...monitors[0], + [ConfigKey.CUSTOM_HEARTBEAT_ID]: customHeartbeatId0, + [ConfigKey.NAME]: `NAME-${customHeartbeatId0}`, + }, + { + ...monitors[1], + [ConfigKey.CUSTOM_HEARTBEAT_ID]: customHeartbeatId1, + [ConfigKey.NAME]: `NAME-${customHeartbeatId1}`, + }, + ].map((monT) => saveMonitor(monT)) + ); + + const resp = await supertest + .get( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}?page=1&perPage=10&sortField=name.keyword&sortOrder=asc&monitorQueryIds=${customHeartbeatId0}&monitorQueryIds=${customHeartbeatId1}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const resultMonitorIds = resp.body.monitors + .map(({ id }: Partial) => id) + .filter((id: string, index: number, arr: string[]) => arr.indexOf(id) === index); // Filter only unique + expect(resultMonitorIds.length).eql(2); + expect(resultMonitorIds).eql([customHeartbeatId0, customHeartbeatId1]); + }); + + it('gets monitors from all spaces', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + const spaceScopedPrivateLocation = await privateLocationTestService.addTestPrivateLocation( + SPACE_ID + ); + + const allMonitors = [...monitors, ...monitors]; + for (const mon of allMonitors) { + await saveMonitor( + { ...mon, name: mon.name + Date.now(), locations: [spaceScopedPrivateLocation] }, + SPACE_ID + ); + } + + const firstPageResp = await supertest + .get(`${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}?page=1&perPage=1000`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + const defaultSpaceMons = firstPageResp.body.monitors.filter( + ({ spaceId }: { spaceId: string }) => spaceId === 'default' + ); + const testSpaceMons = firstPageResp.body.monitors.filter( + ({ spaceId }: { spaceId: string }) => spaceId === SPACE_ID + ); + + expect(defaultSpaceMons.length).to.eql(22); + expect(testSpaceMons.length).to.eql(0); + + const res = await supertest + .get( + `${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}?page=1&perPage=1000&showFromAllSpaces=true` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const defaultSpaceMons1 = res.body.monitors.filter( + ({ spaceId }: { spaceId: string }) => spaceId === 'default' + ); + const testSpaceMons1 = res.body.monitors.filter( + ({ spaceId }: { spaceId: string }) => spaceId === SPACE_ID + ); + + expect(defaultSpaceMons1.length).to.eql(22); + expect(testSpaceMons1.length).to.eql(8); + }); + }); + + describe('get one monitor', () => { + it('should get by id', async () => { + const uuid = uuidv4(); + const [{ id: id1 }] = await Promise.all( + monitors + .map((mon, i) => ({ ...mon, name: `${mon.name}-${uuid}-${i}` })) + .map((monT) => saveMonitor(monT)) + ); + + const apiResponse = await monitorTestService.getMonitor(id1, { user: editorUser }); + + expect(apiResponse.body).eql( + omitMonitorKeys({ + ...monitors[0], + [ConfigKey.MONITOR_QUERY_ID]: apiResponse.body.id, + [ConfigKey.CONFIG_ID]: apiResponse.body.id, + revision: 1, + locations: [privateLocation], + name: `${monitors[0].name}-${uuid}-0`, + }) + ); + }); + + it('should get by id with ui query param', async () => { + const uuid = uuidv4(); + const [{ id: id1 }] = await Promise.all( + monitors + .map((mon, i) => ({ ...mon, name: `${mon.name}-${uuid}-${i}` })) + .map((monT) => saveMonitor(monT)) + ); + + const apiResponse = await monitorTestService.getMonitor(id1, { + internal: true, + user: editorUser, + }); + + expect(apiResponse.body).eql( + omit( + { + ...monitors[0], + form_monitor_type: 'icmp', + revision: 1, + locations: [privateLocation], + name: `${monitors[0].name}-${uuid}-0`, + hosts: '192.33.22.111:3333', + hash: '', + journey_id: '', + max_attempts: 2, + labels: {}, + }, + ['config_id', 'id', 'form_monitor_type'] + ) + ); + }); + + it('returns 404 if monitor id is not found', async () => { + const invalidMonitorId = 'invalid-id'; + const expected404Message = `Monitor id ${invalidMonitorId} not found!`; + + const getResponse = await supertest + .get(SYNTHETICS_API_URLS.GET_SYNTHETICS_MONITOR.replace('{monitorId}', invalidMonitorId)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(404); + + expect(getResponse.body.message).eql(expected404Message); + }); + + it('validates param length', async () => { + const veryLargeMonId = new Array(1050).fill('1').join(''); + + await supertest + .get(SYNTHETICS_API_URLS.GET_SYNTHETICS_MONITOR.replace('{monitorId}', veryLargeMonId)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(400); + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_monitor_project.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_monitor_project.ts new file mode 100644 index 0000000000000..0678731a4202e --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/get_monitor_project.ts @@ -0,0 +1,741 @@ +/* + * 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 { v4 as uuidv4 } from 'uuid'; +import type SuperTest from 'supertest'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + LegacyProjectMonitorsRequest, + ProjectMonitor, + ProjectMonitorMetaData, + PrivateLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import expect from '@kbn/expect'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('GetProjectMonitors', function () { + const supertest = getService('supertestWithoutAuth'); + const samlAuth = getService('samlAuth'); + + let projectMonitors: LegacyProjectMonitorsRequest; + let httpProjectMonitors: LegacyProjectMonitorsRequest; + let tcpProjectMonitors: LegacyProjectMonitorsRequest; + let icmpProjectMonitors: LegacyProjectMonitorsRequest; + let testPolicyId = ''; + let editorUser: RoleCredentials; + let testPrivateLocations: PrivateLocation[] = []; + + const testPrivateLocationsService = new PrivateLocationTestService(getService); + + const setUniqueIds = ( + request: LegacyProjectMonitorsRequest, + privateLocations: PrivateLocation[] = [] + ) => { + return { + ...request, + monitors: request.monitors.map((monitor) => ({ + ...monitor, + id: uuidv4(), + locations: [], + privateLocations: privateLocations.map((location) => location.label), + })), + }; + }; + + before(async () => { + await testPrivateLocationsService.installSyntheticsPackage(); + + const testPolicyName = 'Fleet test server policy' + Date.now(); + const apiResponse = await testPrivateLocationsService.addFleetPolicy(testPolicyName); + testPolicyId = apiResponse.body.item.id; + testPrivateLocations = await testPrivateLocationsService.setTestLocations([testPolicyId]); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + }); + + beforeEach(() => { + projectMonitors = setUniqueIds( + getFixtureJson('project_browser_monitor'), + testPrivateLocations + ); + httpProjectMonitors = setUniqueIds( + getFixtureJson('project_http_monitor'), + testPrivateLocations + ); + tcpProjectMonitors = setUniqueIds( + getFixtureJson('project_tcp_monitor'), + testPrivateLocations + ); + icmpProjectMonitors = setUniqueIds( + getFixtureJson('project_icmp_monitor'), + testPrivateLocations + ); + }); + + it('project monitors - fetches all monitors - browser', async () => { + const monitors = []; + const project = 'test-brower-suite'; + for (let i = 0; i < 600; i++) { + monitors.push({ + ...projectMonitors.monitors[0], + id: `test browser id ${i}`, + name: `test name ${i}`, + }); + } + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(0, 250), + }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(250, 500), + }) + .expect(200); + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(500, 600), + }) + .expect(200); + + const firstPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ per_page: 500 }) + .send() + .expect(200); + + const { monitors: firstPageMonitors, total, after_key: afterKey } = firstPageResponse.body; + expect(firstPageMonitors.length).to.eql(500); + expect(total).to.eql(600); + expect(afterKey).to.eql('test browser id 548'); + + const secondPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + search_after: afterKey, + per_page: 500, + }) + .send() + .expect(200); + const { monitors: secondPageMonitors } = secondPageResponse.body; + expect(secondPageMonitors.length).to.eql(100); + checkFields([...firstPageMonitors, ...secondPageMonitors], monitors); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(0, 250) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(250, 500) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(500, 600) }) + .expect(200); + } + }); + + it('project monitors - fetches all monitors - http', async () => { + const monitors = []; + const project = 'test-http-suite'; + for (let i = 0; i < 600; i++) { + monitors.push({ + ...httpProjectMonitors.monitors[1], + id: `test http id ${i}`, + name: `test name ${i}`, + }); + } + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(0, 250), + }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(250, 500), + }) + .expect(200); + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(500, 600), + }) + .expect(200); + + const firstPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ per_page: 500 }) + .send() + .expect(200); + + const { + monitors: firstPageProjectMonitors, + after_key: afterKey, + total, + } = firstPageResponse.body; + expect(firstPageProjectMonitors.length).to.eql(500); + expect(total).to.eql(600); + expect(afterKey).to.eql('test http id 548'); + + const secondPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + search_after: afterKey, + per_page: 500, + }) + .send() + .expect(200); + const { monitors: secondPageProjectMonitors } = secondPageResponse.body; + expect(secondPageProjectMonitors.length).to.eql(100); + checkFields([...firstPageProjectMonitors, ...secondPageProjectMonitors], monitors); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(0, 250) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(250, 500) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(500, 600) }) + .expect(200); + } + }); + + it('project monitors - fetches all monitors - tcp', async () => { + const monitors = []; + const project = 'test-tcp-suite'; + for (let i = 0; i < 600; i++) { + monitors.push({ + ...tcpProjectMonitors.monitors[0], + id: `test tcp id ${i}`, + name: `test name ${i}`, + }); + } + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(0, 250), + }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(250, 500), + }) + .expect(200); + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(500, 600), + }) + .expect(200); + + const firstPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .query({ per_page: 500 }) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + const { + monitors: firstPageProjectMonitors, + after_key: afterKey, + total, + } = firstPageResponse.body; + expect(firstPageProjectMonitors.length).to.eql(500); + expect(total).to.eql(600); + expect(afterKey).to.eql('test tcp id 548'); + + const secondPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + search_after: afterKey, + per_page: 500, + }) + .send() + .expect(200); + const { monitors: secondPageProjectMonitors } = secondPageResponse.body; + expect(secondPageProjectMonitors.length).to.eql(100); + checkFields([...firstPageProjectMonitors, ...secondPageProjectMonitors], monitors); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(0, 250) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(250, 500) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(500, 600) }) + .expect(200); + } + }); + + it('project monitors - fetches all monitors - icmp', async () => { + const monitors = []; + const project = 'test-icmp-suite'; + for (let i = 0; i < 600; i++) { + monitors.push({ + ...icmpProjectMonitors.monitors[0], + id: `test icmp id ${i}`, + name: `test name ${i}`, + }); + } + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(0, 250), + }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(250, 500), + }) + .expect(200); + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(500, 600), + }) + .expect(200); + const firstPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .query({ per_page: 500 }) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + const { + monitors: firstPageProjectMonitors, + after_key: afterKey, + total, + } = firstPageResponse.body; + expect(firstPageProjectMonitors.length).to.eql(500); + expect(total).to.eql(600); + expect(afterKey).to.eql('test icmp id 548'); + + const secondPageResponse = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + search_after: afterKey, + per_page: 500, + }) + .send() + .expect(200); + const { monitors: secondPageProjectMonitors } = secondPageResponse.body; + expect(secondPageProjectMonitors.length).to.eql(100); + + checkFields([...firstPageProjectMonitors, ...secondPageProjectMonitors], monitors); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(0, 250) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(250, 500) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(500, 600) }) + .expect(200); + } + }); + + it('project monitors - handles url ecoded project names', async () => { + const monitors = []; + const projectName = 'Test project'; + for (let i = 0; i < 600; i++) { + monitors.push({ + ...icmpProjectMonitors.monitors[0], + id: `test url id ${i}`, + name: `test name ${i}`, + }); + } + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + projectName + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(0, 250), + }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + projectName + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(250, 500), + }) + .expect(200); + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + projectName + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(500, 600), + }) + .expect(200); + + const firstPageResponse = await supertest + .get( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace( + '{projectName}', + encodeURI(projectName) + ) + ) + .query({ per_page: 500 }) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send() + .expect(200); + + const { + monitors: firstPageProjectMonitors, + after_key: afterKey, + total, + } = firstPageResponse.body; + expect(firstPageProjectMonitors.length).to.eql(500); + expect(total).to.eql(600); + expect(afterKey).to.eql('test url id 548'); + + const secondPageResponse = await supertest + .get( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace( + '{projectName}', + encodeURI(projectName) + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + search_after: afterKey, + per_page: 500, + }) + .send() + .expect(200); + const { monitors: secondPageProjectMonitors } = secondPageResponse.body; + expect(secondPageProjectMonitors.length).to.eql(100); + + checkFields([...firstPageProjectMonitors, ...secondPageProjectMonitors], monitors); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace( + '{projectName}', + encodeURI(projectName) + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(0, 250) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace( + '{projectName}', + encodeURI(projectName) + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(250, 500) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace( + '{projectName}', + encodeURI(projectName) + ) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(500, 600) }) + .expect(200); + } + }); + + it('project monitors - handles per_page parameter', async () => { + const monitors = []; + const project = 'test-suite'; + const perPage = 250; + for (let i = 0; i < 600; i++) { + monitors.push({ + ...icmpProjectMonitors.monitors[0], + id: `test-id-${i}`, + name: `test-name-${i}`, + }); + } + + try { + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(0, 250), + }) + .expect(200); + + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(250, 500), + }) + .expect(200); + await supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ + monitors: monitors.slice(500, 600), + }) + .expect(200); + + let count = Number.MAX_VALUE; + let afterId; + const fullResponse: ProjectMonitorMetaData[] = []; + let page = 1; + while (count >= 250) { + const response: SuperTest.Response = await supertest + .get(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT.replace('{projectName}', project)) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + per_page: perPage, + search_after: afterId, + }) + .send() + .expect(200); + + const { monitors: monitorsResponse, after_key: afterKey, total } = response.body; + expect(total).to.eql(600); + count = monitorsResponse.length; + fullResponse.push(...monitorsResponse); + if (page < 3) { + expect(count).to.eql(perPage); + } else { + expect(count).to.eql(100); + } + page++; + + afterId = afterKey; + } + // expect(fullResponse.length).to.eql(600); + // checkFields(fullResponse, monitors); + } finally { + const monitorsToDelete = monitors.map((monitor) => monitor.id); + + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(0, 250) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(250, 500) }) + .expect(200); + await supertest + .delete( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_DELETE.replace('{projectName}', project) + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ monitors: monitorsToDelete.slice(500, 600) }) + .expect(200); + } + }); + }); +} + +const checkFields = (monitorMetaData: ProjectMonitorMetaData[], monitors: ProjectMonitor[]) => { + monitors.forEach((monitor) => { + const configIsCorrect = monitorMetaData.some((ndjson: Record) => { + return ndjson.journey_id === monitor.id && ndjson.hash === monitor.hash; + }); + expect(configIsCorrect).to.eql(true); + }); +}; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/helpers/get_fixture_json.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/helpers/get_fixture_json.ts new file mode 100644 index 0000000000000..9cc1640b7a583 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/helpers/get_fixture_json.ts @@ -0,0 +1,21 @@ +/* + * 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 fs from 'fs'; +import { join } from 'path'; + +const fixturesDir = join(__dirname, '..', 'fixtures'); + +export function getFixtureJson(fixtureName: string) { + try { + const fixturePath = join(fixturesDir, `${fixtureName}.json`); + const fileContents = fs.readFileSync(fixturePath, 'utf8'); + return JSON.parse(fileContents); + } catch (e) { + return {}; + } +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/helpers/monitor.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/helpers/monitor.ts new file mode 100644 index 0000000000000..8c10fa78d9834 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/helpers/monitor.ts @@ -0,0 +1,21 @@ +/* + * 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 { omit } from 'lodash'; + +export function omitResponseTimestamps(monitor: object) { + return omit(monitor, ['created_at', 'updated_at']); +} + +export function omitEmptyValues(monitor: object) { + const { url, ...rest } = omit(monitor, ['created_at', 'updated_at']) as any; + + return { + ...rest, + ...(url ? { url } : {}), + }; +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/index.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/index.ts new file mode 100644 index 0000000000000..c15f73cf4e6db --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/index.ts @@ -0,0 +1,32 @@ +/* + * 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 { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ loadTestFile }: DeploymentAgnosticFtrProviderContext) { + describe('SyntheticsAPITests', () => { + loadTestFile(require.resolve('./create_monitor')); + loadTestFile(require.resolve('./create_monitor_private_location')); + loadTestFile(require.resolve('./create_monitor_project')); + loadTestFile(require.resolve('./create_monitor_project_private_location')); + loadTestFile(require.resolve('./create_monitor_public_api')); + loadTestFile(require.resolve('./create_update_params')); + loadTestFile(require.resolve('./delete_monitor_project')); + loadTestFile(require.resolve('./delete_monitor')); + loadTestFile(require.resolve('./edit_monitor')); + loadTestFile(require.resolve('./edit_monitor_public_api')); + loadTestFile(require.resolve('./enable_default_alerting')); + loadTestFile(require.resolve('./get_filters')); + loadTestFile(require.resolve('./get_monitor_project')); + loadTestFile(require.resolve('./get_monitor')); + loadTestFile(require.resolve('./synthetics_enablement')); + loadTestFile(require.resolve('./inspect_monitor')); + loadTestFile(require.resolve('./suggestions.ts')); + loadTestFile(require.resolve('./sync_global_params')); + loadTestFile(require.resolve('./test_now_monitor')); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/inspect_monitor.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/inspect_monitor.ts new file mode 100644 index 0000000000000..99788e2b0d0fc --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/inspect_monitor.ts @@ -0,0 +1,246 @@ +/* + * 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 { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { MonitorFields } from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import rawExpect from 'expect'; +import expect from '@kbn/expect'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('inspectSyntheticsMonitor', function () { + const supertest = getService('supertestWithoutAuth'); + + const monitorTestService = new SyntheticsMonitorTestService(getService); + const testPrivateLocations = new PrivateLocationTestService(getService); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + + let _monitors: MonitorFields[]; + let editorUser: RoleCredentials; + let adminUser: RoleCredentials; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + await kibanaServer.savedObjects.clean({ types: ['synthetics-param'] }); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + adminUser = await samlAuth.createM2mApiKeyWithRoleScope('admin'); + await testPrivateLocations.installSyntheticsPackage(); + await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + _monitors = [getFixtureJson('http_monitor'), getFixtureJson('inspect_browser_monitor')]; + }); + + // tests public locations which fails in MKI + it.skip('inspect http monitor', async () => { + const apiResponse = await monitorTestService.inspectMonitor(adminUser, { + ..._monitors[0], + locations: [ + { + id: 'dev', + label: 'Dev Service', + isServiceManaged: true, + }, + ], + }); + + rawExpect(apiResponse).toEqual({ + result: { + publicConfigs: [ + rawExpect.objectContaining({ + monitors: [ + { + type: 'http', + schedule: '@every 5m', + enabled: true, + data_stream: { namespace: 'testnamespace' }, + streams: [ + { + data_stream: { dataset: 'http', type: 'synthetics' }, + type: 'http', + enabled: true, + schedule: '@every 5m', + tags: ['tag1', 'tag2'], + timeout: '180s', + name: 'test-monitor-name', + namespace: 'testnamespace', + origin: 'ui', + urls: 'https://nextjs-test-synthetics.vercel.app/api/users', + max_redirects: '3', + max_attempts: 2, + password: 'test', + proxy_url: 'http://proxy.com', + 'response.include_body': 'never', + 'response.include_headers': true, + 'check.response.status': ['200', '201'], + 'check.request.body': 'testValue', + 'check.request.headers': { sampleHeader: 'sampleHeaderValue' }, + username: 'test-username', + mode: 'any', + 'response.include_body_max_bytes': '1024', + ipv4: true, + ipv6: true, + fields: { + meta: { space_id: 'default' }, + }, + fields_under_root: true, + }, + ], + }, + ], + output: { hosts: [] }, + }), + ], + privateConfig: null, + }, + decodedCode: '', + }); + }); + + // tests public locations which fails in MKI + it.skip('inspect project browser monitor', async () => { + const apiResponse = await monitorTestService.inspectMonitor(editorUser, { + ..._monitors[1], + params: JSON.stringify({ + username: 'elastic', + password: 'changeme', + }), + locations: [ + { + id: 'dev', + label: 'Dev Service', + isServiceManaged: true, + }, + ], + }); + rawExpect(apiResponse).toEqual({ + result: { + publicConfigs: [ + rawExpect.objectContaining({ + monitors: [ + { + type: 'browser', + schedule: '@every 10m', + enabled: true, + data_stream: { namespace: 'default' }, + streams: [ + { + data_stream: { dataset: 'browser', type: 'synthetics' }, + type: 'browser', + enabled: true, + schedule: '@every 10m', + name: 'check if title is present', + namespace: 'default', + origin: 'project', + params: { + username: '"********"', + password: '"********"', + }, + playwright_options: { headless: true, chromiumSandbox: false }, + 'source.project.content': + 'UEsDBBQACAAIAON5qVQAAAAAAAAAAAAAAAAfAAAAZXhhbXBsZXMvdG9kb3MvYmFzaWMuam91cm5leS50c22Q0WrDMAxF3/sVF7MHB0LMXlc6RvcN+wDPVWNviW0sdUsp/fe5SSiD7UFCWFfHujIGlpnkybwxFTZfoY/E3hsaLEtwhs9RPNWKDU12zAOxkXRIbN4tB9d9pFOJdO6EN2HMqQguWN9asFBuQVMmJ7jiWNII9fIXrbabdUYr58l9IhwhQQZCYORCTFFUC31Btj21NRc7Mq4Nds+4bDD/pNVgT9F52Jyr2Fa+g75LAPttg8yErk+S9ELpTmVotlVwnfNCuh2lepl3+JflUmSBJ3uggt1v9INW/lHNLKze9dJe1J3QJK8pSvWkm6aTtCet5puq+x63+AFQSwcIAPQ3VfcAAACcAQAAUEsBAi0DFAAIAAgA43mpVAD0N1X3AAAAnAEAAB8AAAAAAAAAAAAgAKSBAAAAAGV4YW1wbGVzL3RvZG9zL2Jhc2ljLmpvdXJuZXkudHNQSwUGAAAAAAEAAQBNAAAARAEAAAAA', + screenshots: 'on', + 'filter_journeys.match': 'check if title is present', + ignore_https_errors: false, + throttling: { download: 5, upload: 3, latency: 20 }, + original_space: 'default', + fields: { + meta: { space_id: 'default' }, + 'monitor.project.name': 'test-project-cb47c83a-45e7-416a-9301-cb476b5bff01', + 'monitor.project.id': 'test-project-cb47c83a-45e7-416a-9301-cb476b5bff01', + }, + fields_under_root: true, + max_attempts: 2, + }, + ], + }, + ], + license_level: rawExpect.any(String), + cloud_id: 'ftr_fake_cloud_id', + output: { hosts: [] }, + }), + ], + privateConfig: null, + }, + decodedCode: + '// asset:/Users/vigneshh/elastic/synthetics/examples/todos/basic.journey.ts\nimport { journey, step, expect } from "@elastic/synthetics";\njourney("check if title is present", ({ page, params }) => {\n step("launch app", async () => {\n await page.goto(params.url);\n });\n step("assert title", async () => {\n const header = await page.$("h1");\n expect(await header.textContent()).toBe("todos");\n });\n});\n', + }); + }); + + it('inspect http monitor in private location', async () => { + const location = await testPrivateLocations.addTestPrivateLocation(); + const apiResponse = await monitorTestService.inspectMonitor(editorUser, { + ..._monitors[0], + locations: [ + { + id: location.id, + label: location.label, + isServiceManaged: false, + }, + ], + }); + + const privateConfig = apiResponse.result.privateConfig!; + + const enabledStream = privateConfig.inputs + .find((input) => input.enabled) + ?.streams.find((stream) => stream.enabled); + + const compiledStream = enabledStream?.compiled_stream; + + delete compiledStream.id; + delete compiledStream.processors[0].add_fields.fields.config_id; + + expect(enabledStream?.compiled_stream).eql({ + __ui: { is_tls_enabled: false }, + type: 'http', + name: 'test-monitor-name', + origin: 'ui', + 'run_from.id': location.id, + 'run_from.geo.name': location.label, + enabled: true, + urls: 'https://nextjs-test-synthetics.vercel.app/api/users', + schedule: '@every 5m', + timeout: '180s', + max_redirects: 3, + max_attempts: 2, + proxy_url: 'http://proxy.com', + tags: ['tag1', 'tag2'], + username: 'test-username', + password: 'test', + 'response.include_headers': true, + 'response.include_body': 'never', + 'response.include_body_max_bytes': 1024, + 'check.request.method': null, + 'check.request.headers': { sampleHeader: 'sampleHeaderValue' }, + 'check.request.body': 'testValue', + 'check.response.status': ['200', '201'], + mode: 'any', + ipv4: true, + ipv6: true, + processors: [ + { + add_fields: { + target: '', + fields: { + meta: { space_id: 'default' }, + 'monitor.fleet_managed': true, + }, + }, + }, + ], + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sample_data/test_policy.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sample_data/test_policy.ts new file mode 100644 index 0000000000000..338d666d35517 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sample_data/test_policy.ts @@ -0,0 +1,575 @@ +/* + * 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 expect from 'expect'; +import { omit, sortBy } from 'lodash'; +import { PackagePolicy, PackagePolicyConfigRecord } from '@kbn/fleet-plugin/common'; +import { INSTALLED_VERSION } from '../../../../services/synthetics_private_location'; +import { commonVars } from './test_project_monitor_policy'; + +interface PolicyProps { + name?: string; + id: string; + configId?: string; + projectId?: string; + location: { name?: string; id?: string }; + namespace?: string; + isTLSEnabled?: boolean; + proxyUrl?: string; + params?: Record; + isBrowser?: boolean; + spaceId?: string; +} + +export const getTestSyntheticsPolicy = (props: PolicyProps): PackagePolicy => { + const { namespace } = props; + return { + id: '2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', + version: 'WzE2MjYsMV0=', + name: 'test-monitor-name-Test private location 0-default', + namespace: namespace ?? 'testnamespace', + package: { name: 'synthetics', title: 'Elastic Synthetics', version: INSTALLED_VERSION }, + enabled: true, + policy_id: '5347cd10-0368-11ed-8df7-a7424c6f5167', + policy_ids: ['5347cd10-0368-11ed-8df7-a7424c6f5167'], + inputs: [ + getHttpInput(props), + { + type: 'synthetics/tcp', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: false, + data_stream: { + type: 'synthetics', + dataset: 'tcp', + }, + vars: { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'tcp', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + hosts: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + proxy_url: { type: 'text' }, + processors: { type: 'yaml' }, + proxy_use_local_resolver: { value: false, type: 'bool' }, + tags: { type: 'yaml' }, + 'check.send': { type: 'text' }, + 'check.receive': { type: 'text' }, + 'ssl.certificate_authorities': { type: 'yaml' }, + 'ssl.certificate': { type: 'yaml' }, + 'ssl.key': { type: 'yaml' }, + 'ssl.key_passphrase': { type: 'text' }, + 'ssl.verification_mode': { type: 'text' }, + 'ssl.supported_protocols': { type: 'yaml' }, + location_name: { value: 'Fleet managed', type: 'text' }, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }, + id: 'synthetics/tcp-tcp-2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', + }, + ], + }, + { + type: 'synthetics/icmp', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: false, + data_stream: { + type: 'synthetics', + dataset: 'icmp', + }, + vars: { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'icmp', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + wait: { value: '1s', type: 'text' }, + hosts: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + tags: { type: 'yaml' }, + location_name: { value: 'Fleet managed', type: 'text' }, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }, + id: 'synthetics/icmp-icmp-2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', + }, + ], + }, + getBrowserInput(props), + ], + is_managed: true, + revision: 1, + created_at: '2022-08-23T14:09:17.176Z', + created_by: 'system', + updated_at: '2022-08-23T14:09:17.176Z', + updated_by: 'system', + }; +}; + +export const getHttpInput = ({ + projectId, + id, + location, + proxyUrl, + isTLSEnabled, + isBrowser, + spaceId, + namespace, + name = 'check if title is present-Test private location 0', +}: PolicyProps) => { + const enabled = !isBrowser; + const baseVars: PackagePolicyConfigRecord = { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'http', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + urls: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + max_redirects: { type: 'integer' }, + proxy_url: { type: 'text' }, + processors: { type: 'yaml' }, + proxy_headers: { type: 'yaml' }, + tags: { type: 'yaml' }, + username: { type: 'text' }, + password: { type: 'password' }, + 'response.include_headers': { type: 'bool' }, + 'response.include_body': { type: 'text' }, + 'response.include_body_max_bytes': { type: 'text' }, + 'check.request.method': { type: 'text' }, + 'check.request.headers': { type: 'yaml' }, + 'check.request.body': { type: 'yaml' }, + 'check.response.status': { type: 'yaml' }, + 'check.response.headers': { type: 'yaml' }, + 'check.response.body.positive': { type: 'yaml' }, + 'check.response.body.negative': { type: 'yaml' }, + 'check.response.json': { type: 'yaml' }, + 'ssl.certificate_authorities': { type: 'yaml' }, + 'ssl.certificate': { type: 'yaml' }, + 'ssl.key': { type: 'yaml' }, + 'ssl.key_passphrase': { type: 'text' }, + 'ssl.verification_mode': { type: 'text' }, + 'ssl.supported_protocols': { type: 'yaml' }, + location_id: { value: 'fleet_managed', type: 'text' }, + location_name: { value: 'Fleet managed', type: 'text' }, + ...commonVars, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }; + + const enabledVars = { + __ui: { + value: `{"is_tls_enabled":${isTLSEnabled || false}}`, + type: 'yaml', + }, + enabled: { value: true, type: 'bool' }, + type: { value: 'http', type: 'text' }, + name: { value: JSON.stringify(name), type: 'text' }, + schedule: { value: '"@every 5m"', type: 'text' }, + urls: { value: '"https://nextjs-test-synthetics.vercel.app/api/users"', type: 'text' }, + 'service.name': { value: null, type: 'text' }, + timeout: { value: '180s', type: 'text' }, + max_redirects: { value: '3', type: 'integer' }, + processors: { + type: 'yaml', + value: JSON.stringify([ + { + add_fields: { + fields: { + 'monitor.fleet_managed': true, + config_id: id, + meta: { space_id: spaceId ?? 'default' }, + 'monitor.project.name': projectId, + 'monitor.project.id': projectId, + }, + target: '', + }, + }, + ]), + }, + proxy_url: { value: proxyUrl ?? '"http://proxy.com"', type: 'text' }, + proxy_headers: { value: null, type: 'yaml' }, + tags: { value: '["tag1","tag2"]', type: 'yaml' }, + username: { value: '"test-username"', type: 'text' }, + password: { value: '"test"', type: 'password' }, + 'response.include_headers': { value: true, type: 'bool' }, + 'response.include_body': { value: 'never', type: 'text' }, + 'response.include_body_max_bytes': { value: '1024', type: 'text' }, + 'check.request.method': { value: '', type: 'text' }, + 'check.request.headers': { + value: '{"sampleHeader":"sampleHeaderValue"}', + type: 'yaml', + }, + 'check.request.body': { value: '"testValue"', type: 'yaml' }, + 'check.response.status': { value: '["200","201"]', type: 'yaml' }, + 'check.response.headers': { value: null, type: 'yaml' }, + 'check.response.body.positive': { value: null, type: 'yaml' }, + 'check.response.body.negative': { value: null, type: 'yaml' }, + 'check.response.json': { value: null, type: 'yaml' }, + 'ssl.certificate_authorities': { + value: isTLSEnabled ? '"t.string"' : null, + type: 'yaml', + }, + 'ssl.certificate': { value: isTLSEnabled ? '"t.string"' : null, type: 'yaml' }, + 'ssl.key': { value: isTLSEnabled ? '"t.string"' : null, type: 'yaml' }, + 'ssl.key_passphrase': { value: isTLSEnabled ? 't.string' : null, type: 'text' }, + 'ssl.verification_mode': { value: isTLSEnabled ? 'certificate' : null, type: 'text' }, + 'ssl.supported_protocols': { + value: isTLSEnabled ? '["TLSv1.1","TLSv1.2"]' : null, + type: 'yaml', + }, + location_id: { + type: 'text', + value: location.id ?? 'aaa3c150-f94d-11ed-9895-d36d5472fafd', + }, + location_name: { + value: JSON.stringify(location.name) ?? '"Test private location 0"', + type: 'text', + }, + ...commonVars, + id: { value: JSON.stringify(id), type: 'text' }, + origin: { value: projectId ? 'project' : 'ui', type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text', value: 'any' }, + }; + + const compiledHttpStream = { + __ui: { + is_tls_enabled: isTLSEnabled || false, + }, + type: 'http', + name, + id, + origin: projectId ? 'project' : 'ui', + enabled: true, + urls: 'https://nextjs-test-synthetics.vercel.app/api/users', + schedule: '@every 5m', + timeout: '180s', + max_redirects: 3, + max_attempts: 2, + proxy_url: proxyUrl ?? 'http://proxy.com', + tags: ['tag1', 'tag2'], + username: 'test-username', + password: 'test', + 'run_from.geo.name': location?.name ?? 'Test private location 0', + 'run_from.id': location?.id ?? 'Test private location 0', + 'response.include_headers': true, + 'response.include_body': 'never', + 'response.include_body_max_bytes': 1024, + 'check.request.method': null, + 'check.request.headers': { sampleHeader: 'sampleHeaderValue' }, + 'check.request.body': 'testValue', + 'check.response.status': ['200', '201'], + ipv4: true, + ipv6: true, + mode: 'any', + ...(isTLSEnabled + ? { + 'ssl.certificate': 't.string', + 'ssl.certificate_authorities': 't.string', + 'ssl.key': 't.string', + 'ssl.key_passphrase': 't.string', + 'ssl.verification_mode': 'certificate', + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2'], + } + : {}), + processors: [ + { + add_fields: { + fields: { + config_id: id, + meta: { + space_id: spaceId ?? 'default', + }, + 'monitor.fleet_managed': true, + ...(projectId + ? { 'monitor.project.id': projectId, 'monitor.project.name': projectId } + : {}), + }, + target: '', + }, + }, + ], + }; + + return { + type: 'synthetics/http', + policy_template: 'synthetics', + enabled, + streams: [ + { + enabled, + data_stream: { + type: 'synthetics', + dataset: 'http', + ...(enabled + ? { + elasticsearch: { + privileges: { + indices: ['auto_configure', 'create_doc', 'read'], + }, + }, + } + : {}), + }, + vars: enabled ? enabledVars : baseVars, + id: 'synthetics/http-http-2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', + ...(enabled ? { compiled_stream: compiledHttpStream } : {}), + }, + ], + }; +}; + +export const getBrowserInput = ({ id, params, isBrowser, projectId }: PolicyProps) => { + const compiledBrowser = isBrowser + ? { + __ui: { + script_source: { is_generated_script: false, file_name: '' }, + is_tls_enabled: false, + }, + type: 'browser', + name: 'Test HTTP Monitor 03', + id, + origin: 'ui', + 'run_from.id': 'Test private location 0', + 'run_from.geo.name': 'Test private location 0', + enabled: true, + schedule: '@every 3m', + timeout: '16s', + throttling: { download: 5, upload: 3, latency: 20 }, + tags: ['cookie-test', 'browser'], + 'source.inline.script': + 'step("Visit /users api route", async () => {\\n const response = await page.goto(\'https://nextjs-test-synthetics.vercel.app/api/users\');\\n expect(response.status()).toEqual(200);\\n});', + ...(params ? { params } : {}), + screenshots: 'on', + processors: [ + { + add_fields: { + target: '', + fields: { + 'monitor.fleet_managed': true, + config_id: id, + }, + }, + }, + ], + } + : { + __ui: null, + type: 'browser', + name: null, + enabled: true, + schedule: '@every 3m', + 'run_from.id': 'Fleet managed', + 'run_from.geo.name': 'Fleet managed', + timeout: null, + throttling: null, + processors: [{ add_fields: { target: '', fields: { 'monitor.fleet_managed': true } } }], + }; + + const browserVars = isBrowser + ? { + __ui: { + value: + '{"script_source":{"is_generated_script":false,"file_name":""},"is_tls_enabled":false}', + type: 'yaml', + }, + enabled: { value: true, type: 'bool' }, + type: { value: 'browser', type: 'text' }, + name: { value: 'Test HTTP Monitor 03', type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + 'service.name': { value: '', type: 'text' }, + timeout: { value: '16s', type: 'text' }, + tags: { value: '["cookie-test","browser"]', type: 'yaml' }, + 'source.zip_url.url': { type: 'text' }, + 'source.zip_url.username': { type: 'text' }, + 'source.zip_url.folder': { type: 'text' }, + 'source.zip_url.password': { type: 'password' }, + 'source.inline.script': { + value: + '"step(\\"Visit /users api route\\", async () => {\\\\n const response = await page.goto(\'https://nextjs-test-synthetics.vercel.app/api/users\');\\\\n expect(response.status()).toEqual(200);\\\\n});"', + type: 'yaml', + }, + 'source.project.content': { value: '', type: 'text' }, + params: { value: params ? JSON.stringify(params) : '', type: 'yaml' }, + playwright_options: { value: '', type: 'yaml' }, + screenshots: { value: 'on', type: 'text' }, + synthetics_args: { value: null, type: 'text' }, + ignore_https_errors: { value: false, type: 'bool' }, + 'throttling.config': { + value: JSON.stringify({ download: 5, upload: 3, latency: 20 }), + type: 'text', + }, + 'filter_journeys.tags': { value: null, type: 'yaml' }, + 'filter_journeys.match': { value: null, type: 'text' }, + 'source.zip_url.ssl.certificate_authorities': { type: 'yaml' }, + 'source.zip_url.ssl.certificate': { type: 'yaml' }, + 'source.zip_url.ssl.key': { type: 'yaml' }, + 'source.zip_url.ssl.key_passphrase': { type: 'text' }, + 'source.zip_url.ssl.verification_mode': { type: 'text' }, + 'source.zip_url.ssl.supported_protocols': { type: 'yaml' }, + 'source.zip_url.proxy_url': { type: 'text' }, + location_id: { + type: 'text', + value: 'fleet_managed', + }, + location_name: { value: 'Test private location 0', type: 'text' }, + id: { value: id, type: 'text' }, + origin: { value: 'ui', type: 'text' }, + } + : { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'browser', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + tags: { type: 'yaml' }, + 'source.zip_url.url': { type: 'text' }, + 'source.zip_url.username': { type: 'text' }, + 'source.zip_url.folder': { type: 'text' }, + 'source.zip_url.password': { type: 'password' }, + 'source.inline.script': { type: 'yaml' }, + 'source.project.content': { type: 'text' }, + params: { type: 'yaml' }, + playwright_options: { type: 'yaml' }, + screenshots: { type: 'text' }, + synthetics_args: { type: 'text' }, + ignore_https_errors: { type: 'bool' }, + 'throttling.config': { type: 'text' }, + 'filter_journeys.tags': { type: 'yaml' }, + 'filter_journeys.match': { type: 'text' }, + 'source.zip_url.ssl.certificate_authorities': { type: 'yaml' }, + 'source.zip_url.ssl.certificate': { type: 'yaml' }, + 'source.zip_url.ssl.key': { type: 'yaml' }, + 'source.zip_url.ssl.key_passphrase': { type: 'text' }, + 'source.zip_url.ssl.verification_mode': { type: 'text' }, + 'source.zip_url.ssl.supported_protocols': { type: 'yaml' }, + 'source.zip_url.proxy_url': { type: 'text' }, + location_name: { value: 'Fleet managed', type: 'text' }, + location_id: { value: 'Fleet managed', type: 'text' }, + id: { type: 'text' }, + origin: { type: 'text' }, + }; + + return { + type: 'synthetics/browser', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: true, + data_stream: getDataStream('browser'), + vars: browserVars, + id: 'synthetics/browser-browser-2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', + compiled_stream: compiledBrowser, + }, + { + enabled: true, + data_stream: getDataStream('browser.network'), + id: 'synthetics/browser-browser.network-2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', + compiled_stream: { + processors: [{ add_fields: { target: '', fields: { 'monitor.fleet_managed': true } } }], + }, + }, + { + enabled: true, + data_stream: getDataStream('browser.screenshot'), + id: 'synthetics/browser-browser.screenshot-2bfd7da0-22ed-11ed-8c6b-09a2d21dfbc3-27337270-22ed-11ed-8c6b-09a2d21dfbc3-default', + compiled_stream: { + processors: [{ add_fields: { target: '', fields: { 'monitor.fleet_managed': true } } }], + }, + }, + ], + }; +}; + +export const getDataStream = (dataset: string) => ({ + dataset, + type: 'synthetics', + elasticsearch: { + privileges: { + indices: ['auto_configure', 'create_doc', 'read'], + }, + }, +}); + +export const omitIds = (policy: PackagePolicy) => { + policy.inputs = sortBy(policy.inputs, 'type'); + + policy.inputs.forEach((input) => { + input.streams = sortBy(input.streams, 'data_stream.dataset'); + input.streams.forEach((stream) => { + stream.id = ''; + }); + }); + + return omit(policy, ignoreTestFields); +}; + +export const comparePolicies = (aPolicy: PackagePolicy, bPolicy: PackagePolicy) => { + const a = omitIds(aPolicy); + const b = omitIds(bPolicy); + + const aHttpInput = a.inputs?.find((input) => input.type === 'synthetics/http'); + const aTcpInput = b.inputs?.find((input) => input.type === 'synthetics/tcp'); + const aIcmpInput = b.inputs?.find((input) => input.type === 'synthetics/icmp'); + const aBrowserInput = b.inputs?.find((input) => input.type === 'synthetics/browser'); + + const bHttpInput = b.inputs?.find((input) => input.type === 'synthetics/http'); + const bTcpInput = b.inputs?.find((input) => input.type === 'synthetics/tcp'); + const bIcmpInput = b.inputs?.find((input) => input.type === 'synthetics/icmp'); + const bBrowserInput = b.inputs?.find((input) => input.type === 'synthetics/browser'); + + expect(aHttpInput).toEqual(bHttpInput); + expect(aTcpInput).toEqual(bTcpInput); + expect(aIcmpInput).toEqual(bIcmpInput); + expect(aBrowserInput).toEqual(bBrowserInput); + + // delete inputs to compare rest of policy + delete a.inputs; + delete b.inputs; + + // delete package to compare rest of policy + delete a.package; + delete b.package; + + expect(a).toEqual(b); +}; + +export const ignoreTestFields = [ + 'id', + 'name', + 'created_at', + 'created_by', + 'updated_at', + 'updated_by', + 'policy_id', + 'policy_ids', + 'version', + 'revision', +]; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sample_data/test_project_monitor_policy.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sample_data/test_project_monitor_policy.ts new file mode 100644 index 0000000000000..cf9025fb8ce7f --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sample_data/test_project_monitor_policy.ts @@ -0,0 +1,803 @@ +/* + * 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 { PackagePolicy } from '@kbn/fleet-plugin/common'; +import { INSTALLED_VERSION } from '../../../../services/synthetics_private_location'; +import { getDataStream } from './test_policy'; + +export const commonVars = { + max_attempts: { + type: 'integer', + value: 2, + }, +}; + +export const getTestProjectSyntheticsPolicyLightweight = ( + { + name, + inputs = {}, + configId, + id, + locationId, + projectId = 'test-suite', + locationName = 'Fleet Managed', + namespace, + }: { + name?: string; + inputs: Record; + configId: string; + id: string; + projectId?: string; + locationId: string; + locationName?: string; + namespace?: string; + } = { + name: 'My Monitor 3', + inputs: {}, + configId: '', + id: '', + locationId: 'fleet_managed', + locationName: 'Fleet Managed', + } +): PackagePolicy => ({ + id: `4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + version: 'WzEzMDksMV0=', + name: `4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-${locationName}`, + namespace: namespace || undefined, + package: { name: 'synthetics', title: 'Elastic Synthetics', version: INSTALLED_VERSION }, + enabled: true, + policy_id: '46034710-0ba6-11ed-ba04-5f123b9faa8b', + policy_ids: ['46034710-0ba6-11ed-ba04-5f123b9faa8b'], + inputs: [ + { + type: 'synthetics/http', + policy_template: 'synthetics', + enabled: true, + streams: [ + { + enabled: true, + data_stream: { + type: 'synthetics', + dataset: 'http', + elasticsearch: { + privileges: { + indices: ['auto_configure', 'create_doc', 'read'], + }, + }, + }, + vars: { + __ui: { + type: 'yaml', + value: '{"is_tls_enabled":true}', + }, + 'check.request.body': { + type: 'yaml', + value: '"testGlobalParamValue"', + }, + 'check.request.headers': { + type: 'yaml', + value: '{"Content-Type":"application/x-www-form-urlencoded"}', + }, + 'check.request.method': { + type: 'text', + value: 'POST', + }, + 'check.response.body.negative': { + type: 'yaml', + value: null, + }, + 'check.response.body.positive': { + type: 'yaml', + value: '["testLocalParamsValue","saved"]', + }, + 'check.response.headers': { + type: 'yaml', + value: null, + }, + 'check.response.json': { + type: 'yaml', + value: '[{"description":"check status","expression":"foo.bar == \\"myValue\\""}]', + }, + 'check.response.status': { + type: 'yaml', + value: '["200"]', + }, + enabled: { + type: 'bool', + value: false, + }, + id: { + type: 'text', + value: JSON.stringify(id), + }, + ipv4: { + type: 'bool', + value: true, + }, + ipv6: { + type: 'bool', + value: true, + }, + location_id: { + type: 'text', + value: locationId ?? 'fleet_managed', + }, + location_name: { + type: 'text', + value: `"${locationName}"`, + }, + max_redirects: { + type: 'integer', + value: '0', + }, + ...commonVars, + mode: { + type: 'text', + value: 'any', + }, + name: { + type: 'text', + value: JSON.stringify(name), + }, + origin: { + type: 'text', + value: 'project', + }, + password: { + type: 'password', + value: null, + }, + processors: { + type: 'yaml', + value: JSON.stringify([ + { + add_fields: { + fields: { + 'monitor.fleet_managed': true, + config_id: configId, + 'monitor.project.name': projectId, + 'monitor.project.id': projectId, + meta: { space_id: 'default' }, + }, + target: '', + }, + }, + ]), + }, + proxy_headers: { + type: 'yaml', + value: null, + }, + proxy_url: { + type: 'text', + value: JSON.stringify('testGlobalParamOverwrite'), + }, + 'response.include_body': { + type: 'text', + value: 'always', + }, + 'response.include_body_max_bytes': { + type: 'text', + value: '900', + }, + 'response.include_headers': { + type: 'bool', + value: false, + }, + schedule: { + type: 'text', + value: '"@every 60m"', + }, + 'service.name': { + type: 'text', + value: null, + }, + 'ssl.certificate': { + type: 'yaml', + value: null, + }, + 'ssl.certificate_authorities': { + type: 'yaml', + value: null, + }, + 'ssl.key': { + type: 'yaml', + value: null, + }, + 'ssl.key_passphrase': { + type: 'text', + value: null, + }, + 'ssl.supported_protocols': { + type: 'yaml', + value: '["TLSv1.1","TLSv1.2","TLSv1.3"]', + }, + 'ssl.verification_mode': { + type: 'text', + value: 'strict', + }, + tags: { + type: 'yaml', + value: '["tag2","tag2"]', + }, + timeout: { + type: 'text', + value: '80s', + }, + type: { + type: 'text', + value: 'http', + }, + urls: { + type: 'text', + value: '"http://localhost:9200"', + }, + username: { + type: 'text', + value: null, + }, + }, + compiled_stream: { + __ui: { + is_tls_enabled: true, + }, + type: 'http', + name, + id, + origin: 'project', + enabled: false, + urls: 'http://localhost:9200', + schedule: '@every 60m', + timeout: '80s', + max_redirects: 0, + max_attempts: 2, + tags: ['tag2', 'tag2'], + proxy_url: 'testGlobalParamOverwrite', + 'run_from.geo.name': locationName ?? 'Test private location 0', + 'run_from.id': locationId ?? 'Test private location 0', + 'response.include_headers': false, + 'response.include_body': 'always', + 'response.include_body_max_bytes': 900, + 'ssl.supported_protocols': ['TLSv1.1', 'TLSv1.2', 'TLSv1.3'], + 'ssl.verification_mode': 'strict', + 'check.request.method': 'POST', + 'check.request.headers': { 'Content-Type': 'application/x-www-form-urlencoded' }, + 'check.response.body.positive': ['testLocalParamsValue', 'saved'], + 'check.response.json': [ + { + description: 'check status', + expression: 'foo.bar == "myValue"', + }, + ], + 'check.response.status': ['200'], + 'check.request.body': 'testGlobalParamValue', + ipv4: true, + ipv6: true, + mode: 'any', + processors: [ + { + add_fields: { + fields: { + config_id: configId, + 'monitor.fleet_managed': true, + 'monitor.project.id': projectId, + 'monitor.project.name': projectId, + meta: { space_id: 'default' }, + }, + target: '', + }, + }, + ], + }, + id: `synthetics/http-http-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + }, + ], + }, + { + type: 'synthetics/tcp', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: false, + data_stream: { + type: 'synthetics', + dataset: 'tcp', + }, + vars: { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'tcp', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + hosts: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + proxy_url: { type: 'text' }, + proxy_use_local_resolver: { value: false, type: 'bool' }, + tags: { type: 'yaml' }, + 'check.send': { type: 'text' }, + 'check.receive': { type: 'text' }, + 'ssl.certificate_authorities': { type: 'yaml' }, + 'ssl.certificate': { type: 'yaml' }, + 'ssl.key': { type: 'yaml' }, + 'ssl.key_passphrase': { type: 'text' }, + 'ssl.verification_mode': { type: 'text' }, + 'ssl.supported_protocols': { type: 'yaml' }, + location_id: { value: 'fleet_managed', type: 'text' }, + location_name: { value: 'Fleet managed', type: 'text' }, + ...commonVars, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }, + id: `synthetics/tcp-tcp-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + }, + ], + }, + { + type: 'synthetics/icmp', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: false, + data_stream: { + type: 'synthetics', + dataset: 'icmp', + }, + vars: { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'icmp', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + wait: { value: '1s', type: 'text' }, + hosts: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + tags: { type: 'yaml' }, + location_id: { value: 'fleet_managed', type: 'text' }, + location_name: { value: 'Fleet managed', type: 'text' }, + ...commonVars, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }, + id: `synthetics/icmp-icmp-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + }, + ], + }, + { + type: 'synthetics/browser', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: true, + data_stream: { + type: 'synthetics', + dataset: 'browser', + elasticsearch: { + privileges: { + indices: ['auto_configure', 'create_doc', 'read'], + }, + }, + }, + vars: { + __ui: { + type: 'yaml', + }, + enabled: { value: true, type: 'bool' }, + type: { value: 'browser', type: 'text' }, + name: { type: 'text' }, + schedule: { value: JSON.stringify('@every 3m'), type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + tags: { type: 'yaml' }, + 'source.zip_url.url': { type: 'text' }, + 'source.zip_url.username': { type: 'text' }, + 'source.zip_url.folder': { type: 'text' }, + 'source.zip_url.password': { type: 'password' }, + 'source.inline.script': { type: 'yaml' }, + 'source.project.content': { + type: 'text', + }, + params: { + type: 'yaml', + }, + playwright_options: { + type: 'yaml', + }, + screenshots: { type: 'text' }, + synthetics_args: { type: 'text' }, + ignore_https_errors: { type: 'bool' }, + 'throttling.config': { + type: 'text', + }, + 'filter_journeys.tags': { type: 'yaml' }, + 'filter_journeys.match': { type: 'text' }, + 'source.zip_url.ssl.certificate_authorities': { type: 'yaml' }, + 'source.zip_url.ssl.certificate': { type: 'yaml' }, + 'source.zip_url.ssl.key': { type: 'yaml' }, + 'source.zip_url.ssl.key_passphrase': { type: 'text' }, + 'source.zip_url.ssl.verification_mode': { type: 'text' }, + 'source.zip_url.ssl.supported_protocols': { type: 'yaml' }, + 'source.zip_url.proxy_url': { type: 'text' }, + location_id: { value: 'fleet_managed', type: 'text' }, + location_name: { value: 'Fleet managed', type: 'text' }, + ...commonVars, + id: { type: 'text' }, + origin: { type: 'text' }, + ...inputs, + }, + id: `synthetics/browser-browser-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + compiled_stream: { + __ui: null, + type: 'browser', + name: null, + enabled: true, + schedule: '@every 3m', + timeout: null, + throttling: null, + processors: [ + { + add_fields: { + target: '', + fields: { + 'monitor.fleet_managed': true, + }, + }, + }, + ], + 'run_from.geo.name': 'Fleet managed', + 'run_from.id': 'Fleet managed', + ...Object.keys(inputs).reduce((acc: Record, key) => { + acc[key] = inputs[key].value; + return acc; + }, {}), + }, + }, + { + enabled: true, + data_stream: { + type: 'synthetics', + dataset: 'browser.network', + elasticsearch: { + privileges: { + indices: ['auto_configure', 'create_doc', 'read'], + }, + }, + }, + id: `synthetics/browser-browser.network-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + compiled_stream: { + processors: [{ add_fields: { target: '', fields: { 'monitor.fleet_managed': true } } }], + }, + }, + { + enabled: true, + data_stream: { + type: 'synthetics', + dataset: 'browser.screenshot', + elasticsearch: { + privileges: { + indices: ['auto_configure', 'create_doc', 'read'], + }, + }, + }, + id: `synthetics/browser-browser.screenshot-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + compiled_stream: { + processors: [{ add_fields: { target: '', fields: { 'monitor.fleet_managed': true } } }], + }, + }, + ], + }, + ], + is_managed: true, + revision: 1, + created_at: '2022-08-23T13:52:42.531Z', + created_by: 'system', + updated_at: '2022-08-23T13:52:42.531Z', + updated_by: 'system', +}); + +export const getTestProjectSyntheticsPolicy = ( + { + name, + inputs = {}, + configId, + id, + projectId = 'test-suite', + locationId, + locationName = 'Fleet Managed', + namespace, + }: { + name?: string; + inputs: Record; + configId: string; + id: string; + projectId?: string; + locationName?: string; + locationId: string; + namespace?: string; + } = { + name: 'check if title is present-Test private location 0', + inputs: {}, + configId: '', + id: '', + locationId: 'fleet_managed', + locationName: 'Fleet Managed', + } +): PackagePolicy => ({ + id: `4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + version: 'WzEzMDksMV0=', + name: `4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-Test private location 0`, + namespace: namespace || undefined, + package: { name: 'synthetics', title: 'Elastic Synthetics', version: INSTALLED_VERSION }, + enabled: true, + policy_id: '46034710-0ba6-11ed-ba04-5f123b9faa8b', + policy_ids: ['46034710-0ba6-11ed-ba04-5f123b9faa8b'], + inputs: [ + { + type: 'synthetics/http', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: false, + data_stream: { + type: 'synthetics', + dataset: 'http', + }, + vars: { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'http', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + urls: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + max_redirects: { type: 'integer' }, + proxy_url: { type: 'text' }, + processors: { type: 'yaml' }, + proxy_headers: { type: 'yaml' }, + tags: { type: 'yaml' }, + username: { type: 'text' }, + password: { type: 'password' }, + 'response.include_headers': { type: 'bool' }, + 'response.include_body': { type: 'text' }, + 'response.include_body_max_bytes': { type: 'text' }, + 'check.request.method': { type: 'text' }, + 'check.request.headers': { type: 'yaml' }, + 'check.request.body': { type: 'yaml' }, + 'check.response.status': { type: 'yaml' }, + 'check.response.headers': { type: 'yaml' }, + 'check.response.body.positive': { type: 'yaml' }, + 'check.response.body.negative': { type: 'yaml' }, + 'check.response.json': { type: 'yaml' }, + 'ssl.certificate_authorities': { type: 'yaml' }, + 'ssl.certificate': { type: 'yaml' }, + 'ssl.key': { type: 'yaml' }, + 'ssl.key_passphrase': { type: 'text' }, + 'ssl.verification_mode': { type: 'text' }, + 'ssl.supported_protocols': { type: 'yaml' }, + location_id: { value: 'fleet_managed', type: 'text' }, + location_name: { value: 'Fleet managed', type: 'text' }, + ...commonVars, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }, + id: `synthetics/http-http-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + }, + ], + }, + { + type: 'synthetics/tcp', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: false, + data_stream: { + type: 'synthetics', + dataset: 'tcp', + }, + vars: { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'tcp', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + hosts: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + proxy_url: { type: 'text' }, + proxy_use_local_resolver: { value: false, type: 'bool' }, + tags: { type: 'yaml' }, + 'check.send': { type: 'text' }, + 'check.receive': { type: 'text' }, + 'ssl.certificate_authorities': { type: 'yaml' }, + 'ssl.certificate': { type: 'yaml' }, + 'ssl.key': { type: 'yaml' }, + 'ssl.key_passphrase': { type: 'text' }, + 'ssl.verification_mode': { type: 'text' }, + 'ssl.supported_protocols': { type: 'yaml' }, + location_name: { value: 'Fleet managed', type: 'text' }, + ...commonVars, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }, + id: `synthetics/tcp-tcp-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + }, + ], + }, + { + type: 'synthetics/icmp', + policy_template: 'synthetics', + enabled: false, + streams: [ + { + enabled: false, + data_stream: { + type: 'synthetics', + dataset: 'icmp', + }, + vars: { + __ui: { type: 'yaml' }, + enabled: { value: true, type: 'bool' }, + type: { value: 'icmp', type: 'text' }, + name: { type: 'text' }, + schedule: { value: '"@every 3m"', type: 'text' }, + wait: { value: '1s', type: 'text' }, + hosts: { type: 'text' }, + 'service.name': { type: 'text' }, + timeout: { type: 'text' }, + tags: { type: 'yaml' }, + location_name: { value: 'Fleet managed', type: 'text' }, + max_attempts: { + type: 'integer', + value: 2, + }, + id: { type: 'text' }, + origin: { type: 'text' }, + ipv4: { type: 'bool', value: true }, + ipv6: { type: 'bool', value: true }, + mode: { type: 'text' }, + }, + id: `synthetics/icmp-icmp-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + }, + ], + }, + { + type: 'synthetics/browser', + policy_template: 'synthetics', + enabled: true, + streams: [ + { + enabled: true, + data_stream: getDataStream('browser'), + vars: { + __ui: { + value: '{"script_source":{"is_generated_script":false,"file_name":""}}', + type: 'yaml', + }, + enabled: { value: true, type: 'bool' }, + type: { value: 'browser', type: 'text' }, + name: { value: '"check if title is present"', type: 'text' }, + schedule: { value: '"@every 10m"', type: 'text' }, + 'service.name': { value: null, type: 'text' }, + timeout: { value: null, type: 'text' }, + tags: { value: null, type: 'yaml' }, + 'source.zip_url.url': { type: 'text' }, + 'source.zip_url.username': { type: 'text' }, + 'source.zip_url.folder': { type: 'text' }, + 'source.zip_url.password': { type: 'password' }, + 'source.inline.script': { value: null, type: 'yaml' }, + 'source.project.content': { + value: + 'UEsDBBQACAAIAON5qVQAAAAAAAAAAAAAAAAfAAAAZXhhbXBsZXMvdG9kb3MvYmFzaWMuam91cm5leS50c22Q0WrDMAxF3/sVF7MHB0LMXlc6RvcN+wDPVWNviW0sdUsp/fe5SSiD7UFCWFfHujIGlpnkybwxFTZfoY/E3hsaLEtwhs9RPNWKDU12zAOxkXRIbN4tB9d9pFOJdO6EN2HMqQguWN9asFBuQVMmJ7jiWNII9fIXrbabdUYr58l9IhwhQQZCYORCTFFUC31Btj21NRc7Mq4Nds+4bDD/pNVgT9F52Jyr2Fa+g75LAPttg8yErk+S9ELpTmVotlVwnfNCuh2lepl3+JflUmSBJ3uggt1v9INW/lHNLKze9dJe1J3QJK8pSvWkm6aTtCet5puq+x63+AFQSwcIAPQ3VfcAAACcAQAAUEsBAi0DFAAIAAgA43mpVAD0N1X3AAAAnAEAAB8AAAAAAAAAAAAgAKSBAAAAAGV4YW1wbGVzL3RvZG9zL2Jhc2ljLmpvdXJuZXkudHNQSwUGAAAAAAEAAQBNAAAARAEAAAAA', + type: 'text', + }, + params: { + value: + '{"testGlobalParam2":"testGlobalParamValue2","testGlobalParam":"testGlobalParamValue"}', + type: 'yaml', + }, + playwright_options: { + value: '{"headless":true,"chromiumSandbox":false}', + type: 'yaml', + }, + screenshots: { value: 'on', type: 'text' }, + synthetics_args: { value: null, type: 'text' }, + ignore_https_errors: { value: false, type: 'bool' }, + 'throttling.config': { + value: JSON.stringify({ download: 5, upload: 3, latency: 20 }), + type: 'text', + }, + 'filter_journeys.tags': { value: null, type: 'yaml' }, + 'filter_journeys.match': { value: '"check if title is present"', type: 'text' }, + 'source.zip_url.ssl.certificate_authorities': { type: 'yaml' }, + 'source.zip_url.ssl.certificate': { type: 'yaml' }, + 'source.zip_url.ssl.key': { type: 'yaml' }, + 'source.zip_url.ssl.key_passphrase': { type: 'text' }, + 'source.zip_url.ssl.verification_mode': { type: 'text' }, + 'source.zip_url.ssl.supported_protocols': { type: 'yaml' }, + 'source.zip_url.proxy_url': { type: 'text' }, + location_name: { value: 'Test private location 0', type: 'text' }, + ...commonVars, + location_id: { value: 'fleet_managed', type: 'text' }, + id: { value: id, type: 'text' }, + origin: { value: 'project', type: 'text' }, + ...inputs, + }, + id: `synthetics/browser-browser-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + compiled_stream: { + __ui: { + script_source: { is_generated_script: false, file_name: '' }, + }, + type: 'browser', + name: 'check if title is present', + id, + origin: 'project', + enabled: true, + schedule: '@every 10m', + 'run_from.geo.name': locationName, + 'run_from.id': locationId, + timeout: null, + throttling: { download: 5, upload: 3, latency: 20 }, + 'source.project.content': + 'UEsDBBQACAAIAON5qVQAAAAAAAAAAAAAAAAfAAAAZXhhbXBsZXMvdG9kb3MvYmFzaWMuam91cm5leS50c22Q0WrDMAxF3/sVF7MHB0LMXlc6RvcN+wDPVWNviW0sdUsp/fe5SSiD7UFCWFfHujIGlpnkybwxFTZfoY/E3hsaLEtwhs9RPNWKDU12zAOxkXRIbN4tB9d9pFOJdO6EN2HMqQguWN9asFBuQVMmJ7jiWNII9fIXrbabdUYr58l9IhwhQQZCYORCTFFUC31Btj21NRc7Mq4Nds+4bDD/pNVgT9F52Jyr2Fa+g75LAPttg8yErk+S9ELpTmVotlVwnfNCuh2lepl3+JflUmSBJ3uggt1v9INW/lHNLKze9dJe1J3QJK8pSvWkm6aTtCet5puq+x63+AFQSwcIAPQ3VfcAAACcAQAAUEsBAi0DFAAIAAgA43mpVAD0N1X3AAAAnAEAAB8AAAAAAAAAAAAgAKSBAAAAAGV4YW1wbGVzL3RvZG9zL2Jhc2ljLmpvdXJuZXkudHNQSwUGAAAAAAEAAQBNAAAARAEAAAAA', + playwright_options: { headless: true, chromiumSandbox: false }, + screenshots: 'on', + 'filter_journeys.match': 'check if title is present', + params: { + testGlobalParam: 'testGlobalParamValue', + testGlobalParam2: 'testGlobalParamValue2', + }, + ...Object.keys(inputs).reduce((acc: Record, key) => { + acc[key] = inputs[key].value; + return acc; + }, {}), + }, + }, + { + enabled: true, + data_stream: getDataStream('browser.network'), + id: `synthetics/browser-browser.network-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + compiled_stream: { + processors: [{ add_fields: { target: '', fields: { 'monitor.fleet_managed': true } } }], + }, + }, + { + enabled: true, + data_stream: getDataStream('browser.screenshot'), + id: `synthetics/browser-browser.screenshot-4b6abc6c-118b-4d93-a489-1135500d09f1-${projectId}-default-d70a46e0-22ea-11ed-8c6b-09a2d21dfbc3`, + compiled_stream: { + processors: [{ add_fields: { target: '', fields: { 'monitor.fleet_managed': true } } }], + }, + }, + ], + }, + ], + is_managed: true, + revision: 1, + created_at: '2022-08-23T13:52:42.531Z', + created_by: 'system', + updated_at: '2022-08-23T13:52:42.531Z', + updated_by: 'system', +}); diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/suggestions.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/suggestions.ts new file mode 100644 index 0000000000000..d6a42b6cc8972 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/suggestions.ts @@ -0,0 +1,276 @@ +/* + * 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 { v4 as uuidv4 } from 'uuid'; +import expect from 'expect'; +import { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + MonitorFields, + EncryptedSyntheticsSavedMonitor, + ProjectMonitorsRequest, + PrivateLocation, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { syntheticsMonitorType } from '@kbn/synthetics-plugin/common/types/saved_objects'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('SyntheticsSuggestions', function () { + const supertest = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + const privateLocationsTestService = new PrivateLocationTestService(getService); + + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + + let projectMonitors: ProjectMonitorsRequest; + let _monitors: MonitorFields[]; + let monitors: MonitorFields[]; + let editorUser: RoleCredentials; + let privateLocation: PrivateLocation; + + const setUniqueIds = (request: ProjectMonitorsRequest) => { + return { + ...request, + monitors: request.monitors.map((monitor) => ({ + ...monitor, + id: uuidv4(), + locations: [], + privateLocations: [privateLocation.label], + })), + }; + }; + + const saveMonitor = async (monitor: MonitorFields) => { + const res = await supertest + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(monitor); + + return res.body as EncryptedSyntheticsSavedMonitor; + }; + + before(async () => { + await kibanaServer.savedObjects.clean({ + types: [ + syntheticsMonitorType, + 'ingest-agent-policies', + 'ingest-package-policies', + 'synthetics-private-location', + ], + }); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + privateLocation = await privateLocationsTestService.addTestPrivateLocation(SPACE_ID); + _monitors = [getFixtureJson('http_monitor')].map((monitor) => ({ + ...monitor, + locations: [privateLocation], + })); + projectMonitors = setUniqueIds({ + monitors: getFixtureJson('project_icmp_monitor') + .monitors.slice(0, 2) + .map((monitor: any) => ({ + ...monitor, + privateLocations: [privateLocation.label], + locations: [], + })), + }); + }); + + beforeEach(async () => { + await kibanaServer.savedObjects.clean({ + types: [syntheticsMonitorType, 'ingest-package-policies'], + }); + + monitors = []; + for (let i = 0; i < 20; i++) { + monitors.push({ + ..._monitors[0], + locations: [privateLocation], + name: `${_monitors[0].name} ${i}`, + }); + } + }); + + after(async () => { + await kibanaServer.spaces.delete(SPACE_ID); + }); + + it('returns the suggestions', async () => { + const project = `test-project-${uuidv4()}`; + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + for (let i = 0; i < monitors.length; i++) { + await saveMonitor(monitors[i]); + } + const apiResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SUGGESTIONS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + expect(apiResponse.body).toEqual({ + locations: [ + { + count: 22, + label: privateLocation.label, + value: privateLocation.id, + }, + ], + monitorIds: expect.arrayContaining([ + ...monitors.map((monitor) => ({ + count: 1, + label: monitor.name, + value: expect.any(String), + })), + ...projectMonitors.monitors.slice(0, 2).map((monitor) => ({ + count: 1, + label: monitor.name, + value: expect.any(String), + })), + ]), + monitorTypes: [ + { + count: 20, + label: 'http', + value: 'http', + }, + { + count: 2, + label: 'icmp', + value: 'icmp', + }, + ], + projects: [ + { + count: 2, + label: project, + value: project, + }, + ], + tags: expect.arrayContaining([ + { + count: 21, + label: 'tag1', + value: 'tag1', + }, + { + count: 21, + label: 'tag2', + value: 'tag2', + }, + { + count: 1, + label: 'org:google', + value: 'org:google', + }, + { + count: 1, + label: 'service:smtp', + value: 'service:smtp', + }, + ]), + }); + }); + + it('handles query params for projects', async () => { + for (let i = 0; i < monitors.length; i++) { + await saveMonitor(monitors[i]); + } + const project = `test-project-${uuidv4()}`; + await supertest + .put( + `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace( + '{projectName}', + project + )}` + ) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(projectMonitors) + .expect(200); + + const apiResponse = await supertest + .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SUGGESTIONS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .query({ + projects: [project], + }) + .expect(200); + + expect(apiResponse.body).toEqual({ + locations: [ + { + count: 2, + label: privateLocation.label, + value: privateLocation.id, + }, + ], + monitorIds: expect.arrayContaining( + projectMonitors.monitors.map((monitor) => ({ + count: 1, + label: monitor.name, + value: expect.any(String), + })) + ), + monitorTypes: [ + { + count: 2, + label: 'icmp', + value: 'icmp', + }, + ], + projects: [ + { + count: 2, + label: project, + value: project, + }, + ], + tags: expect.arrayContaining([ + { + count: 1, + label: 'tag1', + value: 'tag1', + }, + { + count: 1, + label: 'tag2', + value: 'tag2', + }, + { + count: 1, + label: 'org:google', + value: 'org:google', + }, + { + count: 1, + label: 'service:smtp', + value: 'service:smtp', + }, + ]), + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sync_global_params.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sync_global_params.ts new file mode 100644 index 0000000000000..425eb0c704b50 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/sync_global_params.ts @@ -0,0 +1,354 @@ +/* + * 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 { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { + ConfigKey, + HTTPFields, + LocationStatus, + PrivateLocation, + ServiceLocation, + SyntheticsParams, +} from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { PackagePolicy } from '@kbn/fleet-plugin/common'; +import expect from '@kbn/expect'; +import { syntheticsParamType } from '@kbn/synthetics-plugin/common/types/saved_objects'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { PrivateLocationTestService } from '../../../services/synthetics_private_location'; +import { comparePolicies, getTestSyntheticsPolicy } from './sample_data/test_policy'; +import { addMonitorAPIHelper, omitMonitorKeys } from './create_monitor'; + +export const LOCAL_LOCATION = { + id: 'dev', + label: 'Dev Service', + geo: { + lat: 0, + lon: 0, + }, + isServiceManaged: true, +}; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe.skip('SyncGlobalParams', function () { + this.tags('skipCloud'); + const supertestAPI = getService('supertestWithoutAuth'); + const supertestWithAuth = getService('supertest'); + const kServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + + let testFleetPolicyID: string; + let _browserMonitorJson: HTTPFields; + let browserMonitorJson: HTTPFields; + + let _httpMonitorJson: HTTPFields; + let httpMonitorJson: HTTPFields; + + let newMonitorId: string; + let newHttpMonitorId: string; + let privateLocations: PrivateLocation[] = []; + + let editorUser: RoleCredentials; + + const testPrivateLocations = new PrivateLocationTestService(getService); + const params: Record = {}; + + const addMonitorAPI = async (monitor: any, statusCode = 200) => { + return addMonitorAPIHelper(supertestAPI, monitor, statusCode, editorUser, samlAuth); + }; + + before(async () => { + await kServer.savedObjects.cleanStandardList(); + await testPrivateLocations.installSyntheticsPackage(); + + _browserMonitorJson = getFixtureJson('browser_monitor'); + _httpMonitorJson = getFixtureJson('http_monitor'); + await kServer.savedObjects.clean({ types: [syntheticsParamType] }); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + }); + + beforeEach(() => { + browserMonitorJson = _browserMonitorJson; + httpMonitorJson = _httpMonitorJson; + }); + + const testPolicyName = 'Fleet test server policy' + Date.now(); + + it('adds a test fleet policy', async () => { + const apiResponse = await testPrivateLocations.addFleetPolicy(testPolicyName); + testFleetPolicyID = apiResponse.body.item.id; + }); + + it('add a test private location', async () => { + privateLocations = await testPrivateLocations.setTestLocations([testFleetPolicyID]); + + const apiResponse = await supertestAPI.get(SYNTHETICS_API_URLS.SERVICE_LOCATIONS); + + const testLocations: Array = [ + { + id: 'dev', + label: 'Dev Service', + geo: { lat: 0, lon: 0 }, + url: 'mockDevUrl', + isServiceManaged: true, + status: LocationStatus.EXPERIMENTAL, + isInvalid: false, + }, + { + id: 'dev2', + label: 'Dev Service 2', + geo: { lat: 0, lon: 0 }, + url: 'mockDevUrl', + isServiceManaged: true, + status: LocationStatus.EXPERIMENTAL, + isInvalid: false, + }, + { + id: testFleetPolicyID, + isInvalid: false, + isServiceManaged: false, + label: privateLocations[0].label, + geo: { + lat: 0, + lon: 0, + }, + agentPolicyId: testFleetPolicyID, + }, + ]; + + expect(apiResponse.body.locations).eql(testLocations); + }); + + it('adds a monitor in private location', async () => { + const newMonitor = browserMonitorJson; + + const pvtLoc = { + id: testFleetPolicyID, + agentPolicyId: testFleetPolicyID, + label: privateLocations[0].label, + isServiceManaged: false, + geo: { + lat: 0, + lon: 0, + }, + }; + + newMonitor.locations.push(pvtLoc); + + const apiResponse = await addMonitorAPI(newMonitor); + + expect(apiResponse.body).eql( + omitMonitorKeys({ + ...newMonitor, + [ConfigKey.MONITOR_QUERY_ID]: apiResponse.body.id, + [ConfigKey.CONFIG_ID]: apiResponse.body.id, + locations: [LOCAL_LOCATION, pvtLoc], + }) + ); + newMonitorId = apiResponse.rawBody.id; + }); + + it('added an integration for previously added monitor', async () => { + const apiResponse = await supertestAPI.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy?.policy_id).eql( + testFleetPolicyID, + JSON.stringify({ testFleetPolicyID, newMonitorId }) + ); + + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: browserMonitorJson.name, + id: newMonitorId, + isBrowser: true, + location: { id: testFleetPolicyID }, + }) + ); + }); + + it('adds a test param', async () => { + const apiResponse = await supertestAPI + .post(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ key: 'test', value: 'http://proxy.com' }); + + expect(apiResponse.status).eql(200); + }); + + it('get list of params', async () => { + const apiResponse = await supertestAPI + .get(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ key: 'test', value: 'http://proxy.com' }); + + expect(apiResponse.status).eql(200); + + apiResponse.body.forEach(({ key, value }: SyntheticsParams) => { + params[key] = value; + }); + }); + + it('sync global params', async () => { + const apiResponse = await supertestAPI + .get(SYNTHETICS_API_URLS.SYNC_GLOBAL_PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ key: 'test', value: 'test' }); + + expect(apiResponse.status).eql(200); + }); + + it('added params to for previously added integration', async () => { + const apiResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy.policy_id).eql(testFleetPolicyID); + + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: browserMonitorJson.name, + id: newMonitorId, + params, + isBrowser: true, + location: { id: testFleetPolicyID }, + }) + ); + }); + + it('add a http monitor using param', async () => { + const newMonitor = httpMonitorJson; + const pvtLoc = { + id: testFleetPolicyID, + agentPolicyId: testFleetPolicyID, + label: privateLocations[0].label, + isServiceManaged: false, + geo: { + lat: 0, + lon: 0, + }, + }; + newMonitor.locations.push(pvtLoc); + + newMonitor.proxy_url = '${test}'; + + const apiResponse = await addMonitorAPI(newMonitor); + + expect(apiResponse.body).eql( + omitMonitorKeys({ + ...newMonitor, + [ConfigKey.MONITOR_QUERY_ID]: apiResponse.body.id, + [ConfigKey.CONFIG_ID]: apiResponse.body.id, + locations: [LOCAL_LOCATION, pvtLoc], + }) + ); + newHttpMonitorId = apiResponse.rawBody.id; + }); + + it('parsed params for previously added http monitors', async () => { + const apiResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newHttpMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy.policy_id).eql(testFleetPolicyID); + + const pPolicy = getTestSyntheticsPolicy({ + name: httpMonitorJson.name, + id: newHttpMonitorId, + isTLSEnabled: false, + namespace: 'testnamespace', + location: { id: testFleetPolicyID }, + }); + + comparePolicies(packagePolicy, pPolicy); + }); + + it('delete all params and sync again', async () => { + await supertestAPI + .post(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ key: 'get', value: 'test' }); + const getResponse = await supertestAPI + .get(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(getResponse.body.length).eql(2); + + const paramsResponse = getResponse.body || []; + const ids = paramsResponse.map((param: any) => param.id); + + const deleteResponse = await supertestAPI + .delete(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send({ ids }) + .expect(200); + + expect(deleteResponse.body).to.have.length(2); + + const getResponseAfterDelete = await supertestAPI + .get(SYNTHETICS_API_URLS.PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(getResponseAfterDelete.body.length).eql(0); + + await supertestAPI + .get(SYNTHETICS_API_URLS.SYNC_GLOBAL_PARAMS) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const apiResponse = await supertestWithAuth.get( + '/api/fleet/package_policies?page=1&perPage=2000&kuery=ingest-package-policies.package.name%3A%20synthetics' + ); + + const packagePolicy = apiResponse.body.items.find( + (pkgPolicy: PackagePolicy) => + pkgPolicy.id === newMonitorId + '-' + testFleetPolicyID + '-default' + ); + + expect(packagePolicy.policy_id).eql(testFleetPolicyID); + + comparePolicies( + packagePolicy, + getTestSyntheticsPolicy({ + name: browserMonitorJson.name, + id: newMonitorId, + isBrowser: true, + location: { id: testFleetPolicyID }, + }) + ); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/synthetics_enablement.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/synthetics_enablement.ts new file mode 100644 index 0000000000000..cb2197bf54169 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/synthetics_enablement.ts @@ -0,0 +1,352 @@ +/* + * 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 { v4 as uuidv4 } from 'uuid'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import expect from '@kbn/expect'; +import { SupertestWithRoleScopeType } from '../../../services'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + const config = getService('config'); + const isServerless = config.get('serverless'); + const correctPrivileges = { + applications: [], + cluster: ['monitor', 'read_pipeline', ...(!isServerless ? ['read_ilm'] : [])], + indices: [ + { + allow_restricted_indices: false, + names: ['synthetics-*'], + privileges: ['view_index_metadata', 'create_doc', 'auto_configure', 'read'], + }, + ], + metadata: {}, + run_as: [], + transient_metadata: { + enabled: true, + }, + }; + + describe('SyntheticsEnablement', function () { + /* temporarily skip MKI. Public locations appear to be disabled in QA causing failures + * in isServiceAllowed check */ + this.tags(['skipMKI']); + + const roleScopedSupertest = getService('roleScopedSupertest'); + const kibanaServer = getService('kibanaServer'); + + let supertestWithEditorScope: SupertestWithRoleScopeType; + let supertestWithAdminScope: SupertestWithRoleScopeType; + + const getApiKeys = async () => { + const { body } = await supertestWithAdminScope + .post('/internal/security/api_key/_query') + .send({ + query: { + bool: { + filter: [ + { + term: { + name: 'synthetics-api-key (required for Synthetics App)', + }, + }, + ], + }, + }, + sort: { field: 'creation', direction: 'desc' }, + from: 0, + size: 25, + filters: {}, + }) + .expect(200); + + const apiKeys = body.apiKeys || []; + return apiKeys.filter( + (apiKey: any) => apiKey.name.includes('synthetics-api-key') && apiKey.invalidated === false + ); + }; + + before(async () => { + supertestWithEditorScope = await roleScopedSupertest.getSupertestWithRoleScope('editor', { + withInternalHeaders: true, + useCookieHeader: true, + }); + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + useCookieHeader: true, + }); + }); + + describe('[PUT] /internal/uptime/service/enablement', () => { + before(async () => { + supertestWithEditorScope = await roleScopedSupertest.getSupertestWithRoleScope('editor', { + withInternalHeaders: true, + useCookieHeader: true, + }); + supertestWithAdminScope = await roleScopedSupertest.getSupertestWithRoleScope('admin', { + withInternalHeaders: true, + useCookieHeader: true, + }); + }); + + beforeEach(async () => { + const apiKeys = await getApiKeys(); + if (apiKeys.length) { + await supertestWithAdminScope + .delete(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + } + }); + + after(async () => { + // always invalidate API key for the scoped role in the end + await supertestWithAdminScope.destroy(); + await supertestWithEditorScope.destroy(); + }); + + it(`returns response when user cannot manage api keys`, async () => { + const apiResponse = await supertestWithEditorScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: false, + canEnable: false, + isEnabled: false, + isValidApiKey: false, + isServiceAllowed: true, + }); + }); + + it(`returns response for an admin with privilege`, async () => { + const apiResponse = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + const validApiKeys = await getApiKeys(); + expect(validApiKeys.length).eql(1); + expect(validApiKeys[0].role_descriptors.synthetics_writer).eql(correctPrivileges); + }); + + it(`does not create excess api keys`, async () => { + const apiResponse = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + + const validApiKeys = await getApiKeys(); + expect(validApiKeys.length).eql(1); + expect(validApiKeys[0].role_descriptors.synthetics_writer).eql(correctPrivileges); + + // call api a second time + const apiResponse2 = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse2.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + + const validApiKeys2 = await getApiKeys(); + expect(validApiKeys2.length).eql(1); + expect(validApiKeys2[0].role_descriptors.synthetics_writer).eql(correctPrivileges); + }); + + it(`auto re-enables api key when invalidated`, async () => { + const apiResponse = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + + const validApiKeys = await getApiKeys(); + expect(validApiKeys.length).eql(1); + expect(validApiKeys[0].role_descriptors.synthetics_writer).eql(correctPrivileges); + + // delete api key + await supertestWithAdminScope + .post('/internal/security/api_key/invalidate') + .send({ + apiKeys: validApiKeys.map((apiKey: { id: string; name: string }) => ({ + id: apiKey.id, + name: apiKey.name, + })), + isAdmin: true, + }) + .expect(200); + + const validApiKeysAferDeletion = await getApiKeys(); + expect(validApiKeysAferDeletion.length).eql(0); + + // call api a second time + const apiResponse2 = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse2.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + + const validApiKeys2 = await getApiKeys(); + expect(validApiKeys2.length).eql(1); + expect(validApiKeys2[0].role_descriptors.synthetics_writer).eql(correctPrivileges); + }); + + it('returns response for an uptime all user without admin privileges', async () => { + const apiResponse = await supertestWithEditorScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: false, + canEnable: false, + isEnabled: false, + isValidApiKey: false, + isServiceAllowed: true, + }); + }); + }); + + describe('[DELETE] /internal/uptime/service/enablement', () => { + beforeEach(async () => { + const apiKeys = await getApiKeys(); + if (apiKeys.length) { + await supertestWithAdminScope + .delete(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + } + }); + + it('with an admin', async () => { + await supertestWithAdminScope.put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT).expect(200); + const delResponse = await supertestWithAdminScope + .delete(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + expect(delResponse.body).eql({}); + const apiResponse = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + }); + + it('with an uptime user', async () => { + await supertestWithAdminScope.put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT).expect(200); + await supertestWithEditorScope + .delete(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(403); + const apiResponse = await supertestWithEditorScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: false, + canEnable: false, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + }); + + it('is space agnostic', async () => { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name-${uuidv4()}`; + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + // can enable synthetics in default space when enabled in a non default space + const apiResponseGet = await supertestWithAdminScope + .put(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT}`) + .expect(200); + + expect(apiResponseGet.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + + await supertestWithAdminScope + .put(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT}`) + .expect(200); + await supertestWithAdminScope.delete(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT).expect(200); + const apiResponse = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + + // can disable synthetics in non default space when enabled in default space + await supertestWithAdminScope.put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT).expect(200); + await supertestWithAdminScope + .delete(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT}`) + .expect(200); + const apiResponse2 = await supertestWithAdminScope + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .expect(200); + + expect(apiResponse2.body).eql({ + areApiKeysEnabled: true, + canManageApiKeys: true, + canEnable: true, + isEnabled: true, + isValidApiKey: true, + isServiceAllowed: true, + }); + }); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/test_now_monitor.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/test_now_monitor.ts new file mode 100644 index 0000000000000..1efe174a2c666 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/synthetics/test_now_monitor.ts @@ -0,0 +1,98 @@ +/* + * 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 { RoleCredentials } from '@kbn/ftr-common-functional-services'; +import { MonitorFields } from '@kbn/synthetics-plugin/common/runtime_types'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import expect from '@kbn/expect'; +import { omit } from 'lodash'; +import { DeploymentAgnosticFtrProviderContext } from '../../../ftr_provider_context'; +import { getFixtureJson } from './helpers/get_fixture_json'; +import { SyntheticsMonitorTestService } from '../../../services/synthetics_monitor'; + +export const LOCAL_LOCATION = { + id: 'dev', + label: 'Dev Service', + geo: { + lat: 0, + lon: 0, + }, + isServiceManaged: true, +}; + +export default function ({ getService }: DeploymentAgnosticFtrProviderContext) { + describe('RunTestManually', function () { + this.tags(['skipMKI', 'skipCloud']); + + const supertest = getService('supertestWithoutAuth'); + const kibanaServer = getService('kibanaServer'); + const samlAuth = getService('samlAuth'); + + const monitorTestService = new SyntheticsMonitorTestService(getService); + + let newMonitor: MonitorFields; + let editorUser: RoleCredentials; + + before(async () => { + await kibanaServer.savedObjects.cleanStandardList(); + editorUser = await samlAuth.createM2mApiKeyWithRoleScope('editor'); + await supertest + .put(SYNTHETICS_API_URLS.SYNTHETICS_ENABLEMENT) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + newMonitor = getFixtureJson('http_monitor'); + }); + + it('runs test manually', async () => { + const resp = await monitorTestService.addMonitor(newMonitor, editorUser); + + const res = await supertest + .post(SYNTHETICS_API_URLS.TRIGGER_MONITOR + `/${resp.id}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const result = res.body; + expect(typeof result.testRunId).to.eql('string'); + expect(typeof result.configId).to.eql('string'); + expect(result.schedule).to.eql({ number: '5', unit: 'm' }); + expect(result.locations).to.eql([LOCAL_LOCATION]); + + expect(omit(result.monitor, ['id', 'config_id'])).to.eql( + omit(newMonitor, ['id', 'config_id']) + ); + }); + + it('works in non default space', async () => { + const { SPACE_ID } = await monitorTestService.addNewSpace(); + + const resp = await supertest + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .send(newMonitor) + .expect(200); + + const res = await supertest + .post(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.TRIGGER_MONITOR}/${resp.body.id}`) + .set(editorUser.apiKeyHeader) + .set(samlAuth.getInternalRequestHeader()) + .expect(200); + + const result = res.body; + expect(typeof result.testRunId).to.eql('string'); + expect(typeof result.configId).to.eql('string'); + expect(result.schedule).to.eql({ number: '5', unit: 'm' }); + expect(result.locations).to.eql([LOCAL_LOCATION]); + + expect(omit(result.monitor, ['id', 'config_id'])).to.eql( + omit(newMonitor, ['id', 'config_id']) + ); + }); + }); +} diff --git a/x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.index.ts b/x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.index.ts index abd875f8c17cf..7544d7d90f1d5 100644 --- a/x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.index.ts +++ b/x-pack/test/api_integration/deployment_agnostic/configs/serverless/oblt.index.ts @@ -20,5 +20,6 @@ export default function ({ loadTestFile }: DeploymentAgnosticFtrProviderContext) loadTestFile(require.resolve('../../apis/painless_lab')); loadTestFile(require.resolve('../../apis/saved_objects_management')); loadTestFile(require.resolve('../../apis/observability/slo')); + loadTestFile(require.resolve('../../apis/observability/synthetics')); }); } diff --git a/x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.index.ts b/x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.index.ts index 4f21d708d4186..4f666fc5b3ebe 100644 --- a/x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.index.ts +++ b/x-pack/test/api_integration/deployment_agnostic/configs/stateful/oblt.index.ts @@ -13,6 +13,7 @@ export default function ({ loadTestFile }: DeploymentAgnosticFtrProviderContext) loadTestFile(require.resolve('../../apis/observability/alerting')); loadTestFile(require.resolve('../../apis/observability/dataset_quality')); loadTestFile(require.resolve('../../apis/observability/slo')); + loadTestFile(require.resolve('../../apis/observability/synthetics')); loadTestFile(require.resolve('../../apis/observability/infra')); }); } diff --git a/x-pack/test/api_integration/deployment_agnostic/default_configs/serverless.config.base.ts b/x-pack/test/api_integration/deployment_agnostic/default_configs/serverless.config.base.ts index e7df37f5aa312..8d3432f2e504e 100644 --- a/x-pack/test/api_integration/deployment_agnostic/default_configs/serverless.config.base.ts +++ b/x-pack/test/api_integration/deployment_agnostic/default_configs/serverless.config.base.ts @@ -113,6 +113,11 @@ export function createServerlessTestConfig; + private getService: DeploymentAgnosticFtrProviderContext['getService']; + public apiKey: string | undefined = ''; + public samlAuth: SamlAuthProviderType; + + constructor(getService: DeploymentAgnosticFtrProviderContext['getService']) { + this.supertest = getService('supertestWithoutAuth'); + this.samlAuth = getService('samlAuth'); + this.getService = getService; + } + + generateProjectAPIKey = async (accessToPublicLocations = true, user: RoleCredentials) => { + const res = await this.supertest + .get( + SYNTHETICS_API_URLS.SYNTHETICS_PROJECT_APIKEY + + '?accessToElasticManagedLocations=' + + accessToPublicLocations + ) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .expect(200); + const result = res.body as ProjectAPIKeyResponse; + expect(result).to.have.property('apiKey'); + const apiKey = result.apiKey?.encoded; + expect(apiKey).to.not.be.empty(); + this.apiKey = apiKey; + return apiKey; + }; + + async getMonitor( + monitorId: string, + { + statusCode = 200, + space, + internal, + user, + }: { + statusCode?: number; + space?: string; + internal?: boolean; + user: RoleCredentials; + } + ) { + let url = SYNTHETICS_API_URLS.GET_SYNTHETICS_MONITOR.replace('{monitorId}', monitorId); + if (space) { + url = '/s/' + space + url; + } + if (internal) { + url += `?internal=${internal}`; + } + const apiResponse = await this.supertest + .get(url) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .expect(200); + + expect(apiResponse.status).eql(statusCode, JSON.stringify(apiResponse.body)); + + if (statusCode === 200) { + const { + created_at: createdAt, + updated_at: updatedAt, + id, + config_id: configId, + spaceId, + } = apiResponse.body; + expect(id).not.empty(); + expect(configId).not.empty(); + expect(spaceId).not.empty(); + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + return { + rawBody: omit(apiResponse.body, ['spaceId']), + body: { + ...omit(apiResponse.body, [ + 'created_at', + 'updated_at', + 'id', + 'config_id', + 'form_monitor_type', + 'spaceId', + ]), + }, + }; + } + return apiResponse.body; + } + + async addMonitor(monitor: any, user: RoleCredentials) { + const res = await this.supertest + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + + return res.body as EncryptedSyntheticsSavedMonitor; + } + + async inspectMonitor(user: RoleCredentials, monitor: any, hideParams: boolean = true) { + const res = await this.supertest + .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITOR_INSPECT) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .send(monitor) + .expect(200); + + // remove the id and config_id from the response + delete res.body.result?.publicConfigs?.[0].monitors[0].id; + delete res.body.result?.publicConfigs?.[0].monitors[0].streams[0].id; + delete res.body.result?.publicConfigs?.[0].monitors[0].streams[0].config_id; + delete res.body.result?.publicConfigs?.[0].monitors[0].streams[0].fields.config_id; + delete res.body.result?.publicConfigs?.[0].output.api_key; + delete res.body.result?.publicConfigs?.[0].license_issued_to; + delete res.body.result?.publicConfigs?.[0].stack_version; + + return res.body as { result: MonitorInspectResponse; decodedCode: string }; + } + + async addProjectMonitors(project: string, monitors: any, user: RoleCredentials) { + if (this.apiKey) { + return this.supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(this.samlAuth.getInternalRequestHeader()) + .set('authorization', `ApiKey ${this.apiKey}`) + .send({ monitors }); + } else { + return this.supertest + .put( + SYNTHETICS_API_URLS.SYNTHETICS_MONITORS_PROJECT_UPDATE.replace('{projectName}', project) + ) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .send({ monitors }); + } + } + + async deleteMonitorByJourney( + journeyId: string, + projectId: string, + space: string = 'default', + user: RoleCredentials + ) { + try { + const response = await this.supertest + .get(`/s/${space}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: "${journeyId}" AND ${syntheticsMonitorType}.attributes.project_id: "${projectId}"`, + }) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .expect(200); + + const { monitors } = response.body; + if (monitors[0]?.id) { + await this.supertest + .delete(`/s/${space}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}`) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .send({ ids: monitors.map((monitor: { id: string }) => monitor.id) }) + .expect(200); + } + } catch (e) { + // eslint-disable-next-line no-console + console.error(e); + } + } + + async addNewSpace() { + const SPACE_ID = `test-space-${uuidv4()}`; + const SPACE_NAME = `test-space-name ${uuidv4()}`; + + const kibanaServer = this.getService('kibanaServer'); + + await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); + + return { SPACE_ID }; + } + + async deleteMonitor( + user: RoleCredentials, + monitorId?: string | string[], + statusCode = 200, + spaceId?: string + ) { + const deleteResponse = await this.supertest + .delete( + spaceId + ? `/s/${spaceId}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}` + : SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + ) + .send({ ids: Array.isArray(monitorId) ? monitorId : [monitorId] }) + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .expect(statusCode); + + return deleteResponse; + } + + async deleteMonitorByIdParam( + user: RoleCredentials, + monitorId?: string, + statusCode = 200, + spaceId?: string + ) { + const deleteResponse = await this.supertest + .delete( + spaceId + ? `/s/${spaceId}${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}/${monitorId}` + : SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitorId + ) + .send() + .set(user.apiKeyHeader) + .set(this.samlAuth.getInternalRequestHeader()) + .expect(statusCode); + + return deleteResponse; + } +} diff --git a/x-pack/test/api_integration/deployment_agnostic/services/synthetics_private_location.ts b/x-pack/test/api_integration/deployment_agnostic/services/synthetics_private_location.ts new file mode 100644 index 0000000000000..8b3c95e0b9489 --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/services/synthetics_private_location.ts @@ -0,0 +1,94 @@ +/* + * 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 { v4 as uuidv4 } from 'uuid'; +import { RetryService } from '@kbn/ftr-common-functional-services'; +import { X_ELASTIC_INTERNAL_ORIGIN_REQUEST } from '@kbn/core-http-common'; +import { privateLocationSavedObjectName } from '@kbn/synthetics-plugin/common/saved_objects/private_locations'; +import { SyntheticsPrivateLocations } from '@kbn/synthetics-plugin/common/runtime_types'; +import { KibanaSupertestProvider } from '@kbn/ftr-common-functional-services'; +import { DeploymentAgnosticFtrProviderContext } from '../ftr_provider_context'; + +export const INSTALLED_VERSION = '1.1.1'; + +export class PrivateLocationTestService { + private supertestWithAuth: ReturnType; + private readonly retry: RetryService; + + constructor(getService: DeploymentAgnosticFtrProviderContext['getService']) { + this.supertestWithAuth = getService('supertest'); + this.retry = getService('retry'); + } + + async installSyntheticsPackage() { + await this.supertestWithAuth + .post('/api/fleet/setup') + .set('kbn-xsrf', 'true') + .send() + .expect(200); + const response = await this.supertestWithAuth + .get(`/api/fleet/epm/packages/synthetics/${INSTALLED_VERSION}`) + .set('kbn-xsrf', 'true') + .expect(200); + if (response.body.item.status !== 'installed') { + await this.supertestWithAuth + .post(`/api/fleet/epm/packages/synthetics/${INSTALLED_VERSION}`) + .set('kbn-xsrf', 'true') + .send({ force: true }) + .expect(200); + } + } + + async addTestPrivateLocation(spaceId?: string) { + const apiResponse = await this.addFleetPolicy(uuidv4()); + const testPolicyId = apiResponse.body.item.id; + return (await this.setTestLocations([testPolicyId], spaceId))[0]; + } + + async addFleetPolicy(name: string) { + return await this.retry.try(async () => { + const response = await this.supertestWithAuth + .post('/api/fleet/agent_policies?sys_monitoring=true') + .set('kbn-xsrf', 'true') + .send({ + name, + description: '', + namespace: 'default', + monitoring_enabled: [], + }); + return response; + }); + } + + async setTestLocations(testFleetPolicyIds: string[], spaceId?: string) { + const locations: SyntheticsPrivateLocations = testFleetPolicyIds.map((id, index) => ({ + label: `Test private location ${id}`, + agentPolicyId: id, + id, + geo: { + lat: 0, + lon: 0, + }, + isServiceManaged: false, + })); + + await this.supertestWithAuth + .post(`/s/${spaceId || 'default'}/api/saved_objects/_bulk_create`) + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .set('kbn-xsrf', 'true') + .send( + locations.map((location) => ({ + type: privateLocationSavedObjectName, + id: location.id, + attributes: location, + initialNamespaces: [spaceId ? spaceId : 'default'], + })) + ) + .expect(200); + + return locations; + } +} diff --git a/x-pack/test/api_integration/services/security_solution_api.gen.ts b/x-pack/test/api_integration/services/security_solution_api.gen.ts index a6d0ac86a810c..9ffdc1c43a2a1 100644 --- a/x-pack/test/api_integration/services/security_solution_api.gen.ts +++ b/x-pack/test/api_integration/services/security_solution_api.gen.ts @@ -28,6 +28,7 @@ import { BulkPatchRulesRequestBodyInput } from '@kbn/security-solution-plugin/co import { BulkUpdateRulesRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/rule_management/bulk_crud/bulk_update_rules/bulk_update_rules_route.gen'; import { BulkUpsertAssetCriticalityRecordsRequestBodyInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen'; import { CleanDraftTimelinesRequestBodyInput } from '@kbn/security-solution-plugin/common/api/timeline/clean_draft_timelines/clean_draft_timelines_route.gen'; +import { ConfigureRiskEngineSavedObjectRequestBodyInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/risk_engine/engine_configure_saved_object_route.gen'; import { CopyTimelineRequestBodyInput } from '@kbn/security-solution-plugin/common/api/timeline/copy_timeline/copy_timeline_route.gen'; import { CreateAlertsMigrationRequestBodyInput } from '@kbn/security-solution-plugin/common/api/detection_engine/signals_migration/create_signals_migration/create_signals_migration.gen'; import { CreateAssetCriticalityRecordRequestBodyInput } from '@kbn/security-solution-plugin/common/api/entity_analytics/asset_criticality/create_asset_criticality.gen'; @@ -104,6 +105,7 @@ import { GetRuleMigrationResourcesRequestQueryInput, GetRuleMigrationResourcesRequestParamsInput, } from '@kbn/security-solution-plugin/common/siem_migrations/model/api/rules/rule_migration.gen'; +import { GetRuleMigrationResourcesMissingRequestParamsInput } from '@kbn/security-solution-plugin/common/siem_migrations/model/api/rules/rule_migration.gen'; import { GetRuleMigrationStatsRequestParamsInput } from '@kbn/security-solution-plugin/common/siem_migrations/model/api/rules/rule_migration.gen'; import { GetRuleMigrationTranslationStatsRequestParamsInput } from '@kbn/security-solution-plugin/common/siem_migrations/model/api/rules/rule_migration.gen'; import { GetTimelineRequestQueryInput } from '@kbn/security-solution-plugin/common/api/timeline/get_timeline/get_timeline_route.gen'; @@ -313,6 +315,20 @@ If asset criticality records already exist for the specified entities, those rec .set(ELASTIC_HTTP_VERSION_HEADER, '2023-10-31') .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); }, + /** + * Configuring the Risk Engine Saved Object + */ + configureRiskEngineSavedObject( + props: ConfigureRiskEngineSavedObjectProps, + kibanaSpace: string = 'default' + ) { + return supertest + .patch(routeWithNamespace('/api/risk_score/engine/saved_object/configure', kibanaSpace)) + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '2023-10-31') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(props.body as object); + }, /** * Copies and returns a timeline or timeline template. @@ -998,6 +1014,27 @@ finalize it. .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .query(props.query); }, + /** + * Identifies missing resources from all the rules of an existing SIEM rules migration + */ + getRuleMigrationResourcesMissing( + props: GetRuleMigrationResourcesMissingProps, + kibanaSpace: string = 'default' + ) { + return supertest + .get( + routeWithNamespace( + replaceParams( + '/internal/siem_migrations/rules/{migration_id}/resources/missing', + props.params + ), + kibanaSpace + ) + ) + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana'); + }, /** * Retrieves the stats of a SIEM rules migration using the migration id provided */ @@ -1612,6 +1649,9 @@ export interface BulkUpsertAssetCriticalityRecordsProps { export interface CleanDraftTimelinesProps { body: CleanDraftTimelinesRequestBodyInput; } +export interface ConfigureRiskEngineSavedObjectProps { + body: ConfigureRiskEngineSavedObjectRequestBodyInput; +} export interface CopyTimelineProps { body: CopyTimelineRequestBodyInput; } @@ -1760,6 +1800,9 @@ export interface GetRuleMigrationResourcesProps { query: GetRuleMigrationResourcesRequestQueryInput; params: GetRuleMigrationResourcesRequestParamsInput; } +export interface GetRuleMigrationResourcesMissingProps { + params: GetRuleMigrationResourcesMissingRequestParamsInput; +} export interface GetRuleMigrationStatsProps { params: GetRuleMigrationStatsRequestParamsInput; } diff --git a/x-pack/test/apm_api_integration/tests/settings/anomaly_detection/no_access_user.spec.ts b/x-pack/test/apm_api_integration/tests/settings/anomaly_detection/no_access_user.spec.ts index 06be441facd25..f8b370dc18860 100644 --- a/x-pack/test/apm_api_integration/tests/settings/anomaly_detection/no_access_user.spec.ts +++ b/x-pack/test/apm_api_integration/tests/settings/anomaly_detection/no_access_user.spec.ts @@ -38,7 +38,9 @@ export default function apiTest({ getService }: FtrProviderContext) { const err = await expectToReject(() => getJobs()); expect(err.res.status).to.be(403); - expect(err.res.body.message).eql('Forbidden'); + expect(err.res.body.message).eql( + 'API [GET /internal/apm/settings/anomaly-detection/jobs] is unauthorized for user, this action is granted by the Kibana privileges [apm,ml:canGetJobs]' + ); }); }); @@ -49,7 +51,9 @@ export default function apiTest({ getService }: FtrProviderContext) { ); expect(err.res.status).to.be(403); - expect(err.res.body.message).eql('Forbidden'); + expect(err.res.body.message).eql( + 'API [POST /internal/apm/settings/anomaly-detection/jobs] is unauthorized for user, this action is granted by the Kibana privileges [apm,apm_settings_write,ml:canCreateJob]' + ); }); }); }); diff --git a/x-pack/test/automatic_import_api_integration/security/config_basic.ts b/x-pack/test/automatic_import_api_integration/apis/config_basic.ts similarity index 80% rename from x-pack/test/automatic_import_api_integration/security/config_basic.ts rename to x-pack/test/automatic_import_api_integration/apis/config_basic.ts index ebda3390790e3..85abda4f2a7ba 100644 --- a/x-pack/test/automatic_import_api_integration/security/config_basic.ts +++ b/x-pack/test/automatic_import_api_integration/apis/config_basic.ts @@ -7,8 +7,7 @@ import { createTestConfig } from '../common/config'; -// eslint-disable-next-line import/no-default-export -export default createTestConfig('security', { +export default createTestConfig('apis', { license: 'basic', ssl: true, testFiles: [require.resolve('./tests/basic')], diff --git a/x-pack/test/automatic_import_api_integration/apis/config_graphs.ts b/x-pack/test/automatic_import_api_integration/apis/config_graphs.ts new file mode 100644 index 0000000000000..c572c62bfb21f --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/config_graphs.ts @@ -0,0 +1,15 @@ +/* + * 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 { createTestConfig } from '../common/config'; + +export default createTestConfig('apis', { + license: 'trial', + ssl: true, + testFiles: [require.resolve('./tests/graphs')], + publicBaseUrl: true, +}); diff --git a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/analyze_logs.ts b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/analyze_logs.ts similarity index 95% rename from x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/analyze_logs.ts rename to x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/analyze_logs.ts index 6fb3abf127747..9f842247161cc 100644 --- a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/analyze_logs.ts +++ b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/analyze_logs.ts @@ -9,7 +9,6 @@ import { postAnalyzeLogs } from '../../../../common/lib/api/analyze_logs'; import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; import { User } from '../../../../common/lib/authentication/types'; -// eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); diff --git a/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/categorization.ts b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/categorization.ts new file mode 100644 index 0000000000000..0420822a8dfae --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/categorization.ts @@ -0,0 +1,37 @@ +/* + * 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 { postCategorization } from '../../../../common/lib/api/categorization'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; +import { User } from '../../../../common/lib/authentication/types'; + +export default ({ getService }: FtrProviderContext): void => { + const supertest = getService('supertest'); + + describe('Run categorization', () => { + it('should get 404 when trying to run categorization with basic license', async () => { + return await postCategorization({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['sample1', 'sample2'], + samplesFormat: { + name: 'json', + }, + connectorId: 'bedrock-connector', + currentPipeline: { + processors: [], + }, + }, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + }); + }); +}; diff --git a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/ecs.ts b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/ecs.ts similarity index 95% rename from x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/ecs.ts rename to x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/ecs.ts index f55efceb3d04c..b6381a6ac7af8 100644 --- a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/ecs.ts +++ b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/ecs.ts @@ -9,7 +9,6 @@ import { postEcsMapping } from '../../../../common/lib/api/ecs'; import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; import { User } from '../../../../common/lib/authentication/types'; -// eslint-disable-next-line import/no-default-export export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); @@ -27,6 +26,7 @@ export default ({ getService }: FtrProviderContext): void => { }, connectorId: 'bedrock-connector', }, + expectedHttpCode: 404, auth: { user: { username: 'elastic', password: 'elastic' } as User, }, diff --git a/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/related.ts b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/related.ts new file mode 100644 index 0000000000000..45c1b5935cb49 --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/tests/basic/graphs/related.ts @@ -0,0 +1,37 @@ +/* + * 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 { postRelated } from '../../../../common/lib/api/related'; +import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; +import { User } from '../../../../common/lib/authentication/types'; + +export default ({ getService }: FtrProviderContext): void => { + const supertest = getService('supertest'); + + describe('Run related', () => { + it('should get 404 when trying to run related graph with basic license', async () => { + return await postRelated({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['sample1', 'sample2'], + samplesFormat: { + name: 'json', + }, + connectorId: 'bedrock-connector', + currentPipeline: { + processors: [], + }, + }, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + }); + }); +}; diff --git a/x-pack/test/automatic_import_api_integration/apis/tests/basic/index.ts b/x-pack/test/automatic_import_api_integration/apis/tests/basic/index.ts new file mode 100644 index 0000000000000..f0e61f713a6ac --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/tests/basic/index.ts @@ -0,0 +1,31 @@ +/* + * 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 { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { + createUsersAndRoles, + deleteUsersAndRoles, + activateUserProfiles, +} from '../../../common/lib/authentication'; + +export default ({ loadTestFile, getService }: FtrProviderContext): void => { + describe('Automatic Import enabled: basic', function () { + before(async () => { + await createUsersAndRoles(getService); + // once a user profile is created the only way to remove it is to delete the user and roles, so best to activate + // before all the tests + await activateUserProfiles(getService); + }); + + after(async () => { + await deleteUsersAndRoles(getService); + }); + + // Basic + loadTestFile(require.resolve('./graphs/ecs')); + }); +}; diff --git a/x-pack/test/automatic_import_api_integration/apis/tests/graphs/categorization.ts b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/categorization.ts new file mode 100644 index 0000000000000..5fed052da894a --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/categorization.ts @@ -0,0 +1,67 @@ +/* + * 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 expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { postCategorization } from '../../../common/lib/api/categorization'; +import { User } from '../../../common/lib/authentication/types'; +import { BadRequestError } from '../../../common/lib/error/error'; + +export default function (providerContext: FtrProviderContext) { + const { getService } = providerContext; + const supertest = getService('supertest'); + describe('Run categorization', () => { + it('should get 400 when trying to run categorization with invalid json', async () => { + const response = await postCategorization({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['{test:json}'], + samplesFormat: { + name: 'json', + }, + connectorId: 'preconfigured-bedrock', + currentPipeline: { processors: [] }, + }, + expectedHttpCode: 400, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + if (response instanceof BadRequestError) { + expect(response.message).to.be("Expected property name or '}' in JSON at position 1"); + } else { + expect().fail('Expected BadRequestError'); + } + }); + it('should get 400 when trying to run categorization without connector action', async () => { + const response = await postCategorization({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['{test:json}'], + samplesFormat: { + name: 'json', + }, + connectorId: 'preconfigured-dummy', + currentPipeline: { processors: [] }, + }, + expectedHttpCode: 400, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + if (response instanceof BadRequestError) { + expect(response.message).to.be('Saved object [action/preconfigured-dummy] not found'); + } else { + expect().fail('Expected BadRequestError'); + } + }); + }); +} diff --git a/x-pack/test/automatic_import_api_integration/apis/tests/graphs/ecs_mapping.ts b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/ecs_mapping.ts new file mode 100644 index 0000000000000..33281794109e2 --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/ecs_mapping.ts @@ -0,0 +1,65 @@ +/* + * 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 expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { postEcsMapping } from '../../../common/lib/api/ecs'; +import { User } from '../../../common/lib/authentication/types'; +import { BadRequestError } from '../../../common/lib/error/error'; + +export default function (providerContext: FtrProviderContext) { + const { getService } = providerContext; + const supertest = getService('supertest'); + describe('Run ecs_mapping', () => { + it('should get 400 when trying to run ecs_mapping with invalid json', async () => { + const response = await postEcsMapping({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['{test:json}'], + samplesFormat: { + name: 'json', + }, + connectorId: 'preconfigured-bedrock', + }, + expectedHttpCode: 400, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + if (response instanceof BadRequestError) { + expect(response.message).to.be("Expected property name or '}' in JSON at position 1"); + } else { + expect().fail('Expected BadRequestError'); + } + }); + it('should get 400 when trying to run ecs_mapping without connector action', async () => { + const response = await postEcsMapping({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['{test:json}'], + samplesFormat: { + name: 'json', + }, + connectorId: 'preconfigured-dummy', + }, + expectedHttpCode: 400, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + if (response instanceof BadRequestError) { + expect(response.message).to.be('Saved object [action/preconfigured-dummy] not found'); + } else { + expect().fail('Expected BadRequestError'); + } + }); + }); +} diff --git a/x-pack/test/automatic_import_api_integration/apis/tests/graphs/index.ts b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/index.ts new file mode 100644 index 0000000000000..c48b1da1d86e3 --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/index.ts @@ -0,0 +1,33 @@ +/* + * 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 { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { + createUsersAndRoles, + deleteUsersAndRoles, + activateUserProfiles, +} from '../../../common/lib/authentication'; + +export default ({ loadTestFile, getService }: FtrProviderContext): void => { + describe('Automatic Import enabled: basic', function () { + before(async () => { + await createUsersAndRoles(getService); + // once a user profile is created the only way to remove it is to delete the user and roles, so best to activate + // before all the tests + await activateUserProfiles(getService); + }); + + after(async () => { + await deleteUsersAndRoles(getService); + }); + + // Basic + loadTestFile(require.resolve('./ecs_mapping')); + loadTestFile(require.resolve('./categorization')); + loadTestFile(require.resolve('./related')); + }); +}; diff --git a/x-pack/test/automatic_import_api_integration/apis/tests/graphs/related.ts b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/related.ts new file mode 100644 index 0000000000000..9698017a2a3fb --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/apis/tests/graphs/related.ts @@ -0,0 +1,67 @@ +/* + * 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 expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../../common/ftr_provider_context'; +import { postRelated } from '../../../common/lib/api/related'; +import { User } from '../../../common/lib/authentication/types'; +import { BadRequestError } from '../../../common/lib/error/error'; + +export default function (providerContext: FtrProviderContext) { + const { getService } = providerContext; + const supertest = getService('supertest'); + describe('Run related', () => { + it('should get 400 when trying to run related with invalid json', async () => { + const response = await postRelated({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['{test:json}'], + samplesFormat: { + name: 'json', + }, + connectorId: 'preconfigured-bedrock', + currentPipeline: { processors: [] }, + }, + expectedHttpCode: 400, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + if (response instanceof BadRequestError) { + expect(response.message).to.be("Expected property name or '}' in JSON at position 1"); + } else { + expect().fail('Expected BadRequestError'); + } + }); + it('should get 400 when trying to run related without connector action', async () => { + const response = await postRelated({ + supertest, + req: { + packageName: 'some-package', + dataStreamName: 'some-data-stream', + rawSamples: ['{test:json}'], + samplesFormat: { + name: 'json', + }, + connectorId: 'preconfigured-dummy', + currentPipeline: { processors: [] }, + }, + expectedHttpCode: 400, + auth: { + user: { username: 'elastic', password: 'elastic' } as User, + }, + }); + if (response instanceof BadRequestError) { + expect(response.message).to.be('Saved object [action/preconfigured-dummy] not found'); + } else { + expect().fail('Expected BadRequestError'); + } + }); + }); +} diff --git a/x-pack/test/automatic_import_api_integration/common/lib/api/categorization.ts b/x-pack/test/automatic_import_api_integration/common/lib/api/categorization.ts index f14efc63ee8a0..38bc7ddafe320 100644 --- a/x-pack/test/automatic_import_api_integration/common/lib/api/categorization.ts +++ b/x-pack/test/automatic_import_api_integration/common/lib/api/categorization.ts @@ -12,6 +12,7 @@ import { } from '@kbn/integration-assistant-plugin/common'; import { superUser } from '../authentication/users'; import { User } from '../authentication/types'; +import { BadRequestError } from '../error/error'; export const postCategorization = async ({ supertest, @@ -23,7 +24,7 @@ export const postCategorization = async ({ req: CategorizationRequestBody; expectedHttpCode?: number; auth: { user: User }; -}): Promise => { +}): Promise => { const { body: response } = await supertest .post(`${CATEGORIZATION_GRAPH_PATH}`) .send(req) @@ -32,5 +33,9 @@ export const postCategorization = async ({ .auth(auth.user.username, auth.user.password) .expect(expectedHttpCode); + if (response.statusCode === 400) { + return new BadRequestError(response.message); + } + return response; }; diff --git a/x-pack/test/automatic_import_api_integration/common/lib/api/ecs.ts b/x-pack/test/automatic_import_api_integration/common/lib/api/ecs.ts index 3169659d7e2f3..82888d0861659 100644 --- a/x-pack/test/automatic_import_api_integration/common/lib/api/ecs.ts +++ b/x-pack/test/automatic_import_api_integration/common/lib/api/ecs.ts @@ -12,6 +12,7 @@ import { } from '@kbn/integration-assistant-plugin/common'; import { superUser } from '../authentication/users'; import { User } from '../authentication/types'; +import { BadRequestError } from '../error/error'; export const postEcsMapping = async ({ supertest, @@ -23,7 +24,7 @@ export const postEcsMapping = async ({ req: EcsMappingRequestBody; expectedHttpCode?: number; auth: { user: User }; -}): Promise => { +}): Promise => { const { body: response } = await supertest .post(`${ECS_GRAPH_PATH}`) .send(req) @@ -32,5 +33,9 @@ export const postEcsMapping = async ({ .auth(auth.user.username, auth.user.password) .expect(expectedHttpCode); + if (response.statusCode === 400) { + return new BadRequestError(response.message); + } + return response; }; diff --git a/x-pack/test/automatic_import_api_integration/common/lib/api/related.ts b/x-pack/test/automatic_import_api_integration/common/lib/api/related.ts index 7ebe3d3bf89c2..0620d98fcb269 100644 --- a/x-pack/test/automatic_import_api_integration/common/lib/api/related.ts +++ b/x-pack/test/automatic_import_api_integration/common/lib/api/related.ts @@ -12,6 +12,7 @@ import { } from '@kbn/integration-assistant-plugin/common'; import { superUser } from '../authentication/users'; import { User } from '../authentication/types'; +import { BadRequestError } from '../error/error'; export const postRelated = async ({ supertest, @@ -23,7 +24,7 @@ export const postRelated = async ({ req: RelatedRequestBody; expectedHttpCode?: number; auth: { user: User }; -}): Promise => { +}): Promise => { const { body: response } = await supertest .post(`${RELATED_GRAPH_PATH}`) .send(req) @@ -32,5 +33,9 @@ export const postRelated = async ({ .auth(auth.user.username, auth.user.password) .expect(expectedHttpCode); + if (response.statusCode === 400) { + return new BadRequestError(response.message); + } + return response; }; diff --git a/x-pack/test/automatic_import_api_integration/common/lib/error/error.ts b/x-pack/test/automatic_import_api_integration/common/lib/error/error.ts new file mode 100644 index 0000000000000..d0a19d0d8dfdb --- /dev/null +++ b/x-pack/test/automatic_import_api_integration/common/lib/error/error.ts @@ -0,0 +1,16 @@ +/* + * 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 class BadRequestError { + statusCode: number = 400; + error: string | undefined; + message: string | undefined; + + constructor(message: string) { + this.message = message; + } +} diff --git a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/categorization.ts b/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/categorization.ts deleted file mode 100644 index 4d9a3a0853109..0000000000000 --- a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/categorization.ts +++ /dev/null @@ -1,38 +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 { postCategorization } from '../../../../common/lib/api/categorization'; -import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; -import { User } from '../../../../common/lib/authentication/types'; - -// eslint-disable-next-line import/no-default-export -export default ({ getService }: FtrProviderContext): void => { - const supertest = getService('supertest'); - - describe('Run categorization', () => { - it('should get 404 when trying to run categorization with basic license', async () => { - return await postCategorization({ - supertest, - req: { - packageName: 'some-package', - dataStreamName: 'some-data-stream', - rawSamples: ['sample1', 'sample2'], - samplesFormat: { - name: 'json', - }, - connectorId: 'bedrock-connector', - currentPipeline: { - processors: [], - }, - }, - auth: { - user: { username: 'elastic', password: 'elastic' } as User, - }, - }); - }); - }); -}; diff --git a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/related.ts b/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/related.ts deleted file mode 100644 index 6091b64f7c224..0000000000000 --- a/x-pack/test/automatic_import_api_integration/security/tests/basic/graphs/related.ts +++ /dev/null @@ -1,38 +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 { postRelated } from '../../../../common/lib/api/related'; -import { FtrProviderContext } from '../../../../../common/ftr_provider_context'; -import { User } from '../../../../common/lib/authentication/types'; - -// eslint-disable-next-line import/no-default-export -export default ({ getService }: FtrProviderContext): void => { - const supertest = getService('supertest'); - - describe('Run related', () => { - it('should get 404 when trying to run related graph with basic license', async () => { - return await postRelated({ - supertest, - req: { - packageName: 'some-package', - dataStreamName: 'some-data-stream', - rawSamples: ['sample1', 'sample2'], - samplesFormat: { - name: 'json', - }, - connectorId: 'bedrock-connector', - currentPipeline: { - processors: [], - }, - }, - auth: { - user: { username: 'elastic', password: 'elastic' } as User, - }, - }); - }); - }); -}; diff --git a/x-pack/test/automatic_import_api_integration/security/tests/basic/index.ts b/x-pack/test/automatic_import_api_integration/security/tests/basic/index.ts deleted file mode 100644 index 7391c1e3ae9ed..0000000000000 --- a/x-pack/test/automatic_import_api_integration/security/tests/basic/index.ts +++ /dev/null @@ -1,32 +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 { FtrProviderContext } from '../../../common/ftr_provider_context'; -import { - createUsersAndRoles, - deleteUsersAndRoles, - activateUserProfiles, -} from '../../../common/lib/authentication'; - -// eslint-disable-next-line import/no-default-export -export default ({ loadTestFile, getService }: FtrProviderContext): void => { - describe('Automatic Import enabled: basic', function () { - before(async () => { - await createUsersAndRoles(getService); - // once a user profile is created the only way to remove it is to delete the user and roles, so best to activate - // before all the tests - await activateUserProfiles(getService); - }); - - after(async () => { - await deleteUsersAndRoles(getService); - }); - - // Basic - loadTestFile(require.resolve('./graphs/ecs')); - }); -}; diff --git a/x-pack/test/cloud_security_posture_api/routes/graph.ts b/x-pack/test/cloud_security_posture_api/routes/graph.ts index 95625b24fa59a..08adf73839ea2 100644 --- a/x-pack/test/cloud_security_posture_api/routes/graph.ts +++ b/x-pack/test/cloud_security_posture_api/routes/graph.ts @@ -28,14 +28,14 @@ export default function (providerContext: FtrProviderContext) { const cspSecurity = CspSecurityCommonProvider(providerContext); const postGraph = (agent: Agent, body: GraphRequest, auth?: { user: string; pass: string }) => { - const req = agent + let req = agent .post('/internal/cloud_security_posture/graph') .set(ELASTIC_HTTP_VERSION_HEADER, '1') .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .set('kbn-xsrf', 'xxxx'); if (auth) { - req.auth(auth.user, auth.pass); + req = req.auth(auth.user, auth.pass); } return req.send(body); diff --git a/x-pack/test/cloud_security_posture_functional/config.ts b/x-pack/test/cloud_security_posture_functional/config.ts index 7e80788ffccfe..bea81dd38dc15 100644 --- a/x-pack/test/cloud_security_posture_functional/config.ts +++ b/x-pack/test/cloud_security_posture_functional/config.ts @@ -38,6 +38,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { * 1. release a new package to EPR * 2. merge the updated version number change to kibana */ + `--uiSettings.overrides.securitySolution:enableVisualizationsInFlyout=true`, `--xpack.securitySolution.enableExperimental=${JSON.stringify([ 'graphVisualizationInFlyoutEnabled', ])}`, diff --git a/x-pack/test/cloud_security_posture_functional/es_archives/logs_gcp_audit/data.json b/x-pack/test/cloud_security_posture_functional/es_archives/logs_gcp_audit/data.json index 5e3d4cdfdffd5..e5b83d55c15ae 100644 --- a/x-pack/test/cloud_security_posture_functional/es_archives/logs_gcp_audit/data.json +++ b/x-pack/test/cloud_security_posture_functional/es_archives/logs_gcp_audit/data.json @@ -90,6 +90,11 @@ "logger": "projects/your-project-id/logs/cloudaudit.googleapis.com%2Factivity" }, "related": { + "entity": [ + "10.0.0.1", + "projects/your-project-id/roles/customRole", + "admin@example.com" + ], "ip": [ "10.0.0.1" ], @@ -215,6 +220,11 @@ "logger": "projects/your-project-id/logs/cloudaudit.googleapis.com%2Factivity" }, "related": { + "entity": [ + "10.0.0.1", + "projects/your-project-id/roles/customRole", + "admin2@example.com" + ], "ip": [ "10.0.0.1" ], @@ -340,6 +350,11 @@ "logger": "projects/your-project-id/logs/cloudaudit.googleapis.com%2Factivity" }, "related": { + "entity": [ + "10.0.0.1", + "projects/your-project-id/roles/customRole", + "admin3@example.com" + ], "ip": [ "10.0.0.1" ], @@ -465,6 +480,11 @@ "logger": "projects/your-project-id/logs/cloudaudit.googleapis.com%2Factivity" }, "related": { + "entity": [ + "10.0.0.1", + "projects/your-project-id/roles/customRole", + "admin3@example.com" + ], "ip": [ "10.0.0.1" ], @@ -599,6 +619,11 @@ "logger": "projects/your-project-id/logs/cloudaudit.googleapis.com%2Factivity" }, "related": { + "entity": [ + "10.0.0.1", + "projects/your-project-id/roles/customRole", + "admin4@example.com" + ], "ip": [ "10.0.0.1" ], diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/alerts_page.ts b/x-pack/test/cloud_security_posture_functional/page_objects/alerts_page.ts index f3a9f7b1448a8..6ebd496fca365 100644 --- a/x-pack/test/cloud_security_posture_functional/page_objects/alerts_page.ts +++ b/x-pack/test/cloud_security_posture_functional/page_objects/alerts_page.ts @@ -10,7 +10,7 @@ import { FtrService } from '../../functional/ftr_provider_context'; const ALERT_TABLE_ROW_CSS_SELECTOR = '[data-test-subj="alertsTable"] .euiDataGridRow'; const VISUALIZATIONS_SECTION_HEADER_TEST_ID = 'securitySolutionFlyoutVisualizationsHeader'; -const GRAPH_PREVIEW_TEST_ID = 'securitySolutionFlyoutGraphPreview'; +const GRAPH_PREVIEW_CONTENT_TEST_ID = 'securitySolutionFlyoutGraphPreviewContent'; const GRAPH_PREVIEW_LOADING_TEST_ID = 'securitySolutionFlyoutGraphPreviewLoading'; export class AlertsPageObject extends FtrService { @@ -89,12 +89,12 @@ export class AlertsPageObject extends FtrService { }, assertGraphPreviewVisible: async () => { - return await this.testSubjects.existOrFail(GRAPH_PREVIEW_TEST_ID); + return await this.testSubjects.existOrFail(GRAPH_PREVIEW_CONTENT_TEST_ID); }, assertGraphNodesNumber: async (expected: number) => { await this.flyout.waitGraphIsLoaded(); - const graph = await this.testSubjects.find(GRAPH_PREVIEW_TEST_ID); + const graph = await this.testSubjects.find(GRAPH_PREVIEW_CONTENT_TEST_ID); await graph.scrollIntoView(); const nodes = await graph.findAllByCssSelector('.react-flow__nodes .react-flow__node'); expect(nodes.length).to.be(expected); diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/expanded_flyout.ts b/x-pack/test/cloud_security_posture_functional/page_objects/expanded_flyout.ts new file mode 100644 index 0000000000000..5829e9083a8cf --- /dev/null +++ b/x-pack/test/cloud_security_posture_functional/page_objects/expanded_flyout.ts @@ -0,0 +1,112 @@ +/* + * 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 expect from '@kbn/expect'; +import type { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; +import type { FilterBarService } from '@kbn/test-suites-src/functional/services/filter_bar'; +import { FtrService } from '../../functional/ftr_provider_context'; + +const GRAPH_PREVIEW_TITLE_LINK_TEST_ID = 'securitySolutionFlyoutGraphPreviewTitleLink'; +const NODE_EXPAND_BUTTON_TEST_ID = 'nodeExpandButton'; +const GRAPH_INVESTIGATION_TEST_ID = 'cloudSecurityGraphGraphInvestigation'; +const GRAPH_NODE_EXPAND_POPOVER_TEST_ID = `${GRAPH_INVESTIGATION_TEST_ID}GraphNodeExpandPopover`; +const GRAPH_NODE_POPOVER_EXPLORE_RELATED_TEST_ID = `${GRAPH_INVESTIGATION_TEST_ID}ExploreRelatedEntities`; +const GRAPH_NODE_POPOVER_SHOW_ACTIONS_BY_TEST_ID = `${GRAPH_INVESTIGATION_TEST_ID}ShowActionsByEntity`; +const GRAPH_NODE_POPOVER_SHOW_ACTIONS_ON_TEST_ID = `${GRAPH_INVESTIGATION_TEST_ID}ShowActionsOnEntity`; +type Filter = Parameters[0]; + +export class ExpandedFlyout extends FtrService { + private readonly pageObjects = this.ctx.getPageObjects(['common', 'header']); + private readonly testSubjects = this.ctx.getService('testSubjects'); + private readonly filterBar = this.ctx.getService('filterBar'); + + async expandGraph(): Promise { + await this.testSubjects.click(GRAPH_PREVIEW_TITLE_LINK_TEST_ID); + } + + async waitGraphIsLoaded(): Promise { + await this.testSubjects.existOrFail(GRAPH_INVESTIGATION_TEST_ID, { timeout: 10000 }); + } + + async assertGraphNodesNumber(expected: number): Promise { + await this.waitGraphIsLoaded(); + const graph = await this.testSubjects.find(GRAPH_INVESTIGATION_TEST_ID); + await graph.scrollIntoView(); + const nodes = await graph.findAllByCssSelector('.react-flow__nodes .react-flow__node'); + expect(nodes.length).to.be(expected); + } + + async selectNode(nodeId: string): Promise { + await this.waitGraphIsLoaded(); + const graph = await this.testSubjects.find(GRAPH_INVESTIGATION_TEST_ID); + await graph.scrollIntoView(); + const nodes = await graph.findAllByCssSelector( + `.react-flow__nodes .react-flow__node[data-id="${nodeId}"]` + ); + expect(nodes.length).to.be(1); + await nodes[0].moveMouseTo(); + return nodes[0]; + } + + async clickOnNodeExpandButton(nodeId: string): Promise { + const node = await this.selectNode(nodeId); + const expandButton = await node.findByTestSubject(NODE_EXPAND_BUTTON_TEST_ID); + await expandButton.click(); + await this.testSubjects.existOrFail(GRAPH_NODE_EXPAND_POPOVER_TEST_ID); + } + + async showActionsByEntity(nodeId: string): Promise { + await this.clickOnNodeExpandButton(nodeId); + await this.testSubjects.click(GRAPH_NODE_POPOVER_SHOW_ACTIONS_BY_TEST_ID); + await this.pageObjects.header.waitUntilLoadingHasFinished(); + } + + async showActionsOnEntity(nodeId: string): Promise { + await this.clickOnNodeExpandButton(nodeId); + await this.testSubjects.click(GRAPH_NODE_POPOVER_SHOW_ACTIONS_ON_TEST_ID); + await this.pageObjects.header.waitUntilLoadingHasFinished(); + } + + async exploreRelatedEntities(nodeId: string): Promise { + await this.clickOnNodeExpandButton(nodeId); + await this.testSubjects.click(GRAPH_NODE_POPOVER_EXPLORE_RELATED_TEST_ID); + await this.pageObjects.header.waitUntilLoadingHasFinished(); + } + + async expectFilterTextEquals(filterIdx: number, expected: string): Promise { + const filters = await this.filterBar.getFiltersLabel(); + expect(filters.length).to.be.greaterThan(filterIdx); + expect(filters[filterIdx]).to.be(expected); + } + + async expectFilterPreviewEquals(filterIdx: number, expected: string): Promise { + await this.clickEditFilter(filterIdx); + + const filterPreview = await this.filterBar.getFilterEditorPreview(); + expect(filterPreview).to.be(expected); + + await this.filterBar.ensureFieldEditorModalIsClosed(); + } + + async clickEditFilter(filterIdx: number): Promise { + await this.filterBar.clickEditFilterById(filterIdx.toString()); + } + + async clearAllFilters(): Promise { + await this.testSubjects.click(`${GRAPH_INVESTIGATION_TEST_ID} > showQueryBarMenu`); + await this.testSubjects.click('filter-sets-removeAllFilters'); + await this.pageObjects.header.waitUntilLoadingHasFinished(); + } + + async addFilter(filter: Filter): Promise { + await this.testSubjects.click(`${GRAPH_INVESTIGATION_TEST_ID} > addFilter`); + await this.filterBar.createFilter(filter); + await this.testSubjects.scrollIntoView('saveFilter'); + await this.testSubjects.clickWhenNotDisabled('saveFilter'); + await this.pageObjects.header.waitUntilLoadingHasFinished(); + } +} diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/index.ts b/x-pack/test/cloud_security_posture_functional/page_objects/index.ts index b7c20632e82f5..fdc904e31aac0 100644 --- a/x-pack/test/cloud_security_posture_functional/page_objects/index.ts +++ b/x-pack/test/cloud_security_posture_functional/page_objects/index.ts @@ -14,9 +14,13 @@ import { BenchmarkPagePageProvider } from './benchmark_page'; import { CspSecurityCommonProvider } from './security_common'; import { RulePagePageProvider } from './rule_page'; import { AlertsPageObject } from './alerts_page'; +import { NetworkEventsPageObject } from './network_events_page'; +import { ExpandedFlyout } from './expanded_flyout'; export const cloudSecurityPosturePageObjects = { alerts: AlertsPageObject, + networkEvents: NetworkEventsPageObject, + expandedFlyout: ExpandedFlyout, findings: FindingsPageProvider, cloudPostureDashboard: CspDashboardPageProvider, cisAddIntegration: AddCisIntegrationFormPageProvider, diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/network_events_page.ts b/x-pack/test/cloud_security_posture_functional/page_objects/network_events_page.ts new file mode 100644 index 0000000000000..8e03fae7eb7e0 --- /dev/null +++ b/x-pack/test/cloud_security_posture_functional/page_objects/network_events_page.ts @@ -0,0 +1,107 @@ +/* + * 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 expect from '@kbn/expect'; +import { FtrService } from '../../functional/ftr_provider_context'; + +const EVENTS_TABLE_ROW_CSS_SELECTOR = '[data-test-subj="events-viewer-panel"] .euiDataGridRow'; +const VISUALIZATIONS_SECTION_HEADER_TEST_ID = 'securitySolutionFlyoutVisualizationsHeader'; +const GRAPH_PREVIEW_CONTENT_TEST_ID = 'securitySolutionFlyoutGraphPreviewContent'; +const GRAPH_PREVIEW_LOADING_TEST_ID = 'securitySolutionFlyoutGraphPreviewLoading'; + +export class NetworkEventsPageObject extends FtrService { + private readonly retry = this.ctx.getService('retry'); + private readonly pageObjects = this.ctx.getPageObjects(['common', 'header']); + private readonly testSubjects = this.ctx.getService('testSubjects'); + private readonly defaultTimeoutMs = this.ctx.getService('config').get('timeouts.waitFor'); + + async navigateToNetworkEventsPage(urlQueryParams: string = ''): Promise { + await this.pageObjects.common.navigateToUrlWithBrowserHistory( + 'securitySolution', + '/network/events', + `${urlQueryParams && `?${urlQueryParams}`}`, + { + ensureCurrentUrl: false, + } + ); + await this.pageObjects.header.waitUntilLoadingHasFinished(); + } + + getAbsoluteTimerangeFilter(from: string, to: string) { + return `timerange=(global:(linkTo:!(),timerange:(from:%27${from}%27,kind:absolute,to:%27${to}%27)))`; + } + + getFlyoutFilter(eventId: string) { + return `flyout=(preview:!(),right:(id:document-details-right,params:(id:%27${eventId}%27,indexName:logs-gcp.audit-default,scopeId:network-page-events)))`; + } + + /** + * Clicks the refresh button on the network events page and waits for it to complete + */ + async clickRefresh(): Promise { + await this.ensureOnNetworkEventsPage(); + await this.testSubjects.click('querySubmitButton'); + + // wait for refresh to complete + await this.retry.waitFor( + 'Network events pages refresh button to be enabled', + async (): Promise => { + const refreshButton = await this.testSubjects.find('querySubmitButton'); + + return (await refreshButton.isDisplayed()) && (await refreshButton.isEnabled()); + } + ); + } + + async ensureOnNetworkEventsPage(): Promise { + await this.testSubjects.existOrFail('network-details-headline'); + } + + async waitForListToHaveEvents(timeoutMs?: number): Promise { + const allEventRows = await this.testSubjects.findService.allByCssSelector( + EVENTS_TABLE_ROW_CSS_SELECTOR + ); + + if (!Boolean(allEventRows.length)) { + await this.retry.waitForWithTimeout( + 'waiting for events to show up on network events page', + timeoutMs ?? this.defaultTimeoutMs, + async (): Promise => { + await this.clickRefresh(); + + const allEventRowsInner = await this.testSubjects.findService.allByCssSelector( + EVENTS_TABLE_ROW_CSS_SELECTOR + ); + + return Boolean(allEventRowsInner.length); + } + ); + } + } + + flyout = { + expandVisualizations: async (): Promise => { + await this.testSubjects.click(VISUALIZATIONS_SECTION_HEADER_TEST_ID); + }, + + assertGraphPreviewVisible: async () => { + return await this.testSubjects.existOrFail(GRAPH_PREVIEW_CONTENT_TEST_ID); + }, + + assertGraphNodesNumber: async (expected: number) => { + await this.flyout.waitGraphIsLoaded(); + const graph = await this.testSubjects.find(GRAPH_PREVIEW_CONTENT_TEST_ID); + await graph.scrollIntoView(); + const nodes = await graph.findAllByCssSelector('.react-flow__nodes .react-flow__node'); + expect(nodes.length).to.be(expected); + }, + + waitGraphIsLoaded: async () => { + await this.testSubjects.missingOrFail(GRAPH_PREVIEW_LOADING_TEST_ID, { timeout: 10000 }); + }, + }; +} diff --git a/x-pack/test/cloud_security_posture_functional/pages/alerts_flyout.ts b/x-pack/test/cloud_security_posture_functional/pages/alerts_flyout.ts index 63eafc4107bc1..35f9578929ada 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/alerts_flyout.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/alerts_flyout.ts @@ -14,8 +14,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const logger = getService('log'); const supertest = getService('supertest'); const esArchiver = getService('esArchiver'); - const pageObjects = getPageObjects(['common', 'header', 'alerts']); + const pageObjects = getPageObjects(['common', 'header', 'alerts', 'expandedFlyout']); const alertsPage = pageObjects.alerts; + const expandedFlyout = pageObjects.expandedFlyout; describe('Security Alerts Page - Graph visualization', function () { this.tags(['cloud_security_posture_graph_viz']); @@ -54,9 +55,52 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { ); }); - it('should render graph visualization', async () => { + it('expanded flyout - filter by node', async () => { await alertsPage.flyout.assertGraphPreviewVisible(); await alertsPage.flyout.assertGraphNodesNumber(3); + + await expandedFlyout.expandGraph(); + await expandedFlyout.waitGraphIsLoaded(); + await expandedFlyout.assertGraphNodesNumber(3); + + // Show actions by entity + await expandedFlyout.showActionsByEntity('admin@example.com'); + await expandedFlyout.expectFilterTextEquals(0, 'actor.entity.id: admin@example.com'); + await expandedFlyout.expectFilterPreviewEquals(0, 'actor.entity.id: admin@example.com'); + + // Show actions on entity + await expandedFlyout.showActionsOnEntity('admin@example.com'); + await expandedFlyout.expectFilterTextEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com' + ); + await expandedFlyout.expectFilterPreviewEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com' + ); + + // Explore related entities + await expandedFlyout.exploreRelatedEntities('admin@example.com'); + await expandedFlyout.expectFilterTextEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com OR related.entity: admin@example.com' + ); + await expandedFlyout.expectFilterPreviewEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com OR related.entity: admin@example.com' + ); + + // Clear filters + await expandedFlyout.clearAllFilters(); + + // Add custom filter + await expandedFlyout.addFilter({ + field: 'actor.entity.id', + operation: 'is', + value: 'admin2@example.com', + }); + await pageObjects.header.waitUntilLoadingHasFinished(); + await expandedFlyout.assertGraphNodesNumber(5); }); }); } diff --git a/x-pack/test/cloud_security_posture_functional/pages/events_flyout.ts b/x-pack/test/cloud_security_posture_functional/pages/events_flyout.ts new file mode 100644 index 0000000000000..0848307ca26d2 --- /dev/null +++ b/x-pack/test/cloud_security_posture_functional/pages/events_flyout.ts @@ -0,0 +1,98 @@ +/* + * 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 { waitForPluginInitialized } from '../../cloud_security_posture_api/utils'; +import type { FtrProviderContext } from '../ftr_provider_context'; + +// eslint-disable-next-line import/no-default-export +export default function ({ getPageObjects, getService }: FtrProviderContext) { + const retry = getService('retry'); + const logger = getService('log'); + const supertest = getService('supertest'); + const esArchiver = getService('esArchiver'); + const pageObjects = getPageObjects(['common', 'header', 'networkEvents', 'expandedFlyout']); + const networkEventsPage = pageObjects.networkEvents; + const expandedFlyout = pageObjects.expandedFlyout; + + describe('Security Network Page - Graph visualization', function () { + this.tags(['cloud_security_posture_graph_viz']); + + before(async () => { + await esArchiver.load( + 'x-pack/test/cloud_security_posture_functional/es_archives/logs_gcp_audit' + ); + + await waitForPluginInitialized({ retry, supertest, logger }); + + // Setting the timerange to fit the data and open the flyout for a specific alert + await networkEventsPage.navigateToNetworkEventsPage( + `${networkEventsPage.getAbsoluteTimerangeFilter( + '2024-09-01T00:00:00.000Z', + '2024-09-02T00:00:00.000Z' + )}&${networkEventsPage.getFlyoutFilter('1')}` + ); + + await networkEventsPage.waitForListToHaveEvents(); + + await networkEventsPage.flyout.expandVisualizations(); + }); + + after(async () => { + await esArchiver.unload( + 'x-pack/test/cloud_security_posture_functional/es_archives/logs_gcp_audit' + ); + }); + + it('expanded flyout - filter by node', async () => { + await networkEventsPage.flyout.assertGraphPreviewVisible(); + await networkEventsPage.flyout.assertGraphNodesNumber(3); + + await expandedFlyout.expandGraph(); + await expandedFlyout.waitGraphIsLoaded(); + await expandedFlyout.assertGraphNodesNumber(3); + + // Show actions by entity + await expandedFlyout.showActionsByEntity('admin@example.com'); + await expandedFlyout.expectFilterTextEquals(0, 'actor.entity.id: admin@example.com'); + await expandedFlyout.expectFilterPreviewEquals(0, 'actor.entity.id: admin@example.com'); + + // Show actions on entity + await expandedFlyout.showActionsOnEntity('admin@example.com'); + await expandedFlyout.expectFilterTextEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com' + ); + await expandedFlyout.expectFilterPreviewEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com' + ); + + // Explore related entities + await expandedFlyout.exploreRelatedEntities('admin@example.com'); + await expandedFlyout.expectFilterTextEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com OR related.entity: admin@example.com' + ); + await expandedFlyout.expectFilterPreviewEquals( + 0, + 'actor.entity.id: admin@example.com OR target.entity.id: admin@example.com OR related.entity: admin@example.com' + ); + + // Clear filters + await expandedFlyout.clearAllFilters(); + + // Add custom filter + await expandedFlyout.addFilter({ + field: 'actor.entity.id', + operation: 'is', + value: 'admin2@example.com', + }); + await pageObjects.header.waitUntilLoadingHasFinished(); + await expandedFlyout.assertGraphNodesNumber(5); + }); + }); +} diff --git a/x-pack/test/cloud_security_posture_functional/pages/index.ts b/x-pack/test/cloud_security_posture_functional/pages/index.ts index 0114b6a8ce4dc..67c06d979002f 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/index.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/index.ts @@ -37,5 +37,6 @@ export default function ({ getPageObjects, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./vulnerabilities_grouping')); loadTestFile(require.resolve('./benchmark')); loadTestFile(require.resolve('./alerts_flyout')); + loadTestFile(require.resolve('./events_flyout')); }); } diff --git a/x-pack/test/common/utils/security_solution/detections_response/index.ts b/x-pack/test/common/utils/security_solution/detections_response/index.ts index 43c2a54900c15..45efc2cee3b4c 100644 --- a/x-pack/test/common/utils/security_solution/detections_response/index.ts +++ b/x-pack/test/common/utils/security_solution/detections_response/index.ts @@ -5,9 +5,10 @@ * 2.0. */ -export * from './rules'; export * from './alerts'; -export * from './delete_all_anomalies'; export * from './count_down_test'; +export * from './delete_all_anomalies'; export * from './route_with_namespace'; +export * from './rules'; +export * from './tasks'; export * from './wait_for'; diff --git a/x-pack/test/common/utils/security_solution/detections_response/tasks/index.ts b/x-pack/test/common/utils/security_solution/detections_response/tasks/index.ts new file mode 100644 index 0000000000000..128f0cfe9b93a --- /dev/null +++ b/x-pack/test/common/utils/security_solution/detections_response/tasks/index.ts @@ -0,0 +1,9 @@ +/* + * 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 * from './indices_metadata'; +export * from './task_manager'; diff --git a/x-pack/test/common/utils/security_solution/detections_response/tasks/indices_metadata.ts b/x-pack/test/common/utils/security_solution/detections_response/tasks/indices_metadata.ts new file mode 100644 index 0000000000000..0c4d90749e423 --- /dev/null +++ b/x-pack/test/common/utils/security_solution/detections_response/tasks/indices_metadata.ts @@ -0,0 +1,108 @@ +/* + * 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 { Client } from '@elastic/elasticsearch'; + +const DS_PREFIX = 'testing-datastream'; +const ILM_PREFIX = 'testing-ilm'; + +export const randomDatastream = async (es: Client, policyName?: string): Promise => { + const name = `${DS_PREFIX}-${Date.now()}`; + + let settings = {}; + + if (policyName) { + settings = { + ...settings, + 'index.lifecycle.name': policyName, + }; + } + + const indexTemplateBody = { + index_patterns: [`${DS_PREFIX}-*`], + data_stream: {}, + template: { + settings, + }, + }; + + await es.indices.putIndexTemplate({ + name: DS_PREFIX, + body: indexTemplateBody, + }); + + await es.indices.createDataStream({ name }); + + return name; +}; + +export const randomIlmPolicy = async (es: Client): Promise => { + const name = `${ILM_PREFIX}-${Date.now()}`; + + const policy = { + phases: { + hot: { + actions: { + rollover: { + max_size: '50gb', + max_age: '30d', + }, + }, + }, + warm: { + min_age: '30d', + actions: { + forcemerge: { + max_num_segments: 1, + }, + shrink: { + number_of_shards: 1, + }, + allocate: { + number_of_replicas: 1, + }, + }, + }, + delete: { + min_age: '90d', + actions: { + delete: {}, + }, + }, + }, + }; + + await es.ilm.putLifecycle({ name, policy }); + + return name; +}; + +export const ensureBackingIndices = async (dsName: string, count: number, es: Client) => { + const stats = await es.indices.dataStreamsStats({ name: dsName }); + if (stats.data_streams.length !== 1) { + throw new Error('Data stream not found'); + } + const current = stats.data_streams[0].backing_indices; + + if (current < count) { + for (let i = current; i < count; i++) { + await es.indices.rollover({ alias: dsName }); + } + } else if (current > count) { + throw new Error('Cannot reduce the number of backing indices'); + } +}; + +export const cleanupDatastreams = async (es: Client) => { + await es.indices.deleteDataStream({ name: `${DS_PREFIX}*` }); +}; + +export const cleanupPolicies = async (es: Client) => { + const policies = await es.ilm.getLifecycle({ name: `${ILM_PREFIX}*` }); + + await Promise.all(Object.entries(policies).map(([name, _]) => es.ilm.deleteLifecycle({ name }))); +}; diff --git a/x-pack/test/common/utils/security_solution/detections_response/tasks/task_manager.ts b/x-pack/test/common/utils/security_solution/detections_response/tasks/task_manager.ts new file mode 100644 index 0000000000000..84015fa7b0b62 --- /dev/null +++ b/x-pack/test/common/utils/security_solution/detections_response/tasks/task_manager.ts @@ -0,0 +1,52 @@ +/* + * 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 { TaskStatus } from '@kbn/task-manager-plugin/server'; +import { KbnClient } from '@kbn/test'; +import { ToolingLog } from '@kbn/tooling-log'; + +export const taskHasRun = async (taskId: string, kbn: KbnClient, after: Date): Promise => { + const task = await kbn.savedObjects.get({ + type: 'task', + id: taskId, + }); + + const runAt = new Date(task.attributes.runAt); + const status = task.attributes.status; + + return runAt > after && status === TaskStatus.Idle; +}; + +export const launchTask = async ( + taskId: string, + kbn: KbnClient, + logger: ToolingLog, + delayMillis: number = 1_000 +): Promise => { + logger.info(`Launching task ${taskId}`); + const task = await kbn.savedObjects.get({ + type: 'task', + id: taskId, + }); + + const runAt = new Date(Date.now() + delayMillis).toISOString(); + + await kbn.savedObjects.update({ + type: 'task', + id: taskId, + attributes: { + ...task.attributes, + runAt, + scheduledAt: runAt, + status: TaskStatus.Idle, + }, + }); + + logger.info(`Task ${taskId} launched`); + + return new Date(runAt); +}; diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/elasticsearch/ml_model/test/default.json b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/elasticsearch/ml_model/test/default.json index ce77f56845a5f..2e59da56a81d3 100644 --- a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/elasticsearch/ml_model/test/default.json +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/elasticsearch/ml_model/test/default.json @@ -1,6 +1,6 @@ { "model_id": "default", - "estimated_heap_memory_usage_bytes": 365968, + "model_size_bytes": 365968, "description": "for api test", "compressed_definition": "H4sIAAAAAAAA/9S9W5Mc15Gl+1dkeJgndtq+xL6E3goXApAAAgcFEmSPjdHQZJGCDQVqQLB7aG3672d9nlm4VEYscGSaPna6ZZSYkRUZsbdvvy5f/p+3/vbm6m9vfv7u6pdffn7zy60//vf/vPXDm6v/9evV6+9++1b/+Pn7V69/vPVHffrq6qfvb/3x1p2Xb968unpz67NbP1y9fPvrm6tvX7/869X7C9+++3O+8u5Wf335N+7y51f/9vL1yz9cvHrz06vXV/q9dCh1HcvodUl9XVLq7bNbj37+8Ze3L3/5C9/7j5e/Hb/Wak9z5Qtr7Yu+de/yX3R9+9qfrt7e1uNt/uXf//73z/7z1tuXb368evvtX69evv7Ee35/9cPLX396++2/v/zp1ytumMscbUlltlp77uvuUhx/g5/Qba5/8LgQHz5gLi2NJa1dt1xaWZcP323j4tbybHxtY61zXdM6xrJoRdZUrtfC7/jdq1/e6iZ/+/nN24d3z/f9o8t+97958oKnSLn3seQxWhtLmzVrwx7eeX68lEvvLOuUUORZdeny4ou4lNpsc1mXmceipW/1s1vPLo9/lYo2ufRR6tAXah+f3brz/PJ4w5r6XJeV1+6jlvnZredfpRzXShr1w9vqzx7ce3S8o1aolTLaWFet2dSl21/cO17S0n10V93y6Vf3j782U+m5jqm/aovEjQf5cu8ZHz5/fHqzJY255NrXdXY9yWe37j56cLyUa8va1bqUZe29pKLnf5KPz6+HWLSXy1LWtdQqQbx7/fjna3X5p9NzzNbLklvT/o/ZkJQHX9w9Pf1aJBzL0Ju1wnt9+fDJ8coyR269Dm1cL7PoKZ49Pj1FWlJrc+akv516fv3Ug4vT/XSwx5rron2uM+kBv3h22metRSl5lKzX0hlCBC7unu7XdFT1VlqnOUfVAz6+/GZvDS/vfr536elFqqdrI9W1aMu0Y7XoeT+7dfHsKFWlLlq5sRat/ZIXZFFvVk5CkNsiGc36m7XkzHY+vPPFzlvf+9d7e3e88829+3tP+dWznE67mVdJjoStaLNb1vLfvp/21vjei2e7z/jVvdSOj6InaWVqgSWLa9alRw9PIncuw48enO44c85DoiYBHuvQVj9+eNrqrdP5zbNdifvqKDwl96rnapKrdWlr0Ya+uDhqgjIl9lM7UyXBOjVaj8/vPDk94ZqXOnRTPUYrLONXD+/trdTdF3dOh/Ncei4f3dk9S08fPNrbmPuPnx4v9Zr0KLNoEecinaB9efSVuePnu0J3/1oMdL60fpKRooPVE7rgWpVt7Mztzx/uvtzXD49H46OfyieFdbH7JN+8OD5JnVWStdSk904LW3Pn7q6oPrj8avcZJSOnQzN6zzlNvdUykzSATv3XD25/eTob2vBey5CUYEH1h39++PXeMj/74smujN/98vaeon7+5eWuSD5/tLtxXz96fC15esRR3jkmcie+uL2n0P712VFRL2suWUs2xqhjaAMkyc8udh//9pPTOdywGLefXEvJuSI86fes15YCX/X/uppYxztPH+z+2hf3n+y+9u37z3aF68nlo10j+uWjvW17eu/P+792rT43rt15Z6FuKqBvvtx97duPTo8vU6I3aLnJhmbtnJ7j4UkNblivR8+/2LOGl9/c3VGej7+8c7rfUvTSWul1leZa9Bh/+nz/nZ89vLMnj19cnBS8hKePrnMolSZriEZ7/mJ3Xx7febgrPd988697G/Pg9GZZUiofNun5Fp2eUDEv9lXMw5N7sPVulxdf7WmL219+vi9Yzz7fv+XnT3bV1uW9i72lvH95rSzOFMKdR/f2he7pvt69++WzXdV098sdw3zn5ApuKsl7j3df7fZFKvsb/uf9N3h87R+fHZtH91/sKLRHF5e797t/vSIb1+5+fa11z5XMnevnON+Apw++3nXS7n69ryQfPN5dkfv33rlG56v16OHek1zeebQvXBf7onD5+e3dv7tzkcbuIXhyuXvPRxdf73sRD5/vvd3zp/tm/c79L/aF7/LprtK4eHjn8d7BuvdsXzU8fnixe8+7l493n+X2kzR3b/r0xf4p+dPFvv24/+4Ft9bzYv9h7j7aX7Tbl7vPeXHtTGxt0td7135f+uFm0L2RhJCD1bNCv5YmYf0nAnOTizg9q7yXtfW+xMMmPfW7N9y4clqXjSun1dy4ctqDjSunndu4ctrvrbsdpWTrCU7CtXHpJJNbL7T7cCf531qe06nZut3uG52O6MaV08HeXLnnO1dOOmRzFfZ26FpfbVw6qbmtKxd7j3BSqVuL8Ghv5a6199ZzP9hb05Op2LryYO/KnV35OZmyrYd7ur/ae2t6MrVbi7D7BCejvrUGJ19g64/u7S3PyfHYuHJyVrYW4ejhbN1tdxFO3tTmMX6yJyP39kT75O1tXDn5iFvL8+XelZM7unHl5MRu3e3FnpSe/OWNKycne2t/7uzd7eTQb1y5jgK2tu4YO2xpxmPEsfUIX+79zXVos5b24X/6u3hoU/cco6itlXu0Jz2ngG1Lev60J4un0HDrEe7tverz3d85ha5bv3N/76lPYfLmaXiwex53f+fJ3nk8Bf8bV04pg40rpzxDzvJS5JvVnNfSe36Xm9j4k+uExpYg7Br2U/JkU1fs/dApT7Nx5ZTc2Xq465TQaMvIXTG7PH/9S3ufSto6kZd75/uUttqSxWOqi9iIj+YslQLJ8i5BtvV0x6xaznKFS1OsXFuvJb/PxW1pmMs9jXlK+20arl0d92jvTU95yc277e3qKQW6tasv9q6csq0lzbUpiqpzprb2dX2Xot34m1NeNy+py/d+93/zXTJ4UyntncfrvPOWvX2w90enDPfWC12nxc/V3ymbvqktdnXzdeY+9yWPNSddkEeuc/k+4b/lTh7LBLnVufT3/3xXWdg6X493D8SpjFGqgoH1/T+X99WPrRW/uyd1p0LLlnRf7NnCU0ln63ce7J2v6+LRxqVTyWnr8O+a8Mtdo3J3Vz1fV9FuqAWCzFPxbWsVnu96X8/3HuHprl92qihuver+Y3+1K4+nkufWcu+qpstd7/RUkd1SqE+2HZnfW0x+oTj1L1sQgg8u+kLynZ+uXh6r48tapyL9ssp8pNmknJ69fPV659Ldl399+aMe6A8vXr3+fuc7d376+dfvf9u5+ODq5b//9ofPf/5x5/rzv/z6+vurN3/4b3949OrHv7x9HS+/faeXr37auXT56+vX2w/w+1MH75f4PHEwimxtH21tJVN2tttg0gbvn7PMpfZSS6sjkwH64PXOL+2t0cZNPlrt8+sfbNX5xfO9Pv/OO1HZuve1hN289nuk/POfeLW7Vz+9/O35b3+7Opf0G1/w0v7Fz3+Ib/I4XSpKJkPPUpfRqdc9evn2CpDHd29e/vDWffGLi0t3+bTj779yo8jasJMnZMsHX/oYQbEgv1ff/frm1dvfPviSNMWsWsJZyiJ/6nfmwM5X8VyY89LBsYBa6EvAXj6x0k6gzx4816GnXRPZRJ2UurEA+eP/K21jJXXcylhTXylALXm2G5uRy7rqmCetd13SDC9me1c3vvmhdJxd/v3C+vzVX68e/Pzrhlb++LoX1TwOrcsRyutouecldn8rP1oPTb6Szpaed1lmz7vfzFnbkArIGH139v0v6rfbqPLAgNDoT8b+V+Ux6ZeXXKv8P0rgu19tBxAK2jPKvX1d9n+/LAfpiNqp5yf5EmP/prkcJFL6KI+0lDHM25eDTgx1yNlr1W3r/lfrQcvT9F0dt0X/wzzqYZVoUx5ZJJf6j7nrIVUq2yNRCi3D3bXKFZ46iG2tUgdpf/1LPoyWZp9Nby9hMZtaDz21pWphx8z6ut9/hZIyl00Gc2Tz+/OgtdRGTX2pt7QvprontQ0FfyBUpAj2vzoOWqLSZ0m5EaOvTqKBOs4p7ZKkMboV1C6vdOqTLh9r7BdN8oEKSWnaLYoxVlDKQSs0OgLYqz4zj3rQj5eqt09LH4oD9x+gE4SgjaXost5r/6alHbSZrfS+KqbWfrmVksmoUepoSad7f6W6vqnnY5sUfMoWuAct4eg3LVVqeTXndNFBITyTCzZS6u6c6PTrnZZF/6QqnPe/uh5W6smxA3qSaja1HLosNeBOnWy91v77r4chI6XjxH4qAvTKrylg1cEDb7g2I/5I1bqMCkZLZ9qJH6hY8HxSlqPNvn9O50GxFoGyvtdBAhndKwGR2qO2nnI3qkcPKv2UZ9XZbxLCdX/1J6AnSZW8lizNNvalbyFIl4PTgWf2ar6ZZHnWLoGSmyRtttT9JV11onIj4JTL0pK5KcdU9rFo8alhFnPTflhaX3RlTP2XDre7qY6nFMqQS6edHfvnRKoX30+CIsunk9X3v7rKmlO1l0ZLgTEwdl9adC766rIC4nl30/PSK2qyS5WA0h3cybxVP2iDSpdNlZelS26lMNEB7plSveb1dUwHkCAZiqaHc2qiyfJnNn6V5pluU6X6FElI95e86M3MTRM2WgG2Qg7gTMs0xxTVK9PTlx7V97a7puthSodLrKnRD2d4pc72d0ZWCb9hAhvsSJyTtwo2Lp3A8uYIpwPasOnf5erIjpqbopZAoUp/yzWRF+ckQxosKTJJgHKL20U5JUP6Ez9Hxmk4t0BvNQO4Ccw3ZbcA6bDIGkrQtYsTHeG8kkBg62CsiwTK+RpFni5fU+izyjrv71U/dP14rmHFe5tG3ywSjilfp6FDdZydwGXt0NS5GDpIqRnkUpdqSARoEhh5JYuxS+1AGUD6Rv7zKv08jBjLzMjbkVgBxFvdSjX6ShR3JaI4IygSv6qtl5ptiiqNClsPZHqBzqHwR93f+ykvd53AXPVfSzYugZRNOI/yhhS+VRO6lMNUlLk2Cb10vrbVetnxtULuSHG6sd7zkAfuuHTtwjI752XReZef0YuskgyEkyd9LAsrV1cyWN3r1wOARGkS6cXoDnFSQtC/ajmbTKNzCvBzADc3OSbY0WJVqEQZxLl0CifAWSUMomQlt06GxJ3nrF+OApKExciJ3AdKADI0knu0z/5OKciU77j2MmVq5L3uv70OnpSZDKi+z0uZ3U/I6SLB0znNxQWu9WDUskSDWIm6pMKQbhw7KeWxEFBL1WuBmrlpxL9tNO23FF1zFkROwCRTJb1Y2bP939fHYKbk0eaO52L11zrkgKFDZJ4Ug5pvyv1dCVWTLlQrbDq7uCnyUxUqTGOUdNM04nby/uWCurdfSg2PThGFvj6dvGXw/oClI6+RXFStz6W7WfwVu2wcxiInTHsq905PIsVsYpB60L3mXIiDSqf065SoDkWVAk3yOFYjxxJjHTe9mlywpXBGnAGd+hb9Ux2goHl/hYvywxTRSj/V2az9UuRZcR5S1EOMU6Df560Su5VlFPdN3cTUrYqUtKq4bfurr3BBx28S1cp+VecUHQgV5TzIVVTAXsxCSd21BUzrZBMIL82a8vjSS5lutFysrZ20vyhgK/Kv5ds6IyLXQWIie6MnKEZQlve66XwZKxueQeZKyet4VLOP5bAuc61N6rhrH13SRbetc50NKRoyyjaUXvQ9+g30FxL6/ReRHPUqQdYzaD2HUU4oEjIIjeZPRR7F6bHOCZK8U/nRibdZD1LIkvdV9kgX99dqOaxHeHWj262Yb0qPyglZptSjLkigPpF1kQgvOkmyctMlKA54NvLamlSfPnV3lc6R35DDcaN51+o8WhMV90vmZCSMez8OERwuchwWHX2jyeW3gJ8g6UALkQu8SOLJKva00qnr0iMJB4f0mDbJxSsSKRlROQxFYTQH2gXoS5b6TNJ3k1jIrOh1iLiBt9Z2r/T8dVylbFOcB44a1lgHI2UbIkptLtpAqhtyL/bXUDGX7I/8M72rYhqTt1LMIVMpG7uQN1zNwnAqOgmehuulYMqLmhYZXIgMzGjOvBbgIyRO8bt1xeViFblLJcinl/RK15hnlbIZhaLFSjrEpk2x6jKEEzssabM5NoIEGQOMq8J/8/tyBZYZLd7y0LUQzmrIBVO8qWhWLlNyL6WgW6suG6yv63BkXzWQFS4Kzyuvb1OM2p+GtkOLOkt4qB00mDwWWdiyL3zzwNGR/tBp00O4ihUZNpxleSItWAqMb6VTRs5sUms18ZGCPllVHqAQoWWjP2RaZYHHoF4j+2odBplMHTzgUsHS4K2nIn6S1omzsv+kqC+ET0GXotSyThN0HRQXFm3Q7IojZZadayvPKhd6ibSndPS5QF5+igJPvRNb6nzQQlWF9yoUxa0TKPdT/roMiAyetLgLuhVUKOinaqk9239QXHB5LLJypUmVVj2tFSoJfOtrKUnbmkzGpxwk0Yo5O33Wq0tGTvmWjUhSkrWSPjeLWnSSso6nHoH2bSdUM8yRjGyPkqXbVf0q2lERRiGb4eRPFiihfOUuy4I7+9W17JQBFYVSNnVhmI69dKQ0f280o7t4QftEeamuVG1NfmaRQ1LJ7pOOX9O+RtGOTvKXNPx0clnOH2m4lwoVM2UrE4Ovh4Y3RKqV4oKxkcTVmVoJ+dPVVut09jBkWVK3uFdHS8hdlo+F7MnTMl/Nh4Qwk5yjadxVgZZDJX2qTZ8QnZiUS14PbDuvVJtiJSf6sB3o6CmwlZY2fnsFf4BdnGRktVz7S6qjTxInE3zqrDjXTVISRkxvVOQmmCKIfBkd0REhOJQK5qbpQMSg0EvKZKXp2DrjNCTT2K7gP5mwbhwiXqFgWICu7X/z2m88bxpcD+GIZXqvnTMPiBeZJNbVKXZCUWUSOGcDpoPVuCJRAKj6mMhnZCeU/UDX3aKdk5FRAGR25QAwaaRRKS3IYd9f6nSgoICqx/bhT5usAMwNo0Uta3XB1ARhL2WkEzwBkZid1u9TZJaSU6CkGMWuFD49dWZ8YRsiNwWT2mWtpo5vLc1FSDqOi04OvadU/txKLYDNBjEXrqtNLct2A51BhXaXr9X2y2OVi7WsiGV3Wl7fhcokHD2FPeZZZeZ5p0WLoFiZirNRycReU6pmyNmrJmyoB5ejhTdFZ1saMJM1tYEKsB6ZCUUpq6l5SAks8r7knuMIZV9FanhzS2QBFU/Y1JpcNfgyFMvJXXVuVac2RrpQak0C6jb8QF2gFBkVMlvNQAHKBNwFvGod4dW63LY+7Y2UYaekYhYA4G6juJ5ZU+OqDwUKOux6yMhEunobWbhGSWzpRNhe3HtoX20/roWrY4G+U5Sofyfid57ayNTFdAU0UHLul0yw4qiFwszKIXUZKdmJXiDrwFlJTttJy3IypJaBDVht1yfhcQX9OM1hbwf40sirtmGzLMejLrMmDzmAKNb5B1Ur9VkU1hB829ij80oUFeSCWq8KpQSpTNFhzvvbJJcmA6mak0yUqz8kIFDk4Va21EXSUl6SYhSX/OnuFO0MZEejYyqR0HByr/OuILbJHpK2sxrZVYYGx3tSswJba2FUiQgr4hwJXHNFHLnaBJtrJylkMgervB2oaBZgYatxtipLiPXV1gypJePs9cOkrip5UDhK6srWxRQ3SLkTQ8oHcOCkGkgfxULU+LqL88aB4KqADNTXxrRrOrWHCbxdmIT9lRr0kMmBJYOw4q5Zu5pQNWANM3GUfYBlUkFYQokkk3seBxjZmgzYUPhUnWPMAkh+ZRJJs7mStdyK4LDrYNq7yzHyoIuizJWyqFxdY2dlkPIaye8wtT7FJwHBBdO3mxSJy7AmyI/IPEPBlh3es0mqUZ45HrYZbQOCe9AVQdla9t54KyPUjfY9kzvVA1vHPniQqvwSqZNPZOmb4ifK4ArduymThFRHNYV0vj536k5PR9paj7BkW8OVlwX+QyKYkBiXO9GpU7QCZIc4zimfjInTCdBeWWyePldARqZLurSaoALdl2Bj08pLA1Xr43QQqZy8YKO0ZrbJyEmpzFhUW79bUzQcVXjTXAGbxKWWlFoAeZPFWBDwKvDByBhXPAeTY230qVE1ICWFvXVrCp4qU5GVsCyuvKCfLhX7HejgxXU6jEOX8A0g/CPDw2S2n9JGBxg8C+raucPygnHJ5Yri7LpFLbmTOFOwuqCnzVsBnE6EKtIoABnMolYdTgU+EOrCrmZuuoZ2DCAnND7GG9eqJlI9We/WRnKHD1RhDpR/DQPkrPQAggUtoVbUYtrk3svJJvVA3t6Y3iLVByq6pFWax+xTc/4LRZIEEJVajsd2UHvCd5DGpV3LG3D56A0OLSnSYrLfNYCZUkuyovhtHgYv3y/BbdVHNb4yYkmGXCuoIzdckX2lX0EqoQWYbhgVAq4GaQQHDpTJPiesk2NyQylHXw3WWQdX26ucBx1Rt0/U7Gm/IazJLgMKhBFwMxXZTABq7bdiFIm6vHVKEM59AWi50i4yg7LPLUDiawp6A43gHrUfdHjllC3ynHXefb+AdGLCNFXJltOLZZLmqkASqMo7Q6t7ao1axzdKRvZ3yXGpnsn7oIIFxNNlm5cDzpwCnpU8ezb1owqSe4LpJbuTHZJeZ1J3TKSLZlDVuhUkd6//QHYMcNc5Cw0wXgevOW0Xz7E3pUP1Ry+F+33dVf6vDKYkQ2JhOk4K2LBOq13HuzFlTlCD8uhDCeY4cM7/zgonKmD2xio4JSxHkdB4kWdBZsbddOCkSTASxthZK4rgcuoWKcTxibymjJncCT0pvWm+L1C2WvpLBghPyKkPwLLUBFuwtTk/lcYdEt8LC/YuK79REJUBpJNUXiLFq2bc5AEqUwKtTSLd7gAGSX5yxpduZG6mzd3I8lEOptWLpLHJHErJySLo2ppIc1n1ncDfSk4pHcoFNr/fyCBgPyT4rswln7om+PEgK8gW/07mauAjDqp3iw0T5HWthD9ROTNWVmqWO0rqgUFkG9AC2siQdJJgBQlu9pQCgYyxrLak2vUaFrJ8K/58oc5n0Js6z2lGka2RuTMrWqiA6vUVpCaXkArEhhzKSVtoWlwqVoF3B8omZxUpNYmHgUenY0D2geSReSN6AsktR6fl4oo0g7whncBZCiU5lGfFFlX6zesaEEZXtpezMov2qOFQr65IgECDyKRyxvlzeYcBExFl6BK90y7voKBT7zTpNfsEtEefQUIMsr5Np6FTRIkIHY25q7OQMtCZFIFkKlUiJue2AhjSaZJ7SQ+IcxzJ90ikWgLIaDJ0M9ofejQLwA2w//PXK7OFG6Udp0e/2gR1b51k7YZcAilx4HPmq/Uge9kou0uUpfDcO0TeuWE8qnOTEOGF7uNeKCm7YoqUNys49elEedne++gqlS+yKooykDdtYCUTGRU+SA7sOpGElfstQZdcfsLFiBkAKNni2mIoM5LKX6OnG//JrVQhyUWZFQy6jYiluCbuMfNjhqvI6QGkanD6UWM9mQeYpEQq5SEtqT51zT4G0ixfCb0mq06txTorZAAHdlDnJVtNKO1acRDhxZJ6tzmgTplDR5sgyuJEE+iZwNLOAS7Dut90JQNOoOHVJpWlU8ZAv622hR/skFyJSmcynBPVeL/RHQrPAAK/vO8r23TAZpMebDJqFQop226PUMimUUdZHBiS5iI2SkoBRLPL/8u46LQvsld0DFGwt+EPfengSDIlPHs4VzK1idAw4QRbd0WqKTgMMgK9f9cixy7LWyBXHkVwi6iXoICqaIAsm4ULUELCsW/kit2JL4cA2C3AQNbpmvuA7pKiDkioxMVF8JNWbr0RCL7pMXEwM0T7DDTnJls52dXWFQAQ/piSllwb3QuQDDtQDcwORBguQwBbmjspBSxyKgvNlwGqMb9O9o3eXxCGi0tIyf+XPOP9S/qm66JeMCEI6oAWxvjU8wCsOzFaB64Xi+4l3u3oZaoODgmxHBAksCSrxHn4jihOfCZKnbna5HujUXqFQAW/0t+U3DuhZ1nKB4iiDdWDXwPuqbJXPZtsggRPmmwQU9Df5zKqOs207MlvUfwnFWEFSl+j9RoOj+p7NXFvKqwoNThU3Lkb+giIkhx2kPBWnwIzLPQ/6r2MMukH0J2h0bv8LaMiSF2tiXVlegho2/1nTaHPg5AH13p1mLwlnnV0VG+Vvdp3ClcFKxVIW5KfKam2kED9z0mnI+0Iw+kocJZ07s0U8ykcgQm5l1XqMTM+wm5WxfTDspEJgIsDjpNmDdwm/XaSFQeUk58tnyxyreusJlUv2w+kKybxjMWmeYFUkTPUItAkZEIQRWCAoaXTJFQ4x06rHFPRaw3fy5+q33kAaNcl9iUpK1fO2D3qVIgz7ZsQfpg0zUrHBoSgqMHmsLvzIKt8pMSpQXnnRIouXN0O7lKFG9YnLoluckISfcGkiVYYDbRREn6SpCbJHJUDCd5AAukH8DDXlSptHJQPyEa2w6cCEnf0SveAgcRIqUpVFWpVsL6aBITUDzGO7rtS/HbCL9NLFwiZsiIDYBJaRNX0OQMolamapmkE7iwpKZ190AQtmaXC/K0AcgYt7a4YVA9w3BSMOaxgtmGpw1OtgL7TE9pdpkhuF22usnyc6U/08dFuR8K5RXOP8yjAnciPUgwpa2UbXBRDKGokgJZ1ew+8ODe/BeAYVl/+AixWluoHZB/4CMVeLpZaAQk3sDwjk9F1/WrQ63SKIMDmfJNto6CaM7iL7JJPwTMEaSDRmRxUF3Vx4GBcxFfLFkelvQcLN4DSmAwllDSd/vZJ3jUZ/xQkPj0w2hDE3jn80ruK3+htp7nEEexBZSMV2eQmVUrE7q6wDKEmlxEUA5/gIwJaSOJCO+/YuMC46TFp4aUWZ9SJ9r4Dy2iDOHY1ilfRwWwMg8X0yqrsSwmV3UHxrEDi6VoWdM8K4qITQCk0dw4ifXfQ0uh5ae8wb7Qy5jEFMmV1PdElxxg3XGl6/KszUOshcg309S1S/K4DaDkQFy1Ee7XjSrm7ykAcP0/dAQkaZFwrXZL09zv4tRaKdjKp0pEnkaTlgahADYa0Y50ObLXS/jX0caZkno0lkc6VI5/AQ67M3rRIbbqHe4xuxElzXfhgOqNZaIl6kzv4VOMKjUBJytz2VCUo2KjLSvsl45ut8s2k9oY8FJB2Buo2DnRI0vu7hmB7uGyn45Wqdl2awQpIm4AFhcKmT39G9VV4vQBkNjA0RutqpeQ9AiqvXQvlQCzBIZW0o4XeNqd32iEoCLXyOky0KtqAl5aqSmNTKxZupGOaJtG5zv70CdMkdRa1jBJOrLPOKfxIGkUDWeAcCU4fjK4A20HH2qxQI8lZSzCWrpYyUocuQ9lCG6CrYWpX50pyv9ArtzjnPACsco0ztcEGm5n7KuRZHL4FDgzHL5cruAoGD0tbOVzchO9Hjwm5pyu0kxWSNiXTzOBLU/DqByYkJugL9G0HNTxSC8LBM+OmJtwnJdzpEaGxkBjWOQiYxhJabUmW8kjLdKyp8JzJ5S5xTzh8k2lr05Rq2iHpaOYVUm0a6i14ABlRBB/Tjz39LhihQoc+FEQmK9ZBKTVCDZr6prH5hRxrGsH+qSjKmQg5241m2hHUAMtiLPTA56hAztIq/9AVI+gQBDrA2FVubhafXookvQ/QeF1MWEKpRB4fDR3InkmHDzAeNZInEkKHXdWpwy9TELEe6Z/dg7ZIsK4j2mlclxnaFBWp4Il42yleNEShJIwLWR3N4H68EhZhobQ7kvccQPTjM0CdNVw7PPTxDB+SuyjbSc3eSCW4PQpPNTr79l+20rfVCP6pUygWdUEQbCG0DkPwViz4JcDEpL2DU8c694rlqXtpt6sB6VDmZXq1zIZ8geQBHTU4YSeM1Itrsp2HAakepdYWxNA2o5igHZTwQtLjbKFeaekpAPcAIVzVjzo9nQfwlg8TVeqYFVgK5QpK23TXdXFEY64ApOQHVftVqBDoWdO3Kb4ZjCfswRR65QgfHU2X0qmAFJZwshQ62twn4T9ZNWh8anIGViG9tGG0Yi2L6drXN8n6rytWzjWtwSwiweuk3SCQtqSwTGKgFb7T/NGNQI9DjLueIBJAczmMtIJfGOO7/lNWxy2RaeZlwHtndoiT/RREuwzHLkw/8DtKuhmWSMqzDvsSLNMzaklQ85r2HCq5dMHT+k0YbtHcC4kcGqnpDjPw2n6AZFmBSNz6E4zAMrANJ4RozBFz0bHZcCth4Fgk/FZMK1QVGegftHmfaA+C2rBBmdMswUKiSgMWRQIAaY/Fg2gtySnMoIU3yQqJH1mFCmncsjgWHIVsrYKOqmT9nTGJsQmQBI/AKRVjOkHep+gMWePXLVeULIPUs7ZKcio1bAP23Ci7w+HlZ1bIqY9OskTfrOMAmuBGKoAheBtcabzBLCK/Mg+oI1zZES563koXITKzKdIVUWJqQ2WYkwsswr0YENJRpvSF+UElixCUoRnOFVuhSJFDtIAgsIU0Np6ucsrj7pDgNMnq0RMYA0ZcsiAvvBMpGB1qS9sNOq/DWAm5h/t5OddHrswEabujdWEOACMldEQp+nsAA2UxqSfdGvSlR5EuK5kHOR1YNNubRZs04KYePNbO7JPvlF9fKL14OYHpGjFpkDuaoHoeYhbOAjHyUs02LYeFPmkyOjp7xfiQVMbkvEZLBa6kC6n1XdL9GMfo13eB3QCPG7SWsOc5Bhgpx4ZmZmRDsy5PpStTXl9GRuikc486SVRINS0DwIuBcByOviF08KCjba8hdHdUEBUMORirVMQoZJ8gFGvGkLCi0D3joMmbtA4vaAu+NhOtSo78qpRj80QPZtdsSXWm5IROA5oX3n9ziz+807SbqKNScHayl+U8DIINhbbFRE8LjYYKfRU60UHqAuCF1gXg0E0PTL+Mi5XlFowFglE5fe85IjZgITxqilZPyWqzEEy6bDO0NAto1W4n5UyYmle9O5gHi8s9EvLDWyPXyFY8QjOT8loTXqf5deBwMrcg0WghNpYE9AxTcsh/uMpUgnpJIeaKHi1QBZubFgjUMsW2RefJjnSJfDfFM+gMLZWczgeNT1EWdIyxFDqhG5S9aQw5sGwSKUH8QDu2DqF1ISVPdIbB5VgcIETGWe4w5FA0CFqUFRyfBbo1kt8uPb1Q5pWbS0KA9h4XE9HfGnDqo2/mXkknA/QAv93dkKDBuLaSYjsjWeYWn6QJJEvQPrteGBLZGFz6bBkFYeLMyUgROmtyhhLfqdJJ5gnIBolXT0ALNwmAJWqNTp70+YoinQzTmXbu0BGHmpu8csi5XINLUfgGNdqAtYDtMm8PB1Lw0sGg4+nhoEUPzmmyyc4xAQMAFHCAsRwesApmg5yRvANCMyN95L+0AMzyWlyCiRaT2mJaB+RnDjRGwlXSUWI4sqOW6FB2gSGHSE1y7YIsOoYYmTA5zyYZMg9aeUiwZjQhmr4+WOQg2oZplpSUu6cWnRaGSvtyNzTNcNNDmCbHnWKH8aBwNOVgk5dfANc5sDRdleBrGjjoxcgoPY1U+dqERijbm3LuF/gcWvQnmxBzJXSSmWUALlBM8/MVsBTsOMwR774zZA0KRbLOzDu0hoSiDKAN8N8GBpQOlKwpngbxt0Fh0agJAAyqp5aTbY2IgcnrgPucwR0+uVegblVcROnerD6j2YIOGLw+44zMk2orCYmoS/T3dd6t/Hdj1sE66djSqbJdEpK9RP0IuJKddkbXqSxDpyUc7maXhYT9DpLRxn87npbgz6TGu0LdW8yarvDOL8CFCh3x/pQMMIhjQrcI0bIXPgDQjNSBMsFqM8LB1qJLodvhVGSi5ELmYCTQI1uPhyqHhFnvpQexBJDkAhisxLg9+foO2giqlwzrEigLJ9SlMoBHoSu8Ts2BcTBRNPAr4CQV5Jx4UNgMP1povUnGiWXWqPTkglOcbZs2zn6DaIA5glTcXEBeYe2GwhTAvOnX65GJghQNb3tauHzk1+DdrNARu2FdkO/Q/aEgnwZ0F+wg/4OxpAtjbB2jFxCfHBEZE1SyL+LhlxYqnY0ss6f9p5Of/wxKs6fzt0FvH03dlVF3sP80R59QQles0F61cL2NM6MFYNgiiAAgs9aRjrOU6HWDwHFf/0VUrp0CNsAUJMsowOQSpuIEvNaeFBkTKGnpQVkpWjjrp1VSjEnJcEQOxZkKuo6o99Ph4OArZI8UmdQMCFZK0LIXktuEAFWCrQ20SZljhxYuZWmWKWwNphXYj8CluX7LGGEyFGyCClKA5uxfgncUj77TguSSCDEYBk1BvwJU0+auzPyD7SWmn3iiBji6Bnj9khylBSOr6JamPF1pBjEIihyc7FMBNHUoj5hdud8iHyT6MIysMmyHIRmA6+GbdKZCagqaa4Je4G7Wo4T9Avz5ZLSdH+2WoqeI0LM7AwwDQo7YhAlb5udTtHWABlwGlE3mqDLwk8l/OGCAOJz6gZ8Jm4oPQLeGyV6SZZMvG5SkqyPFJnVNNxu03PBFWPMPQAANvBB0mZhbFhU3YcIz2qsLZcEDjqiBp2O/glso8jIMe4WU3fp0TKIOYD1m8hP9hPCzBJ8jBtgZStDy9Org1WbYwZ3yAebRmZueKW5atoQWU2HlhDFgw2SEcan7sS29kh31fapYuhotnc0hfOn95czpOMlXdoyWGMoVxioojeWFuZQw3ZYTJGRMrzL0G+AqPphfZjMeZEUyxHNLdXxEgfXJ0FHJsKVibjoBhFHX64manb9nwASw1HQK+QGMRIcdnm65Fa5ukCNxryNNmOAHTpFGGHDxUxWxlZiYLzGYiU5l1bmy0p+D0AvZGybhgCkh5KK0CD+kM2UMrqdNqdHQnY3XD+lOIcklvdPw/9zaI2/yDyewNY9UoLR0pKJqw1UtRkxRgk0mD0apusQ1nib/Lu1MmcEdZSh7c0AKplPPcM4nZn7CU7c64whob4HZjc9HdpyDjTZ6eTBH1l5HD08vFTM48E47yEn7+4TvwQ7iZ7Yxh68d+bqZ7WiTGA5Bgzmm3sVM9cQ4Mhu6F2YvZlBB01UfFDlNTEIHbwHTv9vEmKKIc4Wtc5UvUrsSXWaKx9ctf4qcJikvea3ytk0ekBkH0b1EeAErlZMi8H00WyxM03Akk3onSRyNU4xDtiFW0LgHNx5gYtfGQNMe02mAnCfrCjM1l/gCpKh7ec4aoHAtU0KCXZlEDjiA+6wlGi4BLs29MgEaCgzFoo53BTBtZywMc4n0EE4lMt5BqynLCdTDpiyCVzgagtPqktr6vBPTEN8WO16aQWuMsQRlhFRbhRyCDNkjPpbzbsO+F3KVfNH1TYaY4IdhEBWKOTQrtKGpMOMClJ2xHSByKowNLSp/droGcLDgHyG596lBIPIsgHtkonsTsrcDvIwVGlySoM54EQgwmhRikWi2c73QTBkokbCmPcjnF3OMFpGVywzUsa+VGIfHCDWa0h2CiJoa0EUqb8z/9BxBg/Hu2tzOQAPrkigGDHmF5tVZ5TVm2eBj0Ua1WibJkfQZQxipP1mCW9jaMnRGpDedg93g4WAoBuT81icIJmbwCeQWUWq+8M0sWdI0UqrDhbcgWaDnp0kixrruf5VWS6Yog+aADdDFgnLHSAtRggFOY3UqJDBUjGBUcpAbnJdSqdLB8WMbt6GKpttD95wOxATcqilYprt6mQ72r59HUTBprzHPdhhMJGgCgBEwVE0HesDTGiVO86AGYzvTGj4mlofD6oSPuEpaPSjAmbfnqYgXgLYxyc9TARCygzdTdENvmgvuqQL0Sc5Ut3ZT4SaVXFleQMm2N6dA8EGDQmOcr1SKazaMzacMBxu2Cxml0yvNDmBeaAdw4QhNMbS70djga1CYfirVJAuH8fqWQ+GUylQ0imaurNdncJVzFdfdwrZ13DrJIlnp1ZsJJjssR5ok+dnF5FYUOihmYZowyaLpyWoha+k5RqMVB/eavFYiWdFpy7NECGvQwkn7T3tLPafM+YTEF3/GoGHlTaQUgIc6ZPfdtDEUL0Oo8Gh60OG4r5IsLHRiKNKzbb4BiKV7mUIpUxucnBIEA42B3sIRMS4HZglEmyGBlmcqRjcOaGAb0HXnIAOQIL6cFXNqpI88HXAXGKQZI+ooI4hWg1Z5WVyEq3eSG89cQsYNusa08HsGLx7NZo4CdZCsZBr8Woqsr0kqL4c6SNZU2q2mq7+sB9Bw8JBWWLD8lE/YAuhtL0BUbPZ3IYDIoCepwbkzkkrIfZ40ZjokS0wAZp5G/URj0XoAcBK0AUGL6LriQCLi88nogJVwZ4TgoEpGg1TWNQVyV2CTzJBvjviNc0c9ZaWayGiDTzhHWqeC00320UUnK6TtPQi7mkNa9gMTFhktiBPZjcddDkPvzvgHALYOachscDDjjXmILTXXVyTZq1CEw5YKQMmyh+YYlQ2WZl2bR3xBs05rIqBM50boEzyDSq5KMbIfsllKNOHIODb386us80L7wWDEmStSLLLOsI5LWIBTeVQirdK/Z+B6Jgk31hiOVIvr6INNO7gEIUAZjnc7DBlT9zqlh+rn4wQRKlBPMoAGY4wdZ/AJqzoplnq4XcF7qjHF3pKEQU/TgyujOYdngbiVxpsYjrNYGQWSxAzATAbpE9O4jpxv0djuks8LeNgWjkQCZ+3yUcyGlA3FOaQZwhk8vGyKjXKlVjdGinPHt0rMVXeuARMrgm8cJgpZPI8fTNAlNMA5WixzmpnZ2uE9A3ewunnVeikiZyZAgOJzbEq00tKlF7hUP1SehHopUPSsMQXZYjKJiYjcmEDuqhkL+ecJgz9tn9PmGLNisobWUwwHNNBpU6DDM+a5r0GGYN24oGaVxZs4CNY+0zEeVJLyuY3eH4x1h6cFetzlPZniJsCegQvgsig+JYuMJMUKix2NLXYUX0adwSYmTwLOXZeP1ZmH7xKObLIyTv6Zd7UEhrQkN5tNYRnUCkzUXD6ZFItZQ8FSiGKz7AqDXFAhJpYCNns6Di1Gy3RYnhcn/7CpD45oUPNmx22iWLvQrtJJXTRMlUv0rNIpMMkyNDW7/GWS4a0QykMElF2mB36HshA+ZJombAEEJmpKRFqu1U7Skj3BSAWEAefc2bOUGOMHNHVOy5U0ItFNVAQy3KG3SR4yQgIondyU1eQv5J+CDIFqt4aPYl5fVg+uXyYUQtXnXNkKpdhgqKnWrBtNTVJWMTwDH+ksdfB5mLH19toC4sjqt6pBGU4vv55gmkRTgVWKhp3YsMUxXCSchMK0eqY4FhfGkZXnMUl1owls25C8CEbOpUFDffdhhyw1xZgJ4tE1n0c9G+LJSv+/7IVbgYr8AaaNSXKOiiUxTSsoAikXLyYztLIDjNBOaEuHegHzA5GBPkuYFudVwD3EdHvS/aur0S/6fMGcBElwMT/fwR00GKMK4+CN64lNizl6jUp1dxGaVAUUaEyzXmGXsUO/CSC1AJO2NccrBuKKcddRofeJ1hR5Y5k9xXwtuyminWAiy1cIiIzLCtKv2JsCv5VBzNn1SVccReBmMfRtGBQh/ZrQr0UihxjZrJPislmhsFeY7mqh7QDJOMmzHNljF0nKOarB2gPld/Nj3Qbt18yml8VspvoO+x6xYYzomI6BCh6elWpogm98OlY3iIwZu8Fgt+z6amHKiobqDltXs/ScxDIExywC6Ub39gvMzJEfKPQCm30KoOEkJQv0xEEPgkoADiaaYB2EtMhLoduf1u+yNDfEXqp/YcQwMwSYzuVqvMeaYeEsy7Mz8WE+BPEcg6KjFdXSfwEfWqjyyVFzlVNG3Xa6SqOv3bIb0QiZGQobKQ/HmNSOE38UdaZoAvXl6CWG7fSo2rnh6wpnJsR/kRFvpsBP4FfWSCQBUrKOX+RPyE0VJlkm1znWAJvK3DD4fUxHrhQYcoZqY5+A031igC/paOLO5MavS51r/zMksjRcuMivHmLGtNR/5FwsLp4G/awFkDpPBlsC5AundwAGSYtNjjAmMnpyPOUGAj1GJ0hopbryXlBuAO+N0SF9cc1TiiXo/CachsfDduuidIO6nSkeVplmWoQ7iFSiH4sIZhobEFryTQ7ljSWHFwPlw0gEy0CGgtIegcqTQnDbRB8K3GM1TIQlsMY1CHIaequNjgQP3muiaj4AmlrCHQC2M+q1a/1ENxwOLJDQBcp1OzimrDFkKwhnHHIbbhR9KNdU0aQzj5RiZBxB5eHvWK3P4KxMPWDC0+DbkWhRl35U5Kk9sPTlCoqAG6bw5R0eOtgUoxOgxvB6X7aiBDyoLjJv1hwoeoWhCWTI++LwwIqNB914MneAjf00dliM2E9AGDKS5pjC0jhh0eXe1Y9qmmh++scYdoHfZ3MOvcToykHE73OocMINuBLwO7w670DXO2XTYLEz+6pId2mMMYuhKKYUniLpURb6y1O1Det4vYSRMn7BVOHCY/wjHT6gvB4duQBgZWq0lG+16IJ6CF9bbiLVSwt0X0B35Zj3NktxxLsdBOIKjVGGXcBCi+BZGjW6Ahk16r5KLaIA2WMglKkHyplBTwbL4VLsnh5nV8a/NGan242S2FHtGdHk7cwUzROVAE1GoFVnUwhPwvDJ7aB1xLL5Su8o2iTeRbW4sYBrNLkU8DKxAjY4lC8ru1YDPOLXf1JdzzHqww+FqMG3xLCbxXFex0yYddAxXTgDdhQtrFQ0buUgDHGLj37StrKwjLuxWTQEmfUvESbtf1WCkoBMLFhKHVXPqkHnUnQiMWnFLT5dsPJ85CBUF3OsNOOtcruYS4GvtvtNSMwZr0Wn4qBtym4o4wZ7pFqLi3hDR0E/ENwfNt0PWlXBwRLDW5sFwBY6kODtpNBsUPHAECKEkkEBU+uzYjk4KhoTni3l0yHH0KAS/LzsqTf9Cxx7PUhljUAje7TLRfMCNL0WCYF4xjAikBMuLbcc4OPU5wzwcGlJWVMqLRkswOp7cSreZAaoS03iE6luSBkb4xFLdeyBDdLYwNTSNFQtCQR4uiODeRpu98m2KIKiWX+FZdLUuGEuDb4IuEAZYmEdZApsGV58+ECthgR0jctPhdsUxQqp9gg5GNllydYOlEzk9SVyQvDrOm+uAz6ErAR6JM8DQL6BQXmdFI0riYXLHXXmVO3U2EoXILqHLkxX5IwZTFr5eoS/7t8SOhfKMDGFrxkZoa8QfjmaWpkbYxELUjWyoAw27HKRnWsiaQNJuh7bcSzuXGs+AgsAz6I5yzTrUVtfYFns7iw1wPTRVxqIfscpgA9LnCMfTqfKmmZ+Hrg/zDvNf7XCwUxBXJpXIuhw5xDY0e0BV8PaXNOHIh7GgBAYgSqzjZXSo1CrJmao2o4bEl3cjZ1VEL243OmBU6Rob83BbO3bGSrgFpQJuXbT1Q0cgJS9QkTQp65dUaY0MTTmSM3tENrwv5Qg72utRS+6Dc9o110BqkLCYKr8NQjfmTlMUsjlr+jHwoNjMHDtDq6GiYADmRkOdcz36M8tXgFIbz6gu7elW/wNxmlOrJpngMmJt8KNyqXs8xpkNxt3UilCi7Lm0xwO9oYgDN7hBojaWQWA+IDjBj6+gaZCzkD/jv6VLKDRN/JzIIpFgQNjN4YOup/ZE8AHUkcOJtEg7wqqjYlPYFcbGRvQMygWcpN61gNeANAweGEc87PMQgOhAl0pG+NKSqQpE3WFwBub8AawK7RxbbLVrqoA+2vGZ6chjiY3y/IFoSgEiFBK+/wSGMJ1Bc0y5Dt4uhOaVOW16t+dApOTk5G9prCZlkQneMAjmCMvV8j6OA1KLvjyyEVB72j8thZuIwRvMSLNOU49YuXO9I/uOanoDqYXA3Cma7BZga4vC8Ufohs7mW5do1WzM5zQD3FlKHKAyejZK7YNE+5fYPaQ2TfLPCxFQxYCpo2FkqYbZ7WvkRhMVKDgqvRKOnQvfKtrC3qrMuwgSgj+cX5hrFgYJuT2MDO+iKxfTJCxHCCAvJgFFhyRDhHHyM4YVzkjTWAGI0FdvknOuiUajU70sgaIxBJ2MTSWyi0EG59om08HHV/8RKbBSTvb3m25KwAXmVznHHUQAQxPa8FB5YrXIKYLDKWhF7udtmPJuvHJoCdjYJrZmRVwvraa+sIkhnSPVnJe5ReCwnJA+vANgmixwb9vXhcROnIjQNmdjBZi+B9thlpBUDXG/rVwtyazwhQ3o2LsXuM+QHMaQxUt/ijaEqJi5+ZehPxC7Yr5rbbzPwfcNzCyjqR9wAwCqW401DtovGJM0m+VnvFabfGxBZgLWrbFTTQrkHZmwCzQ8tFv4pJLazAcoqnLJ+o6sNfAHwWQ31XTo8UAPt95hPHbKE9htb636m9cKxhqmm7lBdQzs0mdgiHtu0CKgSZ05eyMN0EOkNF7ydHOL9gTmDPB07jhOQyzYzyaXqcAunRYhsHhoA9r6rgZoYsRCvBwQl3ZHJKC7DsVQpmNshI7ePoShcEYVJIrrkzJTJyF3tOldOaeOcZ/HR/GjQW5bnMtsOUwoDZDgeBJGT4YuR3gVwhvY1iWRRGx9DI/DNnJ74fHnhvsfoiRFPQ3yVNyrJkI/kDdMGSmu3WiFQoWOQU4+PvdKZwOiJAZZa1Q1bFkUIm8ju48KOebEWVSt52WOYD5zAm0qUp4b1GhC2wVLq3a4SJsdJcyZ8nx49OuWiO61TL5GV3UiGl9B26YDOCmkylm6BcBJqMkvXuIq8BowuAycSE7RS9a0SAXJJSwqMQYBUz2O9kJ55CmsU3E4EwccE7YSka3xahlW/csLQZXR0Gf/KI1oUG5AdUM+RDH6MF0wMIkLgj2mlPmCXY1mW65lTov2QWmkFYdydVGjH21hQJQ8VXnTw+brC6Xp4wDoWAjQLRWSdDoQQ6oOLWbDsyt1PNBgRU96DYFA/EJaMeFC36ExwqpGezPcvAt5iMTmbH6GWIJa/MkxzI30Nlb94Xh9iUYeGmvqwZLAJ/EGpRh0vy035u1545rYEfpxLWuI6Rm9FXDfeEI6uWaSJfJK0oSu24z6uVAJYXCD0NZutE7oDeZyqJjh312XS46+aw7QIZoL/TsYrjWOM+KfYbDztegS4QhPPqCLAcndSREb4nRrFadLbAF9sSUN8azOBVNlxWDw+GPcg0pDFIImnQQ9vI57E61Upi4yekbniO+hL/ZYEiCDc+uP82nI0Hb1SyMI9OPwwBfYB/kO9z6gyFL8BgxzdOdqQW2asanEK7bYbsUQErMraag5IjoroWq5HXFSrr+0ihorsHdxRCf5HLQ0qiVgbh6OQZd2WQxA4Ehl6s1xgg59PZohMoyEEBpPeghbrXCFD8WR20sRxruU4WkFFeKQ/lThGFq/KRd2g45Zwzj5KSmYacpzGNaCDa4LqViHH5Sp5SqAM8mi02R9KdoAoL5YSaH8ZeeXJiFVPHRpnM78BD6wnYCCWeAso0zdaho3WQ2j3E68ZAyM6M6AzUs69XCfDMCI+oZi0NmLeA95MPkGKBbbQe8XgQDQeWfqWDmmwxiKgsFb/o8LGHhjLGiTA+W4XcpE/D6KaJ2HSsTamJNcM6lyZi8kGx3SSO7uRaYoSGKdToq5gMEVXVz/n6M42bgRzuiYt3OE2EH5b+c6WGSboDRccrA7DMt1X0z8klMkFlJNTtvVxsOlaoirm7jtwq+PjHbPjEs0J66QXIQUhwo1W0NZg1gs84w/qmxzuSARpBJg8dmFJpHL1FBz1Q96XE0ekynKcGMNuCTtzifTg+q4lykzhSytZ0dXnjYvCHUd/eE7hZCOEqOJrUkWarcLEjmpHbdbtIl0gK0TV+NJbIodJ5RqJLHZ8KMgC/gZgTZFp1qLmEVo60ZydJpRDSnU8c8GvlneDuW8COvjS65tQV3nB1YRn4ww/VEtcQiQqADlPsCdaIjsa80VDUJfKYMlB2TbEyClvqKCmo0lto82AojfwE9o/jA5RWZBxIUlym7xaf9JwiM8bSjqdm8FMTdswUlUvIsodBXTwh/FTzZ1l+K/Z30FkWwKGuadxqZlOqk8dv6GQ2aq8JERyh3F4PXH2BSOjWJhXqqAzeSeyb1itsizexGCCyHxvy3GZhBa+1iKgyQ7RkWyvKIQMdHI2vEJHBJuAVYmYKnoBDWGzeYAV3KnA9aeiC8clqiw03DyFt0hKndFJgHgMrCPKAgyoVP1D8TeDTkZHWzEuXmBrgKuKwd+dyYApeYAM8QAeicrXkitbJEpINKtVmzFQZ9GizoAbRhNo1senutVLMneoG+KjixtFraVjsl9Tj2ls4jbK/b0hg7yyRbWlac8wwHZqXleSbLsEdESiMlUgobral/FkYZjxgzQ1Ru83uwbqxzrBFCe3LZman7MBiFPknn6LZEwlTRVQASrTqNtHaQoSnIstNj6A3sMWmkdjc6Cr8sMYeOaa7JlV/Y0AGHyIyZ29bRZZxnpfxzBO+4bWIKXYwqYbSka5WQiSAenxAouQoA4sQ0oJnBDLpGAeZ2wKvGhCemktiW25hDkWgsAAe+/5iKHEAYrsGTbDuz54E+W6bbddhFXeULdCOkeivDGmn9dApqCVaEaH6pzpHI+njJQb8rAwE/utNlDWwf85l1Qly/P3O7IgcDkUbxczNo/KFFFCDm9MjeBLFpoom62eIX02gYhJAH/EHrJwj+0qAEBO5ndeXRTm82jEwrNje7ua+02/8uZaLnnDjujchAq2XLCmswBa9477ZLjHkBU4FQo6zkMlY08BOxaY8WSqVG5wdQHypEemnBhzloBRMQaBWDFYncoXHO5D1Ef4iUWUxEcHpvwL+8xHslN+KhHTKUpiu3pL7gzj7+KA2/MiRIqtPlILCB/cjtKtaR0uGfNEdjxMlEfWL+ph5VnvEqIbSNZ/PITx4cUsOWKjKsx9H1RFuXZYDVMw4MdDu66GahaHdntlvUVcyTBrdih+ylca7cjtKgGtxBK+M4qjN6TKLTxzO4jpJTUvA0M0MbvhtmLVi6gQIL3pj03IakuByglAOwr0mixbU/SPf+XghHZiQFCUMdQTwZl4ZPwVgqi5tAF9nY7KBIC16MyDF1d/7oOyZzAFgfKl4bGB83npYi2LbcQS2wMTI1jhmX9q46exJrmG21VeSjjAQyU3Iu80jA7/BxEsGqiJdBDvAuOXdiQQSkUyBBpa/JwasjgKbnnMytLapqnwr8STHgz1n0DGGvNpUph522DXes5oKTBm4ZXib3Tl1GagaFGsUNZ/sVcigkVrA1AbMajwYzTTO3vA+4xkwQD36LtteGRVXgY2uAJHlgGdT3oUcyqx/wocq4OEabOqoxec9AH+BHiHEZRvqD4SwBOqKw7DZfclrgTQ2mcBNvdjiJZHiYrDSY1WxzGPhzRIeUqh0qDFIqyFpBeoMMtpFpTD4Af9mLo1GIhSroJzYUwKQ5pz1HM2OHIAH2BedN638XxlQDsLcqlWoaJLQQmw9HIsFswcpUN0AAEn87KLoGbSf+bF5c4/nASs8FMMmAksqP2ZnkJBI9p83Ny2RiaYaYhzCGPtX9t2r6KgaV2R+RHXO/zzcbozLo0Hd99wfaE2X3GGgxixt/QWlHLzQCgdu72VNoS6NBljH1jvRAt2wkMRYogIsbxhTd2eCT6OfSIbBo72BipP1nLvabsJpnpvWSwJif4DohV46eSAH1d7IHchxIAUVwFx1E0VvGLGamuX2nryGhmhvMVS7FDPfzJB3J+D3jSKxApAfURWFMLEM+2pNMIM7RutqJylLeMUsbilEXvxNtgfCX2u8Mi7Pncy2kuKOkpDhin7OyQ8GLKh3QB3XH7ibjCC5sofrPU1g3CvprvVcBJO7omGYQUco3xJHygPwS08Q79beJ1+Fne/WA8eGagFW3j0oheXZ5kxA279+VzC0VjnXCb5g83o6BvpTegxLLcqZG1wrNzvDJ2xB6gWGB0Tg5ZjnZ5FWKGaUx9Mi13CIpiZm1ma4DO3Hn0Jh3Sg6DPGOzhMEdnBfnsy528mYPLybnUcORdb3+HGg6/1AlmXFOzjjSL0XjEEkMTxcYaGDOdMPjN+qkdB2YQUYKSJGZDrF71GAr0F4AgGXSa3b5fGYCky+Qlk/B0OmgvbQOYmLQSg44UhieUDtwmODns8heObcNilZAyw65AlZaWoFhk5XjZplMM1QdTI9s1JVs5aHQXT7g6ljcnGHpZJzFTGU6IiybqySrVWjmm573DJj2LCPR9eDD4ET1lqmdlEcdqQgIK+kECoTRfGZpLbSR5F5iaJEve8ljk0kiVacldfAa2rlibi+w0ezSqnQTBJtcjsc10SKTo3sAu1fwK67m6pw5wndosKWqIvnj/IkY50HkJZXh8q2dSeFQPFK3dfgPnWzGdAc1ymK9GZJTeS7RE5AoYZmEG5WAGI9ExJ9dDpnSWXAgKzaoLosAsCDGz/bZcBRdbpCKDGG8oj0tgpvTC/4khlSQGXKwS9xTkhKwSyc0ttlQegY7hTuYkSzBZD1Ec3xlPgyt6tamU7OblCMDyG+eFLArtasmWWequlsoBn1BtFZTpHGtm0gvu047JNtu85eg64PBaaFv2GQm1sNKMQq2FxjPHGADSAVcK4qMKAqbb4bNeVeKdfQMmRQPTGN0bDl0LqGx3KgxcAFkPOyQXoInWhLGaHDWuygKFsRWow9bX7AdBHJ7igIOCd8yXM+wrH9MXobhrqVPjJ0ZKdQIj7BYauvAHEN70cjkOS7KmKpL9pSp70Wusm05xLYy1Jel7Z7MIuin5U+VCsOkzeLCo0B7F+NgXcMe+nsyJKiBXTGqr0FQoJNPakSRrzvRoaPhJErkRpxDHzINYIE+F09zRdn+w1y/85Lx/KB25mMbJMQs90y3ay4M8nNQMZgYmXtfg5jJZNsC2ySpptJI0t+PUGRwoDSE/iJ1N9mXfFMOVvsU/RkOH13JzUTHr/T/NPkm/ORotejH4RrGcYSPs8i/TKQRZH+dl1UDVaUgca12WnG0TU+meDEY08JrpFMYHVkYe8UkLZtDi4kmSwyeSe6cyB+kdCuPFT6LZoBAAFRzJDtYfuPhxoikmKeB+nO9nfnY5UY1iGSXa1usMVRlYX5ipIZtqwszt+nJgrbY0ZsWOYAxfoTRR+8U71ZTOkpM7xTYw2r79WGCYyZcZdqskabEjE8o6+R0dVBQ7uAxhVQuDGkxmjOcKw4KoaMjYWJzWD0A/IzcYp54pGjc4kOXW+Sf4XVYZoUC+X6AtZh1utgZ6WtfsGUJ7kDnn0ArXfuMFA5hk8uIwxgGEW1Ak90opQPzedhTeliKM1BMT1QsoPgGWJNviWdKiJ6Srq2l28kXhcOUO+vPNCH3TthF/PJGwtHgO+hJybic0rpBhmoC6z7gDqrkbnXuTGqq1ANAOXKDkJFVTwTLzBOy4XAbuyFFEOyRXJd+AjfhWo3GYULUOY60LsM1Y5ZDcJBquYhvbX9v1abqnivM+zQHOacruNdpBV3IDrngAEIPKEAGgykdESKk2sxsHjFwz/lnk0bkhVhdDldzNAvUrWLEIzTU3XHvr4wuZcggjREjuabVcmBeqxQK82P1cr5yQWELgskGz5wF9TGOkWmUMF25ySsVm9sijSgdsLpJizTrjx4IYcZkOJkuR3SVxASHzqE2It/aSQ52glkLLYN/XFYU1ok1gDbm+AfskTIsE24dIcc8Yhwm00GqG2aEd47CbzrToMxM2bzR3Q1BBbkB2KmclYKxuQBmJ8FkpF+eBJKCcya11k1fiLzDUJBaqArXnDvSx4aopp1dcOds+xDZeFrBe9C/e4LHShooKJvlSFtOiRTDybSigE9dsaNHkw8guMZApU8QVg96AvWvw/VZxYT5wN5L8nN3O0UGp8pKwTwCV4fzPJYUpBsKIvRF2ij33woW4k7Njs6T1Y14J4k/l1VqdQ1mOOekwFuTA3YNo7+Dl4wCrTpFubzaUTYx/QA2LwYjZgfChPqKmn3jBOic+B6iSls3w6GYKuDeiYGQhBLaWPx0S6y84HRn+It8Yogu17RS5qWMtLim+RwNsUw+qCnOgTU+sEwOxqsv2ZawgLdJocuiQxdSTF1IkiIVpcOiPSjT5rVhWZp6UNCalBxtaSJHfwAEVI5mEmZ3qsDMfFLo47AQHe7MGWQ2EAsbd67QpUFOhpifNg3LFxKoQkadYq9sj3cD+hwOih7aJDDTkd1gDaio46FtB2bB1gUMqMTfHNLJiAzwWlH7cEx29Mfo3TPTtXGSXKIVdAlOwmhkBquJDUE3TGZIBfa8duvO0aGTOt3gEMvYqbQ5Jg5RY55+kCVc/QyV0D4RnTiHgrQoiTHwQiuazU55njmw2mDGbEco3eiJ6geSP+zYI0VdMbpVWp0Ssh+3ikNHp2e0lDgnEaAYLbaEx54PlM6PQqIzSKbdjHcGeVKzGFDgM5vWeSl0D/4eWvWA9+B0gFyBSnI3Psf1lCmjxbuR7nYvhawwoIaBx8NOvgkG/iWGyPUKzYAVlQ4FETKwmEhe5ryPGC4OgIPsmPt1+OTpkAKx5RIZJAYlJ1I/AHbdlJgCvx2T4wNqMewryUcNwsMGY/hiJz7q45JigGdlFr0D67cDxPfaK+jZ8jSQkBJIpFroVFnlWFkyCoiNE31s8r3eV2U22YqYqHFM4tIhaSfe0UBcgoRbqs2S0UpFQXk4g6NzcULF5zG4O1hgLL5KEjCRP9gTqFDY1HCSO7lARE9MZbslaGsoTD2c2gZbfu6QIRDLUewwVSGGcgeteo48nvG9qMswmBD+M3mffiI81RDmPAd/sTOTcT7gF+j6aDHahx6AEfofey6LYVX6OoOxnF7a5swf0dxQlCQZgzfZdWkFBj8FR5seo9u3KoQIs0WOinkRdqfgt6SeDmGZTbbjTeB7JAAFBojIzD/djjbNARrXDpQie99iSEl1yYQlIDGwRU267oxKUSxPp468zklu0nG21EMckEGnELhq80Y0NKHMqeyvTvcdYkgFXDT0Hn6KhWSi0Vec+mxhNiiShXkScEtbEmFZCWkuUL2jutzgxJOHNyIFjbB7o0mZQfFW0WO6PsYJs3U5phErs9mMgizU14+tP2ARnIGodL2tzBSQ5FmKvq4wF1LqHi6ty3Zm8kHEvBIlp0r0oHR04JzSpOjjDdL2VdYuM53GIqphAMGVyagdw/a7yOOjDCIXCaYuU2KhNbKsZDlrpKashGb45xmiUuH93X97Rk7BYxhU21CxOENGBIEiWRl2N30YVQHWJdyOdVo/ssREi1Xx/tA/3SwbBfGwGjHEjNHhRvLpfClhbGKAp/F5mORVo4lrgdauuoMP08ERq8pQ0NXRDwf6XU4EPE2LfH4bxxHFQDkY9KBO64d7KqvHBnCs3KEaBxlH8NzxT6d6FojtB7PhanB9W1eKVmdaaaG1K27qFK9VYNZCr61OBCEOIdO1BMCmuW57Gtqkd1FAOBTJpNHofcm0EhGlrLahbuLJ06bBkOdPjBxEo9JMETPM3a/DhAIKhi8Wk0Tq4CsztCAFZlqHrWIgtRwe5r3KP3TzYyV9irOLotMj8M0G8oBA5UJWaDddZogp6wz9yzB66u08pR4MUKUDLHb4lnQ4lm6oXTKZ0Zhy1N8SnZSK4u0QuwoMC9ZRfhoX0QWx0N41EuIKAbJlPiTWG/SSVttKJCcOl4TUKSREbkIPzONgIKhHIX/WiwQtTEhAF+9qKmILc3cgyKbA2zwfC2luvVZjQN7qJnge6KGApnCl69SDmzqYegbkwDnrog3GM0UrW46JVtmyN8c0Tqk82KOH63kFXIEqoRjJ1FEfxEqaqPN3EPYWhsM8SuIHfD7XcxzDd5gYThyXulORFFrWoI6JubzOkQPTxTTaBTYcO7kYfnqmrC5ghswpYRY2ri7BQ3FQReANDKNkoAhZYYsrGgxzQTuNWdyEFGiJq6S5hhs33CEhKpNySA1vxlI7HXmJG8E2FEeOi0dmf6XhV/ZWb4WqsL4Erm4mNZq6o34beMcw/NDOlF1juNzTsi4TZDKRnqPHB2a+RkJ2guG2iVZYJGMScYSQNtFChWEGJJpRrpbvNnH49e8yVNbl0NFfZ1DRjGCZt9ErzTSVKY/gmS0ZTJ/HPkYpKUefkKPCvQ753Pqay9wzOjQxCSVQFrgz1pLRjaCDmo+Uhs4+gS6hhRRkowMNtENwMkd5TwfVHqkBhSx2mczVNNtfD3pxRpushIfZwsrSQXoRPZHJnDqCJ2zECvY6R43FyJRcs+M4ZKmAWRyzWj8GfMxkxJcyCcF5SPRbEr2DFTM1e7Kx1PUYSAkTj5/HO0kvUI2Fb9OsKHiiGM+mp1i6UZIK9GdMi5FzpCAt+25H8PYzBgLQZ+IkmoSVdFnv1AN9JZzB6gHTD4yHBSwxbDDiGB7EOdtt9iAaHoFGs2Q4LLs2aWGKmvPOxgEORWqB0lS1m4UKou+YrbMEiaoDANJLuKTjCLECMcG+pDDlF7aq6MrOroszJucSF8LvlqtrPGOrAJfRJ1Dp0rQAyMkY4gR5SafU75JCCYIPRnskJrSYBaAAK6U36aSwNXsAtXJOoy+646Q4c1YZgQGBDhlBh8IiwYhAd6ZRuJsCvYYRhBRb4CWdQgUEpD0qPZKX5vRxnjHNrcXsWhfCDViA6OeEydbZSDke0riFuZiwHBnvVK8PCoKvrtDDutdnVgu08TQ80/jgkl01en0pstAV7RtkCnhyOWiTcUxOpIM9QSaa0qXn7NJqDrQOAyxdM9aMaI9pn2Q63ayjogg2XH146Lhgp0gS4naG8h57b60r+yEOw6NQ5BkyExEUZHYxrNRPy0QcgCWBtpvfX6ObkliS4MzyVnV8A74FK5TN31AEyTMG9jAZ1+UaGIjZmJquI2hiIzQPLy6Xh/mU0yH/KTDKnJJw4LX81PAVFA5EsfCHOWeWFNrA6ZpB2OlTqCmAx2Ags6VOibnRdKYV8I2u8yGIu2jix6NZpIMstinkKSaJVltgZTBrZapeX2PMhlPTnQoMUQrkEK6bKTj0Z6/Atkii2mxPNJYybBLH11SYgrCQ/mAEahSTGQGtmtFnUAgolvPNPFAu40pGftQpP3pJepBvBsuZLxuRkUeu5QXYGXTgupD+QRuwR9ZlvQzFICAz0/bn0YZ8AoqvBEnWTaOHsUjxrjReeqIpWOsy4M6IkB1ir4GBZgrVCmrEUgfRy0AjC0fa4WUVTbX4uBfSM24mNL18DNtDYVQ7FQ/fl1rxpL7dXAWDuANsRYNGgWYqe1cZKobSUmIcjsC/wwgl7580ax82N6Tf11bK8sPh300zHSlpphKz/oHysAcFvCLkRS48y7hIfFSCZsQDpgB16pYK+mBY8koSQC9UdB1yfLOgQXx9pI7JdGp4Iw3FVznOubHJ6xSYAixKocbrhJRGP/oTV9ioHLCrrwp14cbgDLr0LY1UMrxBs5Zw0W3+FEyfzMkEheg5ZTvA00S/diVS8ievM4eSW06HP+4wwkASzgFNrlyv3S8TCFaKnhbrzYEWXOhhS9rS4lKIneEtk0HXU9+3s8VA/sjd1TPQ+2VNhIwoawTTia2wLo1B0PRlL5CGOgeRxnFqzPTJ8PvOQ+IpCaKpRrgiH76MfpxZ0AO4hGUQkYMGBjEPFKrJNjZme4FrStF/4ECdwNQHQTTOcX3PLraBVcuH4NCX7SXd7QdsKiwliRj0/D7bRFsmCUmKd+aUpIgNF+BsddTqUAjExjBWKpbBpjoaNpQ+ujnTIcUAa+t0EUY1/E3SaBaBygGJAQ4L4zvcW8FNHIleOEuHQcCUQwoJpY2yTDdtYURTPEMaQbdZ9NVyiMnQQPvqtEPQcFBG4MogpJFGcfqEObTkRuFDc/0UCiNXaILRUNJBJuKLESstpl/K3XSt5owOaTBmMUKUkTQuOJEXFW1UKWDqVvjWGkWTTIbMNT7AMgXuvOL4U5mwcdTk/WV8GQXsLCQsE1SgU/AbDj8jmUQ/w93IS7r2SHkSFJdpKoDDwc3sGWjzynx36nyLMxJkPBSe0HY3V8mKH08efLHA1SIz7iL+2ei6igYAWzeNSQpAABTw0AJgBbXTScZEGLpTPUyW4uqEvWJUF/GvEJs2EL1oVYfoLuFyrrCmMHE+m5eiFj2jiYv6FWtmfn/oC0uZivkJ5N1EU20QqWF68pnxZxtZC82+jEDUQ3jafb0OcWQb3TLU43ZF60GG1hzv/BMBt/5NSjXA/9bvKYHuygon8+omBMAWHBC0GN1kw/gqN+HIvEQ4293MeVrYoW6bEaEVj6nkoMhOVuLJbLo05MziyxUInWg9sr48AyxSTDeTY+NUVTmQuW/hTC42kpWDTsJJT8lGNQOF6AdaSGNMKGN0LFM72SudJ12k7dC1XTL0gjoHeBGCNPtOeciUJ7AA3eAGZE+lxwal8xX+COefSuhGpe91IaSwzf7wpJNHOsI1repToDWj60Hqx+FEC5QocObJBJB2cDwTdhwIXIolDckneFeXtKGeh7MLVZqjqgtyasJwqiAQu9nKZpWKIRxkMoGb5gfWuIMPA2ss4+CUiJwy+gwgoCIlZculIBnoykhBAeRqwNxuoQyXp97KDUNCM7CNk7Y8gPQ2HI/y28pE+cWRRlTAzssoZKwz8EPPABgjqFYYk9wAskL3aqYfk5miduBvJXQnCT2lH7IDSa1BYw3iCx5r7xUOwAwJXEHTBrikMRBiCH9pH5tGgxa4qugca/DaFDvXi7sC/VgUapOPsUlbWrejf7Uz7sO1xcSMCQYRQSduLWjUVGWWkX2LkE3h7IGh7+C4LYm0/PxC7A5fiLNK5XBEO8o3YJesUwpHaK4QJXbPRJHkP9LeD/SERI+VKPpFqWoFL7untFzGGlMKMxxMbqPKIXKADc88rJM50onMHqSIMKB5vv2AUCZmIxASulBj0uEcPIuLM3VNH9O5yBpJXXgp7QzFlAWBmNny31DUWye4G4r1LhtAVmUNiJ50pW0wJvuKN7bAumtbbACFNqYNK2o0PnaKNWpV7hD3dFzPMBYw66AEgTe0Ke6ISo3LecbBJ8tgRf94mHMMU6ymUj1+NxdmP1B8h/FwkGFxSLoaHX70DGUpXufkEw+SLQ9KRtAqxneaJLgo1+GRUKu2R6/CAENlT6Gb8zTo2+1BI70wvcS2LRfIdxg4DfXrdBOHFwprC3SuFKsWSxkCrRGDBTvNYK4f8OiTMfNXgWN1w2HZAeJ8bDkZXoM4pgaL105pmTSPTS9DzgeHPzBVl7SNYq3szgTSsDIg3EUklZqWIo01Gs2cR5wQVD0mE64sAxWp6EJ/F3MeqtvVLCtBlRYKe4YTmJCo6q2oftWFmSzdDTuhhSfpf4Nmo23cVUEarBkL/fC0mrs2r8wY5wZME8p9Rgg5z5eSYuZ5qUJ7AUhpQIETCCyTkmk0eg0ZXdKXEkKbZJSPKj85AS2RHFjCKn2Cjex0JzlCZzTAh3bKufNL+LtLjNBpdrRkJ1cPXVrB83BuL7Nj6ANdesybt9WdFGQZhJmQSjqtXoAfAVZZmIzty3VMbsA3hubGnSk6AkY46D07pFA4Xkzgg3e2dDs6TDKdIcyYjNuGis1tKdjoSuPmEYLrlGoejLiC9pE5Qp8YdoHekZjm1h355ohReA32tc4Ye5c6QusnprHJY/AdiUzPqKSZSkouHwtpRaLBX8EUORxbNJHvIS8aQgRF5k5NMFkUWqEYNOZgamWRnEDURV/ecKAKkLc48gqMKP86htpOfEjhPdERlFxVWR7qEsTEGT6U7mp7gdQYFe5o0tYWnB/jBxMDwlNxfkrkDojQYWtjCK11VKLbAajkBK1qD0qQGcqdAf9RTeDBZPYRTPbEJ85MwoLUobWg4635dpcMPACyZyZD2GTYmB/SRTmRqpB2AJWo8L+tTlDrYcDLylkNWJu1JzF0euKBzuEYDoKklyJIGwxPcUJFy0Xw6ulIE1T5gVi0xYFqhNDULABjSSa8Pkyg1QZYJusjVWQLfq3F4h8oKMPAQYd5N5NdA6RaYjI7XAB+HByVEI7TCmWhOf0NLl94dRZmjVXHQgQPAfhk+khjGKtdU+oVpFs6U+dddqpFFhp+d5iTbMMTFbtGFgvqb2ujJxiRGrOCPUqNdLF2HiL4YcPOFCDZKK4xJcEVwcHwM2SowPrczYNOZszh+Baa0iy3Bgk/ZixFwW46xh5FvUTFTKwilWi0JCnjFgsl/ZcdSigRS8DNLYNLLdDx1XD2gjKIASbdZcbKYTBHfVDeBS/gB27QP0FjHozbNrtOR5JUCWHSGLbJXMaE9AnOSfFDhnKNCdEKJpvVO/qcqaKAj7Sv1phV5iviyQXsPltjOoKqbFmDBcfQFNJwojieFkZ8aUv2PlMq7NFAk7lUJzW4SfcazCbd9ZhrQ2vKwXUeEzv9dEP5sfIPgwXBzoDVksIRRBsHVVvjyCa4ophTDHt/h6fSkzO36LNtjJd0o+Aq5BIro4ag9pmW/fDYlcVi4SQb3RPdIfoemDcQuOaU4hwBUSLmTSbbth6kH37XOO8cfZbripIiP2MC7gKXMZNScRC1t0aX90OOxH2hi2y4htAoVrVonF3L8gl4Jj6fghN6nhY3AIQsVgdtvKKmhytWt9inqOjCWOSln4E8ieoW1WpL+qw7ydVew/N0FUjQL0xq5PjxsNaSgkyXloAg0Y7LlYpkHEXtOPOtu/5NyExxoxiKtEw7lAjwVwseAn3oMe8LpFZyJuhOGdkOQE4V/GyD56K58RFYcshWA54PCstlUOi/18d94vf40YqQRiQQLXMtn+pKBCdFYX9amj5yqAzBpBEZH9mJdD5wSoLPh7215A4rrGMxI2eRYreJAblxK8lD+BltWkge90JMwuFP2XU8gDiHwTtmksS8VPPVoJ3UYcnhHzk2T2pL3JFyrcE0JAgblhnYI4Jol+4F06BdgiMsxYHZF+lC375UGQD9NTn40UBSaAYvoNWSr0BXZlLQ5QxzjWPIJNupaEM/TII8GwctRQqbNqu1BMGBH7NDaYD0IdT43o/uWJ1ZKjNjrdelswz+oNDD4KB/MReAOWdrwZVPJofPsFrwHB0Gku6AKpQQKtRCJEWkWmzb/tqCP74cg3inUYAGVoVkuLQuJ1QCejTZ0tUdUskz2iGAZ2Cznc9DWAQ1GCOgu2tepGyLnw/znZS1nXGBzmnBzOtqkY24gIRwxjl10yBgn2EGHTR+NO7vZs7//ve/f/aft354c/W/fr16/d1v3+ofP3//6vWPt/6oT19d/fT9rT/eevLm1Y+vXl+8evO3n9+8fXj31me3frh6+fbXN1ffvn7516vzL3z77nZ89d2t//ryb9z19v1TKxP99MCxR/TBrr18duurZzkdH7TDAUcvGaBpAtbPbt355t790x9WuBUkp0TcOi2f3br3r/fiEp2lrdCMCHto7vqrR8+PdywMJJWwwmsHCfVntx7e+WLvQZ49PuWbACIDM6RjsSt00NpePDv9WXSRgKxbmMKedMfLr57s3fHx3RfH58jSmyTK5iqB11PyjM+/PF4b0GpRwhygYLTXesjnj/ce5MEXd49/JgcEuBhdIqBX9Rx/+nLvOe7ee7S3iE8fXhzvx7BuIvQS50YP+Oji692Hv3h45/Heetx79nBXRJ9//ej09Gcg7Ltf3t6747Mvnpy2cwR3R2DpAXi2z279+eHpKemFgoeC3gU8FK3wxRd7P3b7ye4Cf/7s4nQpQ1xMqEc2Tn905+mz4/3o+qLeqEcgZmFBnn51f++37jy/1mvnj/j1o8enV6ORXnEF5EmTmJ5nvK58n9/z6cOTpTp/ysdf3tn7q0fPdxfk8pujWGXmPcHj0gtMnPH8Tx/sSNwX90+Sz/z6NZCJofNZ4Puntdpa/IvrOtWG6D++93h3kZ9/dd0QefYod55f7q3j5bUYkH6GXLtDJabgQYJ1uasnHj+8zoCc79rlN8925fHLh6c1OT800i97j//Fs+d7B/TywcXept178Wz3hH5171pCztXBo4ePdy89ON2SKAMAhrTrgA8cJfLF3mL96Yvbe4Jwcfv/2RWEuy/u7L3153ee7CzVVw/v7W3n5Z1Hu1t28Xx3qW4/OZ7d8/e6+/zFrjBe3N39sccXd/cW8YuLaxGG8pJBbDJadBrr1+5fPtlb4DuP7u0+/uW9i92HvHN3Vy1982LXsN7+Yv+Otz8/afdcm4JFuhGg4ZYHJ7N1fZzOD+H9kxlP8A8VhlCB21mn3u3zFxe7EvL03p9PK5llFzrZjHVIVvUcJzt+fuXOtR08NyQXj49a4qOfgZFEe3b5dPcp7lxcx89n0vj40cO99/rmm3/dNT8PH+391e0Hj3d1y9O7X++u/f17aVdfffPlo70Vuf3o2c4yPr63a6ofX2vUDf195+lJBtpsM3I0EEjVVrHwz3Zdr7tf7on+o/sv9m746OJyV04fXBu0cwv/8NqFOnN5br/YF24ZhLKzVA8uv9r1eO5+fXtHdJ48+3z36R9ffrN73h9ea5ctXfDozu61+4+f7u7a0weP9s31o692JfLrh9/s3vPiywd7Avn8y0e7r/7k8tGe8nzwTiRvruXtL+7t/dGd+9eee+lkWBUeLfBP6TFeXLzY+6tnT+7sK9VrX29jQZ5/ebl77fL5oz0h//rB7Wvn/Uwb/+nzP+/92dOLa9dyI3S6vPv53t89e3hnV87vXyvCjTd4fOfh/ps/ufZuNmTh7qMHuz/4zZMXe2rhX5892Nu723d3F/Py89u7P3Z58dXutT9d7Do4t59c7qiMpy8e756cy8/345b7T/cdkruXj3evPX34fPeeD+88332Wx7cv917u/rPb+wb4wa4QPb6OHDeW68vPd1/g8Z/v7e7As8/v7l57/vRif1Ee7BvGi+tTt6Gcnzy7u/PmxxTJ25dvfrx6++1fr16+/p1Jku+vfnj5609vv/33lz/9esW9M8M0mZfBsCyJ+CfzKMff5Cd1u+sHOGZRTo+bo1WxoAYbfbv13UtuXDktzcaV04JuXDltw8aV0+ZtXDlt+dbfPNz7nZNwbVw5ieTW3Y5yvHHlJP1bv/Nw78rppG09wdO9vzmd6q3febF3t5P+2LhyUjpbv3NUVZtPsLc6J624ceWkSjeunPTv1uo82vuba2W/tUFHG7G1pEfLsiVwR3u09ap390Tk2vZtrenRYm5cubazW7+0e4RONn3jyskT2HqjJ3tvdHI6tu52f08UTu7NxpWTS7Rx5eRHbb7P3pWTy7a1cEdHb+vZHu2J6cmp3JKEx3uScHJgt473xa5Sutx7tpOLvSXaX+8doZMzv6nIjhHA1iK82BP6U7Cx9UPf7F05xTVbV+7vCc8pgtp61WPYtSVwuzru8a5WerwrcKdQckvD7ArcddS6JT139wzXKUTeuvJw74dOwfjWCz3a27rrsH9T5PYE+JRi2Lrdn/Z26JTL2FqEe3ua7JQ12VzTPaV0ys9sPcHne4twygVtLemLvd85ZZ22jve9vbudMlybZmPP3l4n0zYFeNdV2jWRp2zfpvk+vtB8l0jcerc7ezc+pSy3dvHO3rudcqNbL3DMqG7ZvS/2lNopd7ulUR7sndpTlnjrfU655Y1Lp5T01vI82Nv6U/J7S6k93nUzTnn2rR/6Zu8RrnP6W7+0ezQud1XhqeawZWG/2hfMe7vK61QW2bp0f++VTiWYTeW+Z8sv9w3P8121/+WeOF6XojaPzbGCteVPnApfm8u669g93fW3TrW5rSP2bE/uTkXATc2/tw6ncuOWBH2xe5S/3DuWp3Lo1jl6tqeQr0uvm37D3sM93Y3B7u7a88tde/Vg16c5Fa43d3Xvbqci+dYTfLW3pKdy/LbK2DtFD3fN7AkvsLUPJ4wBlOUf/uc9MmFLP54QDZsneUcz/H5Mxourl2//cvVmD5FxuuzxGM//8uvr76/e/OG//eHRqx//8vZ1/JCeioHe4zgreF0KebY7P/386/e/7Vx8cPXy33/7w+c/7/3xg5evftq5dPnr69d7t7378q8v9SY//uHFq9ff7z7X1cs3O9eevXz1evPS/0lW5/0yn+d0GvC6OSozYVKv9RNbYVI67x61TODUlTnFmdTWh294fu18hc6/836Fz6+925iNSx/t6dZjvROI84t7cnXzm8eN+Pn11bd/+fnt79oEvndas9PC3Fjk46fvn+/scnx8tnQ3vvbx1euFuvGl+PCjlbr5hXdXroXxxhfiw3dbdOPi8dOdxbzx3a3vfHpxP/+JL9+9+unlb89/+9vVx8v76OXbqz9cvHrz3ZuXP7z9Q3zp/E++3foWHvnl7l+8v6bv/bz/tetLn36Nu1e/vLUS8sEXzuXj44s70vHhl3Zk48OvbEjGR5fP5eLDyzek4sNLXiY+/OY/JhF3Xr558+rmMt67/Bft8Pur354+UKRx9fa2fu+XD669+0h+yM8//vL25S9/QT7+4+VvH37r7JIe7X9IKb7Rq199/+1ff/7+6id++ur1L1d//befruIZP9Ctutd/v3Xx7z8+f/Xd/7x6+/TNq++Q3o1nYEm2wYkfX/lIN7vd3tjmva3d2NNP7ZC+8UoL8/q7q8evfrriBT44F4/jFg5wua0KvWrb1Gn7euzTekeW8uVvT354cXX1P0OOfn3z7c8/fKvPbmmHv/vp5S+/vPrh1Xcv3776+fW3P738t6ufYjOTvps3vvEfV9yYr6QD/MFrdJJ1Wgjr8lk+pP/xzpa+RYf98cYNbt2QKu4k2//malOm/i/9/tXVt7+8ffPrd/xW/P5rPcq3Wv+r/y27+Nmt17/+9d+0mr+8/Ovf2PU/lpJlRbV9P1x7G/+SDyvjbNOAxBRe9PH3/3F0Y3Ze5XfI2v4uuxOwI5H/Jz91dqhuCP3eidqU1Q+lbed0bp8WL5r/H278L3/76dXbb08bGt87fvJj2Armtw0a00di7Av+1tu/vLn65S8//xQ+YHvvqv509cPbW3/UA1zx2XevfuHFTk/709tbiNgPb7/97i+v+Mv82a03vPL1vxek68PnzRvPq+Dl7HnzjeeFMxB8VXD2QhL0T3rgeuOBl5sPXM4fOFOX/vBg0RjMzCoo12eHwOLmXerGXdZUz167nG3TStspJBb0Ko3xT3rtduO1+80HXjYeeDkXq3rjeWlAGTlpFQA2TZAEHzxvLf+4YI0bT5znzUduG488Rjp75uVsjVMHm8NIu1Ra/yct8c0HPnvevvG8xH8fS1ZrkwaMUnRe25zrzbuMLfkEhXjjrdv5gcorPPkzZv+09k967fXmPqWbTzy3ROtcA/SPHzjR1zwgnolunJw/VlnQ3BwYrAvpBRz5/+Djl5vPX8+ef908Gv3sBcbZii9Mks+yA5jfdf6zdO5NpZvPte6Gmcj1fM3rzTVnbqdU28gnarqPHrkt//Azl5uno5wdj7xhKkBonz30vLHO+UDT1hqTFOmD/6fZtpu2Ip8Zi7xlLco4e+T1TG1KZrN0z5yZWVAfi8Y/rjXLmT0+F40t01TyuTjnGy7EelhW5n/SwA9/wj/LNOWbtimfGae8ZZ3ameqsDP+ilYXpM+PcKOcti5F59Rte84REAr7JRhtuO9PBeUuVp3PLk296NRBVrDHKqEHnk26uYUorlPvwstFUzXv/Y3Jwc03L+ZpuGZL3D/z+HW64KCXmdurZC4jwWj4+bSX/43JwUxOXM02cN0wJZ+djMSgZsDCDE2QdQPSd3WZLo29sX7mpHZlC1SFAXOXSz7X+s45Avalp6rlbuqXR8w3JhX8SdhFGpbUi7/ls18uGkm3nK0hH84SBpEAPfH6XDbW3oajPxX+J7m85aQkk5ZnwzzKZwX5kL1zrP6wFby5nOV/ODS3IEn+8DrBeQi6xjs5MyzOFUjb00nIjCFfQB+dF7ymmXNczaSwbWgmA6cePkgKcGqO1oFc7v8uGSur95l0YjzmBiOvcMrfi7C5bSgEk7I3oRzfJsDj0BDnT2V22jmk6k1WoT2EHn9r0Rqv9uZxtHtRPuo5S4JKhVZK0NgaRpuVjN0YizXCnJUnX0hz9j57am8a2nq1n3Ti1y5mYQUnE/JQMk4gcsHx2m41T29dzaQX5DxPIypufyXzdOLU344/MpOeKH8U8o9bONUjdODlrPhO0mdfcoYZY4Q47j483Ts7N7FViZkWCezjRtzMlbp9KX51ld3fqPP+knK9Lq36YKNpO636Uv/r/US6JaXdrCmqcBOvEDTO4NsZbLkwLnzkK1/9lmaW8tnMrfjMTBk8gTEShAhlr/vHTV9j5IKupbeJI/hfmmcqWDb259p3BXFOBg86Vnr7+VyWItsKGuREFnzlNdHTCoUX9tunJl/+yxMOGjmnLp2PgtGa4puGHW4dE6uYSM60dEYI8Yugr9Lr838kYbXgG/29tZ7eaQAwF4fs+Sy/yc7LZPI1IkUUoWIq+f+ezheKegCG0BW+qLGrck5lPdybF6sYkKboSKjCjTPPxAHgqbk8v2RJLtTbqmbxM6SiD7PTFSqB4WLh4l9w2d5AeCnLqM0gPpKIj0S4mHT/EY6Jnq+bgBjVVJSA5jDLR3brqWUeJZi0sSX55dlUn8YwM5/PBm6k41FQl2bpRdv5ovtA1kDJsGVvmrH0cgK9dWpM6WK+4zYPSHj3S6Har+2kgwdAoxb4niZKEMzuAZ+lN9RbYkckoR8AnpIZ7MPDuRZBt/X/OpcdvqmMY/IAJclEprJByiNW74N54TM+xJuXBmhQknpGd8GdfUYxwoM5AtOhGWaTetZCdSr69tvEhfhPNv4cNWS4Ja02KIKxDEMXr+0UnJQl1VPNC3kewhpkfB+5UMgpeaMpqqa3fEG+3U5H2yGWeC61eIU+fTANspjOWU/Xb7Z7ekju1kDNIll6Nj2qMKcB1+FYDV1inWas2wEW7gKVjsqzS31ZpbCDBegSwJMve/LZIEGkL7LjBOlig59aczyryRdgsgsTzam6v7HEOGUxv13S+pHtzQJYDGAIdtePoCRArNNuTrxuz4ddkU47b9nnajtfT4XK7ftyueLf3yyYDdH476B6tN8vHv39djxzO689NR9HfyxcUO/PXt88BAA==", "tags": [ diff --git a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/elasticsearch/ml_model/test/default.json b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/elasticsearch/ml_model/test/default.json index ce77f56845a5f..2e59da56a81d3 100644 --- a/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/elasticsearch/ml_model/test/default.json +++ b/x-pack/test/fleet_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/elasticsearch/ml_model/test/default.json @@ -1,6 +1,6 @@ { "model_id": "default", - "estimated_heap_memory_usage_bytes": 365968, + "model_size_bytes": 365968, "description": "for api test", "compressed_definition": "H4sIAAAAAAAA/9S9W5Mc15Gl+1dkeJgndtq+xL6E3goXApAAAgcFEmSPjdHQZJGCDQVqQLB7aG3672d9nlm4VEYscGSaPna6ZZSYkRUZsbdvvy5f/p+3/vbm6m9vfv7u6pdffn7zy60//vf/vPXDm6v/9evV6+9++1b/+Pn7V69/vPVHffrq6qfvb/3x1p2Xb968unpz67NbP1y9fPvrm6tvX7/869X7C9+++3O+8u5Wf335N+7y51f/9vL1yz9cvHrz06vXV/q9dCh1HcvodUl9XVLq7bNbj37+8Ze3L3/5C9/7j5e/Hb/Wak9z5Qtr7Yu+de/yX3R9+9qfrt7e1uNt/uXf//73z/7z1tuXb368evvtX69evv7Ee35/9cPLX396++2/v/zp1ytumMscbUlltlp77uvuUhx/g5/Qba5/8LgQHz5gLi2NJa1dt1xaWZcP323j4tbybHxtY61zXdM6xrJoRdZUrtfC7/jdq1/e6iZ/+/nN24d3z/f9o8t+97958oKnSLn3seQxWhtLmzVrwx7eeX68lEvvLOuUUORZdeny4ou4lNpsc1mXmceipW/1s1vPLo9/lYo2ufRR6tAXah+f3brz/PJ4w5r6XJeV1+6jlvnZredfpRzXShr1w9vqzx7ce3S8o1aolTLaWFet2dSl21/cO17S0n10V93y6Vf3j782U+m5jqm/aovEjQf5cu8ZHz5/fHqzJY255NrXdXY9yWe37j56cLyUa8va1bqUZe29pKLnf5KPz6+HWLSXy1LWtdQqQbx7/fjna3X5p9NzzNbLklvT/o/ZkJQHX9w9Pf1aJBzL0Ju1wnt9+fDJ8coyR269Dm1cL7PoKZ49Pj1FWlJrc+akv516fv3Ug4vT/XSwx5rron2uM+kBv3h22metRSl5lKzX0hlCBC7unu7XdFT1VlqnOUfVAz6+/GZvDS/vfr536elFqqdrI9W1aMu0Y7XoeT+7dfHsKFWlLlq5sRat/ZIXZFFvVk5CkNsiGc36m7XkzHY+vPPFzlvf+9d7e3e88829+3tP+dWznE67mVdJjoStaLNb1vLfvp/21vjei2e7z/jVvdSOj6InaWVqgSWLa9alRw9PIncuw48enO44c85DoiYBHuvQVj9+eNrqrdP5zbNdifvqKDwl96rnapKrdWlr0Ya+uDhqgjIl9lM7UyXBOjVaj8/vPDk94ZqXOnRTPUYrLONXD+/trdTdF3dOh/Ncei4f3dk9S08fPNrbmPuPnx4v9Zr0KLNoEecinaB9efSVuePnu0J3/1oMdL60fpKRooPVE7rgWpVt7Mztzx/uvtzXD49H46OfyieFdbH7JN+8OD5JnVWStdSk904LW3Pn7q6oPrj8avcZJSOnQzN6zzlNvdUykzSATv3XD25/eTob2vBey5CUYEH1h39++PXeMj/74smujN/98vaeon7+5eWuSD5/tLtxXz96fC15esRR3jkmcie+uL2n0P712VFRL2suWUs2xqhjaAMkyc8udh//9pPTOdywGLefXEvJuSI86fes15YCX/X/uppYxztPH+z+2hf3n+y+9u37z3aF68nlo10j+uWjvW17eu/P+792rT43rt15Z6FuKqBvvtx97duPTo8vU6I3aLnJhmbtnJ7j4UkNblivR8+/2LOGl9/c3VGej7+8c7rfUvTSWul1leZa9Bh/+nz/nZ89vLMnj19cnBS8hKePrnMolSZriEZ7/mJ3Xx7febgrPd988697G/Pg9GZZUiofNun5Fp2eUDEv9lXMw5N7sPVulxdf7WmL219+vi9Yzz7fv+XnT3bV1uW9i72lvH95rSzOFMKdR/f2he7pvt69++WzXdV098sdw3zn5ApuKsl7j3df7fZFKvsb/uf9N3h87R+fHZtH91/sKLRHF5e797t/vSIb1+5+fa11z5XMnevnON+Apw++3nXS7n69ryQfPN5dkfv33rlG56v16OHek1zeebQvXBf7onD5+e3dv7tzkcbuIXhyuXvPRxdf73sRD5/vvd3zp/tm/c79L/aF7/LprtK4eHjn8d7BuvdsXzU8fnixe8+7l493n+X2kzR3b/r0xf4p+dPFvv24/+4Ft9bzYv9h7j7aX7Tbl7vPeXHtTGxt0td7135f+uFm0L2RhJCD1bNCv5YmYf0nAnOTizg9q7yXtfW+xMMmPfW7N9y4clqXjSun1dy4ctqDjSunndu4ctrvrbsdpWTrCU7CtXHpJJNbL7T7cCf531qe06nZut3uG52O6MaV08HeXLnnO1dOOmRzFfZ26FpfbVw6qbmtKxd7j3BSqVuL8Ghv5a6199ZzP9hb05Op2LryYO/KnV35OZmyrYd7ur/ae2t6MrVbi7D7BCejvrUGJ19g64/u7S3PyfHYuHJyVrYW4ejhbN1tdxFO3tTmMX6yJyP39kT75O1tXDn5iFvL8+XelZM7unHl5MRu3e3FnpSe/OWNKycne2t/7uzd7eTQb1y5jgK2tu4YO2xpxmPEsfUIX+79zXVos5b24X/6u3hoU/cco6itlXu0Jz2ngG1Lev60J4un0HDrEe7tverz3d85ha5bv3N/76lPYfLmaXiwex53f+fJ3nk8Bf8bV04pg40rpzxDzvJS5JvVnNfSe36Xm9j4k+uExpYg7Br2U/JkU1fs/dApT7Nx5ZTc2Xq465TQaMvIXTG7PH/9S3ufSto6kZd75/uUttqSxWOqi9iIj+YslQLJ8i5BtvV0x6xaznKFS1OsXFuvJb/PxW1pmMs9jXlK+20arl0d92jvTU95yc277e3qKQW6tasv9q6csq0lzbUpiqpzprb2dX2Xot34m1NeNy+py/d+93/zXTJ4UyntncfrvPOWvX2w90enDPfWC12nxc/V3ymbvqktdnXzdeY+9yWPNSddkEeuc/k+4b/lTh7LBLnVufT3/3xXWdg6X493D8SpjFGqgoH1/T+X99WPrRW/uyd1p0LLlnRf7NnCU0ln63ce7J2v6+LRxqVTyWnr8O+a8Mtdo3J3Vz1fV9FuqAWCzFPxbWsVnu96X8/3HuHprl92qihuver+Y3+1K4+nkufWcu+qpstd7/RUkd1SqE+2HZnfW0x+oTj1L1sQgg8u+kLynZ+uXh6r48tapyL9ssp8pNmknJ69fPV659Ldl399+aMe6A8vXr3+fuc7d376+dfvf9u5+ODq5b//9ofPf/5x5/rzv/z6+vurN3/4b3949OrHv7x9HS+/faeXr37auXT56+vX2w/w+1MH75f4PHEwimxtH21tJVN2tttg0gbvn7PMpfZSS6sjkwH64PXOL+2t0cZNPlrt8+sfbNX5xfO9Pv/OO1HZuve1hN289nuk/POfeLW7Vz+9/O35b3+7Opf0G1/w0v7Fz3+Ib/I4XSpKJkPPUpfRqdc9evn2CpDHd29e/vDWffGLi0t3+bTj779yo8jasJMnZMsHX/oYQbEgv1ff/frm1dvfPviSNMWsWsJZyiJ/6nfmwM5X8VyY89LBsYBa6EvAXj6x0k6gzx4816GnXRPZRJ2UurEA+eP/K21jJXXcylhTXylALXm2G5uRy7rqmCetd13SDC9me1c3vvmhdJxd/v3C+vzVX68e/Pzrhlb++LoX1TwOrcsRyutouecldn8rP1oPTb6Szpaed1lmz7vfzFnbkArIGH139v0v6rfbqPLAgNDoT8b+V+Ux6ZeXXKv8P0rgu19tBxAK2jPKvX1d9n+/LAfpiNqp5yf5EmP/prkcJFL6KI+0lDHM25eDTgx1yNlr1W3r/lfrQcvT9F0dt0X/wzzqYZVoUx5ZJJf6j7nrIVUq2yNRCi3D3bXKFZ46iG2tUgdpf/1LPoyWZp9Nby9hMZtaDz21pWphx8z6ut9/hZIyl00Gc2Tz+/OgtdRGTX2pt7QvprontQ0FfyBUpAj2vzoOWqLSZ0m5EaOvTqKBOs4p7ZKkMboV1C6vdOqTLh9r7BdN8oEKSWnaLYoxVlDKQSs0OgLYqz4zj3rQj5eqt09LH4oD9x+gE4SgjaXost5r/6alHbSZrfS+KqbWfrmVksmoUepoSad7f6W6vqnnY5sUfMoWuAct4eg3LVVqeTXndNFBITyTCzZS6u6c6PTrnZZF/6QqnPe/uh5W6smxA3qSaja1HLosNeBOnWy91v77r4chI6XjxH4qAvTKrylg1cEDb7g2I/5I1bqMCkZLZ9qJH6hY8HxSlqPNvn9O50GxFoGyvtdBAhndKwGR2qO2nnI3qkcPKv2UZ9XZbxLCdX/1J6AnSZW8lizNNvalbyFIl4PTgWf2ar6ZZHnWLoGSmyRtttT9JV11onIj4JTL0pK5KcdU9rFo8alhFnPTflhaX3RlTP2XDre7qY6nFMqQS6edHfvnRKoX30+CIsunk9X3v7rKmlO1l0ZLgTEwdl9adC766rIC4nl30/PSK2qyS5WA0h3cybxVP2iDSpdNlZelS26lMNEB7plSveb1dUwHkCAZiqaHc2qiyfJnNn6V5pluU6X6FElI95e86M3MTRM2WgG2Qg7gTMs0xxTVK9PTlx7V97a7puthSodLrKnRD2d4pc72d0ZWCb9hAhvsSJyTtwo2Lp3A8uYIpwPasOnf5erIjpqbopZAoUp/yzWRF+ckQxosKTJJgHKL20U5JUP6Ez9Hxmk4t0BvNQO4Ccw3ZbcA6bDIGkrQtYsTHeG8kkBg62CsiwTK+RpFni5fU+izyjrv71U/dP14rmHFe5tG3ywSjilfp6FDdZydwGXt0NS5GDpIqRnkUpdqSARoEhh5JYuxS+1AGUD6Rv7zKv08jBjLzMjbkVgBxFvdSjX6ShR3JaI4IygSv6qtl5ptiiqNClsPZHqBzqHwR93f+ykvd53AXPVfSzYugZRNOI/yhhS+VRO6lMNUlLk2Cb10vrbVetnxtULuSHG6sd7zkAfuuHTtwjI752XReZef0YuskgyEkyd9LAsrV1cyWN3r1wOARGkS6cXoDnFSQtC/ajmbTKNzCvBzADc3OSbY0WJVqEQZxLl0CifAWSUMomQlt06GxJ3nrF+OApKExciJ3AdKADI0knu0z/5OKciU77j2MmVq5L3uv70OnpSZDKi+z0uZ3U/I6SLB0znNxQWu9WDUskSDWIm6pMKQbhw7KeWxEFBL1WuBmrlpxL9tNO23FF1zFkROwCRTJb1Y2bP939fHYKbk0eaO52L11zrkgKFDZJ4Ug5pvyv1dCVWTLlQrbDq7uCnyUxUqTGOUdNM04nby/uWCurdfSg2PThGFvj6dvGXw/oClI6+RXFStz6W7WfwVu2wcxiInTHsq905PIsVsYpB60L3mXIiDSqf065SoDkWVAk3yOFYjxxJjHTe9mlywpXBGnAGd+hb9Ux2goHl/hYvywxTRSj/V2az9UuRZcR5S1EOMU6Df560Su5VlFPdN3cTUrYqUtKq4bfurr3BBx28S1cp+VecUHQgV5TzIVVTAXsxCSd21BUzrZBMIL82a8vjSS5lutFysrZ20vyhgK/Kv5ds6IyLXQWIie6MnKEZQlve66XwZKxueQeZKyet4VLOP5bAuc61N6rhrH13SRbetc50NKRoyyjaUXvQ9+g30FxL6/ReRHPUqQdYzaD2HUU4oEjIIjeZPRR7F6bHOCZK8U/nRibdZD1LIkvdV9kgX99dqOaxHeHWj262Yb0qPyglZptSjLkigPpF1kQgvOkmyctMlKA54NvLamlSfPnV3lc6R35DDcaN51+o8WhMV90vmZCSMez8OERwuchwWHX2jyeW3gJ8g6UALkQu8SOLJKva00qnr0iMJB4f0mDbJxSsSKRlROQxFYTQH2gXoS5b6TNJ3k1jIrOh1iLiBt9Z2r/T8dVylbFOcB44a1lgHI2UbIkptLtpAqhtyL/bXUDGX7I/8M72rYhqTt1LMIVMpG7uQN1zNwnAqOgmehuulYMqLmhYZXIgMzGjOvBbgIyRO8bt1xeViFblLJcinl/RK15hnlbIZhaLFSjrEpk2x6jKEEzssabM5NoIEGQOMq8J/8/tyBZYZLd7y0LUQzmrIBVO8qWhWLlNyL6WgW6suG6yv63BkXzWQFS4Kzyuvb1OM2p+GtkOLOkt4qB00mDwWWdiyL3zzwNGR/tBp00O4ihUZNpxleSItWAqMb6VTRs5sUms18ZGCPllVHqAQoWWjP2RaZYHHoF4j+2odBplMHTzgUsHS4K2nIn6S1omzsv+kqC+ET0GXotSyThN0HRQXFm3Q7IojZZadayvPKhd6ibSndPS5QF5+igJPvRNb6nzQQlWF9yoUxa0TKPdT/roMiAyetLgLuhVUKOinaqk9239QXHB5LLJypUmVVj2tFSoJfOtrKUnbmkzGpxwk0Yo5O33Wq0tGTvmWjUhSkrWSPjeLWnSSso6nHoH2bSdUM8yRjGyPkqXbVf0q2lERRiGb4eRPFiihfOUuy4I7+9W17JQBFYVSNnVhmI69dKQ0f280o7t4QftEeamuVG1NfmaRQ1LJ7pOOX9O+RtGOTvKXNPx0clnOH2m4lwoVM2UrE4Ovh4Y3RKqV4oKxkcTVmVoJ+dPVVut09jBkWVK3uFdHS8hdlo+F7MnTMl/Nh4Qwk5yjadxVgZZDJX2qTZ8QnZiUS14PbDuvVJtiJSf6sB3o6CmwlZY2fnsFf4BdnGRktVz7S6qjTxInE3zqrDjXTVISRkxvVOQmmCKIfBkd0REhOJQK5qbpQMSg0EvKZKXp2DrjNCTT2K7gP5mwbhwiXqFgWICu7X/z2m88bxpcD+GIZXqvnTMPiBeZJNbVKXZCUWUSOGcDpoPVuCJRAKj6mMhnZCeU/UDX3aKdk5FRAGR25QAwaaRRKS3IYd9f6nSgoICqx/bhT5usAMwNo0Uta3XB1ARhL2WkEzwBkZid1u9TZJaSU6CkGMWuFD49dWZ8YRsiNwWT2mWtpo5vLc1FSDqOi04OvadU/txKLYDNBjEXrqtNLct2A51BhXaXr9X2y2OVi7WsiGV3Wl7fhcokHD2FPeZZZeZ5p0WLoFiZirNRycReU6pmyNmrJmyoB5ejhTdFZ1saMJM1tYEKsB6ZCUUpq6l5SAks8r7knuMIZV9FanhzS2QBFU/Y1JpcNfgyFMvJXXVuVac2RrpQak0C6jb8QF2gFBkVMlvNQAHKBNwFvGod4dW63LY+7Y2UYaekYhYA4G6juJ5ZU+OqDwUKOux6yMhEunobWbhGSWzpRNhe3HtoX20/roWrY4G+U5Sofyfid57ayNTFdAU0UHLul0yw4qiFwszKIXUZKdmJXiDrwFlJTttJy3IypJaBDVht1yfhcQX9OM1hbwf40sirtmGzLMejLrMmDzmAKNb5B1Ur9VkU1hB829ij80oUFeSCWq8KpQSpTNFhzvvbJJcmA6mak0yUqz8kIFDk4Va21EXSUl6SYhSX/OnuFO0MZEejYyqR0HByr/OuILbJHpK2sxrZVYYGx3tSswJba2FUiQgr4hwJXHNFHLnaBJtrJylkMgervB2oaBZgYatxtipLiPXV1gypJePs9cOkrip5UDhK6srWxRQ3SLkTQ8oHcOCkGkgfxULU+LqL88aB4KqADNTXxrRrOrWHCbxdmIT9lRr0kMmBJYOw4q5Zu5pQNWANM3GUfYBlUkFYQokkk3seBxjZmgzYUPhUnWPMAkh+ZRJJs7mStdyK4LDrYNq7yzHyoIuizJWyqFxdY2dlkPIaye8wtT7FJwHBBdO3mxSJy7AmyI/IPEPBlh3es0mqUZ45HrYZbQOCe9AVQdla9t54KyPUjfY9kzvVA1vHPniQqvwSqZNPZOmb4ifK4ArduymThFRHNYV0vj536k5PR9paj7BkW8OVlwX+QyKYkBiXO9GpU7QCZIc4zimfjInTCdBeWWyePldARqZLurSaoALdl2Bj08pLA1Xr43QQqZy8YKO0ZrbJyEmpzFhUW79bUzQcVXjTXAGbxKWWlFoAeZPFWBDwKvDByBhXPAeTY230qVE1ICWFvXVrCp4qU5GVsCyuvKCfLhX7HejgxXU6jEOX8A0g/CPDw2S2n9JGBxg8C+raucPygnHJ5Yri7LpFLbmTOFOwuqCnzVsBnE6EKtIoABnMolYdTgU+EOrCrmZuuoZ2DCAnND7GG9eqJlI9We/WRnKHD1RhDpR/DQPkrPQAggUtoVbUYtrk3svJJvVA3t6Y3iLVByq6pFWax+xTc/4LRZIEEJVajsd2UHvCd5DGpV3LG3D56A0OLSnSYrLfNYCZUkuyovhtHgYv3y/BbdVHNb4yYkmGXCuoIzdckX2lX0EqoQWYbhgVAq4GaQQHDpTJPiesk2NyQylHXw3WWQdX26ucBx1Rt0/U7Gm/IazJLgMKhBFwMxXZTABq7bdiFIm6vHVKEM59AWi50i4yg7LPLUDiawp6A43gHrUfdHjllC3ynHXefb+AdGLCNFXJltOLZZLmqkASqMo7Q6t7ao1axzdKRvZ3yXGpnsn7oIIFxNNlm5cDzpwCnpU8ezb1owqSe4LpJbuTHZJeZ1J3TKSLZlDVuhUkd6//QHYMcNc5Cw0wXgevOW0Xz7E3pUP1Ry+F+33dVf6vDKYkQ2JhOk4K2LBOq13HuzFlTlCD8uhDCeY4cM7/zgonKmD2xio4JSxHkdB4kWdBZsbddOCkSTASxthZK4rgcuoWKcTxibymjJncCT0pvWm+L1C2WvpLBghPyKkPwLLUBFuwtTk/lcYdEt8LC/YuK79REJUBpJNUXiLFq2bc5AEqUwKtTSLd7gAGSX5yxpduZG6mzd3I8lEOptWLpLHJHErJySLo2ppIc1n1ncDfSk4pHcoFNr/fyCBgPyT4rswln7om+PEgK8gW/07mauAjDqp3iw0T5HWthD9ROTNWVmqWO0rqgUFkG9AC2siQdJJgBQlu9pQCgYyxrLak2vUaFrJ8K/58oc5n0Js6z2lGka2RuTMrWqiA6vUVpCaXkArEhhzKSVtoWlwqVoF3B8omZxUpNYmHgUenY0D2geSReSN6AsktR6fl4oo0g7whncBZCiU5lGfFFlX6zesaEEZXtpezMov2qOFQr65IgECDyKRyxvlzeYcBExFl6BK90y7voKBT7zTpNfsEtEefQUIMsr5Np6FTRIkIHY25q7OQMtCZFIFkKlUiJue2AhjSaZJ7SQ+IcxzJ90ikWgLIaDJ0M9ofejQLwA2w//PXK7OFG6Udp0e/2gR1b51k7YZcAilx4HPmq/Uge9kou0uUpfDcO0TeuWE8qnOTEOGF7uNeKCm7YoqUNys49elEedne++gqlS+yKooykDdtYCUTGRU+SA7sOpGElfstQZdcfsLFiBkAKNni2mIoM5LKX6OnG//JrVQhyUWZFQy6jYiluCbuMfNjhqvI6QGkanD6UWM9mQeYpEQq5SEtqT51zT4G0ixfCb0mq06txTorZAAHdlDnJVtNKO1acRDhxZJ6tzmgTplDR5sgyuJEE+iZwNLOAS7Dut90JQNOoOHVJpWlU8ZAv622hR/skFyJSmcynBPVeL/RHQrPAAK/vO8r23TAZpMebDJqFQop226PUMimUUdZHBiS5iI2SkoBRLPL/8u46LQvsld0DFGwt+EPfengSDIlPHs4VzK1idAw4QRbd0WqKTgMMgK9f9cixy7LWyBXHkVwi6iXoICqaIAsm4ULUELCsW/kit2JL4cA2C3AQNbpmvuA7pKiDkioxMVF8JNWbr0RCL7pMXEwM0T7DDTnJls52dXWFQAQ/piSllwb3QuQDDtQDcwORBguQwBbmjspBSxyKgvNlwGqMb9O9o3eXxCGi0tIyf+XPOP9S/qm66JeMCEI6oAWxvjU8wCsOzFaB64Xi+4l3u3oZaoODgmxHBAksCSrxHn4jihOfCZKnbna5HujUXqFQAW/0t+U3DuhZ1nKB4iiDdWDXwPuqbJXPZtsggRPmmwQU9Df5zKqOs207MlvUfwnFWEFSl+j9RoOj+p7NXFvKqwoNThU3Lkb+giIkhx2kPBWnwIzLPQ/6r2MMukH0J2h0bv8LaMiSF2tiXVlegho2/1nTaHPg5AH13p1mLwlnnV0VG+Vvdp3ClcFKxVIW5KfKam2kED9z0mnI+0Iw+kocJZ07s0U8ykcgQm5l1XqMTM+wm5WxfTDspEJgIsDjpNmDdwm/XaSFQeUk58tnyxyreusJlUv2w+kKybxjMWmeYFUkTPUItAkZEIQRWCAoaXTJFQ4x06rHFPRaw3fy5+q33kAaNcl9iUpK1fO2D3qVIgz7ZsQfpg0zUrHBoSgqMHmsLvzIKt8pMSpQXnnRIouXN0O7lKFG9YnLoluckISfcGkiVYYDbRREn6SpCbJHJUDCd5AAukH8DDXlSptHJQPyEa2w6cCEnf0SveAgcRIqUpVFWpVsL6aBITUDzGO7rtS/HbCL9NLFwiZsiIDYBJaRNX0OQMolamapmkE7iwpKZ190AQtmaXC/K0AcgYt7a4YVA9w3BSMOaxgtmGpw1OtgL7TE9pdpkhuF22usnyc6U/08dFuR8K5RXOP8yjAnciPUgwpa2UbXBRDKGokgJZ1ew+8ODe/BeAYVl/+AixWluoHZB/4CMVeLpZaAQk3sDwjk9F1/WrQ63SKIMDmfJNto6CaM7iL7JJPwTMEaSDRmRxUF3Vx4GBcxFfLFkelvQcLN4DSmAwllDSd/vZJ3jUZ/xQkPj0w2hDE3jn80ruK3+htp7nEEexBZSMV2eQmVUrE7q6wDKEmlxEUA5/gIwJaSOJCO+/YuMC46TFp4aUWZ9SJ9r4Dy2iDOHY1ilfRwWwMg8X0yqrsSwmV3UHxrEDi6VoWdM8K4qITQCk0dw4ifXfQ0uh5ae8wb7Qy5jEFMmV1PdElxxg3XGl6/KszUOshcg309S1S/K4DaDkQFy1Ee7XjSrm7ykAcP0/dAQkaZFwrXZL09zv4tRaKdjKp0pEnkaTlgahADYa0Y50ObLXS/jX0caZkno0lkc6VI5/AQ67M3rRIbbqHe4xuxElzXfhgOqNZaIl6kzv4VOMKjUBJytz2VCUo2KjLSvsl45ut8s2k9oY8FJB2Buo2DnRI0vu7hmB7uGyn45Wqdl2awQpIm4AFhcKmT39G9VV4vQBkNjA0RutqpeQ9AiqvXQvlQCzBIZW0o4XeNqd32iEoCLXyOky0KtqAl5aqSmNTKxZupGOaJtG5zv70CdMkdRa1jBJOrLPOKfxIGkUDWeAcCU4fjK4A20HH2qxQI8lZSzCWrpYyUocuQ9lCG6CrYWpX50pyv9ArtzjnPACsco0ztcEGm5n7KuRZHL4FDgzHL5cruAoGD0tbOVzchO9Hjwm5pyu0kxWSNiXTzOBLU/DqByYkJugL9G0HNTxSC8LBM+OmJtwnJdzpEaGxkBjWOQiYxhJabUmW8kjLdKyp8JzJ5S5xTzh8k2lr05Rq2iHpaOYVUm0a6i14ABlRBB/Tjz39LhihQoc+FEQmK9ZBKTVCDZr6prH5hRxrGsH+qSjKmQg5241m2hHUAMtiLPTA56hAztIq/9AVI+gQBDrA2FVubhafXookvQ/QeF1MWEKpRB4fDR3InkmHDzAeNZInEkKHXdWpwy9TELEe6Z/dg7ZIsK4j2mlclxnaFBWp4Il42yleNEShJIwLWR3N4H68EhZhobQ7kvccQPTjM0CdNVw7PPTxDB+SuyjbSc3eSCW4PQpPNTr79l+20rfVCP6pUygWdUEQbCG0DkPwViz4JcDEpL2DU8c694rlqXtpt6sB6VDmZXq1zIZ8geQBHTU4YSeM1Itrsp2HAakepdYWxNA2o5igHZTwQtLjbKFeaekpAPcAIVzVjzo9nQfwlg8TVeqYFVgK5QpK23TXdXFEY64ApOQHVftVqBDoWdO3Kb4ZjCfswRR65QgfHU2X0qmAFJZwshQ62twn4T9ZNWh8anIGViG9tGG0Yi2L6drXN8n6rytWzjWtwSwiweuk3SCQtqSwTGKgFb7T/NGNQI9DjLueIBJAczmMtIJfGOO7/lNWxy2RaeZlwHtndoiT/RREuwzHLkw/8DtKuhmWSMqzDvsSLNMzaklQ85r2HCq5dMHT+k0YbtHcC4kcGqnpDjPw2n6AZFmBSNz6E4zAMrANJ4RozBFz0bHZcCth4Fgk/FZMK1QVGegftHmfaA+C2rBBmdMswUKiSgMWRQIAaY/Fg2gtySnMoIU3yQqJH1mFCmncsjgWHIVsrYKOqmT9nTGJsQmQBI/AKRVjOkHep+gMWePXLVeULIPUs7ZKcio1bAP23Ci7w+HlZ1bIqY9OskTfrOMAmuBGKoAheBtcabzBLCK/Mg+oI1zZES563koXITKzKdIVUWJqQ2WYkwsswr0YENJRpvSF+UElixCUoRnOFVuhSJFDtIAgsIU0Np6ucsrj7pDgNMnq0RMYA0ZcsiAvvBMpGB1qS9sNOq/DWAm5h/t5OddHrswEabujdWEOACMldEQp+nsAA2UxqSfdGvSlR5EuK5kHOR1YNNubRZs04KYePNbO7JPvlF9fKL14OYHpGjFpkDuaoHoeYhbOAjHyUs02LYeFPmkyOjp7xfiQVMbkvEZLBa6kC6n1XdL9GMfo13eB3QCPG7SWsOc5Bhgpx4ZmZmRDsy5PpStTXl9GRuikc486SVRINS0DwIuBcByOviF08KCjba8hdHdUEBUMORirVMQoZJ8gFGvGkLCi0D3joMmbtA4vaAu+NhOtSo78qpRj80QPZtdsSXWm5IROA5oX3n9ziz+807SbqKNScHayl+U8DIINhbbFRE8LjYYKfRU60UHqAuCF1gXg0E0PTL+Mi5XlFowFglE5fe85IjZgITxqilZPyWqzEEy6bDO0NAto1W4n5UyYmle9O5gHi8s9EvLDWyPXyFY8QjOT8loTXqf5deBwMrcg0WghNpYE9AxTcsh/uMpUgnpJIeaKHi1QBZubFgjUMsW2RefJjnSJfDfFM+gMLZWczgeNT1EWdIyxFDqhG5S9aQw5sGwSKUH8QDu2DqF1ISVPdIbB5VgcIETGWe4w5FA0CFqUFRyfBbo1kt8uPb1Q5pWbS0KA9h4XE9HfGnDqo2/mXkknA/QAv93dkKDBuLaSYjsjWeYWn6QJJEvQPrteGBLZGFz6bBkFYeLMyUgROmtyhhLfqdJJ5gnIBolXT0ALNwmAJWqNTp70+YoinQzTmXbu0BGHmpu8csi5XINLUfgGNdqAtYDtMm8PB1Lw0sGg4+nhoEUPzmmyyc4xAQMAFHCAsRwesApmg5yRvANCMyN95L+0AMzyWlyCiRaT2mJaB+RnDjRGwlXSUWI4sqOW6FB2gSGHSE1y7YIsOoYYmTA5zyYZMg9aeUiwZjQhmr4+WOQg2oZplpSUu6cWnRaGSvtyNzTNcNNDmCbHnWKH8aBwNOVgk5dfANc5sDRdleBrGjjoxcgoPY1U+dqERijbm3LuF/gcWvQnmxBzJXSSmWUALlBM8/MVsBTsOMwR774zZA0KRbLOzDu0hoSiDKAN8N8GBpQOlKwpngbxt0Fh0agJAAyqp5aTbY2IgcnrgPucwR0+uVegblVcROnerD6j2YIOGLw+44zMk2orCYmoS/T3dd6t/Hdj1sE66djSqbJdEpK9RP0IuJKddkbXqSxDpyUc7maXhYT9DpLRxn87npbgz6TGu0LdW8yarvDOL8CFCh3x/pQMMIhjQrcI0bIXPgDQjNSBMsFqM8LB1qJLodvhVGSi5ELmYCTQI1uPhyqHhFnvpQexBJDkAhisxLg9+foO2giqlwzrEigLJ9SlMoBHoSu8Ts2BcTBRNPAr4CQV5Jx4UNgMP1povUnGiWXWqPTkglOcbZs2zn6DaIA5glTcXEBeYe2GwhTAvOnX65GJghQNb3tauHzk1+DdrNARu2FdkO/Q/aEgnwZ0F+wg/4OxpAtjbB2jFxCfHBEZE1SyL+LhlxYqnY0ss6f9p5Of/wxKs6fzt0FvH03dlVF3sP80R59QQles0F61cL2NM6MFYNgiiAAgs9aRjrOU6HWDwHFf/0VUrp0CNsAUJMsowOQSpuIEvNaeFBkTKGnpQVkpWjjrp1VSjEnJcEQOxZkKuo6o99Ph4OArZI8UmdQMCFZK0LIXktuEAFWCrQ20SZljhxYuZWmWKWwNphXYj8CluX7LGGEyFGyCClKA5uxfgncUj77TguSSCDEYBk1BvwJU0+auzPyD7SWmn3iiBji6Bnj9khylBSOr6JamPF1pBjEIihyc7FMBNHUoj5hdud8iHyT6MIysMmyHIRmA6+GbdKZCagqaa4Je4G7Wo4T9Avz5ZLSdH+2WoqeI0LM7AwwDQo7YhAlb5udTtHWABlwGlE3mqDLwk8l/OGCAOJz6gZ8Jm4oPQLeGyV6SZZMvG5SkqyPFJnVNNxu03PBFWPMPQAANvBB0mZhbFhU3YcIz2qsLZcEDjqiBp2O/glso8jIMe4WU3fp0TKIOYD1m8hP9hPCzBJ8jBtgZStDy9Org1WbYwZ3yAebRmZueKW5atoQWU2HlhDFgw2SEcan7sS29kh31fapYuhotnc0hfOn95czpOMlXdoyWGMoVxioojeWFuZQw3ZYTJGRMrzL0G+AqPphfZjMeZEUyxHNLdXxEgfXJ0FHJsKVibjoBhFHX64manb9nwASw1HQK+QGMRIcdnm65Fa5ukCNxryNNmOAHTpFGGHDxUxWxlZiYLzGYiU5l1bmy0p+D0AvZGybhgCkh5KK0CD+kM2UMrqdNqdHQnY3XD+lOIcklvdPw/9zaI2/yDyewNY9UoLR0pKJqw1UtRkxRgk0mD0apusQ1nib/Lu1MmcEdZSh7c0AKplPPcM4nZn7CU7c64whob4HZjc9HdpyDjTZ6eTBH1l5HD08vFTM48E47yEn7+4TvwQ7iZ7Yxh68d+bqZ7WiTGA5Bgzmm3sVM9cQ4Mhu6F2YvZlBB01UfFDlNTEIHbwHTv9vEmKKIc4Wtc5UvUrsSXWaKx9ctf4qcJikvea3ytk0ekBkH0b1EeAErlZMi8H00WyxM03Akk3onSRyNU4xDtiFW0LgHNx5gYtfGQNMe02mAnCfrCjM1l/gCpKh7ec4aoHAtU0KCXZlEDjiA+6wlGi4BLs29MgEaCgzFoo53BTBtZywMc4n0EE4lMt5BqynLCdTDpiyCVzgagtPqktr6vBPTEN8WO16aQWuMsQRlhFRbhRyCDNkjPpbzbsO+F3KVfNH1TYaY4IdhEBWKOTQrtKGpMOMClJ2xHSByKowNLSp/droGcLDgHyG596lBIPIsgHtkonsTsrcDvIwVGlySoM54EQgwmhRikWi2c73QTBkokbCmPcjnF3OMFpGVywzUsa+VGIfHCDWa0h2CiJoa0EUqb8z/9BxBg/Hu2tzOQAPrkigGDHmF5tVZ5TVm2eBj0Ua1WibJkfQZQxipP1mCW9jaMnRGpDedg93g4WAoBuT81icIJmbwCeQWUWq+8M0sWdI0UqrDhbcgWaDnp0kixrruf5VWS6Yog+aADdDFgnLHSAtRggFOY3UqJDBUjGBUcpAbnJdSqdLB8WMbt6GKpttD95wOxATcqilYprt6mQ72r59HUTBprzHPdhhMJGgCgBEwVE0HesDTGiVO86AGYzvTGj4mlofD6oSPuEpaPSjAmbfnqYgXgLYxyc9TARCygzdTdENvmgvuqQL0Sc5Ut3ZT4SaVXFleQMm2N6dA8EGDQmOcr1SKazaMzacMBxu2Cxml0yvNDmBeaAdw4QhNMbS70djga1CYfirVJAuH8fqWQ+GUylQ0imaurNdncJVzFdfdwrZ13DrJIlnp1ZsJJjssR5ok+dnF5FYUOihmYZowyaLpyWoha+k5RqMVB/eavFYiWdFpy7NECGvQwkn7T3tLPafM+YTEF3/GoGHlTaQUgIc6ZPfdtDEUL0Oo8Gh60OG4r5IsLHRiKNKzbb4BiKV7mUIpUxucnBIEA42B3sIRMS4HZglEmyGBlmcqRjcOaGAb0HXnIAOQIL6cFXNqpI88HXAXGKQZI+ooI4hWg1Z5WVyEq3eSG89cQsYNusa08HsGLx7NZo4CdZCsZBr8Woqsr0kqL4c6SNZU2q2mq7+sB9Bw8JBWWLD8lE/YAuhtL0BUbPZ3IYDIoCepwbkzkkrIfZ40ZjokS0wAZp5G/URj0XoAcBK0AUGL6LriQCLi88nogJVwZ4TgoEpGg1TWNQVyV2CTzJBvjviNc0c9ZaWayGiDTzhHWqeC00320UUnK6TtPQi7mkNa9gMTFhktiBPZjcddDkPvzvgHALYOachscDDjjXmILTXXVyTZq1CEw5YKQMmyh+YYlQ2WZl2bR3xBs05rIqBM50boEzyDSq5KMbIfsllKNOHIODb386us80L7wWDEmStSLLLOsI5LWIBTeVQirdK/Z+B6Jgk31hiOVIvr6INNO7gEIUAZjnc7DBlT9zqlh+rn4wQRKlBPMoAGY4wdZ/AJqzoplnq4XcF7qjHF3pKEQU/TgyujOYdngbiVxpsYjrNYGQWSxAzATAbpE9O4jpxv0djuks8LeNgWjkQCZ+3yUcyGlA3FOaQZwhk8vGyKjXKlVjdGinPHt0rMVXeuARMrgm8cJgpZPI8fTNAlNMA5WixzmpnZ2uE9A3ewunnVeikiZyZAgOJzbEq00tKlF7hUP1SehHopUPSsMQXZYjKJiYjcmEDuqhkL+ecJgz9tn9PmGLNisobWUwwHNNBpU6DDM+a5r0GGYN24oGaVxZs4CNY+0zEeVJLyuY3eH4x1h6cFetzlPZniJsCegQvgsig+JYuMJMUKix2NLXYUX0adwSYmTwLOXZeP1ZmH7xKObLIyTv6Zd7UEhrQkN5tNYRnUCkzUXD6ZFItZQ8FSiGKz7AqDXFAhJpYCNns6Di1Gy3RYnhcn/7CpD45oUPNmx22iWLvQrtJJXTRMlUv0rNIpMMkyNDW7/GWS4a0QykMElF2mB36HshA+ZJombAEEJmpKRFqu1U7Skj3BSAWEAefc2bOUGOMHNHVOy5U0ItFNVAQy3KG3SR4yQgIondyU1eQv5J+CDIFqt4aPYl5fVg+uXyYUQtXnXNkKpdhgqKnWrBtNTVJWMTwDH+ksdfB5mLH19toC4sjqt6pBGU4vv55gmkRTgVWKhp3YsMUxXCSchMK0eqY4FhfGkZXnMUl1owls25C8CEbOpUFDffdhhyw1xZgJ4tE1n0c9G+LJSv+/7IVbgYr8AaaNSXKOiiUxTSsoAikXLyYztLIDjNBOaEuHegHzA5GBPkuYFudVwD3EdHvS/aur0S/6fMGcBElwMT/fwR00GKMK4+CN64lNizl6jUp1dxGaVAUUaEyzXmGXsUO/CSC1AJO2NccrBuKKcddRofeJ1hR5Y5k9xXwtuyminWAiy1cIiIzLCtKv2JsCv5VBzNn1SVccReBmMfRtGBQh/ZrQr0UihxjZrJPislmhsFeY7mqh7QDJOMmzHNljF0nKOarB2gPld/Nj3Qbt18yml8VspvoO+x6xYYzomI6BCh6elWpogm98OlY3iIwZu8Fgt+z6amHKiobqDltXs/ScxDIExywC6Ub39gvMzJEfKPQCm30KoOEkJQv0xEEPgkoADiaaYB2EtMhLoduf1u+yNDfEXqp/YcQwMwSYzuVqvMeaYeEsy7Mz8WE+BPEcg6KjFdXSfwEfWqjyyVFzlVNG3Xa6SqOv3bIb0QiZGQobKQ/HmNSOE38UdaZoAvXl6CWG7fSo2rnh6wpnJsR/kRFvpsBP4FfWSCQBUrKOX+RPyE0VJlkm1znWAJvK3DD4fUxHrhQYcoZqY5+A031igC/paOLO5MavS51r/zMksjRcuMivHmLGtNR/5FwsLp4G/awFkDpPBlsC5AundwAGSYtNjjAmMnpyPOUGAj1GJ0hopbryXlBuAO+N0SF9cc1TiiXo/CachsfDduuidIO6nSkeVplmWoQ7iFSiH4sIZhobEFryTQ7ljSWHFwPlw0gEy0CGgtIegcqTQnDbRB8K3GM1TIQlsMY1CHIaequNjgQP3muiaj4AmlrCHQC2M+q1a/1ENxwOLJDQBcp1OzimrDFkKwhnHHIbbhR9KNdU0aQzj5RiZBxB5eHvWK3P4KxMPWDC0+DbkWhRl35U5Kk9sPTlCoqAG6bw5R0eOtgUoxOgxvB6X7aiBDyoLjJv1hwoeoWhCWTI++LwwIqNB914MneAjf00dliM2E9AGDKS5pjC0jhh0eXe1Y9qmmh++scYdoHfZ3MOvcToykHE73OocMINuBLwO7w670DXO2XTYLEz+6pId2mMMYuhKKYUniLpURb6y1O1Det4vYSRMn7BVOHCY/wjHT6gvB4duQBgZWq0lG+16IJ6CF9bbiLVSwt0X0B35Zj3NktxxLsdBOIKjVGGXcBCi+BZGjW6Ahk16r5KLaIA2WMglKkHyplBTwbL4VLsnh5nV8a/NGan242S2FHtGdHk7cwUzROVAE1GoFVnUwhPwvDJ7aB1xLL5Su8o2iTeRbW4sYBrNLkU8DKxAjY4lC8ru1YDPOLXf1JdzzHqww+FqMG3xLCbxXFex0yYddAxXTgDdhQtrFQ0buUgDHGLj37StrKwjLuxWTQEmfUvESbtf1WCkoBMLFhKHVXPqkHnUnQiMWnFLT5dsPJ85CBUF3OsNOOtcruYS4GvtvtNSMwZr0Wn4qBtym4o4wZ7pFqLi3hDR0E/ENwfNt0PWlXBwRLDW5sFwBY6kODtpNBsUPHAECKEkkEBU+uzYjk4KhoTni3l0yHH0KAS/LzsqTf9Cxx7PUhljUAje7TLRfMCNL0WCYF4xjAikBMuLbcc4OPU5wzwcGlJWVMqLRkswOp7cSreZAaoS03iE6luSBkb4xFLdeyBDdLYwNTSNFQtCQR4uiODeRpu98m2KIKiWX+FZdLUuGEuDb4IuEAZYmEdZApsGV58+ECthgR0jctPhdsUxQqp9gg5GNllydYOlEzk9SVyQvDrOm+uAz6ErAR6JM8DQL6BQXmdFI0riYXLHXXmVO3U2EoXILqHLkxX5IwZTFr5eoS/7t8SOhfKMDGFrxkZoa8QfjmaWpkbYxELUjWyoAw27HKRnWsiaQNJuh7bcSzuXGs+AgsAz6I5yzTrUVtfYFns7iw1wPTRVxqIfscpgA9LnCMfTqfKmmZ+Hrg/zDvNf7XCwUxBXJpXIuhw5xDY0e0BV8PaXNOHIh7GgBAYgSqzjZXSo1CrJmao2o4bEl3cjZ1VEL243OmBU6Rob83BbO3bGSrgFpQJuXbT1Q0cgJS9QkTQp65dUaY0MTTmSM3tENrwv5Qg72utRS+6Dc9o110BqkLCYKr8NQjfmTlMUsjlr+jHwoNjMHDtDq6GiYADmRkOdcz36M8tXgFIbz6gu7elW/wNxmlOrJpngMmJt8KNyqXs8xpkNxt3UilCi7Lm0xwO9oYgDN7hBojaWQWA+IDjBj6+gaZCzkD/jv6VLKDRN/JzIIpFgQNjN4YOup/ZE8AHUkcOJtEg7wqqjYlPYFcbGRvQMygWcpN61gNeANAweGEc87PMQgOhAl0pG+NKSqQpE3WFwBub8AawK7RxbbLVrqoA+2vGZ6chjiY3y/IFoSgEiFBK+/wSGMJ1Bc0y5Dt4uhOaVOW16t+dApOTk5G9prCZlkQneMAjmCMvV8j6OA1KLvjyyEVB72j8thZuIwRvMSLNOU49YuXO9I/uOanoDqYXA3Cma7BZga4vC8Ufohs7mW5do1WzM5zQD3FlKHKAyejZK7YNE+5fYPaQ2TfLPCxFQxYCpo2FkqYbZ7WvkRhMVKDgqvRKOnQvfKtrC3qrMuwgSgj+cX5hrFgYJuT2MDO+iKxfTJCxHCCAvJgFFhyRDhHHyM4YVzkjTWAGI0FdvknOuiUajU70sgaIxBJ2MTSWyi0EG59om08HHV/8RKbBSTvb3m25KwAXmVznHHUQAQxPa8FB5YrXIKYLDKWhF7udtmPJuvHJoCdjYJrZmRVwvraa+sIkhnSPVnJe5ReCwnJA+vANgmixwb9vXhcROnIjQNmdjBZi+B9thlpBUDXG/rVwtyazwhQ3o2LsXuM+QHMaQxUt/ijaEqJi5+ZehPxC7Yr5rbbzPwfcNzCyjqR9wAwCqW401DtovGJM0m+VnvFabfGxBZgLWrbFTTQrkHZmwCzQ8tFv4pJLazAcoqnLJ+o6sNfAHwWQ31XTo8UAPt95hPHbKE9htb636m9cKxhqmm7lBdQzs0mdgiHtu0CKgSZ05eyMN0EOkNF7ydHOL9gTmDPB07jhOQyzYzyaXqcAunRYhsHhoA9r6rgZoYsRCvBwQl3ZHJKC7DsVQpmNshI7ePoShcEYVJIrrkzJTJyF3tOldOaeOcZ/HR/GjQW5bnMtsOUwoDZDgeBJGT4YuR3gVwhvY1iWRRGx9DI/DNnJ74fHnhvsfoiRFPQ3yVNyrJkI/kDdMGSmu3WiFQoWOQU4+PvdKZwOiJAZZa1Q1bFkUIm8ju48KOebEWVSt52WOYD5zAm0qUp4b1GhC2wVLq3a4SJsdJcyZ8nx49OuWiO61TL5GV3UiGl9B26YDOCmkylm6BcBJqMkvXuIq8BowuAycSE7RS9a0SAXJJSwqMQYBUz2O9kJ55CmsU3E4EwccE7YSka3xahlW/csLQZXR0Gf/KI1oUG5AdUM+RDH6MF0wMIkLgj2mlPmCXY1mW65lTov2QWmkFYdydVGjH21hQJQ8VXnTw+brC6Xp4wDoWAjQLRWSdDoQQ6oOLWbDsyt1PNBgRU96DYFA/EJaMeFC36ExwqpGezPcvAt5iMTmbH6GWIJa/MkxzI30Nlb94Xh9iUYeGmvqwZLAJ/EGpRh0vy035u1545rYEfpxLWuI6Rm9FXDfeEI6uWaSJfJK0oSu24z6uVAJYXCD0NZutE7oDeZyqJjh312XS46+aw7QIZoL/TsYrjWOM+KfYbDztegS4QhPPqCLAcndSREb4nRrFadLbAF9sSUN8azOBVNlxWDw+GPcg0pDFIImnQQ9vI57E61Upi4yekbniO+hL/ZYEiCDc+uP82nI0Hb1SyMI9OPwwBfYB/kO9z6gyFL8BgxzdOdqQW2asanEK7bYbsUQErMraag5IjoroWq5HXFSrr+0ihorsHdxRCf5HLQ0qiVgbh6OQZd2WQxA4Ehl6s1xgg59PZohMoyEEBpPeghbrXCFD8WR20sRxruU4WkFFeKQ/lThGFq/KRd2g45Zwzj5KSmYacpzGNaCDa4LqViHH5Sp5SqAM8mi02R9KdoAoL5YSaH8ZeeXJiFVPHRpnM78BD6wnYCCWeAso0zdaho3WQ2j3E68ZAyM6M6AzUs69XCfDMCI+oZi0NmLeA95MPkGKBbbQe8XgQDQeWfqWDmmwxiKgsFb/o8LGHhjLGiTA+W4XcpE/D6KaJ2HSsTamJNcM6lyZi8kGx3SSO7uRaYoSGKdToq5gMEVXVz/n6M42bgRzuiYt3OE2EH5b+c6WGSboDRccrA7DMt1X0z8klMkFlJNTtvVxsOlaoirm7jtwq+PjHbPjEs0J66QXIQUhwo1W0NZg1gs84w/qmxzuSARpBJg8dmFJpHL1FBz1Q96XE0ekynKcGMNuCTtzifTg+q4lykzhSytZ0dXnjYvCHUd/eE7hZCOEqOJrUkWarcLEjmpHbdbtIl0gK0TV+NJbIodJ5RqJLHZ8KMgC/gZgTZFp1qLmEVo60ZydJpRDSnU8c8GvlneDuW8COvjS65tQV3nB1YRn4ww/VEtcQiQqADlPsCdaIjsa80VDUJfKYMlB2TbEyClvqKCmo0lto82AojfwE9o/jA5RWZBxIUlym7xaf9JwiM8bSjqdm8FMTdswUlUvIsodBXTwh/FTzZ1l+K/Z30FkWwKGuadxqZlOqk8dv6GQ2aq8JERyh3F4PXH2BSOjWJhXqqAzeSeyb1itsizexGCCyHxvy3GZhBa+1iKgyQ7RkWyvKIQMdHI2vEJHBJuAVYmYKnoBDWGzeYAV3KnA9aeiC8clqiw03DyFt0hKndFJgHgMrCPKAgyoVP1D8TeDTkZHWzEuXmBrgKuKwd+dyYApeYAM8QAeicrXkitbJEpINKtVmzFQZ9GizoAbRhNo1senutVLMneoG+KjixtFraVjsl9Tj2ls4jbK/b0hg7yyRbWlac8wwHZqXleSbLsEdESiMlUgobral/FkYZjxgzQ1Ru83uwbqxzrBFCe3LZman7MBiFPknn6LZEwlTRVQASrTqNtHaQoSnIstNj6A3sMWmkdjc6Cr8sMYeOaa7JlV/Y0AGHyIyZ29bRZZxnpfxzBO+4bWIKXYwqYbSka5WQiSAenxAouQoA4sQ0oJnBDLpGAeZ2wKvGhCemktiW25hDkWgsAAe+/5iKHEAYrsGTbDuz54E+W6bbddhFXeULdCOkeivDGmn9dApqCVaEaH6pzpHI+njJQb8rAwE/utNlDWwf85l1Qly/P3O7IgcDkUbxczNo/KFFFCDm9MjeBLFpoom62eIX02gYhJAH/EHrJwj+0qAEBO5ndeXRTm82jEwrNje7ua+02/8uZaLnnDjujchAq2XLCmswBa9477ZLjHkBU4FQo6zkMlY08BOxaY8WSqVG5wdQHypEemnBhzloBRMQaBWDFYncoXHO5D1Ef4iUWUxEcHpvwL+8xHslN+KhHTKUpiu3pL7gzj7+KA2/MiRIqtPlILCB/cjtKtaR0uGfNEdjxMlEfWL+ph5VnvEqIbSNZ/PITx4cUsOWKjKsx9H1RFuXZYDVMw4MdDu66GahaHdntlvUVcyTBrdih+ylca7cjtKgGtxBK+M4qjN6TKLTxzO4jpJTUvA0M0MbvhtmLVi6gQIL3pj03IakuByglAOwr0mixbU/SPf+XghHZiQFCUMdQTwZl4ZPwVgqi5tAF9nY7KBIC16MyDF1d/7oOyZzAFgfKl4bGB83npYi2LbcQS2wMTI1jhmX9q46exJrmG21VeSjjAQyU3Iu80jA7/BxEsGqiJdBDvAuOXdiQQSkUyBBpa/JwasjgKbnnMytLapqnwr8STHgz1n0DGGvNpUph522DXes5oKTBm4ZXib3Tl1GagaFGsUNZ/sVcigkVrA1AbMajwYzTTO3vA+4xkwQD36LtteGRVXgY2uAJHlgGdT3oUcyqx/wocq4OEabOqoxec9AH+BHiHEZRvqD4SwBOqKw7DZfclrgTQ2mcBNvdjiJZHiYrDSY1WxzGPhzRIeUqh0qDFIqyFpBeoMMtpFpTD4Af9mLo1GIhSroJzYUwKQ5pz1HM2OHIAH2BedN638XxlQDsLcqlWoaJLQQmw9HIsFswcpUN0AAEn87KLoGbSf+bF5c4/nASs8FMMmAksqP2ZnkJBI9p83Ny2RiaYaYhzCGPtX9t2r6KgaV2R+RHXO/zzcbozLo0Hd99wfaE2X3GGgxixt/QWlHLzQCgdu72VNoS6NBljH1jvRAt2wkMRYogIsbxhTd2eCT6OfSIbBo72BipP1nLvabsJpnpvWSwJif4DohV46eSAH1d7IHchxIAUVwFx1E0VvGLGamuX2nryGhmhvMVS7FDPfzJB3J+D3jSKxApAfURWFMLEM+2pNMIM7RutqJylLeMUsbilEXvxNtgfCX2u8Mi7Pncy2kuKOkpDhin7OyQ8GLKh3QB3XH7ibjCC5sofrPU1g3CvprvVcBJO7omGYQUco3xJHygPwS08Q79beJ1+Fne/WA8eGagFW3j0oheXZ5kxA279+VzC0VjnXCb5g83o6BvpTegxLLcqZG1wrNzvDJ2xB6gWGB0Tg5ZjnZ5FWKGaUx9Mi13CIpiZm1ma4DO3Hn0Jh3Sg6DPGOzhMEdnBfnsy528mYPLybnUcORdb3+HGg6/1AlmXFOzjjSL0XjEEkMTxcYaGDOdMPjN+qkdB2YQUYKSJGZDrF71GAr0F4AgGXSa3b5fGYCky+Qlk/B0OmgvbQOYmLQSg44UhieUDtwmODns8heObcNilZAyw65AlZaWoFhk5XjZplMM1QdTI9s1JVs5aHQXT7g6ljcnGHpZJzFTGU6IiybqySrVWjmm573DJj2LCPR9eDD4ET1lqmdlEcdqQgIK+kECoTRfGZpLbSR5F5iaJEve8ljk0kiVacldfAa2rlibi+w0ezSqnQTBJtcjsc10SKTo3sAu1fwK67m6pw5wndosKWqIvnj/IkY50HkJZXh8q2dSeFQPFK3dfgPnWzGdAc1ymK9GZJTeS7RE5AoYZmEG5WAGI9ExJ9dDpnSWXAgKzaoLosAsCDGz/bZcBRdbpCKDGG8oj0tgpvTC/4khlSQGXKwS9xTkhKwSyc0ttlQegY7hTuYkSzBZD1Ec3xlPgyt6tamU7OblCMDyG+eFLArtasmWWequlsoBn1BtFZTpHGtm0gvu047JNtu85eg64PBaaFv2GQm1sNKMQq2FxjPHGADSAVcK4qMKAqbb4bNeVeKdfQMmRQPTGN0bDl0LqGx3KgxcAFkPOyQXoInWhLGaHDWuygKFsRWow9bX7AdBHJ7igIOCd8yXM+wrH9MXobhrqVPjJ0ZKdQIj7BYauvAHEN70cjkOS7KmKpL9pSp70Wusm05xLYy1Jel7Z7MIuin5U+VCsOkzeLCo0B7F+NgXcMe+nsyJKiBXTGqr0FQoJNPakSRrzvRoaPhJErkRpxDHzINYIE+F09zRdn+w1y/85Lx/KB25mMbJMQs90y3ay4M8nNQMZgYmXtfg5jJZNsC2ySpptJI0t+PUGRwoDSE/iJ1N9mXfFMOVvsU/RkOH13JzUTHr/T/NPkm/ORotejH4RrGcYSPs8i/TKQRZH+dl1UDVaUgca12WnG0TU+meDEY08JrpFMYHVkYe8UkLZtDi4kmSwyeSe6cyB+kdCuPFT6LZoBAAFRzJDtYfuPhxoikmKeB+nO9nfnY5UY1iGSXa1usMVRlYX5ipIZtqwszt+nJgrbY0ZsWOYAxfoTRR+8U71ZTOkpM7xTYw2r79WGCYyZcZdqskabEjE8o6+R0dVBQ7uAxhVQuDGkxmjOcKw4KoaMjYWJzWD0A/IzcYp54pGjc4kOXW+Sf4XVYZoUC+X6AtZh1utgZ6WtfsGUJ7kDnn0ArXfuMFA5hk8uIwxgGEW1Ak90opQPzedhTeliKM1BMT1QsoPgGWJNviWdKiJ6Srq2l28kXhcOUO+vPNCH3TthF/PJGwtHgO+hJybic0rpBhmoC6z7gDqrkbnXuTGqq1ANAOXKDkJFVTwTLzBOy4XAbuyFFEOyRXJd+AjfhWo3GYULUOY60LsM1Y5ZDcJBquYhvbX9v1abqnivM+zQHOacruNdpBV3IDrngAEIPKEAGgykdESKk2sxsHjFwz/lnk0bkhVhdDldzNAvUrWLEIzTU3XHvr4wuZcggjREjuabVcmBeqxQK82P1cr5yQWELgskGz5wF9TGOkWmUMF25ySsVm9sijSgdsLpJizTrjx4IYcZkOJkuR3SVxASHzqE2It/aSQ52glkLLYN/XFYU1ok1gDbm+AfskTIsE24dIcc8Yhwm00GqG2aEd47CbzrToMxM2bzR3Q1BBbkB2KmclYKxuQBmJ8FkpF+eBJKCcya11k1fiLzDUJBaqArXnDvSx4aopp1dcOds+xDZeFrBe9C/e4LHShooKJvlSFtOiRTDybSigE9dsaNHkw8guMZApU8QVg96AvWvw/VZxYT5wN5L8nN3O0UGp8pKwTwCV4fzPJYUpBsKIvRF2ij33woW4k7Njs6T1Y14J4k/l1VqdQ1mOOekwFuTA3YNo7+Dl4wCrTpFubzaUTYx/QA2LwYjZgfChPqKmn3jBOic+B6iSls3w6GYKuDeiYGQhBLaWPx0S6y84HRn+It8Yogu17RS5qWMtLim+RwNsUw+qCnOgTU+sEwOxqsv2ZawgLdJocuiQxdSTF1IkiIVpcOiPSjT5rVhWZp6UNCalBxtaSJHfwAEVI5mEmZ3qsDMfFLo47AQHe7MGWQ2EAsbd67QpUFOhpifNg3LFxKoQkadYq9sj3cD+hwOih7aJDDTkd1gDaio46FtB2bB1gUMqMTfHNLJiAzwWlH7cEx29Mfo3TPTtXGSXKIVdAlOwmhkBquJDUE3TGZIBfa8duvO0aGTOt3gEMvYqbQ5Jg5RY55+kCVc/QyV0D4RnTiHgrQoiTHwQiuazU55njmw2mDGbEco3eiJ6geSP+zYI0VdMbpVWp0Ssh+3ikNHp2e0lDgnEaAYLbaEx54PlM6PQqIzSKbdjHcGeVKzGFDgM5vWeSl0D/4eWvWA9+B0gFyBSnI3Psf1lCmjxbuR7nYvhawwoIaBx8NOvgkG/iWGyPUKzYAVlQ4FETKwmEhe5ryPGC4OgIPsmPt1+OTpkAKx5RIZJAYlJ1I/AHbdlJgCvx2T4wNqMewryUcNwsMGY/hiJz7q45JigGdlFr0D67cDxPfaK+jZ8jSQkBJIpFroVFnlWFkyCoiNE31s8r3eV2U22YqYqHFM4tIhaSfe0UBcgoRbqs2S0UpFQXk4g6NzcULF5zG4O1hgLL5KEjCRP9gTqFDY1HCSO7lARE9MZbslaGsoTD2c2gZbfu6QIRDLUewwVSGGcgeteo48nvG9qMswmBD+M3mffiI81RDmPAd/sTOTcT7gF+j6aDHahx6AEfofey6LYVX6OoOxnF7a5swf0dxQlCQZgzfZdWkFBj8FR5seo9u3KoQIs0WOinkRdqfgt6SeDmGZTbbjTeB7JAAFBojIzD/djjbNARrXDpQie99iSEl1yYQlIDGwRU267oxKUSxPp468zklu0nG21EMckEGnELhq80Y0NKHMqeyvTvcdYkgFXDT0Hn6KhWSi0Vec+mxhNiiShXkScEtbEmFZCWkuUL2jutzgxJOHNyIFjbB7o0mZQfFW0WO6PsYJs3U5phErs9mMgizU14+tP2ARnIGodL2tzBSQ5FmKvq4wF1LqHi6ty3Zm8kHEvBIlp0r0oHR04JzSpOjjDdL2VdYuM53GIqphAMGVyagdw/a7yOOjDCIXCaYuU2KhNbKsZDlrpKashGb45xmiUuH93X97Rk7BYxhU21CxOENGBIEiWRl2N30YVQHWJdyOdVo/ssREi1Xx/tA/3SwbBfGwGjHEjNHhRvLpfClhbGKAp/F5mORVo4lrgdauuoMP08ERq8pQ0NXRDwf6XU4EPE2LfH4bxxHFQDkY9KBO64d7KqvHBnCs3KEaBxlH8NzxT6d6FojtB7PhanB9W1eKVmdaaaG1K27qFK9VYNZCr61OBCEOIdO1BMCmuW57Gtqkd1FAOBTJpNHofcm0EhGlrLahbuLJ06bBkOdPjBxEo9JMETPM3a/DhAIKhi8Wk0Tq4CsztCAFZlqHrWIgtRwe5r3KP3TzYyV9irOLotMj8M0G8oBA5UJWaDddZogp6wz9yzB66u08pR4MUKUDLHb4lnQ4lm6oXTKZ0Zhy1N8SnZSK4u0QuwoMC9ZRfhoX0QWx0N41EuIKAbJlPiTWG/SSVttKJCcOl4TUKSREbkIPzONgIKhHIX/WiwQtTEhAF+9qKmILc3cgyKbA2zwfC2luvVZjQN7qJnge6KGApnCl69SDmzqYegbkwDnrog3GM0UrW46JVtmyN8c0Tqk82KOH63kFXIEqoRjJ1FEfxEqaqPN3EPYWhsM8SuIHfD7XcxzDd5gYThyXulORFFrWoI6JubzOkQPTxTTaBTYcO7kYfnqmrC5ghswpYRY2ri7BQ3FQReANDKNkoAhZYYsrGgxzQTuNWdyEFGiJq6S5hhs33CEhKpNySA1vxlI7HXmJG8E2FEeOi0dmf6XhV/ZWb4WqsL4Erm4mNZq6o34beMcw/NDOlF1juNzTsi4TZDKRnqPHB2a+RkJ2guG2iVZYJGMScYSQNtFChWEGJJpRrpbvNnH49e8yVNbl0NFfZ1DRjGCZt9ErzTSVKY/gmS0ZTJ/HPkYpKUefkKPCvQ753Pqay9wzOjQxCSVQFrgz1pLRjaCDmo+Uhs4+gS6hhRRkowMNtENwMkd5TwfVHqkBhSx2mczVNNtfD3pxRpushIfZwsrSQXoRPZHJnDqCJ2zECvY6R43FyJRcs+M4ZKmAWRyzWj8GfMxkxJcyCcF5SPRbEr2DFTM1e7Kx1PUYSAkTj5/HO0kvUI2Fb9OsKHiiGM+mp1i6UZIK9GdMi5FzpCAt+25H8PYzBgLQZ+IkmoSVdFnv1AN9JZzB6gHTD4yHBSwxbDDiGB7EOdtt9iAaHoFGs2Q4LLs2aWGKmvPOxgEORWqB0lS1m4UKou+YrbMEiaoDANJLuKTjCLECMcG+pDDlF7aq6MrOroszJucSF8LvlqtrPGOrAJfRJ1Dp0rQAyMkY4gR5SafU75JCCYIPRnskJrSYBaAAK6U36aSwNXsAtXJOoy+646Q4c1YZgQGBDhlBh8IiwYhAd6ZRuJsCvYYRhBRb4CWdQgUEpD0qPZKX5vRxnjHNrcXsWhfCDViA6OeEydbZSDke0riFuZiwHBnvVK8PCoKvrtDDutdnVgu08TQ80/jgkl01en0pstAV7RtkCnhyOWiTcUxOpIM9QSaa0qXn7NJqDrQOAyxdM9aMaI9pn2Q63ayjogg2XH146Lhgp0gS4naG8h57b60r+yEOw6NQ5BkyExEUZHYxrNRPy0QcgCWBtpvfX6ObkliS4MzyVnV8A74FK5TN31AEyTMG9jAZ1+UaGIjZmJquI2hiIzQPLy6Xh/mU0yH/KTDKnJJw4LX81PAVFA5EsfCHOWeWFNrA6ZpB2OlTqCmAx2Ags6VOibnRdKYV8I2u8yGIu2jix6NZpIMstinkKSaJVltgZTBrZapeX2PMhlPTnQoMUQrkEK6bKTj0Z6/Atkii2mxPNJYybBLH11SYgrCQ/mAEahSTGQGtmtFnUAgolvPNPFAu40pGftQpP3pJepBvBsuZLxuRkUeu5QXYGXTgupD+QRuwR9ZlvQzFICAz0/bn0YZ8AoqvBEnWTaOHsUjxrjReeqIpWOsy4M6IkB1ir4GBZgrVCmrEUgfRy0AjC0fa4WUVTbX4uBfSM24mNL18DNtDYVQ7FQ/fl1rxpL7dXAWDuANsRYNGgWYqe1cZKobSUmIcjsC/wwgl7580ax82N6Tf11bK8sPh300zHSlpphKz/oHysAcFvCLkRS48y7hIfFSCZsQDpgB16pYK+mBY8koSQC9UdB1yfLOgQXx9pI7JdGp4Iw3FVznOubHJ6xSYAixKocbrhJRGP/oTV9ioHLCrrwp14cbgDLr0LY1UMrxBs5Zw0W3+FEyfzMkEheg5ZTvA00S/diVS8ievM4eSW06HP+4wwkASzgFNrlyv3S8TCFaKnhbrzYEWXOhhS9rS4lKIneEtk0HXU9+3s8VA/sjd1TPQ+2VNhIwoawTTia2wLo1B0PRlL5CGOgeRxnFqzPTJ8PvOQ+IpCaKpRrgiH76MfpxZ0AO4hGUQkYMGBjEPFKrJNjZme4FrStF/4ECdwNQHQTTOcX3PLraBVcuH4NCX7SXd7QdsKiwliRj0/D7bRFsmCUmKd+aUpIgNF+BsddTqUAjExjBWKpbBpjoaNpQ+ujnTIcUAa+t0EUY1/E3SaBaBygGJAQ4L4zvcW8FNHIleOEuHQcCUQwoJpY2yTDdtYURTPEMaQbdZ9NVyiMnQQPvqtEPQcFBG4MogpJFGcfqEObTkRuFDc/0UCiNXaILRUNJBJuKLESstpl/K3XSt5owOaTBmMUKUkTQuOJEXFW1UKWDqVvjWGkWTTIbMNT7AMgXuvOL4U5mwcdTk/WV8GQXsLCQsE1SgU/AbDj8jmUQ/w93IS7r2SHkSFJdpKoDDwc3sGWjzynx36nyLMxJkPBSe0HY3V8mKH08efLHA1SIz7iL+2ei6igYAWzeNSQpAABTw0AJgBbXTScZEGLpTPUyW4uqEvWJUF/GvEJs2EL1oVYfoLuFyrrCmMHE+m5eiFj2jiYv6FWtmfn/oC0uZivkJ5N1EU20QqWF68pnxZxtZC82+jEDUQ3jafb0OcWQb3TLU43ZF60GG1hzv/BMBt/5NSjXA/9bvKYHuygon8+omBMAWHBC0GN1kw/gqN+HIvEQ4293MeVrYoW6bEaEVj6nkoMhOVuLJbLo05MziyxUInWg9sr48AyxSTDeTY+NUVTmQuW/hTC42kpWDTsJJT8lGNQOF6AdaSGNMKGN0LFM72SudJ12k7dC1XTL0gjoHeBGCNPtOeciUJ7AA3eAGZE+lxwal8xX+COefSuhGpe91IaSwzf7wpJNHOsI1repToDWj60Hqx+FEC5QocObJBJB2cDwTdhwIXIolDckneFeXtKGeh7MLVZqjqgtyasJwqiAQu9nKZpWKIRxkMoGb5gfWuIMPA2ss4+CUiJwy+gwgoCIlZculIBnoykhBAeRqwNxuoQyXp97KDUNCM7CNk7Y8gPQ2HI/y28pE+cWRRlTAzssoZKwz8EPPABgjqFYYk9wAskL3aqYfk5miduBvJXQnCT2lH7IDSa1BYw3iCx5r7xUOwAwJXEHTBrikMRBiCH9pH5tGgxa4qugca/DaFDvXi7sC/VgUapOPsUlbWrejf7Uz7sO1xcSMCQYRQSduLWjUVGWWkX2LkE3h7IGh7+C4LYm0/PxC7A5fiLNK5XBEO8o3YJesUwpHaK4QJXbPRJHkP9LeD/SERI+VKPpFqWoFL7untFzGGlMKMxxMbqPKIXKADc88rJM50onMHqSIMKB5vv2AUCZmIxASulBj0uEcPIuLM3VNH9O5yBpJXXgp7QzFlAWBmNny31DUWye4G4r1LhtAVmUNiJ50pW0wJvuKN7bAumtbbACFNqYNK2o0PnaKNWpV7hD3dFzPMBYw66AEgTe0Ke6ISo3LecbBJ8tgRf94mHMMU6ymUj1+NxdmP1B8h/FwkGFxSLoaHX70DGUpXufkEw+SLQ9KRtAqxneaJLgo1+GRUKu2R6/CAENlT6Gb8zTo2+1BI70wvcS2LRfIdxg4DfXrdBOHFwprC3SuFKsWSxkCrRGDBTvNYK4f8OiTMfNXgWN1w2HZAeJ8bDkZXoM4pgaL105pmTSPTS9DzgeHPzBVl7SNYq3szgTSsDIg3EUklZqWIo01Gs2cR5wQVD0mE64sAxWp6EJ/F3MeqtvVLCtBlRYKe4YTmJCo6q2oftWFmSzdDTuhhSfpf4Nmo23cVUEarBkL/fC0mrs2r8wY5wZME8p9Rgg5z5eSYuZ5qUJ7AUhpQIETCCyTkmk0eg0ZXdKXEkKbZJSPKj85AS2RHFjCKn2Cjex0JzlCZzTAh3bKufNL+LtLjNBpdrRkJ1cPXVrB83BuL7Nj6ANdesybt9WdFGQZhJmQSjqtXoAfAVZZmIzty3VMbsA3hubGnSk6AkY46D07pFA4Xkzgg3e2dDs6TDKdIcyYjNuGis1tKdjoSuPmEYLrlGoejLiC9pE5Qp8YdoHekZjm1h355ohReA32tc4Ye5c6QusnprHJY/AdiUzPqKSZSkouHwtpRaLBX8EUORxbNJHvIS8aQgRF5k5NMFkUWqEYNOZgamWRnEDURV/ecKAKkLc48gqMKP86htpOfEjhPdERlFxVWR7qEsTEGT6U7mp7gdQYFe5o0tYWnB/jBxMDwlNxfkrkDojQYWtjCK11VKLbAajkBK1qD0qQGcqdAf9RTeDBZPYRTPbEJ85MwoLUobWg4635dpcMPACyZyZD2GTYmB/SRTmRqpB2AJWo8L+tTlDrYcDLylkNWJu1JzF0euKBzuEYDoKklyJIGwxPcUJFy0Xw6ulIE1T5gVi0xYFqhNDULABjSSa8Pkyg1QZYJusjVWQLfq3F4h8oKMPAQYd5N5NdA6RaYjI7XAB+HByVEI7TCmWhOf0NLl94dRZmjVXHQgQPAfhk+khjGKtdU+oVpFs6U+dddqpFFhp+d5iTbMMTFbtGFgvqb2ujJxiRGrOCPUqNdLF2HiL4YcPOFCDZKK4xJcEVwcHwM2SowPrczYNOZszh+Baa0iy3Bgk/ZixFwW46xh5FvUTFTKwilWi0JCnjFgsl/ZcdSigRS8DNLYNLLdDx1XD2gjKIASbdZcbKYTBHfVDeBS/gB27QP0FjHozbNrtOR5JUCWHSGLbJXMaE9AnOSfFDhnKNCdEKJpvVO/qcqaKAj7Sv1phV5iviyQXsPltjOoKqbFmDBcfQFNJwojieFkZ8aUv2PlMq7NFAk7lUJzW4SfcazCbd9ZhrQ2vKwXUeEzv9dEP5sfIPgwXBzoDVksIRRBsHVVvjyCa4ophTDHt/h6fSkzO36LNtjJd0o+Aq5BIro4ag9pmW/fDYlcVi4SQb3RPdIfoemDcQuOaU4hwBUSLmTSbbth6kH37XOO8cfZbripIiP2MC7gKXMZNScRC1t0aX90OOxH2hi2y4htAoVrVonF3L8gl4Jj6fghN6nhY3AIQsVgdtvKKmhytWt9inqOjCWOSln4E8ieoW1WpL+qw7ydVew/N0FUjQL0xq5PjxsNaSgkyXloAg0Y7LlYpkHEXtOPOtu/5NyExxoxiKtEw7lAjwVwseAn3oMe8LpFZyJuhOGdkOQE4V/GyD56K58RFYcshWA54PCstlUOi/18d94vf40YqQRiQQLXMtn+pKBCdFYX9amj5yqAzBpBEZH9mJdD5wSoLPh7215A4rrGMxI2eRYreJAblxK8lD+BltWkge90JMwuFP2XU8gDiHwTtmksS8VPPVoJ3UYcnhHzk2T2pL3JFyrcE0JAgblhnYI4Jol+4F06BdgiMsxYHZF+lC375UGQD9NTn40UBSaAYvoNWSr0BXZlLQ5QxzjWPIJNupaEM/TII8GwctRQqbNqu1BMGBH7NDaYD0IdT43o/uWJ1ZKjNjrdelswz+oNDD4KB/MReAOWdrwZVPJofPsFrwHB0Gku6AKpQQKtRCJEWkWmzb/tqCP74cg3inUYAGVoVkuLQuJ1QCejTZ0tUdUskz2iGAZ2Cznc9DWAQ1GCOgu2tepGyLnw/znZS1nXGBzmnBzOtqkY24gIRwxjl10yBgn2EGHTR+NO7vZs7//ve/f/aft354c/W/fr16/d1v3+ofP3//6vWPt/6oT19d/fT9rT/eevLm1Y+vXl+8evO3n9+8fXj31me3frh6+fbXN1ffvn7516vzL3z77nZ89d2t//ryb9z19v1TKxP99MCxR/TBrr18duurZzkdH7TDAUcvGaBpAtbPbt355t790x9WuBUkp0TcOi2f3br3r/fiEp2lrdCMCHto7vqrR8+PdywMJJWwwmsHCfVntx7e+WLvQZ49PuWbACIDM6RjsSt00NpePDv9WXSRgKxbmMKedMfLr57s3fHx3RfH58jSmyTK5iqB11PyjM+/PF4b0GpRwhygYLTXesjnj/ce5MEXd49/JgcEuBhdIqBX9Rx/+nLvOe7ee7S3iE8fXhzvx7BuIvQS50YP+Oji692Hv3h45/Heetx79nBXRJ9//ej09Gcg7Ltf3t6747Mvnpy2cwR3R2DpAXi2z279+eHpKemFgoeC3gU8FK3wxRd7P3b7ye4Cf/7s4nQpQ1xMqEc2Tn905+mz4/3o+qLeqEcgZmFBnn51f++37jy/1mvnj/j1o8enV6ORXnEF5EmTmJ5nvK58n9/z6cOTpTp/ysdf3tn7q0fPdxfk8pujWGXmPcHj0gtMnPH8Tx/sSNwX90+Sz/z6NZCJofNZ4Puntdpa/IvrOtWG6D++93h3kZ9/dd0QefYod55f7q3j5bUYkH6GXLtDJabgQYJ1uasnHj+8zoCc79rlN8925fHLh6c1OT800i97j//Fs+d7B/TywcXept178Wz3hH5171pCztXBo4ePdy89ON2SKAMAhrTrgA8cJfLF3mL96Yvbe4Jwcfv/2RWEuy/u7L3153ee7CzVVw/v7W3n5Z1Hu1t28Xx3qW4/OZ7d8/e6+/zFrjBe3N39sccXd/cW8YuLaxGG8pJBbDJadBrr1+5fPtlb4DuP7u0+/uW9i92HvHN3Vy1982LXsN7+Yv+Otz8/afdcm4JFuhGg4ZYHJ7N1fZzOD+H9kxlP8A8VhlCB21mn3u3zFxe7EvL03p9PK5llFzrZjHVIVvUcJzt+fuXOtR08NyQXj49a4qOfgZFEe3b5dPcp7lxcx89n0vj40cO99/rmm3/dNT8PH+391e0Hj3d1y9O7X++u/f17aVdfffPlo70Vuf3o2c4yPr63a6ofX2vUDf195+lJBtpsM3I0EEjVVrHwz3Zdr7tf7on+o/sv9m746OJyV04fXBu0cwv/8NqFOnN5br/YF24ZhLKzVA8uv9r1eO5+fXtHdJ48+3z36R9ffrN73h9ea5ctXfDozu61+4+f7u7a0weP9s31o692JfLrh9/s3vPiywd7Avn8y0e7r/7k8tGe8nzwTiRvruXtL+7t/dGd+9eee+lkWBUeLfBP6TFeXLzY+6tnT+7sK9VrX29jQZ5/ebl77fL5oz0h//rB7Wvn/Uwb/+nzP+/92dOLa9dyI3S6vPv53t89e3hnV87vXyvCjTd4fOfh/ps/ufZuNmTh7qMHuz/4zZMXe2rhX5892Nu723d3F/Py89u7P3Z58dXutT9d7Do4t59c7qiMpy8e756cy8/345b7T/cdkruXj3evPX34fPeeD+88332Wx7cv917u/rPb+wb4wa4QPb6OHDeW68vPd1/g8Z/v7e7As8/v7l57/vRif1Ee7BvGi+tTt6Gcnzy7u/PmxxTJ25dvfrx6++1fr16+/p1Jku+vfnj5609vv/33lz/9esW9M8M0mZfBsCyJ+CfzKMff5Cd1u+sHOGZRTo+bo1WxoAYbfbv13UtuXDktzcaV04JuXDltw8aV0+ZtXDlt+dbfPNz7nZNwbVw5ieTW3Y5yvHHlJP1bv/Nw78rppG09wdO9vzmd6q3febF3t5P+2LhyUjpbv3NUVZtPsLc6J624ceWkSjeunPTv1uo82vuba2W/tUFHG7G1pEfLsiVwR3u09ap390Tk2vZtrenRYm5cubazW7+0e4RONn3jyskT2HqjJ3tvdHI6tu52f08UTu7NxpWTS7Rx5eRHbb7P3pWTy7a1cEdHb+vZHu2J6cmp3JKEx3uScHJgt473xa5Sutx7tpOLvSXaX+8doZMzv6nIjhHA1iK82BP6U7Cx9UPf7F05xTVbV+7vCc8pgtp61WPYtSVwuzru8a5WerwrcKdQckvD7ArcddS6JT139wzXKUTeuvJw74dOwfjWCz3a27rrsH9T5PYE+JRi2Lrdn/Z26JTL2FqEe3ua7JQ12VzTPaV0ys9sPcHne4twygVtLemLvd85ZZ22jve9vbudMlybZmPP3l4n0zYFeNdV2jWRp2zfpvk+vtB8l0jcerc7ezc+pSy3dvHO3rudcqNbL3DMqG7ZvS/2lNopd7ulUR7sndpTlnjrfU655Y1Lp5T01vI82Nv6U/J7S6k93nUzTnn2rR/6Zu8RrnP6W7+0ezQud1XhqeawZWG/2hfMe7vK61QW2bp0f++VTiWYTeW+Z8sv9w3P8121/+WeOF6XojaPzbGCteVPnApfm8u669g93fW3TrW5rSP2bE/uTkXATc2/tw6ncuOWBH2xe5S/3DuWp3Lo1jl6tqeQr0uvm37D3sM93Y3B7u7a88tde/Vg16c5Fa43d3Xvbqci+dYTfLW3pKdy/LbK2DtFD3fN7AkvsLUPJ4wBlOUf/uc9MmFLP54QDZsneUcz/H5Mxourl2//cvVmD5FxuuzxGM//8uvr76/e/OG//eHRqx//8vZ1/JCeioHe4zgreF0KebY7P/386/e/7Vx8cPXy33/7w+c/7/3xg5evftq5dPnr69d7t7378q8v9SY//uHFq9ff7z7X1cs3O9eevXz1evPS/0lW5/0yn+d0GvC6OSozYVKv9RNbYVI67x61TODUlTnFmdTWh294fu18hc6/836Fz6+925iNSx/t6dZjvROI84t7cnXzm8eN+Pn11bd/+fnt79oEvndas9PC3Fjk46fvn+/scnx8tnQ3vvbx1euFuvGl+PCjlbr5hXdXroXxxhfiw3dbdOPi8dOdxbzx3a3vfHpxP/+JL9+9+unlb89/+9vVx8v76OXbqz9cvHrz3ZuXP7z9Q3zp/E++3foWHvnl7l+8v6bv/bz/tetLn36Nu1e/vLUS8sEXzuXj44s70vHhl3Zk48OvbEjGR5fP5eLDyzek4sNLXiY+/OY/JhF3Xr558+rmMt67/Bft8Pur354+UKRx9fa2fu+XD669+0h+yM8//vL25S9/QT7+4+VvH37r7JIe7X9IKb7Rq199/+1ff/7+6id++ur1L1d//befruIZP9Ctutd/v3Xx7z8+f/Xd/7x6+/TNq++Q3o1nYEm2wYkfX/lIN7vd3tjmva3d2NNP7ZC+8UoL8/q7q8evfrriBT44F4/jFg5wua0KvWrb1Gn7euzTekeW8uVvT354cXX1P0OOfn3z7c8/fKvPbmmHv/vp5S+/vPrh1Xcv3776+fW3P738t6ufYjOTvps3vvEfV9yYr6QD/MFrdJJ1Wgjr8lk+pP/xzpa+RYf98cYNbt2QKu4k2//malOm/i/9/tXVt7+8ffPrd/xW/P5rPcq3Wv+r/y27+Nmt17/+9d+0mr+8/Ovf2PU/lpJlRbV9P1x7G/+SDyvjbNOAxBRe9PH3/3F0Y3Ze5XfI2v4uuxOwI5H/Jz91dqhuCP3eidqU1Q+lbed0bp8WL5r/H278L3/76dXbb08bGt87fvJj2Armtw0a00di7Av+1tu/vLn65S8//xQ+YHvvqv509cPbW3/UA1zx2XevfuHFTk/709tbiNgPb7/97i+v+Mv82a03vPL1vxek68PnzRvPq+Dl7HnzjeeFMxB8VXD2QhL0T3rgeuOBl5sPXM4fOFOX/vBg0RjMzCoo12eHwOLmXerGXdZUz167nG3TStspJBb0Ko3xT3rtduO1+80HXjYeeDkXq3rjeWlAGTlpFQA2TZAEHzxvLf+4YI0bT5znzUduG488Rjp75uVsjVMHm8NIu1Ra/yct8c0HPnvevvG8xH8fS1ZrkwaMUnRe25zrzbuMLfkEhXjjrdv5gcorPPkzZv+09k967fXmPqWbTzy3ROtcA/SPHzjR1zwgnolunJw/VlnQ3BwYrAvpBRz5/+Djl5vPX8+ef908Gv3sBcbZii9Mks+yA5jfdf6zdO5NpZvPte6Gmcj1fM3rzTVnbqdU28gnarqPHrkt//Azl5uno5wdj7xhKkBonz30vLHO+UDT1hqTFOmD/6fZtpu2Ip8Zi7xlLco4e+T1TG1KZrN0z5yZWVAfi8Y/rjXLmT0+F40t01TyuTjnGy7EelhW5n/SwA9/wj/LNOWbtimfGae8ZZ3ameqsDP+ilYXpM+PcKOcti5F59Rte84REAr7JRhtuO9PBeUuVp3PLk296NRBVrDHKqEHnk26uYUorlPvwstFUzXv/Y3Jwc03L+ZpuGZL3D/z+HW64KCXmdurZC4jwWj4+bSX/43JwUxOXM02cN0wJZ+djMSgZsDCDE2QdQPSd3WZLo29sX7mpHZlC1SFAXOXSz7X+s45Avalp6rlbuqXR8w3JhX8SdhFGpbUi7/ls18uGkm3nK0hH84SBpEAPfH6XDbW3oajPxX+J7m85aQkk5ZnwzzKZwX5kL1zrP6wFby5nOV/ODS3IEn+8DrBeQi6xjs5MyzOFUjb00nIjCFfQB+dF7ymmXNczaSwbWgmA6cePkgKcGqO1oFc7v8uGSur95l0YjzmBiOvcMrfi7C5bSgEk7I3oRzfJsDj0BDnT2V22jmk6k1WoT2EHn9r0Rqv9uZxtHtRPuo5S4JKhVZK0NgaRpuVjN0YizXCnJUnX0hz9j57am8a2nq1n3Ti1y5mYQUnE/JQMk4gcsHx2m41T29dzaQX5DxPIypufyXzdOLU344/MpOeKH8U8o9bONUjdODlrPhO0mdfcoYZY4Q47j483Ts7N7FViZkWCezjRtzMlbp9KX51ld3fqPP+knK9Lq36YKNpO636Uv/r/US6JaXdrCmqcBOvEDTO4NsZbLkwLnzkK1/9lmaW8tnMrfjMTBk8gTEShAhlr/vHTV9j5IKupbeJI/hfmmcqWDb259p3BXFOBg86Vnr7+VyWItsKGuREFnzlNdHTCoUX9tunJl/+yxMOGjmnLp2PgtGa4puGHW4dE6uYSM60dEYI8Yugr9Lr838kYbXgG/29tZ7eaQAwF4fs+Sy/yc7LZPI1IkUUoWIq+f+ezheKegCG0BW+qLGrck5lPdybF6sYkKboSKjCjTPPxAHgqbk8v2RJLtTbqmbxM6SiD7PTFSqB4WLh4l9w2d5AeCnLqM0gPpKIj0S4mHT/EY6Jnq+bgBjVVJSA5jDLR3brqWUeJZi0sSX55dlUn8YwM5/PBm6k41FQl2bpRdv5ovtA1kDJsGVvmrH0cgK9dWpM6WK+4zYPSHj3S6Har+2kgwdAoxb4niZKEMzuAZ+lN9RbYkckoR8AnpIZ7MPDuRZBt/X/OpcdvqmMY/IAJclEprJByiNW74N54TM+xJuXBmhQknpGd8GdfUYxwoM5AtOhGWaTetZCdSr69tvEhfhPNv4cNWS4Ja02KIKxDEMXr+0UnJQl1VPNC3kewhpkfB+5UMgpeaMpqqa3fEG+3U5H2yGWeC61eIU+fTANspjOWU/Xb7Z7ekju1kDNIll6Nj2qMKcB1+FYDV1inWas2wEW7gKVjsqzS31ZpbCDBegSwJMve/LZIEGkL7LjBOlig59aczyryRdgsgsTzam6v7HEOGUxv13S+pHtzQJYDGAIdtePoCRArNNuTrxuz4ddkU47b9nnajtfT4XK7ftyueLf3yyYDdH476B6tN8vHv39djxzO689NR9HfyxcUO/PXt88BAA==", "tags": [ diff --git a/x-pack/test/fleet_api_integration/apis/space_awareness/change_space_agent_policies.ts b/x-pack/test/fleet_api_integration/apis/space_awareness/change_space_agent_policies.ts index df3aa6f8f257b..519ae1109e511 100644 --- a/x-pack/test/fleet_api_integration/apis/space_awareness/change_space_agent_policies.ts +++ b/x-pack/test/fleet_api_integration/apis/space_awareness/change_space_agent_policies.ts @@ -6,7 +6,10 @@ */ import expect from '@kbn/expect'; +import { v4 as uuidV4 } from 'uuid'; +import { Client } from '@elastic/elasticsearch'; import { CreateAgentPolicyResponse, GetOnePackagePolicyResponse } from '@kbn/fleet-plugin/common'; +import { FleetServerAgentAction } from '@kbn/fleet-plugin/common/types'; import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; import { skipIfNoDockerRegistry } from '../../helpers'; import { SpaceTestApiClient } from './api_helper'; @@ -19,6 +22,33 @@ import { } from './helpers'; import { testUsers, setupTestUsers } from '../test_users'; +export async function createFleetAction(esClient: Client, agentId: string, spaceId?: string) { + const actionResponse = await esClient.index({ + index: '.fleet-actions', + refresh: 'wait_for', + body: { + '@timestamp': new Date().toISOString(), + expiration: new Date().toISOString(), + agents: [agentId], + action_id: uuidV4(), + data: {}, + type: 'UPGRADE', + namespaces: spaceId ? [spaceId] : undefined, + }, + }); + + return actionResponse._id; +} + +async function getFleetActionDoc(esClient: Client, actionId: string) { + const actionResponse = await esClient.get({ + index: '.fleet-actions', + id: actionId, + }); + + return actionResponse; +} + export default function (providerContext: FtrProviderContext) { const { getService } = providerContext; const supertest = getService('supertest'); @@ -39,6 +69,9 @@ export default function (providerContext: FtrProviderContext) { let policy1AgentId: string; let policy2AgentId: string; + let agent1ActionId: string; + let agent2ActionId: string; + before(async () => { TEST_SPACE_1 = spaces.getDefaultTestSpace(); await setupTestUsers(getService('security'), true); @@ -63,6 +96,9 @@ export default function (providerContext: FtrProviderContext) { policy1AgentId = await createFleetAgent(esClient, defaultSpacePolicy1.item.id); policy2AgentId = await createFleetAgent(esClient, defaultSpacePolicy2.item.id); + agent1ActionId = await createFleetAction(esClient, policy1AgentId, 'default'); + agent2ActionId = await createFleetAction(esClient, policy2AgentId, 'default'); + const packagePolicyRes = await apiClient.createPackagePolicy(undefined, { policy_ids: [defaultSpacePolicy1.item.id], name: `test-nginx-${Date.now()}`, @@ -172,6 +208,15 @@ export default function (providerContext: FtrProviderContext) { } } + async function assertActionSpaces(actionId: string, expectedSpaces: string[]) { + const actionDoc = await getFleetActionDoc(esClient, actionId); + if (expectedSpaces.length === 1 && expectedSpaces[0] === 'default') { + expect(actionDoc._source?.namespaces ?? ['default']).to.eql(expectedSpaces); + } else { + expect(actionDoc._source?.namespaces).to.eql(expectedSpaces); + } + } + it('should allow set policy in multiple space', async () => { await apiClient.putAgentPolicy(defaultSpacePolicy1.item.id, { name: 'tata', @@ -189,6 +234,9 @@ export default function (providerContext: FtrProviderContext) { await assertAgentSpaces(policy1AgentId, ['default', TEST_SPACE_1]); await assertAgentSpaces(policy2AgentId, ['default']); + await assertActionSpaces(agent1ActionId, ['default', TEST_SPACE_1]); + await assertActionSpaces(agent2ActionId, ['default']); + await assertEnrollemntApiKeysForSpace('default', [ defaultSpacePolicy1.item.id, defaultSpacePolicy2.item.id, @@ -213,6 +261,10 @@ export default function (providerContext: FtrProviderContext) { await assertPackagePolicyNotAvailableInSpace(); await assertAgentSpaces(policy1AgentId, [TEST_SPACE_1]); await assertAgentSpaces(policy2AgentId, ['default']); + + await assertActionSpaces(agent1ActionId, [TEST_SPACE_1]); + await assertActionSpaces(agent2ActionId, ['default']); + await assertEnrollemntApiKeysForSpace('default', [defaultSpacePolicy2.item.id]); await assertEnrollemntApiKeysForSpace(TEST_SPACE_1, [defaultSpacePolicy1.item.id]); // Ensure no side effect on other policies diff --git a/x-pack/test/fleet_api_integration/apis/space_awareness/helpers.ts b/x-pack/test/fleet_api_integration/apis/space_awareness/helpers.ts index 92f4e3a387678..e4e5ff2563cc1 100644 --- a/x-pack/test/fleet_api_integration/apis/space_awareness/helpers.ts +++ b/x-pack/test/fleet_api_integration/apis/space_awareness/helpers.ts @@ -49,6 +49,12 @@ export async function cleanFleetIndices(esClient: Client) { ignore_unavailable: true, refresh: true, }), + esClient.deleteByQuery({ + index: AGENT_ACTIONS_INDEX, + q: '*', + ignore_unavailable: true, + refresh: true, + }), ]); } diff --git a/x-pack/test/functional/apps/dev_tools/searchprofiler_editor.ts b/x-pack/test/functional/apps/dev_tools/searchprofiler_editor.ts index 87c36de62bba6..184e979595f68 100644 --- a/x-pack/test/functional/apps/dev_tools/searchprofiler_editor.ts +++ b/x-pack/test/functional/apps/dev_tools/searchprofiler_editor.ts @@ -36,7 +36,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('correctly parses triple quotes in JSON', async () => { // The below inputs are written to work _with_ ace's autocomplete unlike console's unit test - // counterparts in src/legacy/core_plugins/console/public/tests/src/editor.test.js + // counterparts in src/legacy/core_platform/plugins/shared/console/public/tests/src/editor.test.js const okInputs = [ `{ diff --git a/x-pack/test/functional/apps/lens/group4/color_mapping.ts b/x-pack/test/functional/apps/lens/group4/color_mapping.ts index 008ffa1cb53e1..d14505fb0b147 100644 --- a/x-pack/test/functional/apps/lens/group4/color_mapping.ts +++ b/x-pack/test/functional/apps/lens/group4/color_mapping.ts @@ -6,17 +6,15 @@ */ import expect from '@kbn/expect'; -import { - EUI_AMSTERDAM_PALETTE_COLORS, - ELASTIC_BRAND_PALETTE_COLORS, - EUIAmsterdamColorBlindPalette, - ElasticBrandPalette, -} from '@kbn/coloring/src/shared_components/color_mapping/palettes'; +import { getKbnPalettes, KbnPalette } from '@kbn/palettes'; import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const { visualize, lens } = getPageObjects(['visualize', 'lens']); const elasticChart = getService('elasticChart'); + const palettes = getKbnPalettes({ name: 'amsterdam', darkMode: false }); + const defaultPalette = palettes.get(KbnPalette.Default); + const classicPalette = palettes.get(KbnPalette.ElasticClassic); describe('lens color mapping', () => { before(async () => { @@ -34,7 +32,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { dimension: 'lnsXY_splitDimensionPanel > lns-empty-dimension', operation: 'terms', field: 'extension.raw', - palette: { mode: 'colorMapping', id: ElasticBrandPalette.id }, + palette: { mode: 'colorMapping', id: classicPalette.id }, keepOpen: true, }); }); @@ -43,18 +41,25 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const chart = await lens.getCurrentChartDebugState('xyVisChart'); const legendColors = chart?.legend?.items?.map((item) => item.color.toLowerCase()) ?? []; expect(legendColors).to.eql( - ELASTIC_BRAND_PALETTE_COLORS.slice(0, 5).map((c) => c.toLowerCase()) + classicPalette + .colors() + .slice(0, 5) + .map((c) => c.toLowerCase()) ); }); + it('should allow switching color mapping palette', async () => { await lens.changeColorMappingPalette( 'lnsXY_splitDimensionPanel > lnsLayerPanel-dimensionLink', - EUIAmsterdamColorBlindPalette.id + defaultPalette.id ); const chart = await lens.getCurrentChartDebugState('xyVisChart'); const legendColors = chart?.legend?.items?.map((item) => item.color.toLowerCase()) ?? []; expect(legendColors).to.eql( - EUI_AMSTERDAM_PALETTE_COLORS.slice(0, 5).map((c) => c.toLowerCase()) + defaultPalette + .colors() + .slice(0, 5) + .map((c) => c.toLowerCase()) ); }); @@ -66,7 +71,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ); const chart = await lens.getCurrentChartDebugState('xyVisChart'); const firstLegendItemColor = chart?.legend?.items?.[0]?.color?.toLowerCase() ?? 'NONE'; - expect(firstLegendItemColor).to.eql(EUI_AMSTERDAM_PALETTE_COLORS[3].toLowerCase()); + expect(firstLegendItemColor).to.eql(defaultPalette.colors()[3].toLowerCase()); }); }); } diff --git a/x-pack/test/functional/apps/lens/group4/colors.ts b/x-pack/test/functional/apps/lens/group4/colors.ts index 5c5bbea4ba2c5..68e0ce9f88560 100644 --- a/x-pack/test/functional/apps/lens/group4/colors.ts +++ b/x-pack/test/functional/apps/lens/group4/colors.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { ElasticBrandPalette } from '@kbn/coloring'; +import { KbnPalette } from '@kbn/palettes'; import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getPageObjects }: FtrProviderContext) { @@ -57,25 +57,25 @@ export default function ({ getPageObjects }: FtrProviderContext) { dimension: 'lnsXY_splitDimensionPanel > lns-empty-dimension', operation: 'terms', field: '@message.raw', - palette: { mode: 'colorMapping', id: ElasticBrandPalette.id }, + palette: { mode: 'colorMapping', id: KbnPalette.ElasticClassic }, keepOpen: true, }); - await lens.assertPalette(ElasticBrandPalette.id, false); + await lens.assertPalette(KbnPalette.ElasticClassic, false); await lens.closeDimensionEditor(); }); it('should carry over palette to the pie chart', async () => { await lens.switchToVisualization('pie'); await lens.openDimensionEditor('lnsPie_sliceByDimensionPanel > lns-dimensionTrigger'); - await lens.assertPalette(ElasticBrandPalette.id, false); + await lens.assertPalette(KbnPalette.ElasticClassic, false); await lens.closeDimensionEditor(); }); it('should carry palette back to the bar chart', async () => { await lens.switchToVisualization('bar'); await lens.openDimensionEditor('lnsXY_splitDimensionPanel > lns-dimensionTrigger'); - await lens.assertPalette(ElasticBrandPalette.id, false); + await lens.assertPalette(KbnPalette.ElasticClassic, false); }); }); } diff --git a/x-pack/test/functional/apps/management/config.ts b/x-pack/test/functional/apps/management/config.ts index e4a06d30f260d..7ca5d972aa064 100644 --- a/x-pack/test/functional/apps/management/config.ts +++ b/x-pack/test/functional/apps/management/config.ts @@ -15,10 +15,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { testFiles: [require.resolve('.')], kbnTestServer: { ...functionalConfig.get('kbnTestServer'), - serverArgs: [ - ...functionalConfig.get('kbnTestServer.serverArgs'), - '--xpack.spaces.experimental.forceSolutionVisibility=true', - ], + serverArgs: [...functionalConfig.get('kbnTestServer.serverArgs')], }, }; } diff --git a/x-pack/test/functional/apps/spaces/create_edit_space/create_edit_space.ts b/x-pack/test/functional/apps/spaces/create_edit_space/create_edit_space.ts index 4b100595a38c6..a2c00647adf92 100644 --- a/x-pack/test/functional/apps/spaces/create_edit_space/create_edit_space.ts +++ b/x-pack/test/functional/apps/spaces/create_edit_space/create_edit_space.ts @@ -15,6 +15,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const spacesServices = getService('spaces'); const log = getService('log'); + const find = getService('find'); describe('Spaces Management: Create and Edit', () => { before(async () => { @@ -43,6 +44,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it('create a space with a given name', async () => { await PageObjects.spaceSelector.addSpaceName(spaceName); + await PageObjects.spaceSelector.changeSolutionView('classic'); await PageObjects.spaceSelector.clickSaveSpaceCreation(); await testSubjects.existOrFail(`spacesListTableRow-${spaceId}`); }); @@ -60,6 +62,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { name: spaceName, disabledFeatures: [], color: '#AABBCC', + solution: 'classic', }); await PageObjects.common.navigateToApp('spacesManagement'); @@ -103,14 +106,100 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); describe('solution view', () => { - it('does not show solution view panel', async () => { + it('does show the solution view panel', async () => { await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/default', { shouldUseHashForSubUrl: false, }); await testSubjects.existOrFail('spaces-view-page'); await testSubjects.existOrFail('spaces-view-page > generalPanel'); - await testSubjects.missingOrFail('spaces-view-page > navigationPanel'); // xpack.spaces.allowSolutionVisibility is not enabled, so the solution view picker should not appear + await testSubjects.existOrFail('spaces-view-page > navigationPanel'); + }); + + it('changes the space solution and updates the side navigation', async () => { + await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/default', { + shouldUseHashForSubUrl: false, + }); + + // Make sure we are on the classic side nav + await testSubjects.existOrFail('mgtSideBarNav'); + await testSubjects.missingOrFail('searchSideNav'); + + // change to Enterprise Search + await PageObjects.spaceSelector.changeSolutionView('es'); + await PageObjects.spaceSelector.clickSaveSpaceCreation(); + await PageObjects.spaceSelector.confirmModal(); + + await find.waitForDeletedByCssSelector('.kibanaWelcomeLogo'); + + // Search side nav is loaded + await testSubjects.existOrFail('searchSideNav'); + await testSubjects.missingOrFail('mgtSideBarNav'); + + // change back to classic + await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/default', { + shouldUseHashForSubUrl: false, + }); + + await testSubjects.missingOrFail('space-edit-page-user-impact-warning'); + await PageObjects.spaceSelector.changeSolutionView('classic'); + await testSubjects.existOrFail('space-edit-page-user-impact-warning'); // Warn that the change will impact other users + + await PageObjects.spaceSelector.clickSaveSpaceCreation(); + await PageObjects.spaceSelector.confirmModal(); + + await testSubjects.existOrFail('mgtSideBarNav'); + await testSubjects.missingOrFail('searchSideNav'); + }); + }); + + describe('API-created Space', () => { + before(async () => { + await spacesServices.create({ + id: 'foo-space', + name: 'Foo Space', + disabledFeatures: [], + color: '#AABBCC', + }); + }); + + after(async () => { + await spacesServices.delete('foo-space'); + }); + + it('enabled features can be changed while the solution view remains unselected', async () => { + const securityFeatureCheckboxId = 'featureCategoryCheckbox_securitySolution'; + + await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/foo-space', { + shouldUseHashForSubUrl: false, + }); + + await testSubjects.existOrFail('spaces-view-page'); + + // ensure security feature is selected by default + expect(await testSubjects.isChecked(securityFeatureCheckboxId)).to.be(true); + + // Do not set a solution view first! + + await PageObjects.spaceSelector.toggleFeatureCategoryCheckbox('securitySolution'); + // + // ensure security feature now unselected + expect(await testSubjects.isChecked(securityFeatureCheckboxId)).to.be(false); + + await testSubjects.existOrFail('space-edit-page-user-impact-warning'); + + await PageObjects.spaceSelector.clickSaveSpaceCreation(); + + await testSubjects.click('confirmModalConfirmButton'); + + await testSubjects.existOrFail('spaces-view-page'); + + await testSubjects.click('foo-space-hyperlink'); + + await testSubjects.existOrFail('spaces-view-page'); + + // ensure security feature is still unselected + expect(await testSubjects.isChecked(securityFeatureCheckboxId)).to.be(false); }); }); }); diff --git a/x-pack/test/functional/apps/spaces/index.ts b/x-pack/test/functional/apps/spaces/index.ts index 3fe77a1a4528b..4a9334ab30486 100644 --- a/x-pack/test/functional/apps/spaces/index.ts +++ b/x-pack/test/functional/apps/spaces/index.ts @@ -15,5 +15,6 @@ export default function spacesApp({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./enter_space')); loadTestFile(require.resolve('./create_edit_space')); loadTestFile(require.resolve('./spaces_grid')); + loadTestFile(require.resolve('./solution_tour')); }); } diff --git a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/solution_tour.ts b/x-pack/test/functional/apps/spaces/solution_tour.ts similarity index 98% rename from x-pack/test/functional/apps/spaces/solution_view_flag_enabled/solution_tour.ts rename to x-pack/test/functional/apps/spaces/solution_tour.ts index ac8281f45a56e..862fe9146ee69 100644 --- a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/solution_tour.ts +++ b/x-pack/test/functional/apps/spaces/solution_tour.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import type { SolutionView, Space } from '@kbn/spaces-plugin/common'; -import { FtrProviderContext } from '../../../ftr_provider_context'; +import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); diff --git a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/config.ts b/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/config.ts deleted file mode 100644 index f99c2daf38960..0000000000000 --- a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/config.ts +++ /dev/null @@ -1,32 +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 { FtrConfigProviderContext } from '@kbn/test'; - -/** - * NOTE: The solution view is currently only available in the cloud environment. - * This test suite fakes a cloud environement by setting the cloud.id and cloud.base_url - */ - -export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const functionalConfig = await readConfigFile(require.resolve('../../../config.base.js')); - - return { - ...functionalConfig.getAll(), - testFiles: [require.resolve('.')], - kbnTestServer: { - ...functionalConfig.get('kbnTestServer'), - serverArgs: [ - ...functionalConfig.get('kbnTestServer.serverArgs'), - // Note: the base64 string in the cloud.id config contains the ES endpoint required in the functional tests - '--xpack.cloud.id=ftr_fake_cloud_id:aGVsbG8uY29tOjQ0MyRFUzEyM2FiYyRrYm4xMjNhYmM=', - '--xpack.cloud.base_url=https://cloud.elastic.co', - '--xpack.cloud.deployment_url=/deployments/deploymentId', - ], - }, - }; -} diff --git a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/create_edit_space.ts b/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/create_edit_space.ts deleted file mode 100644 index 8695077eae74e..0000000000000 --- a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/create_edit_space.ts +++ /dev/null @@ -1,125 +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 expect from '@kbn/expect'; -import { FtrProviderContext } from '../../../ftr_provider_context'; - -export default function ({ getPageObjects, getService }: FtrProviderContext) { - const kibanaServer = getService('kibanaServer'); - const PageObjects = getPageObjects(['common', 'settings', 'security', 'spaceSelector']); - const testSubjects = getService('testSubjects'); - const spacesService = getService('spaces'); - const find = getService('find'); - - describe('edit space', () => { - before(async () => { - await kibanaServer.savedObjects.cleanStandardList(); - }); - - after(async () => { - await kibanaServer.savedObjects.cleanStandardList(); - }); - - describe('solution view', () => { - it('does show the solution view panel', async () => { - await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/default', { - shouldUseHashForSubUrl: false, - }); - - await testSubjects.existOrFail('spaces-view-page'); - await testSubjects.existOrFail('spaces-view-page > generalPanel'); - await testSubjects.existOrFail('spaces-view-page > navigationPanel'); - }); - - it('changes the space solution and updates the side navigation', async () => { - await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/default', { - shouldUseHashForSubUrl: false, - }); - - // Make sure we are on the classic side nav - await testSubjects.existOrFail('mgtSideBarNav'); - await testSubjects.missingOrFail('searchSideNav'); - - // change to Enterprise Search - await PageObjects.spaceSelector.changeSolutionView('es'); - await PageObjects.spaceSelector.clickSaveSpaceCreation(); - await PageObjects.spaceSelector.confirmModal(); - - await find.waitForDeletedByCssSelector('.kibanaWelcomeLogo'); - - // Search side nav is loaded - await testSubjects.existOrFail('searchSideNav'); - await testSubjects.missingOrFail('mgtSideBarNav'); - - // change back to classic - await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/default', { - shouldUseHashForSubUrl: false, - }); - - await testSubjects.missingOrFail('space-edit-page-user-impact-warning'); - await PageObjects.spaceSelector.changeSolutionView('classic'); - await testSubjects.existOrFail('space-edit-page-user-impact-warning'); // Warn that the change will impact other users - - await PageObjects.spaceSelector.clickSaveSpaceCreation(); - await PageObjects.spaceSelector.confirmModal(); - - await testSubjects.existOrFail('mgtSideBarNav'); - await testSubjects.missingOrFail('searchSideNav'); - }); - }); - - describe('API-created Space', () => { - before(async () => { - await spacesService.create({ - id: 'foo-space', - name: 'Foo Space', - disabledFeatures: [], - color: '#AABBCC', - }); - }); - - after(async () => { - await spacesService.delete('foo-space'); - }); - - it('enabled features can be changed while the solution view remains unselected', async () => { - const securityFeatureCheckboxId = 'featureCategoryCheckbox_securitySolution'; - - await PageObjects.common.navigateToUrl('management', 'kibana/spaces/edit/foo-space', { - shouldUseHashForSubUrl: false, - }); - - await testSubjects.existOrFail('spaces-view-page'); - - // ensure security feature is selected by default - expect(await testSubjects.isChecked(securityFeatureCheckboxId)).to.be(true); - - // Do not set a solution view first! - - await PageObjects.spaceSelector.toggleFeatureCategoryCheckbox('securitySolution'); - // - // ensure security feature now unselected - expect(await testSubjects.isChecked(securityFeatureCheckboxId)).to.be(false); - - await testSubjects.existOrFail('space-edit-page-user-impact-warning'); - - await PageObjects.spaceSelector.clickSaveSpaceCreation(); - - await testSubjects.click('confirmModalConfirmButton'); - - await testSubjects.existOrFail('spaces-view-page'); - - await testSubjects.click('foo-space-hyperlink'); - - await testSubjects.existOrFail('spaces-view-page'); - - // ensure security feature is still unselected - expect(await testSubjects.isChecked(securityFeatureCheckboxId)).to.be(false); - }); - }); - }); -} diff --git a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/index.ts b/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/index.ts deleted file mode 100644 index 45a8f78387154..0000000000000 --- a/x-pack/test/functional/apps/spaces/solution_view_flag_enabled/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 { FtrProviderContext } from '../../../ftr_provider_context'; - -export default function spacesApp({ loadTestFile }: FtrProviderContext) { - describe('Spaces app (with solution view)', function spacesAppTestSuite() { - loadTestFile(require.resolve('./create_edit_space')); - loadTestFile(require.resolve('./solution_tour')); - }); -} diff --git a/x-pack/test/functional_search/config.ts b/x-pack/test/functional_search/config.ts index c7708363766b0..808edc73d97a6 100644 --- a/x-pack/test/functional_search/config.ts +++ b/x-pack/test/functional_search/config.ts @@ -30,12 +30,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { }, kbnTestServer: { ...functionalConfig.get('kbnTestServer'), - serverArgs: [ - ...functionalConfig.get('kbnTestServer.serverArgs'), - // Note: the base64 string in the cloud.id config contains the ES endpoint required in the functional tests - '--xpack.cloud.id=ftr_fake_cloud_id:aGVsbG8uY29tOjQ0MyRFUzEyM2FiYyRrYm4xMjNhYmM=', - '--xpack.cloud.base_url=https://cloud.elastic.co', - ], + serverArgs: [...functionalConfig.get('kbnTestServer.serverArgs')], }, }; } diff --git a/x-pack/test/functional_solution_sidenav/config.ts b/x-pack/test/functional_solution_sidenav/config.ts index f997aaea7c5e2..031fb55d192b7 100644 --- a/x-pack/test/functional_solution_sidenav/config.ts +++ b/x-pack/test/functional_solution_sidenav/config.ts @@ -20,12 +20,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { testFiles: [require.resolve('.')], kbnTestServer: { ...functionalConfig.get('kbnTestServer'), - serverArgs: [ - ...functionalConfig.get('kbnTestServer.serverArgs'), - // Note: the base64 string in the cloud.id config contains the ES endpoint required in the functional tests - '--xpack.cloud.id=ftr_fake_cloud_id:aGVsbG8uY29tOjQ0MyRFUzEyM2FiYyRrYm4xMjNhYmM=', - '--xpack.cloud.base_url=https://cloud.elastic.co', - ], + serverArgs: [...functionalConfig.get('kbnTestServer.serverArgs')], }, }; } diff --git a/x-pack/test/observability_ai_assistant_api_integration/tests/chat/chat.spec.ts b/x-pack/test/observability_ai_assistant_api_integration/tests/chat/chat.spec.ts index b1865f944f6a1..04139a574a216 100644 --- a/x-pack/test/observability_ai_assistant_api_integration/tests/chat/chat.spec.ts +++ b/x-pack/test/observability_ai_assistant_api_integration/tests/chat/chat.spec.ts @@ -137,57 +137,6 @@ export default function ApiTest({ getService }: FtrProviderContext) { ]); }); - it.skip('returns a useful error if the request fails', async () => { - const interceptor = proxy.intercept('conversation', () => true); - - const passThrough = new PassThrough(); - - supertest - .post(CHAT_API_URL) - .set('kbn-xsrf', 'foo') - .send({ - name: 'my_api_call', - messages, - connectorId, - functions: [], - scopes: ['all'], - }) - .expect(200) - .pipe(passThrough); - - let data: string = ''; - - passThrough.on('data', (chunk) => { - data += chunk.toString('utf-8'); - }); - - const simulator = await interceptor.waitForIntercept(); - - await simulator.status(400); - - await simulator.rawWrite( - JSON.stringify({ - error: { - code: 'context_length_exceeded', - message: - "This model's maximum context length is 8192 tokens. However, your messages resulted in 11036 tokens. Please reduce the length of the messages.", - param: 'messages', - type: 'invalid_request_error', - }, - }) - ); - - await simulator.rawEnd(); - - await new Promise((resolve) => passThrough.on('end', () => resolve())); - - const response = JSON.parse(data.trim()); - - expect(response.error.message).to.be( - `Token limit reached. Token limit is 8192, but the current conversation has 11036 tokens.` - ); - }); - describe('security roles and access privileges', () => { it('should deny access for users without the ai_assistant privilege', async () => { try { diff --git a/x-pack/test/observability_ai_assistant_api_integration/tests/complete/functions/alerts.spec.ts b/x-pack/test/observability_ai_assistant_api_integration/tests/complete/functions/alerts.spec.ts new file mode 100644 index 0000000000000..60c28aab6781b --- /dev/null +++ b/x-pack/test/observability_ai_assistant_api_integration/tests/complete/functions/alerts.spec.ts @@ -0,0 +1,74 @@ +/* + * 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 { MessageRole, MessageAddEvent } from '@kbn/observability-ai-assistant-plugin/common'; +import expect from '@kbn/expect'; +import { LlmProxy, createLlmProxy } from '../../../common/create_llm_proxy'; +import { FtrProviderContext } from '../../../common/ftr_provider_context'; +import { getMessageAddedEvents, invokeChatCompleteWithFunctionRequest } from './helpers'; +import { + createProxyActionConnector, + deleteActionConnector, +} from '../../../common/action_connectors'; + +export default function ApiTest({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + const log = getService('log'); + const observabilityAIAssistantAPIClient = getService('observabilityAIAssistantAPIClient'); + + describe('when calling the alerts function', () => { + let proxy: LlmProxy; + let connectorId: string; + let alertsEvents: MessageAddEvent[]; + + const start = 'now-100h'; + const end = 'now'; + + before(async () => { + proxy = await createLlmProxy(log); + connectorId = await createProxyActionConnector({ supertest, log, port: proxy.getPort() }); + + void proxy + .intercept('conversation', () => true, 'Hello from LLM Proxy') + .completeAfterIntercept(); + + const alertsResponseBody = await invokeChatCompleteWithFunctionRequest({ + connectorId, + observabilityAIAssistantAPIClient, + functionCall: { + name: 'alerts', + trigger: MessageRole.Assistant, + arguments: JSON.stringify({ start, end }), + }, + }); + + await proxy.waitForAllInterceptorsSettled(); + + alertsEvents = getMessageAddedEvents(alertsResponseBody); + }); + + after(async () => { + proxy.close(); + await deleteActionConnector({ supertest, connectorId, log }); + }); + + // This test ensures that invoking the alerts function does not result in an error. + it('should execute the function without any errors', async () => { + const alertsFunctionResponse = alertsEvents[0]; + expect(alertsFunctionResponse.message.message.name).to.be('alerts'); + + const parsedAlertsResponse = JSON.parse(alertsFunctionResponse.message.message.content!); + + expect(parsedAlertsResponse).not.to.have.property('error'); + expect(parsedAlertsResponse).to.have.property('total'); + expect(parsedAlertsResponse).to.have.property('alerts'); + expect(parsedAlertsResponse.alerts).to.be.an('array'); + expect(parsedAlertsResponse.total).to.be(0); + expect(parsedAlertsResponse.alerts.length).to.be(0); + }); + }); +} diff --git a/x-pack/test/observability_functional/apps/observability/index.ts b/x-pack/test/observability_functional/apps/observability/index.ts index f061fe68649d5..dce84cee32dfa 100644 --- a/x-pack/test/observability_functional/apps/observability/index.ts +++ b/x-pack/test/observability_functional/apps/observability/index.ts @@ -17,6 +17,7 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./pages/alerts/rule_stats')); loadTestFile(require.resolve('./pages/alerts/state_synchronization')); loadTestFile(require.resolve('./pages/alerts/table_storage')); + loadTestFile(require.resolve('./pages/alerts/custom_threshold_preview_chart')); loadTestFile(require.resolve('./pages/alerts/custom_threshold')); loadTestFile(require.resolve('./pages/cases/case_details')); loadTestFile(require.resolve('./pages/overview/alert_table')); diff --git a/x-pack/test/observability_functional/apps/observability/pages/alerts/custom_threshold_preview_chart.ts b/x-pack/test/observability_functional/apps/observability/pages/alerts/custom_threshold_preview_chart.ts new file mode 100644 index 0000000000000..6bc0564c711c1 --- /dev/null +++ b/x-pack/test/observability_functional/apps/observability/pages/alerts/custom_threshold_preview_chart.ts @@ -0,0 +1,89 @@ +/* + * 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 expect from 'expect'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default ({ getService, getPageObject }: FtrProviderContext) => { + const common = getPageObject('common'); + const esArchiver = getService('esArchiver'); + const testSubjects = getService('testSubjects'); + const kibanaServer = getService('kibanaServer'); + const supertest = getService('supertest'); + const find = getService('find'); + const logger = getService('log'); + const retry = getService('retry'); + + describe('Custom threshold preview chart', () => { + const observability = getService('observability'); + const DATA_VIEW_1 = 'metricbeat-*'; + const DATA_VIEW_1_ID = 'data-view-id_1'; + const DATA_VIEW_1_NAME = 'test-data-view-name_1'; + + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs'); + await observability.alerts.common.createDataView({ + supertest, + name: DATA_VIEW_1_NAME, + id: DATA_VIEW_1_ID, + title: DATA_VIEW_1, + logger, + }); + await observability.alerts.common.navigateToRulesPage(); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/infra/metrics_and_logs'); + // This also deletes the created data views + await kibanaServer.savedObjects.cleanStandardList(); + }); + + it('does render the empty chart only once at bootstrap', async () => { + await observability.alerts.rulesPage.clickCreateRuleButton(); + await observability.alerts.rulesPage.clickOnObservabilityCategory(); + await observability.alerts.rulesPage.clickOnCustomThresholdRule(); + await common.sleep(1000); + expect(await find.existsByCssSelector('[data-rendering-count="2"]')).toBe(true); + }); + + it('does render the correct error message', async () => { + await testSubjects.setValue('ruleNameInput', 'test custom threshold rule'); + + await testSubjects.click('customEquation'); + const customEquationField = await find.byCssSelector( + '[data-test-subj="thresholdRuleCustomEquationEditorFieldText"]' + ); + await customEquationField.click(); + // set an invalid equation + await customEquationField.type('A + '); + + await testSubjects.click('o11yClosablePopoverTitleButton'); + + await testSubjects.existOrFail('embeddable-lens-failure'); + const el = await find.byCssSelector('[data-test-subj="embeddable-lens-failure"] p'); + const textContent = await el.getVisibleText(); + expect(textContent).toBe('An error occurred while rendering the chart'); + }); + + it('does render the chart after fixing the error', async () => { + await testSubjects.click('customEquation'); + const customEquationField = await find.byCssSelector( + '[data-test-subj="thresholdRuleCustomEquationEditorFieldText"]' + ); + await customEquationField.click(); + // fix the equation + await customEquationField.type('A'); + await testSubjects.click('o11yClosablePopoverTitleButton'); + + // check no error is visible + await testSubjects.missingOrFail('embeddable-lens-failure'); + await retry.waitFor('Chart rendered correctly', () => { + return find.existsByCssSelector('[data-render-complete="true"]'); + }); + }); + }); +}; diff --git a/x-pack/test/plugin_api_integration/config.ts b/x-pack/test/plugin_api_integration/config.ts index 896b2c41ca1bc..8f145b346d402 100644 --- a/x-pack/test/plugin_api_integration/config.ts +++ b/x-pack/test/plugin_api_integration/config.ts @@ -34,8 +34,6 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { '--xpack.eventLog.logEntries=true', '--xpack.eventLog.indexEntries=true', '--xpack.task_manager.monitored_aggregated_stats_refresh_rate=5000', - '--xpack.task_manager.ephemeral_tasks.enabled=false', - '--xpack.task_manager.ephemeral_tasks.request_capacity=100', `--xpack.stack_connectors.enableExperimental=${JSON.stringify([ 'crowdstrikeConnectorOn', 'inferenceConnectorOn', diff --git a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts index c5927d894911c..89a75eba663a0 100644 --- a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts +++ b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts @@ -216,45 +216,6 @@ export function initRoutes( } ); - router.post( - { - path: `/api/sample_tasks/ephemeral_run_now`, - validate: { - body: schema.object({ - task: schema.object({ - taskType: schema.string(), - state: schema.recordOf(schema.string(), schema.any()), - params: schema.recordOf(schema.string(), schema.any()), - }), - }), - }, - }, - async function ( - context: RequestHandlerContext, - req: KibanaRequest< - any, - any, - { - task: { - taskType: string; - params: Record; - state: Record; - }; - }, - any - >, - res: KibanaResponseFactory - ): Promise> { - const { task } = req.body; - try { - const taskManager = await taskManagerStart; - return res.ok({ body: await taskManager.ephemeralRunNow(task) }); - } catch (err) { - return res.ok({ body: { task, error: `${err}` } }); - } - } - ); - router.post( { path: `/api/sample_tasks/ensure_scheduled`, diff --git a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts index 809f7307ab8aa..9604ad6732e58 100644 --- a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts +++ b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts @@ -15,7 +15,6 @@ import { TaskManagerSetupContract, TaskManagerStartContract, ConcreteTaskInstance, - EphemeralTask, } from '@kbn/task-manager-plugin/server'; import { DEFAULT_MAX_WORKERS } from '@kbn/task-manager-plugin/server/config'; import { getDeleteTaskRunResult, TaskPriority } from '@kbn/task-manager-plugin/server/task'; @@ -40,8 +39,6 @@ export class SampleTaskManagerFixturePlugin const taskTestingEvents = new EventEmitter(); taskTestingEvents.setMaxListeners(DEFAULT_MAX_WORKERS * 2); - const tmStart = this.taskManagerStart; - const defaultSampleTaskConfig = { timeout: '1m', // This task allows tests to specify its behavior (whether it reschedules itself, whether it errors, etc) @@ -345,37 +342,6 @@ export class SampleTaskManagerFixturePlugin 'A task that can only have two concurrent instance and tracks its execution timing.', ...taskWithTiming, }, - taskWhichExecutesOtherTasksEphemerally: { - title: 'Task Which Executes Other Tasks Ephemerally', - description: 'A sample task used to validate how ephemeral tasks are executed.', - maxAttempts: 1, - timeout: '60s', - createTaskRunner: ({ taskInstance }: { taskInstance: ConcreteTaskInstance }) => ({ - async run() { - const { - params: { tasks = [] }, - } = taskInstance; - - const tm = await tmStart; - const executions = await Promise.all( - (tasks as EphemeralTask[]).map(async (task) => { - return tm - .ephemeralRunNow(task) - .then((result) => ({ - result, - })) - .catch((error) => ({ - error, - })); - }) - ); - - return { - state: { executions }, - }; - }, - }), - }, }); taskManager.addMiddleware({ diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts index e8e24f53551e8..4242048d00664 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts @@ -30,7 +30,6 @@ export default function ({ getService }: FtrProviderContext) { 'sampleTaskWithLimitedConcurrency', 'sampleTaskWithSingleConcurrency', 'singleAttemptSampleTask', - 'taskWhichExecutesOtherTasksEphemerally', 'timedTask', 'timedTaskWithLimitedConcurrency', 'timedTaskWithSingleConcurrency', @@ -164,6 +163,7 @@ export default function ({ getService }: FtrProviderContext) { 'security-solution-ea-asset-criticality-ecs-migration', 'security:endpoint-diagnostics', 'security:endpoint-meta-telemetry', + 'security:indices-metadata-telemetry', 'security:telemetry-configuration', 'security:telemetry-detection-rules', 'security:telemetry-diagnostic-timelines', diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/health_route.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/health_route.ts index 8aba3d1624730..d27e339487584 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/health_route.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/health_route.ts @@ -302,7 +302,6 @@ export default function ({ getService }: FtrProviderContext) { expect(typeof execution.duration.sampleTask.p95).to.eql('number'); expect(typeof execution.duration.sampleTask.p99).to.eql('number'); - expect(typeof execution.persistence.ephemeral).to.eql('number'); expect(typeof execution.persistence.non_recurring).to.eql('number'); expect(typeof execution.persistence.recurring).to.eql('number'); diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts index d291e6cfb7103..34ef9c2481bc1 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts @@ -197,20 +197,6 @@ export default function ({ getService }: FtrProviderContext) { .then((response: { body: BulkUpdateTaskResult }) => response.body); } - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // function runEphemeralTaskNow(task: { - // taskType: string; - // params: Record; - // state: Record; - // }) { - // return supertest - // .post('/api/sample_tasks/ephemeral_run_now') - // .set('kbn-xsrf', 'xxx') - // .send({ task }) - // .expect(200) - // .then((response) => response.body); - // } - function scheduleTaskIfNotExists(task: Partial) { return supertest .post('/api/sample_tasks/ensure_scheduled') @@ -919,196 +905,6 @@ export default function ({ getService }: FtrProviderContext) { expect(task.runAt).to.eql(scheduledRunAt); }); }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('should return the resulting task state when asked to run an ephemeral task now', async () => { - // const ephemeralTask = await runEphemeralTaskNow({ - // taskType: 'sampleTask', - // params: {}, - // state: {}, - // }); - - // await retry.try(async () => { - // expect( - // (await historyDocs()).filter((taskDoc) => taskDoc._source.taskId === ephemeralTask.id) - // .length - // ).to.eql(1); - - // expect(ephemeralTask.state.count).to.eql(1); - // }); - - // const secondEphemeralTask = await runEphemeralTaskNow({ - // taskType: 'sampleTask', - // params: {}, - // // pass state from previous ephemeral run as input for the second run - // state: ephemeralTask.state, - // }); - - // // ensure state is cumulative - // expect(secondEphemeralTask.state.count).to.eql(2); - - // await retry.try(async () => { - // // ensure new id is produced for second task execution - // expect( - // (await historyDocs()).filter((taskDoc) => taskDoc._source.taskId === ephemeralTask.id) - // .length - // ).to.eql(1); - // expect( - // (await historyDocs()).filter( - // (taskDoc) => taskDoc._source.taskId === secondEphemeralTask.id - // ).length - // ).to.eql(1); - // }); - // }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('Epheemral task run should only run one instance of a task if its maxConcurrency is 1', async () => { - // const ephemeralTaskWithSingleConcurrency: { - // state: { - // executions: Array<{ - // result: { - // id: string; - // state: { - // timings: Array<{ - // start: number; - // stop: number; - // }>; - // }; - // }; - // }>; - // }; - // } = await runEphemeralTaskNow({ - // taskType: 'taskWhichExecutesOtherTasksEphemerally', - // params: { - // tasks: [ - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // ], - // }, - // state: {}, - // }); - - // ensureOverlappingTasksDontExceedThreshold( - // ephemeralTaskWithSingleConcurrency.state.executions, - // // make sure each task intersects with any other task - // 0 - // ); - // }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('Ephemeral task run should only run as many instances of a task as its maxConcurrency will allow', async () => { - // const ephemeralTaskWithSingleConcurrency: { - // state: { - // executions: Array<{ - // result: { - // id: string; - // state: { - // timings: Array<{ - // start: number; - // stop: number; - // }>; - // }; - // }; - // }>; - // }; - // } = await runEphemeralTaskNow({ - // taskType: 'taskWhichExecutesOtherTasksEphemerally', - // params: { - // tasks: [ - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // ], - // }, - // state: {}, - // }); - - // ensureOverlappingTasksDontExceedThreshold( - // ephemeralTaskWithSingleConcurrency.state.executions, - // // make sure each task intersects with, at most, 1 other task - // 1 - // ); - // }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('Ephemeral task executions cant exceed the max workes in Task Manager', async () => { - // const ephemeralTaskWithSingleConcurrency: { - // state: { - // executions: Array<{ - // result: { - // id: string; - // state: { - // timings: Array<{ - // start: number; - // stop: number; - // }>; - // }; - // }; - // }>; - // }; - // } = await runEphemeralTaskNow({ - // taskType: 'taskWhichExecutesOtherTasksEphemerally', - // params: { - // tasks: times(20, () => ({ - // taskType: 'timedTask', - // params: { delay: 100 }, - // state: {}, - // })), - // }, - // state: {}, - // }); - - // ensureOverlappingTasksDontExceedThreshold( - // ephemeralTaskWithSingleConcurrency.state.executions, - // // make sure each task intersects with, at most, 9 other tasks (as max workes is 10) - // 9 - // ); - // }); }); // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 diff --git a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/_find.ts b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/_find.ts index 2ce44324f9bfe..7209af7343d1e 100644 --- a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/_find.ts +++ b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/_find.ts @@ -80,8 +80,9 @@ export default function (ftrContext: FtrProviderContext) { USERS.DEFAULT_SPACE_DASHBOARD_READ_USER, USERS.DEFAULT_SPACE_VISUALIZE_READ_USER, USERS.DEFAULT_SPACE_MAPS_READ_USER, + USERS.DEFAULT_SPACE_ADVANCED_SETTINGS_READ_USER, ], - noResults: [USERS.DEFAULT_SPACE_ADVANCED_SETTINGS_READ_USER], + noResults: [], unauthorized: [USERS.NOT_A_KIBANA_USER], }; diff --git a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get.ts b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get.ts index 25debcb2cc538..9348e458652e7 100644 --- a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get.ts +++ b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get.ts @@ -69,7 +69,7 @@ export default function (ftrContext: FtrProviderContext) { USERS.DEFAULT_SPACE_VISUALIZE_READ_USER, USERS.DEFAULT_SPACE_MAPS_READ_USER, ], - unauthorized: [USERS.NOT_A_KIBANA_USER, USERS.DEFAULT_SPACE_ADVANCED_SETTINGS_READ_USER], + unauthorized: [USERS.NOT_A_KIBANA_USER], }; const createUserTest = ( diff --git a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get_all.ts b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get_all.ts index 124fcea644c79..2d344a7179d9c 100644 --- a/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get_all.ts +++ b/x-pack/test/saved_object_tagging/api_integration/security_and_spaces/apis/get_all.ts @@ -86,7 +86,7 @@ export default function (ftrContext: FtrProviderContext) { USERS.DEFAULT_SPACE_VISUALIZE_READ_USER, USERS.DEFAULT_SPACE_MAPS_READ_USER, ], - unauthorized: [USERS.NOT_A_KIBANA_USER, USERS.DEFAULT_SPACE_ADVANCED_SETTINGS_READ_USER], + unauthorized: [USERS.NOT_A_KIBANA_USER], }; const createUserTest = ( diff --git a/x-pack/test/security_solution_api_integration/config/ess/config.base.ts b/x-pack/test/security_solution_api_integration/config/ess/config.base.ts index 25b7a40c9701e..8314b841e2533 100644 --- a/x-pack/test/security_solution_api_integration/config/ess/config.base.ts +++ b/x-pack/test/security_solution_api_integration/config/ess/config.base.ts @@ -5,6 +5,8 @@ * 2.0. */ +import path from 'path'; + import { CA_CERT_PATH } from '@kbn/dev-utils'; import { FtrConfigProviderContext, kbnTestConfig, kibanaTestUser } from '@kbn/test'; import { services as baseServices } from './services'; @@ -86,6 +88,11 @@ export function createTestConfig(options: CreateTestConfigOptions, testFiles?: s 'riskScoringRoutesEnabled', 'alertSuppressionForSequenceEqlRuleEnabled', ])}`, + `--plugin-path=${path.resolve( + __dirname, + '../../../../../test/analytics/plugins/analytics_ftr_helpers' + )}`, + '--xpack.task_manager.poll_interval=1000', `--xpack.actions.preconfigured=${JSON.stringify(PRECONFIGURED_ACTION_CONNECTORS)}`, ...(ssl diff --git a/x-pack/test/security_solution_api_integration/config/ess/services.ts b/x-pack/test/security_solution_api_integration/config/ess/services.ts index e5f66d5c1928a..80d88350e6dd2 100644 --- a/x-pack/test/security_solution_api_integration/config/ess/services.ts +++ b/x-pack/test/security_solution_api_integration/config/ess/services.ts @@ -5,12 +5,14 @@ * 2.0. */ +import { KibanaEBTServerProvider } from '@kbn/test-suites-src/analytics/services/kibana_ebt'; +import { SecuritySolutionESSUtils } from '../services/security_solution_ess_utils'; import { SpacesServiceProvider } from '../../../common/services/spaces'; import { services as essServices } from '../../../api_integration/services'; -import { SecuritySolutionESSUtils } from '../services/security_solution_ess_utils'; export const services = { ...essServices, spaces: SpacesServiceProvider, securitySolutionUtils: SecuritySolutionESSUtils, + kibana_ebt_server: KibanaEBTServerProvider, }; diff --git a/x-pack/test/security_solution_api_integration/config/serverless/config.base.ts b/x-pack/test/security_solution_api_integration/config/serverless/config.base.ts index c2371984512e1..8d3bea36a968b 100644 --- a/x-pack/test/security_solution_api_integration/config/serverless/config.base.ts +++ b/x-pack/test/security_solution_api_integration/config/serverless/config.base.ts @@ -4,6 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import path from 'path'; + import { FtrConfigProviderContext } from '@kbn/test'; import { services } from './services'; import { PRECONFIGURED_ACTION_CONNECTORS } from '../shared'; @@ -13,6 +15,7 @@ export interface CreateTestConfigOptions { junit: { reportName: string }; kbnTestServerArgs?: string[]; kbnTestServerEnv?: Record; + suiteTags?: { include?: string[]; exclude?: string[] }; } export function createTestConfig(options: CreateTestConfigOptions) { @@ -22,6 +25,7 @@ export function createTestConfig(options: CreateTestConfigOptions) { ); return { ...svlSharedConfig.getAll(), + suiteTags: options.suiteTags, services: { ...services, }, @@ -32,6 +36,10 @@ export function createTestConfig(options: CreateTestConfigOptions) { '--serverless=security', `--xpack.actions.preconfigured=${JSON.stringify(PRECONFIGURED_ACTION_CONNECTORS)}`, ...(options.kbnTestServerArgs || []), + `--plugin-path=${path.resolve( + __dirname, + '../../../../../test/analytics/plugins/analytics_ftr_helpers' + )}`, ], env: { ...svlSharedConfig.get('kbnTestServer.env'), diff --git a/x-pack/test/security_solution_api_integration/config/serverless/services.ts b/x-pack/test/security_solution_api_integration/config/serverless/services.ts index a7e9be3588842..bfef9e1d4424b 100644 --- a/x-pack/test/security_solution_api_integration/config/serverless/services.ts +++ b/x-pack/test/security_solution_api_integration/config/serverless/services.ts @@ -7,6 +7,7 @@ import { SearchSecureService } from '@kbn/test-suites-serverless/shared/services/search_secure'; import { services as serverlessServices } from '@kbn/test-suites-serverless/api_integration/services'; +import { KibanaEBTServerProvider } from '@kbn/test-suites-src/analytics/services/kibana_ebt'; import { SpacesServiceProvider } from '../../../common/services/spaces'; import { SecuritySolutionServerlessUtils } from '../services/security_solution_serverless_utils'; import { SecuritySolutionServerlessSuperTest } from '../services/security_solution_serverless_supertest'; @@ -17,4 +18,5 @@ export const services = { secureSearch: SearchSecureService, securitySolutionUtils: SecuritySolutionServerlessUtils, supertest: SecuritySolutionServerlessSuperTest, + kibana_ebt_server: KibanaEBTServerProvider, }; diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/bootstrap_prebuilt_rules.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/bootstrap_prebuilt_rules.ts index 97287ef0cdb93..a437561ef0a04 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/bootstrap_prebuilt_rules.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/bootstrap_prebuilt_rules.ts @@ -18,7 +18,8 @@ export default ({ getService }: FtrProviderContext): void => { const supertest = getService('supertest'); const securitySolutionApi = getService('securitySolutionApi'); - describe('@ess @serverless @skipInServerlessMKI Bootstrap Prebuilt Rules', () => { + // FLAKY: https://github.com/elastic/kibana/issues/203632 + describe.skip('@ess @serverless @skipInServerlessMKI Bootstrap Prebuilt Rules', () => { beforeEach(async () => { await deletePrebuiltRulesFleetPackage(supertest); await deleteEndpointFleetPackage(supertest); diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.eql_query_fields.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.eql_query_fields.ts index eef3e4b6b7ce4..6c49f8722abd4 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.eql_query_fields.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.eql_query_fields.ts @@ -80,6 +80,46 @@ export default ({ getService }: FtrProviderContext): void => { expect(reviewResponse.stats.num_rules_with_conflicts).toBe(0); expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); }); + + it('should trim all whitespace before version comparison', async () => { + // Install base prebuilt detection rule + await createHistoricalPrebuiltRuleAssetSavedObjects(es, getRuleAssetSavedObjects()); + await installPrebuiltRules(es, supertest); + + // Customize an eql_query field on the installed rule + await updateRule(supertest, { + ...getPrebuiltRuleMock(), + rule_id: 'rule-1', + type: 'eql', + query: '\nquery where true\n', + language: 'eql', + filters: [], + } as RuleUpdateProps); + + // Add a v2 rule asset to make the upgrade possible, do NOT update the related eql_query field, and create the new rule assets + const updatedRuleAssetSavedObjects = [ + createRuleAssetSavedObject({ + rule_id: 'rule-1', + version: 2, + type: 'eql', + query: '\nquery where true', + language: 'eql', + filters: [], + }), + ]; + await createHistoricalPrebuiltRuleAssetSavedObjects(es, updatedRuleAssetSavedObjects); + + // Call the upgrade review prebuilt rules endpoint and check that there is 1 rule eligible for update but eql_query field is NOT returned + const reviewResponse = await reviewPrebuiltRulesToUpgrade(supertest); + const fieldDiffObject = reviewResponse.rules[0].diff.fields as AllFieldsDiff; + expect(fieldDiffObject.eql_query).toBeUndefined(); + + expect(reviewResponse.rules[0].diff.num_fields_with_updates).toBe(1); // `version` is considered an updated field + expect(reviewResponse.rules[0].diff.num_fields_with_conflicts).toBe(0); + expect(reviewResponse.rules[0].diff.num_fields_with_non_solvable_conflicts).toBe(0); + expect(reviewResponse.stats.num_rules_with_conflicts).toBe(0); + expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); + }); }); describe("when rule field doesn't have an update but has a custom value - scenario ABA", () => { diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.esql_query_fields.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.esql_query_fields.ts index 9561393e84549..d8329ce023ea6 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.esql_query_fields.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.esql_query_fields.ts @@ -78,6 +78,44 @@ export default ({ getService }: FtrProviderContext): void => { expect(reviewResponse.stats.num_rules_with_conflicts).toBe(0); expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); }); + + it('should trim all whitespace before version comparison', async () => { + // Install base prebuilt detection rule + await createHistoricalPrebuiltRuleAssetSavedObjects(es, getRuleAssetSavedObjects()); + await installPrebuiltRules(es, supertest); + + // Customize an esql_query field on the installed rule + await updateRule(supertest, { + ...getPrebuiltRuleMock(), + rule_id: 'rule-1', + type: 'esql', + query: '\tFROM query WHERE true\t', + language: 'esql', + } as RuleUpdateProps); + + // Add a v2 rule asset to make the upgrade possible, do NOT update the related esql_query field, and create the new rule assets + const updatedRuleAssetSavedObjects = [ + createRuleAssetSavedObject({ + rule_id: 'rule-1', + version: 2, + type: 'esql', + query: '\n\nFROM query WHERE true\n\n', + language: 'esql', + }), + ]; + await createHistoricalPrebuiltRuleAssetSavedObjects(es, updatedRuleAssetSavedObjects); + + // Call the upgrade review prebuilt rules endpoint and check that there is 1 rule eligible for update but esql_query field is NOT returned + const reviewResponse = await reviewPrebuiltRulesToUpgrade(supertest); + const fieldDiffObject = reviewResponse.rules[0].diff.fields as AllFieldsDiff; + expect(fieldDiffObject.esql_query).toBeUndefined(); + + expect(reviewResponse.rules[0].diff.num_fields_with_updates).toBe(1); // `version` is considered an updated field + expect(reviewResponse.rules[0].diff.num_fields_with_conflicts).toBe(0); + expect(reviewResponse.rules[0].diff.num_fields_with_non_solvable_conflicts).toBe(0); + expect(reviewResponse.stats.num_rules_with_conflicts).toBe(0); + expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); + }); }); describe("when rule field doesn't have an update but has a custom value - scenario ABA", () => { diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.kql_query_fields.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.kql_query_fields.ts index e8f9d2f48b9e0..d00d2d842f2ba 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.kql_query_fields.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.kql_query_fields.ts @@ -133,6 +133,52 @@ export default ({ getService }: FtrProviderContext): void => { expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); }); }); + + describe('when all query versions have different surrounding whitespace', () => { + it('should not show in the upgrade/_review API response', async () => { + // Install base prebuilt detection rule + await createHistoricalPrebuiltRuleAssetSavedObjects( + es, + getQueryRuleAssetSavedObjects() + ); + await installPrebuiltRules(es, supertest); + + // Customize a kql_query field on the installed rule + await updateRule(supertest, { + ...getPrebuiltRuleMock(), + rule_id: 'rule-1', + type: 'query', + query: '\nquery string = true', + language: 'kuery', + filters: [], + saved_id: undefined, + } as RuleUpdateProps); + + // Add a v2 rule asset to make the upgrade possible, do NOT update the related kql_query field, and create the new rule assets + const updatedRuleAssetSavedObjects = [ + createRuleAssetSavedObject({ + rule_id: 'rule-1', + version: 2, + type: 'query', + query: 'query string = true\n', + language: 'kuery', + filters: [], + }), + ]; + await createHistoricalPrebuiltRuleAssetSavedObjects(es, updatedRuleAssetSavedObjects); + + // Call the upgrade review prebuilt rules endpoint and check that there is 1 rule eligible for update but kql_query field is NOT returned + const reviewResponse = await reviewPrebuiltRulesToUpgrade(supertest); + const fieldDiffObject = reviewResponse.rules[0].diff.fields as AllFieldsDiff; + expect(fieldDiffObject.kql_query).toBeUndefined(); + + expect(reviewResponse.rules[0].diff.num_fields_with_updates).toBe(1); // `version` is considered an updated field + expect(reviewResponse.rules[0].diff.num_fields_with_conflicts).toBe(0); + expect(reviewResponse.rules[0].diff.num_fields_with_non_solvable_conflicts).toBe(0); + expect(reviewResponse.stats.num_rules_with_conflicts).toBe(0); + expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); + }); + }); }); describe("when rule field doesn't have an update but has a custom value - scenario ABA", () => { diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.single_line_string_fields.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.single_line_string_fields.ts index 6fe10b9fa6012..6d32d8df7bc72 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.single_line_string_fields.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/upgrade_review_prebuilt_rules.single_line_string_fields.ts @@ -69,6 +69,41 @@ export default ({ getService }: FtrProviderContext): void => { expect(reviewResponse.stats.num_rules_with_conflicts).toBe(0); expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); }); + + it('should trim all whitespace before version comparison', async () => { + // Install base prebuilt detection rule + await createHistoricalPrebuiltRuleAssetSavedObjects(es, getRuleAssetSavedObjects()); + await installPrebuiltRules(es, supertest); + + // Customize a single line string field on the installed rule + await patchRule(supertest, log, { + rule_id: 'rule-1', + name: 'A\n', + }); + + // Increment the version of the installed rule, do NOT update the related single line string field, and create the new rule assets + const updatedRuleAssetSavedObjects = [ + createRuleAssetSavedObject({ + rule_id: 'rule-1', + name: '\nA', + version: 2, + }), + ]; + await createHistoricalPrebuiltRuleAssetSavedObjects(es, updatedRuleAssetSavedObjects); + + // Call the upgrade review prebuilt rules endpoint and check that there is 1 rule eligible for update + // but single line string field (name) is NOT returned + const reviewResponse = await reviewPrebuiltRulesToUpgrade(supertest); + expect(reviewResponse.rules[0].diff.fields.name).toBeUndefined(); + + expect(reviewResponse.rules[0].diff.num_fields_with_updates).toBe(1); + expect(reviewResponse.rules[0].diff.num_fields_with_conflicts).toBe(0); + expect(reviewResponse.rules[0].diff.num_fields_with_non_solvable_conflicts).toBe(0); + + expect(reviewResponse.stats.num_rules_to_upgrade_total).toBe(1); + expect(reviewResponse.stats.num_rules_with_conflicts).toBe(0); + expect(reviewResponse.stats.num_rules_with_non_solvable_conflicts).toBe(0); + }); }); describe("when rule field doesn't have an update but has a custom value - scenario ABA", () => { diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry/trial_license_complete_tier/task_based/all_types.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry/trial_license_complete_tier/task_based/all_types.ts index d13e74724c818..4b22a4b590621 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry/trial_license_complete_tier/task_based/all_types.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry/trial_license_complete_tier/task_based/all_types.ts @@ -47,40 +47,70 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getSecurityTelemetryStats(supertest, log); removeExtraFieldsFromTelemetryStats(stats); - expect(stats).to.eql({ - detection_rules: [ - [ - { - name: 'security:telemetry-detection-rules', - passed: true, - }, - ], + + expect(stats.detection_rules).to.eql([ + [ + { + name: 'security:telemetry-detection-rules', + passed: true, + }, ], - security_lists: [ - [ - { - name: 'security:telemetry-lists', - passed: true, - }, - ], + ]); + + expect(stats.security_lists).to.eql([ + [ + { + name: 'security:telemetry-lists', + passed: true, + }, ], - endpoints: [ - [ - { - name: 'security:endpoint-meta-telemetry', - passed: true, - }, - ], + ]); + + expect(stats.endpoints).to.eql([ + [ + { + name: 'security:endpoint-meta-telemetry', + passed: true, + }, ], - diagnostics: [ - [ - { - name: 'security:endpoint-diagnostics', - passed: true, - }, - ], + ]); + + expect(stats.diagnostics).to.eql([ + [ + { + name: 'security:endpoint-diagnostics', + passed: true, + }, ], - }); + ]); + + expect(stats.indices_metadata).to.be.an('array'); + const events = stats.indices_metadata as any[]; + + expect(events).to.not.be.empty(); + + const eventTypes = events.map((e) => e.eventType); + expect(eventTypes).to.contain('telemetry_index_stats_event'); + expect(eventTypes).to.contain('telemetry_data_stream_event'); + + const indicesStats = events.find((e) => e.eventType === 'telemetry_index_stats_event'); + expect(indicesStats).to.be.ok(); + expect(indicesStats.eventData).to.be.ok(); + expect(indicesStats.eventData.items).to.not.be.empty(); + expect(indicesStats.eventData.items[0]).to.have.keys( + 'index_name', + 'query_total', + 'query_time_in_millis', + 'docs_count', + 'docs_deleted', + 'docs_total_size_in_bytes' + ); + + const dataStreamStats = events.find((e) => e.eventType === 'telemetry_data_stream_event'); + expect(dataStreamStats).to.be.ok(); + expect(dataStreamStats.eventData).to.be.ok(); + expect(dataStreamStats.eventData.items).to.not.be.empty(); + expect(dataStreamStats.eventData.items[0]).to.have.keys('datastream_name', 'indices'); }); }); }); diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/telemetry/remove_time_fields_from_telemetry_stats.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/telemetry/remove_time_fields_from_telemetry_stats.ts index 2d27b375684ba..b835832fcb550 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/telemetry/remove_time_fields_from_telemetry_stats.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/utils/telemetry/remove_time_fields_from_telemetry_stats.ts @@ -5,19 +5,29 @@ * 2.0. */ -import { unset } from 'lodash'; - export const removeExtraFieldsFromTelemetryStats = (stats: any) => { - Object.entries(stats).forEach(([, value]: [unknown, any]) => { - value.forEach((entry: any, i: number) => { - entry.forEach((_e: any, j: number) => { - unset(value, `[${i}][${j}].time_executed_in_ms`); - unset(value, `[${i}][${j}].start_time`); - unset(value, `[${i}][${j}].end_time`); - unset(value, `[${i}][${j}].cluster_uuid`); - unset(value, `[${i}][${j}].cluster_name`); - unset(value, `[${i}][${j}].license`); - }); - }); - }); + removeExtraFields(stats, [ + 'time_executed_in_ms', + 'start_time', + 'end_time', + 'cluster_uuid', + 'cluster_name', + 'license', + ]); }; + +function removeExtraFields(obj: any, fields: string[]): void { + function traverseAndRemove(o: any): void { + if (typeof o !== 'object' || o === null) return; + + for (const key in o) { + if (fields.includes(key)) { + delete o[key]; + } else if (typeof o[key] === 'object') { + traverseAndRemove(o[key]); + } + } + } + + traverseAndRemove(obj); +} diff --git a/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/authentication/trial_license_complete_tier/endpoint_authz.ts b/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/authentication/trial_license_complete_tier/endpoint_authz.ts index df2f55ccb8d04..56b3328112e7c 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/authentication/trial_license_complete_tier/endpoint_authz.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/authentication/trial_license_complete_tier/endpoint_authz.ts @@ -40,7 +40,9 @@ export default function ({ getService }: FtrProviderContext) { } // @skipInServerlessMKI - this test uses internal index manipulation in before/after hooks // @skipInServerlessMKI - if you are removing this annotation, make sure to add the test suite to the MKI pipeline in .buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_defend_workflows.yml - describe('@ess @serverless @skipInServerlessMKI When attempting to call an endpoint api', function () { + // FLAKY: https://github.com/elastic/kibana/issues/203909 + // FLAKY: https://github.com/elastic/kibana/issues/203910 + describe.skip('@ess @serverless @skipInServerlessMKI When attempting to call an endpoint api', function () { let indexedData: IndexedHostsAndAlertsResponse; let actionId = ''; let agentId = ''; diff --git a/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/policy_response/trial_license_complete_tier/policy_response.ts b/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/policy_response/trial_license_complete_tier/policy_response.ts index f3f49ffbc7c1f..a737b337faffe 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/policy_response/trial_license_complete_tier/policy_response.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/policy_response/trial_license_complete_tier/policy_response.ts @@ -13,7 +13,9 @@ export default function ({ getService }: FtrProviderContext) { const utils = getService('securitySolutionUtils'); const endpointTestresources = getService('endpointTestResources'); - describe('@ess @serverless @skipInServerlessMKI Endpoint policy response api', function () { + // FLAKY: https://github.com/elastic/kibana/issues/203908 + // Failing: See https://github.com/elastic/kibana/issues/203903 + describe.skip('@ess @serverless @skipInServerlessMKI Endpoint policy response api', function () { let adminSupertest: TestAgent; before(async () => { diff --git a/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/response_actions/trial_license_complete_tier/execute.ts b/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/response_actions/trial_license_complete_tier/execute.ts index 13afbf6e4551c..a82487c31eff9 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/response_actions/trial_license_complete_tier/execute.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/response_actions/trial_license_complete_tier/execute.ts @@ -23,7 +23,9 @@ export default function ({ getService }: FtrProviderContext) { const utils = getService('securitySolutionUtils'); // @skipInServerlessMKI - this test uses internal index manipulation in before/after hooks - describe('@ess @serverless @skipInServerlessMKI Endpoint `execute` response action', function () { + // FLAKY: https://github.com/elastic/kibana/issues/203906 + // Failing: See https://github.com/elastic/kibana/issues/203897 + describe.skip('@ess @serverless @skipInServerlessMKI Endpoint `execute` response action', function () { let indexedData: IndexedHostsAndAlertsResponse; let agentId = ''; let t1AnalystSupertest: TestAgent; diff --git a/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/spaces/trial_license_complete_tier/space_awareness.ts b/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/spaces/trial_license_complete_tier/space_awareness.ts index 9c83451111f95..38710b65465c7 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/spaces/trial_license_complete_tier/space_awareness.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/spaces/trial_license_complete_tier/space_awareness.ts @@ -24,7 +24,9 @@ export default function ({ getService }: FtrProviderContext) { const kbnServer = getService('kibanaServer'); const log = getService('log'); - describe('@ess @serverless @skipInServerlessMKI Endpoint management space awareness support', function () { + // FLAKY: https://github.com/elastic/kibana/issues/203893 + // Failing: See https://github.com/elastic/kibana/issues/203898 + describe.skip('@ess @serverless @skipInServerlessMKI Endpoint management space awareness support', function () { let adminSupertest: TestAgent; let dataSpaceA: Awaited>; let dataSpaceB: Awaited>; diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/utils/ingest.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/utils/ingest.ts index 24f7d759190b5..aec5812332ab2 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/utils/ingest.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/utils/ingest.ts @@ -31,7 +31,6 @@ export const applyIngestProcessorToDoc = async ( const firstDoc = res.docs?.[0]; - // @ts-expect-error error is not in the types const error = firstDoc?.error; if (error) { log.error('Full painless error below: '); diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/index.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/index.ts index 2aa04a898a449..3aee9687843bf 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/index.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/index.ts @@ -21,5 +21,6 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./asset_criticality_csv_upload')); loadTestFile(require.resolve('./risk_score_entity_calculation')); loadTestFile(require.resolve('./risk_engine_schedule_now')); + loadTestFile(require.resolve('./risk_engine_so_config')); }); } diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/risk_engine_so_config.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/risk_engine_so_config.ts new file mode 100644 index 0000000000000..8b780d0540dca --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/risk_engine_so_config.ts @@ -0,0 +1,143 @@ +/* + * 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 expect from '@kbn/expect'; +import { riskEngineConfigurationTypeName } from '@kbn/security-solution-plugin/server/lib/entity_analytics/risk_engine/saved_object'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; +import { + riskEngineRouteHelpersFactory, + getRiskEngineConfigSO, + waitForRiskEngineRun, + waitForRiskEngineTaskToBeGone, +} from '../../utils'; + +export default ({ getService }: FtrProviderContext) => { + const spaceName = 'space1'; + const supertest = getService('supertest'); + const riskEngineRoutes = riskEngineRouteHelpersFactory(supertest); + const riskEngineRoutesForNamespace = riskEngineRouteHelpersFactory(supertest, spaceName); + const kibanaServer = getService('kibanaServer'); + const esArchiver = getService('esArchiver'); + + describe('@ess @ serverless @serverless QA risk_engine_so_update_config', () => { + before(async () => { + const soId = await kibanaServer.savedObjects.find({ + type: riskEngineConfigurationTypeName, + space: spaceName, + }); + if (soId.saved_objects.length !== 0) { + await kibanaServer.savedObjects.delete({ + type: riskEngineConfigurationTypeName, + space: spaceName, + id: soId.saved_objects[0].id, + }); + } + const soId2 = await kibanaServer.savedObjects.find({ + type: riskEngineConfigurationTypeName, + }); + if (soId2.saved_objects.length !== 0) { + await kibanaServer.savedObjects.delete({ + type: riskEngineConfigurationTypeName, + id: soId2.saved_objects[0].id, + }); + } + await esArchiver.load('x-pack/test/functional/es_archives/security_solution/ecs_compliant'); + }); + + after(async () => { + const soId = await kibanaServer.savedObjects.find({ + type: riskEngineConfigurationTypeName, + space: spaceName, + }); + if (soId.saved_objects.length !== 0) { + await kibanaServer.savedObjects.delete({ + type: riskEngineConfigurationTypeName, + space: spaceName, + id: soId.saved_objects[0].id, + }); + } + const soId2 = await kibanaServer.savedObjects.find({ + type: riskEngineConfigurationTypeName, + }); + if (soId2.saved_objects.length !== 0) { + await kibanaServer.savedObjects.delete({ + type: riskEngineConfigurationTypeName, + id: soId2.saved_objects[0].id, + }); + } + await esArchiver.unload('x-pack/test/functional/es_archives/security_solution/ecs_compliant'); + }); + + it('should include the right keys as per the update', async () => { + await riskEngineRoutes.init(); + await waitForRiskEngineRun; + + const currentSoConfig = await getRiskEngineConfigSO({ kibanaServer }); + + expect(currentSoConfig.attributes).to.not.have.property('excludeAlertTags'); + expect(currentSoConfig.attributes).to.not.have.property('excludeAlertStatuses'); + + const updatedSoBody = { + exclude_alert_tags: ['False Positive'], + exclude_alert_statuses: ['open'], + }; + + await riskEngineRoutes.soConfig(updatedSoBody, 200); + const currentSoConfig2 = await getRiskEngineConfigSO({ kibanaServer }); + + expect(currentSoConfig2.attributes).to.have.property('excludeAlertTags'); + expect(currentSoConfig2.attributes).to.have.property('excludeAlertStatuses'); + + await riskEngineRoutes.disable(); + await waitForRiskEngineTaskToBeGone; + + updatedSoBody.exclude_alert_statuses = []; + + await riskEngineRoutes.soConfig(updatedSoBody, 200); + + await riskEngineRoutes.enable(); + await waitForRiskEngineRun; + + const currentSoConfig3 = await getRiskEngineConfigSO({ kibanaServer }); + expect(JSON.stringify(currentSoConfig3.attributes.excludeAlertStatuses)).to.equal( + JSON.stringify(updatedSoBody.exclude_alert_statuses) + ); + }); + + it('should succeed while updating the saved object', async () => { + await riskEngineRoutes.init(); + await waitForRiskEngineRun; + + const updatedSoBody = { + exclude_alert_tags: ['False Positive'], + exclude_alert_statuses: ['open'], + }; + const response = await riskEngineRoutes.soConfig(updatedSoBody); + expect(response.status).to.equal(200); + }); + + it('should update the config in the right space', async () => { + await riskEngineRoutesForNamespace.init(); + await riskEngineRoutes.init(); + await waitForRiskEngineRun; + + const updatedSoBody = { + exclude_alert_tags: ['False Positive'], + exclude_alert_statuses: ['open', 'closed'], + }; + + await riskEngineRoutesForNamespace.soConfig(updatedSoBody, 200); + const currentSoConfig = await getRiskEngineConfigSO({ kibanaServer, space: 'space1' }); + + expect(currentSoConfig.namespaces).to.eql(['space1']); + expect(currentSoConfig.attributes.excludeAlertTags).to.eql(updatedSoBody.exclude_alert_tags); + expect(currentSoConfig.attributes.excludeAlertStatuses).to.eql( + updatedSoBody.exclude_alert_statuses + ); + }); + }); +}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts index 0a88e9fbe2518..b90ef13a735f7 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts @@ -24,6 +24,7 @@ import { RISK_ENGINE_PRIVILEGES_URL, RISK_ENGINE_CLEANUP_URL, RISK_ENGINE_SCHEDULE_NOW_URL, + RISK_ENGINE_CONFIGURE_SO_URL, } from '@kbn/security-solution-plugin/common/constants'; import { MappingTypeMapping } from '@elastic/elasticsearch/lib/api/types'; import { removeLegacyTransforms } from '@kbn/security-solution-plugin/server/lib/entity_analytics/utils/transforms'; @@ -365,9 +366,16 @@ export const waitForRiskScoresToBeGone = async ({ ); }; -export const getRiskEngineConfigSO = async ({ kibanaServer }: { kibanaServer: KbnClient }) => { +export const getRiskEngineConfigSO = async ({ + kibanaServer, + space, +}: { + kibanaServer: KbnClient; + space?: string; +}) => { const soResponse = await kibanaServer.savedObjects.find({ type: riskEngineConfigurationTypeName, + space, }); return soResponse?.saved_objects?.[0]; @@ -580,6 +588,17 @@ export const riskEngineRouteHelpersFactory = (supertest: SuperTest.Agent, namesp assertStatusCode(expectStatusCode, response); return response; }, + + soConfig: async (configParams: {}, expectStatusCode: number = 200) => { + const response = await supertest + .put(routeWithNamespace(RISK_ENGINE_CONFIGURE_SO_URL, namespace)) + .set('kbn-xsrf', 'true') + .set('elastic-api-version', '2023-10-31') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(configParams); + assertStatusCode(expectStatusCode, response); + return response; + }, }; }; diff --git a/x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/ess.config.ts b/x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/ess.config.ts new file mode 100644 index 0000000000000..5a4bfb39f41f0 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/ess.config.ts @@ -0,0 +1,23 @@ +/* + * 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 { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile( + require.resolve('../../../config/ess/config.base.basic') + ); + + return { + ...functionalConfig.getAll(), + uiSettings: {}, + testFiles: [require.resolve('..')], + junit: { + reportName: 'Security Solution - Telemetry Integration Tests - ESS Env', + }, + }; +} diff --git a/x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/serverless.config.ts b/x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/serverless.config.ts new file mode 100644 index 0000000000000..5c47f36439393 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/telemetry/configs/serverless.config.ts @@ -0,0 +1,16 @@ +/* + * 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 { createTestConfig } from '../../../config/serverless/config.base'; + +export default createTestConfig({ + testFiles: [require.resolve('..')], + suiteTags: { exclude: ['skipServerless'] }, + junit: { + reportName: 'Security Solution - Telemetry Integration Tests - Serverless Env', + }, +}); diff --git a/x-pack/test/security_solution_api_integration/test_suites/telemetry/index.ts b/x-pack/test/security_solution_api_integration/test_suites/telemetry/index.ts new file mode 100644 index 0000000000000..ff88de12d7124 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/telemetry/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 { FtrProviderContext } from '../../ftr_provider_context'; + +export default ({ loadTestFile }: FtrProviderContext): void => { + describe('Security Solution - Telemetry', function () { + loadTestFile(require.resolve('./tasks/indices_metadata')); + }); +}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/telemetry/tasks/indices_metadata.ts b/x-pack/test/security_solution_api_integration/test_suites/telemetry/tasks/indices_metadata.ts new file mode 100644 index 0000000000000..c7d365baab767 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/telemetry/tasks/indices_metadata.ts @@ -0,0 +1,175 @@ +/* + * 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 { + TELEMETRY_DATA_STREAM_EVENT, + TELEMETRY_ILM_POLICY_EVENT, + TELEMETRY_ILM_STATS_EVENT, + TELEMETRY_INDEX_STATS_EVENT, +} from '@kbn/security-solution-plugin/server/lib/telemetry/event_based/events'; + +import { FtrProviderContext } from '../../../ftr_provider_context'; +import { + cleanupDatastreams, + cleanupPolicies, + ensureBackingIndices, + launchTask, + randomDatastream, + randomIlmPolicy, + taskHasRun, + waitFor, +} from '../../../../common/utils/security_solution'; + +const TASK_ID = 'security:indices-metadata-telemetry:1.0.0'; +const NUM_INDICES = 5; + +export default ({ getService }: FtrProviderContext) => { + const ebtServer = getService('kibana_ebt_server'); + const kibanaServer = getService('kibanaServer'); + const logger = getService('log'); + const es = getService('es'); + + describe('Indices metadata task telemetry', function () { + let dsName: string; + let policyName: string; + + describe('@ess @serverless indices metadata', () => { + beforeEach(async () => { + dsName = await randomDatastream(es); + await ensureBackingIndices(dsName, NUM_INDICES, es); + }); + + afterEach(async () => { + await cleanupDatastreams(es); + }); + + it('should publish data stream events', async () => { + const runAt = await launchTask(TASK_ID, kibanaServer, logger); + + const opts = { + eventTypes: [TELEMETRY_DATA_STREAM_EVENT.eventType], + withTimeoutMs: 1000, + fromTimestamp: new Date().toISOString(), + }; + + await waitFor( + async () => { + const events = await ebtServer + .getEvents(Number.MAX_SAFE_INTEGER, opts) + .then((result) => result.map((ev) => ev.properties.items)) + .then((result) => result.flat()) + .then((result) => result.filter((ev) => (ev as any).datastream_name === dsName)); + + const hasRun = await taskHasRun(TASK_ID, kibanaServer, runAt); + const eventCount = events.length; + + return hasRun && eventCount === 1; + }, + 'waitForTaskToRun', + logger + ); + }); + + it('should publish index stats events', async () => { + const runAt = await launchTask(TASK_ID, kibanaServer, logger); + + const opts = { + eventTypes: [TELEMETRY_INDEX_STATS_EVENT.eventType], + withTimeoutMs: 1000, + fromTimestamp: new Date().toISOString(), + }; + + // .ds--YYYY.MM.DD-NNNNNN + const regex = new RegExp(`^\.ds-${dsName}-\\d{4}.\\d{2}.\\d{2}-\\d{6}$`); + await waitFor( + async () => { + const events = await ebtServer + .getEvents(Number.MAX_SAFE_INTEGER, opts) + .then((result) => result.map((ev) => ev.properties.items)) + .then((result) => result.flat()) + .then((result) => + result.filter((ev) => regex.test((ev as any).index_name as string)) + ); + + const hasRun = await taskHasRun(TASK_ID, kibanaServer, runAt); + + return hasRun && events.length === NUM_INDICES; + }, + 'waitForTaskToRun', + logger + ); + }); + }); + + describe('@ess indices metadata', function () { + this.tags('skipServerless'); + + beforeEach(async () => { + policyName = await randomIlmPolicy(es); + dsName = await randomDatastream(es, policyName); + await ensureBackingIndices(dsName, NUM_INDICES, es); + }); + + afterEach(async () => { + await cleanupDatastreams(es); + await cleanupPolicies(es); + }); + + it('should publish ilm policy events', async () => { + const runAt = await launchTask(TASK_ID, kibanaServer, logger); + + const opts = { + eventTypes: [TELEMETRY_ILM_POLICY_EVENT.eventType], + withTimeoutMs: 1000, + fromTimestamp: new Date().toISOString(), + }; + + await waitFor( + async () => { + const events = await ebtServer + .getEvents(Number.MAX_SAFE_INTEGER, opts) + .then((result) => result.map((ev) => ev.properties.items)) + .then((result) => result.flat()) + .then((result) => result.filter((ev) => (ev as any).policy_name === policyName)); + + const hasRun = await taskHasRun(TASK_ID, kibanaServer, runAt); + + return hasRun && events.length === 1; + }, + 'waitForTaskToRun', + logger + ); + }); + + it('should publish ilm stats events', async () => { + const runAt = await launchTask(TASK_ID, kibanaServer, logger); + + const opts = { + eventTypes: [TELEMETRY_ILM_STATS_EVENT.eventType], + withTimeoutMs: 1000, + fromTimestamp: new Date().toISOString(), + }; + + await waitFor( + async () => { + const events = await ebtServer + .getEvents(Number.MAX_SAFE_INTEGER, opts) + .then((result) => result.map((ev) => ev.properties.items)) + .then((result) => result.flat()) + .then((result) => result.filter((ev) => (ev as any).policy_name === policyName)); + + const hasRun = await taskHasRun(TASK_ID, kibanaServer, runAt); + + return hasRun && events.length === NUM_INDICES; + }, + 'waitForTaskToRun', + logger + ); + }); + }); + }); +}; diff --git a/x-pack/test/security_solution_api_integration/tsconfig.json b/x-pack/test/security_solution_api_integration/tsconfig.json index e13f4bd61520d..26f1ee30916dc 100644 --- a/x-pack/test/security_solution_api_integration/tsconfig.json +++ b/x-pack/test/security_solution_api_integration/tsconfig.json @@ -52,5 +52,6 @@ "@kbn/ftr-common-functional-ui-services", "@kbn/spaces-plugin", "@kbn/elastic-assistant-plugin", + "@kbn/test-suites-src", ] } diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_analytics_management_page.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_analytics_management_page.cy.ts index b8d222471c87e..5059eab2cfb41 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_analytics_management_page.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/entity_analytics_management_page.cy.ts @@ -7,15 +7,9 @@ import { PAGE_TITLE, - HOST_RISK_PREVIEW_TABLE, - HOST_RISK_PREVIEW_TABLE_ROWS, - USER_RISK_PREVIEW_TABLE, - USER_RISK_PREVIEW_TABLE_ROWS, RISK_PREVIEW_ERROR, - LOCAL_QUERY_BAR_SELECTOR, RISK_SCORE_ERROR_PANEL, RISK_SCORE_STATUS, - LOCAL_QUERY_BAR_SEARCH_INPUT_SELECTOR, } from '../../screens/entity_analytics_management'; import { deleteRiskScore, installRiskScoreModule } from '../../tasks/api_calls/risk_scores'; @@ -31,8 +25,6 @@ import { interceptRiskPreviewSuccess, interceptRiskInitError, } from '../../tasks/api_calls/risk_engine'; -import { updateDateRangeInLocalDatePickers } from '../../tasks/date_picker'; -import { submitLocalSearch } from '../../tasks/search_bar'; import { riskEngineStatusChange, upgradeRiskEngine, @@ -65,31 +57,6 @@ describe( }); describe('Risk preview', () => { - it('risk scores reacts on change in datepicker', () => { - const START_DATE = 'Jan 18, 2019 @ 20:33:29.186'; - const END_DATE = 'Jan 19, 2019 @ 20:33:29.186'; - - cy.get(HOST_RISK_PREVIEW_TABLE_ROWS).should('have.length', 5); - cy.get(USER_RISK_PREVIEW_TABLE_ROWS).should('have.length', 5); - - updateDateRangeInLocalDatePickers(LOCAL_QUERY_BAR_SELECTOR, START_DATE, END_DATE); - - cy.get(HOST_RISK_PREVIEW_TABLE).contains('No items found'); - cy.get(USER_RISK_PREVIEW_TABLE).contains('No items found'); - }); - - it('risk scores reacts on change in search bar query', () => { - cy.get(HOST_RISK_PREVIEW_TABLE_ROWS).should('have.length', 5); - cy.get(USER_RISK_PREVIEW_TABLE_ROWS).should('have.length', 5); - cy.get(LOCAL_QUERY_BAR_SEARCH_INPUT_SELECTOR).type('host.name: "test-host1"'); - submitLocalSearch(LOCAL_QUERY_BAR_SELECTOR); - - cy.get(HOST_RISK_PREVIEW_TABLE_ROWS).should('have.length', 1); - cy.get(HOST_RISK_PREVIEW_TABLE_ROWS).contains('test-host1'); - cy.get(USER_RISK_PREVIEW_TABLE_ROWS).should('have.length', 1); - cy.get(USER_RISK_PREVIEW_TABLE_ROWS).contains('test1'); - }); - it('show error panel if API returns error and then try to refetch data', () => { interceptRiskPreviewError(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts index 9d5b77919d548..efd8635d78cd6 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/sourcerer/sourcerer_timeline.cy.ts @@ -40,7 +40,8 @@ import { closeTimeline, openTimelineById } from '../../../tasks/timeline'; const siemDataViewTitle = 'Security Default Data View'; const dataViews = ['logs-*', 'metrics-*', '.kibana-event-log-*']; -describe('Timeline scope', { tags: ['@ess', '@serverless', '@skipInServerless'] }, () => { +// FLAKY: https://github.com/elastic/kibana/issues/198944 +describe.skip('Timeline scope', { tags: ['@ess', '@serverless', '@skipInServerless'] }, () => { before(() => { waitForRulesBootstrap(); }); diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts index f11b032d6351b..f25d362f0d798 100644 --- a/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/index.ts @@ -12,7 +12,9 @@ import { FtrProviderContext } from '../../configs/ftr_provider_context'; export default function (providerContext: FtrProviderContext) { const { loadTestFile, getService, getPageObjects } = providerContext; - describe('endpoint', function () { + // FLAKY: https://github.com/elastic/kibana/issues/180401 + // FLAKY: https://github.com/elastic/kibana/issues/203894 + describe.skip('endpoint', function () { const ingestManager = getService('ingestManager'); const log = getService('log'); const endpointTestResources = getService('endpointTestResources'); diff --git a/x-pack/test/security_solution_endpoint/apps/integrations/index.ts b/x-pack/test/security_solution_endpoint/apps/integrations/index.ts index 037ee3d60ec3e..5024b6d16739b 100644 --- a/x-pack/test/security_solution_endpoint/apps/integrations/index.ts +++ b/x-pack/test/security_solution_endpoint/apps/integrations/index.ts @@ -12,7 +12,9 @@ import { FtrProviderContext } from '../../configs/ftr_provider_context'; export default function (providerContext: FtrProviderContext) { const { loadTestFile, getService, getPageObjects } = providerContext; - describe('integrations', function () { + // FLAKY: https://github.com/elastic/kibana/issues/203916 + // FLAKY: https://github.com/elastic/kibana/issues/180401 + describe.skip('integrations', function () { const ingestManager = getService('ingestManager'); const log = getService('log'); const endpointTestResources = getService('endpointTestResources'); diff --git a/x-pack/test/task_manager_claimer_update_by_query/config.ts b/x-pack/test/task_manager_claimer_update_by_query/config.ts index ddae0d7b04d36..0d6f89b1c11a3 100644 --- a/x-pack/test/task_manager_claimer_update_by_query/config.ts +++ b/x-pack/test/task_manager_claimer_update_by_query/config.ts @@ -30,8 +30,6 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { '--xpack.eventLog.indexEntries=true', '--xpack.task_manager.claim_strategy="update_by_query"', '--xpack.task_manager.monitored_aggregated_stats_refresh_rate=5000', - '--xpack.task_manager.ephemeral_tasks.enabled=false', - '--xpack.task_manager.ephemeral_tasks.request_capacity=100', '--xpack.task_manager.metrics_reset_interval=40000', `--xpack.stack_connectors.enableExperimental=${JSON.stringify([ 'crowdstrikeConnectorOn', diff --git a/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/init_routes.ts b/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/init_routes.ts index acdbae0b00337..77cfc468f3f13 100644 --- a/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/init_routes.ts +++ b/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/init_routes.ts @@ -219,45 +219,6 @@ export function initRoutes( } ); - router.post( - { - path: `/api/sample_tasks/ephemeral_run_now`, - validate: { - body: schema.object({ - task: schema.object({ - taskType: schema.string(), - state: schema.recordOf(schema.string(), schema.any()), - params: schema.recordOf(schema.string(), schema.any()), - }), - }), - }, - }, - async function ( - context: RequestHandlerContext, - req: KibanaRequest< - any, - any, - { - task: { - taskType: string; - params: Record; - state: Record; - }; - }, - any - >, - res: KibanaResponseFactory - ): Promise> { - const { task } = req.body; - try { - const taskManager = await taskManagerStart; - return res.ok({ body: await taskManager.ephemeralRunNow(task) }); - } catch (err) { - return res.ok({ body: { task, error: `${err}` } }); - } - } - ); - router.post( { path: `/api/sample_tasks/ensure_scheduled`, diff --git a/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/plugin.ts b/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/plugin.ts index eceb750c207b8..c390d9388c937 100644 --- a/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/plugin.ts +++ b/x-pack/test/task_manager_claimer_update_by_query/plugins/sample_task_plugin_mget/server/plugin.ts @@ -15,7 +15,6 @@ import { TaskManagerSetupContract, TaskManagerStartContract, ConcreteTaskInstance, - EphemeralTask, } from '@kbn/task-manager-plugin/server'; import { DEFAULT_MAX_WORKERS } from '@kbn/task-manager-plugin/server/config'; import { TaskPriority } from '@kbn/task-manager-plugin/server/task'; @@ -45,8 +44,6 @@ export class SampleTaskManagerFixturePlugin const taskTestingEvents = new EventEmitter(); taskTestingEvents.setMaxListeners(DEFAULT_MAX_WORKERS * 2); - const tmStart = this.taskManagerStart; - const defaultSampleTaskConfig = { timeout: '1m', // This task allows tests to specify its behavior (whether it reschedules itself, whether it errors, etc) @@ -311,37 +308,6 @@ export class SampleTaskManagerFixturePlugin 'A task that can only have two concurrent instance and tracks its execution timing.', ...taskWithTiming, }, - taskWhichExecutesOtherTasksEphemerally: { - title: 'Task Which Executes Other Tasks Ephemerally', - description: 'A sample task used to validate how ephemeral tasks are executed.', - maxAttempts: 1, - timeout: '60s', - createTaskRunner: ({ taskInstance }: { taskInstance: ConcreteTaskInstance }) => ({ - async run() { - const { - params: { tasks = [] }, - } = taskInstance; - - const tm = await tmStart; - const executions = await Promise.all( - (tasks as EphemeralTask[]).map(async (task) => { - return tm - .ephemeralRunNow(task) - .then((result) => ({ - result, - })) - .catch((error) => ({ - error, - })); - }) - ); - - return { - state: { executions }, - }; - }, - }), - }, }); taskManager.addMiddleware({ diff --git a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/health_route.ts b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/health_route.ts index c5efe2622055e..607a67f92f68d 100644 --- a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/health_route.ts +++ b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/health_route.ts @@ -299,7 +299,6 @@ export default function ({ getService }: FtrProviderContext) { expect(typeof execution.duration.sampleTask.p95).to.eql('number'); expect(typeof execution.duration.sampleTask.p99).to.eql('number'); - expect(typeof execution.persistence.ephemeral).to.eql('number'); expect(typeof execution.persistence.non_recurring).to.eql('number'); expect(typeof execution.persistence.recurring).to.eql('number'); diff --git a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_management.ts b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_management.ts index f03023fb10ee8..33c72ffd1de95 100644 --- a/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_management.ts +++ b/x-pack/test/task_manager_claimer_update_by_query/test_suites/task_manager/task_management.ts @@ -200,20 +200,6 @@ export default function ({ getService }: FtrProviderContext) { .then((response: { body: BulkUpdateTaskResult }) => response.body); } - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // function runEphemeralTaskNow(task: { - // taskType: string; - // params: Record; - // state: Record; - // }) { - // return supertest - // .post('/api/sample_tasks/ephemeral_run_now') - // .set('kbn-xsrf', 'xxx') - // .send({ task }) - // .expect(200) - // .then((response) => response.body); - // } - function scheduleTaskIfNotExists(task: Partial) { return supertest .post('/api/sample_tasks/ensure_scheduled') @@ -915,196 +901,6 @@ export default function ({ getService }: FtrProviderContext) { expect(task.runAt).to.eql(scheduledRunAt); }); }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('should return the resulting task state when asked to run an ephemeral task now', async () => { - // const ephemeralTask = await runEphemeralTaskNow({ - // taskType: 'sampleTask', - // params: {}, - // state: {}, - // }); - - // await retry.try(async () => { - // expect( - // (await historyDocs()).filter((taskDoc) => taskDoc._source.taskId === ephemeralTask.id) - // .length - // ).to.eql(1); - - // expect(ephemeralTask.state.count).to.eql(1); - // }); - - // const secondEphemeralTask = await runEphemeralTaskNow({ - // taskType: 'sampleTask', - // params: {}, - // // pass state from previous ephemeral run as input for the second run - // state: ephemeralTask.state, - // }); - - // // ensure state is cumulative - // expect(secondEphemeralTask.state.count).to.eql(2); - - // await retry.try(async () => { - // // ensure new id is produced for second task execution - // expect( - // (await historyDocs()).filter((taskDoc) => taskDoc._source.taskId === ephemeralTask.id) - // .length - // ).to.eql(1); - // expect( - // (await historyDocs()).filter( - // (taskDoc) => taskDoc._source.taskId === secondEphemeralTask.id - // ).length - // ).to.eql(1); - // }); - // }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('Epheemral task run should only run one instance of a task if its maxConcurrency is 1', async () => { - // const ephemeralTaskWithSingleConcurrency: { - // state: { - // executions: Array<{ - // result: { - // id: string; - // state: { - // timings: Array<{ - // start: number; - // stop: number; - // }>; - // }; - // }; - // }>; - // }; - // } = await runEphemeralTaskNow({ - // taskType: 'taskWhichExecutesOtherTasksEphemerally', - // params: { - // tasks: [ - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithSingleConcurrency', - // params: { delay: 1000 }, - // state: {}, - // }, - // ], - // }, - // state: {}, - // }); - - // ensureOverlappingTasksDontExceedThreshold( - // ephemeralTaskWithSingleConcurrency.state.executions, - // // make sure each task intersects with any other task - // 0 - // ); - // }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('Ephemeral task run should only run as many instances of a task as its maxConcurrency will allow', async () => { - // const ephemeralTaskWithSingleConcurrency: { - // state: { - // executions: Array<{ - // result: { - // id: string; - // state: { - // timings: Array<{ - // start: number; - // stop: number; - // }>; - // }; - // }; - // }>; - // }; - // } = await runEphemeralTaskNow({ - // taskType: 'taskWhichExecutesOtherTasksEphemerally', - // params: { - // tasks: [ - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // { - // taskType: 'timedTaskWithLimitedConcurrency', - // params: { delay: 100 }, - // state: {}, - // }, - // ], - // }, - // state: {}, - // }); - - // ensureOverlappingTasksDontExceedThreshold( - // ephemeralTaskWithSingleConcurrency.state.executions, - // // make sure each task intersects with, at most, 1 other task - // 1 - // ); - // }); - - // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 - // it('Ephemeral task executions cant exceed the max workes in Task Manager', async () => { - // const ephemeralTaskWithSingleConcurrency: { - // state: { - // executions: Array<{ - // result: { - // id: string; - // state: { - // timings: Array<{ - // start: number; - // stop: number; - // }>; - // }; - // }; - // }>; - // }; - // } = await runEphemeralTaskNow({ - // taskType: 'taskWhichExecutesOtherTasksEphemerally', - // params: { - // tasks: times(20, () => ({ - // taskType: 'timedTask', - // params: { delay: 100 }, - // state: {}, - // })), - // }, - // state: {}, - // }); - - // ensureOverlappingTasksDontExceedThreshold( - // ephemeralTaskWithSingleConcurrency.state.executions, - // // make sure each task intersects with, at most, 9 other tasks (as max workes is 10) - // 9 - // ); - // }); }); // TODO: Add this back in with https://github.com/elastic/kibana/issues/106139 diff --git a/x-pack/test/tsconfig.json b/x-pack/test/tsconfig.json index 95178eca83172..ce202abc9738a 100644 --- a/x-pack/test/tsconfig.json +++ b/x-pack/test/tsconfig.json @@ -137,10 +137,8 @@ "@kbn/stack-connectors-plugin", "@kbn/stack-alerts-plugin", "@kbn/apm-data-access-plugin", - "@kbn/coloring", "@kbn/profiling-utils", "@kbn/profiling-data-access-plugin", - "@kbn/coloring", "@kbn/es", "@kbn/metrics-data-access-plugin", "@kbn/dataset-quality-plugin", @@ -188,8 +186,10 @@ "@kbn/ai-assistant-common", "@kbn/core-deprecations-common", "@kbn/usage-collection-plugin", + "@kbn/palettes", "@kbn/sse-utils-server", "@kbn/gen-ai-functional-testing", - "@kbn/integration-assistant-plugin" + "@kbn/integration-assistant-plugin", + "@kbn/core-elasticsearch-server" ] } diff --git a/x-pack/test/upgrade_assistant_integration/upgrade_assistant/api_deprecations.ts b/x-pack/test/upgrade_assistant_integration/upgrade_assistant/api_deprecations.ts index 74c3064f9341d..6a0f8aad4686e 100644 --- a/x-pack/test/upgrade_assistant_integration/upgrade_assistant/api_deprecations.ts +++ b/x-pack/test/upgrade_assistant_integration/upgrade_assistant/api_deprecations.ts @@ -17,9 +17,15 @@ import type { import { FtrProviderContext } from '../../common/ftr_provider_context'; const getApiDeprecations = (allDeprecations: DomainDeprecationDetails[]) => { - return allDeprecations.filter( - (deprecation) => deprecation.deprecationType === 'api' - ) as unknown as Array>; + return ( + allDeprecations + .filter( + (deprecation): deprecation is DomainDeprecationDetails => + deprecation.deprecationType === 'api' + ) + // Ensure consistent sorting + .sort((a, b) => a.title.localeCompare(b.title)) + ); }; export default function ({ getService }: FtrProviderContext) { @@ -28,8 +34,7 @@ export default function ({ getService }: FtrProviderContext) { const retry = getService('retry'); const es = getService('es'); - // FLAKY: https://github.com/elastic/kibana/issues/199782 - describe.skip('Kibana API Deprecations', function () { + describe('Kibana API Deprecations', function () { // bail on first error in this suite since cases sequentially depend on each other this.bail(true); diff --git a/x-pack/test_serverless/api_integration/test_suites/common/data_usage/mock_data.ts b/x-pack/test_serverless/api_integration/test_suites/common/data_usage/mock_data.ts index 7bd4b7f3e7a22..e0f6c5d43e788 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/data_usage/mock_data.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/data_usage/mock_data.ts @@ -15,6 +15,14 @@ export const mockAutoOpsResponse = { [1726862130000, 14657904], ], }, + { + name: 'metrics-system.core.total.pct-default', + error: null, + data: [ + [1726858530000, 13756849], + [1726862130000, 14657904], + ], + }, { name: 'logs-nginx.access-default', error: null, @@ -33,6 +41,14 @@ export const mockAutoOpsResponse = { [1726862130000, 13956423], ], }, + { + name: 'metrics-system.core.total.pct-default', + error: null, + data: [ + [1726858530000, 13756849], + [1726862130000, 14657904], + ], + }, { name: 'logs-nginx.access-default', error: null, diff --git a/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/data_streams.ts b/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/data_streams.ts index b4dd8d51c331a..e591d23b125e4 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/data_streams.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/data_streams.ts @@ -54,10 +54,7 @@ export default function ({ getService }: FtrProviderContext) { const res = await supertestAdminWithCookieCredentials .get(DATA_USAGE_DATA_STREAMS_API_ROUTE) .set('elastic-api-version', '1'); - const dataStreams: DataStreamsResponseBodySchemaBody = res.body; - const foundStream = dataStreams.find((stream) => stream.name === testDataStreamName); - expect(res.statusCode).to.be(200); - expect(foundStream).to.be(undefined); + expect(res.statusCode).to.be(404); }); }); } diff --git a/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/metrics.ts b/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/metrics.ts index 5460b750a5b21..6a0774ea2e8f4 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/metrics.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/data_usage/tests/metrics.ts @@ -29,7 +29,7 @@ export default function ({ getService }: FtrProviderContext) { const mockAutoopsApiService = setupMockServer(); describe('Metrics', function () { let mockApiServer: http.Server; - // due to the plugin depending on yml config (xpack.dataUsage.enabled), we cannot test in MKI until it is on by default + // MKI has a different config in the QA environment and will ignore the mock service this.tags(['skipMKI']); before(async () => { diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/platform_security/authorization.ts b/x-pack/test_serverless/api_integration/test_suites/observability/platform_security/authorization.ts index 04f0110527c79..f3a3acb9f805c 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/platform_security/authorization.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/platform_security/authorization.ts @@ -94,6 +94,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:apm/show", "ui:apm/save", "ui:apm/alerting:show", @@ -1572,6 +1577,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:apm/show", "ui:apm/save", "ui:apm/alerting:show", @@ -3041,6 +3051,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:apm/show", "ui:apm/alerting:show", "alerting:apm.error_rate/apm/rule/get", @@ -3651,6 +3666,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:apm/show", "ui:apm/alerting:show", "alerting:apm.error_rate/apm/rule/get", @@ -4896,6 +4916,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:config-global/find", "saved_object:config-global/open_point_in_time", "saved_object:config-global/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", "ui:discover/save", "ui:discover/saveQuery", @@ -6103,6 +6128,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", "ui:discover/save", "ui:discover/saveQuery", @@ -7278,6 +7308,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", "api:rac", "app:observability", @@ -7777,6 +7812,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:telemetry/find", "saved_object:telemetry/open_point_in_time", "saved_object:telemetry/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", "ui:discover/createShortUrl", "api:rac", @@ -8879,6 +8919,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:fleetv2/read", "ui:fleetv2/all", "ui:fleetv2/agents_read", @@ -9370,6 +9415,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:fleetv2/read", "ui:fleetv2/all", "api:infra", @@ -9763,6 +9813,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:fleetv2/read", "api:infra", "api:rac", @@ -9982,6 +10037,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:fleetv2/read", "ui:fleetv2/agents_read", "ui:fleetv2/agent_policies_read", @@ -10402,6 +10462,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:infrastructure/show", "ui:infrastructure/configureSource", "ui:infrastructure/save", @@ -11920,6 +11985,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:infrastructure/show", "ui:infrastructure/configureSource", "ui:infrastructure/save", @@ -13417,6 +13487,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:infrastructure/show", "alerting:metrics.alert.threshold/infrastructure/rule/get", "alerting:metrics.alert.threshold/infrastructure/rule/getRuleState", @@ -14042,6 +14117,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:infrastructure/show", "alerting:metrics.alert.threshold/infrastructure/rule/get", "alerting:metrics.alert.threshold/infrastructure/rule/getRuleState", @@ -14650,6 +14730,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/downloadCsv", @@ -14685,6 +14770,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/downloadCsv", @@ -14713,6 +14803,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", ], "read": Array [ "login:", @@ -14736,6 +14831,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", ], }, "slo": Object { @@ -14801,6 +14901,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:slo/read", "ui:slo/write", "alerting:slo.rules.burnRate/slo/rule/get", @@ -16025,6 +16130,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:slo/read", "ui:slo/write", "alerting:slo.rules.burnRate/slo/rule/get", @@ -17227,6 +17337,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:slo/read", "alerting:slo.rules.burnRate/slo/rule/get", "alerting:slo.rules.burnRate/slo/rule/getRuleState", @@ -17727,6 +17842,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:slo/read", "alerting:slo.rules.burnRate/slo/rule/get", "alerting:slo.rules.burnRate/slo/rule/getRuleState", @@ -18315,6 +18435,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:uptime/save", "ui:uptime/configureSettings", "ui:uptime/show", @@ -19791,6 +19916,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:uptime/save", "ui:uptime/configureSettings", "ui:uptime/show", @@ -21189,6 +21319,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:uptime/show", "ui:uptime/alerting:save", "alerting:xpack.uptime.alerts.tls/uptime/rule/get", @@ -21784,6 +21919,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:uptime/show", "ui:uptime/alerting:save", "alerting:xpack.uptime.alerts.tls/uptime/rule/get", diff --git a/x-pack/test_serverless/api_integration/test_suites/search/platform_security/authorization.ts b/x-pack/test_serverless/api_integration/test_suites/search/platform_security/authorization.ts index ed9fdd30cbdae..c3fad6aa67ca8 100644 --- a/x-pack/test_serverless/api_integration/test_suites/search/platform_security/authorization.ts +++ b/x-pack/test_serverless/api_integration/test_suites/search/platform_security/authorization.ts @@ -703,6 +703,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:config-global/find", "saved_object:config-global/open_point_in_time", "saved_object:config-global/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", "ui:discover/save", "ui:discover/saveQuery", @@ -782,6 +787,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", "ui:discover/save", "ui:discover/saveQuery", @@ -829,6 +839,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", ], "read": Array [ @@ -881,6 +896,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:telemetry/find", "saved_object:telemetry/open_point_in_time", "saved_object:telemetry/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:discover/show", "ui:discover/createShortUrl", ], @@ -949,6 +969,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/downloadCsv", @@ -984,6 +1009,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/downloadCsv", @@ -1012,6 +1042,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", ], "read": Array [ "login:", @@ -1035,6 +1070,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", ], }, } diff --git a/x-pack/test_serverless/api_integration/test_suites/security/platform_security/authorization.ts b/x-pack/test_serverless/api_integration/test_suites/security/platform_security/authorization.ts index 1f9a7f74fd572..dac4ff0604a1e 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/platform_security/authorization.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/platform_security/authorization.ts @@ -67,6 +67,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/downloadCsv", @@ -102,6 +107,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "api:downloadCsv", "ui:management/insightsAndAlerting/reporting", "ui:dashboard/downloadCsv", @@ -130,6 +140,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", ], "read": Array [ "login:", @@ -153,6 +168,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", ], }, "siem": Object { @@ -436,6 +456,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:siem/show", "ui:siem/crud", "ui:siem/entity-analytics", @@ -843,11 +868,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:map/find", "saved_object:map/open_point_in_time", "saved_object:map/close_point_in_time", - "saved_object:tag/bulk_get", - "saved_object:tag/get", - "saved_object:tag/find", - "saved_object:tag/open_point_in_time", - "saved_object:tag/close_point_in_time", "ui:dashboard/createNew", "ui:dashboard/show", "ui:dashboard/showWriteControls", @@ -1295,6 +1315,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:siem/show", "ui:siem/crud", "ui:siem/entity-analytics", @@ -1700,11 +1725,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:map/find", "saved_object:map/open_point_in_time", "saved_object:map/close_point_in_time", - "saved_object:tag/bulk_get", - "saved_object:tag/get", - "saved_object:tag/find", - "saved_object:tag/open_point_in_time", - "saved_object:tag/close_point_in_time", "ui:dashboard/createNew", "ui:dashboard/show", "ui:dashboard/showWriteControls", @@ -1876,6 +1896,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:siem/show", "ui:siem/entity-analytics", "ui:siem/investigation-guide", @@ -2065,11 +2090,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:dashboard/find", "saved_object:dashboard/open_point_in_time", "saved_object:dashboard/close_point_in_time", - "saved_object:tag/bulk_get", - "saved_object:tag/get", - "saved_object:tag/find", - "saved_object:tag/open_point_in_time", - "saved_object:tag/close_point_in_time", "ui:dashboard/show", "ui:dashboard/createShortUrl", "app:visualize", @@ -2243,6 +2263,11 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:url/find", "saved_object:url/open_point_in_time", "saved_object:url/close_point_in_time", + "saved_object:tag/bulk_get", + "saved_object:tag/get", + "saved_object:tag/find", + "saved_object:tag/open_point_in_time", + "saved_object:tag/close_point_in_time", "ui:siem/show", "ui:siem/entity-analytics", "ui:siem/investigation-guide", @@ -2433,11 +2458,6 @@ export default function ({ getService }: FtrProviderContext) { "saved_object:dashboard/find", "saved_object:dashboard/open_point_in_time", "saved_object:dashboard/close_point_in_time", - "saved_object:tag/bulk_get", - "saved_object:tag/get", - "saved_object:tag/find", - "saved_object:tag/open_point_in_time", - "saved_object:tag/close_point_in_time", "ui:dashboard/show", "ui:dashboard/createShortUrl", "app:visualize", diff --git a/x-pack/test_serverless/functional/page_objects/index.ts b/x-pack/test_serverless/functional/page_objects/index.ts index e10e98529b8bf..5c00c95b73a1d 100644 --- a/x-pack/test_serverless/functional/page_objects/index.ts +++ b/x-pack/test_serverless/functional/page_objects/index.ts @@ -26,6 +26,7 @@ import { SvlSearchElasticsearchStartPageProvider } from './svl_search_elasticsea import { SvlApiKeysProvider } from './svl_api_keys'; import { SvlSearchCreateIndexPageProvider } from './svl_search_create_index_page'; import { SvlSearchInferenceManagementPageProvider } from './svl_search_inference_management_page'; +import { SvlDataUsagePageProvider } from './svl_data_usage'; export const pageObjects = { ...xpackFunctionalPageObjects, @@ -49,4 +50,5 @@ export const pageObjects = { svlApiKeys: SvlApiKeysProvider, svlSearchCreateIndexPage: SvlSearchCreateIndexPageProvider, svlSearchInferenceManagementPage: SvlSearchInferenceManagementPageProvider, + svlDataUsagePage: SvlDataUsagePageProvider, }; diff --git a/x-pack/test_serverless/functional/page_objects/svl_data_usage.ts b/x-pack/test_serverless/functional/page_objects/svl_data_usage.ts new file mode 100644 index 0000000000000..ccece1e10e113 --- /dev/null +++ b/x-pack/test_serverless/functional/page_objects/svl_data_usage.ts @@ -0,0 +1,55 @@ +/* + * 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 { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; +import { FtrProviderContext } from '../ftr_provider_context'; + +export function SvlDataUsagePageProvider({ getService }: FtrProviderContext) { + const testSubjects = getService('testSubjects'); + + return { + async assertDataUsagePageExists(): Promise { + return await testSubjects.exists('data-usage-page'); + }, + async clickDatastreamsDropdown() { + await testSubjects.click('data-usage-metrics-filter-dataStreams-popoverButton'); + }, + async findDatastreamsDropdownOptions() { + return await testSubjects.findAll('dataStreams-filter-option'); + }, + async findDatastreamsDropdownFilterButton() { + return await testSubjects.find('data-usage-metrics-filter-dataStreams-popoverButton'); + }, + async findIngestRateChart() { + return await testSubjects.find('ingest_rate-chart'); + }, + async storageRetainedChart() { + return await testSubjects.find('storage_retained-chart'); + }, + async findLegendItemsInChart(chartElement: WebElementWrapper) { + return await chartElement.findAllByCssSelector('li.echLegendItem'); + }, + async findLegendActionButton(legendItemElement: WebElementWrapper) { + return legendItemElement.findByTestSubject('legendActionButton'); + }, + async clickLegendActionButtonAtIndex(chartElement: WebElementWrapper, index: number) { + const legendItems = await this.findLegendItemsInChart(chartElement); + if (index < 0 || index >= legendItems.length) { + throw new Error( + `Invalid legend item index: ${index}. There are only ${legendItems.length} legend items.` + ); + } + const legendItem = legendItems[index]; + const actionButton = await this.findLegendActionButton(legendItem); + await actionButton.click(); + }, + + async assertLegendActionPopoverExists() { + await testSubjects.existOrFail('legendActionPopover'); + }, + }; +} diff --git a/x-pack/test_serverless/functional/page_objects/svl_search_connectors_page.ts b/x-pack/test_serverless/functional/page_objects/svl_search_connectors_page.ts index 2e754337c03fe..96155e592ee94 100644 --- a/x-pack/test_serverless/functional/page_objects/svl_search_connectors_page.ts +++ b/x-pack/test_serverless/functional/page_objects/svl_search_connectors_page.ts @@ -12,6 +12,7 @@ export function SvlSearchConnectorsPageProvider({ getService }: FtrProviderConte const browser = getService('browser'); const retry = getService('retry'); const es = getService('es'); + const comboBox = getService('comboBox'); return { helpers: { async deleteAllConnectors() { @@ -63,10 +64,7 @@ export function SvlSearchConnectorsPageProvider({ getService }: FtrProviderConte async editType(type: string) { await testSubjects.existOrFail('serverlessSearchEditConnectorType'); await testSubjects.existOrFail('serverlessSearchEditConnectorTypeChoices'); - await testSubjects.click('serverlessSearchEditConnectorTypeChoices'); - await testSubjects.setValue('serverlessSearchEditConnectorTypeChoices', type); - await testSubjects.exists(`serverlessSearchConnectorServiceType-${type}`); - await testSubjects.click(`serverlessSearchConnectorServiceType-${type}`); + await comboBox.filterOptionsList('serverlessSearchEditConnectorTypeChoices', type); }, async expectConnectorIdToMatchUrl(connectorId: string) { expect(await browser.getCurrentUrl()).contain(`/app/connectors/${connectorId}`); diff --git a/x-pack/test_serverless/functional/services/index.ts b/x-pack/test_serverless/functional/services/index.ts index 770cdbb88c97a..198b6be56934d 100644 --- a/x-pack/test_serverless/functional/services/index.ts +++ b/x-pack/test_serverless/functional/services/index.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { ComboBoxService } from '@kbn/test-suites-src/functional/services/combo_box'; import { services as deploymentAgnosticFunctionalServices } from './deployment_agnostic_services'; import { services as svlSharedServices } from '../../shared/services'; import { SvlCommonNavigationServiceProvider } from './svl_common_navigation'; @@ -35,4 +36,6 @@ export const services = { // log services svlLogsSynthtraceClient: LogsSynthtraceProvider, alertingApi: SvlApiIntegrationSvcs.alertingApi, + // EUI components + comboBox: ComboBoxService, }; diff --git a/x-pack/test_serverless/functional/test_suites/common/data_usage/main.ts b/x-pack/test_serverless/functional/test_suites/common/data_usage/main.ts index 0b59557229cd4..438bf5ab7ee84 100644 --- a/x-pack/test_serverless/functional/test_suites/common/data_usage/main.ts +++ b/x-pack/test_serverless/functional/test_suites/common/data_usage/main.ts @@ -4,30 +4,200 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - +import expect from '@kbn/expect'; +import http from 'http'; +import { InterceptResponseFactory } from '@kbn/ftr-common-functional-ui-services'; import { FtrProviderContext } from '../../../ftr_provider_context'; +import { setupMockServer } from '../../../../api_integration/test_suites/common/data_usage/mock_api'; export default ({ getPageObjects, getService }: FtrProviderContext) => { - const pageObjects = getPageObjects(['svlCommonPage', 'svlManagementPage', 'common']); + const pageObjects = getPageObjects([ + 'svlDataUsagePage', + 'svlCommonPage', + 'svlManagementPage', + 'common', + ]); const testSubjects = getService('testSubjects'); const retry = getService('retry'); + const mockAutoopsApiService = setupMockServer(); + const es = getService('es'); + const browser = getService('browser'); + let mockApiServer: http.Server; + const dataStreamsMockResponse = [ + { + name: 'metrics-system.cpu-default', + storageSizeBytes: 6197, + }, + { + name: 'metrics-system.core.total.pct-default', + storageSizeBytes: 5197, + }, + { + name: 'logs-nginx.access-default', + storageSizeBytes: 1938, + }, + ]; describe('Main page', function () { this.tags(['skipMKI']); before(async () => { + // create test data streams from the mock data streams response + // so the metrics api can verify they exist + for (const { name } of dataStreamsMockResponse) { + await es.indices.putIndexTemplate({ + name, + body: { + index_patterns: [name], + data_stream: {}, + priority: 200, + }, + }); + await es.indices.createDataStream({ name }); + } await pageObjects.svlCommonPage.loginAsAdmin(); await pageObjects.common.navigateToApp('management'); await retry.waitFor('page to be visible', async () => { return await testSubjects.exists('cards-navigation-page'); }); await pageObjects.svlManagementPage.assertDataUsageManagementCardExists(); - await pageObjects.svlManagementPage.clickDataUsageManagementCard(); + + // mock external API request to autoops + mockApiServer = mockAutoopsApiService.listen(9000); + + // intercept the data_streams request to bypass waiting for the metering api to aggregate a response + // otherwise storage sizes get filtered out if they are 0 + await browser.interceptRequest( + '*data_streams*', + (responseFactory: InterceptResponseFactory) => { + return responseFactory.fulfill({ + responseCode: 200, + responseHeaders: [{ name: 'Content-Type', value: 'application/json' }], + body: Buffer.from(JSON.stringify(dataStreamsMockResponse)).toString('base64'), + }); + }, + async () => { + await pageObjects.svlManagementPage.clickDataUsageManagementCard(); + } + ); + }); + after(async () => { + mockApiServer.close(); + for (const { name } of dataStreamsMockResponse) { + await es.indices.deleteDataStream({ name }); + } }); it('renders data usage page', async () => { await retry.waitFor('page to be visible', async () => { - return await testSubjects.exists('DataUsagePage'); + return await pageObjects.svlDataUsagePage.assertDataUsagePageExists(); + }); + }); + it('shows 3 data streams in the filter dropdown', async () => { + // Click the dropdown button to show the options + await pageObjects.svlDataUsagePage.clickDatastreamsDropdown(); + + const options = await pageObjects.svlDataUsagePage.findDatastreamsDropdownOptions(); + + // Assert that exactly 3 elements are present + expect(options.length).to.eql(3); + + // Assert that each option is checked + for (const option of options) { + const ariaChecked = await option.getAttribute('aria-checked'); + expect(ariaChecked).to.be('true'); + } + + // Locate the filter button using its data-test-subj + const datastreamsDropdownFilterButton = + await pageObjects.svlDataUsagePage.findDatastreamsDropdownFilterButton(); + + // Find the badge element within the button (using its CSS class) + const notificationBadge = await datastreamsDropdownFilterButton.findByCssSelector( + '.euiNotificationBadge' + ); + + // Retrieve the text content of the badge + const activeFiltersCount = await notificationBadge.getVisibleText(); + + // Assert the badge displays the expected count + expect(activeFiltersCount).to.be('3'); + }); + it('renders charts', async () => { + // Data is coming from the mocked autoops API + const chartContainer = await testSubjects.find('data-usage-metrics'); + await testSubjects.existOrFail('data-usage-metrics'); + + // Check 2 charts rendered + await retry.waitFor('chart to render', async () => { + const chartStatus = await chartContainer.findAllByCssSelector( + '.echChartStatus[data-ech-render-complete="true"]' + ); + return chartStatus.length === 2; + }); + }); + it('renders legend', async () => { + const ingestRateChart = await pageObjects.svlDataUsagePage.findIngestRateChart(); + const storageRetainedChart = await pageObjects.svlDataUsagePage.storageRetainedChart(); + + const ingestLegendItems = await pageObjects.svlDataUsagePage.findLegendItemsInChart( + ingestRateChart + ); + + expect(ingestLegendItems.length).to.eql(4); // 3 data streams + 1 Total line series + + const storageLegendItems = await pageObjects.svlDataUsagePage.findLegendItemsInChart( + storageRetainedChart + ); + expect(storageLegendItems.length).to.eql(4); // same number of data streams + total line series + }); + it('renders actions popover with correct links', async () => { + // Open the first legend item actions popover + const ingestRateChart = await pageObjects.svlDataUsagePage.findIngestRateChart(); + await pageObjects.svlDataUsagePage.clickLegendActionButtonAtIndex(ingestRateChart, 0); + await pageObjects.svlDataUsagePage.assertLegendActionPopoverExists(); + // Check for links + await testSubjects.existOrFail('copyDataStreamNameAction'); + await testSubjects.existOrFail('manageDataStreamAction'); + await testSubjects.existOrFail('DatasetQualityAction'); + + const manageLink = await testSubjects.find('manageDataStreamAction'); + await manageLink.click(); + + // Wait for navigation to the data stream details page + await retry.waitFor('URL to update (index management)', async () => { + const currentUrl = await browser.getCurrentUrl(); + return currentUrl.includes( + `/app/management/data/index_management/data_streams/${dataStreamsMockResponse[0].name}` + ); + }); + await browser.goBack(); + // test second link to ensure state changed + await pageObjects.svlDataUsagePage.clickLegendActionButtonAtIndex(ingestRateChart, 1); + await pageObjects.svlDataUsagePage.assertLegendActionPopoverExists(); + + await manageLink.click(); + + // Wait for navigation to the data stream details page + await retry.waitFor('URL to update (index management)', async () => { + const currentUrl = await browser.getCurrentUrl(); + return currentUrl.includes( + `/app/management/data/index_management/data_streams/${dataStreamsMockResponse[1].name}` + ); + }); + await browser.goBack(); + + // Test navigation for the data quality link + await pageObjects.svlDataUsagePage.clickLegendActionButtonAtIndex(ingestRateChart, 0); + await pageObjects.svlDataUsagePage.assertLegendActionPopoverExists(); + const dataQualityLink = await testSubjects.find('DatasetQualityAction'); + await dataQualityLink.click(); + + // Wait for navigation to the data quality details page + await retry.waitFor('URL to update (data quality)', async () => { + const currentUrl = await browser.getCurrentUrl(); + return currentUrl.includes('/app/management/data/data_quality/details'); }); + await browser.goBack(); }); }); }; diff --git a/x-pack/test_serverless/functional/test_suites/common/data_usage/privileges.ts b/x-pack/test_serverless/functional/test_suites/common/data_usage/privileges.ts index 4efcdd2586a85..dab301dff34ea 100644 --- a/x-pack/test_serverless/functional/test_suites/common/data_usage/privileges.ts +++ b/x-pack/test_serverless/functional/test_suites/common/data_usage/privileges.ts @@ -30,11 +30,11 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { if (expectedVisible) { await pageObjects.svlManagementPage.assertDataUsageManagementCardExists(); await pageObjects.common.navigateToApp(dataUsageAppUrl); - await testSubjects.exists('DataUsagePage'); + await testSubjects.exists('data-usage-page'); } else { await pageObjects.svlManagementPage.assertDataUsageManagementCardDoesNotExist(); await pageObjects.common.navigateToApp(dataUsageAppUrl); - await testSubjects.missingOrFail('DataUsagePage'); + await testSubjects.missingOrFail('data-usage-page'); } }; diff --git a/x-pack/test_serverless/functional/test_suites/common/platform_security/user_profiles/user_profiles.ts b/x-pack/test_serverless/functional/test_suites/common/platform_security/user_profiles/user_profiles.ts index 71e278e59075e..f6039a5c7050c 100644 --- a/x-pack/test_serverless/functional/test_suites/common/platform_security/user_profiles/user_profiles.ts +++ b/x-pack/test_serverless/functional/test_suites/common/platform_security/user_profiles/user_profiles.ts @@ -29,8 +29,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const actualFullname = await pageObjects.userProfiles.getProfileFullname(); const actualEmail = await pageObjects.userProfiles.getProfileEmail(); - expect(actualFullname).to.be(userData.full_name); - expect(actualEmail).to.be(userData.email); + expect(actualFullname).to.contain(userData.full_name); + expect(actualEmail).to.contain(userData.email); }); it('should not have edit actions', async () => { diff --git a/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/data/logs_data.ts b/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/data/logs_data.ts index 3692a17709a2e..cd1668484337e 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/data/logs_data.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/data/logs_data.ts @@ -217,3 +217,7 @@ export const MORE_THAN_1024_CHARS = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?'; export const ANOTHER_1024_CHARS = 'grape fig tangerine tangerine kiwi lemon papaya cherry nectarine papaya mango cherry nectarine fig cherry fig grape mango mango quince fig strawberry mango quince date kiwi quince raspberry apple kiwi banana quince fig papaya grape mango cherry banana mango cherry lemon cherry tangerine fig quince quince papaya tangerine grape strawberry banana kiwi grape mango papaya nectarine banana nectarine kiwi papaya lemon apple lemon orange fig cherry grape apple nectarine papaya orange fig papaya date mango papaya mango cherry tangerine papaya apple banana papaya cherry strawberry grape raspberry lemon date papaya mango kiwi cherry fig banana banana apple date strawberry mango tangerine date lemon kiwi quince date orange orange papaya date apple fig tangerine quince tangerine date papaya banana banana orange raspberry papaya apple nectarine lemon raspberry raspberry mango cherry kiwi cherry cherry nectarine cherry date strawberry banana orange mango mango tangerine quince papaya papaya kiwi papaya strawberry date mango'; + +export const CONSISTENT_TAGS = [ + 'this_is_here_to_remove_variance_introduced_by_the_geoip_processor', +]; diff --git a/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/degraded_field_flyout.ts b/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/degraded_field_flyout.ts index 7d12db16850cc..4152a745d8541 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/degraded_field_flyout.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/degraded_field_flyout.ts @@ -9,11 +9,12 @@ import expect from '@kbn/expect'; import moment from 'moment'; import { generateShortId, log, timerange } from '@kbn/apm-synthtrace-client'; import { + ANOTHER_1024_CHARS, + CONSISTENT_TAGS, + MORE_THAN_1024_CHARS, createDegradedFieldsRecord, defaultNamespace, getInitialTestLogs, - ANOTHER_1024_CHARS, - MORE_THAN_1024_CHARS, } from './data'; import { FtrProviderContext } from '../../../ftr_provider_context'; import { logsSynthMappings } from './custom_mappings/custom_synth_mappings'; @@ -55,8 +56,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const apmAppDataStreamName = `${type}-${apmAppDatasetName}-${defaultNamespace}`; describe('Degraded fields flyout', function () { - // see details: https://github.com/elastic/kibana/issues/202641 - this.tags(['failsOnMKI']); describe('degraded field flyout open-close', () => { before(async () => { await synthtrace.index([ @@ -207,6 +206,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'service.name': serviceName, 'trace.id': generateShortId(), test_field: [MORE_THAN_1024_CHARS, ANOTHER_1024_CHARS], + // this works around a geoip limitation in CI + tags: CONSISTENT_TAGS, }) .timestamp(timestamp) ); @@ -300,6 +301,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'trace.id': generateShortId(), test_field: [MORE_THAN_1024_CHARS, ANOTHER_1024_CHARS], 'cloud.project.id': generateShortId(), + // this works around a geoip limitation in CI + tags: CONSISTENT_TAGS, }) .timestamp(timestamp) ); @@ -410,6 +413,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'trace.id': generateShortId(), test_field: [MORE_THAN_1024_CHARS, ANOTHER_1024_CHARS], 'cloud.project.id': generateShortId(), + // this works around a geoip limitation in CI + tags: CONSISTENT_TAGS, }) .timestamp(timestamp) ); diff --git a/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/_get_row_indicator_provider.ts b/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/_get_row_indicator_provider.ts index 2c7338627ddfe..cf4658c52a9b7 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/_get_row_indicator_provider.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/_get_row_indicator_provider.ts @@ -85,9 +85,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const firstColorIndicator = await firstCell.findByTestSubject( 'unifiedDataTableRowColorIndicatorCell' ); - expect(await firstColorIndicator.getComputedStyle('background-color')).to.be( - 'rgba(190, 207, 227, 1)' - ); expect(await firstColorIndicator.getAttribute('title')).to.be('Debug'); }); @@ -105,18 +102,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'unifiedDataTableRowColorIndicatorCell' ); expect(await anchorColorIndicator.getAttribute('title')).to.be('Debug'); - expect(await anchorColorIndicator.getComputedStyle('background-color')).to.be( - 'rgba(190, 207, 227, 1)' - ); let nextCell = await dataGrid.getCellElement(1, 0); let nextColorIndicator = await nextCell.findByTestSubject( 'unifiedDataTableRowColorIndicatorCell' ); expect(await nextColorIndicator.getAttribute('title')).to.be('Error'); - expect(await nextColorIndicator.getComputedStyle('background-color')).to.be( - 'rgba(223, 147, 82, 1)' - ); await browser.refresh(); await PageObjects.header.waitUntilLoadingHasFinished(); @@ -127,18 +118,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'unifiedDataTableRowColorIndicatorCell' ); expect(await anchorColorIndicator.getAttribute('title')).to.be('Debug'); - expect(await anchorColorIndicator.getComputedStyle('background-color')).to.be( - 'rgba(190, 207, 227, 1)' - ); nextCell = await dataGrid.getCellElement(1, 0); nextColorIndicator = await nextCell.findByTestSubject( 'unifiedDataTableRowColorIndicatorCell' ); expect(await nextColorIndicator.getAttribute('title')).to.be('Error'); - expect(await nextColorIndicator.getComputedStyle('background-color')).to.be( - 'rgba(223, 147, 82, 1)' - ); }); }); } diff --git a/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/telemetry/_telemetry.ts b/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/telemetry/_telemetry.ts index cc0b7c25abb30..56e900e87f588 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/telemetry/_telemetry.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/discover/context_awareness/telemetry/_telemetry.ts @@ -123,6 +123,111 @@ export default function ({ getService, getPageObjects }: ObservabilityTelemetryF }); }); + describe('contextual profiles', () => { + before(async () => { + await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); + }); + + after(async () => { + await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover'); + }); + + it('should send EBT events when a different data source profile gets resolved', async () => { + await common.navigateToApp('discover'); + await discover.selectTextBaseLang(); + await discover.waitUntilSearchingHasFinished(); + await monacoEditor.setCodeEditorValue('from my-example-logs | sort @timestamp desc'); + await ebtUIHelper.setOptIn(true); // starts the recording of events from this moment + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + let events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events[0].properties).to.eql({ + contextLevel: 'rootLevel', + profileId: 'observability-root-profile', + }); + + expect(events[1].properties).to.eql({ + contextLevel: 'dataSourceLevel', + profileId: 'default-data-source-profile', + }); + + expect(events[2].properties).to.eql({ + contextLevel: 'dataSourceLevel', + profileId: 'observability-logs-data-source-profile', + }); + + // should not trigger any new events after a simple refresh + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events.length).to.be(3); + + // should detect a new data source profile when switching to a different data source + await monacoEditor.setCodeEditorValue('from my-example-* | sort @timestamp desc'); + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events[3].properties).to.eql({ + contextLevel: 'dataSourceLevel', + profileId: 'default-data-source-profile', + }); + + expect(events.length).to.be(4); + }); + + it('should send EBT events when a different document profile gets resolved', async () => { + await common.navigateToApp('discover'); + await discover.selectTextBaseLang(); + await monacoEditor.setCodeEditorValue('from my-example-logs | sort @timestamp desc'); + await ebtUIHelper.setOptIn(true); // starts the recording of events from this moment + await testSubjects.click('querySubmitButton'); + await header.waitUntilLoadingHasFinished(); + await discover.waitUntilSearchingHasFinished(); + + let events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events.length).to.be(3); + + // should trigger a new event after opening the doc viewer + await dataGrid.clickRowToggle(); + await discover.isShowingDocViewer(); + + events = await ebtUIHelper.getEvents(Number.MAX_SAFE_INTEGER, { + eventTypes: ['discover_profile_resolved'], + withTimeoutMs: 500, + }); + + expect(events.length).to.be(4); + + expect(events[events.length - 1].properties).to.eql({ + contextLevel: 'documentLevel', + profileId: 'observability-log-document-profile', + }); + }); + }); + describe('events', () => { beforeEach(async () => { await common.navigateToApp('discover'); diff --git a/yarn.lock b/yarn.lock index 47aad7866ae0c..94b56bedc8c57 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2277,12 +2277,13 @@ "@elastic/transport" "^8.3.1" tslib "^2.4.0" -"@elastic/elasticsearch@^8.15.2": - version "8.15.2" - resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-8.15.2.tgz#024e3617b0d1db6425b369a7176d3514598e4c9e" - integrity sha512-DTvjK4bs4WkgdQkXZJx2eVcwKzF1it/PyGT3rl1ReUNIWbkzMEKksiDQK3wY1U3WHT4zTuWQi4GrDOC1w5ej8Q== +"@elastic/elasticsearch@^8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-8.16.0.tgz#35c6729e15684154b8b3c391cfad34877d771cf0" + integrity sha512-uiPC6AePESl/jakx+ZLarLsLdxDHiCSrpAkkXJ5Q8A78vadEQsTGXRUVFwWWkS8gfGthnT3O+QK6BHXuszd0KQ== dependencies: - "@elastic/transport" "^8.8.1" + "@elastic/transport" "^8.9.1" + apache-arrow "^18.0.0" tslib "^2.4.0" "@elastic/ems-client@8.5.3": @@ -2475,10 +2476,10 @@ undici "^5.28.3" yaml "^2.2.2" -"@elastic/transport@^8.3.1", "@elastic/transport@^8.8.1": - version "8.8.1" - resolved "https://registry.yarnpkg.com/@elastic/transport/-/transport-8.8.1.tgz#d64244907bccdad5626c860b492faeef12194b1f" - integrity sha512-4RQIiChwNIx3B0O+2JdmTq/Qobj6+1g2RQnSv1gt4V2SVfAYjGwOKu0ZMKEHQOXYNG6+j/Chero2G9k3/wXLEw== +"@elastic/transport@^8.3.1", "@elastic/transport@^8.9.1": + version "8.9.1" + resolved "https://registry.yarnpkg.com/@elastic/transport/-/transport-8.9.1.tgz#1acc090ac45903a3d5a8b7269f6ba6410108dc0a" + integrity sha512-jasKNQeOb1vNf9aEYg+8zXmetaFjApDTSCC4QTl6aTixvyiRiSLcCiB8P6Q0lY9JIII/BhqNl8WbpFnsKitntw== dependencies: "@opentelemetry/api" "1.x" debug "^4.3.4" @@ -3844,11 +3845,15 @@ version "0.0.0" uid "" -"@kbn/ai-assistant-common@link:x-pack/packages/kbn-ai-assistant-common": +"@kbn/ai-assistant-common@link:x-pack/platform/packages/shared/ai-assistant/common": version "0.0.0" uid "" -"@kbn/ai-assistant-management-plugin@link:src/plugins/ai_assistant_management/selection": +"@kbn/ai-assistant-icon@link:x-pack/platform/packages/shared/ai-assistant/icon": + version "0.0.0" + uid "" + +"@kbn/ai-assistant-management-plugin@link:src/platform/plugins/shared/ai_assistant_management/selection": version "0.0.0" uid "" @@ -4016,7 +4021,7 @@ version "0.0.0" uid "" -"@kbn/avc-banner@link:packages/kbn-avc-banner": +"@kbn/avc-banner@link:src/platform/packages/shared/kbn-avc-banner": version "0.0.0" uid "" @@ -4088,7 +4093,7 @@ version "0.0.0" uid "" -"@kbn/cell-actions@link:packages/kbn-cell-actions": +"@kbn/cell-actions@link:src/platform/packages/shared/kbn-cell-actions": version "0.0.0" uid "" @@ -4136,7 +4141,7 @@ version "0.0.0" uid "" -"@kbn/cloud-data-migration-plugin@link:x-pack/plugins/cloud_integrations/cloud_data_migration": +"@kbn/cloud-data-migration-plugin@link:x-pack/platform/plugins/private/cloud_integrations/cloud_data_migration": version "0.0.0" uid "" @@ -4212,7 +4217,7 @@ version "0.0.0" uid "" -"@kbn/console-plugin@link:src/plugins/console": +"@kbn/console-plugin@link:src/platform/plugins/shared/console": version "0.0.0" uid "" @@ -5176,7 +5181,7 @@ version "0.0.0" uid "" -"@kbn/cross-cluster-replication-plugin@link:x-pack/plugins/cross_cluster_replication": +"@kbn/cross-cluster-replication-plugin@link:x-pack/platform/plugins/private/cross_cluster_replication": version "0.0.0" uid "" @@ -5216,7 +5221,7 @@ version "0.0.0" uid "" -"@kbn/data-forge@link:x-pack/packages/kbn-data-forge": +"@kbn/data-forge@link:x-pack/platform/packages/shared/kbn-data-forge": version "0.0.0" uid "" @@ -5236,11 +5241,11 @@ version "0.0.0" uid "" -"@kbn/data-stream-adapter@link:packages/kbn-data-stream-adapter": +"@kbn/data-stream-adapter@link:x-pack/solutions/security/packages/data-stream-adapter": version "0.0.0" uid "" -"@kbn/data-usage-plugin@link:x-pack/plugins/data_usage": +"@kbn/data-usage-plugin@link:x-pack/platform/plugins/private/data_usage": version "0.0.0" uid "" @@ -5284,7 +5289,7 @@ version "0.0.0" uid "" -"@kbn/deeplinks-devtools@link:packages/deeplinks/devtools": +"@kbn/deeplinks-devtools@link:src/platform/packages/shared/deeplinks/devtools": version "0.0.0" uid "" @@ -5292,7 +5297,7 @@ version "0.0.0" uid "" -"@kbn/deeplinks-management@link:packages/deeplinks/management": +"@kbn/deeplinks-management@link:src/platform/packages/shared/deeplinks/management": version "0.0.0" uid "" @@ -5300,7 +5305,7 @@ version "0.0.0" uid "" -"@kbn/deeplinks-observability@link:packages/deeplinks/observability": +"@kbn/deeplinks-observability@link:src/platform/packages/shared/deeplinks/observability": version "0.0.0" uid "" @@ -5320,11 +5325,11 @@ version "0.0.0" uid "" -"@kbn/default-nav-devtools@link:packages/default-nav/devtools": +"@kbn/default-nav-devtools@link:src/platform/packages/private/default-nav/devtools": version "0.0.0" uid "" -"@kbn/default-nav-management@link:packages/default-nav/management": +"@kbn/default-nav-management@link:src/platform/packages/private/default-nav/management": version "0.0.0" uid "" @@ -5352,7 +5357,7 @@ version "0.0.0" uid "" -"@kbn/dev-tools-plugin@link:src/plugins/dev_tools": +"@kbn/dev-tools-plugin@link:src/platform/plugins/shared/dev_tools": version "0.0.0" uid "" @@ -5404,11 +5409,11 @@ version "0.0.0" uid "" -"@kbn/ecs-data-quality-dashboard-plugin@link:x-pack/plugins/ecs_data_quality_dashboard": +"@kbn/ecs-data-quality-dashboard-plugin@link:x-pack/solutions/security/plugins/ecs_data_quality_dashboard": version "0.0.0" uid "" -"@kbn/ecs-data-quality-dashboard@link:x-pack/packages/security-solution/ecs_data_quality_dashboard": +"@kbn/ecs-data-quality-dashboard@link:x-pack/solutions/security/packages/ecs_data_quality_dashboard": version "0.0.0" uid "" @@ -5416,15 +5421,15 @@ version "0.0.0" uid "" -"@kbn/elastic-assistant-common@link:x-pack/packages/kbn-elastic-assistant-common": +"@kbn/elastic-assistant-common@link:x-pack/platform/packages/shared/kbn-elastic-assistant-common": version "0.0.0" uid "" -"@kbn/elastic-assistant-plugin@link:x-pack/plugins/elastic_assistant": +"@kbn/elastic-assistant-plugin@link:x-pack/solutions/security/plugins/elastic_assistant": version "0.0.0" uid "" -"@kbn/elastic-assistant@link:x-pack/packages/kbn-elastic-assistant": +"@kbn/elastic-assistant@link:x-pack/platform/packages/shared/kbn-elastic-assistant": version "0.0.0" uid "" @@ -5500,7 +5505,7 @@ version "0.0.0" uid "" -"@kbn/es-ui-shared-plugin@link:src/plugins/es_ui_shared": +"@kbn/es-ui-shared-plugin@link:src/platform/plugins/shared/es_ui_shared": version "0.0.0" uid "" @@ -5600,7 +5605,7 @@ version "0.0.0" uid "" -"@kbn/expandable-flyout@link:packages/kbn-expandable-flyout": +"@kbn/expandable-flyout@link:x-pack/solutions/security/packages/expandable-flyout": version "0.0.0" uid "" @@ -5612,7 +5617,7 @@ version "0.0.0" uid "" -"@kbn/exploratory-view-plugin@link:x-pack/plugins/observability_solution/exploratory_view": +"@kbn/exploratory-view-plugin@link:x-pack/solutions/observability/plugins/exploratory_view": version "0.0.0" uid "" @@ -5832,7 +5837,7 @@ version "0.0.0" uid "" -"@kbn/grokdebugger-plugin@link:x-pack/plugins/grokdebugger": +"@kbn/grokdebugger-plugin@link:x-pack/platform/plugins/private/grokdebugger": version "0.0.0" uid "" @@ -5912,15 +5917,15 @@ version "0.0.0" uid "" -"@kbn/index-adapter@link:packages/kbn-index-adapter": +"@kbn/index-adapter@link:x-pack/solutions/security/packages/index-adapter": version "0.0.0" uid "" -"@kbn/index-lifecycle-management-common-shared@link:x-pack/packages/index-lifecycle-management/index_lifecycle_management_common_shared": +"@kbn/index-lifecycle-management-common-shared@link:x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared": version "0.0.0" uid "" -"@kbn/index-lifecycle-management-plugin@link:x-pack/plugins/index_lifecycle_management": +"@kbn/index-lifecycle-management-plugin@link:x-pack/platform/plugins/private/index_lifecycle_management": version "0.0.0" uid "" @@ -5928,7 +5933,7 @@ version "0.0.0" uid "" -"@kbn/index-management-shared-types@link:x-pack/packages/index-management/index_management_shared_types": +"@kbn/index-management-shared-types@link:x-pack/platform/packages/shared/index-management/index_management_shared_types": version "0.0.0" uid "" @@ -5948,7 +5953,7 @@ version "0.0.0" uid "" -"@kbn/infra-forge@link:x-pack/packages/kbn-infra-forge": +"@kbn/infra-forge@link:x-pack/platform/packages/private/kbn-infra-forge": version "0.0.0" uid "" @@ -5968,7 +5973,7 @@ version "0.0.0" uid "" -"@kbn/integration-assistant-plugin@link:x-pack/plugins/integration_assistant": +"@kbn/integration-assistant-plugin@link:x-pack/platform/plugins/shared/integration_assistant": version "0.0.0" uid "" @@ -5992,19 +5997,19 @@ version "0.0.0" uid "" -"@kbn/investigate-app-plugin@link:x-pack/plugins/observability_solution/investigate_app": +"@kbn/investigate-app-plugin@link:x-pack/solutions/observability/plugins/investigate_app": version "0.0.0" uid "" -"@kbn/investigate-plugin@link:x-pack/plugins/observability_solution/investigate": +"@kbn/investigate-plugin@link:x-pack/solutions/observability/plugins/investigate": version "0.0.0" uid "" -"@kbn/investigation-shared@link:packages/kbn-investigation-shared": +"@kbn/investigation-shared@link:x-pack/solutions/observability/packages/kbn-investigation-shared": version "0.0.0" uid "" -"@kbn/io-ts-utils@link:packages/kbn-io-ts-utils": +"@kbn/io-ts-utils@link:src/platform/packages/shared/kbn-io-ts-utils": version "0.0.0" uid "" @@ -6080,7 +6085,7 @@ version "0.0.0" uid "" -"@kbn/langchain@link:x-pack/packages/kbn-langchain": +"@kbn/langchain@link:x-pack/platform/packages/shared/kbn-langchain": version "0.0.0" uid "" @@ -6108,11 +6113,11 @@ version "0.0.0" uid "" -"@kbn/license-api-guard-plugin@link:x-pack/plugins/license_api_guard": +"@kbn/license-api-guard-plugin@link:x-pack/platform/plugins/private/license_api_guard": version "0.0.0" uid "" -"@kbn/license-management-plugin@link:x-pack/plugins/license_management": +"@kbn/license-management-plugin@link:x-pack/platform/plugins/shared/license_management": version "0.0.0" uid "" @@ -6184,35 +6189,35 @@ version "0.0.0" uid "" -"@kbn/management-cards-navigation@link:packages/kbn-management/cards_navigation": +"@kbn/management-cards-navigation@link:src/platform/packages/shared/kbn-management/cards_navigation": version "0.0.0" uid "" -"@kbn/management-plugin@link:src/plugins/management": +"@kbn/management-plugin@link:src/platform/plugins/shared/management": version "0.0.0" uid "" -"@kbn/management-settings-application@link:packages/kbn-management/settings/application": +"@kbn/management-settings-application@link:src/platform/packages/private/kbn-management/settings/application": version "0.0.0" uid "" -"@kbn/management-settings-components-field-category@link:packages/kbn-management/settings/components/field_category": +"@kbn/management-settings-components-field-category@link:src/platform/packages/private/kbn-management/settings/components/field_category": version "0.0.0" uid "" -"@kbn/management-settings-components-field-input@link:packages/kbn-management/settings/components/field_input": +"@kbn/management-settings-components-field-input@link:src/platform/packages/shared/kbn-management/settings/components/field_input": version "0.0.0" uid "" -"@kbn/management-settings-components-field-row@link:packages/kbn-management/settings/components/field_row": +"@kbn/management-settings-components-field-row@link:src/platform/packages/shared/kbn-management/settings/components/field_row": version "0.0.0" uid "" -"@kbn/management-settings-components-form@link:packages/kbn-management/settings/components/form": +"@kbn/management-settings-components-form@link:src/platform/packages/private/kbn-management/settings/components/form": version "0.0.0" uid "" -"@kbn/management-settings-field-definition@link:packages/kbn-management/settings/field_definition": +"@kbn/management-settings-field-definition@link:src/platform/packages/shared/kbn-management/settings/field_definition": version "0.0.0" uid "" @@ -6224,11 +6229,11 @@ version "0.0.0" uid "" -"@kbn/management-settings-types@link:packages/kbn-management/settings/types": +"@kbn/management-settings-types@link:src/platform/packages/shared/kbn-management/settings/types": version "0.0.0" uid "" -"@kbn/management-settings-utilities@link:packages/kbn-management/settings/utilities": +"@kbn/management-settings-utilities@link:src/platform/packages/shared/kbn-management/settings/utilities": version "0.0.0" uid "" @@ -6448,27 +6453,35 @@ version "0.0.0" uid "" -"@kbn/observability-ai-assistant-app-plugin@link:x-pack/plugins/observability_solution/observability_ai_assistant_app": +"@kbn/observability-ai-assistant-app-plugin@link:x-pack/solutions/observability/plugins/observability_ai_assistant_app": + version "0.0.0" + uid "" + +"@kbn/observability-ai-assistant-management-plugin@link:x-pack/solutions/observability/plugins/observability_ai_assistant_management": + version "0.0.0" + uid "" + +"@kbn/observability-ai-assistant-plugin@link:x-pack/platform/plugins/shared/observability_solution/observability_ai_assistant": version "0.0.0" uid "" -"@kbn/observability-ai-assistant-management-plugin@link:x-pack/plugins/observability_solution/observability_ai_assistant_management": +"@kbn/observability-ai-common@link:x-pack/solutions/observability/packages/observability_ai/observability_ai_common": version "0.0.0" uid "" -"@kbn/observability-ai-assistant-plugin@link:x-pack/plugins/observability_solution/observability_ai_assistant": +"@kbn/observability-ai-server@link:x-pack/solutions/observability/packages/observability_ai/observability_ai_server": version "0.0.0" uid "" -"@kbn/observability-alert-details@link:x-pack/packages/observability/alert_details": +"@kbn/observability-alert-details@link:x-pack/solutions/observability/packages/alert_details": version "0.0.0" uid "" -"@kbn/observability-alerting-rule-utils@link:x-pack/packages/observability/alerting_rule_utils": +"@kbn/observability-alerting-rule-utils@link:x-pack/platform/packages/shared/observability/alerting_rule_utils": version "0.0.0" uid "" -"@kbn/observability-alerting-test-data@link:x-pack/packages/observability/alerting_test_data": +"@kbn/observability-alerting-test-data@link:x-pack/solutions/observability/packages/alerting_test_data": version "0.0.0" uid "" @@ -6476,7 +6489,7 @@ version "0.0.0" uid "" -"@kbn/observability-get-padded-alert-time-range-util@link:x-pack/packages/observability/get_padded_alert_time_range_util": +"@kbn/observability-get-padded-alert-time-range-util@link:x-pack/solutions/observability/packages/get_padded_alert_time_range_util": version "0.0.0" uid "" @@ -6496,7 +6509,7 @@ version "0.0.0" uid "" -"@kbn/observability-plugin@link:x-pack/plugins/observability_solution/observability": +"@kbn/observability-plugin@link:x-pack/solutions/observability/plugins/observability": version "0.0.0" uid "" @@ -6504,7 +6517,7 @@ version "0.0.0" uid "" -"@kbn/observability-synthetics-test-data@link:x-pack/packages/observability/synthetics_test_data": +"@kbn/observability-synthetics-test-data@link:x-pack/solutions/observability/packages/synthetics_test_data": version "0.0.0" uid "" @@ -6552,7 +6565,7 @@ version "0.0.0" uid "" -"@kbn/osquery-plugin@link:x-pack/plugins/osquery": +"@kbn/osquery-plugin@link:x-pack/platform/plugins/shared/osquery": version "0.0.0" uid "" @@ -6560,7 +6573,11 @@ version "0.0.0" uid "" -"@kbn/painless-lab-plugin@link:x-pack/plugins/painless_lab": +"@kbn/painless-lab-plugin@link:x-pack/platform/plugins/private/painless_lab": + version "0.0.0" + uid "" + +"@kbn/palettes@link:packages/kbn-palettes": version "0.0.0" uid "" @@ -6688,7 +6705,11 @@ version "0.0.0" uid "" -"@kbn/remote-clusters-plugin@link:x-pack/plugins/remote_clusters": +"@kbn/relocate@link:packages/kbn-relocate": + version "0.0.0" + uid "" + +"@kbn/remote-clusters-plugin@link:x-pack/platform/plugins/private/remote_clusters": version "0.0.0" uid "" @@ -6804,11 +6825,11 @@ version "0.0.0" uid "" -"@kbn/rollup-plugin@link:x-pack/plugins/rollup": +"@kbn/rollup-plugin@link:x-pack/platform/plugins/private/rollup": version "0.0.0" uid "" -"@kbn/rollup@link:x-pack/packages/rollup": +"@kbn/rollup@link:x-pack/platform/packages/private/rollup": version "0.0.0" uid "" @@ -6836,7 +6857,7 @@ version "0.0.0" uid "" -"@kbn/runtime-fields-plugin@link:x-pack/plugins/runtime_fields": +"@kbn/runtime-fields-plugin@link:x-pack/platform/plugins/private/runtime_fields": version "0.0.0" uid "" @@ -7012,7 +7033,7 @@ version "0.0.0" uid "" -"@kbn/searchprofiler-plugin@link:x-pack/plugins/searchprofiler": +"@kbn/searchprofiler-plugin@link:x-pack/platform/plugins/shared/searchprofiler": version "0.0.0" uid "" @@ -7060,7 +7081,7 @@ version "0.0.0" uid "" -"@kbn/security-solution-distribution-bar@link:x-pack/packages/security-solution/distribution_bar": +"@kbn/security-solution-distribution-bar@link:x-pack/solutions/security/packages/distribution_bar": version "0.0.0" uid "" @@ -7068,7 +7089,7 @@ version "0.0.0" uid "" -"@kbn/security-solution-features@link:x-pack/packages/security-solution/features": +"@kbn/security-solution-features@link:x-pack/solutions/security/packages/features": version "0.0.0" uid "" @@ -7076,7 +7097,7 @@ version "0.0.0" uid "" -"@kbn/security-solution-navigation@link:x-pack/packages/security-solution/navigation": +"@kbn/security-solution-navigation@link:x-pack/solutions/security/packages/navigation": version "0.0.0" uid "" @@ -7088,15 +7109,15 @@ version "0.0.0" uid "" -"@kbn/security-solution-side-nav@link:x-pack/packages/security-solution/side_nav": +"@kbn/security-solution-side-nav@link:x-pack/solutions/security/packages/side_nav": version "0.0.0" uid "" -"@kbn/security-solution-storybook-config@link:x-pack/packages/security-solution/storybook/config": +"@kbn/security-solution-storybook-config@link:x-pack/solutions/security/packages/storybook/config": version "0.0.0" uid "" -"@kbn/security-solution-upselling@link:x-pack/packages/security-solution/upselling": +"@kbn/security-solution-upselling@link:x-pack/solutions/security/packages/upselling": version "0.0.0" uid "" @@ -7112,11 +7133,11 @@ version "0.0.0" uid "" -"@kbn/securitysolution-data-table@link:x-pack/packages/security-solution/data_table": +"@kbn/securitysolution-data-table@link:x-pack/solutions/security/packages/data_table": version "0.0.0" uid "" -"@kbn/securitysolution-ecs@link:packages/kbn-securitysolution-ecs": +"@kbn/securitysolution-ecs@link:src/platform/packages/shared/kbn-securitysolution-ecs": version "0.0.0" uid "" @@ -7192,15 +7213,15 @@ version "0.0.0" uid "" -"@kbn/server-route-repository-client@link:packages/kbn-server-route-repository-client": +"@kbn/server-route-repository-client@link:src/platform/packages/shared/kbn-server-route-repository-client": version "0.0.0" uid "" -"@kbn/server-route-repository-utils@link:packages/kbn-server-route-repository-utils": +"@kbn/server-route-repository-utils@link:src/platform/packages/shared/kbn-server-route-repository-utils": version "0.0.0" uid "" -"@kbn/server-route-repository@link:packages/kbn-server-route-repository": +"@kbn/server-route-repository@link:src/platform/packages/shared/kbn-server-route-repository": version "0.0.0" uid "" @@ -7212,7 +7233,7 @@ version "0.0.0" uid "" -"@kbn/serverless-observability@link:x-pack/plugins/serverless_observability": +"@kbn/serverless-observability@link:x-pack/solutions/observability/plugins/serverless_observability": version "0.0.0" uid "" @@ -7472,11 +7493,11 @@ version "0.0.0" uid "" -"@kbn/slo-schema@link:x-pack/packages/kbn-slo-schema": +"@kbn/slo-schema@link:x-pack/platform/packages/shared/kbn-slo-schema": version "0.0.0" uid "" -"@kbn/snapshot-restore-plugin@link:x-pack/plugins/snapshot_restore": +"@kbn/snapshot-restore-plugin@link:x-pack/platform/plugins/private/snapshot_restore": version "0.0.0" uid "" @@ -7500,15 +7521,15 @@ version "0.0.0" uid "" -"@kbn/sse-utils-client@link:packages/kbn-sse-utils-client": +"@kbn/sse-utils-client@link:src/platform/packages/shared/kbn-sse-utils-client": version "0.0.0" uid "" -"@kbn/sse-utils-server@link:packages/kbn-sse-utils-server": +"@kbn/sse-utils-server@link:src/platform/packages/shared/kbn-sse-utils-server": version "0.0.0" uid "" -"@kbn/sse-utils@link:packages/kbn-sse-utils": +"@kbn/sse-utils@link:src/platform/packages/shared/kbn-sse-utils": version "0.0.0" uid "" @@ -7556,11 +7577,11 @@ version "0.0.0" uid "" -"@kbn/synthetics-e2e@link:x-pack/plugins/observability_solution/synthetics/e2e": +"@kbn/synthetics-e2e@link:x-pack/solutions/observability/plugins/synthetics/e2e": version "0.0.0" uid "" -"@kbn/synthetics-plugin@link:x-pack/plugins/observability_solution/synthetics": +"@kbn/synthetics-plugin@link:x-pack/solutions/observability/plugins/synthetics": version "0.0.0" uid "" @@ -7652,11 +7673,11 @@ version "0.0.0" uid "" -"@kbn/threat-intelligence-plugin@link:x-pack/plugins/threat_intelligence": +"@kbn/threat-intelligence-plugin@link:x-pack/solutions/security/plugins/threat_intelligence": version "0.0.0" uid "" -"@kbn/timelines-plugin@link:x-pack/plugins/timelines": +"@kbn/timelines-plugin@link:x-pack/solutions/security/plugins/timelines": version "0.0.0" uid "" @@ -7712,7 +7733,7 @@ version "0.0.0" uid "" -"@kbn/typed-react-router-config@link:packages/kbn-typed-react-router-config": +"@kbn/typed-react-router-config@link:src/platform/packages/shared/kbn-typed-react-router-config": version "0.0.0" uid "" @@ -7792,7 +7813,7 @@ version "0.0.0" uid "" -"@kbn/unsaved-changes-prompt@link:packages/kbn-unsaved-changes-prompt": +"@kbn/unsaved-changes-prompt@link:src/platform/packages/shared/kbn-unsaved-changes-prompt": version "0.0.0" uid "" @@ -7800,7 +7821,7 @@ version "0.0.0" uid "" -"@kbn/uptime-plugin@link:x-pack/plugins/observability_solution/uptime": +"@kbn/uptime-plugin@link:x-pack/solutions/observability/plugins/uptime": version "0.0.0" uid "" @@ -7848,7 +7869,7 @@ version "0.0.0" uid "" -"@kbn/ux-plugin@link:x-pack/plugins/observability_solution/ux": +"@kbn/ux-plugin@link:x-pack/solutions/observability/plugins/ux": version "0.0.0" uid "" @@ -7924,7 +7945,7 @@ version "0.0.0" uid "" -"@kbn/watcher-plugin@link:x-pack/plugins/watcher": +"@kbn/watcher-plugin@link:x-pack/platform/plugins/private/watcher": version "0.0.0" uid "" @@ -8128,6 +8149,21 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== +"@ljharb/resumer@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@ljharb/resumer/-/resumer-0.1.3.tgz#5ef4a4958da1b4e71ffea8ef33499cc622672d89" + integrity sha512-d+tsDgfkj9X5QTriqM4lKesCkMMJC3IrbPKHvayP00ELx2axdXvDfWkqjxrLXIzGcQzmj7VAUT1wopqARTvafw== + dependencies: + "@ljharb/through" "^2.3.13" + call-bind "^1.0.7" + +"@ljharb/through@^2.3.13": + version "2.3.13" + resolved "https://registry.yarnpkg.com/@ljharb/through/-/through-2.3.13.tgz#b7e4766e0b65aa82e529be945ab078de79874edc" + integrity sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ== + dependencies: + call-bind "^1.0.7" + "@lmdb/lmdb-darwin-arm64@2.9.2": version "2.9.2" resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.9.2.tgz#da42cda48018eabfd678b9698e68a0102221b4ba" @@ -10811,6 +10847,13 @@ regenerator-runtime "^0.13.7" resolve-from "^5.0.0" +"@swc/helpers@^0.5.11": + version "0.5.15" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7" + integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g== + dependencies: + tslib "^2.8.0" + "@szmarczak/http-timer@^4.0.5": version "4.0.5" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" @@ -11267,6 +11310,16 @@ dependencies: "@types/color-convert" "*" +"@types/command-line-args@^5.2.3": + version "5.2.3" + resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.3.tgz#553ce2fd5acf160b448d307649b38ffc60d39639" + integrity sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw== + +"@types/command-line-usage@^5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@types/command-line-usage/-/command-line-usage-5.0.4.tgz#374e4c62d78fbc5a670a0f36da10235af879a0d5" + integrity sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg== + "@types/connect-history-api-fallback@^1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" @@ -11887,10 +11940,10 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-2.0.29.tgz#5002e14f75e2d71e564281df0431c8c1b4a2a36a" integrity sha1-UALhT3Xi1x5WQoHfBDHIwbSio2o= -"@types/minimist@^1.2.0", "@types/minimist@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== +"@types/minimist@^1.2.0", "@types/minimist@^1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" + integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== "@types/mock-fs@^4.13.1": version "4.13.1" @@ -11906,13 +11959,6 @@ dependencies: moment ">=2.14.0" -"@types/multistream@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@types/multistream/-/multistream-4.1.0.tgz#517770a32e5715fdda87904a6da7d179142feba4" - integrity sha512-KiMkWve/Uu0qwCtNO6ZflMLjglkXsAdLdIwb31o5YQBbevdH2DF7inqebCli+F9am8McvEqCE4GXNOUZe8jOAg== - dependencies: - "@types/node" "*" - "@types/mustache@^0.8.31": version "0.8.31" resolved "https://registry.yarnpkg.com/@types/mustache/-/mustache-0.8.31.tgz#7c86cbf74f7733f9e3bdc28817623927eb386616" @@ -11955,7 +12001,7 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@14 || 16 || 17", "@types/node@20.10.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=18.0.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.0.0", "@types/node@^18.11.18": +"@types/node@*", "@types/node@14 || 16 || 17", "@types/node@20.10.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=18.0.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.0.0", "@types/node@^18.11.18", "@types/node@^20.13.0": version "20.10.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.5.tgz#47ad460b514096b7ed63a1dae26fad0914ed3ab2" integrity sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw== @@ -12055,11 +12101,6 @@ resolved "https://registry.yarnpkg.com/@types/picomatch/-/picomatch-2.3.0.tgz#75db5e75a713c5a83d5b76780c3da84a82806003" integrity sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g== -"@types/pidusage@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/pidusage/-/pidusage-2.0.2.tgz#3f8c4b19ba7ea438a733d093661e92b60e5f88ee" - integrity sha512-lHgpGZjXDfjggZDLkgp4zQTYkvXq4S7RxjBjrDcPe1MBU72hESWxubutx8+AM4QkJdRxAhrQyxSA6pzHKJKlsQ== - "@types/pixelmatch@^5.2.4": version "5.2.4" resolved "https://registry.yarnpkg.com/@types/pixelmatch/-/pixelmatch-5.2.4.tgz#ca145cc5ede1388c71c68edf2d1f5190e5ddd0f6" @@ -13354,11 +13395,6 @@ ansi-align@^3.0.0: dependencies: string-width "^4.1.0" -ansi-colors@4.1.1, ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - ansi-colors@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" @@ -13371,6 +13407,11 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-colors@^4.1.1, ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -13479,6 +13520,21 @@ anymatch@^3.0.0, anymatch@^3.0.3, anymatch@^3.1.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +apache-arrow@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/apache-arrow/-/apache-arrow-18.0.0.tgz#a187bd55318a7a68b6ff09835d05e89e019eba2e" + integrity sha512-gFlPaqN9osetbB83zC29AbbZqGiCuFH1vyyPseJ+B7SIbfBtESV62mMT/CkiIt77W6ykC/nTWFzTXFs0Uldg4g== + dependencies: + "@swc/helpers" "^0.5.11" + "@types/command-line-args" "^5.2.3" + "@types/command-line-usage" "^5.0.4" + "@types/node" "^20.13.0" + command-line-args "^5.2.1" + command-line-usage "^7.0.1" + flatbuffers "^24.3.25" + json-bignum "^0.0.3" + tslib "^2.6.2" + app-module-path@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" @@ -13611,6 +13667,16 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-6.2.2.tgz#f567d99e9af88a6d3d2f9dfcc21db6f9ba9fd157" + integrity sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw== + array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" @@ -13682,6 +13748,17 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.every@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/array.prototype.every/-/array.prototype.every-1.1.6.tgz#1717b407d019913250317300d814a1b6660f10d7" + integrity sha512-gNEqZD97w6bfQRNmHkFv7rNnGM+VWyHZT+h/rf9C+22owcXuENr66Lfo0phItpU5KoXW6Owb34q2+8MnSIZ57w== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" + is-string "^1.0.7" + array.prototype.findlastindex@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz#bc229aef98f6bd0533a2bc61ff95209875526c9b" @@ -14571,7 +14648,7 @@ brotli@^1.2.0: dependencies: base64-js "^1.1.2" -browser-stdout@1.3.1: +browser-stdout@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== @@ -14999,6 +15076,13 @@ ccount@^1.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== +chalk-template@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chalk-template/-/chalk-template-0.4.0.tgz#692c034d0ed62436b9062c1707fadcd0f753204b" + integrity sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg== + dependencies: + chalk "^4.1.2" + chalk@2.4.2, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -15115,7 +15199,7 @@ cheerio@^1.0.0-rc.12, cheerio@^1.0.0-rc.3: parse5 "^7.0.0" parse5-htmlparser2-tree-adapter "^7.0.0" -chokidar@3.5.3, chokidar@^2.1.2, chokidar@^2.1.8, chokidar@^3.4.0, chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.1, chokidar@^3.5.3: +chokidar@^2.1.2, chokidar@^2.1.8, chokidar@^3.4.0, chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.1, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -15583,6 +15667,26 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== +command-line-args@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-7.0.3.tgz#6bce992354f6af10ecea2b631bfdf0c8b3bfaea3" + integrity sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q== + dependencies: + array-back "^6.2.2" + chalk-template "^0.4.0" + table-layout "^4.1.0" + typical "^7.1.1" + commander@2, commander@^2.15.0, commander@^2.19.0, commander@^2.20.0, commander@^2.7.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -15997,9 +16101,9 @@ cronstrue@^1.51.0: integrity sha512-fSRAz/MV0TRjeNZKAsovmH/MSsly7+8np4XsfsrjOOz7sjxLrE9SmedRYAs3nPAtLLC5UsMpvenjXYRz463bMA== cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + version "6.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.6.tgz#30d0efa0712ddb7eb5a76e1e8721bffafa6b5d57" + integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw== dependencies: nice-try "^1.0.4" path-key "^2.0.1" @@ -16008,9 +16112,9 @@ cross-spawn@^6.0.0: which "^1.2.9" cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.5.tgz#910aac880ff5243da96b728bc6521a5f6c2f2f82" - integrity sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug== + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" @@ -16836,7 +16940,7 @@ deep-equal@^1.0.0, deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-equal@^2.0.3, deep-equal@^2.2.3: +deep-equal@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== @@ -16965,10 +17069,10 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= +defined@^1.0.0, defined@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" + integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== degenerator@^5.0.0: version "5.0.1" @@ -17268,11 +17372,6 @@ diff-sequences@^29.6.3: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== -diff@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - diff@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -17283,10 +17382,10 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diff@^5.0.0, diff@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" - integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== +diff@^5.0.0, diff@^5.1.0, diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== diffie-hellman@^5.0.0: version "5.0.2" @@ -17617,10 +17716,10 @@ elastic-apm-node@3.46.0: traverse "^0.6.6" unicode-byte-truncate "^1.0.0" -elastic-apm-node@^4.8.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/elastic-apm-node/-/elastic-apm-node-4.8.1.tgz#b0ff8e04d7109c64b98608de73936c8740849f60" - integrity sha512-gryl5pJWd9Cp7qK+McHIFm9VlsqKipoXWIsKOGyPGzrddIVKKA8ONnLBwymQ1A2x4uXuk1HnIVwBvyk56vukaw== +elastic-apm-node@^4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/elastic-apm-node/-/elastic-apm-node-4.9.0.tgz#8ca807fdf64404b615b60c4090bd9c9aad5b78ed" + integrity sha512-VUbrahqHmqpfwGHtUysWJ7aeCIUm61hAw8tSu0gE9AYdriVSPod4Ki11X4K8sBri0bIc/FTHxOrg7kudhGoqHQ== dependencies: "@elastic/ecs-pino-format" "^1.5.0" "@opentelemetry/api" "^1.4.1" @@ -17640,7 +17739,7 @@ elastic-apm-node@^4.8.1: fast-safe-stringify "^2.0.7" fast-stream-to-buffer "^1.0.0" http-headers "^3.0.2" - import-in-the-middle "1.11.2" + import-in-the-middle "1.11.3" json-bigint "^1.0.0" lru-cache "10.2.0" measured-reporting "^1.51.1" @@ -18119,11 +18218,6 @@ escape-html@^1.0.3, escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -18134,6 +18228,11 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@^2.0.0, escodegen@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" @@ -19181,6 +19280,13 @@ find-my-way-ts@^0.1.2: resolved "https://registry.yarnpkg.com/find-my-way-ts/-/find-my-way-ts-0.1.5.tgz#9de9494f19e0319d4f6366bb91d6bf7952af7874" integrity sha512-4GOTMrpGQVzsCH2ruUn2vmwzV/02zF4q+ybhCIrw/Rkt3L8KWcycdC6aJMctJzwN4fXD4SD5F/4B9Sksh5rE0A== +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" @@ -19198,14 +19304,6 @@ find-test-names@1.28.18, find-test-names@^1.19.0: globby "^11.0.4" simple-bin-help "^1.8.0" -find-up@5.0.0, find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -19229,6 +19327,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -19242,6 +19348,11 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== +flatbuffers@^24.3.25: + version "24.3.25" + resolved "https://registry.yarnpkg.com/flatbuffers/-/flatbuffers-24.3.25.tgz#e2f92259ba8aa53acd0af7844afb7c7eb95e7089" + integrity sha512-3HDgPbgiwWMI9zVB7VYBHaMrbOO7Gm0v+yD2FV/sCKj+9NDeVL7BOBYUuhWAQGKWOzBo8S9WdMvV0eixO233XQ== + flatstr@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/flatstr/-/flatstr-1.0.12.tgz#c2ba6a08173edbb6c9640e3055b95e287ceb5931" @@ -19586,6 +19697,11 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +fuse.js@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-7.0.0.tgz#6573c9fcd4c8268e403b4fc7d7131ffcf99a9eb2" + integrity sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q== + gauge@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" @@ -19898,19 +20014,7 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@8.1.0: +glob@8.1.0, glob@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -20269,6 +20373,14 @@ has-bigints@^1.0.2: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== +has-dynamic-import@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-dynamic-import/-/has-dynamic-import-2.1.0.tgz#06359ad7672b9e764aea93a54bb9d6e17542d34c" + integrity sha512-su0anMkNEnJKZ/rB99jn3y6lV/J8Ro96hBJ28YAeVzj5rWxH+YL/AdCyiYYA1HDLV9YhmvqpWSJJj2KLo1MX6g== + dependencies: + call-bind "^1.0.5" + get-intrinsic "^1.2.2" + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -20529,7 +20641,7 @@ hdr-histogram-percentiles-obj@^3.0.0: resolved "https://registry.yarnpkg.com/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz#9409f4de0c2dda78e61de2d9d78b1e9f3cba283c" integrity sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw== -he@1.2.0, he@^1.2.0: +he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -20988,10 +21100,10 @@ import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-in-the-middle@1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz#dd848e72b63ca6cd7c34df8b8d97fc9baee6174f" - integrity sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA== +import-in-the-middle@1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.11.3.tgz#08559f2c05fd65ba7062e747af056ed18a80120c" + integrity sha512-tNpKEb4AjZrCyrxi+Eyu43h5ig0O8ZRFSXPHh/00/o+4P4pKzVEW/m5lsVtsAT7fCIgmQOAPjdqecGDsBXRxsw== dependencies: acorn "^8.8.2" acorn-import-attributes "^1.9.5" @@ -22599,10 +22711,10 @@ js-search@^1.4.3: resolved "https://registry.yarnpkg.com/js-search/-/js-search-1.4.3.tgz#23a86d7e064ca53a473930edc48615b6b1c1954a" integrity sha512-Sny5pf00kX1sM1KzvUC9nGYWXOvBfy30rmvZWeRktpg+esQKedIXrXNee/I2CAnsouCyaTjitZpRflDACx4toA== -js-sha256@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" - integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== +js-sha256@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.0.tgz#256a921d9292f7fe98905face82e367abaca9576" + integrity sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q== js-string-escape@^1.0.1: version "1.0.1" @@ -22621,13 +22733,6 @@ js-tiktoken@^1.0.12, js-tiktoken@^1.0.14: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -22636,6 +22741,13 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" @@ -22695,6 +22807,11 @@ json-bigint@^1.0.0: dependencies: bignumber.js "^9.0.0" +json-bignum@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/json-bignum/-/json-bignum-0.0.3.tgz#41163b50436c773d82424dbc20ed70db7604b8d7" + integrity sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg== + json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -23447,14 +23564,6 @@ lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.1.0, log-symbols@^4.0.0, log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - log-symbols@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" @@ -23462,6 +23571,14 @@ log-symbols@^3.0.0: dependencies: chalk "^2.4.2" +log-symbols@^4.0.0, log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + log-update@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" @@ -24261,13 +24378,6 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" - integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== - dependencies: - brace-expansion "^2.0.1" - minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -24275,7 +24385,7 @@ minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatc dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1, minimatch@^5.1.0: +minimatch@^5.0.1, minimatch@^5.1.0, minimatch@^5.1.6: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -24446,32 +24556,31 @@ mocha-multi-reporters@^1.5.1: debug "^4.1.1" lodash "^4.17.15" -mocha@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.1.0.tgz#dbf1114b7c3f9d0ca5de3133906aea3dfc89ef7a" - integrity sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg== +mocha@^10.3.0: + version "10.8.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.8.2.tgz#8d8342d016ed411b12a429eb731b825f961afb96" + integrity sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg== dependencies: - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.4" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "5.0.1" - ms "2.1.3" - nanoid "3.3.3" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - workerpool "6.2.1" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^8.1.0" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.0" mochawesome-merge@^4.3.0: version "4.3.0" @@ -24521,6 +24630,19 @@ mock-fs@^5.1.2: resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-5.1.2.tgz#6fa486e06d00f8793a8d2228de980eff93ce6db7" integrity sha512-YkjQkdLulFrz0vD4BfNQdQRVmgycXTV7ykuHMlyv+C8WCHazpkiQRDthwa02kSyo8wKnY9wRptHfQLgmf0eR+A== +mock-property@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mock-property/-/mock-property-1.1.0.tgz#b38b9961476d2e54cde2033b62847b9546b3670d" + integrity sha512-1/JjbLoGwv87xVsutkX0XJc0M0W4kb40cZl/K41xtTViBOD9JuFPKfyMNTrLJ/ivYAd0aPqu/vduamXO0emTFQ== + dependencies: + define-data-property "^1.1.4" + functions-have-names "^1.2.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + hasown "^2.0.2" + isarray "^2.0.5" + object-inspect "^1.13.2" + module-definition@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/module-definition/-/module-definition-5.0.1.tgz#62d1194e5d5ea6176b7dc7730f818f466aefa32f" @@ -24753,14 +24875,6 @@ multipipe@^1.0.2: duplexer2 "^0.1.2" object-assign "^4.1.0" -multistream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/multistream/-/multistream-4.1.0.tgz#7bf00dfd119556fbc153cff3de4c6d477909f5a8" - integrity sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw== - dependencies: - once "^1.4.0" - readable-stream "^3.6.0" - murmurhash-js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51" @@ -24810,11 +24924,6 @@ nano-css@^5.2.1: stacktrace-js "^2.0.0" stylis "3.5.0" -nanoid@3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" - integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== - nanoid@3.3.6: version "3.3.6" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" @@ -25360,18 +25469,18 @@ object-identity-map@^1.0.2: dependencies: object.entries "^1.1.0" -object-inspect@^1.13.1, object-inspect@^1.7.0: - version "1.13.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" - integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== +object-inspect@^1.13.1, object-inspect@^1.13.2, object-inspect@^1.7.0: + version "1.13.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" + integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== -object-is@^1.0.1, object-is@^1.0.2, object-is@^1.1.2, object-is@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== +object-is@^1.0.1, object-is@^1.0.2, object-is@^1.1.2, object-is@^1.1.5, object-is@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + call-bind "^1.0.7" + define-properties "^1.2.1" object-keys@^1.1.1: version "1.1.1" @@ -26174,13 +26283,6 @@ picomatch@^4.0.2: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== -pidusage@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/pidusage/-/pidusage-3.0.2.tgz#6faa5402b2530b3af2cf93d13bcf202889724a53" - integrity sha512-g0VU+y08pKw5M8EZ2rIGiEBaB8wrQMjYGFfW2QVIfyT8V+fq8YFLkvlz4bz5ljvFDJYNFCWT3PWqcRr2FKO81w== - dependencies: - safe-buffer "^5.2.1" - pify@^2.0.0, pify@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -28691,7 +28793,7 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12. path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.4: +resolve@^2.0.0-next.4, resolve@^2.0.0-next.5: version "2.0.0-next.5" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== @@ -28723,13 +28825,6 @@ restore-cursor@^5.0.0: onetime "^7.0.0" signal-exit "^4.1.0" -resumer@^0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= - dependencies: - through "~2.3.4" - ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -29284,13 +29379,6 @@ send@0.19.0: range-parser "~1.2.1" statuses "2.0.1" -serialize-javascript@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -29305,7 +29393,7 @@ serialize-javascript@^5.0.1: dependencies: randombytes "^2.1.0" -serialize-javascript@^6.0.1: +serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== @@ -30499,7 +30587,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@3.1.1, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -30704,13 +30792,6 @@ supertest@^7.0.0: methods "^1.1.2" superagent "^9.0.1" -supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -30730,6 +30811,13 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.0.0, supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" @@ -30885,6 +30973,14 @@ tabbable@^5.3.3: resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-5.3.3.tgz#aac0ff88c73b22d6c3c5a50b1586310006b47fbf" integrity sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA== +table-layout@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-4.1.1.tgz#0f72965de1a5c0c1419c9ba21cae4e73a2f73a42" + integrity sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA== + dependencies: + array-back "^6.2.2" + wordwrapjs "^5.1.0" + table@^6.8.0, table@^6.8.2: version "6.8.2" resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" @@ -30906,28 +31002,33 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tape@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/tape/-/tape-5.0.1.tgz#0d70ce90a586387c4efda4393e72872672a416a3" - integrity sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ== +tape@^5.9.0: + version "5.9.0" + resolved "https://registry.yarnpkg.com/tape/-/tape-5.9.0.tgz#8d1a7472c6a154b82ce23b20dd9dc70ec0729b46" + integrity sha512-czbGgxSVwRlbB3Ly/aqQrNwrDAzKHDW/kVXegp4hSFmR2c8qqm3hCgZbUy1+3QAQFGhPDG7J56UsV1uNilBFCA== dependencies: - deep-equal "^2.0.3" - defined "^1.0.0" + "@ljharb/resumer" "^0.1.3" + "@ljharb/through" "^2.3.13" + array.prototype.every "^1.1.6" + call-bind "^1.0.7" + deep-equal "^2.2.3" + defined "^1.0.1" dotignore "^0.1.2" for-each "^0.3.3" - function-bind "^1.1.1" - glob "^7.1.6" - has "^1.0.3" + get-package-type "^0.1.0" + glob "^7.2.3" + has-dynamic-import "^2.1.0" + hasown "^2.0.2" inherits "^2.0.4" - is-regex "^1.0.5" - minimist "^1.2.5" - object-inspect "^1.7.0" - object-is "^1.1.2" - object.assign "^4.1.0" - resolve "^1.17.0" - resumer "^0.0.0" - string.prototype.trim "^1.2.1" - through "^2.3.8" + is-regex "^1.1.4" + minimist "^1.2.8" + mock-property "^1.1.0" + object-inspect "^1.13.2" + object-is "^1.1.6" + object-keys "^1.1.1" + object.assign "^4.1.5" + resolve "^2.0.0-next.5" + string.prototype.trim "^1.2.9" tar-fs@^2.0.0: version "2.1.1" @@ -31197,7 +31298,7 @@ through2@~0.4.1: readable-stream "~1.0.17" xtend "~2.1.1" -through@^2.3.6, through@^2.3.8, through@~2.3.4: +through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -31577,7 +31678,7 @@ tslib@2.5.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== -tslib@2.6.2, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.2: +tslib@2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -31587,6 +31688,11 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.2, tslib@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + tslib@~2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" @@ -31788,6 +31894,16 @@ typewise@^1.0.3: dependencies: typewise-core "^1.2.0" +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^7.1.1: + version "7.3.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-7.3.0.tgz#930376be344228709f134613911fa22aa09617a4" + integrity sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw== + uc.micro@^2.0.0, uc.micro@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" @@ -33381,6 +33497,11 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== +wordwrapjs@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-5.1.0.tgz#4c4d20446dcc670b14fa115ef4f8fd9947af2b3a" + integrity sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg== + worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" @@ -33395,10 +33516,10 @@ worker-rpc@^0.1.0: dependencies: microevent.ts "~0.1.1" -workerpool@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" - integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" @@ -33625,11 +33746,6 @@ yaml@^2.5.1: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.1.tgz#c9772aacf62cb7494a95b0c4f1fb065b563db130" integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q== -yargs-parser@20.2.4, yargs-parser@^20.2.2, yargs-parser@^20.2.3: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" @@ -33638,12 +33754,17 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + yargs-parser@^21.0.0, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-unparser@2.0.0: +yargs-unparser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== @@ -33653,19 +33774,6 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - yargs@17.0.1: version "17.0.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.0.1.tgz#6a1ced4ed5ee0b388010ba9fd67af83b9362e0bb" @@ -33696,6 +33804,19 @@ yargs@^15.0.2, yargs@^15.3.1, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yargs@^17.0.1, yargs@^17.2.1, yargs@^17.3.1, yargs@^17.7.1, yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"